Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica del comportamento è la seguente: se a 0 a 1 : z 0 = max (b 0, b 1 ) e z 1 = min (b 0, b 1 ), altrimenti z 0 e z 1 sono rispettivamente uguali alla somma ed al riporto dell addizione di b 0, b 1. 2. Progettare una ALU in complemento a due che esegua addizione, sottrazione, traslazione destra e traslazione sinistra (le traslazioni applicate all ingresso sinistro della ALU). La ALU dispone dei Flag (risultati di predicati): Segno del risultato dell operazione eseguita, risultato uguale a Zero, Carry (il riporto della cifra più significativa), Overflow, e Shifted (bit espulso nelle traslazioni). Applicare formalmente i vari metodi per passare dalla specifica alla realizzazione. 3. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica del comportamento è la seguente: se a 0 a 1 : z 0 = max (b 0, b 1 ) e z 1 rimane inalterata, altrimenti z 0 rimane inalterata e z 1 = 0. 4. Una rete logica riceve in ingresso una sequenza di coppie (J, A), dove J è un valore naturale di 5 bit ed A è un valore intero di 32 bit in complemento a due, ed invia in uscita una sequenza di coppie (Z 0, Z 1 ), dove Z 0 è un valore booleano e Z 1 un valore intero di 32 bit in complemento a due. Sapendo che A assume il valore zero prima che inizi la sequenza di ingresso, la specifica del comportamento della rete è la seguente: per ogni coppia (J, A), se A[J] = 0, Z 0 riconosce se A è una potenza di 2 e Z 1 è uguale al massimo tra il valore attuale di A ed il valore precedente di A, se A[J] = 1, Z 0 riconosce se 1024 A < 2048 e Z 1 è uguale al minimo tra il valore attuale di A ed il valore precedente di A. 5. Fare l analisi della rete sequenziale della figura seguente e valutarne il ciclo di clock nelle stesse ipotesi dell esercizio precedente. Le operazioni di shift (R = verso destra, L = verso sinistra) sono applicabili sia al primo che al secondo ingresso della ALU. M Q A B 1 K 1 K 2 2 Flag SH (bit espulso) Flag S (segno) ALU : +, sh R, sh L U a1 a2 a3
2 Trasformare la rete nella rete equivalente secondo l altro modello matematico e farne l analisi. Modificare la in modo da assicurare che gli ingressi M, Q rimangano stabili per tutta la durata del ciclo di clock. Fare l analisi della rete così modificata. 6. I seguenti microprogrammi rappresentano due implementazioni diverse della stessa funzione: microprogramma 1:: 0. B A, 1 1. shl (1) (A) C, 2 2. shr (1) (A) A, 3 3. A + C A, 4 4. A + D A, 0 microprogramma 2:: 0. B A, 1 1. shl (1) (A) C, 2 2. shr (1) (A) A, 3 3. A + C + D A, 0 In entrambi i casi: a) mostrare lo schema della Parte Operativa, b) calcolare la lunghezza (in nsec) del ciclo di clock assumendo ritardi tipici multipli di t p. Confrontare quindi le due implementazioni dal punto di vista del tempo complessivo di elaborazione e trarre delle conseguenze di portata generale sul problema di minimizzare il tempo di elaborazione. 7. Progettare una unità di elaborazione U che riceve in ingresso messaggi (OP, DEST A, B), con OP e DEST di 1 bit, e A e B interi di 32 bit; se OP = 0 calcola (A + B 5) / 2, altrimenti (A + B) % 1024; se DEST = 0 invia il risultato ad una certa unità U a, altrimenti lo invia ad una unità U b diversa da U a. Spiegare se tale funzionalità può essere concettualmente realizzata anche come una singola rete combinatoria o come una singola rete sequenziale. Nel caso una o entrambe le possibilità esistano, provare a darne una effettiva realizzazione. 8. Spiegare se, in generale, il numero delle variabili di condizionamento, il numero delle variabili dello stato interno della Parte Controllo e il numero delle variabili di controllo hanno impatto sul ritardo di stabilizzazione della funzione delle uscite e della funzione di transizione dello stato interno della Parte Controllo di un unità. 9. Spiegare il seguente concetto: la formula per determinare il ciclo di clock fornisce, in generale, una valutazione del caso peggiore, ma con un procedimento la cui complessità è indipendente dal numero di frasi del microprogramma. Verificare questo concetto su un esempio opportuno. 10. Progettare una unità di elaborazione così definita: ha tre ingressi: A di 32 bit, J di 5 bit, OP di 1 bit, e due uscite: COUNT di 6 bit e B di 32 bit; interpreta due operazioni esterne: per OP = 0: se il bit J- esimo di A assume il valore 1, allora il valore di A viene trasferito in B; per OP =1: il numero di 1 presenti in A viene trasferito in COUNT. In questo esercizio non è permesso di far uso della funzione di shift.
3 11. Una unità di elaborazione possiede al suo interno una memoria A di 1M locazioni di 32 bit, riceve messaggi IN di 32 bit e invia messaggi OUT di 21 bit. L unità è descritta del seguente microprogramma, dove I e C sono registri di 21 bit: 0. IN B, 0 I, 0 C, 1 1. (I 20, segno(a[i] B), B 5 = 0 0 0, 0 1 1 ) C + 1 C, I + 1 I, 1 ; (= 0 0 1, 0 1 0 ) I + 1 I, 1 ; (= 1 ) C OUT, 0 Ricavare la PO, dimostrare che risponde al modello matematico di Moore, e valutare il ciclo di clock di U. 12 Progettare una unità di elaborazione avente una uscita A e due ingressi: COP, di 1 bit, e N, numero naturale di k bit (k > 1). Se COP = 0 in A viene calcolato il valore dell N-esimo numero della serie di Fibonacci, se COP = 1 la somma dei primi N numeri naturali. Valutare il tempo medio di elaborazione dell unità, supponendo che le due operazioni esterne siano equiprobabili. 13. Progettare una unità di elaborazione capace di eseguire operazioni su array unidimensionali di interi. L unità contiene una memoria di registri A[N]. Le operazioni da implementare sono: a) caricamento di A con dati provenienti dall esterno, uno alla volta in sequenza, b) somma di tutti gli elementi di A (da restituire all esterno), c) ricerca di un valore x in A, restituendo all esterno l indirizzo dell elemento uguale ad x se esiste, oppure un numero negativo. 14. Una unità di elaborazione U contiene un componente logico memoria M di capacità N = 16K interi non negativi di 32 bit. Riceve da U1 messaggi (A, IND), con A intero non negativo di 32 bit e IND di 14 bit, ed invia ad U2 messaggi (OUT) di 15 bit. Una prima versione di U è espressa dal seguente microprogramma, dove zero (M[IND] A) funge da codice operativo di due operazioni esterne equiprobabili, e la funzione booleana f(x), con x intero non negativo, è vera se e solo se x è una potenza di due 256 Mega: 0. ( RDY1, zero(m[ind] A) = 0 ) nop, 0; ( = 1 1 ) reset RDY1, set ACK1, 0 I, 0 C, 1; ( = 1 0 ) reset RDY1, set ACK1, A M[IND], 0 1. (I 0, ACK2 = 0 ) f(m[i m ]) H, 2; ( = 1 0 ) nop, 1; ( = 1 1 ) C OUT, set RDY2, reset ACK2, 0; 2. ( H = 0 ) I + 1 I, 1; ( = 1 ) I + 1 I, C + 1 C, 1 Si chiede una seconda versione di U tale che, esprimendo il tempo medio di elaborazione della prima versione come T 1 p N, la seconda versione abbia un tempo medio di elaborazione T 2 q N, con q < p. Detto t p il ritardo di una porta logica con al massimo 8 ingressi, le ALU e la memoria M hanno ritardo di 5t p. Scrivere il microprogramma della seconda versione, realizzare f(x) e valutare le costanti p e q. Spiegare chiaramente come si è ragionato per definire la seconda versione.
4 15. Progettare una unità di elaborazione che implementi una coda FIFO (First In First Out) di al più 64 elementi di tipo intero. L unità interagisce con una unità produttrice, che invia elementi da inserire, e con una unità consumatrice, che chiede elementi da estrarre. 16. Una unità di elaborazione U contiene una memoria MEM di capacità 1M parole. U comunica in ingresso con una unità U Master e in uscita con le unità U 0,, U 7. U riceve in ingresso messaggi (IDA, IDB, J) dove IDA e IDB sono gli identificatori unici di due array A e B di 1K bit contenuti in M, e J è un valore di 2 bit. U calcola il numero NUM di elementi di A e B, con lo stesso indice, che hanno il byte J-esimo uguale. Detto Q l ultimo valore di tale byte, NUM è inviato all unità U H con H = Q div 32. É noto il ritardo t p di una porta logica con al massimo 8 ingressi. Una ALU ha ritardo uguale a 5t p. Valutare il tempo medio di elaborazione di U in funzione di t p, spiegando adeguatamente la risposta. 17. Una unità di elaborazione U contiene un componente logico memoria M di capacità 64 parole ognuna di 32 bit; riceve in ingresso, da una stessa unità U M, messaggi (A, B, C, J) con A e B parole di 32 bit, C di 64 bit, e J di 4 bit. I valori di C hanno sempre la seguente caratteristica: uno ed un solo bit vale 1 e tutti gli altri 0; nel seguito con P(C) si indicherà la posizione del bit uguale a 1 in C; invia in uscita messaggi di una parola ad una delle 16 unità U 0,, U 15. Il funzionamento è il seguente: se A < B: scrive nella locazione di M di indirizzo uguale a P(C) il contenuto della stessa locazione incrementato di 1, ed invia il valore scritto all unità U J ; se A = B: scrive nella locazione di M di indirizzo uguale a P(C) il contenuto della stessa locazione incrementato di 1; se A > B: invia il contenuto della locazione di M di indirizzo uguale a P(C) incrementato di 1 all unità U J. È noto il ritardo t p di una porta logica con al più 8 ingressi. Il ritardo di una ALU vale 5t p. Spiegare e mostrare in dettaglio la struttura del componente logico memoria M in modo da utilizzare direttamente il valore di C per l indirizzamento. Scrivere e spiegare il microprogramma e valutare il tempo di elaborazione di U, in funzione di t p, rispettando entrambi i seguenti requisiti: a) minimizzare il numero di variabili di condizionamento, b) minimizzare il numero di cicli di clock. Mostrare la struttura della Parte Operativa. 18. Una unità U riceve da una unità U A una chiave K di 16 bit ed invia ad una unità U B il numero di occorrenze di K in una memoria interna M di 16K parole di 16 bit ciascuna. Al fine di velocizzare le operazioni, si assume che i valori relativi alle occorrenze di 8 chiavi distinte vengano mantenuti in 8 coppie di registri < K i,v i >, dove K i contiene il valore della chiave ricevuta da U A e V i contiene il numero di occorrenze della chiave K i in M. Si realizzi l unità in modo che, in presenza della chiave K in uno dei registri K i, l operazione sia conclusa in un unico ciclo di clock, spedendo a U B il valore V i. Si assuma che l unità U A non spedisca mai K = 0. Nel caso in cui la chiave non sia presente in uno degli 8 registri K i, si effettua una ricerca di K in M e si memorizza sia K che V (V = numero delle occorrenze di K in M) in K j e V j, rispettivamente, dove
5 j = V mod 8. Spiegando chiaramente la soluzione adottata, si forniscano il microprogramma, lo schema della Parte Operativa, e la valutazione del tempo medio di elaborazione in funzione del ciclo di clock, assumendo che la percentuale di presenza delle chiavi nei registri sia pari al 75%.