応用情報技術者 2011年 秋期 午前2 問11
問題文
プロセッサにデータを読み込むときにキャッシュメモリにヒットしなかった場合、キャッシュメモリ制御装置が行う動作はどれか。
選択肢
ア:キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む。
イ:磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む。
ウ:主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む。(正解)
エ:ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む。
🔒 解説は解答すると表示されます
キャッシュミス時の処理【午前2解説】
正解の理由
プロセッサが読み込みを要求してキャッシュにヒットしなかった(キャッシュミス)場合、キャッシュ制御装置は上位(近接)の記憶階層から必要なブロックを取得してキャッシュに格納し、そこからプロセッサに供給します。通常の階層構成ではキャッシュの次は主記憶(RAM)であるため、この動作は主記憶からのブロック転送を伴います。したがって選択肢ウ(主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む)が正解です。
なお、書き込みバック(write-back)はキャッシュ内で変更された内容を主記憶へ反映する方式であり、直接磁気ディスクへ書き込む動作ではありません。ディスクへの書き込みが必要な場合は、OSのページアウトやファイルシステムのフラッシュ操作など別の機構で行われます。
解法ステップ
- 問題文が「プロセッサにデータを読み込むとき」とあるので、読み取り要求(read)であると判定する。
- 「キャッシュにヒットしなかった」=キャッシュミスが発生。次に参照すべき記憶階層を思い出す(CPU → キャッシュ → 主記憶 → 補助記憶)。
- 標準的なキャッシュミス処理では、主記憶からブロック単位でデータをキャッシュに読み込み、CPUへ返す。選択肢のうちこれを表すのがウであると判断する。
選択肢別の誤答解説
- ア: 「キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む」
- 読み取り要求時のキャッシュミス処理ではないため誤り。さらに「キャッシュ→ディスク」は通常の読み取りフローに矛盾します。キャッシュの変更を永続化する場合でも、書き込みバックはまず主記憶への反映を指し、ディスク書き込みは別層(OS/ファイルシステム)の責務です。
- イ: 「磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む」
- 補助記憶(磁気ディスク)は主記憶より下位の階層です。通常のキャッシュミスでは主記憶から取得するため、直接ディスクから読み込むのは誤り。ただし特殊ケース(仮想記憶でページフォルトが発生し、該当ページが主記憶に存在しないとき)はOSがディスクから主記憶へ読み込み、その後キャッシュが主記憶から取得する、という多段の処理になります。設問は通常のキャッシュミスを問うためイは不適切です。
- ウ: 「主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む」
- 正解。キャッシュミス時の標準的な処理であり、主記憶からブロック単位でキャッシュへ読み込む流れを正確に表しています。以降キャッシュからプロセッサへ供給されます。
- エ: 「ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む」
- 用語の混同がある選択肢です。OSが管理する「ディスクキャッシュ(主記憶内のディスクブロックのキャッシュ)」は主記憶上の領域であり、「ディスクキャッシュから主記憶へ読み込む」という表現自体が意味的に不整合です。問題文はCPUの読み込み時のキャッシュミス(CPUキャッシュ)を扱っており、エは当てはまりません。
よくある誤解
- 書き込みバック(write-back)を「キャッシュから直接ディスクへ書き込む方式」と誤解する。正しくはキャッシュで変更されたデータを主記憶に反映する方式で、ディスク書き込みはさらに別の処理で行われる。
- 「キャッシュミス=必ずディスク参照」と考える。多くの場合は主記憶から取得するだけで済み、ディスクが関与するのは主記憶にデータ自体が存在しない(ページフォルト)場合のみである。
- CPUキャッシュ(L1/L2/L3)とOSのディスクキャッシュ(バッファキャッシュ)を混同する。役割と所在(CPU近傍かOS管理か)が異なる。
補足コラム
- キャッシュはブロック(ライン)単位で転送される:キャッシュミス時には要求語よりも大きい連続したデータ(キャッシュライン)をまとめて読み込むことで局所性を活かします。
- 書き込みポリシーの例:
- 書き込みスルー(write-through):キャッシュ書き込み時に同時に主記憶へ書く。整合性は保たれやすいが遅くなる。
- 書き込みバック(write-back):キャッシュ内のみを書き換え、後で主記憶にまとめて書く。書き込み回数を減らせるが整合性管理が必要。
- 仮想記憶との関係:もし参照ページが主記憶に存在しないときはページフォルトが発生し、OSが補助記憶(ディスク)からページを主記憶へ読み込み、その後キャッシュが主記憶から取り込むという多段遅延が生じます。
FAQ
Q: キャッシュミスが起きたら必ずディスクにアクセスしますか?
A: いいえ。通常は主記憶からデータを取得します。ディスクアクセスは主記憶にデータが存在しない(ページフォルトなど)特殊な場合のみ発生します。
A: いいえ。通常は主記憶からデータを取得します。ディスクアクセスは主記憶にデータが存在しない(ページフォルトなど)特殊な場合のみ発生します。
Q: 書き込みバックと書き込みスルーのどちらが高速ですか?
A: 一般に書き込みバックの方が主記憶への書き込み回数が少なく高速ですが、キャッシュと主記憶の整合性管理が複雑になります。
A: 一般に書き込みバックの方が主記憶への書き込み回数が少なく高速ですが、キャッシュと主記憶の整合性管理が複雑になります。
Q: 「ブロック転送」とは何ですか?
A: キャッシュラインやページなど、単位まとめてデータを移動することで局所性を活かし効率を高める転送方式です。
A: キャッシュラインやページなど、単位まとめてデータを移動することで局所性を活かし効率を高める転送方式です。
関連キーワード: キャッシュメモリ、キャッシュミス、主記憶、書き込みバック、書き込みスルー、ブロック転送、仮想記憶、ページフォルト、階層記憶装置、バッファキャッシュ

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

