Il dibattito in corso sul futuro del settore dei semiconduttori si è trasformato in una discussione in merito alla crescente scelta di tecnologie che, invece di essere ossessionate dall’ulteriore processo di riduzione delle geometrie, si concentrano sulle architetture di sistema e su un miglior utilizzo del silicio disponibile attraverso nuovi concetti progettuali a livello circuitale, di dispositivo e di packaging. Gli Fpga embedded rappresentano una soluzione che si propone di essere molto più di una semplice innovazione.
Fpga e Big Data
Nel corso del tempo, gli Fpga hanno proliferato in tutti i settori dell’elettronica. Con l’integrazione di funzionalità a livello di sistema all’interno di geometrie di processo sempre più piccole, gli Fpga sono migliorati notevolmente in termini di prestazioni, potenza e costi, tanto che questi prodotti offrono oggi un significativo valore aggiunto anche nelle applicazioni di alto volume. La ricchezza funzionale degli Fpga ha anche permesso loro di accedere a segmenti un tempo dominio esclusivo di Dsp, Gpu e Mcu. Con l’emergere delle applicazioni Big Data e Internet delle Cose, gli Fpga sono pronti per una nuova fase di crescita. Se da un lato stanno affermandosi i progetti IoT per schede di sensori e punti di accesso basati su Fpga a bassissimo costo e a consumo ridotto, dall’altro gli architetti dei data center hanno scoperto l’attitudine dei nuovi Fpga di fascia alta di operare come acceleratori hardware programmabili per applicazioni relative a sicurezza, offload pacchetti, ispezione approfondita dei pacchetti, ricerche non strutturate, accelerazione di database, apprendimento automatico, reti software-defined e accelerazione di rete. L’evoluzione degli Fpga da logica di supporto a elementi di prototipazione a componenti centrali del progetto di sistema ha implicazioni per l’intera industria dei semiconduttori. Dal momento che l’integrazione delle funzioni a livello di sistema, quali i blocchi Ip, è stato un tema dominante nel campo della microelettronica negli ultimi due decenni, è logico a questo punto presupporre che gli Fpga possano diventare una dotazione embedded dei progetti SoC e Asic. Affermare che l’integrazione della tecnologia Fpga nei SoC è ora un obiettivo raggiungibile, può essere per qualcuno difficile da accettare, soprattutto considerando che da sempre gli Fpga sono considerati una pessima scelta nelle applicazioni con volumi elevati a causa dei consumi, del prezzo e delle prestazioni. Questo chiaramente non è più valido. Gli Fpga mettono a disposizione una proposta di valore interessante, che garantisce risparmio energetico e riduzione dei costi. Eppure, in alcuni ambienti, i dubbi persistono. Un argomento comune è che la tecnologia Cpu embedded, già collaudata e utilizzata in una pletora di architetture specializzate, offre tutta la programmabilità necessaria per soddisfare qualsiasi esigenza. Queste argomentazioni, tuttavia, sono fuorvianti. La dicotomia Cpu-Fpga infatti non comporta una scelta esclusiva. Un confronto della loro funzionalità rivela perché. Esistono numerose varianti all’architettura load/store di elaborazione centralizzata di tipo Harvard. Mcu e Mpu eseguono le applicazioni relative al piano di controllo per l’amministrazione e la gestione di sistema; i processori multimediali si basano su una Alu comune alle architetture Cpu. Ciò amplia enormemente le funzionalità per supportare le applicazioni data-plane, le quali trasferiscono grandi volumi di dati ed eseguono l’aritmetica più complessa. Per migliorare il throughput del processore, nel corso degli anni è stata sviluppata e liberamente utilizzata in queste architetture un’abbondanza di caratteristiche altamente creative. Per il supporto multi-threading, per instanziare più pipeline per l’esecuzione superscalare e per sovralimentare il numero di istruzioni per ciclo, sono stati aggiunti elementi di logica e registri capaci di facilitare l’esecuzione out-of-order e altri aspetti. Dal tentativo di sfruttare i parallelismi a livello di istruzioni e dati, sono scaturite innovazioni quali Vliw e Simd. Eppure, nonostante queste differenze, tutte le Cpu condividono alcune caratteristiche.
Sinergie tra Cpu ed Fpga
Vi sono alcune analogie tra la circuiteria Cpu e quella Fpga. Le due soluzioni utilizzano una combinazione di memoria e logica per immagazzinare ed elaborare dati e istruzioni. Le Cpu usano logica, registri e memorie per raccogliere i dati e le istruzioni, eseguendo quindi una selezione di attività software in continua evoluzione sui piani relativi sia al controllo sia ai dati. L’essenza degli Fpga è una memoria per la configurazione di diversi elementi: tabelle di ricerca, multiplexer e matrici di interconnessione parzialmente popolate. Quindi, anche gli Fpga utilizzano un mix di logica e memoria per elaborare più algoritmi. Tali somiglianze, tuttavia, sono solo superficiali. Riorganizzare la struttura di un Fpga implica lo streaming nuovi schemi di configurazione della Ram, il che richiede tempo. Ci sono dispositivi e tecniche che permettono di accelerare i tempi di programmazione, soprattutto per le riconfigurazioni parziali. Per questo gli Fpga non sono destinati ai cambi di contesto rapidi, che rappresentano la normalità per la maggior parte delle Cpu. Di conseguenza, gli Fpga sono principalmente impiegati in applicazioni data-plane, emulando funzioni logiche digitali per eseguire gli algoritmi utilizzati frequentemente. Essi sono impiegati quasi esclusivamente per i carichi di elaborazione che si ripetono per migliaia di cicli o più. Infatti, la riconfigurazione di un Fpga nel sistema assume spesso la forma di aggiornamenti software da effettuare a intervalli di giorni. Le attività in corso da parte di Intel, Microsoft, e dei gruppi OpenCapi e Ccix esemplificano la natura tecnologicamente complementare di Cpu e Fpga. Usando questi dispositivi in tandem, le Cpu possono concentrarsi sugli algoritmi più complessi e con cambi di contesto rapidi, lasciando il compito di svolgere le attività ripetitive a un Fpga, il quale può operare come engine acceleratore/coprocessore/offloader con hardware configurabile. Anche usando Fpga e Cpu sotto forma discreta, i sistemi possono beneficiare di una maggiore efficienza complessiva legata al fatto che le due tecnologie non si scontrano, ma si combinano come una mano e un guanto.
L’Fpga diventa embedded
Si tratta di una prova sicura del fatto che nell’era ultra-submicron l’integrazione di una struttura Fpga in un SoC rappresenta una evoluzione sistemistica naturale. In qualità di autorevole azienda del settore Fpga Achronix è ben posizionata per capitalizzare questa evoluzione. La tecnologia eFpga Speedcore deriva dalla tecnologia e dall’esperienza sviluppate con la famiglia di Fpga Speedster 22i, che utilizza a sua volta logica core, memoria e blocchi Dsp all’avanguardia nel settore, unitamente a una sofisticata architettura di routing. Lo sviluppo della linea di prodotti Speedster22i ha portato Achronix ad assorbire le competenze e le metodologie necessarie per l’integrazione di Ip embedded di terze parti come Phy e blocchi Mac per Ethernet, Interlaken e Pci Express, così come banchi SerDes, I/O programmabili, Pll e controller Ddr3: il tutto combinato in un unico dispositivo con una struttura Fpga. Inoltre, gli strumenti di progettazione Achronix, denominati Ace, offrono una collaudata suite di sviluppo Fpga completa e robusta, insieme al supporto di funzionalità per far sì che le strutture programmabili riconfigurabili possano operare correttamente anche con hardware a funzione fissa. Creando un core embedded dalla struttura programmabile Speedster 22i, le inefficienze di comunicazione tra dispositivo e scheda vengono eliminate. Il risultato è che le dimensioni del die Speedcore è pari a alla metà circa di quelle di un Fpga standalone Speedster22i equivalente. I vantaggi di un’istanziazione Fpga integrata in un SoC si ripercuotono a livello di sistema. La progettazione a livello di scheda viene semplificata grazie all’eliminazione del dispositivo Fpga discreto, contendendo di utilizzare Pcb più economici e con meno strati. Oltre a questo, è possibile conseguire ulteriori riduzioni a livello di sistema in termini di consumi e di costi grazie alla rimozione di un gran numero di elementi discreti di contorno, come ad esempio regolatori di potenza, traslatori di livello, generatori di clock, componenti passivi e dissipatori Fpga. A ciò si aggiunge il fatto che tutti i problemi di integrità del segnale tra Fpga e dispositivi circostanti vengono annullati. Ancora più importante, grazie agli eFpga Speedcore le prestazioni del sistema migliorano notevolmente. Eliminando gli Fpga discreti dalla scheda e utilizzando Ip Speedcore, l’Fpga può entrare a far parte del sottosistema Cpu. Questa configurazione permette a Speedcore di essere coerente a livello di cache e di offrire vantaggi prestazionali enormi, evitando l’esigenza di trasmettere e bufferizzare i segnali sul Pcb attraverso interfacce SerDes chip-to-chip. Al loro posto vengono utilizzati i collegamenti diretti tra il SoC e la eFpga, azzerando qualsiasi latenza e aumentando la larghezza di banda di un ordine di grandezza.
Speedcore Ip
Il dimensionamento di un Ip Speedcore può essere personalizzato in base alle esigenze del cliente. È possibile definire il numero di Lut, la quantità di memoria embedded e i blocchi Dsp64 necessari per l’applicazione. Achronix dispone del tool Speedcore Builder che crea un modello dell’istanza Speedcore e restituisce risorse, dimensioni di die, consumi, pin di connessione disponibili e loro configurazione, e dettagli sui tempi di test. I clienti possono effettuare gli aggiustamenti necessari per arrivare alla funzionalità necessaria per soddisfare i requisiti applicativi. Grazie all’architettura modulare, una volta che l’istanza Speedcore è definita, Achronix è in grado di fornire l’Ip definita. Grazie alle interfacce standardizzate, Lut, Lram, Bram e blocchi Dsp64 possono essere assemblati come pezzi di Lego. Speedcore Builder si prende cura di tutto il controllo delle regole di progettazione, garantendo che l’Ip è in grado di offrire prestazioni del dispositivo ottimali. Anche se le aziende SoC hanno adottato metodologie differenti per la chiusura delle temporizzazioni, l’integrazione, la verifica, una istanza Speedcore è sempre in grado di conformarsi a qualsiasi variazione. I problemi di analisi di temporizzazione statica legati agli angoli personalizzati, le gerarchie di clock, la distribuzione dell’energia, la copertura di test, sono temi già affrontati in questi progetti. Il modello di business Speedcore si basa su uno schema standard, conforme alle comuni aspettative del mercato dell’Ip embedded. Per il core è prevista una tariffa di licenza. Per le unità consegnate è contemplata una royalty mentre per gli strumenti di progettazione Ace è previsto un contributo di manutenzione.