CALCOLATORI ELETTRONICI 30 agosto 2010 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si implementi per mezzo di porte logiche di AND, OR e NOT la funzione combinatoria (a 4 ingressi e una uscita) che riceve in ingresso due valori positivi binari x e y ciascuno di 2 bit (x = x 1 x 0 e y = y 1 y o ) e pone in uscita 1 se x y, pone in uscita 0 altrimenti. Si esprima inoltre la dimensione dell implementazione per mezzo di PLA e la dimensione dell implementazione per mezzo di memoria ROM. [5]
2. Utilizzando la green card, tradurre in linguaggio macchina le seguenti due istruzioni espresse in assembly MIPS: [4] L1: addi $t0, $t0, -1 bne $t0, $zero, L1
3. Si considerino, mostrati nelle figure alla pagina seguente, il datapath ed il diagramma a stati finiti che specifica l unità di controllo secondo la tecnica a multiciclo relativamente alle istruzioni MIPS lw, sw, beq, j ed alle istruzioni Tipo-R. Si vuole implementare la nuova istruzione search r0, r1, r2 che, a partire dall indirizzo r2 e procedendo verso indirizzi decrescenti, ricerca in memoria la prima occorrenza del valore (a 32 bit) specificato in r1. L istruzione deve ricercare il valore fino all indirizzo 4 (ovvero, escludendo l indirizzo 0): se il valore viene trovato, il rispettivo indirizzo viene posto in r0, se il valore non viene trovato l istruzione pone in r0 il valore 0. Ricordando i tre formati di codifica delle istruzioni (riportati di seguito) si chiede di: - riportare il formato della nuova istruzione macchina (specificando anche i campi destinati a r1 e r2); - riportare, nella corrispondente figura, le modifiche necessarie al datapath; - estendere il diagramma degli stati per implementare la nuova istruzione. [10] Promemoria formati delle istruzioni:
2 Memory address computation ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 Start Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 6 (Op = 'LW') or (Op = 'SW') Execution ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 8 (Op = R-type) Branch completion ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 Instruction decode/ register fetch 1 (Op = 'BEQ') 9 ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 (Op = 'J') Jump completion PCWrite PCSource = 10 3 (Op = 'LW') Memory access (Op = 'SW') 5 Memory access 7 R-type completion MemRead IorD = 1 MemWrite IorD = 1 RegDst = 1 RegWrite MemtoReg = 0 4 Write-back step RegDst = 0 RegWrite MemtoReg =1
4. Si consideri un implementazione del processore MIPS per la quale si utilizza un hardware che richiede i seguenti tempi di esecuzione: - prelievo istruzione e accesso alla memoria dati: 3 ns - ogni altra operazione critica (ALU, decodifica, lettura e scrittura register file): 2 ns Si assuma un carico di lavoro che prevede la seguente distribuzione delle istruzioni MIPS: lw: 25 % sw: 20 % formato-r: 35 % beq: 15 % j: 5 % Si supponga che metà delle istruzioni di Tipo-R e metà delle lw siano seguite da istruzioni che ne utilizzano il risultato; in particolare, il 25% delle istruzioni che seguono lw utilizzano il risultato nello stadio E (ed eventualmente anche in M), il rimanente 25% utilizzano il risultato solo nello stadio M. Il processore utilizza una cache primaria distinta per i dati e le istruzioni, mentre non dispone di cache secondaria. La cache, che in caso di successo consente di accedere all istruzione o al dato in un ciclo di clock, presenta le seguenti caratteristiche: - percentuale di successo (hit rate): 90% sia per le istruzioni sia per i dati - penalità di fallimento (in lettura e in scrittura): 5 cicli di clock Si chiede di confrontare le prestazioni di un implementazione multiciclo e dell usuale implementazione basata su pipeline a 5 stadi (per la quale si possono trascurare le criticità sui salti). L implementazione con pipeline fa uso di un unità di propagazione verso lo stadio E ed una verso lo stadio M. Si mostrino i passaggi principali relativamente alle risposte fornite. [4]
5. Si consideri il seguente frammento di codice MIPS: add $t0, $s1, $s1 sub $t0, $t0, $s1 lw sw $s2, 20($t0) $s2, 20($s1) add $s1, $s2, $s1 Si consideri l implementazione con pipeline a 5 stadi (F: Fetch, D: Decode, E: Execute, M: Mem, W: Write-Back). Si chiede di: a) individuare in modo preciso tutte le dipendenze tra i dati b) tracciare il diagramma temporale delle istruzioni (indicando esplicitamente le eventuali propagazioni e, per ognuna di esse, quale dato è propagato) in ognuna delle seguenti ipotesi: - non è disponibile alcuna unità di propagazione - è disponibile un unità di propagazione verso lo stadio E - è disponibile un unità di propagazione verso lo stadio E ed una verso lo stadio M. Nei diagrammi, si chiede di indicare il numero di cicli di penalità. [6]
6. Si consideri una cache set-associativa a quattro vie in grado di memorizzare 32 KB (soltanto per la parte dati, escludendo le etichette), cui si accede con indirizzi a 32 bit. Sapendo che al campo offset dell indirizzo sono dedicati 8 bit, determinare la dimensione totale che nella memoria cache è riservata alle etichette. [3]