II Esonero Architetture degli Elaboratori, 4 Aprile 2000


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) Considerate un metodo Java che prenda in input due parametri formali k e j (numeri interi) e che restituisca (2*k)+4 se j e' uguale a zero e j-1 altrimenti.
Scrivere il codice IJVM che traduca tale metodo ed il segmento di codice che traduca la chiamata di tale metodo con parametri attuali 5 e 7.
(La traduzione del metodo, che verra' inserita nella Method Area, deve ovviamente contenere, nei primi 4 byte le informazioni relative al numero di argomenti e di variabili locali del metodo).
La lista delle istruzioni IJVM e' allegata al testo dell'esonero.
(b) Disegnare lo Stack prima, durante e dopo l'esecuzione del codice IJVM che traduce il metodo del punto (a).

Esercizio 2
(a) Dire qual'e' l'istruzione IJVM realizzata dal seguente codice Mic-1 e ricopiare tale codice inserendo dei commenti.
----------------------------------------
Main1	PC = PC + 1; fetch; goto(MBR)
-----------------------------------------
               :
               :
-------------------------------------------
	H = LV
	MAR = MBRU + H; rd
	MAR = SP = SP + 1
	PC = PC + 1; fetch; wr
	TOS = MDR; goto Main 1
---------------------------------------------
                :
(b) La seguente figura rappresenta il ciclo di clock di Mic-1 ("D" per motivi tipografici indica la Delta del testo).
In quale momento tra quelli indicati (A, B, C, D) avviene il caricamento dei registri dal Bus C e dalla memoria?
Cosa si intende nella frase precedente per "caricamento dalla memoria"?

Esercizio 3
(a) Nel seguente diagramma che rappresenta la pipeline del PicoJavaII. Ricopiare il diagramma inserendo i nomi delle varie fasi.
Fetch operands from stack
Access data cache
Fetch from I-cache
Write results to stack
Execute instruction
Decode and fold

(b) Descrivere brevemente il funzionamento della Istruction Fetch Unit del Mic-2 descritta nella figura allegata al testo dell'esonero.
N.B. Si raccomanda massima brevita'!!
Esercizio 4
(a) Perche' durante la sua esecuzione l'istruzione INVOKEVIRTUAL di IJVM si va a recuperare nella Method Area il numero degli argomenti del metodo? A cosa gli serve tale informazione?

(b) L'istruzione INVOKEVIRTUAL di JVM (non di IJVM!) invece ha esplicitamente tra i suoi argomenti anche il numero di parametri del metodo che stiamo invocando. Perche' deve avere tale informazione? Perche' non puo' andarsela a prendere, come fa l'INVOKEVIRTUAL di IJVM, nei primi byte del codice nella Method Area?