Количество циклов программирования-стирания флэш-памяти emmc/NAND ограничено. Достижение этого предела означает, что устройство находится в состоянии окончания срока службы (EoL), то есть более не является надежным. Рабочий ресурс зависит от конфигурации ячеек.
eMMC читает и записывает данные в блоки секторов по 512 байт, которые являются логическими, а не физическими. Адреса секторов называются адресами логических блоков (LBA). Когда данные изменяются, стирание всего блока NAND нецелесообразно, поскольку приводит к неэффективному износу не изменившихся страниц. Схема сопоставления LBA-PBA (адрес физического блока) позволяет сократить запись для балансировки износа блока. Это называется выравниванием износа. С помощью таблицы преобразования адреса LBA сопоставляются адресам PBA. Этот процесс уравновешивает износ блоков и повышает скорость записи.
Процесс отображения адресов выполняется следующим образом.
  • Сектора eMMC имеют размер 512 байт, а страницы NAND — 16 Кб. Таблица сопоставления группирует 32 последовательных адреса секторов в единицу размером со страницу.
  • Если сектор в группе страниц изменяется, контроллер считывает всю группу секторов для этой страницы, обновляет все измененные сектора, а затем программирует новые данные на новую страницу.
  • После программирования обновленной страницы таблица обновляется: в предыдущую запись вносится адрес блока и страницы обновленной страницы NAND.
  • Даже если был изменен всего лишь один сектор, флэш-память NAND должна запрограммировать всю страницу. Эта неэффективность называется увеличением объема записи. Отношение количества операций записи во флэш-память NAND к количеству операций записи на уровне устройства eMMC представляет собой WAF (коэффициент увеличения объема записи).
Небольшие, случайные, не соответствующие страницам операции перезаписи обычно являются самым большим источником увеличения объема записи. Чтобы свести к минимуму WAF, записи должны быть выровнены по границе страницы в единицах, кратных размеру страницы. Этот оптимальный размер единицы записи указывается в поле Optimal Write Size (Оптимальный размер записи) расширенного регистра управления микросхемой (CSD).

NAND – это сам тип флеш-памяти для хранения данных, а eMMC – это более сложное встраиваемое решение, которое включает в себя как флеш-память NAND, так и управляющий контроллер в одном корпусе. Потому абревиатура в статье относится к обоим типам памяти.

01.jpg


Формула для расчета общего количества записанных байтов проста:

(емкость устройства * коэффициент срока службы) / WAF = TBW​

TBW (Total Bytes Written) - Показатель который показывает, какой объем данных может обработать emmc за свой срок службы.
WAF (Write Amplification Factor) - это показатель того, сколько дополнительных данных записывается в emmc для каждой операции записи.
WAF, равный 1, является идеальным значением, означающим отсутствие усиления, в то время как WAF больше 1 указывает на то, что накопитель записывает больше данных, чем запрошено хостом. Это происходит потому, что накопители должны стирать данные на уровне блоков перед записью новых данных на уровне страниц, что приводит к тому, что контроллер выполняет дополнительные операции чтения, стирания и записи.
Например, если в системе WAF равен двум, то на каждые 4 КБ, которые записывает хост, в конечном итоге записывается 8 КБ на носитель.
Чаще всего WAF находится в диапазоне от 4 до 8, но это зависит от режима записи системы.
  • Расчет WAF напрямую для eMMC может быть затруднен, так как контроллер не предоставляет эту метрику в открытом доступе. Самый подходящий инструмент для получения данной информации — mmc-utils
Например, для eMMC 4 ГБ с коэффициентом срока службы, обычно для всех emmc около 3000 циклов и WAF 8 получим:

(4 ГБ * 3000) / 8 = 1,5 ТБ​

Суммарное число записываемых байтов устройства eMMC составляет 1,5 ТБ. Таким образом, мы можем записать 1,5 ТБ данных в течение его жизненного цикла, прежде чем оно достигнет состояния окончания срока службы.
Чтобы оценить свои требования к TBW, оцените ежедневное использование рассматриваемого устройства. Например, для рабочей нагрузки с ежедневным объемом записи 500 МБ (и предполагаемым 5-летним жизненным циклом) потребуется устройство, которое может достигать TBW более 915 ГБ:

0,5 ГБ * 365 = ~183 ГБ в год, или 915 ГБ за 5 лет​

TBW можно использовать для определения максимально допустимого WAF для устройства, поскольку TBW = (DC * EF) / WAF. Если срок службы вашего устройства не может достичь целевого TBW для предполагаемого использования, вы можете попытаться увеличить его. Например, можно перевести его в режим с псевдоодноуровневыми ячейками. Это позволит увеличить срок службы в десять раз за счет перевода устройства из режима TLC или MLC в режим «один бит на ячейку». Однако это существенно сокращает емкость: на 50% для устройства MLC с двумя битами на ячейку и более чем на 66% для устройства TLC с тремя битами на ячейку. Если это решение вас не устраивает, можно выбрать для той же рабочей нагрузки устройство большей емкости. Устройство с вдвое большей емкостью будет иметь и вдвое больший TBW.

Возраст устройства можно отслеживать с помощью инструментов оценки срока службы JEDEC, хранящихся в реестре EXT_CSD. Это общая функция для всех устройств eMMC. Срок службы указывается с шагом 10 % в зависимости от рабочего ресурса устройства. Один инструмент сообщает о возрасте блоков флэш-памяти NAND в конфигурации TLC или MLC, а другой — о возрасте блоков в конфигурации с псевдо-одноуровневыми ячейками.