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.