Università degli Studi Roma TreMicroelettronica 2012
Stefano SalvatoriUniversità degli Studi Roma Tre
Microelettronica
Introduzione al progetto di un microprocessore
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 2
Sommario
uP minimo: MU0 Formato delle istruzioni Tipi di istruzione Percentuale di utilizzo delle istruzioni Modi di indirizzamento Pipeline CISC - RISC
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 3
Architettura e organizzazione di un uP Un computer general purpose consiste in un sistema denominato: computer digitale con
programma memorizzato La tecnologia microelettronica ha consentito di integrare milioni di MOS su un solo chip
dando luogo alla nascita di sistemi ultraveloci e di complessità sempre più alta Il progresso nel campo dei uP non si è avuto solo grazie al progresso tecnologico Allo sviluppo hanno certamente contribuito le capacità degli ingegneri in grado di
definire sia l'architettura che l'organizzazione di un microcomputer
Architettura che descrive il computer dal punto di vista dell'utente: Set delle istruzioni Registri disponibili Gestione della memoria Gestione delle eccezioni …
Organizzazione che descrive come è implementata l'architettura: Struttura della pipeline Chache Soluzioni hardware ...
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 4
Computer con programma memorizzato Un processore è un automa che esegue
istruzioni scritte nella memoria programma
address
instructions
processor
memory
registers
instructions
data
00..0016
FF..FF16
and data
Lo stato del sistema è determinato dai valori memorizzati in locazioni di memoria e in registri interni al uP
ogni istruzione definisce le modalità di cambiamento dei dati e quindi dello stato
essendo programmabili, i uP risultano dispositivi universali, potendo eseguire qualunque algoritmo
dati e programma sono immagazzinati nella stessa memoria ⇒ le istruzioni sono trattate come i dati (questo può anche portare a un codice che si auto-modifica)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 5
I uP sono dispositivi che integrano milioni di MOS che operano a velocità elevatissima.
I dispositivi commutano milioni di volte al secondo.
Il sistema deve operare in modo ripetibile e controllato per non cadere in uno stato imprevisto (collasso).
Come può essere progettato un sistema tanto complesso?
Astrazione nella progettazione
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 6
Livello: porte logiche
Vdd
Vss
A
B
A.B
Circuito CMOS per una porta logica CMOS NAND a 2 ingressi:
Y = (A·B)'
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 7
Livello: porte logiche
Astrazione che consente di eliminare la dipendenza dal layout a livello di MOS singolo
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 8
Computer logic
AND
OR
NOT
Uso
de
ll'algeb
ra di B
oo
le
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 9
Computer logic
XOR: addizione
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 10
Computer logic
Adder
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 11
Computer logic
Multiplexer
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 12
Computer logic
Circuiti sequenziali
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 13
Computer logic
Edge triggered latch
clockdata
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 14
Computer logic
D-register
clock
d0 d1 d2 d3
q0 q1 q2 q3
enable
clockenable
Din
Dout
reg
iste
r
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 15
Livelli d'astrazione nella progettazione hardware
layout del singolo dispositivo
livello transistor: logic gates
porte logiche: per simboli
sistemi LSI-MSI: somm., ALU, …
sistemi complessi: processori, cache…
sistemi integrati
schede (PCB)
apparati
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 16
Elementi per il
progetto di un
processore
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 17
Il processore minimo
Il tipo più semplice di processore prevederà:• un PC, Program Counter, per puntare all’istruzione
da eseguire
• un IR, Instruction Register, che mantiene il codice dell’istruzione da eseguire
• un registro, Accumulatore, in grado di immagazzinare il dato su cui lavorare in un certo istante
• una ALU, Arithmetic Logic Unit, in grado di eseguire operazioni elementari
• una unità di decodifica e controllo che imposterà le azioni in funzione dell’istruzione
MU0..6
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 18
MU0
Per il più semplice processore prevediamo un formato a 16 bit;
Nei 16 bit sono inclusi l'opcode a 4 bit e un campo d'indirizzo a 12 bit:
opcode S
12 bits4 bits
istruzioni a 16 bit
I dati sono a 16 bit (ALU)
12 bit d’indirizzo -> 4096x16 = 8 kbyte di spazio di memoria
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 19
MU0
Il set di istruzioni è anch'esso minimo:
Istruzione Opcode Effetto
LDA S 0000 ACC := mem16[S]
STO S 0001 mem16[S] := ACC
ADD S 0010 ACC := ACC + mem16[S]
SUB S 0011 ACC := ACC - mem16[S]
JMP S 0100 PC := S
JGE S 0101 if ACC >= 0 PC := S
JNE S 0110 if ACC !=0 PC := S
STP 0111 stop
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 20
MU0
Il progetto della logica è divisibile in due passi fondamentali:
• datapath tutti gli elementi che lavorano su “parole” (acc., PC, ALU, IR)
fanno parte del datapath per questi elementi si usa uno stile di progetto di tipo
Register Transfer level (RTL), basato su registri, MUX, …
• logica di controllo tutto ciò che non è incluso nel datapath, farà parte della
logica di decodifica/controllo il progetto si basa su FSM (Finite State Machine)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 21
Progetto a livello di
datapath
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 22
MU0 datapath
MU0
12
16
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 23
MU0 datapath
l’esecuzione dell’istruzione prevede un numero di cicli di clock pari agli accessi in memoria necessari
l’esecuzione dell’istruzione prevede un numero di cicli di clock pari agli accessi in memoria necessari
Instruzione Opcode Effetto
LDA S 0000 ACC := mem16[S]
STO S 0001 mem16[S] := ACC
ADD S 0010 ACC := ACC + mem16[S]
SUB S 0011 ACC := ACC - mem16[S]
JMP S 0100 PC := S
JGE S 0101 if ACC >= 0 PC := S
JNE S 0110 if ACC !=0 PC := S
STP 0111 stop
2 accessi
1 accessi
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 24
MU0 datapath
L'incremento del PC è svolto dalla stessa ALU (come si dimostrerà più avanti)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 25
MU0 datapath design
assunto che l’istruzione sia stata caricata, il progetto –a livello di datapath- prevede:
1. accesso all’operando in memoria
• esce l’indirizzo da IR
• l’operando e accumulatore giungono alla ALU
• il risultato fornito dalla ALU è caricato nell’accumulatore stesso
• oppure il contenuto dell’accumulatore è scritto in memoria
1. fetch della nuova istruzione (PC o IR12 hanno l’indirizzo della locazione per la nuova istruzione)
• il contenuto è incrementato dalla ALU
• il nuovo valore è salvato in PC
1. inizializzazione (il processore deve iniziare da uno stato noto)
• input di RESET
• per esempio: azzerata l’uscita della ALU, caricarne poi il valore in PC
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 26
Progetto a livello di
RTL
(Register Transfer Level)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 27
Organizzazione RTL
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
Alcuni segnali di
abilitazione
Il dato è caricato nel registro in corrispon-denza del fronte negativo di clock
Segnali di controllo
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 28
Progetto della logica di controllo: Decodifica dell'istruzione corrente; Generare i segnali di controllo all'interno del
datapath; È intuibile che il progetto prevede quello di una
FSM:• La rappresentazione mediante il diagramma degli stati
è “superflua”• Vi sono solo due stati: Fetch e Execute • => solo 1 bit di stato
Progetto FSM
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 29
Progetto della FSM
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
tabella degli stati:
Ex/ft:execute = 0fetch = 1
inputs outputs
Bit di stato
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 30
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. LDA S (Ex/ft=1)
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
PC <- PC+1
preparo memorizzazione dell’indirizzo S.
fase di fetch
LDA S 0000 0 1 x x
inputs outputs
0 0 0 1 1 0 B+1 1 1 0
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 31
Progetto FSM: es. LDA S (Ex/ft=0)
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
preparo memorizz.nell’accumulatore
fase di execute
LDA S 0000 0 0 x x
inputs outputs
1 1 1 0 0 0 = B 1 1 1
La prossima è il fetch dell'istruzione succ.
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 32
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. STO S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
preparo memorizz. in memoria
R / W
inputs outputs
STO S 0001 0 0 x x 1 x 0 0 0 1 x 1 0 1STO S 0001 0 1 x x 0 0 0 1 1 0 B+1 1 1 0
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 33
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. ADD S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
ADD S 0010 0 0 x x 1 1 1 0 0 0 A+B 1 1 1ADD S 0010 0 1 x x 0 0 0 1 1 0 B+1 1 1 0
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 34
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. SUB S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
SUB S 0011 0 0 x x 1 1 1 0 0 0 A-B 1 1 1SUB S 0011 0 1 x x 0 0 0 1 1 0 B+1 1 1 0
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 35
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. JMP S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
JMP S 0100 0 x x x 1 0 0 1 1 0 B+1 1 1 0
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 36
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. JGE S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
0 x x 0 1 0 0 1 1 0 B+1 1 1 0JGE S 0101 0 x x 1 0 0 0 1 1 0 B+1 1 1 0JGE S 0101
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 37
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. JNE S
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
0 x 0 x 1 0 0 1 1 0 B+1 1 1 0JNE S 0110 0 x 1 x 0 0 0 1 1 0 B+1 1 1 0JNE S 0110
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 38
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
Progetto FSM: es. STP
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
inputs outputs
0 x x x 1 x 0 0 0 0 x 0 1 0STP 0111
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 39
Progetto FSM: es. RST
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
instruction
Op-code
ResetEx/ft
ACCz
ACC15
Asel
Bsel
ACCce
PCce
IRce
ACCoe
ALUfs
MEMrq
R/nW
EX/ft
inputs outputs
1 x x x 0 0 1 1 1 0 = 0 1 1 0RST xxxx
N.B.: in realtà l'ALU calcola il valore B+1 in modo che quando il segnale di RST è disabilitato in PC vada l'indirizzo dell'istruzione successiva
RST
CLK
Qui, all'uscita dal reset viene memorizzato PC+1 = 001 in PC
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 40
Progetto FSM: sintesimemory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
memory
ACC
IRce
PCce
ALUfs
Bsel
ACCce
ACCoe
MEMrq RnW
mux0 1
Asel
ALUAB
PC
ACC[15]
ACCz
IR
opcode
MU0
organizzazione RTL
fetch dell’istruzione corrente e incremento di PC => coincidono
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 41
Progetto della
ALU
(Arithmetic Logic Unit)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 42
Progetto della ALU
Le funzioni da implementare sono:• A+B: semplice adder;• A-B: eq. a A+B’+1 => inv. B e forzare Cin a 1;• B: forzare A e Cin a 0;• B+1: forzare A = 0 e Cin = 1
Dalla tabella utilizzata per il progetto della FSM si ricavano quali siano le funzioni che la ALU deve svolgere.
N.B.: per il reset (=0) si può usare lo stesso segnale che azzeri l'uscita (senza inserire una quinta funzione)
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 43
Progetto della ALU
Le funzioni da implementare sono:• A+B: semplice adder;• A-B: eq. a A+B’+1 => invertire B e forzare Cin a 1;• B: forzare A e Cin a 0;• B+1: forzare A = 0 e Cin = 1
Cin
Cout
sum
reset
B
A
Aen
Binv Cin
Cout
sum
reset
B
A
Aen
Binv
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 44
Sviluppi futuri per il MU0
Aumentare il numero di linee di indirizzo;
Aumentare i modi di indirizzamento;
Consentire il salvataggio di PC (subroutines);
Aggiungere altri registri interni;
inserire linee di interrupt;
…
Università degli Studi Roma Tre Stefano SalvatoriMicroelettronica 2012 45
Riferimenti
S. Furber, “ARM, system-on-chip architecture, 2nd ed. :
• cap. 1 (pp. 1-13)• Appendice: pp. 399-404