4

Как я понимаю, выравнивание износа на USB-флешках / флеш-дисках позволит:

  • помогите сделать последнее дольше. (уменьшите «износ», что физическая ячейка памяти может быть записана только в XX раз)
  • действительно может работать, только если есть неиспользуемые ячейки флэш-памяти для переключения. (Чем больше заполнена флешка, тем меньше альтернативных ячеек для выравнивания износа)

В худшем случае в какой-то момент времени я израсходовал все и вся память USB-флешки. Тогда менее вероятно, что некоторое выравнивание износа может произойти все еще. Можно /(как бы) вернуть это состояние?

Я имею ввиду с точки зрения флешки, что пусто

0000 0000 0000 0000 (заполнение нулями) мне кажется, что данные так же достоверны, как
1111 1111 1111 1111 или 1010 1110 0011 1111 или любой другой битовый шаблон.

Прошивка Usb-флешки должна каким-то образом знать, что считать "неиспользованной" Flash-ячейкой, чтобы она могла снова использовать ее для выравнивания износа. Но после того, как я в конце концов полностью заполнил всю флешку, у меня возникают проблемы с тем, как встроенное ПО сможет определить, какие данные можно "перезаписать", поскольку они не содержат данных?

Поэтому мой вопрос: может ли заполнение нулями быть способом сброса выравнивания износа USB-флешки?

Несмотря на то, что я боюсь, что, возможно, это часто будет зависеть от реализации ("прошивка" и "производитель"), я все же думаю, что в этом подходе может быть логика, заключающаяся в том, что "заполнение нулями" может приводить к перезагрузке usb-флешки в определенных случаях - лучше спроектированные USB-флешки.

Логика, которую я представляю, состояла бы в том, что выравнивание износа микропрограммы распознало бы, что весь блок (то есть 512 байтов или 2 килобайта) будет установлен только на нули.

Блок до: 1101 1011 1000 0010 ... 0001 0011
Блок после: 0000 0000 0000 0000 ... 0000 0000

Когда я читаю из этого блока, я хотел бы, конечно, получить эту информацию:
Блок после: 0000 0000 0000 0000 ... 0000 0000 Но эту информацию можно сгенерировать на лету, сохранив, что Блок XYZ = пуст в определенной ячейке флэш-памяти, доступной только для прошивки.

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

Я читал, что должны быть некоторые USB-флешки, которые имеют такую прошивку и, следовательно, могут быть сброшены? Может ли это быть правдой? Я хотел бы знать по этому вопросу, что "тенденция" может быть подкреплена информацией от известного производителя. Возможно, существует даже список, в котором перечислены USB-флешки, которые можно сбросить таким образом. Чтобы ответ мог содержать ссылку на такой список.

Также я предполагаю, что не существует "новой прошивки", разработанной каждой USB-флешкой, и, возможно, есть выдающаяся (часто используемая) USB-прошивка, которая делает такое выравнивание износа. Так что тогда можно ответить на вопрос относительно этой прошивки.

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

немного предыстории на мой вопрос

USB-флешки / флешки - это приятные вещи. Но проблема в том, что способ хранения данных изнашивается, что означает, что после только XX записей в ячейку данных!БИНГО! твоя палка мертва!

Одним из способов решения этой проблемы (когда ячейки флэш-памяти могут быть записаны довольно мало раз) является "выравнивание износа". Который будет заботиться о том, что - если возможно - данные не всегда записываются в одни и те же ячейки флэш-памяти.

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

Чтобы помочь понять некоторые базовые принципы выравнивания износа, я включил эту концепцию ниже, которая показывает, как информация "hello", "salut", "hola" и "hi" впоследствии сохраняется в логической ячейке данных с именем data, которая фактически записывается к другой физической флэш-памяти каждый раз (отсюда и небольшая "концепция" выравнивания износа).


state 1:
[CELL1: e-m-p-t-y] [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y]


=> write data "hello"


state 2:
[CELL1: hello]     [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y]
 data=CELL1

=> update data to "salut"


state 3:
[CELL1: hello]     [CELL2: salut]    [CELL3: e-m-p-t-y]
 data=CELL2

=> update data to "hola"

state 4:
[CELL1: hello]     [CELL2: salut]    [CELL3: hola]
 data=CELL3

=> update data to "hi"

state5
[CELL1: hi]     [CELL2: salut]    [CELL3: hola]
 data=CELL1 


Обратите внимание, что после записи 4-х раз данные каждой ячейки в среднем были записаны только 1,33 раза. Также обратите внимание, что информация о том, какая ячейка содержит «логические данные », также должна храниться и обновляться (что требует, чтобы микропрограмма выполняла этот учет - используя для этого также некоторую зарезервированную память)

3 ответа3

3

Некоторые флэш-накопители могут проверять, все ли записанные данные равны нулю, и просто удалять эту область вместо программирования флэш-памяти. Хотя я не знаю, насколько это распространено.

В настоящее время я работаю на контроллере MMC (не могу сказать, чей, это секрет :-)), и его прошивка проверяет содержимое данных не при записи, а позже во время стирания и GC. Он отображает все найденные нулевые регионы.

Что касается того, как

"выяснить", если это выравнивание износа включено или нет.

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

1

Но после того, как я в конце концов полностью заполнил всю флешку, у меня возникают проблемы с тем, как встроенное ПО сможет определить, какие данные можно "перезаписать", поскольку они не содержат данных?

TRIM предназначен для решения этой проблемы, предоставляя механизм, позволяющий ОС сообщать накопителю, что он не ожидает, что сектор будет хранить данные. TRIM - это спецификация SAS/SATA, а не спецификация USB, поэтому, к сожалению, она не работает для USB-накопителей.

Без TRIM для накопителя небезопасно предполагать, что данные не нужны.

Может ли заполнение нулями быть способом сброса выравнивания износа USB-флешки?

Конечно, если прошивка работает таким образом. Невозможно узнать наверняка без исходного кода прошивки или документации разработчика. Флеш-чипы работают в страницах и блоках. Чип может стирать только целые блоки одновременно (например, 128 КБ), которые состоят из множества страниц (например, 2 КБ), которые обычно больше, чем традиционные сектора жестких дисков, которые эмулируют USB-накопители (512 байт).

Возможно, существует даже список, в котором перечислены USB-флешки, которые можно сбросить таким образом. Чтобы ответ мог содержать ссылку на такой список.

Весьма вероятно, что в наши дни USB-накопители очень дешевы, поэтому производителям не стоит предоставлять эту информацию.

Также я предполагаю, что не существует "новой прошивки", разработанной каждой USB-флешкой, и, возможно, есть выдающаяся (часто используемая) USB-прошивка, которая делает такое выравнивание износа. Так что тогда можно ответить на вопрос относительно этой прошивки.

Каждый USB-накопитель имеет микроконтроллер (микроконтроллер = CPU + ROM или прошивка). Вы можете открыть флэш-накопитель и выполнить поиск по номерам на чипе, чтобы попытаться выяснить тип. Вероятно, их количество ограничено по сравнению с общим количеством выпущенных флешек, но меня не удивит, что будет очень много вариаций нескольких типов ядер. Конечно, нет ни одной стандартной прошивки или чего-то подобного.

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

Но проблема в том, что способ хранения данных изнашивается, что означает, что после только XX записей в ячейку данных!БИНГО! твоя палка мертва!

Нет, только эта клетка. Твердотельные накопители (и SD-карты, и флэш-накопители) имеют избыточную пропускную способность, что означает, что они имеют больше флэш-памяти, чем указано на упаковке. Эта дополнительная вспышка используется в качестве "запасной" области для покрытия блоков, которые изнашиваются. Он также охватывает дефекты производителя - ни одна вспышка не имеет 100% гарантированных рабочих блоков, кроме первого блока.

0

USB-накопитель не является ни механическим (как ранние бусы на сетке), ни магнитным (как на ленте), ни оптическим (как компакт-диски), но электрическим. Рассматривайте каждое место как небольшой элемент батареи, который со временем (долгое время) разряжается. Все письма вызывают деградацию. Нулевое заполнение только усугубит ситуацию. Сам чип либо имеет контроллер, который использует выравнивание износа, либо нет - пользователь не может это изменить. Проще говоря, выравнивание износа просто гарантирует, что различные части USB получат справедливую долю бремени требований к хранилищу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .