エンベデッドシステムスペシャリスト 2018年 午前2 問02
問題文
図に示すマルチプロセッサシステムにおいて、各MPUのキャッシュメモリの内容を正しく保つために、共有する主記憶の内容が変化したかどうかを監視する動作はどれか。

選択肢
ア:データハザード
イ:バススヌープ(正解)
ウ:ライトスルー
エ:ライトバック
🔒 解説は解答すると表示されます
バススヌープ【午前2解説】
正解の理由
複数のMPUが同じ主記憶を共有すると、それぞれのキャッシュに同じデータのコピーが存在することがあります。一方のMPUがデータを書き換えたとき、もう一方のキャッシュに古いデータが残ると、キャッシュ間の整合性が保てません。
このため、各MPUはバス上のメモリアクセスを監視し、ほかのMPUによる書込みを検知します。この動作をバススヌープといいます。検知したときにキャッシュ内の該当データを無効化したり、最新の値に更新したりすることで、キャッシュの整合性を保ちます。
したがって、該当するのはイです。
解法ステップ
- 問題の目的が、複数のキャッシュにあるデータの整合性を保つことだと確認します。
- 「共有する主記憶の内容が変化したかどうかを監視する」という説明に注目します。
- バス上の書込みなどを監視し、キャッシュの整合性を維持する仕組みであるバススヌープを選びます。
選択肢別の誤答解説
-
ア:データハザード
命令の実行順序やデータの依存関係によって、後続の命令が必要なデータを使えない問題です。キャッシュ間のデータ整合性を監視する仕組みではありません。 -
イ:バススヌープ
バス上のアクセスを監視し、ほかのMPUによる書込みを検知してキャッシュの整合性を保つ仕組みです。問題文の説明に合致します。 -
ウ:ライトスルー
キャッシュへの書込みと同時に、主記憶にも書き込む方式です。書込み方式の一つであり、バス上のアクセスを監視する動作そのものではありません。 -
エ:ライトバック
キャッシュへの書込みを先に行い、主記憶への反映を後回しにする方式です。キャッシュからデータを追い出すときなどに、変更内容を主記憶へ書き戻します。
よくある誤解
-
ライトスルーとバススヌープは同じではありません。
ライトスルーは書込み先を決める方式で、バススヌープはバスを監視してキャッシュの整合性を保つ仕組みです。 -
キャッシュが主記憶を参照していれば、整合性も自動的に保たれるとは限りません。
各MPUのキャッシュに古いデータが残る可能性があるため、無効化や更新などの制御が必要です。 -
「スヌープ」は主記憶を直接監視するという意味ではありません。
主にバス上のアクセスを監視し、ほかのMPUによる書込みなどを検知します。
補足コラム
バススヌープは、複数のプロセッサが共有バスを使うシステムで、キャッシュコヒーレンス(キャッシュ間の整合性)を保つ代表的な方法です。プロセッサ数が増えると、バス上の通信量が増え、監視の負荷も高くなるため、大規模なシステムでは別の整合性維持方式が使われることもあります。
FAQ
Q. バススヌープは、キャッシュの内容を必ず主記憶と同じにする仕組みですか?
A. 主記憶との単純な比較を常に行うわけではありません。バス上の書込みなどを検知し、キャッシュの該当データを無効化または更新することで、整合性を保ちます。
A. 主記憶との単純な比較を常に行うわけではありません。バス上の書込みなどを検知し、キャッシュの該当データを無効化または更新することで、整合性を保ちます。
Q. ライトスルーなら、バススヌープは不要ですか?
A. 必ず不要になるわけではありません。主記憶が更新されても、別のMPUのキャッシュに古いデータが残ることがあるため、キャッシュ間の整合性を保つ仕組みが必要です。
A. 必ず不要になるわけではありません。主記憶が更新されても、別のMPUのキャッシュに古いデータが残ることがあるため、キャッシュ間の整合性を保つ仕組みが必要です。
関連キーワード: キャッシュコヒーレンス、キャッシュメモリ、共有主記憶、ライトスルー、ライトバック

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

