レジスタとRAMの違い:Q&Aで学ぶマイコン講座(48)(3/3 ページ)
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。48回目は、初心者の方からよく質問される「レジスタとRAMの違い」についてです。
論理構成
レジスタとRAMの論理構成は違います。大きな理由は、レジスタは小容量で高速アクセスが求められ、RAMは大容量で、レジスタほど高速アクセスは求められないからです。
通常、レジスタはフリップフロップで構成されます。データはクロックに同期して取り込まれます。図3にフリップフロップの例を挙げます。フリップフロップはデータを保存するには動作原理が簡単で理解しやすいため、一般的によく使われている便利な回路です。しかし、RAMのような大量のデータを保存するのにフリップフロップを使ったのでは論理規模が莫大になって、マイコンのコストが高くなってしまいます。そこでRAMにはRAMセルと呼ばれる回路が使われます。
図4はRAMセルの構成を表しています。2つのインバーターを向かい合わせて接続し、データを書き込む時は両側からポジとネガのデータをMOS経由で書き込みます。読み出す際は、書き込みに使ったラインの一方からMOS経由で読み出せば、読み出せます。この方式だとMOSが6個で作れるので、論理規模はフリップフロップよりもはるかに小さくなります。
ここまで読むと、「レジスタもRAMセルを使えば、もっと論理規模を小さくできるのではないか?」と考えた読者がいると思います。実はRAMセルには欠点があります。データを書き込む時にデータを保持しているインバーターと書き込みラインの電位が衝突して、一瞬ですが電源からGNDへ貫通電流が流れる場合があります。そこで、マイコンの設計者はこの貫通電流を極力小さくする設計をしますが、あまりにもMOSのサイズを絞りすぎると、データが書き変わらなくなります。そのため貫通電流をゼロにすることはできません。貫通電流は半導体にとっては(わずかですが)ダメージになり、消費電流も増えますので、良いものではありません。その点、フリップフロップでは貫通電流は発生しません。
レジスタはRAMよりも頻繁にアクセスされますので、その度に貫通電流が発生するのは望ましくありません。このことから、RAMセルは大量データを扱い、レジスタほどアクセスの速くないRAMにしか使われません。
【コラム】
本記事では一般論として図3、図4の回路を説明しました。この2つは各種ウェブサイトや技術専門書などで説明されているものです。しかし、これらの回路をそのままマイコンに採用すると、論理規模が大きくなってマイコンのコストに影響を及ぼしたり、アクセス速度がネックになったりする場合があります。そのため、実際のマイコンで採用されている回路は、これらの回路よりシンプルで高速な回路が使われています。回路の詳しい構成は社外秘のため説明できませんが、8個から10個のMOSだけで図3と同じレジスタ機能を実現した例もあります。
Cコンパイラとの関係
C言語のコンパイラもレジスタとRAMを使い分けます。それは、変数を割り当てる時です。ローカル変数はレジスタに、グローバル変数はRAMに割り当てる場合が多いです。ローカル変数は関数内でしか使用しないので、関数から抜け出たら消えてしまいます。そのため一時的なデータとしてレジスタに割り当てることができます。しかし、グローバル変数は関数から抜け出ても使用されますので、誰でも、いつでも、どこからでもアクセスできるRAMに割り当てられます。
(次の記事を読む)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- フラッシュメモリをEEPROMとして使う「裏技」
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。47回目は、中級者の方からよく質問される「フラッシュメモリをEEPROMとして使う裏技」についてです。 - マイコンがリセットされる要因
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。46回目は、初心者の方からよく質問される「マイコンがリセットされる要因」についてです。 - フラッシュメモリにはウェイトステートがなぜ必要なのか
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。45回目は、初心者の方からよく質問される「フラッシュメモリのウェイトステート」についてです。 - フォールト(Fault)って何? 〜 種類と解析方法
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。44回目は、初心者から中級者の方からよく質問される「フォールト」(Fault)についてです。 - 「タンパ検知」「耐タンパ」とは?
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。43回目は、初心者の方からよく質問される「タンパ検知」についてです。 - マイコンにおける「CAN」と「USB」の失敗事例集
マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。42回目は、初心者の方からよく質問される「CANとUSBの失敗事例」についてです。