Что искать делать с твердотельным хранилищем?

13

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

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

Предполагая, что технология энергонезависимого ОЗУ NAND является основой аппаратного обеспечения, какую функцию он seek()фактически выполняет на аппаратном уровне для такого устройства?

Просто чтобы прояснить, я уже знаю, что происходит следующее:

  1. Пользовательская программа вызывает seek()системный вызов или специфичный для ОС эквивалент

  2. Ядро интерпретирует системный вызов и отправляет сообщение на контроллер SATA для поиска

  3. Контроллер SATA интерпретирует команду и сообщает подключенному дисковому устройству, которое находится в твердотельном состоянии, искать (или, может быть, оно достаточно умное, чтобы распознать, что оно твердотельное и даже не сообщает об этом ??)

  4. То, что я не знаю, твердотельное устройство делает ??? с командой «искать».

Если есть детали, которые будут зависеть от операционной системы, предположим, что относительно стандартная настольная версия GNU / Linux с версией ядра 3.2.

allquixotic
источник
2
Я думаю, что это делает большой жирный NOP. Помимо шутки, если бы я был SSD-накопителем, я бы сделал некоторые «предупредительные» чтения в кэш, чтобы все происходило как можно быстрее. Но так как это лишь смутное предположение о чем-то, о чем я не имею ни малейшего представления, так что возьмите это с
крошкой
Я не думаю, что операции поиска используются в низкоуровневом интерфейсе хранилища. Если бы они существовали, они просто изменили бы сохраненную позицию для следующей операции ввода-вывода.
Дэвид Шварц

Ответы:

4

Если вы имеете в виду Linux, поиск по-прежнему продвигается на необходимое количество байтов. Например:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Начнет копировать нули 1024 байта в начало диска, не имеет значения, является ли sdb sd-картой или ssd-диском, из-за небольшой вещи, называемой абстракцией, фактическая механика этого рассматривается на более низком уровне.

Обновить

Теперь я понимаю, что вы говорите. Следуя моему примеру с SD-картой, флэш-память использует то, что называется страницами , и страницы имеют определенный размер. когда происходит поиск, ОС отправляет команду контроллеру SD-карты / карты для перехода на определенную страницу для чтения и записи.

MDMoore313
источник
Я знаю, что он логически продвигается в файле , но помимо логического воздействия на файл в терминах абстрактных «блоков», аппаратное обеспечение делает что-то другое, когда его фактически просят искать? При необходимости вы можете посмотреть на lseek()системный вызов как на конкретный пример. Я знаю, что этот системный вызов не только выполняет логический поиск, но и заставляет головки HDD двигаться при работе с механическим диском, так что же делает SSD?
allquixotic
@allquixotic Я обновил свой ответ.
MDMoore313
1
Даже на физически вращающемся жестком диске ОС отправляет команду (команду SCSI, команду ATA / SATA или команду запоминающего устройства USB) на диск, чтобы получить LBA X. Хост фактически не в конечном итоге говорит диску о перемещении голова на любом уровне, прошивка привода делает это. Если вы хотите получить представление о том, что делает прошивка твердотельного накопителя в ответ на команды хранения, посмотрите на некоторые спецификации для проекта Jasmine OpenSSD, если вы можете их найти, некоторые из них объясняют вещи на очень низком уровне.
LawrenceC