そこで、フルアソシアティブ方式とダイレクトマッピング方式の中間的な方式である「セットアソシアティブ(Set Associative)方式」が、ほとんどのCPUアーキテクチャが採用するキャッシュ構造となっている。
セットアソシアティブ方式では、インデックスを利用してマッピングするという点では、ダイレクトマッピング方式と変わらない。ただし、同じインデックスに対応するキャッシュラインを複数個、用意する。最も単純な構造では、同じインデックスに対して2個のキャッシュラインを準備しておく。この同じインデックスに対応するキャッシュラインのグループを「ウエイ」と呼ぶ。そしてウエイの数に応じてグループを特定する。例えば2個のキャッシュラインを同じインデックスに用意した場合は「2ウエイ」となり、1つのグループを「ウエイ0」、もう1つのグループを「ウエイ1」と呼んで区別する。なおウエイ数は2個(2ウエイ)とは限らない。4ウエイ、8ウエイといったキャッシュ構造も採用されている。
具体的なキャッシュアクセス動作は以下のようになる。CPUがアクセス要求を出したアドレスからは、まずインデックスに対応するラインを探す。当然ながらウエイ数と同じだけの候補が見つかる。あるいは、対応するラインが見つからない(「キャッシュミス」、あるいは「ミス」と呼ぶ)。候補が見つかった場合は、上位アドレスの違いから、どのウエイのラインが対応するか、あるいはどのウエイのラインも対応していないかを判断する。
(次回に続く)
⇒「福田昭のデバイス通信」連載バックナンバー一覧
Copyright © ITmedia, Inc. All Rights Reserved.