# NCQ

In informatica e elettronica l'NCQ, acronimo di Native Command Queuing, è una estensione del protocollo SATA 1.0, introdotta con il SATA versione II , che identifica una tecnologia utilizzabile sugli hard disk per migliorare la velocità di accesso ai dati in essi memorizzati.

## Descrizione

Nei dischi che non supportano l'NCQ, o quando questo è disabilitato, l'accesso ai dati presenti sull'hard disk viene effettuato soddisfacendo una alla volta le singole richieste di lettura/scrittura da eseguire. In particolare l'accesso ad un singolo dato avviene identificando sequenzialmente il piatto, il cilindro, traccia e settore dove si trova il dato.
Ognuna di queste fasi comporta dei ritardi tra i quali:
* command overhead time (tempo intercorso tra l'invio di un comando di accesso e l'inizio del movimento della testina);
* head switch time (tempo per il passaggio da una testina di lettura all'altra);
* cylinder switch time (tempo impiegato dalla testina per passare da un cilindro a quello adiacente, detto anche track switch time);
* seek time (tempo che la testina impiega per passare da una traccia a quella adiacente);
* rotational latency (tempo di rotazione del disco atteso dalla testina affinché il settore cercato passi sotto la testina stessa).
L'NCQ, invece, permette di accodare in un proprio buffer più richieste di accesso (fino a 32)
che, prima di essere eseguite, possono essere riordinate in una sequenza tale da ottimizzare il percorso compiuto dalle testine per accedere ai dati
. In questo modo si riducono le latenze eliminando la quantità di movimenti inutili eseguiti dalle testine, con conseguente aumento delle prestazioni.

### Abilitazione dell'NCQ

Per utilizzare la tecnologia NCQ è necessario che:
* disco rigido;
* controller del bus SATA del chipset della scheda madre;
* sistema operativo installato sul computer;
supportino tutti l'NCQ.
Per quanto riguarda il disco rigido, è sufficiente controllare le specifiche fornite dal produttore (indicativamente, se il disco è almeno SATA II il supporto dovrebbe essere garantito).
Per il controller SATA, è necessario che questo supporti le modalità più nuove o avanzate quali AHCI (sviluppato da Intel) o RAID. Queste opzioni, se presenti, sono visibili nel BIOS del computer, insieme ad altre identificate spesso con i termini Legacy IDE e Native IDE, che invece non supportano l'NCQ. In genere, e specialmente con i sistemi Windows, l'opzione AHCI (o l'alternativa RAID) deve essere abilitata nel BIOS prima dell'installazione del sistema operativo.
La terza condizione per l'abilitazione dell'NCQ è l'utilizzo di un sistema operativo per cui siano disponibili driver AHCI per il controller SATA. Con Windows XP, al momento dell'installazione, è necessario fornire un floppy disk o CD-ROM con driver AHCI (o RAID) aggiuntivi di terze parti, solitamente resi disponibili sul proprio sito web dal produttore della scheda madre o del chipset. Windows Vista, Windows 7 e Windows 8 supportano nativamente l'AHCI e non necessitano di driver aggiuntivi. In tutti i casi è comunque consigliabile abilitare l'AHCI nel BIOS prima dell'installazione, per evitare di dover effettuare poi procedure più o meno laboriose (ad esempio, modifica manuale del registro di Windows) per poter abilitare l'AHCI in fasi successive all'installazione. I kernel Linux supportano l'AHCI a partire dalla versione 2.6.19, mentre FreeBSD dalla versione 8.