このページの本文へ

前へ 1 2 3 次へ

ロードマップでわかる!当世プロセッサー事情 第74回

CPUとメモリーの速度差を埋めるキャッシュの基礎知識

2010年10月25日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

タグから該当するデータをどうやって検索するか

 ちなみに、「1回にデータをどれだけ取り込むか」を決めるのが「ラインサイズ」である。32bit CPUの場合、キャッシュから取り込む量は1回4Byte程度にすると、メモリーアクセスが煩雑に発生しすぎる。だからといって4KB程度にすると、効率はいいのだが(Windowsの仮想記憶は1ページ4KBなので収まりがいい)、今度はキャッシュミスが煩雑に起きる。この辺りを勘案して、適当なサイズを決めることになる。

 インテルの場合、例えばPentiumやP6(Pentium Pro~Pentium III)では、ラインサイズが32Byteだが、Pentium 4以降のCPUは64Byteになっている。また一部の製品は128Byte Sectorという管理単位もサポートしており、アプリケーションが最適と思われるラインサイズを選べるようになっている。

 さて、キャッシュすべきデータが少ないうちはいいが、キャッシュ対象が多くなると、タグを検索するのにも時間が掛かってくる。例えば、図5のようにタグがフルに使われている状態だと、上から順に検索していくのは、かなり時間がかかる。

図5

図5 タグがすべて使われている場合

 Core 2プロセッサーの場合、1次キャッシュは32KBで、ラインサイズが64Byteだとすれば、512個のエントリー(タグの格納場所)がある。これをいちいち総なめしていては、猛烈に時間がかかる(ちなみに、総なめ方式はフルアソシエイティブと呼ばれる)。

 別の方法は、アドレスの下位部を、タグと1:1で対応させる方式である。32bit CPUの場合、メモリーアドレスは当然32bitである。ラインサイズ64Byte(6bit)、エントリが512個(9bit)という場合、図6のようにアドレスの一部をそのままタグIDと見なす。

図6

図6 メモリーアドレスとタグIDの関係

 この方式だと、目的のタグが一意に決まるので、エントリーを1個だけ確認すればキャッシュヒットかキャッシュミスかを判別でき、キャッシュとのアクセスは非常に高速になる。この方式は「ダイレクトマップ」と呼ばれるが、周期的なデータアクセスで極端に効率が落ちるという欠点も抱える。例えば以下の5つのアドレスにデータが入っていたとする。

  • 00010000H
  • 00020000H
  • 00030000H
  • 00040000H
  • 00050000H

 この場合、図6に従ってタグIDを決めると、すべてのタグIDが「0 0000 0000」になるので、同一エントリを取り合ってしまい、全然キャッシュの効果がないことになってしまう。

 こうした欠点もあって、ダイレクトマップとフルアソシエイティブの折衷型とでもいう形で広く利用されているのが、「nウェイセットアソシエイティブ」方式である。ここでの「n」は「いくつのタグを持つか」を示している。

 例えば図7は2ウェイセットアソシエイティブの場合である。

図7

図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)なんて壮絶な数を構成しているものもある。「何ウェイ程度が適当なのか」というのは、やはり理論だけでは決まらず、シミュレーション上でさまざまなテストをしながら実験的に決めているケースが非常に多い。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン