• Non ci sono risultati.

R1out, select V, add, Zin

N/A
N/A
Protected

Academic year: 2021

Condividi "R1out, select V, add, Zin"

Copied!
25
0
0

Testo completo

(1)

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

ADDU: Semantica:

R[rd]  R[rs] + R[rt]; PC  PC + 4 Esempio: rd=R3, rs=R2, rt=R1 Passo

(ciclo di clock)

Comandi Passo

succ.

Effetti

3 R2out, Vin 4 V ← R2;

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

5 Zout, R3in 0 R3 ← Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 53 -

Ritorno al fetch

Simulazione passo 3

R2out, Vin

CPU multiciclo

Architettura degli elaboratori - 54 -

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

(2)

Simulazione passo 4

R1out, select V, add, Zin

CPU multiciclo

Architettura degli elaboratori - 55 -

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

Simulazione passo 5

Zout, R3in, end

CPU multiciclo

Architettura degli elaboratori - 56 -

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

(3)

Esecuzione di un’istruzione di operazione logica con valore immediato

Semantica di ORI:

R[rt]  R[rs] or ZeroExt(Im16); PC  PC + 4 Esempio con rs=R2, rt=R1:

CPU multiciclo

Architettura degli elaboratori - 57 -

Passo: Comandi Passo

succ.

Effetti

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

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

5 Zout, R1in 0 R1 ← Z; goto 0

Simulazione passo 3

ZeroExtImmout, Vin

CPU multiciclo

Architettura degli elaboratori - 58 -

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

(4)

Dettagli implementativi

(omessi altrove per semplicità)

CPU multiciclo

Architettura degli elaboratori - 59 -

IR ordini

. . .

R1 Control

Unit

R2

R3

ZeroExtImm_out

ALU PC

MAR MDR

Memory

Addr Data

V

Z

A B

R 4

select

Controllo ALU

BUS

MUX

CPU BUS

32

[26..31]

16 IMM

6

ExtSignExtZero

ZeroExtImm_out SignExtImm_out

IR

[0..16]

32

CPU BUS 32

Control Unit

OPCODE

Esecuzione di un’istruzione Load

Semantica di LW

R[rt]  MEM(R[rs] + sx(Im16); PC  PC + 4 Esempio: rs=R1, rt=R2

CPU multiciclo

Architettura degli elaboratori - 60 -

Passo Azione Passo

Succ

Effetti

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

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

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

6 MDRout, R2in 0 R2 ← MDR; goto 0

(5)

Esecuzione di un’istruzione Store

Semantica di SW:

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

PC  PC + 4 Esempio con rs=R1, rt=R2:

Passo Azione Passo

Succ

Effetti

3 R2out, MDRin 4 R2 ← MDR;

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

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

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

goto 0

CPU multiciclo

Architettura degli elaboratori - 61 -

Esecuzione di un’istruzione di salto non condizionato relativo

Semantica di JMP

PC  PC + sx(Im16) || 00

cioè il Program Counter salta a Im16istruzioni dopo quella attuale, (o prima, se Im16è negativo)

Passo Azione Passo

Succ

Effetti

3 PCin, Vout 4 V ← PC

4 SignExtImmSHL2out,

select V, add, Zin

5 Z ← V + SignExt(IR[16..31])<<2;

5 Zout, PCin 0 PC←Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 62 -

(6)

Esecuzione di un’istruzione di salto non condizionato relativo: Ottimizzazione 1/2

3 PCout, Vin 4 V ← PC

4 SignExtImmSHL2out, select V, add, Zin

5 Z ← V +

SignExt(IR[16..31])<<2;

5 Zout, PCin 0 PC←Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 63 -

Passo (ciclo di clock)

Comandi Passo

Succ.

Effetti:

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

1 MAR ← PC;

Z ← PC+4;

1 Zout, PCin, Vin, WMFC

2 PC←Z;

MDR←MEM[MAR];

2 MDRout, IRin 3 IR ← MDR;

F E T C H E X E C .

Esecuzione di un’istruzione di salto non condizionato relativo: Ottimizzazione 2/2

3 PCout, Vin 4 V ← PC

3 SignExtImmSHL2out, select V, add, Zin

4 Z ← V +

SignExt(IR[16..31])<<2;

4 Zout, PCin 0 PC←Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 64 -

Passo (ciclo di clock)

Comandi Passo

Succ.

Effetti:

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

1 MAR ← PC;

Z ← PC+4; V ← PC 1 Zout, PCin,

WMFC

2 PC←Z;

MDR←MEM[MAR];

2 MDRout, IRin 3 IR ← MDR;

F E T C H

Nota: il fetch (comune a tutte le istruzioni) viene modificato per ottimizzare questa istruzione (un passo in meno). No problem: le altre istruzioni possono sovrascrivere V se ne hanno bisogno

E X E C .

(7)

Esecuzione di un’istruzione di salto non condizionato relativo: variazione

Mettiamo di che sia richiesta una

sematica leggermennte diversa per il comando JMP PC  PC + 4+ sx(Im16) || 00

(cioè il salto è espresso relativamente NON alla posizione dell’istruzione attuale, ma di quella dell’istruzione successiva)

CPU multiciclo

Architettura degli elaboratori - 65 -

3 SignExtImmSHL2out,

select V, add, Zin 4 Z ← V +

SignExt(IR[16..31])<<2;

4 Zout, PCin 0 PC←Z; goto 0

Passo Comandi Passo

Succ.

Effetti:

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

1 MAR ← PC;

Z ← PC+4;

1 Zout, PCin, Vin, WMFC

2 PC←Z; V ← Z

MDR←MEM[MAR];

2 MDRout, IRin 3 IR ← MDR;

F E T C H E X E C .

Esecuzione di un’istruzione di salto condizionato

Semantica di BEQ:

if R[rs] == R[rt]

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

Esempio con rs=R2, rt=R1 :

Passo Azione Passo

successivo

Effetti

3 R2out, Vin 4 (sempre) V ← R2;

4 R1out, select V, sub 0, se esito \zero

if (V - R1 != 0) goto 0;

5, se esito zero

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

6 PCout, select V, add, Zin 7 (sempre) Z ← PC+V;

7 Zout, PCin 0 (sempre) PC←Z; goto 0

CPU multiciclo

Architettura degli elaboratori - 67 -

(8)

Note

Nel passo 4 di BEQ abbiamo una scelta:

quale sia il prossimo passo da eseguire dipende dai bit di esito emessi dalla ALU!

La CU receve i bit di esito (dalla ALU) e produce il passo successive di conseguenza

Qundi, nel caso generale,

la produzione dell’indice del passo successivo dipende dai bit di esito Manderemo i bit di esito della ALU alla CU

CPU multiciclo

Architettura degli elaboratori - 68 -

Unità di controllo

CPU multiciclo

Architettura degli elaboratori - 69 -

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

3

3 Op

code

(9)

Logica (combinatoria!) dell’unità di controllo

Prende in input:

Istruzione corrente In particolare, OpCode 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 - 70 -

Produce in output ordini/segnali…:

Read / Write per la memoria RAM indirzzati alla RAM

(passeranno attraverso il BUS esterno) La Op della ALU

Quale op deve calcolare la ALU…

I mutex del datapath ALU Bit di controllo del BUS interno

Tutti i valori dei three state buffer Determinano quale registro viene copiato in quale/i registro/i Quale sia il prossimo passo Il comando WMFC

«Wait (for) MFC»

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 - 73 -

(10)

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 - 74 -

Tabella delle transizioni (2/2)

CPU multiciclo

Architettura degli elaboratori - 75 -

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

(11)

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 norma 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 - 76 -

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 - 77 -

(12)

Unità di controllo cablata

CPU multiciclo

Architettura degli elaboratori - 78 -

clock

IR

next step WMFC

dalla memoria MFC

Step No go

bit

S R

Q

dalla ALU esiti

read write alla memoria

alla ALU

op

al datapath

L

Op code

Circuito combinatorio

6 3

3

3

Circuito per la generazione di segnale di controllo: passo preliminare

CPU multiciclo

Architettura degli elaboratori - 79 -

D E C

storew addu load beq

D E

C …

OPCODE

STEP NO.

P0

3 6

P1 P2

ESITI ALU

(13)

Esempio di circuito per la

generazione di segnale di controllo

Zinè emesso:

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

Al passo 5 dell’istruzione storew

CPU multiciclo

Architettura degli elaboratori - 80 -

Zin

P0 P4 addu P5 storew

... ...

Esempio di circuito per la

generazione di segnale di controllo

Rs_out vuol dire che si deve propagare sul bus il contenuto del registro indicato dai bit 21..25 dell’IR

Rs_out viene emesso al passo 4 di ADDU, al passo 5 di ORI, al passo 4 di BEQ, al passo 5 di LW, al passo 6 di SW

CPU multiciclo

Architettura degli elaboratori - 82 -

P4 addu P5 ori

...

rs 21 25

IR

Enable

DEC

R0out

R31out

. . .

...

Rs_out Identità

di Rs

(14)

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

Architettura degli elaboratori

Unità di controllo microprogrammata

Marco Tarini

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

Progetto del controllore: microprogrammazione

Come nell’esempio che abbiamo visto, la tabella delle transizioni dell’UC di un processore è generalmente molto ben strutturata Idea:

memorizziamo questa tabella in una piccola memoria ROM Invece di calcolare l’output a partire dall’input con un circuito,

usiamo l’input come indice a cui accedere alla tabella, a cui troviamo gli output corrispondenti

In pratica scrivere questa tabella significa scrivere un piccolo programma (un «microprogramma») per ciascun istruzione dell’istruction set

microprogrammazione un'alternativa

alla logica di controllo implementata con circuito combinatorio, che in contrasto è detta «cablata» o «hard-wired»

Unità di controllo microprogrammata

Architettura degli elaboratori - 84 -

(15)

Microprogrammazione: terminologia

Micro-programma per l’istruzione X:

La sequenza di passi che eseguita nel suo complesso esegue l’istruzione X del Program Set

Micro-istruzione:

Ogni passo della sequenza.

Quindi, una riga della tabella memorizzata in RAM.

Micro Program Counter (µPC):

l’indice del passo corrente. Nel nostro esempio, è aggiornato col campo «prossimo passo» della tabella.

Micro-salto: un jump del microprogramma.

Cioè una micro-istruzione a µPC = N che prevede, come istruzione successiva, una micro-istruzione con passo diverso da N+1.

Micro-branch: un micro-salto condizionato

(es: a seconda del valore dei bit di esito, salto oppure no)

Unità di controllo microprogrammata

Architettura degli elaboratori - 85 -

Tabella telle transizioni (1/2)

Passo Opcode Esiti Controlli generati Next

0 X X PCout, MARin, read, … etc 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 - 86 -

(16)

Tabella telle transizioni (1/2)

Passo Opcode Esiti Controlli generati Next

0 X X PCout, MARin, read, … etc 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 - 87 -

Il microprogramma di ADDU Una microistruzione

Un microsalto condizionato

Unità di controllo cablata

CPU multiciclo

Architettura degli elaboratori - 88 -

clock

IR

next step WMFC

dalla memoria MFC

Step No go

bit

S R

Q

dalla ALU esiti

read write alla memoria

alla ALU

op

al datapath

L

Op code

Circuito combinatorio

6 3 3

3

(17)

Unità di controllo microprogrammata

CPU multiciclo

Architettura degli elaboratori - 89 -

clock

IR

next step WMFC

dalla memoria MFC

Step No go

bit

S R

Q

dalla ALU esiti

read write alla memoria

alla ALU

op

al datapath

L

Op code

6 3

3 12

16

ROM 4096x16bit

addr

data

3

Microprogrammazione: storage

Quanto è grande l’intera tabella del microprogramma?

Nel nostro esempio…

Input:

3 bit di indice di passo (ci bastano) 6 bit di Op-Code (vedi MIPS) 3 bit di esiti (mettiamo)

Totale bit di input = 12 (si potrebbero ridurre) 2^12 = 4096 righe possibili nella tabella. In ogni riga:

3 bit di next state

13 bit di controllo (mettiamo) Totale: 16 bit per microistruzione

Totale tabella: molto poco: 4096x16 bit = 8 Kbytes Tipicamente memorizzata in una piccola ROM riscrivibile

CPU multiciclo

Architettura degli elaboratori - 90 -

(18)

Microprogrammazione e codice legacy

Dato un datapath con certe capacità, le istruzioni che la CPU sarà in grado di eseguire dipendono dal microcodice

La microprogrammazione può essere usata per:

Interpretare lo stesso insieme di istruzioni su microarchitetture diverse

Interpretare diversi insiemi di istruzioni sulla stessa microarchitettura

“Emulazione”: interpretazione in microcodice di un set di istruzioni diverso da quello nativo della macchina

Grande successo nel passato

Unità di controllo microprogrammata

Architettura degli elaboratori - 91 -

Microprogrammazione: pro e contro

 Facilità di progettazione

 Flessibilità

Facilità di cambiamento

Si possono rimandare decisioni implementative (basta cambiare il microprogramma)

 Si può scegliere di implementare set di istruzioni molto potenti (basta impiegare più memoria di controllo)

 Generalità

Si possono implementare più set di istruzioni sulla stessa macchina.

Si può anche adattare il set di istruzioni all’applicazione.

 Compatibilità

Stesso set di istruzioni su microarchitetture diverse

 Costosa

 Lenta

Unità di controllo microprogrammata

Architettura degli elaboratori - 92 -

(19)

Controllo microprogrammato

Da un punto di vista funzionale, realizzare un controllore cablato o microprogrammato è equivalente .

Il controllore cablato è più efficiente

(circuito combinatorio = più veloce di un accesso in memoria,

e ciò vale persino per una piccola memoria solo lettura come questa) La microprogrammazione è preferibile quando la flessibilità è essenziale

Situazione attuale:

Oggi la microprogrammazione non è molto più usata nei microprocessori

Sono a volte microprogrammati invece i microcontrollori di embedded devices o di alcune periferiche

(ricordiamo la differenza:

Microprocessore: la CPU, stampata su un circuito integrato Microcontrollore: l’unità di controllo di un embedded device, stampata su un circuito integrato)

Unità di controllo microprogrammata

Architettura degli elaboratori - 93 -

Controllo microprogrammato

Microprogrammazione : un tipo intermedio di… «-ware»?

SOFTWARE:

Programma (sequenza di istruzioni dell’instruction set)

HARDWARE:

L’architettura (cablata) che lo esegue

Unità di controllo microprogrammata

Architettura degli elaboratori - 94 -

FIRMWARE:

Il mircoprogramma, memorizzato in ROM

(20)

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

Architettura degli elaboratori

Unità di controllo a tre bus

Marco Tarini

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

Archietture a più bus

I principi che abbiamo consentono di progettare CPU in modo relativamente semplice

La soluzione che abbiamo visto come esempio usa un Bus solo Di conseguenza, un solo registro (interno o utente)

alla volta può essere copiato su di un altro

Due operazioni sono necessarie per fornire alla ALU i suoi due parametri

Questa non è una scelta obbligata!

CPU multiciclo

Architettura degli elaboratori - 96 -

(21)

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

Vediamo un esempio di architettura che sfrutta questa idea

CPU multiciclo

Architettura degli elaboratori - 97 -

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 - 98 -

BUS A

Ri Riin

RioutA

BUS C

RioutB

BUS B

(22)

Datapath a 3 bus (esempio)

CPU multiciclo

Architettura degli elaboratori - 99 -

ALU

MAR IR 4

Addr

PC

MUX

Data MDR

BUS A

R00..31

BUS C

imm

BUS B

alla CU

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 - 100 -

(23)

Datapath a 3 bus: i three state-buffer

CPU multiciclo

Architettura degli elaboratori - 101 -

ALU

MAR IR 4

RAM addr PC

MUX

RAM data MDR

BUS A

R00..31

BUS C

BUS B

alla CU imm

IMM out

MDR out B

MDR out A MDR in

MAR in IR in Ri in PC_in Ri outB

Ri outA

PC out

sel4

ALUcrt

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 - 102 -

(24)

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

CPU multiciclo

Architettura degli elaboratori - 103 -

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

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

CPU multiciclo

Architettura degli elaboratori - 104 -

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»

(25)

Datapath a tre bus: velocità di esecuzione

Add R3, R4, R5 con 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 con datapath a tre bus

1. PCoutB, passB, MARin, read 2. PCoutB, add, select4, PCin, WMFC 3. MDRoutB, passB, IRin

4. R3outA, R4outB, add, R5in

4 cicli di clock !

CPU multiciclo

Architettura degli elaboratori - 105 -

Datapath a tre bus: velocità di esecuzione

ORi R5, R3, imm con 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

ORi R5, R3, imm con datapath a tre bus

1. PCoutB, R=passB, MARin, read 2. PCoutB, R=Add, select4, PCin, WMFC, 3. MDRoutB, R=passB, IRin

4. ZeroExtImmoutA, R3outB, or, R5in

4 cicli di clock !!!

CPU multiciclo

Architettura degli elaboratori - 106 -

Riferimenti

Documenti correlati

Ora, partendo dal punto finale della scanalatura per il fondo e parallelamente a quello che sarà il bordo anteriore e posteriore dei pannelli laterali, realizza le scanalature

SPORTELLO.cloud è il portale online che contiene sia FattureWeb (cioè l’online tool per l’emissione delle fatture attive) che Sportello Fatture (cioè la

Gli operatori volontari in Servizio Civile svolgeranno il loro servizio integrando il lavoro dei volontari e degli operatori delle sedi di attuazione. Gli operatori volontari

Gli operatori volontari in Servizio Civile svolgeranno il loro servizio integrando il lavoro dei volontari e degli operatori delle sedi di attuazione. Gli operatori volontari

NAl e del VP-55 12A.. Ciascuna gamma operativa è resa funzionale mediante l'introduzione di un apposito modulo. Tre moduli possono essere contemporaneamente installati portando

Se non stai utilizzando Google Chrome aprendo il link dell’incontro, verrà mostrata una pagina simile alla precedente, ma il pulsante &#34;Accedi dal Web&#34; sarà assente.. A

Quindi, scartata una quadri sul terzo giro di fiori, Ovest gioca l’8 di cuori, Nord puntualmente impegna il Fante, ma questa volta Ovest, vinto con il Re, può crearsi un

1) Per quanto concerne il Tribunale di Bologna competente per le CT di Bologna e Forlì-Cesena le videoregistrazioni non sono ancora cominciate. Credo che tutte le CT aspettino