Elaborazione riconfigurabile - Reconfigurable computing
L'elaborazione riconfigurabile è un'architettura di computer che combina parte della flessibilità del software con le elevate prestazioni dell'hardware mediante l'elaborazione con tessuti di elaborazione ad alta velocità molto flessibili come gli array di porte programmabili sul campo (FPGA). La differenza principale rispetto all'utilizzo di normali microprocessori è la possibilità di apportare modifiche sostanziali al datapath in sé oltre al flusso di controllo. D'altra parte, la principale differenza rispetto all'hardware personalizzato, ovvero ai circuiti integrati specifici dell'applicazione (ASIC) è la possibilità di adattare l'hardware durante il runtime "caricando" un nuovo circuito sul tessuto riconfigurabile.
Storia
Il concetto di elaborazione riconfigurabile esiste dagli anni '60, quando l'articolo di Gerald Estrin propose il concetto di un computer composto da un processore standard e una serie di hardware "riconfigurabile". Il processore principale controllerà il comportamento dell'hardware riconfigurabile. Quest'ultimo verrebbe quindi adattato per eseguire un'attività specifica, come l' elaborazione delle immagini o la corrispondenza dei modelli , con la stessa rapidità di un componente hardware dedicato. Una volta completata l'attività, l'hardware potrebbe essere regolato per eseguire altre attività. Ciò ha portato a una struttura informatica ibrida che combina la flessibilità del software con la velocità dell'hardware.
Negli anni '80 e '90 c'è stata una rinascita in quest'area di ricerca con molte proposte di architetture riconfigurabili sviluppate nell'industria e nel mondo accademico, come: Copacabana, Matrix, GARP, Elixent, NGEN, Polyp, MereGen, PACT XPP, Silicon Hive, Montium, Pleiadi, Morphosys e PiCoGA. Tali progetti erano fattibili grazie al costante progresso della tecnologia del silicio che consente di implementare progetti complessi su un unico chip. Alcuni di questi computer riconfigurabili massicciamente paralleli sono stati costruiti principalmente per sottodomini speciali come l'evoluzione molecolare, l'elaborazione neurale o di immagini. Il primo computer riconfigurabile commerciale al mondo, l'Algotronix CHS2X4, è stato completato nel 1991. Non è stato un successo commerciale, ma è stato abbastanza promettente che Xilinx (l'inventore del Field-Programmable Gate Array , FPGA) ha acquistato la tecnologia e ha assunto lo staff di Algotronix . Le macchine successive hanno permesso le prime dimostrazioni di principi scientifici, come l'auto-organizzazione spaziale spontanea della codifica genetica con MereGen.
teorie
Classificazione di Tredennick
| I primi computer storici: | |
| Sorgente di programmazione | |
|---|---|
| Risorse fisse | nessuno |
| Algoritmi fissi | nessuno |
| von Neumann Computer: | |
| Sorgente di programmazione | |
| Risorse fisse | nessuno |
| Algoritmi variabile | Software (flussi di istruzioni) |
| Sistemi informatici riconfigurabili: | |
| Sorgente di programmazione | |
| Risorse variabili | Software di configurazione (configurazione) |
| Algoritmi variabile | Flowware (flussi di dati) |
Il modello fondamentale del paradigma della macchina di calcolo riconfigurabile, l' anti macchina basata sul flusso di dati , è ben illustrato dalle differenze con altri paradigmi di macchina introdotti in precedenza, come mostrato dal seguente schema di classificazione dei paradigmi di calcolo di Nick Tredennick (vedi "Tabella 1: Schema di classificazione paradigmatico di Nick Tredennick").
Xputer di Hartenstein
L'informatico Reiner Hartenstein descrive il calcolo riconfigurabile in termini di un'anti-macchina che, secondo lui, rappresenta un fondamentale cambiamento di paradigma rispetto alla più convenzionale macchina di von Neumann . Hartenstein lo chiama Reconfigurable Computing Paradox, che la migrazione da software a configware (software a FPGA ) si traduce in fattori di accelerazione segnalati fino a più di quattro ordini di grandezza, nonché una riduzione del consumo di elettricità fino a quasi quattro ordini di grandezza, anche se i parametri tecnologici degli FPGA sono dietro la curva di Gordon Moore di circa quattro ordini di grandezza e la frequenza di clock è sostanzialmente inferiore a quella dei microprocessori. Questo paradosso è in parte spiegato dalla sindrome di Von Neumann .
Elaborazione ad alte prestazioni
High-Performance Reconfigurable Computing (HPRC) è un'architettura di computer che combina acceleratori basati su elaborazione riconfigurabile come array di porte programmabili sul campo con CPU o processori multi-core .
L'aumento della logica in un FPGA ha permesso di programmare algoritmi più grandi e più complessi nell'FPGA. Il collegamento di un tale FPGA a una moderna CPU su un bus ad alta velocità, come PCI express , ha consentito alla logica configurabile di agire più come un coprocessore che come una periferica . Ciò ha portato il calcolo riconfigurabile nella sfera del calcolo ad alte prestazioni .
Inoltre, la replica di un algoritmo su un FPGA o l'uso di una molteplicità di FPGA ha consentito di produrre sistemi SIMD riconfigurabili in cui più dispositivi computazionali possono operare contemporaneamente su dati diversi, il che è altamente parallelo .
Questa tecnica di sistemi eterogenei è utilizzata nella ricerca informatica e soprattutto nel supercalcolo . Un documento del 2008 ha riportato fattori di accelerazione di oltre 4 ordini di grandezza e fattori di risparmio energetico fino a quasi 4 ordini di grandezza. Alcune aziende di supercomputer offrono blocchi di elaborazione eterogenei, inclusi gli FPGA come acceleratori. Un'area di ricerca è la produttività del flusso di strumenti di programmazione a doppio paradigma ottenuta per tali sistemi eterogenei.
La US National Science Foundation ha un centro per il calcolo riconfigurabile ad alte prestazioni (CHREC). Nell'aprile 2011 si è tenuta in Europa la quarta conferenza sul supercomputing multi-core e riconfigurabile.
I sistemi di elaborazione riconfigurabili commerciali ad alte prestazioni stanno iniziando ad emergere con l'annuncio dell'integrazione di FPGA da parte di IBM con il suo processore POWER .
Riconfigurazione parziale
La riconfigurazione parziale è il processo di modifica di una parte del circuito hardware riconfigurabile mentre l'altra parte mantiene la sua configurazione precedente. Gli array di porte programmabili sul campo vengono spesso utilizzati come supporto per la riconfigurazione parziale.
L'hardware elettronico , come il software , può essere progettato in modo modulare, creando sottocomponenti e quindi componenti di livello superiore per istanziarli. In molti casi è utile poter sostituire uno o più di questi sottocomponenti mentre l'FPGA è ancora in funzione.
Normalmente, la riconfigurazione di un FPGA richiede che sia tenuto in reset mentre un controller esterno ricarica un progetto su di esso. La riconfigurazione parziale consente alle parti critiche del progetto di continuare a funzionare mentre un controller sull'FPGA o al di fuori di esso carica un progetto parziale in un modulo riconfigurabile. La riconfigurazione parziale può essere utilizzata anche per risparmiare spazio per più disegni memorizzando solo i disegni parziali che cambiano tra i disegni.
Un esempio comune per quando sarebbe utile una riconfigurazione parziale è il caso di un dispositivo di comunicazione. Se il dispositivo sta controllando più connessioni, alcune delle quali richiedono la crittografia , sarebbe utile poter caricare diversi core di crittografia senza disattivare l'intero controller.
La riconfigurazione parziale non è supportata su tutti gli FPGA. È richiesto un flusso software speciale con enfasi sulla progettazione modulare. In genere i moduli di progettazione sono costruiti lungo confini ben definiti all'interno dell'FPGA che richiedono una mappatura speciale del progetto sull'hardware interno.
Dalla funzionalità del design, la riconfigurazione parziale può essere suddivisa in due gruppi:
- la riconfigurazione parziale dinamica , nota anche come riconfigurazione parziale attiva, consente di modificare la parte del dispositivo mentre il resto di un FPGA è ancora in esecuzione;
- riconfigurazione statica parziale - il dispositivo non è attivo durante il processo di riconfigurazione. Mentre i dati parziali vengono inviati all'FPGA, il resto del dispositivo viene arrestato (in modalità di spegnimento) e richiamato al termine della configurazione.
Sistemi attuali
Emulazione del computer
Con l'avvento di schede FPGA a prezzi accessibili, i progetti di studenti e hobbisti cercano di ricreare computer vintage o implementare architetture più innovative. Tali progetti sono realizzati con hardware riconfigurabile (FPGA) e alcuni dispositivi supportano l'emulazione di più computer vintage utilizzando un singolo hardware riconfigurabile ( C-One ).
COPACOBANA
Un computer completamente basato su FPGA è COPACOBANA, il Codebreaker e analizzatore a costo ottimizzato e il suo successore RIVYERA. Una società spin-off SciEngines GmbH del progetto COPACOBANA delle università di Bochum e Kiel in Germania continua lo sviluppo di computer completamente basati su FPGA.
mitrionica
Mitrionics ha sviluppato un SDK che consente di compilare ed eseguire software scritto utilizzando un unico linguaggio di assegnazione su computer basati su FPGA. Il linguaggio software Mitrion-C e il processore Mitrion consentono agli sviluppatori di software di scrivere ed eseguire applicazioni su computer basati su FPGA allo stesso modo di altre tecnologie di elaborazione, come unità di elaborazione grafica ("GPU"), processori basati su celle, elaborazione parallela unità ("PPU"), CPU multi-core e cluster di CPU single-core tradizionali. (fuori dal mercato)
Strumenti nazionali
National Instruments ha sviluppato un sistema informatico ibrido integrato chiamato CompactRIO . È costituito da uno chassis riconfigurabile che ospita l'FPGA programmabile dall'utente, moduli I/O sostituibili a caldo, controller in tempo reale per la comunicazione e l'elaborazione deterministiche e il software grafico LabVIEW per la programmazione rapida di RT e FPGA.
Xilinx
Xilinx ha sviluppato due stili di riconfigurazione parziale dei dispositivi FPGA: Modulo basata e basati sulla differenza . La riconfigurazione parziale basata sul modulo consente di riconfigurare parti modulari distinte del progetto, mentre la riconfigurazione parziale basata sulle differenze può essere utilizzata quando viene apportata una piccola modifica a un progetto.
Intel
Intel supporta la riconfigurazione parziale dei propri dispositivi FPGA su dispositivi a 28 nm come Stratix V e sui dispositivi Arria 10 a 20 nm. Il flusso di riconfigurazione parziale di Intel FPGA per Arria 10 si basa sulla metodologia di progettazione gerarchica nel software Quartus Prime Pro in cui gli utenti creano partizioni fisiche dell'FPGA che possono essere riconfigurate in fase di esecuzione mentre il resto del progetto continua a funzionare. Il software Quartus Prime Pro supporta anche la riconfigurazione parziale gerarchica e la simulazione della riconfigurazione parziale.
Classificazione dei sistemi
Come campo emergente, le classificazioni delle architetture riconfigurabili sono ancora in fase di sviluppo e perfezionamento man mano che vengono sviluppate nuove architetture; fino ad oggi non è stata suggerita una tassonomia unificante. Tuttavia, diversi parametri ricorrenti possono essere utilizzati per classificare questi sistemi.
granularità
La granularità della logica riconfigurabile è definita come la dimensione dell'unità funzionale più piccola (blocco logico configurabile, CLB) che viene indirizzata dagli strumenti di mappatura. L'elevata granularità, nota anche come granularità fine, implica spesso una maggiore flessibilità durante l'implementazione di algoritmi nell'hardware. Tuttavia, c'è una penalità associata a questo in termini di maggiore potenza, area e ritardo a causa della maggiore quantità di routing richiesta per calcolo. Le architetture a grana fine funzionano a livello di manipolazione a livello di bit; mentre gli elementi di elaborazione a grana grossa (unità del percorso dati riconfigurabile, rDPU) sono ottimizzati meglio per le applicazioni del percorso dati standard. Uno degli svantaggi delle architetture a grana grossa è che tendono a perdere parte del loro utilizzo e delle prestazioni se hanno bisogno di eseguire calcoli più piccoli rispetto a quanto fornito dalla loro granularità, ad esempio per un'aggiunta di un bit su un'unità funzionale larga quattro bit sprecherebbe tre bit . Questo problema può essere risolto disponendo di un array a grana grossa (array di percorso dati riconfigurabile , rDPA) e un FPGA sullo stesso chip.
Le architetture a grana grossa ( rDPA ) sono destinate all'implementazione di algoritmi che richiedono percorsi di dati a larghezza di parola (rDPU). Poiché i loro blocchi funzionali sono ottimizzati per calcoli di grandi dimensioni e tipicamente comprendono unità logiche aritmetiche (ALU), eseguiranno questi calcoli più rapidamente e con maggiore efficienza energetica rispetto a un insieme di unità funzionali più piccole interconnesse; ciò è dovuto al fatto che i fili di collegamento sono più corti, con conseguente minore capacità del filo e quindi design più veloci e a bassa potenza. Una potenziale conseguenza indesiderabile dell'avere blocchi computazionali più grandi è che quando la dimensione degli operandi potrebbe non corrispondere all'algoritmo può risultare un utilizzo inefficiente delle risorse. Spesso il tipo di applicazioni da eseguire è noto in anticipo, consentendo di adattare la logica, la memoria e le risorse di routing per migliorare le prestazioni del dispositivo pur fornendo un certo livello di flessibilità per l'adattamento futuro. Esempi di ciò sono gli array specifici del dominio volti a ottenere prestazioni migliori in termini di potenza, area, throughput rispetto ai loro cugini FPGA a grana fine più generici riducendo la loro flessibilità.
Tasso di riconfigurazione
La configurazione di questi sistemi riconfigurabili può avvenire al momento della distribuzione, tra le fasi di esecuzione o durante l'esecuzione. In un tipico sistema riconfigurabile, viene utilizzato un flusso di bit per programmare il dispositivo al momento della distribuzione. I sistemi a grana fine per loro stessa natura richiedono un tempo di configurazione maggiore rispetto alle architetture a grana più grossa a causa della necessità di indirizzare e programmare più elementi. Pertanto, le architetture a grana più grossa traggono vantaggio da potenziali requisiti energetici inferiori, poiché vengono trasferite e utilizzate meno informazioni. Intuitivamente, più lenta è la velocità di riconfigurazione, minore è il consumo di energia poiché i costi energetici associati alla riconfigurazione vengono ammortizzati su un periodo di tempo più lungo. La riconfigurazione parziale mira a consentire la riprogrammazione di una parte del dispositivo mentre un'altra parte sta ancora eseguendo il calcolo attivo. La riconfigurazione parziale consente flussi di bit riconfigurabili più piccoli, non sprecando così energia nella trasmissione di informazioni ridondanti nel flusso di bit. La compressione del flusso di bit è possibile, ma è necessario eseguire un'attenta analisi per garantire che l'energia risparmiata utilizzando flussi di bit più piccoli non sia compensata dal calcolo necessario per decomprimere i dati.
Accoppiamento host
Spesso l'array riconfigurabile viene utilizzato come acceleratore di elaborazione collegato a un processore host. Il livello di accoppiamento determina il tipo di trasferimenti di dati, latenza, potenza, throughput e overhead coinvolti quando si utilizza la logica riconfigurabile. Alcuni dei progetti più intuitivi utilizzano un bus periferico per fornire una disposizione simile a un coprocessore per l'array riconfigurabile. Tuttavia, ci sono state anche implementazioni in cui il tessuto riconfigurabile è molto più vicino al processore, alcune sono anche implementate nel percorso dei dati, utilizzando i registri del processore. Il compito del processore host consiste nell'eseguire le funzioni di controllo, configurare la logica, pianificare i dati e fornire l'interfacciamento esterno.
Instradamento/interconnessioni
La flessibilità nei dispositivi riconfigurabili deriva principalmente dalla loro interconnessione di routing. Uno stile di interconnessione reso popolare dai fornitori di FPGA , Xilinx e Altera è il layout a isola, in cui i blocchi sono disposti in un array con routing verticale e orizzontale. Un layout con instradamento inadeguato può soffrire di scarsa flessibilità e utilizzo delle risorse, fornendo quindi prestazioni limitate. Se viene fornita troppa interconnessione, ciò richiede più transistor del necessario e quindi più area di silicio, cavi più lunghi e più consumo di energia.
Sfide per i sistemi operativi
Una delle sfide principali per l'elaborazione riconfigurabile è consentire una maggiore produttività di progettazione e fornire un modo più semplice per utilizzare sistemi di elaborazione riconfigurabili per utenti che non hanno familiarità con i concetti sottostanti. Un modo per farlo è fornire standardizzazione e astrazione, solitamente supportate e applicate da un sistema operativo.
Uno dei compiti principali di un sistema operativo è nascondere l'hardware e presentare i programmi (e i loro programmatori) con astrazioni belle, pulite, eleganti e coerenti con cui lavorare. In altre parole, i due compiti principali di un sistema operativo sono l'astrazione e la gestione delle risorse .
L'astrazione è un potente meccanismo per gestire compiti complessi e diversi (hardware) in modo ben definito e comune. Una delle astrazioni più elementari del sistema operativo è un processo. Un processo è un'applicazione in esecuzione che ha la percezione (fornita dal sistema operativo) di essere in esecuzione da sola sull'hardware virtuale sottostante. Questo può essere rilassato dal concetto di thread, che consente a diverse attività di essere eseguite contemporaneamente su questo hardware virtuale per sfruttare il parallelismo a livello di attività. Per consentire a diversi processi e thread di coordinare il proprio lavoro, i metodi di comunicazione e sincronizzazione devono essere forniti dal sistema operativo.
Oltre all'astrazione, è necessaria la gestione delle risorse dei componenti hardware sottostanti perché i computer virtuali forniti ai processi e ai thread dal sistema operativo devono condividere le risorse fisiche disponibili (processori, memoria e dispositivi) spazialmente e temporaneamente.
Guarda anche
Riferimenti
Ulteriori letture
- Cardoso, João MP; Hübner, Michael (a cura di), Reconfigurable Computing: From FPGA to Hardware/Software Codesign , Springer, 2011.
- S. Hauck e A. DeHon, Reconfigurable Computing: Theory and Practice of FPGA-Based Computing , Morgan Kaufmann , 2008.
- J. Henkel, S. Parameswaran (a cura di): Progettazione di processori incorporati. Una prospettiva a bassa potenza; Springer Verlag, marzo 2007
- J. Teich (editore) et al.: Sistemi di calcolo riconfigurabili. Numero speciale del Journal it — Information Technology , Oldenbourg Verlag, Monaco di Baviera. vol. 49 (2007) numero 3
- TJ Todman, GA Constantinides, SJE Wilton, O. Mencer, W. Luk e PYK Cheung, "Calcolo riconfigurabile: architetture e metodi di progettazione", Atti IEEE: Computer e tecniche digitali, vol. 152, n. 2, marzo 2005, pp. 193-208.
- A. Zomaya (editore): Handbook of Nature-Inspired and Innovative Computing: integrazione di modelli classici con tecnologie emergenti; Springer Verlag, 2006
- JM Arnold e DA Buell, "Programmazione VHDL su Splash 2", in Altri FPGA, Will Moore e Wayne Luk, editori, Abingdon EE & CS Books, Oxford, England, 1994, pp. 182-191. (Atti, Workshop internazionale sulla logica programmabile sul campo, Oxford, 1993.)
- JM Arnold, DA Buell, D. Hoang, DV Pryor, N. Shirazi, MR Thistle, "Splash 2 e le sue applicazioni, "Proceedings, International Conference on Computer Design, Cambridge, 1993, pp. 482-486.
- DA Buell e Kenneth L. Pocek, "Macchine informatiche personalizzate: un'introduzione", The Journal of Supercomputing , v. 9, 1995, pp. 219-230.