di  -  mercoledì 15 luglio 2009

Prima di iniziare a parlare dell’argomento di questa settimana, vorrei spendere qualche parola su quella che è stata definita “legge bavaglio”, ovvero il decreto Alfano. Non entro nel merito della legittimità di una siffatta normativa su cui, eventualmente, avrà modo di pronunciarsi un tribunale. Certo, il fatto che la Cassazione non più tardi di quattro mesi fa abbia escluso la possibilità di omologazione di un forum o di un blog o di un social network ad un organo di stampa ufficiale, lascia perplessi circa la legittimità di un provvedimento che, di fatto, applica proprio a blog, social network e forum, leggi pensate esclusivamente per i mezzi di informazione ufficialmente riconosciuti.

E ancora più perplessi lascia il fatto che sommando la sentenza della Cassazione e il decreto Alfano, che fa riferimento ad una legge del 1948, promulgata per la carta stampata, viene fuori un quadro in base al quale i mezzi di comunicazione che fanno uso della rete hanno gli stessi obblighi ma non gli stessi diritti di altri soggetti, ivi compresi, eventuali finanziamenti pubblici (sulla illiceità dei quali mi sono più volte pronunciato). Nonostante queste premesse, non è neppure questo il succo del problema; il vero problema è l’atteggiamento che sta alla base di questa nuova/vecchia normativa.

Chi l’ha definita legge bavaglio ha ragione, indipendentemente dal fatto che questa normativa ottenga o meno il suo scopo. Ha ragione perchè nello spirito del legislatore mi sembra di cogliere un atteggiamento intimidatorio nei confronti di qualcosa che non è in grado di controllare, che mira a trasformare blogger e amministratori di forum in altrettanti cani da guardia spaventati. Questo perché se da un lato è facile lottizzare giornali e reti TV, molto più complesso, se non impossibile è cercare di controllare ciò che la gente dice in piazza e per le strade; e adesso che internet è, per molti versi, diventato una piazza virtuale, anzi, milioni di piazze virtuali, coloro che siedono nelle stanze del potere hanno finalmente capito, con notevole ritardo, che il confronto, seppure virtuale e il pluralismo, permessi dalla rete, sono i migliori antidoti alle pratiche di controllo del pensiero. 

Se, quindi, da un lato ha ragione chi ritiene che la rete abbia bisogno di regole per evitare pericolose derive, dall’altro ha altrettanta ragione chi pensa che non sia questa classe politica, troppo vecchia indipendentemente dall’anagrafe, a poter dare delle regole ad un mondo di cui non arriva neppure a sfiorare le dinamiche. 

E ora veniamo all’argomento del giorno

Dopo aver fatto cenno ad alcuni tra i principali limiti delle attuali tecnologie del silicio e aver introdotto i principi alla base della scelta delle architetture multicore e multithreaded, questa settimana vorrei tornare sul discorso relativo al risparmio energetico nella progettazione dei microchip. In questo articolo e nel successivo, stimolato anche dai post di qualche utente, tra cui pleg, a cui va un ringraziamento particolare, intendo fare una sorta di sintesi e di integrazione dei due articoli precedenti, con considerazioni di carattere energetico ed uno sguardo a cosa c’è in cantiere nell’immediato futuro.

Finora abbiamo commentato alcuni dei limiti della tecnologia del silicio e abbiamo posto l’accento sulle componenti principali delle potenze in gioco in un chip: leakage, cortocircuito e potenza dinamica da carica e scarica delle capacità parassite in particolare.

Una ipotetica equazione che tenga conto di queste tre componenti si potrebbe scrivere nel modo seguente

equazione-potenza-dissipata.jpg

dove il primo termine rappresenta la potenza dinamica dovuta alle capacità parassite, il secondo la potenza di cortocircuito e la terza quella dovuta ai fenomeni di leakage. In un moderno circuito elettronico il primo dei tre termini è sicuramente l’elemento preponderante, seguito dal secondo e dal terzo rispettivamente ma non è facile fare stime quantitative se non si tiene conto di alcuni fattori, come ad esempio, il design del chip, il numero di transistor e le varie ottimizzazioni a livello hardware e software. Tutti e tre insieme rappresentano la totalità della potenza in gioco in un chip e , in particolare, in chip di tipo VLSI, quasi il 50% di questa potenza è dovuta a componenti di tipo parassitario;  l’obiettivo è quello di tenere sotto controllo la crescita di queste ultime e, dove possibile, tentare di ridurne l’incidenza.

Volendo schematizzare il tutto con una tabella, si potrebbe pensare  a qualcosa del genere

tabella-riassuntiva-risparmio-energetico.jpg

In questo articolo focalizzeremo l’attenzione, in particolare, sulla prima delle tre componenti di potenza dissipata elencate in precedenza e sulle misure principali atte a ridurne l’incidenza sul bilancio energetico complessivo di un chip.

La prima di queste, appunto, è la potenza dinamica derivante dagli accoppiamenti indesiderati che si vengono a formare tra transistor contigui o tra linee elettriche, con le relative conseguenze. In parte, l’argomento è stato già trattato e, per l’accoppiamento capacitivo tra linee elettriche, in particolare, rimando all’articolo, linkato in precedenza, sui limiti delle tecnologie del silicio; qui ci soffermeremo su alcuni aspetti, riguardanti il cosiddetto transistor latch-up, che in quella sede erano stati solo accennati o, addirittura, trascurati. Nella figura in basso, è riportato un caso tipico di circuito che, in determinate condizioni, è soggetto ad accoppiamento capacitivo di tipo parassitario

latchup.jpg

In questo schema, nel momento dello switch dell’inverter, per un breve periodo, entrambi i transistor sono in conduzione, motivo per cui si vengono a creare una sorta di transistor bipolari parassiti che danno luogo ad accopiamenti capoacitivi indesiderati  che hanno, nell’esempio di figura, come armature il collettore del pnp ed l’emettitore dell’npn. Questo fenomeno, noto anche come transistor latch-up, può portare ad errori nella computazione (a causa delle correnti parassite generate) e, nella peggiore delle ipotesi, quando le potenze in gioco diventano elevate, alla rottura del dispositivo (s’immagini questo stesso meccanismo innescato su milioni di transistor nello stesso tempo). Per combattere l’insorgere di questo fenomeno, si percorrono diverse strade. La più diretta è quella che mira ad impedirne l’insorgere con delle “barriere fisiche”, delle trincee o degli anelli, come quello in figura

transistor-guard-ring.jpg

in modo da isolare fisicamente transistor contigui. Questa strada è l’unica a garantire un perfetto isolamento delle reti pmos ed nmos nella fasi di pull up e pull down ma, anch’essa, non è esente da “difetti”. Il più evidente di tutti è che queste trincee o questi anelli utilizzati, occupano spazio e riducono la densità circuitale.

Altre strade per ridurre gli accoppiamenti parassiti si basano su considerazioni di tipo probabilistico: ovvero, si fa in modo che i trasistor di un circuito non commutino tutti assieme per ridurre al minimo la possibilità di accoppiamenti parassiti e ridurne l’impatto sulle prestazioni del chip. Per far ciò, si ricorre a clock e/o data gating, sia a livello locale, ossia di banchi di flip flop, che a livello più ampio (interi domain o core, nel caso di architetture multicore). Queste tecniche inibiscono la commutazione di quei circuiti che non sono coinvolti nella computazione in quel determinato ciclo di clock; si tratta, pertanto, di tecniche che agiscono con “granularità fine”, sia temporale che spaziale, poichè è possibile togliere, ad esempio, il clock in un ciclo e riattivarlo nel successivo. Queste tecniche non prevedono lo “spegnimento” del circuito che, di conseguenza, continua a restare alimentato. Anche il clock gating non è una soluzione esente da difetti: innanzitutto introduce una complessità a livello di logica di controllo, in quanto è necessario dotare i circuiti di dispositivi di controllo della frequenza che abilitino e disabilitino il clock quando richiesto. Questo rende problematica l’adozione di tecniche di clock gating a livello di singolo trasistor ma anche poco fattibile a livello di “microcircuiti”. Il clock gating diventa, invece, applicabile  a livello di “macrocircuiti”, come mostrato nella sottostante immagine, dove si vedono una serie di clock domain regolati ciscuno in modalità sincrona, comunicanti tra loro attraverso canali di tipo asincrono. Questa è una situazione piuttosto comune soprattutto in circuiti particolarmente complessi.

asic-clock-gating.jpg

A titolo di esempio, un Pentium 4 conteneva centinaia di clock gated domain simili a quelli in figura.

L’aumento di complessità circuitale non è l’unica controindicazione all’applicazione del clock gating a livello di microcircuito o di singolo transistor; un altro problema è che il circuito di controllo del clock introduce una serie di leggeri ritardi nelle trasmissioni; la differenza tra questi ritardi è detta skew e risulta, a sua volta, fonte di dispersione di potenza, potendo generaredelle transizioni spurie della logica dette glitch a loro volta fonte di picchi di potenza non utile al chip. Esistono sistemi per limitare il fenomeno, ricorrendo a circuiti di clock gating “glitch free” che pur permettendo il fenomeno dello skew ne limitano i danni arrecati minimizzando il glitch. Per far ciò, però, si aumenta ancora la complessità circuitale. In basso è riportato l’effetto del glitch per un adder a 16 bit

16-bit-adder-glitch.jpg

In ogni caso, il clock gating, per il fatto che non comporta lo “spegnimento” del circuito, non si presta, se utilizzato da solo, ad essere implementato in dispositivi a bassa potenza.

Un altro metodo che si basa su considerazioni di tipo statistico, tiene conto della tipologia delle interconnessioni delle porte logiche che ha una grande influenza sulla probabilità che un circuito possa commutare. Ad esempio, tra una connessione di porte AND a catena o pipeline ed una ad albero, come quelle della figura seguente

chain-e-tree-connection.jpg

con input A, B, C, D di tipo random, la probabilità di commutazione da 0 a 1 è riportata in tabella (non vi tedio con i calcoli)

tabella-probabilita-commutazione.jpg

Come si può vedere, la probabilità che avvenga la commutazione O2 è più bassa per la struttura a pipeline che per quella ad albero; quindi la prima sembrerebbe migliore ai fini della riduzione della potenza dissipata a causa degli accoppiamenti capacitivi. Anche in questo caso c’è un ma….. Ovvero, la struttura a catena introduce uno skew maggiore rispetto a quella ad albero. Questo ritardo può essere originato da vari fattori all’interno di un circuito elettronico: differente lunghezza e/o diverso valore delle resistenze delle linee di trasmissione, tempo di transito attraverso le basi dei transistor dei segnali, interferenze, ecc. Ad esempio, nel circuito sottostante, clk1, clk2 e clk3 sono, con ogni probabilità, leggeremente sfasati tra di loro

skew.jpg

Ci sono situazioni in cui lo skew viene utilizzato per evitare che tanti transistor commutino in contemporanea o in tempi ravvicinati; in questi casi, si “spalma” volutamente il ritardo all’interno di un range (solitamente tra i 100 e i 300 ps)  che permetta di rimettere in fase i segnali, quando occorre, senza particolari problemi, attraverso deskew circuit con annessi buffer; nella figura in basso è riportato un sommario schema a blocchi di uno di questi circuiti presenti nell’Itanium

deskew-circuit.jpg

Un sistema invece per evitare l’insorgere del fenomeno dello skew è quello di dotare il chip di griglie a due o più livelli per la trasmissione del clock, anzichè di semplici linee (come la regional grid della figura qui sopra), oppure di strutture dette H-tree che hanno una forma del tipo di quella riportata in basso

h-tree.jpg

del tipo di quelle presenti su Itanium 2 che presentano anche 4 livelli di buffering per permettere un corretto riallineamento dei segnali di clock.

Alternativa a griglie e H-tree, la realizzazione di linee di trasmissione larghe, possibilmente, brevi, per ridurre i ritardi di tipo RC visti sopra (ossia imputabili a resistenze e accoppiamenti capacitivi) o di strutture ibride che facciano uso di H-tree e di griglie (una soluzione simile è adottata sulla serie IBM PowerPC 4 e 5).

Il principio di fondo è, comunque, quello di minimizzare lo skew in locale e cercare di utilizzarlo a proprio vantaggio a livello globale per evitare che tutti i gruppi o clock domain commutino nello stesso istante.

Se partiamo dalla generica equazione che fornisce la potenza per uno specifico datapath

generica-equazione-potenza.jpg

notiamo che la stessa è funzione della capacità, della frequenza e del quadrato della tensione di alimentazione del datapath preso come riferimento. Uno dei modi per ridurre la potenza in gioco è quello di sfruttare il parallelismo: a parità degli altri parametri, se utilizzo due circuiti identici a quello di riferimento, che lavorano in paralello, con frequenza dimezzata rispetto al circuito di riferimento, avrò, come risultato, un decremento della potenza richiesta (e, di contro, un aumento della superficie necessaria). Nella seguente tabella sono riportati i valori di tensione richiesti, a parità di output, per un circuito reference generico, per lo stesso circuito messo in forma di pipeline, per un parallelo di circuiti reference identici e per un mix tra parallelo e pipelined:

bilancio-energetico-circuitale.jpg

Risulta evidente che se si vuole ottenere, a parità di output, la massima riduzione possibile di Vdd, si deve adottare la soluzione che prevede più pipeline in parallelo; per avere, invece, un buon compremesso tra risparmio energetico ed area occupata, la migliore appare la soluzione di tipo pipelined.

Dalle considerazioni precedenti emerge che un’altra strada per ridurre la potenza dinamica è quella di ridurre le dimensioni dei gate sui non critical path, in modo da ridurre il carico capacitivo totale imputabile alle basi e, di conseguenza, il totale della capacità del circuito su cui si sta operando.

La riduzione di Vdd, prospettata qualche riga più in alto, non è esente da problemi: man mano che la stessa diventa comparabile con le tensioni di soglia dei transistor, si ha una crescente difficoltà a pilotare l’inverter con la conseguenza che il circuito diventa lento e poco affidabile. Quella della diminuzione della Vdd è, nonostante ciò, una necessità, in quanto non solo comporta una diminuzione della potenza di latch-up ma anche, ad esempio, della potenza di cortocircuito che si può arrivare, teoricamente, ad azzerare, qualora il valore di Vdd divenisse inferiore alla somma della tensione di soglia dell’nmos e del modulo della tensione di soglia del pmos.

Nel prossimo articolo partiremo da questo punto ed analizzeremo i modi iin cui è possibile diminuire Vdd senza rendere inaffidabile il circuito; faremo anche un cenno alle tecniche di power gating che rappresentano una novità, vedremo come alcuni progettisti abbiano implementato tecniche che prevedono variazioni dinamiche delle tensioni di alimentazione e delle frequenze, agendo su Vdd e PLL, e termineremo l’analisi delle componenti dell’equazione della potenza con i due termini restanti. Infine daremo un’occhiata ai sistemi adottati per ridurre i consumi delle cache interne e a cosa ancora si può fare in questi settori per migliorare ulteriormente il bilancio energetico dei chip e il rapporto tra potenza dissipata e prestazioni.

10 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Saltamine
     scrive: 

    Molto interessante Yossarian!!! Un bell’articolo sull’elettronica digitale di base!! Bravo!! Deduco che anche tu faccia parte della grande famiglia degli ing. elettronici!! Suggerisco inoltre a chi ne vuole sapere di più ed ha una infarinatura sull’elettronica di leggersi il sempre valido “Digital Integrated Circuits” del buon Rabaey, che anche se non entra in profondità su alcuni argomenti da una buonissima visione di insieme!!
    Ciaooo!

  • # 2
    Banjo
     scrive: 

    Mi fido sulla parola

  • # 3
    Davide
     scrive: 

    Tutto molto chiaro e comprensibile.

  • # 4
    Marco
     scrive: 

    Ciao Saltamine…complimenti yossarian…
    Se i miei occhiali non mi ingannano mi sembra di avere letto “tensini” in luogo di “tensioni”…
    L’articolo sembra un compendio di almeno due esami dei vecchi (cosiddetti) ordinamenti di ingegneria elettronica:
    elettronica dei sistemi digitali I e microelettronica II.
    Quanto a complessità dell’H tree di distribuzione del segnale di orologio (dato che in Italia ancora si usa il termine calcolatore per designare un computer), anche l’Alpha 21164 coevo del primo Pentium (60 e 66 MHz) era alquanto “complesso”.
    Ancora complimenti.

    Marco71.

  • # 5
    Arunax
     scrive: 

    Complimenti per la competenza e per l’argomento trattato in modo molto professionale di quanto generalmente avvenga su internet… a mia opinione Appunti digitali è, ora come ora, il più bel sito su argomenti tecnologici in italiano.

    Per quanto riguarda l’argomento specifico, da studente di ingegneria elettronica devo dire che l’argomento trattato qui – riduzione del consumo dinamico di potenza – è stato uno di quelli affrontati più spessi nel mio esame di Circuiti Digitali, anche se qui mi sembra affrontato da un punto di vista meno circuitale e più architetturale, quindi è stato comunque molto interessante da leggere.

    Vorrei inoltre segnalare una piccola svista: a un certo punto dell’articolo si parla di “il drain del pnp ed il source dell’npn”, ma essendo i due transistor bipolari (come si vede anche dalla figura) non si dovrebbe piuttosto parlare di collettore ed emettitore?

  • # 6
    pleg
     scrive: 

    Innanzitutto ringrazio yossarian per la citazione :)

    Poi: ci sono alcuni punti che a mio avviso sono un po’ confusi. Faccio qualche considerazione sparsa, in ordine di importanza:

    * Il latch-up non e’ una capacita’ parassita, e non lo considereri insieme al resto: e’ una cosa che deve (e puo’) essere eliminata completamente, pena il non funzionamento (o distruzione) del circuito. Il latch-up e’ l’attivazione di un percorso a bassa impedenza indesiderato, attraverso transistor bipolari parassiti che esistono a causa della configurazione dei MOS. Se si attiva una certa corrente sul loro cammino, quei BJT si accendono in un loop a reazione positiva, alimentandosi a vicenda, e non si spengono piu’ (un’immagine piu’ chiara e’ ad es. qui: http://cnx.org/content/m1031/latest/4.65.png). L’unico modo e’ togliere alimentazione e ripartire, ma nel frattempo ha sicuramente distrutto il comportamento del circuito, e forse anche distrutto il circuito stesso.

    * Skew: lo skew non e’ un ritardo, e’ una differenza tra ritardi (e’ la differenza tra gli istanti in cui il clock viene consegnato ad elementi di memoria nello stesso clock domain). Anzi, ad essere precisi, e’ la parte _deterministica_ della differenza tra i ritardi: oltre a quello hai una componente non deterministica, chiamata “jitter” (termine che viene usato in molti altri ambiti, btw).
    Introdurre ritardo sulla linea di clock non e’ un problema — se esso e’ uguale per tutti gli elementi. Il problema e’ che un ritardo maggiore puo’ avere una dispersione maggiore in valore assoluto (anche se minore in valore relativo!).
    Errore di stumpa: i ritardi saranno distribuiti su un arco di ps, non ns :) (approp: il grafico della distribuzione del clock mi sembra quello dell’Itanium Montecito, giusto? In quel caso, mi sembra di ricordare che fossero riusciti a tenere lo skew sotto i 10 ps — eccezionale!)

    * Glitch: i glitch non sono (direttamente) picchi di potenza dissipata (che chiamerei piuttosto “surge” o “spike”), ma commutazioni spurie della logica. Ovviamente, ogni commutazione spuria e’ pur sempre una commutazione, e consuma energia. Cmq, glitch e skew non sono concetti correlati.

    * Le tre componenti di potenza (commutazione, corto circuito, leakage) sono tutta la potenza del chip, non la meta’.

    * Non sono sicuro del rapporto tra clock gating e accoppiamenti capacitivi. E’ vero che se due linee vicine commutano contemporaneamente in direzioni opposte la capacita’ “efficace” raddoppia, ma mi sembra un’analisi impossibile da fare a design-time. Col clock gating semplicemente elimini la potenza di commutazione su quelle net/gate.

    * La potenza dinamica (di switching) non deriva solo dalle capacita’ parassite (indesiderate), ma anche da quelle… desiderate :) La capacita’ di gate dei MOS e’ una di queste, ed e’ quella che serve a far operare i transistor. Le altre si’ che sono indesiderate (ma ineliminabili).

  • # 7
    yossarian (Autore del post)
     scrive: 

    innanzitutto grazie a tutti per le segnalazioni di sviste o imprecisioni e anche per le puntualizzazioni e le integrazioni (come ad esempio quella di Marco sull’Alpha 21164 o quelle proposte da pleg).

    @ Saltamine
    ottima deduzione ed altrettanto ottimo consiglio

    @ pleg
    una relazione tra skew e glitch esiste, in quanto le transizioni spurie della logica pososno essere indotte dai differenti ritardi nella propagazione dei segnali
    @ sulle tre componenti della potenza ho corretto l’imprecisione; in effetti volevo dire che il 50% della potenza di un circuito VLSI è ormai formata da componenti parassite (e quindi, relativamente al primo termine, andavano considerate solo queste ultime); in effetti come era messo non era affatto chiaro.
    Il clock gating serve quasi esclusivamente per togliere il clock ma in fase di simulazione è possibile e opportuno fare anche valutazioni sulle modalità e le tempistiche di spegnimento del clock. Tieni conto che si opera solitamente, per circuiti particolarmente complessi, comunque su macroaree e, quindi, l’analisi è ristretta ad un numero, in ogni caso, limitato di elementi.

  • # 8
    Giogio
     scrive: 

    Non capisco cosa centri la sentenza della cassazione con la legge alfano.
    La cassazione può solo pronunciarsi sulle leggi esistenti, se cioè un forum sia o meno un organo di stampa in base alle leggi vigenti.
    Il decreto alfano è una nuova legge espressa dal parlamento che ha la facoltà di decidere quello che vuole.
    Se in base alle leggi vigenti un forum non è un organo di stampa per la cassazione, nulla vieta al parlamento di fare una nuova legge che stabilisce che da adesso in poi lo è, tranne l’opinione pubblica.
    Anche se non condivido il decreto alfano, ti assicuro che un tribunale non potrà mai pronunciarsi sul contenuto della legge ma solo sulla rispondenza alla normativa di un qualche contenzioso legale e quindi non potrà mai cambiare una legge ma solo stabilirne l’applicazione nei punti incerti.

  • # 9
    yossarian (Autore del post)
     scrive: 

    @ Giogio
    allora prima si equiparano i forum ad organi di stampa ufficiali e poi si applicano ad essi le medesime normative e non il contrario. Fino a che forum, social network, blog e quant’altro non saranno equiparati formalmente a testate giornalistiche cartacee o televisive, con gli stessi vantaggi e le medesime responsabilità. per essi non potrà valere la stessa normativa. In caso contrario, ovvero stessi oneri ma nessun vantaggio, il decreto Alfano non può interpretarsi se non come un tentativo di mettere il bavaglio a qualcosa che non si riesce a lottizzare e, di conseguenza, a controllare, tentativo che va contro il principio, ormai fin troppo calpestato, secondo cui la legge dovrebbe essere uguale per tutti e, di conseguenza, equiparare i soggetti che si muovono ed operano nello steso campo. Se la Cassazione si è pronunciata in un determinato modo, significa ceh l’attuale normativa non mette in atto l’equiparazione tra questi soggetti né lo fa il decreto Alfano: quindi c’è più di qualche incongruenza.

  • # 10
    Circuiti bollenti: seconda parte - Appunti Digitali
     scrive: 

    […] La scorsa settimana eravamo rimasti con l’atroce dubbio se fosse possibile o meno abbassare il valore di Vdd al punto da renderlo confrontabile con quelli di soglia dei due mos dell’inverter, senza rischiare di rallentare la propagazione dei segnali o, peggio, causare l’instabilità del sistema. Vedremo se e come sarà possibile e che tipo di impatto avrà questa eventuale diminuzione sulle prestazioni del sistema. Andiamo, però, con ordine. […]

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.