Test prestazionale SerialATA con Native Command Queuing

Analisi tecnica e prestazionale della nuova tecnologia Native Command Queuing destinata ad equipaggiare i dischi della prossima generazione e che promette di aumentare sensibilmente le prestazioni degli hard disk SerialATA grazie ad alcune ottimizzazioni in fase di lettura e scrittura
di Alessandro Bordin pubblicato il 08 Luglio 2004 nel canale StorageCenni teorici - parte 1
Analizziamo brevemente, come premessa, il lavoro svolto dai dischi rigidi a livello logico-meccanico.
Semplificando molto il discorso un disco rigido è formato da uno o più piatti, ciascuno costituito da due facce (anche se in alcuni modelli in uno dei piatti una faccia risulta inutilizzata, per raggiungere un determinato taglio). Definiamo Faccia 1 e 2 le due facce del primo piatto A. Ad ogni faccia attiva viene associata una testina di lettura/scrittura. I dati vengono scritti seguendo uno schema ben preciso, ovvero partendo dal punto più esterno del piatto più in basso (Faccia 1). La testina scriverà i dati su una circonferenza completa, chiamata traccia.
A questo punto la scrittura non procede a tracce concentriche verso l'interno della stessa faccia, ma i dati vengono scritti nella faccia superiore, Faccia 2, sempre del piatto A. Completata questa, si passa al piatto superiore, e via dicendo. Arrivati all'ultimo piatto, la procedura si ripete, questa volta scrivendo i dati su una traccia immediatamente più interna del piatto A, completata la quale si passerà all'altra faccia, procedendo sempre seguendo questo schema "a cilindri".
Questa premessa serve a capire quali siano le problematiche legate alla velocità di lettura e scrittura di un disco rigido. In fase di lettura non è detto che i dati richiesti dal sistema siano sequenziali; anzi, questa particolare condizione è quanto mai poco verificata.
Introduciamo adesso i concetti di seek latency e rotational latency, ovvero latenze di ricerca e latenze di rotazione, per meglio capirci. Utilizzeremo per la descrizione la terminologia inglese in quanto comunemente usata nel settore.
Con seek latency indichiamo il tempo necessario al braccio su cui si trova la testina per individuare la traccia (immaginiamo un cerchio su una faccia di uno dei dischi) su cui è posizionato il dato richiesto dal sistema. Ovviamente maggiore è il diametro del piatto o la sua densità, maggiore sarà mediamente il tempo necessario a posizionarsi sulla traccia ricercata.
La rotational latency invece è il tempo che impiega la testina per trovare il settore giusto, una volta trovata la traccia. Ricordiamo che i settori sono le singole unità logiche che formano la traccia. Maggiore è la velocità di rotazione, minore sarà il tempo medio necessario a posizionare sotto la testina il settore ricercato.
L'algoritmo utilizzato attualmente nei dischi rigidi prende il nome di Rotational Positioning Ordering (RPO), in grado di massimizzare le prestazioni e minimizzare i tempi di latenza, ovviamente rispetto ad algoritmi più obsoleti. I ben noti tempi medi di accesso ai dati, presenti in ogni benchmark per dischi rigidi, altro non sono che i valori medi in millisecondi per accedere ad un dato presente sul disco, somma della seek latency (con cui si individua la traccia) e della rotational latency (per individuare il settore).