基本情報技術者 2013年 秋期 午前(科目A) 問10
問題文
プロセッサにデータを読み込む時にキャッシュメモリにヒットしなかった場合、キャッシュメモリ制御装置が行う動作はどれか。
選択肢
ア:キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む。
イ:磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む。
ウ:主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む。(正解)
エ:ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む。
キャッシュミス時の制御動作とは【午前2 解説】
要点まとめ
- 結論: キャッシュにヒットしなかった場合、キャッシュ制御装置は主記憶から該当ブロックを読み出してキャッシュに格納しプロセッサへ渡す動作を行います。
- 根拠: キャッシュはプロセッサと主記憶の間に位置し、ミス時は主記憶からブロック単位で補填する設計であり、通常は磁気ディスクを直接参照しません。
- 差がつくポイント: 磁気ディスクやディスクキャッシュと混同しないこと、読み込み(read)と書き込み(write)のポリシーやブロック単位転送、置換方式の違いを理解すると得点差がつきます。
正解の理由
正解は ウ です。キャッシュメモリにデータが存在しないキャッシュミス発生時、キャッシュ制御装置は次にデータが存在する階層、すなわち主記憶(メインメモリ)から必要なブロックをブロック単位で読み出してキャッシュに格納します。その後プロセッサにデータを提供します。選択肢のうち主記憶からのブロック転送を指すのがウであり、設問と一致します。
よくある誤解
- 「ディスクから読み込む」と混同する: キャッシュミスの補填元は通常主記憶であり、磁気ディスクは主記憶にページが存在しない二次記憶に関する場合のみ関わります。
- 「キャッシュからディスクへ書き戻す」と誤認する: キャッシュミスの際にキャッシュがディスクに書くわけではなく、書き込みのタイミング(write-back/ write-through)と混同しやすい点に注意。
- 「ディスクキャッシュ」と「キャッシュメモリ」を同一視する: ディスクキャッシュはディスクI/O高速化のための別階層であり、CPUキャッシュ(レジスタ→L1/L2→主記憶)とは用途と階層が異なります。
解法ステップ
- 設問を「プロセッサがデータを読み込む時にキャッシュにヒットしなかった」状況と読み替える。
- 「ヒットしない(ミス)」時に補填元はどこかを考える。通常のメモリ階層はプロセッサ→キャッシュ→主記憶→二次記憶(磁気ディスク)の順。
- 選択肢を見て、主記憶からの読み出しを表すものを選ぶ。磁気ディスクやディスクキャッシュを起点とする選択肢は除外する。
- 主記憶からブロック転送を行う選択肢(ウ)を確定する。
選択肢別の誤答解説
- ア: キャッシュメモリから所要のデータをブロック転送し、磁気ディスクに書き込む。
- 誤り。これはキャッシュの内容を磁気ディスクに書き戻す(例えばページ置換でスワップアウトする場合や書き戻し)動作を示唆しますが、読み込み時のミス補填とは無関係です。
- イ: 磁気ディスクから所要のデータをブロック転送し、キャッシュメモリに読み込む。
- 誤り。磁気ディスクは二次記憶であり、通常は主記憶にページがない(スワップやページフォルト)場合に関与します。キャッシュミス時に通常直接磁気ディスクを参照するわけではありません。
- ウ: 主記憶から所要のデータをブロック転送し、キャッシュメモリに読み込む。
- 正解。キャッシュミス(読み込み)の補填元は主記憶であり、必要なブロックを読み出してキャッシュに格納します。
- エ: ディスクキャッシュから所要のデータをブロック転送し、主記憶に読み込む。
- 誤り。ディスクキャッシュはディスクI/O高速化用であり、主記憶へ直接データを読み込むという表現は階層として不自然です。設問のキャッシュ(CPUキャッシュ)に対する動作ではありません。
補足コラム
- ミス時の遅延(ミスペナルティ)は平均アクセス時間に大きく影響します。典型的な式は で、はヒット率、はキャッシュアクセス時間、はミス時の遅延(主記憶アクセス+再試行コスト)です。ヒット率向上が性能に直結します。
- 書き込みポリシー: 読み込み時は主記憶からの読み出し(read allocate)が一般的ですが、書き込み時は write-back(遅延書き戻し)か write-through(即時書き戻し)かで挙動が変わります。これらとキャッシュミスの区別を押さえておきましょう。
FAQ
Q: キャッシュミスが起きたら必ず主記憶を見るのですか?
A: はい。通常のキャッシュミス(読み込み)では主記憶から該当ブロックを読み出します。主記憶にない場合(ページフォルト)はさらに下位の二次記憶(磁気ディスク)を参照します。
A: はい。通常のキャッシュミス(読み込み)では主記憶から該当ブロックを読み出します。主記憶にない場合(ページフォルト)はさらに下位の二次記憶(磁気ディスク)を参照します。
Q: ディスクキャッシュと混同してしまいます。違いは何ですか?
A: CPUキャッシュはプロセッサと主記憶の高速バッファであり、ディスクキャッシュはディスクI/Oを高速化するために主記憶の一部や専用キャッシュが使われる別の仕組みです。用途と階層が違います。
A: CPUキャッシュはプロセッサと主記憶の高速バッファであり、ディスクキャッシュはディスクI/Oを高速化するために主記憶の一部や専用キャッシュが使われる別の仕組みです。用途と階層が違います。
Q: 書き込み(ストア)時の動作は今回と同じですか?
A: 書き込みでは write-allocate(ミス時にブロックを読み込む)や no-write-allocate(読み込まない)といった方針があり、システムによって異なります。読み込みミスとは挙動が異なる場合があります。
A: 書き込みでは write-allocate(ミス時にブロックを読み込む)や no-write-allocate(読み込まない)といった方針があり、システムによって異なります。読み込みミスとは挙動が異なる場合があります。
関連キーワード: キャッシュメモリ、キャッシュミス、主記憶、ブロック転送、キャッシュ制御、ヒット率、ミスペナルティ、書き込みポリシー、置換方式

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

