パソコンの「メモリ8GB」と「SSD 512GB」って、どっちもデータをしまう場所ですよね?何が違うんですか?
いい質問! メモリは「作業机」、SSDは「本棚」なんだ。机が広いほど作業がはかどるし、手元にメモ(キャッシュ)があればもっと速い。順番に見ていこう。
記憶装置には「階層」がある
CPUはとても高速なので、データの置き場所が遅いと待たされてしまいます。かといって、速い記憶装置は高価で、大容量にできません。そこでコンピュータは 速さと容量の違う記憶装置を組み合わせて 使います。これを 記憶階層 といいます。
| 記憶装置 | 例え | 特徴 |
|---|---|---|
| レジスタ | 頭の中 | CPU内部。最も高速だがごく小容量 |
| キャッシュメモリ | 手元のメモ | CPUとメインメモリの間に置く高速メモリ |
| メインメモリ(主記憶) | 作業机 | 実行中のプログラムやデータを置く |
| SSD・HDD(補助記憶) | 本棚 | 電源を切ってもデータが残る。大容量 |
プログラムを実行するときは、本棚(SSD)から作業机(メインメモリ)にデータを広げて作業します。メインメモリが小さい と、机に載り切らない分を何度も本棚と出し入れすることになり、動作が遅くなります。
RAMとROM、DRAMとSRAM
メモリは、電源を切ると内容が消えるかどうか で大きく2つに分けられます。
- 揮発性:電源を切ると内容が消える
- 不揮発性:電源を切っても内容が残る
| 種類 | 読み書き | 揮発性 | 主な用途 |
|---|---|---|---|
| DRAM | 読み書きできる(RAM) | 揮発性 | メインメモリ |
| SRAM | 読み書きできる(RAM) | 揮発性 | キャッシュメモリ |
| ROM | 基本は読出し専用 | 不揮発性 | 機器の起動用プログラムなど |
| フラッシュメモリ | 書き換えできる | 不揮発性 | SSD、USBメモリ、SDカード |
RAM(Random Access Memory)は読み書きできるメモリ、ROM(Read Only Memory)は読出し専用のメモリです。RAMのうち、DRAMとSRAMは次のように使い分けます。
| DRAM | SRAM | |
|---|---|---|
| 速さ | 比較的遅い | 高速 |
| 価格・容量 | 安価で大容量にしやすい | 高価で小容量 |
| リフレッシュ(記憶保持のための再書込み) | 必要 | 不要 |
| 用途 | メインメモリ | キャッシュメモリ |
SRAMの S は Static(静的):一度書けば電源がある限り保持され、リフレッシュ不要で速い → キャッシュ。DRAMの D は Dynamic(動的):放っておくと内容が薄れるので定期的にリフレッシュが必要 → 安価で大容量なのでメインメモリ。
キャッシュメモリの仕組み
CPUは、データが必要になると まずキャッシュメモリを探し、なければメインメモリを読みに行きます。キャッシュにはよく使うデータが残っているので、多くの場合は手元のメモだけで済みます。
キャッシュメモリに目的のデータがある確率を ヒット率 といいます。
実効アクセス時間 = ヒット率 × キャッシュのアクセス時間 +(1 − ヒット率)× メインメモリのアクセス時間
キャッシュ 10ナノ秒、メインメモリ 60ナノ秒、ヒット率 90% のとき
0.9 × 10 + 0.1 × 60 = 9 + 6 = 15ナノ秒
キャッシュがなければ毎回60ナノ秒かかるので、4分の1の時間で済むことになります。
ヒット率が上がれば、もっと速くなるってことですね。
そのとおり。ヒット率が100%に近づくほど、実効アクセス時間はキャッシュの速さに近づくよ。キャッシュの容量を増やすと、一般にヒット率は上がるんだ。
キャッシュメモリは何段か重ねることもあり、CPUに近い順に 1次キャッシュ、2次キャッシュ …と呼びます。CPUは1次 → 2次 → メインメモリの順に探します。
計算問題では 「1 − ヒット率」を掛ける相手はメインメモリ です。ヒット率をメインメモリ側に掛けてしまうミスが多いので、「当たったらキャッシュ、外れたらメインメモリ」と声に出して確認しましょう。
試験に出るポイント
- 記憶階層:レジスタ → キャッシュ → メインメモリ → SSD・HDD。上ほど高速・高価・小容量
- キャッシュメモリ はCPUとメインメモリの速度差を埋める。CPUはまずキャッシュを探す
- 実効アクセス時間 = ヒット率 × キャッシュ +(1 − ヒット率)× メインメモリ
- DRAM = メインメモリ(安価・大容量・リフレッシュ必要)、SRAM = キャッシュ(高速・高価)
- DRAM・SRAMは 揮発性、ROM・フラッシュメモリは 不揮発性