EEPROM против Flash: выносливость, гранулярность и время записи
Оба хранят данные без питания. Разница в том, как часто можно записывать, сколько нужно стирать за один раз и сколько времени занимает запись — и эти три фактора решают, какой из них подходит для вашего проекта.
Краткий ответ
- EEPROM: запись побайтно, 1M+ циклов, миллисекунды на байт, малая плотность. Конфигурация и калибровка.
- NOR flash: стирание сектора (4 KB), ~100k циклов, запись страниц менее чем за миллисекунду. Прошивка и умеренное логирование.
- NAND-флеш: стирание блоков (крупных), меньшая выносливость, требуются ECC и обработка плохих блоков. Большие объёмы данных.
- FRAM / MRAM: практически неограниченное число записей, быстро, дорого. Высокочастотные счётчики и журналы.
1. Три оси
| Тип | Ресурс | Единица стирания | Время записи |
|---|---|---|---|
| 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. Гранулярность стирания — это структурное отличие
Flash не может перезаписать байт на месте: он стирает весь сектор, затем перезаписывает его. Это означает, что небольшое обновление превращается в цикл чтения-модификации-записи, а эффективный ресурс этого байта делится на число байтов в секторе. EEPROM избегает этого ценой плотности и стоимости.
NOR и NAND различаются тем, как они с этим справляются. NOR предоставляет интерфейс произвольного доступа и допускает execute-in-place, поэтому там хранится прошивка. NAND организована в страницы и блоки, требует ECC и управляет плохими блоками — дешевле в расчете на бит, но контроллеру приходится выполнять больше работы.
3. Расчет ресурса
1M циклов при 1 записи/с = 11.6 дня 1M циклов при 1 записи/мин = 1.9 года 1M циклов при 1 записи/10 мин = 19 лет 100k циклов (NOR) при 1 записи/мин = 69 дней
Именно этот расчёт определяет выбор компонента. Счётчик, обновляемый раз в секунду, требует 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 может оставить сектор недействительным. Планируйте журнал или второй сектор, а не рассчитывайте на то, что «оно завершится».
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. Контрольный список
- Оцените количество записей в день и срок службы продукта в годах.
- Разделите ресурс на размер сектора, если объём обновления меньше единицы стирания.
- Проверьте время записи и стирания с учётом стратегии обработки потери питания.
- Подтвердите интерфейс (I2C, SPI, QSPI, параллельный) и количество выводов.
- Для NAND закладывайте ресурсы на ECC и управление плохими блоками.
- Проверьте сохранность данных при максимальной рабочей температуре.
6. FAQ
Можно ли использовать flash как EEPROM?
Только с выравниванием износа и схемой чтения-изменения-записи. Запись байта во flash без стирания сектора невозможна.
Сколько записей действительно выдерживает EEPROM?
1M–4M циклов — типичное значение, но ресурс указывается в расчёте на байт и при определённой температуре. Проверяйте условия в даташите.
Почему моя флеш-память так быстро изнашивается?
Потому что каждое небольшое обновление перезаписывает целый сектор. Эффективный ресурс — это номинальное число циклов, делённое на количество байтов, приходящихся на этот сектор.
Оправдывает ли FRAM свою стоимость?
Когда интенсивность записи высока или питание может пропасть в любой момент — да. Это полностью устраняет цикл стирания и вопрос износа.
Нужен ли ECC на NOR?
Обычно не для прошивки; для длительного журналирования при высокой температуре простая ECC или контрольная сумма — недорогая страховка.
Что произойдёт, если питание пропадёт во время записи?
Побайтовая запись в EEPROM достаточно атомарна для большинства проектов; стирание сектора flash — нет. Используйте журнал или два чередующихся сектора, если данные должны пережить неожиданное пропадание питания.
Можно ли хранить данные 20 лет?
Срок хранения обычно указывается как 10–20 лет при 85 °C. При более высоких температурах снижайте допустимые параметры и проверяйте у поставщика.
7. Источники
- Даташиты памяти — ресурс, сохранность данных, размер страницы/сектора/блока, время записи и стирания.
- Технические заметки по применению о выравнивании износа и ведении журнала с защитой от потери питания (документация производителя и MCU).
- Стандарты JEDEC по квалификационным испытаниям памяти и испытаниям на сохранность данных.
Выбор памяти?
Пришлите интенсивность записи, объем данных и срок службы. Мы скажем, что дешевле: EEPROM, NOR, NAND или FRAM.