Cos'è un field programmable gate array (FPGA)?

Vista dall'alto di studenti che lavorano su un'attrezzatura elettrica seduti intorno a un tavolo in classe

Autori

Josh Schneider

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è un field programmable gate array (FPGA)?

L'espressione "field programmable" si riferisce alla capacità di un FPGA di essere programmato "sul campo" o dopo che il chip è stato rilasciato dal produttore. Xilinx, un produttore di tecnologia, ha introdotto per la prima volta gli FPGA nel 1985.

Gli FPGA possono essere adattati per soddisfare molteplici casi d'uso, compresi scopi emergenti o sperimentali, senza la necessità di modificare o alterare fisicamente il loro hardware. Questa versatilità riconfigurabile è ottenuta tramite una serie di blocchi logici programmabili fissi (PLB) e interconnessioni flessibili che possono essere configurati per eseguire operazioni complesse o per fungere da semplici gate logici. Gli FPGA includono anche elementi di memoria, che vanno da flip-flop a singolo bit fino ad array di memoria molto densi, per lo storage dei dati digitali all'interno del dispositivo.

Gli FPGA sono molto apprezzati per la loro combinazione di elevate prestazioni ed estrema versatilità. Sono particolarmente utili nelle applicazioni che richiedono prestazioni elevate, bassa latenza e flessibilità in tempo reale. Per questo motivo, sono comunemente utilizzati nei settori automobilistico, aerospaziale e delle telecomunicazioni.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Field programmable gate arrays (FPGAs) vs. application-specific integrated circuits (ASICs)

Gli FPGA e gli ASIC hanno scopi diversi.

Un ASIC è sviluppato e ottimizzato per un'applicazione specifica e non può essere riconfigurato. I suoi elementi circuitali interni (transistor) sono disposti in una struttura fissa con interconnessioni (cablaggio) fisse e immutabili tra di loro.

Poiché un ASIC ha un solo scopo, include solo gli elementi logici necessari per tale scopo; ad esempio, se un moltiplicatore in virgola mobile non è necessario, non viene incluso nel progetto.

Al contrario, un FPGA può essere configurato e riconfigurato per qualsiasi potenziale applicazione. Come un ASIC, i suoi elementi di circuito interni sono disposti in una struttura fissa (blocchi logici programmabili o PLB), ma con interconnessioni riconfigurabili tra loro. Gli elementi logici di un FPGA sono selezionati per supportare un'ampia varietà di applicazioni, ma risentono del fenomeno "usalo o perdilo" quando elementi logici specifici non vengono utilizzati. Se un moltiplicatore in virgola mobile non è richiesto per una particolare applicazione, ma l'FPGA ne contiene uno, allora quella risorsa non viene utilizzata e rappresenta uno "spazio sprecato" all'interno dell'FPGA.

Sebbene entrambi i dispositivi possano contenere centinaia di milioni di transistor, un ASIC può utilizzare tali transistor per fornire elevata efficienza e prestazioni a discapito della flessibilità. I costi iniziali di sviluppo di un ASIC possono essere esorbitanti, mentre i costi unitari sono relativamente bassi.

Un FPGA utilizza i suoi transistor per offrire alta efficienza e prestazioni elevate ma con un'enorme flessibilità. I costi iniziali per lo sviluppo di un FPGA possono essere estremamente bassi, mentre i costi unitari sono generalmente più elevati. È importante notare che non si tratta di regole certe. Ad esempio, nell'ambito delle prestazioni, i recenti FPGA si sono evoluti per offrire velocità di clock superiori a 500 MHz e sono generalmente realizzati con geometrie di processo al silicio all'avanguardia. In breve, il confine tra FPGA e ASIC diventa sempre più sfocato con ogni nuova generazione di FPGA.

IBM Storage FlashSystem

IBM Storage FlashSystem: ottimizzazione di VMware in termini di costi, semplicità e resilienza

Scopri come IBM FlashSystem ottimizza gli ambienti VMware per l'efficienza dei costi, la semplicità e la resilienza. Questa sessione evidenzia come FlashSystem può migliorare la sicurezza, l'accessibilità e le prestazioni dei dati, dimostrandosi una soluzione ideale per le moderne infrastrutture IT.

Come funzionano i field programmable gate array?

Un FPGA diventa un dispositivo hardware personalizzato configurando i suoi PLB e le interconnessioni utilizzando un linguaggio di descrizione dell'hardware (HDL) standard come Verilog o VHDL.

Le funzioni specifiche basate su FPGA, così come le interconnessioni tra tali funzioni, sono "descritte" in un HDL. La descrizione viene compilata per produrre un file di configurazione FPGA. Utilizzando un linguaggio di descrizione dell'hardware, è possibile utilizzare risorse FPGA integrate (array di memoria, core PCI e molti altri), nonché creare circuiti logici personalizzati (sommatori, multiplexer e altre funzioni specifiche dell'applicazione) da elementi FPGA più primitivi.

In un processo noto come sintesi, il codice HDL viene tradotto in una netlist, una descrizione efficace delle porte logiche e delle interconnessioni necessarie per implementare il codice HDL. La netlist viene quindi mappata sui PLB e sulle interconnessioni che formano fisicamente il circuito unico.

Gli FPGA moderni prodotti da aziende come Intel e Altera offrono un'ampia gamma di funzionalità digitali e analogiche, inclusi notevoli densità logiche, memoria flash, processori integrati e blocchi di elaborazione dei segnali digitali (DSP). Gli FPGA possono essere configurati e riconfigurati modificando gli ingressi e le uscite elettriche, scegliendo quali risorse interne utilizzare e determinando come queste risorse siano collegate tramite risorse di instradamento configurabili. Il risultato finale è una soluzione hardware dedicata per risolvere un problema specifico.

Come per il software, lo sviluppo di progetti FPGA complessi potrebbe essere semplificato utilizzando librerie pre-progettate di varie funzioni e circuiti digitali, denominati core di proprietà intellettuale (IP). Queste librerie sono disponibili per l'acquisto o il noleggio da fornitori di FPGA e fornitori terzi che spesso sono specializzati nello sviluppo di varie funzioni.

Moduli e componenti dei field programmable gate array

Oltre ai tradizionali componenti circuitali come microcontrollori e convertitori, per realizzare le loro funzioni riconfigurabili, i moderni dispositivi FPGA utilizzano una combinazione di vari elementi programmabili.

Questi elementi programmabili sono principalmente blocchi logici configurabili (CLB), interconnessioni programmabili, routing programmabile, blocchi di input/output programmabili (IOB), memoria on-chip e blocchi di elaborazione del segnale digitale (DSP).

Blocchi logici configurabili

I blocchi logici configurabili (CLB) sono il componente principale degli FPGA. I CLB contengono generalmente alcuni elementi logici primitivi (porte logiche, piccole look-up table, flip-flop, multiplexer e molti altri). All'interno del CLB, un flip-flop generalmente funge da principale elemento di memorizzazione dei dati, sebbene le famiglie di dispositivi più recenti possano anche incorporare elementi di memoria superficiale all'interno del CLB.

Interconnessioni programmabili

Le connessioni costruite da segmenti di filo uniti da interruttori elettricamente programmabili forniscono percorsi di instradamento tra i blocchi logici dell'FPGA. Le scatole di commutazione contenenti più interruttori semiconduttori di base sono comunemente utilizzate per stabilire l'interconnessione programmabile dell'FPGA. Queste interconnessioni consentono di collegare le uscite di un'unità specifica o un pad di ingresso a qualsiasi altro elemento o pad all'interno del circuito.

Routing programmabile

I segmenti di filo prefabbricati vengono uniti tra loro (o lasciati scollegati) tramite interconnessioni programmabili per fornire un'infrastruttura di routing completamente programmabile all'interno di un FPGA. Le risorse di routing sono di natura gerarchica, con una combinazione di cavi lunghi, medi e corti che coprono varie "lunghezze" all'interno dell'FPGA. Questa infrastruttura di routing programmabile, abilitata dalle interconnessioni programmabili, consente agli utenti di configurare le risorse FPGA per l'implementazione di una particolare attività o applicazione.

Blocchi di input/output (IOB) programmabili

L'interfaccia tra un FPGA e altri dispositivi esterni è abilitata da blocchi di input/output (I/O) (IOB). Gli IOB sono risorse di input e output programmabili, configurate per adattarsi ai protocolli di qualsiasi dispositivo esterno a cui si connette l'FPGA. Tutti i segnali che entrano o escono dall'FPGA lo fanno tramite pin del dispositivo e IOB associati.

Memoria on-chip

I primi FPGA utilizzavano solo flip-flop (FF) per integrare la memoria nei blocchi logici FPGA. Tuttavia, con l'aumento delle capacità degli FPGA, progetti sempre più complessi hanno richiesto una memoria on-chip dedicata per il buffering e il riutilizzo dei dati. I moderni FPGA utilizzano array di memoria SRAM di grandi dimensioni, look-up table (LUT) più piccole ed elementi flip-flop tradizionali per fornire lo storage necessario per un'applicazione specifica.

Blocchi di elaborazione del segnale digitale (DSP)

Nei primi FPGA, le uniche risorse aritmetiche disponibili erano semplici sommatori; tutto ciò che era più complesso era costruito da elementi logici più primitivi. Tuttavia, con l'avanzare della tecnologia del silicio, negli FPGA sono state incorporate risorse aritmetiche più complesse, arrivando al moderno blocco DSP FPGA. I blocchi DSP forniscono risorse altamente ottimizzate (moltiplicatori, accumulatori e molti altri) per l'implementazione di funzioni aritmetiche ad alte prestazioni.

Il loro utilizzo elimina la necessità di implementare queste funzioni nei CLB per uso generico, liberando così i CLB per altri scopi. Operazioni come il filtraggio digitale, la convoluzione, le trasformate di Fourier, le operazioni trigonometriche e molte altre possono sfruttare queste risorse per ottenere prestazioni in tempo reale in applicazioni che spaziano dall'elaborazione radar, al beamforming, al riconoscimento dei pattern e molto altro.

Tipi di field programmable gate array

Gli FPGA sono disponibili in diverse varianti, che offrono diversi tipi di configurabilità, consumo energetico, elementi programmabili e memoria on-chip.

  • Antifuse-based FPGA: FPGA configurabili ma non riconfigurabili. Utilizzano un elemento programmabile una sola volta chiamato antifusibile, che viene configurato applicando un'alta tensione per creare connessioni tra fili interni. Un antifuse-based FPGA può essere configurato solo una volta e non può essere riconfigurato.
  • SRAM-based FPGAs: questi tipi di FPGA sono molto versatili e possono essere configurati in fase di esecuzione. Gli SRAM-based FPGA utilizzano la memoria statica ad accesso casuale (SRAM) per memorizzare le istruzioni di configurazione e richiedono una memoria esterna per contenere il codice di configurazione.
  • Flash-based FPGA: a differenza degli SRAM-based FPGA, i flash-based FPGA memorizzano la loro configurazione in una memoria flash non volatile, che ha l'ulteriore vantaggio di essere riprogrammabile.
  • EEPROM-based FPGA: questa varietà di FPGA è simile ai flash-based FPGA, ma l'erasable programmable read-only memory (EEPROM) memorizza la configurazione dell'FPGA. Entrambi i tipi non sono volatili e sono riprogrammabili.
  • Hybrid FPGA: gli hybrid FPGA offrono diversi livelli di prestazioni, funzionamento a basso consumo e versatilità attraverso una combinazione di diversi elementi programmabili, come blocchi logici basati su SRAM o flash.
  • System-on-chip FPGA: i System-on-chip (SoC) FPGA integrano la logica programmabile con hard processor core, combinando le funzionalità di un FPGA e di un SoC, un singolo chip di silicio che unisce più chip di elaborazione di sistema come CPU, GPU e RAM in un'unica unità.

Casi d'uso dei field programmable gate array

Versatili per natura, gli FPGA sono adatti per molte applicazioni diverse.

Applicazioni radar

Gli FPGA sono ideali per l'elaborazione del segnale e l'acquisizione di dati grazie alla loro capacità di elaborazione parallela ad alta velocità.

Aeromobili a pilotaggio remoto (APR)

Gli algoritmi di elaborazione del segnale ad alta velocità rendono gli FPGA adatti per eseguire le attività di controllo del volo, elaborazione dei sensori e comunicazione utilizzate negli aerei senza pilota come i droni.

Sistemi di controllo industriale (ICS)

I sistemi di controllo industriale utilizzati per monitorare infrastrutture come reti elettriche, raffinerie di petrolio e impianti di trattamento delle acque utilizzano FPGA che possono essere facilmente ottimizzati per soddisfare le esigenze specifiche di vari settori. In questi settori critici, gli FPGA possono essere utilizzati per implementare varie automazioni e funzionalità di crittografia basate su hardware per una cybersecurity efficiente.

Prototipazione di ASIC

Mentre gli FPGA sono soluzioni utili per le attività che richiedono flessibilità, gli ASIC specifici per attività sono spesso più adatti alle operazioni standardizzate. Man mano che vengono sviluppati nuovi sistemi, gli FPGA sono preziosi per lo sviluppo e la prototipazione di nuovi ASIC per tecnologie emergenti.

Centri dati

Gli FPGA aggiungono valore ai data center facilitando server, reti e infrastrutture di storage a banda larga e bassa latenza.

Soluzioni correlate
IBM FlashSystem: soluzioni di flash storage

IBM Storage FlashSystem offre resilienza informatica e funzionalità di archiviazione dei dati.

Esplora Storage FlashSystem
Soluzioni di data storage aziendali

IBM Storage è una famiglia di hardware di data storage, storage definito dal software e software di gestione dello storage.

Esplora le soluzioni di data storage
IT Infrastructure Library e servizi di consulenza

IBM Technology Expert Labs fornisce servizi infrastrutturali per server, mainframe e storage IBM.

Esplora i servizi di IT Infrastructure Library
Prossimi passi

IBM Storage FlashSystem offre resilienza informatica e funzionalità di archiviazione dei dati.

Esplora Storage FlashSystem Ottieni maggiori informazioni