Если я выполняю запись на SSD, который изменяет только 0 на 1, могу ли я полагаться на то, что диск не сотрет весь блок перед записью?

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

Я хотел бы, чтобы вы предположили, что я пишу прямо на диск и что нет файловой системы, которая могла бы все испортить.


person dan_waterworth    schedule 28.06.2012    source источник


Ответы (3)


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

Кроме того, износ от письма и стирания примерно одинаков. Оба связаны с протягиванием электронов через оксидный слой, только в другом направлении.

Кроме того, стертое состояние для NAND — это все 1. Затем вы записываете 1 в 0. Вам нужно стереть 0, чтобы вернуть его к 1.

person Mr Alpha    schedule 06.11.2012

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

Твердотельные накопители состоят из больших блоков (обычно 512 КБ), которые намного больше, чем мы привыкли в файловой системе (обычно 4 КБ).

Проход Erase необходим, прежде чем что-либо можно будет записать в блок, если блок уже не пуст.

Таким образом, проблема со стиранием изнашивания диска заключается в том, что если используются 4 КБ вашего блока 512 КБ, вы должны стереть весь блок 512 КБ и записать исходные 4 КБ + все, что вы добавляете. Это создает чрезмерный износ и замедляет работу, поскольку вместо одной «записи» вам нужно «чтение-стирание-запись» (известное как «усиление записи»).

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

Надеюсь, что это поможет/не запутало еще больше!

person Stuart Brock    schedule 06.11.2012
comment
Я не думаю, что я был очень ясен. Я пытаюсь спросить: если только часть блока пуста (часть, в которую я хочу записать), будет ли она сначала выполнять стирание? - person dan_waterworth; 06.11.2012
comment
Да, он сначала сделает стирание. Он может записывать только один полный блок за раз, поэтому он не может просто записать тот бит, который вы хотите изменить. Он должен выполнять цикл чтения-стирания-записи. На самом деле он будет использовать пустой блок (если только на диске нет пустых блоков). Когда диск не занят, он объединяет частично записанные блоки вместе. Это компромисс между износом и производительностью, в какой степени это делается, и это одно из больших различий между прошивками дисков. - person Stuart Brock; 15.04.2013

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

person NaSh    schedule 08.09.2014