Esercitazione 5 di verifica

Documenti analoghi
Esercitazione 4 di verifica

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

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

Architettura degli Elaboratori - Correzione

Architettura degli elaboratori A. A o Appello 7 febbraio 2017

Architettura degli elaboratori

Seconda Esercitazione di Verifica Intermedia

Architettura degli Elaboratori. Domanda 1 (per tutti)

Architettura degli Elaboratori

Architettura degli Elaboratori,

Architettura degli Elaboratori, Domanda 1

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

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

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

Architettura degli Elaboratori, Esercitazione 4. Domanda 1

Integrazioni sull architettura con cache

Prima prova di verifica intermedia

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

Architettura degli Elaboratori A.A appello 23 giugno 2010

Architetture degli elaboratori A.A

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Architetture degli Elaboratori Prima prova di verifica intermedia bozza di soluzione

PRESTAZIONI. senza e con memoria cache

Architettura degli Elaboratori, a.a Correzione

Esercizi vari. CPI e influenza cache

Architettura degli elaboratori A.A aprile 2019

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

Memorie Caratteristiche principali

Memoria Virtuale e I/O. Paolo Baldan. Introduzione. Gerarchie di memoria: Cache. Gerarchie di Memoria CPU

Lezione di Tutorato Di Architettura degli Elaboratori B 29/04/2005. SOLUZIONI: Cache

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

Architettura degli Elaboratori A.A Quarto Appello 14 gennaio 2015

Esercitazione su Gerarchie di Memoria

Architettura degli elaboratori Primo Appello A.A gennaio 2018

Architettura degli Elaboratori A.A Seconda Verifica Intermedia

Corso di Laurea in Informatica

La gerarchia di memorie (2)

Memoria Virtuale e I/O

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

La gerarchia di memorie (2)

Lezioni 5 e 6i. Esercizi Cache

Lezione 17 Il Set di Istruzioni (3)

La gerarchia di memorie (2)

Architettura degli Elaboratori. Domanda 1 (tutti)

ESERCIZI e DOMANDE: I/O

Esercitazione su Gerarchie di Memoria

Dischi: Esercizio 1. Ora t.elab = n.cicli impiegati / Frequenza = / ( ) = 20ms

Architettura dell elaboratore

Architettura dell elaboratore

Caching Andrea Gasparetto

Note su elaborazione in parallelo a livello firmware

Miglioramento delle prestazioni

Calcolatori Elettronici

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

Blocchi di più parole

Archittettura degli elaboratori A.A

informatica di base per le discipline umanistiche

Architettura dei sistemi di elaborazione: La memoria (parte 2)

ESERCITAZIONE SULLA VALUTAZIONE DELLE PRESTAZIONI (5 giugno 2006) Esercizio 1 (Tratto dai lucidi sulla Valutazione delle prestazioni)

Esercizi vari Salvatore Orlando

Architettura degli elaboratori A.A

Esercitazione su Instruction Level Parallelism

Architettura degli Elaboratori A.A Appello 5 settembre 2016

Prestazioni & Co: CPU, Memoria, I/O

La gerarchia di Memoria

La memoria cache. Lab di Calcolatori

Università degli Studi di Cassino

La gerarchia di Memoria

Note sull utilizzazione di componenti logici di tipo memoria

Linguaggi di Programmazione

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

Operating System Concepts 7 th Edition! 8.2! Silberschatz, Galvin and Gagne 2005!

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

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

Gerarchia di memoria

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

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Soluzione Esercizio 1

La memoria - tecnologie

Università degli Studi di Cassino e del Lazio Meridionale

informatica di base per le discipline umanistiche

Architettura del calcolatore: gerarchia delle memorie, coprocessori, bus (cenni)

Memoria: lettura, scrittura e indirizzamento

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

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 27 Febbraio 2003

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

Calcolatori Elettronici

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. 27 Febbraio 2001

Sistemi di Calcolo (A.A ) Corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma

Appelli degli anni precedenti Domande di teoria

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

La memoria - tecnologie

Transcript:

Architettura degli Elaboratori, 2007-08 Esercitazione 5 di verifica Soluzione: entro mercoledì 5 dicembre Si considerino i seguenti due programmi: Domanda 1 P1: opera su tre array A[N], B[N], C[N] di interi, con N = 4K, e calcola la seguente funzione: i = 0.. N 1 : C i = min ( A i, B i ) P2:opera su tre array A[N], B[N], C[N][N] di interi, con N = 4K, e calcola la seguente funzione: i, j = 0.. N 1 : C i, j = min ( A i, B j ) I programmi vengono eseguiti su una architettura con le seguenti caratteristiche: 1. la macchina assembler è D-RISC; 2. la CPU, con ciclo di clock nsec, dispone di cache primaria operante su domanda, completamente associativa, capacità di 16K parole, blocchi di 8 parole, scritture con il metodo Write-Through. Non è presente cache secondaria; 3. la memoria principale è interallacciata con 4 moduli e ciclo di clock uguale a 200. I collegamenti inter-chip hanno latenza di trasmissione di 19. Per i due programmi: Inoltre: a) spiegare come si caratterizzano dal punto di vista della località e del riuso; b) determinare l insieme di lavoro e il numero di cache fault del programma. Spiegare se per garantire la presenza di tale insieme di lavoro è necessario intervenire a tempo di compilazione, oppure a tempo di esecuzione, ed eventualmente come; c) sapendo che la probabilità che un elemento di A sia maggiore di un elemento di B è uguale a ¼, valutare il tempo di completamento e la performance. d) nel caso che la cache primaria sia associativa su insiemi, con 2 blocchi per insieme, 4 blocchi per insieme, spiegare se le prestazioni cambiano rispetto al caso precedente; e) nel caso che sia supportata anche la modalità di funzionamento con prefetching, spiegare s e come questa può essere sfruttata per aumentare le prestazioni; f) nel caso che nell architettura venga introdotta una cache secondaria, spiegare se le seguenti affermazioni sono vere, false o vere sotto determinate condizioni: i. i suoi blocchi sono ampi 8 parole; ii. iii. i suoi blocchi sono ampi più di 8 parole; i programmi devono essere ricompilati.

2 Soluzione a) Per le domande a) e b) è sufficiente ragionare sui programmi scritti in pseudo-codice, come in effetti fa (ovviamente) il compilatore: P1:: P2:: for (i = 0; i < N; i++) C[i] = max (A[i], B[i]) for (i = 0; i < N; i++) for (j = 0; j < N; j++) C[i][j]= max (A[i], B[j]) Nel caso di P1, si ha località per quanto riguarda il codice e i tre array, mentre il riuso si applica solo alla parte di codice che costituisce il corpo del loop. Nel caso di P2, oltre che quanto detto per P1, si ha riuso sull intero array B. Il compilatore ricava le proprietà suddette sugli array, sia per P1 che per P2, dall analisi del codice, esaminando la variazione degli indici: in entrambi i casi, per ogni i il prossimo indice ad essere generato è i + 1; in P2, per ogni i vengono generati tutti i possibili valori di j, quindi tutto B è riusato per ogni i. b) Dall analisi del punto a) siamo in grado di affermare che, essendo la cache su domanda, l insieme di lavoro di P1 è costituito da 3 blocchi per i dati, e precisamente un blocco per A, uno per B e uno per C, e da tanti blocchi per quanti sono necessari a contenere il codice del loop (presumibilmente uno: da verificare al punto c)). Il compilatore ricava questa proprietà dall analisi del codice, verificando quali oggetti (codice del loop, A i, B i, C i ) sono necessari contemporaneamente, e quindi è necessario che siano allocati contemporaneamente in cache per minimizzare la probabilità di fault. Quindi, il numero di fault è dato da: N fault = 2 N σ valutando, come di regola, solo il numero di fault che danno luogo a trasferimento di blocco (ciò non avviene per C). Si noti che, con una cache su domanda, per P1 la penalità dovuta ai fault è dello stesso ordine di grandezza (ordine di N) del tempo di completamento ideale, per cui l efficienza relativa della cache non potrà avvicinarsi a uno. Con lo stesso ragionamento, il compilatore ricava che l insieme di lavoro è costituito dai blocchi di codice del doppio loop (presumibilmente due), da un blocco di A, un blocco di C e da tutti i blocchi di B, quindi, se è possibile garantire la presenza in cache dell insieme di lavoro, si ha: N fault = 2 N σ in particolare, se è possibile garantire che tutto B rimanga allocato in cache una volta utilizzato durante la prima iterazione del loop più esterno (per i = 0). Ovviamente, il compilatore, conoscendo le caratteristiche dell architettura, è in grado di verificare che la dimensione dell insieme di lavoro è minore della capacità della cache.

3 La penalità dovuta ai fault è, quindi, di ordine N, invece che N 2, mentre il tempo di completamento ideale è dell ordine di N 2 : quindi per P2, riuscire a mantenere l insieme di lavoro in cache rende trascurabile l impatto dei fault e l efficienza relativa della cache praticamente uguale a uno. In entrambi i programmi, mantenere in cache i blocchi di codice può essere garantito dall architettura firmware (su questi blocchi, l unità cache può applicare per default anche la tecnica del prefetching). Inoltre, per P2, allo scopo di mantenere tutto B in cache, una volta utilizzato per i = 0, occorre annotare le istruzioni di LOAD su B con l opzione non_deallocare. c) Vediamo la compilazione dei due programmi in D-RISC, limitandoci per P2 al loop più interno (ripetuto N 2 volte, rispetto al loop più esterno ripetuto N volte): P1:: LOOP: THEN: CONT: INCR Ri LOAD RA, Ri, Ra LOAD RB, Ri, Rb IF > Ra, Rb, THEN STORE RC, Ri, Ra GOTO CONT STORE RC, Ri, Rb IF < Ri, RN, LOOP END Si verifica che il loop consta di 8 istruzioni, quindi è contenuto in un solo blocco di cache (complessivamente, i fault sulle istruzioni sono due). P2:: LOOP2: THEN: CONT: INCR Rj Per P1 si ha, con p = 1/4: dove Per P2: dove LOAD, RB, Rj, Rb, non_deallocare IF > Ra, Rb, THEN STORE RCriga, Ri, Ra GOTO CONT STORE RCriga, Ri, Rb IF < Rj, RN, LOOP2 T c-id-1 = N [ n iter-1 T ch + 3 T ex-ld + 2 T ex-if + T ex-incr + (1 p) T ex-goto ] n iter -1 = 7 p T c-id-2 N 2 [ n iter-2 T ch + 2 T ex-ld + 2 T ex-if + T ex-incr + (1 p) T ex-goto ] n iter-2 = 6 p

4 I valori si ricavano, come nel, Esercitazione 4, sostituendo le usuali espressioni dei tempi di elaborazione delle varie istruzioni, e ponendo il tempo di accesso in memoria per una cache completamente associativa. t a = t c = 3 Il tempo medio di trasferimento di un blocco dalla memoria principale alla memoria cache è dato da: T trasf = σ m τ M + 2 T tr + m τ che, moltiplicato per N fault, fornisce in entrambi i casi la penalità T fault dovuta ai fault di cache. Si verifichi che, visti gli ordini di grandezza, l efficienza relativa della cache per P2 è data da 2 1 mentre per P1 risulterà sostanzialmente più bassa (da calcolare). Per la performance si ragiona come nell Esercitazione 4. Per avere una valutazione rigorosa, occorre verificare se le scritture in memoria principale, con il metodo Write-Through, impattano o meno sule prestazioni. Questo si verifica confrontando la banda delle richieste di scrittura da parte del processore: con la banda offerta dalla memoria: B ric h = 1 n iter T B M = m τ M Se la prima è minore della seconda, allora le scritture non hanno impatto sulle prestazioni, in quanto la memoria interallacciata è in grado di smaltire tutto il carico di richieste che, ricordiamo, avvengono a blocchi di indirizzi consecutivi (quindi, 4 scritture possono avvenire simultaneamente). Altrimenti, il tempo medio di completamento di una iterazione va assunto uguale a 1/B M (da calcolare per P1 e P2). d) In P1, con il metodo completamente associativo è assicurato che l insieme di lavoro è sempre presente in cache. Con il metodo associativo su insiemi, esiste un probabilità non nulla che blocchi omologhi di A, B; C corrispondano allo stesso insieme, in quanto non è dato fare ipotesi sull allocazione della memoria principale. In una tale situazione, avendo 2 blocchi per insieme non è possibile farli risiedere contemporaneamente in cache, quindi non sarebbe possibile soddisfare l insieme di lavoro. Questo non avviene disponendo di 4 blocchi per insieme. In P2, nel caso peggiore può accadere che corrispondano allo stesso insieme blocchi omologhi di A e C ed uno dei blocchi di B; dunque, con 2 blocchi si avrebbe un aumento del numero di fault su A e C. In tutte queste considerazioni, si può assumere che i blocchi di codice non vadano a collidere con i blocchi di dati, in quanto, tipicamente, la cache è suddivisa in una parte istruzioni ed una parte dati. e) Il compilatore verifica, in P1, che il prefetching è applicabile, sempre per la proprietà che per ogni i viene generato i+1. Annotando le istruzioni di LOAD e STORE con l opzione prefetching, l unità cache provvederà a iniziare i trasferimenti di un blocchi di A, B, C appena concluso il trasferimento del blocco precedente, di fatto annullando la probabilità di fault. Questa strategia non

5 avrebbe comunque effetto per P2, visto che l efficienza relativa è già molto vicina al massimo assoluto: il compilatore, avendo prima verificato che B gode della proprietà del riuso, deciderà di non applicare prefetching. f) In presenza di una cache secondaria C2, detta C1 la cache primaria: i, ii) l ampiezza dei blocchi della gerarchia M-C2 è molto maggiore di quella della gerarchia C2-C1, come avviene sempre salendo di livello nella gerarchia complessiva, ad esempio è dell ordine della centinaia di parole, in quanto, statisticamente, aumentando la capacità del livello più basso di una gerarchia aumenta il valore di che minimizzala probabilità di fault ; iii) i programmi non devono essere ricompilati: non solo perché un cambiamento tecnologico dei supporti di memoria non può impattare sulla portabilità del codice, ma soprattutto perché le ottimizzazioni introdotte dal compilatore non cambiano, sia dovute a prefetching, che dovute a non deallocazione di blocchi.