В этой статье представлены только основы понимания износа.
Прежде чем идти дальше, стоит отметить, что это является настолько широкой темой, что даже статья, посвященная рассмотрению того, как она работает, все равно не даст достаточно исчерпывающего обзора.
NOR имеет более простые принципы работы и более высокую надежность, но часто требуется более высокое число выводов и имеется более низкая плотность хранения на единицу площади кремния, чем NAND, что влияет на размер и стоимость. По этим причинам NOR часто используется только в определенных приложениях, которые считаются критическими даже для высоконадежных встраиваемых систем промышленного уровня.
Таким образом, для наших целей нас больше всего интересует счетчик стирания блоков; то есть, сколько раз каждый блок был удален.
Время жизни для pSLC увеличивается более чем в 2 раза по сравнению с MLC; поэтому pSLC предпочтительнее быстрого режима или избыточного выделения ресурсов (т. е. использование флэш-памяти с удвоенной емкостью, чтобы она работала вдвое дольше).
Биты могут быть случайным образом перевернуты, что приведет к повреждению сохраненных данных. Вот где вмешивается ECC, или алгоритм кода исправления ошибок, чтобы исправить перевернутые биты.
Со временем вероятность переворота в блоке увеличивается. Когда он становится слишком большим, блок помечается как плохой.
Может случиться, что блок преждевременно выйдет из строя, и устройство хранения может быть отправлено с завода с некоторыми неисправными блоками.
Производители часто включают запасные блоки для их замены, чтобы они не влияли сразу на полезную емкость хранилища.
Чтобы этого не случилось, алгоритм выравнивания износа гарантирует, что блоки всегда используются равномерно. Для этого он перемещает данные.
Существует два типа алгоритмов выравнивания износа.
Стандарт eMMC поддерживается JEDEC. Последним стандартом является Embedded MultiMedia Card Electrical Standard 5.1
Проблемы использования eMMC заключаются в сборе сведений о реализации контроллера и сроке службы модуля, которые могут быть или не быть общедоступными.
Стандарт eMMC резервирует некоторые регистры для этой цели, но их использование не является обязательным.
У eMMC есть подробный отчет о работоспособности. Средняя продолжительность жизни блока составляет примерно 3000 циклов стирания.
Стандарт eMMC определяет работу через шину, которая содержит линии электропитания, линии CMD, DAT0-7 и CLK.
CMD – это последовательный канал, и разные значения CMD представляют разные операции.
После отправки команды с хоста на карту выдается ответ с карты на хост по той же последовательной линии. Связанные данные доступны через линии DAT.
Стандарт eMMC также определяет регистры с различными наборами информации, которые, в свою очередь, доступны через определенные команды CMD.
Регистры e.MMC
Расширенные данные устройства, ранее называемые расширенными данными карты – это то место, где доступны отчеты о работоспособности. Содержат:
Device Life Time Estimation (MLC) [269]: 0x01 0% - 10% device life time used
Device Life Time Estimation (SLC) [268]: 0x01 0% - 10% device life time used
Pre EOL information [267]: 0x01 Normal
Device Life Time Estimation (MLC) [269]: 0x08 70% - 80% device life time used
Device Life Time Estimation (SLC) [268]: 0x01 0% - 10% device life time used
Pre EOL information [267]: 0x03 Urgent ( не рекомендуется использовать)
Прежде чем идти дальше, стоит отметить, что это является настолько широкой темой, что даже статья, посвященная рассмотрению того, как она работает, все равно не даст достаточно исчерпывающего обзора.
NOR и NAND
Флэш-память – это широкий термин, и существует несколько комбинаций технологий, которые вместе образуют конечные флэш-продукты с определенными характеристиками. Первоначальное различие кроется в разделении флэш-памяти на два типа: NOR и NAND. Они названы по имени технологий, работающих на уровне транзисторов для хранения битов, напоминающих логические элементы NOR и NAND.NOR имеет более простые принципы работы и более высокую надежность, но часто требуется более высокое число выводов и имеется более низкая плотность хранения на единицу площади кремния, чем NAND, что влияет на размер и стоимость. По этим причинам NOR часто используется только в определенных приложениях, которые считаются критическими даже для высоконадежных встраиваемых систем промышленного уровня.
Структура NAND
Флэш-устройство raw NAND можно разбить на три отдельные части.- Ячейка : самый маленький объект. Ячейка хранит данные на уровне битов и не может быть напрямую адресуемым устройством, управляющим хранилищем NAND.
- Страница : Наименьший массив ячеек, которые можно адресовать для операций чтения и программирования. Программная операция состоит из «переворачивания» битов от значения 1 до значения 0.
- Размеры страниц находятся в диапазоне килобайт; например, 4 КБ.
- Блок : наименьший массив страниц, который можно адресовать для операций удаления. Блок также известен как стираемый блокв некоторых контекстах, таких как стек MTD Linux.
- Операция удаления состоит из возврата битов со значения от 0 до значения 1. Размеры блоков находятся в мегабайтах; например, 4 МБ.
- Операции стирания выполняются намного медленнее, чем операции программирования или чтения, выполняемые на страницах.
- Операции удаления стирают флэш-память с течением времени.
- Когда блок больше не может использоваться для хранения данных, он помечается как плохой .
Таким образом, для наших целей нас больше всего интересует счетчик стирания блоков; то есть, сколько раз каждый блок был удален.
NAND SLC и MLC
Ячейка, как самая маленькая сущность, хранит биты. Сколько битов фактически хранится на ячейку, зависит от пороговых уровней напряжения, которые она может удерживать и различать во время операции чтения. Существуют различные обозначения для флэш-памяти, которые указывают, сколько бит могут хранить ячейки.- SLC: одноуровневая ячейка, хранит 1 бит на ячейку
- pSLC : MLC, работающий в режиме SLC, сохраняет 1 бит на ячейку
- MLC : многоуровневая ячейка, хранит 2 бита на ячейку
- TLC : трехуровневая ячейка, хранит 3 бита на ячейку
- QLC : четырехъярусная ячейка, хранит 4 бита на ячейку
Время жизни для pSLC увеличивается более чем в 2 раза по сравнению с MLC; поэтому pSLC предпочтительнее быстрого режима или избыточного выделения ресурсов (т. е. использование флэш-памяти с удвоенной емкостью, чтобы она работала вдвое дольше).
ECC
Мы кратко остановились на том, что блоки изнашиваются и становятся плохими. Когда они нормальные, не все обязательно идеально.Биты могут быть случайным образом перевернуты, что приведет к повреждению сохраненных данных. Вот где вмешивается ECC, или алгоритм кода исправления ошибок, чтобы исправить перевернутые биты.
Со временем вероятность переворота в блоке увеличивается. Когда он становится слишком большим, блок помечается как плохой.
Может случиться, что блок преждевременно выйдет из строя, и устройство хранения может быть отправлено с завода с некоторыми неисправными блоками.
Производители часто включают запасные блоки для их замены, чтобы они не влияли сразу на полезную емкость хранилища.
Выравнивание износа и сбор мусора
Если всегда использовать одни и те же физические страницы и блоки, например, при обновлении файла, эти блоки будут преждевременно изнашиваться. В худшем случае система может даже перестать работать задолго до окончания срока службы флэш-памяти (EOL), если контроллер NAND не перемещает данные, поскольку эти блоки становятся неисправными.Чтобы этого не случилось, алгоритм выравнивания износа гарантирует, что блоки всегда используются равномерно. Для этого он перемещает данные.
Существует два типа алгоритмов выравнивания износа.
- Динамический : перемещаются только данные, которые являются динамическими (то есть обновляются с течением времени). Статические данные хранятся в блоках, в которые они были первоначально записаны. Этот алгоритм проще, но не использует всю емкость устройства хранения. Лучше всего использовать, когда только небольшой процент флэш-памяти содержит статические данные.
- Статический : Этот алгоритм целенаправленно перемещает статические данные, равномерно распределяя все блоки флэш-памяти. Это более сложный алгоритм, но он продлевает срок службы устройства хранения, используя всю доступную флэш-память.
Детальный взгляд на eMMC Flash
Одной из самых популярных высокопроизводительных флэш-технологий, используемых во встраиваемых промышленных системах, является eMMC ( [Embedded MultiMediaCard]), которая состоит из матрицы NAND, обычно MLC или TLC, и сопровождающего ее контроллера NAND. Он абстрагирует большую часть стека управляющего программного обеспечения от базовой операционной системы.Стандарт eMMC поддерживается JEDEC. Последним стандартом является Embedded MultiMedia Card Electrical Standard 5.1
Проблемы использования eMMC заключаются в сборе сведений о реализации контроллера и сроке службы модуля, которые могут быть или не быть общедоступными.
Стандарт eMMC резервирует некоторые регистры для этой цели, но их использование не является обязательным.
У eMMC есть подробный отчет о работоспособности. Средняя продолжительность жизни блока составляет примерно 3000 циклов стирания.
Стандарт eMMC определяет работу через шину, которая содержит линии электропитания, линии CMD, DAT0-7 и CLK.
CMD – это последовательный канал, и разные значения CMD представляют разные операции.
После отправки команды с хоста на карту выдается ответ с карты на хост по той же последовательной линии. Связанные данные доступны через линии DAT.
Стандарт eMMC также определяет регистры с различными наборами информации, которые, в свою очередь, доступны через определенные команды CMD.
Регистры e.MMC
Расширенные данные устройства, ранее называемые расширенными данными карты – это то место, где доступны отчеты о работоспособности. Содержат:
- собственный отчет о работоспособности разработчика, длина 32 байта
- оценка срока службы устройства тип A, обеспечивающая состояние работоспособности с шагом 10%
- относится к блокам SLC в нашей eMMC.
- оценка срок службы устройства тип B, обеспечивающая состояние работоспособности с шагом 10%
- относится к блокам MLC в нашей eMMC.
- pre-EOL info (End Of Limit), показывает процент задействованных резервных блоков, которые введены в использование взамен выведенным из строя.
- возвращает значения normal, warning (80% зарезервированных блоков использовано) и urgent (90% зарезервированных блоков использовано)
root@colibri-imx6:~# mmc extcsd read /dev/mmcblk1 | grep LIFE
Device life time estimation type B [DEVICE_LIFE_TIME_EST_TYP_B: 0x01]
Device life time estimation type A [DEVICE_LIFE_TIME_EST_TYP_A: 0x01]
eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]: 0x01
eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]: 0x01
В приведенном выше примере мы видим, что состояние работоспособности оценивается от 0% до 10% срока службы устройства с нормальным состоянием до EOL. Следовательно, это новое устройство.
Device Life Time Estimation (MLC) [269]: 0x01 0% - 10% device life time used
Device Life Time Estimation (SLC) [268]: 0x01 0% - 10% device life time used
Pre EOL information [267]: 0x01 Normal
Device Life Time Estimation (MLC) [269]: 0x08 70% - 80% device life time used
Device Life Time Estimation (SLC) [268]: 0x01 0% - 10% device life time used
Pre EOL information [267]: 0x03 Urgent ( не рекомендуется использовать)