Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Cammino dei Dati (Datapath)
R e g i s t r # D a m o y A d P C I n u c L U 1 2 3 4 5
2
Fetch & Execute Fetch (Prelievo) dell’istruzione (Fetch)
Decodifica dell’Istruzione ed accesso ai registri (Dec) Esecuzione, Calcolo dell’indirizzo di memoria, Branch (Exe) Accesso alla Memoria, termina una istruzione di tipo R (Mem) Write-back (WB) Le ISTRUZIONI utilizzano da 3 a 5 fasi
3
Fetch & Execute Le cinque fasi sono sincronizzate
Si utilizza un Clock, ogni fase viene eseguita durante un ciclo di clock tempo di ciclo Fronte di salita Fronte di discesa
4
Fetch & Execute 1 2 3 4 5 Fetch Dec Exe Mem WB
Le ISTRUZIONI utilizzano da 3 a 5 cicli di clock
5
Fetch & Execute Una esecuzione tipica di una fase:
Legge il contenuto da registro o memoria (elementi di stato), Invia i valori ad un circuito combinatorio Scrive i risultati in registri o memoria Mem1 Circuito Combinatorio Mem2 Ciclo di clock
6
Elementi Funzionali A L U c o n t r l e s u Z 3 P C
7
Elementi Funzionali Banco dei registri (lettura) W r i t e
Registro Lettura 1 Registro Lettura 2 Registro Lettura 1 Registro Scrittura R e g i s t e r R e g i s t e r 1 M u Data W r i t e R e g i s t e r n – 2 x R e g i s t e r n-1 Registro Lettura 2 M u x
8
Elementi Funzionali Banco dei registri (Scrittura) W r i t e C R e g i
R e g i s t e r 1 D Registro Decoder C R e g i s t e r 1 D n – 2 n-1 C R e g i s t e r n – 2 D C R e g i s t e r n-1 d a t a D
9
Elementi Funzionali M e m W r i t e A d d r e s s R e a d d a t a 1 6
3 2 S i g n e x t e n d W r i t e d a t a Memoria M e m R e a d
10
Flip-flop D il flip-flop D (delay)
un unico input che viene dato al flip-flop l’output (e quindi lo stato) del flip-flop D è uguale all’input precedentemente dato
11
La Memoria 8 bit 32 bit Decoder 32 a 232 232 parole MEMWRITE MEMREAD
12
La Memoria Decoder MEMWRITE Ck MEMREAD
13
La Memoria 2 a 4 8x230 8x230 8x230 8x230 MAR (30 bit) MBR (32 bit)
14
Cammino dei Dati (Tipo R)
y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 11] A L U l Z B O
15
Cammino dei Dati (Tipo R)
y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 11] A L U l Z B O x 3
16
Cammino dei Dati (Tipo R + sw)
y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 0] A L U l Z B O x 3 S
17
Cammino dei Dati (Tipo R + sw)
y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 0] A L U l Z B O x 3 S
18
Cammino dei Dati (Tipo R + sw)
P C I n s t r u c t i o n M R e a d u A d d r e s s [ 2 5 – 2 1 ] r e g i s t e r 1 M u x I n s t r u c t i o n x M e m o r y R e a d R e a d A Z e r o 1 [ 2 – 1 6 ] r e g i s t e r 2 d a t a 1 1 A L U M e m D a t a R e g i s t e r s A L U A L U O u t I n s t r u c t i o n W r i t e r e s u l t R e a d [ 1 5 – 0] I n s t r u c t i o r e g i s t e r d a t a 2 B W r i t e [ 1 5 – 1 1 ] I n s t r u c t i o n 4 1 M d a t a W r i t e r e g i s t e r u d a t a 2 x 3 1 6 3 2 S i g n e x t e n d
19
Cammino dei Dati (Tipo R + sw + lw)
P C M e m o r y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 0] A L U l Z B O x 3 S
20
Cammino dei Dati (R + sw + lw + beq(?))
1000 P C M e m o r y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 0] A L U l Z B O x 3 S h f
21
Cammino dei Dati (Tipo R + sw + lw + beq + j)
y D a t W i d R g s 1 2 4 I n u c [ 5 – ] 6 0] A L U l Z B O x 3 S h f 8 J p -
22
Fase 1: Fetch Si utilizza PC per prelevare l’istruzione e registrarla nel Registro Istruzione (IR). Si incrementa il PC di 4. IR = Memory[PC]; PC = PC + 4;
23
Fase 2: Decodifica ed Accesso ai Registri
Si leggono i registri rs ed rt (potremmo averne bisogno) Si calcola l’indirizzo del Salto Condizionato (qualora l’instruzione sia una BEQ o BNE) A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend(IR[15-0]) << 2); Non abbiamo utilizzato ancora nulla della istruzione specifica
24
Fase 3: Esecuzione (dipende dalla istruzione)
L’ALU esegue una delle seguenti operazioni sulla base della istruzione lw, sw : ALUOut = A + sign-extend(IR[15-0]); tipo R: ALUOut = A op B; Beq: if (A==B) PC = ALUOut; Bne: if (A!=B) PC = ALUOut;
25
Fase 4 Tipo R o Accesso alla memoria
lw o sw: MDR = Memory[ALUOut]; o Memory[ALUOut] = B; Istruzione di tipo R Reg[IR[15-11]] = ALUOut;
26
Fase 5: Write-back lw: Reg[IR[20-16]]= MDR;
27
In sintesi Nome della fase Tipo R Lw o Sw Beq o Bne jump fetch
IR = Memory[PC] PC = PC + 4 A = Reg [IR[25-21]] dec B = Reg [IR[20-16]] ALUOut = PC + (sign-extend (IR[15-0]) << 2) ALUOut = A op B ALUOut = A + sign-extend if (salto) then PC = PC [31-28] II Exe (IR[15-0]) PC = ALUOut (IR[25-0]<<2) Reg [IR[15-11]] = Load: MDR = Memory[ALUOut] Mem ALUOut or Store: Memory [ALUOut] = B Wb Load: Reg[IR[20-16]] = MDR
28
Cammino dei Dati (Segnali di Controllo)
PC S r c P C W r i t e C o n d P C W r i t e PCWrt R e g D s t R e g W r i t e A L U S r c A I o r D M e m R e a d M e m W r i t e I R W r i t e 1 M J u m p u I n s t r u c t i o n [ 2 5 – ] 2 6 2 8 S h i f t a d d r e s s [ 3 1 - ] x 2 l e f t 2 P C P C [ 3 1 - 2 8 ] I n s t r u c t i o n M R e a d u A d d r e s s [ 2 5 – 2 1 ] r e g i s t e r 1 M u x I n s t r u c t i o n R e a d R e a d A x 1 M e m o r y Z e r o [ 2 – 1 6 ] r e g i s t e r 2 d a t a 1 1 A L U M e m D a t a R e g i s t e r s A L U A L U O u t I n s t r u c t i o n M W r i t e r e s u l t R e a d [ 1 5 – 0] I n s t r u c t i o n u r e g i s t e r d a t a 2 B W r i t e x I n s t r u c t i o n [ 1 5 – 1 1 ] 1 W r i t e 4 1 M d a t a r e g i s t e r u d a t a 2 x 3 M u x A L U M e m o r y 1 c o n t r o l 1 6 3 2 d a t a S i g n S h i f t r e g i s t e r e x t e n d l e f t 2 M e m t o R e g A L U S r c B
29
Cammino dei Dati (Segnali di Controllo)
PC S r c P C W r i t e C o n d P C W r i t e PCWrt R e g D s t R e g W r i t e A L U S r c A I o r D M e m R e a d M e m W r i t e I R W r i t e 1 M J u m p u I n s t r u c t i o n [ 2 5 – ] 2 6 2 8 x S h i f t a d d r e s s [ 3 1 - ] 2 l e f t 2 P C P C [ 3 1 - 2 8 ] I n s t r u c t i o n M R e a d M u A d d r e s s [ 2 5 – 2 1 ] r e g i s t e r 1 u x I n s t r u c t i o n R e a d A x 1 M e m o r y R e a d d a t a 1 Z e r o [ 2 – 1 6 ] r e g i s t e r 2 1 A L U M e m D a t a R e g i s t e r s A L U A L U O u t I n s t r u c t i o n M W r i t e r e s u l t R e a d [ 1 5 – 0] I n s t r u c t i o n u r e g i s t e r d a t a 2 B W r i t e x I n s t r u c t i o n [ 1 5 – 1 1 ] 4 1 M d a t a 1 W r i t e r e g i s t e r u d a t a 2 x 3 M u x M e m o r y 1 1 6 3 2 d a t a A L U S i g n S h i f t r e g i s t e r c o n t r o l e x t e n d l e f t 2 I n s t r u c t i o n [ 5 – ] M e m t o R e g A L U O p A L U S r c B
30
ALU Control Decidere l’operazione da effettuare (ADD, SUB, …) sulla base dei 32 bit della istruzione Esempio: add $8, $17, $18 Formato Istruzione: op rs rt rd shamt funct L’operazione dell’ALU è basata sul tipo di istruzione e sul campo funct
31
ALU Control Se la istruzione è di tipo diverso cosa deve fare l’ALU ?
Esempio: lw $1, 100($2) op rs rt 16 bit offset Gli input all’ALU sono: AND 001 OR 010 add 110 subtract 111 set-on-less-than
32
ALU Control Descriviamo il circuito logico che calcola i 3-bit di controllo dell’ALU dato il tipo di istruzione = lw, sw 01 = beq, = arithmetic dato il campo funct dell’istruzione di tipo R Il campo funct per le istruzioni di tipo R è ADD SUB AND OR SLT Codifica arbitraria sulla base del Codice Operativo
33
ALU Control Utilizziamo la tavola di verità: ALUOp Funct field
Operation ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 X X X X X X 010 1 X X X X X X 110 1 1 1 010 1 1 1 1 110 1 1 1 1 000 1 1 1 1 1 001 1 1 1 1 1 111
34
ALU Control La tavola di verità modificata: ALUOp Funct field
Operation ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 X X X X X X 010 1 X X X X X X 110 1 X X X 010 1 X X X 1 110 1 X X X 1 000 1 X X X 1 1 001 1 X X X 1 1 111
35
ALU Control Realizzazione con circuito logico A L U O p A L U c o n t
b l o c k A L U O p A L U O p 1 O p e r a t i o n 2 F 3 O p e r a t i o n F 2 O p e r a t i o n 1 F ( 5 – ) F 1 O p e r a t i o n F
36
Cammino dei Dati (istruzione lw)
I o r D M e m R e a d M e m W r i t e I R W r i t e R e g D s t R e g W r i t e A L U S r c A M u M x u 1 x 1 Z e r o A L U A L U M r e s u l t u x 1 4 1 M 2 u x 3 M u x 1 1 6 S i g n 3 2 S h i f t A L U e x t e n d l e f t 2 c o n t r o l M e m t o R e g A L U S r c B A L U O p
37
Cammino dei Dati (istruzione add)
I o r D M e m R e a d M e m W r i t e I R W r i t e R e g D s t R e g W r i t e A L U S r c A M u M x u 1 x 1 Z e r o A L U A L U M r e s u l t u x 1 4 1 M 2 u x 3 M u x 1 1 6 S i g n 3 2 S h i f t A L U e x t e n d l e f t 2 c o n t r o l M e m t o R e g A L U S r c B A L U O p
38
Cammino dei Dati (istruzione beq)
1000 I o r D M e m R e a d M e m W r i t e I R W r i t e R e g D s t R e g W r i t e A L U S r c A PC S r c P C W r i t e C o n d P C W r i t e 2 6 2 8 a J u M d m d r p e s s [ 3 1 - ] 1 u x S h i f t I n s t r u c t i o n [ 2 5 – ] l e f t 2 2 P C [ 3 1 - 2 8 ] M M u x u A x 1 1 Z e r o A L U A L U M r e s u l t u B x 1 4 1 M u 2 x 3 M u x 1 1 6 3 2 S i g n S h i f t e x t e n d l e f t 2 M e m t o R e g A L U S r c B A L U c o n t r o l
39
Cammino dei Dati (Datapath)
S h i f t l e 2 P C M u x 1 R g s r W d a I n c o [ 5 – ] 4 3 6 A L U Z m y B D O p - J 8
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.