検索
連載

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

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

Share
Tweet
LINE
Hatena
前のページへ |       

論理構成

 レジスタとRAMの論理構成は違います。大きな理由は、レジスタは小容量で高速アクセスが求められ、RAMは大容量で、レジスタほど高速アクセスは求められないからです。

 通常、レジスタはフリップフロップで構成されます。データはクロックに同期して取り込まれます。図3にフリップフロップの例を挙げます。フリップフロップはデータを保存するには動作原理が簡単で理解しやすいため、一般的によく使われている便利な回路です。しかし、RAMのような大量のデータを保存するのにフリップフロップを使ったのでは論理規模が莫大になって、マイコンのコストが高くなってしまいます。そこでRAMにはRAMセルと呼ばれる回路が使われます。


図3:フリップフロップ (クリックで拡大)

 図4はRAMセルの構成を表しています。2つのインバーターを向かい合わせて接続し、データを書き込む時は両側からポジとネガのデータをMOS経由で書き込みます。読み出す際は、書き込みに使ったラインの一方からMOS経由で読み出せば、読み出せます。この方式だとMOSが6個で作れるので、論理規模はフリップフロップよりもはるかに小さくなります。


図4:RAMセル (クリックで拡大)

 ここまで読むと、「レジスタもRAMセルを使えば、もっと論理規模を小さくできるのではないか?」と考えた読者がいると思います。実はRAMセルには欠点があります。データを書き込む時にデータを保持しているインバーターと書き込みラインの電位が衝突して、一瞬ですが電源からGNDへ貫通電流が流れる場合があります。そこで、マイコンの設計者はこの貫通電流を極力小さくする設計をしますが、あまりにもMOSのサイズを絞りすぎると、データが書き変わらなくなります。そのため貫通電流をゼロにすることはできません。貫通電流は半導体にとっては(わずかですが)ダメージになり、消費電流も増えますので、良いものではありません。その点、フリップフロップでは貫通電流は発生しません。

 レジスタはRAMよりも頻繁にアクセスされますので、その度に貫通電流が発生するのは望ましくありません。このことから、RAMセルは大量データを扱い、レジスタほどアクセスの速くないRAMにしか使われません。

【コラム】

 本記事では一般論として図3図4の回路を説明しました。この2つは各種ウェブサイトや技術専門書などで説明されているものです。しかし、これらの回路をそのままマイコンに採用すると、論理規模が大きくなってマイコンのコストに影響を及ぼしたり、アクセス速度がネックになったりする場合があります。そのため、実際のマイコンで採用されている回路は、これらの回路よりシンプルで高速な回路が使われています。回路の詳しい構成は社外秘のため説明できませんが、8個から10個のMOSだけで図3と同じレジスタ機能を実現した例もあります。


Cコンパイラとの関係

 C言語のコンパイラもレジスタとRAMを使い分けます。それは、変数を割り当てる時です。ローカル変数はレジスタに、グローバル変数はRAMに割り当てる場合が多いです。ローカル変数は関数内でしか使用しないので、関数から抜け出たら消えてしまいます。そのため一時的なデータとしてレジスタに割り当てることができます。しかし、グローバル変数は関数から抜け出ても使用されますので、誰でも、いつでも、どこからでもアクセスできるRAMに割り当てられます。

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

次の記事を読む

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る