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?