Tagged Command Queuing ( TCQ ) er en teknologi, der bruges i nogle ATA- og SCSI -harddiske. Denne teknologi gør det muligt for operativsystemet at sende flere læse- og skriveanmodninger til harddisken. I sin funktion adskiller ATA TCQ sig fra den mere effektive NCQ- teknologi, der bruges i SATA- drev [1] . Men SCSI TCQ lider ikke af de samme begrænsninger som ATA TCQ.
Før opfindelsen af TCQ var operativsystemet kun i stand til at sende én anmodning ad gangen. For at forbedre ydeevnen skal denne teknologi bestille anmodninger baseret på dens egne overvejelser om harddiskaktivitet. Med TCQ kan disken træffe sine egne beslutninger om, hvordan man bestiller forespørgsler (hvilket igen skulle aflaste operativsystemet for denne belastning). Som et resultat kan TCQ forbedre den overordnede ydeevne af en harddisk, hvis teknologien implementeres korrekt.
For at øge effektiviteten bør sektorer behandles i rækkefølge i nærheden af hovedets aktuelle position, det vil sige, at anmodninger fra de nærmeste sektorer behandles først, og de fjerneste til sidst. Køen fyldes konstant op med nye anmodninger, og afsluttede anmodninger slettes, og omdefineringen af køen sker i overensstemmelse med allerede planlagte læse/skrive-anmodninger og ændringer i hovedets position. Den nøjagtige bestillingsalgoritme kan afhænge af controlleren og selve disken, mens computeren selv kun sender anmodninger, når det er nødvendigt, og overlader udførelsesdetaljerne til controllerens skøn.
Denne kømekanisme omtales nogle gange som " elevatorsøgning ", på grund af ligheden med, hvordan moderne elevatorer bevæger sig i bygninger, reagerer på mange opkald og behandler dem for at minimere bevægelse, hvilket illustrerer denne idé ganske tydeligt.
Hvis knapperne for etage 5, 2 og 4 trykkes ned i nævnte rækkefølge, og elevatoren hæves fra første sal, vil den gamle elevator bevæge sig gennem etagerne i den rækkefølge, anmodningerne kom ind. En moderne elevator vil på den anden side behandle og rækkefølge anmodninger for at stoppe på etager i en logisk rækkefølge på 2, 4 og 5 uden unødvendige bevægelser. Diske uden kø udfører anmodninger i den rækkefølge, de modtages, som de gamle elevatorer ovenfor. Drev i kø udfører anmodninger i den mest effektive rækkefølge. Dette giver mulighed for en vis forbedring af ydeevnen på systemer med en enkelt bruger, men den største effekt af brugen af denne teknologi opnås i systemer, som flere brugere arbejder med samtidigt, og sender forespørgsler, der tilsammen er adresseret til hele diskoverfladen.
SCSI TCQ er den første mest populære version af TCQ og fortsætter med at være populær i dag. Det giver dig mulighed for at bestille opgaver i en kø på en af tre forskellige måder [2] :
Foran køtilstanden , som udelukkende bruges i SCSI TCQ, placeres opgaven foran i køen foran alle andre opgaver, inklusive tidligere planlagte opgaver fra den tidligere leder af køen [2] . [1] [3] . Denne tilstand er ikke udbredt, da den kan forårsage mangel på data i tilfælde af eventuelle afvigelser.
I ordnet tilstand bør en opgave køre umiddelbart efter alle tidligere opgaver og før alle nyere, undtagen kun de nyere opgaver i spidsen af køen [2] .
Simpel tilstand giver dig mulighed for at udføre opgaver i enhver rækkefølge, der ikke overtræder reglerne og begrænsningerne for opgaver forbundet med de to foregående tilstande [2] . Når en kommando i en opgave udføres, sender enheden en meddelelse til værtsbusadapteren om, at kommandoen er fuldført [2] . Uanset hvad, pådrager SCSI TCQ en masse overhead ved brug af interrupts, afhængigt af den bus, der er tilsluttet SCSI-rodbusadapteren. For PCI, PCI-X, PCI Express og andre busser, der tillader dette, undgår man dette ved at bruge DMA på bekostning af at sænke belastningen. Den ældre ISA-bussen kræver en SCSI-adapter for at generere interrupts for at få adgang til processoren, så tredjeparts DMA-controllere kan fuldføre overførslen, og derefter kræves endnu en interrupt for at underrette processoren om, at opgaven i køen er fuldført [1] , derved forårsager ret stor belastning på CPU'en.
SCSI-3-protokollen tildeler 64 bits til brug som et label (tag) felt, hvilket tillader op til 264 opgaver at passe i et transmissionssæt, hvilket indikerer, at nogle af kommandoerne skal udføres, før efterfølgende kommandoer transmitteres [2] . Forskellige protokoller implementeret i SCSI-protokollen tillader muligvis ikke, at alle 64 bits bruges. For eksempel tillader ældre parallel SCSI kun 8 bit til etiketter (tags), iSCSI tillader op til 32 bit, og Fibre Channel tillader op til 16 bit for tags med det reserverede 0xFFFF -tag . Denne fleksibilitet gør det muligt for protokoldesigneren at afveje evnen til at håndtere køer og "omkostninger". Netværk, der er i stand til at nå store størrelser, såsom iSCSI-netværk, drager fordel af flere bits til etiketter, godt kombineret med flere diske i netværket og højere latenstid forårsaget af lignende netværksstørrelser, mens mindre netværk, såsom parallelle SCSI-kæder, ikke har nok diske eller latens for at kræve et stort antal bits til etiketter og tillade besparelser ved at bruge systemer, der understøtter færre bits (de er normalt nemmere at implementere og derfor billigere, eller de er forældede systemer).
ATA TCQ blev udviklet i et forsøg på at bringe fordelene ved SCSI til ATA-harddiske. Teknologien findes til både almindelig (parallel) og seriel ATA.
Denne idé var ikke vellykket, da ATA-bussen var en variant af ISA-bussen med et reduceret antal ben. Kravet om softwarekompatibilitet gjorde ATA-adaptere meget lig ISA-bus-enheder uden Bus-mastering -understøttelse . Når drevet er klar til at overføre data, skal det sende et afbrydelsessignal til CPU'en, vente på at processoren "spørger" drevet hvilken kommando den er klar til at udføre, svare at den er klar til at udføre den, vente på processoren for at programmere busadapteren til at styre via indirekte DMA baseret på resultaterne af den forrige kommando, vent på, at den formidlede DMA-controller udfører kommandoen, og skal derefter sende afbrydelsessignalet igen til processoren for at give besked, når DMA-controlleren er færdig med at udføre opgaven, så processoren kan give tråden besked om, at den ønskede opgave er udført. [1] . Fordi interrupt-svar medfører for meget overhead, øges CPU-forbruget hurtigt med ATA TCQ aktiveret [1] . Da behandlingstiden for afbrydelsessignalet ikke kan forudsiges på forhånd, er der desuden situationer, hvor disken er klar til at overføre data, men ikke kan overføre dem på grund af det faktum, at den skal vente på, at processoren reagerer på afbrydelsen signal, da det er ham, der er ansvarlig for at sætte formidlet DMA [1] .
Derfor implementeres denne standard yderst sjældent på grund af den høje belastning på CPU'en og uden en håndgribelig forbedring af ydeevnen, hvilket alt dette ville give mening [1] . Denne standard giver mulighed for op til 32 ventende kommandoer pr. enhed [3] .
SATA NCQ er en ny standard, der ikke kræver CPU-afbrydelsessignaler. Ligesom ATA TCQ har den op til 32 rå-kommandoer pr. enhed [1] , men den er designet med SATA-adapternes muligheder i tankerne, uden at emulere parallel ATA-drift og samtidig understøtte direkte DMA [1] . I stedet for afbrydelsessignaler bruges følgende skema: før jobbet tvinger CPU'en til at programmere DMA-adapteren, fortæller harddisken adapteren, hvilken kommando den vil udføre, som et resultat af hvilken adapteren programmerer sin indbyggede DMA-controller i henhold til parametrene specificeret i kommandoen, tidligere valgt harddisk, sender DMA-controlleren de data, der er nødvendige for at udføre kommandoen [1] . For yderligere at reducere interrupt-overhead kan disken forsinke afbrydelser med opgavefuldførelsessignaler, indtil der er nok til at sende dem sammen, og derved tillade CPU'en at underrette flere tråde på én gang om, at deres opgaver er afsluttet [1] . Hvis en anden opgave afsluttes, efter at en sådan afbrydelse er sendt, kan adapteren rette færdiggørelsesmeddelelser, hvis de ikke blev sendt til processoren [1] . Dette gør det muligt for harddiskens firmware at afveje diskydeevne og CPU-belastning ved at bestemme, hvornår der skal undlades i forhold til hvornår der skal sendes færdiggørelsesmeddelelser [1] .