Tagged Command Queueing ( TCQ ) es una tecnología integrada en ciertos discos duros ATA y SCSI [1] . Permite que el sistema operativo envíe múltiples solicitudes de lectura y escritura a un disco duro . ATA TCQ no es idéntico en función al Native Command Queueing (NCQ) más eficiente utilizado por las unidades SATA . [2] SCSI TCQ no tiene las mismas limitaciones que ATA TCQ.
Sin TCQ, un sistema operativo se limitaba a enviar una solicitud a la vez. Para mejorar el rendimiento, el sistema operativo tenía que determinar el orden de las solicitudes en función de su propia perspectiva, posiblemente incorrecta, de la actividad del disco duro (también conocida como programación de E / S ). Con TCQ, la unidad puede tomar sus propias decisiones sobre cómo ordenar las solicitudes (y, a su vez, evitar que el sistema operativo tenga que hacerlo). Por lo tanto, TCQ puede mejorar el rendimiento general de un disco duro si se implementa correctamente.
Descripción general
Para una mayor eficiencia, los sectores deben ser atendidos en orden de proximidad a la posición actual del cabezal, no según el orden recibido. La cola recibe constantemente nuevas solicitudes, cumple y elimina las solicitudes existentes, y reordena la cola de acuerdo con las solicitudes de lectura / escritura pendientes actuales y la posición cambiante del cabezal. El algoritmo de reordenamiento exacto puede depender del controlador y de la unidad en sí, pero la computadora host simplemente realiza las solicitudes según sea necesario, dejando que el controlador maneje los detalles.
Este mecanismo de cola a veces se denomina " búsqueda de ascensor ", ya que la imagen de un ascensor moderno en un edificio que atiende múltiples llamadas y las procesa para minimizar los viajes ilustra bien la idea.
Si los botones de los pisos 5, 2 y 4 se presionan en ese orden con el ascensor comenzando en el piso 1, un ascensor antiguo iría a los pisos en el orden solicitado. Un ascensor moderno procesa las solicitudes para detenerse en los pisos en el orden lógico 2, 4 y 5, sin viajes innecesarios. Las unidades de disco que no hacen cola atienden las solicitudes en el orden en que se reciben, como un antiguo ascensor; la cola impulsa las solicitudes de servicio en el orden más eficiente. Esto puede mejorar ligeramente el rendimiento en un sistema utilizado por un solo usuario, pero puede aumentar drásticamente el rendimiento en un sistema con muchos usuarios que realizan solicitudes muy variadas en la superficie del disco.
Comparación de SCSI TCQ, ATA TCQ y SATA NCQ
SCSI TCQ
SCSI TCQ fue la primera versión popular de TCQ y sigue siendo popular hoy en día. Permite que las tareas se ingresen en una cola usando uno de tres modos diferentes: [3]
- jefe de cola
- ordenado
- sencillo
En el modo de cabecera de cola , exclusivo de SCSI TCQ, una tarea se coloca al principio de una cola, por delante de todas las demás tareas, incluidas otras tareas pendientes de cabecera de cola. [2] [3] [4] Este modo no se usa mucho porque puede causar escasez de recursos cuando se abusa.
En el modo ordenado , una tarea debe ejecutarse después de que se hayan completado todas las tareas más antiguas y antes de que todas las tareas más nuevas comiencen a ejecutarse (excluyendo las tareas de cabecera de cola más nuevas ). [3]
El modo simple permite que las tareas se ejecuten en cualquier orden que no viole las restricciones de las tareas en los otros dos modos. [3] Después de que se completa un comando en una tarea, el dispositivo que completó el comando envía una notificación al adaptador de bus de host. [3]
El hecho de que SCSI TCQ cause o no una sobrecarga de interrupción masiva depende del bus que se utilice para conectar el adaptador de bus de host SCSI. En PCI convencional , PCI-X , PCI Express y otros buses que lo permiten, el DMA propio permite una baja sobrecarga de interrupciones. El bus ISA más antiguo requería un adaptador de host SCSI para generar una interrupción y hacer que la CPU programara el motor DMA de terceros para realizar una transferencia, y luego requería otra interrupción para notificar a la CPU que una tarea en la cola había terminado, [2 ] provocando una sobrecarga de CPU elevada.
Longitud de la etiqueta SCSI TCQ
El protocolo SCSI-3 permite el uso de 64 bits en el campo de la etiqueta, lo que permite que se emitan hasta 2 64 tareas en un conjunto de tareas antes de requerir que algunas de ellas se completen antes de que se emitan más comandos. [3] Sin embargo, es posible que los diferentes protocolos que implementan el protocolo SCSI no permitan el uso de los 64 bits. Por ejemplo, el SCSI paralelo anterior permite 8 bits de etiqueta, iSCSI permite hasta 32 bits de etiqueta y Fibre Channel permite hasta 16 bits de etiqueta con la etiqueta 0xFFFF reservada. Esta flexibilidad permite al diseñador de un protocolo compensar la capacidad de hacer cola con el costo. Las redes que pueden ser grandes, como las redes iSCSI, se benefician de más bits de etiquetas para lidiar con la mayor cantidad de discos en la red y las latencias más grandes que generan las redes grandes, mientras que las redes de menor escala, como las cadenas SCSI paralelas, no lo hacen. tienen suficientes discos o latencia para necesitar muchos bits de etiqueta y pueden ahorrar dinero al usar un sistema que admita menos bits.
ATA TCQ
ATA TCQ se desarrolló en un intento de brindar los mismos beneficios que SCSI a las unidades ATA. Está disponible tanto en paralelo como en serie ATA.
Este esfuerzo no tuvo mucho éxito porque el bus ATA comenzó como un bus ISA de recuento reducido de pines. El requisito de compatibilidad de software hizo que los adaptadores de bus de host ATA actuaran como dispositivos de bus ISA sin DMA de primera parte . Cuando una unidad estaba lista para una transferencia, tenía que interrumpir la CPU, esperar a que la CPU le preguntara al disco qué comando estaba listo para ejecutarse, responder con el comando que estaba listo para ejecutarse, esperar a que la CPU programara el host el motor DMA de terceros del adaptador de bus basado en el resultado de ese comando, esperar a que el motor DMA de terceros ejecute el comando y luego tuvo que interrumpir la CPU nuevamente para notificarlo cuando el motor DMA terminó la tarea para que la CPU pudiera notificar al hilo que solicitó la tarea que la tarea solicitada se completó. [2] Dado que responder a las interrupciones consume tiempo de la CPU, la utilización de la CPU aumentó rápidamente cuando se habilitó ATA TCQ. [2] Además, dado que el tiempo del servicio de interrupción puede ser impredecible, hay ocasiones en las que el disco está listo para transferir datos pero no puede hacerlo porque debe esperar a que una CPU responda a la interrupción para que la CPU sepa que necesita para programar el motor DMA de terceros. [2]
Por lo tanto, este estándar rara vez se implementó porque provocó una alta utilización de la CPU sin mejorar el rendimiento lo suficiente como para que valga la pena. [2] Este estándar permite hasta 32 comandos pendientes por dispositivo. [4]
SATA NCQ
SATA NCQ es un estándar moderno que reduce drásticamente el número de interrupciones de CPU requeridas en comparación con ATA TCQ. Al igual que ATA TCQ, permite hasta 32 comandos sobresalientes por dispositivo, [2] pero fue diseñado para aprovechar la capacidad de los adaptadores de bus de host SATA que no emulan el comportamiento ATA paralelo para admitir DMA de primera parte. [2] En lugar de interrumpir la CPU antes de la tarea para forzarla a programar el motor DMA del adaptador de bus de host, el disco duro le dice al adaptador de bus de host qué comando quiere ejecutar, lo que hace que el adaptador de bus de host programe su primera parte integrada Motor DMA con los parámetros que se incluyeron en el comando que fue seleccionado por el disco duro cuando se emitió por primera vez, y luego el motor DMA mueve los datos necesarios para ejecutar el comando. [2] Para reducir aún más la sobrecarga de interrupciones, la unidad puede retener la interrupción con los mensajes de tareas completadas hasta que reúna muchos de ellos para enviarlos a la vez, lo que permite que el sistema operativo notifique a muchos subprocesos simultáneamente que sus tareas se han completado. [2] Si se completa otra tarea después de enviar dicha interrupción, el adaptador de bus de host puede concatenar los mensajes de finalización juntos si el primer conjunto de mensajes de finalización no se ha enviado a la CPU. [2] Esto permite que el diseño del firmware del disco duro intercambie el rendimiento del disco con la utilización de la CPU al determinar cuándo retener y cuándo enviar mensajes de finalización. [2]
Referencias
- ^ En forma de SCSI paralelo , SCSI conectado en serie , y Fibre Channel unidades
- ↑ a b c d e f g h i j k l m Dees, Brian (noviembre-diciembre de 2005). "Cola de comandos nativa: rendimiento avanzado en almacenamiento de escritorio". Potenciales IEEE . 24 (4): 4–7. doi : 10.1109 / MP.2005.1549750 .
- ^ a b c d e f "Modelo de arquitectura SCSI - 3 (SAM-3)" (PDF) . Archivado desde el original (PDF) el 9 de abril de 2012 . Consultado el 24 de febrero de 2007 .
- ^ a b "1532D: Adjunto AT con interfaz de paquetes - 7 Volumen 1" (PDF) . 1532D: Adjunto AT con interfaz de paquetes - 7 . Consultado el 2 de enero de 2007 .
enlaces externos
- ¿Puede Command Queueing Turbo Charge SATA? por Patrick Schmid y Achim Roos de Tom's Hardware Guide