エンベデッドシステムスペシャリスト 2022年 午前2 問01
問題文
マルチコアプロセッサで用いられるスヌープキャッシュの説明として、適切なものはどれか。
選択肢
ア:各コアがそれぞれ独立のメモリ空間とキャッシュをもつことによって、コヒーレンシを保つ。
イ:共有バスを介して、各コアのキャッシュが他コアのキャッシュの更新状態を管理し、コヒーレンシを保つ。(正解)
ウ:全てのキャッシュブロックを一元管理するディレクトリを用いて、キャッシュのコヒーレンシを保つ。
エ:一つのキャッシュを各コアが共有することによって、コヒーレンシを保つ。
🔒 解説は解答すると表示されます
スヌープキャッシュ【午前2解説】
正解の理由
マルチコアプロセッサでは、各コアが専用のキャッシュを持つ構成がよく使われます。このとき、あるコアがデータを書き換えても、ほかのコアのキャッシュに古いデータが残ると、データの一貫性(キャッシュコヒーレンシ)が失われます。
スヌープキャッシュでは、各コアのキャッシュが共有バス上の読み書きなどの通信を監視します。他のコアによる更新を検知すると、キャッシュ内のデータを無効化したり、最新状態にしたりして、コヒーレンシを保ちます。この方式を述べているイが適切です。
解法ステップ
- 問題のキーワード「スヌープ」に注目します。スヌープは「通信を監視する」という意味です。
- スヌープキャッシュでは、各キャッシュが共有バス上の通信を監視します。
- 他のコアによるデータ更新を検知して、キャッシュの状態を調整する選択肢を選びます。
選択肢別の誤答解説
- ア:各コアが独立したメモリ空間を持つことは、スヌープによるコヒーレンシ維持の説明ではありません。独立したメモリ空間だけでは、共有データのキャッシュ間の整合性は保てません。
- イ:共有バス上の通信を各キャッシュが監視し、他のコアの更新を検知してコヒーレンシを保つ方式です。
- ウ:各キャッシュブロックの状態をディレクトリで一元管理する方式です。これはディレクトリ方式の説明です。
- エ:全コアが一つのキャッシュを共有する説明です。キャッシュを共有すればキャッシュ間の不整合は起きにくくなりますが、スヌープキャッシュの仕組みではありません。
よくある誤解
- スヌープ方式とディレクトリ方式を混同する
スヌープ方式は主に共有バス上の通信を監視します。ディレクトリ方式は、専用のディレクトリでキャッシュの状態を管理します。 - スヌープを「他のキャッシュを直接管理すること」と捉える
各キャッシュが通信を監視し、更新を検知する仕組みです。特定のキャッシュが他のキャッシュを一元管理するわけではありません。 - キャッシュを共有すればスヌープ方式になると考える
キャッシュ共有とスヌープ方式は異なる構成です。スヌープ方式は、複数のキャッシュ間で整合性を保つ方法です。
補足コラム
スヌープ方式は、各キャッシュが共有バスを監視するため、構成が比較的シンプルです。一方、コア数が増えるとバス上の通信量が増え、監視の負荷も高くなります。そのため、多数のプロセッサを接続するシステムでは、ディレクトリ方式が使われることがあります。
FAQ
Q. キャッシュコヒーレンシとは何ですか?
A. 複数のキャッシュに同じデータが存在するとき、読み書き後も各キャッシュのデータが矛盾しないように保つことです。
A. 複数のキャッシュに同じデータが存在するとき、読み書き後も各キャッシュのデータが矛盾しないように保つことです。
Q. スヌープ方式では、何を監視しますか?
A. 主に共有バス上のメモリアクセスやデータ更新の通信を監視します。
A. 主に共有バス上のメモリアクセスやデータ更新の通信を監視します。
Q. ディレクトリ方式との違いは何ですか?
A. スヌープ方式は各キャッシュがバス上の通信を監視し、ディレクトリ方式はディレクトリがキャッシュの状態を管理します。
A. スヌープ方式は各キャッシュがバス上の通信を監視し、ディレクトリ方式はディレクトリがキャッシュの状態を管理します。
関連キーワード: キャッシュコヒーレンシ、共有バス、ディレクトリ方式、マルチコアプロセッサ

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

