Стремление достичь предельных значений емкости для NAND-устройств привело к «стандартизации брака» — праву выпускать и продавать микросхемы с некоторым процентом бракованных ячеек и без гарантии непоявления новых «bad-блоков» в процессе эксплуатации. Чтобы минимизировать потери данных, каждая страница памяти снабжается небольшим дополнительным блоком, в котором записывается контрольная сумма, информация длявосстановления при одиночных битовых ошибках, информация о сбойных элементах на этой странице и количестве записей на эту страницу.
Сложность алгоритмов чтения и допустимость наличия некоторого количества бракованных ячеек вынудило разработчиков оснастить NAND-микросхемы памяти специфическим командным интерфейсом. Это означает, что нужно сначала подать специальную команду переноса указанной страницы памяти в специальный буфер внутри микросхемы, дождаться окончания этой операции, считать буфер, проверить целостность данных и, при необходимости, попытаться восстановить их.
Слабое место флеш-памяти — количество циклов перезаписи в одной странице. Ситуация ухудшается также в связи с тем, что стандартные файловые системы — то есть стандартные системы управления файлами для широко распространенных файловых систем — часто записывают данные в одно и то же место. Часто обновляется корневой каталог файловой системы, так что первые секторы памяти израсходуют свой запас значительно раньше. Распределение нагрузки позволит существенно продлить срок работы памяти. Подробнее про задачу равномерного распределения износа[13] см.: Wear leveling (англ.).
Подробнее о проблемах управления NAND-памятью, вызванных разным размером страниц стирания и записи см.: Write amplification (англ.).
Для упрощения применения микросхем флеш-памяти NAND-типа они используются совместно со специальными микросхемами — NAND-контроллерами. Эти контроллеры должны выполнять всю черновую работу по обслуживанию NAND-памяти: преобразование интерфейсов и протоколов, виртуализация адресации (с целью обхода сбойных ячеек), проверка и восстановление данных при чтении, забота о разном размере блоков стирания и записи, забота о периодическом обновлении записанных блоков (есть и такое требование), равномерное распределение нагрузки на секторы при записи.
Однако задача равномерного распределения износа не обязательна, что зачастую приводит к экономии в дешевых изделиях. Такие флеш-карты памяти и USB-брелки быстро выйдут из строя при частой перезаписи. Если вам нужно часто записывать на флешку — старайтесь брать дорогие изделия с SLC-памятью и качественными контроллерами, а также старайтесь минимизировать запись в корневую директорию.
На дорогие NAND-контроллеры также может возлагаться задача «ускорения» микросхем флеш-памяти путем распределения данных одного файла по нескольким микросхемам. Время записи и чтения файла при этом сильно уменьшается.
Подробнее по этой теме см.: en:Flash memory controller.
Специальные файловые системы[править | править исходный текст]
Зачастую флеш-память подключается в устройстве напрямую — без контроллера. В этом случае задачи контроллера должен выполнять программный NAND-драйвер в операционной системе. Чтобы не выполнять избыточную работу по равномерному распределению записи по страницам, стараются эксплуатировать такие носители со специальными файловыми системами: JFFS2[14] и YAFFS[15] для Linux и др.
См. также: TRIM
Применение[править | править исходный текст]
Существует два основных способа применения флеш-памяти: как мобильный носитель информации и как хранилище программного обеспечения («прошивки») цифровых устройств. Зачастую эти два применения совмещаются в одном устройстве.
Флеш-память позволяет обновлять прошивку устройств в процессе эксплуатации.
NOR[править | править исходный текст]
Применение NOR-флеши, устройства энергонезависимой памяти относительно небольшого объёма, требующие быстрого доступа по случайным адресам и с гарантией отсутствия сбойных элементов:
· Встраиваемая память программ однокристальных микроконтроллеров. Типовые объёмы — от 1 кбайта до 1 Мбайта.
· Стандартные микросхемы ПЗУ произвольного доступа для работы вместе с микропроцессором.
· Специализированные микросхемы начальной загрузки компьютеров (POST и BIOS), процессоров ЦОС и программируемой логики. Типовые объёмы — единицы и десятки мегабайт.
· Микросхемы хранения среднего размера данных, например DataFlash. Обычно снабжаются интерфейсом SPI и упаковываются в миниатюрные корпуса. Типовые объёмы — от сотен кбайт до технологического максимума.
NAND[править | править исходный текст]
Флеш-карты разных типов (спичка для сравнения масштабов)
Там, где требуются рекордные объёмы памяти — NAND-флеш вне конкуренции.
В первую очередь — это всевозможные мобильные носители данных и устройства, требующие для работы больших объёмов хранения. В основном, это USB-брелки и карты памяти всех типов, а также мобильные медиаплееры.
Флеш-память типа NAND позволила миниатюризировать и удешевить вычислительные платформы на базе стандартных операционных систем с развитым программным обеспечением. Их стали встраивать во множество бытовых приборов: сотовые телефоны и телевизоры, сетевые маршрутизаторы и точки доступа, медиаплееры и игровые приставки, фоторамки и навигаторы.
Высокая скорость чтения делает NAND-память привлекательной для кэширования винчестеров. При этом часто используемые данные операционная система хранит на относительно небольшом твердотельном устройстве, а данные общего назначения записывает на дисковый накопитель большого объёма.[16]
Благодаря большой скорости, объёму и компактным размерам, NAND-память активно вытесняет из обращения носители других типов. Сначала исчезли дискеты и дисководы гибких магнитных дисков[17], ушли в небытие накопители на магнитной ленте. Магнитные носители практически полностью вытеснены из мобильных и медиаприменений.
Стандартизацией применения чипов флеш-памяти типа NAND занимается Open NAND Flash Interface Working Group (ONFI). Текущим стандартом считается спецификация ONFI версии 1.0[18], выпущенная 28 декабря 2006 года. Группа ONFI поддерживается конкурентами Samsung и Toshiba в производстве NAND-чипов: Intel, Hynix и Micron Technology.[19]