Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce...

17
1 1 L'architettura del processore MIPS 2 Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento (load) Istruzioni di memorizzazione (store) Istruzioni di salto condizionato (beq) Costruzione del processore Unità funzionali per ciascun passo di esecuzione Processore completo a ciclo singolo Unità di controllo Considerazioni di efficienza e implementazione multi-ciclo (cenni) Patterson e Hennessy, sezioni 5.1, 5.3, 5.4 [+5.5 cenni]

Transcript of Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce...

Page 1: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

1

1

L'architettura del processore MIPS

2

Piano della lezione

Ripasso di formati istruzione e registri MIPSPassi di esecuzione delle istruzioni:

Formato R (istruzioni aritmetico-logiche)Istruzioni di caricamento (load)Istruzioni di memorizzazione (store)Istruzioni di salto condizionato (beq)

Costruzione del processoreUnità funzionali per ciascun passo di esecuzioneProcessore completo a ciclo singoloUnità di controllo

Considerazioni di efficienza e implementazione multi-ciclo (cenni)

Patterson e Hennessy, sezioni 5.1, 5.3, 5.4 [+5.5 cenni]

Page 2: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

2

3

Insieme ridotto delle istruzioni MIPS

Implementazione semplificata dal processore MIPS.

Insieme ridotto di istruzioni classificate nelle seguenti tre categorie:

Istruzioni aritmetico-logiche:add $s1, $s2, $s3

Istruzioni di trasferimento da/verso la memoria (load/store):lw $s1, offset ($s2) sw $s1, offset ($s2)

Istruzioni di salto condizionato e di salto incondizionato:beq $s1, $s2, L1j L2

4

Formati delle istruzioni del processore MIPS

Page 3: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

3

5

Convenzione per l’utilizzo dei registri MIPS

$zero => 0 (costante zero)$at => 1 (registro riservato)$v0, $v1 => 2, 3 (valutazione di un’espressione e risultati di una funzione)$a0 - $a3 => 4 – 7 (registri argomento)$t0 -- $t7 => 8 – 15 (registri temporanei non salvati)$s0 -- $s7 => 16 – 23 (registri temporanei salvati)$t8, $t9 => 24, 25 (registri temporanei non salvati)$k0, $k1 => 26, 27 (registri riservati)$gp => 28 (global pointer)$sp => 29 (stack pointer)$fp => 30 (frame pointer)$ra => 31 (return address)

6

Insieme semplificato delle istruzioni MIPS

Page 4: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

4

7

Istruzioni aritmetico-logiche (formato R)op $x,$y,$z

viene eseguita in 4 passi:Prelievo istruzione dalla memoria istruzioni e incremento del PC.Lettura dei 2 registri sorgente ($y e $z)Operazione dell’ALU sui dati

utilizza il campo funct per realizzare la funzioneScrittura del risultato dell’ALU nel registro destinazione ($x).

utilizza i bit [15-11] dell’istruzione per selezionare $x.

Scrittura nel reg. dest. $x

Op. ALU sui dati letti ($y op $z)

Lettura Registri Sorgente $y e $z

Prelievo istr. & Increm. PC

Funct [5-0]Shamt [10-6]Rd [15-11]Rt [20-16]Rs [25-21]Op [31-26]

6 bit5 bit5 bit5 bit5 bit6 bit

8

Istruzioni di load (formato I)lw $x,offset($y)

viene eseguita in 5 passi:Prelievo istruzione dalla memoria istruzioni e incremento del PC.Lettura del registro base ($y).Operazione dell’ALU per calcolare indirizzo

somma del valore del registro base e offset.Prelievo del dato nella memoria dati

utilizza come indirizzo di lettura il risultato dell’ALU.Scrittura del dato di memoria nel banco dei registri

Scrittura nel reg. dest. $x

Prelievo dato M[$y + offset]

Op. ALU ($y + offset)

Lettura reg. base $y

Prelievo istr. & Increm. PC

Offset [15-0]Rt [20-16]Rs [25-21]Op [31-26]

16 bit5 bit5 bit6 bit

Page 5: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

5

9

Istruzioni di store (formato I)sw $x,offset($y)

viene eseguita in 4 passi: Prelievo istruzione dalla memoria istruzioni e incremento del PC.Lettura del registro base ($y) e del registro sorgente ($x)Operazione dell’ALU per calcolare indirizzo

somma del valore letto dal registro base e offset.Scrittura del dato proveniente da $x nella memoria dati

utilizza come indirizzo di scrittura il risultato dell’ALU.

Scrittura dato M[$y + offset]

Op. ALU ($y + offset)

Lettura reg. base $y & sorg $x

Prelievo istr. & Increm. PC

Offset [15-0]Rt [20-16]Rs [25-21]Op [31-26]

16 bit5 bit5 bit6 bit

10

Istruzioni di salto condizionato (formato I)beq $x, $y,offset

viene eseguita in 4 passi:Prelievo istruzione dalla memoria istruzioni e incremento del PC.Lettura dei 2 registri sorgente ($x e $y)Operazione dell’ALU

sottrazione dei valori letti dal banco dei registri. Il valore (PC+4) viene sommato all’offset; il risultato è l’indirizzo destinazione del salto.

L’uscita Zero dell’ALU è utilizzata per decidere valore del PC

Scrittura nel PCOp. ALU ($x - $y) & (PC+4+offset)

Lettura Registri Sorgente $x e $y

Prelievo istr. & Increm. PC

Offset [15-0]Rt [20-16]Rs [25-21]Op [31-26]

16 bit5 bit5 bit6 bit

Page 6: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

6

11

Passi svolti durante l’esecuzione delle istruzioniistruzioni aritmetico-logiche op $x,$y,$z

istruzioni di load lw $x,offset($y)

istruzioni di store sw $x,offset($y)

istruzioni di salto condizionato beq $x, $y,offset

Scrittura nel reg. dest. $x

Op. ALU sui dati letti ($y op $z)

Lettura Registri Sorgente $y e $z

Prelievo istr. & Increm. PC

Scrittura nel reg. dest. $x

Prelievo dato M[$y + offset]

Op. ALU ($y + offset)

Lettura reg. base $y

Prelievo istr. & Increm. PC

Scrittura dato M[$y + offset]

Op. ALU ($y + offset)

Lettura reg. base $y & sorg $x

Prelievo istr. & Increm. PC

Scrittura nel PCOp. ALU ($x - $y) & (PC+4+offset)

Lettura Registri Sorgente $x e $y

Prelievo istr. & Increm. PC

12

Passi svolti durante l’esecuzione delle istruzioni

I primi 2 passi sono identici per tutte le istruzioni:Inviare il contenuto del PC ad una Memoria Istruzioni che contiene l’istruzione da eseguireLeggere uno o due registri dal Register File utilizzando i campi dell’istruzione per selezionare i registri

Azioni successive dipendono dall’ istruzione (codice operativo)tutte le istruzioni utilizzano l’ALU dopo lettura registri

Ulteriore differenziazione dopo l’ALU:Aritmetico-logiche: scrittura risultato in registro destinazioneLoad: accesso in lettura a Memoria Dati e caricamento nel RFStore: accesso in scrittura a Memoria Dati e memorizzazioneSalto condizionato: possibile modifica dell’indirizzo dell’istruzione successiva in base al risultato del confronto.

Page 7: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

7

13

Tempo di esecuzione delle istruzioni

Accesso in memoria e operazioni ALU sono più lente (ad esempio 2 ns) di accesso ai registri (ad esempio 1 ns)Se il processore effettua una istruzione per ciclo di clock, il clock deve tenere conto dell’istruzione più lenta.

14

Struttura del processore

PC fornisce indirizzo dell’istruzione nella Memoria IstruzioniI campi dell’istruzione indicano i registri utilizzati come operandiUscite del Register File portano contenuto dei registri alla ALUIl risultato dell’ALU è utilizzato come:

Risultato da scrivere in un registro destinazione Indirizzo di lettura/scrittura della Memoria Dati Indirizzo della prossima istruzione

MemoriaMemoriaistruzioniistruzioni

Istruzione

Indirizzo

MemoriaMemoriadatidati

Indirizzo

Dato

RegistriRegistri

N° registro

Dato

N° registro

N° registro

PC

ALU

ALU

Page 8: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

8

15

Fase di caricamento delle istruzioni

Elementi della CPU utilizzati:Memoria Istruzioni, per mantenere e fornire le istruzioni di un programma una volta noto un indirizzo;Program Counter (PC) per memorizzare indirizzo dell’istruzione corrente;Sommatore per incrementare il PC in modo da indirizzare l’istruzione successiva (PC + 4).

Memoria delleMemoria delleistruzioniistruzioni

Istruzione

Indirizzo di letturaPC

Som

ma

Som

ma

4

16

Istruzioni aritmetico-logiche

Elementi della CPU utilizzati:Register FileALU a 32 bit

Scritture su Register File controllate da segnale di controllo WRServe segnale di controllo per specificare all’ALU il tipo di operazione

Page 9: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

9

17

Istruzioni di caricamento (load)

Elementi della CPU utilizzati:Register File;ALU a 32 bit;Memoria Dati da cui leggere;Un’unità per estendere con il segno corretto il valore dell’offsetda 16 bit a 32 bit.

18

Istruzioni di memorizzazione (store)

Elementi della CPU utilizzati:Register File;ALU a 32 bit;Memoria Dati nella quale scrivere il dato;Un’unità per estendere con il segno corretto il valore dell’offsetda 16 bit a 32 bit.

Page 10: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

10

19

Istruzioni di load/store

In comune: offset con estensione di segno è utilizzato come secondo operando dell’ALU;In comune: lettura del RF, calcolo nell’ALU di un indirizzo di lettura/scrittura per accedere alla Memoria DatiSolo load: lettura della Memoria Dati e scrittura del RF.Solo store: scrittura nella Memoria Dati da registro sorgente

20

Istruzioni di salto condizionatoElementi della CPU utilizzati:

Register FileALU a 32 bitSommatore per calcolare l’indirizzo di destinazione del saltoUnità per l’estensione del segno e shifter a sinistra di 2 bit;Logica di controllo per decidere il valore del PC in base al valore dell’uscita Zero dell’ALU.

Page 11: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

11

21

Realizzazione di un processore completo

Esaminati gli elementi richiesti da ogni tipo di operazione, è possibile combinarli in un’unica unità di elaborazione.

Implementazione a ciclo singoloSi assume che le istruzioni siano eseguite in un ciclo di clockOccorre una Memoria Istruzioni distinta dalla Memoria Dati

Per condividere un elemento tra due diversi tipi di istruzione si introduce un multiplexer

Permette connessioni multiple all’ingresso di un elemento E di selezionare uno tra i vari ingressi in base al controllo

22

Differenze tra istruzioni di formato R ed I

Il numero del registro in cui scrivere il risultato è indicato da:bit [15-11] per istruzioni di formato R bit [20-16] per istruzioni di formato IMUX all’ingresso del Registro Scrittura del RF

Il secondo ingresso dell’ALU è:un registro per istruzioni di formato RBit [15-0] dell’istruzione per istruzioni di formato IMUX al secondo ingresso dell’ALU

Il valore scritto nel registro destinazione proviene da:risultato dell’ALU per istruzioni di formato R Memoria Dati per istruzione di loadMUX all’ingresso dei Dati per Scrittura del RF

Page 12: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

12

23

Processore per istruzioni di formato R e I (1)

Aggiungendo i tre multiplexer in ingresso ad ogni componente si ottiene la seguente struttura

24

Processore per istruzioni di formato R e I (2)

Aggiungendo la parte di CPU dedicata al prelievo dell’istruzione si ottiene la seguente struttura:

Page 13: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

13

25

Processore completo

Aggiungendo anche gli elementi richiesti dai salti condizionati, si ottiene la struttura completa della CPU a ciclo singoloMUX aggiuntivo per scegliere il valore di PCIn rosso tutti gli ingressi di controllo necessari

Branch

MemWrite MemReadMemtoRegALUContr

RegWrite

RegDst ALUSrc

1

1

11

0

000

26

Unità di controllo per la ALUSi definisce segnale ALUOp di 2 bit, in funzione del campo Op (codice operativo) dell’istruzione. ALUOp indica se eseguire

Somma per load e store (ALUOp=00)Sottrazione per beq (ALUOp=01)Operazione aritmetico-logica specificata dal campo funct della istruzione (ALUOp=10)

1110101XXX10011010XXX10000010XXX11100100XXX10100000XXX1110XXXXXX1X010XXXXXX00

F0F1F2F3F4F5ALUOp2ALUOp1OperazioneALU

FunctALUOp

Page 14: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

14

27

Unità di controllo principale

Bisogna definire i segnali di controllo per4 multiplexer a 2 vie (RegDst, ALUSrc, MemtoReg, Branch)Abilitazione alla scrittura nel Register File (RegWrite)Accesso in lettura alla memoria dati (MemRead)Accesso in scrittura alla memoria dati (MemWrite)

In totale 7 bit di controllo (oltre ai 2 bit di ALUOp)Anche in questo caso qualche condizione don’t care

101000X0XBeq

000100X1XSw

000011110Lw

010001001Tipo R

ALUOp2

ALUop1BranchMemWrite

MemRead

RegWrite

MemtoReg

ALUSrc

RegDst

Op(6 bit)

28

Struttura della CPU con unità di controllo

Page 15: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

15

29

Istruzioni di salto incondizionato (jump)

30

CPU con unità di controllo per istruzioni di jump

Page 16: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

16

31

Ciclo singolo: considerazioni di efficienza

Ogni istruzione viene iniziata e completata in un ciclo di clockIl ciclo di clock deve avere la stessa lunghezza per ogni istruzione (CPI = 1);La lunghezza del ciclo di clock è determinata dal percorso più lungo (percorso critico o critical path)

load utilizza 5 unità funzionali in serie (nell’esempio precedente richiede T=8 ns)le altre istruzioni potrebbero essere implementate con un ciclo di clock più breve

L’implementazione a singolo ciclo non è efficiente!Nell’esempio precedente:

istruzioni formato R richiedono T = 6 nsistruzioni di store richiedono T = 7 nsistruzioni di salto condizionato richiedono T = 5 nsistruzioni di salto incondizionato richiedono T = 2 ns;

32

Implementazione di CPU a ciclo variabile

Ipotesi:24% load; 12% store; 44% formato R; 18% branch; 2% jump;

Implementazione a ciclo variabile:il clock ha periodo diverso a seconda dell’istruzione

Il tempo medio per istruzione sarebbe pari a:

0.24*8 ns + 0.12*7 ns + 0.44*6 ns + 0.18*5 ns + 0.02*2 ns = 6.3 nsL’implementazione a ciclo variabile sarebbe:

(8 ns / 6.3 ns) = 1.27volte più veloce dell’implementazione a singolo ciclo.

Svantaggi dell’implementazione a ciclo variabile:Difficile da realizzare

Richiede alto overhead

Page 17: Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce indirizzo dell’istruzione nella Memoria Istruzioni I campi dell’istruzione indicano

17

33

Possibile soluzione: implementazione multi-ciclo

Idea: ogni fase d’esecuzione di un’istruzione (e non una istruzione intera) richiede un ciclo di clockVantaggi principali:

Si può usare un ciclo di clock più piccoloIl vincolo sul clock è dato dalla fase più lunga e non dall’istruzione più lunga

Aumento della velocità di esecuzioneNon in termini di velocità della singola istruzione, ma in termini di throughput (numero di istruzioni per unità di tempo)

Costo aggiuntivo:Necessario introdurre dei registri interni addizionali per memorizzare i valori da usare nei cicli di clock successivi.

Progettazione mediante PIPELINE…

34

Parole chiave

Formati istruzione: R, I, JComponenti della CPU:

PC, Register File, ALU, memoria istruzioni e memoria datiTipologie di progetto di CPU

A ciclo singoloA ciclo variabilemulti-ciclo

Unità di controlloPrincipalePer la ALU