Architettura degli Elaboratori 2 Ottobre 2003

Niente appunti o calcolatrici. Risposte nel foglio di bella copia. Massima SINTETICITA', l'eccessiva verbosita' verra' considerata negativamente.
Un esercizio di Mic e quello IJVM sono obbligatori

Esercizio 1.
(a) Si descriva (brevemente!) il Modello Computazionale di Turing e si discuta la definizione di Computazione in tale modello attraverso un esempio plausibile.
(b) Abbiamo a disposizione uno spazio di indirizzamento di 216 posizioni, in un sistema con memory mapped I/O.
Vogliamo che i 32 registri di un Chip di I/O vengano letti e scritti come se fossero le posizioni da 32 (25) a 64-1 (26-1) nel nostro spazio di indirizzamento. Disegnare il circuito combinatorio da collegare tra le linee di indirizzo del Bus e il segnale di Chip Select del Chip di I/O (supponendo che il CS sia asserito alto)
Esercizio 2
(a) Prendendo spunto dalla Figura 4-33, tradurre in Mic-3 il seguente codice Mic-2.
	MAR=SP=SP-1;rd
	H=TOS
	MDR=TOS=MDR AND H;wr;goto(MBR1)
(b) Il seguente codice Mic-1 e' quello che realizza l'istruzione INVOKEVIRTUAL.
	PC=PC+1;fetch
	H=MBRU<<8
	H=MBRU OR H
	MAR=CPP+H;rd
	OPC=PC+1
	PC=MDR;fetch
	PC=PC+1;fetch
	H=MBRU<<8
	H=MBRU OR H
	PC=PC+1;fetch
	TOS=SP-H
	TOS=MAR=TOS+1
	PC=PC+1;fetch
	H=MBRU<<8
	H=MBRU OR H
	MDR=SP+H+1;wr
	MAR=SP=MDR;
	MDR=OPC;wr
	MAR=SP=SP+1
	MDR=LV;wr
	PC=PC+1;fetch
	LV=TOS;goto Main1
Indicare in quali istruzioni avviene (o si completa): la lettura del numero delle variabili locali del metodo, il salvataggio sullo Stack del vecchio PC (il PC del chiamante), la scrittura del "link pointer" nella posizione che conteneva OBJREF.

Esercizio 3
(a) Scrivere un metodo in assembly IJVM che, preso un argomento, restituisca il numero di bit ad 1 della sua rappresentazione binaria. Commentare il codice per renderne chiaro il comportamento.
(Per chi volesse utilizzarlo: si ricorda che lo shift a sinistra di una posizione della rappresentazione binaria di un numero si puo' ottenere sommando il numero a se stesso).

(b) Spiegare cosa differenzia in generale un'istruzione di ritorno da sottoprogramma (tipo IRETURN) da una istruzione tipo RETI (return from interrupt).
Esercizio 4
(a) Durante il processo di assemblaggio, per esempio di programmi IJVM, viene stabilita la lunghezza in byte di ogni istruzione. Perche?
In una istruzione come IFEQ label, come viene calcolato il valore corrispondente a label nel codice oggetto?

(b) Si completi la seguente tabella rappresentante l?Esecuzione in Ordine da parte di una CPU superscalare con 2 unita? di decodifica. Si evidenzino le eventuali dipendenze. Si supponga che + impieghi 2 cicli per essere eseguita e che * ne impieghi 3. Nota. Nell'Esecuzione in Ordine le istruzioni sono iniziate (Issued) in ordine e completate (Retired) in ordine.