Memoria cache: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
sistemati alcuni interlink errati
m +link
Riga 288:
Protocollo usato nei sistemi con bus, come ad esempio nei sistemi SMP. Sistema operante sotto un unico [[Sistema Operativo|sistema operativo]] con due o più processori omogenei e con una [[Memoria (informatica)#Memoria primaria|memoria principale]] centralizzata condivisa. Ciascun processore ha una propria cache che agisce come ponte tra il processore e la memoria principale. La connessione è fatta usando un [[bus di sistema]] (system bus) o un [[#Coerenza della Cache Directory-based - Message-passing|crossbar]] (xbar, connessioni incrociate)<ref name="AMD Opteron" /> o un mix dei due precedenti sistemi, bus per gli indirizzi e [[#Coerenza della Cache Directory-based - Message-passing|crossbar]] per i dati (data crossbar)<ref name="Crossbar dati">Multi-processor system with shared memory - http://www.freepatentsonline.com/5701413.html</ref><ref>Method for transferring data in a multiprocessor computer system with crossbar interconnecting unit - http://www.google.it/patents/EP0923032A1?cl=en</ref><ref>Specification and Verification of the PowerScale Bus Arbitration Protocol: An Industrial Experiment with LOTOS, Chap. 2, Pag. 4 – ftp://ftp.inrialpes.fr/pub/vasy/publications/cadp/Chehaibar-Garavel-et-al-96.pdf</ref>.
 
Il limite maggiore di questi sistemi è il traffico e la larghezza di banda di memoria (quantità di dati al sec.). La banda può essere aumentata usando un largo canale dati, un crossbar dati, la [[memory interleaving]] e la transazioni di dati fuori ordine (out of order data transaction). Il traffico può essere ridotto usando una cache che agisce da filtro verso la memoria condivisa. La cache è quindi un elemento essenziale nei sistemi SMP con memoria condivisa (shared-memory). Nei sistemi multiprocessori con cache separate che condividono una memoria comune, uno stesso dato può essere memorizzato in più di una cache. Un problema di consistenza dati nasce quando un dato è modificato in una sola cache. Il protocollo per mantenere la coerenza fra processori multipli sono chiamati cache-coherency protocols (protocolli di coerenza delle cache). Generalmente nei sistemi SMP la coerenza si basa sull'approccio chiamato Bus watching (sorveglianza del bus) o Snoopy. In un sistema basato sullo snoopy, tutte le cache controllano le transazioni del bus per intercettare i dati e verificare se ha una copia nella propria cache. Vari [[#Vari Protocolli di Coerenza|protocolli di coerenza]] sono usati per mantenere la coerenza dei dati tra cache<ref name="Various protocols">Archibald, J. and Baer, J. 1986 - Cache coherence protocols: evaluation using a multiprocessor simulation model. ACM Trans. Comput. Syst. 4, 4 (Sep. 1986), 273-298) - http://ctho.org/toread/forclass/18-742/3/p273-archibald.pdf</ref>. Questi protocolli sono generalmente classificati solo in base agli stati della cache (da 3 a 5 e 7 o più) e le transazioni tra questi, ma questo potrebbe creare qualche confusione in quanto la definizione di un protocollo così fatta è incompleta perché mancante di importanti ed essenziali informazioni come le azioni che questi producono; queste azioni possono essere indotte dal processore o dal bus (esempio "intervention", "invalidation", "broadcasting", "updating", ecc.). Il tipo di azioni sono dipendenti dalle implementazioni adottate. Protocolli aventi gli stessi stati e le stesse regole di transazioni possono essere differenti, per es. il [[protocollo MESI]] con "shared intervention" (intervento su dati condivisi puliti (clean)) e MESI senza "intervention". Protocolli con stati differenti possono essere praticamente lo stesso protocollo, per esempio i protocolli 4-stati MESI [[#Protocollo Illinois (DEC)|Illinois]] e 5-stati MERSI (IBM) / MESIF-Intel sono solo una implementazione diversa delle stesse funzionalità. I più comuni protocolli sono il protocollo 4-stati conosciuto con l'acronimo MESI e il 5-stati MOESI. Altri protocolli usano gli stessi stati - o un sottoinsieme di questi - ma con differenti implementazioni e spesso con una differente ma equivalente terminologia. Con il termine MESI o MOESI, o un sottoinsieme di questi, generalmente si fa riferimento a una classe di protocolli piuttosto che a uno specifico protocollo.
 
==== Stati della cache ====