レジスタとRAMの違い:Q&Aで学ぶマイコン講座(48)(2/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。48回目は、初心者の方からよく質問される「レジスタとRAMの違い」についてです。
レジスタ
レジスタは大きく2通りに分かれます。CPUに搭載されている汎用レジスタ(またはアキュムレータ)*3)と、マイコンの周辺機能を制御するための制御レジスタです。
*3)参考記事:マイコン入門!! 必携用語集(3):マイコンの中枢「CPU」とは
【1】CPUのレジスタ
CPUの状態を保存および確認するのに使われます。具体的には、演算途中のデータ、割り込みやサブルーティンでプログラムが分岐した時の戻りアドレス、演算結果が負値、ゼロになった場合の情報や桁上がり値などです。
CPUの汎用レジスタはハードウェアでCPUに直結しているので、内部バスを経由してデータにアクセスするRAMよりも高速アクセスできる点が長所です。
【2】周辺機能の制御レジスタ
周辺機能にはタイマー、USART(Universal Synchronous/Asynchronous Receiver Transmitter)、SPI(Serial Peripheral Interface)通信、A-Dコンバーター、D-Aコンバーターなどがあります。これらの周辺機能を設定するのにレジスタが使われます。図1では制御レジスタを例として挙げましたが、周辺機能の状態を示すステータスレジスタやA-Dコンバーターの変換結果を保存しておく結果レジスタや通信機能では送受信データを保存する送受信データレジスタなどがあります。
基本的には、CPUの汎用レジスタと違い、演算途中や結果のデータを保存することはありませんが、マイコンによっては、アクセスしたデータのCRC計算値を保存するレジスタをもっています。
RAM
RAMの大きな特長は次の2つです。
【1】任意のデータを入れることができる。
保存するデータに制限はありません。CPUの計算途中のデータを一時的に保存することもできます。ただし、この場合、前述したように内部バスを経由しますので、CPUの汎用レジスタよりはアクセスが遅くなります。
また、Cortex-M4の場合、命令コード入れて、実行することもできます。*4)
*4)参考記事:Q&Aで学ぶマイコン講座(34):RAMで命令を実行する方法
【2】大量のデータを順序立てて保存することができる。
図1にあるCortex-M4の汎用レジスタは、32ビットのレジスタが12本しかありませんが、RAMの場合はキロバイト単位のデータを保存することができます。
データはアドレス指定で順番に並んでいるので、データのテーブルを作って、順番にアクセスすることができます。通信機能で送受信データをテーブル化しておくと、DMA(Direct Memory Access)を使って大量のデータを効率良く処理することができます。
Copyright © ITmedia, Inc. All Rights Reserved.