プリフェッチャー
CPUがもうすぐ必要とするデータを予測し、実際に要求される前にキャッシュへ取り込む仕組み。目的はメモリレイテンシを隠すことで、命令が来た時にはデータがすでにあり、キャッシュミスを避けられる。
仕組みはこうだ。ハードウェアのプリフェッチャーはメモリアクセスのパターンを監視し、先を外挿する。最も単純なものはシーケンシャルなアクセスを捉える(ラインNを読んだらN+1を取る)。より高度なものはストライドパターン(配列を回すループでよくある、64バイトごとのような一定間隔のアクセス)や、不規則なパターンまで検出する。パターンを認識すると、CPUが作業している間に裏で先のラインを取得し、レイテンシが隠れる。ソフトウェアプリフェッチ(コンパイラやプログラマが明示的なプリフェッチ命令を挿入する)もある。代償として、積極的すぎるプリフェッチはメモリ帯域を浪費し、推測が外れると使われないデータでキャッシュを汚す。メモリ負荷の高いワークロードでは、優れたプリフェッチャーが決定的になることも多い。キャッシュミスと密接に結びついている。