Accodamento comandi con tag - Tagged Command Queuing

Tagged Command Queuing ( TCQ ) è una tecnologia incorporata in alcuni dischi rigidi ATA e SCSI . Consente al sistema operativo di inviare più richieste di lettura e scrittura a un disco rigido . ATA TCQ non è identico in funzione al più efficiente Native Command Queuing (NCQ) utilizzato dalle unità SATA . SCSI TCQ non soffre delle stesse limitazioni di ATA TCQ.

Senza TCQ, un sistema operativo era limitato all'invio di una richiesta alla volta. Per aumentare le prestazioni, il sistema operativo doveva determinare l'ordine delle richieste in base alla propria prospettiva, forse errata, dell'attività del disco rigido (altrimenti nota come pianificazione I / O ). Con TCQ, l'unità può prendere le proprie decisioni su come ordinare le richieste (e a sua volta sollevare il sistema operativo da doverlo fare). Così TCQ può migliorare le prestazioni complessive di un disco rigido se è implementato correttamente.

Panoramica

Per una maggiore efficienza i settori dovrebbero essere serviti in ordine di vicinanza alla posizione di testa attuale, non all'ordine ricevuto. La coda riceve costantemente nuove richieste, soddisfa e rimuove le richieste esistenti e riordina la coda in base alle attuali richieste di lettura / scrittura in sospeso e alla posizione mutevole della testa. L'esatto algoritmo di riordino può dipendere dal controller e dall'unità stessa, ma il computer host effettua semplicemente le richieste secondo necessità, lasciando che sia il controller a gestire i dettagli.

Questo meccanismo di coda viene talvolta definito " ricerca dell'ascensore ", poiché l'immagine di un moderno ascensore in un edificio che serve più chiamate e le elabora per ridurre al minimo i viaggi illustra bene l'idea.

Se i pulsanti per i piani 5, 2 e 4 vengono premuti in quest'ordine con l'ascensore che inizia dal piano 1, un vecchio ascensore andrebbe ai piani nell'ordine richiesto. Un moderno ascensore elabora le richieste di sosta ai piani nell'ordine logico 2, 4 e 5, senza spostamenti inutili. Le unità disco non in coda servono le richieste nell'ordine ricevuto, come un vecchio ascensore; l'accodamento guida le richieste di servizio nell'ordine più efficiente. Ciò può migliorare leggermente le prestazioni in un sistema utilizzato da un singolo utente, ma può aumentare notevolmente le prestazioni in un sistema con molti utenti che effettuano richieste molto diverse sulla superficie del disco.

Confronto tra SCSI TCQ, ATA TCQ e SATA NCQ

SCSI TCQ

SCSI TCQ è stata la prima versione popolare di TCQ ed è ancora popolare oggi. Consente di inserire attività in una coda utilizzando una delle tre diverse modalità:

  • capo della coda
  • ordinato
  • semplice

Nella modalità head of queue , unica per SCSI TCQ, un'attività viene inserita in primo piano in una coda, prima di tutte le altre attività, comprese le altre attività head of queue in sospeso. Questa modalità non viene utilizzata molto perché può causare la fame di risorse se abusata.

In modalità ordinata , un'attività deve essere eseguita dopo che tutte le attività meno recenti sono state completate e prima che tutte le attività più recenti inizino a essere eseguite (escluse le attività di testa della coda più recenti ).

La modalità semplice consente l'esecuzione delle attività in qualsiasi ordine che non violi i vincoli sulle attività nelle altre due modalità. Al termine di un comando in un'attività, il dispositivo che ha completato il comando invia una notifica all'adattatore bus host.

Il fatto che SCSI TCQ causi o meno un enorme sovraccarico di interrupt dipende dal bus utilizzato per collegare l'adattatore del bus host SCSI. Su PCI convenzionali , PCI-X , PCI Express e altri bus che lo consentono, il DMA di prima parte consente un basso overhead di interrupt. Il vecchio bus ISA richiedeva un adattatore host SCSI per generare un interrupt per far sì che la CPU programmasse il motore DMA di terze parti per eseguire un trasferimento, quindi richiedeva un altro interrupt per notificare alla CPU che un'attività nella coda era terminata, causando Overhead della CPU.

Lunghezza tag SCSI TCQ

Il protocollo SCSI-3 consente di utilizzare 64 bit nel campo del tag, consentendo di eseguire fino a 2 64 attività in un set di attività prima di richiedere che alcune di esse vengano completate prima di impartire altri comandi. Tuttavia, diversi protocolli che implementano il protocollo SCSI potrebbero non consentire l'uso di tutti i 64 bit. Ad esempio, il vecchio SCSI parallelo consente 8 bit di bit di tag, iSCSI consente fino a 32 bit di tag e Fibre Channel consente fino a 16 bit di tag con tag 0xFFFF riservati. Questa flessibilità consente al progettista di un protocollo di bilanciare la capacità di accodamento con il costo. Le reti che possono essere grandi, come le reti iSCSI, traggono vantaggio da più bit di tag per gestire il maggior numero di dischi nella rete e le latenze maggiori generate da reti così grandi, mentre le reti su scala più piccola, come le catene SCSI parallele, non lo fanno avere abbastanza dischi o latenza per richiedere molti bit di tag e può risparmiare denaro utilizzando un sistema che supporta meno bit.

ATA TCQ

ATA TCQ è stato sviluppato nel tentativo di portare gli stessi vantaggi di SCSI alle unità ATA. È disponibile sia in parallelo che in seriale.

Questo sforzo non ha avuto molto successo perché il bus ATA è iniziato come un bus ISA a numero ridotto di pin. Il requisito per la compatibilità del software ha fatto sì che gli adattatori bus host ATA agiscano come dispositivi bus ISA senza DMA di prima parte . Quando un'unità era pronta per un trasferimento, doveva interrompere la CPU, attendere che la CPU chiedesse al disco quale comando era pronto per eseguire, rispondere con il comando che era pronto per eseguire, attendere che la CPU programmasse l'host motore DMA di terze parti dell'adattatore bus in base al risultato di quel comando, attendere che il motore DMA di terze parti esegua il comando, quindi ha dovuto interrompere nuovamente la CPU per notificarla quando il motore DMA ha terminato l'attività in modo che la CPU potesse notificare al thread che ha richiesto l'attività che l'attività richiesta è stata completata. Poiché la risposta agli interrupt utilizza il tempo della CPU, l'utilizzo della CPU è aumentato rapidamente quando è stato abilitato ATA TCQ. Inoltre, poiché il tempo del servizio di interrupt può essere imprevedibile, ci sono momenti in cui il disco è pronto per trasferire i dati ma non è in grado di farlo perché deve attendere che una CPU risponda all'interrupt in modo che la CPU sappia che ha bisogno di programmare il motore DMA di terze parti.

Pertanto, questo standard è stato implementato raramente perché causava un elevato utilizzo della CPU senza migliorare le prestazioni a sufficienza per renderlo utile. Questo standard consente fino a 32 comandi in sospeso per dispositivo.

SATA NCQ

SATA NCQ è uno standard moderno che riduce drasticamente il numero di interrupt CPU richiesti rispetto a ATA TCQ. Come ATA TCQ, consente fino a 32 comandi eccezionali per dispositivo, ma è stato progettato per sfruttare la capacità degli adattatori bus host SATA che non emulano il comportamento ATA parallelo per supportare DMA di prima parte. Invece di interrompere la CPU prima dell'attività per costringerla a programmare il motore DMA dell'adattatore bus host, il disco rigido comunica all'adattatore bus host quale comando desidera eseguire, facendo in modo che l'adattatore bus host programmi il suo motore DMA di prima parte integrato con i parametri inclusi nel comando selezionato dal disco rigido quando è stato emesso per la prima volta, quindi il motore DMA sposta i dati necessari per eseguire il comando. Per ridurre ulteriormente il sovraccarico di interrupt, l'unità può trattenere l'interruzione con i messaggi dell'attività completata finché non ne raccoglie molti da inviare contemporaneamente, consentendo al sistema operativo di notificare simultaneamente a molti thread che le loro attività sono state completate. Se un'altra attività viene completata dopo l'invio di tale interruzione, l'adattatore bus host può concatenare i messaggi di completamento insieme se la prima serie di messaggi di completamento non è stata inviata alla CPU. Ciò consente alla progettazione del firmware del disco rigido di bilanciare le prestazioni del disco con l'utilizzo della CPU determinando quando trattenere e quando inviare messaggi di completamento.

Riferimenti

link esterno