組み込み回路 13 · メモリ IC の中身

Chapter 13

メモリ IC の中身

この章がなぜ必要なのか——メモリの「性格」は、セル構造から決まっているから.

これらは全部、1 ビットを蓄える回路の構造から出てくる。 逆に言えば、セルの絵を 1 枚覚えれば、 データシートの制約はほぼ全部説明できる。

この章で使う既出の用語(定義は各リンク先). 逆方向(04 章 1 節)、メモリセル(05 章)、増幅(05 章 2 節)、MOSFET(06 章 6 節)、不可(06 章 6 節)、CMOS(07 章 2 節)、反転(08 章 2 節)、インバータ(09 章 2 節)、NAND(11 章 2 節)、NOR(11 章 2 節)、温度(11 章 3 節)、直列(11 章 2 節)

1. メモリの分類——何で覚えているか

「メモリの種類」は無数にあるように見えるが、1 ビットを何で保持しているかで きれいに分かれる。

保持の方法種類電源を切ると
回路の状態(正帰還ループ)SRAM、レジスタ、フリップフロップ消える
キャパシタの電荷DRAM消える(しかも数十 ms で自然に消える)
絶縁膜の中に閉じ込めた電荷Flash、EEPROM残る(10 年オーダ)
配線の有無(物理的な結線)Mask ROM、ヒューズ ROM/OTP残る(永久)
物質の状態(結晶/非晶質、磁化、抵抗)PCM、MRAM、ReRAM残る

この分け方から、性質はほぼ自動的に決まる。

保持方法速さ密度書き換え耐性待機電力
回路の状態最速最低無限リーク電流のみ
キャパシタ速い高い無限リフレッシュが要る
絶縁膜の電荷書きが遅い最高有限(10³〜10⁵ 回)ゼロ
物理結線速い高いゼロ(or 1 回)ゼロ

「速い・大きい・消えない」は 3 つ同時に成立しない.

メモリ階層(レジスタ → キャッシュ → RAM → Flash)が存在するのは、 この 3 すくみが物理的に解けないからである。

メモリセルの構造を比べる

各方式のセル構造と、そこから出てくる性質を並べて見る。 セル面積・速度・耐性のトレードオフが、構造から直接来ていることを確認する。

2. SRAM——回路の状態で覚える

6T セル

SRAM の 1 ビットは、インバータ 2 個を向かい合わせにしたものである。

SRAM 6T セル — インバータ 2 個のたすき掛けVDDM2M1VDDM4M3QQBM5BLWLM6BLBWLQ が H なら QB が L、その QB が Q を H に保つ——どちらの状態も自分で維持する(正帰還ループ)
6 個のトランジスタで 1 ビット。速いが面積が大きく、電源が入っている限り内容を保つ

インバータ A の出力がインバータ B の入力、 インバータ B の出力がインバータ A の入力になっている。

これは 正帰還ループである。

つまり どちらの状態も自己保持する。これがメモリになる。

なぜ「たすき掛け」で覚えられるのか.

山の頂上にボールを置くと、どちらかに転がり落ちて止まる。 谷は 2 つ(Q=H と Q=L)あり、どちらに落ちてもそこに留まる。

12 章のメタステーブルは、 このボールが頂上で止まってしまった状態である。 SRAM セルもフリップフロップも同じ回路なので、同じ現象が起きる。

読み出し

  1. BL と BLB を両方 VDD にプリチャージする
  2. WL(ワード線)を H にする → M5・M6 が導通
  3. Q = L 側のビット線が、M1 を通じてゆっくり放電される
  4. BL と BLB に 数十 mV の差が出たところで、センスアンプが増幅して 0/1 を判定

ポイント: 差が数十 mV になった時点で判定する。 フルスイング(0 V まで放電)を待たない。だから速い。

読み出しでデータが壊れかける.

WL を開けた瞬間、VDD にプリチャージされた BL が、 Q = L のノードを引き上げようとする。 これが強すぎるとセルが反転してしまう(リードディスターブ)。

防ぐには、M1(プルダウン NMOS)を M5(アクセス)より強くする。 この強さの比を βレシオ(通常 1.2〜2)と呼ぶ。 SRAM セルのトランジスタサイズが全部違うのは、この調整のためである。

書き込み

  1. BL を書きたい値、BLB をその反転にドライブする
  2. WL を H にする
  3. ビット線ドライバがセルのインバータより強いので、セルが力ずくで反転する

書き込みでは「アクセストランジスタがセルの PMOS に勝つ」必要がある。 読み出しでは「セルの NMOS がアクセストランジスタに勝つ」必要がある。

この 2 つは相反する要求である。 SRAM の設計が難しいのはここで、 電圧を下げるほど両立が難しくなる(低電圧化の壁)。

SRAM の性質——構造から出てくること

性質理由
速い(サイクル 1〜10 ns)差動読み出し + センスアンプ。充放電を待たない
面積が大きい1 ビットに 6 トランジスタ。DRAM の 6〜10 倍
リフレッシュ不要電源が繋がっている限り正帰還が保持する
待機電流があるリーク電流。微細プロセスほど無視できない
書き換え無限ただの回路の状態。物理的な劣化がない
論理プロセスで作れる特殊な工程が不要 → MCU に内蔵できる

MCU の RAM が SRAM なのは、最後の行が理由である。 DRAM や Flash は特殊な製造工程が要るが、SRAM は普通の CMOS で作れる。

ソフトの人が知っておくと得すること.

3. DRAM——キャパシタの電荷で覚える

1T1C セル

DRAM 1T1C セルBLMWLC_s ≈ 25 fFトランジスタ 1 個とキャパシタ 1 個。SRAM の 1/20 の面積で済む
1T1C。ただし電荷は漏れるのでリフレッシュが要り、読み出すと電荷が分配されるので必ず書き戻す

トランジスタ 1 個とキャパシタ 1 個だけ。 これが DRAM が高密度な理由である。

セル面積は理論限界に近く、6F²(F = 最小加工寸法)程度。 SRAM の 6T セルは 120〜150F² なので、20 倍以上の差がある。

読み出し——破壊読み出し

  1. BL を VDD/2 にプリチャージする
  2. WL を H にして、セルのキャパシタを BL に繋ぐ
  3. 電荷が分配される
\[ \Delta V = \frac{C_s}{C_s + C_{BL}}\left(V_{cell} - \frac{V_{DD}}{2}\right) \]

セル容量 \(C_s \approx 25\) fF に対し、 ビット線容量 \(C_{BL} \approx 250\) fF(数百セルがぶら下がっている)。

\(V_{DD} = 1.2\) V、セルが H(1.2 V)なら:

\[ \Delta V = \frac{25}{275} \times 0.6 = 55\ \text{mV} \]

わずか 55 mV。 これをセンスアンプで増幅して判定する。

ここで 2 つの重大な帰結が出る.

(1) 読むと壊れる。 電荷を BL に分けてしまったので、セルの電荷はもう元の値ではない。 だから DRAM は 読み出した直後に必ず書き戻す(センスアンプが増幅した フル電圧をセルに戻す)。これを リストアと呼ぶ。

(2) ビット線を長くできない。 \(C_{BL}\) が増えると \(\Delta V\) が減る。 だから 1 本のビット線にぶら下げられるセル数には上限がある(256〜1024 程度)。 DRAM の内部が細かくバンク分割されているのはこのためである。

リフレッシュ

キャパシタの電荷は、アクセストランジスタのオフリーク・接合リークで漏れる。

保持時間は室温で 64 ms 程度(規格上の保証値)。 だから 64 ms 以内に全行を読んで書き戻す必要がある。これがリフレッシュ。

項目値の目安
リフレッシュ周期64 ms(85 ℃ 超では 32 ms)
行数8192 行(DDR3/4 の一般的な値)
リフレッシュ間隔 tREFI64 ms / 8192 = 7.8 µs
1 回の所要時間 tRFC数百 ns
帯域の損失数 %

温度でリフレッシュ周期が変わる.

リーク電流は温度で指数関数的に増える(10 ℃ で約 2 倍)。 だから 85 ℃ を超えると周期を半分(32 ms)にする。 DDR3 以降には温度センサが内蔵されていて、 温度に応じてリフレッシュ頻度を自動で変えるモードがある。

逆に、冷やすと保持時間が劇的に伸びる。 これがコールドブート攻撃(メモリを冷却して電源断後も内容を読む)の原理である。

DRAM の性質

性質理由
高密度・安価1T1C。面積が SRAM の 1/20
リフレッシュが必要電荷が漏れる
読み出しが破壊的電荷分配で読むため。必ず書き戻す
レイテンシが大きいプリチャージ → 行活性化 → センス → 読み出し、と段階が多い
専用プロセスが要る深い溝や積層のキャパシタを作る特殊工程 → MCU に内蔵しにくい
バーストは速い一度行を開けば、その行の中は連続で高速に読める

「ランダムアクセスは遅いが、連続アクセスは速い」 という DRAM の性格は、 行を開ける(活性化する)のが高コストという構造から来ている。

ソフトの人が知っておくと得すること.

配列を行方向に走査するのと列方向に走査するので速度が何倍も違うのは、 キャッシュラインの話であると同時に、DRAM の「開いた行」の話でもある。 同じ行の中を連続で読めば、行の開け閉めが起きない。

Row Hammer——構造由来の脆弱性.

同じ行を極めて高頻度でアクセスすると、 隣接する行のセルの電荷が抜けてビットが反転する。 微細化でセル間の距離が縮まったために顕在化した。

これは「ソフトのバグ」ではなく 物理現象なので、 ソフト側での完全な防御は難しい。 対策は主にハード側(TRR、ECC、リフレッシュ頻度増加)。

4. 不揮発メモリ——絶縁膜に電荷を閉じ込める

フローティングゲート

MOSFET のゲートの下に、どこにも繋がっていない導体(フローティングゲート) を埋め込む。

フローティングゲート(Flash / EEPROM のセル)p 基板n+ソースn+ドレイントンネル酸化膜 8〜10 nmフローティングゲートONO 絶縁膜コントロールゲートCGここに電子を閉じ込める電子が入る → V_th が上がる → 読み出し電圧でオンしない → "0"
情報は「そのトランジスタの閾値電圧」として保存される。絶縁膜に囲まれているので電源を切っても残る

フローティングゲートは絶縁膜で完全に囲まれている。 一度電子を入れると、逃げ道がない。

電子が入っている → 閾値電圧 \(V_{th}\) が上がる → 読み出し電圧では ON しない → "0" 電子が入っていない → \(V_{th}\) が低い → 読み出し電圧で ON する → "1"

つまり 1 ビットの情報を「そのトランジスタの閾値電圧」として保存している。

なぜ 10 年保持できるのか.

絶縁膜(SiO₂)のバリアは約 3.2 eV。 室温の熱エネルギー(0.026 eV)では、 電子がこれを越える確率は天文学的に小さい。

ただし 完全にゼロではない。だから保持期間は「10 年」と有限に書かれる。 しかも高温では急速に悪化する(データ保持は温度で加速される)。 車載品が高温での保持を厳しく規定するのはこのため。

書き込みと消去——高電圧が要る

動作方法必要な電圧
書き込み(電子を入れる)FN トンネリング or ホットエレクトロン注入15〜20 V
消去(電子を抜く)FN トンネリング(逆方向)15〜20 V
読み出し普通に \(V_{th}\) を見るだけ電源電圧

3.3 V の MCU の中で、なぜ 18 V が作れるのか。 → チャージポンプ(内蔵の昇圧回路)で作っている。

これが Flash の制約のほぼ全部を説明する.

制約理由
書き込みが遅い(µs〜ms)トンネル電流はごく小さい。時間をかけて電荷を運ぶ
消去がもっと遅い(ms〜s)同上 + 大きなブロックを一度に処理
書き込み中は読めない(RWW 制約)チャージポンプが動いていて内部が高電圧
消費電流が跳ねるチャージポンプの動作電流。書き込み中は数 mA〜数十 mA
書き換え回数に限りがある高電圧で絶縁膜が少しずつ壊れる
電圧が足りないと書けないチャージポンプが規定電圧を作れない

なぜ書き換え回数に制限があるのか

トンネル酸化膜を電子が通過するたびに、膜に欠陥(トラップ)が少しずつ増える。

  1. トラップに電子が捕まる → \(V_{th}\) がずれる → 0/1 の判定余裕が減る
  2. トラップが繋がる → リーク経路ができる → 電荷が抜ける → データが消える
種類書き換え耐性
NOR Flash(MCU 内蔵コード領域)10⁴〜10⁵ 回
EEPROM10⁵〜10⁶ 回
SLC NAND10⁴〜10⁵ 回
MLC NAND(2 bit/cell)3×10³ 回
TLC NAND(3 bit/cell)10³ 回
QLC NAND(4 bit/cell)数百回

多値化すると耐性が落ちるのはなぜか.

1 セルに 3 ビット(TLC)入れるということは、 閾値電圧を 8 段階に区別するということである。

1 セルに何段の電圧を詰め込むかSLC01余裕が大きい(10⁴〜10⁵ 回)TLC01234567同じずれで隣と重なる(10³ 回)
多値化するほど 1 段あたりの余裕が減る。だから TLC・QLC は書き換え耐性が桁で落ちる

同じ \(V_{th}\) のずれでも、TLC ではすぐ隣の状態と重なってしまう。 だから「劣化した」と判定される回数が早く来る。

同じ物理セルでも、SLC モードで使えば耐性は 100 倍になる。 産業用 SSD が「pSLC モード」を持つのはこのため。

NOR と NAND——並べ方の違いが全部を決める

NOR:各セルが直接ビット線につながるBLWL0WL1WL21 セルだけ読める=ランダム読み出し・XIP 可NAND:セルが直列につながるBL選択WL0WL1WL2⋮選択1 個読むには他を全部オンにする=ページ単位
並べ方の違いがすべてを決める。NOR は直接実行でき、NAND は密度で圧勝する代わりにページ単位でしか扱えない
NOR FlashNAND Flash
セル面積大きい(各セルにコンタクトが要る)小さい(直列なのでコンタクトが少ない)
ランダム読み出し可能・高速(数十 ns)不可(ページ単位で読む、数十 µs)
XIP(直接実行)可能不可(RAM にコピーが必要)
読み出し単位バイト/ワードページ(2〜16 KB)
書き込み単位ワード〜ページページ
消去単位セクタ(4〜64 KB)ブロック(数百 KB〜数 MB)
ビットエラーほぼ出ない出る前提(ECC 必須)
用途MCU の内蔵コード領域、ブートフラッシュSSD、eMMC、SD カード

MCU の内蔵 Flash が NOR なのは、XIP(そこから直接命令をフェッチする) できる必要があるからである。

NAND は「エラーが出る前提」で設計されている.

NAND は出荷時点で不良ブロックが存在する(Bad Block Table が 工場で書き込まれている)。使用中にも増える。 ビットエラーも日常的に発生する。

だから NAND を使うシステムには必ず:

が必要になる。SSD や eMMC はこれらを内蔵コントローラでやってくれる (だから「生の NAND」より高い)。

→ 誤り訂正の詳細は姉妹シリーズ「符号と暗号」を参照。

なぜ「消去してからでないと書けない」のか

Flash の書き込みは 1 → 0 の方向しかできない(電子を注入する方向)。 0 → 1 に戻すには消去が必要で、消去はブロック単位でしかできない。

なぜブロック単位かというと、 消去は基板側から一括で高電圧をかけるからである。 セルごとに基板を分離することはできない。

これがファイルシステムの設計を支配する.

LittleFS、SPIFFS、YAFFS、F2FS といったフラッシュ向けファイルシステムが 普通の FAT と違う構造をしているのは、全部このためである。

Flash の書き換えと摩耗を見る

書き込み単位・消去単位・ウェアレベリングの有無を変えて、 Write Amplification と寿命がどう変わるかを見る。

5. EEPROM——なぜ 1 バイト書けるのか

EEPROM も原理は Flash と同じフローティングゲートである。違いは構成。

FlashEEPROM
セル構成1 トランジスタ2 トランジスタ(選択 Tr + セル Tr)
消去単位ブロック(KB 単位)バイト
密度高い低い(Flash の 1/2〜1/3)
単価安い高い
耐性10⁴〜10⁵10⁵〜10⁶

バイトごとに選択トランジスタを付けたので、バイト単位で消去できる。 その代わり面積が倍になる。

「EEPROM がない MCU」で設定値を保存するには.

最近の MCU は EEPROM を積まず、Flash だけのものが多い。 その場合は次のどれかになる。

方法内容
EEPROM エミュレーションFlash の 2 セクタを交互に使い、追記でログ的に書く。ベンダがライブラリを提供している
外付け EEPROMI2C/SPI の 24Cxx / 25Cxx シリーズ。数十円
FRAM後述。書き換え無限・高速
RTC のバックアップレジスタ数十バイト。電池が要る

注意: EEPROM エミュレーションは「書き込み中に電源が切れる」ケースを 必ず検証すること。 ここは事故が多い。

6. 新しい不揮発メモリ

種類原理特徴現状
FRAM/FeRAM強誘電体の分極方向書き換え 10¹²〜10¹⁴ 回・書き込みが RAM 並に速い・低消費TI MSP430FR 系などで実用。容量は小さい(〜数百 KB)
MRAM/STT-MRAM磁気トンネル接合の磁化方向高速・高耐性。組み込み Flash の置き換え候補22 nm 以降のプロセスで eFlash の代替として採用が進む
PCM/PRAMカルコゲナイドの結晶/非晶質Flash より速く、DRAM より安い3D XPoint として製品化されたが事業終息
ReRAM金属酸化物の中のフィラメント形成単純な構造・積層可能一部で製品化

FRAM は組み込みで実際に効く.

弱点は容量と単価、そして読み出しが破壊的(DRAM 同様、書き戻す)。

7. 実務——MCU のメモリマップと使い分け

典型的な MCU の中身:

領域実体サイズの目安特徴
コード領域内蔵 NOR Flash32 KB〜2 MBXIP。書き換えは 10⁴ 回程度
RAMSRAM4 KB〜1 MB高速。電源断で消える
バックアップ RAMSRAM(別電源)数十バイト〜数 KBVBAT で保持
EEPROM(あれば)EEPROM数百 B〜数 KBバイト書き換え
OTP / eFuse一度きり数十〜数百バイト鍵・シリアル番号
外付けQSPI NOR / eMMCMB〜GBXIP 可(QSPI + キャッシュ)

気をつけること

落とし穴内容
Flash からの実行は遅い高クロックでは待ちが入る。フラッシュアクセラレータ/プリフェッチの設定を確認。時間クリティカルな関数は RAM に置く
Flash 書き込み中は実行が止まる同じバンクを読めない。割り込みハンドラが Flash にあるとハングする。RAM に置くか割り込み禁止に
書き込み中の電源断ブロックが中途半端になる。二重化 + チェックサムが基本
温度と書き換え回数の関係高温での書き換えは寿命を縮める。保持期間も縮む
SRAM は初期化されない起動時の値は不定。.bss のクリアはスタートアップコードの仕事
スタックとヒープの衝突SRAM 上で向かい合って伸びる。リンカスクリプトの上限確認
ECC 付き SRAM の副作用一部の MCU では未初期化 SRAM を読むと ECC エラーで例外が出る

「Flash の寿命」を実感する計算.

1 分に 1 回、設定値を Flash セクタに書き換えるプログラムがあるとする。 耐性 10⁴ 回とすると:

\[ \frac{10^4\ \text{回}}{60\ \text{回/時}} = 167\ \text{時間} \approx 7\ \text{日} \]

1 週間で壊れる。

対策は、(1) 書き込み頻度を落とす、(2) 追記型にして摩耗を分散する、 (3) FRAM か外付け EEPROM を使う、(4) RAM にためて電源断検出時に書く。

メモリ階層のアクセス時間を比べる

レジスタから外部 Flash まで、アクセス時間を対数スケールで並べる。 「なぜ階層が要るのか」が桁の差として見える。

まとめ

ポイント内容
分類の軸何で 1 ビットを覚えているか。ここから全性質が出る
3 すくみ速い・大きい・消えない は同時に成立しない。だから階層ができる
SRAM6T の正帰還ループ。速い・大きい・リーク電流。論理プロセスで作れる
SRAM の設計読み(壊さない)と書き(反転させる)が相反する要求
DRAM1T1C。面積は SRAM の 1/20。読み出しは 55 mV 程度の差を検出
DRAM の宿命破壊読み出し → リストア、電荷が漏れる → リフレッシュ(64 ms)
Flashフローティングゲートに電荷を閉じ込め、\(V_{th}\) として記憶
Flash の遅さ書き込み・消去に 15〜20 V が要る(内蔵チャージポンプ)
書き換え制限高電圧でトンネル酸化膜に欠陥が溜まる。多値化するほど早く効く
NOR vs NANDNOR = ランダム読み出し・XIP 可、NAND = 高密度・ページ単位・ECC 必須
上書き不可1→0 しか書けず、0→1 はブロック消去のみ → ログ構造 FS・GC・WA
EEPROM2T セルでバイト単位消去。密度と引き換え
FRAM書き換え 10¹² 回・RAM 並の速度。ログ用途で効く
実務の事故Flash 書き込み中の割り込みハンドラ、書き込み中の電源断、書きすぎによる摩耗

次章からは第 V 部——電源 IC に入る。 まずは最も基本的な、LDO の中身から。