Escolar Documentos
Profissional Documentos
Cultura Documentos
Furber
ARM
System-on-chip
architecture
(traduzione curata da
E. Pediconi)
1
1 Introduzione alla
progettazione di un
processore
4
Tuttavia non tutti i progressi degli ultimi 50
anni sono dovuti agli sviluppi della tecnologia
elettronica. Ci sono stati anche casi in cui una
comprensione maggiore del modo in cui
viene impiegata la tecnologia ha dato un
contributo significativo. Questi concetti vanno
sotto il nome di architettura dei computer e
organizzazione dei computer, a cui
attribuiamo il seguente significato:
Cos un processore?
6
Lo stored-program computer
8
diverse, ognuna con un programma definito.
Tali applicazioni sono tipicamente incorporate
in prodotti come telefoni cellulari, sistemi per
la gestione del motore, e cos via.
I Transistor
10
che mettono in relazione la tensione ai suoi
capi e la corrente che vi scorre. Queste
equazioni sono unastrazione del
comportamento essenziale del dispositivo e
della fisica alla base.
Porte logiche
11
Se A e B sono entrambi vicini a V dd,
luscita sar prossima a Vss.
Se invece A o B (o entrambi) sono
vicini a Vss, luscita sar prossima a Vdd.
output = (A B) Eq. 1
Simboli logici
13
Tavola di verit
14
Un circuito logico deve avere lo stesso
comportamento sia che le porte siano
implementate con dei FET, o dei transistor
bipolari, dei rel o qualunque altra forma di
logica. La tecnologia utilizzata influenzer le
performance del circuito, ma non dovrebbe
avere effetto sulla funzionalit. compito del
progettista circuitale che lavora al livello di
transistor far si che le porte logiche
15
funzionino perfettamente e che il progettista
che lavora a pi alto livello (porte logiche)
non debba pensare alle equazioni dei
transistor.
Livelli di astrazione
16
uno del livello pi alto, come nel caso delle
porte logiche, saremo in grado di passare dai
transistor al microprocessore, che ne
comprende milioni, in soli dieci passaggi. In
molti casi lavoreremo con pi di quattro
componenti, in questo modo il numero di
passaggi si riduce notevolmente.
Una tipica gerarchia di astrazione a livello
hardware potrebbe essere:
1. Transistor;
2. Porte logiche, celle di memoria, circuiti
speciali;
3. Single-bit adders, multiplexers, decoders,
flip-flops;
4. Word-wide adders, multiplexers,
decoders, registri, buses;
5. ALU (Arithmetic-Logic Unit), barrel
shifters, banchi di registri, blocchi di
memoria;
6. Processori, organizzazione e gestione di
cache e memorie;
7. Processori, celle periferiche, memorie
cache, unit di gestione della memoria;
17
8. Chip di sistemi integrati;
9. Circuiti stampati;
10.Cellulari, PC, controlli automatici.
18
lettore dovrebbe avere gi familiarit con
sistemi logici basilari.
Per questo chi non dovesse avere familiarit
con la progettazione utilizzando porte logiche
o chi avesse bisogno di rinfrescare le sue
conoscenze pu vedere lAppendice:
Computer Logic, dove si descrivono gli
elementi essenziali che si assumeranno noti
nel seguito. Inclusi cenni su:
20
Un registro singolo chiamato
accumulatore (ACC) che mantiene il
valore del dato mentre questo utilizzato;
Una ALU in grado di eseguire delle
operazioni tra numeri binari, come
somma, sottrazione, incremento e cos
via;
Un istruction register (IR) che mantiene
listruzione corrente mentre viene
eseguita;
Un decodificatore per le istruzioni e una
logica di controllo che utilizza i
componenti descritti sopra per ottenere i
risultati desiderati dalle varie istruzioni.
Questo insieme ristretto di componenti
permette di implementare un ridotto numero
distruzioni. Tale progetto stato utilizzato
per molti anni nellUniversit di Manchester al
fine di illustrare i principi della progettazione
dei processori. Le macchine progettate a
Manchester sono spesso indicate con il nome
MUn con 1<n<6, per cui questa semplice
macchina nota come MU0. Si tratta di un
progetto sviluppato solo per linsegnamento e
21
non era una delle macchine costruite su
grande scala come veicolo di ricerca
nelluniversit, molto simile alla prima
macchina che fu implementata in varie forme
dagli studenti dellUniversit di Manchester.
22
indirizzi di memoria consecutivi, partendo
dallindirizzo zero, fino a che unistruzione
che modifichi PC non viene eseguita, dopo di
che il fetch riparte dal nuovo indirizzo fornito
dallistruzione di branch.
23
Progetto della logica del MU0
Il datapath
Tutti i componenti che trasportano,
immagazzinano o elaborano pi bit in
parallelo saranno considerati parte del
datapath, includendo laccumulatore, il
program counter, lALU e il registro
istruzioni. Per questi componenti
24
useremo dei register transfer level (RTL)
basati su registri, multiplexer, e cos via.
Logica di controllo
Tutto ci che non compreso nel
datapath sar considerato parte della
logica di controllo e sar progettato
utilizzando lapproccio delle macchine a
stati finiti (FSM).
25
Ogni istruzione impiegher esattamente il
numero di cicli di clock uguale al numero
di accessi alla memoria necessari.
26
(Il lettore che si aspettasse di vedere un
incrementatore dedicato per il PC in questo
datapath, dovrebbe notare che tutte le
istruzioni che non modificano PC richiedono
due cicli, quindi la ALU disponibile durante
uno di questi cicli per incrementare PC).
27
Operazioni del datapath
Inizializzazione
33
34
Progettazione della ALU
35
A+B luscita di un normale
sommatore (assumendo il resto nullo).
A-B pu essere implementato come
A+B'+1, prendendo lingresso B
invertito e forzando il resto a 1.
B si ottiene forzando lingresso A e il
resto a 0.
B+1 si ottiene forzando lingresso A a 0
e il resto a 1.
Istruzione a 4-indirizzi
Istruzione a 3-indirizzi
40
default che listruzione successiva pu essere
trovata aggiungendo la dimensione
dellistruzione al PC, avremo un'istruzione a
3-indirizzi che si pu esprimere in linguaggio
assembly nella forma:
ADD d, s1, s2 ; d := s1 + s2
Istruzione a 2-indirizzi
41
registri degli operandi. Il linguaggio assembly
per questoperazione :
ADD d, s1 ; d := d + s1
Istruzione a 1-indirizzo
42
ADD s1 ; accumulator := accumulator + s1
43
Esempi di utilizzo per istruzioni con
n-indirizzi
Indirizzi
45
Istruzioni ortogonali
46
Modi di indirizzamento
49
Un tipico formato assembly per questa
istruzione :
B LABEL
LABEL
Branch condizionati
50
programmi in funzione dei dati ricevuti.
Alcuni processori (tra cui il MU0) permettono
ai valori situati nei registri generali di
controllare la presenza o meno di un branch
attraverso istruzioni del tipo:
Chiamate a subroutine
52
Lindirizzo di ritorno pu essere scritto
in uno stack.
Lindirizzo di ritorno pu essere salvato
in un registro.
Lutilizzo di sottoprogrammi
sufficientemente comune da far si che la
maggior parte delle architetture includa
specifiche istruzioni per renderli pi efficienti.
Spesso richiedono di eseguire salti pi lunghi
dei semplici branch, quindi ha senso che
vengano trattati separatamente. Sono spesso
non condizionati.
Chiamate di sistema
53
Un'altra categoria di istruzioni per il controllo
dei flussi sono le chiamate di sistema. Queste
sono dei branch a una routine del sistema
operativo, spesso associato con un passaggio
al livello privilegiato del programma in
esecuzione. Alcune funzioni nel processore,
possibilmente includendo tutte le periferiche
di input e output, hanno accesso protetto da
un codice utilizzatore. Quindi un programma
che necessita di accedere a queste funzioni
deve fare una chiamata di sistema.
Le chiamate di sistema superano le barriere
di protezione in modo controllato. Un
processore ben progettato assicurer di poter
scrivere un sistema operativo multi-user nel
quale il programma di un utente sar protetto
dagli attacchi degli altri user, potenzialmente
maligni.
Questo richiede che gli utenti maligni non
possano modificare il codice del sistema, e
quando si tenta di accedere a funzioni
protette bisogna avere le autorizzazioni.
Questa una parte complessa nella
progettazione di hardware e software. Molti
54
sistemi embedded (e alcuni sistemi desktop)
non sfruttano tutte le possibili protezioni a
livello hardware, ma un processore che non
supportasse la modalit protetta sarebbe
escluso da queste considerazioni che
richiedono tale modalit, quindi ormai quasi
tutti i microprocessori includono questo
supporto. Mentre non necessario conoscere
a fondo tutte le implicazioni dovute a un
sistema operativo sicuro, per apprezzare il
progetto base di un set di istruzioni, anche il
lettore meno informato dovrebbe essere
consapevole di tali problemi, dal momento
che alcune architetture dei processori
commerciali danno poca importanza alla
sicurezza.
Eccezioni
55
ma una conseguenza inaspettata (e
possibilmente involontaria) di un effetto
secondario del programma. Il tentativo di
accedere alla memoria potrebbe fallire, per
esempio, a causa di un errore rilevato nel
sottosistema della memoria. Il programma
deve quindi deviare dal percorso pianificato
al fine di rimediare al problema.
Questo cambiamento non pianificato nel
flusso di controllo detto eccezione.
57
Complex Instruction Set Computer (CISC)
60
operazioni sui dati dellutente. In realt
impiega molto poco tempo in questo modo.
Sebbene fanno molta aritmetica, la maggior
parte di questa riguarda gli indirizzi con lo
scopo di localizzare dati e routine di
programma necessari. Dopo averli trovati, la
maggior parte del lavoro sta nel trasporto di
questi, pi che qualunque tipo di
processamento. A livello del set di istruzioni,
possibile misurare la frequenza di utilizzo
delle varie istruzioni. molto importante per
avere misure dinamiche, che servono per
misurale la frequenza con la quale vengono
eseguite le diverse istruzioni, piuttosto che la
frequenza statica, che ci da solo un'immagine
binaria delle diverse istruzioni. Un tipico
esempio di statistica mostrato nella Tab.
1.3; queste statistiche sono state raccolte
eseguendo un programma di anteprima di
stampa su un emulatore di istruzioni ARM, ma
esattamente ci che ci si aspetterebbe da
altri programmi.
61
Queste statistiche suggeriscono che
listruzione pi importante da ottimizzare
quella relativa al trasporto dei dati, sia tra i
registri del processore e la memoria, sia tra
due registri. Queste rappresentano quasi la
met di tutte le istruzioni eseguite. Le
62
seconde pi frequenti sono le istruzioni per il
controllo dei flussi come i branch e le
chiamate di procedura che pesano per un
altro quarto. Le operazioni aritmetiche
pesano un 15% quindi poco rispetto alle
prime due.
Ora abbiamo un'idea di come il processore
utilizzi il proprio tempo, possiamo vedere dei
metodi per farlo andare pi veloce. Il pi
importante di questi utilizzare una
pipeline. Un'altra tecnica importante
lutilizzo di memorie cache, che saranno
esaminate nella Sezione 10.3. Una terza
possibilit lesecuzione di un'istruzione
super-scalare, molto complessa, e non viene
utilizzata nellARM, quindi non verr discussa
neanche in questo testo.
63
Le pipeline
Architettura RISC
71
Architettura load/store nella quale le
istruzioni che processano dati operanti
solo sui registri sono separate da quelle
che accedono alla memoria; i processori
CISC tipicamente permettevano di
utilizzare operandi sia residenti in
memoria che nei registri.
Un grande banco di trentadue registri
da 32-bit, ognuno dei quali pu essere
usato per ogni scopo, al fine di rendere
efficiente larchitettura load/store; i
registri dei CISC erano anche di pi, ma
consentivano utilizzi specifici (per
esempio, nel Motorola MC68000 cerano i
registri per i dati e quelli per gli indirizzi).
72
Organizzazione del RISC
Logica di decodifica delle istruzioni
hard-wired; i processori CISC usavano un
pesante microcodice in ROM per
decodificare le istruzioni.
Esecuzione con una pipeline; i processori
CISC, quando previsto, permettevano solo
piccole sovrapposizioni tra istruzioni
consecutive (ora lo fanno).
Esecuzione in un solo ciclo di clock; i
processori CISC richiedevano spesso vari
cicli per completare una singola istruzione.
Prestazioni pi elevate.
Questa la pi interessante! I primi due
punti sono facili da accettare, ma in una
realt in cui le migliori prestazioni sono
sempre accompagnate da una
complessit crescente, quest'idea pi
difficile da capire.
74
Largomentazione suonava pi o meno cos:
le cose pi piccole hanno una frequenza
naturale pi alta (gli insetti battono le ali pi
velocemente degli uccellini, i quali a loro
volta le battono pi rapidamente degli uccelli
pi grandi, e cos via). Quindi un processore
semplice dovrebbe permettere di lavorare a
una frequenza di clock maggiore. Quindi
iniziamo a progettare il nostro processore
complesso partendo da uno semplice, dopo
aggiungiamoci istruzioni complesse una alla
volta. Quando aggiungiamo un'istruzione
complicata questa svolger funzioni di pi
alto livello in modo pi efficiente, ma
abbasser anche un po il clock di tutte le
istruzioni coinvolte. Possiamo misurare i
benefici complessivi di un programma tipico,
e quando lo facciamo vediamo che tutte le
istruzioni complesse contribuiscono ad
abbassare la velocit di esecuzione. Infine le
aggiungiamo al semplice processore da cui
siamo partiti.
75
Questi argomenti sono stati sostenuti da
risultati sperimentali e un prototipo di
processore (il Berkeley RISC II venne poco
dopo il RISC I). Inizialmente le aziende di
processori erano scettiche ma molte nuove
imprese che progettavano processori per
conto loro videro un'opportunit per
abbattere i costi di sviluppo ed entrare cos
nel mercato. Questi RISC commerciali, il
primo dei quali fu ARM, mostrarono che lidea
funzionava, e dal 1980 tutti i nuovi processori
general-purpose abbracciarono, chi pi chi
meno, i concetti del RISC.
76
Pipelining.
La pipeline il modo pi semplice per
ottenere processori con velocit
raddoppiate o triplicate. Un insieme di
istruzioni semplici semplifica
notevolmente il progetto della pipeline.
Frequenza di clock
78
rispetto ai primi RISC, ma impiegavano
vari cicli di clock per eseguire un accesso
alla memoria, quindi eseguivano un
numero inferiore di accessi alla memoria
per unit di tempo. Attenzione a giudicare
un processore solo dalla sua frequenza di
clock!
Lo scostamento tra il rate di accessi alla
memoria eseguibili dal CISC e la
larghezza di banda disponibile appariva in
contrasto con quanto detto nel paragrafo
Complex Instruction Set Computer dove
luso del microcodice era giustificato nei
minicomputer dei primi anni 70, poich
la memoria principale era lenta rispetto al
processore. La soluzione di
questapparente contraddizione sta nel
fatto che le memorie in dieci anni hanno
fatto grandi balzi tecnologici in avanti,
mentre i primi CISC erano pi lenti dei
processori dei minicomputer. Questa
diminuzione di velocit dovuta al
passaggio dalla tecnologia bipolare a
quella NMOS, che serviva per raggiungere
79
la densit di porte necessarie per avere
un processore su singolo chip.
80
La bassa densit di codice deriva dalla
lunghezza fissa delle istruzioni ed un
problema pi serio per un gran numero di
applicazioni. In assenza di una cache, la
bassa densit di codice porta alla necessit di
utilizzare una banda maggiore per il fetch
delle istruzioni nella memoria principale, con
il risultato che la memoria assorbir pi
potenza. Quando il processore incorpora sul
chip una cache di una dimensione fissata, la
bassa densit di codice porta ad avere un
minor numero di istruzioni salvate e di
conseguenza una memoria con banda
maggiore e pi assorbimento di potenza.
81
questa risulta di primaria importanza. La ARM
Limited introdusse in vari suoi processori, un
nuovo meccanismo, chiamato architettura
Thumb. Il set di istruzioni nella modalit
Thumb compresso a 16-bit rispetto
alloriginale set di istruzioni ARM a 32-bit, e
impiega un hardware per la decompressione
dinamica delle istruzioni nella pipeline. La
densit di codice nella modalit Thumb pi
alta di quella ottenibile dalla maggior parte
dei processori CISC. Larchitettura Thumb
verr descritta nel Cap. 7.
Oltre il RISC
82
evolversi fornendo un supporto sempre pi
efficiente per applicazioni nuove, come quelle
multimediali.
83
lap-top, che utilizzano componenti dalle
altissime prestazioni.
In seguito allintroduzione dei circuiti integrati
il business dei computer si trovato nella
situazione ottimale in cui i transistor
diventavano sempre pi piccoli e meno
costosi, avevano prestazioni migliori e minori
consumi di potenza. Ora, per, i progettisti
hanno iniziato a lavorare specificamente per
ottenere consumi inferiori, anche sacrificando
un po le prestazioni se necessario per certe
applicazioni.
Il processore ARM si trova al centro di questo
sviluppo indirizzato allefficienza dei consumi.
Sembra pertanto appropriato considerare le
problematiche di una progettazione rivolta a
ridurre i consumi.
Dove va la potenza?
84
attuali. La tecnologia dominante per
elettronica di alte prestazioni, quella dei
CMOS, che ha intrinsecamente buone
caratteristiche per una progettazione
efficiente, quindi vediamo in che modo
consumano i circuiti.
Un tipico circuito CMOS quello che
implementa delle porte NAND statiche,
illustrate in Fig. 1.2. Tutti i segnali vanno dalla
tensione di alimentazione fino alla massa,
quindi Vdd e Vss, fino a poco fa lo standard
erano 5 volt di alimentazione, ma ora
richiedono tipicamente 3 volt o addirittura tra
1 e 2 volt, e landamento di ridurre sempre
di pi questa tensione nel futuro. Le porte
operano connettendo luscita sia alla tensione
Vdd che a Vss attraverso una rete di pull-up
fatta da PMOS nel primo caso e di NMOS per
il secondo. Quando entrambi gli ingressi sono
prossimi a uno degli estremi, allora una delle
due reti condurr e laltra inevitabilmente no,
quindi non c un collegamento tra V dd e Vss
allinterno della porta. Inoltre, luscita
normalmente connessa allingresso di una
85
porta simile e vedr quindi un carico
capacitivo. Una volta che luscita si trova
vicino a un estremo non servir corrente per
tenerla in quello stato. Quindi subito dopo
che la porta passa da uno stato allaltro, il
circuito raggiunge una condizione di stabilit
e non verr prelevata corrente
dallalimentazione.
Questa caratteristica di consumare potenza
solo nel momento in cui si passa da un livello
allaltro non comune a tutte le tecnologie
ed stato il fattore predominante che ha
portato a scegliere la tecnologia CMOS per i
circuiti integrati ad alta densit.
Potenza di commutazione.
Quando gli ingressi della porta si trovano a
un livello intermedio, sia le reti PMOS che
86
quelle NMOS conducono. Questo causa un
temporaneo collegamento tra Vdd e Vss.
Con un circuito ben progettato (cio in
generale dove si evitano le transizioni
lente) la potenza di cortocircuito solo
una piccola frazione di quella di
commutazione.
Correnti di perdita.
La rete di transistor deve condurre una
corrente piccolissima quando si trova nello
stato di off; sebbene questa corrente nei
processi convenzionali molto piccola
(frazioni di nA per porta), lunica
corrente nel circuito quando questo
alimentato ma inattivo, e pu essere
alimentata per un lungo periodo. Questa
corrente trascurabile nei circuiti attivi.
In un circuito attivo che sia ben progettato
la potenza di commutazione deve
dominare, la corrente di cortocircuito pu
aggiungere un 10%-20%, e le correnti di
perdita possono non essere trascurate
solo quando il circuito inattivo.
87
Comunque landamento di abbassare
sempre pi la tensione di alimentazione,
questo porta a trovare dei compromessi
tra prestazioni e correnti di perdita come
verr spiegato in seguito, infatti, le perdite
causano sempre pi preoccupazioni in
vista degli sviluppi futuri.
88
il carico capacitivo dato dalla porta. Notare
che con due transizioni per ciclo di clock si ha
un activity factor di 2.
90
Abbassare la Vdd
91
dove Vt la tensione di soglia del transistor.
La carica presente ai nodi del circuito
proporzionale a Vdd, quindi la massima
frequenza di lavoro sar:
92
Anche una piccola diminuzione di Vt pu
aumentare significativamente la corrente di
perdita, aumentando lassorbimento da parte
del circuito inattivo. Bisogna quindi trovare un
compromesso tra il massimizzare le
prestazioni e minimizzare la potenza in
standby, e la questione va considerata con
attenzione dai progettisti di sistemi in cui
entrambe sono importanti. Anche quando la
potenza di standby non fondamentale, il
progettista deve stare attento a massimizzare
le prestazioni usando transistor con tensione
di soglia troppo bassa, perch questo causa
un aumento della potenza di perdita che
potrebbe diventare comparabile con quella
dinamica, necessario quindi tenerne conto
quando si scelgono i package e il sistema di
raffreddamento.
93
Strategie per abbassare i consumi
95