メモリ階層と性能
キャッシュをフルアソシアティブ方式にしても減らないミスとして正しいものはどれか。
- A2つのデータが同じセットを取り合い、互いに追い出し合うことによるミス
- B使うデータの量がキャッシュの容量より大きいことによるミス
- Cダイレクトマップの配置の偏りによるミス
答えと解説を見る
正解:B. 使うデータの量がキャッシュの容量より大きいことによるミス
フルアソシアティブ方式ではどのデータもどこにでも置けるので、同じセットの取り合いによる競合ミスはなくなります。しかし、プログラムが繰り返し使うデータの量(ワーキングセット)がキャッシュ全体より大きければ、どこに置いても入りきらずに追い出しが起こります。これが容量ミスで、キャッシュを大きくするか、ループブロッキングなどで再利用の範囲を小さくする必要があります。配置の偏りやセットの取り合いは、どちらも競合ミスの原因です。
- A. セットの取り合いは競合ミスで、フルアソシアティブにすればなくなります。
- B. 正しい。ワーキングセットがあふれる容量ミスは残ります。
- C. 配置の偏りによるミスも競合ミスの一種です。