コンピュータの構成と設計 5.9~5.16節

パタヘネ5.9~5.16節です。

5.9

 キャッシュの振る舞いは有限状態機械で表す事ができる。キャッシュとしてダイレクトマップ方式かつライト・バック方式のものを考える。このキャッシュでは状態として「アイドル」「タグ比較」「アロケート」「ライトバック」が存在する。アイドル状態ではプロセッサからの要求を待っている。タグ比較状態では、プロセッサから来た要求のアドレスからインデックス部を取り出し、キャッシュ内容とともに保存されているタグを取り出す。アドレスからタグ部を比較してタグと一致しているかを見て、一致しているならキャッシュにヒットしたとしてCache Ready信号をプロセッサに送り、アイドル状態に戻る。書き込みの場合はダーティ・ビットをセットする。ミスだった場合、対象ブロックは置き換え対象となる。ダーティ・ビットがセットされていない場合、メモリに書き戻さなくて良いのでアロケート状態に遷移する。アロケート状態では主記憶からブロックを読み出したあと、タグ比較状態に遷移する。一方ダーティ・ビットがセットされている場合ライトバック状態に遷移する。ライトバック状態では今のキャッシュ内容を主記憶に書き戻し、アロケート状態に遷移する。

5.10

 マルチコアやマルチプロセッサの環境では、別プロセッサが主記憶を書き換えることで、キャッシュ内容と主記憶が整合しない問題が生じうる。この現象をキャッシュ・コヒーレンス問題と呼ぶ。また、書き込んだ値が実際の読み出しで返されるのはいつになるかということを決定するのが一貫性である。

 以下の三条件が満たされる時、キャッシュ・コヒーレンスが存在する。

  • あるプロセッサが書き込んだ値を同じプロセッサが読み出した時、別のプロセッサがそこに値を書き込んでいなければ、元々書き込んだ値が読み出される
  • あるプロセッサAが値を書き込んだ後、十分長い時間が経過し別プロセッサBが読み出した時、Aが書き込んだ値が得られる。これはプロセッサAの書き込み結果がプロセッサBのキャッシュに反映される仕組みが必要であることを意味する
  • 同一のロケーションへの書き込み順序は他の全てのプロセッサから見ても同じに見える(直列化されている)

 上記条件を満たすために使用されるプロトコルをキャッシュ・コヒーレンス・プロトコルと呼ぶ。キャッシュ・コヒーレンス・プロトコルを実装したキャッシュは、共有データの移行と複製という2つの機能を持つ。移行は、データ項目を自動的にローカルキャッシュに移す機能である。複製は共有データが複数のプロセッサによって同時に読み出される時、キャッシュは各ローカル・キャッシュ内にデータ項目のコピーを作成する機能である。

 代表的なキャッシュ・コヒーレンス・プロトコルが、スヌープ方式である。中でも、ライト・インバリデート・プロトコルはデータ項目を書き込む前にデータ項目に対するアクセス権をプロセッサが専有する。あるプロセッサが書き込んでいるときに別プロセッサが同じ場所を読み出す場合、読み出しを行うプロセッサのキャッシュは無効化される。そうすることで、読み出すプロセッサはキャッシュ・ミスが発生し、正しいデータをキャッシュに取り込むことになる。書き込みが競合した場合、いずれかのプロセッサが勝ち、データを書き込む。アクセス権を取れなかったプロセッサはキャッシュミスし、書き込むためには新しい値を取得しなければならない。これにより書き込みの直列化が実現される。

5.13

ARMv8AとCore i7の実例。

5.14

部分語並列性を使った行列積プログラムに、部分行列の積を計算することでキャッシュのブロック化を図る最適化を施す。

5.15

 キャッシュをシミュレーションする際、バイト・アドレッシングやキャッシュのブロックサイズを計算に入れるのを忘れがちだが忘れてはならない。

 プログラムを組んだりコンパイラでコードを生成する際に記憶システムの動作を無視すると性能低下が大きいので、無視してはならない。

 共有キャッシュの場合にキャッシュを共有しているコアまたはスレッド数よりもセット・アソシアティブ方式の連想度を小さくすると共有のL2キャッシュの同じセットに対応するアドレスにデータ構造を割り当て、競合が起こるケースがあるため、連想度はコア数より大きく取る必要がある。

 アウト・オブ・オーダー方式のプロセッサの記憶階層を評価するのに平均メモリ・アクセス時間を仕様してはならない。

 それまでセグメント化されていなかったアドレス空間の上にセグメントを追加することでアドレス空間を拡張してはならない。

 現場環境のディスク故障率は仕様通りとはならない。

 OSはディスクアクセスを最適化するのに適していない。というのは、OSができるのは論理ブロックアドレスをソートして要求を出すくらいだが、ディスクコントローラーは物理的なセクター・トラックの配置と論理的なアドレスの対応関係を知っているのでより適切にスケジューリングできるからである。

 コンピュータへの攻撃手段としては、ハードウェアへの攻撃もありうる。例えば、DRAMの特定行に繰り返し書き込みを繰り返すことでエラーを生じさせることができる。

コメント

タイトルとURLをコピーしました