Innfødt kommandokø - Native Command Queuing
I databehandling er Native Command Queuing ( NCQ ) en utvidelse av Serial ATA- protokollen som gjør at harddiskstasjoner internt kan optimalisere rekkefølgen som mottatte lese- og skrivekommandoer utføres. Dette kan redusere mengden unødvendig bevegelse av stasjonshodet, noe som resulterer i økt ytelse (og noe redusert slitasje på stasjonen) for arbeidsbelastninger der flere samtidige lese- / skriveforespørsler er enestående, som ofte forekommer i servertypeapplikasjoner .
Historie
Native Command Queuing ble innledet av Parallel ATAs versjon av Tagged Command Queuing (TCQ). ATAs forsøk på å integrere TCQ ble begrenset av kravet om at ATA-vertsbusadaptere bruker ISA- bussprotokoller for å samhandle med operativsystemet. Den resulterende høye CPU-overhead og ubetydelig ytelsesgevinst bidro til manglende markedsaksept for TCQ.
NCQ skiller seg fra TCQ ved at med NCQ er hver kommando like viktig, men NCQs vertsbussadapter programmerer også sin egen DMA- motor fra første part med CPU-gitte DMA- parametere under kommandosekvensen, mens TCQ avbryter CPU under kommandospørsmål og krever det for å modulere ATA-vertsbusadapterens tredjeparts DMA- motor. NCQs implementering er å foretrekke fordi stasjonen har mer nøyaktig kunnskap om ytelsesegenskapene og er i stand til å redegjøre for sin rotasjonsposisjon. Både NCQ og TCQ har en maksimal kølengde på 32 utestående kommandoer.
For at NCQ skal være aktivert, må den støttes og aktiveres i SATA-vertsbusadapteren og i selve harddisken. Den aktuelle driveren må lastes inn i operativsystemet for å aktivere NCQ på vertsbussadapteren.
Mange nyere brikkesett støtter Advanced Host Controller Interface (AHCI), som gjør det mulig for operativsystemer å kontrollere dem universelt og aktivere NCQ. DragonFly BSD har støttet AHCI med NCQ siden 2.3 i 2009. Nyere mainstream Linux-kjerner støtter AHCI naturlig, og FreeBSD støtter AHCI fullt ut siden versjon 8.0. Windows Vista og Windows 7 har også naturlig støtte for AHCI, men AHCI-støtten (via msahci-tjenesten) må aktiveres manuelt via registerredigering hvis kontrollerstøtte ikke var tilstede under den første installasjonen. Windows 7s AHCI muliggjør ikke bare NCQ, men også TRIM- støtte på SSD- stasjoner (med støttende firmware). Eldre operativsystemer som Windows XP krever installasjon av en leverandørspesifikk driver (ligner på å installere en RAID- eller SCSI- kontroller) selv om AHCI er til stede på vertsbussadapteren, noe som gjør det første oppsettet mer kjedelig og konvertering av eksisterende installasjoner relativt vanskelig ettersom de fleste kontrollere ikke kan bruke portene i blandet AHCI – SATA / IDE / legacy-modus.
Harddiskstasjoner
Opptreden
En 2004-test med første generasjon NCQ-stasjon (Seagate 7200.7 NCQ) fant at mens NCQ økte IOMeter-ytelsen, reduserte stasjonære applikasjonsytelser faktisk. En gjennomgang i 2010 fant forbedringer i størrelsesorden 9% (i gjennomsnitt) med NCQ aktivert i en serie Windows-multitasking-tester.
NCQ kan forstyrre operativsystemets I / O-planlegger negativt , og faktisk redusere ytelsen; dette er observert i praksis på Linux med RAID-5 . Det er ingen mekanisme i NCQ for verten å spesifisere noen form for tidsfrister for en I / U, som hvor mange ganger en forespørsel kan ignoreres til fordel for andre. I teorien kan en forespørsel i kø bli forsinket av stasjonen vilkårlig tid mens den serverer andre (muligens nye) forespørsler under I / O-trykk. Siden algoritmene som brukes i stasjonenes firmware for NCQ-bestilling generelt ikke er offentlig kjent, introduserer dette et annet usikkerhetsnivå for maskinvare / firmwareytelse. Tester hos Google rundt 2008 har vist at NCQ kan forsinke en I / O i opptil 1-2 sekunder. En foreslått løsning er at operativsystemet sulter NCQ-køen kunstig tidligere for å tilfredsstille applikasjoner med lav latens i tide.
På noen stasjons firmware, for eksempel WD Raptor circa 2007, er read-ahead deaktivert når NCQ er aktivert, noe som resulterer i langsommere sekvensiell ytelse.
Sikkerhet (FUA)
En mindre kjent funksjon ved NCQ er at den, i motsetning til sin ATA TCQ-forgjenger, lar verten spesifisere om den vil bli varslet når dataene når diskens tallerkener, eller når den når diskens buffer (innebygd cache). Forutsatt at maskinvaren implementeres riktig, kan denne funksjonen garanteres datakonsistens når diskens innebygde hurtigbuffer brukes sammen med systemanrop som fsync . Det tilhørende skriveflagget, som også er lånt fra SCSI, kalles Force Unit Access (FUA).
Solid-state-stasjoner
NCQ brukes også i nyere solid state-stasjoner der stasjonen møter ventetid på verten, snarere enn omvendt. For eksempel bruker Intels X25-E Extreme solid state-stasjon NCQ for å sikre at stasjonen har kommandoer å behandle mens vertssystemet er opptatt med å behandle CPU-oppgaver.
NCQ gjør det også mulig for SSD-kontrolleren å fullføre kommandoer samtidig (eller delvis samtidig, for eksempel ved bruk av rørledninger) der den interne organisasjonen av enheten muliggjør slik behandling.
De NVM Express (NVMe) standard støtter også Kommandokø, i en form som er optimalisert for SSD. NVMe tillater flere køer for en enkelt kontroller og enhet, og gir samtidig mye høyere dybder for hver kø, noe som samsvarer nærmere med hvordan den underliggende SSD-maskinvaren fungerer.