SECONDA PROVA INTERMEDIA DEL MODULO DI 5 giugno 2018 NOME: COGNOME: MATRICOLA: ESERCIZIO 1 (12 punti) Si scriva una funzione Assembly MIPS che, dati in ingresso due valori interi senza segno x ed y, rispettivamente passati in $4 e $5, scriva nella locazione di indirizzo 2 16 il massimo comune divisore di x e y. Il codice può implementare il codice C a lato, dove la funzione mod riceve in ingresso due valori a, b, rispettivamente in $4 e $5, e scrive in $6 il resto della divisione a/b. int MCD(int x, int y) { int r; while (y!=x) { r=mod(x,y); x=y; y=r; } return x; } ESERCIZIO 2 (8 punti) Si consideri le seguenti rappresentazioni di numeri nel formato binario su un campo complessivo di 32 bit: (a) interi senza segno, (b) interi con segno in complemento a 2, (c) virgola mobile con 23 bit di mantissa in segno e valore frazionaria e normalizzata 1.M (bit implicito), esponente a 8 bit in eccesso 127. 1. (2 punti). Esprimere il minimo ed il massimo valore rappresentabili in valore assoluto, escluso lo zero, per tutte e tre le rappresentazioni. 2. (3 punti) Rappresentare i valori 32.5 e 16.25 con tutte e tre le rappresentazioni. 3. (3 punti) Sommare i due valori con la rappresentazione (c) secondo l algoritmo di somma utilizzato nei calcolatori. ESERCIZIO 3 (5 punti) Si progetti una ALU con operandi a N bit utilizzando un parallel adder e delle opportune reti logiche con le caratteristiche indicate dalla seguente tabella di verità (l apice indica il complemento a 1 bit per bit). Si descriva il relativo schema e realizzazione circuitale. s1 s0 F 0 0 A-1 0 1 A-B 1 0 B-A 1 1 B ESERCIZIO 4 (8 punti) 1) (4 punti) L'ampiezza della linea dati del bus di un calcolatore è pari a 32 bit. La frequenza del clock della CPU è di 2 GHz. Ipotizzando che il bus sincrono abbia la stessa frequenza di clock della CPU e la durata di una trasmissione sul bus sia pari a 2 cicli di clock, e che il tempo di ciclo della memoria sia pari a 20 cicli di clock, illustrare chiaramente il protocollo di lettura su bus sincrono utilizzando l opportuno grafico, indicando il tempo complessivo di trasferimento di una parola di 32 bit. 2) (4 punti) Spiegare e disegnare uno schema di arbitraggio con tre linee disponibili per cinque periferiche indicando la funzionalità di ciascuna linea. Disegnare e spiegare in dettaglio, passaggio per passaggio, il protocollo di comunicazione che utilizzi tali tre linee.
Soluzioni ESERCIZIO 1 Per implementare il codice Assembly seguendo quanto riportato nel codice C, ci limitiamo a servirci di due registri, $10 e $11, per una copia dei parametri in ingresso della funzione MCD (x e y), e $12 per inserire il valore 2 16 che non può essere gestito via etichetta: MCD: addi $29, $29, -16 sw $10, 0($29) sw $11, 4($29) sw $12, 8($29) sw $31, 12($29) move $10, $4 move $11, $5 while: beq $5, $0, exit jal mod move $4, $5 move $5, $6 j while exit: move $12, $0 lui $12, 1 sw $4, 0($12) move $4, $10 move $5, $11 lw $10, 0($29) lw $11, 4($29) lw $12, 8($29) lw $31, 12($29) addi $29, $29, 16 jr $31 ESERCIZIO 2 Domanda 1. (a) Minimo valore 1 (tutti zeri tranne il bit meno significativo); Massimo valore 2 32-1. (b) Minimo valore 1 (tutti zeri tranne il bit meno significativo oppure configurazione a tutti 1); Massimo valore 2 31 corrispondente all 1 in posizione più significativa, e tutti gli altri bit pari a zero. (c) Minimo esponente: -127 per definizione di eccesso, minima mantissa: tutti zeri, restando così solo il bit implicito. Per cui il minimo valore è pari a 1.0 0*2-127 = 1.0 0*2-127. Massimo esponente: 128 per definizione di ececsso, massima mantissa: tutti uni, a cui bisogna sommare il bit implicito. Per cui il massimo valore è pari a: 1.1 1*2 128 = (2-2 -23 )* 2 128. Domanda 2.
Per entrambi i valori dati le configurazioni (a) e (b) prevedono la rappresentazione della sola parte intera in entrambi i casi pari a: 32 = 0 0100000 16 = 0 0010000 Per quanto riguarda la configurazione (c) abbiamo invece: 32.5 100000.1 1.000001 * 25 16.25 10000.01 1.000001 * 24 L esponente e in eccesso 127 si rappresenta come e+127 in binario, da cui: 5 101+01111111 10000100 4 100+01111111 10000011 Quindi: 32.5 0 10000100 00000010000000000000000 16.25 0 10000011 00000010000000000000000 Domanda 3. Per quanto riguarda la somma di questi due elementi, l algoritmo richiede: - Confronto fra gli esponenti e scorrimento della mantissa relativa al numero di esponente più piccolo - Somma delle mantisse - Eventuale riallineamento Nel caso specifico, il valore più piccolo, 16.25, viene fatto scorrere di una posizione a destra. Si ottiene quindi: 1.000000100000000000000000 + 0.100000010000000000000000 = 1.100000110000000000000000 Ottenendo dunque: 48.75 = 1100000.11 0 10000100 10000011000000000000000 Non è stato necessario alcun passaggio di riallineamento. ESERCIZIO 3 Per il circuito e le funzioni circuitali si vedano le dispense del corso. In funzione delle operazioni richieste si hanno i valori seguenti per gli operandi e il riporto in ingresso: s1 s0 F A B cin 0 0 A-1 A 1 1 0 0 1 A-B A B 1 1 0 B-A A B 1 1 1 B 0 0 B 1 s1s0 Ai 00 01 11 10 0 1
1 1 1 A new i = s 1 A i + s 1 s 0 A i s1s0 Bi 00 01 11 10 0 1 1 1 1 1 1 B new i = s 0 B i + s 0 B i + s 1 s 0 c in = s 1 + s 0 L esercizio per essere completato richiede il disegno su porte logiche dei tre circuiti di cui sopra, la cui realizzazione si lascia allo studente. ESERCIZIO 4 Domanda 1. La durata di un ciclo di clock è pari a 1/2 = 0.5 ns La lettura su un bus sincrono avviene secondo il protocollo seguente: Segnale di READ sulla linea di controllo e contemporaneamente l indirizzo della locazione in cui risiede il dato sulla linea indirizzi: 2 cicli di clock = 1 ns Lettura della parola dalla memoria: 0.5*20 = 10 ns Trasferimento della parola dalla memoria: trasferimento della parola = 1 ns Tempo totale per leggere una parola dalla memoria = (2 + 10) ns = 12 ns 1 ns 10 ns 1 ns CLOCK READ ADDRESS DATA
Domanda 2. Un possibile schema di arbitraggio è quello centralizzato con tre linee GRANT, ACK, REQ, la prima delle quali attivata dall arbitro e le altre due dalle periferiche. Lo schema corrispondente è il seguente: Il relativo protocollo di comunicazione è descritto dalla seguente figura: In questa figura i segnali sono attivi bassi. Quando l Unità 1, ad esempio, compie la richiesta, essa deve attendere dall arbitro il grant ovvero la conferma che, non appena avvenuta, consente alla periferica di attivare la linea ack (che significa anche bus impegnato ). Successivamente l arbitro disattiva la linea grant e la periferica disattiva la linea req. L attivazione della linea ack impedisce che la richiesta di una seconda periferica, ad esempio la 2, possa essere presa in considerazione dal bus fino a che quella correntemente in possesso non lo rilasci disattivando la linea ack. A quel punto, l arbitro riattiverà la linea grant consentendo alla prima periferica del festone che ha richiesto il bus di utilizzarlo. Si ricordi infatti che il segnale grant si propaga sulle periferiche nell ordine cablato dalla daisy chain.