text: なぜならページ方式やセグメント方式では仮想アドレス空間に対する広がりを持たせているので、例えば画像などを扱う場合には単にアドレス空間方向への広がり＝すなわち水平方向への広がりしか持たない。だが画像に対する操作は、特定の2次元空間＝面的な広がりを持っている。ここにソフトウェアで仮想記憶を実施するに当たって、面的な広がりをメモリ参照の局在性としてみなすと、単なる仮想記憶よりも性能の向上が期待できる。背景  まず、以下の議論の前提とする、簡略化した典型的な記憶装置の階層構造のモデルを述べる。CPU内のレジスタ。CPUのクロック速度で動作するため、最も高速である。レジスタの使用は一般に呼出規約の制限下にあり、コンパイラによる管理に任せられる。大きな容量はないため（32ビットあるいは64ビット、現代的なマイクロプロセッサでは16本〜普通は100本前後）次の計算が使えるように明け渡す必要があり、データを長期間保持させることは通常はできない。内部的にはレジスタ・リネーミングを行っていることもある。CPU内かCPUに隣接したキャッシュメモリ。通常はある種のSRAMを使用。レジスタに次いで高速であるが、容量は128kバイト〜数メガバイト程度に留まる。では1次キャッシュから3次キャッシュまでもがオンダイという場合もあり、ここで示した容量などに特に拘る意味は無い。主記憶装置（通常はDRAMを使用）は、プログラミング上CPUが直接リード/ライトできる。キャッシュメモリに比べると速度は落ちるものの、より大きな容量（数百メガバイト〜数ギガバイト）を装着できる。補助記憶装置としての磁気ディスク装置は、機械的な動作を伴うため、主記憶装置と比べても桁違いに低速だが、数十ギガバイト～数十テラバイト以上と容量が大きい。主記憶装置とキャッシュメモリのどちらを使用するかは、一般にハードウェアに任せられているため、プログラマからはどちらも同じ物理メモリとしてしか見えない（しかし性能への影響は大きいので、高性能計算など、キャッシュヒット率を考慮してコードを書くこともある）。ハードウェアの動作としては、まずキャッシュメモリをアクセスし、さらに必要ならキャッシュメモリと主記憶とのやり取りを行う。多くのアプリケーションは、情報（実行ファイルの命令列やデータ）がなるべく物理メモリ上に格納された状態でアクセスできることを要求する。