タグから該当するデータをどうやって検索するか
ちなみに、「1回にデータをどれだけ取り込むか」を決めるのが「ラインサイズ」である。32bit CPUの場合、キャッシュから取り込む量は1回4Byte程度にすると、メモリーアクセスが煩雑に発生しすぎる。だからといって4KB程度にすると、効率はいいのだが(Windowsの仮想記憶は1ページ4KBなので収まりがいい)、今度はキャッシュミスが煩雑に起きる。この辺りを勘案して、適当なサイズを決めることになる。
インテルの場合、例えばPentiumやP6(Pentium Pro~Pentium III)では、ラインサイズが32Byteだが、Pentium 4以降のCPUは64Byteになっている。また一部の製品は128Byte Sectorという管理単位もサポートしており、アプリケーションが最適と思われるラインサイズを選べるようになっている。
さて、キャッシュすべきデータが少ないうちはいいが、キャッシュ対象が多くなると、タグを検索するのにも時間が掛かってくる。例えば、図5のようにタグがフルに使われている状態だと、上から順に検索していくのは、かなり時間がかかる。
Core 2プロセッサーの場合、1次キャッシュは32KBで、ラインサイズが64Byteだとすれば、512個のエントリー(タグの格納場所)がある。これをいちいち総なめしていては、猛烈に時間がかかる(ちなみに、総なめ方式はフルアソシエイティブと呼ばれる)。
別の方法は、アドレスの下位部を、タグと1:1で対応させる方式である。32bit CPUの場合、メモリーアドレスは当然32bitである。ラインサイズ64Byte(6bit)、エントリが512個(9bit)という場合、図6のようにアドレスの一部をそのままタグIDと見なす。

図6 メモリーアドレスとタグIDの関係
この方式だと、目的のタグが一意に決まるので、エントリーを1個だけ確認すればキャッシュヒットかキャッシュミスかを判別でき、キャッシュとのアクセスは非常に高速になる。この方式は「ダイレクトマップ」と呼ばれるが、周期的なデータアクセスで極端に効率が落ちるという欠点も抱える。例えば以下の5つのアドレスにデータが入っていたとする。
- 00010000H
- 00020000H
- 00030000H
- 00040000H
- 00050000H
この場合、図6に従ってタグIDを決めると、すべてのタグIDが「0 0000 0000」になるので、同一エントリを取り合ってしまい、全然キャッシュの効果がないことになってしまう。
こうした欠点もあって、ダイレクトマップとフルアソシエイティブの折衷型とでもいう形で広く利用されているのが、「nウェイセットアソシエイティブ」方式である。ここでの「n」は「いくつのタグを持つか」を示している。
例えば図7は2ウェイセットアソシエイティブの場合である。
各々のタグはどちらもダイレクトマップで構成され、CPUはまず「タグ#1」を参照し、目的のアドレスがあるか検索する。ここでヒットすれば良し、ない場合は次に「タグ#2」を参照し、再度確認するわけだ。
この方式のメリットは、ダイレクトマップよりも周期的アドレスのアクセスでの効果が高いことだ。先ほどの5つのアドレスの例で言えば、5つのアドレスを順次参照する場合、ダイレクトマップでは最初の「00010000H」しかキャッシュできないが、2ウェイセットアソシエイティブならば、「00010000H」と「00020000H」の2つをキャッシュできる。同様に4ウェイなら4つ、8ウェイなら5つすべてをキャッシュできる。
インテルの場合、1次キャッシュは4~8ウェイ程度だが、2次/3次キャッシュでは16ウェイや24ウェイ(PenrynベースのCore 2 Duo)なんて壮絶な数を構成しているものもある。「何ウェイ程度が適当なのか」というのは、やはり理論だけでは決まらず、シミュレーション上でさまざまなテストをしながら実験的に決めているケースが非常に多い。

この連載の記事
- 第598回 最後のAtomとなるChromebook向けプロセッサーのJasper Lake インテル CPUロードマップ
- 第597回 Ryzen 5000Gシリーズに2つのコアが混在する理由 AMD CPUロードマップ
- 第596回 Rocket LakeではCore i3が発売されない可能性大 インテル CPUロードマップ
- 第595回 嗚呼憧れのReconfigurable Processor AIプロセッサーの昨今
- 第594回 数は力? RISC-VベースのAIチップを開発するEsperanto AIプロセッサーの昨今
- 第593回 車載向け市場にフォーカスしたGSP AIプロセッサーの昨今
- 第592回 自社専用と割り切ったからできたAlibabaのHanguang 800 AIプロセッサーの昨今
- 第591回 スタートアップ企業のMythicが実現した超低消費電力AIプロセッサー AIプロセッサーの昨今
- 第590回 Radeon Instinct MI100が採用するCDNAアーキテクチャーの内部構造 AMD GPUロードマップ
- 第589回 AIチップの性能評価基準を考えさせるFlex Logic AIプロセッサーの昨今
- 第588回 Ryzen 5000シリーズはなぜ高速なのか? 秘密はZen 3の内部構造にあり AMD CPUロードマップ
- この連載の一覧へ