キャッシュのアドレス分割と平均メモリアクセス時間

キャッシュの容量、ラインサイズ、連想度を入れると、アドレスがタグ・インデックス・オフセットの3つにどう分かれるかを、ビット数と帯グラフで示します。あわせて、ヒット時間、ミス率、ミスペナルティから平均メモリアクセス時間(AMAT)を計算し、キャッシュの構成が性能にどう効くかを確かめられます。

キャッシュの構成

結果

アドレスの分割(左が上位ビット)

ライン数
–
セット数
–
タグ
–
インデックス
–
オフセット
–
平均メモリアクセス時間(AMAT)
–

アドレスを3つに分ける計算

キャッシュは主記憶のデータをライン(ブロック)という単位で保持します。ライン数は 容量 ÷ ラインサイズ、セット数は ライン数 ÷ 連想度 です。アドレスの下位から、ライン内の位置を表すオフセットが log₂(ラインサイズ) ビット、セットを選ぶインデックスが log₂(セット数) ビットで、残りの上位ビットがタグになります。既定値の32ビット、32 KB、64 B、8ウェイでは、ライン数は512、セット数は64で、オフセット6ビット、インデックス6ビット、タグは 32 − 6 − 6 = 20ビットです。

連想度を変えると何が変わるか

容量とラインサイズを同じにしたまま連想度を2倍にすると、セット数は半分になり、インデックスが1ビット減ってタグが1ビット増えます。1ウェイがダイレクトマップ方式で、連想度にライン数(既定値なら512)を入れると、セットが1つだけのフルアソシアティブ方式になり、インデックスは0ビットです。連想度を上げると、同じセットにアドレスが集中して起こる競合ミスは減りますが、並列に比べるタグの数が増えるため、比較器の面積や消費電力、ヒット時間が増えます。

平均メモリアクセス時間(AMAT)

キャッシュの性能は、ミス率だけでなく平均メモリアクセス時間で比べます。AMAT = ヒット時間 + ミス率 × ミスペナルティ で、既定値では 4 + 0.05 × 100 = 9サイクルです。ミス率がわずか5%でも、ミスペナルティが大きいため平均は2倍以上に延びます。容量や連想度を増やしてミス率を下げても、ヒット時間が延びればすべてのアクセスが遅くなるので、両方を合わせて評価します。多段のキャッシュでは、L1のミスペナルティを L2のヒット時間 + L2のミス率 × L2のミスペナルティ に置き換えて計算します。

設計での使い方と注意点

ラインサイズを大きくすると空間的局所性を生かせてミス率が下がりますが、1回のミスで運ぶデータが増えてミスペナルティが大きくなり、ライン数が減るぶん競合も増えます。現在の多くのCPUは64 Bを使っています。L1キャッシュでは、仮想アドレスでセットを引きながらTLBで変換する仮想インデックス・物理タグ(VIPT)方式がよく使われます。インデックスとオフセットをページ内に収めるため、容量はページサイズ × 連想度(4 KB × 8ウェイなら32 KB)以下に制限されます。タグのビット数は、タグを保存するメモリの大きさにも直結します。

メモリ階層の問題を解く

アドレスが32ビット、容量32 KB、ラインサイズ64バイトのダイレクトマップ方式のキャッシュで、タグは何ビットになるか。

  1. A15ビット
  2. B19ビット
  3. C17ビット
答えと解説を見る

正解:C. 17ビット

ラインサイズ64バイト = 2⁶ なのでオフセットは6ビットです。ライン数は 32 KB ÷ 64 B = 32768 ÷ 64 = 512 = 2⁹ で、ダイレクトマップではライン数がそのままセット数なのでインデックスは9ビットです。残りがタグで、32 − 9 − 6 = 17ビットになります。19ビットは4ウェイのセットアソシアティブにしてインデックスが2ビット減ったときの値で、ダイレクトマップには当てはまりません。

アドレスが32ビット、容量32 KB、ラインサイズ64バイトの4ウェイ・セットアソシアティブ方式のキャッシュのセット数はいくつか。

  1. A128
  2. B512
  3. C32
答えと解説を見る

正解:A. 128

ライン数は 32 KB ÷ 64 B = 512 です。4ウェイでは1つのセットに4ラインが入るので、セット数は 512 ÷ 4 = 128 = 2⁷ となり、インデックスは7ビット、タグは 32 − 7 − 6 = 19ビットになります。512はライン数そのもので、ダイレクトマップのときのセット数です。連想度を上げるとセット数が減り、その分タグのビット数が増えて比較器も増えます。32はラインサイズの64を誤ってウェイ数で割った値です。

キャッシュのヒット時間が2サイクル、ミス率が4%、ミスペナルティが150サイクルのとき、平均メモリアクセス時間は何サイクルか。

  1. A8サイクル
  2. B6サイクル
  3. C152サイクル
答えと解説を見る

正解:A. 8サイクル

平均メモリアクセス時間 = ヒット時間 + ミス率 × ミスペナルティ = 2 + 0.04 × 150 = 2 + 6 = 8サイクルです。ヒット時間はすべてのアクセスでかかり、ミスしたときだけミスペナルティが加わると考えます。6サイクルはミスの分だけを計算してヒット時間を足し忘れた値です。152サイクルはミスしたアクセス1回にかかる時間で、平均ではありません。ミス率がわずか4%でも、平均が4倍になることが分かります。

ラインサイズ64バイト、セット数64のキャッシュで、アドレス0x1234のデータが入るセットの番号はどれか。

  1. A4
  2. B52
  3. C8
答えと解説を見る

正解:C. 8

オフセットは 64 = 2⁶ で下位6ビット、インデックスはセット数 64 = 2⁶ でその上の6ビットです。0x1234 = 4660 を64で割ると 4660 ÷ 64 = 72 余り52なので、ライン番号は72です。セット番号はライン番号をセット数で割った余りで、72 mod 64 = 8 になります。52は64で割った余りで、ライン内の位置(オフセット)を表す値です。4はアドレスの16進数の下1桁を取り出しただけの値で、セットとは関係ありません。

よくある質問

ダイレクトマップ方式で32ビット、32 KB、64 Bのとき、タグは何ビットですか?

オフセットは log₂64 = 6ビット、ライン数は 32 KB ÷ 64 B = 512 なのでインデックスは9ビット、タグは 32 − 9 − 6 = 17ビットです。8ウェイにするとセット数が64に減り、インデックスは6ビット、タグは20ビットになります。

フルアソシアティブ方式では、インデックスは何ビットですか?

0ビットです。セットが1つしかないので、オフセット以外のすべてのビットがタグになり、すべてのラインのタグと比べます。このツールでは、連想度にライン数と同じ値を入れると確かめられます。

ミス率を半分にするのと、ヒット時間を1サイクル減らすのでは、どちらが効きますか?

既定値(ヒット時間4サイクル、ミス率5%、ミスペナルティ100サイクル)では、ミス率を2.5%にすると AMAT は9から6.5サイクルに、ヒット時間を3サイクルにすると8サイクルになり、ミス率の改善のほうが効きます。ミスペナルティが小さい場合は逆になることもあるので、AMATの式で比べてください。

関連する用語

キャッシュメモリ キャッシュライン ダイレクトマップ方式 セットアソシアティブ方式 フルアソシアティブ方式 平均メモリアクセス時間(AMAT) ミスペナルティ 競合ミス

半導体の計算ツール

ダイ数・歩留まり計算ツールウエハ径・チップサイズ・欠陥密度から、ダイ数・歩留まり・良品1個のコストを計算露光の解像度・焦点深度の計算波長・NA・k1から、解像できる線幅と焦点深度、必要なパターン分割の回数を計算セットアップ・ホールドのタイミング計算クロック周期と遅延から、セットアップ・ホールドの余裕(スラック)と最大周波数を計算MOSFETの電流-電圧特性(ID–VDS)しきい値電圧やW/Lを変えて、ID–VDS特性と動作点(領域・ID・gm・ro)を確かめる問題セットを作る分野と問題数を選ぶだけで、授業や研修で配れるクイズのURLを発行接合温度(Tj)と熱抵抗の計算消費電力と熱抵抗から、チップの接合温度、最大接合温度までの余裕、使える最大電力を計算メモリ帯域幅の計算転送レートとバス幅から、DDR・LPDDR・GDDR・HBMのピーク帯域と実効帯域の目安を計算ADコンバータのSN比と有効ビット数(ENOB)分解能、クロックジッタ、オーバーサンプリングから、ADコンバータのSN比と有効ビット数を計算アムダールの法則と並列化の速度向上並列化できる割合とプロセッサ数から、アムダールの法則とグスタフソンの法則で速度向上率と並列効率を計算CMOS回路の消費電力(動的電力と静的電力)活動率・容量・電圧・周波数とリーク電流から、動的電力と静的電力、DVFSで電圧と周波数を下げたときの電力を計算PN接合の内蔵電位と空乏層幅不純物濃度と逆バイアス電圧から、PN接合の内蔵電位、空乏層幅、最大電界、接合容量を計算熱酸化の膜厚(Deal-Groveモデル)温度・時間・ドライ/ウェット・面方位から、Deal-Groveモデルでシリコン酸化膜の厚さと消費されるシリコンを計算LSIの配線のRC遅延配線の金属・幅・厚さ・間隔・比誘電率・長さから、配線の抵抗と容量、分布RC線路の遅延とドライバを含めた遅延を計算位相雑音からRMSジッタへの換算位相雑音のプロファイル(dBc/Hz)を積分して、クロックのRMS位相誤差とRMSジッタを計算PDNの目標インピーダンスとデカップリングコンデンサ電源電圧・許容リップル・電流の変化から目標インピーダンスを求め、デカップリングコンデンサの自己共振周波数と効く周波数範囲を計算