前回までに、CPUには複数のキャッシュが搭載されていることを説明した。今回はそのキャッシュをどう制御するか、という話をしよう。
3階層のキャッシュのどこにデータを置くか?
例えば図1のように、1次~3次までキャッシュを持つCPUを考えてみる。ここでCPUがデータ(命令でもいい)のフェッチを掛けた場合、まずは1次キャッシュのタグを検索する(図1-①)。ここで見つかれば問題なく、単に1次キャッシュからそのデータを引っ張ってくる(図1-②)だけでいい。問題は1次キャッシュにデータがなかった場合(キャッシュミス)である。
図2は、2次キャッシュでヒットした場合だ。まず1次タグを参照し(図2-③)、ここにないことがわかったら、次は2次タグを参照する(図2-④)。2次タグで発見したら、2次キャッシュからデータをフェッチする(図2-⑤)とともに、1次キャッシュにもキャッシュフィル(データのコピー)を行なう(図2-⑥)。
これは1次ミス/2次ミス/3次ヒットの場合でも同じである(図3)。今度はまず1次タグ(図3-⑦)/2次タグ(図3-⑧)/3次タグ(図3-⑨)と順に参照して、3次タグで発見したらそこからフェッチする(図3-⑩)とともに、1次キャッシュへのフィルも行なう(図3-⑪)。
問題は、この1次/2次/3次キャッシュに、何がどのタイミングで入るのか、である。通常のCPUでは、「Implicit Prefetch」(暗黙のプリフェッチ)という機構が利用される。例えば図4のような仕組みだ。
CPUがあるメモリーアドレスのフェッチを要求し、1次/2次/3次とすべてのキャッシュがヒットしなかったケースを考えてみる。この場合、CPUはそのメモリーアドレスを指定してメモリーアクセスするわけだが、通常この際には、1ライン分のメモリーを取得する(取得したと思っている)。しかし、実際には指定したアドレスから7ライン分のメモリーを取得し、1次キャッシュには目的のラインを、2次キャッシュには目的のラインに続く2ライン、3次キャッシュにはさらに続く4ラインを同時に格納するといったメモリーの取り込み方をする。
これにより、例えば1次キャッシュに取り込んだラインを使い切っても、その次の領域は2次キャッシュに、さらにこれに続く領域は3次キャッシュにすでに取り込まれている。だから、最低限のレイテンシーで7ライン分までアクセスできることになる。
ちなみに、これはあくまでも概念であって、実際の実装方法は異なったものである。例えばインテルの場合、「Pentium M」「Pentium 4」までで利用された方法と、Coreマイクロアーキテクチャーで採用された方法では、特に2次/3次キャッシュに対するキャッシュフィルの方法が若干異なる。同じメーカーのCPUでも、アーキテクチャーによってこのあたりの方法論は変わることがある。

この連載の記事
-
第850回
デジタル
Zen 6+Zen 6c、そしてZen 7へ! EPYCは256コアへ向かう AMD CPUロードマップ -
第849回
PC
d-MatrixのAIプロセッサーCorsairはNVIDIA GB200に匹敵する性能を600Wの消費電力で実現 -
第848回
PC
消えたTofinoの残響 Intel IPU E2200がつなぐイーサネットの未来 -
第847回
PC
国産プロセッサーのPEZY-SC4sが消費電力わずか212Wで高効率99.2%を記録! 次世代省電力チップの決定版に王手 -
第846回
PC
Eコア288基の次世代Xeon「Clearwater Forest」に見る効率設計の極意 インテル CPUロードマップ -
第845回
PC
最大256MB共有キャッシュ対応で大規模処理も快適! Cuzcoが実現する高性能・拡張自在なRISC-Vプロセッサーの秘密 -
第844回
PC
耐量子暗号対応でセキュリティ強化! IBMのPower11が叶えた高信頼性と高速AI推論 -
第843回
PC
NVIDIAとインテルの協業発表によりGB10のCPUをx86に置き換えた新世代AIチップが登場する? -
第842回
PC
双方向8Tbps伝送の次世代光インターコネクト! AyarLabsのTeraPHYがもたらす革新的光通信の詳細 -
第841回
PC
Gen1で3倍、Gen2で14倍の帯域幅を実現! Celestial AIのPFLinkがネットワークスイッチを劇的に進化させる -
第840回
PC
Avicena Techが最新MicroLED光チップレット技術を公開! 2027年製品化に向けた新たな光インターコネクト戦略 - この連載の一覧へ











