メインコンテンツへスキップ

キャッシュメモリのアドレスマッピング方式

·
インフラ 入門 メモ
目次

キャッシュメモリのアドレスマッピング方式とは?
#

主記憶上の格納位置とキャッシュメモリ上の格納位置とをどのように対応させるかを決める方式として、ダイレクトマップ、フルアソシエイティブ、セットアソシエイティブがある。

ダイレクトマップ
#

主記憶のアドレスからキャッシュメモリ上の格納位置(ブロック番号)が一意に決まる方式

  • 主記憶のアドレスの一部(下位ビット)をインデックスとして使用し、格納先を決定
  • 回路構成が単純でコストが低い
  • 主記憶上の異なるアドレスが、キャッシュメモリ上の同じ場所に割り当てられる「コンフリクト」が発生する可能性がある
    • コンフリクトはキャッシュヒット率が低下する原因にもなる

フルアソシエイティブ
#

主記憶のブロックをキャッシュメモリ上のどのブロックにも格納することができる方式

  • コンフリクトが発生しにくく、キャッシュヒット率が高い
  • 検索にCAM(Content Addressable Memory:連想メモリ)を使用するため、回路が非常に複雑で高コスト
  • 小容量のキャッシュ(TLBなど)で使用されることが多い

セットアソシエイティブ
#

キャッシュメモリをいくつかの「セット」と呼ばれるグループに分け、主記憶のアドレスからはまず特定のセットが決定される。そのセットの中であれば、どのブロックにでも格納することができる。

  • ダイレクトマップとフルアソシエイティブの中間的な存在
  • 現在の主流の方式(コストとパフォーマンスのバランスが良い)
  • n-way セットアソシエイティブ: 1つのセット内に格納できるブロック数を「n」で表す
    • 2-way: 1セットに2ブロック格納可能
    • 4-way: 1セットに4ブロック格納可能
    • nが大きいほどフルアソシエイティブに近づき、ヒット率は上がるがコストも増加

3方式の比較
#

方式格納位置の自由度回路の複雑さコストヒット率
ダイレクトマップ低(1箇所固定)単純
フルアソシエイティブ高(どこでも可)複雑
セットアソシエイティブ中(セット内で自由)中程度

参考リンク
#