Architettura degli elaboratori, 06 Ottobre 2006
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 voti (quelli positivi) verranno registrati immediatamente dopo la correzione.
Chi non intendesse accettare un voto basso o intendesse fare un orale
(se il voto fosse maggiore di 24), dovra' indicarlo sul compito.
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
Descrivere brevemente cosa si intende per "struttura a livelli dei sistemi di calcolo".
Esercizio 2
Si consideri la seguente versione dell'implementazione Mic-1 dell'istruzione SWAP.
swap1 MAR=SP-1; rd
swap2 MDR=TOS; wr
swap3 MAR=SP; wr
swap4 TOS=MDR; goto main1
Tale versione, pur se piu' corta di quella proposta dal testo, in realta' non puo'
funzionare a causa della presenza della "rd" in swap1 e della "wr" in swap2.
Perche'?
Esercizio 3
Si supponga di aggiunto ad IJVM una nuova istruzione BOING e di aver inserito
nel Control Store il codice Mic-1 che la realizza.
Si supponga che il codice operativo di BOING sia 0x01 e che,
per motivi a noi ignoti, sia impossibile inserire il segmento di codice Mic-1
che realizza BOING nel Control Store a partire dall'indirizzo 0x01.
Scrivere le istruzioni (due o piu') da mettere nel microinterprete al posto dell'istruzione
Main1 affinche' tutto possa funzionare comunque correttamente.
Nello scrivere il codice si supponga che l'etichetta "boing1" corrisponda all'indirizzo
del Control Store dove e' stato memorizzato il codice che realizza BOING.
Commentare il codice. Codice non commentato non verra' neanche preso in considerazione.
Esercizio 4
Si consideri l'arbitraggio centralizzato del bus con schema daisy chaining
(Fig.3-40(a) del testo).
Si supponga che ogni dispositivo che puo' prendere possesso del
bus abbia una linea di output chiamata reqM con cui fa richiesta del bus, e una linea
di input chiamata grantM con cui riceve il permesso di utilizzare il bus. Tali linee sono
collegate ad un chip contenente l'hardware Mic-1 che, programmato adeguatamente, puo' eseguire le azioni
richieste dal tipo arbitraggio daisy chaining.
In particolare, la linea reqM viene collegata al bit TOS[0] di Mic-1, mentre la linea
grantM al bit LV[0] di Mic-1. Inoltre, la linea di Bus-grant (concessione del bus)
della Fig.3-40(a) in input (che chiamiamo grantIN) viene collegata a OPC[0], la linea
di Bus-grant in output (che chiamiamo grantOUT) viene collegata a SP[0], mentre
la linea Bus-Request (richiesta del bus) viene collegata a PC[0].
Riassumendo, gli elementi coinvolti e le connessioni sono:
----------
|Arbitro | . . . . ---------------------------------------------- . . . .
| | ^ Bus-request
| | . . . . --Bus-grant--- | --------------- . . . .
---------- | | |
|grantIN | |grantOUT
-------------------------
| |
| MIC-1 |
-------------------------
^ |
reqM | | grantM
| \/
--------------------
| |
| Dispositivo-n |
| |
--------------------
grantIN ---> OPC[0]
reqM ---> TOS[0]
grantOUT < --- SP[0]
grantM < --- LV[0]
Bus-request < --- PC[0]
Programmare il chip Mic-1 (scrivere cioe' un programma Mic-1) in modo da permettere a
tale chip di gestire, per conto del dipositivo ad esso collegato, la richiesta
del bus.
Commentare il codice.
Esercizio 5
Cosa si intende per modalita' di indirizzamento? Descrivere brevemente le
principali modalita' di indirizzamento ed il loro uso.
Esercizio 6
Nel precedente appello era presente un esercizio in cui si chiedeva
di aggiungere l'istruzione IRADIX ad IJVM.
Tale istruzione prende il valore in cima allo Stack e lo sostituisce
con l'approssimazione intera della sua radice quadrata.
Non si chiedeva di implementare completamente tale istruzione in Mic-1, pero' si
voleva che l'istruzione IRADIX avesse quanto detto come effetto,
supponendo di avere a disposizione un metodo IJVM, radint,
che calcolava appunto
l'approssimazione intera della radice quadrata.
L'esercizio consisteva nello scrivere un programma Mic-1.
Tale programma
non doveva far altro che preparare lo Stack per l'invocazione del
metodo radint e fare cio' che farebbe INVOKEVIRTUAL (conoscendo gia' il
numero di variabili locali ed argomenti del metodo radint).
Per risolvere correttamente l'esercizio occorreva anche implementare
in Mic-1 il ritorno dal metodo radint, oppure la normale
istruzione IRETURN era sufficiente? Giustificare adeguatamente la risposta.