SRAM・DRAM・NOR・NAND・EEPROM・FRAM・MRAM・eMMC:メモリの違いと使い分け

「不揮発で、書き換えられて、速い」メモリはありません。あるのは、書き換え回数・容量・速度・価格のどれかを捨てたメモリです。何を捨ててよいかは用途で決まるので、用途から逆引きできるように整理します。

最終更新: 2026-09-14 メモリフラッシュEEPROMeMMC

まず 3 つに分ける

メモリは、電源を切ると消える揮発性(SRAM、DRAM)、電源を切っても残るがブロック単位でしか消せないフラッシュ系(NOR、NAND、EEPROM、eMMC)、電源を切っても残りバイト単位で書ける新しい不揮発メモリ(FRAM、MRAM)の 3 群に分けると見通しがよくなります。

SDRAM は DRAM の一種(同期式)、DDR はさらにその世代名です。eMMC は NAND にコントローラを載せて 1 パッケージにしたもので、中身は NAND です。「FLASH」は NOR と NAND の総称で、EEPROM もフローティングゲートという意味では同じ原理ですが、バイト単位で書けるように作ったものを EEPROM と呼び分けます。

メモリの比較(値は代表的な範囲。品種により大きく変わる)
種類揮発容量書き換え単位書き換え回数書き込み時間主な用途
SRAMする数 kB〜数 MBバイト無制限数 nsMCU 内蔵 RAM、キャッシュ
DRAM / SDRAM / DDRする64MB〜数 GBバイト(バースト)無制限数十 nsOS を動かす主記憶
NOR フラッシュしない1MB〜256MB書き: バイト、消去: セクタ(4k〜64kB)10 万回書き µs、消去 数百 ms起動コード、XIP
NAND フラッシュ(生)しない1GB〜数 TB書き: ページ(数 kB)、消去: ブロック(MB)SLC 10 万、TLC 3 千回書き 数百 µs、消去 数 ms大容量データ
eMMCしない4GB〜256GBセクタ(512B、内部は NAND)コントローラが管理数百 µs〜Linux のルート FS
EEPROMしない1kbit〜4Mbitバイト100 万回5ms(ページ)設定値、校正値
FRAMしない4kbit〜16Mbitバイト10¹⁴ 回数十 ns(待ちなし)頻繁に書く設定・ログ
MRAMしない1Mbit〜1Gbitバイト無制限(10¹⁵ 以上)数十 ns不揮発 SRAM の置き換え
メモリの種類ごとの容量と書き換え回数横軸に容量(1kbit〜1Tbit)、縦軸に書き換え回数(10³〜10¹⁶)を取り、SRAM・DRAM・MRAM・FRAM・EEPROM・NOR・NAND・eMMC の領域を四角で示した散布図。 大容量と無制限の書き換えは両立しない 代表的な品種の範囲。揮発性メモリの書き換え回数は「無制限」を 10¹⁶ に置いた 1kbit 1Mbit 1Gbit 1Tbit 10³ 10⁶ 10⁹ 10¹² 10¹⁵ 書き換え回数 容量 SRAM DRAM / DDR MRAM FRAM EEPROM NOR NAND eMMC 揮発性(電源を切ると消える) フラッシュ系(ブロック消去、回数に上限) バイト単位で書ける不揮発
図1:メモリの容量と書き換え回数の地図。右下(大容量・書き換えに弱い)にフラッシュ系、左上(小容量・無制限)に SRAM と新しい不揮発メモリが来る。「右上」は存在しない。

揮発性:SRAM と DRAM

SRAM は 1 ビットにトランジスタ 6 個を使うフリップフロップです。電源がある限り保持し、リフレッシュが要らず、アドレスを与えれば数 ns で読み書きできます。セルが大きいので容量あたりの価格が高く、マイコン内蔵で数十〜数百 kB、外付けのパラレル SRAM で数 MB が上限です。

DRAM は 1 ビットがトランジスタ 1 個とコンデンサ 1 個です。コンデンサの電荷は漏れるので、数十 ms ごとに読み出して書き戻す(リフレッシュ)必要があります。セルが小さく、GB 単位が安く手に入ります。SDRAM はクロックに同期してバースト転送する DRAM で、DDR / DDR2 / 3 / 4 / 5 とその低電力版 LPDDR がその世代です。

DRAM を使うには、リフレッシュ・バンク管理・タイミング制御を行うメモリコントローラがプロセッサ側に要ります。コントローラを持たないマイコンには DRAM はつなげません。逆に、Linux を動かすプロセッサには必ず DDR コントローラがあり、数百 MB 以上の主記憶として DRAM を前提にしています。

選択の基準は単純で、数 MB 以下なら SRAM、それ以上なら DRAMです。中間の「数 MB の SRAM が欲しい」は価格が合わず、QSPI 接続の疑似 SRAM(PSRAM、内部は DRAM でリフレッシュを内蔵)が使われます。

フラッシュ系:NOR、NAND、EEPROM、eMMC

フラッシュはフローティングゲートに電子を閉じ込めて記憶します。書き込み(電子を入れる)はビット単位でできますが、消去(電子を抜く)はまとまった単位でしか行えません。「1 を 0 にはできるが、0 を 1 に戻すには消去が要る」と覚えると、ほぼすべての制約が説明できます。

NOR フラッシュは、セルが並列につながっていて、任意のアドレスをランダムに読めます。プロセッサが直接命令を読み出す(XIP、Execute In Place)ことができるので、起動コードやファームウェアの置き場です。SPI / QSPI 接続の 1〜256MB が主流。消去はセクタ単位(4kB〜64kB)で数百 ms かかり、書き換え回数は 10 万回程度です。

NAND フラッシュは、セルを直列につないで面積を詰めたもので、ページ(数 kB)単位でしか読み書きできず、消去はブロック(数百 kB〜数 MB)単位です。ビットエラーが日常的に起き、ECC(誤り訂正)と不良ブロック管理が必須です。SLC(1 ビット/セル)で 10 万回、MLC で 1 万回、TLC で 3 千回、QLC で 1 千回と、多値化するほど安く、書き換えに弱くなります。

eMMC は NAND にコントローラを載せて、ECC・ウェアレベリング・不良ブロック管理を内部で済ませたものです。外からは 512B セクタの読み書きだけで、SD カードと同じ MMC インターフェースでつなぎます。Linux のルートファイルシステムを置く標準的な選択肢で、生の NAND を扱う手間(Linux なら MTD + UBI)を省けます。

EEPROM は、バイト単位で消去・書き込みできるように作った不揮発メモリです。容量は小さく(数 kbit〜数 Mbit)、書き込みに 5ms 程度かかりますが、100 万回書け、I²C / SPI で数十円からあります。設定値・校正値・シリアル番号の置き場です。

「フラッシュに設定値を保存する」設計は、消去単位と回数の制約にぶつかります。4kB セクタに 16 バイトの設定を書き換えるたびに消去すると、10 万回で寿命です。ウェアレベリング(セクタ内で書く位置をずらす)を自分で実装するか、EEPROM か FRAM を別に持つほうが確実です。

FRAM と MRAM:バイト単位で書ける不揮発

FRAM(強誘電体メモリ)は、強誘電体の分極方向で記憶します。SRAM と同じようにバイト単位で、待ち時間なしで書け(書き込みサイクル数十 ns)、10¹⁴ 回書き換えられます。EEPROM の 5ms の書き込み待ちがなく、書き込み中に電源が落ちてもデータが壊れません。容量は 16Mbit 程度までで、EEPROM より高価です。読み出しで分極が壊れるので内部で書き戻しており、読み出し回数にも上限がありますが、10¹⁴ 回なので実用上は無制限です。

MRAM(磁気抵抗メモリ)は、磁性層の磁化方向で記憶します。書き換え回数は事実上無制限で、SRAM と同じ速度・インターフェースの品種があり、電池でバックアップした SRAM の置き換えとして使われます。STT-MRAM で 1Gbit 級まで出ていますが、価格は DRAM の数十倍です。強い磁界に弱い品種があるので、実装位置に注意します。

どちらも、「頻繁に書く、電源断があり得る、容量は小さくてよい」という用途に向きます。積算値、稼働時間、直近のイベントログ、電源断時の状態保存などです。フラッシュで同じことをするには、ウェアレベリングと電源断対策のジャーナリングが要り、それを作るより FRAM を 1 個足すほうが安く済むことがほとんどです。

用途から選ぶ

  • 起動コード・ファームウェア。マイコン内蔵フラッシュで足りなければ QSPI NOR。XIP できること、ランダム読み出しが速いことが理由。NAND は起動用の小さな NOR と組み合わせるか、eMMC のブートパーティションを使う。
  • 作業用メモリ。数百 kB までは内蔵 SRAM、数 MB なら PSRAM か外付け SRAM、それ以上は DDR(コントローラを持つプロセッサが前提)。
  • 設定値・校正値(書き換えは年に数回〜日に数回)。I²C EEPROM。マイコン内蔵フラッシュのエミュレーションでもよいが、消去単位と回数を計算する。
  • 積算値・カウンタ・状態(秒〜分ごとに書く)。FRAM か MRAM。EEPROM では 100 万回を数週間で使い切る。
  • ログ・測定データ(大量、追記)。SPI NAND か eMMC か SD カード。生 NAND は ECC と不良ブロック管理を自分で持つ覚悟が要る。
  • OS のファイルシステム。eMMC。SD カードは抜き差し・粗悪品のリスクがあり、量産品では eMMC が標準。
  • 電源断で消えてはいけない直前の状態。FRAM か MRAM。書き込み中の電源断でデータが壊れない。

よくある失敗

  • フラッシュに毎秒書く。消去回数の上限に数日で達する。FRAM に替えるか、RAM に貯めて間隔を空けて書く。
  • EEPROM の書き込み完了を待たない。書き込み中(5ms)に次の書き込みやリードをすると、応答しない(ACK ポーリングで待つ)。
  • 書き込み中の電源断。フラッシュも EEPROM も、書き込み中に電源が落ちるとそのページが不定になる。2 面に交互に書いて CRC で選ぶか、FRAM を使う。
  • 生 NAND を ECC なしで使う。出荷時から不良ブロックがあり、使用中にビット化けする。SLC でも ECC は必須。
  • eMMC の寿命を無視する。内部は TLC NAND で、書き込み総量に上限がある(TBW)。ログを高頻度で書く用途では、寿命を計算し、SLC モードや産業用グレードを検討する。
  • DRAM の配線を軽く見る。DDR3 以上は等長・インピーダンス・終端の設計が要り、4 層では厳しい。メモリを載せたモジュール(SOM)を使う選択肢も含めて判断する。
  • MRAM の近くに磁石を置く。スピーカやリレー、ホールセンサ用の磁石が近いとデータが化ける品種がある。データシートの磁界耐性を確認する。

よくある質問

EEPROM とフラッシュの違いは何ですか。
どちらもフローティングゲートに電子を蓄える不揮発メモリですが、EEPROM はバイト単位で消去・書き込みでき、フラッシュはセクタやブロック単位でしか消去できません。EEPROM は小容量(数 Mbit まで)で書き換え回数が多く(100 万回)、フラッシュは大容量で安価ですが 10 万回以下です。
SDRAM と DDR は別のものですか。
DDR は SDRAM の一種です。SDRAM はクロック同期の DRAM の総称で、初期の SDR SDRAM、それ以降の DDR / DDR2 / DDR3 / DDR4 / DDR5、低電力版の LPDDR が世代を表します。組み込みで単に「SDRAM」と言うと、古い SDR SDRAM(3.3V、133MHz 程度)を指すことが多いです。
eMMC と SD カードは何が違いますか。
中身(NAND + コントローラ)とインターフェース(MMC / SD)はほぼ同じです。eMMC は基板に半田付けする BGA で、ブートパーティションや信頼性向上機能(RPMB、書き込み保護)を持ち、量産品向けです。SD カードは着脱できる代わりに、品質のばらつきと接触不良のリスクがあります。
FRAM と MRAM のどちらを選べばよいですか。
小容量(数 Mbit 以下)で価格を抑えたいなら FRAM、大容量(数十 Mbit 以上)や SRAM 互換のパラレルインターフェースが必要なら MRAM です。どちらもバイト単位で高速に書け、書き換え回数は実用上無制限です。FRAM は 85℃ 以上でデータ保持期間が短くなる品種があり、MRAM は磁界に注意が要ります。

参考にした規格・資料

  • JEDEC JESD79 シリーズ / JESD84(eMMC) — DDR SDRAM と eMMC の規格
  • ONFI(Open NAND Flash Interface)仕様 — 生 NAND のインターフェースと ECC 要件
  • 各メモリメーカのデータシート — 書き換え回数、データ保持期間、書き込み時間、TBW

← コラム一覧へ