Architettura degli Elaboratori 13 Settembre 2004

Niente appunti o calcolatrici. Risposte nel foglio di bella copia. Massima SINTETICITA', l'eccessiva verbosita' verra' considerata negativamente.
Un esercizio di Mic e uno di IJVM vanno svolti svolti obbligatoriamente

Esercizio 1.
(a) Cosa significa, in un sistema di calcolo a livelli, che "un livello che realizza una macchina astratta non copre del tutto il livello sottostante"?
E' possibile realizzare la macchina astratta Mic-3 sopra il livello della macchina astratta Mic-2 supponendo che quest'ultima sia realizzata in hardware?
(b) Che cosa e' una switching algebra?
Qual e' un possibile procedimento per passare dalla descrizione di una funzione booleana tramite tabella di verita' ad una descrizione della stessa funzione come espressione algebrica? Applicare tale procedimento a
	    a  b | f
	    --------
	    0  0 | 1
	    0  1 | 0
	    1  0 | 1
	    1  1 | 1
    

Esercizio 2
(a) Qual e' l'effetto in Mic-1 dell'esecuzione di goto(MBR)?
In quale modo l'architettura Mic-1 realizza l'esecuzione di un goto(MBR)? A cosa puo' servire in un microprogramma un goto(MBR)?
(b) Si traduca in Mic-2 il seguente codice Mic-3.
	A=LV     B=SP
        B=TOS    C=A+B
	A=CPP    C=B-1  MAR=C       
	C=A+1    MDR=C;wr
	TOS=C    mem=MDR      










Esercizio 3
(a) Tradurre in Java (o in qualsiasi altro linguaggio ad alto livello, anche in modo non sintatticamente preciso) il seguente metodo IJVM.
.method paraponzi (a,b,c)

  ILOAD b 
  ILOAD a 
  IF_ICMPEQ  L   
  ILOAD b 
  ILOAD a 
  ISUB          
  IFLT  L   
  ILOAD c   
  ILOAD a 
  IADD        
  IRETURN
L LDC_W objref  
  ILOAD b 
  DUP
  ILOAD c 
  ILOAD b 
  ISUB
  ILOAD c   
  INVOKEVIRTUAL paraponzi 
  IRETURN
  .end-method
(b) Descrivere il comportamento delle istruzioni IJVM INVOKEVIRTUAL e IRETURN e il loro effetto sullo Stack.
Esercizio 4
(a) Si prenda in considerazione il diagramma di Fig. 3-37 e lo si commenti, descrivendo in modo sufficientemente dettagliato cosa accade.
(b) Elencare alcuni modi per implementare operazioni di Input/Output.
Nel corso si e' fatto un esempio dettagliato di una particolare implementazione. Supponiamo che ad un dato istante si abbia la seguente situazione all' interno del controller della tastiera:
	               IP            RDY
		  CSR  0000000000000001       BR 0110111000000000
  
Che cosa e' probabile che sia successo negli istanti precedenti? Cosa accadra' probabilmente negli istanti successivi?