stringtranslate.com

Cola de comandos etiquetada

Tagged Command Queuing ( TCQ ) es una tecnología incorporada 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 más eficiente Native Command Queuing (NCQ) utilizada por las unidades SATA . [2] SCSI TCQ no sufre de 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 basándose en su propia perspectiva (posiblemente incorrecta) de la actividad del disco duro (también conocida como programación de E/S ). Con TCQ, el disco puede tomar sus propias decisiones sobre cómo ordenar las solicitudes (y, a su vez, liberar al sistema operativo de tener que hacerlo). Por lo tanto, TCQ puede mejorar el rendimiento general de un disco duro si se implementa correctamente.

Descripción general

Para aumentar la eficiencia, los sectores deben recibir servicio en orden de proximidad a la posición actual del cabezal, no en el orden en que se reciben. 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 el ordenador host simplemente realiza las solicitudes según sea necesario, dejando que el controlador se encargue de los detalles.

Este mecanismo de colas 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 se pulsan los botones de los pisos 5, 2 y 4 en ese orden y el ascensor empieza en el piso 1, un ascensor antiguo iría a los pisos en el orden solicitado. Un ascensor moderno procesa las solicitudes de parada en los pisos en el orden lógico 2, 4 y 5, sin desplazamientos innecesarios. Las unidades de disco que no hacen cola atienden las solicitudes en el orden en que se reciben, como un ascensor antiguo; las unidades que hacen 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 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

TCQ de SCSI

SCSI TCQ fue la primera versión popular de TCQ y sigue siendo popular en la actualidad. Permite introducir tareas en una cola mediante uno de tres modos diferentes: [3]

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 de cabecera de cola pendientes. [2] [3] [4] Este modo no se utiliza mucho porque puede provocar una escasez de recursos cuando se abusa de él.

En el modo ordenado , una tarea debe ejecutarse después de que todas las tareas anteriores se hayan completado y antes de que todas las tareas más nuevas comiencen a ejecutarse (excluyendo las tareas más nuevas de cabecera de 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 de bus host. [3]

El hecho de que SCSI TCQ provoque o no una sobrecarga de interrupción masiva depende del bus que se utilice para conectar el adaptador de bus host SCSI. En PCI convencional , PCI-X , PCI Express y otros buses que lo permiten, el DMA de primera parte permite una baja sobrecarga de interrupción. El bus ISA más antiguo requería que un adaptador host SCSI generara una interrupción para 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 finalizado, [2] lo que causaba una alta sobrecarga de la CPU.

Longitud de etiqueta TCQ de SCSI

El protocolo SCSI-3 permite utilizar 64 bits en el campo de etiqueta, lo que permite emitir hasta 2 tareas de 64 bits 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 más antiguo permite 8 bits de bits de etiqueta, el iSCSI permite hasta 32 bits de etiqueta y el 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 puesta en cola con el costo. Las redes que pueden ser grandes, como las redes iSCSI, se benefician de más bits de etiqueta para lidiar con la mayor cantidad de discos en la red y las latencias más grandes que generan esas redes grandes, mientras que las redes de menor escala, como las cadenas SCSI paralelas, no tienen suficientes discos o latencia para necesitar muchos bits de etiqueta y pueden ahorrar dinero utilizando un sistema que admita menos bits.

TCQ de la ATA

ATA TCQ se desarrolló con el objetivo de ofrecer los mismos beneficios 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 de recuento de pines reducido. 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 le preguntara al disco qué comando estaba listo para ejecutarse, responder con el comando que estaba listo para ejecutar, esperar a que la CPU programara el motor DMA de terceros del adaptador de bus host según el resultado de ese comando, esperar a que el motor DMA de terceros ejecutara el comando y luego tenía que interrumpir la CPU nuevamente para notificarle cuando el motor DMA terminó 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 del 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 sin control

SATA NCQ es un estándar moderno que reduce drásticamente la cantidad de interrupciones de CPU requeridas 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 de ATA paralelo para admitir DMA de primera parte. [2] En lugar de interrumpir la CPU antes de la tarea para obligarla a programar el motor DMA del adaptador de bus host, el disco duro le dice 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 seleccionó 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 reúne 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 otra tarea se completa después de que se envía dicha interrupción, el adaptador de bus 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 equilibre 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

  1. ^ en forma de unidades SCSI paralelas , SCSI conectadas en serie y de canal de fibra
  2. ^ abcdefghijklm Dees, Brian (noviembre–diciembre de 2005). "Colas de comandos nativas: rendimiento avanzado en el almacenamiento de escritorio". Potenciales IEEE . 24 (4): 4–7. doi :10.1109/MP.2005.1549750. S2CID  36264057.
  3. ^ abcdef "Modelo de arquitectura SCSI - 3 (SAM-3)" (PDF) . Archivado desde el original (PDF) el 2012-03-17 . Consultado el 2007-02-24 .
  4. ^ ab "1532D: AT Attachment with Packet Interface - 7 Volume 1" (PDF) . 1532D: AT Attachment with Packet Interface - 7 . Consultado el 2 de enero de 2007 .

Enlaces externos