I circuiti integrati programmabili sono quella categoria di circuiti la cui funzionalità, strettamente dipendente dall’hardware, può essere modificata senza modificare fisicamente l’hardware. Il circuito integrato che implementa per definizione questa caratteristica, e che quindi è definibile programmabile, è il microcontrollore. L’Mcu di fatto modifica il suo modo di funzionare in base a una sequenza di programmazione e quindi esegue una specifica funzione utilizzando la stessa funzionalità hardware che viene utilizzata con sequenze di programmazione differenti. Il limite di questa programmabilità dell’hardware sta proprio nella caratteristica sequenziale, che implica tempi di risposta elevati da parte del sistema, troppo elevati per essere compatibili con i requisiti real-time dei sistemi embedded. In conseguenza di ciò, in alternativa alle Mcu, sono diventati disponibili gli Asp (Application Specific Processor). Mcu e Asp, come sistemi programmabili, ancorché molto flessibili e versatili, sono comunque ridondanti rispetto ai loro possibili impieghi, e quindi poco ottimizzabili in termini di dimensione, costo, complessità e consumi energetici. Le logiche programmabili si sono quindi affermate come soluzione ottimale per la realizzazione dei circuiti integrati programmabili nel senso stretto di hardware programmabile, cioè di configurabilità della struttura funzionale hardware finale tramite il firmware. Nate come logica integrata programmabile per risolvere i problemi di proliferazione degli IC nell’implementazione dei sistemi su scheda, le logiche programmabili (con il metodo degli antifusibili) come le Pal, le Pld e le Cpld, si sono evolute nelle moderne Fpga per pervenire oggi alle soluzioni ad altissima integrazione come i PSoC (Programmable System-on-Chip). Certamente le Fpga rappresentano il paradigma della logica programmabile più evoluto, sia per il modello di programmazione, sia per la complessità ottenibile tramite la programmazione. Le Fpga sono costituite da un’enorme quantità di porte logiche liberamente interconnettibili tra loro tramite uno schema logico descritto da un codice binario memorizzato in memorie volatili interne alle Fpga, caricabili da memorie non volatili esterne al power-on. La logica programmabile pura, anche se caratterizzata da elevatissima densità come nelle ultime generazioni di Fpga non è più una soluzione adeguata alla complessità ed eterogeneità delle applicazioni emergenti: comunicazioni wireless a banda multipla, comunicazioni wired multiprotocollo, visione artificiale, controllo industriale, ecc. La soluzione System-on-Chip, che inizialmente era stata incarnata dai microcontrollori, ora, dal punto di vista dello sviluppo di sistema, è la soluzione ideale per soddisfare i requisiti di sviluppo ad alte prestazioni ed elevata complessità e i SoC programmabili sono il paradigma della programmabilità on-chip dell’hardware che meglio soddisfa queste esigenze.
MPSoC, l’approccio hardware
Xilinx ha sviluppato l’architettura UltraScale MPSoC basata sull’architettura standard a 28nm Zynq 7000 di SoC programmabili e UltraScale All Programmable Fpga. Questa architettura Fpga integra funzionalità di supporto alla comunicazione wireless e alla comunicazione wired, alla visione embedded e al controllo. L’architettura UltraScale PSoC di Xilinx è scalabile da 32 a 64 bit e offre il supporto hardware alla virtualizzazione, una combinazione di motori di elaborazione sia software che hardware per sviluppare applicazioni real-time e di visione embedded, il sottosistema di memoria e di gestione dell’alimentazione, il supporto alla sicurezza multilivello, e altre funzionalità hardware programmabili di sistema che consentono di affrontare in maniera efficiente ed efficace le problematiche di sviluppo di sistemi complessi di natura embedded e ultra embedded. L’MPSoC di Xilinx utilizza la tecnologia Fpga per la programmazione in campo dell’hardware di sistema che consente di affrontare in maniera integrata e ottimale le problematiche di sviluppo di un sistema complesso in cui ogni problematica viene risolta attraverso un sottosistema hardware configurato su misura in termini di programmazione dell’hardware. Il concetto generale che implementa la soluzione MPSoC di Xilinx è quello per cui la complessità dei sistemi e le prestazioni estreme delle applicazioni possono essere soddisfatte solo tramite soluzioni di architettura hardware dedicata di sistema, evitando i colli di bottiglia della programmazione sequenziale dei processori tradizionali, utilizzando al massimo il supporto hardware al processing dei dati (per esempio il supporto Dsp) per ottenere le prestazioni di determinismo e risposta real-time richieste dal sistema embedded. Ovviamente questo supporto hardware al dataflow di sistema deve essere configurabile e governabile a piacere dallo sviluppatore attraverso la programmabilità dell’hardware. L’MPSoC va considerata la soluzione ottimale per le emergenti necessità del computing, ormai decisamente orientato al deep-learning, cioè a paradigmi computazionali che si basano sulle reti neurali, soprattutto nel campo della visione artificiale e il controllo assistito della visione dei sistemi di automazione e controllo. La logica programmabile, così come è evoluta nella soluzione MPSoC, consente di evitare i colli di bottiglia tipici dell’approccio tradizionale basato su Gpu e Cpu, dove il trasferimento dei dati è altamente penalizzato, mentre nei paradigmi di deep-learning si richiede elevato parallelismo e l’eliminazione di elementi di ritardo nel trasferimento dei dati. Inoltre la logica programmabile a livello di sistema è molto più adatta a implementare la natura dei paradigmi computazionali di natura deep-learning di cui le Convolutional Neural Networks rappresentano ora l’approccio più popolare.
PolarFire, l’approccio alla comunicazione
Microsemi ha recentemente presentato una nuova famiglia di Fpga denominata PolarFire, intesa a ottimizzare le applicazioni di comunicazione in rete cablata da 1 a 40 G e in rete wireless eterogenee, oltre al broadcasting video. La soluzione della logica programmabile per la comunicazione rappresenta un momento di innovazione significativo, soprattutto quando l’aspetto di integrazione di sistema, come in questo caso, è prevalente: per esempio la presenza del transceiver a 12,7 Gbps ultra low power (meno di 90 mw) consente di soddisfare i requisiti di ridottissime dimensioni dei sistemi ultra embedded di ultima generazione. PolarFire di Microsemi è una Fpga non volatile allo stato dell’arte dei 28 nm; è di taglio medio, ha basso costo, è ultra low power ed è dotata di un transceiver operante a 12,7 Gbps, e di un Crypto co-processor low power on-chip.
Dhp, un approccio efficiente
Le applicazioni di ultima generazione hanno fatto emergere la necessità di nuove forme di interazione e un approccio “energy efficient”, cercando di mantenere l’esecuzione degli algoritmi localmente piuttosto che sul Cloud. È emersa quindi da parte degli sviluppatori l’esigenza di una maggiore e più efficiente capacità computazionale a livello di sistema embedded locale. Si è aperta quindi l’era del Dhp (Distribuited Heterogeneous Processing), un approccio al modello computazionale hardware che consente di ottenere efficienza nel consumo energetico sollevando dal carico computazionale, solitamente molto elevato, l’application processor, il dispositivo che maggiormente consuma energia nei sistemi embedded. L’approccio Dhp è basato sul principio di ottimizzazione del processo di esecuzione dei task che deve eseguire un sistema, affidando l’esecuzione di tale task al dispositivo che meglio e più efficientemente è in grado di eseguire tale task. Per esempio, se si tratta di un’attività di signal processing, l’unità di esecuzione più efficiente è il Dsp; se si tratta invece di un’attività più specifica di elaborazione del segnale, come il riconoscimento dei gesti nell’interfaccia di interazione Hmi di un dispositivo, un’unità di gesture recognition può eseguire in maniera efficiente e dedicata questa attività di processing dei dati cha arrivano da un accelerometro o da un touchscreen. L’Fpga è una tecnologia di programmazione dell’hardware che consente di ottimizzare in maniera efficiente l’architettura di sistema. Lo sviluppo di un’architettura efficiente di sistema partendo solo dall’array di porte logiche che la Fpga mette a disposizione è senza dubbio arduo e non necessariamente è un processo efficiente. Per questo motivo le Fpga si sono evolute nel tempo arricchendosi di funzioni hardware specializzate, come per esempio gli elementi fondamentali delle architetture di computing Dsp (le Mac) rendendoli disponibili alla programmazione allo stesso modo delle porte logiche. Lattice Semiconductor ha affrontato questa problematica aggiungendo alla serie iCE40 Ultra, una nuova serie di Fpga Ultra Plus, caratterizzate da una serie di blocchi funzionali energy-efficient e con 8 volte in più di memoria e il doppio dei blocchi Dsp. Gli iCE40 Ultra Plus, malgrado questo arricchimento funzionale, consumano solo 75 µA di corrente statica. Le Fpga iCE40 Ultra Plus implementano il principio del “parallel processing” per ottenere la migliore efficienza energetica in un sistema ad elevato requisito computazionale. La Fpga iCE40 Ultra Plus dispone di una SP-Sram da 1.1 Mbit, a bassissimo consumo, di memoria non volatile, di una soluzione di interfacciamento dedicato verso i sensori che consente di implementare la modalità always-on. Un sottosistema di cattura dell’audio da array microfonici che consente di eseguire in modalità completamente dedicata il sofisticato processo di localizzazione delle sorgenti audio noto come beamforming, otto blocchi Mac per il signal processing, e 5280 Lut per la logica programmabile custom.
PSoC, l’approccio olistico
L’approccio di Cypress al Programmable System on Chip è il più emblematico, in quanto il concetto di programmabilità in campo dell’hardware lo applica a tutto campo, dal digitale all’analogica. Il PSoC di Cypress applica infatti in maniera estensiva il concetto di programmazione dell’hardware, considerando anche la componente hardware analogica e quella mixed-signal. Il PSoC Cypress di ultima generazione, il PSoC 5LP, oltre a integrare un core Arm Cortex M3 a 32 bit, integra anche un front-end analogico multiplexato con amplificatori operativi programmabili, un Adc Sar a 12 bit e un Dac a 8 bit.