it.phhsnews.com


it.phhsnews.com / Quando la cache di una CPU viene risciacquata nella memoria principale?

Quando la cache di una CPU viene risciacquata nella memoria principale?


Se stai appena iniziando a imparare come funzionano le CPU multi-core, il caching, la coerenza della cache e la memoria, può sembrare un po ' un po 'di confusione all'inizio. Con questo in mente, il post di Q & A di SuperUser di oggi risponde alle domande di un curioso lettore.

La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte.

La domanda

Il lettore SuperUser CarmeloS vuole sapere quando una cache della CPU viene scaricata nella memoria principale:

Se ho una CPU con due core e ogni core ha la sua cache L1, è possibile che Core1 e Core2 entrambi memorizzano nella cache la stessa parte di memoria contemporaneamente? Se è possibile, quale sarà il valore della memoria principale se sia Core1 che Core2 hanno modificato i loro valori nella cache?

Quando la cache della CPU è tornata nella memoria principale?

La risposta

I contributori di SuperUser David Schwartz, sleske e Kimberly W hanno la risposta per noi. Innanzitutto, David Schwartz:

Se ho una CPU con due core e ogni core ha la sua cache L1, è possibile che Core1 e Core2 memorizzino entrambi nella stessa memoria contemporaneamente?

Sì, le prestazioni sarebbero terribili se questo non fosse il caso. Considera due thread che eseguono lo stesso codice. Vuoi quel codice in entrambe le cache L1.

Se è possibile, quale sarà il valore della memoria principale se sia Core1 che Core2 hanno modificato i loro valori nella cache?

Il vecchio valore sarà nella memoria principale, che non importa dal momento che nessuno dei due lo leggerà. Prima di espellere un valore modificato dalla cache, deve essere scritto in memoria. In genere, viene utilizzata una variante del protocollo MESI. Nell'implementazione tradizionale di MESI, se un valore viene modificato in una cache, non può essere presente in nessun'altra cache allo stesso livello.

Seguito dalla risposta di sleske:

Sì, con due cache cache la stessa regione di memoria può accadere ed è in realtà un problema che si verifica molto nella pratica. Esistono diverse soluzioni, ad esempio:

  • Le due cache possono comunicare per assicurarsi che non siano in disaccordo
  • È possibile avere una sorta di supervisore che controlla tutte le cache e le aggiorna di conseguenza
  • Ogni processore controlla le aree di memoria che ha memorizzato nella cache, e quando rileva una scrittura, getta la sua cache (ora non valida)

Il problema si chiama coerenza della cache e l'articolo di Wikipedia sull'argomento ha una buona panoramica del problema e delle possibili soluzioni.

E la nostra risposta finale da Kimberly W:

Per rispondere alla domanda nel titolo del tuo post, dipende da cosa è il protocollo di caching. Se è write-back, la cache verrà ripristinata nella memoria principale solo quando il controller della cache non ha altra scelta che mettere un nuovo blocco cache nello spazio già occupato. Il blocco che precedentemente occupava lo spazio viene rimosso e il suo valore viene riscritto nella memoria principale.

L'altro protocollo è write-through. In tal caso, ogni volta che il blocco della cache viene scritto a livello n , il blocco corrispondente al livello n + 1 viene aggiornato. È simile nel concetto di compilare un modulo con carta carbone sotto; tutto ciò che scrivi sopra è copiato sul foglio sottostante. Questo è più lento perché implica ovviamente più operazioni di scrittura, ma i valori tra le cache sono più coerenti. Nello schema write-back, solo la cache di livello più alto avrebbe il valore più aggiornato per un particolare blocco di memoria.


Hai qualcosa da aggiungere alla spiegazione? Audio disattivato nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.

Image Credit: Lemsipmatt (Flickr)


Come condividere le tue foto di iCloud con gli amici che non usano i prodotti Apple

Come condividere le tue foto di iCloud con gli amici che non usano i prodotti Apple

Stai attivamente condividendo le foto delle vacanze in un Photo Stream di iCloud quando qualcuno annuncia che non hanno un iPhone e non posso partecipare Cosa fai? Come ogni cosa Apple, la condivisione di foto iCloud è super semplice da usare quando tutti usano i prodotti Apple e anche di proprietà. Ciò significa che i tuoi amici con telefoni Android e simili non hanno intenzione di sfruttare l'esperienza di condivisione delle foto di iCloud.

(how-top)

Cloudflare lancia un nuovo server DNS incentrato sulla privacy, ma dovresti usarlo?

Cloudflare lancia un nuovo server DNS incentrato sulla privacy, ma dovresti usarlo?

Non erano passati troppi anni fa che i geek usavano sempre un server DNS personalizzato per accelerare il loro web la navigazione. Ora Cloudflare ne ha uno anche tu, ma dovresti usarlo? Prima di continuare, per chi non lo sapesse: DNS è come una rubrica del tuo browser per cercare l'indirizzo IP dei siti web a cui tenti di connetterti.

(how-top)