セットアソシアティブ方式 (セットアソシアティブホウシキ) とは | 意味や読み方など丁寧でわかりやすい用語解説
セットアソシアティブ方式 (セットアソシアティブホウシキ) の読み方
日本語表記
組連想方式 (クミレンソウホウシキ)
英語表記
set-associative mapping (セットアソシアティブマッピング)
セットアソシアティブ方式 (セットアソシアティブホウシキ) の意味や用語解説
セットアソシアティブ方式は、コンピュータのCPUが内蔵するキャッシュメモリにおいて、主記憶装置(メインメモリ)のデータをどのように配置し、検索するかを定めるマッピング方式の一つである。CPUの処理速度は主記憶のアクセス速度に比べて非常に高速であるため、両者の間に高速なキャッシュメモリを置くことで、データアクセスの待ち時間を減らし、システム全体の性能を向上させている。セットアソシアティブ方式は、このキャッシュメモリの効率を決定づける重要な技術であり、他の代表的な方式であるダイレクトマッピング方式とフルアソシアティブ方式の長所を組み合わせた、性能と実装コストのバランスに優れた方式として、現代の多くのプロセッサで採用されている。 この方式を理解するためには、まずキャッシュメモリの基本的な動作原理と、主記憶のアドレスがどのように扱われるかを知る必要がある。主記憶とキャッシュメモリは、ブロックまたはキャッシュラインと呼ばれる固定長の単位でデータをやり取りする。CPUがデータを要求した際、そのデータがキャッシュメモリ上に存在すれば「キャッシュヒット」となり、高速にアクセスできる。存在しなければ「キャッシュミス」となり、低速な主記憶から該当データを含むブロックをキャッシュメモリにコピーしてからCPUに渡す。このとき、主記憶の広大なアドレス空間上のどのデータを、限られた容量のキャッシュメモリのどこに配置するかを決めるルールがマッピング方式である。主記憶のアドレスは通常、「タグ」「インデックス」「オフセット」の三つの部分に分割して解釈される。オフセットはブロック内のどのデータかを指し、インデックスはキャッシュメモリ上のどの位置に対応するかを決定し、タグは同じインデックスにマッピングされる可能性のある複数のブロックを識別するための情報となる。 セットアソシアティブ方式を他の方式と比較することで、その特徴がより明確になる。ダイレクトマッピング方式は、最も単純なマッピング方式であり、主記憶の各ブロックが格納されるキャッシュメモリ上の位置(キャッシュライン)が、アドレスのインデックス部によって一意に決まる。例えば、インデックスが「5」であれば、必ずキャッシュメモリの5番目のラインにしか格納できない。この方式は回路構成が単純で高速に動作するが、異なるメモリアドレスでもインデックス部が同じであれば同じキャッシュラインを奪い合う「競合(コンフリクト)」が発生し、キャッシュヒット率が低下しやすいという欠点がある。 一方、フルアソシアティブ方式は、ダイレクトマッピング方式とは対極にあり、主記憶のどのブロックでもキャッシュメモリ上の任意の場所に自由に格納できる。これにより、競合は発生せず、キャッシュメモリの空間を最も効率的に利用できる。しかし、目的のデータを探すためには、CPUが要求したアドレスのタグ部と、キャッシュメモリ内のすべてのラインのタグを同時に比較する必要がある。これは比較回路の規模を非常に大きくし、コストと消費電力の増大を招くため、大規模なキャッシュメモリでの採用は現実的ではない。 セットアソシアティブ方式は、これら二つの方式を巧みに組み合わせたものである。この方式では、まずキャッシュメモリ全体を「セット」と呼ばれる複数のグループに分割する。主記憶のブロックは、アドレスのインデックス部によって、どのセットに属するかが一意に決定される。この点はダイレクトマッピング方式と同様の考え方である。しかし、ここからが異なり、特定されたセットの中であれば、複数のキャッシュラインのいずれかに自由にデータを格納することができる。このセット内での自由な配置が、フルアソシアティブ方式の考え方を取り入れた部分である。 一つのセットに含まれるキャッシュラインの数は「ウェイ数」と呼ばれ、この方式の性能を特徴づける重要なパラメータとなる。「Nウェイセットアソシアティブ方式」と表現され、例えば、一つのセットが4つのキャッシュラインで構成されていれば「4ウェイセットアソシアティブ方式」となる。CPUがデータアクセスを要求すると、まずアドレスのインデックス部でセットを特定し、次にそのセット内に含まれるN個のキャッシュラインのタグと、要求アドレスのタグ部を同時に比較する。一致するものがあればキャッシュヒットとなる。ウェイ数が1の場合、これはダイレクトマッピング方式と等価になる。逆に、セット数が1でウェイ数がキャッシュラインの総数と等しい場合、これはフルアソシアティブ方式と等価になる。 セットアソシアティブ方式の利点は、ダイレクトマッピング方式の課題であった競合を大幅に緩和できる点にある。同じインデックスを持つ複数のデータブロックが同時にアクセスされても、セット内に空きラインがあれば競合することなく共存できるため、キャッシュヒット率が向上する。また、比較対象がセット内のウェイ数個のタグに限定されるため、フルアソシアティブ方式のように全ラインを比較する必要がなく、回路規模を現実的な範囲に抑えることができる。一方で、キャッシュミスが発生し、かつ該当セット内のすべてのラインが使用済みの場合、どのラインのデータを追い出して新しいデータを入れるかを決定する「置き換えアルゴリズム(リプレースメントポリシー)」が必要となる。代表的なものに、最も長い時間参照されていないデータを置き換えるLRU(Least Recently Used)がある。このアルゴリズムの実装が追加の回路コストとなる点は、ダイレクトマッピング方式にはない複雑さである。 総じて、セットアソシアティブ方式は、競合によるヒット率低下を抑えつつ、回路の複雑化やコスト増大を許容範囲内に留めることができる、非常にバランスの取れたキャッシュマッピング方式である。ウェイ数を調整することで、プロセッサの設計思想や用途に応じて、性能とコストのトレードオフを最適化できる柔軟性も持っている。この優れた特性により、今日の高性能プロセッサにおけるキャッシュメモリの標準的な実装方式として広く採用されている。