検索
連載

レジスタとRAMの違いQ&Aで学ぶマイコン講座(48)(2/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。48回目は、初心者の方からよく質問される「レジスタとRAMの違い」についてです。

Share
Tweet
LINE
Hatena

レジスタ

 レジスタは大きく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コンバーターの変換結果を保存しておく結果レジスタや通信機能では送受信データを保存する送受信データレジスタなどがあります。


【再掲】図1:マイコンのレジスタ例 (STM32F4シリーズの場合) (クリックで拡大)

 基本的には、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.

ページトップに戻る