ROMとRAM

組込みソフトウェアの世界では、メモリにはROMとRAMが存在します。パソコンの場合、すべてのソフトウェアやファイルはHDDやSSDなどに保存されていて、必要になった時にはDRAMに持ってきて、そこからCPUで読み書きします。一方、小規模な組込みソフトウェアの場合には、HDD/SSDやDRAMと言った外付けストレージは存在せず、MCUの中にあるメモリだけで処理が行われます。

ROMというのは、Read Only Memoryの略で、読むことしかできないメモリという意味です。昔は本当にMask ROMなど消すことのできないメモリを使っていたそうですが、現代においては普通はFlashメモリです。Flashメモリというのは、ある決まった単位でしか消去することができません。書き込みは1bitから可能です。細かい話をすると、0を1に書き換えたい場合はページ単位で消去するしかありませんが、1を0に書き換えるのはビット単位で可能です。書き換え回数は無制限ではなく、1000回とか10000回とかスペックが決まっていますので、もしも頻繁に書き換えを行うのであれば要注意です。少しの変更で消去するのではなく、後ろにどんどん追記していってページがいっぱいになったら削除するというような工夫や、ある一箇所ばかりを使うのではなく、いろいろな場所を使う、などの工夫が必要です。

RAMというのはRandom Access Memoryの略で、あまり略語とは関係ないですがバイト単位で無制限に書き換え可能な電源を切ると値が消えてしまうメモリのことです。気軽に書き換え可能なので、データの一時保存に使います。

MCUのスペックをみていると、例えばFlash 1MB, SRAM 128KBのように書いてあります。つまり、Flashの方が容量が大きいことが一般的です。つまり、ソフトウェアを作る時、SRAMのほうが貴重な資源となります。Flashの方は、容量が足りなければ外付けFlashで増えたように見せかけたり、外付けEEPROMにデータを保存して内蔵Flashはあまり使わないようにしたり、と工夫します。

コメント