Собственная очередь команд

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

В вычислениях, Собственная очередь команд (NCQ ) является расширением протокола Serial ATA, позволяющим жестким дискам внутренне оптимизировать порядок, в котором выполняются полученные команды чтения и записи. Это может уменьшить количество ненужных движений головки диска, что приведет к повышению производительности (и небольшому снижению износа диска) для рабочих нагрузок, когда несколько одновременных запросов на чтение / запись остаются невыполненными, что чаще всего происходит в приложениях типа сервер..

Содержание

  • 1 История
  • 2 Жесткие диски
    • 2.1 Производительность
    • 2.2 Безопасность (FUA)
  • 3 Твердотельные диски
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки

История

Собственной очереди команд предшествовала версия Parallel ATA Tagged Command Queuing (TCQ). Попытка ATA интегрировать TCQ была ограничена требованием, чтобы адаптеры шины хоста ATA использовали протоколы устройств шины ISA для взаимодействия с операционной системой. В результате высокие накладные расходы ЦП и незначительный прирост производительности привели к тому, что TCQ не был принят рынком.

NCQ отличается от TCQ тем, что с NCQ каждая команда имеет одинаковую важность, но адаптер главной шины NCQ также программирует свой собственный механизм DMA первой стороны с заданным ЦП DMA параметров во время своей последовательности команд, тогда как TCQ прерывает ЦП во время командных запросов и требует, чтобы он модулировал механизм DMA стороннего адаптера шины хоста ATA . Реализация NCQ предпочтительнее, потому что привод имеет более точные сведения о своих рабочих характеристиках и может учитывать свое вращательное положение. И NCQ, и TCQ имеют максимальную длину очереди 32 невыполненных команды.

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

Многие новые наборы микросхем поддерживают Advanced Host Controller Interface (AHCI), который позволяет операционным системам универсально контролировать их и включить NCQ. DragonFly BSD поддерживает AHCI с NCQ с 2.3 в 2009 году. Новые ядра Linux изначально поддерживают AHCI, а FreeBSD полностью поддерживает AHCI, начиная с версии 8.0. Windows Vista и Windows 7 также изначально поддерживают AHCI, но их поддержка AHCI (через службу msahci) должна быть включена вручную через редактирование реестра, если во время первоначальной установки не было поддержки контроллера. AHCI Windows 7 обеспечивает не только NCQ, но также поддержку TRIM на дисках SSD (с их поддерживающей прошивкой). Более старые операционные системы, такие как Windows XP, требуют установки драйвера от производителя (аналогично установке контроллера RAID или SCSI ), даже если на компьютере присутствует AHCI. адаптер главной шины, который делает первоначальную настройку более утомительной, а преобразование существующих установок относительно трудным, поскольку большинство контроллеров не могут управлять своими портами в смешанном режиме AHCI – SATA / IDE / legacy.

Жесткие диски

Производительность

Тест 2004 года с приводом NCQ первого поколения (Seagate 7200.7 NCQ) показал, что, хотя NCQ повысил производительность IOMeter, производительность настольных приложений фактически снизилась.. В одном обзоре 2010 года были обнаружены улучшения порядка 9% (в среднем) с включенным NCQ в серии тестов многозадачности Windows.

NCQ может отрицательно влиять на планировщик ввода-вывода операционной системы, фактически снижая производительность; это наблюдалось на практике в Linux с RAID-5. В NCQ нет механизма для хоста, чтобы указать какие-либо крайние сроки для ввода-вывода, например, сколько раз запрос может быть проигнорирован в пользу других. Теоретически поставленный в очередь запрос может быть отложен накопителем на произвольное время, пока он обслуживает другие (возможно, новые) запросы под давлением ввода-вывода. Поскольку алгоритмы, используемые в микропрограммах накопителей для диспетчеризации NCQ, как правило, не известны широкой публике, это создает еще один уровень неопределенности для производительности оборудования / микропрограмм. Тесты в Google примерно в 2008 году показали, что NCQ может задерживать ввод-вывод на 1-2 секунды. Предлагаемый обходной путь заключается в том, чтобы операционная система раньше искусственно ограничивала очередь NCQ, чтобы своевременно удовлетворять потребности приложений с малой задержкой.

В микропрограммах некоторых накопителей, таких как WD Raptor около 2007 года упреждающее чтение отключено, когда включен NCQ, что приводит к более медленной последовательной производительности.

Безопасность (FUA)

Менее известной особенностью NCQ является что, в отличие от своего предшественника ATA TCQ, он позволяет хосту указывать, хочет ли он получать уведомление, когда данные достигают пластин диска или когда они достигают буфера диска (встроенного кеша). При условии правильной аппаратной реализации эта функция позволяет гарантировать согласованность данных, когда встроенный кэш диска используется в сочетании с системными вызовами, такими как fsync. Соответствующий флаг записи, который также заимствован из SCSI, называется Force Unit Access (FUA).

Твердотельные накопители

NCQ также используются в более новых твердотельные накопители, где накопитель сталкивается с задержкой на хосте, а не наоборот. Например, твердотельный накопитель Intel X25-E Extreme от использует NCQ, чтобы обеспечить наличие команд для обработки, пока хост-система занята обработкой задач ЦП.

NCQ также включает контроллер SSD для выполнения команд одновременно (или частично одновременно, например, с использованием конвейеров), если внутренняя организация устройства позволяет такую ​​обработку.

Стандарт NVM Express (NVMe) также поддерживает организацию очереди команд в форме, оптимизированной для SSD. NVMe позволяет создавать несколько очередей для одного контроллера и устройства, обеспечивая в то же время гораздо большую глубину для каждой очереди, что более точно соответствует тому, как работает базовое оборудование SSD.

См. Также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-31 12:26:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте