- - PR -
今回は前回のROM、RAMの話の続きになります。前回はROMと一言でいってもいろいろな種類があると説明しました。今回はRAMについて説明します。
ところで、ROM(Read Only Memory)に対して、RAM(Random Access Memory)というのは少しおかしいと思いませんか。本来なら、RAMではなくRWM(Read Write Memory)というべきだと思うのですが、いつからROMに対してRAMというようになったのかは、いろいろ調べてもはっきりしません。どなたかご存じの方がいたら教えてください。
冒頭から脱線してしまいました。
RAMの話ですが、まずその歴史を少し振り返ってみると、昔々はいまのような半導体はありませんでした。初期の汎用計算機の主記憶装置などと呼ばれたころ、メモリは真空管(真空管という言葉も知らない方が相当数でしょうか)を何本も並べて実現していました。真空管1本がいまの1ビットという、とんでもないものだったようです。
その後、1940年代後半に磁気コアメモリというものが開発されました(図1)。フェライトコアというリング状になった素材を使っていて、すべて手作業で顕微鏡をのぞきながら作っていたそうで、相当な手間とコストだったようです。
![]() |
| 図1 磁気コアメモリの拡大図 出典:フリー百科事典『ウィキペディア (Wikipedia)』: 磁気コアメモリ |
その後、自動化された製造装置が開発されて作業はかなり楽になったようですが、大変な作業だったことは想像がつきます。1970年ごろにやっと半導体メモリが登場し、サイズが格段に小さくなり、容量も一気に増えました。それでも現在のメモリのようなMbyte(メガバイト)、Gbyte(ギガバイト)などというオーダーではなく、kbit(キロビット)の世界でした(いまでもメモリチップの容量は256Mビットなどと表現します)。
RAMの種類と特徴
歴史はこの辺りにして、RAMの種類ですが、非常にいろいろな種類が存在します。組み込みシステムでよく使われているのは、SRAM(Static Random Access Memory)といわれるもので、これは記憶したデータを読み出してもデータが消えないという特色を持っているので、高速にアクセスできるメリットがあります。しかし、構造が複雑なので大容量化しにくく、価格も高い点がデメリットです。
SRAMに対して、DRAM(Dynamic Random Access Memory)は、一定の時間が経過すると記憶したデータが消えてしまうメモリのことです。DRAMは時々、データを書き直す(リフレッシュと呼んでいます)処理が必要ですが、構造が比較的簡単で大容量化も可能です。パソコンに使われているメインメモリはこのDRAMです。
DRAMにはさらに下記のような種類があります。
- FPM DRAM(Fast Page Mode DRAM)
- EDO DRAM(Extended Data Out DRAM)
- SDRAM(Synchronous DRAM)
- RDRAM(Rambus® DRAM)
- DDR SDRAM(Double Data Rate SDRAM)
- Direct RDRAM™
- SyncLink DRAM
パソコンに興味のある方はよくご存じでしょうが、さらにSDRAMやDDR SDRAMは、下記のような表現をします。
SDRAM
PC66(66MHzで動作)
PC100(100MHzで動作)
PC133(133MHzで動作)
DDR SDRAM
PC2100(266MHzで動作、DDR266ともいう)
PC2700(333MHzで動作、DDR333ともいう)
PC3200(400MHzで動作、DDR400ともいう)
DDR2 SDRAM
PC2-4300(533MHzで動作、DDR2-533ともいう)
PC2-5300(667MHzで動作、DDR2-667ともいう)
PC2-6400(800MHzで動作、DDR2-800ともいう)
DDR3 SDRAM(1066MHzで動作、まだ世の中には出回っていません)
数え上げるときりがないのですが、表現方法で「PC××××」というのはメモリモジュール(基板になったもの)の規格で、「DDR×××」というのはメモリチップの規格です。
ほかにも、RAMにはMRAM(Magnetoresistive Random Access Memory:磁気抵抗メモリ)、FeRAM(Ferroelectric Random Access Memory:強誘電体メモリ、FRAMともいう)、RRAM(Resistance Random Access Memory)、PRAM(Phase change Random Access Memory:相変化メモリ)などと、次から次へと新しいものが出てきていますが、どれが生き残るかは混沌(こんとん)としています。詳しい違いが知りたい方はメモリメーカーのWebサイトで調べてみてください。
ROM、RAMとクロックの関係
さて、ROMとRAM(RWM)の種類を挙げましたが、ではROMやRAMはどのように動くのでしょう。メモリのデータシートには図2のような図がよく出てきます。
![]() |
| 図2 SDRAMの読み込み動作 |
初めて見る方には非常に難解な図だと思いますが、平たくいうとクロック(CLK:前回出てきたクロック)に同期して、コマンド(Command:命令)とデータを読み込もうとするアドレス(Row、Column)を出力すると、データが入力できるという意味です。
メモリの仕様によってコマンドやアドレスの指定の仕方やデータが入力されるタイミングなどが違っていますが、基本はこのようなものだと理解しておけばよいと思います。実際にソフトウェアでRAMを読み書きするときに、クロックとの同期は考える必要はありませんが、フラッシュメモリなどを使うような場合はここでの理解が生きてきます。
この動作を理解できると、前回述べたクロックの重要性、いい換えれば「クロックがないと何も動かない」という意味も分かってもらえると思います。
もう一度、前回と同じことを繰り返しますが、これから組み込みソフトウェアのエンジニアを目指す方は、MPU(CPU)と外部に付いているメモリはクロックに同期して動いている、ということを忘れないでください。
◇
次回からは信号(デジタル信号、アナログ信号)について書いていきます。信号といわれてもピンと来ない方もいるでしょうが、できるだけ分かりやすく説明していきます。
ご意見、ご要望などがありましたらできる限り取り込んでいきたいと思いますので、下記までメールをお送りください。(次回に続く)
| 筆者追記:2006年12月27日 第5回の記事の冒頭で下記のような書き方をしたところ、読者の方からいろいろなメッセージをいただきました。 「ところで、ROM(Read Only Memory)に対して、RAM(Random Access Memory)というのは少しおかしいと思いませんか。」 「ROMに対しては、RWMといった方が正しいのでは?」と簡単に書いてしまいましたが、舌足らずだったと反省しております。筆者は、 ・Read Only Memoryに対しては、Read Write Memory ・Sequential Access Memoryに対しては、Random Access Memory といった方が正しいのではないかといいたかったのです。ROMといっても、読み出しに関してはRandom Accessができるわけですから、「ROMに対してRAMというのはどうかな?」という疑問を含んだ表現でした。 ご意見をいただいた方にこの場をお借りしてお礼を申し上げます。今後も、ご意見をお願いします。 |

関連記事 読み物/コラム
組み込み開発フォーラム 新着記事
- フルスクラッチの“Hello World”を動かしてみよう(2011/3/31)
- FlexRayプロトコルの概要(その2)(2011/3/29)
- JASA、東北地域に拠点を置く会員企業を支援(2011/3/25)
- NEC、震災の影響を受けた4拠点の生産再開を発表(2011/3/23)
- 内部ブロック図の基礎と共通要素(2011/3/22)
- インテル、被災地におけるITインフラの復旧を支援(2011/3/22)
- Facts on AUTOSAR/AUTOSAR導入の現実(2011/3/18)
- 計測器・震災被害ホットラインを開設、テクトロニクス(2011/3/18)
- ZMP、地震の揺れを多角的に計測するアプリ無償配布(2011/3/16)
- メンター、3Dテレビ・マルチメディア検証プラットフォーム(2011/3/16)
- 【番外編】タチの良い計測値、悪い計測値とは?(2011/3/15)
- tarファイルシステムをAndroidに組み込む!!(2011/3/10)












