基本情報 平成30年度 秋期 問11:テクノロジ系に関する問題
キャッシュメモリに関する記述のうち, 適切ながものはどれか。
- aキャッシュメモリにヒットしない場合に割込みが生じ, プログラムによって主 記憶からキャッシュメモリにデータが転送される。
- bキャッシュメモリは, 実記憶と仮想記憶とのメモリ容量の差を埋めるために採 用される。
- cデータ書込み命令を実行したときに, キャッシュメモリと主記憶の両方を書き 換える方式と, キャッシュメモリだけを書き換えておき, 主記憶の書換えはキャ ッシュメモリから当該データが追い出されるときに行う方式とがある。正答
- d半導体メモリのアクセス速度の向上が著しいので, キャッシュメモリの必要性 は減っている。
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは c です。
キャッシュメモリへの書き込みには2つの方式:
- ライトスルー:キャッシュと主記憶に同時に書く(安全だけど遅い)
- ライトバック:キャッシュだけに書いておき、キャッシュから追い出されるときに主記憶へまとめ書き(速い)
選択肢cはこの2方式を正確に説明しています。
👉 覚え方:スルー=両方同時、バック=後でまとめ!
ほかの選択肢:a 割込みでプログラム転送=実際はハードウェアが自動/b 仮想記憶との混同/d キャッシュ不要論=今でも必須技術。
なぜこれが正解か
正解は c。キャッシュメモリへの書き込み方式は2種類:
- ライトスルー方式:データ書き込み時にキャッシュと主記憶の両方を同時更新。常に一貫性が保たれるが、主記憶への書き込み頻度が多くなる。
- ライトバック方式:キャッシュのみ更新し、該当キャッシュラインが追い出される(リプレース)タイミングで主記憶へ書き戻す。主記憶アクセス頻度を減らし高速化。
選択肢cはこの2方式の説明として正確。
各選択肢の解説
- a 割込み発生時にプログラムが主記憶からキャッシュ転送:ハードウェアが自動で行うためプログラム介入は不要。誤り。
- b 実記憶と仮想記憶のメモリ容量差を埋めるためのキャッシュ:ページ・スワップ機構の説明であり、CPUキャッシュの目的とは異なる。CPUキャッシュは主記憶とCPUの速度差を埋める。
- c ライトスルーとライトバックの2方式説明 → 正解。
- d 半導体メモリ高速化でキャッシュ不要:誤り。CPUとメモリの速度差は依然大きく(メモリウォール問題)、現代CPUでもL1〜L3キャッシュは必須。
覚え方・ひっかけ注意
キャッシュの目的:CPUと主記憶の速度差を埋める。仮想記憶は容量を増やす目的、キャッシュは速度を上げる目的、と混同しない。書き込み方式の他、リプレース方式(LRU、FIFO、ランダム)、マッピング方式(直接、フルアソシエイティブ、セットアソシエイティブ)もセットで整理。
キャッシュメモリの理論的背景
メモリウォール問題:CPUの動作速度向上(ムーアの法則)に対し主記憶アクセス速度の改善は遅く、両者のギャップが拡大。これを埋めるのがキャッシュメモリ。参照の局所性(時間的局所性=最近使ったデータは再利用される、空間的局所性=近接アドレスは連続アクセスされる)を利用して有効性を発揮。
キャッシュ階層
現代CPUは多段階キャッシュ:
- L1:CPU各コア内、命令キャッシュ(L1I)とデータキャッシュ(L1D)に分離。容量32-64KB、レイテンシ1-4サイクル。
- L2:コア内またはコア間共有、容量256KB-1MB、レイテンシ10-15サイクル。
- L3:複数コア共有、容量数MB-100MB+、レイテンシ30-50サイクル。
- L4:一部のCPU(IBM POWER、Intel初期等)でDRAMベース。
- 主記憶(DRAM):レイテンシ100-300サイクル。
書き込み方式の組み合わせ
キャッシュヒット時とミス時で4通り:
| ヒット時 | ミス時 | 名称 |
|---|---|---|
| ライトスルー | ノーアロケート | シンプル、ライトスルー単純構成 |
| ライトスルー | ライトアロケート | 一部の高性能設計 |
| ライトバック | ノーアロケート | 稀少 |
| ライトバック | ライトアロケート | 現代CPUの標準 |
マッピング方式
- 直接マッピング(Direct Mapped):主記憶アドレスから一意にキャッシュ位置決定。シンプルだが衝突多い。
- フルアソシエイティブ(Fully Associative):任意のキャッシュラインに格納可能。柔軟だが検索コスト大。
- nウェイセットアソシエイティブ:両者の折衷。現代CPUは4〜16ウェイが主流。
リプレースアルゴリズム
- LRU(Least Recently Used):最も古く使われたものを追い出す。理想的だが完全実装は高コスト。
- 疑似LRU(Pseudo-LRU):tree-LRU、近似実装。
- FIFO:単純、性能は劣る。
- ランダム:シンプル、平均的に妥当。
- NRU(Not Recently Used):参照ビットで近似LRU。
- ARC、CLOCK-Pro:高度な近代アルゴリズム。
マルチプロセッサとキャッシュコヒーレンス
複数CPUがキャッシュを持つ場合、データ一貫性確保のためコヒーレンスプロトコルが必要:
- MESI(Modified、Exclusive、Shared、Invalid):Intel標準。
- MOESI(+Owned):AMD K8以降、ARM等。
- MESIF(+Forward):Intel QPI/UPI。
- ディレクトリベース:大規模NUMA向け。
- スヌーピング:バスベース、各キャッシュが他のメモリトランザクションを監視。
キャッシュ関連の現代トピック
- キャッシュサイドチャネル攻撃:Meltdown(2018)、Spectre(2018)、Foreshadow、ZombieLoad。投機的実行とキャッシュタイミングの組み合わせで秘密情報漏洩。
- キャッシュパーティショニング:複数テナント間の干渉防止。Intel CAT(Cache Allocation Technology)、ARM MPAM。
- 不揮発性キャッシュ:Intel Optane Persistent Memory、3D XPoint。
試験での位置づけ
FE「ハードウェア/コンピュータアーキテクチャ」分野で毎期出題の最重要領域。書き込み方式・マッピング方式・リプレース方式・ヒット率計算は確実な得点源。応用情報・エンベデッドではコヒーレンスプロトコル、NUMA、TLB(Translation Lookaside Buffer)、メモリオーダリングまで踏み込む。
性能計算
実効アクセス時間 = ヒット率 × キャッシュアクセス時間 + (1 − ヒット率) × 主記憶アクセス時間。
例:ヒット率95%、L1=1ns、主記憶=100ns → 0.95×1 + 0.05×100 = 5.95ns。
選択肢の発展補足
bの仮想記憶は主記憶を超える論理アドレス空間を実現する技術。ページング方式でページテーブル管理、TLB(Translation Lookaside Buffer)でアドレス変換を高速化。TLB自体もキャッシュの一種(アドレス変換結果のキャッシュ)。dのメモリウォール問題は2010年代以降より深刻化、3D積層DRAM(HBM)、Compute Express Link(CXL)、CXL.memory等で対策が進む。L3キャッシュの大容量化(AMD 3D V-Cache:96MB+)、SRAM eDRAM混在等が現代の解決策。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成30年度 秋期 問11/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。