Architettura degli elaboratori, 3 Marzo 2006

Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte vanno scritte nel foglio di bella copia. Si raccomanda la massima SINTETICITA'. L'eccessiva verbosita' verra' considerata negativamente.
  • Gli iscritti alla laurea triennale debbono essersi prenotati sul portale studenti del nostro ateneo, in caso cio' non sia stato fatto fatelo immediatamente presente al docente o all'assistente in aula.
  • Coloro che debbono sostenere l'esame da 9 crediti, uno volta superato lo scritto dovranno sostenere un orale sulla parte del programma del loro anno di corso non coperto dal programma di quest'anno.


  • Esercizio 1
    (a) Commentare e chiarire il senso della seguente frase: " da notare che nella pratica non raro che un livello realizzi una macchina astratta che non copre del tutto il livello sottostante ma ne potenzia alcune delle caratteristiche, lasciandone trasparire del tutto altre."

    (b) Fornire un breve confronto fra architetture RISC e CISC.

    Esercizio 2
    (a) Si consideri la Figura 3.37 del testo.
    In quale istante la CPU inizia a leggere i dati forniti dalla Memoria?
    In quale istante li avrebbe letti se non fosse stata asserita la linea WAIT?
    Cosa indica il valore TAD? E TDS?

    (b) Consideriamo il seguente frammento di programma (descritto anche nel Tananbaum) scritto in un linguaggio assembly generico.
            MOV R1,#0       
            MOV R2,#0       
            MOV R3,4096    
    LOOP:   MOV R4,(R2)    
            AND R4,(R2)    
            OR  R1,A(R4)       
    	ADD R2,4(B)       
            CMP R2,R3       
            BLT LOOP       
    
    Tale programma suppone di avere in memoria due vettori di 1024 parole. Tali vettori sono memorizzati a partire dagli indirizzi A e B. Ogni parola e' lunga 4 byte e l'indirizzamento della memoria e' al byte. Il programma dovrebbe calcolare, per ogni parola del vettore A, l'AND bit a bit di tale parola con la parola corrispondente in B, per poi fare l'OR bit a bit di tutte le 1024 parole ottenute.
    Il programma in realta' contiene degli errori relativamente alle modalita' di indirizzamento utilizzare. Identificare tali errori e correggerli.
    Ricordiamo che #c denota indirizzamento immediato, dove c puo' essere un numerale, un simbolo o un'espressione matematica formata da questi. L'indirizzamento registro e diretto si denota con c, dove c puo' essere solo il nome di un registro, un numerale o un simbolo.
    L'indirizzamento registro indiretto si denota con (R), mentre l'indirizzamento indicizzato (indexed addressing) si denota con L(R).
    Ricordate che il primo argomento delle istruzioni e' anche quello dove finisce il risultato.

    Esercizio 3
    (a) Si supponga che esista in IJVM l'istruzione BURP, la cui realizzazione in Mic-1 (inserita, come la realizzazione di tutte le istruzioni IJVM, nel microinterprete) corrisponda al seguente frammento di codice
    	PC=PC+1; fetch
    	H=MBRU<<8
    	H=MBRU OR H
    	PC=PC+1; fetch
    	MAR=LV+H; rd
    	H=MBR
    	MDR=MDR+H
    	MAR=SP=SP+1; wr
    	PC=PC+1;fetch
    	goto Main1
    
    Cosa fa BURP? Quanti byte e' lunga BURP ed in particolare i suoi argomenti?
    Tradurre BURP nell'IJVM normale (senza BURP).
    Quale sarebbe il codice che realizza BURP nel caso la realizzazione di IJVM fosse fatta in Mic-2?

    (b) Supponiamo di avere il linguaggio Mic-1 privo delle operazioni di rd, wr e fetch e di avere un traduttore che traduce frammenti di codice Mic-1 in metodi IJVM che restituiscono sempre il valore dell'ultimo registro modificato.
    La traduzione del seguente frammento Mic-1
    	MBR=PC=1
    	H=MBRU<<8
    	H=MBRU OR H
    	OPC=PC+1
    
    sara' quindi un codice del tipo
    .method trad()
    .var
    mar
    mdr
    pc
    mbr
    sp
    lv
    cpp
    tos
    opc
    h
    .end-var
    
    CODICE-IJVM
    
    .end-method.
    
    Sostituire CODICE-IJVM con il risultato della traduzione del frammento Mic-1 di cui sopra.
    N.B. il codice deve risultare dalla traduzione in sequenza delle singole istruzioni Mic-1.