Architetture degli Elaboratori, 6 Ottobre 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) Supponendo che ormai chiunque sappia piu' o meno quali sono le funzionalita' medie di un telefono cellulare: e' possibile vedere un cellulare come una macchina astratta? In caso negativo motivare la risposta. In caso positivo descrivere brevemente le componenti di tale macchina astratta.

(b) Se la risposta al punto (a) e' affermativa, sarebbe possibile utilizzare il linguaggio della macchina astratta telefonino per implementare per interpretazione un altro linguaggio? Fate un esempio (anche fantasioso, ma concretamente realizzabile) di una possibile istruzione di tale linguaggio.

Esercizio 2
(a) Quando si applica una nuova configurazione di ingresso ad una rete combinatoria, e' possibile che insorgano dei fenomeni transitori. Dire quali possono essere le cause di tali fenomeni ed eventualmente descrivere delle possibili soluzioni per evitarli.

(b) Vogliamo costruire un giochino elettronico che ci permetta di giocare alla morra cinese (quella del "sasso", "forbice" e "foglio", per intenderci) premendo dei pulsanti anziche' fare sconvenienti gesti con le mani e che possa permettere ai giocatori di fare la loro mossa senza che questa sia necessariamente simultanea a quella dell'avversario. Ogni giocatore ha tre pulsanti ("sasso", "forbice" e "foglio"). Quando uno di questi viene premuto, premerne un'altro non ha alcun effetto finche' l'altro giocatore (che ovviamente non puo' vedere i pulsanti dell'altro) non fa la sua scelta. A questo punto il sistema indica con un breve segnale luminoso il risultato (vittoria giocatore 1, vittoria giocatore 2 o parita') e il gioco puo' continuare.
La meccanica dei tasti e' tale che non si riescano a premere due o tre tasti insieme.
Fornire l'automa a stati finiti che descrive il comportamento del nostro giochino.
Nel caso la stesura di tutti i possibili ingressi ed uscite sugli archi risultasse eccessivamente pesante, scriverne alcuni significativi e spiegare brevemente cosa manca.

Esercizio 3
(a) Nelle micro-istruzioni Mic-1 in cui e' presente un salto condizionato il campo NEXT_ADDRESS deve avere uno 0 nella posizione piu' significativa. Perche'? Cosa accadrebbe se ci fosse un 1?


(b) Scrivere un programma Mic-1 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).

Esercizio 4
(a) Perche' durante la sua esecuzione l'istruzione INVOKEVIRTUAL di IJVM si va a recuperare nella Method Area il numero degli argomenti del metodo? A cosa gli serve tale informazione?
(b) Scrivere un segmento di codice IJVM che inserisca sullo stack i numeri da 0 a 35. Ovviamente tale codice deve essere composto da molto meno di 35 istruzioni.

Esercizio 5
(a) L'architettura del PicoJavaII prevede, oltre i normali registri, anche un banco di 64 registri da 34 bit. Qual'e' il loro scopo? Il processo di dribbling riguarda tali registri. In cosa consiste?

(b) Descrivere brevemente le caratteristiche peculiari dell'architettura IA-64.


Esercizio 6
Dire quali sono le modalita' di indirizzamento utilizzate per le seguenti istruzioni IJVM: BIPUSH, DUP, IADD, IINC. Dire quale istruzioni di IJVM utilizzano l'indirizzamento diretto.

Esercizio 7
Cosa si intende con dynamic linking (collegamento dinamico)?
Dire cosa succede in MULTICS quando viene eseguita per la prima volta, e nelle successive, la chiamata alla procedura EARTH.



Esercizio 8
Cosa si intende con Shared memory (memoria condivisa)? In sistemi organizzati a livelli la memoria condivisa puo' essere realizzata in uno qualsiasi dei livelli (hardware, operating system, application..)? Discutere.