Beruflich Dokumente
Kultur Dokumente
Tradurre in un linguaggio ad alto livello a scelta (C, Pascal, Java ecc.) la seguente porzione di codice
assembly del processore MIPS. Si supponga che i registri $t6 e $t7 siano stati inizializzati
rispettivamente ai valori 0 e 4N. I simboli VETA e VETB e K sono costanti a 16 bit, prefissate.
!"# $
%&% & %''(&
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
ESERCIZIO 4
Si scriva in linguaggio assembly del processore MIPS la seguente procedura )*+, che modifica
direttamente in memoria la matrice MAT.
Indicare esplicitamente in assembly i parametri che vengono passati alla procedura e le fasi di
allocazione/deallocazione dello stack:
-+)*+,"./0/0""&.
1+*2345&.466
1+*723475&.4766
./702./7064
SOLUZIONE:
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
ESERCIZIO 5
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 4 e 4N. I simboli VETA, VETB e K sono
costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 1 ns.
Si consideri una singola iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati di tipo RAW (Read After Write) e i conflitti sul controllo presenti
nel programma e indicarli nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo
da risolvere i conflitti presenti nel programma.
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
Calcolare il costo della copertura minima ottenuta (utilizzando come costo il numero di letterali di
ciascun termine prodotto):
Se la copertura minima trovata non unica, dire quante altre coperture minime esistono:
1
BC D + AB + BD
ESERCIZIO 2
Tradurre in un linguaggio ad alto livello a scelta (C, Pascal, Java ecc.) la seguente porzione di codice
assembly del processore MIPS. (Si supponga che i registri e siano stati inizializzati
rispettivamente ai valori 0 e 4N. I simboli
sono costanti a 16 bit,
prefissate.
!"
#
$%
#
&'
()
**
#
#
#
#
&'
#
#
+"
#
$%
()
&'
#
!"
,
$%
,
&'
()
**
,
,
,
,
&'
#
,
+"
,
$%
()
&'
,
**
-
#
,
-
&'
#
.
,
+"
-
$%
()
&'
-
**
-
&'
.
/
"0!
$
1
%
()
#
2
()3
()
#
2
()3
()
()
.
()3
..3
ESERCIZIO 3
Si scriva in linguaggio assembly del processore MIPS la seguente procedura ricorsiva che calcola la
funzione con secondo la seguente definizione:
$4%
4
$%
$5%
$5'%
2
$5'#%
+
5
6#
Usare i registri
ecc per il passaggio dei parametri alla procedura, i registri ecc. come variabili
temporanee mentre il risultato deve essere restituito al chiamante tramite il registro
! "
#
"$%"
"$
!
&
!
'()
*+ $
*+
)$" )$" $""
,+-
*+
$ $
'$. )$"*/+ $
*/+
)$" $""
,+-
*/+
,
0
1
1
$
,
0
1
1%
2
+- ! "
# """$%"
"$
!
& ""
!
""
$
," "
ESERCIZIO 4:
Si consideri una cache a set associativa a 4 vie da 256 KByte e blocco da 128 bit (16 Byte)
Calcolare il numero di blocchi presenti nella cache:
4 blocchi
2 bit
Calcolare il numero di bit necessari per lo spiazzamento (offset) della parola nel blocco:
2 bit
12 bit
16 bit
ESERCIZIO 5
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 0 e 4N. I simboli BASEA, BASEB, e
BASEC sono costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 2 ns.
Si consideri una singola iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati di tipo RAW (Read After Write) e i conflitti sul controllo presenti
nel programma e indicarli nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo
da risolvere i conflitti presenti nel programma.
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
21
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
12
______________
_______________________________________________________________
Dire se risulta migliore il programma del precedente Esercizio (5) o il programma modificato e
calcolare lo speed-up ottenuto:
&))
,#-./,01
,$-./,01
,-./,01
,2-./,01
,-.,.1
/,0-.,#1
/,0-.,$1
/,0-.,1
/,0-.,21
,-.,3(1
4!,56,"7
1
*
+
8)99,9%:))%&
6
/.06/01
/.06/01
/.06/01
/.06/01
331
;!56"
ESERCIZIO 3
Si scriva in linguaggio assembly del processore MIPS la seguente procedura che modifica direttamente
in memoria i vettori indicando esplicitamente i parametri che vengono passati alla procedura
SOLUZIONE:
<=
%
'>
#?++!"
$?++!"
?++!"
2?++!"
@ % #$
')
%$?++!"
%2?++!"
A
%#?++!"
%?++!"
A<=
ESERCIZIO 5
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 4 e 4N+4. I simboli BASEA, BASEB,
BASEC e BASED sono costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 2 ns.
Si consideri una singola iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati di tipo RAW (Read After Write) e i conflitti sul controllo presenti
nel programma e indicarli nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo
da risolvere i conflitti presenti nel programma.
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
9
______________
_______________________________________________________________
ESERCIZIO 6 (FACOLTATIVO)
Si consideri lo stesso programma precedente nel quale sia presente il forwarding.
Si consideri una singola iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati di tipo RAW (Read After Write) e i conflitti sul controllo presenti
nel programma e indicarli nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo
da risolvere i conflitti presenti nel programma.
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
3
______________
_______________________________________________________________
Universit degli Studi di Milano
Corso Architettura degli elaboratori e delle reti - Turno 1
Prof. Cristina Silvano
A.A. 2004/2005 Terza prova in itinere 13 giugno 2005
1. Calcolare il CPI medio nel caso (1) supponendo di usare un periodo di clock pari a 5 ns
CPI1 = CPImedio = 0.5 * 1 + 0.2 * 4 + 0.1 * 4 + 0.1* 2 + 0.1 * 2 = 2.1
Quanto vale il Throughput (o frequenza di operazione), misurato in MIPS, nel caso (1)?
MIPS1 = fCLOCK /(CPI1 * 106) = (200 * 106 ) / (2.1 * 106 ) = 95.24
2. Si supponga ora che, grazie a una qualche tecnica di ottimizzazione, la frequenza di clock sia
aumentata del 25% e ci comporti un incremento di CPI delle istruzioni di ALU del 50% e
delle istruzioni di LOAD del 25% e che la frazione di istruzioni rimanente venga eseguita con
CPI invariato rispetto alla precedente tabella.
Quanto vale il CPI medio nel caso (2)?
CPI1 = CPImedio = 0.5 * 1.5 + 0.2 * 5 + 0.1 * 4 + 0.1* 2 + 0.1 * 2 = 2.55
3. Quanto vale lo Speedup (accelerazione) passando dal caso (1) al caso (2)?
Speedup = MIPS2 / MIPS1 = 98,04 / 95,24 = 1,03
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 0 e 4N. I simboli BASEA e BASEB sono
costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 5 ns.
Si consideri una generica iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati e i conflitti sul controllo presenti nel programma e indicarli
nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire in modo da risolvere i conflitti presenti
nel programma.
Num. I STRUZI ONE C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 Tipo di
stalli conflitto
I F I D EX ME WB
I F I D EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB C
Si consideri una generica iterazione del ciclo precedente eseguita dal processore MIPS nel quale
siano state introdotte le seguenti ottimizzazioni:
- nel Register File possibile la lettura e la scrittura allo stesso indirizzo nello stesso ciclo di clock;
- introduzione del forwarding
- calcolo del PC nelle branch sia stato anticipato nello stadio ID.
Individuare i conflitti sui dati e i conflitti sul controllo rimasti nel programma e indicarli
nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire in modo da risolvere i conflitti presenti
nel programma.
Num. I STRUZI ONE C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 Tipo di
stalli conflitto
I F I D EX ME WB
I F I D EX ME WB D
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB D
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB C
Istruzioni
Scrivere solo sui fogli distribuiti negli spazi indicati - utilizzando il retro delle pagine in caso di
necessit. Non separare questi fogli.
vietato portare allesame libri, eserciziari, appunti e calcolatrici. Chiunque venga trovato in
possesso di documentazione relativa al corso anche se non strettamente attinente alle
domande proposte vedr annullata la propria prova.
Non possibile lasciare laula conservando il tema della prova in corso.
ESERCIZIO 1 (10 PUNTI)
Tradurre in un linguaggio ad alto livello a scelta (C, Pascal, Java ecc.) la seguente porzione di codice
assembly del processore MIPS. I simboli sono costanti a 16 bit,
prefissate.
SOLUZIONE BANALE:
!"#$%%& '
#$%%&(
)
!"*$%%+ '
*$%%+(
)
# ,!#* , '
#'
*
- *
. *
,/##* '
#'
#0'
*
,"#$%%& $%%&(
)'
#
1
* ,/**# '
*'
*0'
#
,"*$%%+ $%%+(
)'
*
1
,"
$%%2 $%%2(
)
,"
$%% $%%(
)
33
1
Codice ad alto livello corrispondente:
SOLUZIONE:
ESERCIZIO 2 (10 PUNTI)
Si scriva in linguaggio assembly del processore MIPS una procedura che calcola ricorsivamente il
Massimo Comun Divisore di due numeri interi positivi come:
425642
,566, 5767
42565, 6
42566, 5
Si assuma che i parametri di ingresso 56 siano stati caricati dal chiamante nei registri e
che il valore calcolato sia restituito dalla procedura nel registro $v0.
!"#$%&"
'
42
,8,8# !!9,9:
,"
;,8 ,!'
/
-
,,
,",8 ,!'!<
= -5
,",8 ,!'!<
= -6
>?@A , 57,!>?@A
BC , 5 67,!BC
'
1
>?@A
B> , 57 6,!B>
,!
AD&?
B4
=
1!42
1
AD&?='
='
='
1B4
B>
'
1
BC
'
1
!"
;,8
8
,
-
/
-
,,
!",8
8
,
-5
!",8
8
,
-6
,8,8# !!9,9:
1
-!9E
=-
Universit degli Studi di Milano
Corso Architettura degli elaboratori e delle reti - Turno 1
Prof. Cristina Silvano
A.A. 2005/2006 Terza prova in itinere 13 giugno 2006
1. Calcolare il CPI medio nel caso (1) supponendo di usare una frequenza di clock pari a 1 GHz
Quanto vale il Throughput (o frequenza di operazione), misurato in MIPS, nel caso (1)?
MIPS1 = fCLOCK /(CPI1 * 106) = (109 ) / (3.6 * 106 ) = 103 / 3.6 = 277.77
4. Quanto vale lo Speedup (accelerazione) passando dal caso (1) al caso (2)?
5. Si supponga infine che (caso 3), rispetto al caso 2, la frequenza di clock sia ulteriormente
aumentata del 10% senza ulteriori modifiche sul CPI delle diverse istruzioni.
Speedup = 1.1
ESERCIZIO 2 (10 punti)
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 0 e 4N. I simboli BASEA, BASEB e
BASEC sono costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 1 ns.
Si consideri una generica iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati e i conflitti sul controllo presenti nel programma e indicarli
nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire in modo da risolvere i conflitti presenti
nel programma.
Num. I STRUZI ONE C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 Tipo di
stalli conflitto
I F I D EX ME WB
I F I D EX ME WB D
IF ID EX ME WB
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB D
IF ID EX ME WB
IF C
Si consideri una generica iterazione del ciclo precedente eseguita dal processore MIPS nel quale
siano state introdotte le seguenti ottimizzazioni:
- Scheduling delle istruzioni
- nel Register File possibile la lettura e la scrittura allo stesso indirizzo nello stesso ciclo di clock;
- introduzione del forwarding
- calcolo del PC nelle branch sia stato anticipato nello stadio ID.
Individuare i conflitti sui dati e i conflitti sul controllo rimasti nel programma e indicarli
nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire in modo da risolvere i conflitti presenti
nel programma.
Num. I STRUZI ONE C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 Tipo di
stalli conflitto
I F I D EX ME WB
I F I D EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF C
2-
3$#&'+$)&'
$#&'$)&'
$.&'
*
$)&'$#&'
$&'
11
ESERCIZIO 4
Si scriva in linguaggio assembly del processore MIPS la seguente procedura che
modifica direttamente in memoria i vettori VETTA; VETTB e VETTC indicando esplicitamente in
assembly i parametri che vengono passati alla procedura:
!" !" !" #
$%
&'()* $)++%
!+,"'!"+#)
!+,"'!"+-#)
!+,"'!"+.#)
SOLUZIONE:
$$/0/01,- 2334345
6/7/0% 238
6/(./0% 23#
6/,(/0% 23 $
/9/(/(
: ;</9/,=
36/-
/9%
36/>
/9%
36/.
/9%
/-/-#
/>/>#
/>/>#
/./.#
/./.#
/./.#
/./.#
/9/9.
6/-
/9%
6/>
/9%
6/.
/9%
?:
36/7/0% 20 8
36/(./0% 20 #
36/,(/0% 20 $
/0/0,- 2334345
?/
=
ESERCIZIO 5
Sia dato il seguente ciclo di un programma in linguaggio macchina MIPS. Si supponga che i registri
$6, e $7 siano stati inizializzati rispettivamente ai valori 4 e 4N+4. I simboli BASEA, BASEB,
BASEC e BASED sono costanti a 16 bit, prefissate. Il ciclo di clock del processore vale 2 ns.
Si consideri una singola iterazione del ciclo eseguita dal processore MIPS in modalit pipeline a 5
stadi senza ottimizzazioni.
Individuare i conflitti sui dati di tipo RAW (Read After Write) e i conflitti sul controllo presenti
nel programma e indicarli nellultima colonna.
Inserire nella prima colonna il numero di stalli da inserire prima di ciascuna istruzione in modo
da risolvere i conflitti presenti nel programma.
Num. I STRUZI ONE C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 Tipo di
stalli conflitto
)#4# I F I D EX ME WB
( I F I D EX ME WB D
(
0 IF ID EX ME WB D
5 IF ID EX ME WB
(. IF ID EX ME WB
* )#4# IF ID EX ME WB
*
)#4) IF ID EX ME WB
* )#4. IF ID EX ME WB
* ()#4 IF ID EX ME WB
0 IF I D EX ME WB
( ,
IF ID EX ME WB D
( 67" IF ID EX ME C
Scrivere il numero totale di stalli inseriti in una singola iterazione del programma:
12
4 blocchi
Calcolare il numero di comparatori necessari:
4
Si consideri la struttura dellindirizzo di memoria (32 bit).
Calcolare il numero di bit necessari per lo spiazzamento (offset) del byte nella parola:
2 bit
Calcolare il numero di bit necessari per lo spiazzamento (offset) della parola nel blocco:
2 bit
Calcolare il numero di bit di indice:
11 bit
Calcolare il numero di bit per letichetta (tag):
17 bit