Architettura I e laboratorio, 11 Luglio 2002

Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte vanno scritte nel foglio di bella copia. Massima SINTETICITA'. L'eccessiva verbosita' verra' considerata negativamente.

Esercizio 1
(a) Prendete in considerazione la macchina astratta Mic-1. Quali parti della sua realizzazione hardware descritta nel testo (Tanenbaum) corrispondono alla componente Controllo di Sequenza e perche'?
(b) Che cos'e' un latch di tipo SR? Come funziona?
Esercizio 2
(a) 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?.
(b) Scrivere il microcodice Mic-1 che implementi l'istruzione JVM POPTWO. Questa istruzione elimina due parole dalla cima dello Stack.
Esercizio 3)
(a) Cosa si intende per esecuzione speculativa (speculative execution)? Quali problemi puo' causare, in particolare riguardo ad istruzioni di LOAD?
(b) Supponendo di avere gia' sviluppato il codice IJVM dei metodi mult e div, che realizzano, rispettivamente, la moltiplicazione e la divisione intera, scrivere il codice assembly IJVM di un metodo che riceva a, b e c come parametri formali e restuisca il valore dell'espressione ((a*b)+7) div c.
Esercizio 4
(a) Consideriamo il seguente frammento di programma (descritto anche nel Tananbaum) scritto in un linguaggio assembly generico.
MOV R1,#0       ; accumula l'OR in R1, inizialmente 0
        MOV R2,#0       ; R2=indice, i, del prodotto: A[i] AND B[i]
        MOV R3,#4096    ; R3=indice del primo valore da non usare
LOOP:   MOV R4,A(R2)    ; R4=A[i]
        AND R4,B(R2)    ; R4=A[i] AND B[i]
        OR  R1,R4       ; OR tutti i prodotti booleani in R1
        ADD R2,#4       ; i=i+4 (una parola alla volta =4byte)
        CMP R2,R3       ; finito?
        BLT LOOP        ; se R2 < R3, non abbiamo finito, quindi continua.
Tale programma suppone di avere in memoria due vettori di 1024 parole. Tali vettori sono memorizzati a partire dagli indirizzi A e B. Ogni parola e' lunga 4 byte e l'indirizzamento della memoria e' al byte. Il programma calcola, per ogni parola del vettore A, l'AND bit a bit di tale parola con la parola corrispondente in B, per poi fare l'OR bit a bit di tutte le 1024 parole ottenute.
Riscrivere il codice supponendo di avere a disposizione tutte le modalita' di indirizzamento utilizzate nel programma dato, escluso l'indirizzanento indice, supponendo pero' di avere a disposizione anche l'indirizzamento indiretto dei registri, che si denota con (r), dove r e' il nome di un registro.
Ricordiamo che #c denota indirizzamento immediato, r quello registro e c(r) quello indice.
Ricordate che il primo argomento delle istruzioni e' anche quello dove finisce il risultato.
(b) Considerando un'architettura che utilizza parallalismo di tipo pipeline, si dica, motivando brevemente, se ciascuna delle seguenti affermazioni e' vera o falsa, o si discuta in quali contesti potrebbe essere vera o falsa.





Architettura degli Elaboratori
11 Giugno 2002
Parte aggiuntiva per Anni Precedenti


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.

Esercizio 5
Sintetizzare (descrivendo tutti i passi di sintesi, per quanto possano essere semplici) un circuito sequenziale che prenda in ingresso una sequenza di caratteri "a" e "b" ed invii un segnale 1 ogni volta che nella sequenza compare un carattere "b" che si trova in posizione pari dentro una sottosequenza formata da soli "b". Esempio:
-Input: aabbaaabbbbbaba....
Output: 000100001010000.....

N.B.: i circuiti combinatori della rete devono essere sintetizzati utilizzando il procedimento per ottenere forme SP minimali.



Esercizio 6
Cos'e' un algoritmo di routing? Quando un algoritmo di questo tipo si dice statico?, quando dinamico?
Il dimensional routing algorithm e' un algoritmo di routing senza deadlock usato per griglie rettangolari. Quali nodi si attraversano utilizzando questo algoritmo per andare dal nodo (3,7,5) a quello (6,9,8) in una griglia tridimensionale?