コンピュータ

セットアソシアティブ方式とは

セットアソシアティブ方式

セットアソシアティブ方式とは、主記憶装置のデータをキャッシュメモリのどの位置に格納するか決める方式のひとつで、キャッシュメモリのブロックを複数のセットに分け、主記憶装置のブロック番号から一定の手順で算出した位置にあるセットに含まれているいずれかのブロックにデータを格納する方式です。

どういう意味ですか?
文言だけではイメージしづらいので、図を利用して説明していきます。

スポンサーリンク

【手順1】キャッシュメモリのブロックをセットに分ける

キャッシュメモリはデータをブロックという単位で管理しています。そのため、主記憶装置にあるデータはブロックという一定長の単位ごとにキャッシュメモリに格納します。

キャッシュメモリのブロック

セットアソシアティブ方式では、このキャッシュメモリ内にあるブロックをセットに分けます。(セットとは2つ以上のブロックを一つにまとめたもの)

複数のセットに分ける

セット内にN個のブロックを持つことを「Nウェイセットアソシアティブ」と呼び、上記の図例ではセット内に2個のブロックを持っているので「2ウェイセットアソシアティブ」と呼びます。

【手順2】一定の計算式で格納するセット番号を求める

セットアソシアティブ方式で、主記憶装置のデータをキャッシュメモリのどの位置に格納するか決めるには、まずセット番号を求めます。

セット番号は主記憶装置のブロック番号から一定の計算式で求めます。

一定の計算式で格納するセット番号を求める

【手順3】セット内のいずれかの場所に格納

セット番号を求めたら、セット内のいずれかの場所にデータを格納します。(セット内に空き領域がないかを探し、空きがあれば空いている場所にデータを格納する)

セット内のいずれかの場所に格納

ダイレクトマップ方式とフルアソシアティブ方式との違い

コンピュータの頭脳であるCPUは、主記憶装置(メインメモリ)とやり取りしながらコンピュータの動作に必要なデータや命令を処理します。

しかし、高速に動作するCPUに比べると主記憶装置の処理は遅く待ち時間が発生してしまいます。そこで主記憶装置よりも高速に動作するキャッシュメモリを使用します。

キャッシュメモリのイメージ例

CPUはキャッシュメモリにデータが存在する場合は、高速なキャッシュメモリからデータを読み込み、キャッシュメモリにデータが存在しない場合は、低速な主記憶装置からデータを読み込みます。

その際、主記憶装置のデータをキャッシュメモリにも保存しておきます。

主記憶装置のデータをキャッシュメモリのどの位置(ロケーション)に格納するかを決定する方式には「ダイレクトマップ方式」「フルアソシアティブ方式」「セットアソシアティブ方式」があります。

 

ダイレクトマップ方式は、一定の計算式を用いてキャッシュメモリ内の格納位置を決定する方式です。

ダイレクトマップ方式

それに対してフルアソシアティブ方式は、キャッシュメモリ内の空いている領域を探してその位置に格納する方式です。

フルアソシアティブ方式の例2

 

セットアソシアティブ方式は、一定の計算式を用いてキャッシュメモリ内の格納位置を決定する「ダイレクトマップ方式」と空いている領域を探して格納する「フルアソシアティブ方式」の中間的な性質を持つ方式です。

まとめ

  • ダイレクトマップ方式:一定の計算式で格納位置を決める
  • フルアソシアティブ方式:空いている場所を探してその位置に格納する
  • セットアソシアティブ方式:一定の計算式でセット番号を求め、セット内の空いている場所を探してその位置に格納する