Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФИЗИЧЕСКОЕ УСТРОЙСТВО SSD.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

Нюансы работы ssd

7 раз отмерь, один раз запиши, или записываю страницами, стираю блоками. Это девиз разработчиков и инженеров. Весь объем диска делится на блоки размером 512кб, они в свою очередь на страницы емкостью 4кб, на которые осуществляются операции чтения и записи. Но как только вы записали информацию на страницу она не может быть перезаписана до тех пор, пока не будет очищена. В этом заключается основная проблема, минимальный размер записываемой информации не может быть меньше 4кб. Но стереть данные можно только блоками или 512кб. Как же поступает контроллер в этом случае? Он группирует и переносит данные (алгоритм описан ниже) высвобождая целиковый блок! И, соответственно, происходят дополнительные операции, которые влекут за собой увеличение времени отклика (это не смертельно), и сокращение ресурса (это очень важный параметр).

Условные типы ssd

1 тип - первое поколение, контроллер JMicron 602(B) + NAND (SLC) Hitachi, Samsung, Intel(Micron), в большей степени ограничивает производительность именно контроллер. Иногда встречаются накопители, в которых установлена пара контроллеров. Нет тримминга, производится только на уровне ПО.

2 тип - второе поколение, контроллер Indilinx LC(B) + NAND (MLC,SLC) Samsung, Intel(Micron) + кэш Elpida 64Mb, хорошие показатели и чтения и записи, в большей степени зависят от качества прошивки, поддерживается тримминг в последних прошивках.

3 тип - второе поколение, контроллер Samsung ARM + NAND Samsung (MLC,SLC) + кэш Samsung 64,128Mb, хорошие показатели и чтения и записи, чтение особенно быстрое, в основной массе прошивка вендора никак не оптимизируется и недоступна для открытого пользования. Нет тримминга, производится только на уровне ПО.

4 тип - второе поколение, контроллер Intel + NAND (MLC,SLC) Intel(Micron 50нм, 34нм) + кэш Sumsung или Micron: 16,32,64Mb, хорошие абсолютные показатели только чтения, IOPS, низкая, но постоянная скорость записи в случае использования MLC микросхем, для SLC наоборот, они обладают феноменальной скоростью записи, по-существу самые скоростные, поддерживается тримминг в последних прошивках.

Алгоритм записи

 

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

 Наиболее характерно это проявляется при операциях записи, наглядный пример демонстрирует работу контроллера и алгоритмов прошивки. 

 

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

 

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

 

Записываем блок данный кратный физическому размеру пула ячеек: 

 

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

  

Усложним задачу, потребуем записать блок данных 4кб. 

 

 

 

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

 

 

 

Записываем разноразмерные блоки информации.