Architettura degli elaboratori

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

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

Architettura degli elaboratori Primo Appello A.A gennaio 2018

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

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli elaboratori A. A o Appello 7 febbraio 2017

Architettura degli Elaboratori

Architettura degli Elaboratori

Architettura degli Elaboratori. Domanda 1 (per tutti)

Archittettura degli elaboratori A.A

Architettura degli Elaboratori,

Prima prova di verifica intermedia

Architettura degli Elaboratori A.A Appello 5 settembre 2016

Architettura degli Elaboratori A.A appello 23 giugno 2010

Architettura degli elaboratori A.A

Architettura degli Elaboratori

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architettura degli Elaboratori

Architettura degli Elaboratori Seconda prova di verifica intermedia

Architettura degli Elaboratori, Domanda 1

Architettura degli elaboratori A.A aprile 2019

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

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

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

Architettura degli elaboratori A.A

Esercitazione 4 di verifica

Architettura degli elaboratori A. A

Architettura degli Elaboratori, a.a Correzione

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

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

ESERCIZIO: PROGETTO DI UNA CPU A PIU REGISTRI

Architettura degli Elaboratori - Correzione

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

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

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

Esercizio. Si consideri una cache con 64 blocchi di 16 byte ciascuno. A quale numero di blocco corrisponde l indirizzo 1200 espresso in byte?

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

Esercitazione su Gerarchie di Memoria

Esercitazione su Gerarchie di Memoria

Memoria: lettura, scrittura e indirizzamento

Lezione 17 Il Set di Istruzioni (3)

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

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

PROVA SCRITTA DEL MODULO DI. 17 giugno 2015 NOME: COGNOME: MATRICOLA: CFU:

Lezioni 5 e 6i. Esercizi Cache

Note sull utilizzazione di componenti logici di tipo memoria

Miglioramento delle prestazioni

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

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Fondamenti di Informatica A. A / 1 9

Calcolatori Elettronici II parte (CdL Ingegneria Informatica) Esame del 22 settembre 2011 tempo a disposizione: 1 ora e 30 minuti

Richiami sull architettura del processore MIPS a 32 bit

Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri 1

SECONDA PROVA INTERMEDIA DEL MODULO DI. 1 giugno 2017 NOME: COGNOME: MATRICOLA:

Seconda Esercitazione di Verifica Intermedia

Macchina di Von Neumann

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

PROVA SCRITTA DEL MODULO DI. CORSO DI LAUREA IN INGEGNERIA ELETTRICA ED ELETTRONICA, INGEGNERIA BIOMEDICA 14 febbraio 2017

Esame di INFORMATICA Lezione 4

Architettura del Calcolatore

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 13 Luglio 2004

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

Ingresso-Uscita e Interruzioni

Richiami sull architettura del processore MIPS a 32 bit

Architettura dei sistemi di elaborazione (Input/Output parte 1)

Memoria Virtuale e I/O

PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO (5-6-7 CFU) 16 Gennaio 2014

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

PROVA SCRITTA DEL MODULO DI NOME: COGNOME: MATRICOLA:

Struttura delle memorie cache

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

Indirizzamento, lettura e scrittura della memoria

SECONDA PROVA INTERMEDIA DEL MODULO DI. 1 giugno 2017 NOME: COGNOME: MATRICOLA:

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

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

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

Esercizi sulle prestazioni delle memorie cache

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

PRIMA PROVA INTERMEDIA DEL CORSO DI C A L C O L A T O R I E L E T T R O N I C I 27 Aprile 2012

Corso di Laurea in Informatica

L'architettura del processore MIPS

Architettura hardware

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

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

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Corso di Architettura dei Calcolatori (I anno) Prova scritta finale 19 gennaio 2006

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

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

Architettura del calcolatore (Seconda parte)

Corso di Architettura dei Calcolatori (I anno) Prova scritta finale 14 gennaio 2010

Architettura degli Elaboratori Lez. 10 Esercizi su CPU MIPS a 1 ciclo di clock. Prof. Andrea Sterbini

Esercizio 1.A Aritmetica binaria (nel presentare le soluzione mostrare, almeno nei passaggi piú significativi, i calcoli eseguiti) (3 punti)

Struttura delle memorie cache

Architettura di un calcolatore

Transcript:

Architettura degli elaboratori Quinto appello A.A. 2011-2012 Scrivere Nome, Cognome, Matricola, Corso e Programma presentato su ognuno dei fogli consegnati. La bozza di soluzione, i risultati e il calendario degli orali verranno pubblicati sulle pagine web del corso appena disponibili. Domanda 1 (Tutti) Si consideri il seguente pseudocodice e se ne fornisca una compilazione in codice D-RISC (A, B e C sono vettori di interi da N posizioni ciascuno, N=2 k ). sum=0; for(i=0,i<n,i++) { } ind = (a[i]+b[i]) % N; c[ind]=c[ind]+ind; sum = sum + ind; Si fornisca il working set del programma e si discutano le caratteristiche relative agli accessi effettuati in memoria: traccia degli indirizzi generati, numero di fault, banda della memoria principale. Si assuma la presenza del solo livello di cache primaria con cache istruzioni e dati separate, associative su insiemi, a due vie, con =8 e 1K insiemi ciascuna. Domanda 2 (tutti) Si realizzi una unità firmware che calcola il programma descritto dallo pseudocodice della Domanda 1, con le seguenti assunzioni: i vettori A a B si trovano in una singola memoria esterna, cui si accede mediante interfaccia standard. La memoria ha un tempo di accesso pari a t M, il vettore C si trova in una memoria interna all unità, con tempo di accesso pari a t a, il calcolo parte all arrivo di un segnale di pura sincronizzazione da una unità U 1, il valore calcolato per sum viene inviato ad una unità U 2. non è necessario testare or(esito) sulle operazioni in memoria. Si forniscano microprogramma, ciclo di clock, tempo di servizio per l unità e numero di ALU incluse nella PO. Domanda 3 (NEW, OLD-0) Discutere l impatto sul sottosistema di memoria di una architettura superscalare ad N vie. Domanda 3 (OLD-1) Valutare il tempo necessario al completamento di un operazione di I/O che, utilizzando MM I/O, legge la coppia di coordinate relative alla posizione di un dispositivo di puntamento tipo mouse, cioè una coppia di interi da 32 bit certamente presenti nella memoria interna dell unità di I/O e li restituisce nella coppia di registri R50 e R51.

Bozza di soluzione Domanda 1 Compilazione in Assembler D-RISC, con opportune allocazioni e inizializzazioni dei registri generali: for: LOAD R a, R i, R ai LOAD R b, R i, R bi ADD R ai, R bi, R ab MOD R ab, R N, R ind LOAD R c, R ind, R cind ADD R ind, R cind, R cind STORE R c, R ind, R cind ADD R sum, R ind, R sum INCR R i IF< R i, R N, for END Il working set del programma comprende: - i blocchi di cache che contengono il codice (due, dato che =8, qui abbiamo sia località che riuso) - un blocco di cache contenente i valori di a e uno per quelli di b (località nell accesso ma non riuso) - il vettore c (possibile riuso ma senza località). Poiché l indirizzo di c è il risultato di un calcolo, non è possibile fare analisi statiche precise circa l entità del riuso, cioè circa la riutilizzazione di un blocco già riferito. In ogni caso, a condizione che la capacità della cache (16K) sia maggiore di N, richiediamo di non deallocare i blocchi di c: LOAD R c, R ind, R cind, non_deallocare La traccia degli indirizzi logici generati verso il sistema di memoria è INDIRIZZO(LOAD1), A[0], INDIRIZZO(LOAD2), B[0], INDIRIZZO(ADD1), INDIRIZZO(MOD), INDIRIZZO(LOAD3), C[IND], INDIRIZZO(ADD2), INDIRIZZO(STORE), INDIRIZZO(ADD3), INDIRIZZO(INC), INDIRIZZO(IF<), INDIRIZZO(LOAD1) Per capire quali accessi vengono effettivamente richiesti alla cache dobbiamo considerare la traduzione degli indirizzi effettuata in MMU. La traccia degli indirizzi fisici presentati alla cache sarà quindi (in assenza di fault di pagina): (INDIRIZZO(LOAD1)), (A[0]), (INDIRIZZO(LOAD2)), (B[0]), (INDIRIZZO(ADD1)),... Avendo a disposizione una cache separata per dati e codice, il codice produrrà i soli fault per il caricamento iniziale (sono due, dal momento che la lunghezza del codice è compresa fra e 2 ). Per quanto riguarda i dati, a seconda di come sono mappate in memoria principale le pagine logiche che contengono i tre vettori, potremmo trovarci nella situazione che le pagine fisiche utilizzate mappano sullo stesso insieme di blocchi di cache. In questo caso potrebbe darsi la situazione che l accesso a c[ind] provochi la de-allocazione del blocco di cache che contiene a[i] o b[i], incrementando il numero di fault rispetto a 2N/. Tuttavia, l accesso al vettore c avviene

in modo dipendente dal risultato della somma fra a[i] e b[i], quindi la probabilità che la porzione dell indirizzo fisico che determina l insieme di cache in cui andare a cercare il blocco di c coincida con l indirizzo in cui sono mappati sia il blocco che contiene a[i] che quello che contiene b[i] è bassa. Dovrebbe accadere infatti che per Indirizzo(A[I]) = TAG (19 bit) #SET (10 bit) OFFSET (3 bit) Indirizzo(B[I]) = TAG #SET OFFSET Indirizzo(C[ind]) = TAG #SET OFFSET i campi #SET, #SET e #SET abbiano tutti lo stesso valore. Dovremmo quindi avere un numero di fault complessivi pari a 2 (codice) N/ (scorrimento di a) N/ (scorrimento di b) al più N/ (aggiornamento di c) Verifichiamo se la banda della memoria principale è sufficiente a sopportare il carico di richieste di scrittura negli elementi di c senza degradare il tempo di completamento. Il tempo di servizio per generare richieste di scrittura alla memoria è dato dal tempo di completamento di una singola iterazione del loop: 10T ch + 4 Tex LD/ST + 4Tex ALcorte + 1 Tex ALlunghe + 1Tex if = 10 ( + t a ) + 4 ( + t a ) + 4 ( ) + 1 (50 ) + 1 (2 ) = 84 + 14 t a La banda massima della memoria principale è data da M /m. Quindi, nel caso più favorevole, la condizione richiesta è: m τ M 1 84 τ + 14 t a In realtà, poiché in generale gli accessi agli elementi di c non avvengono a indirizzi consecutivi, è possibile che si verifichino conflitti di richieste consecutive per l accesso allo stesso modulo. Dall analisi della banda di una memoria interallacciata (sez. 3.4.3 della dispensa su ILP) risulta che la banda non è proporzionale a m, bensì a circa la radice di m: questa è la modifica da apportare alla relazione precedente per renderla più realistica. Agli effetti del programma svolto, questo tipo di analisi vale per NEW e OLD-0. Domanda 2 Assumendo che - l interfaccia verso U 1 sia costituita da RDY sync e ACK sync - l interfaccia verso U 2 sia costituita da RDY out, ACK out e registro OUT - che BASEA e BASEB contengano gli indirizzi base in memoria per i vettori A e B - che I sia un registro di (k+1) bit, con k = log 2 N.

possiamo scrivere il microprogramma dell unità come mostrato nel seguito. Il valore di DATAIN + AI che compare nel microprogramma consiste dei k bit meno significativi del risultato di DATAIN + AI. L ottimizzazione del tempo medio di elaborazione è ottenuta utilizzando tale valore per indirizzare la memoria interna C: rispetto alla soluzione in cui il valore venga prima scritto in un registro e poi utilizzato quest ultimo per indirizzare C, la soluzione adottata comporta un ciclo di clock più lungo ma un numero di cicli di clock dell ordine della metà, con un bilancio complessivo sul tempo di elaborazione favorevole. Dato che il contenuto di DATAIN è il risultato dell accesso in memoria esterna, non è possibile una soluzione alternativa che anticipi il calcolo dell indirizzo di C minimizzando anche il ciclo di clock. 0. (RDY sync = 0) nop, 0; ( = 1) 0 SUM, 0 I, reset RDY sync, set ACK sync, BASEA INDA, BASEB INDB, BASEA IND, read OP, set RDY outm, 1 1. (RDY inm = 0) nop, 1; ( = 1) reset RDY inm, DATAIN AI, INDA + 1 INDA, I + 1 I, INDB IND, read OP, set RDY outm, 2 2. (RDY inm, ACK out, I 0 = 0 ) nop, 2; ( = 1 0) reset RDY inm, C[DATAIN + AI] + DATAIN + AI C[DATAIN + AI], DATAIN + AI + SUM SUM, I + 1 I, INDB + 1 INDB,, INDA IND, read OP, set RDY outm, 1; (= 1 1 1) reset RDY inm, C[DATAIN + AI] + DATAIN + AI C[DATAIN + AI], DATAIN + AI + SUM OUT, reset ACK out, set RDY out, 1; ( = 1 0 1) reset RDY inm, C[DATAIN + AI] + DATAIN + AI C[DATAIN + AI], DATAIN + AI + SUM SUM, 3; 3. (ACK out = 0) nop, 3; ( = 1) SUM OUT, set RDY out, reset ACK out, 0 La microistruzione 3 può essere eliminata se si effettua l attesa di ACK out nella stessa microistruzione 2. Agli effetti della valutazione del ciclo di clock si ha: T PO = 0 T PC = T PC = 2t p T PO è sicuramente determinato dalle micro-operazioni contenenti per cui paghiamo C[DATAIN + AI] + DATAIN + AI C[DATAIN + AI] t alu (calcolo indirizzo C) + t a (lettura di C) + t alu (somma di IND) essendo il ritardo di stabilizzazione di C per la scrittura sovrapposto a quello della lettura e somma, per un totale di 2 t alu + t a

Dunque: = 3t p + 2 t alu + t a Per ottenere questo risultato dobbiamo essere in grado di eseguire in parallelo, nella microistruzione 2, tutte le somme: I + 1, INDB + 1, DATAIN + AI, C[..] +, + SUM e quindi dovremo includere 5 ALU nella PO. Il tempo di servizio è dato da: T 2N ( + t M ) Domanda 3 (NEW, OLD-0) La banda della cache istruzioni deve permettere la lettura di N istruzioni consecutive contemporaneamente (istruzione lunga in VLIW): questo si può ottenere con una memoria interallacciata con N moduli, oppure con locazioni di N parole (parole lunghe). Qualora non si vieti esplicitamente la presenza di più istruzioni LOAD/STORE nella stessa istruzione lunga, la cache dati debba deve anch essa permettere, nel caso peggiore, l esecuzione di N letture o scritture contemporaneamente, cosa che si può ottenere con una memoria interallacciata di m moduli, con m N. Detto q il numero medio di LOAD/STORE per istruzione lunga, la condizione per non avere degradazioni di prestazioni dovute a conflitti sugli stessi moduli è data da: B M q Cioè: m 0,56 q Domanda 3 (OLD-1) È sufficiente leggere, utilizzando gli indirizzi su cui è mappata la memoria dell unità di I/O nello spazio di indirizzamento logico del processo in esecuzione, mediante due LOAD: LOAD R baseui/o, R offsetx, R 50 LOAD R baseui/o, R offsety, R 51 Ovviamente, le letture verranno reindirizzate verso il bus di I/O dalla MMU e quindi costeranno ciascuna il tempo di un trasferimento di una parola dalla unità di I/O al processore. Le istruzioni di cui sopra possono far parte dello handler di una interruzione dall unità connessa al mouse, con la quale si comunica il riferimento alla base delle due parole da leggere. È inoltre richiesta una sincronizzazione tra CPU e unità di I/O: può essere organizzata una coda di coppie di locazioni, e quindi trasmesso alla CPU il riferimento alla testa della coda, demandando interamente la gestione della coda all unità di I/O, oppure, se la coppia di parole è sempre la stessa, utilizzare un flag che deve essere settato dallo handler, mediante una STORE, dopo la lettura delle due parole.