Märkta kommandokö - Tagged Command Queuing

Tagged Command Queuing ( TCQ ) är en teknik inbyggd i vissa ATA- och SCSI- hårddiskar. Det gör att operativsystemet kan skicka flera läs- och skrivförfrågningar till en hårddisk . ATA TCQ är inte identisk i funktion till den mer effektiva Native Command Queuing (NCQ) som används av SATA- enheter. SCSI TCQ lider inte av samma begränsningar som ATA TCQ.

Utan TCQ var ett operativsystem begränsat till att skicka en begäran i taget. För att öka prestandan måste operativsystemet bestämma ordningen på förfrågningarna baserat på sitt eget - eventuellt felaktiga - perspektiv på hårddiskaktiviteten (annars känd som I / O-schemaläggning ). Med TCQ kan enheten fatta egna beslut om hur man beställer förfrågningarna (och i sin tur befriar operativsystemet från att behöva göra det). Således kan TCQ förbättra den totala prestandan för en hårddisk om den implementeras korrekt.

Översikt

För ökad effektivitet bör sektorerna betjänas i närheten av den aktuella huvudpositionen, inte den mottagna beställningen. Kön tar ständigt emot nya förfrågningar, uppfyller och tar bort befintliga förfrågningar och ombeställer kön enligt de aktuella väntande läs- / skrivförfrågningarna och huvudets förändrade position. Den exakta ordningsalgoritmen kan bero på styrenheten och själva enheten, men värddatorn gör helt enkelt förfrågningar efter behov och lämnar styrenheten att hantera detaljerna.

Denna kömekanism kallas ibland för " hisssökning ", eftersom bilden av en modern hiss i en byggnad som betjänar flera samtal och bearbetar dem för att minimera resor illustrerar idén bra.

Om knapparna för våningarna 5, 2 och 4 trycks in i den ordningen med hissen som börjar på våning 1, skulle en gammal hiss gå till våningarna i den begärda ordningen. En modern hiss behandlar förfrågningarna om att stanna vid våningarna i den logiska ordningen 2, 4 och 5, utan onödiga resor. Diskenheter som inte står i kö betjänar förfrågningarna i den mottagna ordern, som en gammal hiss; köer kör serviceförfrågningar i den mest effektiva ordningen. Detta kan förbättra prestandan något i ett system som används av en enskild användare, men kan dramatiskt öka prestandan i ett system med många användare som gör mycket olika förfrågningar på skivytan.

Jämförelse av SCSI TCQ, ATA TCQ och SATA NCQ

SCSI TCQ

SCSI TCQ var den första populära versionen av TCQ och är fortfarande populär idag. Det gör att uppgifter kan läggas in i en kö med ett av tre olika lägen:

  • köhuvud
  • beställde
  • enkel

I köhuvudläge , unikt för SCSI TCQ, skjuts en uppgift fram i en kö framför alla andra uppgifter inklusive andra väntande köhuvuduppgifter. Detta läge används inte mycket eftersom det kan orsaka svält vid resurser när det missbrukas.

I beställt läge måste en uppgift köras efter att alla äldre uppgifter har slutförts och innan alla nyare uppgifter börjar köras (exklusive nyare köuppgifter ).

Enkelt läge gör att uppgifter kan utföras i valfri ordning som inte bryter mot begränsningarna för uppgifterna i de andra två lägena. Efter att ett kommando i en uppgift har slutförts skickas ett meddelande av enheten som slutför kommandot till värdbussadaptern.

Huruvida SCSI TCQ orsakar massiva avbrottskostnader eller inte beror på bussen som används för att ansluta SCSI-värdbussadaptern. På konventionella PCI- , PCI-X- , PCI Express- och andra bussar som tillåter det, tillåter förstaparts DMA låg avbrottsomkostnad. Den äldre ISA-bussen krävde en SCSI-värdadapter för att generera ett avbrott för att få CPU att programmera DMA-motorn från tredje part för att utföra en överföring och krävde sedan ytterligare ett avbrott för att meddela CPU att en uppgift i kön var klar, vilket orsakade CPU-omkostnader.

SCSI TCQ Taglängd

SCSI-3-protokollet tillåter att 64 bitar används i taggfältet, vilket gör att upp till 2 64 uppgifter i en uppgiftsuppsättning kan utfärdas innan det krävs att några av dem slutförs innan fler kommandon utfärdas. Men olika protokoll som implementerar SCSI-protokollet kanske inte tillåter användning av alla 64 bitar. Till exempel tillåter äldre parallell SCSI åtta bitar av taggar, iSCSI tillåter upp till 32 taggar och Fibre Channel tillåter upp till 16 bitar av taggar med tagg 0xFFFF reserverad. Denna flexibilitet gör det möjligt för konstruktören av ett protokoll att utbyta köförmåga mot kostnad. Nätverk som kan vara stora, till exempel iSCSI-nätverk, drar nytta av fler taggbitar för att hantera det större antalet skivor i nätverket och de större latenser som sådana stora nät genererar, medan mindre nätverk, såsom parallella SCSI-kedjor, inte har tillräckligt med skivor eller latens för att behöva många taggbitar och kan spara pengar genom att använda ett system som stöder färre bitar.

ATA TCQ

ATA TCQ utvecklades i försök att ge samma fördelar som SCSI till ATA-enheter. Den finns i både Parallel och Serial ATA.

Denna ansträngning var inte särskilt framgångsrik eftersom ATA-bussen började som en ISA-buss med minskad stift. Kravet på mjukvarukompatibilitet fick ATA-värdbussadaptrar att fungera som ISA-bussenheter utan första parts DMA . När en enhet var redo för överföring, var det tvungen att avbryta CPU: n, vänta på att CPU skulle fråga skivan vilket kommando som var redo att köras, svara med kommandot att det var redo att köras, vänta på att CPU skulle programmera värden bussadapters DMA- motor från tredje part baserat på resultatet av det kommandot, vänta på att DMA-motorn från tredje part ska utföra kommandot och var tvungen att avbryta CPU igen för att meddela det när DMA-motorn slutförde uppgiften så att CPU kunde meddela tråden som begärde uppgiften att den begärda uppgiften var klar. Eftersom svar på avbrott använder CPU-tid steg CPU-användningen snabbt när ATA TCQ aktiverades. Eftersom avbrottstjänstiden kan vara oförutsägbar, finns det tillfällen då disken är redo att överföra data men inte kan göra det eftersom den måste vänta på att en CPU svarar på avbrottet så att CPU vet att den behöver programmera tredjeparts DMA-motor.

Därför implementerades denna standard sällan eftersom den orsakade högt CPU-utnyttjande utan att förbättra prestandan nog för att göra det värt. Denna standard tillåter upp till 32 utestående kommandon per enhet.

SATA NCQ

SATA NCQ är en modern standard som drastiskt minskar antalet nödvändiga CPU-avbrott jämfört med ATA TCQ. Liksom ATA TCQ tillåter den upp till 32 utestående kommandon per enhet, men var utformad för att dra nytta av förmågan hos SATA-värdbussadaptrar som inte efterliknar parallellt ATA-beteende för att stödja första parts DMA. Istället för att avbryta processorn innan uppgiften att tvinga den att programmera värdbussadapterns DMA-motor, berättar hårddisken värdbussadaptern vilket kommando den vill köra, vilket får värdbussadaptern att programmera sin integrerade förstaparts DMA-motor med parametrarna som ingick i kommandot som valdes av hårddisken när det först utfärdades, och sedan flyttar DMA-motorn de data som behövs för att utföra kommandot. För att ytterligare minska avbrottsoverheaden kan enheten hålla avbrottet med uppgiftsavslutade meddelanden tills det samlar många av dem att skicka på en gång, vilket gör att operativsystemet kan meddela många trådar samtidigt att deras uppgifter har slutförts. Om en annan uppgift slutförs efter att ett sådant avbrott har skickats kan värdbussadaptern sammanfoga kompletteringsmeddelandena tillsammans om den första uppsättningen kompletteringsmeddelanden inte har skickats till CPU: n. Detta gör att hårddiskens firmware-design kan byta ut diskprestanda mot CPU-användning genom att bestämma när du ska hålla tillbaka och när du ska skicka kompletteringsmeddelanden.

Referenser

externa länkar