Architettura degli elaboratori A.A

Documenti analoghi
Architettura degli elaboratori A.A aprile 2019

Architettura degli Elaboratori

Architettura degli elaboratori Primo Appello A.A gennaio 2018

Architettura degli Elaboratori A.A Seconda Verifica Intermedia

Architetture degli Elaboratori Prima prova di verifica intermedia bozza di soluzione

Domanda 2 Si dica se le seguenti affermazioni sono vere o false, dandone opportuna e sintetica motivazione:

Esercizio 1. Progettare la PO a partire dal microprogramma eseguibile e successivamente:

Architettura degli Elaboratori - A.A Primo Appello - 5 giugno 2015 Risultati e calendario degli orali su web appena disponibili

Architettura degli elaboratori A.A

Architettura degli Elaboratori A.A Appello 5 settembre 2016

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architettura degli elaboratori A. A o Appello 7 febbraio 2017

Architettura degli Elaboratori

Archittettura degli elaboratori A.A

Architettura degli Elaboratori

Prima prova di verifica intermedia

Architettura degli Elaboratori Seconda prova di verifica intermedia

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli elaboratori

Architettura degli Elaboratori

Architettura degli Elaboratori,

Architettura degli Elaboratori A.A appello 23 giugno 2010

Architettura degli Elaboratori Appello del 21 febbraio Domanda 1 (tutti)

Architettura degli Elaboratori A. A Prima prova di verifica intermedia e appello straordinario 3 novembre 2017

Architettura degli elaboratori Anno Accademico Appello del 4 settembre 2017

Architetture degli elaboratori A.A

Architettura degli elaboratori A. A

Architettura degli Elaboratori. Domanda 1 (tutti)

Architettura degli Elaboratori. Domanda 1 (per tutti)

Architettura degli Elaboratori, Prima prova di verifica intermedia. 7 novembre Domanda 1

Seconda Esercitazione di Verifica Intermedia

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Esercitazione 4 di verifica

Architettura degli Elaboratori, a.a Correzione della Prima Prova di Verifica Intermedia

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 12 Gennaio Attenzione:

Architettura degli Elaboratori

ESERCIZIO 1 (12 punti) 1. (2 punti) Scrivere la sequenza di istruzioni MIPS che implementino lo pseudocodice:

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 20 Giugno Attenzione:

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello dell 11 Settembre Attenzione:

Architettura degli Elaboratori, Esercitazione 2

CALCOLATORI ELETTRONICI 9 gennaio 2013

Corso di Laurea in Informatica Architetture degli Elaboratori

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 19 Febbraio Attenzione:

Corso di Laurea in Informatica Architetture degli Elaboratori

Lezione 7 Sommatori e Moltiplicatori

PROVA SCRITTA DEL MODULO DI. 13 giugno 2017 NOME: COGNOME: MATRICOLA:

Instruction Level Parallelism Andrea Gasparetto

LA CPU INTEL Vantaggi dei programmi Assembly

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 22 giugno Attenzione:

Pipeline Problemi 1. Pipeline Problemi 2

ESERCIZIO 1 Si consideri la seguente funzione f (A, B, C, D) non completamente specificata definita attraverso il suo ON-SET e DC-SET:

Esercizio n. 7 - Microcodice

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 25 Febbraio Attenzione:

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 28 Settembre 2006

Architettura degli Elaboratori, a.a Correzione

1) Un calcolatore con processore R3000 avente frequenza di clock pari a 2GHz esegue il seguente programma:

Esercitazione su Instruction Level Parallelism Salvatore Orlando

ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining

Caching Andrea Gasparetto

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 10 Febbraio Attenzione:

Corso di Laurea in Informatica

Esercitazione 5 di verifica

Lezione di Tutorato Di Architettura degli Elaboratori B 18/05/2005 SOLUZIONI: PIPELINE

Architettura degli elaboratori Tema d esame del 20/01/2016

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 12 Gennaio Attenzione:

Corso di Architettura dei Calcolatori (I anno) Prova scritta finale 29 gennaio 2007

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Corso di Laurea in Informatica

Circuiti combinatori notevoli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Architettura degli Elaboratori Gestione dei control-hazard nella pipeline. Prof. Andrea Sterbini

AXO Architettura dei Calcolatori e Sistemi Operativi

Costrutti di iterazione

1. L istruzione li $a0, è un istruzione standard del processore MIPS? Se no, a quali istruzioni corrisponde e come viene eseguita?

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Corso di Laurea in Informatica Architetture degli Elaboratori

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 8 novembre Attenzione:

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

PROVA SCRITTA DEL MODULO DI NOME: COGNOME: MATRICOLA:

Domande di Reti Logiche compito del 08/01/2019

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Architettura degli elaboratori Tema d esame del 20/01/2016

Cognome:, Nome: Matricola:

PROVA SCRITTA DEL CORSO DI. Corso di Laurea in Ingegneria Biomedica, Ingegneria Elettrica ed Elettronica 17 Luglio 2014

Esercitazione 06 Progettazione di una CPU RISC-V

Esercitazione su Instruction Level Parallelism

Cognome:, Nome: Matricola:

Corso di Laurea in Informatica Architetture degli Elaboratori

Esercizi su Microarchitetture. Università Roma Tre

Il processore Pentium

Architettura del processore e esecuzione delle istruzioni

CPU pipeline hazards

Transcript:

Architettura degli elaboratori A.A. 2016-17 Quarto appello 4 luglio 2017 Riportare nome, cognome, numero di matricola e corso di appartenenza in alto a destra su tutti i fogli consegnati. I risultati saranno pubblicati via web appena disponibili Domanda 1 Il calcolo dell integrale di una funzione f(x) fra a e b può essere approssimato sommando l area di n rettangoli di larghezza b a n e altezza f(xi) con xi =a + i (b.a), per esempio utilizzando lo pseudocodice: n float res = 0.0, x = a, delta = (b-a)/n; for(int i=0; i<n; i++) { res += f(x)*delta; x += delta; } Supponendo che sia f(x) = c1x 2 + c2x + c3 e che il calcolo di f(x) avvenga utilizzando un apposita funzione con parametri in ingresso e in uscita passati mediante registri, si calcolino: La traccia degli indirizzi logici (anche utilizzando indirizzi simbolici, purché coerenti con le assunzioni utilizzate durante le lezioni) generati dall esecuzione dei calcolo dell integrale, assumendo che a, b ed n vengano caricati da un area di memoria il cui indirizzo base é contenuto in un registro Il tempo di completamento del calcolo dell integrale, in funzione di t ed n, utilizzando un processore D-RISC pipeline, assumendo che i calcoli in virgola mobile utilizzino una EU parallela con EU slave che calcolano somma e sottrazione in virgola mobile in 2t e moltiplicazione e divisione in virgola mobile in 4t Il tempo di completamento con un processore D-RISC pipeline superscalare a 2 vie. Domanda 2 Dato il microcodice: 0. (RDY,IN 0=0-) nop, 0 (=10) 0 C, 0 I 1. (=11) 1 C, 0 I 1. 1. (zero(n-i)=0) C * IN M[I], I+1 I, 1 (=1) set ACK, reset RDY, 0. Si dica se l unità firmware può essere realizzata con un unica rete sequenziale motivando dettagliatamente la risposta. Successivamente si dica se le seguenti affermazioni sono vere o false (sempre motivando dettagliatamente la risposta): a. Il numero dei livello di porte OR di una PC è determinato unicamente dal numero di b. Il numero di bit del registro di stato della PC è determinato unicamente dal numero di c. Il numero di livelli di porte AND di una PC è determinato dal numero complessivo delle variabili di condizionamento e delle.

Traccia di soluzione Domanda 1 La compilazione dello pseudo codice secondo le regole viste a lezione genera il codice: init: ADDF Rf0, Rf0, Rres // azzeramento Rres LOAD Rconst, #0, Ra // carico le costanti dalla memoria di indirizzo noto LOAD Rconst, #1, Rb LOAD Rconst, #2, Rn LOAD Rconst, #3, Rc1 LOAD Rconst, #4, Rc2 LOAD Rconst, #5, Rc3 ADDF Ra, R0, Rx // x = a SUBF Rb, Ra, Rdiff // calcolo (b-a)/n DIVF Rdiff, Rn, Rdelta ADD R0, R0, Ri // inizializzazione variabile d iterazione (solo per contare) loop: CALL Rf, Rret // ciclo principale: chiamo la funzione MULF Rfx, Rdelta, Rcontrib // calcolo area rettangolo i-esimo ADDF Rres, Rcontrib, Rres // sommo contributo ADDF Rdelta, Rx, Rx // calcolo prossimo xi // numero di iterazioni IF< Ri, Rn, loop // se non ho finito, ciclo END f: MULF Rx, Rx, Rx2 // ingresso in Rx, uscita in Rfx, calcolo x 2 MULF Rx2, Rc1, Rx2 // calcolo c1 x 2 // calcolo c2 x ADDF Rx2, Rxb, Rxb // calcolo c1 x 2 + c2 x ADDF Rxb, Rc, Rfx // calcolo c1 x 2 + c2 x + c3 GOTO Rret // ritorno END La traccia degli indirizzi logici generati sarà dunque: init, init+1, memparam, init+2, memparam+1, init+3, memparam+2, init+6, memparam+5, init+7, init+8, init+9, init+10, loop, f, f+1, f+2,, f+5, loop+1, loop+2,, loop+5, loop, intendendo per init, loop e f gli indirizzi logici che corrispondono alla prima istruzione del codice compilato, del loop e della funzione f e per memparam l indirizzo dell area da cui vengono prelevati i valori delle costanti.

Per la valutazione delle prestazioni, consideriamo come al solito il solo corpo del ciclo, eseguito n volte. Qui abbiamo un bel numero di dipendenze logiche e bolle legate ai salti: dipendenze logiche EU-EU: fra la prima e la seconda istruzione di f, fra la seconda, la terza e la quarta e fra la quarta e la quinta. Inoltre, c è una dipendenza fra l ultima ADDF della f e la prima MUL del corpo del loop dipendenze logiche IU-EU: fra la INC e la IF< bolle legate ai salti: CALL e IF< nel corpo del ciclo, GOTO nella funzione f L effetto delle dipendenze e dei salti è notevole, come si può vedere dalla simulazione di una singola iterazione del ciclo: 1 loop: CALL Rf, Rret 2 MUL Rfx, Rdelta, Rcontrib 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ADDF Rres, Rcontrib, Rres IM CALL M2 M8 M9 M10 A11 A12 GOTOEND M2 A3 A4 INC IF< END CALL 4 ADDF Rdelta, Rx, Rx IU CALL M2 M8 M9 M10 M10 A11 A12 A12 GOTOEND M2 A3 A3 A4 A4 INC IF< END CALL 5 DM 6 IF< Ri, Rn, loop EU M8 M9 M9 M9 M9 M9 M10 A11 A11 A11 A11 A11 A12 A12 A12 M2 M2 M2 A3 A3 A3 A3 A3 A4 INC 7 END EUF*/ M8 M8 M8 M8 M9 M9 M9 M9 M2 M2 M2 M2 8 f: MULF Rx, Rx, Rx2 M10 M10 M10 M10 9 MULF Rx2, Rc1, Rx2 EUF+- A11 A11 A12 A12 A3 A3 10 A4 A4 11 ADDF Rx2, Rxb, Rxb 12 ADDF Rxb, Rc, Rfx 13 GOTO Rret 14 END Di fatto impieghiamo 29t per una iterazione (tempo di completamento pari a 29nt) a fronte di 12 istruzioni per iterazione. Il tempo di servizio sarà quindi T = 29 12 t e l efficienza = = 0.414 12 29 Volendo considerare un processore D-RISC pipeline, superscalare a due vie, possiamo utilizzare il codice D-RISC precedente per riempire i due slot di ciascuna delle istruzioni lunghe, ricordando le condizioni che precludono all utilizzo di due particolari istruzioni D-RISC in un istruzione lunga che obbligano all inserimento di eventuali NOP. In questo caso, sempre considerando il solo corpo del ciclo e il calcolo di f (escludendo quindi le istruzioni dell inizializzazione), avremo loop: CALL Rf, Rret NOP MUL Rfx, Rdelta, Rcontrib NOP ADDF Rres, Rcontrib, Rres ADDF Rdelta, Rx, Rx NOP IF< Ri, Rn, loop NOP f: MULF Rx, Rx, Rx2 NOP MULF Rx2, Rc1, Rx2 ADDF Rx2, Rxb, Rxb NOP ADDF Rxb, Rc, Rfx GOTO Rret con un numero di NOP (necessarie) relativamente alto. Come si può vedere con la simulazione, non si ha un guadagno significativo rispetto al caso non superscalare e l efficienza è chiaramente più bassa:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 loop: CALL Rf, Rret NOP IM 1 2 6 7 8 9 2 3 4 5 1 2 MUL Rfx, Rdelta, Rcontrib NOP IU 1 2 6 7 8 8 9 9 2 2 3 3 4 4 5 5 1 3 ADDF Rres, Rcontrib, Rres ADDF Rdelta, Rx, Rx DM 4 NOP EU 6 7 7 7 7 7 8 8 8 8 8 9 9 9 2 2 2 3 3 3 3 3 4 5 IF< Ri, Rn, loop NOP EUF*/ 6 6 6 6 7 7 7 7 8 8 9 9 2 2 2 2 3 3 6 f: MULF Rx, Rx, Rx2 NOP 7 7 7 7 3 3 7 MULF Rx2, Rc1, Rx2 EUF+- 8 ADDF Rx2, Rxb, Rxb NOP 9 ADDF Rxb, Rc, Rfx GOTO Rret Il tempo di completamento è di 28nt. Il codice potrebbe essere chiaramente ottimizzato. Il calcolo della funzione f può essere fatto in modo da interporre le istruzioni che calcolano c 2x + c 3 fra le istruzioni che calcolano c 1 x 2. Possiamo anche utilizzare un salto ritardato sia per il ritorno dalla funzione che per la chiamata. Per lo slot della GOTO possiamo utilizzare l ultima istruzione che calcola il risultato finale (una ADDF). Nello slot della CALL possiamo inserire la, per esempio. Il salto ritardato può essere utilizzato anche per l IF< di fine iterazione, utilizzando l istruzione che aggiorna il valore dell integrale per riempire lo slot. Tuttavia, tutto questo può essere ulteriormente migliorato utilizzando la tecnica dell inlining, ovvero inserendo le poche istruzioni che calcolano f all interno del corpo del ciclo, sostituendole alla CALL. In questo caso il codice potrebbe essere riscritto come segue (abbiamo anche utilizzato la proprietà associativa della addizione, ovvero compiliamo f(x) = c 1x 2 + (c 2x+c 3) anziché f(x) = (c 1x 2 + c 2x)+c 3): loop: MULF Rx, Rx, Rx2 ADDF Rxb, Rc3, Rxb MULF Rx2, Rc1, Rx2 ADDF Rxb, Rx2, Rfx MULF Rfx, Rdelta, Rcontrib ADDF Rdelta, Rx, Rx IF< Ri, Rn, loop, delayed ADDF Rres, Rcontrib, Rres In questo caso, la simulazione ci fa vedere un guadagno migliore: 1 MULF Rx, Rx, Rx2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 IM M1 M2 A3 M4 A5 INC M7 A8 IF<d A10 M1 3 ADDF Rxb, Rc3, Rxb IU M1 M2 A3 M4 M4 A5 INC INC M7 A8 A8 IF<d A10 M1 M1 4 MULF Rx2, Rc1, Rx2 DM 5 ADDF Rxb, Rx2, Rfx EU M1 M2 A3 A3 A3 A3 A3 M4 A5 A5 A5 A5 A5 INC M7 M7 A8 A10 A10 A10 M1 6 EUF*/ M1 M1 M1 M1 M7 M7 M7 M7 M1 M1 M1 M1 7 MULF Rfx, Rdelta, Rcontrib M2 M2 M2 M2 M4 M4 M4 M4 8 ADDF Rdelta, Rx, Rx EUF+- A3 A3 A5 A5 A8 A8 A10 A10 9 IF< Ri, Rn, loop, delayed 10 ADDF Rres, Rcontrib, Rres Visto che tempo di completamento diventa 21nt. Se consideriamo questo codice per il caso del processore superscalare otteniamo: loop:

MULF Rx, Rx, Rx2 ADDF Rxb, Rc3, Rxb ADDF Rxb, Rx2, Rfx MULF Rfx, Rdelta, Rcontrib IF< Ri, Rn, loop MULF Rx2, Rc1, Rx2 ADDF Rdelta, Rx, Rx ADDF Rres, Rcontrib, Rres 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 MULF Rx, Rx, Rx2 IM 1 2 3 4 5 1 2 ADDF Rxb, Rc3, Rxb MULF Rx2, Rc1, Rx2 IU 1 2 3 3 4 4 5 5 1 1 3 ADDF Rxb, Rx2, Rfx DM 4 MULF Rfx, Rdelta, Rcontrib ADDF Rdelta, Rx, Rx EU 1 2 2 2 2 2 2 3.1 3.2 3.2 3.2 3.2 4 4 4 5 5 5 5 5 1 5 IF< Ri, Rn, loop ADDF Rres, Rcontrib, Rres EUF*/ 1.1 1.1 1.1 1.1 2.2 2.2 2.2 2.2 4.1 4.1 4.1 4.1 5 5 5 5 1.2 1.2 1.2 1.2 4.2 4.2 1.1 1.1 1.1 1.1 EUF+- 2.1 2.1 3.2 3.2 1.2 1.2 1.2 1.2 Adesso il tempo di completamento è 20nt. Domanda 2 Se consideriamo il microcodice assegnato, possiamo notare che le micro operazioni della seconda micro istruzione soddisfano le condizioni di Bernstein rispetto alle micro operazioni della prima micro istruzione, tranne che nel caso dell inizializzazione del registro I (sempre posto a 0 nella prima microistruzione) e del registro C. I viene scritta da 0.1 e 0.2 e letta nella 1.0, violando le condizioni di Bernstein. Abbiamo tuttavia assunto che qualunque registro utilizzato in una unità firmware sia automaticamente inizializzato a 0 all avvio dell unità, dunque potremmo rimuovere le inizializzazioni di I nella 0. e considerare il codice: 0. (RDY,IN 0=0-) nop, (=10) 0 C, 1. (=11) 1 C, 1. 1. (zero(n-i)=0) C * IN M[I], I+1 I, 1 (=1) set ACK, reset RDY, 0 Anche il registro C viene scritto nella 0. e letto nella 1. Osservando che il valore di C è costante e dipende dalla IN 0, possiamo eliminare l inizializzazione e utilizzare una costante nella 1. a seconda del valore di IN 0. Con queste ipotesi il microcodice potrebbe essere riscritto così: 0. (RDY, IN0, zero(n-i)=0-- nop, 0 (=1-1) set ACK, reset RDY, 0 (=100) 0 * IN M[I], I+1 I, 0 (=110) 1 * IN M[I], I+1 I, 0 ovvero, semplificando 0. (RDY, IN0, zero(n-i)=0-- nop, 0 (=1-1) set ACK, reset RDY, 0 (=100) 0 M[I], I+1 I, 0 (=110) IN M[I], I+1 I, 0 Dunque l unità può essere realizzata come un unica rete sequenziale, visto che la parte controllo non avrebbe stato interno dal momento che il programma di controllo ha un unica micro istruzione.

Riguardo alle affermazioni, ultima parte della seconda domanda: a. Il numero dei livello di porte OR di una PC è determinato unicamente dal numero di Falso, dobbiamo prevedere una riga della tabella di verità di PC e PC per ognuna delle frasi del microprogramma, che possono essere più del numero delle micro istruzioni b. Il numero di bit del registro di stato della PC è determinato unicamente dal numero di Vero. Il numero di microistruzione corrente è lo stato della PC, dunque i bit del registro di stato devono essere quelli necessari a rappresentare il numero dell istruzione. c. Il numero di livelli di porte AND di una PC è determinato dal numero complessivo delle variabili di condizionamento e delle Falso. E determinato dal numero di bit del registro di stato (quindi dal numero delle micro istruzioni, vedi sopra) e dal numero di variabili di condizionamento testate contemporaneamente in una micro istruzione.