Wenn die CPU mit einem L1-Cache einen Schreibvorgang ausführt, wird normalerweise (vorausgesetzt, die Cache-Zeile, in die geschrieben wird, befindet sich bereits im L1-Cache) der Cache (zusätzlich zum Aktualisieren der Daten) diese Cache-Zeile als fehlerhaft markiert und wird die Zeile mit den aktualisierten Daten zu einem späteren Zeitpunkt ausschreiben.
Eine mögliche Optimierung wäre, den Cache den Inhalt des Schreibvorgangs mit dem vorherigen Inhalt des Caches vergleichen zu lassen. Wenn sie identisch sind, markieren Sie die Zeile nicht als verschmutzt. Da der Cache dadurch gelegentlich Rückschreibungen vermeiden kann, kann ich sehen, wie der CPU-Hersteller dies für die für diese Logik erforderlichen Gates als wertvoll erachtet.
Meine Frage: Gibt es CPUs, die diese Optimierung durchführen?
Hintergrund, warum ich frage: Ich schreibe Code, der konstanten Speicherzugriff benötigt; Das heißt, jemand, der das Verhalten des Caches abhören kann, sollte nicht ableiten können, was ich tue. Einige meiner Zugriffe sind Schreibvorgänge, und auf die offensichtliche Weise, diesen Code zu implementieren, schreiben viele Schreibvorgänge dieselben Daten, die bereits vorhanden sind. Ich muss die Schreibvorgänge ausführen, da die Daten, die ich schreibe, abhängig von den Daten möglicherweise dieselben sind oder nicht, und es wichtig ist, unabhängig davon dieselbe Aktion auszuführen. Wenn die CPU optimiert, indem sie kein "No-Change-Write" schreibt, würde dies bedeuten, dass das Verhalten des Caches abhängig von meiner Tätigkeit variiert, was mein Ziel untergraben würde.
Gibt es also eine CPU, die versucht, Schreibvorgänge auf diese Weise zu optimieren?