エンベデッドシステムスペシャリスト 2011年 午前2 問02
問題文
セットアソシアティブ方式のキャッシュメモリを含めたメモリシステムの平均メモリアクセス時間を短縮するために行う対策のうち、ライト時のミスペナルティを増加させるものはどれか。
選択肢
ア:ウェイ数を増加させる。
イ:エントリ数を増やす。
ウ:仮想アドレス変換時間をなくす。
エ:ブロックサイズを大きくする。(正解)
🔒 解説は解答すると表示されます
ブロックサイズとミスペナルティ【午前2解説】
正解の理由
正解はエです。ブロックサイズを大きくすると、キャッシュミス時に主記憶からキャッシュへ転送するデータ量が増えます。そのため、必要なデータがキャッシュに届くまでの時間、つまりミスペナルティが大きくなります。
ライトミス時に、書き込むデータを含むブロックを主記憶からキャッシュへ読み込む方式では、ブロックサイズが大きいほど転送に時間がかかります。
一方、大きなブロックは、近くにあるデータも一緒にキャッシュに取り込めるため、空間的局所性を利用してミス率を下げる効果があります。つまり、平均メモリアクセス時間を短くする一方で、ミスペナルティは増加させる場合があります。
平均メモリアクセス時間は、概念的には次のように表せます。
解法ステップ
- 平均メモリアクセス時間を短縮する方法として、キャッシュミスを減らす方法と、ミス時の処理時間を短くする方法を区別します。
- 選択肢ごとに、ミス率・ヒット時間・ミスペナルティのどれに影響するかを考えます。
- ブロックサイズを大きくする方法は、近隣データも取り込めるためミス率を下げる一方、転送データ量を増やしてミスペナルティを大きくします。
- したがって、ミスペナルティを増加させるものとしてエを選びます。
選択肢別の誤答解説
-
ア:ウェイ数を増加させる。
セット内で格納先を選べる範囲が広がり、競合によるミスを減らせる場合があります。ミス率の低下を狙う方法であり、ミスペナルティを増加させるものではありません。 -
イ:エントリ数を増やす。
キャッシュに保持できるデータ量が増え、容量不足によるミスを減らせる場合があります。こちらも主にミス率を下げる方法です。 -
ウ:仮想アドレス変換時間をなくす。
アドレス変換にかかる時間を短縮し、アクセス時間の短縮を狙う方法です。キャッシュミス時に転送するデータ量を増やすものではありません。 -
エ:ブロックサイズを大きくする。
キャッシュミス時に一度に転送するデータ量が増えるため、ミスペナルティが大きくなります。これが該当します。
よくある誤解
-
ブロックサイズを大きくすれば、常にアクセス時間が短くなると思うこと
ミス率の低下が期待できる一方、ミス時の転送時間は長くなります。両方の影響を考える必要があります。 -
ミス率とミスペナルティを混同すること
ミス率は「どれだけの頻度でミスするか」、ミスペナルティは「ミスしたときにどれだけ時間がかかるか」です。 -
キャッシュ容量とブロックサイズを同じものと考えること
ブロックサイズは1エントリに格納するデータ量です。エントリ数を増やすこととは別の対策です。
補足コラム
ブロックサイズを大きくすると、連続したデータを順に使う処理では、空間的局所性によってキャッシュミスが減りやすくなります。ただし、必要のないデータまで転送することになり、転送時間やキャッシュの占有量が増えることもあります。
このため、ブロックサイズは大きければよいとは限らず、ミス率の低下とミスペナルティの増加のバランスが重要です。
FAQ
Q. ブロックサイズを大きくすると、なぜミス率が下がるのですか?
A. あるデータを使った後、その近くのアドレスのデータも使う傾向があるためです。まとめて取り込むことで、近隣データへのアクセス時にキャッシュヒットしやすくなります。
A. あるデータを使った後、その近くのアドレスのデータも使う傾向があるためです。まとめて取り込むことで、近隣データへのアクセス時にキャッシュヒットしやすくなります。
Q. ミスペナルティは、キャッシュミスの回数のことですか?
A. いいえ。ミスの回数や頻度はミス率に関係します。ミスペナルティは、1回のキャッシュミスを処理するために追加でかかる時間です。
A. いいえ。ミスの回数や頻度はミス率に関係します。ミスペナルティは、1回のキャッシュミスを処理するために追加でかかる時間です。
関連キーワード: セットアソシアティブ方式、キャッシュメモリ、ブロックサイズ、ミス率、ミスペナルティ、空間的局所性

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

