logo

NCQ (Native Command Queuing) – aranjarea nativă a sarcinilor

NCQ este o variantă software a interfeței SATA care constă în aranjarea operațiunilor de salvare/citire (I/O) pentru a crește eficiența întregului sistem (numărul de operații I/O pe secundă) atât în cazul discurilor HDD, cât și a celor SSD.

 

În cazul discurilor tradiționale (HDD), aceasta are loc prin utilizarea unui tampon pentru a până la 32 de comenzi și alegerea ordinii de efectuare a acestora, pentru ca echipamentul să funcționeze, reducând la minimum mișcarea capetelor și a discurilor propriu-zise. Această opțiune permite reducerea timpului indispensabil pentru efectuarea operațiunilor I/O și împiedică uzura elementelor electromecanice ale discului.

 

Figura 1. Efectuarea operațiunii de citire/salvare pe discurile: (a) fără NCQ, (b) cu NCQ

 

Discul reprezentat in imaginea numărul 1 realizează operațiunile I/O: (A) cu deservirea NCQ dezactivată – în ordinea de la A la F, efectuând 3,5 rotații a discului propriu zis; (b) cu deservirea NCQ activată – în ordinea C → A → B → D → F → E în cadrul a doar 2 rotații ale discului propriu zis.

 

NCQ este o nouă soluție inclusă în tehnologia care se dezvoltă în continuu, adică TCQ (Tagged Command Queuing) și care este utilizată la început pentru discurile de tip SCSI, fiind apoi implementată în cadrul discurilor de tip ATA și parțial de tip SATA-I. Aceasta diferă de ideea precedentă mai ales prin numărul de operațiuni prelucrate concomitent I/O și prin ideea că NCQ permite emiterea următoarei comenzi din partea hostului în timpul în care discul funcționează asupra comenzii anterioare.
Sistemul de ordonare a fost introdus odată cu apariția discurilor cu interfețe SATA-II (care au fost implementate ulterior în anumite discuri din clasa SATA-I).

 

Funcționalitatea NCQ depinde de trei protocoale cheie:

– Mecanismul informației feedback despre starea procesului (Status Return Mechanism) – această funcție permite transmiterea individuală a informației despre încheierea sarcinii (sau a sarcinilor) I/O planificate. Hostul nu mai este informat despre începerea procesului I/O, ci doar asupra încheierii acestuia.

– Limitarea numărului de întreruperi la maxim una pentru sarcina planificată I/O (Interrupt Aggregation) – host trebuie să fie informat despre încheierea fiecărei sarcini care a fost programată I/O. Cererile referitoare la datele care se găsesc aproape din punct de vedere fizic sunt grupate și ordonate adecvat. Astfel se ajunge la o situație în cadrul căreia câteva comenzi I/O sunt efectuate concomitent și în timp rapid. Așadar, este posibilă transmiterea informațiilor despre terminarea, de exemplu a tuturor celor 32 de operații în cadrul unui pachet de 64 de biți, în locul a 64 de pachete separate – cum ar avea loc în situația dacă nu se utilizează NCQ. În cadrul echipamentelor SATA-I și ATA era necesară efectuarea de două pauze pentru fiecare operațiune I/O (una la începerea procesării comenzii, iar a doua la finalizarea acesteia).

– Mecanismul accesului direct la memoria operativă (First Party DMA – FPDMA) – NCQ a fost proiectat astfel ca HDD să poată alege care sarcină legată de transferul de date va fi efectuată în pasul următor. Discul trimite un tag/identificator al comenzii I/O către controlorul de memorie al hostului. În acest fel se efectuează și rezervarea locului pentru păstrarea în tampon a datelor prelucrate direct de memoriile operative. Astfel discul este în stare să schimbe mult mai eficient ordinea comenzilor primite, deoarece poate bloca memoria pentru tampon, fără să angajeze pentru aceasta programele hostului.

 

Pentru interfața SATA-III au fost introduse mai multe modificări în funcționarea NCQ. Printre altele s-a îmbunătățit managementul de ordonare și s-au adăugat comenzile legate de deservirea mai bună a fluxului de date a informațiilor multimedia, datorită permisiunii hostului pentru transmiterea informațiilor – dacă trebuie sau care operații trebuie oprite – precum și cărora trebuie să li se mărească prioritatea. Astfel, s-a îmbunătățit eficiența generală a sistemului, fără să se incrementeze numărul de operațiuni de tip I/O efectuate de disc într-o singură secundă.
De asemenea, a fost folosit transferul izocronic de date, care permite totodată transmisia în timp real către aplicație a datelor care necesită un transfer (audio/video) special, precum și efectuarea în mod paralel a transferurilor pentru sarcinile cu o prioritate redusă.

 

Sistemul NCQ care a fost implementat în cadrul interfeței SATA-II poate avea și o influentă negativă asupra anumitor sarcini I/O, având ca efect scăderea eficienței întregului sistem operativ. Acest algoritm nu a avut prestabiliți timpii pentru efectuarea operațiunilor I/O prestabilite. De asemenea, numărul de planificări de comutare a operațiunii I/O la capătul sistemului de așteptare nu era limitat. Efectuarea unei comenzi I/O poate așadar să întârzie în timp, din cauza comenzilor care apar între timp, cauzând astfel blocarea întregului proces.
Această situație a fost observată în cadrul sistemului de operare LINUX cu matriță pentru disc RAID-5. În timpul efectuării testelor, sarcina cu o prioritate redusă a fost executată după trecerea a 57 118 ms (iar cu tehnologia NCQ activată după 2 021 ms). În anul 2008 Google Inc. a efectuat propriile teste, în care s-a dovedit că – în cazul unor situații specifice, efectuarea anumitor procese I/O planificate poate să fie întârziată chiar și cu 2 s (indiferent de sistemul operativ).
Aceste probleme au fost rezolvate în momentul când a apărut interfața SATA-III – prin adăugarea la sistemul de management al comenzilor a subcomenzii „Deadline Handling”, adică cel care gestionează limitele de timp pentru operațiunile I/O cu cea mai mică prioritate.

 

Din cauza construcției discurilor SSD (mai multe secțiuni de memorie NAND conectate la un singur controlor și lipsa elementelor mecanice) cerințele NCQ sunt realizate în mod diferit, adică prin ordonare în adâncime. Această tehnologie constă în gruparea sarcinilor I/O planificate (prin intermediul controlerului) și executarea acestora, concomitent în cadrul setului de memorii NAND.

 

NCQ poate funcționa numai împreună cu echipamente de tip HDD/SSD cu un controlor al discurilor care conlucrează cu această tehnologie.

 

Scrie un comentariu

*