電源を切ると内容が消える、読み書き可能な主記憶用メモリ
RAM(ラム、Random Access Memory = ランダムアクセスメモリ)とは、どの番地(アドレス)にも同じ速さで読み書きできる、コンピュータの主記憶用メモリのことです。「ランダムアクセス」とは、テープのように先頭から順にたどらなくても、好きな場所に直接アクセスできるという意味です。
身近な例で考えると、勉強机の上の作業スペースに似ています。今使っている本やノートを机に広げておけば、すぐ手に取って書き込んだり読み返したりできます。CPU(=中央処理装置)が今まさに処理しているプログラムやデータを置いておくのが RAM の役目です。
上の図解のように、RAM には大きく分けて 2 種類あります。
・SRAM:高速だが高価。キャッシュメモリに使う
・DRAM:安価で大容量だが低速。主記憶(メインメモリ)に使う
揮発性(きはつせい、volatile)とは、電源を切ると記憶していた内容が消えてしまう性質のことです。RAM は揮発性メモリの代表で、電気が流れ続けている間だけデータを保持できます。
身近な例で考えると、砂浜に書いた文字のようなものです。波(電源)が来ている間は読めますが、波が引く(電源を切る)と跡形もなく消えてしまいます。だからこそ、消えては困るデータは電源を切っても残る装置に保存し直す必要があります。
この揮発性に対し、電源を切っても内容が残るメモリを不揮発性メモリと呼びます。
・揮発性:RAM(SRAM・DRAM)── 主記憶や作業用
・不揮発性:ROM、フラッシュメモリ、SSD ── 保存用
作業中のデータは速い RAM に置き、長く残したいデータは不揮発性の装置に書き込む、という役割分担になっています。
RAM の代表は SRAM(Static RAM = 静的RAM)と DRAM(Dynamic RAM = 動的RAM)の 2 種類です。1 ビット(=0か1の1桁)を何で記憶するかが大きく違います。
| 項目 | SRAM | DRAM |
|---|---|---|
| 記憶素子 | フリップフロップ | コンデンサ |
| 速度 | 高速 | 低速 |
| 価格 | 高価 | 安価 |
| 集積度(容量) | 低い | 高い |
| リフレッシュ | 不要 | 必要 |
| 主な用途 | キャッシュメモリ | 主記憶(メインメモリ) |
SRAM は Static(静的)の名のとおり、電源がある限り何もしなくても記憶を保てます。トランジスタを複数組み合わせたフリップフロップという回路で 1 ビットを保持するため高速ですが、部品数が多く高価で大容量にしにくいのが弱点です。
DRAM は Dynamic(動的)の名のとおり、コンデンサ(=電気をためる小さなバケツ)に電荷をためて 1 ビットを表します。構造が単純なので安く大量に作れますが、放っておくと電荷が抜けてしまうため、定期的に書き直すリフレッシュが必要です。
このため両者は適材適所で使い分けられています。速さ重視で少量のキャッシュには SRAM、容量重視で大量の主記憶には DRAM、というのが現代のコンピュータの基本構成です。
RAM と ROM はどちらもコンピュータのメモリですが、役割がまったく異なります。一言で言うと、RAM は「今の作業をするための机」、ROM は「大事な情報を保管した棚」です。
違いを整理すると次のとおりです。
・読み書き:RAM は自由に読み書きできる。ROM は基本的に読み出し専用
・揮発性:RAM は電源を切ると消える(揮発性)。ROM は消えない(不揮発性)
・速度:RAM は高速で CPU が直接やり取りする。ROM は比較的低速
・用途:RAM は実行中のプログラム・データを乗せる。ROM は起動プログラムや設定値を保管する
コンピュータを電源 ON にした瞬間、まず ROM から起動プログラムを読み出して RAM に展開し、そこから実際の処理が始まります。ROM が「出発点の地図」で、RAM が「地図を見ながら実際に走るスペース」というイメージです。
なぜ RAM が必要なのか。それは、CPU(=計算する部品)とデータを長期保管する SSD・HDD(=補助記憶装置)の速度に大きな差があるからです。CPU が直接 SSD からデータを読み書きすると、CPU は SSD の返答待ちでほとんどの時間を無駄にしてしまいます。
そこで間に RAM(主記憶)を置きます。プログラムを起動すると、SSD からデータをまとめて RAM に読み込み、以降は CPU が RAM とやり取りします。RAM は SSD の 100 倍以上速いため、処理がスムーズになります。
身近な例で考えると、倉庫から材料を作業台に移してから加工するのと同じです。毎回倉庫まで取りに行く(SSD 直接アクセス)より、作業台(RAM)に必要分を揃えておくほうがずっと効率的です。RAM が多い(大きい作業台)ほど、たくさんのプログラムを同時に快適に動かせます。