ハードウェアの仕組みとソフトウェア処理 ―― マイコンの動作を理解する
tag: 組み込み 半導体 ディジタル・デザイン
技術解説 2009年11月27日
4.メモリの役割を理解する
● 命令コードはROM,データはRAM
一般に,メモリには命令コードとデータの両方が置かれます.命令コードは通常は動作中に書き換えることはありません.データには,参照するだけで書き換えることがない定数と,実行中に書き換える変数があります.
パソコンでは,さまざまなソフトウェアを入れ換えて実行できる仕組みをとっています.命令コードはハード・ディスクのような外部記憶装置に保存し,実行するときは命令コードもデータもすべてRAM(書き換え可能メモリ)にロードして実行します.
マイコンは,一般に命令メモリと呼ばれるROM(読み出し専用メモリ)の領域と,データ・メモリと呼ばれるRAM(書き換え可能メモリ)の領域を持っています(図13).
図13 ROMとRAM
組み込み機器では,ソフトウェアやシステム情報は,ROM領域に書き込んでおく.ROMは電源をOFFしても消えないので,電源をONすればすぐに動作可能になる.
命令や定数は,主記憶のうちROM領域に書き込んでおくのが普通です.ROMの内容は電源を切っても消えないので,電源ONですぐに実行が始まります.また,変数など書き換えが必要なデータは,主記憶のうちRAM領域に置きます.
● 効率良く読み書きできるスタック
演算中などに少量のデータを一時的に保持するには,汎用レジスタを用います.また,汎用レジスタが不足する場合や,サブルーチン呼び出しの際に戻りアドレスや汎用レジスタのデータを一時的に保持するには,スタックと呼ばれる特別なメモリを用います.
スタックは,主記憶のうちRAMの一部を使用しますが,アドレスを指定せずに効率良く読み書きできるように作られています(図14).
図14 スタックの仕組み
スタックは,アドレスを指定せずに効率良く読み書きできる特別なメモリである.最後に書き込んだデータを最初に取り出す仕組みから,LIFO(Last-in First-out)メモリと呼ばれることもある.
スタックにデータを書き込むと,前からあるデータを上書きせずに,連続するメモリに順番にデータが書き込まれていきます(図14の①と②).
スタックからデータを読み出すと,書き込んだときとは逆の順番で,新しい方から順番にデータを読み出せます(図14の③と④).一度読み出したデータは,次に書き込んだデータで上書きされます(図14の⑤).
レジスタ,スタック,メモリでは読み書きの命令の書き方が異なります.データをどこに置くかを決めて置かないと,ソフトウェアの記述ができません.記憶場所が少ないマイコンでは,これらを効率良く活用する必要があります.
高級言語では,データの置き場所はコンパイラが自動的に割り当てます.ただし,C言語などの組み込み向けコンパイラでは,割り当て方法を技術情報として公開している場合が多く,プログラマが意図的にデータの置き場所を選ぶことも可能です.