キャッシュコヒーレンシとMESIプロトコルとは?
キャッシュコヒーレンシとMESIプロトコルとは、マルチプロセッサでは各コアが自分のキャッシュに同じ番地の写しを持つため、片方が書き換えると内容が食い違う。これを防いで整合性を保つ仕組みがキャッシュコヒーレンシ制御で、MESIは各ブロックを Modified/Exclusive/Shared/Invalid の4状態で管理する代表的な方式。
エンベデッドシステムスペシャリスト試験の過去問では2回出題されています(2016年度〜2018年度)。
きゃっしゅこひーれんしとめしぷろとこる
キャッシュコヒーレンシとMESIプロトコルの意味
マルチプロセッサでは各コアが自分のキャッシュに同じ番地の写しを持つため、片方が書き換えると内容が食い違う。これを防いで整合性を保つ仕組みがキャッシュコヒーレンシ制御で、MESIは各ブロックを Modified/Exclusive/Shared/Invalid の4状態で管理する代表的な方式。
キャッシュコヒーレンシとMESIプロトコルの具体例
コア0がある変数を書き換えるとき、他コアの写しへ無効化(Invalid)を通知し、自分の状態をModifiedにする。この通知はバスの監視(スヌープ)で行うため、複数コアが同じキャッシュラインを頻繁に書き換えると通知が飛び交い、フォルスシェアリングとして性能が落ちる。
キャッシュコヒーレンシとMESIプロトコルは試験でどう引っ掛けられる?
コヒーレンシはハードウェアが自動で保つので、プログラマが明示的に同期しなくても値の食い違いは起きない。ただし実行順序の保証は別問題(メモリオーダリング)であり、排他制御が不要になるわけではない。
キャッシュコヒーレンシとMESIプロトコルと関連する用語
キャッシュコヒーレンシとMESIプロトコルが出た過去問
図に示すマルチプロセッサシステムにおいて、各MPUのキャッシュメモリの内容を正しく保つために、共有する主記憶の内容が変化したかどうかを監視する動作はどれか。
正解:バススヌープ
要点:バススヌープは共有バス監視でキャッシュ一貫性を保つ
複数のプロセッサがそれぞれキャッシュを持って主記憶を共有すると、あるプロセッサが書き換えた内容が他方の古いキャッシュに残り、内容が食い違うおそれがある。そこで各キャッシュ制御部が共有バス上のアドレスやトランザクションを常時見張り、自分が保持している行に関わる書込みを検知したら無効化や更新を行う。この監視動作がバススヌープで、キャッシュコヒーレンシを保つ基本的な手法である。
出典:平成28年度 春期 エンベデッドシステムスペシャリスト試験 am2 問1(IPA)図に示すマルチプロセッサシステムにおいて、各MPUのキャッシュメモリの内容を正しく保つために、共有する主記憶の内容が変化したかどうかを監視する動作はどれか。
正解:バススヌープ
要点:バススヌープはバス監視でキャッシュ整合性を保つ動作
複数のMPUがそれぞれキャッシュをもって主記憶を共有すると、あるMPUが書き換えたデータが他方のキャッシュに古いまま残るキャッシュコヒーレンシの問題が起きる。これを防ぐため、各キャッシュ制御回路が共有バス上のアドレスとアクセス種別を常時監視し、自分が保持する行に関係する書込みを見つけたら該当行を無効化または更新する。この監視動作をバススヌープ(スヌーピング)と呼ぶ。
出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 am2 問2(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。