記憶階層とキャッシュメモリをやさしく図解 — ヒット率・実効アクセス時間
「キャッシュメモリって何のためにあるの?」「実効アクセス時間の計算が苦手」——記憶装置は速さと容量がトレードオフ。だから何段にも組み合わせて、いいとこ取りをしています。この記事では、記憶階層のしくみと、ヒット率・実効アクセス時間の計算までを図解します。CPU側のしくみは CPUとコンピュータの構成 もどうぞ。
記憶階層 — 速さと容量のトレードオフ
記憶装置には「速いが小容量で高価」なものと「遅いが大容量で安価」なものがあり、1種類ではすべての要求を満たせません。そこで、CPUに近い順に速いものから並べ、よく使うデータを上位に置くことで、速さと容量を両立します。これが記憶階層です。
なぜキャッシュで速くなるのか — 局所性の原理
CPUはとても速いのに、主記憶(メモリ)は相対的に遅く、CPUが待たされてしまいます。この速度差を埋めるのが、CPUのすぐそばに置いた小容量・高速のキャッシュメモリです。効く理由は局所性の原理——プログラムは同じ場所を繰り返し使ったり、近くのデータを続けて使ったりする傾向があります。だから、一度使ったデータをキャッシュに置いておけば、次からは主記憶まで取りに行かずに済み、平均の待ち時間が激減します。
| 局所性 | 意味 | 例 |
|---|---|---|
| 時間的局所性 | 一度使ったデータは、また近いうちに使われやすい | ループ内の変数 |
| 空間的局所性 | 使ったデータの近くが、続けて使われやすい | 配列の連続アクセス |
ヒット率と実効アクセス時間(頻出計算)
目的のデータがキャッシュにあることをヒット、なくて主記憶へ取りに行くことをミスといい、ヒットの割合がヒット率です。全体の平均アクセス時間(実効アクセス時間)は、ヒット時とミス時の加重平均で求めます。
実効アクセス時間 = ヒット率 × キャッシュの時間 + (1 − ヒット率) × 主記憶の時間
もしヒット率が95%なら、0.95×10 + 0.05×100 = 9.5 + 5 = 14.5ns。ヒット率が上がるほど実効アクセス時間は速いキャッシュ側に近づきます。「ヒット率をわずかに上げるだけで体感が大きく変わる」のがこの式から読み取れます。
主記憶に使われるメモリ — RAMとROM、SRAMとDRAM
半導体メモリは、大きくRAM(読み書き可能・電源を切ると消える揮発性)とROM(基本読み出し専用・電源を切っても残る不揮発性)に分かれます。RAMはさらに2種類あります。
| 種類 | 特徴 | 主な用途 |
|---|---|---|
| SRAM | 高速・高価・大容量化しにくい。リフレッシュ不要 | キャッシュメモリ |
| DRAM | 安価・大容量化しやすい。リフレッシュが必要 | 主記憶(メインメモリ) |
| ROM(不揮発) | 電源を切っても保持。フラッシュメモリ等 | BIOS・SSD・USBメモリ |
DRAMは放っておくと記憶が薄れるため、一定間隔で記憶を保持し直す「リフレッシュ」が必要です。この違いはよく問われます。
基本情報技術者試験ではこう出る
「記憶階層の並び(速い順・大容量順)」「キャッシュが速度差を埋める理由」「実効アクセス時間の計算」「局所性の原理」「SRAMとDRAMの違い・リフレッシュ」「RAMとROM(揮発性・不揮発性)」が定番です。とくに実効アクセス時間=ヒット率×キャッシュ+(1−ヒット率)×主記憶の計算は確実に得点したいところ。CPUのクロック計算とセットで CPUとコンピュータの構成 も確認しておきましょう。
よくある質問
Q. キャッシュのL1・L2・L3とは?
A. キャッシュ自体も階層になっていて、CPUに近い順にL1(1次)・L2・L3と並びます。L1ほど小容量・高速で、外側ほど大容量・やや低速。まずL1を見て、なければL2…と探すことで、速さと容量を両立しています。
Q. 仮想記憶(仮想メモリ)とは?
A. 主記憶より大きなメモリ空間があるように見せる仕組みで、足りない分を補助記憶(SSD/HDD)に一時退避します。これにより実際のメモリ容量を超えるプログラムも動かせますが、退避(スワップ)が多発すると遅くなります。記憶階層の考え方の応用です。
Q. ライトスルーとライトバックの違いは?
A. キャッシュへの書き込み方式です。ライトスルーはキャッシュと主記憶に同時に書く(整合性が高いが遅め)、ライトバックはまずキャッシュだけに書き、後でまとめて主記憶に反映する(速いが管理が複雑)方式です。
まとめ
記憶階層は、レジスタ→キャッシュ→主記憶→補助記憶と速さ・容量が段階的に変わり、局所性を活かしてよく使うデータを上位に置くことで速さと容量を両立します。試験の要は実効アクセス時間=ヒット率×キャッシュ+(1−ヒット率)×主記憶の計算と、SRAM/DRAM・RAM/ROMの違い。CPU側の理解と合わせると全体像がつながります。
関連ページ: CPUとコンピュータの構成 / 2進数と基数変換 / 計算量とO記法 / 記事一覧