65
MASTER IN SISTEMI EMBEDDED PER L’INTERNET OF THINGS Architetture di Calcolo Avanzate per Sistemi Embedded Docente: Francesca Palumbo UNISS - Università degli Studi di Sassari PolComIng Gruppo di Ingegneria dell’Informazione

MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

MASTER IN SISTEMI EMBEDDED PER L’INTERNET OF THINGS

Architetture di Calcolo Avanzate per Sistemi Embedded

Docente: Francesca Palumbo

UNISS - Università degli Studi di Sassari

PolComIng – Gruppo di Ingegneria

dell’Informazione

Page 2: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

Incremento delle prestazioni nei moderni sistemi di calcolo: • Tipi di parallelismo e classificazioni • Limiti e costi dell’approccio parallelo • Instruction Level Parallelism:

Il pipelining delle istruzioni Processori superscalari Processori VLIW

• Thread Level Parallelism: Multi-Threading, Chip Multi-Processors e Massively Parallel

Page 3: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PREMESSA • VLIW sta per Very Long Instruction Word. • Sfruttano il parallelismo a livello di istruzione ma, a

differenza dei processori superscalari, sono dotati di CPU a scheduling statico. – Le istruzioni, eseguibili in parallelo, sono identificate dal

compilatore e assemblate in pacchetti (istruzioni lunghe o bundle).

– Il program counter punta ad un bundle di istruzioni elementari che vengono lette, decodificate ed eseguite in parallelo dalla CPU.

• Nei processori superscalari l’unità controllo occupa il 30-35% dello spazio della CPU – Affidare al compilatore il compito di ottimizzare lo scheduling

delle istruzioni, aiuta a ridurre la complessità dell’unità di controllo e libera conseguentemente area sul chip.

– Ridurre la complessità in generale migliora il percorso critico (e in conseguenza la frequenza) e riduce la potenza dissipata.

Page 4: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

ISTRUZIONI • L’istruzione “lunga” viene indicata come “bundle” ed è

proporzionale, in lunghezza, al numero di unità funzionali in grado di eseguire le operazioni in parallelo.

• In una bundle vengono impacchettate insieme più “sillabe” distinte, che rappresentano le istruzioni macchina elementari, ognuna con i propri operandi.

• Le sillabe sono eseguibili in parallelo, mentre l’ordine di esecuzione delle bundle è rigorosamente sequenziale.

– Non è presente logica di riordino dei dati.

Page 5: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

L’IMPORTANZA DEL COMPILATORE

• Il compilatore vede una “finestra di programma” molto più grande di quella visibile dal hardware di un processore superscalare, quindi ha più tempo per analizzarla.

• NON ha conoscenza dei singoli eventi dinamici (es. salti fatti o no) – a volte ha informazioni statistiche.

• La selezione delle sillabe che andranno a comporre un bundle e l’ordine di esecuzione dei bundle vengono generati in fase di compilazione a partire dal programma statico, al più basandosi su informazioni ottenute da profiling del codice precedentemente ottenute.

• In hardware, non viene effettuato nessun controllo delle interdipendenze fra le operazioni incluse in un bundle.

• Non possono essere presenti nel bundle hazard strutturali.

Page 6: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

COMPILATORE: AUMENTO DEL ILP

• Loop unrolling - “srotolamento” dei cicli for, esplicitando le operazioni su un vettore di dati.

• Software pipelining - esecuzione parallela di operazioni di iterazioni diverse.

• Inlining - sostituzione della chiamata a funzione con il contenuto della funzione stessa.

• Trace scheduling - riordinamento delle istruzioni macchina

– loop unrolling

– predizione statica dei salti, aggiungendo delle istruzioni che recuperano il caso di errata predizione del salto.

Page 7: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

GENERALITA’ • Le operazioni che costituiscono il bundle hanno un formato

fisso. Questo agevola la decodifica. Il loro numero dipende dalle unità funzionali parallele a disposizione, che è noto al compilatore.

• Ogni bundle viene letto in un solo ciclo di lettura, quindi la banda disponibile deve essere adeguata all’ampiezza del bundle.

• La decodifica viene operata bunble per bundle in un ciclo.

• Le singole sillabe, componenti il bundle, vengono avviate in parallelo per l’esecuzione ognuna a una unità di esecuzione (tipicamente pipelined) capace di eseguirla.

• Tutte le unità funzionali possono accedere a un banco di registri condiviso (che quindi – supponendo che il bundle contenga n sillabe – dovrà ammettere 2n porte di lettura e n di scrittura).

Page 8: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

GENERALITA’

Page 9: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

SCHEMA A BLOCCHI GENERALE – VLIW A 4 VIE

Page 10: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

SCHEMA A BLOCCHI GENERALE – VLIW A 4 VIE • 4 “lane” o “vie”, cioè 4 unità funzionali aritmetico/logiche

collegate ad un unico register file dotato di 4 porte di scrittura e 8 di lettura.

• A ogni sillaba viene associata una lane ed ogni lane ha un accesso dedicato al RF.

• Una sola lane ha la possibilità di accedere alla cache dati, il che significa che in un bundle di 4 sillabe una sola sillaba potrà essere una operazione di accesso alla memoria (L/S).

• Non è detto che se ho una bundle di 4 sillabe utilizzerò sempre 4 lane. E’ possibile che il compilatore non riesca a riordinare le istruzioni in maniera tale da utilizzare sempre il processore a pieno.

• La BYPASS LOGIC serve a ridurre la latenza visibile di alcune operazioni. E’ equivalente alla logica di forwarding utilizzata dal nei processori pipelined per ridurre il numero di stalli dovuti alle dipendenze fra dati.

• L’area di interconnessione è elevata.

Page 11: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

FUNZIONAMENTO • Il compilatore identifica 4 operazioni mutuamente

indipendenti, per comporre le sillabe di un bundle: – si occupa, ove possibile, di risolvere i conflitti relativi alle risorse;

– associa ad ogni sillaba una lane, lungo la quale verrà eseguita (il codice oggetto specifica, non solo quali operazioni vengono eseguite in un’istruzione lunga, ma anche su quali unità funzionali sono eseguite).

• Conflitti di controllo: in un bundle può essere presente al più una operazione che modifica il flusso del controllo dell’esecuzione del programma (e.g. salto condizionato o no, chiamata a funzione o ritorno da sottoprogramma).

Page 12: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

FUNZIONAMENTO

• Il compilatore di un VLIW deve conoscere la latenza delle singole operazioni

– In un codice che deve eseguire delle operazioni su variabili interdipendenti come C=A*B; X=C+D, se la latenza della moltiplicazione è 2, il compilatore dovrà necessariamente inserire una NOP

1. [ C = A * B , .... ]

2. NOP

3. [X = C + D , .... ]

• Il compilatore di un VLIW deve risolvere a monte quante più dipendenze possibile, ristrutturando opportunamente il codice.

Page 13: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

CLUSTERING • Per supportare

efficientemente applicazioni con gradi di parallelismo superiore, i VLIW possono essere organizzati in “cluster”.

• Ogni cluster sfrutta un parallelismo limitato (e.g. 4 lane per cluster), ma nel complesso si possono ottenere prestazioni superiori.

• Ogni cluster ha il suo register file, ma è necessario dell’hardware aggiuntivo per gestire la coerenza della memoria.

Page 14: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PRO E CONTRO • A LIVELLO ARCHITETTURALE:

– La microarchitettura di un VLIW è più semplice di quella di un superscalare con uguale parallelismo, quindi si possono raggiungere frequenze di funzionamento superiori (considerato che il ciclo di clock ora è determinato dai percorsi critici del datapath e non dall’unità di controllo che è notevolmente più semplice) .

• A LIVELLO DI COMPILAZIONE: – Il compilatore deve avere una conoscenza dei dettagli della

microarchitettura (e.g. quante vie e che tipo di unità per via) e di alcuni parametri tecnologici (e.g. la latenza e throughput delle unità funzionali) al fine di poter efficientemente comporre i bundle. Questo riduce la portabilità del codice oggetto anche fra successive generazioni della stessa famiglia di processori VLIW, in quanto potrebbe venire a mancare la compatibilità binaria.

Page 15: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PRO E CONTRO • Problemi di compatibilità binaria => “software binary

translation” – Software dedicati per la conversione dinamica, al momento

dell’esecuzione, delle istruzioni appartenenti ad un instruction set in equivalenti istruzioni dell’instruction set nativo.

• Se il parallelismo non è elevato, nonostante le sofisticate tecniche di analisi, generazione di codice e scheduling utilizzate dai compilatori VLIW, è possibile che non sempre il compilatore sia in grado di garantire ad ogni colpo di clock l’utilizzo di ogni unità funzionale – elevato numero di sillabe nop nelle istruzioni – immagine molto grande del programma in memoria.

Page 16: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PRO E CONTRO

• Per ridurre la dimensione dell’immagine dell’applicazione in memoria si adottano, in fase di compilazione, tecniche di compressione della stessa

– Si evita l’introduzione fisica delle NOP, che vengono poi generate via hardware durante la fase di issue delle istruzioni.

– I bundle sono “impacchettati” in modo da contenere solo sillabe significative (nessuna NOP) e dei codici separatori (che indicano quali sillabe appartengono a un bundle e quali al bundle successivo).

– L’unità di controllo si occupa di spacchettare i bundle mandando in esecuzione solo quelli eseguibili (fino ai codici separatori).

Page 17: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PRO E CONTRO • Cache miss: il compilatore deve creare il codice oggetto

sulla base dei ritardi di caso peggiore, per garantire la correttezza in esecuzione. Di conseguenza deve prevedere cache miss ad ogni load. – Per la cache istruzioni: si usano dei pre-fetch buffer. – Per la cache dati: si ricorre a load speculative

In ogni caso cresce la complessità dell’unità di controllo. • La speculazione per quanto riguarda la presenza di salti

condizionati avviene a compile-time ed ovviamente viene messa a disposizione anche la procedura di ripristino dello stato pre-speculazione.

• In alternativa, per i salti condizionati, si attua una esecuzione predicata che trasforma le dipendenze di controllo in dipendenze fra dati. – E’ definita anche esecuzione con guardia (guarded

execution) o condizionale, implica una forma di esecuzione condizionale di istruzioni basata su una guardia booleana.

Page 18: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

ESEMPI DI VLIW

• L’architettura IA-64 di Intel, in produzione ora come Itanium, avrebbe dovuto sostituire l’architettura x86.

• L’ IA-64 è definito da Intel come Explicitly Parallel Instruction Computing (EPIC), ma è essenzialmente un VLIW con:

– raggruppamento intelligente delle istruzioni (per consentire la compatibilità a lungo termine)

– predicazione ( vedi sotto).

• Molti Digital Signal Processors hanno la microarchitettura organizzata in stile VLIW.

Page 19: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

LINK E MATERIALE UTILE • Vedi VLIW Machines in

http://euler.mat.uson.mx/~havillam/ca/CS323/index.html

Page 20: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

Incremento delle prestazioni nei moderni sistemi di calcolo: • Tipi di parallelismo e classificazioni • Limiti e costi dell’approccio parallelo • Instruction Level Parallelism:

Il pipelining delle istruzioni Processori superscalari Processori VLIW

• Thread Level Parallelism: Multi-Threading, Chip Multi-Processors e Massively Parallel

Page 21: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MULTI-THREADING: DEFINIZIONI • GRANA FINE: La CPU commuta da un thread all’altro ad ogni istruzione.

L’esecuzione di diversi thread risulta essere interallacciata (nel caso di stallo, il thread che dovrebbe essere eseguito salta il suo turno di esecuzione). La CPU deve essere in grado di cambiare thread a ogni ciclo di clock, quindi per evitare inefficienze sono richieste duplicazioni pesanti dell’hardware disponibile.

• GRANA GROSSA: La CPU commuta da un thread a un altro solo in

corrispondenza di stalli lunghi (e.g. cache miss). I thread in questione condividono molte risorse del sistema (e.g. registri architetturali) per questo la commutazione da un thread all’altro richiede diversi cicli di clock per poter effettuare il salvataggio del contesto.

Page 22: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MULTI-THREADING: OBIETTIVI

• Il MT è una tecnica che permette di nascondere la latenza, non di ridurla.

– Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache, il thread B può essere eseguito. Questo non riduce il tempo totale di esecuzione di A, ne quello di B. Evita semplicemente i tempi morti di A+B.

• Goal: aumentare il throughput complessivo.

– Se anche i risultati di A e quelli di B presi singolarmente non arrivano più velocemente. Sicuramente quelli di A+B si.

Page 23: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

SIMULTANEOUS MULTI-THREADING (SMT) • Ogni core può gestire più contesti di esecuzione in

hardware – Decide (in ogni clock cycle o meno) quale thread eseguire

– Non sono necessarie più risorse, ma possono essere utilizzate in maniera più efficace

– Estensione di un superscalare: • Sfruttamento simultaneo di ILP e TLP al fine di migliorare l’efficienza

• La motivazione è che molto spesso una CPU ha a disposizione più risorse funzionali di quante un singolo thread possa effettivamente sfruttare. Unitamente a ciò, grazie alle tecniche di register renaming e allo scheduling dinamico, è possibile pensare di eseguire più istruzioni indipendenti sulla stessa CPU.

• Se le istruzioni che vengono lanciate in parallelo appartengono a thread diversi allora si possono anche limitare le problematiche relative alle dipendenze fra dati.

Page 24: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MULTI-THREADING: SVANTAGGI E CRITICITA’

• Richiede memoria aggiuntiva per la memorizzazione del contesto dei diversi thread.

• Aumenta tempo di esecuzione di ogni singolo thread:

– Migliora quello complessivo;

– Peggiora quello del singolo perché lo sto interallacciando con altri.

• Il parallelismo messo a disposizione dal programma di partenza deve essere maggiore.

• La banda di memoria può rappresentare un collo di bottiglia:

– Più thread ho e più contesti ho -> quindi a parità di memoria ho meno spazio per ogni thread;

– Potrei dover accedere molto più spesso alla memoria remota, ma pur sempre “nascondendo” la latenza di accesso.

Page 25: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

RIASSUMENDO…

MT a grana grossa MT a grana fine SMT

Page 26: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

CHIP MULTI-PROCESSOR (CMP) • I Chip Multi-Processor (CMP) rappresentano un approccio

alternativo a quello dei processori SMT per la gestione del TLP.

• L’architettura è composta dalla replica di diverse celle di calcolo, identiche o meno, interconnesse fra loro (tipicamente a formare una griglia).

• La potenza computazionale, e la conseguente complessità di ogni elemento, è paragonabile a quella di una classica architettura superscalare.

• Ogni cella è in grado di eseguire uno o più thread ed interagirà con le altre mediante un layer di comunicazione adeguato alle esigenze di banda che una architettura di questo tipo richiede.

• Rispetto al SMT, nei CMP le diverse unità funzionali sono indipendenti e non condividono alcun tipo di logica di esecuzione delle istruzioni.

– Maggiore scalabilità.

Page 27: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MASSIVELY PARALLEL PROCESSOR (MPP)

• Nel caso di architetture che prevedano l’integrazione di un numero elevato di celle elementari di calcolo (in letteratura si parla di almeno 64 unità), il modello architetturale prende il nome di Massively Parallel Processor (MPP).

• Tipico esempio di MPP sono le architetture di tipo “tyled-based”.

Page 28: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PICOARRAY • PicoArray è un esempio di MPP eterogeneo.

– Ogni cella è un VLIW a 3 vie.

– Gli switch sono configurabili a compile-time, attuando il time- division multiplexing sui diversi flussi di dati.

• I programmatori devono:

– Scrivere i thread in C o assembly,

– Specificare le dipendenze fra i dati,

– Specificare la banda richiesta da ogni thread.

• Il compilatore

– traduce il codice,

– richiama un tool di placement per

generare i bit di configurazione

dell’interconnessione sulle base

delle direttive dei programmatori .

Page 29: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

RIASSUMENDO …

• Per migliorare le performance posso sfruttare diverse forme di parallelismo e non necessariamente in maniera separata.

– Posso impiegare più core di elaborazione contemporaneamente.

– All’interno di un singolo core posso ammortizzare l’elaborazione del suo flusso di istruzioni sfruttando diverse unità funzionali parallele: • VLIW,

• Superscalari.

– Sempre all’interno dei singoli core per abbattere i tempi morti legati al ILP del singolo thread posso “schedulare” più thread paralleli: • le risorse vengono usate in maniera più efficiente,

• viene “nascosta” la latenza di accesso alla memoria,

• aumenta il throughput totale.

Page 30: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

Strutture di memoria e modelli di programmazione in architetture parallele: • Architetture di memoria

Chip a memoria condivisa

Chip a memoria distribuita • Modelli di programmazione

Shared Memory, Threads, Distributed Memory, Data Parallel, Hybrid Problematiche di Progettazione

Page 31: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

Strutture di memoria e modelli di programmazione in architetture parallele: • Architetture di memoria

Chip a memoria condivisa

Chip a memoria distribuita • Modelli di programmazione

Shared Memory, Threads, Distributed Memory, Data Parallel, Hybrid Problematiche di Progettazione

Page 32: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

LA MEMORIA • Una delle prime necessità mostrate dagli utenti di calcolatori

elettronici, è stata quella di una illimitata quantità di memoria velocemente accessibile. – Tecnologicamente ed economicamente è irrealistica

– Utilizzo “gerarchie di memoria” per creare l’illusione di una memoria grande accessibile alla stessa velocità di una memoria piccola.

• Principio di località: è dimostrato che un programma non ha bisogno di accedere a tutti i dati o a tutte le istruzioni con la stessa probabilità. In realtà, accede a una porzione relativamente piccola e localizzata del suo spazio di memoria. – Località temporale: se un elemento è referenziato, generalmente

mostrerà una tendenza ad essere presto referenziato di nuovo (e.g. loop all’interno dei programmi).

– Località spaziale: se un elemento è referenziato, gli altri elementi corrispondenti ad indirizzi di memoria vicini al suo, mostreranno una tendenza ad essere presto referenziati (e.g. le istruzioni di un programma vengono eseguite in sequenza, o gli elementi di un array).

Page 33: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MEMORIA CONDIVISA: GENERALITA’ • Da un punto di vista strettamente hardware, tutti i

processori hanno accesso diretto alla memoria fisica comune, di solito attraverso un bus.

• Dal punto di vista della programmazione, i vari task paralleli hanno tutti la stessa "immagine" della memoria, indirizzano/accedono le/alle stesse posizioni di memoria logica (indipendentemente da dove sia realmente realizzata quella fisica).

• Se un processore effettua una variazione sul valore di una determinata locazione della memoria condivisa, tale variazione è visibile a tutti gli altri processori.

• Ogni processo può leggere/scrivere un dato in memoria semplicemente usando una load/store, e la comunicazione fra processi avviene attraverso la memoria condivisa.

Page 34: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

MEMORIA CONDIVISA: GENERALITA’ • Concettualmente semplice, comodo per i programmatori. • Applicabile ad una vasta gamma di problemi modellabili come

dei task eseguibili parallelamente. • Tutte le CPU vedono lo stesso spazio di indirizzamento, quindi è

sufficiente una copia del sistema operativo. – Bilanciamento del carico:

• Se esiste un unica coda “ready to run” (processi pronti per l’esecuzione) il bilanciamento del carico è automatico: quando un processore è inattivo, il suo scheduler prenderà un processo dalla coda comune.

• Se ogni core ha la sua coda di processi, il bilanciamento va gestito in maniera esplicita (spostando i processi dai core carichi).

• Nei sistemi a memoria non condivisa, ogni CPU deve far girare la propria copia del sistema operativo e i processi possono comunicare solo attraverso lo scambio di messaggi.

• In base ai tempi di accesso alla memoria, le macchine memoria condivisa sono state classificate come Uniform Memory Access (UMA) e Non-Uniform Mem. Acc. (NUMA).

Page 35: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UNIFORM MEMORY ACCESS

• Symmetric Multi-Processor (SMP).

• Celle di calcolo omogenee.

• Stesso tempo di accesso alla memoria.

• CC-UMA (Cache Coherent UMA): Se un processore aggiorna una locazione, tutti gli altri processori conoscono l'aggiornamento.

– La coerenza della cache viene eseguita a livello hardware .

Page 36: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UNIFORM MEMORY ACCESS

• Quando una CPU vuole leggere una locazione di memoria verifica prima che il bus sia libero, invia la richiesta al modulo di interfaccia della memoria e attende sul bus che arrivi il valore richiesto.

• La memoria condivisa può però facilmente diventare un collo di bottiglia per le prestazioni del sistema:

– Tutti i processori devono sincronizzarsi sull’uso di un singolo bus e memoria.

• I processori multi-core, dove n core indipendenti possono far girare in parallelo n processi ed ogni core può poi a sua volta essere multi-threaded, sono classificati come UMA. La prima cache condivisa (L2 o L3) da tutti i core costituisce il canale di comunicazione.

Page 37: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UNIFORM ACCESS MEMORY • Il problema del collo di bottiglia rispetto alla comunicazione con

la memoria è mitigato dall’eventuale presenza di cache (contiene le “ultime” locazioni condivise a cui si è fatto accesso) e memorie private (contiene gli eventuali dati non condivisi).

• La presenza della cache locale aumenta il parallelismo delle operazioni: due load contemporanee sono possibili almeno uno dei due dati risiede nella cache. Di conseguenza anche il tempo di esecuzione migliora.

Protocollo di comunicazione bus based

Page 38: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

• Problema della coerenza: la visione che ogni processore ha della memoria passa attraverso la propria cache.

• Due processori possono vedere valori diversi per la stessa locazione.

CPU A

CPU C

CPU B

C-A C-B C-C

MAIN MEMORY

Page 39: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000

001

010

011

100

101

110

111

INDEX TAG VALUE

000

001

010

011

100

101

110

111

Page 40: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

2 CPU C read MEM[0] R-M 0 0 0 1

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000

001

010

011

100

101

110

111

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

Page 41: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

2 CPU C read MEM[0] R-M 0 0 0 1

3 CPU C write 1@MEM[0] W-H 0 1 0 1

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000

001

010

011

100

101

110

111

INDEX TAG VALUE

000 00 1

001

010

011

100

101

110

111

Page 42: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

2 CPU C read MEM[0] R-M 0 0 0 1

3 CPU C write 1@MEM[0] HIT 0 1 0 1

4 CPU B read MEM[0] R-M 0 0 1 0 1

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000 00 1

001

010

011

100

101

110

111

Page 43: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

2 CPU C read MEM[0] R-M 0 0 0 1

3 CPU C write 1@MEM[0] HIT 0 1 0 1

4 CPU B read MEM[0] R-M 0 0 1 0 1

5 CPU B read MEM[8] R-M 0 1 1 0 1

INDEX TAG VALUE

000 00 0

001

010

011

100

101

110

111

INDEX TAG VALUE

000 01 1

001

010

011

100

101

110

111

INDEX TAG VALUE

000 00 1

001

010

011

100

101

110

111

Page 44: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 0 1

2 CPU C read MEM[0] R-M 0 0 0 1

3 CPU C write 1@MEM[0] HIT 0 1 0 1

4 CPU B read MEM[0] R-M 0 0 1 0 1

5 CPU B read MEM[8] R-M 0 1 1 0 1

• Protocolli di coerenza: evitare che versioni differenti della stessa locazione possano essere contemporaneamente presenti in due o più cache (false sharing). – soluzioni hardware: il controller di ogni cache monitora sul bus le

richieste alla memoria e, in caso di scrittura, il protocollo di coerenza interviene (snooping del bus).

Page 45: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

UMA: CACHE COHERENCY

• Il compito di una snooping cache è:

– trasmettere in broadcast a tutti i processori le informazioni relative agli accessi in memoria

– per ogni write o miss vengono innescate delle procedure di scambio di dati.

CPU A

CPU C

CPU B

C-A C-B C-C

MAIN MEMORY

SN-A SN-B SN-C

INTERCONNECT LAYER

Page 46: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH • Read miss (R-M): il cache controller preleva una linea mancante

dalla memoria, il cache controller delle altre cache si accorgono che c’è in corso una lettura. Il dato nella cache è segnato valido.

• Read hit (R-H): il core prova a leggere il dato direttamente dalla propria cache. Se questo è valido, gli altri controller non si accorgeranno della lettura.

• Write miss (W-M): Un core scrive un dato mancante nella sua cache locale direttamente sulla memoria senza caricarlo localmente. Il cache controller delle altre cache controllano se lo hanno: – se non ce l’ha non succede nulla.

– se ce l’ha invece la cella corrispondente viene invalidata e corrisponderà ad un futuro read miss.

• Write hit (W-H): un core aggiorna la propria cache e propaga la scrittura anche alla memoria. Il cache controller delle altre si comporta come per il write miss.

Page 47: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0]

2 CPU A reads MEM[0]

3 CPU C write 1@MEM[0]

4 CPU A reads MEM[0]

5 CPU B reads MEM[0]

6 CPU A write 0@MEM[0]

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 48: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

INDX TAG VAL ST

000 00 0 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

TAG e INDEX (INDX) sono rappresentativi dell’indirizzo della locazione da leggere/scrivere VAL è il valore contenuto nella locazione ST è lo stato della linea di cache 1=VALID 0=INVALID

Page 49: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

2 CPU A reads MEM[0] R-H 0 V 0 1

INDX TAG VAL ST

000 00 0 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 50: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

2 CPU A reads MEM[0] R-H 0 V 0 1

3 CPU C write 1@MEM[0] W-M 0 I 1 1

INDX TAG VAL ST

000 00 0 0

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 51: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

2 CPU A reads MEM[0] R-H 0 V 0 1

3 CPU C write 1@MEM[0] W-M 0 I 1 1

4 CPU A reads MEM[0] R-M 1 V 1 1

INDX TAG VAL ST

000 00 1 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 52: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

2 CPU A reads MEM[0] R-H 0 V 0 1

3 CPU C write 1@MEM[0] W-M 0 I 1 1

4 CPU A reads MEM[0] R-M 1 V 1 1

5 CPU B reads MEM[0] R-M 1 V 1 V 1 1

INDX TAG VAL ST

000 00 1 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000 00 1 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 53: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: WRITE THROUGH

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[8]

0 0 1

1 CPU A reads MEM[0] R-M 0 V 0 1

2 CPU A reads MEM[0] R-H 0 V 0 1

3 CPU C write 1@MEM[0] W-M 0 I 1 1

4 CPU A reads MEM[0] R-M 1 V 1 1

5 CPU B reads MEM[0] R-M 1 V 1 V 1 1

6 CPU A write 0@MEM[0] W-H 0 V 1 I 0 1

INDX TAG VAL ST

000 00 0 1

001

010

011

100

101

110

111

INDX TAG VAL ST

000 00 1 0

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 54: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

LIMITI DEL WRITE THOUGH

• Dati dei processori che lavorano a 200 MHz con un CPI unitario.

• Dei codici in cui il 15% delle operazioni sono delle store da 8 byte.

• Con un bus in grado di trasferire 1 Gbyte/sec quanti processori posso far lavorare in parallelo senza avere stalli?

Page 55: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

LIMITI DEL WRITE THOUGH

• Dati dei processori che lavorano a 200 MHz con un CPI unitario.

• Dei codici in cui il 15% delle operazioni sono delle store da 8 byte.

• Con un bus in grado di trasferire 1 Gbyte/sec quanti processori posso far lavorare in parallelo senza avere stalli?

– In un secondo ho 30M di store (15% di 200M operazioni totali)

– Un traffico verso la memoria di 240Mbyte (30M*8byte).

– Approssimativamente solo 4 processori possono lavorare in parallelo.

16,410240

1016

9

Page 56: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

• Nel write through la scrittura sulla memoria è un collo di bottiglia. Come miglioro?

– Posso tenere traccia del fatto che la cache è aggiornata mentre in memoria c’è un valore vecchio.

– Aggiorno la memoria solo dopo una serie di modifiche.

• Ogni entry (linea della cache) può essere marcata come:

– Modified (11): la linea è valida, la memoria contiene un valore vecchio, ma non esistono altre copie della stessa entry in altre cache.

– Exclusive (10): nessun’altra cache contiene la linea e la memoria è aggiornata.

– Shared (01): più cache possono contenere la linea e la memoria è aggiornata.

– Invalid (00): l’entry della cache non contiene dati validi.

Page 57: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

• All’inizio tutte le entry sono I.

• Read Miss: Quando un core legge una linea dalla memoria:

– se non è presente da nessuna altra parte la marca come E.

– se si accorge che è presente come E, il suo snooper notifica che ne ha una copia e ovunque viene marcata come della cache S.

– se vuole leggere un dato dalla memoria marcato come M in un’altra cache, lo snooper di tale cache se ne accorge: • segnala sul bus che la lettura deve aspettare perché la memoria va

aggiornata,

• quando la lettura viene fatta in entrambe le cache la linea è marcata S.

• Read Hit: Non genera azioni da parte degli snooper e non modifica lo stato della linea di cache letta. In questo caso la linea, per il core che sta leggendo, può essere E, M o S.

Page 58: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI • Write Hit: Se un core modifica una linea

– se questa era S • viene mandato sul bus un segnale di invalidazione, in ogni altra cache la linea

viene marcata come I, • localmente gli viene associato lo stato M, ma non viene aggiornato subito il

valore in memoria.

– se la linea era sua esclusiva, che fosse coerente (E) o meno (M) con la memoria • non vengono inviate segnalazioni, • localmente gli viene associato lo stato M, ma non viene aggiornato subito il

valore in memoria.

• Write Miss: Se un core vuole scrivere un dato che non ha – Se è presente in un’altra cache:

• lo snooper della seconda cache se ne accorge chiede al core di aspettare e aggiorna la memoria, prima di invalidare la propria locazione in cache,

• localmente il core che ha rilevato il write miss scrive la linea in cache marcandola come M.

– Se non è presente in un’altra cache: • Localmente viene scritto in cache il dato marcandolo come M, • La memoria non viene aggiornata.

Page 59: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0]

2 B reads MEM[0]

3 B writes 1@MEM[0]

4 A reads MEM[0]

5 C writes 0@MEM[0]

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

INDX TAG VAL ST

000

001

010

011

100

101

110

111

Page 60: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

TAG e INDEX (INDX) sono rappresentativi dell’indirizzo della locazione da leggere/scrivere VAL è il valore contenuto nella locazione ST è lo stato della linea di cache 00=INVALID 01=SHARED 10=EXCLUSIVE 11=MODIFIED

Page 61: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0] R-M 0 E 0 1

INDX TAG VAL ST

000 00 0 10

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

Page 62: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0] R-M 0 E 0 1

2 B reads MEM[0] R-M 0 S 0 S 0 1

INDX TAG VAL ST

000 00 0 01

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00 0 01

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

Page 63: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0] R-M 0 E 0 1

2 B reads MEM[0] R-M 0 S 0 S 0 1

3 B writes 1@MEM[0] W-H 0 I 1 M 0 1

INDX TAG VAL ST

000 00 0 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00 1 11

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

Page 64: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0] R-M 0 E 0 1

2 B reads MEM[0] R-M 0 S 0 S 0 1

3 B writes 1@MEM[0] W-H 0 I 1 M 0 1

4 A reads MEM[0] R-M 1 S 1 S 1 1

INDX TAG VAL ST

000 00 1 01

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00 1 01

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

Page 65: MASTER IN SISTEMI EMBEDDED PER L’INTERNET · 2016. 1. 22. · –Se ho 2 thread A e B in esecuzione sullo stesso core. Quando il thread A è in attesa di alcuni dati nella cache,

Architetture di Calcolo Avanzate per Sistemi Embedded

PROTOCOLLO DI COERENZA: MESI

Time Event H/M Cache A Cache B Cache C Mem[0] Mem[1]

0 0 1

1 A reads MEM[0] R-M 0 E 0 1

2 B reads MEM[0] R-M 0 S 0 S 0 1

3 B writes 1@MEM[0] W-H 0 I 1 M 0 1

4 A reads MEM[0] R-M 1 S 1 S 1 1

5 C writes 0@MEM[0] W-M 1 I 1 I 0 M 1 1

INDX TAG VAL ST

000 00 1 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00 1 00

001 00

010 00

011 00

100 00

101 00

110 00

111 00

INDX TAG VAL ST

000 00 0 11

001 00

010 00

011 00

100 00

101 00

110 00

111 00