メモリ階層:レジスタからストレージまで
コンピュータに搭載されているメモリには、いくつかの種類があります。高速にデータを処理するには「速いメモリ」が必要ですが、速いメモリは高価で容量を増やせません。この「速度・容量・価格」の矛盾を巧みに解決するのが「メモリ階層」という設計思想です。
1. 速度・容量・価格のトレードオフ
理想のメモリとは、「アクセスが光のように速く、容量が無限で、価格も極めて安い」ものです。しかし、現代の半導体技術では、これらすべてを同時に満たすメモリは実現できません。
どうしても以下のトレードオフ(あちらを立てればこちらが立たずの関係)が発生します。
- 速いメモリは、回路が複雑で物理スペースをとるため、高価で容量が小さい。
- 大容量のメモリは、構造をシンプルにして安く作れるが、アクセス速度が遅い。
メモリを「速いものだけ」にすれば高価すぎて一般人には手が届きません。逆に「遅いものだけ」にすれば動作が重すぎて実用になりません。
2. ピラミッド型「メモリ階層構造」
この問題を解決するため、設計者たちは特徴の異なるメモリをピラミッド状に重ね合わせるメモリ階層構造(Memory Hierarchy)を考案しました。
ピラミッドの上に行くほどCPUの頭脳に近く、超高速ですが高価で小容量です。 下に行くほどCPUから遠くなり、低速ですが安価で大容量になります。
3. 各階層の役割と特徴
| 階層 | 典型的な容量 | アクセス速度(目安) | 特徴と役割 |
|---|---|---|---|
| レジスタ | 数百バイト | 0.5 ナノ秒以下 | CPU内部の超高速フリップフロップ回路。今まさに処理中のデータを1命令分だけ記憶。電源を切ると消える(揮発性)。 |
| キャッシュ (L1〜L3) | 数メガ〜数十MB | 1〜10 ナノ秒 | CPU内部/すぐ横にあるSRAMという高速メモリ。よく使うメインメモリのデータを一時コピーしておく。揮発性。 |
| メインメモリ (RAM) | 8GB〜64GB | 50〜100 ナノ秒 | PCのボード上にあるDRAMというメモリ。実行中のOSやアプリがデータを保持。揮発性。 |
| ストレージ (SSD/HDD) | 256GB〜数TB | 数マイクロ〜数ミリ秒 | フラッシュメモリや磁気ディスク。アプリやファイルを長期間保存。電源を切っても消えない(不揮発性)。 |
4. なぜこの構造で「速く」動くのか?(局所性の原理)
CPUが直接やり取りするのは、遅いストレージではなく手元の高速なレジスタやキャッシュメモリです。 しかし、なぜわずか数MBのキャッシュがあるだけで、コンピュータ全体がまるで「超大容量で超高速なメモリ」を積んでいるかのように快適に動くのでしょうか。
その理由は、プログラムが持つ「局所性の原理(Principle of Locality)」という性質にあります。
- 時間的局所性(Temporal Locality):一度アクセスされたデータは、近い将来に何度も繰り返し使われやすい性質。(例:ループ処理で使うループ変数など)
- 空間的局所性 (Spatial Locality):アクセスされたデータの「近く」にあるデータも、続けて使われやすい性質。(例:配列の要素を先頭から順に処理していくなど)
この局所性があるため、CPUがメインメモリからデータを読み出す際に周囲のデータもまとめてキャッシュへコピーしておくと、次に必要なデータが高い確率(90%以上)でキャッシュ内から見つかります。これをキャッシュヒットと呼びます。
このおかげで、CPUは遅いメインメモリへのアクセスを待たずに、高速なキャッシュだけで快適に処理を進められるのです。
次のセクションでは、メインメモリ(RAM)の内部に目を向け、プログラム実行時にメモリがどのように用途別に区分されるのか、スタックとヒープの仕組みを学びます。
メモリ階層における各記憶装置の「速度・容量・コスト・揮発性」の特性を整理しておきましょう。
- レジスタ:
- 速度:最も高速(ナノ秒未満)
- 特徴:CPU内部のフリップフロップ回路。電源を切るとデータが消える揮発性。
- キャッシュメモリ:
- 速度:極めて高速(レジスタと主記憶の中間)
- 特徴:CPU内部のSRAM。よく使われる主記憶のデータを一時コピーしておく。揮発性。
- 主記憶(メインメモリ):
- 速度:高速
- 特徴:マザーボード上のDRAM。実行中のプログラムやOSのデータを保持。揮発性。
- 補助記憶(ストレージ):
- 速度:低速
- 特徴:SSDやHDD。電源を切ってもデータが消えない不揮発性。大容量かつ低コスト。
また、よく使うデータを先回りして高速なメモリに保持し、全体の処理速度を高める仕組み(キャッシュヒット率の向上)は、プログラムの「局所性の原理」(時間的・空間的局所性)に支えられています。