- •Глава 11. Внешняя память на твердотельных накопителях
- •11.1. Актуальность перехода на твердотельные накопители
- •11.2. Устройство твердотельных накопителей
- •Логическая структура флэш-памяти
- •Особенности операций записи данных
- •Разница между последовательной и случайной записью
- •Механизм Wear Leveling
- •11.4. Способы повышения производительности
- •11.5. Безопасность твердотельных накопителей
- •11.6. Контрольные вопросы
Разница между последовательной и случайной записью
Первый феномен твердотельных накопителей заключается в том, что скорость записи на новый и ранее использовавшийся твердотельный накопитель может заметно различаться. Есть и другой феномен: разница в скорости последовательной и случайной записи. Казалось бы, если данные записываются на твердотельный накопитель преимущественно последовательным образом, то можно вообще ли говорить о случайной записи?
Представим себе последовательную (с точки зрения операционной системы) запись большого массива данных на пустой диск. То есть запись, при которой все логические LBA-адреса заполняются последовательно.
В этом случае все физические блоки памяти будут заполняться последовательно, а если данные перезаписываются, то опять-таки будут образовываться блоки, целиком состоящие из страниц, помеченных к удалению. В этом случае не требуется использовать технологию перемещения данных, поскольку если блок состоит только из страниц, помеченных к удалению, то его можно стереть целиком, не перемещая из него никаких данных. Понятно, что в таком случае (то есть в случае последовательной записи) коэффициент усиления записи равен 1 и достигается максимальная скорость записи.
В случае случайной записи даже на пустой твердотельный накопитель, хотя данные и записываются преимущественно последовательным образом, пока не будет заполнено всё доступное пространство твердотельного накопителя, неизбежно возникают операции перезаписи данных мелкими порциями, и в результате блоки данных содержат как страницы с нужными данными, так и страницы, помеченные к удалению. Это как раз та ситуация, которая была рассмотрена ранее, то есть по мере заполнения твердотельного накопителя начинает использоваться механизм перемещения данных и коэффициент усиления записи становится больше единицы. Таким образом, за счет эффективного использования технологии перемещения данных скорость случайной записи всегда ниже скорости последовательной записи.
Существует еще одна принципиальная разница между случайной и последовательной записью, которая заключается в принципах формирования и оптимизации таблицы соответствия LBA-PBA. Строго говоря, речь идет не просто о таблице, а о гораздо более сложной структуре. Не вникая в детали, отметим, что данная таблица не содержит отдельных записей для каждого кластера, а оперирует блоками переменной длины, и чем больше эти блоки, тем меньшее количество записей в таблице требуется. Более того — по мере заполнения такой таблицы начинается процедура ее оптимизации, что сильно отражается на производительности твердотельного накопителя.
Процесс оптимизации, по сути, состоит из объединения разрозненных маленьких фрагментов в один непрерывный сегмент. Одно такое объединение позволяет заменить несколько тысяч записей в таблице на одну запись. Объединение делается путем считывания разрозненных фрагментов и последовательной их записи в новый сегмент. Физические блоки, в которых эти фрагменты ранее размещались, помечаются как неиспользуемые.
При последовательной записи фактически создается один большой фрагмент, поэтому записей в таблице будет очень мало и оптимизировать ее не надо. Если же запись производится случайным образом, то необходимость постоянной оптимизации таблицы приводит к тому, что производительность твердотельного накопителя резко падает.
