Как работает NAND – память

Первую в мире NAND – память разработала компания Toshiba, которая представила ее в 1989 году на конференции International Solid-State Circuits Conference. До первого представления этой памяти, существовали только некоторые разработки NOR, которая работа очень медленно, и к тому же имела относительно очень большие габаритные размеры чипа.

Основным отличием NAND-памяти стала статичная адрессация, а не проивзольная, как было с NOR-Flash.

Сегодня NAND – память стала очень популярной и широко используется в разных носителях информации: твердотельных накопителях SSD, MMC, RS-MMC, MMCmicro, SD, miniSD, MicroSD, SDHC, CF, xD, SmartMedia, Memory Stick и т.д.

Как выглядит Nand flasher?

В целом носитель памяти nand являет собой микроконтроллер, который способен наладить работу с микросхемами памяти, а так же работу по установленному стандартному интерфейсу. Чаще всего устройство являет собой небольшую плату, на которой размещены несколько микросхем NAND Flash памяти и микроконтроллер.

Недостатки nand памяти:

  1. Не очень большая скорость. Однако, производители научились обходить эти проблемы, применяя запись в несколько потоков, чтобы сократить время. Еще эта проблема решается с помощью организации логических банков разбитых на достаточно крупные блоки и организация сложной системы трансляции.

  2. Ограничение количество циклов записи.  Для того, чтобы микросхема изнашивалась равномерно, во всех контроллерах адресное пространство разделяется на логические банки, которые в свою очередь разделяются на блоки. Контролер учитывает запись в каждом блоке. Внутри банка каждый пользователь может свободно перемещать свои данные, и для этого специально созданная логическая нумерация блоков.

flash nand memory

Распараллеливание записи, которое часто используют производители, применяется, чтобы увеличить операции чтения/записи. Можно сказать, что она создает прямую аналогию с RAID массивом уровня 0 (stripe), только представляет более сложную ее реализацию.

Если работать за таким принципом, то транслятор накопителя будет таблицей, которая будет постоянно менятся при каждой записи в NAND Flash. Поскольку NAND Flash работает по принципу чтения блока в буфер, внесения изменений и запись блока на место, то наиболее опасными для данных будут незавершенные операции записи; Такое может случится, когда происходит запись измененного транслятора. Если с накопителями обращаться необдумано: например, вынимать их из USB разъема очень резко или из вынять карту из картридера, когда она записывается, то это разрушит служебные данные, в частности таблицы трансляции.

А в таком случае, накопитель не сможет нормально функционировать или вообще перестанет работать. Если такое случится, то извлечь данные с помощью оперделенных программ уже не получится.  Как вариант, можно выпаивать микросхемы NAND Flash с последующим чтением на каком-то считывателе (программаторе).

Здесь следует брать во внимание, если оригинального транслятора нет или он поврежден, то необходимо будет  разобрать дамп извлеченного из микросхемы NAND Flash.

Так же многих людей удивляет размер страниц памяти в NAND Flash. Но всему есть логическое обьяснение – каждая страница имеет служебные данные. Обычно это представлено в виде 512/16; 2048/64; 4096/128; 4096/208, но существуют и значительно более сложные варианты организации данные/служебка.

Служебные данные имеют различные маркеры (маркер номера блока в логическом банке; маркер ротации блока; ECC; и т.п.). Чтобы восстановить данные пользователя, необходимо устранить распараллеливание данных внутри блоков, между банков и между микросхемами памяти, чтобы получить цельные блоки.

Иногда может возникнуть необходимость устранить внутриблочные ротации, ренумерации и т.п. Потом надо будет собрать его поблочно.

nand-flash-memory

Для того чтобы ее осуществить необходимо четко уяснить количество логических банков, количество блоков в каждом логическом банке, количество используемых блоков в каждом банке (задействованы не все) местонахождение маркера в служебных данных, алгоритм нумерации. И только потом производить сбор блоков в конечный файл-образ из которого можно будет произвести чтение пользовательских данных. В процессе сбора подстерегают подводные камни в виде нескольких блоков-претендентов на одну позицию в конечный файл-образ. После решение данного круга задач, получаем файл-образ с пользовательской информацией.

Если возобновление данных не является особо важным, а вы хотите восстановить работоспособность самого накопителя, то лучший вариант коррекции проблем со служебными данными – это отформатировать устройство фирменной утилитой, которую можно скачать у проивзодителя.

Большинство утилит способны переписать всю служебную информацию, создать чистый транслятор, и выполнить процедуру форматирования с созданием новой файловой системы.

Если у производителя нет recovery-утилиты, тогда вы можете воспользоваться утилитами форматирования накопителей на NAND Flash «по контроллеру». Сделать это очень просто, единственной сложностью может быть обилие производителей контроллеров и сложности с его идентификацией.