Architettura degli elaboratori, 30 Giugno 2009

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

(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.
  • I risultati (sia positivi che negativi) verranno registrati sul portale CEA non appena corretti i compiti. Chi non intenda accettare un voto basso o desideri fare un orale in caso di voto basso (se quest'ultimo e' comunque maggiore di 24), deve comunicarlo per tempo al docente o all'assistente in aula ed indicarlo sul proprio elaborato.
  • 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.
  • Per passare l'esame occorre che almeno uno degli esercizi 2 e 3 sia svolto in maniera sufficiente
  • Esercizio 1
    Cos'e' una Macchina Astratta? Quali sono le componenti di una Macchina Astratta? Identificare nell'Hardware Mic-1 le varie componenti della macchina astratta che tale Hardware realizza.
    Esercizio 2
    Implementare in Mic-2 l'istruzione WIDEX. Tale istruzione e' un prefisso per i codici operativi di BIPUSH e IINC (similmente a come WIDE e' un prefisso per ILOAD e ISTORE). Se WIDEX precede BIPUSH const vuol dire che const e' un argomento di 4 byte. Lo stesso per IINC varnum const, dove const sara' di 4 byte (varnum e', come al solito, 1 byte).
    Similmente a come si fa per WIDE, supponiamo che gli indirizzi del Control Store dove verranno memorizzati i microprogrammi che implementano le versioni estese di BIPUSH e IINC siano 0x110 e 0x112, dove 0x10 e 0x12 sono i codici operativi, rispettivamente, di BIPUSH e IINC (In realta' il codice operativo di IINC e' 0x84, ma per far funzionare le cose supponiamo per semplicita' che sia invece 0x12).
    Esercizio 3
    Supponiamo di avere una funzione binaria h(i,j), e che questa sia implementata da un metodo H in assembly IJVM. Scrivere un metodo assembly IJVM che, preso n, calcoli l'n esimo elemento della sequenza di gigionacci, definito ricorsivamente come segue:
    gig(0) = 1 
    gig(1) = 1 
    gig(n)= h(gig(n-1),gig(n-2)) 
    

    Esercizio 4
    A cosa serve la linea di WAIT in in bus sincrono? Si potrebbe pensare di avere un sistema che utilizzi un bus senza linea di wait? Giustificare. Quali conseguenze comporterebbe una tale scelta?
    Esercizio 5
    La rappresentazione dei numeri reali in virgola mobile (floating point) e lo standard IEEE 754: discuterne.

    Esercizio 6
    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.