[Информационный пост] Историческая справка о типах NAND памяти
Привет, Гиктаймс! Известен факт, что производительность твердотельного накопителя зависит не только от контроллера, но и от типа памяти, которая используется в SSD. Дешевая медленная память убьет все преимущества быстрого контроллера, потому что вся нагрузка ложится именно на него, равно как и медленный контроллер не раскроет потенциал быстрой памяти. Рынку важнее большой объем за скромные деньги, нежели чистое искусство высокой скорости, а с учетом того, что эти две вещи несовместимы… Ключевая роль в этом уравнении отведена буквам – SLC, MLC и TLC. Именно о типах памяти и хочу повести речь в этом посте.

Для затравки представлю всех «участников забега» на очень длинную дистанцию:
Память SLC – Single-Level Cell – давно ушедший с рынка, самый быстрый, самый выносливый и самый дорогой тип памяти. Когда-то давно, в 2004 году доля рынка SLC чипов была более 80%, однако к 2011 они пропали из производства и на текущий момент можно считать их вымершими. Кроме скорости архитектура SLC также славится надежностью, поскольку контроллеру намного легче вылавливать ошибки.
Память MLC – Multi-Level Cell – она же 2-bit MLC – самый популярный на текущий тип памяти – на него приходится около 65 процентов рынка, но доля его неуклонно снижается. Именно такую память в основном использует компания Kingston. Скорость работы таких чипов ниже, чем SLC, но ее достаточно для раскрытия потенциала интерфейса SATA III (как в случае с HyperX Savage, например), а лучшие из образцов прекрасно подходят для работы в PCI-E накопителях, например, HyperX Predator.
Память TLC – Triple-Level Cell, он же 3-bit MLC – самый недорогой из трех типов памяти, появился на рынке в 2008 году и с тех пор пожирает рынок и по прогнозам может занять 90 процентов рынка уже в 2017 году. Что принесет разработка этого стандарта? В начале — небольшое падение скоростей для твердотельных накопителей большой емкости. А затем, после оптимизации и улучшения процесса производства — появление сверхъёмких и достаточно быстрых SSD по 4 терабайта и более по вполне вменяемым (в долларах США) ценам. Kingston закладывает такой переход в дальнейшую стратегию развития и вскоре мы увидим первые серийные твердотельные диски на новом типе памяти.
Следует сделать отступление на тему ресурса — указанные данные — это теоретический максимум для каждого типа памяти, реальные же цифры обусловлены также техпроцессом производства, качеством пластины, а соответственно и ценой за чип (чем дешевле чипы, тем короче срок службы) и способом оптимизации работы твердотельного накопителя в каждом отдельно взятом контроллере (качественный контроллер с качественной прошивкой всегда дороже).
Кто потребляет NAND память?
А вот тут очень интересная история – на долю USB Flash Drive – выпадает около 5% от общего потребления чипов, на долю карт памяти – около 10%, примерно 20% на долю компьютерного рынка (SSD). А где еще 65% спросите вы? Планшеты – забирают себе 20 процентов, еще 5 процентов у МР3-плееров и других подобных устройств, а 40% съедают – смартфоны. Кстати, еще один любопытный факт – компания Apple потребляет 16% от общего количества выпускаемой флеш-памяти. Здесь важно понимать, что направление развития рынка диктует, в первую очередь, мобильное направление, а уж десктопы покорно следуют за толпой демонстрантов с радостными лозунгами.
Скорость обмена данными между центральным и графическим ядрами и системой хранения растет достаточно быстро для того, чтобы в обозримом, но не ближайшем, будущем отказаться от оперативной памяти как таковой. Прямой доступ к кэшу накопителей будет прекрасным решением знаменитого «бутылочного горлышка».
Программирование NAND FLASH
2017-05-25 Дата последнего изменения: 2021-02-28
В статье рассматриваются особенности применения микросхем NAND FLASH, методы разметки страниц и управления плохими блоками, даны рекомендации по программированию на программаторах ChipStar.
CОДЕРЖАНИЕ:
1. ТЕОРИЯ
1.1. Отличие микросхем NAND FLASH от обычных микросхем
Если не вникать в тонкости технологий, то отличие микросхем NAND от других микросхем памяти заключается в следующем:
Есть еще несколько отличий, но первые три особенности являются ключевыми. Больше всего проблем доставляет наличие ошибок и плохих блоков.
1.2. Разновидности микросхем NAND FLASH
Первоначально NAND FLASH были только одного типа: обычные (RAW) NAND. И на сегодняшний день эти микросхемы составляют большинство микросхем типа NAND. Однако производители микросхем, быстро начали расширять возможности применения NAND. Это стало приводить к появлению новых разновидностей NAND. Наиболее распространенные на сегодня разновидности NAND и их основные отличия сведены в таблицу:
| Класс микросхем NAND | Интерфейс | Исправление ошибок (ECC) | Управление плохими блоками | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| RAW NAND (обычные NAND) | Паралельный / NAND | Выполняет внешнее устройство | Выполняет внешнее устройство | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| beNAND | Реализовано внутри микросхемы (*) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Serial NAND / SPI NAND | SPI | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OneNAND | Паралельный / FLASH | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| eMMC | MMC | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Название | Размер основной области | Размер запасной области | Общий размер страницы | Пример микросхемы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Смещение (байт) | Размер (байт) | Назначение | Описание | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Область | Размер (байт) | Фрагмент |
|---|---|---|
| Основная | 512 | Сектор 1 |
| 512 | Сектор 2 | |
| 512 | Сектор 3 | |
| 512 | Сектор 4 | |
| Запасная | 16 | Сектор 1 |
| 16 | Сектор 2 | |
| 16 | Сектор 3 | |
| 16 | Сектор 4 |
Каждому фрагменту их основной области ставится в соответствие фрагмент запасной области.
| Смещение (байт) | Размер (байт) | Назначение | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Исходный образ | Микросхема (исходное состояние) | Микросхема (результат) | ||
|---|---|---|---|---|
| Блок 0 хороший | Блок чистый | Блок 4 хороший | ||
| Граница записи | ||||
| Блок 5 хороший | Блок чистый | Блок чистый | ||
Наиболее хорошо подходит для копирования микросхем NAND, не вникая в ее внутреннюю структуру, при условии, что записываемая микросхема не содержит плохих блоков. Если в исходном образе присутствовали плохие блоки, в итоге образуются ложные плохие блоки. Появление ложных плохих блоков не скажется на функционировании устройства. Однако, если микросхема уже содержит плохие блоки, при попытке записи в такую микросхему появятся сбойные блоки с непредсказуемыми последствиями. Совет: можно попытаться стереть микросхему полностью, включая плохие блоки, затем выполнить копирование. Если запись в плохой блок завершится успешно (такое часто бывает), ваше устройство будет функционировать правильно, в дальнейшем программное обеспечение устройства выявит плохой блок и заменит его хорошим в соответствии со своим алгоритмом работы.
Способ 2: обход плохих блоков
| Исходный образ | Микросхема (исходное состояние) | Микросхема (результат) | ||
|---|---|---|---|---|
| Блок 0 хороший | ![]() | Блок чистый | Блок 0 хороший | |
| Блок 1 плохой | Блок чистый | Блок чистый | ||
| Блок 2 хороший | ![]() | Блок чистый | Блок 2 хороший | |
| Блок 3 хороший | | Блок чистый | Блок 4 хороший | |
| Граница записи | ||||
| Блок 5 хороший | Блок чистый | Блок чистый | ||
При обходе плохих блоков не записываются плохие блоки из исходного образа и не пишется информация в плохие блоки микросхемы. Это не самая лучшая политика копирования, но она безопасна в отношении плохих блоков микросхемы: не теряется информация о плохих блоках микросхемы и не появляются ложные плохие блоки. В ряде случаев такая политика копирования может помочь восстановить работоспособность неизвестного устройства.
Способ 3: пропуск плохих блоков
| Исходный образ | Микросхема (исходное состояние) | Микросхема (результат) | ||
|---|---|---|---|---|
| Блок 0 хороший | ![]() | Блок чистый | Блок 0 хороший | |
| Блок 1 плохой | ![]() ![]() | Блок чистый | Блок 2 хороший | |
| Блок 2 хороший | Блок чистый | Блок 3 хороший | ||
| Блок 3 хороший | Блок плохой | Блок плохой | ||
| Блок 4 хороший | ![]() | Блок чистый | Блок 4 хороший | |
| Граница записи | ||||
| Блок 5 хороший | Блок чистый | Блок чистый | ||
Запись с пропуском плохих блоков предполагает что в устройстве используется именно такой алгоритм управления плохими блоками, а не какой-либо другой. При этих условиях гарантировано правильное копирование информации.
Способ 4: запись только гарантированно бессбойной области
| Исходный образ | Микросхема (исходное состояние) | Микросхема (результат) | ||
|---|---|---|---|---|
| Блок 0 хороший | ![]() | Блок чистый | Блок 0 хороший | |
| Блок 2 хороший | ![]() | Блок чистый | Блок 1 хороший | |
| Граница записи | ||||
| Блок плохой | Блок чистый | Блок чистый | ||
| Блок 3 хороший | Блок плохой | Блок плохой | ||
| Блок 4 хороший | Блок чистый | Блок чистый | ||
| Блок 5 хороший | ||||


















