Architetture degli Elaboratori, 14 Dicembre 2000


Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte ai quesiti vanno scritte nel foglio di bella copia.
Si raccomanda la massima SINTETICITA' negli esercizi che richiedano una spiegazione scritta. L'eccessiva verbosita' verra' considerata negativamente.



Esercizio 1
(a) Volendo fornire una definizione di Macchina Astratta parallela, questa deve avere una o piu' componenti "Interprete", una o piu' componenti "Memoria"? Discutere.

(b) Considerate il livello ISA corrispondente al linguaggio IJVM realizzato nel testo del Tananbaum sopra il livello microprogrammato Mic-1. Ci sono componenti della macchina astratta IJVM realizzate per interpretazione? ce ne sono di realizzate direttamente Hardware? ce ne sono altre che sono parte del livello sottostante?

Esercizio 2
(a) Fornire la definizione di completezza funzionale per un insieme di operatori booleani. L'insieme {Id, And} e' funzionalmente completo? (Id e' la funzione unaria identita').

(b) Fornire una mappa di Karnaugh a tre variabili che contenga solo implicanti primi essenziali. Una che contenga implicanti primi ma non implicanti primi essenziali. Una che contenga solo implicanti primi. Una che contenga implicanti ma non implicanti primi.

Esercizio 3
Descrivere l'automa a stati finiti Accumula4. Tale automa riceve in sequenza singoli segnali binari restituendo sempre 4 bit 0 agli istanti 4k-3, 4k-2, 4k-1 (per ogni k>1). Agli istanti 4k restituira' invece una stringa di bit formata dai bit ricevuti negli istanti 4k-3, 4k-2, 4k-1, 4k.
Esempio di comportamento di Accumula4:
istanti  1    2    3    4    5    6    7    8    9    10    11
Input    0    1    0    1    1    1    0    0    1    1     1  
Output  0000 0000 0000 0101 0000 0000 0000 1100 0000 0000  0000 
Supponete di non aver la possibilita' di costruire nuovi circuiti e di avere a disposizione i seguenti moduli: Addizionatori, Registri, Multiplexer (selettori in ingresso), Demultiplexer (selettori in uscita), Comparatori. Tali moduli li potete avere di qualsiasi dimensione. Costruire, componendo tali moduli, la rete sequenziale sincrona che realizza Accumula4.
Tenete presente che avete la possibilita' di fornire agli ingressi dei moduli anche dei valori costanti.

Esercizio 4
(a) Scrivere un programma Mic-2 (Due!) che interpreti la seguente istruzione che intendiamo aggiungere all'IJVM:
ADDLCL varnum1 varnum2 varnum3 la cui semantica e' la seguente



M[LV + varnum1] <-- M[LV + varnum2] + M[LV + varnum3] (si pone nella variabile locale indicata da varnum1 la somma delle variabili locali indicate da varnum2 e varnum3.
I campi varnum solo lunghi un byte.
Volendo, per semplicita', si possono utilizzare, per memorizzare valori temporanei, i registri TOS, CPP e OPC, senza preoccuparsi di ripristinare i loro valori precedenti (per TOS e CPP infatti non farlo in pratica creerebbe problemi).

(b) Tradurre in Mic-1 binario la seguente istruzione Mic-1 mal:
LV=MAR=MDR;rd;if (Z) goto A; else goto B
Dove A corrisponde all'indirizzo 111001011. A quale indirizzo corrisponde B?

Esercizio 5
Scrivere il codice IJVM corrispondente ad un metodo Java che abbia due numeri naturali come parametri e che restituisca il piu' grande dei parametri se il piu' piccolo e' uguale a 0, altrimenti restituisca il piu' piccolo dei parametri.
Qual'e' il valore dei 4 byte che precedono il codice quando inserito nella Method Area?
Fare un esempio di chiamata di tale metodo.


Esercizio 6
(a) Cosa significa che in un linguaggio di livello ISA c'e' ortogonalita' tra opcodes e modalita' di indirizzamento?
C'e' ortogonalita' in IJVM? Perche'?
(b) Qual e' la modalita' di indirizzamento utilizzata nelle istruzioni GOTO e INVOKEVIRTUAL di IJVM?

Esercizio 7
Quando un programma viene scritto, contiene solitamente dei nomi simbolici per riferirsi a indirizzi di memoria, per esempio BR L. Il momento in cui viene determinato l'indirizzo vero della memoria principale che corrisponde ad L si chiama binding time. Esistono varie possibilita' riguardo a quando puo' avvenire il binding.
Ditene, se non le ricordate tutte, almeno qualcuna.

Esercizio 8
Con semantica della memoria si intende un "contratto", un insieme di regole da seguire, tra il software e la memoria hardware. Tali regole prendono il nome di modelli di consistenza. Per quali tipo di macchine ha senso parlare di modelli di consistenza della memoria? Potete descrivere qualche modello di consistenza?