Architetture degli Elaboratori, 14 Giugno 2000

PER A.A. 1998/1999


Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte ai quesiti vanno scritte nel foglio di bella copia.
Si raccomanda la massima sinteticita' negli esercizi che richiedano una spiegazione scritta.

Esercizio 1
(a) Potrebbe accadere che nell'implementazione della MA del livello 5 di un sistema di calcolo la componente memoria sia esattamente la componente memoria del livello 3?
(b) Sul testo, piu' o meno esplicitamente, si assume che il livello del linguaggio Assembly venga realizzato per traduzione. E' possibile pensare, in teoria, di realizzarlo per interpretazione?

Esercizio 2
(a) Sia data la seguente stringa di 12 cifre binarie:
                 101101110000
(1) Trovare il valore della stringa interpretata come:
(2) Convertire in base 8 i valori assoluti dei numeri ricavati nei casi (a) e (b), e sommarli (b) Considerando un codice posizionale in base due a lunghezza fissa (4 cifre), dire quali sono gli estremi del massimo segmento bilanciato di interi (ugual numero, se possibile, di positivi e negativi) e qual e' la rappresentazione di tali estremi utilizzando:
Esercizio 3
Si consideri il seguente frammento iniziale del microprogramma (interprete) che interpreta Mac1 su Mic1.

0: mar:=pc; rd;
1: pc:=pc+1; rd;
2: ir:=mbr; if n then goto 28;
3: tir:=lshift(ir+ir); if n then goto 19;
4: tir:=lshift(tir); if n then goto 11;
5: alu:=tir; if n then goto 9;

Si ricordi che
COND: 0:nessun salto; 1:salta se N=1; 2:salta se Z=1; salta sempre
ALU: 0:A+B; 1: A and B; 2: A; 3:notA.
Il registro tir e' il numero 4.



Esercizio 4
Si scriva una funzione in assembler Mac-1 che riceva sullo stack in input un numero naturale k e restituisca sull'accumulatore il suo fattoriale.

Esercizio 5

Si intende progettare una memoria cache con i seguenti vincoli: Si giustifiche la seguente asserzione: "Con questi vincoli ogni slot di una cache associativa necessita di 284 bit, mentre per uno slot di una cache diretta sono sufficienti 274 bit".

Esercizio 6
Una procedura ha 20 istruzioni e 12 variabili locali, da A ad L.
Sotto sono elencati gli intervalli di istruzioni durante i quali ogni variabile locale e' viva (e' cioe' realmente utilizzata).
Qual'e' il numero minimo di registri necessari per contenere queste variabili e come potrebbero essere assegnati alle variabili?

A: 1..5
B: 3..12
C: 10..15
D: 13..20
E: 6..10
F: 12..20
G: 14..19
H: 1..6
I: 1..4
J: 5..8
K: 7..12
L: 16..19


Esercizio 7
(a) Dire perche' qualsiasi istruzione che utilizzi un modo di indirizzamento immediato richiede un tempo di esecuzione minore di qualsiasi istruzione che utilizzi un modo di indirizzamento indiretto.

(b) Si considerino le seguenti affermazioni relative al meccanismo delle macro e per ciascuna di esse si dica se e' vera o falsa, fornendo eventualmente una breve giustificazione in non piu' di un rigo e mezzo.
1. Il meccanismo delle macro e' indipendente dall'architettura (RISC o CISC) della macchina;
2. Le macro sono piu' efficienti delle procedure (CALL) in termini di tempo di esecuzione del programma;
3. Le macro sono piu' efficienti delle procedure (CALL) in termini di dimensione totale (spazio occupato) del programma;
4. Il salto ad una procedura e' piu' semplice del salto ad una macro;
5. le macro sono interpretate e non compilate;
6. I riferimenti alle macro vengono trattati dall'assemblatore.


Esercizio 8

Perche' nelle architetture RISC (ad esempio SPARC) e' necessario prevedere l'uso di istruzioni di tipo NO-OP?