Multiprocessori a memoria condivisa. Multiprocessori a memoria condivisa

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Multiprocessori a memoria condivisa. Multiprocessori a memoria condivisa"

Transcript

1 Multiprocessori a memoria condivisa Introduzione Sistemi UMA Coerenza della cache Sistemi NUMA Sincronizzazione fra processi Modelli di consistenza della memoria Sistemi COMA 1 Multiprocessori a memoria condivisa Una architettura con più CPU che condividono lo stessa memoria primaria viene detto multiprocessore. In un sistema multiprocessore tutti i processi che girano sulle varie CPU condividono un unico spazio di indirizzamento logico, mappato su una memoria fisica che può però anche essere distribuita fra i vari processori. Ogni processo può leggere e scrivere un dato in memoria semplicemente usando una load o una store, e la comunicazione fra processi avviene attraverso la memoria condivisa. E responsabilità dell hardware del sistema fare in modo che tutte le CPU possano vedere e usare la stessa memoria principale. 2 Multiprocessori a memoria condivisa E un modello architetturale concettualmente semplice, comodo da usare per i programmatori, e applicabile ad una vasta gamma di problemi che possano essere modellati come una serie di task eseguibili almeno in parte parallelamente (Tanenbaum, Fig. 8.17). 3 1

2 Multiprocessori a memoria condivisa Siccome tutte le CPU vedono lo stesso spazio di indirizzamento, è sufficiente una copia del sistema operativo. Quando un processo termina o va in wait per qualche ragione, il S.O. può cercare nella nella coda di ready un altro processo a cui dare la CPU idle. Al contrario, 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. Il problema di fondo dei sistemi multiprocessore a memoria condivisa è la memoria stessa, che è difficile da far funzionare in maniera efficiente quanto più è alto il numero dei processori coinvolti. 4 5 Multiprocessori a memoria condivisa Tutti i moderni SO (Windows, Solaris, Linux, MacOS) prevedono in particolare la cosiddetta multielaborazione simmetrica (symmetric multiprocessing, SMP), in cui (tralsciando un po di cose) uno scheduler gira su ciascun processore. I processi ready to run possono essere inseriti in un unica coda, vista da ciascun scheduler, oppure vi può essere una coda ready to run separata per ciascun scheduler/processore. Quando lo scheduler di un processore si attiva, sceglie uno dei processi ready to run e lo manda in esecuzione sul proprio processore (nel caso di coda unica le cose sono un po più delicate, perché?) 6 Multiprocessori a memoria condivisa Un aspetto importante dei sistemi multiprocessore è il bilanciamento del carico. Non ha infatti senso avere un sistema con più CPU se poi i vari processi da eseguire non sono distribuiti più o meno omogeneamente tra i vari processori. Nel caso di un unica coda ready to run, il bilanciamento del carico è solitamente automatico: quando un processore è inattivo, il suo scheduler prenderà un processo dalla coda comune e lo manderà in esecuzione su quel processore. 2

3 7 Multiprocessori a memoria condivisa I SO moderni predisposti per l SMP usano però spesso una coda separata per ciascun processore (per evitare i problemi connessi alla coda unica, accennati prima). Esiste allora un esplicito meccanismo di bilanciamento del carico che può prendere un processo in attesa sulla coda di un processore sovraccarico e spostarlo nella coda di un processore scarico. Ad esempio, Linux SMP attiva il proprio meccanismo di bilanciamento del carico ogni 200 millisecondi, e ogni qualvolta si svuota la coda di un processore. 8 Multiprocessori a memoria condivisa Notate che la migrazione di un processo da un processore ad un altro può non essere conveniente nel caso in cui ciascun processore abbia una cache privata (perché?). Per questa ragione, alcuni SO, come Linux, mettono a disposizione delle system call per poter specificare che un processo non deve cambiare processore, indipendentemente dal carico del processore stesso. Si distinguono sostanzialmente tre classi di multiprocessore, a seconda del modo in cui ogni CPU vede la memoria principale: Multiprocessori a memoria condivisa 1. Uniform Memory Access (UMA): Questo tipo di architettura viene così chiamata perché tutti i processori condividono un unica memoria primaria centralizzata, e quindi ogni CPU ha lo stesso tempo di accesso alla memoria. A causa del tipo di architettura, questi sistemi vengono anche chiamati Symmetric Shared-memory Multiprocessors (SMP) (H-P3, Fig. 6.1) 9 3

4 Multiprocessori a memoria condivisa 2. Non Uniform Memory Access (NUMA): in questi sistemi i vari processori vedono ancora uno spazio di indirizzamento logico unico, ma la memoria fisica è distribuita fra le varie CPU, e quindi i tempi di accesso ai dati variano a seconda che siano nella RAM locale o in una remota (da cui appunto il termine NUMA) Questi sistemi vengono quindi anche chiamati Distributed Shared Memory (DSM) architectures (H-P3, Fig. 6.2) 10 Multiprocessori a memoria condivisa 3. Cache Only Memory Access (COMA): in cui i dati non hanno un luogo (ossia uno specifico indirizzo di memoria) in cui risiedono permanentemente, e da cui vengono letti (ossia copiati nelle cache locali) e/o modificati (ossia modificati nella cache e poi aggiornati al loro indirizzo di residenza ). Invece, i dati possono migrare e/o essere replicati nei vari banchi di memoria che formano la memoria centrale del sistema. 11 Multiprocessori di tipo UMA La forma più semplice di sistema multiprocessore prevede un unico bus su cui si affacciano almeno due CPU e una memoria (condivisa da tutti i processori). 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, visto che tutti i processori devono sincronizzarsi sull uso di un singolo bus e memoria. 12 4

5 Multiprocessori di tipo UMA Notiamo che quando parliamo di processore/cpu, ormai da qualche anno si sottointende che sia un processore multi-core, ossia dotato di almeno due (ma anche 4, 6 8) unità indipendenti di esecuzione dei programmi, ognuna chiamata core. Sugli n core possono girare in parallelo n processi, uno per core. Ogni core può poi a sua volta essere multi-threaded, e quindi può eseguire in parallelo le istruzioni appartenenti a due o più peer thread. Un processore n-core è di fatto un sistema multiprocessore di tipo UMA, in cui la prima cache condivisa (L2 o L3) da tutti i core costituisce il canale di comunicazione. Un sistema multiprocessore può quindi essere costituito da più processori/cpu ciascuno dei quali multi-core. 13 Multiprocessori di tipo UMA Per semplicità, nel seguito continuiamo a pensare ogni CPU di un sistema multiprocessore come CPU single-core. Il problema delle comunicazioni con la RAM è mitigato dalla presenza delle cache di ogni CPU. Se poi ogni CPU ha anche una memoria privata utilizzata per contenere quei dati che non devono essere condivisi dagli altri processori, allora il traffico da e verso la memoria condivisa può ridursi sensibilmente (Tanenbaum, Fig. 8.24) 14 Multiprocessori UMA: snooping caches La presenza di cache locali pone comunque un problema fondamentale: la visione che ogni processore ha della memoria passa attraverso la propria cache, e due processori possono vedere valori diversi per la stessa locazione (H-P3, Fig. 6.7) Time Event Cache A Cache B RAM location for X CPU A reads X CPU B reads X CPU A stores 0 into X

6 Snooping Caches Questo è il problema della coerenza della cache, e senza una adeguata soluzione non permette l uso di cache nei vari processori, con pesanti riflessi negativi sulle prestazioni. Sono stati proposti vari protocolli di coerenza della cache, e tutti hanno come scopo quello di evitare che versioni differenti della stessa linea di RAM possano essere contemporaneamente presenti in due o più cache (un problema noto come false sharing). le soluzioni usate sono tutte implementate a livello hardware: il controller di ogni cache è in grado di monitorare, sul bus, tutte le richieste alla memoria che provengono dalle altre CPU, e se è il caso, il protocollo di coerenza interviene. Si dice che i controller delle cache eseguono lo snooping del bus 16 Snooping Caches Un semplice protocollo di coerenza della cache è il write through. Consideriamo innanzitutto gli eventi che si possono verificare tra un processore che accede a dei dati, e la sua cache: read miss: il cache controller della CPU preleva la linea mancante dalla RAM e la mette nella cache. Ulteriori letture dello stesso dato avverranno nella cache (quindi, le successive letture saranno dei read hit). write miss: il dato modificato viene direttamente scritto in RAM: la linea contenente il dato non viene prima caricata nella cache locale. write hit: la cache line viene aggiornata e l aggiornamento viene anche propagato alla RAM. Notate che le operazioni di scrittura vengono propagate alla RAM, il cui contenuto rimane quindi sempre aggiornato. 17 Snooping Caches Consideriamo ora le cose dal punto di vista dello snooper di un altra CPU (colonna di destra della tabella). Sia cache 1 la cache che genera le read/write, e cache 2 la snooping cache (Tanenbaum, Fig. 8.25). read miss: la cache 2 vede cache 1 prelevare una linea dalla memoria, ma non fa nulla (notate, in caso di read hit la cache 2 non se ne accorge nemmeno) write miss/hit: cache 2 verifica se ha una copia del dato modificato: in caso negativo, non fa nulla. Se però il dato è presente, la linea che lo contiene viene marcata come invalida nella cache

7 Snooping Caches Poiché tutte le cache sorvegliano tutte le operazioni compiute dalle altre cache in memoria, quando una cache modifica un dato, la modifica viene fatta nella cache stessa (se c è), in memoria, e in più la vecchia linea viene rimossa da tutte le altre cache (in realtà viene semplicemente marcata invalida). In questo modo, nessuna cache può contenere dati inconsistenti rispetto alle altre cache. Ovviamente, esistono varianti a questo protocollo di base. Ad esempio, le linee vecchie potrebbe essere immediatamente aggiornate al nuovo valore, anziché essere marcate invalide. Questa variante richiede più lavoro, ma previene il verificarsi di futuri cache miss 19 Snooping Caches Il pregio fondamentale di questo protocollo di coerenza della cache è la semplicità Il problema fondamentale dei protocolli write-through based è l inefficienza, visto che ogni operazione di write viene propagata alla RAM, e il bus di comunicazione può facilmente divenire un collo di bottiglia. Per limitare questo problema, nei protocolli write-back based non tutte le write vengono immediatamente propagate in RAM: un bit nella cache viene settato per indicare che la linea nella cache è aggiornata, mentre in RAM è vecchia. Prima o poi, la linea modificata verrà propagata in RAM, ma possibilmente solo dopo molte modifiche (e non dopo ognuna). 20 Il Protocollo MESI Uno dei più diffusi protocolli di coerenza della cache di tipo writeback, usato da molti processori moderni per monitorare il bus è il MESI, in cui ogni entry della cache può essere in uno di 4 possibili stati: 1. Invalid l entry della cache non contiene dati validi 2. Shared Più cache possono contenere la linea, e la memoria RAM è aggiornata 3. Exclusive Nessun altra cache contiene la linea, e la memoria RAM è aggiornata. 4. Modified La linea è valida, la memoria RAM contiene un valore vecchio, e non esistono altre copie. 21 7

8 Il Protocollo MESI Quando il sistema viene fatto partire, tutte le entry delle cache sono marcate I: invalid. La prima volta che una linea viene letta nella cache di CPU 1 viene marcata E: exclusive, poiché è l unica cache a contenere quella linea. Successive letture del dato da parte della stessa CPU useranno la copia in cache, e non impegneranno il bus. (Tanenbaum, Fig. 8.26a) 22 Il Protocollo MESI Se CPU 2 legge la stessa linea, lo snooper di CPU 1 se ne accorge e annuncia sul bus che anche CPU 1 ha una copia della linea. Entrambe le entry nelle cache vengono marcate S: Shared. Successive letture del dato da parte di CPU 1 o CPU 2 avverranno nelle rispettive cache, e non useranno il BUS (Tanenbaum, Fig. 8.26b) A 23 Il Protocollo MESI Se CPU 2 modifica una linea marcata S, invia sul bus un segnale di invalidazione della linea, in modo che le altre CPU possano invalidarla nella loro cache. La linea viene marcata M: modified, e non viene scritta in RAM. (notate che se la linea era marcata E, il segnale di avviso alle altre CPU non è necessario, perché non esistono altre copie della linea in altre cache) (Tanenbaum, Fig. 8.26c). 24 8

9 Il Protocollo MESI Cosa succede se CPU 3 tenta di leggere la stessa linea? Lo snooper di CPU 2 se ne accorge, sa di possedere l unica copia valida della linea, per cui invia un segnale su bus per avvertire CPU 3 di aspettare, mentre la copia valida viene usata per aggiornare memoria. A fine aggiornamento CPU 3 può prelevare la linea richiesta, e nelle due cache la linea viene marcata S, shared (Tanenbaum, Fig d). 25 Il Protocollo MESI Se a questo punto CPU 2 rimodifica la linea, ovviamente nella sua cache, invierà di nuovo un segnale di invalidazione sul bus, e tutte le altre copie (ad esempio quella di CPU 3) vengono marcate come I: invalid. La linea nella cache di CPU 2 è di nuovo marcata M: modified. (Tanenbaum, Fig. 8.26e). 26 Il Protocollo MESI Se, infine, CPU 1 cerca di scrivere un dato nella linea, CPU 2 vede il tentativo di write e invia un segnale sul bus per dire alla CPU 1 di aspettare mentre aggiorna la linea in memoria. Alla fine, CPU 2 marca la propria copia della linea come invalida, perché sa che un altra CPU sta per modificarla. A questo punto siamo nella situazione in cui CPU 1 sta scrivendo in una linea che non è in nessuna cache. Se si sta usando una politica write-allocate, la linea sarà caricata nella cache di CPU 1 e marcata M (Tanenbaum, Fig. 8.26f). Se non si sta usando una politica write-allocate, la write ha effetto direttamente in RAM, e la linea continua a non essere in nessuna cache. 27 9

10 Sistemi UMA a commutatori incrociati (crossbar switch) Anche usando un protocollo come il MESI, l uso di un bus singolo su cui si affacciano tutti i processori e la memoria limita la dimensione di sistemi multiprocessore UMA ad un massimo che di solito si indica in 32 CPU. Per andare al di là di questo limite, è necessario usare un diverso sistema di interconnessione tra le CPU e la RAM. Lo schema più semplice per connettere n CPU a k memorie è a commutatori incrociati (crossbar switch), un sistema simile a quello usato per decenni nelle centrali telefoniche. 28 UMA a crossbar switch Ad ogni intersezione di una linea di comunicazione orizzontale e verticale è posizionato uno switch, che può connettere (o meno) le due linee. Nell esempio, tre switch sono chiusi, e connettono le coppie CPUmemoria ( ), ( ) e ( ). (Tanenbaum, Fig. 8.27) 29 UMA a crossbar switch Naturalmente, è possibile configurare gli switch in modo che ciascuna CPU possa connettersi a ciascun banco di memoria (che è poi quello che rende il sistema un UMA) Il numero di switch necessari per realizzare questo schema però cresce quadraticamente col numero di CPU (memorie) coinvolte: n CPU ed n memorie richiedono n 2 switch. La cosa è accettabile per sistemi di media grandezza (vari sistemi multiprocessore della Sun usano questo schema), ma certamente non è usabile in un sistema con, ad esempio, 256 CPU (sarebbero necessari switch)

11 Sistemi UMA a reti con commutatori a più stadi Per connettere molte CPU si può usare un sistema basato su semplici switch bidirezionali con due ingressi e due uscite: in questi switch ciascun ingresso può essere rediretto su ciascuna uscita (Tanenbaum, Fig. 8.28): 31 Sistemi UMA a reti con commutatori a più stadi I messaggi scambiati tra CPU e memoria sono fatti di quattro parti: Module: quale memoria usare quale CPU richiede il dato Address: specifica un indirizzo all interno del modulo di memoria; Opcode: l operazione da eseguire (come READ o WRITE); Value (opzionale): il valore da scrivere in caso di WRITE. Lo switch può essere programmato in modo da analizzare il Module e determinare su quale output instradare il messaggio 32 Sistemi UMA a reti con commutatori a più stadi Gli switch 2 x 2 possono essere usati in molti modi per costruire network a commutazione a più stadi. Un semplice esempio è il modello di rete omega (Tanenbaum, Fig. 8.29): 33 11

12 Sistemi UMA a reti con commutatori a più stadi Nell esempio, 8 CPU sono connesse a 8 memorie, usando in tutto 12 switch in tre stadi. In generale, n CPU ed n memorie richiedono log 2 n stadi, con n/2 switch per stadio, per un totale di (n/2)log 2 n switch: molto meglio che nel caso dei crossbar swtich (n 2 ) Vediamo un esempio di funzionamento di questa rete. La CPU 011 vuole leggere un dato nel modulo di RAM 110. La CPU invia una READ allo switch 1D con Module = Lo switch preleva il bit più significativo (quello più a sinistra) e lo usa per l instradamento: 0 instrada la richiesta sull output superiore, 1 instrada la richiesta sull output inferiore. Nel nostro esempio la richiesta viene instradata verso 2D. 34 Sistemi UMA a reti con commutatori a più stadi Lo switch 2D si comporta allo stesso modo: analizza il secondo bit più significativo (quello centrale) e instrada la richiesta verso 3D. Infine, il bit meno significativo viene usato per l ultimo instradamento, verso il modulo 110 (percorso a nella figura) A questo punto, il dato letto deve essere reinstradato alla CPU 011: viene usato il suo indirizzo, leggendo però i bit da destra verso sinistra. Allo stesso tempo, la CPU 001 vuole eseguire una WRITE nel modulo 001. Avviene un processo simile a quello visto (percorso b nella figura). Siccome i percorsi a e b non usano gli stessi switch, le due richieste possono procedere in parallelo. 35 Sistemi UMA a reti con commutatori a più stadi Consideriamo invece cosa accade se la CPU 000 vuole accedere il modulo 000. La sua richiesta confliggerebbe con la richiesta della CPU 001 sullo switch 3A: una delle due richieste deve attendere. Al contrario di quello che accade con le reti che usano crossbar switch, le reti omega sono reti bloccanti: non tutte le sequenze di richieste possono essere servite contemporaneamente. I conflitti possono verificarsi sull uso di una connessione, di uno switch, o in una richiesta alla memoria o una risposta ad una CPU. Varie tecniche possono essere usate per connettere CPU e memorie in modo da minimizzare la possibilità di conflitti e massimizzare il parallelismo delle comunicazioni CPU-memoria

13 Multiprocessori NUMA I sistemi UMA a bus singolo sono limitati dal numero di processori, e per connettere più processori è necessario dell hardware comunque costoso. Allo stato attuale, non è conveniente costruire sistemi UMA con più di 256 processori. Per costruire sistemi più grandi è necessario accettare un compromesso: che non tutti i moduli di memoria abbiano lo stesso tempo di accesso rispetto a ciascuna CPU. Questo è la caratteristica di base da cui prendono il nome i sistemi NUMA: Non Uniform Memory Access. 37 Multiprocessori NUMA Come per i sistemi UMA, nei sistemi NUMA tutte le CPU vedono lo stesso spazio di indirizzamento ma, ogni processore è dotato di una sua propria memoria locale, vista anche da tutti gli altri processori. Al contrario dei sistemi UMA quindi, nei sistemi NUMA l accesso ai moduli di memoria locale è più veloce dell accesso ai moduli di memoria remoti. Una conseguenza di questa caratteristica è che i programmi scritti per sistemi UMA possono comunque girare senza dover apportare alcun cambiamento su macchine NUMA, possibilmente con prestazioni diverse a causa dei diversi tempi di accesso ai vari moduli remoti di RAM (ovviamente a parità di tutte le altre condizioni) 38 Multiprocessori NUMA Poiché le macchine NUMA hanno un unico spazio di indirizzamento logico visto da tutte le CPU, mentre la memoria fisica è in realtà suddivisa tra i vari processori, emerge il concetto di memoria locale e remota. Tuttavia, anche l accesso alla memoria remota da parte di ciascuna CPU avviene mediante LOAD e STORE Esistono due tipi di sistemi NUMA: Non-Caching NUMA (NC-NUMA) Cache-Coherent NUMA (CC-NUMA) 39 13

14 Multiprocessori NC-NUMA In un sistema NC-NUMA i processori non hanno cache locale. Ogni accesso alla memoria è gestito da una MMU modificata, che controlla se la richiesta è diretta alla memoria locale o a un modulo remoto, nel qual caso la richiesta viene instradata al nodo contenente il dato richiesto. Evidentemente, programmi che usano dati remoti (rispetto alla CPU su cui girano) risulteranno molto più lenti che se i dati fossero memorizzati nella memoria locale del processore su cui girano (Tanenbaum, Fig. 8.30). rete di interconnessione a topologia non specificata 40 Multiprocessori NC-NUMA Ovviamente, nei sistemi NC-NUMA il problema della coerenza della cache è automaticamente risolto perché non c e nessuna forma di caching: ogni dato della memoria è presente esattamente in una locazione ben precisa. Rimane il problema dell inefficienza dell accesso alla memoria remota. Per questo, le macchine NC-NUMA possono usare software elaborato per spostare le pagine di memoria da un modulo all altro in modo da massimizzare le prestazioni. Un demone page scanner può attivarsi ogni pochi secondi, esaminare le statistiche sull indirizzamento della memoria, e spostare le pagine da un modulo all altro per cercare di migliorare le prestazioni. 41 Multiprocessori NC-NUMA In realtà, nei sistemi NC-NUMA, ogni processore può avere anche una memoria locale privata e una cache, e solo i dati privati del processore (ossia quelli nella memoria locale privata) possono risiedere nella cache. Questa soluzione aumenta ovviamente le prestazioni di ciascun processore, ed è adottata ad esempio nel Cray T3D/E. Tuttavia, il tempo di accesso ai dati remoti rimane molto alto, nel Cray T3D/E è di 400 cicli di clock del processore, contro solo due cicli necessari per accedere un dato nella cache locale

15 Multiprocessori CC-NUMA Aggiungere il caching diminuisce ovviamente il i tempi di accesso ai dati remoti, ma introduce il problema della coerenza della cache. Un modo di garantire la coerenza sarebbe ovviamente lo snooping sul bus di sistema, ma questa tecnica diventa troppo inefficiente oltre un certo numero di CPU, ed è comunque troppo difficile da implementare nei sistemi che non usano un bus comune di interconnessione. Abbiamo allora bisogno di un approccio diverso. L approccio più usato per costruire sistemi CC-NUMA con molte CPU assicurando la coerenza della cache è noto come schema o protocollo directory-based (multiprocessor). L idea di base è di associare ad ogni nodo del sistema una directory per le linee della sua RAM: un database che dice in quale cache si trova ogni linea, e qual è il suo stato. 43 Multiprocessori CC-NUMA Quando viene indirizzata una linea di memoria, la directory del nodo a cui quella linea appartiene viene interrogata per sapere se la linea si trova in qualche cache e se questa sia stata modificata rispetto alla copia in RAM. Poiché una directory viene interrogata ogni volta che una istruzione accede la corrispondente memoria, deve essere implementata con un hardware molto veloce, ad esempio una memoria associativa, o per lo meno della RAM statica. Come esempio di protocollo directory based, consideriamo un sistema con 256 nodi, ognuno formato da una CPU e una RAM locale da 16 MB. Ci sono in tutto 2 32 = 4 GB di RAM, e ogni nodo contiene 2 18 linee da 64 byte ciascuna (2 18 x 2 6 = 2 24 = 16 MB). 44 Multiprocessori CC-NUMA Lo spazio di indirizzamento è unico, col nodo zero che contiene la memoria con indirizzi da 0 a 16 MB, il nodo 1 la memoria con indirizzi da 16 a 32 MB, e così via. Un indirizzo fisico è quindi scritto su 32 bit: gli 8 bit più significativi indirizzano di fatto il numero del nodo a cui appartiene il banco di RAM che contiene il dato indirizzato. i successivi 18 bit indicano la linea indirizzata all interno del banco da 16 MB i restanti 6 bit meno significativi indirizzano il byte all interno della linea (Tanenbaum, Fig. 8.31b): line 45 15

16 Multiprocessori CC-NUMA Assumiamo che i nodi siano connessi da una rete con topologia non ulteriormente specificata. Ogni nodo contiene anche una directory con 2 18 entry per tenere traccia delle linee del corrispondente modulo locale di memoria. Ogni entry della directory registra se la corrispondente linea è memorizzata in qualche cache, e se si nella cache di quale nodo. Per semplicità assumiamo che ogni linea da 64 byte sia contenuta al massimo in una cache di qualche processore (Tanenbaum, Fig. 8.31a). 46 Multiprocessori CC-NUMA Come esempio di funzionamento, vediamo cosa accade quando la CPU 20 esegue una LOAD, specificando quindi un indirizzo di RAM La CPU 20 presenta l indirizzo alla propria MMU, la quale traduce la LOAD in un indirizzo fisico, ad esempio, 0x La MMU divide l indirizzo i 3 parti, che in decimale sono (verificate che i numeri siano giusti): nodo 36 linea 4 offset 8 La MMU vede quindi che il dato indirizzato sta al nodo 36, e invia una richiesta attraverso la rete al nodo 36, per sapere se la linea 4 è in una cache, e se si in quale. 47 Multiprocessori CC-NUMA Il nodo 36 instrada la richiesta alla propria directory la quale verifica però che la linea non è nella cache di qualche nodo remoto la linea allora viene prelevata dalla RAM locale e inviata al nodo 20, mentre la directory viene aggiornata per indicare che ora la linea 4 è in cache al nodo 20 (Tanenbaum, Fig. 8.31c). la directory del nodo

17 Multiprocessori CC-NUMA Consideriamo invece il caso in cui la richiesta riguarda la linea 2 del nodo 36. in questo caso, la directory del nodo 36 verifica che la linea è nella cache del nodo 82. La directory del nodo 36 deve allora aggiornare la entry della linea 2, per indicare che la linea è ora al nodo 20, e inviare un messaggio al nodo 82 richiedendo che la linea 2 venga inviata al nodo 20 e che la corrispondente entry nella cache del nodo 82 venga invalidata. Ma quando vengono aggiornate le linee in RAM? Ovviamente solo quando vengono modificate. La soluzione più semplice è farlo quando una CPU esegue una STORE: la modifica viene propagata alla RAM che contiene la linea indirizzata dalla STORE. 49 Multiprocessori CC-NUMA Si può osservare che una architettura di questo tipo, indicata come un multiprocessore a memoria condivisa vede in realtà molti messaggi attraversare la rete di interconnessione. L overhead di un tale sistema è tutto sommato accettabile. Ogni nodo ha 16 MB di RAM, e 2 18 entry da 9 bit per tenere traccia dello stato delle linee (perché 9?) L overhead è quindi 9 x 2 18 bit / 16 MB, ossia circa 1,76 %, il che è certamente accettabile (anche se la directory va implementata con memoria ad alta velocità, il che aumenta i costi). Nel caso di linee da 32 byte l overhead sale al 4%, e scende sotto l 1% nel caso di linee da 128 byte. 50 Multiprocessori CC-NUMA In un sistema reale, questa architettura directory based sarà sicuramente più complessa: 1. nell esempio, una linea può essere al massimo in una cache, e si può aumentare l efficienza del sistema permettendo che le linee di memoria possano essere contemporaneamente nelle cache di più nodi. 2. tenendo traccia del fatto che una cache line è stata modificata o meno, si possono limitare le comunicazioni fra CPU e memorie. Ad esempio, se una cache line non è stata modificata, la linea originale in RAM è ancora valida, e una read da una CPU remota per quella line può essere soddisfatta dalla RAM stessa, senza dover andare a recuperare la linea dalla cache che ne contiene una copia (visto che le due copie sono identiche) 51 17

18 Sincronizzazione tra processi In un sistema monoprocessore, i vari processi si sincronizzano fra loro usando opportune system call o costrutti del linguaggio in uso: semafori, regioni critiche condizionali, monitors. Questi meccanismi di sincronizzazione sono costruiti a partire da opportune primitive di sincronizzazione hardware: spesso una istruzione macchina non interrompibile in grado di prelevare e modificare un valore, o di scambiare il contenuto di un registro e una cella di memoria. In un sistema multiprocessore abbiamo bisogno di primitive di sincronizzazione simili: i processi vedono un unico spazio di indirizzamento e la sincronizzazione deve avvenire sfruttando questo spazio comune, e non meccanismi a scambio di messaggi. 52 Sincronizzazione tra processi Ecco una classica soluzione al problema della sezione critica per un sistema monoprocessore che usa una operazione di exchange atomica. Può essere poi usata per implementare semafori o altre primitive di sincronizzazione ad alto livello: Shared var int lock = 0; // lock inizialmente accessibile int v = 1; repeat while ( v == 1) do exch (v, lock); //entry section critical section // qui dentro lock = 1 lock = 0; // exit section altro codice non in mutua esclusione // il lock è di nuovo libero until false; questo tipo di lock è detto spin lock, perché il processo cicla sulla variabile di lock fino a quando non la trova libera. 53 Sincronizzazione tra processi Tuttavia, in un ambiente in cui i processi che tentano di sincronizzarsi su una variabile condivisa possono girare su CPU diverse, l atomicità delle istruzioni di sincronizzazione non è sufficente. Su un processore, l istruzione atomica sarà eseguita senza interruzioni, ma che succede sugli altri processori? Avrebbe senso disabilitare tutte le operazioni sulla memoria dal momento in cui una primitiva di sincronizzazione viene avviata a quando ha finito di modificare la variabile di sincronizzazione? Funzionerebbe, ma questo rallenterebbe le operazioni delle CPU non coinvolte nella sincronizzazione. (e notate che stiamo anche ignorando l esistenza della cache di ciascun processore...) 54 18

19 Sincronizzazione tra processi La soluzione adottata in molti processori usa una coppia di istruzioni, eseguite una dopo l altra. La prima istruzione cerca di portare in CPU il valore della variabile condivisa usata da tutti i processori per la sincronizzazione. La seconda istruzione cerca di modificare la variabile condivisa, e restituisce un valore da cui si può capire se la coppia di istruzioni è stata eseguita in modo atomico, il che in un sistema multiprocessore, significa: 1. nessun altro processo ha modificato il valore della variabile usata per la sincronizzazione prima della terminazione della seconda istruzione della coppia, e: 2. Non si è verificato un context switch nel processore tra le due istruzioni. Sia [0(R1)] il valore della cella di memoria di indirizzo 0(R1), 55 usata come variabile condivisa di sincronizzazione. Sincronizzazione tra processi 1) LL R2, 0(R1) // Load linked: scrive [0(R1)] in R2 2) SC R3, 0(R1) // Store conditional: scrive il contenuto // di R3 in 0(R1) L esecuzione delle due istruzioni rispetto a 0 (R1) è vincolata a ciò che accade tra l esecuzione delle due istruzioni: 1. Se 0 (R1) viene modificata (da un altro processo) prima dell esecuzione della SC, la SC fallisce, ossia: 0 (R1) non viene modificata dalla SC e viene scritto 0 in R3. Se invece la SC non fallisce, allora: R3 viene copiato in 0(R1) e in R3 viene scritto Analogamente, se la CPU su cui la coppia di istruzioni viene eseguita esegue un context switch tra le due istruzioni, la SC fallisce (con gli stessi effetti del punto 1). 56 Sincronizzazione tra processi Ed ecco come si può realizzare una exchange atomica tra R4 e 0( R1) in un sistema multiprocessore a memoria condivisa (notate che usiamo qualcosa di simile ad uno spin lock): retry: OR R3, R4, R0 // copy exchange value R4 in R3 LL R2, 0(R1) // load linked: copy [0(R1)] in R2 SC R3, 0(R1) // try to store exchange value in 0(R1) BEQZ R3, retry // spin if store failed MOV R4, R2 // now put loaded value in R4 Quando la MOV viene eseguita, R4 e 0(R1) sono stati scambiati in modo atomico, e si è certi che il contenuto di 0(R1) non è stato modificato da altri processi prima del completamento dell exchange. Chiamiamo EXCH l operazione eseguita da questo 57 codice. 19

20 Sincronizzazione tra processi Una volta in possesso di un operazione atomica EXCH, la si può usare per implementare spin locks: accessi ad una sezione critica che ogni processore cerca di acquisire ciclando sulla variabile di lock, che controlla appunto l accesso mutuamente esclusivo. La variabile di lock settata a 0 o a 1 indicherà se la sezione critica è libera o occupata da un altro processo. Dal corso di Sistemi Operativi sappiamo che l uso del busy waiting per implementare sezioni critiche è accettabile solo le sezioni critiche sono molto brevi. Sezioni critiche molto brevi possono poi essere sfruttate per implementare i meccanismi di sincronizzazione e mutua esclusione ad alto livello, ad esempio i semafori. Ma in ogni caso, il problema del busy waiting è meno grave nei 58 sistemi multiprocessore. Perché? Sincronizzazione tra processi Se non ci fosse la cache (e quindi nessun problema di coerenza della cache), la variabile di lock andrebbe tenuta in memoria: un processore cerca di acquisire il lock con una exchange atomica, e verifica se il lock è libero. Ricordate: [0(R1)] = 0 = lock libero; [0(R1)] = 1 = lock occupato ADD R2, R0, #1 // inizializza il valore di supporto in R2 lockit: EXCH R2, 0(R1) // exchange atomico BNEZ R2, lockit // ritenta se [0(R1)] = 1 = locked sezione critica Per rilasciare il lock (ossia uscire dalla sezione critica) il processore scriverà 0 in 0(R1). 59 Sincronizzazione tra processi Se il sistema supporta la coerenza della cache, allora la variabile di lock può essere mantenuta nella cache di ciascun processore. Questo rende il meccanismo dello spin lock più efficiente, perché tutte le operazioni dei vari processori che cercano di acquisire il lock operano sulle rispettive cache, in modo più efficiente. Dobbiamo però modificare leggermente la procedura di spin lock: ogni processore esegue una read sulla copia in cache del lock, fino a quando non vede che il lock è libero. A questo punto tenta di acquisire il lock (cioé entrare in sezione critica) usando la exchange atomica

21 Sincronizzazione tra processi lockit: LD R2, 0(R1) // load of lock BNEZ R2, lockit // lock not available, spin again ADD R2, R0, #1 // prepare value for locking EXCH R2, 0(R1) // atomic exchange BNEZ R2, lockit // spin if lock was not 0 Un esempio di funzionamento con tre CPU che usano il MESI è riportato nel lucido seguente (H-P3, Fig. 6.37): una volta che CPU 0 scrive 0 nel lock, l entry delle altre due cache viene invalidata, e il nuovo valore deve essere prelevato dalla cache di CPU 0. Una delle due cache riceve per prima il valore 0 e riesce ad eseguire la exchange, mentre l altro processore troverà la variabile di lock già a 1 e dovrà ricominciare lo spinning. 61 CPU P0 1 has lock 2 set lock to 0 CPU P1 CPU P2 coherence state of lock spins, testing if lock = 0 (Invalidate received) spins, testing if Lock = 0 (Invalidate received) Shared Modified (P0) 3 Cache miss Cache miss change from Modified to Shared 4 (Wait while bus busy) Bus activity None Write invalidate of lock variable from P0 Bus starts serving P2 cache miss; write back from P0 Lock = 0 Shared Cache miss for P2 satisfied 5 Lock = 0 Executes exch Shared Cache miss for P1 satisfied 6 Executes exch Completes exch: return 0 and sets Lock = 1 7 Completes exch: return 1 and sets Lock = 1 8 Spins, testing if Lock = 0 Enter critical section Modified (P2) Modified (P1) Write invalidate of lock variable from P2 Write invalidate of lock variable from P1 None 62 Sincronizzazione tra processi E corretto osservare che la tecnica vista funziona senza troppo overhead (ossia, lo spinning non spreca troppi cicli di clock) solo per sistemi con poche CPU, o perlomeno con poche CPU coinvolte nel tentativo di acquisire il lock Quando il numero di CPU coinvolte nel tentativo di acquisire il lock può essere alto (diciamo, da 10 CPU in su), vengono usati meccanismi un pò più sofisticati, ma sempre basati sulle primitive di sincronizzazione LL e SC già viste

22 Modelli di consistenza della memoria Garantire la coerenza della cache fa si che le varie CPU di un sistema multiprocessore vedano la memoria principale in maniera consistente fra loro. Tuttavia, la coerenza della cache non risponde alla domanda di cosa debba significare questa consistenza. Ossia: in che ordine una CPU deve/può osservare le modifiche sui dati compiute dalle altre CPU? Infatti, le CPU comunicano attraverso variabili condivise, e una CPU usa delle READ per osservare le WRITE di un altra CPU. Quindi, quali proprietà devono valere per le READ e le WRITE eseguite dai processori sulla memoria? 64 Modelli di consistenza della memoria Anche nel caso semplice di un sistema NC-NUMA, la presenza di banchi di memoria locali e remoti alle varie CPU pone un problema di consistenza della memoria. Consideriamo infatti tre CPU che eseguano nell ordine, in rapida sequenza, le seguenti operazioni sulla cella di memoria X: CPU A: write #1, X CPU B: write #2, X CPU C: read X Che valore legge CPU C? In mancanza di assunzioni a priori, potrà leggere 1, 2 o addirittura il valore precedente alla prima scrittura, a seconda della distanza delle tre CPU rispetto al banco di memoria che contiene la cella indirizzata. 65 Modelli di consistenza della memoria In generale, in un dato istante più CPU possono stare cercando di leggere o scrivere nella stella locazione della memoria vista da tutte le CPU. Nei sistemi DSM le varie richieste di accesso alla locazione possono sorpassarsi l un l altra, e quindi essere eseguire in un ordine diverso da quello in cui erano state avviate. Inoltre, ogni CPU è dotata di una (o due, o tre) cache, in cui possono essere presenti più copie della stessa linea di RAM, non necessariamente aggiornate. Il risultato può facilmente essere il caos, a meno che non vengano imposte delle regole di gestione e comportamento della memoria nei 66 confronti dei processori che la condividono. 22

23 Modelli di consistenza della memoria Queste regole stabiliscono ciò che viene chiamato un modello di consistenza della memoria, e diverse regole sono state proposte ed implementate a livello hardware. Alcuni modelli di consistenza sono più rigidi, e quindi più difficili da implementare, mentre altri sono più laschi. In ogni caso, un modello deve permettere di chiarire cosa accade in situazioni come negli esempi precedenti. Solo sulla base in uno specifico modello di consistenza si possono sviluppare le applicazioni che gireranno sul sistema, basandosi proprio su quello specifico modello di funzionamento della memoria. Vediamo alcuni modelli di consistenza tra più diffusi, senza entrare nei dettagli della loro implementazione, che comunque è normalmente realizzata a livello hardware per garantire un sufficiente livello di efficienza. 67 CONSISTENZA STRETTA Consistenza stretta E la forma più ovvia di consistenza: qualsiasi lettura ad una cella X restituisce sempre il valore dovuto alla scrittura più recente effettuata nella stessa cella. Sfortunatamente, è anche la forma di consistenza più difficile da garantire: è necessaria un interfaccia tra le varie CPU e la memoria che gestisca tutte le richieste di accesso alla memoria stessa in modalità first come first served La memoria diviene così un collo di bottiglia che rallenta in modo inaccettabile un sistema costruito per lavorare il più possibile in parallelo Questa forma di consistenza non viene di fatto implementata. 68 Consistenza sequenziale CONSISTENZA SEQUENZIALE Un modello di consistenza più ragionevole assume che, in presenza di una sequenza di più richieste di scrittura e lettura su una certa cella di memoria, un qualche ordine delle richieste viene scelto (eventualmente in maniera non deterministica) dall hardware, ma tutte le CPU vedono lo stesso ordine. Come esempio, consideriamo una CPU 1 che scrive 100 in una cella x, e immediatamente dopo una CPU 2 che scrive 200 in x. Dopo la seconda scrittura (non necessariamente già completata), altre due CPU leggono ciascuna due volte la cella x

24 Consistenza sequenziale Ecco 3 possibili ordinamenti ((b), (c) e (d)) delle sei operazioni: sono tutti perfettamente possibili, ma solo il primo, in cui CPU 3 e CPU 4 leggono entrambi (200, 200) rispetta la consistenza sequenziale (Tanenbaum, Fig. 8.22). 70 Consistenza sequenziale b) CPU 3 legge (200, 200) CPU 4 legge (200, 200) c) CPU 3 legge (100, 200) CPU 4 legge (200, 200) d) CPU 3 legge (100, 100) CPU 4 legge (200, 100) Questi, e altri ordinamenti sono possibili, a causa dei diversi possibili ritardi nella propagazione delle operazioni tra le CPU e i moduli di memoria. Ma la consistenza sequenziale non permetterà che le due CPU possano vedere ordini diversi in cui gli eventi si verificano, e quindi solo il caso (b) si sarà permesso da un protocollo hardware/software che implementa la consistenza sequenziale. 71 Consistenza sequenziale Di fatto, la consistenza sequenziale permette di asserire che, nel caso di eventi multipli che avvengono in maniera concorrente, viene scelto un ordine preciso in cui questi eventi si verificano, e quest ordine è osservato da tutti i processori del sistema (e quindi da tutti i processi del sistema) Sembra una proprietà ovvia, ma in realtà è molto costosa da implementare, e riduce le prestazioni potenziali, soprattutto per sistemi paralleli con molte CPU. Infatti, si deve imporre un ordine in cui le operazioni sulla memoria condivisa vengono eseguite, e nuove operazioni non possono essere avviate fino a che le vecchie non sono state completate. Per questo, sono stati proposti dei modelli di consistenza relaxed, più facili da implementare e meno penalizzanti per le prestazioni. 72 Uno di questi modelli è la consistenza del processore 24

25 Consistenza del processore E una forma di consistenza meno vincolante, ma più facile da implementare, e possiede due proprietà: 1. Le scritture da parte di una qualsiasi CPU sono viste dalle altre CPU nell ordine in cui sono state avviate. Se CPU 1 scrive A, B e C in una locazione x, una CPU 2 che legga x in sequenza più volte leggerà prima A, poi B e poi C. 2. Per ogni locazione di memoria, qualsiasi CPU vede tutte le scritture effettuate da ogni singola CPU in quella locazione nello stesso ordine. 73 Consistenza del processore Notate perché abbiamo una consistenza più debole di quella sequenziale. Supponete che CPU 1 scriva in var A, B e C, mentre CPU 2, concorrentemente con CPU 1, scrive in var X, Y e Z. Secondo la consistenza sequenziale, qualsiasi altra CPU che legga più volte var leggerà una qualche combinazione delle sei scritture, ad esempio X, A, B, Y, C, Z, e questa stessa sequenza verrà letta da ogni CPU nel sistema. Secondo la consistenza del processore, diverse CPU che leggano più volte var potranno leggere sequenze diverse. Ciò che viene garantito è che nessuna CPU vedrà una sequenza in cui, ad esempio, B viene prima di A o Z viene prima di Y. L ordine in cui ciascuna CPU esegue le sue scritture, viene visto allo stesso modo da tutte le altre. 74 Consistenza del processore Quindi, ad esempio, CPU 3 potrà leggere: A, B, C, X, Y, Z. Mentre CPU 4 potrà leggere X, Y, Z, A, B, C Questo modello di consistenza è adottato da molti sistemi multiprocessore

26 Il Sun Fire E25K Un semplice esempio di architettura CC-NUMA è la famiglia Sun Fire della Sun Microsystems. Il modello E25K è formato da 72 CPU UltraSPARC IV. Una CPU UltraSPARC IV è formata da una coppia di processori UltraSPARC III che condividono cache e memoria Di fatto, come vedremo, il Sun Fire E25K è un sistema combinato UMA / CC-NUMA Il sistema è stato prodotto fino al 2009, sostituito poi dai server Sun Blade, che usano processori multi-core di più recente produzione. 76 Il Sun Fire E25K Un sistema E25K consiste in un massimo di 18 boardset, ognuno dei quali è formato da: una scheda madre CPU-memoria una scheda di input/output con quattro slot PCI (Peripheral Component Interconnect) Una scheda di espansione che accoppia la scheda madre con la scheda di I/O e connette le due schede alla pianta centrale. La pianta centrale ospita le varie schede e contiene i circuiti di switching per la comunicazione fra i vari nodi 77 Il Sun Fire E25K Ogni scheda CPU-memoria contiene 4 CPU UltraSPARC IV e 4 moduli da 8 GB di RAM ciascuno, per un totale di 8 CPU UltraSPARC III e 32 GB di RAM Quindi, un sistema che abbia tutti e 18 i boardset consiste di 144 CPU UltraSPARC III, 72 moduli di memoria per un totale di 576 GB di RAM e 72 slot PCI. Ogni UltraSPARC IV ha 64KB + 64 KB di cache L1, 2 MB di cache L2 (on-chip) e 32 MB di cache L3 Una nota curiosa: il numero 18 è stato scelto perché un sistema con 18 boardset era il più grande che ancora riusciva a passare attraverso una porta di normale dimensioni senza dover essere smontato

27 Il Sun Fire E25K Il punto cruciale dell architettura è ovviamente la memoria principale, fisicamente distribuita. Come connettere 144 CPU a 72 moduli di RAM e assicurare la coerenza della cache? Come abbiamo già visto, usare un bus condiviso di snooping quando sono coinvolte molte CPU è poco pratico, perché il bus costituirebbe un collo di bottiglia per le comunicazioni. Analogamente, un crossbar switch 144 x 72 sarebbe troppo difficile e costoso da costruire. Invece, nel Sun Fire la pianta centrale è composta da un insieme di 3 crossbar switch 18 x 18, che mettono in collegamento i 18 boardset. In questo modo, da(lla CPU di) ogni boardset è possibile accedere a(lla memoria di) ogni altro boardset. 79 Il Sun Fire E25K Su un crossbar 18 x 18 passano gli indirizzi delle richieste di accesso alla memoria remota, su un altro passano le risposte alle richieste, e sul terzo passano i dati veri e propri. L uso di tre linee separate permette quindi di aumentare il numero di accessi alla memoria remota che possono essere fatti in parallelo. Nella figura, 8 nodi sono connessi ciascuno con tutti gli altri da un crossbar switch 8 x 8. Se fossero disponibili altri due crossbar 8 x 8 ogni nodo potrebbe avere contemporaneamente 3 comunicazioni in corso con altri nodi (H.P3, Fig. 8.13a) 80 Il Sun Fire E25K All interno di ogni boardset, invece, i processori sono (almeno concettualmente) connessi fra loro da un bus comune su cui è implementata la logica di snooping (Tanenbaum, Fig. 8.32) 81 27

28 Il Sun Fire E25K Proprio a causa di questo sistema di connessione misto, L E25K usa, per mantenere la coerenza della cache, un sistema combinato snooping-directory based In ogni boardset viene usata una variante del protocollo di snooping MESI (il MOESI) tra le 8 CPU locali: quando una CPU indirizza un dato che appartiene alla porzione di memoria che sta sullo stesso boardset il protocollo di snooping si occupa di recuperare il dato stesso mantenendo la coerenza di tutte le cache del boardset Se invece viene indirizzata una linea remota rispetto ad una boardset, viene utilizzata una tecnica directory-based, con un unica directory per boardset che tiene traccia di tutte le linee di quel boardset e ne gestisce le richieste di accesso provenienti da boardset remoti. 82 Il Sun Fire E25K Con questa gestione della memoria, il Sun Fire E25K è in grado di raggiungere prestazioni molto elevate, con un minimo di 40GB che possono essere spostati globalmente nel sistema tra boardset differenti, al secondo (nel caso di un sistema completo, formato da 18 boardset). Tuttavia, se il software è in grado di allocare le pagine tra le varie schede di memoria in modo che la maggior parte degli accessi alla memoria da parte delle varie CPU sono locali, le prestazioni del sistema ne risentono positivamente in modo sensibile. 83 L SGI ALTIX I sistemi SGI ALTIX della SGI (Silicon Graphics Inc.) sono architetture parallele CC-NUMA fortemente scalabili, sia nel numero di processori che nella quantità di memoria indirizzabile. I sistemi ALTIX sono concepiti principalmente per applicazioni in campo scientifico (e militare) mentre i Sun server (Fire e i più recenti Blade) sono più orientati ad applicazioni commerciali. Sono i successori della serie SGI ORIGIN, che utilizzava processori RISC MIPS-R1000, sostituiti negli ALTIX da ITANIUM 2 e Xeon. Esistono diversi tipi di sistemi, dall ALTIX 330, che arriva ad un massimo di 16 processori e 128 GB di RAM, all ALTIX 4700 che arriva fino a 2048 processori Itanium 2 dual core e 32TB di RAM L ALTIX UV, introdotto a fine 2009, è configurabile da 32 a 2048 core Xeon e fino a 16 TB di RAM 84 28

29 L SGI ALTIX Un sistema ALTIX è formato da un insieme di nodi, di cui i principali sono i C-brick, unità computazionali costituite da 4 Itanium 2 connessi a gruppi di due a un massimo di GB di RAM. Un Shared-hub (SHUB) connette ogni coppia di processori alla rete di interconnessione, e implementa il protocollo di coerenza della cache. I nodi possono essere costituiti anche solo da banchi di memoria, detti (M-brick), in modo che la quantità di RAM non è vincolata al numero di CPU del sistema. 85 L SGI ALTIX Tra le altre motivazioni, la scelta dell Itanium 2 è dovuta alla sua capacità di indirizzare fino a 2 50 byte di memoria fisica, ossia circa un milione di gigabyte di RAM (mille terabyte di RAM) L Itanium 2 è in grado di gestire pagine con dimensione da 4KB a 4GB, ed è dotato di 2 TLB da 128 entry per gestire separatamente la traduzione degli indirizzi logici delle istruzioni e dei dati nei corrispondenti indirizzi fisici. E quindi possibile (nel caso migliore) indirizzare fino a più di 500 GB di istruzioni e 500 GB di dati senza TLB page miss, un evento che è particolarmente pesante da gestire in un sistema a memoria fisica distribuita. 86 L SGI ALTIX Il protocollo di coerenza della cache è implementato dagli SHUB, che si interfacciano sia con la logica di snooping dei 4 Itanium di un C-brick che con il protocollo directory based usato attraverso la rete di interconnessione. Se la richiesta di accesso ad un dato da parte di una CPU può essere soddisfatta dal contenuto delle cache di una delle altre CPU del nodo, i dati vengono trasmessi direttamente alla cache del processore richiedente senza neanche far arrivare la richiesta alla memoria. Altrimenti, entra in gioco il protocollo directory based, implementato dagli SHUB, ognuno dei quali memorizza la directory della corrispondente coppia di Itanium

Multiprocessori. Classificazione dei multiprocessori

Multiprocessori. Classificazione dei multiprocessori Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Multiprocessori Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2009/10 Classificazione dei multiprocessori Focalizziamo

Dettagli

Introduzione ai thread

Introduzione ai thread Introduzione ai thread Processi leggeri. Immagine di un processo (codice, variabili locali e globali, stack, descrittore). Risorse possedute: : (file aperti, processi figli, dispositivi di I/O..),. L immagine

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

memoria virtuale protezione

memoria virtuale protezione Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente.

Dettagli

Architetture della memoria

Architetture della memoria Architetture della memoria Un elemento determinante per disegnare una applicazione parallela e' l architettura della memoria della macchina che abbiamo a disposizione. Rispetto all architettura della memoria

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-La memoria 1 Prerequisiti Concetto di memoria Dati e istruzioni Bit e byte 2 1 Introduzione In questa Unità studiamo più in dettaglio la memoria del computer e le sue funzioni.

Dettagli

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

Architettura dei sistemi di elaborazione: La memoria (parte 2) Architettura dei sistemi di elaborazione: La memoria (parte 2) La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Memoria Cache La cache e la memoria principale

Dettagli

Von Neumann Bottleneck

Von Neumann Bottleneck Von Neumann Bottleneck Gerarchia di memoria Struttura della Gerarchia Al livello 1 poniamo la memoria più veloce (piccola e costosa) Al livello n poniamo la memoria più lenta (grande ed economica) Scopo

Dettagli

Classificazione delle Architetture Parallele

Classificazione delle Architetture Parallele Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Classificazione delle Architetture Parallele Corso di Sistemi Distribuiti Valeria Cardellini Anno accademico 2009/10 Architetture parallele

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La

Dettagli

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:

5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: 1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate

Dettagli

static dynamic random access memory

static dynamic random access memory LA MEMORIA SRAM e D R A M static dynamic random access memory SRAM: unità che memorizza un gran numero di parole in un insieme di flip-flop, opportunamente connessi, mediante un sistema di indirizzamento

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Struttura dei Sistemi di Calcolo

Struttura dei Sistemi di Calcolo Struttura dei Sistemi di Calcolo Operazioni dei sistemi di calcolo Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione hardware Invocazione del Sistema Operativo 1 Architettura

Dettagli

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il processore. Istituzionii di Informatica -- Rossano Gaeta Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1 SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware

Dettagli

Processi e Thread. Meccanismi di IPC (1)

Processi e Thread. Meccanismi di IPC (1) Processi e Thread Meccanismi di IPC (1) 1 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per comunicare e sincronizzarsi : scambiare dati utilizzare

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL

GESTIONE DELLA MEMORIA CENTRALE 6.1 D. - UNICAL GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

ISA Input / Output (I/O) Data register Controller

ISA Input / Output (I/O) Data register Controller ISA Input / Output (I/O) Numerose Periferiche di tanti tipi diversi, collegati alla CPU mediante BUS diversi. Solo Input (tastiera, mouse), producono dati che la CPU deve leggere. Solo Output (Schermo),

Dettagli

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

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa) Processore Memoria Control (Parte di controllo) Datapath (Parte operativa) I/O Memoria La dimensione del Register File è piccola registri usati per memorizzare singole variabili di tipo semplice purtroppo

Dettagli

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

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! MACCHINA DI VON NEUMANN! UNITÀ FUNZIONALI fondamentali! Processore

Dettagli

ARCHITETTURE DEI CALCOLATORI Multiprocessori: : L approccio Transactional Memory

ARCHITETTURE DEI CALCOLATORI Multiprocessori: : L approccio Transactional Memory ARCHITETTURE DEI CALCOLATORI Multiprocessori: : L approccio Transactional Memory Mariagiovanna Sami 1 I limiti della cache coherence e della sincronizzazione lock-based Problema più grave: viene col vero

Dettagli

Informatica giuridica

Informatica giuridica Informatica giuridica Corso di laurea in Scienze dei Servizi giuridici Corso di laurea magistrale in Giurisprudenza A.A. 2015/16 L architettura hardware degli elaboratori La scheda madre Memoria principale

Dettagli

Miglioramento delle prestazioni

Miglioramento delle prestazioni Miglioramento delle prestazioni Migliorare sia larghezza di banda sia latenza: uso di cache multiple Introdurre una cache separata per istruzioni e dati (split cache) Beneficio: Le operazioni di lettura/scrittura

Dettagli

Fallimenti nella TLB

Fallimenti nella TLB Fallimenti nella TLB Un fallimento nella TLB può essere dovuto a due motivi: 1. la pagina fisica non è presente in memoria (page fault); 2. la traduzione non è nella TLB, anche se la pagina fisica è presente

Dettagli

Esercitazione su Gerarchie di Memoria

Esercitazione su Gerarchie di Memoria Esercitazione su Gerarchie di Memoria Introduzione Memoria o gerarchie di memoria: cache, memoria principale, memoria di massa etc. (con possibilità di fallimenti nell accesso) o organizzazione, dimensionamento,

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T5 B1-Programmazione multithreading 1 Prerequisiti Schedulazione Attesa indefinita Lo stallo Tecnica round-robin 2 1 Introduzione La programmazione concorrente consente di chiedere

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale la memoria secondaria i dispositivi di input/output 1 Fornisce la capacità di

Dettagli

Gerarchia di Memoria e Memorie Cache. ma rallenta R / nw. Qui : modi di aumentare velocità di R / nw. dati e codice non tutti uguali

Gerarchia di Memoria e Memorie Cache. ma rallenta R / nw. Qui : modi di aumentare velocità di R / nw. dati e codice non tutti uguali Gerarchia di Memoria e Memorie Cache Memoria virtuale: comodità + sicurezza ma rallenta R / nw Qui : modi di aumentare velocità di R / nw Osservazione: dati e codice non tutti uguali alcuni si usano poco

Dettagli

Il Processore: l unità di controllo

Il Processore: l unità di controllo Il Processore: l unità di controllo La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di

Dettagli

Componenti di un processore

Componenti di un processore Componenti di un processore Unità di Controllo Bus Interno REGISTRI Program Counter (PC) Registro di Stato (SR) Registro Istruzioni (IR) Registri Generali Unità Aritmetico- Logica Registro Indirizzi Memoria

Dettagli

Sistemi a processori multipli

Sistemi a processori multipli Sistemi a processori multipli Sommario Classificazione e concetti di base Sistemi multi-processore Sistemi multi-computer (cluster) Sistemi distribuiti Obiettivo comune Risolvere problemi di dimensioni

Dettagli

I thread. Non bastavano i processi?

I thread. Non bastavano i processi? I thread Non bastavano i processi? 1 Il modello a thread : motivazioni Nel modello a processi, ogni processo ha il suo spazio di indirizzamento, vediamo cosa significa... 2 Spazi di indirizzamento distinti

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

I THREAD O PROCESSI LEGGERI

I THREAD O PROCESSI LEGGERI I THREAD O PROCESSI Processi (pesanti): LEGGERI entità autonome con poche risorse condivise (si prestano poco alla scrittura di applicazioni fortemente cooperanti) Ogni processo può essere visto come Immagine

Dettagli

Introduzione ai. Sistemi Distribuiti

Introduzione ai. Sistemi Distribuiti Introduzione ai Sistemi Distribuiti Definizione di Sistema Distribuito (1) Un sistema distribuito è: Una collezione di computer indipendenti che appaiono agli utente come un sistema singolo coerente. 1

Dettagli

Modelli di programmazione parallela

Modelli di programmazione parallela Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici

Dettagli

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione

ESERCITAZIONE Unità centrale di elaborazione Ciclo base di un istruzione Meccanismo di interruzione ESERCITAZIONE 8 Sommario Unità centrale di elaborazione Meccanismo di interruzione CPU-Memoria Architettura di una CPU Linguaggio macchina Modi di indirizzamento 1. Unità centrale di elaborazione L unità

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di

Dettagli

Introduzione alle gerarchie di memoria

Introduzione alle gerarchie di memoria Introduzione alle gerarchie di memoria 1 Un ripasso Circuito sequenziale Segnale di clock Circuito sincrono Temporizzazione sensibile ai fronti Latch tipo S-R Latch tipo D Flip-flop tipo D Register file

Dettagli

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni La memoriaparametri di caratterizzazione Un dato dispositivo di memoria è caratterizzato da : velocità di accesso, misurata in base al tempo impiegato dal processore per accedere ad uno specificato indirizzo

Dettagli

Introduzione alle memorie cache. Sommario

Introduzione alle memorie cache. Sommario Introduzione alle memorie cache Corso ACSO prof. Cristina SILVANO Politecnico di Milano Cristina Silvano, 0/0/200 Sommario Obiettivo Livelli della gerarchia di memoria Memoria cache: concetti base Architettura

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docente: Alessandro Sperduti Informazioni Generali Lucidi ed esercizi disponibili in formato

Dettagli

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali Porte logiche di base Cenni circuiti, reti combinatorie, reti sequenziali NOT AND A R A B R OR A R B Quindi NAND o NOR sono complete circuiti con solo porte NAND o solo porte NOR. Reti combinatorie Rete

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Cenni sull architettura del calcolatore

Cenni sull architettura del calcolatore Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Cenni sull architettura del calcolatore Pietro Di Lena - pietro.dilena@unibo.it hard-ware /h :dwe9 r / n. The part of the computer

Dettagli

Struttura delle memorie cache

Struttura delle memorie cache Architettura degli Elaboratori e delle Reti Lezione 28 Struttura delle memorie cache Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 28 1/24

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2010-2011 Architettura di un calcolatore: introduzione Lezione 18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Calcolatori Elettronici: introduzione

Calcolatori Elettronici: introduzione Calcolatori Elettronici: introduzione G. Lettieri 3 Marzo 2017 1 Introduzione e richiami La Figura 1 mostra l architettura generale di un calcolatore. Nel corso approfondiremo ogni componente. I principali

Dettagli

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU Operazioni di I/O 1 Schema di collegamento fra dispositivi periferici e CPU Memoria CPU buffer interfaccia Registro di controllo Registro Di stato Unità di controllo Dispositivo fisico 2 1 Unità di interfaccia

Dettagli

Esercitazione del 05/05/ Soluzioni

Esercitazione del 05/05/ Soluzioni Esercitazione del 05/05/2005 - Soluzioni Una CPU a ciclo singolo richiede un ciclo di clock di durata sufficiente a permettere la stabilizzazione del circuito nel caso dell istruzione più complicata (con

Dettagli

La memoria cache. Informatica generale

La memoria cache. Informatica generale La memoria cache Nello schema di funzionamento di un calcolatore il processore continuamente preleva informazioni ed istruzioni dalla memoria centrale e scrive in essa informazioni La memoria centrale,

Dettagli

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

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte 2) Architettura dei sistemi di elaborazione: La CPU: Architettura (parte 2) ALU L unità aritmetico logica o ALU rappresenta l apparato muscolare di un calcolatore, il dispositivo cioè che esegue le operazioni

Dettagli

Struttura delle memorie cache

Struttura delle memorie cache Architettura degli Elaboratori e delle Reti Lezione 28 Struttura delle memorie cache Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 28 1/24

Dettagli

Sistemi a microprocessore

Sistemi a microprocessore Sistemi a microprocessore Programma: Segnali analogici e digitali Uso di segnali digitali per la rappresentazione dei numeri interi La memoria e la CPU I programmi in linguaggio macchina La connessione

Dettagli

Memoria virtuale. Daniele Loiacono, Vittorio Zaccaria

Memoria virtuale. Daniele Loiacono, Vittorio Zaccaria Memoria virtuale Daniele Loiacono, Vittorio Zaccaria Informatica B - Codice Corso: 081369 - A.A. 2010/2011 INGEGNERIA MECCANICA (BV) - INGEGNERIA IV (1 liv.) - Scaglione S - Z INGEGNERIA ENERGETICA (BV)

Dettagli

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

Esercizio. Si consideri una cache con 64 blocchi di 16 byte ciascuno. A quale numero di blocco corrisponde l indirizzo 1200 espresso in byte? Esempio MIPS 32 bit Indirizzo su 32 byte Cache ad accessi diretto Dimensioni della cache 2 n blocchi, di cui n bit usati per l indice dimensione del blocco di cache 2 m parole ossia 2 m+2 byte In questo

Dettagli

CAPITOLO 18 LA PROGRAMMAZIONE CONCORRENTE

CAPITOLO 18 LA PROGRAMMAZIONE CONCORRENTE CAPITOLO 18 LA PROGRAMMAZIONE CONCORRENTE Origini della CONCORRENZA Competizione tra processi per ottenere (e condividere) le Risorse: CPU, memoria, canali di I/O, files, ecc... Necessità di comunicazione

Dettagli

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi G L O S S A R I O BIT: acronimo di Binary Digit. E l unità elementare di informazione. Può assumere solo il valore 0 o 1. CALCOLATORE: macchina che opera la trasformazione dei dati (informazioni) HARDWARE:

Dettagli

Le memorie Cache n-associative

Le memorie Cache n-associative Le memorie Cache n-associative Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento Patterson: 5.2, 5.3 1/30 Sommario

Dettagli

Strutture dei sistemi di calcolo

Strutture dei sistemi di calcolo Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di protezione Architettura di un sistema di calcolo

Dettagli

Macchina di Von Neumann

Macchina di Von Neumann Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è

Dettagli

Gestione del processore. Il modello a thread

Gestione del processore. Il modello a thread Gestione del processore Il modello a thread 1 Il modello a thread : motivazioni Nel modello a processi, ogni processo ha il suo spazio di indirizzamento privato ed il modo per interagire è quello di utilizzare

Dettagli

Gestione della Memoria Principale

Gestione della Memoria Principale Gestione della Memoria Principale Requisiti della Gestione della Memoria. Gestione a Partizioni Fisse. Partizionamento dinamico. Paginazione. Segmentazione. 1 Gestione della Memoria In un sistema multiprogrammato

Dettagli

Istruzioni e linguaggio macchina

Istruzioni e linguaggio macchina Istruzioni e linguaggio macchina I linguaggi macchina sono composti da istruzioni macchina, codificate in binario, con formato ben definito processori diversi hanno linguaggi macchina simili scopo: massimizzare

Dettagli

Principi operativi dei computer. Capitolo 7 Fluency Conoscere e usare l informatica

Principi operativi dei computer. Capitolo 7 Fluency Conoscere e usare l informatica Principi operativi dei computer Capitolo 7 Fluency Conoscere e usare l informatica I soliti sospetti Processore Sistema operativo Software Istruzioni Ciclo macchina Memoria Hardware componente Com è fatto

Dettagli

sistemi distribuiti Sistemi distribuiti - architetture varie classificazioni classificazione di Flynn (1972)

sistemi distribuiti Sistemi distribuiti - architetture varie classificazioni classificazione di Flynn (1972) Esempi di applicazioni comunicazione di dati Sistemi Distribuiti fra terminali di un sistema di elaborazione - fra sistemi di elaborazione sistemi distribuiti o centralizzati es. packed-switced networks

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica docente: Alessandro Sperduti Informazioni Generali Lucidi ed esercizi disponibili

Dettagli

INTERFACCE MEMORY-MAPPED. Grazia Pagano DMI, Seminario di Sistemi dedicati 8 Gennaio 2018

INTERFACCE MEMORY-MAPPED. Grazia Pagano DMI, Seminario di Sistemi dedicati 8 Gennaio 2018 INTERFACCE MEMORY-MAPPED Grazia Pagano DMI, Seminario di Sistemi dedicati 8 Gennaio 2018 INTERFACCE MEMORY-MAPPED Introduzione Registro mappato in memoria Mailbox con handshake FIFO queues Protocolli di

Dettagli

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE 1 ALGORITMO, PROGRAMMA, PROCESSO Algoritmo Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma Descrizione di un

Dettagli

Esercitazioni 13 e 14

Esercitazioni 13 e 14 Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazioni 13 e 14 Comunicazione tra processi (IPC) Meccanismo per la comunicazione

Dettagli

Introduzione ai. Sistemi Distribuiti

Introduzione ai. Sistemi Distribuiti Introduzione ai Sistemi Distribuiti Definizione di Sistema Distribuito (1) Un sistema distribuito è: Una collezione di computer indipendenti che appaiono agli utenti come un sistema singolo coerente. Definizione

Dettagli

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 14 Febbraio 2007

SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI. NUOVO E VECCHIO ORDINAMENTO DIDATTICO 14 Febbraio 2007 SOLUZIONI DELLA PROVA SCRITTA DEL CORSO DI NUOVO E VECCHIO ORDINAMENTO DIDATTICO 4 Febbraio 2007 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO (8 punti) (a)

Dettagli

Le Memorie. Classe III Telecomunicazioni Sistemi e Reti. Prof. Tullio Parcesepe

Le Memorie. Classe III Telecomunicazioni Sistemi e Reti. Prof. Tullio Parcesepe Le Memorie Classe III Telecomunicazioni Sistemi e Reti Prof. Tullio Parcesepe In questa lezione impareremo: La memorizzazione delle informazioni Tipi differenti di memorie Gli indirizzi delle celle di

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

CALCOLATORI ELETTRONICI. I dispositivi di memoria

CALCOLATORI ELETTRONICI. I dispositivi di memoria CALCOLATORI ELETTRONICI I dispositivi di memoria I dispositivi di memoria Linguaggi ad alto livello/ Applicazioni SW Informatica Sistema operativo Assembler ISA Architettura di un calcolatore Memoria I/O

Dettagli

Mutua Esclusione. Esempi di mutua esclusione

Mutua Esclusione. Esempi di mutua esclusione Mutua Esclusione Esempi di mutua esclusione Il problema della mutua esclusione nasce quando più di un processo alla volta può aver accesso a variabili comuni. La regola di mutua esclusione impone che le

Dettagli

Consentire a utenti/processi diversi la condivisione delle risorse

Consentire a utenti/processi diversi la condivisione delle risorse Il nucleo del sistema operativo (kernel) Funzioni del livello: Conoscere lo stato del processore e programma in attesa (modulo Traffic Controller) Decidere chi potrà usare la CPU (modulo 1 Job Scheduler

Dettagli

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Cos è un Calcolatore? Un computer (calcolatore) è una macchina

Dettagli

ARCHITETTURE DEI CALCOLATORI I sistemi multiprocessore

ARCHITETTURE DEI CALCOLATORI I sistemi multiprocessore ARCHITETTURE DEI CALCOLATORI I sistemi multiprocessore Mariagiovanna Sami 14/12/2009 1 Architetture DSM Per sistemi scalabili che possono raggiungere centinaia (o migliaia) di nodi: si può scegliere la

Dettagli

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo. Corso integrato di Sistemi di Elaborazione Modulo I Prof. Crescenzio Gallo crescenzio.gallo@unifg.it La memoria principale 2 Organizzazione della memoria La memoria principale è organizzata come un insieme

Dettagli

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive)

SEMAFORI SEMAFORI. Sul semaforo sono ammesse solo due operazioni (primitive) SEMAFORI 1 SEMAFORI Variabile intera non negativa con valore iniziale >= 0 Al semaforo è associata una lista di attesa Qs nella quale sono posti i descrittori dei processi che attono l autorizzazione a

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 20 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Maggio 2013 Programmazione concorrente:

Dettagli

SISTEMI OPERATIVI DISTRIBUITI

SISTEMI OPERATIVI DISTRIBUITI SISTEMI OPERATIVI DISTRIBUITI E FILE SYSTEM DISTRIBUITI 12.1 Sistemi Distribuiti Sistemi operativi di rete Sistemi operativi distribuiti Robustezza File system distribuiti Naming e Trasparenza Caching

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

Struttura delle memorie cache

Struttura delle memorie cache Architettura degli Elaboratori e delle Reti Lezione 28 Struttura delle memorie cache Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 28 1/24

Dettagli

SCHEDULING DELLA CPU. Obiettivi. » Introduzione allo scheduling della CPU. » Algoritmi di scheduling della CPU

SCHEDULING DELLA CPU. Obiettivi. » Introduzione allo scheduling della CPU. » Algoritmi di scheduling della CPU SISTEMI OPERATIVI SCHEDULING DELLA CPU Obiettivi» Introduzione allo scheduling della CPU Aspetto fondamentale dei sistemi operativi multiprogrammati» Algoritmi di scheduling della CPU» Criteri per la scelta

Dettagli

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Sincronizzazione. Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Sincronizzazione Soluzioni hardware Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Soluzioni hardware Le soluzioni hardware al problema della SC possono essere classificate

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docenti: Silvia Crafa, Nicolò Navarin (lab), Alessandro Sperduti Docenti Silvia Crafa Nicolò

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 4 Giovedì 20-10-2016 Struttura e organizzazione software dei sistemi

Dettagli

6.6 Regioni Critiche Condizionali. 6.9 Transazioni Atomiche Modello del Sistema Transazionale

6.6 Regioni Critiche Condizionali. 6.9 Transazioni Atomiche Modello del Sistema Transazionale 45 6.6 Regioni Critiche Condizionali 6.7 Monitor Costrutti linguistici inventati per evitare i problemi di programmazione che facilmente si fanno con i semafori Attenzione con i thread: in tale ambiente

Dettagli