CALCOLATORI ELETTRONICI 20 gennaio 2012 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si disegni lo schema di un flip-flop master-slave S-R sensibile ai fronti di salita e se ne spieghi il funzionamento. Nel disegno si possono utilizzare latch S-R sensibili ai livelli. [4]
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 integrare un insieme di istruzioni che si riferiscono ad una architettura basata su stack. Lo stack è costituito da un insieme di parole di memoria consecutive (ciascuna al solito di 4 byte) e cresce per indirizzi crescenti; l indirizzo dell elemento in cima allo stack è contenuto nel registro n. 29. In particolare, si implementi l istruzione EQ che confronta i due elementi in cima allo stack e li sostituisce con il valore 1 se sono uguali, 0 se sono diversi. Ricordando i tre formati di codifica delle istruzioni (riportati di seguito) si chiede di: - riportare il formato della nuova istruzione macchina; - riportare, nella corrispondente figura, le modifiche necessarie al datapath; - estendere il diagramma degli stati per implementare la nuova istruzione. [6] 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 considerino 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 assumano i seguenti tempi per le operazioni atomiche che coinvolgono le unità funzionali principali: Lettura da memoria: Scrittura in memoria: Lettura Register File: Scrittura in Register File: Operazione ALU: 2 ns 1 ns 1 ns 2 ns 1 ns Si chiede di suggerire una modifica al datapath e al diagramma degli stati (riportati di seguito) in modo da migliorare le prestazioni. [5] 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
5. Si consideri il seguente frammento di codice MIPS: add $t1, $t0, $t2 sw lw sw $t1, 40($t0) $s1, 40($t1) $t1, 20($s1) add $s1, $t1, $t1 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 il seguente frammento di codice MIPS: add $t5, $t5, $t6 sub $s5, $t5, $t6 add $s4, $s2, $s3 bne $s1, $s4, Dest sub $t1, $t3, $t2 Dest: add $s4, $t1, $t4 sub $t1, $s4, $s5 Si consideri un implementazione tramite pipeline a 5 stadi in cui la decisione e l esecuzione del salto beq avvengono nel terzo stadio della pipeline. Per la gestione delle criticità sui salti, viene adottata la tecnica del salto ritardato. Quanti slot di ritardo sono presenti? Perché? Si indichi, motivando brevemente la soluzione proposta, come potrebbe essere riordinato il codice per gestire la criticità sul salto beq minimizzando il numero di cicli persi. [5]