コンピュータサイエンスにおいて、キャッシュカラーリング(ページカラーリングとも呼ばれる)とは、 CPUキャッシュの観点から連続している空きページを割り当て、プロセッサによってキャッシュされるページの総数を最大化するプロセスです。キャッシュカラーリングは通常、オペレーティングシステムの低レベルの動的メモリ割り当てコードによって、仮想メモリを物理メモリにマッピングするときに使用されます。キャッシュカラーリングのない仮想メモリサブシステムは、キャッシュパフォーマンスに関して決定論的ではありません。これは、プログラムの実行ごとにページ割り当てが異なると、プログラムのパフォーマンスに大きな違いが生じる可能性があるためです。
操作の詳細

物理的にインデックス付けされたCPUキャッシュは、隣接する物理メモリブロックのアドレスがキャッシュ内で異なる位置(「キャッシュライン」)を占めるように設計されていますが、仮想メモリではそうではありません。仮想的に隣接しているものの物理的には隣接していないメモリブロックが割り当てられている場合、両方のメモリブロックがキャッシュ内で同じ位置を占める可能性があります。カラーリングはメモリ管理ソフトウェアに実装されている技術で、隣接するページと競合しないページを選択することでこの問題を解決します。
物理メモリのページは「色分け」されており、異なる「色」のページはCPUキャッシュメモリ内で異なる位置に配置されます。プロセスに仮想メモリ内の連続したページを割り当てる際、カーネルは異なる「色」のページを集めて仮想メモリにマッピングします。これにより、仮想メモリ内の連続したページが同じキャッシュラインを競合することはありません。
実装
このコードは仮想記憶割り当てサブシステムにかなりの複雑さを追加しますが、その結果は努力に見合う価値があります。[ 1 ]ページカラーリングは、キャッシュ性能に関して、仮想記憶を物理記憶と同程度に決定論的にします。ページカラーリングは、Solaris、[ 2 ] FreeBSD、[ 1 ] NetBSD、[ 3 ] Windows NTなどのオペレーティングシステムで採用されています。[ 4 ]
参考文献
- ^ a b Matthew Dillon . 「ページの色分け」 . FreeBSD VMシステムの設計要素. FreeBSD Foundation . 2007年2月2日閲覧。
- ^ 「Solaris オペレーティングシステムの新機能」 . Solaris マーケティング資料. Sun Microsystems, Inc. 2007年1月13日閲覧。
- ^ Matt Thomas . 「NetBSD/mipsの改良」(PDF) .ページカラーの管理. The NetBSD Foundation . 2012年9月24日閲覧。
- ^ Edouard Bugnion、Jennifer M. Anderson、Todd C. Mowry*、Mendel Rosenblum、Monica S. Lam. 「Compiler Directed Page-Coloring for Multiprocessors」スタンフォード大学2009年10月6日閲覧。
外部リンク
- 「大規模実数インデックス キャッシュのページ配置アルゴリズム」、RE Kessler、Mark D. Hill、ウィスコンシン大学、1992 年。
- 「Colorable Memory」、Jochen Liedtke著、IBM TJ Watson Center、1996年11月。
- 「缓存着色技術术」、Maray 著、CSDN Technological Blog、2008 年。