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
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
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
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
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 -
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 .
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 -
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
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 -
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
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 -
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
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
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 -
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 -
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
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 -
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 -
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
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 -
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
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 -
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 -
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»
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 -