Как проверить nand память
(3644) 4.90 (10) Оценки, комментарии
2021-02-11 Дата последнего изменения: 2021-02-28
Автор: Линьков Е.А. — разработчик программаторов ChipStar .
В статье в предельно доступной форме рассматриваются особенности применения микросхем NAND FLASH.
CОДЕРЖАНИЕ:
NAND не совсем обычные микросхемы, поэтому те инженеры, которые с ними сталкиваются впервые, часто бывают обескуражены. Более подробно, хотя и очень примитивно, особенности NAND описаны в статьях "Программирование NAND FLASH" и "Программирование SPI NAND".
Здесь же я постараюсь изложить суть использования NAND еще проще.
Тому, кто собирается работать с NAND профессионально, материала из этой статьи будет явно недостаточно, но для любителя, который решил отремонтировать 2–3 прибора, в которых используется микросхема типа NAND, это может очень помочь.
1. Коварство NAND. Структура.
NAND организованы следующим образом: страницы –> блоки –> логические модули –> кристаллы.
На рисунке ниже показан типичный пример организации микросхемы NAND с одним логическим модулем и одним кристаллом.
В чем коварство NAND? В адресации.
Даже начинающий радиолюбитель знает, что к любой ячейке микросхемы памяти можно обратиться, указав её адрес. Перебирая по порядку все адреса с первого до последнего, можно считать или записать всю микросхему (именно так поступает программатор).
При считывании NAND всегда происходит чтение всей страницы целиком, страница перемещается во внутренний буфер (page register), а уже из буфера можно прочитать содержимое страницы байт за байтом или в произвольном порядке.
То же самое при записи — сначала заполняется внутренний буфер (целиком или частично), затем страница записывается целиком. Размер буфера равен размеру страницы. Коварство адресации в том, что размер страницы не кратен степени двух. То есть просматривать содержимое микросхемы байт за байтом не получится.
2. Коварство NAND. Ошибки.
При работе микросхемы NAND возникновение ошибок — это норма. "Как так? Как можно работать с такой микросхемой?!" — скажете вы. Как можно работать с такой памятью? Способы есть, но об этом позже, а сейчас о типичном заблуждении начинающих:
- Пользователь ставит микросхему в программатор.
- Читает её. Читает еще раз.
- Сравнивает. О ужас! Обнаружено более тысячи ошибок!
- Паника! Микросхема не работает. Программатор не работает.Ничего не работает.
- Нужно срочно звонить нам (производителю) и требовать ремонта программатора!
Спокойно, дружище, спокойно. Это NAND, она так работает.
Сейчас типичная страница наиболее распространенных NAND равна двум килобайтам плюс дополнительные байты. Очень многие микросхемы при чтении дают до 16-ти одиночных ошибок на одну страницу. И это нормально. Берем, например, микросхему на 2 гигабайта. Нехитрое вычисление. Получаем, что при считывании микросхемы может быть до 16 777 216 ошибок!
Еще раз: 16 миллионов! Ошибок в микросхеме! Как с этим жить?! Как может что-то работать вообще? Об этом поговорим чуть позже.
А сейчас поясним понятие "одиночные ошибки".
"Одиночная ошибка" — это не одна единственная ошибка на страницу или микросхему, это ошибка в одном бите. Таких ошибок может быть много, вопреки слову "одиночная". Применительно к памяти такие ошибки правильнее было бы называть однобитными, но термин "одиночный" пришёл из теории передачи данных по линиям связи, где ошибки выявляют и исправляют такими же способами, что и в NAND.
3. Магия ЕСС.
Все наверное знают, что такое CRC. Код CRC (еще иногда (ошибочно) называют "контрольная сумма") — это такой специальный код, который позволяет найти ошибку в данных.
Кратко опишем как выглядит работа кодера/декодера ЕСС:
- Берется порция данных, например, 2048 байт, записывается в страницу NAND.
- Рассчитывается код ЕСС и тоже записывается (назовем его ECC1) (именно для записи таких кодов страница сделана чуть больше!)
- Затем читаем страницу 2048 байт.
- Опять рассчитываем код ЕСС (назовем его ECC2).
- Читаем записанный код ЕСС1 и сравниваем ECC1 и ECC2.
- Если коды совпадают, значит ошибок нет.
Вот до этого места коды CRC и ECC не сильно отличаются, магия ЕСС начинается дальше:
Вот и вся магия. Мы просто исправляем ошибки.
4. Коварство NAND. Магия ЕСС есть, но она не работает.
"Так просто?" — скажете вы. "Тогда почему программатор не использует ЕСС для исправления ошибок?! Я из раза в раз читаю микросхему и все время ошибки".
Да. Действительно, почему?
- Какими порциями (128, 256, 512, 1024 или 2048) в вашем приборе (не в микросхеме NAND, а именно в приборе. ) разработчик прибора решил записывать данные и вычислять ЕСС.
- Какой алгоритм ЕСС он решил использовать.
- Какой порождающий полином он решил использовать.
- Как разработчик разбил страницу NAND на порции и куда решил записывать сами коды ЕСС.
Как? Вы это не знаете?! Вот и мы не знаем. И, возможно, никто, кроме разработчика прибора, не знает.
Если из этого списка 1-й и 4-й пункты можно попытаться выяснить, анализируя прошивку микросхемы, а порождающий полином (пункт 3) - подобрать, то с пунктом 2 (алгоритм ECC) все очень плохо.
5. Почему алгоритмов расчета ECC так много.
На данный момент самые распространённые коды исправляющие ошибки это:
Математические теории кодов достаточно сложные, но основные приемы работы с кодами известны, порождающие полиномы легко найти. Казалось бы, мы легко сможем подобрать нужный алгоритм ECC, просто анализируя прошивку. Сначала мы тоже так решили, однако всё оказалось сложнее.
Большинство современных встроенных систем базируются на Linux. Linux для работы накопителей на основе FLASH памяти, как правило, использует драйвер MTD. В драйвере MTD реализовано программное кодирование для NAND кодом BCH с вполне известным набором полиномов. Всё будто просто, но в реальной жизни (в реальных прошивках) такое кодирование не встречается. Почему? Всё упирается в деньги. Вернее, в желание производителей аппаратуры их сэкономить.
Почему вместо обычной памяти FLASH, работающей безошибочно, используются NAND, производящие кучу ошибок? Потому что это в разы дешевле. За разработку алгоритма кодирования/декодирования ЕСС заплатить нужно ОДИН раз, за память без ошибок нужно платить КАЖДЫЙ раз в КАЖДОМ устройстве.
Ровно по этой же причине в реальных устройствах (особенно массовых) никогда не используется чисто программное декодирование ЕСС – это декодирование является очень ресурсозатратным. Получается: ставим дешевую память – получаем или медленно работающее устройство, или нужно ставить мощный процессор, стоимость которого сводит на нет выгоды от использования дешевой памяти.
Поэтому декодированием ЕСС в современных системах занимаются специальные сопроцессоры или контроллеры. Придумываются и реализуются более совершенные коды ЕСС. Часто используются комбинированные коды CRC/ECC. Код CRC рассчитывается быстрее, чем ЕСС, это позволяет использовать CRC-часть для обнаружения ошибок, а полное декодирование ЕСС — только при их наличии.
Все эти коды и алгоритмы являются предметом авторского права и собственностью компаний, их разработавших. Ежедневно патентуются все более совершенные коды и все более быстрые алгоритмы их расчета. И никто не спешит делиться своими секретами.
Как итог — мы видим прошивку. Часто мы видим как страница разбита на подстраницы. Мы видим где находятся коды ЕСС подстраниц. Но не знаем, каким алгоритмом они рассчитаны, и поэтому не можем их использовать для исправления ошибок .
Для тех, кого посетит мысль о том, что взломать алгоритм ECC не сложно, хочу напомнить, что для шифрования данных и расчета кодов исправления ошибок используется идентичный математический аппарат.
6. Коварство NAND. Магия ЕСС есть, но она не работает. Что делать?
Очень часто нам приходится слышать один и тот же вопрос: "Что делать, если NAND всегда читается с огромным количеством ошибок? Как прочитать без ошибок?"
Проблема может быть успешно преодолена, если вы нам скажете, какой алгоритм ЕСС использует ваше устройство. В этом случае мы сделаем расчет ЕСС по вашему алгоритму и у вас всё будет работать без ошибок при чтении NAND для этого устройства.
Вы не знаете алгоритм? Тогда есть только один способ: толерантность к ошибкам (и этот способ успешно работает).
Просто читаете микросхему. Она будет считана с ошибками. При верификации требуется задать допустимое количество ошибок на страницу микросхемы. (Для всех вновь добавленных микросхем значение по умолчанию уже задано. Если не задано – нужно смотреть документацию или просить нас, чтобы мы внесли данные ЕСС в базу).
Программа будет сверять микросхему и подсчитывать количество ошибок. Если количество ошибок не превысит заданное значение — значит всё в порядке. Ошибка сравнения не будет выдана, вы просто будете проинформированы о количестве "исправимых" ошибок.
Но не все так однозначно.
Вот небольшая задачка:
Допустим, микросхема записывается всегда правильно, а все ошибки возникают только при чтении (чаше всего, это именно так). Предположим при каждом чтении каждой страницы всегда возникает ровно 3 ошибки при допустимых для данной микросхемы 4-х ошибках.
Понятно, что пример несколько искусственный, но на нём проще объяснить.
Случай 1:Запись эталона в NAND
Мы записали в микросхему эталонную (точно не содержащую ошибок) прошивку. При верификации получаем 3 ошибки на страницу. Программа предупреждает об исправимых ошибках, но верификация проходит успешно.
Рисунок 1.
Если вы эту микросхему NAND поставите в ваш прибор, он исправно заработает, поскольку встроенный в прибор алгоритм ЕСС обязан(!) исправлять не менее 4-х ошибок на страницу (это паспортные характеристики данной NAND и прибор просто обязан справляться с таким количеством ошибок).
Случай 2:Чтение микросхемы NAND
Мы считали прошивку из исправной микросхемы, стоящей в приборе (напомню, мы получаем по 3 ошибки на страницу). Далее мы еще раз считывали прошивку. Мы опять получили 3 ошибки на страницу.
Рисунок 2.
Но ошибки не возникают в одних и тех же местах! При сравнении результатов 1-го и 2-го считывания может получиться до 6-ти ошибок на страницу. Это превысит допустимые 4 для данной микросхемы, но это вовсе не означает, что микросхема неисправна!
Случай 3:Копирование микросхемы NAND
Мы считали прошивку из исправной микросхемы, стоящей в приборе (получая по 3 ошибки на страницу). Далее записали полученную прошивку в чистую микросхему.
Рисунок 3.
При верификации получим по 3 ошибки на страницу. Это вроде бы меньше 4-х. Но заработает ли прибор? Не факт. Всего ошибок может быть до 6-ти на страницу (3 при считывании образца плюс 3 при работе микросхемы в приборе), но ЕСС прибора исправит только 4.
На самом деле, в реальной жизни, количество ошибок по страницам в микросхемах сильно колеблется. В новых микросхемах количество ошибок не превышает одной-двух, да и то не на каждой странице. Заявленное число ошибок (в нашем примере 4) это уже в сильно изношенной микросхеме. Беда только в том, что в ремонт с формулировкой "слетела прошивка" именно такие приборы и попадают.
7. Практический совет по выбору порога ошибок.
Можно порекомендовать простой алгоритм выбора количества допустимых ошибок при верификации (настройка порога толерантности):
Случай 1. Очень оптимистичный. У вас есть эталонная прошивка и она точно без ошибок.
Такую прошивку можно писать и верифицировать с порогом ошибок, заданным в документации на микросхему (во всех наших примерах – это 4).
Случай 2. Реальный. У вас нет эталонной прошивки.
Вы считываете прошивку из микросхемы. Чтобы ее можно было уверенно использовать, количество ошибок на страницу не должно превышать половины лимита (т.е. для нашего примера — это 2 ошибки). Далее вы пишете эту прошивку в микросхему. При верификации записанной микросхемы ошибок тоже не должно быть более 2-х.
Рисунок 4.
Чем больше вы ошибок получаете при считывании эталона и верификации записи, тем меньше вероятность того, что алгоритм ЕСС справится с исправлением ошибок и прибор заработает. Здесь уже как повезет. :)
8. "Ваш программатор полный отстой, вот другие программаторы решают эту проблему".
Нет. У других производителей программаторов (во всяком случае у всех, которые нам известны на данный момент) всё точно так же. Те же предложения: "Cкажите какой ЕСС и мы все реализуем".
Те же методы верификации с "терпимостью" ошибок ЕСС. У некоторых производителей есть настройка с выбором алгоритмов из встроенного стандартного набора, с необходимостью указания полинома, разметки страницы и кучи других параметров. В практической жизни это вам не сильно поможет.
9. "Я все прочитал и ничего не понял.
Вы сможете наконец что-то сделать, чтобы NAND читались "нормально"?"
Мы над этим работаем. До сих пор мы не оставляем надежды на создание способа автоматического восстановления алгоритма ЕСС (хакинга) только на основании анализа прошивки.
Понятно, что для всех случаев его создать никогда не удастся, но если нам удастся восстановить алгоритм ЕСС хотя бы в четверти случаев, мы будем просто счастливы.
Что для этого нужно? Присылайте нам свои считанные прошивки. Присылайте нам как можно больше считанных прошивок. Я знаю, что они для вас представляют ценность, но мы не собираемся их распространять или использовать как-то кроме их анализа на предмет ЕСС и таблиц плохих блоков. Если вы опасаетесь, можно скрывать название системы, в которой прошивка используется.
Всё что нас интересует — это название микросхемы, из которой прошивка считана. Для лучшей защиты своих интересов вы можете прислать прошивку не полностью. Если вы опасаетесь — не присылайте. Это только просьба.
Еще очень желательно знать марку контроллера NAND, используемого в системе или марку центрального процессора, то есть название микросхемы, к которой NAND подключена.
Собрав достаточную базу прошивок, я надеюсь, нам удастся "хакнуть" ЕСС и сильно облегчить вам работу с NAND.
Только совместными усилиями мы сможем добиться значительных результатов в работе!
В одном из предыдущих материалов мы «пробегались» по типам памяти, используемой в SSD-накопителях. Разбирались, в чем отличия MLC от TLC, какие у каждого типа достоинства и недостатки. Но это все была технология планарной памяти, а в тренде сейчас многослойность и третье измерение. 3D NAND – что это такое? Какие у него преимущества, перспективы и, вообще, оно нам надо? Давайте разберемся.
Почему планарная память так называется
В последние годы актуальной задачей стало создание емких, быстрых, надежных и компактных хранилищ данных. Смартфоны, планшеты, фото- и видеоаппаратура, прочая мобильная и не очень техника и, конечно же, бурно завоевывающийся рынок SSD-накопители. Требуются именно емкие и небольшие по размеру микросхемы памяти, учитывая ограничения, которые предъявляют некоторые твердотельные диски. Достаточно посмотреть на форм-фактор M.2 чтобы понять, что большого количества чипов на этой маленькой платке разместить действительно негде.
До некоторого времени увеличивать емкость можно было как минимум двумя способами:
- Увеличить количество бит, хранящихся в ячейке памяти. Так появилась MLC (2 бита в ячейке», потом ее активно стала вытеснять TLC (уже 3 бита на ячейку).
- Уменьшить физический размер ячейки, для чего использовались все боле тонкие техпроцессы. Так, на смену 32 нм техпроцессу пришел 24 нм, его сменил 19 нм, последний, используемый сейчас, техпроцесс – это 15 нм.
Для увеличения емкости кристалла используют оба способа, но дело в том, что последний, 15 нм техпроцесс, действительно последний, т. к. достигнут технологический предел уменьшения физического размера ячеек, и 15 нм действительно является последним техпроцессом, по которому производят привычную NAND-память.
Что собой представляет NAND-память
Если рассмотреть архитектуру памяти, то единицей хранения информации является транзистор. Традиционно используются транзисторы с плавающим затвором, в котором и хранится один, два или три бита информации. Количество этих битов зависит от типов памяти, о которых можно прочитать в другом материале.
Упрощенная схема NAND-памяти представлена на рисунке. Ячейки (они же транзисторы) соединяются последовательно по 16 или 32 ячеек в группе, образуя страницы, из которых формируется блок. Можно представить себе этакое плоское поле, все утыканное ячейками памяти.
Один из недостатков такой организации памяти – в необходимости оперировать не отдельными битами или байтами, а блоками данных, т. е. произвольный доступ к отдельной ячейке невозможен. Если в случае чтения это не является проблемой, то с записью возникают сложности. Для изменения одного бита приходится считывать блок данных, изменять его и записывать обратно.
Это требует выполнения определенных действий (и времени) по программированию ячеек при записи. Причем перезаписываются даже те ячейки, которые не изменялись. Отсюда и вытекает ограниченность количества циклов перезаписи, о которой часто говорят применительно к твердотельным накопителям. Особенно актуально это стало в связи с массовым распространением трехбитовых (TLC) ячеек. Что ж, ради снижения стоимости чипов памяти приходится чем-то жертвовать.
Подобное соединение ячеек позволяет плотно разместить их на кристалле, чем достигается высокая емкость чипов памяти. Чем больше информации можно разместить на единице площади кристалла, тем ниже себестоимость конечного продукта, в данном случае – SSD-диска.
Как было сказано, бесконечно уменьшать размер ячеек нельзя, как и увеличивать плотность их расположения. 15-нм техпроцесс подошел к тому пределу, когда двигаться дальше уже некуда. Ячейки настолько малы, что при дальнейшем их уменьшении заряд начнет «перетекать» из одной ячейки в другую, что, естественно, недопустимо.
3D NAND – что это, спасение?
Можно сказать, что да. Если стоимость кристалла памяти зависит от его размера, а уплотнять его уже не представляется возможным, то почему бы не перейти от двумерной (планарной) организации ячеек к трехмерной, развернув их вертикально? В этом фундаментальное отличие 3D NAND от старой, «плоской» системы размещения ячеек.
Ячейка в данном случае имеет форму цилиндра, в котором внешний слой – это управляющий затвор, внутренний – изолятор и между ними слой, хранящий биты информации слой. Эти цилиндры размещены вертикально, образуя стек, это позволяет убить сразу не одного зайца. Мало того, что существенно возросла емкость кристалла, так еще и появилась возможность откатиться немного назад, вернувшись на более «толстые» техпроцессы, снизив взаимовлияние соседних ячеек друг на друга и риск перетекания заряда из одной ячейки в другую.
Первой такую память сделала компания Samsung, назвав ее V-NAND (V – от слова vertical, вертикальная). Первое поколение имело 24 слоя, второе – 32, а в последнем, третьем поколении используются уже 48 слоев. Компании Micron, Toshiba представили свои чипы памяти позже, и производят их уже с 64-мя слоями.
Причем, наблюдается и разница в подходах к архитектуре этих микросхем и расположению их на кристалле.
Micron располагает управляющие элементы под NAND ячейками, что экономит место на кристалле, позволяя увеличить его емкость. Мало того, хотя Samsung и Toshiba отказались от технологии плавающего затвора, воспользовавшись технологией CTF (Charge Trap Flash), которая использует изолированную область для хранения заряда (именно изолированность позволяет снизить утечки, повысить надежность памяти), в Micron остались верны плавающему затвору.
В Toshiba управляющие элементы расположены в верхней части, что, по мнению компании, позволяет этим элементам меньше подвергаться нагреву. К тому же линии ячеек как бы свернуты, напоминая букву «U», а не расположены в одну линию. Все это позволяет добиться снижения количества ошибок при операциях чтения/записи. Ну и, как было сказано чуть выше, используется технология CTF. Сама Toshiba называет свою трехмерную память BiCS 3D NAND (Bit Cost Scalable).
В общем, подходы разные, и что лучше или хуже – будет ясно после того, как появится достаточное количество накопителей с чипами памяти разных производителей, которые можно будет сравнить, устроив тестирование, накопится определенная статистика использования.
Итак, трехмерная память сняла остроту необходимости утончать техпроцесс, как один из способов увеличения емкости чипов. Правда, при этом возникли некоторые другие технологические сложности, которые, судя по бодрым анонсам практически всех чипмейкеров, успешно преодолеваются. Так, SK Hynix планирует в скором времени перейти на производство 72-слойных чипов. Та же Toshiba отлаживает выпуск 64-слойных чипов, предлагая их сейчас с емкостью 256 Гб (32 ГБ), а в скором времени ожидается выпуск 3D NAND чипов с емкостью 512 Гб (64 ГБ).
Судя по всему, второе полугодие обещает быть интересным. Увеличится емкость чипов, будут предложены кристаллы с бОльшим количеством слоев.
Что такое технология CTF
В чем суть этой технологии? Разница заключается в области, в которой хранится заряд, и материала, из которого эта область выполнена. Классический транзистор с плавающим затвором, помимо обычных стока, истока, и затвора, называемого в данном случае «управляющим затвором», имеет и еще одну область – расположенный в слое диэлектрика проводник, называемый «плавающим затвором», в котором, собственно, и накапливается заряд. В нем-то и хранятся биты данных. В качестве диэлектрика используется диоксид кремния SiO2.
Транзистор, выполненный по технологии CTF (Charge Trap Flash) сделан несколько иначе. Собственно, область, где хранится заряд, выполнена из нитрида кремния Si3N4, обладающего рядом отличительных свойств. Так, являясь, по сути, диэлектриком, этот материал способен хранить заряд, что позволяет использовать его в качестве запоминающей ячейки.
По сравнению с диоксидом кремния (SiO2), бОльшая концентрация электронных и дырочных ловушек нитрида кремния как раз и позволяет использовать материал для хранения данных.
При этом такой параметр, как диэлектрическая проницаемость у нитрита кремния (Si3N4) выше, чем у диоксида кремния - 7 против 3.9, что позволяет снизить токи утечки и более надежно хранить заряд.
Отсюда становится понятной аллегория, озвученная лидером в разработке 3D NAND памяти, компанией Samsung, что транзисторы с плавающим затвором – это вода, а с ловушкой заряда – это сыр. Плавающий затвор (вода) слабо препятствует перемещениям зарядов и их попыткам вообще покинуть эту область (утечка), в то время как ловушка заряда подобна «сыру», существенно ограничивающая возможность этих перемещений и попытки вырваться на «свободу».
Среди достоинств этой технологии обычно указывают:
- Увеличение надежности и упрощение хранения нескольких бит в одной ячейке.
- Упрощение производства за счет уменьшения количества технологических операций.
- Меньший размер ячейки.
- Более высокий процент выхода годных.
Различают несколько вариаций изготовления слоев транзистора в зависимости от материалов:
- SONOS – Silicon-Oxide-Nitride-Oxide-Silicon.
- MONOS – Metal-Oxide-Nitride-Oxide-Silicon.
- TANOS – Titanium-Alumina-Nitride-Oxide-Silicon.
- THNOS – Titanium-high-k dielectric-Nitride-Oxide-Silicon.
Где предел 3D NAND?
Ну хорошо, количество слоев памяти растет, а где предел, не получится ли так, что вскорости будет достигнут лимит количества слоев, и придется искать альтернативы? Ответ кроется в технологических проблемах и способах их решения.
Если вкратце, и очень упрощенно, то производство многослойной памяти заключается в напылении n-го количества слоев на кремниевую пластину, образующие линии слов (word line), а другая операция заключается в травлении огромного количества отверстий (high aspect ratio etch) через эти слои, чтобы впоследствии сформировать линии битов (bit line). В пространстве линии слов и битов ориентированы перпендикулярно друг другу, а главные сложности кроются именно в отверстиях.
Один из вариантов – технология «string stacking». Если не вдаваться в технические подробности, то это установка отдельных чипов памяти (которые сами по себе многослойные) друг на друга (стекирование) с последующим соединением таким образом, чтобы этот многослойный бутерброд распознавался как единое целое, как одна микросхема. Таким образом, использовав чипы 3D NAND с 32-мя слоями, можно получить итоговый чип с 64 (2 слоя чипов), 96 (3 слоя чипов) и т. д. слоями. Но и тут есть сложности технологического порядка, в первую очередь связанные именно с соединением и коммутацией чипов, которые находятся на этапе решения.
Еще один момент – а сколько вообще слоев может быть? Где предел, при котором микросхема не станет слишком толстой? Если рассматривать с теоретической точки зрения, то можно провести следующие грубые прикидки.
Высота слоев 32-слойной 3D NAND от Samsung составляет около 4 мкм. При этом полупроводниковые пластины, используемые в производстве микросхем, имеют толщину 625-775 мкм в зависимости от диаметра. Одним из завершающих этапов производства чипов (правда не всегда используемый) является сошлифовывание (back-grinding) обратной стороны этой пластины до толщины порядка 50-75 мкм. Это уменьшает размеры кристалла и облегчает упаковку готовой микросхемы в корпус, да и для стекирования чипов подходит как нельзя лучше.
Если взять толщину 32-слойного чипа памяти и толщину 300-мм пластины, которая составляет 775 мкм, то, в теории, можно уложить более 190 слоев чипов памяти прежде, чем их толщина превысит толщину исходной пластины (775 / 4 = 193.75).
Конечно, это только в теории, и, скорее всего, таких значений достигнуто не будет, но это иллюстрирует, что «запаса прочности» у технологии 3D NAND вполне достаточно. Главное – решить текущие технологические проблемы именно с укладкой чипов друг на друга и их соединением. Если же это будет выполнено, то количество слоев (чипов) может исчисляться десятками и сотнями, а количество слоев ячеек может достигать многих сотен. Возможную емкость подобных микросхем попробуйте посчитать самостоятельно.
Либо искать решение проблемы с травлением отверстия в многослойных кристаллах. В конце концов, подробностей о том, как выполнены представленные 64-слойные чипы, а также уже анонсированные 72-слойные, нет. Возможно, удалось все же найти разобраться с травлением, либо присутствуют какие-то другие решения.
В общем, в теории перспективы вполне радужные, что будет на практике?
Проблема параллелизма операции чтения/записи
Увеличение емкости, несомненно, благо, т. к. в небольшом форм-факторе (в том же M.2) можно получить накопители объемом в несколько терабайт. Вот только возникла одна проблема: при высокой емкости чипов становится сложным распараллелить операции чтения/записи. В первую очередь это касается накопителей небольшого объема.
Это хорошо характеризует такой печально известный своей низкой производительностью накопитель Intel 600p. Дело в том, что в нем используются чипы памяти емкостью 384 Гб (48 ГБ) производства Micron, и для того, чтобы получить емкость накопителя в 128 ГБ, надо всего 3 такие микросхемы. Для 256-гигабайтного накопителя используются 6 микросхем и т. д.
В общем, вырисовывается некоторая проблема именно с накопителями низкой емкости. Возможно, стоимость их будет невелика, но и скоростные показатели будут там же. Получается, что если хочется скорости, то пожалуйте приобретать более емкие накопители. А стоимость?
Заключение. 3D NAND – это то, с чем нам жить
Ни для кого не секрет, что за 3D NAND будущее, и в самом ближайшее время начнется (если уже не началось) активное вытеснение планарной памяти. Все будет зависеть от стоимости решений, производственных возможностей производителей, в первую очередь Micron, Toshiba, и, возможно, SK Hynix, если дело двинется дальше анонсов. Про Samsung говорить нечего, т. к. свои чипы 3D памяти они, фактически, никому не поставляют.
Думается, бюджетные SSD-накопители продержатся еще какое-то время, а вот производительные решения, и, в первую очередь, твердотельные диски, работающие на шине PCIe, будут активно мигрировать именно на 3D NAND.
История данного обзора началась после того как знакомый мне дал повертеть в руках умерший SSD накопитель. Умер он «по питанию» ибо после включения начинал моментально греется до 50 градусов. SSD производства Intel и объемом 120 Гб.
Я конечно разобрал его и увидел 8 чипов NAND памяти по 16 Гб, вот тут и загорелось одно место.
Я уже давно заказал заготовки для приготовления USB флешек, но все никак не попадалась память большого объема, выпаянные чипы на 128 — 512 Мб того явно не стоили. И вот когда все переменные встретились в одном месте, возле моей паяльной станции — Я приступил к работе.
Для начала нужно заказать «KIT USB flash pcb» на Aliexpress есть, но очень дорого и явно не целесообразно. Поэтому заказал на Таобао, разница в цене почти 15 раз! Заказ пришел давно и представлял из себя 2 стандартные платки для USB флэш памяти, на которых собственно самой памяти и нет. Китайцы кстати продают и корпуса для флешек, это явно бизнес по «гаражному» сбору флэш памяти из б\у комплектующих.
На платах распаян контроллер CBM2098E. Даташит в сети есть, но толку с него мало да и не понадобится он.
Дальше Я выпаял один чип NAND памяти и припаял на USB «заготовку»
После запайки чипа на плате, строго рекомендую просмотреть лупой все ножки на «не пропай» и «сопли» чтобы нигде ничего не замыкало. А также дополнительно пройтись по ножкам тонким жалом по, заранее покрытым флюсом, ножкам чипа, чтобы наверняка исключить не пропай.
После того как все спаяно рекомендую для начала флэшку подключить к любому зарядному устройству или лабораторному блоку питания, дабы не спалить порты USB на компьютере.
Теперь нужно сделать самое главное — прошить нашу флэшку. Для этого мне понадобилась программа UMPTool V6008 Она разработана производителем контроллера Chipsbank CBM2098. Заметьте если у вас будет другой контроллер то и программа понадобится другая. У каждого производителя и даже для каждой отдельно взятой линейки контроллеров идет свой софт.
После скачивания и распаковки у нас появилась папка в которой содержится файл UmpToolV6A32.exe, запускаем его от администратора. Для начала нажимаем кнопочку «Settings». В открывшемся окне во вкладке «Optimize1» выбираем «Stable priority», после этого нажимаем ОК. Сделали мы это для того, чтоб программа лучше просканировала NAND память на предмет поврежденных ячеек.
Теперь подключаем флэшку к компьютеру. Программа должна сразу определить наше устройство.
Нажимаем кнопочку «All Start» и наслаждаемся процессом около 2 часов.
После окончания флэшка будет иметь такой статус
После всего выше сделанного наше устройство полностью готово к работе и собственно уже работает.
От себя добавлю, что сейчас уже достаточно много дешевых USB заготовок наIS917 контроллере, с поддержкой USB 3.0. А в качестве доноров NAND памяти могут служить вышедшие из строя планшеты, смартфоны и любые устройства со встроенным накопителем. Так же есть подобные заготовки для EMC памяти.
Здесь короткое видео со всей вышеописанной процедурой.
Буду благодарен за подписку на канал! Спасибо!
CNXSoft: Это пост от гостей Марселя Зисвилера (Marcel Ziswiler), менеджер платформы Embedded Linux, Toradex и Леонардо Грабоски Вейга (Leonardo Graboski Veiga), инженера по техническому маркетингу, Toradex, связанные с предстоящим докладом Марселя на тему «Оценка износа устройств с флэш-памятью eMMC» на конференции Embedded Linux 2019 года позже этот месяц.
Флэш-память была важной темой во встраиваемых системах на протяжении десятилетий. Она позволяет радикально улучшить размеры и надежность электронных устройств по сравнению с другими технологиями хранения. Другие преимущества флэш-памяти включают в себя отсутствие подвижных элементов и снижение энергопотребления. Однако, проблемы, связанные с флэш-памятью, не так широко освещаются в потребительской электронике. Среди них ограниченная прочность и большая сложность программного обеспечения.
Рисунок 1. от флэш-накопителей и SD-карт до SSD и интегральных микросхем, флэш-память является частью нашей повседневной жизни.
Когда речь идет о встраиваемых системах, флэш-память является предпочтительной энергонезависимой памятью. Во встраиваемых системах Linux распространенной практикой является использование интегральных микросхем (IC) в системах-на-модуле (SoM) и одноплатных компьютерах (SBC), поскольку они более устойчивы к повреждению данных, чем некоторые модели карт MicroSD. Они также более устойчивы, когда вибрация окружающей среды является решающим фактором. К п римерам SoM, использующим встраиваемую флэш-память, относятся семейства Apalis и Colibri от Toradex. На рисунке 3 представлено увеличенное изображение модуля Colibri iMX8X, оснащенного eMMC от Micron:
Эта статья также включает в себя широкий обзор технологий и некоторые особенности реализации. И нформация может быть не новой для вас, поэтому не стесняйтесь пропускать разделы, если у вас уже есть необходимые знания или вы считаете это не нужным.
Обзор технологии
Прежде чем идти дальше, стоит отметить, что флеш-память является настолько широкой темой, что даже статья, посвященная рассмотрению того, как она работает, все равно не даст достаточно исчерпывающего обзора. Следующие параграфы предназначены только для понимания того, как оценить износ eMMC.
В этой статье представлены только основы понимания износа, в Интернете доступно большое количество литературы по флэш-памяти. Например, у Toradex есть блог, архив вебинаров и ряд статей на веб-сайте разработчиков. Статья Википедии о флэш-памяти также содержит более ста ссылок на другие ресурсы.
NOR и NAND
NOR имеет более простые принципы работы и более высокую надежность, но часто требуется более высокое число выводов и имеется более низкая плотность хранения на единицу площади кремния, чем NAND, что влияет на размер и стоимость. По этим причинам NOR часто используется только в определенных приложениях, которые считаются критическими даже для высоконадежных встраиваемых систем промышленного уровня. Вы можете узнать больше об этой теме в NOR | / NAND Flash Guide от Micron (PDF). Н а рисунке 4, взятом из руководства, упомянутого в этом параграфе, представлена сводка технологий NOR и NAND в контексте плотности и емкости хранилища:
Структура NAND
Флэш-устройство raw NAND можно разбить на три отдельные части.
Самая важная информация из вышеприведенных пунктов заключается в том, что блоки изнашиваются по мере их стирания. Таким образом, для наших целей нас больше всего интересует счетчик стирания блоков; то есть, сколько раз каждый блок был удален.
NAND SLC и MLC
Ячейка, как самая маленькая сущность, хранит биты. Сколько битов фактически хранится на ячейку, зависит от пороговых уровней напряжения, которые она может удерживать и различать во время операции чтения. Существуют различные обозначения для флэш-памяти, которые указывают, сколько бит могут хранить ячейки.
- SLC : одноуровневая ячейка, хранит 1 бит на ячейку
- pSLC : MLC, работающий в режиме SLC, сохраняет 1 бит на ячейку
Существует компромисс между плотностью и стоимостью в сравнении с надежностью и сроком службы, как показано в таблице 1.
NAND Cell Technology
Плотность (бит на ячейку)
Таблица 1: Сравнение клеточных технологий NAND
Рисунок 6 помогает визуализировать, как SLC и MLC хранят биты:
PSLC («pseudo-SLC») повышает скорость работы и срок службы устройства MLC за счет уменьшения его емкости вдвое. Срок службы не соответствует настоящему SLC, но он значительно увеличен. Pseudo-SLC не следует путать с быстрым режимом, который ускоряет работу устройства MLC, но не увеличивает его срок службы:
Понимание того, настроены ли блоки как MLC или pSLC, важно для определения срока службы устройства, так как мы собираем количество поврежденных блоков с течением времени.
Для eMMC, в котором используется технология MLC, в зависимости от ширины трассировки кремния, блок длится в среднем от 3000 до 10000 циклов стирания. Время жизни для pSLC увеличивается более чем в 2 раза по сравнению с MLC; поэтому pSLC предпочтительнее быстрого режима или избыточного выделения ресурсов (т. е. использование флэш-памяти с удвоенной емкостью, чтобы она работала вдвое дольше). Может быть трудно найти количество циклов стирания и значения ширины трассировки в общедоступной документации производителей, поэтому бенчмаркинг самих устройств может быть решением.
Со временем вероятность переворота в блоке увеличивается. Когда он становится слишком большим, блок помечается как плохой. Может случиться, что блок преждевременно выйдет из строя, и устройство хранения может быть отправлено с завода с некоторыми неисправными блоками. Производители часто включают запасные блоки для их замены, чтобы они не влияли сразу на полезную емкость хранилища.
Усиление Записи
Выравнивание износа и сбор мусора
Если всегда использовать одни и те же физические страницы и блоки, например, при обновлении файла, эти блоки будут преждевременно изнашиваться. В худшем случае система может даже перестать работать задолго до окончания срока службы флэш-памяти (EOL), если контроллер NAND не перемещает данные, поскольку эти блоки становятся неисправными.
Чтобы этого не случилось, алгоритм выравнивания износа гарантирует, что блоки всегда используются равномерно. Для этого он перемещает данные. Существует два типа алгоритмов выравнивания износа.
- Динамический : перемещаются только данные, которые являются динамическими (то есть обновляются с течением времени). Статические данные хранятся в блоках, в которые они были первоначально записаны. Этот алгоритм проще, но не использует всю емкость устройства хранения. Лучше всего использовать, когда только небольшой процент флэш-памяти содержит статические данные.
- Статический : Этот алгоритм целенаправленно перемещает статические данные, равномерно распределяя все блоки флэш-памяти. Это более сложный алгоритм, но он продлевает срок службы устройства хранения, используя всю доступную флэш-память.
На рисунке 8 показано, как алгоритмы управления raw NAND вместе можно рассматривать как контроллер, который отображает физические блоки стирания (PEB) в логические блоки стирания (LEB) и абстрагирует специфичные для NAND операции в простые операции «чтения» и «записи»:
Рисунок 8. Операции raw NAND абстрагируются через контроллер.Чтобы лучше понять полную реализацию уровней абстракции между устройством raw NAND и программой в деталях, вы можете прочитать исчерпывающую документацию по MTD , UBI и UBIFS. Конечно, чтобы узнать особенности реализации, вы также можете взглянуть на исходный код ядра Linux.
Детальный взгляд на eMMC Flash
Одной из самых популярных высокопроизводительных флэш-технологий, используемых во встраиваемых промышленных системах, является eMMC ( Embedded MultiMediaCard), которая состоит из матрицы NAND, обычно MLC или TLC, и сопровождающего ее контроллера NAND. Он абстрагирует большую часть стека управляющего программного обеспечения от базовой операционной системы. Стандарт eMMC поддерживается JEDEC, и его база доступна бесплатно после регистрации. Последним стандартом, опубликованным до написания этой статьи, является Embedded MultiMedia Card Electrical Standard 5.1 (можно скачать PDF-файл после регистрации)
Поскольку контроллер обеспечивает высококачественный уровень абстракции (при условии, что он исходит от надежного производителя), можно безопасно использовать файловую систему, которая осведомлена о работе блочных устройств, если принять некоторые меры предосторожности. В BSP Toradex Embedded Linux используется файловая система EXT4 по умолчанию для компьютеров на модулях с флэш-памятью eMMC. Рисунок 9 суммирует различия между raw NAND и управляемым NAND относительно контроллера:
В примерах, приведенных в этой статье, мы рассматриваем 4 ГБ MLC eMMC с 1024 блоками, которые в реальном мире могут быть (например, Micron MTFC4GACAJCN-1M-WT, использовавшимися в последней редакции Apalis iMX6Q 1 ГБ SoM). Мы также предполагаем, что средняя продолжительность жизни блока составляет 3000 циклов стирания, что является лишь обоснованным предположением. Оно не был взято из таблицы данных вышеупомянутого номера детали.
Проблемы использования eMMC заключаются в сборе сведений о реализации контроллера и сроке службы модуля, которые могут быть или не быть общедоступными. Кроме того, кто-то может предпочесть выбрать производителя, который предоставляет хороший собственный отчет о состоянии работоспособности. Стандарт eMMC резервирует некоторые регистры для этой цели, но их использование не является обязательным. У eMMC, выбранной для данного примера, есть подробный отчет о работоспособности, а подробную информацию о нем можно получить из TN-FC-32 Micron: Отчет о работоспособности устройства e.MMC, доступный после регистрации, в разделе программного обеспечения e.MMC на веб-сайте Micron. В этом разделе веб-сайта Micron вы также можете найти инструмент emmcparm, который будет использоваться позже в этой статье, и полезную TN-FC-25: Общие сведения о поддержке драйверов Linux для e.MMC.
Команды и регистры
Стандарт eMMC определяет работу через шину, которая содержит линии электропитания, линии CMD, DAT0-7 и CLK.
Рисунок 10. Многоблочная операция чтения. (Источник: Стандарт JEDEC № 84-B51, раздел 5.3.1, стр. 9)Стандарт eMMC также определяет регистры с различными наборами информации, которые, в свою очередь, доступны через определенные команды CMD. В таблице 2 представлены регистры eMMC:
Название
Ширина (байты)
Описание
Реализация
Идентификационный номер устройства, индивидуальный номер для идентификации
Относительный адрес устройства, это системный адрес устройства, назначаемый хостом во время инициализации.
Driver Stage Register, для настройки выходных драйверов устройства.
Специфичные данные устройства, информация об условиях работы устройства.
Регистр условий эксплуатации. Используется специальной широковещательной командой для определения типа напряжения устройства.
Расширенные данные, специфичные для устройства. Содержит информацию о возможностях устройства и выбранных режимах. Введено в стандарт v4.0
Таблица 2 : Регистры e.MMC (источник: Стандарт JEDEC № 84-B51, глава 5.3, стр. 8)
- собственный отчет о работоспособности разработчика, длина 32 байта
- оценка срока службы устройства тип A, обеспечивающая состояние работоспособности с шагом 10%
- относится к блокам SLC в нашей eMMC.
- относится к блокам MLC в нашей eMMC.
- возвращает значения normal, warning (80% зарезервированных блоков использовано) и urgent (90% зарезервированных блоков использовано)
Уместный вопрос: если эта информация легко доступна, почему бы просто не использовать данные из стандарта JEDEC?
- Одной из причин является тот факт, что отчет о работоспособности был представлен только в версии 5.0 стандарта JEDEC.
- Другим является низкое разрешение значений (с шагом 10%), что плохо для бенчмаркинга программ, которые записывают небольшие объемы данных. Для получения полезной информации потребуется очень много времени.
- Кроме того, инструмент оценки износа флэш-памяти, который предоставляет методы, независимые от конкретных технологий (т. е. также работает для карт SD или необработанной флэш-памяти поверх MTD), является более гибким.
Собственный отчет Micron о работоспособности
По этой теме мы (почти) не подпадаем под действие стандарта JEDEC. Единственная информация, которую нам нужно понять, это как получить доступ к этим данным. Нам нужно только знать, что мы должны использовать General Command, а именно GEN_CMD или CMD56, как входную дверь для получения этих данных из кремния. Раздел «Специфичные для программ команды» в спецификации eMMC содержит более подробную информацию.
Могут быть получены следующие данные:
- Счетчики ошибочных блоков и информация : заводские счетчики ошибочных блоков, количество ошибочных блоков во время выполнения и количество оставшихся свободных блоков. Это также предоставляет информацию для каждого блока о неудачных адресах страниц и о том, происходят ли сбои при стирании или в программе.
- Счетчики стирания блоков : минимальное, максимальное и среднее число стираний блоков среди всех блоков, а также счетчики стирания для каждого блока.
- Конфигурация блока : физический адрес каждого блока и является ли он SLC или MLC.
Чтобы получить доступ к каждому из них, CMD56 должен быть с конкретным параметром.
Примечание о поддержке eMMC в течение срока службы SoM
Производители SoM часто придерживаются политики долгосрочной доступности, так как они нацелены на клиентов, которые получают выгоду от этого, таких как промышленные и медицинские пользователи. Например, Toradex гарантирует более 10 лет доступности.
С другой стороны, вы можете предложить аппаратное обеспечение с (например) eMMC, которое не соответствует последним стандартам. Это еще один практический сценарий, когда вы хотите иметь решение для оценки износа, каким-то образом отделенное от конкретных технологий или стандартов.
Работоспособность флэш-памяти
Состояние флэш-памяти в любой данный момент времени можно понимать как процент ее емкости, которая уже изношена. Для простоты мы будем предполагать, что на ранних стадиях не изнашиваются никакие блоки, выравнивание износа является оптимальным и статическим, а усиление записи отсутствует, то есть идеальный сценарий.
Общая выносливость может быть получена в виде общего количества стираний или общего количества данных, которые могут быть записаны на устройство:
Общее количество циклов стирания, по определению, является более точным, поскольку износ блоков происходит после стирания блоков. Следовательно, первый способ имеет тенденцию быть предпочтительным последнему.
В приведенном выше примере, после того, как 1 536 000 стираний были равномерно переданы блокам или примерно 6 ТБ данных было записано на устройство, оно достигло 50% срока службы.
Мониторинг состояния Флэш-памяти в Linux
Читайте также: