基本情報技術者 2013年 秋期 午前(科目A) 問10
問題文
プロセッサにデータを読み込む時にキャッシュメモリにヒットしなかった場合、キャッシュメモリ制御装置が行う動作はどれか。
選択肢
ア:キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む。
イ:磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む。
ウ:主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む。(正解)
エ:ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む。
🔒 解説は解答すると表示されます
キャッシュミスの処理【午前解説】
正解の理由
CPUがキャッシュにアクセスしてデータが見つからない(キャッシュミス)場合、キャッシュメモリ制御装置は主記憶から必要なブロックを読み出してキャッシュに格納し、その後プロセッサへ転送します。したがって正しい選択肢は ウ です。
ポイントはデータ経路の階層です。CPUキャッシュはプロセッサと主記憶(メインメモリ)の間に位置する高速バッファであり、キャッシュミス時のフェッチ先は通常「主記憶」です。磁気ディスクとの間で行われるページスワップ(仮想記憶管理)は主記憶と二次記憶との操作であり、CPUキャッシュのヒット/ミス処理とは別のレイヤの話です。また、write-backはキャッシュ→主記憶への書き戻しを指し、直接ディスクへ書き戻すものではありません。
解法ステップ
- 問題が扱う対象を確認:プロセッサにデータを読み込む時の「キャッシュメモリにヒットしなかった場合」→キャッシュミスの処理。
- メモリ階層を思い出す:CPU ← キャッシュ ←→ 主記憶 ←→ 二次記憶(磁気ディスク)という順序。
- ミス時の典型的な動作を選ぶ:キャッシュは主記憶からブロックを読み込み補充する。
- 選択肢に磁気ディスクや「ディスクキャッシュ」が出てきたら、層の違いで除外する。
選択肢別の誤答解説
-
ア: キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む。
誤り。キャッシュの書き戻し(write-back)は主記憶への書き戻しであり、通常CPUキャッシュが直接磁気ディスクへ書き込むことはない。ディスクへの書き込みはさらに上位の処理(OSのページスワップなど)で行われる。 -
イ: 磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む。
誤り。直接ディスクからキャッシュへフェッチするのは一般的なCPUキャッシュの操作ではない。通常はまず主記憶から読み出してキャッシュを補充する。ディスク→主記憶→キャッシュの順が実務的。 -
ウ: 主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む。
正しい。キャッシュミス時には主記憶(メインメモリ)からキャッシュライン(ブロック)を読み込み、キャッシュに格納してCPUに提供する。 -
エ: ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む。
誤り。用語の混同がある。OSやストレージコントローラにおける「ディスクキャッシュ(バッファキャッシュ)」はディスクブロックのキャッシュであり、主記憶と二次記憶の間で働く。設問はCPUキャッシュのミス処理について問うているため不適切。
よくある誤解
- キャッシュの書き戻し(write-back)で直接ディスクに書くと思い込むこと。実際はwrite-backはキャッシュ→主記憶への書き戻しであり、ディスク書き込みは別の層の処理(ページスワップやファイルシステムのフラッシュ)で行われます。
- 「キャッシュミス=ディスクアクセス」と考えること。多くのミスは主記憶からのフェッチで解決され、ディスクアクセスは仮想記憶でページフォルトが発生した場合の話です。
- ディスクキャッシュの役割をCPUキャッシュと混同すること。用途と位置が異なるため区別して考えます。
補足コラム
- キャッシュのフェッチ単位は「キャッシュライン」や「ブロック」と呼ばれ、通常数十〜数百バイト単位です。キャッシュミス時にはその単位で主記憶から一括転送されます。
- 書き込みポリシー:write-through(書き込みを直ちに主記憶にも反映)とwrite-back(遅延して主記憶に書き戻す)があり、性能と一貫性のトレードオフがあります。
- 仮想記憶のページフォルトが発生した場合は、必要ページを磁気ディスク(スワップ領域やページファイル)から主記憶へ読み込む処理が行われるため、キャッシュ制御とは別にOSの介在が必要です。
FAQ
Q: キャッシュミスが起きたらCPUはすぐにディスクを読むのですか?
A: いいえ。まず主記憶からキャッシュラインを読み出します。ディスク読み込みはページフォルトなど別の条件が満たされた場合にOSが行います。
A: いいえ。まず主記憶からキャッシュラインを読み出します。ディスク読み込みはページフォルトなど別の条件が満たされた場合にOSが行います。
Q: write-backでキャッシュはいつ主記憶に書き戻されますか?
A: キャッシュラインが置換されるとき(他のデータで上書きする際)や、明示的なフラッシュ命令があったときなどに主記憶へ書き戻されます。直接ディスクへ書くわけではありません。
A: キャッシュラインが置換されるとき(他のデータで上書きする際)や、明示的なフラッシュ命令があったときなどに主記憶へ書き戻されます。直接ディスクへ書くわけではありません。
Q: 「ディスクキャッシュ」とは何ですか?
A: ディスクキャッシュはディスクブロックのコピーを保持するバッファ(主記憶内やストレージコントローラ内)であり、ディスクI/Oの回数を減らすための仕組みです。CPUキャッシュとは対象と目的が異なります。
A: ディスクキャッシュはディスクブロックのコピーを保持するバッファ(主記憶内やストレージコントローラ内)であり、ディスクI/Oの回数を減らすための仕組みです。CPUキャッシュとは対象と目的が異なります。
関連キーワード: CPUキャッシュ、キャッシュミス、主記憶、メモリ階層、write-back、write-through、キャッシュライン、ページフォルト、ディスクキャッシュ、仮想記憶

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

