連載
» 2006年12月23日 00時00分 公開

組み込みギョーカイの常識・非常識(5):CPU・MPUはどうやって動く? 〜 RAMとクロック

「クロックがないと何も動かない」の意味は、メモリの読み込み動作を理解すれば納得がいく。メモリはクロックに同期しているのだ

[中根 隆康 フリー・アーキテクト/(株)ネクスト・ディメンション,@IT MONOist]

 今回は前回のROM、RAMの話の続きになります。前回はROMと一言でいってもいろいろな種類があると説明しました。今回はRAMについて説明します。

 ところで、ROM(Read Only Memory)に対して、RAM(Random Access Memory)というのは少しおかしいと思いませんか。本来なら、RAMではなくRWM(Read Write Memory)というべきだと思うのですが、いつからROMに対してRAMというようになったのかは、いろいろ調べてもはっきりしません。どなたかご存じの方がいたら教えてください。

 冒頭から脱線してしまいました。

 RAMの話ですが、まずその歴史を少し振り返ってみると、昔々はいまのような半導体はありませんでした。初期の汎用計算機の主記憶装置などと呼ばれたころ、メモリは真空管(真空管という言葉も知らない方が相当数でしょうか)を何本も並べて実現していました。真空管1本がいまの1ビットという、とんでもないものだったようです。

 その後、1940年代後半に磁気コアメモリというものが開発されました(図1)。フェライトコアというリング状になった素材を使っていて、すべて手作業で顕微鏡をのぞきながら作っていたそうで、相当な手間とコストだったようです。

 その後、自動化された製造装置が開発されて作業はかなり楽になったようですが、大変な作業だったことは想像がつきます。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のような図がよく出てきます。

SDRAMの読み込み動作 図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というのはどうかな?」という疑問を含んだ表現でした。

ご意見をいただいた方にこの場をお借りしてお礼を申し上げます。今後も、ご意見をお願いします。




Copyright © ITmedia, Inc. All Rights Reserved.