Architetture degli Elaboratori, 1 Marzo 2002


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) Si consideri la struttura a livelli di un calcolatore.
  • Si motivi l'introduzione di tale struttura.
  • Si spieghi cos'e' il semantic gap.


    (b) Si veda un'impresa di costruzioni come un sistema di calcolo che realizza edifici abitabili. Si descrivano almeno 2 dei suoi livelli di macchina astratta (uno puo' essere il livello "muratore").



    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
    Supponete di voler aggiungere all'insieme di istruzioni IJVM la nuova istruzione
    BI2PU num
    che inserisce num in cima allo stack, dove num e' un numero rappresentato con 2 byte.
    Scrivere un segmento di codice Mic-1 da inserire nel codice del microinterprete e che realizzi tale istruzione.


    Esercizio 4
    Scrivere un metodo IJVM che conti il numero di bit uguali ad 1 contenuti nella parola (di 32 bit) che viene passata come argomento al metodo.


    Esercizio 5
    (a) Quali sono le conseguenze, in termini di costi e prestazioni, del passaggio dal Mic-1 al Mic-2?
    (b) Cosa si intende con Shared memory (memoria condivisa)?
    In sistemi organizzati a livelli e' vero che la memoria condivisa puo' essere realizzata in uno qualsiasi dei livelli (hardware, operating system, application..) ? Discutere.


    Esercizio 6
    Supponiate che un programma in assembler IJVM, tradotto e caricato nella Method Area sia formato dal codice corrispondente ad un .main e dal codice di due metodi A e B. Supponiate inoltre che il codice dei due metodi sia formato dallo stesso numero di byte.
    Se volessimo "invertire" di posto i codici di A e di B, quali istruzioni dovremmo modificare?
    Cosa occorrerebbe modificare nella Constant Pool?
    Cosa occorrerebbe modificare nello Stack?