Обзор технологий улучшения качества дампов

Многим пользователям уже известны различные методики улучшения качества считанных из микросхем дампов:

  1. Изменение напряжения питания микросхемы.
  2. Изменение температуры микросхемы — нагрев и охлаждение.
  3. Использование технологии Read Retry.

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

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

Для этого рассмотрим внутреннее устройство на примере блок схемы классической MLC(TLC) микросхемы:

рис 1

Как видим из блок схемы, устройство современной микросхемы модульное и различные модули имеют одностороннюю и некоторые даже двухстороннюю связь с другими модулями. Из всего этого набора модулей микросхемы нас в первую очередь интересуют следующие:

  • HV Generator — это одна из самых важных подсистем любой MLC/TLC микросхемы памяти имеющая 2-3 канала в зависимости от функционала микросхемы. Данная подсистема необходима для обеспечения не только стабильного «питания» массива ячеек, но и для корректной работы декодера столбцов и Sense amplifier. Данная система является от части статичной и это в первую очередь означает, что напряжение для «питания» массива ячеек всегда постоянно, в то же время второй и третий канал (если реализован) управляемые посредством Control circuit не могут менять напряжения в произвольных диапазонах, значения этих каналов меняются в различных ситуациях согласно таблице жёстко «зашитой» в Control circuit.
  • Sense amp — не менее важная управляемая подсистема обеспечивающая усиление считанной из массива ячеек информации и в тоже время данная подсистема отвечает за корректное определение уровня заряда обеспечивая определения логического нуля и логической единицы с возможностью коррекции так называемого уровня детектирования в случае если HV генератор имеет отдельный канал для формирования такого напряжения, относительно которого компараторы переводят уровень заряда в результирующие логические нули и единицы. Как видим данная подсистема так же как и сам массив ячеек (Memory Cell Array) тесно связана с модулем HV генератора и на этом модуле мы остановимся когда будем рассматривать работу технологии Read Retry.
  • Row Address decoder — эта последняя подсистема из тех, что нас интересует при анализе различных технологий улучшения результата чтения микросхемы. Причина такого интереса так же основана в первую очередь на тесной взаимосвязи с HV генератором. Причина по которой у современной микросхемы есть эта взаимосвязь кроется в организации массива ячеек микросхемы. Не для кого не секрет, что MLC память хранит в одной ячейке информацию для двух бит, соответственно каждая ячейка может иметь 4 состояния, по два на каждый бит, в то же время одна ячейка TLC микросхемы хранит информацию о трёх битах данных, следовательно каждая ячейка TLC микросхемы может принимать 8 различных уровней. Казалось бы всё просто, но на практике нет. У памяти типа MLC, так же как и у TLC разные биты относящиеся к одной физической ячейки относятся не к одной странице, смысл организации в том, что каждый бит одной ячейки относится с собственной странице, которые для памяти типа MLC, а точнее 4LC (LC=Level Cell) делятся соответствующим образом на группы A и B, а для памяти типа TLC (8LC) делятся на три группы A, B, C. И такие группы страниц принято называть парными. Соответственно исходя из этого у микросхемы возможность выборки битов относящихся к конкретной странице в группе парных из общего массива ячеек производится посредством установки напряжений смещения относительно базового значения HV генератора генерируемого на управляемом канале.

Теперь перейдём к обзору различных методик улучшения качества считанных из микросхемы дампов.

Начнём с методики изменения напряжения питания микросхемы. Данная методика появилась самой первой для решения задач с некоторыми проблемными микросхемами и говоря откровенно в некоторой степени себя оправдывала, позволяя восстанавливать информацию с флешек у которых использовались потенциально проблематичные микросхемы, к которым относились ранние честные TLC микросхемы и не вполне честные MLC микросхемы, получаемые видимо как отбраковка от производства TLC памяти у некоторых производителей.

Суть данного метода не нуждается в особых комментариях и сводится лишь к тому, что на ядро микросхемы памяти необходимо подавать напряжение ниже или выше штатного. Напомню, что штатным напряжением для большинства микросхем является диапазон 2.7-3.6 вольта, но в то же время многие микросхемы допускают подъём напряжения до 4.6 вольта, что является теоритическим максимумом, но на практике больше 4 вольт повышать напряжение не стоит, что бы не подвергать выходу из строя массив ячеек и внутреннюю логику микросхем. Что нам даёт такое изменение напряжения. Для этого обратимся к нашей блок схеме и вспомним, что основой работы самых важных модулей является HV генератор, который как уже упоминалось работает по некому табличному методу, следовательно при пониженном и повышенном напряжении питания относительно штатных значений стабильность его работы нарушается, иными словами если мы к примеру опустили значение напряжения питания ядра до двух вольт, то все расчётные напряжения HV генератора так же уменьшатся в следствие того, что стабилизация HV генератора не в состоянии скорректировать такое падение напряжение. В некоторых случаях при большом износе ячеек, когда пороги детектирования Sence amplifier находятся далеко за пределами актуальных для текущего состояния микросхемы, такой подход может помочь корректно вычитать проблемные участки микросхемы, что положительно сказывается на результате восстановления данных. Аналогичная ситуация происходит и при повышении напряжения питания с той лишь разницей, что выходное напряжение HV генератора будет выше расчётного. При применении данного метода так же стоит обратить Ваше внимание на то, что методика помогает далеко не всем микросхемам, так как у многих из них, особенно имеющих 2 раздельных канала питания (VCC и VCCQ), понижение напряжения ядра ниже документированного нижнего предела приводит к блокировке HV генератора и соответственно чтение данных становится невозможным.

Кроме того данная методика несёт в себе и большие опасности при восстановлении информации. Для этого ещё раз обратимся к нашей блок схеме и посмотрим с какими подсистемами он связан. Всё было бы хорошо, если бы генератор был связан только с Sence amplifier как это сделано у SLC памяти, но он ещё связан и с декодером строк, то есть по уровням напряжений одного из каналов HV генератора определяется какую страницу из группы парных мы читаем и при нестабильной работе HV генератора работа декодера строк не гарантируется. Иными словами, если мы к примеру установили напряжение 2.5 вольта или ниже, то уже нет никаких гарантий, что декодер строк сделает «правильный выбор» и прочитает то, что мы попросили. Программными средствами такую проверку так же сделать невозможно, потому что мы заранее не знаем что должно быть в прочитанной странице и соответственно наличие зелёных строк при перечитывании микросхемы не означает, что данные в казалось бы корректно перечитанных страницах будут достоверные, хоть при этом и валидные с точки зрения ECC. По этой причине, уважаемые пользователи пользуйтесь данной методикой очень осторожно ни в коем случае не отключая оценку степени различия по которой у некоторых контроллеров можно понять читается то, что нужно или нет. Так же стоит помнить, что применение данной методики крайне не желательно при работе технологии Read Retry !!!

Следующая технология улучшения качества результата чтения — нагрев и охлаждение микросхемы. Принцип работы данной технологии в большей степени основан на изменении ёмкости и сопротивления переходов полевых транзисторов всех модулей микросхемы связанных с HV генератором и выделить какую то конкретную подсистему достаточно проблематично, так как при этом происходит очень много различных физически изменений. Но тем не менее данная методика имеет право на существование, но у неё есть несколько очень серьёзных недостатков:

  1. Для охлаждения микросхемы требуется холодильник или морозильная камера позволяющие охлаждать устройство считывания с установленной микросхемой в диапазоне температур от -20 до +5, при этом бывают случаи, когда нижняя температура требуется гораздо ниже и приходится использовать охлаждение жидким азотом. При этом стоит учесть риск выхода из строя устройства считывания, так как оно не рассчитано на работу при таких температурах.
  2. Для нагрева микросхемы так же необходимо пользоваться сторонними приборами, такими как термовоздушная паяльная станция или обычный паяльник приложенный к микросхеме напрямую или через маленький радиатор. Обращу Выше внимание на то, что температуры требующиеся для некоторых микросхем находятся в пределах 100-350 градусов, в некоторых редких случаях могут доходить даже до 400-420 градусов, что накладывает серьёзные ограничения на применение данной технологии по причине порчи устройства считывания и большой вероятности выхода из строя микросхемы, так как нормальная (штатная) температура в процессе работы микросхемы не должна превышать +70 без риска выхода из строя, а к примеру температуры +260 допускаются не более чем на 10 секунд и то в процессе пайки.
  3. Пожалуй самый важный недостаток метода заключается в том, что он работает на очень ограниченном наборе микросхем, то есть подавляющее большинство современной памяти не улучшает чтение при охлаждении или нагреве, что так же справедливо и для микросхем с одним ID из разных партий, в результате чего в каждом конкретном случае приходится проверять работоспособность данной методики при этом очень сильно рискуя повредить как данным хранящимся в микросхеме, так и самой микросхеме. Особую проблему создаёт необходимость нагрева монолитов для решения проблемы качества дампов, что в подавляющем числе случаев требует наличия специализированного игольчатого адаптера, так как пайка тонкими проводами не выдерживает, припой плавится и контакт в зоне пайки исчезает.
  4. При изменении температуры отличной от штатной крайне не желательно применение технологии Read Retry, так как уже были достоверно зафиксированы случаи выхода из строя системы управления HV генератора либо самого HV генератора микросхемы со всеми вытекающими из этого последствиями.

Последняя технология из нашего списка Read Retry. Скажу честно, очень долгое время в существование данной технологии практически никто не верил и можно даже сказать, что людей продвигавших идею о существовании подобной технологии иногда мягко говоря считали неразумными и все проблемы чтения списывали именно на неисправность памяти, на перегрев в процессе выпаивания, на плохо зачищенные контакты и т.д. и т.п. … Но вот однажды, если память не изменяет, во второй половине 2012 года нам всё же удалось получить информацию об этой технологии для нескольких типов микросхем, одной из которых были TLC и MLC микросхемы Micron (Intel), и во вторую очередь это были микросхемы Hynix. Испытания естественно проводились на тех экземплярах, которым не помогали ранее описанные методики, то есть охлаждение/нагрев и уменьшение/увеличение напряжение ядра. После первых же испытаний стало ясно, что технология действительно существует у всех без исключения TLC микросхем и у всех более менее современных MLC микросхем. С MLC правда оказалось вне намного интереснее, то есть выяснилось, что данную технологию производители начали применять в основном с появлением норм 32 нанометра, у более старых MLC выпущенных по тех. процессу 43/45 нанометров использование Read Retry практически не встречалось. Причина по которой данная технология вообще появилась кроется именно в уменьшении технологических норм и как следствии увеличения плотности компоновки транзисторов в массиве ячеек и смысл проблем заключается в следующем — как надеюсь всем известно принцип работы памяти типа NAND основан в некотором смысле на хранении электрического заряда, следовательно там где есть заряд, есть и электрическое поле, при этом при плотной компоновке сделать расстояние транзисторами идентичным достаточно проблематично и в некоторых местах возникает «пересечение» полей, оказывающее взаимное влияние друг на друга, что обуславливает появление так называемых нестабильных бит, которые только усугубляют ситуацию вызванную неисправными транзисторами (постоянно неверные биты). Естественно производители конечных изделий уже достаточно давно научились обходить эту проблему из без технологии Read Retry применения методики Wear Leveling, одну из частей которой в нашем комплексе мы устраняем применением преобразования XOR для страницы. Как показала практика применение технологии Wear Leveling до поры до времени было очень даже оправдано, но это происходило до тех пор, пока с очередным изменением технологических норм не произошёл резкий скачок числа постоянно неверных и нестабильных бит, число которых в процессе эксплуатации неизменно растёт. Вот тогда то и появилась эта не побоюсь слова — уникальная технология , которая в переводе означает повторное чтение, но что бы не было заблуждение на этот счёт могу сказать, что это не простая попытка повторного, третьего или ещё какого то чтения одной и тоже страницы, это целая система команд микросхемы памяти, которая временно приводит к изменениям в некоторых подсистемах микросхемы, работа которых связана с работой HV генератора.

Как я уже писал ранее у современных HV генераторов есть три канала. Один канал обеспечивает питание массива ячеек и этот канал статичен, то есть его напряжение постоянно. Второй канал управляет режимом выбора страницы из группы парных страниц, а вот третий канал самый интересный, он так же как и второй канал управляется модулем Control Circuit и формирует напряжения, которые считаются нулевой точкой для компараторов определяющих и преобразующих напряжение выходящее с транзистора в логические нули и единицы, ведь логично предположить, что у изношенной ячейки в следствие изменения ёмкости или сопротивления или у транзистора находящегося под «влиянием» поля соседа элементарно может измениться уровень заряда плавающего затвора, в следствие чего может измениться и режим работы транзистора, то есть он может не открыться либо может открыться/закрыться не полностью, что повлечёт за собой ошибки в определении результата и именно по этой причине в современной памяти предусмотрена возможность установки нулевой точки детектирования уровня напряжения транзистора (как это работает можно почитать в документации на любой компаратор). К слову о ошибках детектирования напряжения ячеек. Многие пользователи уже сталкивались современной TLC памятью и так же сталкивались со страницами, которые не перечитываются ни при каких обстоятельствах, но при этом мало кто смотрел содержимое таких страниц… Они как правило преимущественно заполнены FF, а преимущественно потому, что честь байтов таких страниц заполнена значениями 7F, BF, DF, EF, F7, FB, FD, FE, то есть байтами отличающимися от FF на один бит и эти различия как раз и вызваны ошибками детектирования уровней напряжения транзисторов.

Как в этом случае работает технология Read Retry:

  1. Прочитали страницу и попытались скорректировать ошибки.
  2. На одном или более из регионов страницы защищённом ECC обнаружили слишком большое кол-во шибок, превышающих корректирующую способность применяемого в конкретном случае алгоритма коррекции.
  3. Микросхеме подаётся специальная команда, которая меняет напряжение на третьем канале HV генератора по специальному алгоритму.
  4. Делается чтение нескорректированных участков страницы и делается попытка коррекции.
  5. Если после перечитывания фрагмента коррекция происходит успешно, то переходим к следующей странице, если же нет, то продолжаем менять напряжение на третьем канале HV генератора и перечитывать/корректировать до тех пор, пока либо страница не скорректируется, либо не закончатся допустимые для данной микросхемы диапазоны изменения напряжения на третьем канале HV генератора.
  6. Если какой то диапазон страницы так и не был скорректирован, то с точки зрения логики контроллера такая страница должна быть исключена из трансляции, точнее должен быть исключён целый блок и его должны заменить блоком из резервной области, но это само собой только в случае, если такая микросхема работает в составе накопителя, в нашем комплексе естественно процедура замещения блока не происходит и мы в протоколе перечитывания получаем сообщение содержащее статусе коррекции один или более знаков » «.

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

  1. Данная технология не является универсальной для всех микросхем. Каждый производитель делает свою собственную реализацию даже в пределах разного поколения микросхем, что приводит к ситуации, когда на новое поколение микросхем, к примеру Toshiba приходится заниматься исследованиями и изысканиями практически с нуля. Почему исследованиями… Ответ прост. Производители микросхем данную технологию держат в секрете и дают её только тем клиентам, которые покупают продукцию (микросхемы) очень большими партиями, как правило это производители контроллеров и накопителей на базе памяти типа NAND, гораздо реже производители прочего оборудования.
  2. Данная технология, так же как и альтернативные методики не может решить проблемы чтения «убитой памяти», при этом при относительно живой памяти она зачастую является единственным вариантом для улучшения качества дампов, потому что как показала практика, изменение температуры и напряжения ядра микросхемы далеко не всегда оказывают какое либо значительное воздействие на качество чтения, если конечно не брать в расчёт микросхемы некоторых типов, которых не так уж и много.
  3. Данная технология не очень сильно совместима с альтернативными методиками улучшения качества чтения. Это обусловлено привязкой данной технологии к работе HV генератора, который находясь в нестабильном режиме работы не сможет достаточно точно изменять пороги детектирования напряжений транзисторов. Но тем не менее это совсем не означает, что нельзя при использовании Read Retry применять к примеру понижение или повышение напряжение питания микросхемы. Просто при применении альтернативных методик в качестве дополнительных мер необходимо учитывать риски выхода из строя микросхемы памяти и такие случаи уже встречались несколько раз. При этом в некоторых случаях комбинирование Read Retry и альтернативных методов позволяет добиться гораздо лучших результатов, чем просто при использовании Read Retry, так что в принципе комбинирование методик имеет право на жизнь и может оказаться очень полезным.

 

Крутевич Алексей
PC3000 Flash technical support

 

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 голосов, средний: 5,00)
Loading...Loading...

Об авторе Крутевич Алексей

PC3000 Flash Technical Support and Development
Запись опубликована в рубрике PC-3000 Flash с метками , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>