Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce...
-
Upload
truongphuc -
Category
Documents
-
view
218 -
download
0
Transcript of Architettura del processore MIPS - home page | DEI · Struttura del processore PC fornisce...
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]
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
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
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
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
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.
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
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
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.
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.
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
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:
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
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
15
29
Istruzioni di salto incondizionato (jump)
30
CPU con unità di controllo per istruzioni di jump
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
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