Corso di Architettura dei Calcolatori (I anno) Prova scritta finale 19 gennaio 2006 aa 2004/2005 1 (punti 4) Considerare il seguente circuito sequenziale: D CK U0 1 T Q D Q U1 Completare la seguente tabella supponendo che non ci siano ritardi di propagazione dei segnali Assumere che inizialmente U0 e U1 assumano il valore 0 Cicli clock D U0 U1 1 0 2 1 3 1 4 0 5 1 6 1 7 0 8 0 2 (punti 3) Considerare un codice di lunghezza fissa 8 in cui ogni configurazione è valida (a) Qual è il numero massimo di errori che si possono avere trasmettendo una configurazione di tale codice? (b) Quante sono le configurazioni di tale codice che hanno distanza di Hamming 1 dalla configurazione 10101010? (c) Qual è la distanza di Hamming tra le due seguenti configurazioni? 00101101 10100100 (d) Qual è il numero minimo di bit di parità che bisogna aggiungere per poter rilevare un errore (e) Qual è il numero minimo di bit di parità che bisogna aggiungere per poter correggere un errore 1
3 (punti 2) Considerare la rappresentazione dei numeri interi in complemento a 2 su 8 bit Siano n ed m rispettivamente le decodifiche di 00111111 e 11000010 (a) Qual è il numero intero massimo rappresentabile (espresso in base 10)? (b) Qual è il numero intero minimo rappresentabile (espresso in base 10)? (c) Come viene rappresentato n + m in complemento a 2 su 8 bit? (d) Come viene rappresentato n m in complemento a 2 su 8 bit? (e) Come viene rappresentato m in complemento a 2 su 9 bit? 4 (punti 2) Considerare il codice a espansione con configurazione di espansione che usa i seguenti 2 formati: formato a 3 bit formato a 5 bit (individuato dalla configurazione 111) (a) Quante sono le configurazioni di 3 bit valide? (b) Quante sono le configurazioni di 5 bit valide? (c) Qual è il numero massimo di elementi rappresentabili con tale codice? (d) Quante sono le configurazioni presenti nella seguente sequenza di bit? 1110111011111110000 5 (punti 2) Considerare il codice in virgola mobile che usa il seguente formato su 8 bit: S E M dove S è il bit di segno, E sono i 4 bit dell esponente rappresentato in complemento a 2 ed M sono i 3 bit della mantissa m, con 1 2 m < 1 (quindi la cifra più a sinistra in M corrisponde alla potenza 2 2 ) Siano n ed m rispettivamente le decodifiche di 00100110 e 10100010 (a) Qual è la codifica nello stesso codice di n + m? (b) Qual è la codifica nello stesso codice di n m? (c) Qual è la codifica nello stesso codice di 4 (n + m)? (d) Quanto vale n? 6 (punti 4) Considerare la seguente funzione ricorsiva scritta in C: int funz(int n,int m){ if(n==m) return n; if(n>m) return funz(n-m,m); else return funz(n,m-n); } Tradurre funz in assembler VM-2 seguendo le seguenti convenzioni: il passaggio dei parametri avviene tramite lo stack usando le due celle subito sotto alla base dello stack (indirizzo FP+2 per n e FP+1 per m); il risultato viene depositato nel registro ACC Il programma non deve contenere più di 24 istruzioni 7 (punti 3) Considerare un bus di tipo sincrono per il collegamento tra CPU e RAM al quale possono essere connessi altri dispositivi master Il bus ha una frequenza di clock di 500 MHz (un ciclo di clock in 2 ns) mentre la CPU ha una frequenza di clock di 2 GHz Il protocollo del bus prevede un ciclo di clock per l arbitrazione daisy chain, seguito da uno o più cicli di clock per il completamento di un operazione di lettura o scrittura Il protocollo prevede la possibilità per lo slave di chiedere proroghe di uno o più cicli completi, purché la richiesta arrivi al master in tempo (ovvero la richiesta del secondo ciclo deve arrivare prima che si concluda il primo) Il tempo massimo di propagazione dei segnali tra le due estremità del bus è di 05 ns, mentre il tempo di accesso del modulo RAM dinamico è non superiore a 2 ns Il ritardo di ogni stadio della daisy chain è non superiore a 05 ns Supporre che, oltre alla CPU, siano connessi due altri dispositivi master M 1 ed M 2, e che la CPU abbia la priorità più alta ed M 2 quella più bassa Sapendo che nello stesso istante la CPU ed M 2 richiedono un operazione di lettura ed M 1 una di scrittura, calcolare: 2
(a) Quanti cicli di clock della CPU intercorrono tra la richiesta e il completamento dell operazione di lettura della CPU (b) Quanti cicli di clock della CPU intercorrono tra la richiesta e il completamento dell operazione di scrittura di M 1 (c) Quanti cicli di clock della CPU intercorrono tra la richiesta e il completamento dell operazione di lettura di M 2 (d) Qual è il tempo totale necessario per soddisfare tutte e tre le richieste 8 (punti 2) Supporre di estendere la macchina VM-2 con un sistema di traduzione da indirizzamento virtuale a indirizzamento fisico realizzato mediante la tecnica di segmentazione e paginazione, mantenendo la struttura della RAM invariata Ogni indirizzo logico può far riferimento a un massimo di 8 segmenti con il metodo della segmentazione esplicita Ciascun segmento può essere costituito da un massimo di 128 pagine, e ciascuna pagina è costituita da 64B Considerare le seguenti tabelle dei segmenti e delle pagine (dove i dati sono espressi in base 16): n segm accessi pagine tab pag 0 - - X 10 tp0 1 R W - 37 tp1 6 R W - 21 tp6 7 R - - 48 tp7 tp1 n pag log n pag fis 0 0B 1 11 35 0F 36 0D tp0 n pag log n pag fis 0 7F 1 1A tp6 n pag log n pag fis 0 01 1 79 8 73 9 70 19 5A 20 5B tp7 n pag log n pag fis 0 23 1 09 46 3C 47 37 (a) Negli indirizzi virtuali quanti bit sono riservati per il numero di segmento, il numero di pagina e l offset? (b) Negli indirizzi fisici quanti bit sono riservati per il numero di pagina e l offset? (c) In quale indirizzo fisico (in base 16) si traduce l indirizzo virtuale 75FF? (d) In quale indirizzo fisico (in base 16) si traduce l indirizzo virtuale 6023? 9 (punti 2) Supporre di connettere alla RAM della VM-2 una memoria cache di 256B con livello di associatività 4, organizzata in linee da 32 bit (a) Quante linee contiene la cache? (b) Da quanti bit è formato il campo tag della cache? (c) Calcolare il campo tag (espresso in base 2) dell indirizzo 101010011010 (d) Dire quali tra i seguenti indirizzi possono corrispondere a una stessa linea della cache: ind1=110101000001 ind2=100100010100 ind3=001110011111 ind4=000100000000 ind5=111100010001 10 (punti 4) Supporre di modificare la macchina VM-1 sostituendo l istruzione JNEG yyy con la nuova BOH? yyy e riutilizzando lo stesso codice operativo 0001 per specificare una serie di azioni diverse Le nuove microistruzioni che realizzano BOH? sono memorizzate nelle celle del control store di indirizzi 34, 35, 83, 84, 85, 86 e sostituiscono quelle usate per la realizzazione di JNEG, oltre a occupare altre celle libere, come mostrato di seguito (il campo Int è stato omesso in quanto inutilizzato): 3
indir in CS A L U C S R n W M A R M B R D mpx A bus B bus CA bus CA en CD bus CD en D bus m cond 34 000 0 x 0 0 11 xx xx xx 0 10 1 xx 000 0000000 35 000 0 x 0 0 00 11 xx xx 0 xx 0 xx 001 1010011 83 xxx 0 x 0 0 xx xx xx xx 0 xx 0 xx 011 1010110 84 110 0 x 0 0 01 xx 10 xx 0 10 1 01 000 xxxxxxx 85 101 0 x 0 0 00 11 xx 11 1 xx 0 xx 001 1010011 86 000 0 x 0 0 01 xx xx xx 0 01 1 10 001 0000001 Se dopo aver completato il fetch e la decodifica dell istruzione BOH? i seguenti registri e celle di memoria assumono i valori iniziali indicati (in base 10): PC = 20 SP = 4093 FP = 4090 ADR = 2 ACC = 7 B = 3 C = 4 qual è il valore (in base 10) assunto dai seguenti registri al termine dell esecuzione del microcodice dell istruzione: (a) PC (b) SP (c) FP (d) ADR (e) ACC (f) B (g) C (h) IR 11 (punti 4) Considerare il seguente programma in assembler VM-R: 32768 LOAD R02, R03, R00 32769 CJMP EQ, 11 32770 ADD1 R03, 1 32771 LOAD R01, R03, R00 32772 CJMP EQ, 8 32773 ADD1 R03,1 32774 SCMP R02, R01 32775 CJMP GE, 3 32776 PUSH R01, R03, 2 32777 ADD1 R03, 2 32778 JUMP -8 32779 MOV2 R02, R01 32780 JUMP -10 32781 RETN 32782 LDIW FP 32783 65535 32784 MOVR SP,FP,FP 32785 LDIW R01 32786 32768 32787 LDIW R03 32788 32791 32789 CALL R01 32790 HALT 32791 2 32792 1 32793 4 32794 3 32795 0 Addr 4
Supponendo che il programma venga eseguito a partire dall istruzione di indirizzo 32782, quale valore in base 10 è contenuto alla fine dell esecuzione in: (a) R01 (b) R02 (c) R03 (d) R07 (e) M[32791] (f) M[32792] (g) M[32793] (h) M[32794] 12 (punti 4) Considerare una realizzazione di tipo superscalare di livello 2 per la macchina convenzionale VM- R, a partire da una pipeline a 3 stadi e senza permutazione dinamica delle istruzioni Il processore permette il fetch simultaneo delle due istruzioni di indirizzo (2k) e (2k + 1) nel primo stadio di pipeline Il secondo stadio effettua la decodifica simultanea delle due istruzioni calcolando sia la condizione di Bernstein, sia la disponibilità delle unità di esecuzione Il terzo stadio manda in stallo per un ciclo di clock i primi due stadi di pipeline se le istruzioni decodificate non sono eseguibili simultaneamente, e in tal caso le esegue nella corretta sequenza Lo stadio di esecuzione è composto da un sommatore e una ALU, quest ultima in grado di svolgere tutte le operazioni aritmetico-logiche richieste dall insieme di istruzioni VM-R, con la possibilità di operare in parallelo in un singolo ciclo di clock Infine, le istruzioni di puro spostamento di valore da un registro all altro richiedono solo l uso di bus e non necessitano della disponibilità del sommatore e dell ALU (anche se richiedono anch esse un ciclo di clock in fase di esecuzione) Dato il seguente fragmento di programma VM-R eseguito a partire dall istruzione di indirizzo 32768, stabilire dopo quanti cicli di clock viene completata l esecuzione di ciascuna istruzione (a partire dal fetch delle prime due, con pipeline vuota) 32768 ADD3 R1, R8, R9 32769 AND3 R2, R8, R9 32770 SUB3 R0, R1, R2 32771 MOV2 R9, R0 32772 ADD1 R2, 4 32773 ADD3 R1, R2, R3 32774 ADD3 R9, R3, R9 32775 ADD3 R8, R3, R8 32776 LOR3 R8, R1, R2 32777 ROTA R3, R9, -2 32778 NAND R9, R1, R2 32779 MOVR R8, R3, R2 5
6
Corso di Architettura dei Calcolatori (I anno) Risposte prova scritta finale 19 gennaio 2006 COGNOME: NOME: 1 (punti 4) 2 (punti 3) (a) (b) (c) (d) (e) 3 (punti 2) (a) (b) (c) (d) (e) 4 (punti 2) (a) (b) (c) (d) Cicli clock D U1 U2 1 0 2 1 3 1 4 0 5 1 6 1 7 0 8 0 7
5 (punti 2) (a) (b) (c) (d) 6 (punti 4) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 7 (punti 3) (a) (b) (c) (d) 8
8 (punti 2) (a) segmento= pagina= offset= (b) pagina= offset= (c) (d) 9 (punti 2) (a) (b) (c) (d) 10 (punti 4) (a) (b) (c) (d) (e) (f) (g) (h) 11 (punti 4) (a) (b) (c) (d) (e) (f) (g) (h) 9
12 (punti 4) istruzione ciclo di clock 32768 ADD3 R1, R8, R9 32769 AND3 R2, R8, R9 32770 SUB3 R0, R1, R2 32771 MOV2 R9, R0 32772 ADD1 R2, 4 32773 ADD3 R1, R2, R3 32774 ADD3 R9, R3, R9 32775 ADD3 R8, R3, R8 32776 LOR3 R8, R1, R2 32777 ROTA R3, R9, -2 32778 NAND R9, R1, R2 32779 MOVR R8, R3, R2 10