Architetture degli Elaboratori, 29 Gennaio 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) In un sistema di calcolo organizzato a livelli, cosa si intende quando si dice che "un livello non e' completamente coperto da quello superiore"? Fornire un possibile esempio.

(b) Si consideri il linguaggio di programmazione che abbia programmi definiti dalla seguente grammatica:
Programma ::=  Istr | Istr;Programma
Istr ::=  m[x]<-0 | m[x]<-1 | m[x]<-m[y] | if B then Istr 
B ::= m[x]=0 | m[x]=1 | m[x]=m[y]
dove il significato delle istruzioni e' il seguente:
m[x] <- 0     (nella cella di memoria di indirizzo x poni 0)
m[x] <- 1     (nella cella di memoria di indirizzo x poni 1)
m[x] <- m[y]  (nella cella di memoria di indirizzo x poni il contenuto della
               cella di indirizzo y)
if B then I   (se B e' vera allora esegui I)
Inoltre x e y possono avere come valori solo 0, 1, 2, 3. Questo significa che la memoria per i dati associata al nostro linguaggio ha solo quattro celle. Inoltre queste celle della parte di memoria riservata ai dati sono formate da un unico bit (possiamo memorizzarci solo 0 oppure 1).
Ovviamente questo linguaggio non e' universale (non ha la potenza computazionale per descrivere qualsiasi algoritmo).

Dire, motivando dettagliatamente la risposta, perche' la Macchina Astratta associata al linguaggio descritto puo' essere realizzata SOLAMENTE in Hardware.


Esercizio 2
(a) Fornire le definizioni di Circuito Combinatorio, Circuito Sequenziale sincrono e Circuito Sequenziale asincrono. Quali problematiche sorgono nella progettazione di circuiti sequenziali asincroni?




(b) Cosa bisogna modificare della figura seguente perche' questa rappresenti un codificatore a 16 ingressi?



Disegnare, utilizzando una notazione simile a quella della figura, ma con "cerchietti" neri, un decodificatore a due ingressi.







Esercizio 3
Cos'e' un bus asincrono?
Descrivere quello che succede durante una transazione, per esempio una richiesta di lettura in memoria da parte della CPU, su un Bus asincrono. Possibilmente mostrare il grafico temporale che mostra l'evoluzione dei segnali sulle linee ADDRESS, MREQ, RD, MSYN, DATA, SSYN. (Giusto per completezza, ricordiamo che nell'esempio del testo le linee MREQ, RD, MSYN e SSYN sono asserite basse).







Esercizio 4
(a) Dire cosa fa il seguente metodo IJVM.
.method xx(m,n) 
       BIPUSH 0 
lab:   ILOAD m 
       ILOAD n 
       ISUB 
       DUP 
       ISTORE m 
       IFLT eti 
       BIPUSH 1 
       IADD 
       GOTO lab 
eti: IRETURN 
.end-method 
Riscrivere il metodo senza utilizzare tutte le potenzialita' dell'assembler IJVM, cioe' rappresentando m ed n e le etichette direttamente come valori numerici.
(b) Fare una bella domanda intelligente le cui risposta sia "nel terzo e quarto byte".

Esercizio 5
(a) Nel microinterprete Mic-1 per IJVM si potrebbe pensare di realizzare SWAP piu' semplicemente nel modo seguente:
swap1      MAR=SP-1; rd
swap2      MDR=TOS; wr
swap3      MAR=SP; wr
swap4      TOS=MDR; goto main1
Puo' funzionare?
(b) Cosa significa che in un linguaggio di livello ISA c'e' ortogonalita' tra opcodes e modalita' di indirizzamento?
C'e' ortogonalita' in IJVM? Perche'?
Qual e' la modalita' di indirizzamento utilizzata nelle istruzioni GOTO e INVOKEVIRTUAL di IJVM?
Esercizio 6
(a) Descrivere brevemente le caratteristiche peculiari dell'architettura IA-64.
(b) Descrivere il Dynamic linking (Collegamento Dinamico) in MULTICS.