Gli Fpga nelle applicazioni Dsp

Gli odierni dispositivi Field Programmable Gate Array, dotati di un'architettura che comprende blocchi dedicati alle funzioni di Digital Signal Processing, riscuotono successo crescente in una vasta gamma di applicazioni che un tempo erano appannaggio esclusivo dei tradizionali processori Dsp. Gli Fpga di fascia bassa sono utilizzati spesso come co-processori per alleggerire il lavoro dei Dsp, ma i dispositivi di fascia alta sono in grado di farsi carico per intero delle più complesse applicazioni di Digital Signal Processing. Com'è noto, i blocchi Dsp integrati nel tessuto logico degli Fpga consistono normalmente in moltiplicatori e accumulatori. Sono questi, infatti, gli elementi funzionali di base necessari per realizzare tutte le principali funzioni Dsp, come i filtri Fir (Finite Impulse Response), i filtri Iir (Infinite Impulse Response), le Fft (Fast Fourier Transform), le Dct (Discrete Cosine Transform), ecc. Normalmente questi blocchi possono essere configurati, in sede di “programmazione” del dispositivo, per svolgere operazioni diverse, su dati di larghezza diversa.
La diffusione degli Fpga nelle applicazioni Dsp ha ormai una notevole rilevanza economica. La società di ricerche di mercato Forward Concepts valuta infatti che nel 2005 Xilinx e Altera abbiano entrambe realizzato un fatturato di oltre 200 milioni di dollari nelle applicazioni di Digital Signal Processing, superando sia Freescale sia Agere nel mercato Dsp “non-cellphone” (riguardante cioè sistemi diversi dai telefoni cellulari).
Questo articolo si propone di descrivere i vantaggi offerti dagli Fpga nelle applicazioni Dsp e di passare brevemente in rassegna l'offerta dei principali produttori.

Un cambiamento di prospettiva

È interessante osservare che fino ad alcuni anni fa gli Fpga erano privi di blocchi specializzati per le operazioni Dsp. Inizialmente l'introduzione di questi circuiti aveva il solo scopo di consentire un risparmio delle risorse del dispositivo: la realizzazione di un moltiplicatore in forma “soft”, cioè tramite una opportuna programmazione del tessuto logico, avrebbe infatti comportato lo “spreco” di centinaia di elementi logici. L'introduzione di blocchi di logica “hard-wired” all'interno di un tessuto logico programmabile, comporta anche aspetti che possono essere giudicati negativamente: ad esempio una complicazione dell'architettura e una rinuncia alla purezza del concetto di array totalmente programmabile. Oggi, però, la valutazione dei pro e dei contro è completamente diversa. Le nuove generazioni di Fpga in tecnologia 65 nm, ad esempio, offrono un numero elevatissimo di elementi logici e quindi, in teoria, non sarebbe impossibile realizzare anche le funzioni Dsp in forma totalmente “soft”; lo spreco di risorse potrebbe essere ritenuto accettabile. Nonostante questo, oggi tutti i nuovi Fpga sono dotati di blocchi Dsp, i quali, lungi dall'essere considerati come un male necessario, rappresentano indubbiamente un valore aggiunto. Questo cambiamento di prospettiva si può forse spiegare ricordando che negli ultimi anni si è verificata la coincidenza tra due fenomeni contrastanti: da un lato è cresciuta enormemente la necessità di potenza di calcolo Dsp, poiché è aumentata la larghezza di banda disponibile nelle applicazioni di audio digitale e video digitale; dall'altro lato i tradizionali processori Dsp hanno raggiunto il limite delle possibilità di sviluppo basate sulla semplice legge di Moore. Analogamente ai microprocessori, infatti, anche i processori Dsp sono oggi costretti a fare i conti con i limiti dell'architettura di Von Neumann. Gli Fpga “Dsp oriented”, che si basano su architetture intrinsecamente parallele, sono in grado di rispondere a questa maggiore domanda di potenza di calcolo e quindi hanno saputo conquistare rapidamente un ruolo significativo nel mercato delle applicazioni Dsp. Per questo motivo gli Fpga “Dsp oriented” possono forse essere considerati, almeno concettualmente, come una nuova categoria di dispositivi: una sorta di “Dsp paralleli”, nei quali il tessuto logico programmabile rappresenta una risorsa subordinata alle funzioni di Digital Signal Processing.

Migliore sfruttamento della legge di Moore

Uno dei vantaggi degli Fpga consiste in una struttura relativamente omogenea e ripetitiva, non vincolata allo schema rigido di Von Neumann, che consente di sfruttare meglio la progressiva riduzione delle geometrie di processo. La disponibilità di un numero sempre più elevato di porte logiche può essere facilmente utilizzata per realizzare più moltiplicatori, con un conseguente aumento delle prestazioni. Nei tradizionali processori Dsp, invece, la maggiore disponibilità di porte logiche è stata sfruttata solitamente per aumentare la complessità delle istruzioni e delle microarchitetture, con l'uso di lunghe pipeline e unità di esecuzione multiple. Ma queste tecniche non assicurano una relazione lineare tra numero di gate e prestazioni. Ad esempio, i vantaggi ottenuti aggiungendo nuove unità di esecuzione divengono sempre più piccoli all'aumentare del numero totale di unità. È infatti difficile adattare le applicazioni a questa particolare forma di parallelismo, inoltre le architetture dei processori Dsp presentano spesso anche altri fattori limitanti, come la banda di memoria disponibile. La maggiore disponibilità di gate può essere usata anche per aumentare la quantità di memoria presente sul chip del processore Dsp, ma anche i vantaggi offerti da questa tecnica raggiungono rapidamente un limite. Per questi motivi, recentemente l'attenzione dei progettisti di processori Dsp si è rivolta alle architetture multicore, analogamente a quanto sta avvenendo nel settore dei microprocessori. Solitamente, però, la scrittura di software per i Dsp multicore richiede tecniche particolari e complesse, che finora hanno limitato la diffusione di queste soluzioni. Al contrario, l'aumento dei gate disponibili negli Fpga è un processo graduale, che non comporta discontinuità concettuali e non richiede cambiamenti nei metodi e negli strumenti di sviluppo. Naturalmente l'eventuale comparsa di nuovi tool di progettazione rivolti ai Dsp multicore potrà cambiare lo scenario competitivo.

Parallelismo e flessibilità

La semplice possibilità di ripetere uno stesso modulo architetturale, cioè di aumentare il numero di moltiplicatori, non sarebbe un vantaggio importante se gli algoritmi di Digital Signal Processing non fossero essi stessi ripetitivi. Molte delle funzioni base utilizzate nelle elaborazioni Dsp si basano infatti sulla ripetizione di operazioni identiche e quindi si prestano in modo ottimale all'uso di architetture parallele. Un filtro Fir a 256 tap, ad esempio, richiede 256 operazioni consecutive di moltiplicazione. In un processore Dsp tradizionale, normalmente ciò è ottenuto utilizzando un unico blocco Mac per 256 iterazioni consecutive. In un Fpga, al contrario, è possibile utilizzare 256 moltiplicatori distinti e quindi ottenere il risultato in un solo colpo di clock. Inoltre la possibilità di configurare i singoli blocchi Dsp e di usare il tessuto logico di contorno per collegarli tra loro a piacimento rende possibile, nel caso degli Fpga, creare una struttura hardware perfettamente aderente all'algoritmo. Al contrario, le risorse hardware dei tradizionali processori Dsp sono predeterminate e quindi non offrono lo stesso livello di flessibilità. Un dato Dsp avrà ad esempio determinate prestazioni a livello di bus, un numero fisso di blocchi Mac (moltiplicazione-accumulo), una larghezza dei dati predeterminata e una dotazione fissa di blocchi di accelerazione (con la possibilità di accelerare solo determinate funzioni).
Un ulteriore vantaggio offerto dagli Fpga consiste nella possibilità di dosare il grado di parallelismo per raggiungere il migliore compromesso tra prestazioni e area di silicio occupata. Infatti, quando la frequenza di clock del dispositivo è molto maggiore della frequenza di campionamento del segnale da elaborare, diviene possibili realizzare un multiplex temporale delle risorse hardware.
Per concludere questa breve analisi sulle caratteristiche delle architetture, ricordiamo due aspetti riguardanti la valutazione delle prestazioni degli Fpga “Dsp oriented”. Spesso il fattore limitante nelle applicazioni più gravose non è rappresentato dal numero di moltiplicatori, bensì dalla disponibilità di memoria sul chip dell'Fpga. Si pensi ad esempio alle elaborazioni riguardanti la televisione ad alta definizione, dove è necessario conservare in memoria un quadro mentre si elabora il precedente. Va inoltre ricordato che, a differenza di quanto avviene con i processori Dsp, il valore della frequenza di clock non fornisce indicazioni univoche e chiare sulle prestazioni di un Fpga.

Costi e consumi energetici

I fattori principali che tuttora limitano l'adozione degli Fpga nelle applicazioni Dsp sono la complessità del processo di sviluppo (di cui ci occuperemo nel paragrafo seguente) e la loro cattiva reputazione per quanto riguarda l'aspetto dei costi e dei consumi energetici. Questi temi sono stati affrontati recentemente da una ricerca condotta dalla società di consulenze americana BDTI (Berkeley Design Technology Inc.), ricerca che sembra aver capovolto vari luoghi comuni. L'aspetto dei costi è stato analizzato tramite un confronto tra tre dispositivi: l'Fpga Xilinx Virtex-4 SX25, l'Fpga Altera Stratix-II 2S15 e il processore Dsp Texas Instruments TMS320C6410 a 400 MHz. I tre chip sono stati sottoposti a un benchmark in applicazioni di comunicazione OFDM (Orthogonal Frequency Division Multiplexing). I risultati della prova, espressi in termini di rapporto costo/prestazioni, hanno mostrano una superiorità schiacciante dei dispositivi Fpga. È vero, infatti, che il semplice confronto tra i prezzi dei tre dispositivi depone a favore del processore Dsp, ma grazie alle loro prestazioni più elevate gli Fpga raggiungono risultati migliori in termini di rapporto dollari/Mac. Concretamente questo significa che, in un sistema di comunicazione basato su molti canali, un singolo Fpga può servire un maggior numero di canali rispetto a un Dsp. Qualcosa di simile vale per i consumi energetici, che rappresentano un aspetto importante non solo per i sistemi portatili ma anche per le applicazioni fisse. Il confronto, infatti, non deve essere condotto a livello di chip, bensì a livello di soluzione completa. Secondo i test condotti da BDTI con il già citato benchmark OFDM, un Fpga di fascia alta consuma circa dieci watt, contro i due-tre watt di un Dsp di fascia alta. Ma il primo dispositivo ha potenza di calcolo sufficiente per gestire un numero di canali da dieci a cento volte maggiore rispetto al secondo. Il consumo di energia per canale, quindi, è molto più basso nel caso dell'Fpga. BDTI riconosce comunque la necessità di ulteriori, rigorose ricerche su questo tema. Il confronto, inoltre, potrebbe avere risultati diversi se riferito alle applicazioni di fascia bassa.
Vale la pena ricordare che la cattiva reputazione degli Fpga sul fronte dei consumi energetici si fonda sulle inefficienze legate alla grande disponibilità di risorse hardware e di routing, che si traducono ovviamente una grande superficie di silicio. Anche i processori Dsp, tuttavia, sono affetti da inefficienze energetiche, poiché in queste architetture solo una piccola parte del silicio è dedicata al calcolo vero e proprio; il resto è utilizzato per muovere le istruzioni e i dati.

Tempi di sviluppo e strumenti software

Secondo la società di consulenza BDTI, lo sviluppo di una applicazione di Digital Signal Processing tramite un dispositivo Fpga può richiedere un tempo fino a cinque volte maggiore rispetto a una analoga applicazione basata su un tradizionale processore Dsp. Ciò si traduce ovviamente in costi maggiori e un allungamento del time-to-market. Per abbreviare i tempi di sviluppo, i principali produttori di Fpga hanno messo a punto strumenti di sintesi che permettono al progettista di descrivere la funzione Dsp desiderata utilizzando un alto livello di astrazione, come ad esempio uno schema a blocchi in Simulink. Il codice per la programmazione dell'Fpga viene quindi generato automaticamente. BDTI sostiene che i nuovi strumenti di sintesi rivolti agli Fpga non sono ancora entrati nell'uso comune, la maggior parte dei progettisti continua ad utilizzare linguaggi di descrizione hardware, e che il loro successo dipenderà da cinque principali fattori:
1 - possibilità di usare linguaggi standard senza varianti (ad esempio il C), e di riutilizzare gli algoritmi esistenti senza modifiche;
2 - livello di efficienza raggiungibile nell'uso delle risorse hardware dell'Fpga e nelle prestazioni di calcolo;
3 - ampiezza dello spettro applicativo (ad esempio la possibilità di sviluppare anche applicazioni di elaborazione di pacchetti);
4 - possibilità di realizzare l'intero progetto tramite un unico strumento; spesso infatti l'efficienza degli strumenti software viene pubblicizzata facendo riferimento a funzioni specifiche, come ad esempio la generazione di filtri Fir);
5 - ampiezza della gamma dei blocchi costruttivi forniti e soluzioni disponibili per i blocchi non compresi nell'offerta del fornitore.


I dispositivi offerti dal mercato

Il mercato offre una notevole varietà di Fpga “Dsp oriented”, diversi per densità, numero di moltiplicatori, velocità ecc. Nei paragrafi seguenti forniremo una breve descrizione dell'offerta dei principali produttori. Per tutte le società citate faremo riferimento solo ai prodotti di ultima generazione; nella maggior parte dei casi, però, le aziende continuano ad offrire anche prodotti di generazioni precedenti.

L'ultima generazione di Fpga

Le due principali famiglie dei prodotti Altera di ultima generazione, in tecnologia 65 nm, sono denominate Cyclone III e Stratix III. La prima si rivolge alla fascia bassa del mercato, mentre la seconda alle applicazioni di fascia alta. La famiglia Stratix III comprende dispositivi con una densità massima di 338.000 elementi logici e risorse Dsp che consentono di realizzare fino a 896 moltiplicatori 18x18 che possono operare fino a 550 MHz. Considerando solo i blocchi Dsp, le prestazioni massime raggiungono quasi 500 GMac. Ciascun blocco Dsp può essere configurato per svolgere la funzione di otto moltiplicatori 9x9, quattro moltiplicatori 18x18, (otto moltiplicatori 18x18 in Fir mode), oppure due moltiplicatori 36x36. La famiglia Cyclone III comprende dispositivi con densità massima di 119.088 elementi logici, dotati di risorse Dsp sufficienti per realizzare fino a 576 moltiplicatori 9x9 oppure 288 moltiplicatori 18x18, che in quest'ultima configurazione possono operare fino a 260 MHz. Altera offre inoltre tre famiglie di Fpga basate su transceiver denominate Stratix GX, Stratix II GX e Arria GX, anch'esse dotate di blocchi Dsp. La gamma degli strumenti di progettazione comprende il software Quartus II, il software Dsp Builder basato su Matlab e Simulink, oltre a una libreria di funzioni parametrizzabili per Fft, Fir, Viterbi, Turbo ecc. Le iniziative di Altera nel settore dei Dsp includono anche lo sviluppo di reference design rivolti a specifici settori applicativi come wireless ecc.

Tre famiglie di Fpga

L'offerta di Xilinx si articola su tre famiglie principali: Spartan-3 (fascia bassa), Spartan-3 Dsp (fascia media) e Virtex (fascia alta). La famiglia Spartan-3 Dsp raggiunge una densità di oltre 53.000 celle logiche, con un massimo di 126 blocchi Dsp (denominati “Dsp48 slice”) operanti fino a 250 MHz. Il dispositivo più potente di questa serie offre prestazioni Dsp di 32 GMac. La famiglia Virtex-5 SXT raggiunge invece una densità massima di oltre 94.000 celle logiche con una dotazione di 640 blocchi Dsp operanti fino a 550 MHz. Il dispositivo più potente offre quindi prestazioni Dsp di 352 GMac. Xilinx propone una varietà di strumenti software per la progettazione che consentono di utilizzare diversi linguaggi: Vhdl, Verilog, C, C++, Matlab. Sono inoltre disponibili un'amplia libreria di blocchi IP e numerosi reference design.

Fpga in tecnologia da 90 nm

Lattice offre due principali famiglie di Fpga dotate di blocchi Dsp, denominate ECP2/M e XP2, entrambe realizzate in tecnologia 90 nm. I dispositivi compresi nella prima famiglia sono dotati di un numero di blocchi Dsp compreso tra 3 e 42, mentre i membri della seconda ne contano da 3 a 8. Ciascun blocco (denominato sysDsp) comprende registri di ingresso/shift register, moltiplicatori, sommatori/accumulatori, registri di uscita. I moltiplicatori sono configurabili per tre diverse larghezze di datapath: 9, 18 e 36 bit. Ogni blocco Dsp può quindi ospitare nove moltiplicatori a 9 bit, o quattro moltiplicatori a 18 bit, oppure uno a 36 bit. Ciascun sysDsp può essere configurato per realizzare quattro diverse funzioni: Mult, Mac, Multaddsub, Multaddsubsum. La famiglia XP2, pur essendo realizzata in tecnologia Sram, si caratterizza per essere dotata di una memoria flash che conserva la configurazione del dispositivo anche in assenza di alimentazione.

Logiche programmabili in tecnologia antifuse

La principale famiglia di prodotti Quicklogic rivolta alle applicazioni Dsp, denominata Eclipse Plus, offre dispositivi di densità compresa tra 250k e 580k system gate, con un numero di blocchi Dsp compreso tra 10 e 18. La frequenza di funzionamento raggiunge i 250 MHz. Ciascun blocco Dsp (denominato Embedded Computational Unit) può essere configurato per svolgere otto diverse operazioni tra cui Registered o Flow-Through Multiply, Add, Multiply-Add, o Multiply-Accumulate. La configurazione avviene tramite un set di istruzioni a tre bit che può essere fornito dall'array logico, dalla memoria o da pin esterni. Secondo Quicklogic la tecnologia antifuse consente di proteggere efficacemente la proprietà intellettuale contenuta nello schema di configurazione del dispositivo, poiché l'eventuale tentativo di incidere gli strati superficiali per analizzare l'interno del chip porterebbe alla distruzione di tutti i fusibili.
Un cenno infine ad Actel, che attualmente non offre dispositivi dotati di blocchi Dsp. Anche questa società, però, sta valutando la possibilità di introdurre risorse di digital signal processing nelle future generazioni dei propri prodotti.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome