Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

93
Calcolatori Calcolatori Elettronici Elettronici Il Processore (2) Il Processore (2) Francesco Lo Presti Francesco Lo Presti Rielaborate da Rielaborate da Salvatore Tucci Salvatore Tucci

Transcript of Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

Page 1: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

Calcolatori ElettroniciCalcolatori Elettronici

Il Processore (2) Il Processore (2)

Francesco Lo PrestiFrancesco Lo Presti

Rielaborate daRielaborate da

Salvatore TucciSalvatore Tucci

Page 2: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 2

Suddividere l’esecuzione di una istruzione in Suddividere l’esecuzione di una istruzione in piu’ passi (steps) piu’ passi (steps) Fetch, Decode, Execute, Memory Access, Write BackFetch, Decode, Execute, Memory Access, Write Back Ogni passo richiede un ciclo di clockOgni passo richiede un ciclo di clock Istruzioni diverse possono richiedere un numero Istruzioni diverse possono richiedere un numero

diverso di passi (cicli) diverso di passi (cicli) I passi scelti in modo da bilanciare il carico di lavoroI passi scelti in modo da bilanciare il carico di lavoro

In modo da minimizzare la durata del ciclo di clockIn modo da minimizzare la durata del ciclo di clock

Assunzione: in un passo/ciclo di clock si puo’ Assunzione: in un passo/ciclo di clock si puo’ effettuare una sola operazione tra:effettuare una sola operazione tra: Accesso in memoriaAccesso in memoria Accesso al banco dei registri (lettura o scrittura)Accesso al banco dei registri (lettura o scrittura) Operazione ALUOperazione ALU

Approccio MulticicloApproccio Multiciclo

Page 3: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 3

Approccio MulticicloApproccio Multiciclo

Alla fine di ogni cicloAlla fine di ogni ciclo Bisogna memorizzare i valori richiesti dai cicli Bisogna memorizzare i valori richiesti dai cicli

successivi dell’istuzione correntesuccessivi dell’istuzione corrente Richiede l’impiego di registri addizionali Richiede l’impiego di registri addizionali interniinterni

(invisibili al programmatore):(invisibili al programmatore): IR: IR: Instruction RegisterInstruction Register MDR: MDR: Memory Data RegisterMemory Data Register A & B:A & B: Valori letti dai registriValori letti dai registri ALUout: Registro che memorizza il risultato delle ALUout: Registro che memorizza il risultato delle

operazioni ALUoperazioni ALU

Page 4: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 4

Approccio MulticicloApproccio Multiciclo

VantaggiVantaggi Unita’ funzionali che devono essere usata piu’ volte Unita’ funzionali che devono essere usata piu’ volte

per la stessa istruzione non devono essere replicate per la stessa istruzione non devono essere replicate se impiegate in passi diversise impiegate in passi diversi Una sola memoria per dati e istruzioniUna sola memoria per dati e istruzioni Una sola ALU (no adder)Una sola ALU (no adder)

Tempo di ciclo piu’ breveTempo di ciclo piu’ breve Tempi di esecuzione inferioriTempi di esecuzione inferiori

Istruzioni usano il solo tempo (cicli) necessario alla loro Istruzioni usano il solo tempo (cicli) necessario alla loro esecuzioneesecuzione

Page 5: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 5

Unità di elaborazione a ciclo multiplo: una Unità di elaborazione a ciclo multiplo: una vista astrattavista astratta

Contiene l’istruzion

e

Dati dalla memoria Dati dal

secondo registro

Risultato della ALU

Dati dal primo registro

Page 6: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 6

Una vista più dettagliata Una vista più dettagliata

Poiché le unità funzionali sono condivise, occorre Poiché le unità funzionali sono condivise, occorre aggiungere dei multiplexer ed ampliare quelli già esistenti aggiungere dei multiplexer ed ampliare quelli già esistenti nel ciclo singolonel ciclo singolo

Unica Memoria per dati e istruzioniUnica Memoria per dati e istruzioni Si aggiunge un multiplexer per selezionare il PC o ALUOut Si aggiunge un multiplexer per selezionare il PC o ALUOut

come indirizzo della memoria da leggere/scriverecome indirizzo della memoria da leggere/scrivere Dovendo condividere la ALUDovendo condividere la ALU

Si aggiunge un multiplexer per il primo ingresso della ALU per Si aggiunge un multiplexer per il primo ingresso della ALU per selezionare il registro A (primo registro) oppure il PC (per il selezionare il registro A (primo registro) oppure il PC (per il calcolo dell’indirizzo dell’istruzione successiva)calcolo dell’indirizzo dell’istruzione successiva)

Il multiplexer a 2 vie sul secondo ingresso della ALU viene Il multiplexer a 2 vie sul secondo ingresso della ALU viene ampliato a 4 vieampliato a 4 vie

Una per il valore 4 (per il calcolo dell’indirizzo dell’istruzione Una per il valore 4 (per il calcolo dell’indirizzo dell’istruzione successiva)successiva)

Una per il valore dell’indirizzo (16 bit, estesi in segno a 32 e Una per il valore dell’indirizzo (16 bit, estesi in segno a 32 e traslati a sinistra)traslati a sinistra)

Page 7: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 7

Una vista più dettagliata (2)Una vista più dettagliata (2)

Mux su primo ingresso ALU

Mux su secondo ingresso ALU

Indirizzo da PC o da ALU

Page 8: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 8

I segnali di controlloI segnali di controllo

Nell’unità a ciclo multiplo occorre cambiare Nell’unità a ciclo multiplo occorre cambiare anche l’insieme dei segnali di controlloanche l’insieme dei segnali di controllo Gli elementi di memoria visibili al programmatore (il Gli elementi di memoria visibili al programmatore (il

PC, la memoria ed i registri) e l’IR hanno bisogno di PC, la memoria ed i registri) e l’IR hanno bisogno di un segnale di controllo per la scritturaun segnale di controllo per la scrittura

La memoria ha anche bisogno di un segnale di La memoria ha anche bisogno di un segnale di controllo per la lettura controllo per la lettura

Ciascuno dei due multiplexer a due vie aggiunti ha Ciascuno dei due multiplexer a due vie aggiunti ha bisogno di un segnale di controllo a 1 bitbisogno di un segnale di controllo a 1 bit

Il multiplexer a quattro vie ha bisogno di un segnale Il multiplexer a quattro vie ha bisogno di un segnale di controllo a 2 bitdi controllo a 2 bit

Page 9: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 9

L’unità con i segnali di controlloL’unità con i segnali di controllo

Page 10: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 10

Implementazione dei saltiImplementazione dei salti

Per le istruzioni di jump e branch, ci sono tre possibili Per le istruzioni di jump e branch, ci sono tre possibili sorgenti per il valore da scrivere in PCsorgenti per il valore da scrivere in PC L’output della ALU, con il valore PC+4 calcolato durante la L’output della ALU, con il valore PC+4 calcolato durante la

fase di fetch dell’istruzionefase di fetch dell’istruzione Il registro ALUOut, dove è memorizzato l’indirizzo del branch Il registro ALUOut, dove è memorizzato l’indirizzo del branch

una volta che è stato calcolatouna volta che è stato calcolato I 26 bit meno significativi dell’IR traslati a sinistra di 2 e I 26 bit meno significativi dell’IR traslati a sinistra di 2 e

concatenati con i 4 bit più significativi del PC incrementato, concatenati con i 4 bit più significativi del PC incrementato, se l’istruzione è di jumpse l’istruzione è di jump

Page 11: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 11

Implementazione dei salti: jumpImplementazione dei salti: jump

Prelievo dei 26 bit per jump

Scelta del valore da scrivere in PC: 0: PC+4 1: indirizzo del salto condizionato 2: indirizzo di jump

Page 12: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 12

Implementazione dei salti: beqImplementazione dei salti: beq

Zero (dalla ALU) AND

PCWriteCond

Scelta del valore in

PC

In OR con PCWrite per indicare la scrittura di PC

Page 13: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 13

Il controllo della ALUIl controllo della ALU

Unità di controllo della ALU

ALUOp come input

6 bit di funct come input

3 bit di controllo alla ALU come output

Page 14: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 14

L’unità di elaborazione multi-cicloL’unità di elaborazione multi-ciclo

Page 15: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 15

I segnali di controllo ad 1 bitI segnali di controllo ad 1 bit

SegnaleSegnale Effetto quando vale 0Effetto quando vale 0 Effetto quando vale 1Effetto quando vale 1

RegDstRegDst Registro destinazione = rtRegistro destinazione = rt Registro destinazione = rdRegistro destinazione = rd

RegWriteRegWrite NessunoNessuno Nel registro indicato sull’ingresso Nel registro indicato sull’ingresso Write registerWrite register viene scritto il valore viene scritto il valore Write dataWrite data

ALUSrcAALUSrcA Il primo operando di ALU è PCIl primo operando di ALU è PC Il primo operando di ALU è registro AIl primo operando di ALU è registro A

MemReadMemRead NessunoNessuno Lettura della locazione di memoria Lettura della locazione di memoria indicata da indicata da AddressAddress

MemWriteMemWrite NessunoNessuno Scrittura della locazione di memoria Scrittura della locazione di memoria indicata da indicata da AddressAddress

MemtoRegMemtoReg Il valore in Il valore in Write dataWrite data (registri) (registri) viene da ALUOutviene da ALUOut

Il valore in Il valore in Write dataWrite data (registri) viene (registri) viene da MDRda MDR

IorDIorD L’indirizzo proviene da PCL’indirizzo proviene da PC L’indirizzo proviene da ALUOutL’indirizzo proviene da ALUOut

IRWriteIRWrite NessunoNessuno Uscita memoria scritta in IRUscita memoria scritta in IR

PCWritePCWrite NessunoNessuno Scrittura in PC: provenienza da Scrittura in PC: provenienza da PCSourcePCSource

PCWriteCondPCWriteCond NessunoNessuno Scrittura in PC se Scrittura in PC se ZeroZero di ALU è 1 di ALU è 1

Page 16: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 16

I segnali di controllo a 2 bitI segnali di controllo a 2 bit

SegnaleSegnale ValVal EffettoEffetto

ALUOpALUOp 0000 L’ALU calcola la sommaL’ALU calcola la somma

0101 L’ALU calcola la sottrazioneL’ALU calcola la sottrazione

1010 Operazione determinata dal campo functOperazione determinata dal campo funct

ALUScrBALUScrB 0000 Il secondo ingresso della ALU: proviene da reg. BIl secondo ingresso della ALU: proviene da reg. B

0101 ……: è la costante 4: è la costante 4

1010 ……: il valore dei 16 bit meno sign. di IR, estesi a : il valore dei 16 bit meno sign. di IR, estesi a 3232

1111 ……: il valore dei 16 bit meno sign. di IR, estesi a : il valore dei 16 bit meno sign. di IR, estesi a 32, traslati a sinistra di 2 bit32, traslati a sinistra di 2 bit

PCSourcePCSource 0000 In PC viene scritta l’uscita della ALU (PC+4)In PC viene scritta l’uscita della ALU (PC+4)

0101 In PC viene scritto ALUOut (indirizzo di beq)In PC viene scritto ALUOut (indirizzo di beq)

1010 In PC viene scritto l’indirizzo di jump (26 bit meno In PC viene scritto l’indirizzo di jump (26 bit meno sign. di IR, traslati a sinistra di 2 bit e concatenati sign. di IR, traslati a sinistra di 2 bit e concatenati con i 4 bit più sign. di PC) con i 4 bit più sign. di PC)

Page 17: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 17

Esecuzione di una istruzione in più cicliEsecuzione di una istruzione in più cicli

Obiettivo:Obiettivo: Decomporre le istruzioni in modo da bilanciare il Decomporre le istruzioni in modo da bilanciare il

carico di lavoro in ogni ciclo (e minimizzare la durata carico di lavoro in ogni ciclo (e minimizzare la durata del ciclo di clock)del ciclo di clock)

Suddividiamo le istruzioni in una serie di passiSuddividiamo le istruzioni in una serie di passi Ogni passo coincide con un ciclo di clockOgni passo coincide con un ciclo di clock Ogni passo comprende al più:Ogni passo comprende al più:

Un’operazione con la ALUUn’operazione con la ALU Un accesso al banco dei registriUn accesso al banco dei registri Un accesso alla memoriaUn accesso alla memoria

In questo modo, la durata del ciclo di clock In questo modo, la durata del ciclo di clock sarà pari alla durata della più lenta di queste sarà pari alla durata della più lenta di queste tre operazionitre operazioni

Page 18: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 18

Alla fine di ciascun ciclo di clockAlla fine di ciascun ciclo di clock

Tutti i valori che sono necessari al passo Tutti i valori che sono necessari al passo successivo/Istruzione successivo/Istruzione Sono memorizzati in qualche componenteSono memorizzati in qualche componente

Ad esempioAd esempio Il Program CounterIl Program Counter Il banco dei registiIl banco dei registi La memoriaLa memoria Uno dei registri addizionaliUno dei registri addizionali

A, B, MDR oppure ALUOutA, B, MDR oppure ALUOut IR (dotato di segnale di controllo per la scrittura)IR (dotato di segnale di controllo per la scrittura)

– IR è l’unico tra i registri addizionali a contenere lo IR è l’unico tra i registri addizionali a contenere lo stesso dato (l’istruzione) per tutti i passi di stesso dato (l’istruzione) per tutti i passi di esecuzione di una istruzioneesecuzione di una istruzione

Page 19: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 19

Si suddividono le istruzioni nei seguenti passi Si suddividono le istruzioni nei seguenti passi potenzialipotenziali – non tutte le istruzioni le richiedono tutte– non tutte le istruzioni le richiedono tutte

1.1. Prelievo Istruzione e Incremento del PC (Prelievo Istruzione e Incremento del PC (IFIF)) Si preleva l’istruzione in base a PC e si salva in IR. PC e’ Si preleva l’istruzione in base a PC e si salva in IR. PC e’

incrementato di 4incrementato di 4

2.2. Decodifica Istruzione e Prelievo Registri (Decodifica Istruzione e Prelievo Registri (IDID)) Si leggono i registri rs e rt in caso servanoSi leggono i registri rs e rt in caso servano Si calcola l’indirizzo di salto (nel caso l’istruzione sia di Si calcola l’indirizzo di salto (nel caso l’istruzione sia di

salto).salto).

3.3. Esecuzione, Calcolo Indirizzo di Memoria, o Esecuzione, Calcolo Indirizzo di Memoria, o completamento salto (completamento salto (EXEX)) ALU esegue una delle seguenti funzioni in base al tipo di ALU esegue una delle seguenti funzioni in base al tipo di

istruzioneistruzione memory referencememory reference R-typeR-type

branch (Istruzione Completata)branch (Istruzione Completata) jump (Istruzione Completata)jump (Istruzione Completata)

Suddivisione in PassiSuddivisione in Passi

Page 20: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 20

1.1. Accesso in Memoria e Completamento Istruzione R Accesso in Memoria e Completamento Istruzione R ((MEMMEM)) In base al tipo di istruzioneIn base al tipo di istruzione

Legge dalla memoriaLegge dalla memoria Scrive in memoria (Istruzione Completata)Scrive in memoria (Istruzione Completata) Scrittura nel Registro Destinazione (Istruzione Completata)Scrittura nel Registro Destinazione (Istruzione Completata)

2.2. Completamento lettura da Memoria (Completamento lettura da Memoria (WBWB)) Il dato letto dalla memoria in 4 viene scritto nel registro Il dato letto dalla memoria in 4 viene scritto nel registro

Destinazione (Load completato)Destinazione (Load completato)

Le istruzioni MIPS richiedono da 3 a 5 cicli di clockLe istruzioni MIPS richiedono da 3 a 5 cicli di clock Jump e branch: Jump e branch: 3 cicli3 cicli Formato R, store:Formato R, store: 4 cicli4 cicli Write:Write: 5 cicli5 cicli

Suddivisione in PassiSuddivisione in Passi

Page 21: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 21

Prelievo dell’Istruzione (IF)Prelievo dell’Istruzione (IF)

IR = M[PC];IR = M[PC];PC = PC + 4;PC = PC + 4;

4PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 22: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 22

A = Reg[IR[25-21]];A = Reg[IR[25-21]]; (A = Reg[rs])(A = Reg[rs])B = Reg[IR[20-15]];B = Reg[IR[20-15]]; (B = Reg[rt])(B = Reg[rt])ALUOut = (PC + sign-extend(IR[15-0]) << 2)ALUOut = (PC + sign-extend(IR[15-0]) << 2)

BranchTarget

Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Decodifica Istruzione e Lettura Registri Decodifica Istruzione e Lettura Registri (ID)(ID)

Page 23: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 23

Formato R: (EX) – Esecuzione ALUFormato R: (EX) – Esecuzione ALU

ALUOut = A op BALUOut = A op B

R-TypeResult

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 24: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 24

Formato R: (MEM) – Scrittura Registro Formato R: (MEM) – Scrittura Registro Dest.Dest.

Reg[IR[15:11]] = ALUOUTReg[IR[15:11]] = ALUOUT

R-TypeResult

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 25: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 25

A = Reg[IR[25-21]];A = Reg[IR[25-21]]; (A = Reg[rs])(A = Reg[rs])B = Reg[IR[20-15]];B = Reg[IR[20-15]]; (B = Reg[rt])(B = Reg[rt])ALUOut = (PC + sign-extend(IR[15-0]) << 2)ALUOut = (PC + sign-extend(IR[15-0]) << 2)

BranchTarget

Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Decodifica Istruzione e Lettura Registri Decodifica Istruzione e Lettura Registri (ID)(ID)

Page 26: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 26

Branch: (EX) – Aggiornamento PCBranch: (EX) – Aggiornamento PC

if (A == B) PC = ALUOut;if (A == B) PC = ALUOut;

BranchTarget

Address

Reg[rs]

Reg[rt]

BranchTarget

Address

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 27: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 27

A = Reg[IR[25-21]];A = Reg[IR[25-21]]; (A = Reg[rs])(A = Reg[rs])B = Reg[IR[20-15]];B = Reg[IR[20-15]]; (B = Reg[rt])(B = Reg[rt])ALUOut = (PC + sign-extend(IR[15-0]) << 2)ALUOut = (PC + sign-extend(IR[15-0]) << 2)

BranchTarget

Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Decodifica Istruzione e Lettura Registri Decodifica Istruzione e Lettura Registri (ID)(ID)

Page 28: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 28

Jump: (EX) – Aggiornamento PCJump: (EX) – Aggiornamento PC

PC = PC[31-28] concat (IR[25-0] << 2)PC = PC[31-28] concat (IR[25-0] << 2)

JumpAddress

Reg[rs]

Reg[rt]

BranchTarget

Address

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 29: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 29

A = Reg[IR[25-21]];A = Reg[IR[25-21]]; (A = Reg[rs])(A = Reg[rs])B = Reg[IR[20-15]];B = Reg[IR[20-15]]; (B = Reg[rt])(B = Reg[rt])ALUOut = (PC + sign-extend(IR[15-0]) << 2)ALUOut = (PC + sign-extend(IR[15-0]) << 2)

BranchTarget

Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Decodifica Istruzione e Lettura Registri Decodifica Istruzione e Lettura Registri (ID)(ID)

Page 30: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 30

ALUOut = A + sign-extend(IR[15-0]);ALUOut = A + sign-extend(IR[15-0]);

Mem.Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Store: (EX) Calcolo IndirizzoStore: (EX) Calcolo Indirizzo

Page 31: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 31

Store: (MEM) Scrittura in MemoriaStore: (MEM) Scrittura in Memoria

M[ALUOut] = B;M[ALUOut] = B;

PC + 4

Reg[rs]

Reg[rt]

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 32: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 32

A = Reg[IR[25-21]];A = Reg[IR[25-21]]; (A = Reg[rs])(A = Reg[rs])B = Reg[IR[20-15]];B = Reg[IR[20-15]]; (B = Reg[rt])(B = Reg[rt])ALUOut = (PC + sign-extend(IR[15-0]) << 2)ALUOut = (PC + sign-extend(IR[15-0]) << 2)

BranchTarget

Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Decodifica Istruzione e Lettura Registri Decodifica Istruzione e Lettura Registri (ID)(ID)

Page 33: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 33

ALUOut = A + sign-extend(IR[15-0]);ALUOut = A + sign-extend(IR[15-0]);

Mem.Address

Reg[rs]

Reg[rt]

PC + 4

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Load: (EX) Calcolo IndirizzoLoad: (EX) Calcolo Indirizzo

Page 34: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 34

Load: (MEM) Lettura in MemoriaLoad: (MEM) Lettura in Memoria

MDR = M[ALUOut];MDR = M[ALUOut];

Mem.Data

PC + 4

Reg[rs]

Reg[rt]

Mem.Address

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 35: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 35

Load: (WB) – Scrittura nel Registro Dest. Load: (WB) – Scrittura nel Registro Dest.

Reg[IR[20-16]] = MDRReg[IR[20-16]] = MDR;;

PC + 4

Reg[rs]

Reg[rt]Mem.Data

Mem.Address

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

PC

IR

MDR

A

B

ALUOUT

Page 36: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 36

Schema Riassuntivo Implementazione Schema Riassuntivo Implementazione MulticicloMulticiclo

1: IF

2: ID

3: EX

4: MEM

5: WB

StepStep name

Action for R-type instructions

Action for memory-reference instructions

Action for branches

Action for jumps

Instruction fetch IR = M[PC]PC = PC + 4

Instruction A = Reg [IR[25-21]]decode/register fetch B = Reg [IR[20-16]]

ALUOut = PC + (sign-extend (IR[15-0]) << 2)

Execution, address ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] IIcomputation, branch/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)jump completion

Memory access or R-type Reg [IR[15-11]] = Load: MDR = M[ALUOut]completion ALUOut or

Store: M[ALUOut] = B

Memory read completion Load: Reg[IR[20-16]] = MDR

Page 37: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 37

ControlloControllo

L’Unita di Controllo deve generare:L’Unita di Controllo deve generare: I segnali di controllo dell’ALUI segnali di controllo dell’ALU I segnali di controllo dei vari multiplexerI segnali di controllo dei vari multiplexer I segnali di abilitazione alla I segnali di abilitazione alla

scrittura/lettura dei diversi elementi di scrittura/lettura dei diversi elementi di memoriamemoria

In funzione del…In funzione del…

1.1. Tipo di Istruzione da eseguire (Ingresso)Tipo di Istruzione da eseguire (Ingresso) I bit del campo opcode (e funct nel caso I bit del campo opcode (e funct nel caso

del formato R) dell’istruzionedel formato R) dell’istruzione

2.2. Step dell’istruzioneStep dell’istruzione

Una rete combinatoria non e’ sufficiente Una rete combinatoria non e’ sufficiente ad implementare il controllo multicicload implementare il controllo multiciclo

Controllo

Opcode

Funct

Controllo ALU

Controllo MUX

Read/Write

Memorie

6

6

Page 38: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 38

Controllo Multiplo Ciclo: Rete SequenzialeControllo Multiplo Ciclo: Rete Sequenziale

Il controllo sara’ realizzato da Il controllo sara’ realizzato da una rete sequenzialeuna rete sequenziale Automa a Stati finitiAutoma a Stati finiti MicropragrammaMicropragramma

Per semplificare la Per semplificare la progettazione/circuito del progettazione/circuito del controllo suddivideremo controllo suddivideremo l’unita’ di controllo in l’unita’ di controllo in Unita’ di Controllo PrincipaleUnita’ di Controllo Principale Unita’ di Controllo ALUUnita’ di Controllo ALU

Per il controllo dell’ALU Per il controllo dell’ALU useremo la stessa rete useremo la stessa rete combinatoria vista per combinatoria vista per l’implementazione singolo l’implementazione singolo ciclociclo

Controllo

Opcode

Funct

Controllo ALU

Controllo MUX

Read/Write

Memorie

6

6

Controllo

ALUOp

Controllo MUX

Read/Write

Memorie

2

6

Funct

6

ALU

Control

Controllo ALU

Opcode

Page 39: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 39

Implementazione Unita’ di Controllo PrincipaleImplementazione Unita’ di Controllo Principale

Possiamo implementare l’Unita’ di Controllo come Possiamo implementare l’Unita’ di Controllo come una rete sequenziale di Mooreuna rete sequenziale di Moore Stato: passo di esecuzione dell’istruzione correnteStato: passo di esecuzione dell’istruzione corrente

IF, ID, Ex-Formato R, Ex-beq, etc…IF, ID, Ex-Formato R, Ex-beq, etc… Ingressi: Opcode IstruzioneIngressi: Opcode Istruzione Uscite: Segnali di Controllo verso DataPathUscite: Segnali di Controllo verso DataPath

Bisogna Specificare Bisogna Specificare Funzione Prossimo Stato: Funzione Prossimo Stato:

Stato(n+1)=F(Stato(n),Ingressi(n))Stato(n+1)=F(Stato(n),Ingressi(n)) Funzione Uscita: Uscite(n)=G(Stato(n))Funzione Uscita: Uscite(n)=G(Stato(n))

Perche’ e’ un automa di MoorePerche’ e’ un automa di Moore

Opcode

Controllo MUXRead/Write Memorie

6

ALUOp

2

Rete Combinatoria

Stato Rete Combinatoria

Page 40: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 40

Struttura dell’Automa a Stati FinitiStruttura dell’Automa a Stati Finiti

I primi due passi sono indipendenti dall’istruzioneI primi due passi sono indipendenti dall’istruzione I restanti passi sono differenziati a seconda I restanti passi sono differenziati a seconda

dell’operazionedell’operazione Ciascuna porzione della macchina a stati finiti può Ciascuna porzione della macchina a stati finiti può

essere composta da più statiessere composta da più stati

R-type EXE Calcolo Indirizzo

M-Read M-Write

R-Write

R-Write

Beq EXE (PC update) Jump EXE (PC update)

Fetch

Decode, Fetch Reg, beq

Inizio

Page 41: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 41

Segnali di Controllo: (IF)Segnali di Controllo: (IF)

IR = M[PC];IR = M[PC];- MemRead=1MemRead=1- IRWrite=1IRWrite=1- IorD=0IorD=0

PC = PC + 4;PC = PC + 4;- ALUSrcA=0, ALUSrcB=01ALUSrcA=0, ALUSrcB=01- ALUOp=00ALUOp=00- PCWrite=1, PCSource=00PCWrite=1, PCSource=00

1

0

1

0

1

0X

0X

0010

1

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 42: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 42

Segnali di Controllo: (ID)Segnali di Controllo: (ID)

A = Reg[IR[25-21]]; (A = Reg[rs])A = Reg[IR[25-21]]; (A = Reg[rs])B = Reg[IR[20-15]]; (B = Reg[rt])B = Reg[IR[20-15]]; (B = Reg[rt])- A e B sempre sovrascritti - A e B sempre sovrascritti

(nessun segnale di controllo)(nessun segnale di controllo)

ALUOut = (PC + sign-extend(IR[15-0]) << 2);ALUOut = (PC + sign-extend(IR[15-0]) << 2);- ALUSrcA=0, ALUSrcB=11ALUSrcA=0, ALUSrcB=11- ALUOp=00ALUOp=00

0

0X

0

0X

3

0X

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 43: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 43

Segnali di Controllo: (EX) Formato R - ALUSegnali di Controllo: (EX) Formato R - ALU

ALUOut = A op B;ALUOut = A op B;- ALUSrcA=1, ALUSrcB=00ALUSrcA=1, ALUSrcB=00- ALUOp=10 (Operation dipende da Funct)ALUOp=10 (Operation dipende da Funct)- ALUOut riscritto ad ogni ciclo)ALUOut riscritto ad ogni ciclo)

0X

X

0

0

0X

0 1

X

???

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 44: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 44

10

0X

0

X

0

XXX

X

X

0

15 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Segnali di Controllo: (MEM) Formato R – Segnali di Controllo: (MEM) Formato R – Scrittura Registro DestinazioneScrittura Registro Destinazione

Reg[IR[15:11]] = ALUOut; (Reg[Rd] = ALUOut)Reg[IR[15:11]] = ALUOut; (Reg[Rd] = ALUOut)- RegDest=1RegDest=1- ReWrite=1ReWrite=1- MemtoReg=0MemtoReg=0

Page 45: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 45

Segnali di Controllo: (ID)Segnali di Controllo: (ID)

A = Reg[IR[25-21]]; (A = Reg[rs])A = Reg[IR[25-21]]; (A = Reg[rs])B = Reg[IR[20-15]]; (B = Reg[rt])B = Reg[IR[20-15]]; (B = Reg[rt])- A e B sempre sovrascritti - A e B sempre sovrascritti

(nessun segnale di controllo)(nessun segnale di controllo)

ALUOut = (PC + sign-extend(IR[15-0]) << 2);ALUOut = (PC + sign-extend(IR[15-0]) << 2);- ALUSrcA=0, ALUSrcB=11ALUSrcA=0, ALUSrcB=11- ALUOp=00ALUOp=00

0

0X

0

0X

3

0X

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 46: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 46

1 if Zero=1

Segnali di Controllo: (EX) Branch – Agg. Segnali di Controllo: (EX) Branch – Agg. PCPCif (A == B) PC = ALUOut;if (A == B) PC = ALUOut;- ALUSrcA=1, ALUSrcB=00ALUSrcA=1, ALUSrcB=00- ALUOp=01ALUOp=01- PCWrite=0, PCWriteCond=1, PCSource=01PCWrite=0, PCWriteCond=1, PCSource=01

0X

X

0

0

X0 1

1

110

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 47: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 47

Segnali di Controllo: (ID)Segnali di Controllo: (ID)

A = Reg[IR[25-21]]; (A = Reg[rs])A = Reg[IR[25-21]]; (A = Reg[rs])B = Reg[IR[20-15]]; (B = Reg[rt])B = Reg[IR[20-15]]; (B = Reg[rt])- A e B sempre sovrascritti - A e B sempre sovrascritti

(nessun segnale di controllo)(nessun segnale di controllo)

ALUOut = (PC + sign-extend(IR[15-0]) << 2);ALUOut = (PC + sign-extend(IR[15-0]) << 2);- ALUSrcA=0, ALUSrcB=11ALUSrcA=0, ALUSrcB=11- ALUOp=00ALUOp=00

0

0X

0

0X

3

0X

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 48: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 48

Segnali di Controllo: (EX) Jump – Agg. PCSegnali di Controllo: (EX) Jump – Agg. PC

PC = PC[21-28] concat (IR[25-0] << 2);PC = PC[21-28] concat (IR[25-0] << 2);- PCWrite=1, PCSource=10- PCWrite=1, PCSource=10

0X

X

X

0

1X

0 X

2

XXX

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 49: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 49

Segnali di Controllo: (ID)Segnali di Controllo: (ID)

A = Reg[IR[25-21]]; (A = Reg[rs])A = Reg[IR[25-21]]; (A = Reg[rs])B = Reg[IR[20-15]]; (B = Reg[rt])B = Reg[IR[20-15]]; (B = Reg[rt])- A e B sempre sovrascritti - A e B sempre sovrascritti

(nessun segnale di controllo)(nessun segnale di controllo)

ALUOut = (PC + sign-extend(IR[15-0]) << 2);ALUOut = (PC + sign-extend(IR[15-0]) << 2);- ALUSrcA=0, ALUSrcB=11ALUSrcA=0, ALUSrcB=11- ALUOp=00ALUOp=00

0

0X

0

0X

3

0X

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 50: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 50

0X

ALUOut = A + sign-extend(IR[15-0]);ALUOut = A + sign-extend(IR[15-0]);- ALUSrcA=1, ALUSrcB=10ALUSrcA=1, ALUSrcB=10- ALUOp=00ALUOp=00

X

2

0

0X

0 1

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Segnali di Controllo: (EX) Store – Calc. IndirizzoSegnali di Controllo: (EX) Store – Calc. Indirizzo

Page 51: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 51

Segnali di Controllo: (MEM) Store – Scr. in Segnali di Controllo: (MEM) Store – Scr. in MemoriaMemoria

Memory[ALUOut] = B;Memory[ALUOut] = B;- IorD=1 IorD=1 - MemWrite=1MemWrite=1

0X

X

X

0

01

1 X

X

XXX

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 52: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 52

Segnali di Controllo: (ID)Segnali di Controllo: (ID)

A = Reg[IR[25-21]]; (A = Reg[rs])A = Reg[IR[25-21]]; (A = Reg[rs])B = Reg[IR[20-15]]; (B = Reg[rt])B = Reg[IR[20-15]]; (B = Reg[rt])- A e B sempre sovrascritti - A e B sempre sovrascritti

(nessun segnale di controllo)(nessun segnale di controllo)

ALUOut = (PC + sign-extend(IR[15-0]) << 2);ALUOut = (PC + sign-extend(IR[15-0]) << 2);- ALUSrcA=0, ALUSrcB=11ALUSrcA=0, ALUSrcB=11- ALUOp=00ALUOp=00

0

0X

0

0X

3

0X

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 53: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 53

0X

ALUOut = A + sign-extend(IR[15-0]);ALUOut = A + sign-extend(IR[15-0]);- ALUSrcA=1, ALUSrcB=10ALUSrcA=1, ALUSrcB=10- ALUOp=00ALUOp=00

X

2

0

0X

0 1

X

010

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Segnali di Controllo: (EX) Load – Calc. IndirizzoSegnali di Controllo: (EX) Load – Calc. Indirizzo

Page 54: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 54

Segnali di Controllo: (MEM) Load – Lett. in Segnali di Controllo: (MEM) Load – Lett. in MemoriaMemoria

MDR = Memory[ALUOut];MDR = Memory[ALUOut];- IorD=1 IorD=1 - MemRead=1MemRead=1

0X

X

X

1

01

0 X

X

XXX

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WDMemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

1

0

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 55: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 55

Segnali di Controllo: (WB) Load – Scr. Registro di Segnali di Controllo: (WB) Load – Scr. Registro di DestinazioneDestinazione

Reg[IR[20-16]] = MDR;Reg[IR[20-16]] = MDR;- RegDest=0 RegDest=0 - RegWrite=1RegWrite=1- MemtoReg=0MemtoReg=0

1

0

0

X

0

0X

0 X

X

XXX

0

5 5

RD1

RD2

RN1 RN2 WN

WD

RegWrite

Registers

Operation

ALU

3

EXTND

16 32

Zero

RD

WD

MemRead

MemoryADDR

MemWrite

5

Instruction I

32

ALUSrcB

<<2

PC

4

RegDst

5

IR

MDR

MUX

0123

MUX

0

1

MUX

0

1A

BALUOUT

0

1

2MUX

<<2 CONCAT28 32

MUX

0

1

ALUSrcA

jmpaddrI[25:0]

rd

MUX0 1

rtrs

immediate

PCSource

MemtoReg

IorD

PCWr*

IRWrite

Page 56: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 56

Struttura dell’Automa a Stati FinitiStruttura dell’Automa a Stati Finiti

I primi due passi sono indipendenti dall’istruzioneI primi due passi sono indipendenti dall’istruzione I restanti passi sono differenziati a seconda I restanti passi sono differenziati a seconda

dell’operazionedell’operazione Ciascuna porzione della macchina a stati finiti può Ciascuna porzione della macchina a stati finiti può

essere composta da più statiessere composta da più stati

R-type EXE Calcolo Indirizzo

M-Read M-Write

R-Write

R-Write

Beq EXE (PC update) Jump EXE (PC update)

Fetch

Decode, Fetch Reg, beq

Inizio

Page 57: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 57

L’Automa a stati finiti completoL’Automa a stati finiti completo

Tutti i segnali di Tutti i segnali di scrittura che non scrittura che non appaiono sono pari a 0appaiono sono pari a 0

Tutti i segnali di Tutti i segnali di controllo dei mux che controllo dei mux che non appaiono sono pari non appaiono sono pari ad Xad X

Page 58: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 58

Unita’ di Controllo: Funzione di UscitaUnita’ di Controllo: Funzione di Uscita

OutputsOutputs Input Values (Current State[3-0])Input Values (Current State[3-0])

00000000

00000011

00100100

00100111

01001000

01001011

01101100

01101111

10010000

10010011

PCWritePCWrite 11 00 00 00 00 00 00 00 00 11

PCWriteConPCWriteCondd

XX 00 00 00 00 00 00 00 11 XX

IorDIorD 00 XX XX 11 XX 11 XX XX XX XX

MemReadMemRead 11 00 00 11 00 00 00 00 00 00

MemWriteMemWrite 00 00 00 00 00 11 00 00 00 00

IRWriteIRWrite 11 00 00 00 00 00 00 00 00 00

MemtoRegMemtoReg XX XX XX XX 11 XX XX 00 XX XX

PCSourcePCSource 0000 XXXX XXXX XXXX XXXX XXXX XXXX XXXX 0101 1010

ALUOpALUOp 0000 0000 0000 XXXX XXXX XXXX 1010 XXXX 0101 XXXX

ALUSrcBALUSrcB 0101 1111 1010 XXXX XXXX XXXX 0000 XXXX 0000 XXXX

ALUSrcAALUSrcA 00 00 11 XX XX XX 11 XX 11 XX

RegWriteRegWrite 00 00 00 00 11 00 00 11 00 00

RegDstRegDst XX XX XX XX 00 XX XX 11 XX XX

Page 59: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 59

Unita’ di Controllo: Funzione Prossimo Unita’ di Controllo: Funzione Prossimo StatoStato

CurreCurrent nt

State State [3-0][3-0]

Inst[31-26] (Op[5-0])Inst[31-26] (Op[5-0])

00000000000 (R-0 (R-type)type)

00001000010 (jmp)0 (jmp)

00010000100 (beq)0 (beq)

10001100011 (lw)1 (lw)

10101101011 (sw)1 (sw)

Any Any otherother

00000000 00010001 00010001 00010001 00010001 00010001 00010001

00010001 01100110 10011001 10001000 00100010 00100010 illegalillegal

00100010 XXXXXXXX XXXXXXXX XXXXXXXX 00110011 01010101 illegalillegal

00110011 XXXXXXXX XXXXXXXX XXXXXXXX 01000100 XXXXXXXX illegalillegal

01000100 XXXXXXXX XXXXXXXX XXXXXXXX 00000000 XXXXXXXX illegalillegal

01010101 XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 00000000 illegalillegal

01100110 01110111 XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX illegalillegal

01110111 00000000 XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX illegalillegal

10001000 XXXXXXXX XXXXXXXX 00000000 XXXXXXXX XXXXXXXX illegalillegal

10011001 XXXXXXXX 00000000 XXXXXXXX XXXXXXXX XXXXXXXX illegalillegal

Page 60: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 60

Diagramma a blocchi della CPU (Datapath e Diagramma a blocchi della CPU (Datapath e Control) e MemoriaControl) e Memoria

Memoria

CONTROLLO

DATAPATHAddr

Operation=f(ALUOp,funct)

RegDstALUSrcA/BMemtoReg

PCWrite+(Zero*PCWriteCond)MemWr MemRd RegWr

Zero

Register file

PC

ALU

PCSoruce

IorD IRWrite

A

BALUOut

MDR

IR

OpcodeFunct

Registro di Stato

Page 61: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 61

Implementazione dell’unità di controllo Implementazione dell’unità di controllo dall’Automa a Stati Finitidall’Automa a Stati Finiti

La macchina a stati La macchina a stati finiti può essere finiti può essere implementata usandoimplementata usando Un registro Un registro

temporaneo che temporaneo che memorizza lo stato memorizza lo stato correntecorrente

Un blocco di logica Un blocco di logica combinatoria che combinatoria che determina i segnali e determina i segnali e lo stato futurolo stato futuro

Realizzabile tramite Realizzabile tramite PLA o ROMPLA o ROM

PCWrite

PCWriteCond

IorD

MemtoReg

PCSource

ALUOp

ALUSrcB

ALUSrcA

RegWrite

RegDst

NS3NS2NS1NS0

Op5

Op4

Op3

Op2

Op1

Op0

S3

S2

S1

S0

State register

IRWrite

MemRead

MemWrite

Instruction registeropcode field

Outputs

Control logic

Inputs

Page 62: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 62

Implementazione Controllo Tramite PLAImplementazione Controllo Tramite PLA

Blocco combinatorio della Blocco combinatorio della rete sequenziale puo’ rete sequenziale puo’ essere implementato con essere implementato con logica digitale a 2 livellilogica digitale a 2 livelli PLAPLA

Numero minimo di porte Numero minimo di porte logichelogiche

# celle=# celle= #ingresso*#termini #ingresso*#termini

prodotto+#uscite*termini prodotto+#uscite*termini prodottoprodotto

10*17+20*17=510 celle 10*17+20*17=510 celle PLAPLA

Non modificabileNon modificabile Poco flessibilePoco flessibile

Soluzione efficiente per Soluzione efficiente per piccoli circuitipiccoli circuiti

Op5

Op4

Op3

Op2

Op1

Op0

S3

S2

S1

S0

IorD

IRWrite

MemReadMemWrite

PCWritePCWriteCond

MemtoRegPCSource1

ALUOp1

ALUSrcB0ALUSrcARegWriteRegDstNS3NS2NS1NS0

ALUSrcB1ALUOp0

PCSource0

Page 63: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 63

ROM (Read Only Memory)ROM (Read Only Memory) I valori delle varie celle di memoria sono fissatiI valori delle varie celle di memoria sono fissati

Le ROM possono essere usate per implementare Tabelle Le ROM possono essere usate per implementare Tabelle di Verita’=Reti Combinatoriedi Verita’=Reti Combinatorie Se l’indirizzo e’ di m-bit, possiamo indirizzzare 2Se l’indirizzo e’ di m-bit, possiamo indirizzzare 2mm celle celle

della ROMdella ROM Le uscite della ROM corrispondono ai contenuti della varie Le uscite della ROM corrispondono ai contenuti della varie

celle indirizzate dai m bit dell’indirizzocelle indirizzate dai m bit dell’indirizzo Tabella di Verita’ con m variabili in ingresso e n di Tabella di Verita’ con m variabili in ingresso e n di

outputoutput Sufficiente una ROM di 2Sufficiente una ROM di 2mmxn bitxn bit

Reti Combinatorie e ROMReti Combinatorie e ROM

0 0 0 0 0 1 10 0 1 1 1 0 00 1 0 1 1 0 00 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 11 1 0 0 1 1 01 1 1 0 1 1 1

m n

ROMm = 3n = 4

Output=

Contenuto celle

Input=

indirizzo

Page 64: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 64

Implementazione del Controllo tramite Implementazione del Controllo tramite ROMROM Rete combinatoria dell’unita’ di controllo ha:Rete combinatoria dell’unita’ di controllo ha:

10 linee in ingresso10 linee in ingresso 6 bit opcode6 bit opcode 4 bit stato4 bit stato Indirizzo=<Opcode,Stato>Indirizzo=<Opcode,Stato>

20 linee di output20 linee di output 16 bit di segnali di controllo16 bit di segnali di controllo 4 bit di stato4 bit di stato

Realizzazione ROM richiede Realizzazione ROM richiede 221010x20=20Kbitsx20=20Kbits

Soluzione inefficienteSoluzione inefficiente 16 bit di uscita (segnali di controllo) dipendono 16 bit di uscita (segnali di controllo) dipendono

solo dai 4 bit dello statosolo dai 4 bit dello stato Automa di MooreAutoma di Moore

indirizzi <XXX,Stato>, al variare di XXX i 16 bit indirizzi <XXX,Stato>, al variare di XXX i 16 bit relativi alle linee di controllo sono identicirelativi alle linee di controllo sono identici

Per molti stati le transizioni non dipendono Per molti stati le transizioni non dipendono dall’opcodedall’opcode

Per molti indirizzi <XXX,Stato>, al variare di XXX i Per molti indirizzi <XXX,Stato>, al variare di XXX i contenuti delle celle spesso sono identicicontenuti delle celle spesso sono identici

Stato __Uscita (Linee di Controllo)

0000 10010100000010000001 00000000000110000010 00000000001010000011 00110000000000000100 00000010000000100101 00101000000000000110 00000000010001000111 00000000000000111000 01000000101001001001 1000000100000000

Page 65: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 65

Implementazione del Controllo tramite Implementazione del Controllo tramite ROMROM

Implementare separatamente Implementare separatamente le tabelle di verita’ delle le tabelle di verita’ delle funzioni F (uscita) e G funzioni F (uscita) e G (prossimo stato)(prossimo stato) F: 4 bit di stato determinano le F: 4 bit di stato determinano le

16 uscite (di controllo)16 uscite (di controllo) ROM di 2ROM di 244x16b=0.25Kbx16b=0.25Kb

G: 10 bit (4 stato+6 opcode) G: 10 bit (4 stato+6 opcode) determinano il prossimo statodeterminano il prossimo stato ROM di 2ROM di 21010x4b=4Kbx4b=4Kb

Totale 4.25Kbit >> numero celle Totale 4.25Kbit >> numero celle PLAPLA PLA ottimizza la rete grazie ai PLA ottimizza la rete grazie ai

molti DON’T CAREmolti DON’T CARE

Data la struttura degli automi di Data la struttura degli automi di Moore, la dimensione della ROM Moore, la dimensione della ROM e’ dominata dalla funzione Ge’ dominata dalla funzione G 4Kb vs 0.25Kb4Kb vs 0.25Kb

Stato __Uscita (Linee di Controllo)

0000 10010100000010000001 00000000000110000010 00000000001010000011 00110000000000000100 00000010000000100101 00101000000000000110 00000000010001000111 00000000000000111000 01000000101001001001 1000000100000000

Si puo’ semplificare

l’implementazione sfruttando la

struttura di G?

Page 66: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 66

Altro Stile di ImplementazioneAltro Stile di Implementazione

Implementare F come primaImplementare F come prima Per G osservare che: Per G osservare che:

1.1. Spesso la funzione stato Spesso la funzione stato successivo e’:successivo e’:

Stato(n+1)=Stato(n)+1Stato(n+1)=Stato(n)+1 0->10->1 IF->IDIF->ID 3->43->4 lw(MEM)->lw(WB)lw(MEM)->lw(WB) 6->76->7 f. R(EX)->f. R(MEM)f. R(EX)->f. R(MEM)

1.1. o semplicemente a fine o semplicemente a fine istruzione:istruzione:

Stato(n+1)=0Stato(n+1)=0

1.1. Tuttavia alcune volteTuttavia alcune volte

Stato(n+1)=G(Stato(n),OpcodStato(n+1)=G(Stato(n),Opcode)e) Stato 1 e 2Stato 1 e 2

Page 67: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 67

Implementazione con un Implementazione con un SequenzializzatoreSequenzializzatore

Inserire:Inserire:1.1. ContatoreContatore

Incremento Stato Incremento Stato

2.2. Logica selezione Logica selezione prossimo statoprossimo stato Per i “salti” Per i “salti”

Aggiungere un Aggiungere un segnale di controllo segnale di controllo AddrCtrlAddrCtrl che controlla che controlla come si determina il come si determina il prossimo stato:prossimo stato: Stato(n)+1Stato(n)+1 00 In base a Stato(n)In base a Stato(n)

+Opcode+Opcode

Page 68: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 68

Sequenzializzatore Sequenzializzatore in dettaglioin dettaglio

Rom

Page 69: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 69

Sequenzializzatore: Contenuto della Memoria di Sequenzializzatore: Contenuto della Memoria di ControlloControllo

Stato Uscita Linee di Controllo

AddrCtl

0000 1001010000001000 110001 0000000000011000 010010 0000000000101000 100011 0011000000000000 110100 0000001000000010 000101 0010100000000000 000110 0000000001000100 110111 0000000000000011 001000 0100000010100100 001001 1000000100000000 00

Funzione F

Funzione G

Page 70: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 70

MicroprogrammazioneMicroprogrammazione

Unita’ di Controllo e’ la parte piu’ complessa del Unita’ di Controllo e’ la parte piu’ complessa del ProcessoreProcessore Controllo di un set completo ISA ha centinaia/migliaia di Controllo di un set completo ISA ha centinaia/migliaia di

statistati

Rappresentazione Grafica dell’Unita’ di Controllo Rappresentazione Grafica dell’Unita’ di Controllo estramamente complessaestramamente complessa

Necessita’ Strumento Progettuale piu’ Efficace: Necessita’ Strumento Progettuale piu’ Efficace: MicroprogrammazioneMicroprogrammazione

Obiettivo: Obiettivo: Impiegare una Rappresentazione Impiegare una Rappresentazione Simbolica dell’Unita’ di Controllo – Simbolica dell’Unita’ di Controllo – MicroprogrammaMicroprogramma Richiama il formato di un programmaRichiama il formato di un programma La logica di controllo si ottiene sintetizzando il La logica di controllo si ottiene sintetizzando il

microprogramma con prodotti CADmicroprogramma con prodotti CAD

Page 71: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 71

MicroprogrammazioneMicroprogrammazione

IdeaIdea: Considerare i segnali di : Considerare i segnali di controllo che devono essere controllo che devono essere affermati ad un certo passo come affermati ad un certo passo come una una (micro)istruzione(micro)istruzione da far da far eseguire dal DataPatheseguire dal DataPath ““Eseguire” una microistruzione significa Eseguire” una microistruzione significa

affermare i segnali di controllo affermare i segnali di controllo specificati dalla microistruzionespecificati dalla microistruzione

Microistruzione specifica:Microistruzione specifica: I segnali di controllo da affermareI segnali di controllo da affermare La prossima microistruzioneLa prossima microistruzione

Microistruzione corrisponde ad uno Microistruzione corrisponde ad uno Stato dell’Automa di ControlloStato dell’Automa di Controllo

MicroprogrammaMicroprogramma: Sequenza di : Sequenza di Microistruzioni in forma simbolicaMicroistruzioni in forma simbolica

Stato Uscita Linee di Controllo

AddrCtl

0000 1001010000001000 110001 0000000000011000 010010 0000000000101000 100011 0011000000000000 110100 0000001000000010 000101 0010100000000000 000110 0000000001000100 110111 0000000000000011 001000 0100000010100100 001001 1000000100000000 00

microistruzione

Page 72: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 73

Campi Microistruzione per il Processore Campi Microistruzione per il Processore Multi-CicloMulti-Ciclo

CampoCampo Segnali di Segnali di ControlloControllo

FunzioneFunzione

ALU ALU controlcontrol

ALUOpALUOp Operazione compiuta da ALU; risultato in Operazione compiuta da ALU; risultato in ALUOutALUOut

SRC1SRC1 ALUSrcAALUSrcA Provenienza primo operando ALUProvenienza primo operando ALU

SRC2SRC2 ALUSrcBALUSrcB Provenienza secondo operando ALUProvenienza secondo operando ALU

Register Register controlcontrol

RegWrite, RegWrite, RegDest, RegDest, MemtoRegMemtoReg

Lettura o scrittura dei registri nel banco e Lettura o scrittura dei registri nel banco e provenienza dei valori in caso di scritturaprovenienza dei valori in caso di scrittura

MemoryMemory MemRead,MemMemRead,MemWrite, IorDWrite, IorD

Lettura o scrittura della memoria e provenienza Lettura o scrittura della memoria e provenienza dei dati; in caso di lettura specifica il registro di dei dati; in caso di lettura specifica il registro di destinazionedestinazione

PCWrite PCWrite controlcontrol

PCWrite, PCWrite, PCSource, PCSource, PRWriteCondPRWriteCond

Modalità di aggiornamento di PCModalità di aggiornamento di PC

SequencinSequencingg

AddrCtlAddrCtl Modalità di scelta dell’istruzione successivaModalità di scelta dell’istruzione successiva

Page 73: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 74

I valori dei campiI valori dei campi

EtichettaEtichetta stringastringa Indica l’etichetta (label) Indica l’etichetta (label) dell’istruzionedell’istruzione

AddAdd ALU deve sommareALU deve sommare

SSuubb

ALU deve sottrarreALU deve sottrarre

FFuunncc ccooddee

ALU deve usare funct per ALU deve usare funct per l’operazionel’operazione

ALU ALU controlcontrol

PCPC PC è il primo operando della ALUPC è il primo operando della ALU

AA Registro A è il primo operando della ALURegistro A è il primo operando della ALU

SRC1SRC1

SRC2SRC2 BB Registro B è il secondo operando della Registro B è il secondo operando della ALUALU

44 Il valore 4 è il secondo operando della ALUIl valore 4 è il secondo operando della ALU

ExtendExtend Uscita esten. segno è il sec. operando della Uscita esten. segno è il sec. operando della ALUALU

ExtshiftExtshift Uscita shift è il secondo operando della ALUUscita shift è il secondo operando della ALU

Page 74: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 75

I valori dei campi (2)ReadRead Legge i due registri usando IR, output in A e BLegge i due registri usando IR, output in A e B

Write ALUWrite ALU Scrive usando rd come registro e ALUOut come Scrive usando rd come registro e ALUOut come datodato

Write MDRWrite MDR Scrive usando rt come registro e MDR come Scrive usando rt come registro e MDR come ddaattoo

Register Register controlcontrol

Read PCRead PC Legge la memoria usando PC, risultato in IR e Legge la memoria usando PC, risultato in IR e MDRMDR

Read ALURead ALU

Write ALUWrite ALU Scrive la memoria usando ALUOut e BScrive la memoria usando ALUOut e B

Legge la memoria usando ALUOut, risultato in Legge la memoria usando ALUOut, risultato in MDRMDR

MemoryMemory

ALUALU Scrive uscita della ALU in PCScrive uscita della ALU in PC

ALUout-condALUout-cond

Jump Jump addressaddress

Scrive in PC l’indirizzo di salto preso Scrive in PC l’indirizzo di salto preso dall’istruzionedall’istruzione

Se Zero vale 1, scrive in PC il valore di ALUOutSe Zero vale 1, scrive in PC il valore di ALUOut

PCWrite PCWrite controlcontrol

SeqSeq Vai alla microistruzione successivaVai alla microistruzione successiva

FetchFetch

Dispatch iDispatch i Usa la tabella di Dispatch per indicare la Usa la tabella di Dispatch per indicare la prossima istr.prossima istr.

Vai alla prima microistruzioneVai alla prima microistruzione

SequencingSequencing

Page 75: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 76

Scelta della microistruzione successivaScelta della microistruzione successiva

LLee mmiiccrrooiissttrruuzziioonnii ssoonnoo mmeemmoorriizzzzaattee iinn uunnaa RROOMM oo PPLLAA

Possiamo assegnare degli indirizzi alle microistruzioniPossiamo assegnare degli indirizzi alle microistruzioni DD

iivveerrssee ppoossssiibbiilliittàà ppeerr sscceegglliieerree llaa mmiiccrrooiissttrruuzziioonnee ssuucccceessssiivvaa

1.1. Passare alla microistruzione seguentePassare alla microistruzione seguente Il campo Sequencing viene messo al valore SeqIl campo Sequencing viene messo al valore Seq

2.2. Passare alla microistruzione che inizia l’esecuzione della Passare alla microistruzione che inizia l’esecuzione della prossima istruzione MIPSprossima istruzione MIPS La prima microistruzione ha un’etichetta FetchLa prima microistruzione ha un’etichetta Fetch Il campo Sequencing viene messo al valore FetchIl campo Sequencing viene messo al valore Fetch

3.3. Passare alla microistruzione a seconda di valori indicati in Passare alla microistruzione a seconda di valori indicati in input all’unità di controlloinput all’unità di controllo Si usa una tabella di Dispatch (solitamente una ROM)Si usa una tabella di Dispatch (solitamente una ROM) Il campo Sequencing viene messo al valore Dispatch iIl campo Sequencing viene messo al valore Dispatch i

– i è un valore che viene passato alla tabella di Dispatch che i è un valore che viene passato alla tabella di Dispatch che restituisce la prossima istruzione a seconda del valore dei 6 restituisce la prossima istruzione a seconda del valore dei 6 bit del campo Op che vengono passati all’unità di controllobit del campo Op che vengono passati all’unità di controllo

Page 76: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 77

I primi due passi (prelievo e decodifica)I primi due passi (prelievo e decodifica)

Incremento del Program Counter e scrittura ALU Incremento del Program Counter e scrittura ALU dell’incrementodell’incremento

Lettura istruzione indicata da PC (in IR)Lettura istruzione indicata da PC (in IR) Salto alla microistruzione indicata dalla tabella di DispatchSalto alla microistruzione indicata dalla tabella di Dispatch

LabelLabel ALU ALU controlcontrol

SRC1SRC1 SRC2SRC2 RegisteRegister r controlcontrol

MemoryMemory PCWrite PCWrite controlcontrol

SequencingSequencing

FetchFetch AddAdd PCPC 44 Read PCRead PC ALUALU SeqSeq

AddAdd PCPC ExtshiftExtshift ReadRead Dispatch 1Dispatch 1

Page 77: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 78

Le etichette del DispatchLe etichette del Dispatch

Servono a differenziare i 4 tipi di istruzioniServono a differenziare i 4 tipi di istruzioni Una specie di switchUna specie di switch

Esistono 4 etichetteEsistono 4 etichette Mem1Mem1 Rformat1Rformat1 BEQ1BEQ1 JUMP1JUMP1

Le informazioni sono memorizzate in una ROMLe informazioni sono memorizzate in una ROM

Dispatch ROM 1Op Opcode name Value

000000 R-format Rformat1000010 jmp JUMP1000100 beq BEQ1100011 lw Mem1101011 sw Mem1

Page 78: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 79

Istruzioni di accesso alla memoriaIstruzioni di accesso alla memoria

Calcolo indirizzoCalcolo indirizzo Dispatch 2 per determinare prossima micro-istruzioneDispatch 2 per determinare prossima micro-istruzione Due passi per l’istruzione lw ()Due passi per l’istruzione lw () Un passo per l’istruzione swUn passo per l’istruzione sw

LabelLabel ALU ALU controlcontrol

SRC1SRC1 SRC2SRC2 Register Register controlcontrol

MemoryMemory PCWrite PCWrite controlcontrol

SequencingSequencing

Mem1Mem1 AddAdd AA ExtendExtend Dispatch 2Dispatch 2

LW2LW2 Read Read ALUALU

SeqSeq

Write Write MDRMDR

FetchFetch

SW2SW2 Write Write ALUALU

FetchFetch

Dispatch ROM 2Op Opcode name Value

100011 lw LW2101011 sw SW2

Page 79: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 80

Istruzioni di tipo RIstruzioni di tipo R

Operazione indicata dal campo functOperazione indicata dal campo funct Scrittura nel registro del risultato dell’operazioneScrittura nel registro del risultato dell’operazione Torna alla microistruzione con label FetchTorna alla microistruzione con label Fetch

LabelLabel ALU ALU controlcontrol

SRC1SRC1 SRC2SRC2 Register Register controlcontrol

MemoryMemory PCWrite PCWrite controlcontrol

SequencingSequencing

Rformat1Rformat1 FuncFunc AA BB SeqSeq

Write Write ALUALU

FetchFetch

Page 80: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 81

Istruzione di branchIstruzione di branch

Effettua la sottrazione tra A e BEffettua la sottrazione tra A e B Il risultato non interessa, serve soltanto la linea ZeroIl risultato non interessa, serve soltanto la linea Zero

Scrittura del PC calcolato nel passo precedente solamente Scrittura del PC calcolato nel passo precedente solamente se la linea Zero della ALU è pari ad 1se la linea Zero della ALU è pari ad 1

Torna alla microistruzione con label FetchTorna alla microistruzione con label Fetch

LabelLabel ALU ALU controlcontrol

SRC1SRC1 SRC2SRC2 Register Register controlcontrol

MemoryMemory PCWrite PCWrite controlcontrol

SequencingSequencing

BEQ1BEQ1 SubSub AA BB ALUOut-ALUOut-condcond

FetchFetch

Page 81: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 82

Istruzione di jumpIstruzione di jump

Scrittura del PC con il nuovo indirizzoScrittura del PC con il nuovo indirizzo Torna alla microistruzione con label FetchTorna alla microistruzione con label Fetch

LabelLabel ALU ALU controlcontrol

SRC1SRC1 SRC2SRC2 Register Register controlcontrol

MemoryMemory PCWrite PCWrite controlcontrol

SequencingSequencing

JUMP1JUMP1 Jump Jump addressaddress

FetchFetch

Page 82: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 83

Dispatch ROM 1Op Opcode name Value

000000 R-format Rformat1000010 jmp JUMP1000100 beq BEQ1100011 lw Mem1101011 sw Mem1

Dispatch ROM 2Op Opcode name Value

100011 lw LW2101011 sw SW2

Microprogramma di Controllo CompletoMicroprogramma di Controllo Completo

Page 83: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 84

Codifica MicroistruzioniCodifica Microistruzioni

Page 84: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 85

Codifica MicroistruzioniCodifica Microistruzioni

Field name Value Signals active CommentRead PC MemRead, Read memory using the PC as address; write result into IR (and

lorD = 0 the MDR).

Memory Read ALU MemRead, Read memory using the ALUOut as address; write result into MDR.

lorD = 1Write ALU MemWrite, Write memory using the ALUOut as address, contents of B as the

lorD = 1 data.

ALU PCSource = 00 Write the output of the ALU into the PC.

PCWritePC write ALUOut PCSource = 01, If the Zero output of the ALU is active, write the PC with the contents

control -cond PCWriteCond of the register ALUOut.

jump PCSource = 10, Write the PC with the jump address from the instruction.

address PCWriteSeq AddrCtl = 11 Choose the next microinstruction sequentially.

Sequencing Fetch AddrCtl = 00 Go to the first microinstruction to begin a new instruction.

Dispatch 1 AddrCtl = 01 Dispatch using the ROM 1.

Dispatch 2 AddrCtl = 10 Dispatch using the ROM 2.

Page 85: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 86

ImplementazioneImplementazione

Il Microprogramma e’ Il Microprogramma e’ una rappresentazione una rappresentazione alternativa di un automa alternativa di un automa a stati finitia stati finiti Implementabile secondo Implementabile secondo

lo schema con lo schema con sequenzializzatore visto sequenzializzatore visto prima doveprima dove

ROM<-> Memoria ROM<-> Memoria MicrocodiceMicrocodice

Stato<-> Contatore di Stato<-> Contatore di MicroprogrammaMicroprogramma

Page 86: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 87

Unita’ di Controllo MicroprogrammataUnita’ di Controllo Microprogrammata

Il Processore “interpreta” le istruzioni Il Processore “interpreta” le istruzioni macchina in memoriamacchina in memoria Legge istruzioni in memoria (scritte in L2)Legge istruzioni in memoria (scritte in L2) Ne simula il comportamento passo passo Ne simula il comportamento passo passo

“eseguendo” una sequenza di microistruzioni (in L1)“eseguendo” una sequenza di microistruzioni (in L1) L’Unita’ di Controllo genera i segnali di controllo e L’Unita’ di Controllo genera i segnali di controllo e

determina il sequenziamento determina il sequenziamento Il Datapath realizza le operazioni ed il trasferimento fra Il Datapath realizza le operazioni ed il trasferimento fra

registri secondo i segnali di controlloregistri secondo i segnali di controllo

Il Microprogramma dell’Unita’ di Controllo Il Microprogramma dell’Unita’ di Controllo (scritto in L1) e’ l’interprete del linguaggio (scritto in L1) e’ l’interprete del linguaggio macchina (L2) macchina (L2)

Page 87: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 88

Riassunto Metodi Alternativi per Specificare ed Riassunto Metodi Alternativi per Specificare ed Implementare l’Unita’ di ControlloImplementare l’Unita’ di Controllo

RappresentazioneIniziale

Controllo delSequenziamento

RappresentazioneLogica

Implementazione

Automa aStati Finiti Microprogramma

Funzione pross.Stato in forma

esplicita

Contatore+Tabelle di dispatch

Tabelle di Verita’Equazione booleane

PLA ROM

Controllo

Cablato

Controllo Microprogrammato

Page 88: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 89

Vantaggi nella ProgettazioneVantaggi nella Progettazione Semplicita’ nella progettazione e scritturaSemplicita’ nella progettazione e scrittura Design congiunto dell’architettura e del microprogrammaDesign congiunto dell’architettura e del microprogramma

Vantaggi nell’ImplementazioneVantaggi nell’Implementazione Facile da modificare (implementazione su off-chip ROM – Facile da modificare (implementazione su off-chip ROM –

anni ’60-’70)anni ’60-’70)

Permette l’emulazione di altre ISAPermette l’emulazione di altre ISA

Svantaggi dell’ImplementazioneSvantaggi dell’Implementazione Controllo e’ oggi sullo stesso chip del processoreControllo e’ oggi sullo stesso chip del processore

ROM e’ oggi (relativamente) lenta rispetto alle altre memorieROM e’ oggi (relativamente) lenta rispetto alle altre memorie

Non c’e’ piu’ necessita’ di cambiare il microprogramma di Non c’e’ piu’ necessita’ di cambiare il microprogramma di

controllo controllo Computer general purposeComputer general purpose

Microprogrammazione: Pro e ControMicroprogrammazione: Pro e Contro

Page 89: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 90

EccezioniEccezioni

La gestione delle eccezioni e degli interrupt è una delle parti La gestione delle eccezioni e degli interrupt è una delle parti più difficili del controllopiù difficili del controllo

Eccezione: un evento non atteso, Eccezione: un evento non atteso, internointerno al processore, che al processore, che interrompe l’esecuzione del programmainterrompe l’esecuzione del programma Esempi: overflow aritmetico, istruzione non definita Esempi: overflow aritmetico, istruzione non definita

Interrupt: un evento non atteso, Interrupt: un evento non atteso, esternoesterno al processore, che al processore, che interrompe l’esecuzione del programmainterrompe l’esecuzione del programma Esempi: richiesta di un dispositivo di I/O, malfunzionamento Esempi: richiesta di un dispositivo di I/O, malfunzionamento

hardwarehardware Nella terminologia MIPS: interrupt Nella terminologia MIPS: interrupt eccezione eccezione Nella terminologia IA-32: non c’è distinzione tra interrupt ed Nella terminologia IA-32: non c’è distinzione tra interrupt ed

eccezioneeccezione

Page 90: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 91

Gestione delle eccezioniGestione delle eccezioni

Quando avviene un’eccezione occorreQuando avviene un’eccezione occorre Salvare nel registro Salvare nel registro EPCEPC (Exception Program Counter) (Exception Program Counter)

l’indirizzo dell’istruzione che ha causato l’eccezionel’indirizzo dell’istruzione che ha causato l’eccezione Trasferire il controllo al sistema operativo a qualche indirizzo Trasferire il controllo al sistema operativo a qualche indirizzo

specifico per la gestione dell’eccezionespecifico per la gestione dell’eccezione Il sistema operativo, dopo aver eseguito le azioni necessarie, Il sistema operativo, dopo aver eseguito le azioni necessarie,

può terminare il programma o continuarne l’esecuzione può terminare il programma o continuarne l’esecuzione usando EPC per determinare da dove riprendere l’esecuzione usando EPC per determinare da dove riprendere l’esecuzione

Oltre a EPC, il sistema operativo deve conoscere la ragione Oltre a EPC, il sistema operativo deve conoscere la ragione dell’eccezione; esistono due meccanismidell’eccezione; esistono due meccanismi

Registro di statoRegistro di stato ( (CauseCause register nel MIPS): contiene un campo che register nel MIPS): contiene un campo che indica la causa dell’eccezioneindica la causa dell’eccezione

Interrupt vettorializzatoInterrupt vettorializzato: l’indirizzo a cui trasferire il controllo è : l’indirizzo a cui trasferire il controllo è determinato dalla causa dell’eccezionedeterminato dalla causa dell’eccezione

Consideriamo due tipi di eccezioni nell’implementazione a Consideriamo due tipi di eccezioni nell’implementazione a ciclo multiplociclo multiplo Esecuzione di un’istruzione non definitaEsecuzione di un’istruzione non definita Overflow aritmeticoOverflow aritmetico

Page 91: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 92

Gestione delle eccezioni (2)Gestione delle eccezioni (2)

Per gestire le eccezioni nel MIPS occorre aggiungere Per gestire le eccezioni nel MIPS occorre aggiungere nell’unità di elaborazionenell’unità di elaborazione Registro EPC a 32 bitRegistro EPC a 32 bit Registro Cause a 32 bitRegistro Cause a 32 bit

Istruzione non definita: Cause = 0Istruzione non definita: Cause = 0 Overflow aritmetico: Cause = 1Overflow aritmetico: Cause = 1

Aggiungiamo due segnali di controllo per abilitare la Aggiungiamo due segnali di controllo per abilitare la scrittura dei registri EPC e Cause: scrittura dei registri EPC e Cause: EPCWriteEPCWrite e e CauseWriteCauseWrite

Aggiungiamo un altro segnale di controllo per settare il Aggiungiamo un altro segnale di controllo per settare il bit meno significativo del registro Cause: bit meno significativo del registro Cause: IntCauseIntCause

Occorre scrivere in PC l’Occorre scrivere in PC l’indirizzo di eccezioneindirizzo di eccezione (punto di (punto di ingresso del sistema operativo per gestire le eccezioni)ingresso del sistema operativo per gestire le eccezioni) Nel MIPS, l’indirizzo di eccezione è (8000 0180)Nel MIPS, l’indirizzo di eccezione è (8000 0180)1616 Modifichiamo il multiplexer in ingresso a PC da tre a Modifichiamo il multiplexer in ingresso a PC da tre a

quattro viequattro vie PCSource = 11 per abilitare l’indirizzo di eccezione PCSource = 11 per abilitare l’indirizzo di eccezione

Page 92: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 93

L’unità a ciclo multiplo con la gestione L’unità a ciclo multiplo con la gestione delle eccezionidelle eccezioni

Indirizzo di eccezione

EPC: usiamo ALU per

sottrarre 4 a PC

Page 93: Calcolatori Elettronici Il Processore (2) Francesco Lo Presti Rielaborate da Salvatore Tucci.

CPU (2) 94

La macchina a stati finiti con la gestione La macchina a stati finiti con la gestione delle eccezionidelle eccezioni