キャッシュ階層
CPU コアとメインメモリ(RAM)の間に積み重ねられた、容量が大きいほど遅くなる複数段のキャッシュ。プロセッサとメモリの途方もない速度差を埋めるための設計である。
問題は「メモリウォール」で、CPU は RAM より桁違いに速く、キャッシュがなければデータを待って数百サイクルも止まってしまう。解決策がキャッシュのピラミッドだ。最速で最小のレジスタ、次に L1(コアあたり数 kB、約4サイクル)、L2(数百 kB〜数 MB、約12サイクル)、L3(数十 MB、コア間共有、約40サイクル)、そして RAM(数百サイクル)と続く。
前提は局所性である。プログラムは最近使ったデータ(時間的局所性)とその近く(空間的局所性)を再び使いがちなので、小さく速いキャッシュでアクセスの大半を拾える。各段の設計では、容量、連想度、包括的か排他的か、共有の仕方を選ぶ。実アプリの性能を左右する最大の要因がキャッシュであることも珍しくない。