venerdì 28 agosto 2009

AGP e PCI-ex: cosa sono e come funzionano

(Tratto da xtremehardware: http://www.xtremehardware.it/hardware/agp-e-pci-ex:-cosa-sono-e-come-funzionano-20070511632/)


AGP è l’acronimo di Accelerated Graphic Port, è stata sviluppata da Intel nel 1996 come soluzione per aumentare prestazioni e velocità delle schede grafiche connesse ai PC, infatti ha raddoppiato le prestazioni delle porte PCI normali.
Nel 1999 venne sviluppata una nuova versione dell’AGP ossia l’AGP pro. Questo nuovo slot era retro compatibile naturalmente, e supportava entrambe le alimentazioni (1.5v e 3.3v). Questo standard ebbe una grande evoluzione in termini di potenza erogata, passando da 25w inizialmente fino ad un massimo degli ultimi slot di ben 110w.

Successivamente quando questo standard non riusciva più a venire incontro alle esigenze delle nuove periferiche sul mercato fu introdotto il PCIe. Il PCI Express è l'evoluzione del bus di espansione PCI, introdotto con i primi Pentium che ha ampiamente preso il posto ormai della vecchia interfaccia per schede grafiche, l'AGP appunto.

Tecnicamente lo standard PCIe è basato su un trasferimento dei dati seriale, a differenza di quello parallelo del PCI, che semplifica il layout del PCB delle schede madri (Il PCB è il circuito stampato, ossia quel componente adibito a collegare i vari slot, e a fare da supporto meccanico per i componenti e gli accessori (dissipatori, connettori, ecc …)). Questa interfaccia ha un grande punto a favore, permette di usare più periferiche in parallelo, sommando così la potenza di calcolo. Inoltre la banda passante di ciascun canale è indipendente da quella degli altri.

Anche se il nome è lo stesso lo standard PCI Express si divide in due tipi:

1) Il primo tipo è costituito da un singolo canale, ed offre una larghezza di banda teorica di 266 MBytes/s e sarà lo standard che prenderà il posto degli attuali slot PCI che abbiamo nei nostri PC. Oltre alle prestazioni migliori il PCIx1 ci darà la possibilità di praticare l’hot swap, ovvero di sostituire una scheda a PC acceso senza arrecare nessun danno. Un po’ come accade ora con gli hdd SATA.
2) Il secondo tipo è il PCIx16 che come dice il nome è costituito da ben 16 canali, offre il doppio della velocità rispetto all’AGP e teoricamente ha una banda passante di 2.5 Gb/s sia in entrata che in uscita.

AGP

La connessione Accelerated Graphics Port (AGP) è stata sviluppata da Intel nel 1996 come soluzione per aumentare prestazioni e velocità delle schede grafiche connesse ai PC. Si basa sullo standard PCI 2.1 e per questo effettua trasferimenti a 32 bit alla frequenza base di 66 MHz (il doppio dello standard PCI). Poiché il trasferimento dei dati avviene in modalità parallela, non è possibile una comunicazione bidirezionale contemporanea.

Storia

L'idea con cui viene creata è quella di permettere un accesso diretto alla memoria fisica del computer da parte della scheda grafica, in modo da poter gestire texture e oggetti 3D molto voluminosi. Lo slot AGP compare per la prima volta su una scheda madre con il chipset Intel 440LX, prodotto all'inizio del 1997. In breve tempo la Nvidia sviluppa le prime schede grafiche basate su GPU TnT, e il chipset rivela i suoi problemi nel fornire una corretta alimentazione alla scheda grafica. Le soluzioni trovate sono diverse: alcuni produttori si affidano alla successiva versione del chipset Intel, il modello 440BX, che supporta l'alimentazione a 3,3V. Altri riducono la richiesta di potenza delle GPU, passando dal processo produttivo a 0.25 micron a quello a 0.18 micron. Questo accorgimento permette di ridurre il consumo elettrico e il calore generato, nonostante significativi aumenti della frequenza operativa.
Nell'aprile del 1999 viene rilasciata la specifica dell'AGP Pro, ritenuta la soluzione a tutti i problemi di alimentazione. AGP Pro è retro-compatibile e viene prodotto in tre versioni diverse: la 1,5V, la 3,3V e la versione Universal, compatibile con entrambi i voltaggi. Lo slot AGP assume così dimensioni e configurazioni diverse a seconda dei voltaggi, in modo da impedire l'inserimento di una scheda in uno slot di tipo errato. Gli slot AGP Pro vengono ulteriormente perfezionati, in modo da poter fornire prima fino a 25W e, successivamente, 50W e addirittura 110W di potenza. Inoltre viene incrementata la frequenza di trasmissione dati per ottenere un flusso di dati sempre maggiore tra la scheda video e la memoria fisica.

Revisioni

La prima versione dello standard AGP raddoppiava la banda passante rispetto a un normale slot PCI perché ne raddoppiava la frequenza, raggiungendo quindi i 266 MB/s, ma era capace di funzionare anche in modalità 2x e raggiungere i 533 MB/s effettuando ben due trasferimenti per ciclo di clock. Successivamente, le versioni 2.0 e 3.0 hanno introdotto la possibilità di 4 e 8 trasferimenti per ciclo di clock, giungendo alla odierna frequenza equivalente di 533 MHz. Per prevenire problemi di compatibilità tra le differenti versioni, è sempre previsto il funzionamento in modalità safe 1x, quindi a 266 MB/s.

Questa modalità viene attivata automaticamente dal BIOS in caso di problemi.
• AGP 1.0
o AGP 1x: 266 x 1 = 266 MB/s
o AGP 2x: 266 x 2 = 533 MB/s
• AGP 2.0
o AGP 4x: 266 x 4 = 1066 MB/s
• AGP 3.0
o AGP 8x: 266 x 8 = 2133 MB/s

La versione 3.0 è l'ultima evoluzione di questo bus, che si prepara ad essere rimpiazzato dal più veloce PCI Express, il quale sostituirà anche l'interfaccia PCI. Questo nuovo standard dovrebbe permettere velocità di trasferimento fino a 5,8 GB/s teorici.

Alimentazione

Esistono tre tipi di alimentazione previsti dallo standard:
• AGP 1,5 V
• AGP 3,3 V
• AGP Universal (compatibile con entrambi i precedenti)

La molteplicità delle possibili velocità di trasmissione dei dati e dei voltaggi ha portato a problemi di compatibilità, specialmente per quanto riguarda le vecchie schede madri. A partire da quei modelli che supportano l'AGP 3.0, i produttori si sono sforzati per supportare tutte le possibili configurazioni. Gli ultimi modelli di schede grafiche, come ad esempio la serie 6800 ultra della Nvidia, richiedono troppa potenza perché lo slot AGP possa sopperire a questa richiesta. Così, sono in commercio alcune schede grafiche con connettori MOLEX per un'ulteriore alimentazione. Questa sovralimentazione non verrà abbandonata, nonostante le più evolute specifiche di alimentazione del PCI Express, molto maggiori rispetto a quelli dell'AGP; infatti, al 2007 si trovano già in commercio schede video PCI Express di fascia alta che richiedono un'alimentazione aggiuntiva.

Per riconoscere i tre tipi di alimentazione sono stati predisposti degli slot e dei pettini per le schede leggermente diversi: smontando la scheda video, coi pin in basso e il connettore VGA a destra, va osservato il secondo pin da destra. Se questo è connesso alla circuiteria della scheda, questa supporta la modalità 1,5V, altrimenti la scheda supporta la modalità 3,3V. Lo slot AGP invece è più facilmente distinguibile. Se il separatore è posto verso la sinistra dello slot (verso il retro del case) lo slot supporta unicamente i 3,3V, se è posto a destra (verso il fronte del case) esso supporta unicamente l'alimentazione a 1,5V. Se invece non sono presenti separatori nello slot, questo è di tipo Universal e risulta compatibile con tutte le diverse alimentazioni.

PCIe

PCI Express, abbreviato ufficialmente con PCIe (e molte volte confuse con PCI Extended, quest’ultimo ufficialmente abbreviato con PCI-X), è un formato di interfaccia per il bus di sistema e le periferiche di espansione. E’ stata create con l’intendo di rimpiazzare completamente le vecchie interfacce PCI, PCI-X, e AGP. L’interfaccia PCIe Express è fisicamente ed elettronicamente incompatibile con il format PCI, anche se condividono la stessa interfaccia software e quindi possono essere interconnesse tra loro. Durante lo sviluppo di questa nuova interfaccia, lo standard PCI Express veniva chiamato col il nome in codice Arapaho oppure 3GIO (che sta per 3rd Generation I/O).
Lo Standard PCIe è un formato di interfaccia seriale/parallelo. Questo standard (alla versione PCIe 1.1) è in grado di avere un transfer rate pari a 250 MB/s in ogni direzione per ogni canale. Con un massimo di 32 canali riusciamo quindi a raggiungere un transfer rate di ben 8GB/s in ogni direzione. Per capire meglio con un esempio pratico…un singolo canale PCIe ha quasi il doppio della potenza di trasferimento dello standard PCI; uno slot a quattro canali, ha un transfer rate paragonabile a quello di un PCI-X 1.0, e uno slot a otto canali lo possiamo paragonare alla versione più veloce dello standard AGP.
Diversamente dalle classiche porte di espansione PCI, lo standard PCI Express è sia full duplex che point to point. Questo significa che mentre il PCI-X 133mhz 64 bit e PCI Express x4 hanno lo stesso data transfer rate, se noi colleghiamo simultaneamente coppie multiple di dispositivi PCIe, avremo un grande incremento di performance pure.


In generale

Fisicamente il layer PCIe consiste in una rete di interconnessioni seriali. Un ponte che le schede madri utilizzano come uno switch multiplo che permette alle connessioni point to point tra i vari dispositivi di essere reindirizzate on the fly (ossia…al momento dell’utilizzo). Questo comportamento dinamico diventa anche parallelo dal momento che una coppia di devices può comunicare con un'altra allo stesso tempo. (Al contrario, le vecchie interfacce dei PC avevano tutte le periferiche costantemente collegate allo stesso bus, quindi solo una alla volta poteva “parlare”). Questo metodo è molto simile alla differenza tra conversazioni telefoniche dove siamo in diretto contatto con la persona con cui stiamo parlando o le conversazioni in un meeting dove dobbiamo aspettare il nostro turno per poter parlare. Questo formato permette inoltre il “canne grouping”, ossia dove canali multipli sono collegati insieme a una singola coppia di periferiche in modo da aumentare la banda passante (bandwith).
Il formato di unione in serie fu scelto al posto del tradizionale metodo in parallelo a causa del fenomeno globalmente conosciuto con timing skew. Questo fenomeno è una limitazione imposta dalla velocità della luce: quando un segnale elettrico percorre un filo viaggia ad una velocità finita. Siccome tracce differenti in un’interfaccia hanno lunghezze differenti, dei segnali paralleli trasmessi simultaneamente da una sorgente arrivano a destinazione in tempi diversi. Quando l’interconnessione del clock rate aumenta e arriva al punto dove le lunghezze d’onda di un singolo bit eccedono questa differenza di lunghezza della traccia, il bit di una singola parola non arriva a destinazione simultaneamente, così facendo è impossibile ricostruire la parola. Così la velocità della luce, combinata con la differenza di lunghezza tra la più lunga e la più corta traccia in una interconnessione parallela porta ad un massimo fisico di larghezza di banda per avere un trasferimento di dati stabile e sicuro. Un collegamento in serie dei canali non ha questo tipo di problemi visto che non ha bisogno che i dati arrivino simultaneamente a destinazione. PCIe è un esempio di questo tipo di connessione in serie. Altri esempio sono l’HyperTransport, il Serial ATA, e l’USB per farne alcuni dei più comuni. Ed è per questo motivo che nei server professionali si preferisce usare il SAS al posto delle normali connessioni.
Lo standard PCIe è stato supportato originariamente da Intel, che ha iniziato con il progetto Arapahoe, e ha seguito con il sistema InfiniBand. PCie è stato creato con l’intento di essere usato solo come un’interconnessione locale. E’ stato sviluppato per essere compatibile appieno con il vecchio standard PCI, in modo tale da rendere facile la conversione verso il PCIe appunto.


Sommario generale del protocollo Hardware


Il link PCIe è costruito attorno a una coppia dedicate e unidirezionale di connessioni in serie point-to-point conosciute come “canali”. Questo risulta essre in evidente contrasto con lo standard PCI, che è basato essenzialmente su un sistema di bus dove tutte le periferiche sono connesse allo stesso bus bidirezionale e parallelo a 32-bit o 64bit.
PCI Express è un protocollo a strati, che consiste essenzialmente in tre diversi layer: il Transaction Layer, un Data Link Layer, e un Physical Layer. Il Layer fisico è suddiviso ulteriormente in un sublayer logico ed uno elettrico.
Il sublayer logico a sua volta è frequentemente diviso in un Physical Coding Sublayer (PCS) e un sublayer Media Access Control (MAC).

Physical Layer

A livello elettrico, ogni canale utilizza due coppie segnali differenziali a basso voltaggio unidirezionali a 2.5 Gbit/s. La trasmissione e la ricezione sono coppie differenziali separate, per un totale di 4 cavi dati per canale.
Una connessione tra due periferiche PCIe viene chiamata “link”, ed è costituita dall’unione di 1 o più canali. Tutte le periferiche devono supportare come minimo un link a singolo canale (x1), ma possono anche supportare link più grandi composti di 2,4,8,12,16, o 32 canali. Ciò permette un’ampia compatibilità in due modi: una scheda PCIe può fisicamente entrare (e funzionare perfettamente) in un qualsiasi slot che è largo almeno quanto la scheda stessa (es.una scheda x1 potrà lavorare in qualsiasi slot), e uno slot di grandi dimensioni (per esempio un x16) può essrre connetto elettricamente con altri canali più piccoli (es. x1 o x8) sempre che riesca a provvedere alla corretta alimentazione richiesta dalla più grande ampiezza fisica dello slot. In entrambi i casi, il PCIe cercherà di usare il maggior numero di canali supportati vicendevolmente. Non è fisicamente possibile però inserire una scheda PCIe in uno slot più piccolo, nemmeno se fossero anche solo compatibili.
Il PCIe manda tutti i messaggi di controllo, incluse le interruzioni, attraverso lo stesso link usato per i dati. Il protocollo seriale non potrà mai essere bloccato, così la latenza sarà sempre compatibile con il PCI, che ha linee dedicate per le interruzioni.
I dati trasmessi su canali multipli sono intervallate, cioè significa che ogni byte successivo viene spedito attraverso il successivo canale. Le specifiche PCIe fanno riferimento a questo “interleaving” attraverso la voce “data striping”. Questo metodo richiede una grande complessità di hardware per sincronizzare (deskew) i dati trasmessi in striping, ma permette una maggiore potenza del canale.
Come tutti i grandi protocolli di trasmissione seriale, le informazioni riguardanti il Clock devono essere inserite nel segnale stesso. A livello fisico, PCI Express utilizza il comunissimo schema 8B/10B per l’encoding per assicurare che le stringhe di uno o zero consecutivi siano limitate in lunghezza. Questo è necessario per prevenire che il ricevitore perda la traccia dell’inizio e della fine del bit. Con questo schema di encoding, ogni 8Bit di trasmissione vengono rimpiazzati con 10 bit di trasmissione, consumanto un extra 20% di larghezza di banda elettrica.
Alcuni altri protocolli (SONET) usano differenti schemi di encoding, conosciuti come “scrambling” per implementare le informazioni del CLOCK all’interno del flusso di dati. Le specifiche del PCI Express definiscono anche un algoritmo di scrambling, ma questa forma di scrambling non deve essere confusa con quella inclusa nel SONET. Nel PCIe questa funzione viene utilizzata per evitare ripetizioni di serie di dati trasmessi.
La prima generazione PCIe è stata limitata ad un singolo rate di segnale a 2.5 Gbit/s. Le industrie specializzate in questo formato stanno già creando future versioni a 5 e 10 Gbit/s.

Data Link Layer

Il Data Link Layer implementa sequenze di pacchetti Layer di transazione (Transaction Layer Packet TLPs) che sono generati dal Layer Transazione, protezione di dati attraverso un ciclo di check ridondanti con un codice a 32-bit (cyclic redundancy check alias CRC, ma più conosciuto in questo contesto come LCRC), e un protocollo di riconoscimento (ACK e NAK). I TLP che passano un check LCRC diventano una sequenza di numeri risultati dal riconoscimento, o ACK, mentre quelli che non passano questo check diventano NAK. Pacchetti TLP che diventano NAK o timeout che occorrono nell’attesa di un ACK, diventano dei TLP che vengono ritrasmessi da uno speciale buffer che trasmette la serie di dati del Data Link Layer. Questo garantisce la consegna dei TLP al posto di rumore elettrico, evitando così ogni possibile malfunzionamento della periferica.
I segnali ACK e NAK sono comunicati attraverso pacchetti di basso livello conosciuti come pacchetti del data link layer appunto (in inglese data link layer packet o DLLP). Questi DLLP sono spesso usati per comunicare il informazioni sul controllo del flusso tra i transaction layers di due periferiche connesse, come anche alcune funzioni di power management.

Transaction Layer

Il PCI Express implementa transazioni separate (trasmissioni nelle quali la richiesta e la risposta sono separate nel tempo), permettendo al canale di portare altro traffico nel frattempo che il la periferica target acquisisce i dati per la risposta.
Il PCI Express utilizza un controllo del flusso basato sui “crediti”. In questo schema, una periferica accumula un tot di crediti iniziali per ogni trasmissione del buffer nel sul Layer Transaction. La periferica all’altro capo del link, quando sta mandando un segnale alla prima, conterà il numero di crediti consumati da ogni TLP. La periferica che trasmette può funzionare e quindi inviare un segnale solo se inviandolo non eccede il numero massimo di crediti a sua disposizione. Quando la periferica che acquisisce ha processato tutti i TLP dal suo buffer, manderà un segnale di crediti alla periferica trasmettitrice così da dargli altri crediti ripristinando il numero iniziale a sua disposizione. Questo schema è molto più vantaggioso di altri quali il Wait States, o il protocollo basato sul HandShake, poiché il segnale di ritorno dei crediti non danneggia le performance.
La prima generazione di PCIe supporta un data rate di 250 MB/s in ogni direzione, per ogni canale. Questo risultato è un calcolo banale, che viene fuori dividendo dal rate di segnale fisico (2.5 Gbaud) diviso per il segnale di encoding (che come sopra detto corrisponde a 10bits/byte). Questo significa che una scheda PCIe con il canale le a x16 è capace (teoricamente) di un trasnfer rate di ben 250 x 16 = 4GB/s in ogni direzione. Questo dato è corretto, ma certamente è più utile fare un calcolo basato su il carico realmente utilizzabile, che dipende dal profilo del traffico stesso, che è una funzione delle applicazioni (software) di alto livello e di livelli di protocollo intermediari. Lunghi trasferimenti continui di dati (come accade spesso con i controller di memoria) possono utilizzare anche più del 95% della capacità grezza del data rate del PCIe. Questi trasferimenti beneficiano maggiormente del numero di canali (x2, x4, etc.). Ma in molte applicazioni tipiche (che possono essere i controller USB o Ehternet) il profilo del traffico è caratterizzato come corti pacchetti di dati ma con frequenti riconoscimenti. Questo tipo di traffico riduce l’efficienza del link, a causa di un surplus di pacchetti da analizzare e quindi forzatamente interrotti (o nella periferica stessa o nella CPU del PC). Questo perdita di efficienza però non è così grande nel PCIe.

Come funziona il Serial ATA - parte 3

RAID e server
Con il SATA II, che prevede tra l'altro backplane, gestione dei telai, moltiplicatori di porta e connessioni multiple, diventa facile assemblare telai per lo storage in RAID con connessioni multiple compatte (attraverso appositi connettori per backplane).

Il SATA si appresta quindi a occupare lo spazio dei server di fascia medio-bassa di costo contenuto, lasciando allo SCSI la fascia delle applicazioni ad alte prestazioni e prezzo decisamente più alto.

Il confronto fra i vari tipi di bus

Interfaccia ATA SATA SCSI SCSI seriale Fibre Channel
Tipo di interfaccia parallela seriale parallela seriale seriale
Indirizzam. (n. drive) 2 1 o 16 con SATAII 16 128 16 milioni
Distanza (metri) 0,5 1 12 10 10 Km
Connessione 80 fili/40 pin 7 pin 68 pin, interno/ esterno 7 pin rame/ottico, interno/ esterno
Doppia porta no no no
Topologia bus punto a punto bus punto a punto con espansioni loop, fabric
Duplex half half half full full
Max n. dispositivi 2 1 o 15 con port multiplier 16 4.096 con espansioni 127 loop, 2*24 fabric
Lunghezza cavo 0,45 m 1 m 12 m 10 m 30 m (rame)/ 300 m (ottico)
Applicazioni storage interno ATA RAID, server e workstation server di fascia media/ enterprise server di fascia media/ enterprise SAN e server enterprise

Informazioni
Trovate abbondanza di informazioni sul Serial ATA sia nei siti dei produttori (Maxtor, Seagate, Adaptec ecc.) sia nel sito del Serial ATA Working Group (www.serialata.org).

Come funziona il Serial ATA - parte 2

SATA II
Quanto descritto sopra appartiene alla specifica Serial ATA 1.0. Lo standard SATA si basa sull'ATA parallelo ed è stato definito in modo da essere compatibile a livello software con i driver ATA. Perciò, la transizione da ATA a SATA dovrebbe essere trasparente per il sistema operativo.

I primi hard disk SATA non erano dotati di interfaccia seriale nativa, ma includevano un bridge tra ATA parallelo e seriale; ora gli hard disk supportano il SATA in modo nativo.

Terminata la fase iniziale dell'ATA 1.0, ora si è entrati nella fase 1 della seconda versione SATA, ovvero SATA II Phase 1.

Il SATA 1.0, infatti, non include certi aspetti necessari per configurazioni con server e storage di rete e per workstation ad alte prestazioni. SATA II è un superset delle specifiche 1.0 e viene introdotto in due fasi, di cui la prima è di un certo interesse per chi acquista un nuovo computer.

La Fase 1 (Phase 1), in corso di attuazione, prevede:
1) miglioramenti di prestazioni che sotto il nome di Native Command Queueing (accodamento nativo dei comandi) comprendono l'accodamento dei comandi e il riordino della sequenza di esecuzione dei comandi,
2) la gestione del o dei telai (Enclosure Management), che include controllo delle ventole, indicatori di attività, controllo di temperatura, notifica dei nuovi dispositivi ecc. (per esempio, in caso di guasto a un disco in RAID, viene individuata l'unità interessata) e
3) una soluzione per la scheda di interconnessione dei drive (backplane) nei server, che estende la lunghezza massima delle tracce ad uso dei rack e dei drive hot-swappable (sostituibili a macchina accesa).

La fase 2 del SATA II prevede ulteriori estensioni sempre per server e storage di rete e la seconda generazione di velocità, ovvero 300 MBps trasferibili lungo la connessione.

Le reali prestazioni dei dischi dipendono da fattori come densità di registrazione, velocità di rotazione, tempo di accesso delle testine, capacità del buffer e supporto NCQ (Native Command Queueing).

Inizialmente non si noterà un vantaggio nella transizione da ATA a SATA, a meno che non utilizziate intensamente (con molte attività in multitasking e multithreading) un sistema equipaggiato con dischi e chip-set con supporto NCQ.

La roadmap SATA è comunque progettata per un periodo di 10 anni, quindi prevede estensioni e crescita di prestazioni al di là dei prodotti attualmente in vendita.

Native Command Queueing
Di tutte le caratteristiche del Serial ATA sopra citate, l'unica che porta un salto di qualità nella realizzazione dei PC è la riduzione di dimensioni dei cavi e dei connettori unita all'incremento della lunghezza massima dei cavi.

Dal punto di vista degli acquisti a breve termine, vi può interessare il supporto NCQ. Le linee più recenti di hard disk SATA ne sono dotate, come pure i controller SATA inclusi nei nuovi chipset per PCI-Express (per esempio di Intel e VIA).

Tuttavia facciamo notare che i primi test mostrano incrementi di prestazioni nei test sintetici ma non con le reali applicazioni.

Nell'uso quotidiano del desktop, con tutta probabilità, non avrete benefici tangibili dall'uso di dischi SATA con NCQ.

Se dovete acquistare un nuovo sistema e volete avere le tecnologie più recenti, accertatevi che il chipset e gli hard dischi supportino l'NCQ (SATA II Fase 1), ma se state usando dischi ATA e volete migliori prestazioni, la strada maestra è quella di passare allo SCSI, non al SATA.

Sgombrato il terreno da false aspettative, diamo un'occhiata a come funziona l'NCQ, che dagli anni '90 è supportato dai dischi SCSI e finalmente approda anche sui comuni desktop.

Normalmente, per accedere ai dati su disco, la CPU invia una richiesta e, se il dato non è presente in una delle cache, viene comandato alle testine di posizionarsi in modo da potere iniziare la lettura dei dati.

Trascurando i dettagli (una lettura logica può richiedere parecchie letture fisiche), se occorre accedere a una serie di dati non sequenziali distribuiti in varie zone del disco, le testine dovranno saltare da un cilindro all'altro, avanti e indietro.

Per esempio, se la sequenza di accesso è A, D, B, F, G, C, E (immaginando che la sequenza alfabetica corrisponda all'angolo di rotazione), si perderanno parecchi cicli di rotazione prima che le testine abbiano visitato tutti i blocchi di dati.

Con il NCQ, il disco immagazzina una coda delle richieste di accesso, quindi le riordina (ne cambia la sequenza) per ridurre al minimo il numero di rotazioni e il tragitto delle testine in modo da eseguire tutti gli accessi nel più breve tempo possibile.

La rotazione dei piatti e il posizionamento sulla traccia (seek) sono i due criteri per ottimizzare l'esecuzione dei comandi in coda, così da compiere il tragitto più breve per visitare tutti i blocchi di dati che la coda di comandi prevede di leggere e scrivere.

Questo meccanismo di accodamento e riordino è paragonabile all'ottimizzazione delle consegne da parte di un corriere che debba consegnare decine di colli in diverse zone di una città; anziché esaminare una consegna per volta in sequenza e saltare continuamente da un capo all'altro della città, il corriere stabilisce il percorso che richiede il tempo minore per eseguire tutte le consegne.

Per sfruttare il NCQ occorre che le applicazioni creino code di comandi, il che non succede se è in esecuzione una singola applicazione che attende la risposta a una richiesta di dati prima di inviare la richiesta successiva.

L'alternativa è utilizzare parecchie applicazioni in esecuzione simultanea, oppure applicazioni multithreaded o anche, secondo Intel, applicazioni scritte per sfruttare l'HyperThreading.

Visto il modesto successo dell'HyperThreading, possiamo supporre che l'introduzione delle CPU dual-core incoraggi gli sviluppatori a scrivere software con più thread paralleli, che potrebbero contribuire a creare code di comandi di accesso a disco.

In definitiva, l'NCQ, come tutte le funzioni introdotte nel SATA II, avvantaggia server e network storage più che i desktop di tutti noi.

In ogni caso, per sfruttare le potenzialità dei dischi ad alte prestazioni occorre anche disporre di piattaforme hardware capaci di supportare la crescente larghezza di banda messa a disposizione dai dischi SATA (come avviene anche per lo SCSI) e dalle altre connessioni su cui vengono fatti scorrere i dati (USB, FireWire, Gigabit Ethernet ecc.).

Uno degli elementi chiave di questa crescita è la connessione PCI-Express (vedi articolo pubblicato sul numero scorso), che mette ordine tra i vari tipi di connessione e porta sui desktop prestazioni prima riservate ai server.

IDE, ATA, SATA

Come funziona il Serial ATA
Dopo vent'anni di sviluppi, l'interfaccia ATA ha raggiunto il limite della sua evoluzione e cede il passo alla sua versione seriale, progettata per durare dieci anni

gennaio 2005 L'interfaccia parallela che viene usata dal 1984 per la connessione degli hard disk prese il nome ATA (AT Attachment) perché disco e controller, combinati, si collegavano al bus di I/O del PC AT IBM di quel tempo.

Alcuni produttori hanno quindi chiamato questa interfaccia IDE (Integrated Drive Electronics) per indicare che l'elettronica era integrata nel drive (sotto forma di circuito stampato applicato sul fondo dell'hard disk), a differenza dei primi dischi che avevano bisogno di un controller separato su scheda.

Prima del Serial ATA (SATA), i termini IDE (e il successivo EIDE, Extended IDE) e ATA sono stati usati come sinonimi, anche se, a voler essere precisi, IDE si riferisce al fatto che l'elettronica di controllo è integrata nel drive e ATA, con le sue varianti, si riferisce a una specifica implementazione di IDE.

La cronologia delle interfacce per hard disk vede la ST-506/412 dal 1978 al 1989, l'ESDI dal 1983 al 1991, versioni IDE non ATA dal 1987 al 1993, SCSI dal 1986 a oggi, ATA (IDE) dal 1986 a oggi, SATA dal 2003 e SAS (Serial Attached SCSI, la versione seriale dello SCSI) a partire dal 2004.

Dal parallelo al seriale
L'interfaccia ATA originaria è parallela a 16 bit, quindi trasporta due byte per ciclo di trasferimento.
Fino al 1998 ha utilizzato un cavo a 40 connettori (16 per i dati, 8 fili di terra e il resto per indirizzi e segnali di controllo).

Con la piattina a 40 fili la velocità di trasmissione è cresciuta dagli 8,33 MBps (megabyte/secondo) dell'ATA-1 ai 33,33 MBps dell'ATA-4.

Con l'ATA-4 hanno avuto origine le modalità Ultra DMA (Direct Memory Access), chiamate anche Ultra ATA (per es. l'ATA-4 UDMA Mode 2 da 33 MBps è anche chiamato Ultra-ATA/33 o ATA-33).

Con l'Ultra DMA viene introdotto il doppio data rate (due cicli di trasferimento per ciclo di clock), per cui la capacità della connessione raddoppia a parità di frequenza di clock (4 byte per ciclo di clock).

Con i successivi livelli ATA, dal 5 al 7, la velocità è cresciuta a 66, 100 e 133 MBps, usando le modalità UDMA Mode 4 (Ultra-ATA/66), Mode 5 (Ultra-ATA 100) e Mode 6 (Ultra-ATA/133).

Tutte le modalità a partire dall'ATA-66 richiedono un cavo a 80 fili, anche se i connettori restano quelli standard a 40 piedini.

I cavi ATA sono lunghi da 25 a 45 cm (ne esistono di più lunghi, ma sono da evitare perché non garantiscono la trasmissione corretta dei dati) e solitamente presentano tre connettori, uno dal lato motherboard e due per i drive (hard disk e CD/DVD).

I drive possono essere configurati come master (primo o unico drive), slave (secondo drive installato) o cable select (autoconfigurazione di master e slave), il sistema più comodo.

Oggi la maggior parte dei bus e connessioni è di tipo seriale, perché è molto più facile trasportare un bit alla volta ad altissime frequenze di clock che diversi byte in parallelo a frequenze comunque alte.

Le interferenze e le differenze di propagazione tra i segnali paralleli sono tra le cause delle difficoltà. Mentre la connessione ATA è un bus a cui sono connessi uno o due drive, l'ATA seriale utilizza un collegamento punto a punto; un controller può supportare più drive, ma ciascuno ha il suo cavo SATA separato.

L'ATA-133, per supportare 133 MBps, utilizzava un bus largo 16 bit, un clock di 33 MHz e due trasferimenti per ciclo di clock.

La connessione SATA utilizza sette fili: due coppie di conduttori, una per trasmettere e una per ricevere, e tre fili di terra. I dati sono trasmessi con un clock che, nella versione SATA attuale, è di 1,5 GHz.

Dato che viene usata la codifica detta 8B/10B, che impiega 10 bit per ogni byte trasmesso, la larghezza di banda della connessione è di 150 MBps.

Questa versione di SATA si chiama quindi SATA-150; nei prossimi anni sono previsti il SATA-300 (ormai vicino) e in seguito il SATA-600.

Connettore dati
Nel corso degli anni abbiamo visto diminuire progressivamente la tensione di alimentazione dei processori, delle memorie e degli altri componenti della motherboard.

Il cavo ATA parallelo, con i suoi 26 segnali a 5 volt, era diventato problematico anche a causa dell'ingombro dei connettori e delle relative piste sulla motherboard fino al chipset.

Per di più, le piattine che attraversano lo spazio del telaio per connettere la motherboard agli hard disk e CD/DVD (oltre al floppy disk) tendono a ostacolare i flussi di ventilazione.

Il limite di 45 cm non facilita una disposizione ordinata dei cavi, spesso troppo corti per aggirare la zona centrale del telaio.

Oltre a usare basse tensioni (250 mV) e pochi fili, i cavi SATA hanno il vantaggio di poter essere lunghi fino a un metro.

Anche nel più voluminoso dei telai trovano quindi posto senza interferire con altre connessioni e con i flussi d'aria.

Il numero ridotto di conduttori e le piccole dimensioni del connettore e del cavo facilitano il progetto delle motherboard e l'utilizzo degli hard disk in computer e altri dispositivi di piccole dimensioni.

La codifica 8B/10B usata dal SATA e da altre interfacce (tra cui Gigabit Ethernet, Fibre Channel e Firewire), garantisce che non vengano mai trasmessi più di quattro 0 o 1 consecutivi in ciascun carattere di 10 bit.

Dato che 0 e 1 sono trasmessi come variazioni di tensione, questa codifica assicura un buon bilanciamento elettrico a vantaggio dell'uniformità di carico sui circuiti e dell'affidabilità.

La conversione dei caratteri da 8 a 10 bit lascia libere diverse combinazioni di bit, che sono utilizzate per controllare il flusso dei dati, delimitare i pacchetti, eseguire controlli di errore e altri usi speciali.

I segnali sono di tipo differenziale, sono cioè trasmessi come differenze di tensione tra due fili (una coppia in trasmissione e una in ricezione), così da eliminare il rumore elettrico comune ai due conduttori.

La codifica è di tipo NRZ (Non Return to Zero): tra i due fili di ogni coppia c'è sempre 0,5V di differenza e i dati sono trasmessi scambiando le polarità; quando un filo è a +0,25 V, l'altro è a -0,25V e viceversa.

Alimentazione
Nel progetto del Serial ATA, un hard disk dovrebbe avere due connettori affiancati: quello del segnale, a sette piedini, e quello dell'alimentazione a 15 piedini.

Questi ultimi comprendono tre pin per 5 V, tre per 12 V, tre (di uso opzionale) per 3,3 V e sei per la terra.

In realtà i produttori non sono affatto entusiasti di fornire anche il 3,3 V, quindi spesso si usano cavetti di conversione dai quattro poli tradizionali (5V, 12 V e due di terra) ai 15 piedini oppure si possono continuare a usare i vecchi cavetti a quattro poli con i drive che presentano sia il vecchio sia il nuovo connettore di alimentazione.

Gli alimentatori di produzione recente forniscono comunque i cavetti con i connettori a 15 piedini. Con tre piedini per ciascun livello di tensione, nonostante le piccole dimensioni, il nuovo connettore assicura fino a 4,5 ampere di corrente per ogni tensione, sufficienti anche per il più famelico dei drive.