Architettura degli elaboratori, 07 Ottobre 2009

Per A.A. precedente a 08/09: esercizi 1-4
Per A.A. 08/09: esercizi 1-5

(Indicare sul compito se si e' del 08/09 o precedenti)

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. Se cio' non e' stato fatto, comunicatelo immediatamente al docente o all'assistente in aula.
  • Per superare lo scritto occorre che almeno uno degli esercizi 2 e 3 sia svolto in maniera sufficiente
  • Se si passa lo scritto, si deve obbligatoriamente sostenere anche un colloquio orale, se indicato dal docente. Date ed orari degli orali verranno indicati nella pagina dei risultati e sul Forum.
  • Esercizio 1
    Cosa si intende per Architettura di Von Neumann?
    Cos'e' un Macchina di Turing?
    Esercizio 2
    Si traducano in Mic-1 binario le seguente microistruzioni Mic-1 mal (a sinistra sono indicati gli indirizzi del Control Store dove verranno memorizzate tali microistruzioni).
    0x10 SP=MAR=SP+1
    0x11 PC=PC+1;fetch
    0x12 MDR=TOS=MBR; wr; goto Main1 
    

    Esercizio 3
    Implementare un decodificatore a 32 uscite come metodo assembly IJVM. Tale metodo prendera' in input un numero n compreso tra 0 a 31 e restituira' la stringa di 32 bit che sarebbe prodotta da un circuito decodificatore (decoder) con 5 input e 32 output. Commentare il codice. Codice non commentato non verra' valutato.
    Esercizio 4
    Si consideri il seguente generico programma assembly per il calcolo della somma degli elementi di un array di 1024 interi memorizzati a partire dall'indirizzo A (ogni intero e' memorizzato in una parola di 4 byte). Riscrivere tale programma utilizzando anche la modalita' di indirizzamento indicizzato (Indexed addressing).
          MOV R1,#0        ;aggiorna la somma in R1, posto inizialmente a 0
          MOV R2,#A        ;R2=indirizzo dell'array A
          MOV R3,#A+4096   ;R3=indirizzo della prima parola dopo l'array 
    ciclo ADD R1,(R2)      ;recupera l'operando attraverso R2, registro indiretto
          ADD R2,#4        ;incrementa R2 di una parola (4 byte)
          CMP R2,R3        ;abbiamo gia' finito?
          BLT ciclo        ;se R2 < R3 non abbiamo finito, quindi si continua
    
    L'indirizzamento indicizzato si indica con C(R), dove C e' una costante ed R un registro.
    Commentare il codice. Codice non commentato non verra' valutato.
    Esercizio 5
    Cache a corrispondenza diretta (Direct-Mapped Cache): discuterne.
    Descrivere in dettaglio come viene cercata una parola di memoria in una cache a corrispondenza diretta.