Tagged Command Queuing - Tagged Command Queuing
Tagged Command Queuing (TCQ) это технологии встроен в определенные ATA и SCSI[1] жесткие диски. Это позволяет Операционная система отправить несколько запросов на чтение и запись в жесткий диск. ATA TCQ по функциям не идентичен более производительному Собственная очередь команд (NCQ) используется SATA диски.[2] SCSI TCQ не имеет тех же ограничений, что и ATA TCQ.
Без TCQ операционная система была ограничена отправкой одного запроса за раз. Чтобы повысить производительность, ОС должна была определять порядок запросов на основе собственной - возможно, неправильной - перспективы активности жесткого диска (также известной как Планирование ввода / вывода ). С помощью TCQ диск может принимать собственные решения о том, как упорядочивать запросы (и, в свою очередь, избавлять операционную систему от необходимости делать это). Таким образом, TCQ может улучшить общую производительность жесткого диска, если он реализован правильно.
Обзор
Для повышения эффективности обслуживания секторов следует обслуживать в порядке близости к текущему положению головы, а не в порядке поступления. Очередь постоянно получает новые запросы, выполняет и удаляет существующие запросы и переупорядочивает очередь в соответствии с текущими ожидающими запросами на чтение / запись и изменяющейся позицией заголовка. Точный алгоритм переупорядочения может зависеть от контроллера и самого накопителя, но главный компьютер просто делает запросы по мере необходимости, оставляя контроллер обрабатывать детали.
Этот механизм организации очередей иногда называют "поиск лифта ", как образ современного лифт в здании, обслуживающем несколько вызовов и обрабатывающем их для минимизации поездок, хорошо иллюстрирует эту идею.
Если кнопки этажей 5, 2 и 4 нажимаются в указанном порядке, когда лифт начинается с этажа 1, старый лифт поднимается на эти этажи в указанном порядке. Современный лифт обрабатывает запросы на остановку на этажах 2, 4 и 5 без лишних перемещений. Дисковые накопители без очереди обслуживают запросы в порядке получения, как старый лифт; Организация очередей управляет запросами на обслуживание в наиболее эффективном порядке. Это может немного улучшить производительность в системе, используемой одним пользователем, но может резко повысить производительность в системе, когда многие пользователи делают самые разные запросы на поверхности диска.
Сравнение SCSI TCQ, ATA TCQ и SATA NCQ
SCSI TCQ
SCSI TCQ был первой популярной версией TCQ и пользуется популярностью до сих пор. Он позволяет помещать задачи в очередь в одном из трех различных режимов:[3]
- руководитель очереди
- заказал
- просто
В режим руководителя очереди, уникальная для SCSI TCQ, задача помещается в начало очереди, опережая все другие задачи, включая другие ожидающие обработки задачи заголовка очереди.[2][3][4] Этот режим мало используется, потому что он может вызвать ресурсный голод при злоупотреблении.
В заказанный режим, задача должна выполняться после завершения всех старых задач и до начала выполнения всех новых задач (за исключением более новых руководитель очереди задачи).[3]
Простой режим позволяет задачам выполняться в любом порядке, который не нарушает ограничения задач в двух других режимах.[3] После выполнения команды в задаче устройство, выполнившее команду, отправляет уведомление адаптеру шины хоста.[3]
Вызывает ли SCSI TCQ массивные накладные расходы на прерывание или нет, зависит от шины, используемой для подключения адаптера шины хоста SCSI. На Обычный PCI, PCI-X, PCI Express, и другие автобусы, которые это позволяют, первая сторона DMA позволяет снизить накладные расходы на прерывание. Более старая шина ISA требовала, чтобы хост-адаптер SCSI генерировал прерывание, чтобы заставить ЦП программировать сторонний механизм DMA для выполнения передачи, а затем требовалось другое прерывание, чтобы уведомить ЦП о завершении задачи в очереди,[2] вызывая высокую нагрузку на ЦП.
Длина тега SCSI TCQ
Протокол SCSI-3 позволяет использовать 64 бита в поле тега, что позволяет использовать до 264 задачи в одном наборе задач, которые должны быть выполнены до того, как потребуется выполнить некоторые из них, прежде чем будут выданы какие-либо другие команды.[3] Однако другие протоколы, реализующие протокол SCSI, могут не разрешать использование всех 64 бит. Например, старый параллельный SCSI допускает 8 бит тегов, iSCSI позволяет использовать до 32 бит тегов, и Fibre Channel допускает до 16 бит тега с тегом 0xFFFF зарезервированный. Эта гибкость позволяет разработчику протокола найти компромисс между возможностью организации очередей и стоимостью. Сети, которые могут быть большими, такие как сети iSCSI, выигрывают от большего количества битов тегов, чтобы иметь дело с большим количеством дисков в сети и большими задержками, которые генерируются такими большими сетями, в то время как сети меньшего масштаба, такие как параллельные цепи SCSI, не работают. иметь достаточно дисков или задержки, чтобы потребовалось много бит тегов, и можно сэкономить деньги, используя систему, поддерживающую меньшее количество бит.
ATA TCQ
ATA TCQ был разработан с целью обеспечить те же преимущества, что и SCSI, для дисков ATA. Он доступен как в параллельном, так и в последовательном ATA.
Эта попытка не увенчалась успехом, поскольку шина ATA начиналась как шина ISA с уменьшенным количеством выводов. Требование совместимости программного обеспечения заставило адаптеры шины ATA действовать как устройства шины ISA без первая сторона DMA. Когда диск был готов к передаче, он должен был прервать работу ЦП, подождать, пока ЦП спросит диск, какая команда готова к выполнению, ответить командой, что он был готов к выполнению, дождаться, пока ЦП запрограммирует хост автобусный адаптер сторонний DMA движок на основе результата этой команды, дождитесь, пока сторонний механизм DMA выполнит команду, а затем должен был снова прервать ЦП, чтобы уведомить его, когда механизм DMA завершил задачу, чтобы ЦП мог уведомить поток, который запросил задача, что запрошенная задача была завершена.[2] Поскольку для ответа на прерывания используется время ЦП, загрузка ЦП быстро возрастала при включении ATA TCQ.[2] Кроме того, поскольку время обслуживания прерывания может быть непредсказуемым, бывают случаи, когда диск готов к передаче данных, но не может этого сделать, потому что он должен ждать, пока ЦП ответит на прерывание, чтобы ЦП знал, что ему нужно запрограммировать сторонний движок DMA.[2]
Таким образом, этот стандарт редко применялся, поскольку приводил к высокой загрузке ЦП без повышения производительности, достаточного для того, чтобы это было оправдано.[2] Этот стандарт допускает до 32 невыполненных команд на устройство.[4]
SATA NCQ
SATA NCQ это современный стандарт, который резко снижает количество требуемых прерываний процессора по сравнению с ATA TCQ. Как и ATA TCQ, он позволяет выполнять до 32 команд на устройство,[2] но был разработан, чтобы воспользоваться преимуществами адаптеров шины хоста SATA, которые не имитируют параллельное поведение ATA, для поддержки DMA первой стороны.[2] Вместо того, чтобы прерывать ЦП перед задачей, чтобы заставить его запрограммировать механизм DMA адаптера главной шины, жесткий диск сообщает адаптеру шины хоста, какую команду он хочет выполнить, в результате чего адаптер шины хоста программирует свой интегрированный механизм DMA первого производителя с помощью параметры, которые были включены в команду, которая была выбрана жестким диском при ее первом запуске, а затем механизм DMA перемещает данные, необходимые для выполнения команды.[2] Чтобы еще больше снизить накладные расходы на прерывание, накопитель может задерживать прерывание с сообщениями о завершении задачи до тех пор, пока он не соберет многие из них для одновременной отправки, что позволяет операционной системе одновременно уведомлять множество потоков о том, что их задачи завершены.[2] Если другая задача завершается после отправки такого прерывания, адаптер шины хоста может объединить сообщения о завершении, если первый набор сообщений о завершении не был отправлен в ЦП.[2] Это позволяет микропрограммному обеспечению жесткого диска находить компромисс между производительностью диска и загрузкой ЦП, определяя, когда не отправлять, а когда отправлять сообщения о завершении.[2]
использованная литература
- ^ в виде Параллельный SCSI, Последовательный SCSI, и Fibre Channel диски
- ^ а б c d е ж г час я j k л м Дис, Брайан (ноябрь – декабрь 2005 г.). «Собственная организация очереди команд - повышенная производительность в настольных системах хранения данных». Возможности IEEE. 24 (4): 4–7. Дои:10.1109 / MP.2005.1549750.
- ^ а б c d е ж «Модель архитектуры SCSI - 3 (SAM-3)» (PDF). Архивировано из оригинал (PDF) на 2012-04-09. Получено 2007-02-24.
- ^ а б "1532D: AT-вложение с пакетным интерфейсом - 7 Том 1" (PDF). 1532D: AT-вложение с пакетным интерфейсом - 7. Получено 2007-01-02.
внешняя ссылка
- Может ли очередь команд Turbo Charge SATA? Патрик Шмид и Ахим Роос из Tom's Hardware Guide