CALCOLATORI ELETTRONICI 15 aprile 2014 NOME: COGNOME: MATR: Scrivere nome, cognome e matricola chiaramente in caratteri maiuscoli a stampa 1 Di seguito è riportato lo schema di una ALU a 32 bit in grado di eseguire, tra le altre, le operazioni di somma, sottrazione e slt (set on less than) Per quanto riguarda l operazione slt, si chiede di: - indicare quale significato hanno e come devono essere impostati (in modo qualitativo) gli ingressi Ainvert, Bnegate e Operation per fare in modo che la ALU compia l operazione slt - come viene realizzata l operazione slt, precisando tra l altro il ruolo della linea Set [4] Si studi infine il problema dell overflow nell operazione slt: nella realizzazione finale la segnalazione di overflow nell uscita Overflow indica che il risultato della slt non è valido? Perché? Si precisi come può essere realizzato il circuito per tener conto dell overflow nell operazione di sottrazione tra gli operandi [2] Ainvert Bnegate Operation a0 b0 CarryIn ALU0 Less CarryOut Result0 a1 b1 0 CarryIn ALU1 Less CarryOut Result1 a2 b2 0 CarryIn ALU2 Less CarryOut Result2 Zero CarryIn Result31 a31 CarryIn b31 ALU31 Set 0 Less Overflow
2 Si considerino, mostrati nelle figure alle pagine seguenti, 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 loop r1, Etichetta // r1=r1-1; se r1==0 salta a Etichetta che decrementa il registro r1 e salta ad una istruzione di destinazione (specificata nello stesso modo in cui viene specificata nell istruzione beq) se r1 risulta nullo dopo il decremento Ricordando i tre formati di codifica delle istruzioni (riportati di seguito) si chiede di: - riportare il formato della nuova istruzione macchina (specificando il campo per r1); - riportare, nella corrispondente figura, le modifiche necessarie al datapath; - estendere il diagramma degli stati per implementare la nuova istruzione [5] 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
3 Si consideri il seguente schema, che si riferisce ad una unità di controllo del processore microprogrammata Per ciascuna delle seguenti affermazioni, si dica se è vera o falsa, motivando le risposte: il contatore di microprogramma (microprogram counter) viene aggiornato quando viene aggiornato il program counter; il contatore di microprogramma viene aggiornato più volte rispetto al program counter; il contatore di microprogramma viene aggiornato ad ogni ciclo di clock [3]
4 Si consideri il seguente frammento di codice MIPS: add $t1, $t0, $t2 lw sw lw $t1, 40($t1) $t1, 28($t1) $t2, 32($t1) sub $t2, $s0, $t2 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]
5 Si vuole implementare un processore mediante una pipeline a 4 stadi (F, D, E, W), in grado di eseguire le seguenti istruzioni, il cui significato è riportato a commento (per semplicità, si faccia riferimento solo alle seguenti istruzioni trascurando ad esempio l istruzione sw, ecc): add rd, rs lw rd, (rs) beq rs, rd, IND // rd rd+rs // rd M[rs] // IF (rs == rd) PC PC+IND Per la gestione dei salti condizionati, si utilizza la tecnica del salto ritardato Nella pagina seguente è riportato uno schema incompleto di datapath Si chiede di: 1) completare i collegamenti tra unità funzionali e registri interstadio negli stadi F, D, E, W inserendo eventualmente opportuni multiplexer e indicando i segnali di controllo necessari; 2) disegnare nel datapath l unità di controllo (che può essere schematizzata con un ovale) e i relativi collegamenti; 3) disegnare accuratamente nel datapath i collegamenti dei segnali di controllo nei diversi stadi della pipeline; 4) fornire per mezzo di una tabella la specifica dell unità di controllo (i codici operativi delle istruzioni possono essere specificati in forma simbolica) 5) relativamente all implementazione della beq, specificare il numero di slot di ritardo che si verificano e spiegare (molto brevemente) perché [10]
6 Con riferimento alla gestione delle operazioni di scrittura nella memoria cache, illustrare la tecnica del write through, specificando in particolare la differenza rispetto al write back Specificare inoltre la funzione ed il ruolo in termini di prestazioni del write buffer (sempre nel caso della tecnica del write-through) [2]