La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Cammino dei Dati (Datapath)

Presentazioni simili


Presentazione sul tema: "Cammino dei Dati (Datapath)"— Transcript della presentazione:

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


Scaricare ppt "Cammino dei Dati (Datapath)"

Presentazioni simili


Annunci Google