Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NAND, битовые ошибки (вероятность появления)
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
savver
Всем привет. Столкнулся со следующей проблемой.

Тест nand: стираю блок, записываю несколько страниц нулями, читаю (запись/чтение без использования ECC). Имею ошибки, т.е. не все биты равны 0. Частота ошибок - порядка 8...20 на 64 страницы по 8192 байт. Не особо часто, но и не редко...

Насколько я понимаю, для NAND характерны битовые ошибки, они появляются в процессе юзания NAND, для их устранения применяется ECC.
-- Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть?

В datasheet-е не нашел информации какой должна быть вероятность (BER, Bit Error Rate), в статьях в интернете натыкался на цифры 10^(-8)... 10^(-11), т.е. значительно реже, чем я наблюдаю (2 * 10^(-6) и выше).

В тесте работаю с корректными блоками ( 1. не помеченные как битые с завода, 2. проверка после стирания показывает, что все байты равны 0xFF), проверял тест на нескольких блоках.
Повторные чтения уже записанных данных, показывают что ошибки остаются на своих местах, т.е. в тех же страницах, по тем же смещениям в пределах страницы, ошибка в том же бите. В разных ошибочных байтах ошибки могут быть в разных битах.
Если еще раз стереть блок и заново обнулить страницы, то часть ошибок остается (те же страницы, те же смещения в пределах страницы...), часть пропадает/появляется в новых местах.
чтение ID, страницы параметров - верно читается.

память Micron mt29f512g08, MLC
billidean
ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.
Так что при применении ЕСС можно использовать страницу с одним постоянно испорченным битом, а при появлении второго испорченного бита блокировать(помечать) страницу.
Но, если у Вас иногда ошибочные биты появляются и пропадают в разных местах, то можно случайно забраковать и небитую страницу, а затем следующую ... и так у Вас не останется страниц вообще.
При случайных появлениях и пропаданиях неверных данных при чтении (не совпадающих с записанными), дело может быть в НЕстабильности работы интерфейса с флэшкой, какой-нибудь дребезг на линии данных или тактовой, и т.п.
Bad0512
В первую очередь я бы проверил времянки в циклах доступа к памяти, их соответствие требованиям из даташита.
SM
Цитата(billidean @ Aug 28 2014, 07:36) *
ЕСС - конечно же поможет, но только с одним-двумя ошибочными битами в массиве битов. Наверное есть алгоритмы и для большего количества ошибок, но я их не изучал.


Это не так. Если взять MTD в линуксе (конкретно для TI AM3517) - то там используются коды БЧХ, корректирующие 4 или 8 бит в 512-байтном блоке (а это 16 или 32 бита в 2048-байтном). Но я за все время работы с ним не видел в логе ни разу, чтобы произошла коррекция ошибки!

для ТС:
Так что, ищите баги где-то в другом месте, во времянках, в питании, и т.п.
MSL
Цитата(savver @ Aug 28 2014, 01:38) *
Тест nand: стираю блок, записываю несколько страниц нулями, читаю (запись/чтение без использования ECC). Имею ошибки, т.е. не все биты равны 0. Частота ошибок - порядка 8...20 на 64 страницы по 8192 байт. Не особо часто, но и не редко... Насколько я понимаю, для NAND характерны битовые ошибки, они появляются в процессе юзания NAND, для их устранения применяется ECC. Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть? В datasheet-е не нашел информации какой должна быть вероятность (BER, Bit Error Rate), в статьях в интернете натыкался на цифры 10^(-8)... 10^(-11), т.е. значительно реже, чем я наблюдаю (2 * 10^(-6) и выше).


Не то чтобы "должно быть"... Все зависит от флэшки и технологии. В одной может быть от пара ощибок (или вообще не быть) на всю флэш, в другой их могут быть сотни. Много ошибок в основном в дешевых с 8кб страницами. Из даташита вы ничего не узнаете про "реальное примерное" количество ошибок. Использовать и проверять ECC придется в любом случае. Вопрос в другом - нужны ли вам такие флэшки с кучами ошибок и так ли важна такая экономия? Будет ли ваш контроллер корректировать ECC ошибки автоматически или переложите это на софт? В общем, это ваш выбор. Да и вообще, на данный момент, проще возложить все это на eMMC и не использовать нанд в чистом виде.

з.ы. Как вам советовали - проверяйте все времянки и сигналы для уверенности.
AlexandrY
Цитата(savver @ Aug 28 2014, 00:38) *
-- Меня смущает достаточно большая частота их проявления в новой микросхеме. Так и должно быть?

память Micron mt29f512g08, MLC


Это не большая частота.
Гораздо опасней если в NAND в которой должны быть ошибки вы их не видите. Тогда вопросы к вашему софту.

NAND-ы от Micron использую периодически.

И заметил одну странную вещь.
Когда закупил партию 100 шт. NAND для индустриального диапазона MT29F2G08ABDHC-ET:D TR (от -40), то в ней была плотность ошибок примерно как у вас. В среднем около 128 кБ памяти было неработоспособно.
Когда же закупил 100 шт. с коммерческим диапазоном MT29F2G08ABAEAH4:E-ND они все были без ошибок.

SM
Цитата(AlexandrY @ Aug 28 2014, 10:31) *
то в ней была плотность ошибок примерно как у вас. В среднем около 128 кБ памяти было неработоспособно.

Я, вообще, тоже нарывался на память с большим кол-вом ошибок, но дело в том, что там были помечены заводом куча блоков! И не 128 кБ (это всего-то один блок), а десятки блоков, причем не один десяток. При этом в рабочих блоках фактов срабатывания ECC-коррекции так же не было замечено. А вот прямо сейчас - MT29F4G16ABBEAH4-IT:E - из 250 микросхем всего ОДИН блок помечен в одной из них.

PS
А что за -ET? Индустриальные, они -IT

PPS
Кстати, у меня тоже в AHC-корпусе была партия с кучей плохих блоков. Этот корпус мне на плату еле-еле влез (пришлось купить, так как AH4 не было в разумный срок) sm.gif Разводил то под AH4 sm.gif , поэтому больше опытов с AHC не ставил. Подозреваю, что там кристалл по более старой технологии сделан, иначе бы зачем ему такой слоновый корпус.
savver
Спасибо за ответы!
Есть пища для размышлений...

Как будут новые результаты / прояснится ситуация отпишусь.
Alex11
Для MLC частота появления ошибок довольно высока. В Вашем случае посмотрите еще у Микрона файл DSV на конкретную микросхему, там отклонения от DS в худшую сторону для -ET. Возможно, что это отклонения по времянкам. Обычно, когда возникают ошибки, они повторяются на тех же местах после стирания.
savver
Ошибки во времянках "чтения" исключаю.
Read Parameter Page, Read Uniq ID, чтение более 5000 раз подряд не выдало ни одной ошибки (т.е. всегда считывается одно и то же).
-- Интересно, если например в Features писать-читать кучу раз для проверки правильности обращения к nand при записи, наверное ж там ничего не испортится/не затрется? (писать естественно адекватные значения, чтоб не сбоить работу nand).

Пробовал запись-чтение нулей в timing_mode 0...5 (выставление в features в nand), результаты примерно одинаковые.

Доп.задержки в софте при выполнении команд, использование read status enhanced вместо read statusnдля отдельного LUN-а чтоб всякие конфликты исключить, успехов не дало. "Мучить" софтовую библиотеку пока перестаю.
на выходных попробую ее на МК запустить, нашел платку с nand, hardware_level правда другой будет, но хотя бы убежусь что с командами нормально работаю.

Собираю статистику по каждому типу ошибок (сколько остаются на своих местах при повторных стираниях-записях, сколько остаются при повторных чтениях...).
Ну и буду внимательнее времянки смотреть...

Torpeda
Цитата(savver @ Aug 29 2014, 13:27) *
Ошибки во времянках "чтения" исключаю.
Read Parameter Page, Read Uniq ID, чтение более 5000 раз подряд не выдало ни одной ошибки (т.е. всегда считывается одно и то же).

Чем вы читаете из памяти?
В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.

" чтение более 5000 раз подряд не выдало ни одной ошибки" - не есть критерием правильности работы!
savver
Цитата(Torpeda @ Aug 29 2014, 18:25) *
В любом случае проверте времянки.
Потом проверьте напряжение питания и уровни сигналов.
Может и помехи в линиях надо проверить.


угу, придется) спасибо.
Да, напряжения питания и уровни сигналов проверяли, в норме, 1.8 В как и должно быть, фронты не завалены.
Остаются времянки и помехи...

доступ к nand - через самописный контроллер nand-памяти (писал другой разработчик, я реализую софт под microblaze). Поначалу прочли ID, параметры, записали-прошли маленький буфер, все совпало и успокоились. Времянки на 1й взгляд тоже нормальные были (но теперь понимаю надо детальнее посмотреть). Потом начал писать по несколько страниц, и как раз вылезли битовые ошибки...
savver
давно не писал, переключался на другие задачи.

Проверил софтовую часть общения с nand (на уровне команд nand) на другой плате. там стоял SLC чип от micron MT29F2G08(ABD) + ARM. Те же тесты, 8 битых "заводских" блоков, битовых ошибок нет вообще(!) (запись-чтение нулей, отладочных счетчиков...) без всяких ECC. Т.о. софтовая ошибка отпадает...
billidean
ну...тогда статистика по указанным нанд'ам Вам в помощь.
savver
Возвращаюсь к данной теме... вспоминаем понемного...

Тест:
стираем, пишем нули. Несколько раз считываем уже записанные данные.
( стираем nand, проверяем что после стирания == 0xFFFF, всегда норм, нет ошибок )

Типы ошибок:
-- есть ошибки которые при каждом чтении остаются на своих местах, (их большинство)
-- есть ошибки, которые при повторных чтениях - то есть, то нет (их меньше)
если перезалить плису и прочесть ранее записанные нули, ошибки остаются на тех же местах,

- повторное стирание и запись этого же блока
-- есть ошибки которые остаются на тех же местах, что и при прошлой записи
-- есть ошибки, которые возникают на новых местах

скриншот прилагается.

To be continue...
SFx
длины дорожек выравнены на плате?
блоки задержке на пинах в заданы?
фаза тактовый сигнала правильная?
частоту транзакций и общую скорость работы уменьшали?
Ruslan1
Извините, а чем закончилось-то, Вы ECC, рекомендованную изготовителем, применяете? Зачем столько сил тратить на бесполезные исследования, если можно просто применить механизм?
Ваши исследования мало чем Вам помогут. Может, одна микросхема хранилась в худших условиях или термопрофиль при пайке был другой, вот и вылезли ошибки сразу. А у другой вылезут через неделю после того как Вы тестирование закончите.

У меня был проект кажется на большой NAND, при разработке не было проблем, зато после термопрогонов появились ошибки, пришлось срочно ECC по полной делать. И никаких проблем.
Mikhalych
Согласно документации на Micron mt29f512g08, MLC Вам необходимо иметь код коррекции ошибок с _минимальной_ исправляющей способностью 24 бита на каждые 1080 байт данных.

Нажмите для просмотра прикрепленного файла
des00
Цитата(Mikhalych @ Jan 23 2015, 13:44) *
необходимо иметь код коррекции ошибок с _минимальной_ исправляющей способностью 24 бита на каждые 1080 байт данных.

Вопрос с точки зрения увеличения образованности (с). А какое именно кодирование используют для MLC ? судя по размеру напрашивается укороченный БЧХ на 8191 бит. Но может быть используют что-то другое ?
Mikhalych
Для повышения образованности могу посоветовать 3 книги:

Error Correction Codes for Non-Volatile Memories ( http://link.springer.com/book/10.1007/978-1-4020-8391-4 )
Inside NAND Flash Memories ( http://link.springer.com/book/10.1007/978-90-481-9431-5 )
Inside Solid State Drives ( http://link.springer.com/book/10.1007/978-94-007-5146-0 )

Книги доступны на SpringerLink (если зайти через sci-hub)
des00
Цитата(Mikhalych @ Jan 26 2015, 14:22) *
Для повышения образованности могу посоветовать 3 книги:

Спасибо
savver
Цитата(Ruslan1 @ Jan 18 2015, 03:03) *
Извините, а чем закончилось-то, Вы ECC, рекомендованную изготовителем, применяете? Зачем столько сил тратить на бесполезные исследования, если можно просто применить механизм?
Ваши исследования мало чем Вам помогут. Может, одна микросхема хранилась в худших условиях или термопрофиль при пайке был другой, вот и вылезли ошибки сразу. А у другой вылезут через неделю после того как Вы тестирование закончите.

У меня был проект кажется на большой NAND, при разработке не было проблем, зато после термопрогонов появились ошибки, пришлось срочно ECC по полной делать. И никаких проблем.


Стояла "задача" убедится, что это не мы где-то накосячили... перепроверяли возможные варианты...
Закончилось, точнее в процессе заканчивания - да, делаем ECC (microblaze, в дальнейшем fpga), она с лихвой исправляет имеющиеся ошибки.
Спасибо за совет по повод термопрогона,(надо будет отнести в климат.камеру, интересно будет потом посмотреть больше ошибок станет или нет). Да, у нас бывают косяки с пайкой, возможно действительно перегрели микросхемы...

Цитата(Mikhalych @ Jan 26 2015, 11:22) *
Для повышения образованности могу посоветовать 3 книги:

Error Correction Codes for Non-Volatile Memories ( http://link.springer.com/book/10.1007/978-1-4020-8391-4 )
Inside NAND Flash Memories ( http://link.springer.com/book/10.1007/978-90-481-9431-5 )
Inside Solid State Drives ( http://link.springer.com/book/10.1007/978-94-007-5146-0 )

Книги доступны на SpringerLink (если зайти через sci-hub)


Спасибо! думаю пригодятся.
des00
Цитата(savver @ Feb 6 2015, 16:05) *
делаем ECC (microblaze, в дальнейшем fpga), она с лихвой исправляет имеющиеся ошибки.

если будете делать БЧХ, сорцы в соседней теме wink.gif
axalay
Цитата(des00 @ Feb 6 2015, 16:13) *
если будете делать БЧХ, сорцы в соседней теме wink.gif

Доброго дня! А можно ссылочку. Я 2 варианта нашел. Один на системверилоге, другой на верилоге - https://github.com/russdill/bch_verilog . Интересно рассмотреть и другой ресурс. Хотелось бы исправлять 12 битовых ошибок в блоке размером 256 байт.
des00
Цитата(axalay @ Feb 6 2015, 23:34) *
Один на системверилоге

не из этой темы вы находили ? http://electronix.ru/forum/index.php?showt...p;#entry1313112 для вашего случая надо только сконфигурировать правильно параметры декодера.
axalay
Цитата(des00 @ Feb 6 2015, 20:03) *
не из этой темы вы находили ? http://electronix.ru/forum/index.php?showt...p;#entry1313112 для вашего случая надо только сконфигурировать правильно параметры декодера.

он к сожалению на систем верилоге.... а я в айсе работаю. НА установку симплифая пока не решился
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.