組み込み入門4 ~メモリ概論を構造と原理で学ぶ~

組み込み入門第4段では、コンピュータシステムで用いられるメモリの概要を解説していこうと思います。

メモリにはどんな役割や種類について細かく解説していきます。

また、このメモリはこういうものと暗記するだけではすぐ忘れてしまうし面白くないので、各メモリの構造を見て、だからこういう性質なんだということをセットで理解できるように情報をまとめました。

では、早速見ていきましょう。

メモリの概要

メモリとは

メモリとはプログラムやデータを保持するための記憶装置です。

良い込やみや書き込みにより参照するデータはアドレスと呼ばれる番号により指定します。

メモリの構成

メモリは、上図のように構成されます。

アドレス線の値がデコーダによりワード線に変換され、メモリセルに接続されます。

また、R/W選択信号により、書き込みか読み込みかが切り替えられます。

メモリの読み出し

「アドレス1番地の値を読み出す動作」を例に動きを見ていきましょう。

アドレス線には1番地を示す「0x00000001」が入力されます。これが、デコーダにより0x1のワード線のみ"1"がそれ以外のワード線には"0"が入力されます。また、R/W選択信号にはReadが選択されます。

このとき、1番地のデータ「0b10101010」がビット線(D0〜D7)に乗り出力されます。

メモリの書き出し

次に「アドレス2番地に値を書き込む動作」を例に見ていきましょう。

アドレス線には2番地を示す「0x00000010」が入力されます。これが、デコーダにより0x2のワード線のみ"1"がそれ以外のワード線には"0"が入力されます。また、R/W選択信号にはWriteが選択されます。

このとき、2番地のデータにビット線(D0〜D7)にセットした「0b00001111」が書き込まれます。

メモリの分類

メモリの理解を妨げるのが、沢山の種類があることなのですが、まずは2種類に大別してみましょう。

それが「不揮発性メモリ」と「揮発性メモリ」です。

違いは、電源を消したと恋に保持していたデータが消えるかどうかです。消えるないのが「不揮発性メモリ」、消えるのが「揮発性メモリ」となります。

また、不揮発性メモリはROM(Read Only Memory)と、揮発性メモリはRAM(Random Access Memory)と呼ばれることもあります。

揮発性メモリ

揮発性メモリは主に主記憶装置に使われます。

その理由は「高速な書き込みが可能だから」です。PCのメモリを増設したい!などというときに指すのがこちらの揮発性メモリです。

揮発性メモリの種類を見ていきましょう。

まずは、リフレッシュと呼ばれる動作の有無によりSRAMとDRAMに分類できます。

また、DRAMのなかでも処理のタイミングに応じて同期型と非同期型に別れます。

同期型の中には、同期のタイミングによりSDR-SDRAMとDDR-SDRAMに分けることができます。

SRAM

SRAMとはStatic Random Access Memoryのことです。

特徴は

  • ランダムアクセスが可能な揮発性メモリ
  • 書き込み/読み込みが非常に高速
  • データ保持のための電力消費が少ない

ことです。

メモリ構造は1Bitのセルに6つのトランジスタを用いたフリップフロップ構造により構成されます。

主な用途は、高速な処理を生かしたキャッシュメモリや低消費電力を生かしたバックアップ用のデータ保持などがあります。

SRAMの書き込み動作

「SRAMに"1"を書き込む動作」を見てSRAMの処理について理解を深めましょう。

書き込み動作はまず、

(1)ワード線電位をHighにします。

これにより、①導通と記入した2箇所のトランジスタのゲートが高電位状態となり、ソース-ドレイン間が導通します。

(2)ビット線に電位をDがHighとなるように電位を与えます

これにより、ビット電位に合わせて中心部4つのトランジスタのゲート電位が決定します。

(3)ワード線電位をLowにします。

これにより、①で導通した②つのトランジスタが再び切断され、ビット線状態に関わらず、中心部4つのトランジスタのゲート状態が②の状態に保持されます。

以上により、"1"の状態が中心部4つのトランジスタに書き込まれました。

この4つのトランジスタのゲート電位は電源供給がなくなると、失われてしまうため揮発性メモリであることがよくわかります。

SRAMの読み込み動作

続けて「SRAMで"1"を読み込む動作」を見ていきましょう。

読み込み動作は、

①ワード線電位をLowにする

これにより、両端の2つのトランジスタが切断されます。

②ビット線を左右ともにHigh状態(プリチャージ)します。

③ワード線電位をHigh状態にする

両端の2つのトランジスタが導通状態になります。中心4つのトランジスタのゲート電位の状態に伴い、Dのビット線電位がHigh状態となり、"1"が読み込まれます。

DRAM

DRAMはDynamic Random Access Memoryのことです。

その特徴は、

  • ランダムアクセス可能な揮発性メモリであること
  • 記憶の維持に定期的なリフレッシュが必要であること
  • 構造が単純のため安価で大容量化しやすいこと

があります。

その構造は、1Bitあたり、トランジスタ1つとコンデンサ1つとSRAMに比べ単純な構造であることがわかります。

主な用途は、比較的大容量かつ高速な処理が実現できることから主記憶=メインメモリです。

DRAMの書き込み動作

DRAMの読み込み動作

DRAMの書き込み動作を見ていきましょう。DRAMはコンデンサに電荷がチャージされているかでデータを保持します。

(1)ワード線電位をHighにします。

これにより、①導通と記入した箇所のトランジスタのゲートが高電位状態となり、ソース-ドレイン間が導通します。

(2)ビット線電位をHighにします

(3)コンデンサに電荷がチャージ

ビット線からトランジスタを通り、コンデンサに電荷がチャージされます

以上により、"1"の状態がコンデンサに書き込まれました。

コンデンサは電圧をかけ続けなければチャージが抜けていってしまうため、こちらもまた揮発性メモリであることがわかります。

続けて「DRAMで"1"を読み込む動作」を見ていきましょう。

読み込み動作は、

①ワード線電位をHighにする

これにより、①導通と記入した箇所のトランジスタのゲートが高電位状態となり、ソース-ドレイン間が導通します。

②コンデンサの電荷がビット線に流れる

③電圧の上昇を検出する

導通時のコンデンサの放電を検知することでデータが0であるか1であるかを検出します。

感の良い方はお気づきかもですが、こちらの読み込みを行うと、放電を行うため保持していたデータが無くなります。そのため、読み込み後は再度、同じ値を書き込むことでデータを保持し続けます。

DRAMのリフレッシュ

コンデンサに溜まった電荷はトランジスタが非導通の状態でも徐々に放電し抜けていきます。結果、ミリ秒単位で保持したデータが失われてしまいます。

そのため、保持した電荷が無くなる前に、値を読み込み、再度書き込みを行い続けることで、データを保持し続けるという作戦をとっています。

この処理をリフレッシュといいます。

リフレッシュは、読み書き動作を伴うため、プロセッサからの支持でデータの読み書きを行う間は行うことができません。

また、リフレッシュ動作は同一ワード線に乗った、一行ずつ同時に行われます。

リフレッシュのタイミングが遅れてしまうと、データが失われてしまうため、どのようなペースでリフレッシュを行うかが重要になってきます。

リフレッシュを行うための作戦は2種類あります。

「分散リフレッシュ」と「集中リフレッシュ」です。

分散リフレッシュは電荷消失までの時間の間に各行を一定時間間隔でリフレッシュし続けます。

一方で集中リフレッシュは、連続してリフレッシュを行った後、一定時間休憩をはさみます。

DRAMの同期と非同期

DRAMについての基本がわかったところで、もう少しDRAMの種類について深堀りしていきます。

DRAMには非同期型のDRAMと同期型のDRAMがあります。

"同期"という言葉は聞き馴染みがない方もいるかも知れませんが、タイミングを合わせるということです。

何にタイミングを合わせるかと言うとシステムクロックです。システムクロックというのは、メモリやプロセッサ、その他コンデンサ要素のタイミングを合わせるためのON/OFFパルス列です。

では、DRAMはなんのタイミングを合わせるのかと言うと、読み込み/書き込み処理を合わせます。

そして、タイミングを合わせると、プロセッサとのアクセスタイミングの調整が不要となるため、全体として処理効率が上がります。

同期のタイミングは通常、「立ち上がり」エッジ、あるいは「立ち下がり」エッジを検出して処理を行います。

どちらかで処理を行うのが、

Single Data Rate Synchronous DRAM(SDR-SDRAM)であり、

両方で処理を行うのが

Double Data Rate Synchronous DRAM(DDR-SDRAM)です。

PCのメモリの話をするとよく出てくるDDR3とかDDR5というのはこのDDR-SDRAMのことで数字は世代になります。

不揮発性メモリ

次に「不揮発性メモリ」について見ていきましょう。

不揮発性メモリは、電源供給が失われても情報を保持することができるメモリです。また不揮発性メモリに比べて大容量のデータを保持できることが特徴になります。

その特徴から、主に外部記憶装置としてファイルやプログラムを保持することに用いられます。

USBメモリやHDD、SSDも不揮発性メモリの一種となります。

不揮発性メモリの種類を見ていきましょう。

まずは、製造後の書き込みが可能かどうかで種類がわかれます。

製造後の書き込みができないものをマスクROMと呼びます。

次に、書き込みが可能なものの書き込みを消去できるかどうかで種類が分かれます。

消去が不可なものをOPTROMと呼びます。

さらに、消去が可能なものの中でも、その方法により種類が分かれます。

紫外線により消去を行うものをUV-EPROMと呼びます。

さらに、電気的に消去するタイプのものがあり、細かく種類が分かれます。

マスクROM

マスクROMについて見ていきましょう。

そもそも、ROMはRead Only Memoryのことで読み込み専用メモリということですね。

ROMはユーザによるデータの書き込みができず、データは製造段階で書き込みを行います。書き換えのための構造がないため、単純で大量生産によるコストダウンがしやすいのが特徴です。

その構造はイオン注入トランジスタにより構成されます。

トランジスタはゲートに電圧が印加されるとドレイン,ソースと呼ばれる端子間がつながる、スイッチのような役割の素子です。こちらがON/OFFを示すことで情報を"0","1"を表すというのがキホンのキです。そして、イオン注入によりゲート電位が予め物理的に固定されることでトランジスタのON/OFF状態が製造時に固定されています。

マスクROMの用途は、大量に作る組み込み製品のプログラムやデータ保持のために使われます。例えばゲームソフトなどがこれに該当します。

マスクROMの読み込み動作

マスクROMの読み込み動作を見ていきましょう。

マスクROMの読み出しにはは1セル(=1Bitデータ)単位ではなく、その他のセルも操作する必要があります。

①読み出しセルのワード線をLowにします。

これにより、イオン注入状態であれば、トランジスタが導通、イオン注入でなければ、トランジスタが非導通となります。今回の図ではイオン注入状態のため導通状態になると考えましょう

②読み出しセル以外のワード線をHighにします

これにより、読み出しセル以外のトランジスタは導通状態になります。

③ビット線に電圧を印加する

このとき、全てのトランジスタが導通状態になっているため電流が流れます。これを検知することで、"1"状態と判定します。逆に流れなければ読み出しセルが非導通状態になっているため"0"状態と判定します。

OPTROM

次に、One Time Programable ROM(OTPROM)について見ていきましょう。

こちらは、一度だけプログラムにより書き込みが可能なROMです。先程のマスクROMよりも製造プロセスの確立が簡単なので、少量多品種生産に向いています。

その構造はトランジスタとヒューズにより構成され、ヒューズが切れているかどうかで"0"と"1"の状態を保持します。

そのため、用途は少量多品種の組み込み製品となります。

OPTROMの書き込み動作

OTPROMの"0"を書き込む動作について見ていきましょう。

続けて「OPTROMで"0"を読み込む動作」を見ていきましょう。

①書き出しセルのワード線をHighにする

①導通と記入した箇所のトランジスタのゲート電位があがりとトランジスタが導通状態になります。

②ビット線を高電位にし、大電流を印加する

これにより、電気抵抗の高いヒューズに大電流が流れます。

③ヒューズが発熱で断線する->"0"状態

以上のように物理的に断線を引き起こすため、一度限りの書き込み動作になります。

OPTROMの読み込み動作

OTPROMの"0"を読み込む動作について見ていきましょう。

続けて「OPTROMで"0"を読み込む動作」を見ていきましょう。

①読み出しセルのワード線をHighにする

①導通と記入した箇所のトランジスタのゲート電位があがりとトランジスタが導通状態になります。

②ビット線電位をHighにする

③ビット線に電流が流れなければ"0"状態

電流が流れるかどうかの非常に簡単なロジックで判定が可能です。

UV-EPROM

次に、書き込み状態のリセットが可能になったUV-EPROMについて見ていきましょう.

UV-EPROMはUltraVioret Erasable Programable ROMです。

製造後に、プログラムにより書き込みが可能であり、紫外線照射により書き込み状態の消去が可能なことが特徴です。しかし、メモリセルに直接UV照射をすることでデータの消去を行うため「このセルのデータのみ消す」などと選択的にデータを削除することはできず、全消去となります。

そのため、現在はほとんど使用されていません。

その構造はマスクROMに類似していますが、使用するトランジスタがFG-MOSFETという特殊なものを用います。

FG-MOSFET

FGはFloating Gateのことで、トランジスタの構造であるGate-Souce-DrainのGate構造が浮いていることを示します。

MOSFETとはMetal oxide semiconductor Field Effect Transistorのことで金属酸化膜による電界効果トランジスタを表します。

通常のMOSFETとはとはとFG-MOSGETの構造を比較してみると、ゲートに絶縁酸化膜に囲まれたFG層があるかどうかになります。

FG層層に溜まった電荷は絶縁酸化膜で囲われているため逃げ先がなく保持することが可能です。

また、FG-MOSFETではFG層に電化がチャージされていればGateに電圧をかけたときのようにSource-Drain間が導通します。

FG-MOSFETのFG層への電荷操作について見ていきましょう。

書き込みはホットキャリア注入と呼ばれる方法で行います。量子力学的な解説はできませんが、ざっくり言うと「高電圧により絶縁層を突破して電位が移動する」操作になります。

一方で消去はUV照射によりおこないます。こちらも細かな原理は省略しますが、UV照射照射により酸化絶縁層がイオン化(SiO2-> Si + 酸素イオンに分離)しすることで電荷が漏れ出ていく現象が発生します。

この2つの操作によりUV-EPROMは書き込みを行います。

EEPROM

次に、電気的な書き込み状態のリセットが可能になったEEPROMについて見ていきましょう。

EEPROMはElectrical Erasable PROMです。

こちらもまたプログラムにより書き込みが可能で、電気的にメモリの消去が可能です。消去はUV-EPROMと異なりバイト単位で選択的に消去が可能です。

その構造はトンネル酸化膜付きFG-MOSFETにより構成されています。UV-EPROMよりもさらに進化したMOSFETにより実現されています。

トンネル酸化膜付きFG-MOSFET

トンネル酸化膜FG-MOSFETはFNトンネル効果を利用できるように工夫がなされたFG-MOSFETです。

FNはファウラーさんノルトハイムトンさんという量子力学者の名前がついています。

トンネル効果は量子力学の理論なのですが、エネルギポテンシャルを超えて量子(∋電子)が透過する現象です。

FNトンネル効果は絶縁酸化膜を薄くするほど高電圧を印加すると電流が流れるようになるということ示しています。

そのためトンネル酸化膜付きFG-MOSFETのGate-Drain感の酸化絶縁膜に薄い層が形成されています。また、右側に図示していますが、通常のMOSFETがセットで成形されるのが一般的でこちらを用いてデータの書き込み・消去が行われます。

トンネル酸化膜FG-MOSFETを用いたEEPROMの書き込みと消去について見ていきましょう。

書き込み時はトンネル酸化膜FG-MOSFETのゲートに0V、MOSFETのゲートとドレインに高電位をかけることにより、FG層の電子が移動します。

続けて消去時は書き込み時はトンネル酸化膜FG-MOSFETのゲートとMOSFETのゲートに高電位をとドレインに0Vをかけることにより、FG層に電子が移動します。

電圧のかけ方により1セル単位でデータの買い替えが可能であることがわかりますね。

FLASHメモリ

続けてFLASHメモリについて見ていきましょう。ここまで来ると身近ですね。

こちらもまたプログラムにより書き込みが可能で、電気的にメモリの消去が可能になっています。プロック単位にメモリを管理して消去を可能とすることで高集積化を実現しています。

構造もEEPROMの派生でその並べ方に工夫があります。

その用途は、USBメモリやSSDの構成要素として、現代の大容量の記憶装置の主力部品となっています。

NAND型とNOR型

並べ方に工夫があると話しましたが、NAND型とNOR型に大別されます。

NAND型は読み出したいトランジスタが直列に並んでおり、全てのゲートが導通しないとビット線がHighになりません。

一方で、NOR型は①つでもトランジスタが導通状態となればビット線はHigh状態となります。

NAND型とNOR型の比較をすると表のようになります。

集積度(高容量)に特化したNAND型と読み取り速度に特化したNOR型という構図が見て取れますね。

多値化

続けてフラッシュメモリの高容量化を実現するための多値化について紹介します。

これまでデータセルは"0"か"1"の2つの状態を表すものでした。これが、もし1セルあたり"0","1","2","3"の4つデータを保持できるようになれば保持できるデータの容量を2倍にできます。

これを実現するのが多値化です。どのように実現するのかと言うと浮遊ゲートの電荷のたまり具合によりデータを区別します。図示したように空っぽであれば"0"、少し溜まっていれば"1"、満杯に溜まっていたら"3"といった具合です。

これを持って、1セルに2Bitデータを持つ構造をMulti-Level Cell(MLC)と呼びます。

また、3Bit持つものをTriple-Level Cell(TLC)、4Bit持つものをQuad-Level Cell(QLC)と呼びます。

対してこれまで扱った1セル1BitデータのものをSingle Level Cell(SLC)と呼びます。

FeRAM

最後に次世代の不揮発性メモリであるFeRAMについて見ていきましょう。

えっRAM?と思った方鋭いです。こちらは先に紹介したDRAMと類似構造を持つ不揮発性メモリです。

Ferroelectric Random Access MemoryでFeRAMです。

DRAMなにの書き込み速度を持ちます。

その構造は、トランジスタ+強誘電体キャパシタを用いたDRAMと酷似しあ構造をもちます。

非接触ICカードなどの内蔵メモリとして既に利用されていますが高コストのためまだ広く普及はしていません。

強誘電体キャパシタセル

強誘電体キャパシタは、図に示したようなヒステリシスな電気特性を持ちます。ヒステリシスというのは、過去に依存するということです。例えば、一旦高電位まで上げると、0電位に戻した際に、分極状態が0に戻らずに正電位を維持します。反対に負方向に高い電位をかけると0電位に戻した後に負に分極した状態となります。

この性質を利用して不揮発性を実現しています。

まとめ

メモリの基本から種類、各種メモリの特徴について構造を交えて紹介してきました。構造と特徴をリンクさせて理解を深めていただければ嬉しいです。

今回はメモリの各セル構造に注目した解説でしたが、次回はどのようにメモリセルを制御することで大容量化や高速化を実現しているかというソフトウェアよりの話を解説していきます。

関連記事

おすすめの記事