最近、RAM と ROM の意味が変わった、と嘆いている人がいた。
スマホの宣伝とか見ると、RAM と ROM の容量が書いてある。
ROM は「写真などのデータを置いておくメモリ」という扱いだ。
でも、ROM って Read Only Memory …「読み出し専用」の意味だぜ?
読み書きできる RAM とは違うものだったはずだ。
…というのが、嘆いていた人の言い分。
そうだね。気持ちわかる。
でも、言葉は時代と共に変わるものだ。今は ROM は「読み出し専用」の意味ではなくなった、というだけのこと。
RAM だって「読み書きできる」という意味ではなかったのに、おかしいと言っている人自身がそのことに気付かないのだから。
ROM は先ほど書いたように Read Only Memory 。「読み出し専用」の意味だった。
でも、読み出し専用とはいっても、最初に何か書き込んでおかないと意味がない。
だから、ROM が開発された瞬間から、書き込みの方法はちゃんと用意されていた。
古くは、ROM はスイッチで構成された。
TX-0 の「トグルスイッチストレージ」とか、スイッチだらけだ。
1つのスイッチの ON/OFF で、1bit の 0/1 を表せる。
人間は値を変化させられるけど、コンピューターからは操作できない。読み出し専用、と言える。
(と言っても、当時は ROM とは呼ばれていなかったのだけど)
半導体メモリが開発されたとき、1度だけ書き込める「プログラマブル ROM」というのが作られた。
その後、消して書き込み直せる「イレーザブル・プログラマブル ROM」(EP-ROM)というのも現れた。
これらは、書き込みも消去も、回路から外して特殊な操作をする必要があった。
まだ、コンピューターからは読み出し専用だ。
転機が訪れたのはそのあとだ。電気的に消去できる「エレクトリカル EP-ROM」(EEP-ROM)が作られた。
容量は小さいし、書き込みのスピードも遅い。
それでも、昔の業務用テレビゲームのハイスコア保存とかに使われている。
ここら辺から、「読み出し専用」ではなくなっていく。
でも、RAM とは区別された。RAM は通電しないと内容が消えるが、ROM は通電しないでも内容が消えないもの、とされていたためだ。
(この後書くけど、この認識は正しくはない。でも、当時としては常識だった)
EEP-ROM は1ビットづつ消去を行ったので遅かった。
ちなみに、遅いのは消去で、書き込みも読み出しもそれほど遅くはない。
じゃぁ、消去の仕組みだけを数百~数千ビット分用意して、ある程度まとめて消してしまおう、という発想が生まれる。
順番に消すのではなくて同時に消す。だから、1bit 消す時間で、数千ビットを消し去ることができる。
これが Flash EEP-ROM だ。今では Flash ROM とか 単に ROM と言われている。
スマホに使われているのは Flash ROM なので、写真のデータなどを保存できる。
読み書き可能だけど、通電しなくなっても内容が消えないので「ROM」という扱いだ。
これに対して、RAM は Random Access Memory 、「自由にアクセス可能なメモリ」の意味だ。
Random を「読み書きのどちらでも」の意味だと思っている人が多いのだけど、そうではない。
コンピューターの黎明期は、メモリとして遅延管とか遅延線という素子がよく使われた。
「音波」が電気よりも十分に遅いことを利用した仕組みで、音として情報を保持しておく。
音なので、コントロールは出来ない。
メモリ素子に「書き込んで」、音が逆の端に到達するときに「読みだす」。
読みだした内容をすぐにまた書き込めば、情報を保持しておくことができる。
特定のメモリ内容を読み出したいときは、その情報を読み出すタイミングまで待つ。
連番アドレスに入っているデータは連続して読み出せるが、離れたアドレスだと待ち時間が多くなる。
この、遅延線の仕組みはとても遅いものなので、好きなアドレスを指定してすぐに読み書きできるメモリが考案された。
これが「自由にアクセス可能」という意味になる。
ところで、歴史的な経緯をすっ飛ばすと、RAM といえば「コアメモリ」だった時代がある。
コアメモリに書き込んだ内容は、通電しなくなっても失われない。
この時代には、ROM は特に必要なかった。
まぁ、全く存在しないのかと言えばそうではなくて、先に古い ROM の実装例として書いた TX-0 なんかはコアメモリを使用していた。
TX-0 の場合、コンピューターから見たら「読み出し専用」なので ROM だというのは事実だ。
でも、使われ方としては、ユーザーがコンピューターにデータを与えるための、ユーザーインターフェイスだった。
現代の ROM とはちょっと事情が異なっている。
さて、インテル社は半導体メモリを提供し、コアメモリを駆逐することを目標に作られたベンチャー企業だった。
コアメモリは電気がなくても内容が消えない、という優れた特性があったのだけど、インテル社が設計していた RAM はそうではなかった。
だから、消えては困る内容を収めておく、ROM も同時に開発する必要があった。
インテル社は数奇な運命のめぐりあわせにより、メモリ開発のベンチャー企業だったのに、最初のメモリ製品の製造より前に CPU の開発を始める。
製品としては半導体メモリが先で 1969年に出ている。SRAM だったそうだ。
CPU 4004 を含む 4000シリーズは 1971年だ。
4000 シリーズのデータシートには、4001 が ROM で 4002 が RAM 、とはっきり書かれている。
ROM や RAM という言い方は当時一般的だったのだろうか?
少し後の時代だけど、PDP-11 のオプションカタログを見てみた。
1976年のカタログには「メモリーユニット」がたくさん載っている。
READ ONLY MEMORY もある。BOOTSTRAP LOADER とも書かれている。ROM とは略されていない。
RANDOM ACCESS MEMORY という表記はなく、もちろん RAM もない。
この頃は、コアメモリが一般化しているので「メモリー」と言えばランダムアクセスなのが当然だった。
ROM を区別する必要はあっても、その対義語が RAM だったわけではない。
ところが、1983 年のカタログになると、メモリモジュールの説明が「RAM Module」と「ROM Module」になっている。
この頃には RAM の意味が変化して、ROM の対義語になってしまったのだろう。
対義語としての ROM と RAM という言葉は、おそらくインテルが使いだしたのではないかと思っているけど、資料不足で決定的な証拠は見つけられていない。
さて、昔話は終わり。
最近使われる用語である、読み書きできる ROM 、というのに違和感がある人は多いと思うけど、言葉は時代と共に変わるものだ。
歴史的には ROM と RAM は対義語ではなかったけど、半導体メモリの台頭によって対義語になってしまった。
それが再び、性質が違う、というだけで対義語ではなくなろうとしている。
言葉は伝えるための手段だから、常にその時代での言葉の使われ方を把握しておくことが大切。
以前と意味が変わってきたな、と思っても、言いたいことが伝わっているのであればそれでいいんじゃないかな。
新しい時代に対応していこう。
…ちなみに「新しい」(あたらしい)って言葉も、誤用から広まったものだ。
今では誰も間違っているなんて言わないし、間違っていることに気付きすらしないけど。
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |