Страница 1 из 1

Выравнивание износа NAND памяти, где храниться указатель?

Добавлено: Пт фев 26, 2021 20:44:05
just_lad
Доброго времени суток!
Вопрос следующий: где контроллер памяти хранит указатель на блок, в который ему следует записывать следующую пачку информации?

В процессе изнурительного гугления и чтения статей (по алгоритмам организации выравнивания износа (wear leveling)) мне удалось узнать следующее, а именно что контроллер памяти битые блоки (bad blocks) таки использует, но только в своих целях (в каких именно мне понять не получилось). Также контроллер хранит не просто указатель (wear leveling pointer?) в какой блок ему писать данные дальше, а имеет целую таблицу (wear leveling table) в которой записаны какие блоки битые, и сколько циклов записи/стирания проведено для каждого блока. Исходя из данных таблицы он и вычисляет куда писать данные (правильно ли я понимаю?). Однако абсолютно неясно где контроллер памяти хранит свои данные, будь то указатель или целая таблица. При хранении в ОЗУ после обесточивания системы контроллер просто забудет всё. Если хранить в своей отдельной памяти, то возникает необходимость выравнивать износ в ней и рекурсия. Если хранить внутри используемой памяти, то как быть при загрузке носителя данными под завязку? Если в памяти имеется некоторая область доступная лишь контроллеру (а она имеется, насколько я смог выяснить), то каким образом выравнивается износ там?

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

Re: Выравнивание износа NAND памяти, где храниться указатель

Добавлено: Сб фев 27, 2021 13:41:20
just_lad
СпойлерНашёл следующую информацию: "Once created, the bad block table is saved to a good block so that on rebooting the NAND Flash memory the bad block table is loaded into RAM. The blocks contained in the bad block table are not addressable. So, if the flash translation layer (FTL) addresses one of the bad blocks, the bad block management software redirects it to a good block."
То есть указатель (таблица указателей) на битый блок(-и) хранится в отдельном блоке памяти, но во время работы системы все операции над указателем (или таблицей) производятся в ОЗУ. Это частично отвечает на мой вопрос, однако в документе (Micron TN-29-59) не раскрывается как именно происходит обновление данных в блоке с указателем, а именно неясно когда копировать обновленные данные из ОЗУ в блок с указателем.

В "PXA3xx Processors and Tavor Processor Boot ROM Reference Manual", раздел 3.3 я нашёл информацию о том, что таблица битых блоков хранится в конце блока 0, какова структура этой таблицы и что существуют резервные блоки для замещения битых и для создания резервной таблицы битых блоков. Тем не менее вопрос о том, как происходит обновление, а именно в какие моменты времени таблица в ПЗУ обновляется данными из таблицы в ОЗУ (если это вообще правильно мной понято) остается открытым.
UPD1 Видимо мозги поплыли и я принял таблицу битых блоков за таблицу с счётчиком записей/стирания. Вопрос остается открытым.

Re: Выравнивание износа NAND памяти, где храниться указатель

Добавлено: Сб фев 27, 2021 21:52:57
Муркиз
С какой ноги производитель встанет, там и будет храниться

Re: Выравнивание износа NAND памяти, где храниться указатель

Добавлено: Вс фев 28, 2021 09:29:35
BOB51
Скорее всего ответ может дать документация на конкретный контроллер, применяемый для накопителя...
Только вот где ее накопать?
:dont_know:

Re: Выравнивание износа NAND памяти, где храниться указатель

Добавлено: Пн мар 01, 2021 09:03:55
Ivanoff-iv
обычно основная память идет TLC или MLC и есть небольшая область SLC работа с ней происходит быстрее а надёжность её много выше (достигается за счёт снижения плотности информации) разумно и служебные таблицы держать в этой же области.

Re: Выравнивание износа NAND памяти, где храниться указатель

Добавлено: Пн мар 01, 2021 21:22:53
just_lad
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3989504#p3989504"]есть небольшая область SLC[/uquote]
Ну в простейшем случае все ячейки блока однобитные, то есть SLC, что тогда? Про register page мне известно, но достоверной информации о её предназначении не нашёл.
BOB51 писал(а):документация на конкретный контроллер
Всё что мне удавалось найти это datasheet без подробного описания логики работы. Максимальная детализация это разрядность ECC.