Tagged Command Queuing - Tagged Command Queuing
Tagged Command Queuing ( TCQ ) is een technologie die in bepaalde ATA- en SCSI- harde schijven is ingebouwd . Hiermee kan het besturingssysteem meerdere lees- en schrijfverzoeken naar een harde schijf verzenden . ATA TCQ is niet identiek in functie aan de efficiëntere Native Command Queuing (NCQ) die wordt gebruikt door SATA- schijven. SCSI TCQ heeft niet dezelfde beperkingen als ATA TCQ.
Zonder TCQ was een besturingssysteem beperkt tot het verzenden van één verzoek per keer. Om de prestaties te verbeteren, moest het besturingssysteem de volgorde van de verzoeken bepalen op basis van zijn eigen - mogelijk onjuiste - perspectief van de activiteit van de harde schijf (ook wel bekend als I / O-planning ). Met TCQ kan de drive zijn eigen beslissingen nemen over hoe de verzoeken moeten worden besteld (en op zijn beurt het besturingssysteem ontlasten). TCQ kan dus de algehele prestaties van een harde schijf verbeteren als deze correct is geïmplementeerd.
Overzicht
Voor meer efficiëntie moeten de sectoren worden bediend in volgorde van nabijheid van de huidige koppositie, niet de ontvangen order. De wachtrij ontvangt voortdurend nieuwe verzoeken, voldoet aan en verwijdert bestaande verzoeken, en herordent de wachtrij volgens de huidige lopende lees- / schrijfverzoeken en de veranderende positie van het hoofd. Het exacte herschikkingsalgoritme kan afhangen van de controller en de schijf zelf, maar de hostcomputer doet gewoon verzoeken als dat nodig is en laat de controller de details afhandelen.
Dit wachtrijmechanisme wordt soms " lift zoeken " genoemd, omdat het beeld van een moderne lift in een gebouw die meerdere oproepen bedient en deze verwerkt om reizen te minimaliseren, het idee goed illustreert.
Als de knoppen voor verdiepingen 5, 2 en 4 in die volgorde worden ingedrukt terwijl de lift op verdieping 1 begint, gaat een oude lift naar de verdiepingen in de gevraagde volgorde. Een moderne lift verwerkt de verzoeken om te stoppen bij verdiepingen in de logische volgorde 2, 4 en 5, zonder onnodig reizen. Schijfstations die niet in de wachtrij staan, behandelen de verzoeken in de ontvangen volgorde, zoals een oude lift; wachtrijen stuurt serviceverzoeken in de meest efficiënte volgorde. Dit kan de prestaties enigszins verbeteren in een systeem dat door één gebruiker wordt gebruikt, maar kan de prestaties dramatisch verbeteren in een systeem met veel gebruikers die zeer uiteenlopende verzoeken doen op het schijfoppervlak.
Vergelijking van SCSI TCQ, ATA TCQ en SATA NCQ
SCSI TCQ
SCSI TCQ was de eerste populaire versie van TCQ en is nog steeds populair. Hiermee kunnen taken in een wachtrij worden ingevoerd met behulp van een van de drie verschillende modi:
- hoofd van de wachtrij
- besteld
- gemakkelijk
In de wachtrijmodus , uniek voor SCSI TCQ, wordt een taak vooraan in een wachtrij geplaatst, vóór alle andere taken, inclusief andere wachtende taken in de wachtrij. Deze modus wordt niet veel gebruikt omdat het bij misbruik kan leiden tot uithongering van hulpbronnen .
In de geordende modus moet een taak worden uitgevoerd nadat alle oudere taken zijn voltooid en voordat alle nieuwere taken worden uitgevoerd (met uitzondering van nieuwere taken in de wachtrij ).
In de eenvoudige modus kunnen taken worden uitgevoerd in elke volgorde die de beperkingen van de taken in de andere twee modi niet schendt. Nadat een opdracht in een taak is voltooid, wordt een melding verzonden door het apparaat dat de opdracht heeft voltooid naar de hostbusadapter.
Of SCSI TCQ al dan niet enorme interrupt-overhead veroorzaakt, hangt af van de bus die wordt gebruikt om de SCSI-hostbusadapter aan te sluiten. Op conventionele PCI- , PCI-X- , PCI Express- en andere bussen die dit mogelijk maken, zorgt first-party DMA voor lage interruptoverhead. De oudere ISA-bus vereiste een SCSI-hostadapter om een interrupt te genereren om ervoor te zorgen dat de CPU de DMA-engine van derden programmeerde om een overdracht uit te voeren, en vereiste vervolgens een andere interrupt om de CPU te laten weten dat een taak in de wachtrij was voltooid, waardoor een hoge CPU-overhead.
Lengte SCSI TCQ-tag
Het SCSI-3-protocol staat het gebruik van 64 bits toe in het tagveld, waardoor maximaal 2 64 taken in één taakset kunnen worden uitgegeven voordat sommige ervan moeten worden voltooid voordat er nog meer opdrachten worden gegeven. Verschillende protocollen die het SCSI-protocol implementeren, staan echter mogelijk niet het gebruik van alle 64 bits toe. Oudere parallelle SCSI staat bijvoorbeeld 8 bits tagbits toe, iSCSI staat tot 32 tagbits toe, en Fibre Channel staat tot 16 bits tag toe met tag 0xFFFF gereserveerd. Door deze flexibiliteit kan de ontwerper van een protocol de wachtrijcapaciteit inruilen tegen de kosten. Netwerken die groot kunnen zijn, zoals iSCSI-netwerken, profiteren van meer tagbits om het grotere aantal schijven in het netwerk aan te kunnen en de grotere latenties die dergelijke grote netwerken genereren, terwijl kleinschalige netwerken, zoals parallelle SCSI-ketens, dat niet doen. hebben voldoende schijven of latentie om veel tagbits nodig te hebben en kunnen geld besparen door een systeem te gebruiken dat minder bits ondersteunt.
ATA TCQ
ATA TCQ is ontwikkeld in een poging om dezelfde voordelen als SCSI op ATA-schijven te brengen. Het is beschikbaar in zowel parallelle als seriële ATA.
Deze poging was niet erg succesvol, omdat de ATA-bus begon als een ISA-bus met een gereduceerd aantal pinnen. De vereiste voor softwarecompatibiliteit zorgde ervoor dat ATA-hostbusadapters zich gedragen als ISA-busapparaten zonder first-party DMA . Wanneer een schijf klaar was voor een overdracht, moest deze de CPU onderbreken, wachten tot de CPU de schijf vraagt welk commando klaar was om uit te voeren, reageren met het commando dat het klaar was om uit te voeren, wachten tot de CPU de host heeft geprogrammeerd de DMA- engine van de busadapter op basis van het resultaat van die opdracht, wacht tot de DMA-engine van de derde partij de opdracht uitvoert en moest vervolgens de CPU opnieuw onderbreken om te melden wanneer de DMA-engine de taak had voltooid, zodat de CPU kon meld de thread die de taak heeft aangevraagd dat de gevraagde taak is voltooid. Omdat het reageren op interrupts CPU-tijd kost, steeg het CPU-gebruik snel wanneer ATA TCQ werd ingeschakeld. Aangezien de onderbrekingsservicetijd onvoorspelbaar kan zijn, zijn er momenten waarop de schijf gereed is om gegevens over te dragen, maar dit niet kan doen omdat deze moet wachten tot een CPU op de onderbreking reageert, zodat de CPU weet dat hij de DMA-engine van derden.
Daarom werd deze standaard zelden geïmplementeerd omdat het een hoog CPU-gebruik veroorzaakte zonder de prestaties voldoende te verbeteren om dit de moeite waard te maken. Deze standaard staat maximaal 32 openstaande opdrachten per apparaat toe.
SATA NCQ
SATA NCQ is een moderne standaard die het aantal vereiste CPU-interrupts drastisch vermindert in vergelijking met ATA TCQ. Net als ATA TCQ zijn maximaal 32 uitstekende opdrachten per apparaat mogelijk, maar het is ontworpen om te profiteren van de mogelijkheid van SATA-hostbusadapters die geen parallel ATA-gedrag emuleren om first-party DMA te ondersteunen. In plaats van de CPU voor de taak te onderbreken om hem te dwingen de DMA-engine van de hostbusadapter te programmeren, vertelt de harde schijf de hostbusadapter welke opdracht hij wil uitvoeren, waardoor de hostbusadapter zijn geïntegreerde first-party DMA-engine programmeert met de parameters die waren opgenomen in de opdracht die door de harde schijf was geselecteerd toen deze voor het eerst werd uitgegeven, en vervolgens verplaatst de DMA-engine de gegevens die nodig zijn om de opdracht uit te voeren. Om de overhead voor interrupts verder te verminderen, kan de schijf de interrupt met de voltooide taakberichten inhouden totdat er veel van deze berichten zijn verzameld om ze tegelijk te verzenden, waardoor het besturingssysteem veel threads tegelijk kan laten weten dat hun taken zijn voltooid. Als een andere taak is voltooid nadat een dergelijke onderbreking is verzonden, kan de hostbusadapter de voltooiingsberichten samenvoegen als de eerste set voltooiingsberichten niet naar de CPU is verzonden. Hierdoor kan het firmware-ontwerp van de harde schijf de schijfprestaties afzetten tegen het CPU-gebruik door te bepalen wanneer moet worden achtergehouden en wanneer voltooiingsberichten moeten worden verzonden.
Referenties
Externe links
- Kan Command Queuing Turbo Charge SATA opladen? door Patrick Schmid en Achim Roos van Tom's Hardware Guide