Architettura degli elaboratori A. A o Appello 7 febbraio 2017

Documenti analoghi
Testi di Esercizi e Quesiti 1

Send/receive sincrona, assumendo che la condivisione avvenga mediante riferimenti logici coincidenti, invece che con capability.

Esercitazione 2 di verifica

Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

PARTE III MACCHINE A REGISTRI

Gerarchie di Memoria

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Architettura degli elaboratori (A)

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Informatica Teorica. Macchine a registri

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

Descrizione di un algoritmo

CPU. Maurizio Palesi

Macchina di von Neumann

Architettura di un sistema di calcolo

Capitolo Acquisizione dati con PC

Corso di Laurea in Informatica Architetture degli Elaboratori

Strutture di Memoria 1

Architettura di un calcolatore: introduzione

Lezione n.19 Processori RISC e CISC

Flip-flop, registri, la macchina a stati finiti

Von Neumann. John Von Neumann ( )

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Calcolatori Elettronici

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

L architettura di riferimento

Memorie Caratteristiche principali

Sistemi Web per il turismo - lezione 3 -

CPU pipeline 4: le CPU moderne

Elettronica dei Sistemi Programmabili A.A Microcontrollori. Introduzione allo sviluppo di progetti

C. P. U. MEMORIA CENTRALE

Architettura dei Calcolatori Parte Operativa e Parte Controllo

Circuiti sequenziali e elementi di memoria

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Calcolatori Elettronici

MODELLO DLX IN UNISIM

CPU pipeline 4: le CPU moderne

Hazard sul controllo. Sommario

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

Calcolatori Elettronici Reti Sequenziali Asincrone

ARCHITETTURA DEL CALCOLATORE

1. Spiegare le differenze fra le seguenti modalità di binding degli indirizzi:

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Architettura del calcolatore

Elementi di Architettura e Sistemi Operativi. problema punti massimi i tuoi punti problema 1 6 problema 2 7 problema 3 7 problema 4 10 totale 30

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

E una notazione per descrivere gli algoritmi.

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Calcolatori Elettronici

Trasformazioni del codice sorgente. Programmazione di qualità per sistemi embedded

Elementi di Architettura e Sistemi Operativi

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Struttura del calcolatore

Esercizio: memoria virtuale

CALCOLATORI ELETTRONICI 31 marzo 2015

INFORMATICA 1 L. Mezzalira

L unità di controllo. Il processore: unità di controllo. Le macchine a stati finiti. Struttura della macchina a stati finiti

COMPILAZIONE. Tarsformazione di linguaggi

Fondamenti Teorici. Antonio Pescapè e Marcello Esposito Parte Seconda v2.0

Lezione E5. Sistemi embedded e real-time

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

In realtà, non un solo microprocessore, ma un intera famiglia, dalle CPU più semplici con una sola pipeline a CPU molto complesse per applicazioni ad

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

MATEMATICA GENERALE Prova d esame del 4 giugno FILA A

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

Lezione 8. La macchina universale

La macchina programmata Instruction Set Architecture (1)

Lezione 7 Sommatori e Moltiplicatori

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

MODELLO AD AMBIENTE GLOBALE

Caratteristiche di un PC

CALCOLATORI ELETTRONICI I PRINCIPI DI FUNZIONAMENTO DI UN CALCOLATORE ELETTRONICO

YABC - ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

Algoritmi di Ricerca. Esempi di programmi Java

Laboratorio di Informatica

Uniamo VM e CACHE. Physically addressed. Physically Addressed. Prestazioni. Ci sono varie alternative architetturali. Sono quelle piu semplici

SISTEMA DI CONTROLLO E GESTIONE STAZIONI DI RICARICA E-CORNER PER VEICOLI ELETTRICI

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

CALCOLATORI ELETTRONICI 15 aprile 2014

3. La sintassi di Java

Unità Periferiche. Rete Di Controllo

ESERCIZI DEL CORSO DI INFORMATICA

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

Programmazione dello Z80

L unità di controllo di CPU multi-ciclo

Lezione n.9. Introduzione al linguaggio macchina

Il calcolatore. Architettura di un calcolatore (Hardware)

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Lezione 3: Architettura del calcolatore

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Laboratorio di Informatica di Base Archivi e Basi di Dati

Architettura della CPU e linguaggio assembly Corso di Abilità Informatiche Laurea in Fisica. prof. ing. Corrado Santoro

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Transcript:

Architettura degli elaboratori A. A. 2016-2017 2 o Appello 7 febbraio 2017 Domanda 1 Riportare nome, cognome, numero di matricola e corso (A/B) in alto a destra su tutti i fogli consegnati. I risultati e il calendario degli orali saranno pubblicati su WEB appena disponibili. Si consideri un sistema costituito da 8 unità firmware (U 1,...,U 8) collegate in pipeline: l unità U i riceve dati da U i-1 e invia risultati alla unità U i+1. L unità U 1 riceve dati da una unità U a mentre la U 8 invia i propri risultati ad una unità U b. Ciascuna U i ha al suo interno una memoria M con 2 13 posizioni da 32 bit. Ogni interfaccia fra due unità permette l invio di una terna di valori interi X, I e OP, rispettivamente da 32, 16 e 3 bit. I 16 bit di I vengono interpretati come 3 bit di indirizzo unità (parte più significativa) e 13 bit di indirizzo da utilizzare per accedere alla memoria interna M. Ciascuna delle unità U j esegue una delle seguenti operazioni esterne: se OP = 00 e i bit di indirizzo unità di I valgono j, il valore X in ingresso viene memorizzato alla posizione di M determinata dai 13 di indirizzo di I e il vecchio valore di tale posizione viene trasmesso alla unità U j+1, utilizzando come valore I lo stesso ricevuto in ingresso e come valore OP il valore 10; se i bit di indirizzo unità di I non valgono j, I, X e OP vengono passati all unità successiva se OP = 01 e i bit di indirizzo unità di I valgono j, all unità U j+1 viene inviato il valore in memoria M alla posizione determinata dai 13 bit di indirizzo di I, utilizzando lo stesso valore I quello ricevuto in ingresso e come valore OP il valore 10; se i bit di indirizzo unità di I non valgono j, I, X e OP vengono passati all unità successiva se OP =10 l unità passa all unità successiva senza modificarli i valori appena ricevuti per X, I e OP L unità U a invia ad U 1 solo richieste per operazioni OP=00 o 01. Si vuole conoscere la latenza, in t p, richiesta dall esecuzione di una operazione ordinata da U a considerando come esecutore dell operazione l intero pipeline formato dalle 8 unità. Domanda 2 Si consideri un sistema costituito dal processore D-RISC sequenziale (quello dell interprete firmware) e dotato di una gerarchia di memoria che comprende un unico livello di cache, comune per dati e istruzioni, set associativa su insiemi (4 linee per insieme), con = 16 e 1K insiemi. La memoria principale è modulare, interallacciata, con 4 moduli da 1G parole ciascuno e M=400 (con ciclo di clock della CPU). Il t tr fra memoria principale e cache è pari a 4. Si consideri quindi il codice D-RISC che deriva dalla compilazione dello pseudo codice e si calcolino: int N = 1024, a[n], b[n], c[n]; for(int i=0; i<n; i++) { if(a[i] == b[i]) c[i] = a[i]*4; else c[i] = a[b[i]%n]*2; } il numero di fault generati dal programma la traccia degli indirizzi generati dal programma e quelli utilizzati per l accesso alla cache durante la prima iterazione del for, indicando per ciascun indirizzo il numero di insieme nella cache il tempo di completamento della prima iterazione, assumendo che A[0] sia diverso da B[0] assumendo che: i vettori A, B e C e il codice siano allocati rispettivamente dal compilatore agli indirizzi 1K, 2K, 3K e 0 che le pagine in memoria centrale siano di 2K parole che tabril[] = {<12,1>,<6,1>,<24,1>,<1,1>,...} dove ogni coppia è data da <IPF, bit di presenza>

Traccia di soluzione Domanda 1 Traccia Va progettata la singola unità Ui. Dovrebbe essere possibile realizzarla con una unica micro istruzione o al massimo con 2 microistruzioni. Va valutato il ciclo di clock, considerando anche il tempo di accesso alla memoria, in funzione di tp. Per la comunicazione servono 2 cicli di clock. Dunque la latenza non potrà essere inferiore a 16, qualunque sia il valore di. Microcodice -codice della generica unità U i (indichiamo con i 1,i 2,i 3 la configurazione di bit corrispondente a i) 0. // attendo una richiesta di operazione e la disponibilità a ricevere da parte della unità succ (RDYin,ACKout,OP, I 15,I 14,I 13=0------,10-----) nop, 0 // richiesta OP=00, bit di indirizzo indirizzano questa unità (=1100i 1,i 2,i 3) // memorizza X e prepara i dati in uscita XM[and(I,0001..1)], M[and(I,0001..1)] XOUT, IIOUT, 01OPOUT, // sistema sincronizzatori set ACKin, reset RDYin, set RDYout, reset ACKout,0 // richiesta OP=01, bit di indirizzo indirizzano questa unità (=1101i 1,i 2,i 3) // prepara dati in uscita M[and(I,0001..1)] XOUT, IIOUT,01OPOUT, // sistema sincronizzatori set ACKin, reset RDYin, set RDYout, reset ACKout,0 // se OP=10 o è una delle prime due operazioni ma indirizzate ad un altra unità (=1110---,110----) // passa dati in ingresso sull uscita XXOUT, IIOUT,OPOPOUT,set ACKin, reset RDYin, set RDYout, reset ACKout,0 In questo caso si sono testati i bit più alti di I direttamente nelle variabili di condizionamento. In alternativa, si poteva utilizzare controllo residuo per scegliere (nel caso OP=00 o OP=01) se scrivere in uscita i valori nuovi o quelli in ingresso e per comandare il della memoria. 0. (RDYin, ACKout, OP= 00--) nop,0 // OP=00 (=1100) (XM[and(I,0001..1)], M[and(I,0001..1)] XOUT, IIOUT, 01OPOUT) (I 15,I 14,I 13 ==i 1,i 2,i 3 ), (XXOUT, IIOUT,OPOPOUT) (I 15,I 14,I 13 ==i 1,i 2,i 3 ), set ACKin, reset RDYin, set RDYout, reset ACKout,0 // OP=01 (=1101) (M[and(I,0001..1)] XOUT, IIOUT, 01OPOUT) (I 15,I 14,I 13 ==i 1,i 2,i 3 ), (XXOUT, IIOUT,OPOPOUT) (I 15,I 14,I 13 ==i 1,i 2,i 3 ), set ACKin, reset RDYin, set RDYout, reset ACKout,0 // OP=10 (=1110) XXOUT, IIOUT,OPOPOUT,set ACKin, reset RDYin, set RDYout, reset ACKout,0

In entrambi i casi, abbiamo una sola -istruzione. L unità si riduce ad una unica rete sequenziale. Le variabili di condizionamento sono meno di 8 e quindi le variabili di controllo sono calcolate con un ritardo di 2t p (max 8 ingressi, 4 frasi). La m-operazione più lunga (consideriamo il primo -codice) è la M[and(I,0001..1)] XOUT che richiede un t p per calcolare l and, un t a per l accesso in memoria e un t k per la scrittura di XOUT. Il t a in questo caso vale log 8 (14) + log 8 (2 13 ) t p = (2 + 5) t p = 7 t p. Quindi complessivamente servono 10t p. Il ciclo di clock può dunque essere calcolato come = T PO + T PC +T PO + = 0 + 2t p + 10t p + t p = 13 t p Il tempo di completamento di ognuna delle operazioni esterne è pari ad un. Tuttavia, l implementazione del protocollo di comunicazione richiede almeno 2. La latenza (dal momento in cui arriva una richiesta di operazione ad U 1 al momento in cui U 8 è pronta a spedire il risultato sarà di 8 (numero unità) volte 2 = 16 = 16*13 t p Domanda 2 Traccia Compilazione del codice -> standard. C è da ricordarsi che le moltiplicazione e l operazione di modulo sono per potenze di due dunque vanno fatte con gli shift. L accesso ai vettori è sequenziale, senza riuso per B e C, random e sequenziale per A. Dunque utilizzando il flag prefetch per B e C abbiamo il solo fault iniziale, mentre per A dovremmo prevedere comunque N/ faults, visto l accesso con indirezione su B. Il codice, dopo il fault iniziale non ne produrrà altri, utilizzando il prefetch. Il tempo di completamento deve tener conto di #fault * Ttransf. Quest ultimo sarà dato dalla solita formula 2( + T tr ) + t M /m +. Gli indirizzi generati saranno quelli tradotti dalla tabril, tenendo conto che entra tutto in due pagine, dunque serve solo utilizzare la pagina IPF = 12 e IPF = 6. Codice La compilazione con le regole standard produce il codice: loop: else: then: cont: CLEAR Ri LOAD Rba, Ri, Rai LOAD Rbb, Ri, Rbi IF= Rai, Rbi, then AND Rbi, #1023, Rind LOAD Rb1, Rind, Rai SHL Rai, #1, Rai STORE Rbc, Ri, Rai GOTO cont SHL Rai, #2, Rai STORE Rbc, Ri, Rai INC Ri IF< Ri, RN, loop END Numero di fault Il programma scorre i vettori A e B, per il calcolo della condizione, e C, per la memorizzazione del risultato. Per i tre vettori avremo dunque N/ fault, riducibili a 1 in caso di utilizzo del flag prefetch sulle relative LOAD. Tuttavia, A viene indirizzato anche mediante i valori di B. Questi accessi non seguono un pattern sequenziale. Se tuttavia si

verificasse un fault per un accesso ad A non ancora toccato dagli accessi sequenziali per il test della condizione, il fault non verrebbe ripetuto quando si arriva a tale linea di cache per effetto degli accessi seuquenziali. Questo perchè la capacità complessiva della cache (1K insiemi da 4 linee ciascuna) è sufficiente a contenere tutto il vettore A, oltre alla singola linea di B e C nel working set ed al codice. Dunque per A non vale la riduzione ad unico fault mediante prefecth. Traccia degli indirizzi La traccia degli indirizzi logici generati dal programma per la prima iterazione è la seguente: 0, 1, 1024, 2, 2048, 3, che corrispondono, scomposti nei campi <IPL, OFF> ai seguenti indirizzi <0,0>, <0,1>, <0,1024>, <0,2>, <1,0>, <0,3> e prosegue, in caso il test IF= abbia successo con ovvero 9, 10, 3072, 11, 12 <0,9>, <0,10>, <1, 1024>, <0,11>, <0,12> oppure, in caso il test IF= non abbia successo con 4, 5, X (fra 1024 e 2047 compresi), 6, 7, 3072, 8, 11, 12 <0,4>, <0,5>, <0,X>, <0,6>, <0,7>, <1,1024>, <0,8>, <0,11>, <0,12> Gli indirizzi logici corrispondono ad indirizzi fisici ricavati mediante la tabella di rilocazione. Le pagine sono da 2K parole, quindi tutti gli indirizzi fra 0 e 2047 (codice e vettore A) cadono nella prima pagina logica e quindi sono mappati nella pagina fisica con IPF = 12 (come da tabril), mentre quelli fra 2048 e 4095 (vettori B e C) cadono nella seconda pagina logica e vengono mappati nella pagina fisica con IPF = 6.

e dunque la traccia degli indirizzi fisici generati verso la cache dalla MMU sarà interpretata come (considerando solo la parte iniziale per semplicità): set=512, offset=0, tag=1 set=512, offset=1, tag=1 set=576, offset=0, tag=1... dal momento che gli accessi in cache considerano i 32 bit dell indirizzo fisico come (dai bit meno significativi a quelli più significativi): 4 bit di offset 10 bit di numero di blocco 18 bit di tag

Tempo di completamento prima iterazione La prima iterazione esegue (nell ipotesi che venga preso il ramo else) 3 LOAD, 1 STORE, 2 IF, 1 GOTO e 3 aritmetico logiche corte. Complessivamente fanno 37+14t a : Texec CH0, CH1 Totale # t a t a t a LOAD 3 2 1 2 1 12 6 STORE 1 3 1 2 1 5 2 SALTI COND 2 2 0 2 1 8 2 SALTI INCOND 1 1 0 2 1 3 1 ARIT LOG CORTE 3 1 0 2 1 9 3 Tot 37 14 A questo vanno aggiunti i tempi necessari per risolvere il fault relativo al codice, quello relativo ad A[0] quello relativo a B[0], quello relativo alla A[B[i]%N] (probabilmente non risolto con la stessa linea che contiene A[0]) e infine (in sola scrittura), il costo dell allocazione della linea di cache per C[0] (trascurabile rispetto agli altri), che in totale costano 4 * ( 2(+ T tr ) + ( M )/m + ) = 3*( 2(+ 4) + (16400 )/4 + ) = 3 (10 + 1600 + ) = 4 * 1611 = 6444 e quindi il tempo di completamento della prima iterazione sarà 37+14t a + 6444 Considerando che t a, il tempo di accesso in cache di primo livello, sarà di 2 o 3 a seconda del modo scelto per implementare la cache set associativa (1 o 2 + 1 per la MMU), il tempo complessivo speso per la prima iterazione può essere calcolato come (cache set associativa con accesso in 1 ) 6444 + 14 (2 ) = 6472