NCQ (Аппаратная Очерёдность Команд, Native Command Queuing) – технология, разработанная для повышения производительности жёстких дисков с интерфейсом SATA II и выше.

 

Принцип работы.

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

 

Без NCQ:

Команды поступают на контроллёр диска, он даёт указание приводу головки на определённый участок, головка выполняет данную операцию и за ней следует следующая. То есть команды никак не сортируются и имеют приоритет только по времени поступления в контроллёр.

 

С поддержкой NCQ:

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

Сама технология призвана снизить время, затрачиваемое на перепозиционирование головки с дорожки на дорожку, оптимизируя перемещение до минимально возможного.

Что требуется для поддержки NCQ:

  • Жёсткий диск или твёрдотельный накопитель с поддержкой NCQ (все, что на интерфейсе Sata II(300) и выше).

  • AHCI контроллёр, встроенный в материнскую плату либо на отдельной плате расширения.

  • Драйвера, либо аппаратная поддержка операционной системой (W7, Vista, Free BSD 8.0 и выше, Linux Kernels).

 

В каких условиях NCQ наиболее эффективна?

Для обычного домашнего компьютера, ждать увеличения производительности более 5% ждать не приходится, за тем исключением, если у вас ёмкий жёсткий диск с наполнением более 75%. Также, больший прирост производительности появляется, если одновременно работают несколько программ с активным обращением к диску или диск сильно фрагментирован. В данных случаях, прирост производительности может быть до 15% (при сильной фрагментации вплоть до 20%).

Основное же применение технологии NCQ является — серверное «поприще». Когда большое количество пользователей обращаются к разной информации, эта технология обеспечивает хороший прирост ввода/вывода, за счёт умного распределения усилий головки по всей ширине пластины. Прирост производительности в серверных условиях может достигать 18%.

Если взглянуть обобщённо — NCQ улучшает время доступа, скорость произвольного чтения/записи и ввода/вывода.

 

NCQ для твёрдотельных SSD накопителей.

От использования NCQ они тоже выигрывают в скорости ввода/вывода и операций в секунду. Принцип работы немного другой и контроллёр опирается на скорость самого SSD и вычисляет какие операции лучше выполнить в первую очередь для поддержания скорости обмена данными на максимально возможном уровне. Также учитываются наиболее важные системные команды, которые должны быть выполнены в первую очередь, и распределяет чтение/запись на своё усмотрение, что позволяет получить от SSD ещё большую скорость отклика и количество операций в секунду (IOPS).

В большинстве случаев, для поддержки NCQ на твёрдотельных накопителях, необходимо установить драйвера, либо обновить BIOS или EFI.

 

История до NCQ.

Первоначальная реализация, которая была предназначена для PATA называлась TCQ (Tagged Command Queuing). Основным требованием, было использование протоколов ISA шины для операционной системы как основной, что увеличивало накладные расходы и ухудшало совместимость, а увеличение производительности было незначительным. Поэтому данная разработка не была поддержана производителями и в конце концов не получила распространение.