Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni100 pagine

Cap 3

Il documento analizza le prestazioni computazionali di un sistema elettronico digitale, evidenziando quattro parametri chiave: performance, consumi, costi e dimensioni. Si discute l'importanza di misurare la performance attraverso il tempo di esecuzione e il throughput, e si sottolinea il ruolo del parallelismo. Inoltre, viene presentata la formula per calcolare il tempo di CPU e l'importanza di considerare i cicli di clock e il CPI per valutare le performance in modo accurato.

Caricato da

Waldemar Dmitruk
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni100 pagine

Cap 3

Il documento analizza le prestazioni computazionali di un sistema elettronico digitale, evidenziando quattro parametri chiave: performance, consumi, costi e dimensioni. Si discute l'importanza di misurare la performance attraverso il tempo di esecuzione e il throughput, e si sottolinea il ruolo del parallelismo. Inoltre, viene presentata la formula per calcolare il tempo di CPU e l'importanza di considerare i cicli di clock e il CPI per valutare le performance in modo accurato.

Caricato da

Waldemar Dmitruk
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

 Il punto

• un sistema elettronico digitale puó essere


caratterizzato sulla base di quattro parametri
 prestazioni computazionali (performance)
 consumi
 costi
 dimensioni
 Computer programmabile
• usualmente le specifiche impongono vincoli su
una o più di queste quattro dimensioni
• o impongono di bilanciare questi parametri
 es: performance e consumi
 Il nostro obiettivo
• analizzare questi parametri
• capire come si misurano questi parametri
 es: come si misurano le prestazioni computazionali?
• capire come rispettare eventuali vincoli su
questi parametri
 attraverso opportune scelte progettuali/realizzative
 In pratica
• i primi due punti li affrontiamo ora
• il terzo punto lo svilupperemo lungo tutto il
semestre
 Spoiler
• giungeremo ad una conclusione molto
importante
 è molto vantaggioso dividere il flusso progettuale in
livelli intermedi
 Infatti
• un flusso progettuale organizzato su diversi
livelli favorisce innovazione e modularità
 la stessa architettura genera dispositivi diversi in
grado di rispondere a specifiche diverse
 Obiettivo
• misurare la performance di un computer
 le prestazioni in termini computazionali
 Problema
• come si misura la performance?
• in altri termini
 quali parametri utilizzo per comparare le
performance di due computer diversi?
 Attenzione
• la risposta a tali quesiti non è banale ..
 Domanda
• quale aereo passeggeri offre le migliori
performance?
 Per rispondere
• é necessario sapere come misuriamo la
performance
 numero massimo di passeggeri?
 velocità del trasferimento?
 massima distanza percorribile senza scali?
 Misurare la performance di un computer
• execution time / response time / latency
 il tempo che intercorre tra l’inizio e la fine di un
singolo task
 task = applicazione / programma / routine
• throughput / bandwidth
 il numero di task completati nell’unità di tempo
 unità di tempo: un secondo, un’ora, un giorno, ...
 Due parametri diversi
• misurano cose diverse
• si usano in contesti diversi
 sistema embedded: execution time
 server / workstation: throughput
 Parallelismo
• è un elemento chiave
 Execution time
• quantità molto rappresentativa quando ci
riferiamo ad un sistema con basso livello di
parallelismo
 es: microprocessore single core
 Throughput
• quantità molto rappresentativa quando ci
riferiamo ad un sistema con alto livello di
parallelismo
 es: sistema multiprocessore
 Per ora
• noi ci concentriamo su execution time
 cioè, latenza
 Perchè
• assumiamo di lavorare su un processore con
singolo core
 esecuzione sequenziale
 no multi core
 no sistemi multi processore
• il parallelismo è un elemento che considereremo
più avanti
 meglio procedere per passi
 Execution time
• performance = 1 / execution time
A è migliore di B ...
• performanceA > performanceB
• execution timeB > execution timeA
 Esempio
• definisco un task di riferimento
 computer A: execution time = 15 secondi
 computer B: execution time = 10 secondi
• B è 1.5 volte meglio di A
 Quindi
• usiamo come parametro il tempo impiegato dal
computer per completare un task
 Però ...
• la definizione di tempo impiegato si presta ad
interpretazioni
 Esempio pratico
• un singolo processore puó gestire tante
operazioni in contemporanea
 multitasking
• in 1 secondo, per quanto tempo la CPU é stata
occupata dal nostro task?
 Necessaria una distinzione
• wall clock time / elapsed time
 tempo impiegato al lordo di tutte le operazioni di
contorno (I/O, accessi in memoria, sistema operativo)
• CPU time
 tempo esclusivamente impiegato per quel task
 Quale ci interessa?
• CPU time
• ma
 é sempre una questione di punti di vista
 server: la parte di I/O è sempre elevata, quindi il CPU
time è poco rappresentativo
 Attenzione
• il tempo non è l’unica grandezza a nostra
disposizione
 Segnale di clock
• è il metronomo del sistema computer
• quindi, ci affidiamo ai CPU clock cycles
 numero di cicli di clock necessari per completare il
task
 Nota bene
• clock cycle time: 250 psec
• clock rate: 4 GHz
 Misurare la performance
• possiamo utilizzare il clock come riferimento
• definisco un task di riferimento e poi calcolo
CPU time = CPU clock cycles / clock rate

 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ò

𝐶𝑃𝑈 𝑐𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒𝑠 = ෍ 𝐼𝐶𝑘 × 𝐶𝑃𝐼𝑘


𝑘
• IC: instruction count
 numero di istruzioni eseguite per completare la
procedura
• CPI: Clock cycles Per Instruction
 cicli di clock necessari per completare l’istruzione
 Ricapitolando

σ𝑘 𝐼𝐶𝑘 ×𝐶𝑃𝐼𝑘
𝐶𝑃𝑈 𝑡𝑖𝑚𝑒 =
𝑐𝑙𝑜𝑐𝑘 𝑟𝑎𝑡𝑒

 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

instruction count ck rate


MIPS = =
instruction count  CPI CPI  106
 106
ck rate
 Quindi
• la metrica MIPS non rispetta la nostra regola
 non tiene conto di Instruction Count
 Cosa vuol dire?
• MIPS non va bene per comparare compilatori
diversi
 visto che non tiene conto di quello che i compilatori
producono (la sequenza di istruzioni)
• MIPS non va bene per comparare due versioni
diverse dello stesso task
 implementazione diversa → diversa sequenza di
istruzioni
 Cosa sono i benchmark?
• routine specificamente realizzate per valutare le
performance di un computer
 Esempio
• voglio capire quanto un processore è
performante nei prodotti matriciali?
 utilizzo un benchmark che è stato pensato per fare
eseguire al processore una serie di calcoli matriciali
• lo stesso esempio lo possiamo ripetere per
diversi scenari di interesse
 I/O, latenza memoria, …..
 Affidabili?
• in teoria si
 tutti possono valutare le performance partendo dalle
stesse routine
• in pratica …
 non sempre sono in grado di misurare efficacemente
le performance
 possibile per i produttori di computer barare un po’ ..
 SPEC
• System Performance Evaluation Corporation
• probabilmente i benchmark più credibili
 Cosa dice
• l’incremento di performance che si può ottenere
con una certa modifica é limitato
 il limite é dato dalla quantitá di tempo in cui quella
modifica é effettivamente utilizzata
 Aspetto pratico
• CPU time di una routine: T
• voglio migliorare e ottenere T < T
• la legge di A. mi suggerisce di affrontare questo
problema in maniera analitica
 per evitare brutte sorprese
 Esempio
• la routine R sul computer  impiega 10 sec
• in dettaglio
task istruzioni tempo
I/O 10% 1s
accessi in memoria 30 % 2s
calcolo 60 % 7s

 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

Edpc = tsc × Vdd × Ipeak

• questo termine si riferisce ai momenti in cui la


corrente può scorrere da alimentazione a massa
 direct-path current (dpc)
 una frazione del tempo totale di transizione della
porta logica da uno stato all’altro
 solitamente questo termine pesa meno del 10% e
viene trascurato
 Sul chip
powerdyn = N × A × CL × V2 × f

• N: numero totale di porte logiche


• A: percentuale di porte logiche attive
 cioè, transistor che effettuano commutazione
 Ovviamente
• obiettivo è powerdyn 
• ma raggiungere l’obiettivo non è facile
• vediamo su cosa possiamo agire
 Parametri
• frequenza di clock
 l’obiettivo solitamente non é abbassarla, anzi
 e comunque non influisce sull’energia
• numero di transistor per chip
 tende a crescere costantemente (legge di Moore)
 si può comunque cercare di ottimizzare in fase di
progettazione
• alimentazione
 importante perché é l’unico termine quadratico
 negli anni si è passati da 5V a 1V
 non dimentichiamo peró che influisce sul clock
 Altri parametri
• carico capacitivo
 possibile diminuirlo agendo su tecnologia e fase di
progettazione
• transistor attivi
 è possibile controllare questo parametro?
 In sostanza
• difficile limitare powerdyn
• però esistono delle soluzioni
 ne analizziamo alcune
 Soluzione adottata #1
• sensore di temperatura nel chip
 Se la temperatura sale troppo
• abbasso automaticamente V
• di conseguenza abbasso f
 Esempio pratico
• V giù del 15%  f giù del 15%
 Soluzione adottata #2
• clock gating
 Approccio
• in sede di progettazione e realizzazione la CPU
viene divisa in settori
 I/O, calcolo floating point, accesso alla memoria, etc
• in tempo reale, il segnale di clock viene levato ai
settori che in quel momento non sono usati
 Peró
• salgono i costi di progettazione e realizzazione
• la CPU diventa piú complessa → piú transistor ...
 Clock gating
 Soluzione adottata #3
• voltage domains
 Approccio
• la CPU viene organizzata in domini
• ogni dominio ha un suo canale di alimentazione
indipendente
 Esempio
• in un multi-core, ogni core potrebbero
corrispondere ad un dominio differente
 non è detto che debbano operare alla stessa
frequenza di clock
 non è detto che abbiano la stessa curva operativa
{tensione, frequenza di clock}
 Voltage domains
• una soluzione che ovviamente ha un costo in
termini progettuali e realizzativi
 sarebbe più facile avere un singolo canale di
alimentazione per tutti
• ma che permette anche di adottare approcci che
intervengono dinamicamente sui consumi
 modificando in tempo reale l’alimentazione sui
singoli domini in funzione delle esigenze operative
 adaptive voltage scaling (AVS)
 dynamic voltage frequency scaling (DVFS)
 Componente statica
• causata dalla presenza della corrente di leakage
 Corrente di leakage
• il transistor dissipa anche senza transizioni
• motivo: passa sempre un po’ di corrente tra drain
e source
 per questioni legate alla realizzazione fisica dei
transistor
 Ileak  e-VT
 Nota bene
• correnti davvero molto piccole (< 10-6 A)
• ma su un chip i transistor sono > 106
 Contributo
• per ogni transistor
powerstat = V × Ileak  V × e-VT

 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

Instruction Set Architecture

CPU memoria I/O

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

Instruction Set Architecture

CPU memoria I/O performance


consumi
circuiti digitali costi
tecnologia
dimensioni

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

CPU memoria I/O CPU memoria I/O

circuiti digitali circuiti digitali

tecnologia tecnologia

dispositivo fisico dispositivo fisico


Instruction Set

architettura

micro architettura #1 micro architettura #2

CPU memoria I/O CPU memoria I/O

circuiti digitali circuiti digitali

tecnologia tecnologia

dispositivo fisico dispositivo fisico


 Idea di base
• da una stessa architettura possono nascere
diverse famiglie di processori
 Vantaggi
• la stessa applicazione può essere portata su tutti
i processori che condividono l’architettura
• una stessa architettura può avere una vita molto
lunga sul mercato
 mentre anno dopo anno i processori basati su quella
architettura evolvono grazie all’evoluzione a livello
tecnologico
 e grazie alla concorrenza nel mercato dei processori
 Conclusione
• un flusso progettuale organizzato su diversi
livelli favorisce innovazione e modularità
 la stessa architettura genera dispositivi diversi in
grado di rispondere a specifiche diverse
 In pratica
• è possibile ottenere il massimo dalle veloci
evoluzioni del livello hw
 senza necessità di rivedere il livello Architettura
 Molto importante
• tutto questo funziona se l’architettura conserva il
suo ruolo di interfaccia tra livello sw e livello hw

Potrebbero piacerti anche