Architettura degli elaboratori, 16 Dicembre 2008

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.
  • Coloro che debbono sostenere l'esame da 9 crediti, uno volta superato lo scritto dovranno sostenere un orale sulla parte del programma del loro anno di corso non coperto dal programma di quest'anno.
  • Esercizio 1
    Si consideri la seguente frase presa dalle note del corso:
    "La gerarchia di macchine astratte di un sistema di calcolo non termina necessariamente con l'implementazione di un linguaggio di programmazione HLL L."
    Commentarla, spiegandone il significato.
    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
    Tradurre in assembly IJVM il seguente metodo:
    	public int owl(int x, int y)
    {
    int counter = 0;

    while(counter < 12)
    { x = counter + x + y;
    counter = counter + 1;
    }

    return castle(x);
    }
    Supporre di avere gia' un metodo IJVM di nome "castle".
    Tradurre il metodo cosi' com'e', senza fare ottimizzazioni.
    Commentare il codice. Codice non commentato non verra' valutato.

    Esercizio 6 Descrivere nel modo piu' dettagliato possibile quello che avviene su un bus sincrono durante una operazione di lettura, in particolare considerando l'esempio del testo, in cui le linee di controllo sono MREQ, RD e WAIT.