CALCOLATORI ELETTRONICI 29 giugno 2011 NOME: COGNOME: MATR: Scrivere chiaramente in caratteri maiuscoli a stampa 1. Si implementi per mezzo di una PLA la funzione combinatoria (a 3 ingressi e due uscite) che pone in uscita il valore binario corrispondente al numero di uni in ingresso (ad esempio, se in tutti e tre gli ingressi si ha 1, l uscita deve riportare 11, se tutti e tre gli ingressi sono a 0, l uscita deve essere 00). Si riporti anche la dimensione della PLA ottenuta. Si esprima inoltre la funzione (per mezzo di un opportuna formula logica) solo con porte NAND e solo con porte NOR. [6]
2. Utilizzando la green card, identificare l istruzione assembly MIPS corrispondente al codice macchina a 32 bit 11100008 hex (espresso in esadecimale) e spiegarne il significato (qual è esattamente l effetto dell esecuzione dell istruzione?). [3]
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 beqcmem const, (r1), (r2) che confronta il valore di una costante const a 16 bit specificata nell istruzione con il valore contenuto nella locazione di memoria di indirizzo r1 e, nel caso i valori siano uguali, salta all indirizzo specificato nella locazione di memoria di indirizzo r2: if(m[r1]==const) salta a M[r2]. 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. [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 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: 2 ns - ogni altra operazione critica (ALU, decodifica, lettura e scrittura register file): 1 ns Si assuma un carico di lavoro che prevede la seguente distribuzione delle istruzioni MIPS: lw: 30 % sw: 20 % formato-r: 35 % beq: 10 % j: 5 % Si supponga inoltre che: - il 20% delle istruzioni Tipo-R siano seguite da istruzioni che ne utilizzano il risultato; - il 10% delle istruzioni lw siano seguite da istruzioni Tipo-R che ne utilizzano il risultato; - il 5% delle istruzioni lw siano seguite da istruzioni sw o lw che ne utilizzano il risultato solo per il calcolo dell indirizzo; - il 10% delle istruzioni lw siano seguite da istruzioni sw che ne utilizzano il risultato solo per immagazzinarlo in memoria. - il 15% delle istruzioni lw siano seguite da istruzioni sw che ne utilizzano il risultato sia per il calcolo dell indirizzo sia per immagazzinarlo in memoria. - il 3% delle istruzioni lw sono seguite da istruzioni beq che ne utilizzano il risultato (si assuma che il confronto tra gli operandi sia effettuato al terzo stadio della pipeline). Il processore utilizza una cache primaria distinta per i dati e le istruzioni. 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% per le istruzioni, 80% per i dati in lettura, 70% per i dati in scrittura - penalità di fallimento: 5 cicli di clock in lettura, 10 cicli di clock in scrittura 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 solo verso lo stadio E, mentre non dispone di unita di propagazione verso M. Nel caso in cui la cache per i dati e le istruzioni fosse unica (ed avesse un hit rate pari al 90%, penalità di fallimento: 5 cicli di clock in lettura, 10 cicli di clock in scrittura) si esprima il tempo medio di esecuzione (a regime) dell implementazione basata su pipeline (sempre con unita di propagazione verso E). Si mostrino i passaggi principali relativamente alle risposte fornite. [6]
5. Si consideri il seguente frammento di codice MIPS: lw sw $t1, 20($t2) $t2, 40($t1) add $t1, $t2, $t2 sub $s0, $t1, $t2 sw $s0, 20($s2) 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 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. [3]
7. In qualità di esperti consulenti dell implementazione del processore MIPS mediante pipeline, vi viene proposta una modifica all usuale implementazione (dotata di tutte le possibili unità di propagazione) che dovrebbe risolvere i problemi legati alle criticità sui dati. L idea si basa sulle seguenti osservazioni: - le penalità sono dovute alle criticità carica-e-usa - queste ultime danno origine ad un ciclo di stallo quando l istruzione dipendente usa i suoi dati sorgente al terzo stadio. Per evitare il ciclo di penalità, si potrebbe spostare l esecuzione dell operazione aritmetica per le istruzioni TIPO-R al quarto stadio, aggiungendo un opportuna ALU in parallelo alla memoria (la ALU già presente al terzo stadio verrebbe usata solo per il calcolo dell indirizzo nel caso di istruzioni di accesso alla memoria). In questo modo, un ciclo di penalità dovuto a criticità carica-e-usa si avrebbe solo quando un istruzione dipendente lw e sw usi il dato prodotto da una lw immediatamente precedente per il calcolo dell indirizzo (caso che potete supporre piuttosto raro). Si esprima una valutazione della proposta (per quanto possibile analitica) precisando anche se: - la proposta è completamente irrealizzabile - la proposta è realizzabile, ma non consegue mai alcuna riduzione delle penalità dovute alle criticità sui dati - la proposta è realizzabile, ma la riduzione delle penalità si ottiene solo in determinate condizioni - la proposta è realizzabile e ottiene sempre una riduzione delle penalità, che vanno comunque valutate in rapporto all incremento dei costi legati all introduzione di una ALU supplementare. [2]