Quando la CPU con una cache L1 esegue una scrittura, ciò che accade normalmente è che (supponendo che la riga della cache su cui sta scrivendo sia già nella cache L1) la cache (oltre all'aggiornamento dei dati) contrassegna tale riga come sporca e scriverà la riga con i dati aggiornati in un secondo momento.
Una possibile ottimizzazione sarebbe quella di far confrontare la cache tra il contenuto della scrittura e il contenuto precedente della cache e, se sono uguali, non contrassegnare la riga come sporca. Poiché ciò potrebbe consentire alla cache di evitare riscritture in alcune occasioni, posso vedere come il produttore della CPU potrebbe considerare questo valore degno delle porte necessarie per fare questa logica.
La mia domanda: ci sono CPU che eseguono questa ottimizzazione?
Background sul perché sto chiedendo: sto scrivendo del codice che deve avere accessi di memoria costanti; cioè, qualcuno che è in grado di ascoltare il comportamento della cache non dovrebbe essere in grado di dedurre ciò che sto facendo. Alcuni dei miei accessi sono scritture e, nel modo ovvio per implementare questo codice, molte scritture scriveranno gli stessi dati che sono già lì. Devo fare le scritture perché, a seconda dei dati, i dati che sto scrivendo possono essere o meno gli stessi, ed è importante eseguire la stessa azione a prescindere. Se la CPU si ottimizza non effettivamente scrivendo una "scrittura senza modifiche", ciò significherebbe che il comportamento della cache varierebbe a seconda di quello che sto facendo, il che sovvertirebbe il mio obiettivo.
Quindi, c'è una CPU che cerca di ottimizzare le scritture in questo modo?