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