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.