Architetture degli Elaboratori
9 Ottobre 2001


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.

Esercizio 1
(a) Prendete in considerazione l'implementazione descritta nel testo (Tanenbaum) della macchina astratta IJVM. Quali componenti della macchina astratta vengono realizzate (totalmente o parzialmente) dallo Stack?
(b) Una cucina dotata di tutto, compresa una persona che sta cucinando, puo' esser vista come la realizzazione hardware di una macchina astratta? Se si, identificarne la varie componenti. Se no, spiegarne il motivo.



Esercizio 2
(a) Si consideri la funzione booleana f= a'b + cd'b + d'b + ab'c' (l'apice " ' " corrisponde alla funzione not)
  • Quale degli implicanti dell'insieme I = { ab'c'd, c', bc, a'bd } e' un implicante di f ?
  • Qualche elemento di I e' un implicante primo di f?
  • I e' un insieme irridondante di implicanti?
  • Eliminando c' da I si ha un insieme irridondante?
    Giustificare formalmente tutte le risposte.

    (b) Fornire l'automa a stati finiti che descriva il comportamento di un distributore automatico che accetta tre tipi di monete di valore 5, 10 e 25. La merce viene erogata al raggiungimento del valore 20. Il distributore prevede un resto massimo di una moneta da 5 e di una da 10.
    Fornire solo l'automa a stati finiti, non la sua realizzazione.



    Esercizio 3
    Nelprogramma del corso e' presente un esempio di I/O gestito ad interruzioni per la macchina del livello ISA del Tanenbaum. In tale esempio il controllo della presenza di interruzioni e' realizzato dall'interprete microprogrammato estendendo il microinterprete del Tanenbaum con le seguenti microistruzioni.
    int1 if opc[15] goto main1;
    int2 if (not(opc[0]) and not(opc[1]) ... and not(opc[7])) goto main1;  
    int3 SP=MAR=SP+1; 
    int4 MDR=PC; wr;  
    int5 SP=MAR=SP+1; 
    int6 MDR=OPC; wr;  
    int7 MBR=OxFF; rd;  
    int8 PC=PC+1; fetch; goto(MBR); 
    int9 OPC[15]=1; goto main1; 
    main1  ecc.
    
  • Descrivere cosa fanno (e perche') tali microistruzioni. Non tutte le microistruzioni sono miscroistruzioni Mic-1. Quali non lo sono? perche' sono state aggiunte?
  • Modificare il precedente microcodice affiche' il gestore delle interruzioni venga eseguito ad interruzioni disabilitate.
  • Dire brevemente e informalmente come si potrebbe far si che il gestore gestisca le interruzioni supponendo che esistano delle priorita' tra i vari devices.
  • Perche' il gestore delle interruzioni deve necessariamente essere realizzato con un segmento di codice IJVM e non in Mic-1?
  • E' possibile poter far si che il controllo della presenza di interruzioni sia realizzato in hardware? Se si, descrivere informalmente un modo possibile di farlo, se no, giustificare la risposta negativa.



    Esercizio 4 Supponete di avere la seguente funzione in un certo linguaggio di programmazione:
    function uhuh (a,b : int)
       localvar n,x : int
         begin
              x <- 3;
              for n from 1 to a
                 do
                   if x == 73
                     then  x <- ohoh(x+1) + x
                     else  x <- x-b
                 enddo
              return x
         end
    
    Traducete la funzione uhuh in assembler IJVM. (ohoh e' un altra funzione che si suppone aver gia' scritto)
    Fornire poi la traduzione della stessa funzione in IJVM, ma non utilizzando alcuna pseudoistruzione dell'assembler IJVM e supponendo che nella method area il primo byte della traduzione della funzione ohoh verra' memorizzato all'indirizzo 200 e che tale indirizzo verra' memorizzato nel constant pool a distanza 4 dalla base del constant pool.


    Esercizio 5
    Prendete in considerazione la figura 4-43 del Testo, che riguarda un esempio di possibile funzionamento di una CPU superscalare con inizio e completamento in ordine.
    Spiegare brevemente in dettaglio cosa descrive la figura ed il significato delle sue varie parti.
    Quale vantaggi si otterrebbero nell'esempio fornito dalla figura se il completamento potesse essere fuori ordine?


    Esercizio 6 Supponete di avere un sistema dotato di una memoria virtuale composta da 32 pagine di 8 celle ciascuna, ed una memoria principale composta da 16 pagine.
    Si supponga che la tabella dei frames sia la seguente:
         -------------
      31 | 0 |  0111 |
      30 | 0 |  1110 |
      29 | 1 |  0011 |
      28 | 0 |  0110 |
      27 | 1 |  0010 |
      26 | 0 |  1000 |
      25 | 1 |  0111 |
      24 | 0 |  0111 |
      23 | 1 |  0001 |
      22 | 0 |  1000 |
      :  : : :   :   :
      :  : : :  :   :
      :  : : :  :   :
       9 | 0 |  0001 |
       8 | 1 |  0000 |
       7 | 0 |  1010 |
       6 | 1 |  0100 |
       5 | 0 |  0100 |
       4 | 0 |  1100 |
       3 | 0 |  0100 |
       2 | 1 |  0101 |
       1 | 1 |  0110 |
       0 | 0 |  1100 |
         -------------
    
    Supponete di avere anche una memoria cache a mappa diretta composta da 4 linee di cache di 4 celle ciascuna descritta nella seguente figura.
     Validita'   Tag           Contenuto
                          0     1     2     3  
         ---------------------------------------
         | 0 |  11     | 0   | 0   | 0   | 0   | 
         | 1 |  01     | 10  | 11  | 12  | 13  | 
         | 1 |  01     | 255 | 100 | 128 | 150 | 
         | 0 |  00     | 100 | 200 | 100 | 200 | 
         ---------------------------------------
    
    Si supponga ora di voler leggere la cella di indirizzo virtuale 10111001.
    Tale lettura:
  • causera un page fault ? Perche'?
  • causera' un cache miss ? Perche'?
  • la parola cercata e' nella cache? Dove? Perche?
  • la parola cercata e' in memoria principale? dove? Perche'?
  • dove si trova in memoria virtuale ?
  • come sara' la cache dopo la lettura ?