Оптимизация очереди команд (TCQ) в жестком диске

Впервые описание оптимизации очереди команд (TCQ) появилось в стандарте ATA/ATAPI-4. Поддержка этой технологии позволяет жесткому диску самостоятельно переупорядочивать команды для достижения лучшего быстродействия и уменьшения износа кинематики. Команды помещаются в очередь до их фактического выполнения, и электроника жесткого диска динамически перестраивает очередь команд, поступивших в накопитель, для увеличения эффективности работы жесткого диска. Целью оптимизации является минимизация перемещений магнитной головки при выполнении всех команд, находящихся в очереди на выполнение, т.к. именно поиск дорожки и ожидание сектора являются наиболее длительными фазами операций чтения/записи данных.

Алгоритмы оптимизации очереди можно разделить на две категории:

  1. Оптимизация времени позиционирования. Жесткий диск анализирует все необработанные запросы и перестраивает их в порядке удаления от дорожки, на которой сейчас находится магнитная головка. Этот механизм похож на работу умного лифта.
  2. Оптимизация времени доступа. Помимо оптимизации времени позиционирования жесткий диск учитывает задержку, связанную с ожиданием нужного сектора на дорожке при вращении магнитных дисков. Данный метод требует очень серьезной вычислительной мощности, т.к. жесткому диску нужно точно знать текущее положение головки, точное положение требуемого сектора, текущую точную скорость вращения шпиндельного двигателя, время перемещения головки до нужной дорожки, время стабилизации головок на дорожке и т.д. Всего одна небольшая ошибка в данных расчетах будет приводить к тому, что накопителю придется простаивать драгоценное время, ожидая, пока магнитные диски сделают почти целый оборот.

Использование TCQ предусматривает поддержку жестким диском и использование драйвером следующих команд:

  • NOP AUTO POLL
  • READ DMA QUEUED
  • READ DMA QUEUED EXT
  • SERVICE
  • WRITE DMA QUEUED
  • WRITE DMA QUEUED EXT
  • WRITE DMA QUEUED FUA EXT

Использование любой другой команды сбрасывает существующую очередь. Команды чтения/записи TCQ дополняются уникальным номером от 0 до максимальной глубины очереди команд жесткого диска (32 команды), которые используются для идентификации при неупорядоченном выполнении команд. Если жесткий диск готов к полному выполнению команды, он может выполнить ее незамедлительно, а если не готов, то он может освободить шину и приступить к оптимизации команд, находящихся в очереди, и выполнению одной из них. Драйвер или контроллер материнской платы должен опрашивать жесткие диски для определения, нуждаются ли они в обслуживании. Опрос может быть выполнен как аппаратно, так и программно командой SERVICE. Использование программного типа опросов подразумевает значительную занятость центрального микропроцессора. Аппаратный опрос инициируется командой "NOP AUTO POLL", которая обрабатывается контроллером материнской платы и игнорируется жестким диском.