
Native Command Queuing (NCQ) on SATA-spetsifikatsiooni osa, mille eesmärk on parandada mehaaniliste kõvaketaste (ja teatud juhtudel ka SSD-de) töökäitumist mitme samaaegse I/O-taotluse korral. NCQ võimaldab kõvakettal ise ümberjärjestada hostilt saadud lugemis- ja kirjutuskäske nii, et ketta peade ja plaadi pöörlemise tõttu tekkiv liikumine oleks minimaalne. Tulemuseks on tavaliselt madalam latentsus ja parem läbilaskevõime olukordades, kus korraga on palju mittesünkroonseid I/O-taotlusi (näiteks serverikeskkonnad või virtualiseerimine).
Kuidas NCQ töötab
- Host (operatsioonisüsteem või kontroller) saadab kettale järjest mitut käsku, igaühel on oma identifikaator (tag).
- Ketas hoiab käske järjekorras (queue) ja analüüsib nende LBAd (logical block address) ning muud infot, et valida optimaalse täitmisjärjekorra — see võib oluliselt vähendada mehaanilist pealiikumist.
- NCQ võib korraga hoida kuni 32 käsku (sõltuvalt implementeerimisest; praktikas tihti 31 aktiivset käsku), mis on märkimisväärne paranemine varasematest ATA TCQ-lahendustest.
Eelised
- Parem jõudlus kõrge paralleelsusega töökoormustes: suudab vähendada otsitavate positsioonide vahetusi ja seega lühendada keskmist I/O-aega.
- Vähem kulumist: peade ebaoluline liigutamine väheneb, mis võib pikendada mehaanilise draivi eluiga.
- Riistvaraline ümberjärjestamine: kuna kettal endal on kõige rohkem infot (pöörlemisasend, mehaanilised omadused), võib see teha paremaid otsuseid kui hosti poolt dikteeritud järjestus.
Piirangud ja võimalikud probleemid
- Lisaviivitus väikeste ja järjestikuste operatsioonide puhul: NCQ-logika lisab mõningast haldustööd, mis mõnel juhul (näiteks järjestikulised suured lugemised/kirjutamised või mängud, kus I/O-mustrid on lihtsad) võib tulemuseks olla kergelt halvem jõudlus. See sõltub draivi firmwar'ist ja töökoormusest.
- Vanemad süsteemid ja draiverid: algusaegadel mõnedes konfiguratsioonides toimis NCQ alamoptimaalselt või seda ei toetatud korralikult.
- SSD ja tänapäevased ajad: NVMe/PCIe-seadmetel on hoopis teistsugune ja palju võimsam käsureavahetuse mehhanism (sügavamad järjekorrad, asünkroonne käitumine), seega SATA-NCQ ei kehti NVMe-draividele. Siiski on NCQ kasulik paljudele SATA SSD-dele ja mehaanilistele ketastele.
NCQ ja teised järjekorustamismeetodid
NCQ tuli pärast Parallel ATA "Tagged Command Queuing" (TCQ) arenguid. PATA TCQ jäi laialdaselt kasutusele saamata peamiselt tänu piirangutele host-kontrollerite ja ISA-põhiste protokollide tõttu, mis tekitasid suurt protsessori koormust ja väikese reaalse võiduprotsendi. NCQ erineb PATA TCQ-st peamiselt selle poolest, et ümberjärjestamise loogika toimub kettal endal ning iga käsk on võrdselt "märgistatud" — see on tavaliselt efektiivsem, sest kettal on oma mehaanika kohta täpsem info. NCQ ja PATA TCQ järjekorra maksimaalne pikkus on 32 käsku (praktikas tihti 31). SCSI-maailmas on TCQ tavaliselt palju suurema järjekorra pikkusega, mis võimaldab keerukamaid ja sügavamaid latentsuse juhtimise strateegiaid.
Kuidas NCQ lubada ja kasutada
- NCQ peab olema toetatud nii kõvakettal kui ka hosti SATA-kontrolleril/adapteril.
- Paljud tänapäevased kiibistikud toetavad Advanced Host Controller Interface (AHCI) standardit — AHCI võimaldab operatsioonisüsteemil kasutada üldist draiverit, mis omakorda võimaldab NCQ-d ja muid funktsioone (nt soojendatud seadmete eemaldamine, hot-plug).
- Operatsioonisüsteem peab laadima vastava seadmedraiveri. Varasemalt nõudis Windows XP sageli tootjapõhist AHCI-draiverit NCQ/AHCI kasutamiseks; hilisemates Windowsi versioonides (alates Windows Vista ja palju kaasaegsemates opsüsteemides) on üldised AHCI-draiverid juba olemas. Ka Linuxi tuumad toetavad AHCI püsivalt.
- Praktiline nõuanne: AHCI/NCQ tavaliselt lubatakse BIOS/UEFI sätetest. Kui lülitate AHCI-režiimi pärast opsüsteemi installimist, võib vaja minna täiendavaid samme (nt Windowsis registri muutmine või vastava draiveri paigaldus), et süsteem jätkuvalt käivituks.
Kaasaegne kontekst ja märkus
NCQ jäi tähtsaks tehnoloogiaks SATA-mehaaniliste ketaste ja SATA SSD-de puhul. Viimastel aastatel on aga NVMe-põhised PCIe-lahendused muutnud suure osa kõrge jõudluse salvestusest — NVMe pakub palju sügavamaid järjekordi ja uuemat I/O-arhitektuuri, mis ületab SATA/NCQ piirid. Siiski on NCQ endiselt asjakohane paljudes serveri- ja lauaarvutikonfiguratsioonides, kus kasutatakse SATA-draive.
[märkus] Originaalteksti viide ajale (nt "2004. aasta seisuga") ja mõned algseisuga seotud järeldused võivad olla ajas muutunud: tänapäeval on NCQ-tugi laialdasem, draiverid ja kontrollerid arenenumad ning opsüsteemide sisseehitatud AHCI/NCQ-tugi on tunduvalt parem kui algusaegadel.
Praktiline kontroll: kui soovite teada, kas konkreetne kõvaketas toetab NCQ, vaadake draivi tehnilisi andmeid või tootja dokumentatsiooni ning kontrollige, kas operatsioonisüsteem ja SATA-kontroller töötavad AHCI-režiimis ja laadivad vastava draiveri.