Académique Documents
Professionnel Documents
Culture Documents
SW
Informatica
Sistema operativo
Assembler
ISA
Architettura di un calcolatore
Memoria
I/O
Reti sequenziali
HW
CPU
Reti combinatorie
Algebra di Boole e aritmetica binaria
BASI FISICO-MATEMATICHE
RL
CALCOLATORE ELETTRONICO
Memoria
principale
Unit di elaborazione
(CPU)
PROGRAMMA
DATI
ALU
REGISTRI
Bus di sistema
REGISTRI DI STATO
REGISTRI DI TRANSITO
Interfacce di I/O
3
La struttura di una CPU, come tutte le reti logiche sincrone che elaborano dati, pu essere
strutturata in due blocchi Unit di Controllo e Datapath
La CPU, per funzionare, ha bisogno della memoria esterna su cui risiedono il programma e i dati
interrupt
Segnali di
comando
ready
reset
istruzioni
memoria
Segnali di controllo
FLAG
clock
Data Path
Dati (in/out)
CPU
BUS indirizzi
BUS dati
BUS comandi
NEW
S1
Flag
S2
DEST
EXT-32
ALU
IEN
A
Unit di
controllo
Register File
B
PC
TEMP
Uscita sempre
abilitata
IAR
MAR
IR
Instruction
register
MDR
Dati in scrittura
Il segnale di
clock lo
stesso per
lu.d.c. e per
tutti i registri
del data path
Parallelismo
dellarchitettura: 32 bit
(bus, ALU e registri hanno
parallelismo 32 bit)
Data path
Indirizzi
Memoria
Dati in lettura
Istruzioni
OE*
WE*
D0
1
0
M
U
X
O0
WE*
O[31..0]
Q0
D
Flip-Flop D
CK
D1
CK
D[31..0]
M
U
X
O1
Q1
D
Flip-Flop D
D31
1
0
M
U
X
O31
D
Q31
Flip-Flop D
OE2*
OE1*
WE*
CK
1
D0
CK
M
U
X
Q0
Flip-Flop D
O10
O20
OE1*
WE*
D[31..0]
O2[31..0]
O1[31..0]
O131
O231
TEMP
OE1*
OE2_PC#
OE2*
O1
O2
PC
I
WE*
OE1*
OE2*
O1
O2
TEMP
I
WE*
WE_TEMP#
i2
i1
u
u = i2
ALU
clock
DEST
NEW
IR[25..21]
S2
RF_RD1#
RD1*
Raddr1[4..0]
32
32
Rdata1[31..0]
RF_WR#
DEST
Register File
(RF)
WR*
32
32
Wdata[31..0]
32
Waddr[4..0]
32
32
32
5
32
32
IR[20..16]
Rdata2[31..0]
Raddr2[4..0]
RD2*
32
RF_WR_ADDR[4..0]
RF_RD2#
IR[20..16] IR[15..11] 11111
10
RD2*
Raddr2[4..0]
READ
LOGIC1
READ
LOGIC2
OE1*
OE2*
O1[31..0]
O2[31..0]
D[31..0]
R0
Wdata[31..0]
WE*
OE1*
OE2*
Rdata1[31..0]
Rdata2[31..0]
32
32
O1[31..0]
O2[31..0]
WRITE LOGIC
32
WR*
Waddr[4..0]
D[31..0]
R31
WE*
N.B. I 32 registri del RF sono registri Edge-Triggered con Write Enable(WE*) ed uscite 3-state duplicate, tutti comandati dallo stesso clock
11
EN*
EN* 0
ADDR[4..0]
D
E
C
EN1*
31
EN31*
12
Esempio di microoperazione: C A + B
Strutture del DP controllate
dalla -operazione
O O W
E E R
1 2 #
# #
PC
TEMP
IAR
MAR
MDR
ALU
ADD
clock
OE1#(A)
Tc(max) TOE(max)
TALU(max)
Tsu(min)
OE2#(B)
WR#(C)
S1
S2
DEST
A+B
14
I registri campionano sul fronte positivo del clock, hanno due porte di uscita
O1 e O2 e dispongono di tre ingressi di controllo:
un ingresso di Write Enable (WE*) ed uno di Output Enable per ogni porta
(OE1* e OE2*)
S1
S2
DEST
+
ALU
R25
C A + B
R25 C
C
CLOCK (TCK)
Ain
A
+
ALU
Bin
B
R25
La ALU caratterizzata da un
ritardo TALU con il quale fornisce
il risultato.
Supponiamo tutti i registri edgetriggered uguali, caratterizzati
da:
TSU tempo di set-up
TH tempo di hold
TR tempo di risposta
16
Temporizzazioni
t4
t3
t2
t1
t0
TSU TH
Ain
Bin
ALUout
13
R25
13
tR25 tC = TCK
R25 = 3 in tR25 = t2 + TR
TR TALU
C = 3 in tC = t1 + TR
17
Tipologia di micro-operazioni
ALU Rk Ri op Rj
I valori ammissibili per i registri sorgente Ri , Rj e per il registro destinazione Rk
sono riportati nella seguente tabella:
A B C PC TEMP
Operandi sorgente Ri, Rj
Operando destinazione Rk
x x
x
IAR
MAR MDR
IR
x
RD C
18
Esercizio
Micro-operazione
SI/NO
C A + B
TEMP TEMP + 4
A B
R31 A
PC MDR + MAR
IAR A + B
A R5
R3 C
MAR MDR
TEMP PC + A
A C
TEMP C
C R1 + R2
R3 R4 + R5
** = quanto vale
TEMP al termine della
micro-operazione?
Quanti cicli di clock
richiede la micro
operazione?
Micro-operazioni
SI/NO
Micro-operazioni
C A + B
TEMP TEMP + 4
M[MAR] MDR
TEMP TEMP + 4**
TEMP A
PC A
IAR A
MDR M[MAR]
MAR MAR + TEMP
TEMP A + B
C A + B
C A + B
R3 C
A R4
B R8
R8 C
C A + B
A R5
B R5
TEMP A + B
C A + B
R5 C
M[MAR] MDR
M[MAR] MDR
MDR MDR + TEMP
M[TEMP] IAR
A R4
B R8
R8 C
C MAR + B
MDR M[MAR]
PC PC + 4
TEMP A + B
C MAR + A
IAR MDR
M[MAR] MDR
MDR M[PC]
TEMP MDR
SI/NO
C A
MAR B
C TEMP
R3 C
19
NEW
20
22
IR[25..21]
IR[20..16]
IR[15..11]
IR[10..0]
Tipo
6 bit
5 bit
5 bit
5 bit
11bit
op-cod
S1
S2
ext-op-cod
op-cod
S1
S2
op-cod
TIPO R
ALU
RD RS1 op RS2
TIPO I
Load/Store
Branch condizionate
23
IF
EX
IF (INSTRUCTION FETCH):
lettura in memoria della
prossima istruzione da eseguire
EX (EXECUTE): esecuzione
dellistruzione letta in IF
24
Reset# COD_OP
DATA_IN1[7..0]
RESET* OP
Segnali di
controllo
SF
M
WE_AB
Flag
DATA_OUT[7..0]
8
B
WE_C
Unit di controllo
Data Path
T0
25
11-, -10
E1
1-1,101
1-0,101
0--,-00
1--,-00
1--, -00
1-0,001
0--,-00
10-, -10
E0
1-1,001
0--,001
0--,-00
26
IR M[PC]
PC PC + 4
A RS1
B RS2
Instruction Fetch
Instruction Decode*
INIT
BRANCH
ALU
SET
JUMP
DATA TRANSFER
27
IAR PC
Ready ?
IR M[PC]
IEN 0
Istruzione RFE (tipo R):
PC IAR
IEN 1
IAR:
Interrupt
Address
Register
PC 0
IEN 0
Alla fase di
decodifica
IEN:
Interrupt
Enable
Flag
28
DEST = S1
DEST
ALU
INT
Interrupt?
IEN
PC
Unit di
controllo
IAR
IR
Instruction
register
Data path
Se presente una richiesta di interrupt (INT = 1) e gli interrupt sono abilitati (IEN = 1)
lu.d.c. deve:
1) salvare il valore corrente del PC
2) caricare il valore 0 nel PC e disabilitare IEN (IEN = 0) (pu essere fatto allinterno dello
stesso periodo di clock)
29
DEST
ALU
INT
IEN
PC
Unit di
controllo
IR
Instruction
register
Data path
Se presente una richiesta di interrupt (INT = 1) e gli interrupt sono abilitati (IEN = 1)
lu.d.c. deve:
1) salvare il valore corrente del PC
2) caricare il valore 0 nel PC e disabilitare IEN (IEN = 0) (pu essere fatto allinterno dello
stesso periodo di clock)
30
Ciclo di bus
READY
IEN
PC
Unit di
controllo
IR
Instruction
register
Data path
Indirizzi
Memoria
Istruzioni
31
Clock
BA[31..0]
tSU
PC
MEMRDC#
BD[31..0]
BA[31..0]
SI
Istruzione
Ciclo di bus con
1 stato di wait
PC
NO
MEMRDC#
BD[31..0]
Istruzione
DEST = S2 + 4
DEST
ALU
A
Unit di
controllo
Register File
B
PC
IR
Instruction
register
Data path
33
Immediate
TEMP B
ADD
C A + TEMP
Execute
SUB
C A - TEMP
AND
C A & TEMP
XOR
C A ^ TEMP
OR
C A | TEMP
RD C
Write Back
34
Immediate
TEMP B
SEQ
SLT
A==TEMP
A < TEMP
A TEMP
SNE
SGT
A TEMP
A > TEMP
YES
Execute
SLE
A TEMP
NO
C 1
C 0
RD C
Write Back
35
36
S2
32
Flag
DEST
EXT-32
32
IEN
Unit di
controllo
Uscita sempre
abilitata
IR
Instruction
register
32
(IR15)16 ## IR15..0
37
NEW
CI
A[31..0]
U[31..0]
ALU
B[31..0]
Cond[2..0]
Significato
000
001
010
011
100
101
CMP
Cond[2..0]
Se CMP=0, lALU
esegue le operazione
aritmetico-logiche
come sempre. Se
CMP=1, allora lALU
esegue il confronto
specificato da
Cond[2..0] e
considera i numeri A
e B come numeri con
segno (S=1) o senza
segno (S =0).
38
INIT
BEQZ
NO
BNEZ
A=0
A0
YES
NO
Il risultato
del test un
input per
lunit di
controllo
PC PC + (IR15)16 ## IR15..0
39
JALR, JAL
Execute
C PC
JALR
JAL
PC A
JR
PC PC + (IR25)6 ## IR25..0
JALR, JAL
R31 C
Write Back
40
NEW
Execute
Execute
Memory
STORE
Ready ?
MDR B
Ready ?
M[MAR] 32 MDR
LOAD
MDR M[MAR]
LW
SW
C MDR
LB
C (MDR7)24 ## MDR7..0
Ready ?
Ready ?
M[MAR] 16 MDR15..0
M[MAR] 8 MDR7..0
SH
LBU
C
SB
(0)24
## MDR7..0
C (MDR15)16 ## MDR15..0
Memory
RS2 C
C (0)16 ## MDR15..0
LH
LHU
Execute
Write Back
41
NEW
Flag
S2
DEST
EXT-32
ALU
A
Unit di
controllo
DEST = S1 OP S2
C
B
PC
TEMP
IAR
IR
Instruction
register
MAR
MDR
Data path
42
NEW
Ciclo di bus
S1
DEST
S2
MEMWRC#
READY
Unit di
controllo
MAR
IR
Instruction
register
MDR
Dati in scrittura
Data path
Indirizzi
Memoria
Dati in lettura
43
Unit di
controllo
Register File
IR
Instruction
register
Data path
44
LOAD
J/JR
MEM
STORE
LOAD
I1
I0
IF
ID
EX1
EX2
BRANCH TAKEN
SET CONDITION
EX3
JAL/JALR
ALU
LOAD
WB
NOTA: Non vengono considerati gli ingressi di READY e RESET
IF
ID
EX1
EX2
ALU
SET CONDITION
JUMP
BRANCH
DATA TRANSFER
EX3
MEM
WB
Viene eseguito
un ciclo di bus
X
X
X
$
$ = solo nel caso di jump-and-link, # = solo nel caso di branch-taken, & = solo nel caso di LOAD
&
ALU
Scrittura sul
register file
45
ID
EX1
EX2
ALU
SET CONDITION
JUMP
BRANCH
DATA TRANSFER
EX3
MEM
WB
X
X
$
&
$ = solo nel caso di jump-and-link, # = solo nel caso di branch-taken, & = solo nel caso di LOAD
Ipotizzando che non siano presenti stati di wait, ovvero che ogni ciclo di bus duri 1 clock, il numero di
clock necessari per eseguire una singola istruzione (CPI) sono i seguenti:
Istruzione
CPI
ALU
SET CONDITION
STORE
LOAD
JUMP
BRANCH (taken)
46
LOAD
STORE
ALU
SET
JUMP
BRACH (taken)
Frequenza
21%
12%
37%
6%
2%
12%
10%
Soluzione:
Istruzione
CPIi
Frequenza
CPIi * frequenza
LOAD
6 + 2**
0.21
1.68
STORE
5+2
0.12
0.84
ALU
5 + 1*
0.37
2.22
SET
6+1
0.06
0.42
JUMP
3+1
0.02
0.08
BRANCH (taken)
4+1
0.12
0.60
3+1
0.10
0.40
Frequenza
CPI medio
=
6.24
M
Ni
= CPI i
N
istruzioni
i =1
** nelle LOAD e STORE oltre il ciclo di bus per la fase di fetch presente rispettivamente un ciclo di lettura o uno di scrittura
* presente solo il ciclo di bus di lettura relativo alla fase di fetch
48
IR[25..21]
IR[20..16]
IR[15..11]
IR[10..0]
Tipo
6 bit
5 bit
5 bit
5 bit
11bit
ADDMEM
-----------
IR[25..21]
IR[20..16]
IR[15..11]
IR[10..0]
Tipo
6 bit
5 bit
5 bit
5 bit
11bit
ADDMEM
00010
00001
00011
----------49
IR M[PC]
PC PC + 4
A RS1
B RS2
MAR A
Ready ?
MDR M[MAR]
MAR B
TEMP MDR
Ready ?
MDR M[MAR]
MDR MDR + TEMP
A RD
MAR A
Ready ?
M[MAR] MDR
6
6
5
5
+
+
+
+
2*2
2*2
1*2
2*2
=
=
=
=
10
10
7
9
50
RICHIAMO
N
=
N
istruzioni
i
i =1
CPU time
CPU time
= CPI i Ni Tck
i =1
M
Ni
= Nistruzioni CPI i
Tck
Nistruzioni
i =1
CPImedio
51
RICHIAMO
Immediate
TEMP B
Execute
ADD
SUB
C A + TEMP
AND
C A - TEMP
XOR
C A & TEMP
OR
C A ^ TEMP
RD C
IR[31..26]
IR[25..21]
IR[20..16]
IR[15..11]
IR[10..0]
Tipo
6 bit
5 bit
5 bit
5 bit
11bit
op-cod
S1
S2
ext-op-cod
op-cod
S1
S2
C A | TEMP
Write Back
RD RS1 op RS2
RS2 RS1 op Imm
53
IEN
IR M[PC]
IR_WR# = 0
ADDR_MUX = 0
PC_RD1# = 0
Unit di
controllo
PC
IR
Instruction
register
Data path
Indirizzi
Memoria
MEMRDC#
Istruzioni
54
ALU_OP
DEST
ALU
A
Unit di
controllo
IR
Instruction
register
Register File
B
PC
PC_RD1# = 0
PC PC + 4
PC_WR# = 0
A RS1
ALU_OP: S2 + 4
B RS2
A_WR# = 0
B_WR# = 0
RF_RD1# = 0
RF_RD2# = 0
RF_RD_ADDR1[4..0] = IR25..21
RF_RD_ADDR2[4..0] = IR20..16
Data path
55
NEW
DEST
S2
EXT-32
ALU
Unit di
controllo
ALU_OP
C
B
IR
Instruction
register
EX0
TEMP_WR#=0
FORMATO R
B_RD1# = 0
TEMP B
ALU_OP: S1 + 0
FORMATO I
IR_RD# = 0
16
TEMP (IR15) ## IR15..0
ALU_OP: S2 + 0
EXT-32: (S215)16 ## S215..0
TEMP
EX1
A_RD1# = 0
TEMP_RD2# = 0
Data path
ALU_OP: f(IR31..26)
C_WR# = 0
C A + TEMP
56
NEW
Register File
Unit di
controllo
IR
Instruction
register
C_RD#=0
RF_WR# = 0
FORMATO J (JAL)
RF_WR_ADDR[4..0] = 11111
FORMATO R
RF_WR_ADDR[4..0] = IR15..11
FORMATO I
RF_WR_ADDR[4..0] = IR20..16
R31 C
RD C
RS2 C
Data path
IR
31..26
25..21
20..16
15..11
10..0
OPCOD
S1
S2
Ext-op
OPCOD
S1
S2
Immediato
57
NEW
58
Unit di controllo
(F.S.M.)
Uscite
Segnali di controllo
(per il data path)
MEMRDC#
MEMWRC#
Ingressi
Stato
presente
32
FLAG
IR
IEN INT
(codice operativo)
READY RESET
Registro
di stato
Stato
futuro
59
La microprogrammazione
ISA con svariate centinaia di operazioni di tipo
diverso
Il progetto di una macchina a stati finiti
risulterebbe impossibile
Micro-istruzione: insieme dei segnali di
controllo da asserire
Lunit di controllo pu venire espressa tramite
un micro-programma (sequenza di microistruzioni)
Micro-program counter
Segnali di
controllo