基本情報 平成29年度 秋期 問9:テクノロジ系に関する問題
キャッシュの書込み方式には, ライトスルー方式とライトバック方式がある。ラ イトバック方式を使用する目的として, 適切かものはどれか。
- aキャッシュと主記憶の一貫性 (コヒーレンシ) を保ちながら, 書込みを行う。
- bキャッシュミスが発生したときに, キャッシュの内容の主記憶への書き戻しを 不要にする。
- c個々のプロセッサがそれぞれのキャッシュをもつマルチプロセッサシステムに おいて, キャッシュ管理をライトスルー方式よりも簡単な回路構成で実現する。
- dプロセッサから主記憶への書込み頻度を減らす。正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d「主記憶への書込み頻度を減らす」 です。
キャッシュへの書込み方式は2種類:
- ライトスルー:キャッシュと主記憶に同時書込み(安全だけど遅い)
- ライトバック:キャッシュにだけ書き込み、追い出すときにまとめて主記憶へ書き戻す(高速)
ライトバックは「主記憶への書込み回数を減らして速くする」のが目的です。
👉 覚え方:バック=後でまとめて戻す!
ほかの選択肢:a 一貫性保持=ライトスルーの特徴/b キャッシュミス処理を不要にする→無理/c 簡単な回路=ライトスルーのほうが簡単。
なぜこれが正解か
正解は d。ライトバック方式は書込みをキャッシュにのみ反映し、該当ラインが追い出される(リプレース)タイミングで主記憶へまとめて書き戻す方式。これによりプロセッサから主記憶への書込み頻度を減らし、バスのトラフィックと書込みレイテンシを大幅に削減できる。
各選択肢の解説
- a 一貫性(コヒーレンシ)保持:ライトスルー方式の特徴。書込み時点で常にキャッシュ=主記憶。
- b キャッシュミス時の書き戻し不要:ライトバックではダーティなラインの追い出し時に書き戻しが必須で、矛盾。
- c 簡単な回路:ダーティビット管理が必要なライトバックのほうが回路は複雑。ライトスルーの方がシンプル。
- d 主記憶への書込み頻度を減らす → 正解。
覚え方・ひっかけ注意
ライトスルー=同時書き=安全だが遅い・回路単純、ライトバック=後でまとめ書き=高速・回路複雑・一貫性管理必要。マルチプロセッサではキャッシュコヒーレンスプロトコル(MESI等)が必要で、ライトバックでも整合性を担保。
理論的背景
キャッシュ書込み方式は 書込みヒット時 と 書込みミス時 で4通りの組合せ:
- 書込みヒット時:ライトスルー(write-through) vs ライトバック(write-back)
- 書込みミス時:ライトアロケート(write-allocate, ミスしたラインをキャッシュに読み込む) vs ノーアロケート(write-no-allocate, 主記憶のみ更新)
組合せ例:write-through + no-allocate(単純)、write-back + write-allocate(高性能、現代CPUの標準)。
ダーティビット管理
ライトバックではキャッシュラインにダーティビット(更新フラグ)を追加し、追い出し時にダーティなら主記憶へ書き戻す。クリーンなラインは破棄のみで済む。これにより未使用書込みを省略できるのが性能利得の源泉。
マルチプロセッサとコヒーレンス
ライトバック方式は他CPUが古い主記憶値を読む可能性があるため、スヌーピングまたはディレクトリ方式のコヒーレンスプロトコルが必要:
- MESI(Modified, Exclusive, Shared, Invalid):x86の標準。
- MOESI(+Owned):AMD K8以降、ARM等で採用。
- MESIF(+Forward):Intel QPI、複数Shared状態の最適化。
コヒーレンス維持のためバス上でスヌープを行う、ライトバック+MESIの実装が現代のマルチコアCPUの共通設計。
試験での位置づけ
FE「コンピュータアーキテクチャ」分野で頻出。キャッシュ階層(L1/L2/L3)、書込み方式、リプレースアルゴリズム(LRU/random)、ヒット率はセットで出題。応用情報・エンベデッドではキャッシュコヒーレンス、MMU、TLBまで踏み込む。
性能トレードオフ
- ライトスルーはライトバッファ(書込み待ち合わせFIFO)を組合せれば高速化可。CPUが書込み完了を待たずに次命令へ進める。
- ライトバックでも書き戻し遅延が突発的に発生(追い出しが集中するとバースト的書込み)。
- L1はライトスルー、L2/L3はライトバックという階層別使い分けも存在する(古いCPU)。
選択肢の発展補足
aのコヒーレンシはマルチプロセッサ環境で重要な概念。SC(sequential consistency)、TSO(total store order)、RC(relaxed consistency)のメモリモデルがあり、x86はほぼTSO、ARMはより緩やか。プログラマにはメモリバリア命令(mfence, dmb等)で意図的に順序保証する必要がある。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成29年度 秋期 問9/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。