Lorsque le CPU avec un cache L1 fait une écriture, ce qui se passe normalement est que (en supposant que la ligne de cache sur laquelle il écrit est déjà dans le cache L1) le cache (en plus de mettre à jour les données) marque cette ligne de cache comme sale , et écrira la ligne avec les données mises à jour ultérieurement.
Une optimisation possible serait que le cache compare le contenu de l'écriture et le contenu précédent du cache, et s'ils sont identiques, ne marquez pas la ligne comme sale. Parce que cela pourrait permettre au cache d'éviter les réécritures à l'occasion, je peux voir comment le fabricant de CPU pourrait voir cela comme valant les portes nécessaires pour faire cette logique.
Ma question: y a-t-il des CPU qui effectuent cette optimisation?
Contexte de la raison pour laquelle je demande: j'écris du code qui doit avoir un accès constant à la mémoire; c'est-à-dire que quelqu'un qui est capable d'écouter le comportement du cache ne devrait pas pouvoir déduire ce que je fais. Certains de mes accès sont des écritures, et de manière évidente pour implémenter ce code, beaucoup d'écritures consisteront à écrire les mêmes données qui sont déjà là. J'ai besoin de faire les écritures car, selon les données, les données que j'écris peuvent être identiques ou non, et il est important d'effectuer la même action malgré tout. Si le processeur optimise en n'écrivant pas réellement une `` écriture sans changement '', cela signifierait que le comportement du cache varierait en fonction de ce que je fais, ce qui renverserait mon objectif.
Alors, y a-t-il un processeur qui essaie d'optimiser les écritures de cette façon?