Architetture degli Elaboratori Prima prova di verifica intermedia bozza di soluzione

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

Architettura degli elaboratori A.A aprile 2019

Archittettura degli elaboratori A.A

Architettura degli elaboratori A.A

Architettura degli elaboratori A. A o Appello 7 febbraio 2017

Architettura degli elaboratori A.A

Prima prova di verifica intermedia

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

Architettura degli elaboratori A. A

Architettura degli Elaboratori

Architettura degli elaboratori Primo Appello A.A gennaio 2018

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

Architettura degli Elaboratori A.A Appello 5 settembre 2016

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

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

Architettura degli Elaboratori. Domanda 1 (per tutti)

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architettura degli Elaboratori A.A appello 23 giugno 2010

Architettura degli Elaboratori, a.a Correzione

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

Architettura degli Elaboratori

Architettura degli Elaboratori, Esercitazione 2

Architettura degli Elaboratori,

Architettura degli Elaboratori, Domanda 1

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

Architetture degli elaboratori A.A

Architettura degli elaboratori

Architettura degli Elaboratori. Domanda 1 (tutti)

Prima Esercitazione di Verifica Intermedia

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli elaboratori Anno Accademico Appello del 4 settembre 2017

Architettura degli Elaboratori

Note sull utilizzazione di componenti logici di tipo memoria

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

Architettura degli Elaboratori

Architettura degli Elaboratori Seconda prova di verifica intermedia

Architettura degli Elaboratori, Esercitazione 1

Architetture dei Sistemi Elettronici

Seconda Esercitazione di Verifica Intermedia

Architettura degli Elaboratori

Architettura degli Elaboratori - Correzione Appello del 18 luglio 2006, A.A. 2005/06

Esercitazione 4 di verifica

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Architettura degli Elaboratori A.A Seconda Verifica Intermedia

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

Esercitazione 1 di verifica

Reti combinatorie. Reti combinatorie (segue) Struttura di un elaboratore - introduzione. Architettura degli Elaboratori T.

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

Esercitazione 2 di verifica

Microarchitettura: Livello 1

Esercitazione 5 di verifica

Rappresentazione dell informazione

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

Architettura dell elaboratore

Architettura dell elaboratore

ESERCIZIO: PROGETTO DI UNA CPU A PIU REGISTRI

Istruzioni di trasferimento dati

Lezione 18 Il Set di Istruzioni (4)

Informazioni varie. Lezione 18 Il Set di Istruzioni (5) Dove siamo nel corso. Un quadro della situazione

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

Calcolatore: sottosistemi

Algebra e circuiti elettronici

Tutorato di Calcolatori Elettronici Battista Biggio - Sebastiano Pomata. Corso di Laurea in Ingegneria Elettronica

Moduli combinatori Barbara Masucci

Esercizi per il corso di Architettura dei Calcolatori. Anno accademico 2008/09. Si prevede l utilizzo dell emulatore Eniac ( presentato a lezione )

Informatica teorica Lez. n 10 Macchine a registri. Macchine a registri. Prof. Giorgio Ausiello Università di Roma La Sapienza

Cenni alle reti logiche. Luigi Palopoli

Fetch Decode Execute Program Counter controllare esegue prossima

Corso di Laurea in Informatica

Laboratorio di Architettura degli Elaboratori

Dal linguaggio macchina al linguaggio C

Lezione 17 Il Set di Istruzioni (3)

Testi di Esercizi e Quesiti 1

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Reti combinatorie. Reti combinatorie (segue)

Reti combinatorie (segue) Reti combinatorie. Lezione 2. Architettura degli Elaboratori A. Sperduti 1

Architettura degli elaboratori - Luigi Lavazza A.A. 2014/15

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Linguaggio macchina e register file

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

PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica

Istruzioni e linguaggio macchina

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

Fondamenti di Informatica

Algoritmi di Ricerca. Esempi di programmi Java

Esercitazione 11. Control-Unit. Data-Path

Architettura degli Elaboratori - Correzione

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Capitolo 6. Reti asincrone. Elaborazione asincrona Procedimenti di sintesi e analisi Memorie binarie

Reti Logiche T. Esercizi reti sequenziali sincrone

Reti Logiche A Prova di giovedì 3 febbraio 2005

Tavola di verita. Tavola di verita f = (A+not(B)) x (not(a)+c) x not(a) A+ not(a) Tavole di verita. Dal problema alla rete combinatoria.

Corso di Laurea in Informatica Architetture degli Elaboratori

Algoritmi di Ricerca. Esempi di programmi Java

Transcript:

Architetture degli Elaboratori Prima prova di verifica intermedia bozza di soluzione 19 dicembre 2012 1 Domanda 1 Si possono considerare due soluzioni alternative: utilizzare un registro da 1 bit TURNO per gestire la priorità, oppure utilizzare due microistruzioni diverse, una che dà priorità al unità U 1 e l altra che la dà invece ad U 2 quando siano presenti dati in ingresso da entrambe le unità. 1.1 Prima soluzione: variabile TURNO Nel primo caso, il microprogramma potrebbe essere scritto come segue: 0. (RDY 1, RDY 2, ACK out, T URNO = 00 )nop, 0 (= 101 )IN 1 OUT, reset RDY 1, set ACK 1, reset ACK out, set RDY out, T URNO = 1, 0 (= 011 )IN 2 OUT, reset RDY 2, set ACK 2, reset ACK out, set RDY out, T URNO = 0, 0 (= 1110)IN 1 OUT, reset RDY 1, set ACK 1, reset ACK out, set RDY out, T URNO = 1, 0 (= 1111)IN 2 OUT, reset RDY 2, set ACK 2, reset ACK out, set RDY out, T URNO = 0, 0 (= 0 )nop, 0 In questo caso, possiamo realizzare l unità come un unica rete sequenziale. La struttura dalla parte operativa sarà la seguente: i vari β e α saranno calcolati a partire da RDY 1, RDY 2, ACK out, T URNO direttamente nella PO. Tenendo conto del fatto che quando si effettua un invio verso U occorre sempre avere β out = β ACKout = β RDYout = 1 1

e che quando si invia il dato ricevuto da U i occorre avere possiamo assumere di avere una rete che calcola β RDYi = β ACKi = 1 e una rete che calcola: β out = RDY 1 RDY 2 + ACK out α K = RDY 1 RDY 2 ACK out + RDY 1 RDY 2 ACK out T URNO che può essere quindi utilizzata anche per i β della prima e della seconda interfaccia di ingresso: β setrdy1 = β resetack1 = α K β setrdy2 = β resetack2 = α K Il ciclo di clock in questo caso deve essere calcolato come il tempo necessario per scrivere il valore corretto in OUT, quindi come tempo necessario per calcolare α K (2t p ) e per stabilizzare K (altri 2t P ), per un totale di τ = 4t p + δ = 5t p Di fatto questo costituisce il tempo necessario per il calcolo del prossimo stato interno (oltre al tempo necessario per l impulso di clock). Non va considerato il tempo per il calcolo delle uscite verso la PC dal momento che non c è una PC in questo caso. 1.2 Seconda soluzione: microistruzioni diverse per priorità diverse La soluzione alternativa invece portava ad un microcodice con 2 microistruzioni: 0. (RDY 1, RDY 2, ACK out = 00 )nop, 0 (= 1 0, 010)nop, 0 (= 1 1)IN 1 OUT, reset RDY 1, set ACK 1, reset ACK out, set RDY out, 1 (= 011)IN 2 OUT, reset RDY 2, set ACK 2, reset ACK out, set RDY out, 0 1. (RDY 1, RDY 2, ACK out = 00, 10, 100)nop, 1, (= 11)IN 2 OUT, reset RDY 2, set ACK 2, reset ACK out, set RDY out, 0 (= 101)IN 1 OUT, reset RDY 1, set ACK 1, reset ACK out, set RDY out, 1 In questo caso, la prima microistruzione dà priorità ai dati dalla unità U 1 e la seconda ai dati dalla U 2. La parte operativa è la stessa del caso precedente (tranne il registro TURNO) e avremo T ωp O = 0 (le variabili di condzionamento sono solo sincronizzatori) e T σp O = 2t p (tempo di stabilizzazione di un commutatore da 2 ingressi). Per la parte controllo abbiamo 2 stati interni (1 bit), variabili di condizionamento (e quindi un livello AND con porte da al più 4 ingressi) e 7 frasi (quindi livello OR con porte da al più 7 ingressi) il che permette di concludere che T ωp C = T σp C = 2t p. Il ciclo di clock quindi vale 2 Domanda 2 τ = 0 + max{2t p, 2t p + 2t p } + t p = 5t p Si assume che i parametri vengano passati mediante un area di memoria di tre celle consecutive, all indirizzo IND, tali che: 2

MV [IND] contenga il valore X da ricercare nell array M V [IN D + 1] contenga l indirizzo della prima posizione dell array MV [IND + 2] contenga il numero di posizioni dell array Assumiamo anche che l indirizzo dei parametri in memoria venga passato tramite Rparam, che il risultato sia restituito in Rres, e che per l indirizzo di ritorno della procedura si usi Rret. Lo pseudo codice della procedura è il seguente: res = -1; for(i=0; i<n; i++) if(a[i]==x) res=i; return(res); che corrisponde al codice D-RISC: cerca: SUB R0, #1, Rres CLEAR Ri LOAD Rparam, #0, Rx LOAD Rparam, #1, Rbasea LOAD Rparam, #2, Rn loop: LOAD Rbasea, Ri, Rai ; ciclo sugli elementi dell array IF!= Rai, Rx, cont ADD Ri, R0, Rres ; compilazione ramo then cont: INC Ri ; compilazione fine ciclo IF< Ri, Rn, loop ; prepara il valore di ritorno non trovato ; registro indice per scorrere l array ; accesso ai parametri della procedura ; ritorno al chiamante Si potrebbe ovviamente interrompere il ciclo appena trovato il valore: for(...) if( ) { res = i; break; } In questo caso è sufficiente modificare la compilazione del ramo then come segue: cerca: SUB R0, #1, Rres CLEAR Ri LOAD Rparam, #0, Rx LOAD Rparam, #1, Rbasea LOAD Rparam, #2, Rn loop: LOAD Rbasea, Ri, Rai IF!= Rai, Rx, cont ADD Ri, R0, Rres cont: INC Ri IF< Ri, Rn, loop Un esempio di chiamata della procedura per cercare Y in B è il seguente:

... STORE Rparam, R0, Ry STORE Rparam, #1, Rbaseb STORE Rparam, #2, Rlenb CALL Rcerca, Rret... La procedura esegue: 2 aritmetico-logiche corte e LOAD nell inizializzazione 1 LOAD, una aritmetico-logica corta e due IF per ognuna delle iterazioni con test falso 1 LOAD, 1 IF, una aritmetico logica corta e una GOTO per l iterazione che trova il valore cercato, oppure 1 LOAD, 2 IF, una aritmetico logica corta e un GOTO per la fine ciclo se il valore non è presente. Assumendo che il valore sia presente nell array e che si trovi (mediamente) a metà array, possiamo stimare il numero di istruzioni eseguite come: 2 ALC + LOAD per l inizializzazione (1 LOAD + 1 ALC + 2 IF) * N/2 iterazioni con test falso 1 LOAD, 1 IF, 1 ALC e 1 GOTO per la fine ciclo per un totale di ALC + 4 LOAD + 1 IF + 1 GOTO + N/2 * (1 LOAD + 1 ALC + 2 IF) Fattorizzando le ch0. e ch1. e ricordando i tempi impiegati per le esecuzioni delle varie classi di istruzioni: T C = (9 + N 2 4)(T ch0 + T ch1 ) + N 2 (T execload + T execadd + 2T execif ) T C = (9 + 2N)(2τ + t a ) + N 2 (τ + t a + τ + 2τ) = (9 + 2N)(2τ + t a ) + N 2 (4τ + t a) Per N grande possiamo semplificare il tempo di esecuzione della procedura con Domanda T C = 2N(2τ + t a ) + N 2 (4τ + t a) = N(6τ + 5 2 t a) La parte controllo è una rete di Mealy, quindi sia σ P C che ω P C hanno in ingresso sia le variabili di condizionamento che lo stato interno. Quindi entrambe le reti hanno n = log 2 (m) + k ingressi. Questo implica porte AND con n ingressi, e quindi la necessità, qualora n > 8 di log 8 (n) = log 8 ( log 2 (m) + k) livelli di porte da max 8 ingressi. Qualunque funzione booleana di n ingressi può essere definita mediante una tabella di verità di 2 n righe. Poichè l espressione boolena della funzione contiene un termine in OR per 4

ognuno degli 1 presenti nella colonna che definisce l uscita, avremo un massimo di 2 n termini in OR. Dunque il livello OR potrebbe essere realizzato con porte da max 8 ingressi con un albero di profondità log 8 (2 n ) Trasformando il logaritmo in base 8 in base 2 avremmo quindi che il numero di livelli dell albero OR è pari a log 8 (2 n ) = log 2(2 n ) log 2 (8) = log 2(2 n ) log 2 (2 ) = n Nel nostro caso abbiamo che n = log 2 (m) + k e dunque il numero dei livelli di porte OR sarà log 2(m) + k Complessivamente, dunque, potremmo dire che per la stabilizzazione di ω P C e σ P C occorrono ( log 2(m) + k + log 8 (n) )t p Nel caso in cui si sappia che le variabili di condizionamento vengono testate al massimo 4 alla volta, possiamo dedurre che fino a un massimo di 2 4 microistruzioni (quindi 4 bit per la codifica dello stato interno), basta un livello AND, invece dei log2(m) +k di prima. 5