Architettura degli elaboratori, 8 Marzo 2007
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
(se il voto fosse maggiore di 24), deve comunicarlo per tempo al docente.
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.
Esercizio 1
Si consideri la seguente frase presa dalle note del corso:
Una programmazione consapevole ed adeguata per una particolare
realizzazione di una macchina astratta e' possibile solo se l'utente
conosce non solo la struttura della macchina astratta, ma anche quali
componenti sono stati realizzati direttamente in hardware,
quali emulati, quali interpretati.
Infatti, scegliere un modo piuttosto che un altro di realizzare un
algoritmo puo' risolversi in un guadagno di prestazioni,
dovuto alla maggiore efficienza della realizzazione di alcune
componenti della macchina astratta rispetto ad altri.
E' un'affermazione condivisibile? Giustificare brevemente la risposta.
Esercizio 2
I segnali provenienti dalle parole di una memoria possono venire collegati ad un bus tramite
dei tri-state devices (in particolare dei noninverting buffer), come
e' fatto nell'esempio di memoria 4x3 del testo.
Descrivere come in tale esempio i 3 tri-state devices sono collegati ai segnali provenienti
dalle parole di memoria e ai segnali CS (Chip Select), RD (Read), OE (Output Enable).
Dire anche qual e' la funzione di CS, RD e OE.
Esercizio 3
Supponiate di estendere l'hardware di Mic-1 in modo da poter inserire dall'esterno
un valore (positivo) nel registro CPP. Inoltre supponiate che il registro SP sia collegato
direttamente ad un campanello che suona quando il valore di SP e' 1 (e resta muto
quando e' 0).
Noi vogliamo che, non appena qualcuno dall'esterno inserisce un valore
m in CPP, dopo m cicli di clock il campanello si metta a suonare per 2*m cicli di clock.
Scrivere un microprogramma Mic-1 che permetta tale funzionamento (all'inizio SP e' 0).
N.B.: Va bene anche se si aspettano uno o due cicli in piu' o se il campanello
suona uno o due cicli in piu' di quanto richiesto.
Inoltre si puo' scrivere il
microprogramma senza tener conto del vincolo di Mic-1 che impone che
due microistruzioni con salto condizionato con uguale etichetta sul ramo
"else" abbiano anche uguale etichetta sul ramo "then".
Commentare il codice. Codice non commentato non verra' valutato.
Esercizio 4
Supponiate di avere un Bus con 4 linee per gli indirizzi e che tali linee
siano collegate al segnale CS di una ROM come indicato nella figura.
__________ CS
|
AND
_________
| |
OR |
______ |
| | |
| | |
A3 -----x--|----|-------
A2 --------|----|-------
A1 --------x----|-------
A0 -------------x-------
Ovviamente una CPU collegata a tale bus potra' leggere in uno spazio di
indirizzamento di 24-1 parole. Di queste, quali sono quelle che
fisicamente appartengono alla ROM sopra citata? Giustificare la risposta.
Esercizio 5
Si supponga che sia presente nella Constant Pool una costante "Ticks-number"
(e anche che tale costante sia modificabile dal sistema operativo).
Si supponga inoltre di avere un metodo assembly IJVM "Ding", con zero argomenti,
il cui effetto, quando invocato, e' quello di far suonare brevemente una campanella.
(si puo´supporre che Ding, dovendo comunque restituire un valore, come fanno
tutti i metodi, restituisca 0).
Scrivere un metodo assemlby IJVM con un argomento n, che faccia suonare la campanella
n*Ticks-number volte, e che restituisca 0 o 1 a seconda che la campanella sia stata suonata
un numero pari o dispari di volte.
Si puo' supporre, se si vuole, di avere a disposizione un metodo Mult
che esegue la moltiplicazione.
Commentare il codice. Codice non commentato non verra' valutato.
Esercizio 6
Nell'esempio di estensione della macchina Mic-1 con interruzioni,
si dice che il gestore delle interruzioni restituisce il controllo al programma
interrotto tramite l'esecuzione di un'istruzione apposita, RETI (RETurn from Interrupt).
Perche' cio' non viene fatto invece mediante l'istruzione IRETURN?