Quando la CPU con una cache L1 fa una scrittura, ciò che normalmente accade è che (supponendo che la linea di cache che sta scrivendo sia già nella cache L1) la cache (oltre ad aggiornare i dati) segni quella cache linea sporca, e scriverà la linea con i dati aggiornati in un secondo momento.
Una possibile ottimizzazione sarebbe quella di far confrontare la cache con il contenuto della scrittura e il contenuto precedente della cache e, se sono uguali, non segnare la linea come sporca. Poiché questo potrebbe consentire alla cache di evitare di volta in volta rotture, posso vedere come il produttore della CPU potrebbe vedere come ciò valga le porte necessarie per fare questa logica.
La mia domanda: ci sono CPU che eseguono questa ottimizzazione?
Background sul motivo per cui ti sto chiedendo: sto scrivendo del codice che deve avere accesso costante alla memoria; cioè, qualcuno che è in grado di ascoltare il comportamento della cache non dovrebbe essere in grado di dedurre quello che sto facendo. Alcuni dei miei accessi sono scritture e, in modo ovvio, per implementare questo codice, molte delle scritture scriveranno gli stessi dati già presenti. Ho bisogno di fare le scritture perché, a seconda dei dati, i dati che sto scrivendo possono o meno essere uguali, ed è importante eseguire la stessa azione a prescindere. Se la CPU ottimizza in realtà non scrivendo un 'no-change-write', ciò significherebbe che il comportamento della cache varierebbe a seconda di cosa sto facendo, cosa che sovvertirebbe il mio obiettivo.
Quindi, c'è una CPU che tenta di ottimizzare le scritture in questo modo?