• Non ci sono risultati.

Critical Path

N/A
N/A
Protected

Academic year: 2021

Condividi "Critical Path"

Copied!
32
0
0

Testo completo

(1)

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Architettura degli elaboratori

CPU multiciclo

Marco Tarini

Dipartimento di Scienze Teoriche e Applicate marco.tarini@uninsubria.it

Cosa non va in un processore con CPI=1?

Il tempo di ciclo è lungo

Tutte le istruzioni impiegano lo stesso tempo della più lenta La memoria reale non si comporta come quella ipotizzata

Non riesce a completare letture o scritture in un solo ciclo ragionevolmente breve

CPU multiciclo

Architettura degli elaboratori - 2 -

Arithmetic & Logical

Load

Store

Branch

Critical Path

PC Inst Memory Reg File mux ALU mux setup

PC Inst Memory Reg File mux ALU Data Mem mux setup

PC Inst Memory Reg File mux ALU Data Mem

PC Inst Memory Reg File cmp mux

(2)

Riduzione del tempo di ciclo

Si spezza la rete combinatoria in due parti con un registro in mezzo Il lavoro che prima si faceva in un unico ciclo lento si può fare in due cicli, più veloci

CPU multiciclo

Architettura degli elaboratori - 3 -

storage element

Combinational Logic

storage element

storage element

Combinational Logic (A)

storage element storage element

Combinational Logic (B)

=>

Partizionamento del Datapath

PC

Next PC Operand Fetch Exec Reg. File

Mem Access Data Mem

Instruction Fetch Result Store

ALUctr RegDst

ALUSrc

ExtOp MemWr

nPC_sel RegWr

MemWrMemRd

Control Unit

Qui memorizziamo i dati intermedi (in appositi registri)

(3)

Datapath Multiciclo

CPU multiciclo

Architettura degli elaboratori - 5 -

PC

Next PC Operand Fetch Ext ALU Reg. File

Mem Access Data Mem

Instruction Fetch Result Store

ALUctr RegDst

ALUSrc

ExtOp

nPC_sel RegWr

MemWrMemRd

IR

A B

R

M Reg

File

MemToReg Equal

ALU exec Mem access

CPU multiciclo: vantaggio ulteriore

Nella CPU a 1 ciclo, abbiamo dovuto replicare delle parti del datapath:

memoria:

per LW, in uno stesso ciclo devo

sia leggere una istruzione sia leggere un dato dalla RAM:

Soluzioni (poco realistiche):

o separazione di RAM istruzioni dalla RAM dati:-(

o memoria a doppio bus di uscita (caro!) :-(

ALU:

per BEQ, in uno stesso ciclo devo sia computare la condizione (zero),

sia eseguire una somma calcolare il valore del nuovo PC soluzione:

un addizionatore ulteriore fuori dalla ALU solo per il computo del PC:-(

Nella CPU multiciclo, le stessa memoria e la stessa ALU possono assolvere funzioni diverse in passi diversi! :-)

CPU multiciclo

Architettura degli elaboratori - 6 -

(4)

Progetto di un processore passo passo

1. Istruzioni  Trasferimenti Logici tra Registri 2. Componenti del Datapath

3. RTL + Componenti  Datapath 4. Datapath + RT logici RT fisici 5. RT fisici  Controllo

CPU multiciclo

Architettura degli elaboratori - 7 -

Passo 4: R-rtype (add, sub, . . .)

PC

Next PC Exec Reg. File

Mem Access Data Mem

IR

A B

S

M Reg

File

Equal

Istruz. Trasferimento logico tra Registri ADDU R[rd]  R[rs] + R[rt];

PC  PC + 4

Istruz. Trasferimento fisico tra Registri IR  MEM[PC]

ADDU

A  R[rs]; B  R[rt]

S  A + B

R[rd]  S; PC  PC + 4

(5)

Passo 4: Operazione logica con valore immediato

Istruz. Trasferimento logico tra Registri

ORi R[rt]  R[rs] OR zx(Im16);

PC  PC + 4

Istruz. Trasferimento fisico tra Registri

IR  MEM[PC]

ORi

A  R[rs]; B  R[rt]

S  A or ZeroExt(Im16) R[rt]  S; PC  PC + 4

CPU multiciclo

Architettura degli elaboratori - 9 -

PC

Next PC Exec Reg. File

Mem Access Data Mem

IR

A B

S

M Reg

File

Equal

Passo 4: Load

Istruz. Trasferimento logico tra Registri

LW R[rt]  MEM[R[rs] + sx(Im16)]

Istruz. Trasferimento fisico tra Registri

IR  MEM[PC]

LW

A  R[rs]; B  R[rt]

S  A+SignExt(Im16) M  Mem[S]

R[rt]  M; PC  PC + 4

CPU multiciclo

Architettura degli elaboratori - 10 -

PC

Next PC Exec Reg. File

Mem Access Data Mem

IR

A B

S

M Reg

File

Equal

(6)

Passo 4: Store

Istruz. Trasferimento logico tra Registri SW MEM[ R[rs] + sx(Im16) ]  R[rt];

Istruz. Trasferimento fisico tra Registri IR  MEM[PC]

SW

A  R[rs]; B  R[rt]

S  A+SignExt(Im16) Mem[S]  B; PC  PC + 4

CPU multiciclo

Architettura degli elaboratori - 11 -

PC

Next PC Exec Reg. File

Mem Access Data Mem

IR

A B

S

M Reg

File

Equal

Passo 4: Branch

Istruz. Trasferimento logico tra Registri BEQ if R[rs] == R[rt]

then PC  PC+4+ sx(Im16) || 00 else PC  PC+4

Istruz. Trasfer. fisico tra Registri IR  MEM[PC]

BEQ|Eq PC  PC + sx(Im16) || 00 BEQ|/Eq PC  PC + 4

PC

Next PC Exec Reg. File

Mem Access Data Mem

IR

A B

S

M Reg

File

Equal

Si ipotizza che il banco dei registri sia capace di valutare

l’uguaglianza di Rs e Rt

(7)

Datapath multiciclo

CPU multiciclo

Architettura degli elaboratori - 14 -

Memory Din Adr

Dout MemWr

ALU

ALUOp

InstructionReg

IRWr

Reg File Ra

Rw busW 5 Rb

5 busA

busB RegWr

Rs Rt Rt

Rd

PCWr RegDst ALUSelA

PC

MemtoReg Extend

ExtOp

4

Imm 16

ALUSelB

0

Zero PCSrc IorD

ALU Out

A B

MDR

[25:0]

<< 2

1

1 0

1 0

1 0

1 0

1 0

3 2

<< 2

Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate

Un altro modo di progettare una CPU

(8)

Ricorda: la CPU si connette alla memoria centrael attraverso un Bus (esterno)

Architettura degli elaboratori

Memory BU

S

CPU

CPU a Singolo Bus: note 1/2

Idea:

usare un Bus interno alla CPU per connettere tutti i suoi componenti I registri utente R0…R31

altri registri di uso interno (PC incluso) la ALU

la Control Unit…

Ciascuno dei passi in cui è scomposta ogni istruzione dell’Instruction Set viene formulato come un trasferimento di valore fra i registri

(compreso quello che avviene attraverso la ALU)

attraverso three state buffers che connettono registri al BUS, pilotati da comandi provenienti dalla CU,

pilotiamo la copia da un registro ad un altro

L’interazione con la memoria centrale avviene attraverso degli appositi registri (dato e address: MDR MAR), cablati sul BUS esterno

(9)

CPU a Singolo Bus: note 2/2

Ad ogni ciclo, solo UN registro può essere immesso sul CPU BUS Per gli altri registri, l’ordine Routvale 0

Il valore di quel registro viene trasferito su tutti i registri in cui Rin= 1 Nota: tutti i registri sono sincronizzati in scrittura con il clock.

Limitazione: dato che abbiamo un unico bus interno, ad ogni ciclo di clock potremmo copiare il contenuto di UN SOLO registro

(in uno o più altri registri, o/e nella ALU, etc)

CPU multiciclo

Architettura degli elaboratori - 19 -

Datapath a singolo bus CPU

CPU multiciclo

Architettura degli elaboratori - 20 -

ALU PC MAR

MDR

Memory IR

ordini . . .

Temp Addr

Data

V

Z 4

select

ALU Op

BUS

Control Unit

CPU BUS

Imm16ext Realistica

(possibile gerarchia)

e altre estensioni

R31 R0 R1

(10)

Controllo del bus interno

CPU multiciclo

Architettura degli elaboratori - 21 -

Ri V

Z

CPU BUS

Riin

Riout Vin

Zin

Zout

IRin IR

PC PCin

MAR MARin

alla ALU dalla ALU

alla CU

MDR MDRin

MDRout PCout

dalla Immout CU

Immediate value

Uso del bus CPU-RAM

CPU BUS

MAR MARin

MDR MDRin

MDRout

BUS

Memory addr

data in data out

(11)

Bus che connette la CPU alla RAM:

note

Consiste di 3 fasci di connessioni:

Address(qui 32 bits – se 32 è lunghezza della parola) Connette l’apposito registro MAR

alla porta ADDR del banco di memoria

Data(32 bits – se 32 è lunghezza della parola)

Connette il campo Data della memoria a MDR, e viceversa.

Percorso in un verso o l’altro (o nessuno dei due)

a seconda di appositi tri-state buffers controllati dal banco di memoria (detti Output Enable e Chip Select, come sappiamo)

Controllo(qui 3 bits)

i segnali read and write dalla CU, il segnale MFC verso la CU (vedi dopo)

fra le altre cose, determinano l’Output Enable e il Chip Select

E’ questa la composizione di tutti i tipici bus

CPU multiciclo

Architettura degli elaboratori - 23 -

Interfaccia della CPU CPU

CPU multiciclo

Architettura degli elaboratori - 24 -

ALU PC MAR

MDR

Memory IR

ordini . . .

Temp Addr

Data

V

Z 4

select

ALU Op

BUS

Control Unit

CPU BUS

Imm16ext

e altre estensioni

R31 R0 R1

(12)

Registri utente

CPU multiciclo

Architettura degli elaboratori - 25 -

ALU PC MAR MDR

Memory

IR ordini

. . .

Temp Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Control Unit

MUX

CPU BUS

Imm16ext

R31 R0 R1

CPU

Registri utente

Sono gli unici “visibili” al programmatore.

Cioè quelli che compaiono nelle istruzioni dell’Instruction Set.

attraverso le istruzioni, il programmatore ne controlla il contenuto.

(o, più spesso, il compilatore,

quando il programmatore scrive codice ad alto livello) Sono quei 32 registri R0…R31 previsti dal MIPS

Nel nostro schema precedente, erano contenuti nel Register File In questo schema, è più comodo gestirli come 32 registri separati Dall’esterno vengono spesso chiamati semplicemente «i registri»

(nei contesti in cui CPU la usiamo, piuttosto che chiederci come sia fatta)

Gli altri registri dello schema sono di uso interno alla CPU:

servono all’esecuzione delle istruzioni

I registri utente non devono essere “sporcati” nell’esecuzione.

(13)

Registri di uso interno

CPU multiciclo

Architettura degli elaboratori - 27 -

ALU PC MAR MDR

Memory

IR ordini

. . .

Temp Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Control Unit

MUX

CPU BUS

Imm16ext

R31 R0 R1

CPU

Registri di uso interno (non utente)

Hanno ruoli specifici (i nomi sono, naturalmente, arbitrari) PC (Program Counter):

contiene l’indirizzo della prossima istruzione IR (Instruction Register):

contiene l’istruzione corrente MAR (Memory Address Register):

contiene l’indirizzo di memoria centrale a cui compiere l’accesso (in lettura o scrittura)

MDR (Memory Data Register):

contiene la parola letta dalla memoria o da scrivere in memoria VeZ:

il (potenziale) primo parametro della ALU, e il suo risultato Temp:

registro temporaneo generico

Alcuni solo scritti dal BUS, altri sia scritti che letti (e sono cablati di conseguenza sui Bus)

CPU multiciclo

Architettura degli elaboratori - 28 -

(quali? Vedi lo schema)

(14)

Unità di controllo

CPU multiciclo

Architettura degli elaboratori - 29 -

ALU PC MAR MDR

Memory

IR ordini

. . .

Temp Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Control Unit

MUX

CPU BUS

Imm16ext

R31 R0 R1

CPU

Unità di controllo

clock

IR

next step WMFC

dalla memoria MFC

Step No go

bit

S R

Q

dalla ALU equal

read write alla memoria

Logica di controllo (combinatorio)

alla ALU

op

al datapath

L

(15)

Logica (combinatoria!) dell’unità di controllo

Prende in input:

Istruzione corrente Comprende Op/Func, indice registri, imm16…

Numero del passo corrente Ogni istruz = tanti passi Bits di esito della ALU

Es: zero: esito del confronto Determina se il salto condizionato avviene o no

CPU multiciclo

Architettura degli elaboratori - 31 -

Produce in output ordini/segnali…:

…verso la memoria RAM Read, Write

(passeranno attraverso il BUS esterno)

…verso la ALU

Quale op, (e quale input), usare…

…da riversare sul BUS interno valore appropriatamente esteso di Imm

…di controllo del BUS interno Tutti i valori dei three state buffer Determinano quale registro viene copiato in quale/i registro/i

…verso la Control Unit stessa Il numero del prossimo passo!

Il comando WMFC

«Wait (for) MFC»

Se 1: resetta il bit “Go”, mettendo in pausa la CU fino a quando la RAM non la risveglia mandando MFC

«Memory Function Completed»

Temporizzazione: lettura da memoria

CPU multiciclo

Architettura degli elaboratori - 32 -

Clock

1° ciclo 2° ciclo 3° ciclo

MARin Indir.

read R/W MDRinE

4° ciclo 5° ciclo

dato

MFC MDRout

attesa della lettua !

(16)

Come implementare l’attesa variabile della memoria

L’accesso in memoria centrale può richiedere un numero variabile di cicli, durante i quali la CU deve rimanere in attesa / in pausa

Il numero esatto dipende da quale caso si verifica -- per es : cache hitin L1: nessun ciclo di attesa

cache miss in L1, cache hit in L2: 3 cicli di attesa cache miss in L1, cache miss in L2: 10 cicli di attesa Come implementare questo comportamento?

Introduciamo il bit di «GO»: (implementazione: un RS-latch!)

1: aggiorna il passo con il prossimo valore (quando il clock scatta) 0: freeze: non aggiornarlo  tutto rimane fermo allo stato attuale Quando la CU si appresta a utilizzare la memoria, manda WFCP

… il quale resetta il bit di «GO»  la CU si mette in pausa

Appena la memoria ha terminato l’operazione, manda il segnale MFC

…il quale setta (nb: asinconamente!) il bit di «GO»

Qualsiasi numero di cicli di clock può essere passato nel frattempo

CPU multiciclo

Architettura degli elaboratori - 33 -

Esecuzione di istruzione R-rtype (add, sub, . . .)

ADDU: Trasferimento Logico tra Registri R[rd]  R[rs] + R[rt]; PC  PC + 4 ADDU: Trasferimento fisico tra Registri

Esempio: rd=R3, rs=R2, rt=R1 Passo

(ciclo di clock)

Comandi Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[PC];

3 MDRout, IRin IR ← MDR;

4 R2out, Vin V ← R2;

5 R1out, select V, add, Zin Z ← R1 + V;

6 Zout, R3in, end R3 ← Z; goto 0

(17)

Simulazione passo 1

PCout, MARin, read, select 4, add, Zin

CPU multiciclo

Architettura degli elaboratori - 35 -

ALU PC MAR

Memory MDR IR

RD

ordini . . .

R1 Addr

Data

V

Z

A B

R 4

Select 4

ADD

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

Read

Legge la parola all’indirizzo 1000, dove c’è l’istruzione

add R3 R2 R1

1000

1000

1004

Simulazione passo 2 (inizio) Zout, PCin, Vin, WMFC

CPU multiciclo

Architettura degli elaboratori - 36 -

ALU PC MAR

MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

1004 1004

1004

(18)

Simulazione passo 2 (conclusione) Zout, PCin, Vin, WMFC

CPU multiciclo

Architettura degli elaboratori - 37 -

ALU PC MAR

MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

Istruzione add R3 R2 R1

MFC Inviato quando la

lettura è completata

Simulazione passo 3 MDRout, IRin

ALU PC MAR MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

Istruzione

add R3 R2 R1 Istruzione

add R3 R2 R1

(19)

Simulazione passo 4

R2out, Vin

CPU multiciclo

Architettura degli elaboratori - 39 -

ALU PC MAR MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

23 23

Simulazione passo 5

R1out, select V, add, Zin

CPU multiciclo

Architettura degli elaboratori - 40 -

ALU PC MAR MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

Select V

Add

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

15 23

38

(20)

Simulazione passo 6

Zout, R3in, end

CPU multiciclo

Architettura degli elaboratori - 41 -

ALU PC MAR MDR

Memory

IR ordini

. . .

R1 Addr

Data

V

Z

A B

R 4

select

Controllo ALU

BUS

Decodifica e controllo

MUX

R2

R3

CPU BUS

38

38

Esecuzione di istruzione R-rtype (add, sub, . . .)

ADDU: Trasferimento Logico tra Registri R[rd]  R[rs] + R[rt]; PC  PC + 4 ADDU: Trasferimento fisico tra Registri

Esempio: rd=R3, rs=R2, rt=R1 Passo

(ciclo di clock)

Comandi Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[PC];

3 MDRout, IRin IR ← MDR;

4 R2out, Vin V ← R2;

5 R1out, select V, add, Zin Z ← R1 + V;

6 Zout, R3in, end R3 ← Z; goto 0

Qui c’è un salto implicito

end indica che si torna al fetch

(21)

Esecuzione di un’istruzione di operazione logica con valore immediato

ORI: Trasferimento Logico tra Registri

R[rt]  R[rs] or ZeroExt(Im16); PC  PC + 4 ORI: Trasferimento Fisico tra Registri

Esempio: rs=R2, rt=R1 Passo

(ciclo di clock)

Comandi Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[MAR];

3 MDRout, IRin IR ← MDR;

4 ZeroExtImmout, Vin V ← ZeroExt(IR[16..31]);

5 R2out, select V, or, Zin Z ← R2 OR V;

6 Zout, R1in, end R1 ← Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 43 -

Esecuzione di un’istruzione di salto condizionato

BEQ: Trasferimento Logico tra Registri if R[rs] == R[rt]

then PC  PC + 4 + sx(Im16) || 00 else PC  PC + 4 BEQ: Trasferimento fisico tra Registri

Esempio: rs=R2, rt=R1

Passo Azione Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[MAR];

3 MDRout, IRin IR ← MDR;

4 R2out, Vin V ← R2;

5 R1out, select V, sub, jumponzero 7 if (V-R1==0) goto 7;

6 end goto 1

7 SignExtImmoutSHL2, Vin V ← SignExt(IR[16..31]) << 2;

8 PCout, select V, add, Zin Z ← PC+V;

9 Zout, PCin, end PC←Z;

CPU multiciclo

Architettura degli elaboratori - 44 -

salto nella sequenza di controllo

(22)

Esecuzione di un’istruzione Load

LW: Trasferimento Logico tra Registri

R[rt]  MEM(R[rs] + sx(Im16); PC  PC + 4 LW: Trasferimento fisico tra Registri

Esempio: rs=R1, rt=R2

Passo Azione Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[MAR];

3 MDRout, IRin IR ← MDR;

4 SignExtImmout, Vin V ← SignExt(IR[16..31]);

5 R1out, select V, add, Zin Z ← R1 + V

6 Zout, MARin, read, WMFC MAR ← Z; MDR ← MEM[MAR]

7 MDRout, R2in, end R2 ← MDR; goto 0

CPU multiciclo

Architettura degli elaboratori - 45 -

Esecuzione di un’istruzione Store

SW: Trasferimento Logico tra Registri

MEM(R[rs] + sx(Im16)  R[rt]; PC  PC + 4 SW: Trasferimento fisico tra Registri

Esempio: rs=R1, rt=R2

Passo Azione Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[MAR];

3 MDRout, IRin IR ← MDR;

4 R2out, MDRin R2 ← MDR;

5 SignExtImmout, Vin V ← SignExt(IR[16..31]);

6 R1out, select V, add, Zin Z ← R1 + V

7 Zout, MARin, write, WFMC MAR ← Z; MEM[MAR] ←MDR

8 end goto 0

(23)

Esecuzione di un’istruzione di salto non condizionato relativo

JMP: Trasferimento Logico tra Registri PC  PC + 4 + sx(Im16) || 00

JMP: Trasferimento Fisico tra Registri:

Passo (ciclo di clock)

Azione Effetti

1 PCout, MARin, read, select 4, add, Zin MAR ← PC; Z ← PC+4;

2 Zout, PCin, Vin, WMFC PC←Z; V←Z; MDR←MEM[MAR];

3 MDRout, IRin IR ← MDR;

4 SignExtImmSHL2out, select V, add, Zin Z ← V + SignExt(IR[16..31])<<2;

5 Zout, PCin, end PC←Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 47 -

CPU a Tre Bus

Idea:

se incrementiamo il numero di BUS interni fino a K,

allora ad ogni ciclo di clock possiamo eseguire contemporaneamente K trasferimenti di valore

Ciascun trasferimento: da un registro ad uno o più registri (NB: registri utente o di uso interno, non fa differenza) Meno cicli per istruzione!

CPU multiciclo

Architettura degli elaboratori - 48 -

(24)

CPU a Tre Bus

Progettiamo una CPU a tre bus (A, B, C)

Scelte: possiamo decidere di cablare ciascun registro

(utente o interno) in modo da poter leggere da alcuni dei bus e/o scrivere su altri.

Es: scegliamo che ogni registro utente Ri viene cablato per poter scrivere sui BUS A e/o BUS B, e/o leggere da BUS C

CPU multiciclo

Architettura degli elaboratori - 49 -

BUS A

Ri Riin

RioutA

BUS C

RioutB

BUS B

Datapath a 3 bus (esempio)

ALU

MAR IR 4

Addr

PC

MUX

Data MDR

BUS A

R00..31

BUS C

imm

BUS B

alla CU

(25)

Esempio di CPU a tre bus:

note su alcune delle scelte fatte 1/2

I registri utente leggono da C, scrivono in A o B

La ALU prende un input dal Bus A, uno da Bus B, e scrive nel Bus C Nessun’altro scrive nel Bus C!

Conseguenza: per scrivere in un registro, devo sempre passare dalla ALU.

A questo scopo, la ALU avrà Operazioni:

«R=A» («Passa A») il Risultato è il primo operatore, inalterato.

«R=B» («Passa B») il Risultato è il secondo operatore, inalterato.

Coseguenza 2: non ho bisogno di Three-state buffers per isolare l’Uscita della ALU: consento sempre alla ALU di riversare l’uscita sul Bus C. (quindi, neanche nell’entrata)

CPU multiciclo

Architettura degli elaboratori - 51 -

Datapath a 3 bus: i three state-buffer

CPU multiciclo

Architettura degli elaboratori - 52 -

ALU

MAR IR 4

Addr

PC

MUX

Data MDR

BUS A

R00..31

BUS C

BUS B

alla CU imm

(26)

Esempio di CPU a tre bus:

note su alcune delle scelte fatte 2/2

IR, PC, MAR, MDR: possono leggere solo dal BUS C

(MDR ovviamente anche dal Bus esterno che connette alla memoria) MDR scrive sui Bus A o B

IR scrive in A la parte «immediate»

(che viene opportunamente espansa da appositi blocchi combinatori, pilotati dalla CU – omessi nel disegno)

Vediamo con quali passi eseguire i comandi su questa architettura…

CPU multiciclo

Architettura degli elaboratori - 53 -

Datapath a 3 bus: copiare in un registro il risultato di una op fra due registri

ALU

MAR IR 4

Addr

PC

MUX

Data MDR

BUS A

R00..31

BUS C

alla CU

Possibile in un solo ciclo!

BUS B

imm

(27)

Datapath a 3 bus: copiare un registro (es MDR) in un altro registro (es R01)

CPU multiciclo

Architettura degli elaboratori - 55 -

ALU

MAR IR 4

Addr

PC

MUX

Data MDR

BUS A

R00..31

BUS C

alla CU

Devo sempre passare per la ALU (un solo ciclo

comunque)

BUS B

imm

«Passa B»

cioè

«Res = B»

Datapath a tre bus: velocità di esecuzione

Add R3, R4, R5 Datapath a un bus

1. PCout, MARin, read,select 4, add, Zin 2. Zout, PCin, Vin, WMFC

3. MDRout, IRin 4. R3out, Vin

5. R4out, select V, add, Zin 6. Zout, R5in

6 cicli di clock

Add R3, R4, R5 Datapath a tre bus

1. PCoutB, R=B, MARin, read 2. PCoutB, R=B+4, PCin, WMFC 3. MDRoutB, R=B, IRin

4. R3outA, R4outB, add, R5in

4 cicli di clock !!!

CPU multiciclo

Architettura degli elaboratori - 56 -

(28)

Datapath a tre bus: velocità di esecuzione

ORi R5, R3, imm Datapath a un bus

1. PCout, MARin, read,select 4, add, Zin 2. Zout, PCin, Vin, WMFC

3. MDRout, IRin 4. R3out, Vin

5. ZeroExtImmout, select V, add, Zin 6. Zout, R5in

6 cicli di clock

Add R3, R4, R5 Datapath a tre bus

1. PCoutB, R=B, MARin, read 2. PCoutB, R=B+4, PCin, WMFC 3. MDRoutB, R=B, IRin

4. ZeroExtImmoutA, R3outB, or, R5in

4 cicli di clock !!!

CPU multiciclo

Architettura degli elaboratori - 57 -

Unità di controllo

clock

IR

next step WMFC

dalla memoria MFC

Step No go

bit

S R

Q

dalla ALU equal

read write alla memoria

Logica di controllo (combinatorio)

alla ALU

op

al datapath

L

(29)

Unità di controllo come macchina a stati finiti

Possiamo vedere l’unità di controllo come una FSM:

Il numero di passo: lo stato attuale OpCode, Esiti: gli input

Ordini al datapath: gli output

Il prossimo passo: lo stato successivo La tabella di transizioni

specifica, per ogni stato e per ogni input, lo stato successivo e l’output

CPU multiciclo

Architettura degli elaboratori - 66 -

Tabella delle transizioni (1/2)

Passo Opcode Esiti Controlli generati Passo

successivo

0 X X PCout, MARin, read, select 4, add, Zin 1

1 X X Zout, PCin, Vin, WMFC 2

2 X X MDRout, IRin 3

3 ADDU X Rs_out, Vin 4

4 ADDU X Rt_out, select V, add, Zin 5

5 ADDU X Zout, Rd_in 0

3 ORI X ZeroExtImmout, Vin 4

4 ORI X Rs_out, select V, or, Zin 5

5 ORI X Zout, Rt_in 0

3 BEQ X Rs_out, Vin 4

4 BEQ /zero Rt_out, select V, sub 0

4 BEQ zero Rt_out, select V, sub 5

5 BEQ X SignExtImmoutSHL2, Vin 6

6 BEQ X PCout, select V, add, Zin 7

7 BEQ X Zout, PCin 0

CPU multiciclo

Architettura degli elaboratori - 67 -

(30)

Tabella delle transizioni (1/2) - alternativa

Passo Opcode Esiti Controlli generati Passo

successivo

0 X X PCout, MARin, read, select 4, add, Zin 1

1 X X Zout, PCin, Vin, WMFC 2

2 X X MDRout, IRin 3

3 Rtype X Rs_out, Vin 4

4 Rtype X Rt_out, select V, funct, Zin 5

5 Rtype X Zout, Rd_in 0

3 ORI X ZeroExtImmout, Vin 4

4 ORI X Rs_out, select V, or, Zin 5

5 ORI X Zout, Rt_in 0

3 BEQ X Rs_out, Vin 4

4 BEQ /zero Rt_out, select V, sub 0

4 BEQ zero Rt_out, select V, sub 5

5 BEQ X SignExtImmoutSHL2, Vin 6

6 BEQ X PCout, select V, add, Zin 7

7 BEQ X Zout, PCin 0

CPU multiciclo

Architettura degli elaboratori - 68 -

Tabella delle transizioni (2/2)

Passo Opcode Esiti Controlli generati Passo

successivo

3 JMP X SignExtImmSHL2out, add, Zin 4

4 JMP X Zout, PCin 0

3 LW X MDRout, IRin 4

4 LW X SignExtImmout, Vin 5

5 LW X Rs_out, select V, add, Zin 6

6 LW X Zout, MARin, read, WMFC 7

7 LW X MDRout, Rt_in 0

3 SW X Rt_out, MDRin 4

4 SW X SignExtImmout, Vin 5

5 SW X Rs_out, select V, add, Zin 6

6 SW X Zout, MARin, write, WFMC 0

(31)

Tabella delle transizioni: note

I passi 0-1-2 implementano l’instruction fetch e l’aggiornamento del PC a PC+4

Non dipendono dal Opcode (l’IR non è ancora aggiornato!) Ogni passo 3 è l’inizio di un’Istruzione dell’Instruction Set (è il primo passo in cui IR è disponibile!)

Quando il passo successivo è 0, l’istruzione corrente è finita.

Si ricomincia dal fetch dell’istruzione successiva.

Negli altri casi, il passo successivo è di solito passo corrente +1 Il passo 4 di BEQ ha, come passo successivo, due valori diversi a seconda del bit di esito (dalla ALU) «zero»

A seconda di quale dei due casi si applica (zero o non zero), si effettua il salto (aggiornamento del PC nei passi 5-7) oppure no.

Il bit zero significa:

« è zero la differenza fra i due registri che ho sottratto? »…

per testare l’ugualianza due registri,

si sottrae uno all’altro e si vede se il risultato è zero

CPU multiciclo

Architettura degli elaboratori - 70 -

Realizzazione della logica della UC

Si tratta di un circuito combinatorio che prende in input : passo, opcode, esiti,

e restituisce in output:

prossimo-passo, ordini-al-datapath

La sua tabella di verità è la tabella delle transizioni vista

Possiamo progettarlo come un qualsiasi altro circuito combinatorio … (come abbiamo imparato nelle lezioni precedenti)

Alternativa:

microprogramming ! (vedi dopo)

CPU multiciclo

Architettura degli elaboratori - 72 -

(32)

Esempio di circuito per la

generazione di segnale di controllo 1/1

CPU multiciclo

Architettura degli elaboratori - 73 -

D E C

storew addu load beq

D E

C …

OPCODE

STEP NO.

P0

3 6

P1 P2

ESITI ALU

Esempio di circuito per la

generazione di segnale di controllo 2/2

Zinè emesso:

Al passo 0 sempre Al passo 4 dell’istruzione addu tra registri

Al passo 5 dell’istruzione storew

Zin

P0 P4 addu P5 storew

...

...

Riferimenti

Documenti correlati

[r]

108 delle norme di attuazione e coordinamento (D.Lgs. 271/89, capo VIII, attinente le Disposizioni relative alle indagini preliminari), infine, prevede che “con regolamen- to

Tra i laureati del 2015 a cinque anni dalla laurea, il lavoro autonomo coinvolge il 38,7% degli occupati (valore in diminuzione di 2,0 punti percentuali rispetto a

Il tasso di disoccupazione, a cinque anni dalla laurea, coinvolge il 7,5% del complesso dei laureati a ciclo unico del 2012, con valori massimi raggiunti dai laureati

Il tasso di disoccupazione, a cinque anni dalla laurea, coinvolge il 6,7% del complesso dei laureati a ciclo unico del 2014, con valori massimi raggiunti dai laureati

Tra i laureati del 2013 a cinque anni dalla laurea, il lavoro autonomo coinvolge il 43,5% degli occupati (valore in diminuzione di 1,1 punti percentuali rispetto a

Documento Numero Fattura Data Fattura Fornitore Importo Totale Data Scadenza Un..

Documento Numero Fattura Data Fattura Fornitore Importo Totale Data Scadenza Un..