PROVA SCRITTA DEL MODULO INTEGRATO E DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA ELETTRONICA 5/7 CFU CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA - 6 CFU 12 Giugno 2013 NOME: COGNOME: MATRICOLA: CFU: ESERCIZIO 1 RETI LOGICHE (10 punti 7 cfu: 7 punti) Si vuole implementare una rete sequenziale finalizzata al riconoscimento di due stringhe di due bit: 01 e 10, attraverso un unico ingresso X. Le uscite Z1 e Z2 sono poste a 1 se, rispettivamente, viene riconosciuta la prima o la seconda sequenza, e sono poste a zero in tutti gli altri casi. In altri termini, se la sequenza riconosciuta è 01, Z1=1 e Z2=0, se la sequenza riconosciuta è 10, Z1=0 e Z2=1, e infine Z1=0 e Z2=0 in tutti gli altri casi. Si usino FF-T nell implementazione di blocchi di ritardo. ESERCIZIO 2 UNITA DI MEMORIA (8 punti) Si consideri un unità di memoria primaria indirizzata con 8 bit, ed una cache indirizzabile con 4 bit. La memoria è organizzata in blocchi da quattro parole ciascuno. 1) (1 punto) Spiegare, precisando bene il significato e la funzione dei diversi campi, come vengono interpretati gli indirizzi logici per recuperare l informazione contenuta nella cache nel caso che il metodo di indirizzamento sia completamente associativo. 2) (4 punti) Supporre che vengano richieste, in sequenza, e per dieci volte consecutive, le parole dall indirizzo 0 all indirizzo 31. Motivando ogni passaggio intermedio, indicare chiaramente lo stato finale della cache dopo l ultima chiamata e calcolare l hit ratio. 3) (3 punti) Calcolare il valore minimo dell hit ratio nel caso sia necessario avere un tempo medio di accesso ad una gerarchia cache-primaria inferiore a 10 ns, sapendo che il tempo medio di accesso in cache è 5 ns e quello di accesso alla primaria è 50 ns. Il valore di hit ratio trovato al punto precedente soddisfa queste specifiche? ESERCIZIO 3 LINGUAGGIO ASSEMBLY MIPS (8 punti) Si implementi in Assembly MIPS il seguente frammento di codice C: for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(v[i]<v[j]) scambia(v,i,j) La funzione scambia prevede il seguente passaggio di parametri: indirizzo iniziale del vettore v in $4, i in $5 e j in $6. ESERCIZIO 4 UNITA LOGICO-ARITMETICA (7 punti) Siano dati 16 bit per la rappresentazione di valori numerici in virgola mobile. Si consideri una mantissa M frazionaria e normalizzata in segno e valore con modalità 1.M (bit di parte intera implicito), esponente a 7 bit in eccesso 64, e bit di segno. 1) (3 punti) Spiegando bene ogni passo del ragionamento, indicare il minimo ed il massimo numero rappresentabili, escluso lo zero. Spiegare e motivare se il valore 2 130 è rappresentabile. 2) (2 punti) Rappresentare i valori 32.75 e 12.25, qui espressi in notazione decimale, nella notazione in virgola mobile indicata nel testo, indicando chiaramente i valori dei bit nei campi segno, esponente e mantissa. 3) (2 punti) Sommare i valori al punto 2, secondo l algoritmo di somma utilizzato nei calcolatori elettronici. E richiesta l esposizione dettagliata di ogni passo di tale algoritmo. ESERCIZIO 5 SISTEMI OPERATIVI (solo 7cfu: 3 punti) Descrivere in modo sintetico e chiaro i principali componenti di un moderno sistema operativo.
ESERCIZIO 1 RETI LOGICHE (10 punti 7 cfu: 7 punti) Si vuole implementare una rete sequenziale finalizzata al riconoscimento di due stringhe di due bit: 01 e 10, attraverso un unico ingresso X. Le uscite Z1 e Z2 sono poste a 1 se, rispettivamente, viene riconosciuta la prima o la seconda sequenza, e sono poste a zero in tutti gli altri casi. In altri termini, se la sequenza riconosciuta è 01, Z1=1 e Z2=0, se la sequenza riconosciuta è 10, Z1=0 e Z2=1, e infine Z1=0 e Z2=0 in tutti gli altri casi. Si usino FF-T nell implementazione di blocchi di ritardo. Il grafo degli stati della rete è il seguente: A B X A B TA TB Z1 Z2 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0 D D D D 0 0 1 1 1 D D D D 0 0 AB AB X 00 01 11 10 X 00 01 11 10 0 d 1 0 1 d 1 1 1 1 d 1 1 d Per quanto riguarda le uscite: N.B. E possibile risolvere l esercizio con un solo flip flop, una volta eliminato lo stato 00 superfluo.
ESERCIZIO 2 UNITA DI MEMORIA (8 punti) Si consideri un unità di memoria primaria indirizzata con 8 bit, ed una cache indirizzabile con 4 bit. La memoria è organizzata in blocchi da quattro parole ciascuno. 4) (1 punto) Spiegare, precisando bene il significato e la funzione dei diversi campi, come vengono interpretati gli indirizzi logici per recuperare l informazione contenuta nella cache nel caso che il metodo di indirizzamento sia completamente associativo. 5) (4 punti) Supporre che vengano richieste, in sequenza, e per dieci volte consecutive, le parole dall indirizzo 0 all indirizzo 31. Motivando ogni passaggio intermedio, indicare chiaramente lo stato finale della cache dopo l ultima chiamata e calcolare l hit ratio. 6) (3 punti) Calcolare il valore minimo dell hit ratio nel caso sia necessario avere un tempo medio di accesso ad una gerarchia cache-primaria inferiore a 10 ns, sapendo che il tempo medio di accesso in cache è 5 ns e quello di accesso alla primaria è 50 ns. Il valore di hit ratio trovato al punto precedente soddisfa queste specifiche? I campi di indirizzamento sono offset, cache index, e tag. I blocchi sono da quattro parole, quindi per la singola parola entro il blocco occorrono due bit, ovvero l offset è di due bit. Il numero di bit nei campi cache index e tag dell indirizzo a otto bit, dipende dal metodo di indirizzamento della cache. Poiché la cache è indirizzato con metodo completamente associativo, il campo cache index non c è e tutto il resto dell indirizzo, ovvero il block frame, coincide con il campo tag. In sintesi: < tag 6 bit > < offset 2 bit>. Se vengono richieste, in sequenza, le parole da 0 a 31, significa che vengono richiesti, in sequenza, i primi otto blocchi di memoria primaria. Infatti le prime trentadue parole, essendo raggruppate per quattro (dimensione di ogni blocco), corrispondono ai primi otto blocchi. La cache, come si evince dai dati, può contenere solo 16 parole, organizzate in quattro linee (ogni linea ha la stessa dimensione del blocco). Poiché il metodo è completamente associativo, e la cache si può supporre inizialmente vuota, ciascuno dei blocchi viene copiato in cache causando un miss e tre hit per ciascun blocco. Dopo i primi quattro blocchi, la cache è completamente piena, quindi è necessario un rimpiazzamento che, nell ipotesi sia FIFO o LRU o LFU, causa la sostituzione, nello stesso ordine di inserimento, dei precedenti blocchi di cache. Al termine del primo ciclo, avremo totalizzato dunque 3 * 8 = 24 hit su 32 chiamate complessive. La stessa cosa succede per le altre nove iterazioni, per un totale di 240 hit su 320 chiamate. L hit ratio è dunque 240/320 = ¾ = 0.75. Per quanto riguarda lo stato finale della cache, dal ragionamento fatto sopra avremo che al termine dei dieci cicli nella cache saranno memorizzati i blocchi di primaria dal block frame/tag 4 al 7. Quindi: Linea Contiene le parole 0 16, 17, 18, 19 1 20, 21, 22, 23 2 24, 25, 26, 27 3 28, 29, 30, 31 Agli indirizzi delle singole parole si risale facilmente dall indirizzo di block frame moltiplicato la dimensione del blocco: 4 * 4 = 16 indirizzo della prima parola del blocco 4, a seguire, considerando che ogni blocco è costuito appunto da quattro parole. Il valore minimo dell hit ratio dati i valori nel testo si calcola dalla formula: Da cui: ( )
Dove Tc è il tempo di accesso in cache, Tp il tempo di accesso in primaria, Tm il tempo medio di accesso alla gerarchia. Dal calcolo risulta evidente che il valore di Hc trovato al punto precedente non soddisfa le specifiche, avendo ottenuto un hit ratio pari 0.75 chiaramente inferiore a 0.9. ESERCIZIO 3 LINGUAGGIO ASSEMBLY MIPS (8 punti) Si implementi in Assembly MIPS il seguente frammento di codice C: for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(v[i]<v[j]) scambia(v,i,j) La funzione scambia prevede il seguente passaggio di parametri: indirizzo iniziale del vettore v in $4, i in $5 e j in $6. lw $12, n($0) #n $12 addi $13, $12, -1 #n-1 $13 move $8, $0 #i 0 for1: beq $8, $13, exitfor1 #if (i==n-1) exitfor1 addi $9, $8, 1 #j i+1 muli $10, $8, 4 #i*4 $10 lw $14, v($10) #$14 v[i] for2: beq $9, $12, exitfor2 #if (j==n) exitfor2 muli $11, $9, 4 #j*4 $11 lw $15, v($11) #$15 v[j] slt $16, $14, $15 #$16 v[i] < v[j] addi $9, $9, 1 #j = j + 1 beq $16, $0, for2 #if(!(v[i] < v[j]) exitfor2 addi $4, $0, v #impostazione di $4 prima di chiamata a scambia move $5, $8 #impostazione di $5 prima di chiamata a scambia addi $6, $9, -1 #impostazione di $6 prima di chiamata a scambia jal scambia #chiamata a scambia j for2 exitfor2: addi $8, $8, 1 #i = i + 1 j for1 exitfor1: ESERCIZIO 4 UNITA LOGICO-ARITMETICA (7 punti) Siano dati 16 bit per la rappresentazione di valori numerici in virgola mobile. Si consideri una mantissa M frazionaria e normalizzata in segno e valore con modalità 1.M (bit di parte intera implicito), esponente a 7 bit in eccesso 64, e bit di segno. 4) (3 punti) Spiegando bene ogni passo del ragionamento, indicare il minimo ed il massimo numero rappresentabili, escluso lo zero. Spiegare e motivare se il valore 2 130 è rappresentabile. 5) (2 punti) Rappresentare i valori 32.75 e 12.25, qui espressi in notazione decimale, nella notazione in virgola mobile indicata nel testo, indicando chiaramente i valori dei bit nei campi segno, esponente e mantissa. 6) (2 punti) Sommare i valori al punto 2, secondo l algoritmo di somma utilizzato nei calcolatori elettronici. E richiesta l esposizione dettagliata di ogni passo di tale algoritmo.
Con i bit a disposizione, il valore in virgola mobile ha, oltre al bit di segno, sette bit di esponente e otto bit per la mantissa. La configurazione minima si ottiene impostando a zero tutti i bit della mantissa, lasciando quindi il solo bit implicito, e calcolando il minimo esponente possibile. Dal momento che l esponente è in eccesso 64, il minimo sarà appunto -64. Quindi il minimo valore rappresentabile sarà 2-64. Il massimo valore si ottiene considerando ad uno tutti gli otto bit della mantissa e calcolando il massimo esponente, che sarà dato da 127 (massimo valore rappresentabile in eccesso 0) a cui sottrarremo l eccesso. Il massimo esponente è dunque 63. Per quanto riguarda la mantissa, essa corrisponderà alla configurazione 1.11111111, ovvero 1 + 1 2-8, da cui 2 2-8. Quindi il massimo valore rappresentabile è dato da 2 63 *(2 2-8 )= 2 64 2 55. Questo valore è chiaramente inferiore a 2 130, che non può essere rappresentato. Per rappresentare i due valori, li rappresentiamo in virgola fissa usando per la parte intera il metodo delle divisioni successive e per la parte frazionaria il metodo delle moltiplicazioni successive. 32.75 = 100000.11 = 1.0000011 *2 5. 12.25 = 1100.01 = 1.10001*2 3. Per rappresentare gli esponenti 5 e 3 dobbiamo sommare l eccesso (64), ottenendo 1000101 e 1000011. Quindi i due valori si rappresentano nel seguente modo: Esp. Mantissa S 1000101 00000110 S 1000011 10001000 Con S bit di segno (lo stesso per entrambi). La somma di questi due valori seguendo l algoritmo dei calcolatori prevede i passaggi: 1) Confronto degli esponenti: il primo valore ha esponente superiore al secondo. La differenza fra i due è 5-3=2. 2) Shift a sinistra della mantissa del numero superiore in corrispondenza della differenza calcolata al punto 1: 1.00000110 100.00011 3) Somma delle mantisse: 100.00011+1.10001 = 101.101 4) Normalizzazione della mantissa: 101.101 *2 3 = 1.01101*2 5. Quindi la somma è rappresentata nel seguente modo: S 1000101 01101000 ESERCIZIO 5 SISTEMI OPERATIVI (solo 7cfu: 3 punti) Descrivere in modo sintetico e chiaro i principali componenti di un moderno sistema operativo. V. le dispense del corso