EEPROM vs Flash:耐久性、粒度、書き込み時間
どちらも電源なしでデータを保存します。違いは、書き込み頻度、一度に消去する必要がある量、書き込みにかかる時間であり、この3点が設計にどちらが適しているかを決めます。
簡単な回答
- EEPROM: バイト単位で書き込み可能、1M+ サイクル、1バイトあたりミリ秒、小容量。設定およびキャリブレーション。
- NOR flash: セクター消去(4 KB)、約100kサイクル、サブミリ秒のページ書き込み。ファームウェアおよび中程度のログ記録。
- NANDフラッシュ: ブロック消去(大容量)、耐久性が低く、ECCと不良ブロック処理が必要。バルクデータ。
- FRAM / MRAM: 書き込み回数は実質無制限、高速、高価。高頻度カウンターとログ。
1. 3つの軸
| タイプ | 耐久性 | 消去単位 | 書き込み時間 |
|---|---|---|---|
| EEPROM | 1M–4M cycles | Byte/page | ≈ 5 ms per write |
| NOR flash | ≈ 100k cycles | 4 KB sector | Page < 1 ms, erase 50–400 ms |
| NAND flash | 1k–3k (MLC/TLC) | 128 KB block | Page ≈ 0.3 ms, block ≈ 2 ms |
| FRAM / MRAM | 10^12+ | Byte | Microseconds |
2. 消去粒度は構造上の差異である
フラッシュはバイトをインプレースで上書きできません。セクター全体を消去してから書き直します。つまり、小さな更新がリード・モディファイ・ライトのサイクルになり、そのバイトの実効耐久性はセクター内のバイト数で割られます。EEPROMは密度と価格を犠牲にしてこれを回避します。
NORとNANDはその扱い方が異なります。NORはランダムアクセスインターフェースを提供し、インプレース実行(execute-in-place)を可能にするため、ファームウェアはそこに置かれます。NANDはページとブロックで構成され、ECCが必要で、不良ブロックを管理します — ビットあたりのコストは安いですが、コントローラーがより多くの処理を行う必要があります。
3. 耐久性の計算
1Mサイクル、1 write/s = 11.6日 1Mサイクル、1 write/min = 1.9年 1Mサイクル、1 write/10min = 19年 100kサイクル(NOR)、1 write/min = 69日
部品を決めるのはその計算です。1秒に1回更新されるカウンタにはFRAMまたはウェアレベリングが必要で、変更時に書き込まれる設定ブロックはEEPROMで問題なく、生産時に書き込まれるファームウェアはNORで問題ありません。
| 書き込みパターン | 実効寿命 | 対策 |
|---|---|---|
| 1 byte/s into EEPROM | 11.6 days at 1M | FRAM, or buffer + periodic write |
| 1 write/min into NOR | 69 days at 100k | Wear leveling across sectors |
| Config on change | Decades | No action |
| Firmware at production | Effectively unlimited | Sector erase is fine |
書き込み時間は電源断時の挙動にとって重要です。中断された300 msのセクタ消去は、そのセクタを無効な状態にする可能性があります。「完了するはず」に頼らず、ジャーナルまたは2つ目のセクタを計画してください。
4. ワークロードによる選択
| ワークロード | 最適な用途 | 理由 |
|---|---|---|
| Config, calibration, serial number | EEPROM | Byte writes, high endurance |
| Firmware, bootloader | NOR flash | Execute-in-place, sector update |
| Counter, event log, energy meter | FRAM / MRAM | Unlimited writes, no erase |
| Audio, images, bulk records | NAND | Density per dollar, with ECC |
設計のシリアルフラッシュ側では、W25Q32 レイアウトガイドインターフェースとデカップリングを扱い、EOL 判断の耐久性の側面については、PCN/EOL ガイドがラストタイムバイを扱います。
4b. インターフェースとパッケージ
| インターフェース | 一般的な用途 |
|---|---|
| I2C EEPROM | Small config, 2-wire bus, many devices |
| SPI EEPROM | Faster byte writes, small density |
| SPI/QSPI NOR | Firmware, execute-in-place, larger density |
| Parallel NOR | Legacy, fast random access, many pins |
| NAND (raw or managed) | Bulk storage; managed parts hide ECC/bad blocks |
5. チェックリスト
- 1日あたりの書き込み回数と製品寿命(年)を見積もる。
- 更新サイズが消去単位より小さい場合は、耐久回数をセクタサイズで割る。
- 書き込み時間と消去時間を電源喪失対策と照らし合わせて確認する。
- インターフェース(I2C、SPI、QSPI、パラレル)とピン数を確認する。
- NANDの場合は、ECCと不良ブロック管理のための余裕を見込んでください。
- 最高動作温度でのデータ保持を確認してください。
6. FAQ
フラッシュをEEPROMのように使えますか?
ウェアレベリングとリード・モディファイ・ライト方式を用いる場合に限ります。セクタを消去せずにフラッシュへ1バイトを書き込むことはできません。
EEPROMは実際に何回の書き込みに耐えられますか?
1M–4Mサイクルが一般的ですが、耐久性はバイト単位かつ温度条件で規定されます。データシートの条件を確認してください。
フラッシュがこんなに早く劣化するのはなぜですか?
小さな更新のたびにセクタ全体を書き換えるからです。実効耐久性は、定格サイクル数をそのセクタを共有するバイト数で割った値です。
FRAMはコストに見合いますか?
書き込み頻度が高い場合や、いつ電源が失われてもおかしくない場合は、はい。消去サイクルと摩耗の問題を完全に排除します。
NORにECCは必要ですか?
通常はファームウェア向けではない。高温での長寿命ロギングには、軽量なECCまたはチェックサムが安価な保険となる。
書き込み中に電源が失われるとどうなりますか?
EEPROMのバイト書き込みはほとんどの設計で十分にアトミックだが、フラッシュのセクタ消去はそうではない。予期しない電源損失後もデータを保持する必要がある場合は、ジャーナルまたは2つの交互セクタを使用する。
データを20年間保存できますか?
保持期間は通常、85 °Cで10~20年として規定されている。より高い温度ではディレーティングし、ベンダーに確認すること。
7. 出典
- メモリのデータシート — 耐久性、保持特性、ページ/セクタ/ブロックサイズ、書き込み時間と消去時間。
- ウェアレベリングと電源断セーフなログ記録に関するアプリケーションノート(ベンダーおよびMCUのドキュメント)。
- メモリの品質認定と保持試験に関するJEDEC標準。
メモリの選定?
書き込みレート、データサイズ、寿命をお送りください。EEPROM、NOR、NAND、FRAMのどれがより安価な答えとなるかをお伝えします。