• Non ci sono risultati.

Qual `e la dimensione in bit dell’indirizzo fisico? 4

N/A
N/A
Protected

Academic year: 2021

Condividi "Qual `e la dimensione in bit dell’indirizzo fisico? 4"

Copied!
3
0
0

Testo completo

(1)

Cognome e Nome: Matricola: Mod 2:  Mod 1+2: 

Architettura degli Elaboratori (modulo II) (Compito 30 Maggio 2019)

Esercizio 1

Considerare un sistema di memoria virtuale con indirizzo virtuale di 32 b, che include una TLB 2-way set associative composta da 256 set con TAG = 13 b. Inoltre, ciascun ingresso della TLB ha dimensione 4 B, ed `e composto da:

4 b (valid,dirty,reference,protection) : TAG : N PAG FISICA.

Il sistema include anche una cache 4-way set associative la cui parte dati `e 1 MB, e ogni blocco ha dimensione 2 word.

Rispondere ai seguenti quesiti:

1. Individuare la dimensione della pagina fisica e la dimensione in bit del numero di pagina virtuale.

2. Qual `e la dimensione in byte della TLB?

3. Qual `e la dimensione in bit dell’indirizzo fisico?

4. Quanti set contiene la cache, e qual `e la dimensione dell’INDEX della cache?

5. Dato l’indirizzo fisico 0x11FA (gli zeri pi`u significativi sono omessi), individuare il TAG rispetto alla cache.

Soluzione

1. Poich`e gli insiemi sono 256, allora INDEX = log2256 = 8 b. Quindi PAGE OFFSET = DIM IND VIRT - INDEX - TAG = 32 - 8 - 13 = 11 b, per cui DIM PAGE = 211= 2048 B.

N PAG VIRTUALE = DIM IND VIRT - PAGE OFFSET = 32 - 11 = 21 b.

2. 4B * NUM SET * NUM VIE = 4 ∗ 2 ∗ 28= 211= 2048 B.

3. N PAG FISICA = DIM ENTRY - 4BIT - TAG = 32 - 4 - 13 = 15 b.

IND FISICO = N PAG FISICA + PAGE OFFSET = 15 + 11 = 26 b.

4. Il numero totale di blocchi `e: NUM BLOCCHI = 1 MB / 2 word = 220/23= 217. Il numero di set `e: NUM SET

= NUM BLOCCHI / 4 vie = 217/22= 215. INDEX = log NUM SET = log 215= 15 b.

5. OFFSET = log 2 word = log 23 = 3 b. Quindi INDEX:OFFSET = 15+3 = 18 b, e TAG = IND FISICO - INDEX - OFFSET = 26 - 18 = 8 b. Rispetto all’indirizzo fisico 0x11FA, abbiamo TAG = 000000002.

Esercizio 2

Tradurre in assembly MIPS la funzione C:

void find min(int *v, int n, int *min)

il cui risultato deve essere memorizzato nella variabile min passata per indirizzo.

void find_min(int *v, int n, int *min) { int i, m;

m = *v;

v = v+1;

for (i=1; i < n; i++) { if (*v < m)

m = *v;

v = v+1;

}

*min = m;

}

1. Tradurre in C con if-goto e goto.

2. Tradurre in assembly MIPS, considerando l’aritmetica dei puntatiori (v = v+1) che tiene conto del sizeof(int)).

Usare il registro $s0 e $s1 per memorizzare le variabili locali i e m. E’ inoltre possibile usare pseudo-istruzioni come blt, ble, bgt e bge.

(2)

Soluzione

Il codice con if-goto:

void find_min(int *v, int n, int *min) { int i, m;

m = *v;

v = v+1;

i = 1;

init_for:

if (i >= n) goto exit_for;

if (*v >= m) goto next1;

m = *v;

next1:

v = v+1;

i++;

goto init_for;

exit_for:

*min = m;

}

Traduzione MIPS¿

find_min:

# PARAMETRI: $a0= v, $a1 = n, $a2 = min

# VARIABILI LOCALI: $s0 = i $s1 = m

addi $sp, $sp, -8 sw $s0, 0($sp) sw $s1, 4($sp)

lw $s1, 0($a0) # m = *v;

add $a0, $a0, 4 # v = v+1;

li $s0, 1 # i = 1;

init_for:

bge $s0, $a1, exit_for # if (i >= n) goto exit_for;

lw $t0, 0($a0) # $t0 = *v

bge $t0, $s1, next1 # if (*v >= m) goto next1;

ori $s1, $t0, 0 # m = *v;

next1:

add $a0, $a0, 4 # v = v+1;

addi $s0, $s0, 1 # i++;

j init_for;

exit_for:

sw $s1, 0($a2) # *min = m;

lw $s0, 0($sp) lw $s1, 4($sp) addi $sp, $sp, 8 jr $ra

Esercizio 3

Si consideri il seguente codice MIPS:

1. add $4, $6, $7 2. and $2, $4, $8 3. sw $4, 0($2) 4. lw $3, 10($5) 5. beq $3, $4, label 6. nop

1. Mostrare le dipendenze RAW.

2. Data l’architettura a pipeline a 5 stadi vista a lezione con hazard control unit, forwarding, register file speciale, disegnare il diagramma temporale di esecuzione. Si consideri inoltre la presenza del delayed branch, con il branch che termina la sua esecuzione nello stadio ID.

3. Discutere quali dipendenze vengono risolte impiegando il forwarding (indicando se il dato viene prelevato dal reg EX/ME o ME/WB) o il register file speciale.

4. E’ possibile modificare il codice in modo la ridurre gli stalli e riempire il branch delay slot con un’istruzione utile?

(3)

Soluzione

1. Le dipendenze sono 1 → 2 (reg. $4), 1 → 3 (reg. $4), 1 → 5 (reg. $4), 2 → 3 (reg. $2), 4 → 5 (reg. $3).

2. Il diagramma di esecuzione `e il seguente:

1 2 3 4 5 6 7 8 9 10 11 12

1. add IF ID EX ME WB

2. and IF ID EX ME WB

3. sw IF ID EX ME WB

4. lw IF ID EX ME WB

5. beq IF ID <ID><ID> EX ME WB

6. nop IF <IF><IF> ID EX ME WB

3. La dipendenza 1 → 2 viene risolta tramite forwarding (tra reg. EX/ME e ingresso stadio EXE).

La dipendenza 1 → 3 viene risolta tramite forwarding (tra reg. ME/WB e ingresso stadio EXE).

La dipendenza 1 → 5 viene risolta naturalmente (WB di 1 avviene prima di ID di 5).

La dipendenza 2 → 3 viene risolta tramite forwarding (tra reg. EX/ME e ingresso stadio EXE).

La dipendenza 4 → 5 viene risolta tramite registrer file speciale.

4. L’istruzione lw `e indipendente e ne pu`o essere anticipata l’esecuzione. Inoltre l’istruzione sw pu`o essere spostata nel delay slot. Lo scheduling che continua a rispettare le dipendenze precenti `e il seguente:

4. lw $3, 10($5) 1. add $4, $6, $7 2. and $2, $4, $8 5. beq $3, $4, label 3. sw $4, 0($2)

Il nuovo diagramma di esecuzione `e il seguente (lo stallo serve per far rispettare la dipendenza 1 → 5):

1 2 3 4 5 6 7 8 9 10 11 12

4. lw IF ID EX ME WB

1. add IF ID EX ME WB

2. and IF ID EX ME WB

5. beq IF ID <ID> ME WB

3. sw IF <IF> ID EX ME WB

Domande

1. L’I/O si pu`o programmare sia con il polling e sia tramite interrupt. Quando conviene l’uno o l’altro metodo? Distinguere tra dispositivi lenti o veloci, e per i veloci i casi in cui i dispositivi trasferiscono in continuazione o raramente.

2. Comparare transazioni su bus sincroni e asincroni per portare a termine operazioni di I/O.

3. Un cache miss pu`o dar luogo ad un page fault miss? Motivare.

Riferimenti

Documenti correlati

il risultato non avrà molto senso.. I programmi però non sono quasi mai il grosso dell’occupazione di memoria. I dati lo sono.) Il semplice Register File come lo abbiamo visto non

Vegetazione dei canali salmastri lagunari a Bolboschoenus maritimus Vegetazione elofitica delle acque salmastre a Phragmites australis Thlaspietea rotundifoliae

La frattura religiosa ha assunto un peso ancor più rilevante nel 1979, quando Khomeini ha pre- so il potere a Teheran facendosi paladino anche delle minoranze sciite “oppresse”

Bollo- mi e Stirpe dovranno mettere in conto, oltretutto, il peso specifico dei settori e delle imprese alimen- tari che rivendicano l'accordo con i sindacati: in particolare

para algunas causas de defunci6n. Comunicazioni: Communications,' Papers: Relerate,' Comunicaciones,' a) Dott. ANGELO COCCHI - Bologna: « La genocutireazione del Ceni

La rassegna stampa può essere a cura o dello staff interno dell'ufficio stampa, mediante il reperimento e la selezione di tutte le testate (agenzie stampa, quotidiani,

Me lo paso muy bien cuando el maestro me hace leer en v o z alta en clase.. Disfruto mucho cuando llegan las vacaciones y

Infine, ringrazio in maniera collettiva tutti coloro i quali hanno permesso la mia crescita professionale