1

Я сталкивался с файловыми системами флеш-памяти и не понял одного важного термина "усиление записи". Просматривая страницу Википедии, я не понял следующую информацию:

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

Мои вопросы:

  1. Почему данные после обновления записываются в новое место, а не в старое место (место, откуда данные были прочитаны в первую очередь)?

  2. Где происходит так называемый эффект умножения? Можно ли объяснить это более подробно?

1 ответ1

1

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

Это побочный эффект того, что блочное устройство называют block устройством: данные записываются порциями ("блоками"), обычно состоящими из 512 байт в 4 килобайта. Это приводит к ситуации, когда для изменения одного байта на блочном устройстве нам нужно сначала прочитать остальную часть блока (этот шаг обычно не активен, так как буферы ОС обычно имеют размер как минимум блока), затем измените один байт в памяти, затем запишите полный блок на устройство: чтобы изменить один байт, нам нужно было записать полный блок, часто тысячи байтов.

Этот давно известный механизм имеет особое значение для твердотельных накопителей, так как они

  • обычно имеют большой (ish) размер блока
  • может выдержать только ограниченное количество записей, меньше, чем вращающийся диск на порядки.

Если шаблон использования для SSD с размером блока 4 КБ будет состоять в изменении 1 байта на блок, то общее число записанных байтов будет в 4096 раз больше количества байтов полезной нагрузки, то есть произойдет write amplification 4096. Это будет означать, что твердотельный накопитель с типичной выносливостью 10 лет будет преодолен за этот предел выносливости менее чем за день.

Контрмеры против этого многократно:

  • Самое главное: этот шаблон использования очень редко
  • ОС с поддержкой SSD (и / или контроллеры) пытаются планировать записи таким образом, чтобы избежать усиления.
  • Многие современные твердотельные накопители используют кэш-память DRAM, чтобы накапливать небольшие записи в один и тот же блок и записывать их во флэш-память только при заполнении или как можно позже. Сверхпроводники обеспечивают мощность, чтобы закончить это, когда питание отключено.

Что касается первой части вопроса: хотя на вращающемся диске выполняются операции чтения и записи как на физическом, так и на логическом уровне, физические операции с флэш-памятью - это erase , program и read . Это означает, что логическая запись преобразуется в program в пустом (стертом) блоке. Современные контроллеры SSD ведут инвентаризацию уже стертых блоков и используют их для максимально быстрой логической записи. Операция стирания для теперь неиспользуемой ячейки может быть отложена на более позднюю, если текущие требования к пропускной способности или нагрузка контроллера высоки. Так что на самом деле использование другого блока - это не что иное, как механизм настройки производительности, хотя и очень важный.

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