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

選択肢
ア:データハザード
イ:バススヌープ(正解)
ウ:ライトスルー
エ:ライトバック
🔒 解説は解答すると表示されます
バススヌープ方式【午前2解説】
正解の理由
マルチプロセッサシステムでは、複数のMPUが同じ主記憶のデータをそれぞれのキャッシュメモリに保持することがあります。あるMPUがデータを書き換えたとき、ほかのMPUのキャッシュに古いデータが残ると、処理の整合性が保てません。
この問題を防ぐため、各キャッシュコントローラが共通バス上のアクセスを監視し、データの変更を検知する方式がバススヌープです。これに該当するのはイです。
解法ステップ
- 問題文から、「各MPUのキャッシュ内容を正しく保つ」ことが目的だと読み取ります。
- 共有バスを通るデータの読み書きを監視し、キャッシュ間の整合性を保つ仕組みを考えます。
- バス上の動作を監視する方式である、バススヌープを選びます。
選択肢別の誤答解説
-
ア:データハザード
命令の実行順序などによって、命令間で必要なデータが正しく利用できなくなる問題です。キャッシュ間の整合性を保つための監視方式ではありません。 -
イ:バススヌープ
各キャッシュが共通バス上の読み書きを監視し、ほかのMPUによるデータの変更を検知する方式です。キャッシュの無効化や更新などを行い、データの整合性を保ちます。 -
ウ:ライトスルー
キャッシュへの書込みと同時に、主記憶にも書き込む方式です。書込み方式の一つであり、バス上の動作を監視してキャッシュの整合性を保つ仕組みそのものではありません。 -
エ:ライトバック
キャッシュへの書込みを先に行い、主記憶への反映を後回しにする方式です。これも書込み方式の一つで、バススヌープとは役割が異なります。
よくある誤解
-
ライトスルーなら、キャッシュ間の整合性も自動的に保たれる
主記憶への書込みをすぐ反映する方式ですが、ほかのキャッシュにある古いデータへの対処は別途必要です。 -
ライトバックとバススヌープは同じ分類の方式である
ライトバックは主記憶への書込みタイミング、バススヌープはバスを監視して整合性を保つ方法を指します。 -
データハザードは、キャッシュに古い値が残る問題を指す
キャッシュの古い値による不整合は、キャッシュコヒーレンシの問題です。データハザードは主に命令間のデータ依存に関する用語です。
補足コラム
バススヌープでは、あるMPUがデータを書き込んだことをほかのキャッシュが検知し、そのデータを無効化したり、更新したりします。代表的なキャッシュコヒーレンシプロトコルには、キャッシュラインの状態を管理するMESIプロトコルがあります。
FAQ
Q. バススヌープは、主記憶を直接監視する方式ですか?
A. 主に共通バス上のアクセスや書込みを監視します。その情報を基に、各キャッシュが保持するデータの状態を管理します。
A. 主に共通バス上のアクセスや書込みを監視します。その情報を基に、各キャッシュが保持するデータの状態を管理します。
Q. ライトスルーとバススヌープは併用できますか?
A. はい。ライトスルーは書込み方式、バススヌープはキャッシュ間の整合性を保つ方式なので、役割が異なり、併用できます。
A. はい。ライトスルーは書込み方式、バススヌープはキャッシュ間の整合性を保つ方式なので、役割が異なり、併用できます。
関連キーワード: キャッシュコヒーレンシ、キャッシュメモリ、共有バス、MESIプロトコル、ライトスルー、ライトバック

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

