Evoluzione SoC

Il successo dei system-on-chip è dovuto a un mix che coinvolge vari elementi: i dispositivi, con la tecnologia che permette l'integrazione di miliardi di transistor su un singolo chip, permettendo così una vasta gamma di funzioni; le applicazioni, perché alcune delle più recenti possono sfruttare al meglio le funzionalità di cui sopra; il design, perchè i sistemi diventano sempre più complessi e sono sempre più difficili da progettare. Ma le sfide da affrontare sono molte: le esigenze in materia di consumo di potenza e di ampiezza di banda/latenza della memoria, la variabilità delle architetture a livello transistor, i SoC multi-processore, la progettazione per il collaudo, ulteriori innovazioni sulle architetture scalabili, l'uso di IP riutilizzabili, le interconnessioni on-chip e le gerarchie di memoria. In risposta ai problemi emergenti sono state proposte diverse strategie promettenti: queste caratterizzano i moderni sistemi SoC.

Il vincolo della dissipazione di potenza
La dissipazione di potenza è sicuramente uno dei principali vincoli di cui tenere conto nella progettazione; la potenza dissipata dai transistor non si riduce con lo stesso tasso di crescita dell'aumento della densità dei gate e quindi, i sistemi attuali, piuttosto che fare affidamento sulla tecnologia di processo affrontano il problema a livello di circuito e di architettura. Ad esempio, alcune tecniche di power management prevedono di sfruttare i cicli idle, per ridurre la potenza dissipata arrestando (o anche semplicemente riducendone tensione e/o frequenza) le parti del sistema che non vengono utilizzate per poi riattivarle in caso di necessità. In passato, per definire i moduli da disattivare si utilizzavano tecniche euristiche mentre oggi è possibile utilizzare le informazioni sulle applicazioni. Un'altra tecnica è ridurre il consumo di energia per la distribuzione del clock. Nei SoC le architetture sincrone sono ampiamente utilizzate, facili da implementare e ben supportate dagli strumenti di sintesi logica, ma la sincronizzazione comporta alcuni inconvenienti, tra cui, appunto, il consumo di energia per distribuire i segnali di clock. Negli ultimi anni, sono state proposte per ovviare a questi inconvenienti le architetture mesocrone (e anche plesiocrone). L'architettura mesocrona usa una singola frequenza di clock ma i diversi blocchi circuitali possono essere sfasati di una quantità non nota a priori. Sebbene vi sia evidentemente una latenza nella comunicazione tra blocco e blocco, che deve essere recuperata da un circuito opportuno, si ha il vantaggio del basso consumo grazie alla non distribuzione del clock globale. Inoltre, con densità di potenza che aumenta modo esponenziale, l'affidabilità del circuito integrato e le prestazioni sono sempre più influenzate dalla temperatura di esercizio. È stato infatti dimostrato che le variazioni di temperatura e gli hotspot causano oltre il 50% dei guasti degli apparati elettronici; le variazioni termiche possono anche portare a incertezze significative nella temporizzazione e peggiorare le prestazioni. Quindi come progettare e disporre i componenti "caldi" e "freddi" diventa un altro aspetto importante mentre il tradizionale approccio basato su analisi del caso peggiore, non si dimostra efficiente in quanto porta a sovradimensionare i requisiti e quindi non è economico.
Anche i processori multicore sono ampiamente usati nei moderni SoC per aumentarne ulteriormente le prestazioni senza aumentare il consumo di potenza: infatti si può sfruttare l'elaborazione in parallelo a livello di istruzioni (ad esempio Vliw) o a livello dati (ad esempio Simd). Il multi-processing è un modo molto efficiente di aumentare la capacità di elaborazione e i processori sullo stesso chip non devono necessariamente essere gli stessi. Un mezzo molto potente per accelerare l'elaborazione multimediale è quello di adattare i processori programmabili con algoritmi specifici attraverso istruzioni specializzate per le operazioni ricorrenti ad alta complessità. I core programmabili individualmente ottimizzati per una particolare caratteristica applicativa al fine di fornire elevate prestazioni e flessibilità a costi di sistema ridotti sono spesso indicati come MPSoC eterogenei. In questo caso, la chiave per il successo sono però gli algoritmi paralleli e di programmazione anche con lo sviluppo di standard.

L'integrazione della logica programmabile
Alcune architetture hanno anche iniziato a utilizzare le logiche programmabili (in particolare Fpga) per integrare logica e interconnessioni che possono essere riconfigurate anche mentre il circuito è in funzione. L'aggiunta di logica riconfigurabile al SoC fornisce la flessibilità per modificare la funzionalità dello stesso anche dopo che il chip è stato realizzato e rispetto ai processori programmabili, queste soluzioni architetturali potenzialmente possono raggiungere prestazioni più elevate. Numerose ricerche si sono concentrate sull'estrazione del parallelismo dalle applicazioni /algoritmi per mapparlo in architetture riconfigurabili e la scelta è poi quella tra logiche riconfigurabili fine-grained che offrono estrema flessibilità a costo di occupazione di area e di potenza consumata e dissipata, piuttosto che logiche coarse-grained in grado di eseguire operazioni a livello di parola o subword invece delle operazioni a livello di bit. Se si considera poi che tradizionalmente il 70% del tempo di progettazione dei chip viene speso per la verifica, per i system-on-chip il problema è veramente prioritario: una minima modifica di un componente richiede di ri-verificare timing e prestazioni dell'intero sistema. Un modo per evitarlo è creare blocchi bene definiti, con canali di routing tra i componenti; in questo caso, le modifiche in un unico blocco non inciderebbero sugli altri. Le architetture mesocrone sono ancora un esempio di separazione di questo tipo. Quando si integrano un miliardo di transistor in un singolo chip, ci vuole molto più tempo per collaudare il chip nel suo complesso (verificare tutte le macchine di stato e i blocchi logici) e si rischia di vedere aumentare la variabilità nel comportamento, sia statico che dinamico, dei transistor; diventano quindi essenziali i blocchi integrati di self-test, e se gli IP integrati nel chip provengono da più fonti, i loro fornitori e i progettisti del SoC devono collaborare strettamente per definire le strategie di test efficaci. Ogni blocco IP dovrebbe essere dotato di un wrapper in modo che possa essere isolato dalle altre parti del sistema mentre è in fase di test.

Questioni ancora aperte
Altri temi rimangono aperti, in attesa di ulteriori evoluzione. In primo luogo, così come la progettazione di circuiti integrati si è evoluta dai progetti singoli custom o semicuston al riutilizzo degli IP, i sistemi della prossima generazione dovranno affrontare un cambiamento di paradigma avvicinandosi al riuso delle intere architetture, per far fronte alla crescente complessità dei SoC, che comporta ormai costi talmente elevati (in particolare il costo delle ore-uomo di lavoro) da rendere il ricorso ai system-on-chip a volte impraticabile, tranne che per progetti che prevedano poi la fabbricazione di milioni di chip. Il riutilizzo dovrà quindi avvenire a un livello molto più elevato rispetto al passato anche se ciò richiederà un grande sforzo. Riuso e scalabilità delle architettura prevedono poi che si approfondiscano gli aspetti funzionali, in particolare l'integrazione di blocchi Ip analogici, superando le difficoltà dovute agli effetti del rumore proveniente dal dominio analogico sulla circuiteria digitale e viceversa, la possibilità di gestire le esigenze di comunicazione e di I/O senza sovradimensionare le risorse specifiche per non ricadere nei problemi di eccessivi consumi o dissipazione già citati, come affrontare il tema della migrazione (il più possibile rapida) dei blocchi IP da una tecnologia di processo alla successiva e, non ultimo, come risolvere il dilemma tra sofwtare IP sintetizzabili o IP hardware.

LASCIA UN COMMENTO

Inserisci il tuo commento
Inserisci il tuo nome