Cap 3
Cap 3
Migliorare performance
• CPU time
• apparentemente, basta operare su clock rate
clock rate
cioé, se voglio raddoppiare la performance devo
usare una nuova CPU che raddoppia la clock rate
purtroppo non é cosi facile ….
Un passo ancora in avanti
• come si misurano i CPU clock cycles?
Ricordiamoci questo
• task → lista ordinata di istruzioni da eseguire
Perciò
σ𝑘 𝐼𝐶𝑘 ×𝐶𝑃𝐼𝑘
𝐶𝑃𝑈 𝑡𝑖𝑚𝑒 =
𝑐𝑙𝑜𝑐𝑘 𝑟𝑎𝑡𝑒
Formula importantissima
• mette in evidenza i tre parametri che
determinano le performance di un computer
Attenzione
• fare valutazioni escludendo uno dei tre porta a
conclusioni errate
• lo vediamo con un esempio
Obiettivo
• progettare un nuovo compilatore per il
processore P
Istruzioni
• il processore in questione prevede tre categorie
di istruzioni
, ,
• la tabella riporta il CPI di ogni categoria
CPI 1 2 3
Approccio
• parto da una routine prefissata
per esempio scritta in linguaggio C
• uso il mio compilatore per generare la versione
assembly
e quindi la lista di istruzioni che realizza la routine
Routine di test
• mi serve per valutare le soluzioni che sto
sperimentando per il compilatore
• uso una routine che ritengo indicativa
o, in generale, un insieme di routine
Caso pratico
• ho sviluppato due diverse soluzioni per il mio
compilatore
• voglio capire quale sia la migliore
Quindi
• prima di tutto determino quante istruzioni di
ogni tipo mi servono per eseguire la routine
sol I 200 100 200
sol II 400 100 100
Numeri
• Clock rate
fissata, visto che facciamo il confronto su un
processore di riferimento
• Instruction count
sol I: 500 istruzioni
sol II: 600 istruzioni
• CPU clock cycles
sol I: (200 × 1) + (100 × 2) + (200 × 3) = 1000
sol II: (400 × 1) + (100 × 2) + (100 × 3) = 900
Perció
• vince la soluzione II
• anche se la soluzione I poteva apparire migliore
Attenzione
• una partita che si gioca a diversi livelli
Infatti
• non possiamo concentrarci solo sulle funzionalità
messe a disposizione dalle singole istruzioni
somma, prodotto, trasferimento dati, etc
• le caratteristiche del sistema digitale che
implementa le istruzioni sono altrettanto
importanti
CPI
clock rate
Molto importante
• affrontando analiticamente il tema delle
performance arriviamo ad un risultato
fondamentale
• è opportuno separare due aspetti
definizione dell’Instruction Set
definizione del sistema digitale che implementa le
istruzioni
Vantaggio
• le performance possono migliorare anche se
l’Instruction Set non cambia
non riprogetto Instruction Set, riprogetto il livello hw
Esempio
• funzionalità: somma aritmetica
Instruction Set
• definisco la/e istruzione/i che realizzano questa
funzionalità
ADD a,b
ADD a,b,c
Livello hw
• progetto e realizzo la ALU che si occuperà di fare
le somme
puntando a minimizzare la latenza
Ancora sulla performance
• un parametro spesso utilizzato è il MIPS
Millions of Instructions Per Second
In pratica
• MIPS = instruction count / (CPU time 106)
Attenzione
Obiettivo
• voglio che la routine impieghi non più di 7 sec
• cosa posso fare?
Esempio (continua)
• la legge di A. mi suggerisce di usare prima di
tutto il buon senso
Quindi
• per raggiungere l’obiettivo devo iniziare a
lavorare sulla parte di calcolo
se non miglioro quella parte, l’obiettivo diventa
irraggiungibile
In pratica
• la legge di A. mi dice come usare bene le mie
risorse
tempo e soldi
Attenzione
• dalla legge di A. si ricava una linea guida molto
importante
make the common case fast
inutile dedicare risorse (tempo/soldi) per migliorare
fattori che hanno poco peso nel determinare la
performance di un sistema
Quindi
• nel caso della progettazione di un computer la
regola d’oro è
le istruzioni che una CPU utilizza piú spesso devono
anche essere veloci (basso CPI)
Stesura formale
• ipotesi
il CPU_time T della routine R è il risultato di due
processi
,
• perciò
T=+
Speed up
• la legge di A. ci permette di calcolare il
miglioramento relativo ottenuto intervenendo su
Speed up
• se miglioro di un fattore n
T +
su = = =
T n + n-1
− n
T
Questa formula
• ci dice che lo speed up non dipende solo da n
• ma anche dal peso relativo di rispetto a
Cioè
• investire tempo/soldi per alzare n non sempre è
conveniente
Facciamo due conti
• ipotizzando n = 4
n su
4 1 0 4
4 0.5 0.5 1.6
4 0.1 0.9 1.08
Performance
• un parametro importante per definire le
caratteristiche di un sistema digitale
quindi è fondamentale capire come deve essere
misurato questo parametro nel caso di un computer
programmabile
Nota bene
• stabilire cosa vuol dire performance è
importante anche per la parte progettuale
vuol dire sapere esattamente quali sono gli obiettivi
da perseguire
Un fatto
• un processore deve essere alimentato
dichiarazione (apparentemente) banale
Le ricadute
• non sono affatto banali
• i moderni multi-core possono richiedere piú di
150 Watt di alimentazione
quando devono operare al massimo delle loro
possibilitá
questo ha anche un impatto significativo sulla
dissipazione del calore
Power density [W/mm2]
Importante
• potenza energia
Energia
• [ J ] oppure [Ws]
• influisce su: durata batteria, costi
importante soprattutto nei dispositivi portatili
Potenza
• energia nell’unità di tempo [W]
• influisce su: alimentazione, dispersione calore
• i produttori di CPU utilizzano varie metriche
Intel: Processor Base Power, Maximum Turbo Power
Esempio
• identico consumo di energia
• diverse potenze
watt watt
time time
Quindi
• i vincoli sulla potenza in prima battuta vengono
gestiti rallentando il funzionamento del
dispositivo
Importante
• due componenti contribuiscono a determinare i
consumi (potenza assorbita) di un circuito
integrato
componente dinamica
componente statica
Cosa sono?
• lo andiamo a vedere nel dettaglio
• valutando in che modo il progettista possa
intervenire sul fattore consumi
Tecnologia CMOS
• la principale fonte di assorbimento di potenza è
lo switch dei transistor
carica/scarica del carico capacitivo
• si parla di dynamic power
Perogni porta logica
powerdyn = f × CL × V2
• CL = capacitive load
• V = voltage
• f = clock frequency
Carico capacitivo
• dipende da cosa “vede” il transistor al suo
output
caratteristiche del transistor
configurazione del circuito
connessioni
Frequency of switching
• non è esattamente la frequenza di clock
• quello che conta è l’effettivo numero di switch
0→1/1→0
• frequenza di clock è una approssimazione
In effetti
• andrebbe aggiunto un altro termine
Incidenza
• MOSFET
sempre più alta ad ogni salto tecnologico
a causa della sempre più alta densità di transistor
a causa della necessità di abbassare la tensione di
alimentazione
Leakage #1
• transistor più piccoli per aumentare il numero di
transistor sull’area
più dissipazione → più calore
ma la corrente di leakage aumenta quando le
temperature salgono (T VT )
Leakage #2
• necessità di abbassare V senza rinunciare ad
alte frequenze di clock
deve calare anche Vt
ma se decresce Vt la corrente di leakage cresce
(legame esponenziale)
Importante
• i transistor FinFET hanno ridotto l’incidenza
della componente statica
i FinFET permettono di limitare la corrente di leakage
In generale
• i FinFET hanno permesso anche di abbassare la
tensione di alimentazione pur salvaguardando la
velocitá di switch on/off
bene per i consumi in generale
Power gating
• una possibile soluzione per gestire il problema
Come funziona
• simile al clock gating
• CPU divisa in settori
tolgo dinamicamente alimentazione ai settori
Problemi
• logica di controllo per gestire tutto questo
salgono i costi e il numero di transistor
• le transizioni on/off/on introducono tempi di
ritardo
Power gating
Power gating
I consumi sono un aspetto critico
• datacenter → costi dell’energia elettrica
• dispositivi portatili → batteria
Multi-core
• approccio che offre nuove via di uscita
maggiore modularità
utilizzo il parallelismo per incrementare le
performance
Inoltre
• si affermano soluzioni che fanno uso di
processori specializzati
GPU, Tensor Processing Unit (TPU), ….
Una visione più ampia
• il fattore consumi va coniugato con il fattore
performance
Quindi
• torna l’approccio alla progettazione basato su
una organizzazione a livelli
• partendo dallo stesso Instruction Set posso
sviluppare il livello hw in direzioni diverse
alte performance computazionali anche a scapito dei
consumi
compromesso tra performance computazionali e
consumi
Computer
• un sistema che include diversi componenti
CPU, RAM, Hard Disk, periferiche I/O, etc.
• i singoli componenti determinano il costo finale
• l’impatto del singolo componente è differente al
variare della categoria di computer
sistema embedded ≠ supercomputer
• l’impatto del fattore costo é differente a seconda
della categoria di computer e dell’applicazione
decoder Digitale Terrestre ≠ satellite
In generale
• il costo é un parametro importante
• mai dimenticare aspetti economici
chi produce vuole vendere e ricavare profitti
i costi possono determinare il successo sul mercato di
un prodotto
Quindi
• cerchiamo di capire quanto costa produrre un
chip
realizzazione fisica su silicio di un sistema digitale
CPU / RAM
Prima di tutto
• definiamo una metrica che ci permetta di
stimare i costi
costo in dollari per singolo transistor
Questa metrica
• tiene conto delle variabili principali
costo del processo di lavorazione
area del wafer
riduzione delle dimensioni dei transistor
Attenzione
• non ci sono solo i processing cost
• il costo finale di un transistor (o di una porta
logica) dipende anche dagli upfront cost
Upfront cost
• includono i costi non direttamente legati al
numero di chip prodotti
• esempi
costi per comprare nuovi macchinari
costi per estendere/rinnovare gli spazi della fabbrica
costi per formazione del personale
Primo commento
• la nostra metrica mette in evidenza il ruolo della
Legge di Moore
per abbattere i costi é molto utile aumentare il
numero di transistor per unitá di area
Quindi
• in qualche modo Moore ha valutato anche il lato
economico quando ha fatto la sua previsione
sapeva che sarebbe stato conveniente diminuire
progressivamente la dimensione dei transistor
ma la metrica ci dice che il progresso tecnologico di
per se non sarebbe stato sufficiente ...
Secondo commento
• la nostra metrica dice anche che é fondamentale
il ruolo dell’economia di scala
se i volumi di produzione crescono i costi calano
Infatti
• i costi totali del processo di lavorazione salgono
ogni volta che c’é un salto tecnologico
qui pesano molto gli upfront cost
• questi costi vengono ammortizzati piú
velocemente se produco in grandi quantitá
Terzo commento
• l’area del wafer é cresciuta con il passare degli
anni proprio per favorire l’economia di scala
• evoluzione diametro
da 51 mm (1965) a 200 / 300 mm (oggi)
Nota bene
• aumentare l’area del wafer non porta solo
benefici
necessario valutare anche i costi per aggiornare il
processo produttivo
Intel aveva annunciato un passaggio ai 450 mm che
(ad oggi) non é avvenuto
Aspetto critico
• nel valutare il rapporto tra costi di produzione e
area del wafer devono emergere due parametri
quanti chip ottengo da un singolo wafer
quanti di questi sono realmente funzionanti
Primo parametro
• è fondamentale la dimensione del chip
quindi le sue funzionalità e il sistema digitale
progettato di conseguenza
Secondo parametro
• entra il gioco lo yield
percentuale di chip che funzionano correttamente
Ora
• proviamo a stimare lo yield in maniera analitica
• abbiamo bisogno di
calcolare il numero di chip che possono essere
ricavati da un wafer
definire un modello che descriva la distribuzione dei
difetti all’interno di un wafer durante il processo
produttivo
In seguito
• faremo esempi pratici basandoci su questi
modelli
Dies per wafer
• si calcola facilmente
• input
A: area del chip
R: raggio del wafer
Nota bene
• tiene conto dell’effetto dei bordi
chip quadrati ottenuti da wafer circolare
Die yield
• necessario definire un modello
• si possono fare diverse ipotesi
distribuzione dei difetti uniforme, oppure maggiore ai
bordi del wafer, oppure non uniforme, oppure ....
Modello di Moore
• empirico
• input
A: area del chip
D: densitá dei difetti
Caso pratico
• fissiamo
diametro wafer → 2R = 100 mm
densitá dei difetti → D = 1 cm-2
• e valutiamo gli effetti di un intervento sull’area
del chip
Ao = 10 × 10 mm2 → An = 9 × 9 mm2
decremento del 19% sull’area
Risultato
• prima: No = Y Ntot = 0.36 50 = 18
• dopo: Nn = Y Ntot = 0.40 65 = 26 +44%
Quindi
• possiamo migliorare del 44% il numero di chip
utilizzabili riducendo del 19% l’area del chip
• ottimo risultato, ma ....
quanto ci é costato ridurre l’area del chip?
Da ricordare
• nella nostra metrica ci sono i costi totali del
processo
i costi sono sicuramente aumentati in questo caso
abbiamo cambiato tecnologia? abbiamo riprogettato
il chip?
• l’operazione conviene solo se $/tr scende
Costo del chip
• funzione di molte variabili
innovazione tecnologica (transistor piú piccolo)
efficienza del processo di lavorazione
investimenti
progettazione del chip
Inoltre
• il costo finale sul mercato dipende anche
costo materie prime
concorrenza
marketing
Oggi
• si nota un’inversione di tendenza rispetto al
trend atteso
la tecnologia scala le dimensioni del transistor e
quindi i costi dei chip diminuiscono
In effetti
• i dati recentemente condivisi da Google
(azienda) dimostrano che sta succedendo
l’inverso
prendendo come riferimento la tecnologia a 28 nm
Una visione più ampia
• nell’ottica della progettazione e realizzazione di
un sistema digitale il fattore costi si aggiunge ai
precedenti
performance
consumi
Nota bene
• si conferma l’utilitá di un flusso progettuale
organizzato in livelli
lo stesso sistema digitale nel tempo puó essere
realizzato a costi sempre inferiori
Punto centrale
• le dimensioni sono un elemento decisamente
caratterizzante per un computer
Esempio
• smartphone vs. laptop
poco diversi dal punto di vista delle funzionalità che
offrono all’utente
molto diversi in termini di ingombro
• le periferiche I/O contribuiscono a fare la
differenza
pensiamo a monitor e tastiera
In generale
• nel sistema computer le dimensioni finali
possono essere determinate da diverse
componenti
numero, tipologia e caratteristiche delle periferiche
I/O
quantità di memoria e sua organizzazione
numero e tipologia di CPU
Quindi
• in presenza di vincoli forti sulle dimensioni è
necessario fare delle scelte mirate
sistemi embedded
Attenzione
• non dimentichiamoci quello che abbiamo detto
su Legge di Moore e VLSI
la tecnologia ci permette di mettere un numero
sempre più grande di transitor nella stessa area
Allora
• grazie a tecnologia e architettura/organizzazione
possiamo progettare chip
sempre più piccoli
sempre più efficienti in termini computazionali
senza incrementare i costi se parliamo di grandi
volumi di produzione
Sistemi embedded
• la loro evoluzione è frutto di questo contesto
In pratica
• abbiamo dispositivi sempre più potenti anche
quando le dimensioni sono ridotte
System on Chip (SOC)
System on Module (SOM)
Risultato
• i sistemi elettronici diventano lo strumento per
pilotare l’evoluzione dell’era industriale
robot, veicoli autonomi, intelligenza artificiale ....
Una certezza
• se guardiamo agli aspetti progettuali la missione
é chiara
minimizzare l’area del chip
garantendo le funzionalitá richieste (Instruction Set)
rispettando i vincoli imposti (performance, consumi,
costi)
Compromesso
• é la parola chiave per un ingegnere
é impossibile ottenere l’ottimo su tutti i fronti
perché alcune esigenze contrastano con le altre
Livello architettura
• analizziamo nuovamente il suo ruolo nel flusso
progettuale
• alla luce di quanto abbiamo imparato fino ad ora
architettura come punto di partenza per la
progettazione/realizzazione del dispositivo fisico
caratterizzazione analitica dei quattro parametri che
definiscono il dispositivo fisico : performance
computazionali, consumi, costi, dimensioni
Punto chiave
• la distinzione tra il livello Architettura e il livello
hw
Partiamo da qui
• il punto di vista del programmatore
vuole utilizzare il computer programmabile per
realizzare una applicazione
Architettura
• fornisce al programmatore tutto ciò che serve
Instruction Set
risorse disponibili
struttura del sistema digitale programmabile
• infatti è l’interfaccia verso il livello sw
il programmatore non ha necessità di ulteriori
dettagli per realizzare l’applicazione
applicazioni
linguaggio di programmazione
programmatore
SO compilatore
circuiti digitali
tecnologia
dispositivo fisico
Peró
• se sposto l’attenzione sul computer come
dispositivo da realizzare
l’architettura non è solo l’interfaccia verso il livello sw
è anche il punto di partenza per la progettazione e
realizzazione del dispositivo fisico
Infatti
• il dispositivo fisico deve essere in grado di
implementare l’architettura
impiegando anche risorse/soluzioni che non sono
visibili al programmatore
ma che sono necessarie per rispettare le specifiche:
performance, consumi, costi, dimensioni
applicazioni
linguaggio di programmazione
SO compilatore
dispositivo fisico
Quindi
• l’architettura è uno snodo fondamentale nel
flusso progettuale
proprio per il suo ruolo di interfaccia tra livello sw e
livello hw
Molto importante
• la stessa architettura può essere implementata
da dispositivi fisici diversi tra di loro a livello hw
diversi approcci alla progettazione/realizzazione del
sistema digitale che implementa l’architettura
diversi risultati in termini di performance, consumi,
costi, dimensioni
Instruction Set
architettura
tecnologia tecnologia
architettura
tecnologia tecnologia