Introduzione
Ben
tornati sulle pagine della rubrica "Tecnologie da Sogno".
In questo numero d' Aprile 2003 andremo a presentarvi uno degli
integrati più avanzati e straordinari oggi disponibile
sul mercato: l'FPGA Virtex-II Pro di Xilinx.
Questi dispositivi rappresentano il "top" per
tutta una serie di motivi: primo sono enormi (centinaia di milioni
di transistor), secondo sono integrati con tecniche allo stato
dell'arte (130nm 9 strati di metallizzazione in rame, o addirittura
90nm 10 strati, low-K) ma soprattutto, sono completamente
riprogrammabili per implementare al loro interno qualsiasi tipo
di dispositivo digitale.
Nell' articolo partiremo spiegando sommariamente in cosa
consiste la progettazione di un chip, procederemo quindi introducendo
gli FPGA per poi approfondire l'ultima meraviglia di Xilinx.
Come si progetta un chip
L'acronimo FPGA sta per Field Programmable
Logic Array, ossia "array logico (ri)programmabile a banchi".
Si tratta di una particolare classe di integrati che è
possibile riprogrammare per realizzare il progetto digitale voluto.
Attenzione, non stiamo parlando della classica programmabilità
di un processore o di un DSP ma della possibilità di riconfigurare
le risorse logiche disponibili per implementare un progetto complesso
a livello di singole interconnessioni tra porte logiche.
Quando si crea un integrato, i progettisti, o meglio i
compilatori che poi trasformano i blocchi logici di più
alto livello in blocchi più semplici, devono pensare in
termini di porte logiche connesse tra di loro.
La gerarchia è la seguente: un insieme di transistor
integrati permette di implementare una porta logica o qualcosa
di un pò più complesso come una cella di memoria
SRAM. Un agglomerato di porte logiche forma una rete combinatoria
che produce un certo risultato in base agli input forniti (esempio:
un sommatore o un moltiplicatore). Le memorie permettono poi di
scomporre le elaborazioni in passi successivi memorizzando lo
stato del sistema e i risultati intermedi di una elaborazione
e concorrono a creare sistemi di logica combinatoria.
La complessità dei circuiti tende quindi ad aumentare
aggregando pezzi di logica e si possono realizzare ALU, controllori,
codificatori, compressori, decompressori, controller di memoria,
FPU, e così via. Per approfondire l'argomento e comprendere
i vari tipi di logica vi consigliamo il nostro speciale: "Le
basi della computazione".
Con l'aumentare della complessità dei progetti,
i progettisti si sono sempre più avvalsi di strumenti in
grado di astrarre dai livelli più bassi di logica. Sono
quindi nati linguaggi di definizione dei chip di medio-alto livello
(come il VHDL). Con questi linguaggi ci si può permettere
di usare librerie di componenti pre-definiti e lavorare con blocchi
e macroblocchi di alto livello.
L'evoluzione è del tutto analoga a quanto accaduto
in programmazione. Progettare un integrato lavorando direttamente
sui singoli transistor è paragonabile alla programmazione
Assembler e procedendo nel paragone si passa attraverso gli equivalenti
del C, del C++, degli strumenti RAD che aumentano la potenza astraendo
dall'hardware sottostante. Qual'e' il principale svantaggio di
questo approccio di alto livello (e forse anche l'unico)? sicuramente
la mancanza generale di ottimizzazione del risultato finale.
Questo fattore può
del resto essere di secondaria importanza quando il Time To Market
di un prodotto si riduce sempre più e la flessibilità
rappresenta la caratteristica chiave del ciclo di progettazione.
Una volta che il progettista ha definito il chip in VHDL
ed ha fatto tutte le sue simulazioni arriva il momento di trasferire
il progetto logico sul supporto fisico. E qui esistono 3 possibili
approcci:
1. Implementare un chip full-custom
2. Implementare un chip semi-custom
o Asic
3. utilizzare una logica programmabile
La prima soluzione prevede
la compilazione del progetto logico fino al livello di singole
disposizioni di transistor, questo approccio richiede un forte
intervento umano ma permette una ottimizzazione dei ritardi, lo
sfruttamento massimo della tecnologia di integrazione scelta e
quindi il raggiungimento di elevate performance. Sono progetti
full-custom tipicamente i processori (Intel, AMD, etc..). Chiaramente
chi si può permettere un approccio del genere può
creare prodotti altamente performanti caricando di molto i costi
fissi e i costi di sviluppo ma riducento poi i costi ricorrenti
(il prezzo per ogni die di silicio integrato). E' tuttavia prevedibile
un ciclo di progettazione piuttosto lungo, adatto a prodotti di
lunga vita commerciale.
La seconda soluzione prevede
l'utilizzo di tecnologie semi-lavorate. Si tratta in pratica di
array di porte logiche in gran parte già definiti, dove
tramite la definizione delle interconnessioni a livello di chip
si implementa la logica voluta. L'approccio è quello del
semi-lavorato. I costi di sviluppo si riducono a discapito delle
performance, dell'ottimizzazione, etc... si ha anche un certo
livello di risorse non utilizzabili a causa della struttura a
griglia predefinita che quindi fanno salire il costo per pezzo
prodotto. I chip video sono ad esempio spesso dei chip in tecnologia
semi-custom, così come i chip delle mother-board.
La terza soluzione utilizza
dei particolari chip già integrati in cui si hanno una
serie di blocchi logici elementari riprogrammabili e collegabili
tra loro secondo le esigenze del progetto finale. I vantaggi sono
evidenti: si compra il chip, si compra la scheda che permette
la programmazione del chip, si dice al compilatore di generare
la giusta configurazione a partire dal nostro VHDL ed il nostro
chip è già pronto.
In questo modo si azzerano praticamente i costi fissi (non
ci sono maschere da realizzare per l'integrazione dei chip), ma
si innalza di molto il costo per singolo chip. Queste logiche
infatti sono ampiamente ridondanti per permettere la riprogrammazione,
ed esiste quindi sempre un rapporto considerevolmente sfavorevole
tra numero di transistor globali che compongono il chip fisico
e numero di transistor equivalenti del progetto logico in esso
implementato.
E' chiaro tuttavia che questo
è un compromesso non solo accettabile,ma in molti casi
anche l'unica possibilità di sviluppare un chip in proprio
per chi non può disporre dei centinaia di migliaia di euro
necessari a creare le maschere per l'integrazione diretta di un
chip.
Inoltre, c'e' da considerare
che in certi ambiti come il biomedicale, l'industriale o nella
creazione di prototipi, la produzione conta solo pochi chip (migliaia,
nel migliore dei casi) e che conseguentemente non è assolutamente
pensabile l'adozione delle tecniche custom o semicustom che hanno
bassi costi per pezzo ma altissimi costi di setup che andrebbero
comunque a ricadere sui pochi chip prodotti.
FPGA
Gli FPGA sono appunto logiche programmabili.
Non sto qui ad analizzare i differenti approcci tra i vari FPGA
in circolazione. A voi basti sapere che in generale sono sistemi
composti da migliaia di Blocchi Logici (LB) elementari che possono
essere liberamente interconnessi tra loro. I blocchi logici sono
costituiti da reti combinatorie ridefinibili ed elementi di memoria.
Nel caso della tecnologia FPGA di Xilinx si parla di un
logica combinatoria a 4 ingressi - 1 uscita implementata tramite
LUT (una look-up table costituita da una memoria SRAM di 16 locazioni
da 1bit). All' uscita della LUT sono presenti un paio di FLIP-FLIP
(memorie da 1bit) che possono memorizzare l'uscita del sistema
combinatorio. Nel complesso un LB diventa un piccolo sistema sequenziale.
E' poi possibile combinare più BL adiacenti in parallelo
o in cascata per estendere a piacimento queste funzionalità
fino a realizzare reti arbitrariamente complesse. Sia la programmazione
delle LUT che la programmazione delle matrici di interconnessione
avviene tramite celle di memoria volatile che possono essere configurate
a piacere (tipicamente la configurazione viene caricata all'accensione).
Nel tempo Xilinx si
è imposto come il più grande produttore di logiche
programmabili del mondo con uno quota di mercato del 44% davanti
ad Altera, Actel e altri minori. La società, forte del
suo miliardo di dollari di vendite, ha sempre più potenziato
la propria tecnologia FPGA dotando i suoi sistemi di features
sempre più avanzate e blocchi pre-definiti specializzati
necessari per evitare sprechi di LB.
Gli FPGA più recenti sono quindi dotati ad esempio
di blocchi di memoria statica distribuiti uniformemente all'interno
del "tessuto" (fabrics) di LB. Questi blocchetti sono
tipicamente di 2KB e sono configurabili a 8, 16 o 32bit. E' possibile
estenderne l'ampiezza o la profondità componendo i blocchi
in serie o in parallelo. Inoltre, nei chip più recenti,
si possono trovare anche altri elementi in grado di svolgere compiti
più complessi e "dedicati" come moltiplicatori
e piccoli processori embedded.
Tutto questa molteplicità
di risorse riconfigurabili è immersa in un mare di interconnessioni
ridondanti in grado di connettere a piacere blocchi di logica
anche molto lontani (chiaramente con performance diverse in funzione
della distanza della connessione). Infine ai lati del chip sono
presenti i dispositivi di input-output connessi ai pin esterni,
anch' essi completamente configurabili ed in grado di assicurare
la compatibilità con vari tipi di logiche e di interfaccie
esterne. Ad esempio, le logiche Xilinx più avanzate sono
compatibili con memorie DDR e QDR.
VIRTEX-II PRO

Dopo questa breve introduzione
sugli FPGA torniamo al nostro Virtex-II PRO. VIRTEX-
II PRO è la famiglia di FPGA Xilinx più avanzata
nonchè uno dei chip più potenti al mondo. I modelli
più recenti e potenti della famiglia sono anche i primi
integrati commerciali ad adottare la tecnologia 90nm con connessioni
in rame e materiali low-k. Questa tecnologia è frutto della
nuova fab di IBM costata la bellezza di 2.500 milioni di dollari!
Pensate che il modello più
avanzato di questa famiglia di chip contiene qualcosa come 125.000
blocchi logici in grado di implementare complessivamente un progetto
da quasi 10 milioni di gate equivalenti. Il clock massimo supportabile
è di 400MHz in 130nm e oltre 500MHz in 90nm.
Oltre ai LB il chip integra
anche la bellezza di 556 blocchi di memoria Sincronous Static
RAM true-dual ported per complessivi 10Mbit di memoria integrata
e 556 moltiplicatori dedicati 18bitx18bit in grado di funzionare
fino a 300MHz (0.13um) e oltre 400MHz (0,09um) e quindi capaci
di fornire prestazioni complessive di 220 Miliardi di moltiplicazioni
sugli interi al secondo. Alcune indicazioni di Xilinx parlano
inoltre di un potenziale massimo teorico di oltre 1000 miliardi
di operazioni 16bit MACC al secondo (moltiplicazione ed accumulazione,
il mattone fondamentale di qualsiasi algoritmo audio-video) ottenibile
sfruttando al massimo tutte le risorse disponibili.
Dulcis in fundo, il chip contiene anche 4
core completi PowerPC 405 di IBM. Si tratta di un nucleo
di elaborazione RISC a 32bit capace di sviluppare oltre 600 DMIPS
a 400MHz. I PPC sono datati di I-cache e D-cache da 16K e numerosi
bus. Questi nuclei ottimizzati nella funzione di controllo general-purpose
permettono di rispiarmiare preziosi LB, lascinadoli all'implementazione
della logica di calcolo specializzato.
Xilinx vende comunque anche core di elaborazione già
pronti e ottimizzati implementabili come configurazione di LB.
Si ottiene tipicamente un core RISC simile ad un PPC capace di
velocità nel range dei 100-200Mhz e 200 DMIPS utilizzando
appena 1000 LB. In tal caso, il Virtex-II PRO sarebbe in grado
di integrarne oltre un centinaio.
In pratica su questo chip
è possibile implementare un progetto che richiederebbe,
se costruito con tecnologie custom, non meno di 50 milioni di
transistor per la sola logica. Se contiamo anche di utilizzare
come cache e buffer anche i 10Mbit di SRAM, arriviamo quasi a
100 milioni.
Un chip con queste caratteristiche è già
superiore ad un Pentium 4 o a un GeForce4, ed è paragonabile
ai più recenti R300 e NV30. C'e' tuttavia da sottolineare
che il clock massimo raggiungibile complessivamente da una logica
così grande dipende molto dal lavoro dei progettisti, dal
numero di pipeline implementate, etc... C'e' comunque da aspettarsi
velocità reali di almeno 250-300MHz nella versione a 90nm.
Per permettene la configurazione
di tutte le risorse, il chip è costellato di milioni di
Flip-Flip che vengono programmati all' accensione del chip. La
configurazione risiede infatti su memorie esterne che eseguono
letteralmente il boot del chip configurando tutti gli switch,
i commutatori le LUT e le matrici di interconnessioni che ne costituiscono
"il tessuto". Modificare la configurazione del chip
per upgrade, patch e nuove versioni sarebbe quindi solo questione
di "firmware". Complessivamente si parla di 45 milioni
di bit usati per configurare altrettante celle di memoria elementari.
Il chip risulta veramente mastodontico, infatti se
uniamo queste 45 milioni di celle ai 10Mbit di memoria SRAM interna
e ad altra logica sparsa avremo un computo complessivo che si
aggira tra i 300 e i 400 milioni di transistor per chip !!!
Chi utilizza questi chip ?
E' chiaro che questi chip hanno potenza da vendere, ma chi
li utilizza?. In genere ci sono due campi principali d'impiego:
la simulazione di chip che poi verranno integrati con tecnologie
custum o semicustom, oppure l'implementazione di progetti
a tiratura abbastanza modesta ma che richiedono elevata potenza.
Ad esempio nVidia ed ATi utilizzano spesso FPGA per simulare
singole parti dei loro chip, nell'industria aereo-spaziale si
usano comunemente per simulare chip che poi saranno realizzati
con tecnologie ASIC specifiche per l'ambiente spaziale (RADHARD-resistenti
alle radiazioni). Si usano molto spesso in ambito biomedicale,
nell'automazione industriale, nelle stazioni base dei radiomobili,
nelle schede di acquisizione dati ad uso scientifico, nei super
computer, etc... Ossia nei casi dove il costo unitario per apparecchiatura
è alto ma la tiratura bassa.
Come tutte le tecnologie all'avanguardia,
anche questi FPGA hanno un costo piuttosto elevato. Del resto
integrare 400 milioni di transistor non è uno scherzo e
le rese sono abbastanza basse. Xilinx conta di ridurre drasticamente
i costi per i chip più piccoli (che sono anche quelli che
si vendono di più), ma per questi bestioni si parla ancora
di migliaia di euro per singolo pezzo.
Per
discutere di questa e di altre tecnologie , iscrivetevi al FORUM
di Lithium.it.
Per essere avvertiti di nuovi articoli iscrivetevi alla
NEWSLETTER
di Lithium.it
Alla
prossima puntata,
Stay on charge, Lithium.it !