architettura degli elaboratori lez. 9 –cu e nuove...
TRANSCRIPT
![Page 1: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/1.jpg)
Architettura degli Elaboratori
Lez. 9 – CU e nuove istruzioni
Prof. Andrea Sterbini – [email protected]
![Page 2: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/2.jpg)
Argomenti
2
�Argomenti della lezione
- Soluzione esercizio per casa
- Modifiche alla CPU MIPS a 1 colpo di clock
- Come aggiungere altre istruzioni:
- l’istruzione J (Jump)
- Unità funzionali necessarie
- Datapath e modifiche all’unità di controllo
- L’istruzione jal (Jump and Link)
- L’istruzione jr (Jump to Register)
- L’istruzione addi (add immediate)
2
![Page 3: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/3.jpg)
Soluzione
3
� Se i codici dei 4 tipi di istruzioni sono:
� … e dobbiamo produrre i segnali dell’unità di controllo
istruzione codice decimale in binario
di tipo R 0 000000
lw 35 100011
sw 43 101011
beq 4 000100
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 4: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/4.jpg)
Soluzione
3
� Se i codici dei 4 tipi di istruzioni sono:
� … e dobbiamo produrre i segnali dell’unità di controllo
istruzione codice decimale in binario
di tipo R 0 000000
lw 35 100011
sw 43 101011
beq 4 000100
000000 1 0 0 1 0 (X) 0 0 1 0
100011 0 1 1 1 1 0 0 0 0
101011 X 1 X 0 0 (X) 1 0 0 0
000100 X 0 X 0 0 (X) 0 1 0 1
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 5: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/5.jpg)
Soluzione
3
� Se i codici dei 4 tipi di istruzioni sono:
� … e dobbiamo produrre i segnali dell’unità di controllo
� Da cui possiamo produrre la PLA oppure le funzioni booleane necessarie
istruzione codice decimale in binario
di tipo R 0 000000
lw 35 100011
sw 43 101011
beq 4 000100
000000 1 0 0 1 0 (X) 0 0 1 0
100011 0 1 1 1 1 0 0 0 0
101011 X 1 X 0 0 (X) 1 0 0 0
000100 X 0 X 0 0 (X) 0 1 0 1
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 6: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/6.jpg)
Soluzione
3
� Se i codici dei 4 tipi di istruzioni sono:
� … e dobbiamo produrre i segnali dell’unità di controllo
� Da cui possiamo produrre la PLA oppure le funzioni booleane necessarie
� Per esempio
istruzione codice decimale in binario
di tipo R 0 000000
lw 35 100011
sw 43 101011
beq 4 000100
000000 1 0 0 1 0 (X) 0 0 1 0
100011 0 1 1 1 1 0 0 0 0
101011 X 1 X 0 0 (X) 1 0 0 0
000100 X 0 X 0 0 (X) 0 1 0 1
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 7: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/7.jpg)
Soluzione
3
� Se i codici dei 4 tipi di istruzioni sono:
� … e dobbiamo produrre i segnali dell’unità di controllo
� Da cui possiamo produrre la PLA oppure le funzioni booleane necessarie
� Per esempio
� ALUSrc = Opcode_0 Branch = Opcode_2 MemWrite = Opcode_3
istruzione codice decimale in binario
di tipo R 0 000000
lw 35 100011
sw 43 101011
beq 4 000100
000000 1 0 0 1 0 (X) 0 0 1 0
100011 0 1 1 1 1 0 0 0 0
101011 X 1 X 0 0 (X) 1 0 0 0
000100 X 0 X 0 0 (X) 0 1 0 1
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 8: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/8.jpg)
Aggiungere una nuova istruzione
4
� Supponiamo di voler aggiungere la nuova istruzione, J (Jump), dobbiamo:
- Definire la sua codifica
- Definire cosa fa
- Individuare le unità funzionali necessarie (e se sono già presenti)
- Individuare i flussi delle informazione necessarie
- Individuare i segnali di controllo necessari
- Calcolare il tempo necessario per la nuova istruzione e se modifica il tempo totale
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 9: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/9.jpg)
Aggiungere una nuova istruzione
4
� Supponiamo di voler aggiungere la nuova istruzione, J (Jump), dobbiamo:
- Definire la sua codifica
- Definire cosa fa
- Individuare le unità funzionali necessarie (e se sono già presenti)
- Individuare i flussi delle informazione necessarie
- Individuare i segnali di controllo necessari
- Calcolare il tempo necessario per la nuova istruzione e se modifica il tempo totale
�Supponiamo che abbia la codifica seguente (formato J)
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 10: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/10.jpg)
Aggiungere una nuova istruzione
4
� Supponiamo di voler aggiungere la nuova istruzione, J (Jump), dobbiamo:
- Definire la sua codifica
- Definire cosa fa
- Individuare le unità funzionali necessarie (e se sono già presenti)
- Individuare i flussi delle informazione necessarie
- Individuare i segnali di controllo necessari
- Calcolare il tempo necessario per la nuova istruzione e se modifica il tempo totale
�Supponiamo che abbia la codifica seguente (formato J)
�… e che il campo da 26 bit in essa contenuto sia l’istruzione di destinazione del salto:
- è un indirizzo assoluto (invece che uno relativo al PC come per i branch)
- indica l’istruzione di destinazione (va moltiplicato per 4 perché le istr. sono «allineate»)
- i 4 bit «mancanti» verranno presi dal PC+4 (ovvero si rimane nello stesso blocco di 256G)
- (per i salti tra blocchi diversi sarà necessario introdurre l’istruzione jr)
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 11: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/11.jpg)
CPU (senza Jump)
5Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 12: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/12.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 13: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/13.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 14: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/14.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 15: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/15.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 16: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/16.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 17: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/17.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 18: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/18.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 19: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/19.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 20: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/20.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Jump =1 che seleziona la nuova destinazione sul MUX
RegWrite=0 e MemWrite=0 per evitare modifiche a registri e MEM
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 21: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/21.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Jump =1 che seleziona la nuova destinazione sul MUX
RegWrite=0 e MemWrite=0 per evitare modifiche a registri e MEM
Tempo necessario:
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 22: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/22.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Jump =1 che seleziona la nuova destinazione sul MUX
RegWrite=0 e MemWrite=0 per evitare modifiche a registri e MEM
Tempo necessario:
Fetch
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 23: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/23.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Jump =1 che seleziona la nuova destinazione sul MUX
RegWrite=0 e MemWrite=0 per evitare modifiche a registri e MEM
Tempo necessario:
Fetch
e in parallelo il tempo dell’adder che calcola PC+4 (quindi il massimo tra i due tempi)
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 24: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/24.jpg)
Aggiungere il Jump
6
Cosa fa: PC <- (shift left di 2 bit di Istruzione[25..0]) OR (PC+4)[31..28]
Unità funzionali:
PC + 4 (già presente)
shift left di 2 (da aggiungere)
OR dei 28 bit ottenuti con i 4 del PC+4 (si ottiene dalle connessioni)
MUX per selezionare il nuovo PC (da aggiungere)
Flusso dei dati:
Destinazione ---> SL2 ---> (OR i 4 bit di PC+4) ---> MUX ---> PC
Segnali di controllo:
Jump =1 che seleziona la nuova destinazione sul MUX
RegWrite=0 e MemWrite=0 per evitare modifiche a registri e MEM
Tempo necessario:
Fetch
e in parallelo il tempo dell’adder che calcola PC+4 (quindi il massimo tra i due tempi)
� NOTA: l’hardware necessario al calcolo della destinazione del salto è sempre presente e calcola la destinazione anche se l’istruzione non è un Jump. Solo se la CU riconosce che è un Jump il valore calcolato viene immesso nel PC per passare (al colpo di clock successivo) alla destinazione del salto.
� Obiettivo: una CPU più veloce possibile a costo di usare più componenti hardware
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 25: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/25.jpg)
Modifiche per il Jump
7Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 26: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/26.jpg)
Modifiche per il Jump
7Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 27: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/27.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
![Page 28: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/28.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
![Page 29: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/29.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
Unità funzionali: le stesse del Jump
più MUX per selezionare il valore di PC+4 come valore di destinazione
più MUX per selezionare il numero del registro $ra come destinazione
![Page 30: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/30.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
Unità funzionali: le stesse del Jump
più MUX per selezionare il valore di PC+4 come valore di destinazione
più MUX per selezionare il numero del registro $ra come destinazione
Flusso dei dati: lo stesso del Jump, inoltre
PC+4 ���� MUX ���� Registri (dato da memorizzare)
31 ���� MUX ���� Registri(#registro destinazione)
![Page 31: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/31.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
Unità funzionali: le stesse del Jump
più MUX per selezionare il valore di PC+4 come valore di destinazione
più MUX per selezionare il numero del registro $ra come destinazione
Flusso dei dati: lo stesso del Jump, inoltre
PC+4 ���� MUX ���� Registri (dato da memorizzare)
31 ���� MUX ���� Registri(#registro destinazione)
Segnali di controllo:Il segnale Jump deve essere asserito
la CU deve produrre un segnale Link per attivare i due nuovi MUX
![Page 32: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/32.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
Unità funzionali: le stesse del Jump
più MUX per selezionare il valore di PC+4 come valore di destinazione
più MUX per selezionare il numero del registro $ra come destinazione
Flusso dei dati: lo stesso del Jump, inoltre
PC+4 ���� MUX ���� Registri (dato da memorizzare)
31 ���� MUX ���� Registri(#registro destinazione)
Segnali di controllo:Il segnale Jump deve essere asserito
la CU deve produrre un segnale Link per attivare i due nuovi MUX
� Tempo necessario: il WB deve avvenire dopo che sono finiti sia il Fetch (per leggere l’istruzione) sia il calcolo di PC+4 (che va memorizzato in $ra) per cui possono presentarsi due casi
![Page 33: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/33.jpg)
JAL (Jump and Link)
8
Come è codificata: di tipo J (come Jump)
Cosa fa: PC � SL2(indirizzo) OR (PC+4)[31..28] come Jump
$ra � PC+4
Unità funzionali: le stesse del Jump
più MUX per selezionare il valore di PC+4 come valore di destinazione
più MUX per selezionare il numero del registro $ra come destinazione
Flusso dei dati: lo stesso del Jump, inoltre
PC+4 ���� MUX ���� Registri (dato da memorizzare)
31 ���� MUX ���� Registri(#registro destinazione)
Segnali di controllo:Il segnale Jump deve essere asserito
la CU deve produrre un segnale Link per attivare i due nuovi MUX
� Tempo necessario: il WB deve avvenire dopo che sono finiti sia il Fetch (per leggere l’istruzione) sia il calcolo di PC+4 (che va memorizzato in $ra) per cui possono presentarsi due casi
FetchWB
PC+4
PC+4WB
Fetcht t
![Page 34: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/34.jpg)
JAL
9
![Page 35: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/35.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
![Page 36: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/36.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
![Page 37: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/37.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
![Page 38: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/38.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
![Page 39: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/39.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
ovvero come la istruzione la rt, costante(rs) (load address). La CU produce i segnali:
![Page 40: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/40.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
ovvero come la istruzione la rt, costante(rs) (load address). La CU produce i segnali:
IstruzioneRegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch JumpALUOp1
ALUOp0
addi $rd, $rs, costante
0 1 0 1 X 0 0 0 0 0
![Page 41: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/41.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
ovvero come la istruzione la rt, costante(rs) (load address). La CU produce i segnali:
IstruzioneRegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch JumpALUOp1
ALUOp0
addi $rd, $rs, costante
0 1 0 1 X 0 0 0 0 0
![Page 42: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/42.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
ovvero come la istruzione la rt, costante(rs) (load address). La CU produce i segnali:
IstruzioneRegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch JumpALUOp1
ALUOp0
addi $rd, $rs, costante
0 1 0 1 X 0 0 0 0 0
![Page 43: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/43.jpg)
Istruzione addi/la
10
Assembly: addi rt, rs, costante (add immediate) di tipo I
Cosa fa: Somma la parte immediata al registro rs e mette il risultato in rt
Unità funzionali: ALU per la somma (presente)
MUX che seleziona la parte immediata come secondo arg (presente)
Estensione del segno della parte immediata (presente)
Flusso dei dati: Registri[rs] �ALU
Immediate � EstSegno �ALU
ALU � Registri[rt]
Si comporta come la lw rt, costante(rs) che memorizza l’indirizzo invece che il dato
ovvero come la istruzione la rt, costante(rs) (load address). La CU produce i segnali:
Tempo necessario: come una istruzione di tipo R
IstruzioneRegDst
ALUSrc
MemtoReg
RegWrite
MemRead
MemWrite
Branch JumpALUOp1
ALUOp0
addi $rd, $rs, costante
0 1 0 1 X 0 0 0 0 0
![Page 44: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/44.jpg)
Istruzione jr (Jump to Register)
11
L’istruzione jr rs è di formato R
Cosa fa: trasferisce in PC il contenuto del registro rs
Unità funzionali:
MUX per selezionare il PC dal blocco registri
Flusso dei dati: Registri[rs] ���� PC
Segnali di controllo:
Jr che abilita il MUX per inserire in PC il valore del registro
Tempo necessario:Fetch+Reg
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 45: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/45.jpg)
Istruzione jr (Jump to Register)
11
L’istruzione jr rs è di formato R
Cosa fa: trasferisce in PC il contenuto del registro rs
Unità funzionali:
MUX per selezionare il PC dal blocco registri
Flusso dei dati: Registri[rs] ���� PC
Segnali di controllo:
Jr che abilita il MUX per inserire in PC il valore del registro
Tempo necessario:Fetch+Reg
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
![Page 46: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/46.jpg)
Istruzione jr (Jump to Register)
11
L’istruzione jr rs è di formato R
Cosa fa: trasferisce in PC il contenuto del registro rs
Unità funzionali:
MUX per selezionare il PC dal blocco registri
Flusso dei dati: Registri[rs] ���� PC
Segnali di controllo:
Jr che abilita il MUX per inserire in PC il valore del registro
Tempo necessario:Fetch+Reg
Patterson et al., STRUTTURA E PROGETTO DEI CALCOLATORI, 3/E, Zanichelli editore S.p.A. Copyright © 2010
MUX
![Page 47: Architettura degli Elaboratori Lez. 9 –CU e nuove istruzionitwiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/WebHome/9_-_CU_e... · Argomenti 2 Argomenti della lezione-Soluzione](https://reader031.vdocuments.net/reader031/viewer/2022022720/5c6604d009d3f2e4308b9cca/html5/thumbnails/47.jpg)
Esercizio
12
Aggiungere alla CPU l’istruzione
jrr rs (Jump Relative to Register)
di tipo R, che salta all’indirizzo (relativo al PC) contenuto nel registro rs
Ovvero che esegue come prossima istruzione quella che si trova all’indirizzo PC+4+Registri[rs]
1. Modificate lo schema per realizzare l’istruzione
2. Indicate tutti i segnali di controllo che la CU deve generare
3. Calcolate il tempo di esecuzione della istruzione assumendo che:
Accesso a memorie = 66ns, accesso ai registri = 33ns, ALU e sommatori = 100ns