Коли процесор із кешем L1 робить запис, звичайно відбувається таке (якщо припустити, що лінія кеша, до якої він пише, вже є в кеші L1) кеш (крім оновлення даних) позначає цю кешову лінію як брудну , і буде виписати рядок із оновленими даними пізніше.
Однією з можливих оптимізацій було б, щоб кеш порівнював вміст запису та попередній вміст кешу, і якщо вони однакові, не позначайте рядок як брудний. Оскільки це може дозволити кеш-пам'яті уникати повторних записів, я можу побачити, як виробник процесора може вважати це вартістю браму, необхідної для виконання цієї логіки.
Моє запитання: чи є процесори, які виконують цю оптимізацію?
Передумови, чому я запитую: я пишу якийсь код, який повинен мати постійний доступ до пам'яті; тобто хтось, хто вміє слухати поведінку кеша, не повинен мати змогу виводити те, що я роблю. Деякі мої звернення - це записи, і, очевидно, для реалізації цього коду, багато записів будуть писати ті самі дані, які вже є. Мені потрібно робити записи, тому що, залежно від даних, дані, які я записую, можуть бути або не бути однаковими, і важливо виконувати ті самі дії незалежно. Якщо центральний процесор оптимізує насправді не записуючи "без зміни запису", це означатиме, що поведінка кешу буде змінюватися залежно від того, що я роблю, що підриває мою мету.
Отже, чи є процесор, який намагається оптимізувати запис таким чином?