La tecnología Tagged Command Queuing ( TCQ ) está 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éntica en función a la tecnología Native Command Queuing (NCQ) , más eficiente, utilizada por las unidades SATA . [ 2 ] SCSI TCQ no presenta 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 debía determinar el orden de las solicitudes basándose en su propia perspectiva —posiblemente incorrecta— de la actividad del disco duro (lo que se conoce como planificación de E/S ). Con TCQ, la unidad puede tomar sus propias decisiones sobre cómo ordenar las solicitudes (y, a su vez, liberar al sistema operativo de esta tarea). 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 del disco duro deben procesarse según su proximidad a la posición actual del cabezal, no según el orden en que se reciben. La cola recibe constantemente nuevas solicitudes, procesa y elimina las existentes, y se reordena en función de las solicitudes de lectura/escritura pendientes y la posición cambiante del cabezal. El algoritmo de reordenamiento exacto puede depender del controlador y del propio disco, pero el ordenador anfitrión simplemente realiza las solicitudes según sea necesario, dejando que el controlador gestione 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 atendiendo múltiples llamadas y procesándolas para minimizar los desplazamientos ilustra bien la idea.
Si se pulsan los botones de los pisos 5, 2 y 4 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 desplazamientos innecesarios. Las unidades de disco sin cola atienden las solicitudes en el orden en que se reciben, como un ascensor antiguo; las unidades con cola atienden las solicitudes en el orden más eficiente. Esto puede mejorar ligeramente el rendimiento en un sistema utilizado por un solo usuario, pero puede aumentarlo drásticamente 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 utilizando uno de tres modos diferentes: [ 3 ]
- cabeza de la cola
- ordenado
- simple
En el modo de cabeza de cola , exclusivo de SCSI TCQ, una tarea se coloca al principio de la cola, por delante de todas las demás tareas, incluidas otras tareas pendientes en la cabeza de la cola. [ 2 ] [ 3 ] [ 4 ] Este modo no se usa mucho porque puede provocar escasez de recursos si se usa incorrectamente.
En el modo ordenado , una tarea debe ejecutarse después de que todas las tareas anteriores hayan finalizado y antes de que comiencen a ejecutarse todas las tareas más recientes (excluyendo las tareas más recientes que se encuentran al principio de la cola ). [ 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 del bus del host . [ 3 ]
Que SCSI TCQ cause o no una sobrecarga de interrupción masiva depende del bus que se utilice para conectar el adaptador de bus host SCSI. En los buses PCI convencionales , PCI-X , PCI Express y otros que lo permiten, el DMA de primera parte permite una baja sobrecarga de interrupción. El bus ISA anterior requería que un adaptador host SCSI generara una interrupción para 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 ] causando una alta sobrecarga de CPU.
Longitud de etiqueta SCSI TCQ
El protocolo SCSI-3 permite el uso de 64 bits en el campo de etiqueta, lo que permite emitir hasta 2 64 tareas en un conjunto de tareas antes de que se requiera que algunas de ellas se completen antes de que se emitan más comandos. [ 3 ] Sin embargo, diferentes protocolos que implementan el protocolo SCSI podrían no permitir el uso de los 64 bits. Por ejemplo, el SCSI paralelo antiguo permite 8 bits de etiqueta, SAS permite 9 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 equilibrar la capacidad de cola con el costo. Las redes que pueden ser grandes, como las redes iSCSI, se benefician de más bits de etiqueta para manejar la mayor cantidad de discos en la red y las mayores latencias que generan dichas redes grandes, mientras que las redes de menor escala, como las cadenas SCSI paralelas, no tienen suficientes discos o latencia como para necesitar muchos bits de etiqueta y pueden ahorrar costos utilizando un sistema que admita menos bits.
ATA TCQ
ATA TCQ se desarrolló con el objetivo de brindar las mismas ventajas que SCSI a las unidades ATA. Está disponible tanto en ATA paralelo como en ATA serie.
Este esfuerzo no tuvo mucho éxito porque el bus ATA comenzó como un bus ISA con un número reducido de pines. El requisito de compatibilidad de software hizo que los adaptadores de bus 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 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 motor DMA de terceros del adaptador de bus host en función del resultado de ese comando, esperar a que el motor DMA de terceros ejecutara el comando, y luego tenía que interrumpir la CPU de nuevo para notificarle cuando el motor DMA terminara la tarea para que la CPU pudiera notificar al hilo que solicitó la tarea que la tarea solicitada había terminado. [ 2 ] Dado que responder a las interrupciones utiliza tiempo de CPU , la utilización de la CPU aumentó rápidamente cuando se habilitó ATA TCQ. [ 2 ] Además, dado que el tiempo de servicio de interrupción puede ser impredecible, hay momentos en 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 programar el motor DMA de terceros. [ 2 ]
Por lo tanto, este estándar rara vez se implementó porque causaba una alta utilización de la CPU sin mejorar el rendimiento lo suficiente como para que valiera 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 necesarias en comparación con ATA TCQ. Al igual que ATA TCQ, permite hasta 32 comandos pendientes por dispositivo, [ 2 ] pero fue diseñado para aprovechar la capacidad de los adaptadores de bus 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 host, el disco duro le indica al adaptador de bus host qué comando desea ejecutar, lo que hace que el adaptador de bus host programe su motor DMA de primera parte integrado 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 tarea completada hasta que acumule muchos para enviarlos a la vez, lo que permite al sistema operativo notificar a varios subprocesos simultáneamente que sus tareas han finalizado. [ 2 ] Si otra tarea finaliza después de que se envíe dicha interrupción, el adaptador del bus del host puede concatenar los mensajes de finalización 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 equilibre el rendimiento del disco con la utilización de la CPU al determinar cuándo retener y cuándo enviar los mensajes de finalización. [ 2 ]
Referencias
- ↑ en forma deunidades SCSI paralelas , SCSI seriales y Fibre Channel
- 1 2 3 4 5 6 7 8 9 10 11 12 13 Dees, Brian (noviembre-diciembre de 2005). "Cola de comandos nativa: rendimiento avanzado en almacenamiento de escritorio". IEEE Potentials . 24 (4): 4– 7. doi : 10.1109/MP.2005.1549750 . S2CID 36264057 .
- 1 2 3 4 5 6 "Modelo de arquitectura SCSI - 3 (SAM-3)" (PDF) . Archivado del original (PDF) el 17 de marzo de 2012. Recuperado el 24 de febrero de 2007 .
- 1 2 "1532D: Conexión AT con interfaz de paquetes - 7 Volumen 1" (PDF) . 1532D: Conexión AT con interfaz de paquetes - 7 . Archivado del original (PDF) el 06-02-2012 . Recuperado el 02-01-2007 .
Enlaces externos
- ¿Puede la cola de comandos acelerar SATA? Por Patrick Schmid y Achim Roos de Tom's Hardware Guide.
- Adjunto AT
- SCSI
- ATA serie