タグから該当するデータをどうやって検索するか
ちなみに、「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と見なす。
この方式だと、目的のタグが一意に決まるので、エントリーを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)なんて壮絶な数を構成しているものもある。「何ウェイ程度が適当なのか」というのは、やはり理論だけでは決まらず、シミュレーション上でさまざまなテストをしながら実験的に決めているケースが非常に多い。
この連載の記事
-
第768回
PC
AIアクセラレーター「Gaudi 3」の性能は前世代の2~4倍 インテル CPUロードマップ -
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 - この連載の一覧へ