最近,組み込みプロセサ向けに使われるメモリの種類が,従来よりも多彩化しつつある。従来はほとんどのケースで汎用のシンクロナスDRAMもしくはフラッシュ・メモリを使っていたが,最近はDDR規格のシンクロナスDRAM(DDR SDRAM)やDDR2規格のシンクロナスDRAM(DDR2 SDRAM),あるいはモバイルRAMなどを使うケースも出てきている。組み込みプロセサごとに使用するメモリの概要を踏まえた上で,各種メモリの特徴や採用動向をまとめた。

8/16ビット・マイコンはフラッシュ搭載

図1 一般的な8ビット・マイコン<br>SRAMとフラッシュ・メモリで構成する標準的な8ビット・マイコンである。
図1 一般的な8ビット・マイコン<br>SRAMとフラッシュ・メモリで構成する標準的な8ビット・マイコンである。 (画像のクリックで拡大)

 それでは,プロセサ別に見たメモリの使用状況を整理してみよう。まずは8ビット・マイコンである。この市場では,急速にフラッシュ・メモリ内蔵製品が盛り上がりつつある。これはパッケージ内部にCPUとフラッシュ・メモリを搭載し,さらに作業用メモリとしてSRAMを集積した形を採っている。プログラムなどはフラッシュ・メモリに格納し,煩雑に書き換える変数領域などはSRAMに保持する(図1)。8ビット・マイコンの用途のほとんどは,このフラッシュ・メモリとSRAMの組み合わせでカバーできるという見方がマイコン・ベンダーでは一般的である。

図2 外付けメモリを接続できる8ビット・マイコン&lt;br&gt;大量のメモリを必要とする8ビット・マイコンでは,シンクロナスDRAMを外付けできるようにしている。
図2 外付けメモリを接続できる8ビット・マイコン<br>大量のメモリを必要とする8ビット・マイコンでは,シンクロナスDRAMを外付けできるようにしている。 (画像のクリックで拡大)

 この組み合わせでカバーできないほど大量のメモリが必要になれば,シンクロナスDRAMを外付けして利用できるようにしたものもある(図2)。ただし,こうした製品はまれ,というよりも16ビット・マイコンや32ビット・マイコンといった上位製品に統合されつつある。ちなみに,8ビット・マイコンに集積するSRAMの容量は,数百~数Kバイト,フラッシュ・メモリでは数K~数十Kバイトの範囲が中心的だ。

 16ビット・マイコンにおいても,最近は次第にフラッシュ・メモリ内蔵品が増えてきた。16ビット・マイコンではメモリ空間が1Mバイトまで増えるため,相対的に大量のメモリを必要とする。従来はメモリを外付けにすることが多かったが,昨今のフラッシュ・メモリの大容量化や低価格化に伴い,フラッシュ・メモリを内蔵する品種がだいぶ出てきている。構造的には8ビット・マイコンの例と変わらない(図1)。ただし,フラッシュ・メモリの容量は16Kバイト程度~512Kバイト前後まで大きくなっており,またSRAMの容量も数十Kバイト程度まで拡張されている製品も少なくない。

図3 従来の16ビット・マイコン&lt;br&gt;かつての16ビット・マイコンでは,シンクロナスDRAMやフラッシュ・メモリを外付けできるような構成を採っていた。
図3 従来の16ビット・マイコン<br>かつての16ビット・マイコンでは,シンクロナスDRAMやフラッシュ・メモリを外付けできるような構成を採っていた。 (画像のクリックで拡大)

 ちなみに以前の16ビット・マイコンの場合,シンクロナスDRAMやフラッシュ・メモリへのインタフェースを備えることが多かった(図3)。シンクロナスDRAMのインタフェースはほとんどが16ビット幅で66M ~100MHz程度である。フラッシュ・メモリのインタフェースでは,かつては標準的なインタフェース(8ビット幅あるいは16ビット幅)を使う製品が主流だったが,最近になってSPI(serial peripheral interface)に移行しつつある。プリント基板の実装面積削減やパッケージのピン数削減を狙ったためである。

32ビット・マイコンは外付けメモリ必須

 マイコンの中で最も製品のバラエティーに富む32ビット・マイコンになると,より大容量のRAMが必要になる。端的に言えば,32ビット・マイコンを使うアプリケーションではほとんどの場合,OSを動かしてその上でターゲットとなるソフトウエアを稼働させる必要性があるからだ。こうなってくると,フラッシュ・メモリ一体型の「大容量フラッシュ・メモリ+小容量SRAM」だけではカバーし切れない。仮に,動作速度を無視してフラッシュ・メモリを使ってOSを動かしたとしても,煩雑な書き換えによってフラッシュ・メモリの劣化が早まる。結果として,商品寿命がかなり短くなってしまう。

図4 一般的な32ビット・マイコン&lt;br&gt;高速バスを使ってCPUコアとメモリ間を結ぶ。入出力コントローラや外付けフラッシュ・メモリのコントローラには低速バスを使う。高速バスと低速バスはバス・ブリッジを介して接続する。
図4 一般的な32ビット・マイコン<br>高速バスを使ってCPUコアとメモリ間を結ぶ。入出力コントローラや外付けフラッシュ・メモリのコントローラには低速バスを使う。高速バスと低速バスはバス・ブリッジを介して接続する。 (画像のクリックで拡大)

 32ビット・マイコンでは多くの場合,処理性能が相応に高いことが求められる。従って,CPUコアの動作速度は100MHzを超えることが多々ある。これを充分に生かすためには,キャッシュあるいはスクラッチ・パッドとして使われるSRAM,およびメモリ・コントローラはCPUコアと同じあるいは近い速度で動く必要が出てくる。ところが,これらは入出力コントローラには速すぎることが多い。そこで内部を高速バスと低速バスの2つに分離し,バス間をバス・ブリッジでつなぐという方式が一般的である(図4)。代表例が英ARM Ltd.のCPUコアであるARM7やARM9シリーズに採用されたASB(Advanced System Bus)とAPB(Advanced Peripheral Bus)というバスである。前者がCPUコアとメモリ・コントローラやスクラッチ・パッドをつなぐ高速バス,後者が周辺機器用のバスになり,ブリッジ経由で接続される。その後,ASBはAHB(Advanced Highperformance Bus)に進化し,ARM以外のプロセサでも標準的に利用されるようになってきた。

図5 CPUコア2個を搭載した32ビット・マイコン&lt;br&gt;性能向上を目指し,32ビットCPUコアを2個搭載した品種がある。
図5 CPUコア2個を搭載した32ビット・マイコン<br>性能向上を目指し,32ビットCPUコアを2個搭載した品種がある。 (画像のクリックで拡大)

 当初の32ビット・マイコンでは,おおむねシンクロナスDRAMで主記憶は足りた。シンクロナスDRAMがCPUコアの半分の動作速度であっても,適切な設計さえすれば,それほど性能に影響はなかったからだ。シンクロナスDRAMも183MHz品あたりまでは普通に入手できたし,32ビット・マイコンともなると小規模とはいえCPU内部にキャッシュを持つのが普通だったためである。ところがCPUコアの動作速度が400MHzに達するあたりから,シンクロナスDRAMでは十分とはいえなくなってきた。加えて,さらなる性能向上を目指して複数のCPUコアを搭載するマイコンなども登場するにつれ,いよいよメモリの速度が不足してきた(図5)。こうした状況を踏まえ,最近の32ビット・マイコンではDDR SDRAMを採用する例が非常に多くなってきた。また,携帯電話機あるいは多機能な携帯機器などでは,より一層の消費電力低減を求めて,DDR2SDRAMあるいはモバイルRAMなどを採用するケースも出てき始めている。バス幅については,16ビットと32ビットが混在している。

 64ビット・マイコンにもなると,元々取り扱うべきデータ量と要求される処理性能がかなり大きい。非常に大量のデータを処理する一部の用途,例えば複写機やプリンター,あるいはエッジ・ルータや通信事業者用の通信制御機器などをターゲットとしている。メモリには以前から複数のシンクロナスDRAMやDDR SDRAMを束ねて使うことが多く,バス幅も64~256ビットまでさまざまである。最近は,DDR2 SDRAMを利用する製品も登場してきた。

 次回からは,個々のメモリの特徴や採用動向を紹介する。