度々話題になる「RAM と ROM の違い」ですが、
皆さんはしっかり理解できている自信はありますでしょうか。
記憶装置とはその名の通り、情報を記憶するための仕組みです。
特に、コンピュータのそれを言うことが多いですね。
さて、この記憶装置、HDD、SD カードや CD-ROM など色々ありますが、二つの方法で分類することができます。
- 「記憶装置そのものの性質による分類」
- 「コンピュータにとっての役割による分類」
またこれと別に、上記二つがごっちゃになった「慣例的な呼び方」がありますが、これが問題をややこしくしているように感じます。
ということで、順番に見て行きましょう。
記憶装置の性質による分類
揮発性 (Volatility)
揮発性 とは、電源を切った時に情報が失われる、という記憶装置の性質です。
逆に、電源を切ることが、情報を失う原因とならない記憶装置のことを不揮発性と呼びます(他の方法の削除なら構いません)。
ごく簡単なのですが、重要なポイントが一つあります。
記憶装置が、同時に揮発性であり、不揮発性でもあることは決してありません。同じように、揮発性、不揮発性のどちらでもない、ということも決してありません。格好いい言い方をするなら、この二つの性質は「互いに排他的」です。世の中の全ての記憶装置は「揮発性」か「不揮発性」のどちらか一つに分類できます。
これは、「揮発性」と「不揮発性」が同時に成り立っていると仮定した場合、「電源を切ると必ず情報が失われる」「電源を切るだけでは情報は失われない」という風に、矛盾(A かつ A でない)が導けることから簡単に分かります。
ROM (Read-only memory)
ROM は、直訳すると「読む・だけ・記憶」となります。その名の通り、読み出ししかできない記憶装置のことです。情報の書き込み、変更、追記、削除などは基本的にはできません。
例えば、市販の音楽 CD や美術館の絵などには書き込みはできず、情報を取り出すことしかできませんから、 ROM と言えます。
ROM の場合、揮発性のように、完全に「互いに排他的」とは言い切れません。「読み出し「しか」できない」というの表現の「しか」具合がはっきりしないからです。
当然ながら、全く書き込みが出来ないと、そもそも情報が記憶できませんから、記憶装置としての意味がありません。全く削除できないと言っても、破るなり燃やすなり破壊してしまえば大抵の情報は失われてしまいます。
ということで、「工場で作った時点で情報が書き込まれており、破壊する以外の方法では情報が変更できない記憶装置」と、なんとなくのイメージで覚えておいてください。
この「なんとなく」具合が「慣例的な呼び方」で重要になってきます。
RAM (Random-access memory)
RAM は直訳すると「任意順序・取得・記憶」となります。
和訳こそややこしいですが(「ランダム・アクセス」のままの方が分かりやすいかもですね)、意味はまたもや至って簡単で、情報を取得できる順番が任意に決定できる、という性質のことです。
RAM ではない記憶装置の代表例が、テープレコーダです。VHS ビデオをいきなり38分20秒から見ようと思っても、たまたまカセットを入れたらその時間だった場合を除いて、最初からそこからは見れず、早回しや巻き戻ししてその時間まで移動する必要があります。39分02秒から42分51秒に飛ぼうと思っても、やはり早回しするしかありません。最初から情報取得の順序が決まっているからです。
一方、CD であれば、事前にトラックがそのように設定されているという前提が満たされていれば、2分37秒から5分11秒に簡単に飛ぶことができます。このことから CD は一般に RAM と分類されています。
ただし、ROM と同じように、RAM であるものとそうでないものの線引きも難しいです。
RAM をもう少し厳しめに定義すると、「何番の情報をどの順番で要求しても、かかる時間が同じ」記憶装置となります。
すなわち、電子回路などを通じて「507番」と番号を指定すれば直接「507」に保存してある情報が取得でき、その次に「103番」、次に「1106番」と指定しても、情報が得られるまでの時間が変わらないものを言います。
CD の場合、「3番」トラックから「7番」トラックにいきなり飛ぶことはできず、「3→4→5→6→7」と辿って行く必要があります。一部、トラック番号を入力できる CD プレイヤーもありますが、人間の手を煩わせないというだけで、内部では同じように順番に辿ってい(た気がし)ます。(停止した状態から1番トラックを再生するのと10番トラックを再生するのでは、再生が始まるまでの時間が長いです。)
このように CD は「正真正銘のRAM」とは少し違います。
ですので、RAM と言われたら、CD よりも、電子回路で直接番号を指定できる記憶装置を思い浮かべるのが良いかもしれません。
※※※ ※※※ ※※※
(RAM、ROM についてこの記事しか読んだことがない人は、不思議に感じるかもしれませんが、)
- 「RAM=揮発性」ではありません。前者は情報入手の順番、後者は電源を切った場合についての性質です。関係ありません。
- 「ROM=不揮発性」ではありません。前者は読み出し以外の機能、後者は電源を切った場合についての性質です。ほとんど(下記参照)関係ありません。(ROM ⇒ 不揮発性 ですが、不揮発性 ⇒ ROM は成り立ちません。)
- 「RAM」は「ROM」の対義語ではありません。この二つの性質は「互いに排他的」ではありません。
「RAM かつ ROM」は、読み出ししかできないが、読み出しの順序が自由に設定できる記憶装置、「RAM でも ROM でもない」は読み出し以外もできるが、読み出しの順番はあらかじめ決まっている記憶装置(もしくは記憶装置ではない)で、どちらも存在し得るのが分かります。 - 以上のように、「揮発性」「RAM」「ROM」の組み合わせは基本的には自由です(「揮発性 RAMでない ROMでない」とか「不揮発性 RAM ROMでない」など)。
ただし、性質同士が論理的に噛み合わない例として「揮発性かつROM」があります。揮発性だと、電源を切ることで削除(読み出し以外)ができてしまうので、ROM にはなり得ません。
コンピュータにとっての役割による分類
主記憶装置
その名の通り、「これがなくなるとコンピュータではなくなってしまう」ような記憶装置です。
コンピュータは、主記憶装置に書かれた指示(プログラム)に従って計算を行い、その計算結果も主記憶装置に書き出します。
開いたファイルの内容、マウスポインタの座標、ブラウザのタブ、ボタンの内側のアイコンなどが保存され、(文字を打ち込む、マウスを動かすなど)変更がある度に主記憶装置の内容が書き換えられます。
さて、この主記憶装置、どんな性質(「揮発性」「RAM」「ROM」)が必要か考えて見ましょう。
まず、主記憶装置が ROM だと、書き込みができず、主記憶装置として成り立ちません。
できれば不揮発性の方が便利ですが、どちらでも役割は果たせます。
RAM かどうは、どちらでも良いですね。
ということで理論上は「ROM でなければ何でも良い、できれば不揮発性」という結論が出ましたが、技術的には、ここで問題が発生してしまいます。
演算速度は十分早いのに、主記憶装置への読み書きの速度が足を引っ張り、コンピュータ全体の処理速度が遅くなってしまうのです。
スピードという観点からすると、不揮発性記憶装置は磁石など電気に頼らない「物体」を動かす必要があるのに対し、揮発性記憶装置は電圧を変更するだけで情報の書き換えができる点で優れています。
更に、RAM でない記憶装置は情報を一々始めから辿る必要がある一方、RAM は読み書きすべき情報が保存されている場所に直接飛ぶことができます。
このように高速化を図った結果、現代のコンピュータの主記憶装置は基本的に「揮発性・RAM・ROMでない」記憶装置となっています。
補助記憶装置
さて、コンピュータを高速化するため、主記憶装置を「揮発性」にしたまでは良いのですが、これだと、コンピュータの電源を切る度に全ての情報が失われてしまいます。
そこで、長期的に情報を保存するため、補助記憶装置を設けます。
スマホで撮った写真や、作成したファイル、アプリや連絡先に加え、コンピュータ全体のシステムを制御するプログラム(オペレーティングシステム (OS))が保存されるのも、補助記憶装置です。
補助記憶装置の性質ですが、当然ながら、補助記憶装置までもが「揮発性」では意味がありません。
また、ROM だと書き込みができませんから、これも意味がありません。
RAM は必ずしも必要ではありませんが、RAM の方が高速化できることが分かっています。
ということで、補助記憶装置は「揮発性 できれば RAM ROMでない」ものが適していることが分かります。
「できれば RAM」なのですが、長いこと「ハードディスクドライブ (HDD)」という「RAM でない」記憶装置が主流でした。
今でも大型の PC や、コストパフォーマンスを重視したデータセンターなどで広く使われていますが、「遅い」「大きい」「揺れに弱い」などの理由からスマートフォンや最近のノートパソコンの補助記憶装置では、RAM が台頭してきています。
※※※ ※※※ ※※※
- 「補助」という名前だけだと、主記憶装置より容量が少ないように感じてしまいますが、この「主・補助」という関係はあくまでコンピュータの設計上、必要不可欠な方を「主」と名付けたことから来ています。いわゆる「ファイルを保存」「写真を保存」等は全て補助記憶装置に対して行うもので、従って容量も補助記憶装置が多くなります。
- 「主記憶装置=RAM」ではありません。確かに主記憶装置のほとんどは RAM ですが、前者はコンピュータにとっての役割、後者は記憶装置の性質を表しています。
- 「補助記憶装置=ROM」ではありません。それだと意味がありません。
慣例的な呼び方
さて、正しい使い方の他に、別の言い方や省略、間違った使い方もありますので紹介したいと思います。
揮発性
英語で「Volatile」と言うため「揮発性RAM」を「VRAM」と書いたりします。
間違った使われ方はあまりされていないようです。
主記憶装置=メモリ=RAM
英語で「メインメモリー」と言うことも多いです。
単に「メモリー」といった場合も、主記憶装置を指します。
第1アクセントは「メ\モリー」、第2アクセントは「メモリー‾」です(NHK 日本語発音アクセント新辞典より)。(参考→平板化現象「専門家アクセント」)
また、「メモリ」と長音記号を省略することができます(参考→JIS Z8301 G.6.2.2 a,b kikakurui.com)。
また、「主記憶装置・メモリ」のことを「RAM」と呼ぶことが非常に多いです。
「補助記憶装置」でも説明した通り、補助記憶装置は長い間、RAM ではありませんでした。従って、RAM はコンピュータの内部に一つしかなかく、単に「コンピュータの RAM」と言えば主記憶装置と分かったことが原因だと考えられます。
「主記憶装置=メモリ=RAM」であり、この記憶装置は「揮発性」性質を持っている、というのが一般的な使い方かと思います。
(実際は「主記憶装置=メインメモリー」が「揮発性」「RAM」という性質を持っています。)
補助記憶装置=内蔵メモリ=ストレージ=ROM
もちろん補助記憶装置も「メモリー」なのですが、主記憶装置に名前を取られてしまったので仕方なく(CD など外部メモリと区別してか)「内臓メモリ」と呼び、主記憶装置も内臓であることに気づいて、「貯蔵庫 (storage)」と呼び始めた、といった経緯かと思われます。
厄介なのが、「補助記憶装置=ROM」という使い方です。
おそらく日本のスマホ業界特有の使い方で、パソコンの仕様だと「内臓メモリ」とか「HDD」とか書いてあります。
すでに説明した通り、スマートフォン(及び最近のノーパソ)は補助記憶装置として「HDD」ではなく、(「SSD」もしくは「フラッシュメモリ」という名の)RAM を使っています。
そこで「HDD」と表記できず、「内蔵メモリ」という表現にも違和感を感じたまでは良いのですが、新しい表現としてよりによって「ROM」を選んでしまった訳です。
ただし、100%、完全に理解不能というわけでもありません。
ROM を説明した際に、ROM でないものとの線引きが難しく、「なんとなく具合が重要」と予告しました。
やはり、「工場で作った時点で情報が書き込まれており、破壊する以外の方法では情報が変更できない」純粋な ROM はあまりに不便です。
ROM の改変版として「PROM」(「プログラム可能ROM (Programmable ROM)」)というものがあり、これは「工場で作った時点では情報が書き込まれておらず、一回限り情報を”焼き込む”(プログラムする)ことができるが、その後は破壊する以外の方法では情報が変更できない記憶装置」のことです。
さらに「PROM」の改変版「EPROM」、「削除可能PROM (Erasable PROM)」は「工場で作った時点では情報が書き込まれておらず、一回限り情報を”焼き込む”ことができ、その後は UV 線をびや〜っと当てれば情報が全削除できるが、何度も削除していると劣化してまい、ただし改変、追記等はやはりできない記憶装置」。
イメージとしては、白い紙に情報が焼き付けられていて、太陽光を当てるとだんだんと色が薄れて行く感じです。何度もやっていると劣化してしまうのも納得が行きます。
そして「EPROM」の改良版「EEPROM」、「電子的に削除可能なPROM (Electronically erasable PROM)」は「工場で作った時点では情報が書き込まれておらず、一回限り情報を”焼き込む”ことができ、その後は UV 線を当てなくとも電子的に情報を全削除できるが、何度も削除していると劣化してまい、ただし改変、追記等はやはりできない記憶装置」です。
今度はびや〜っと太陽光を当てるのではなく、バッ!と電気を流して全削除しますが、やはり、何度も削除していると劣化してしまいます。
ここまで来るともはやこれは ROM なのかと疑いたくなりますが、まあ改変、追記ができない、削除はあまりできない、という意味ではまだギリギリ ROM と言えると思います。
そしてスマートフォンの補助記憶装置に使われている「SSD・フラッシュメモリ」なのですが、実は、小さな「EEPROM」を大量に組み合わせて作ったものです。
EEPROM 一つだと、少し情報を変更・追加する(例えば写真を保存する)だけで、補助記憶装置の内容を全て主記憶装置にコピーし、EEPROM を全削除した後に主記憶装置上で変更した情報を全書き込みする必要がある上に、EEPROM がすぐに劣化してしまうため、補助記憶装置としては使い物になりません。
一方、細かい EEPROM を複数使えば、たくさんある EEPROM の内一つの全読み込み・全削除・全書き込みで済み、さらに削除の回数を上手に分散させることで記憶装置の寿命も伸ばすことができます。
補助記憶装置は「不揮発性 できればRAM ROMでない」記憶装置でしたが、この「大量の EEPROM」を用いれば、回路を通じて直接「507番」の EEPROM からデータを取得できる「不揮発性 RAM」(「Volatile RAM; VRAM」)という技術的な課題がクリアできるわけです。
「フラッシュメモリ」という名前も EEPROM の「電子的な全削除」の「バッ!」のイメージがカメラのフラッシュを連想させることから来ています。
ただし、だからと言って「SSD」を「ROM」と分類してしまうと、ある意味で「HHD」も ROM になってしまいます。
HDD は小さな磁石の向きを変えることで情報を記録しているわけですので、この一個一個の磁石は「全削除」「全書き込み」しかできない EPROM と捉えることができるからです。
最後に
「RAM と ROM の違い」というと、初心者の質問、みたいな印象ですが、正直かなりややこしいように感じます。
しっかり理解して、これ以上の混乱はどうにか防ぎたいものです。
読んでいただきどうもありがとうございました。