Когда ЦП с кешем L1 выполняет запись, обычно происходит следующее (при условии, что строка кеша, в которую он пишет, уже находится в кеше L1), кеш (в дополнение к обновлению данных) помечает эту строку кеша как грязную и через некоторое время напишет строку с обновленными данными.
Одной из возможных оптимизаций было бы сравнение кэша с содержимым записи и предыдущим содержимым кэша, и, если они совпадают, не помечайте строку как грязную. Поскольку это может позволить кэш-памяти избегать обратной записи в некоторых случаях, я вижу, как производитель ЦП может счесть это стоящим затратами, необходимыми для выполнения этой логики.
Мой вопрос: есть ли процессоры, которые выполняют эту оптимизацию?
Исходная информация о том, почему я спрашиваю: я пишу некоторый код, который должен иметь постоянный доступ к памяти; то есть кто-то, кто может слушать поведение кэша, не должен уметь делать то, что я делаю. Некоторые из моих обращений - это записи, и очевидным способом реализации этого кода многие записи будут записывать те же данные, которые уже есть. Мне нужно делать записи, потому что, в зависимости от данных, данные, которые я пишу, могут совпадать или не совпадать, и важно выполнять одно и то же действие независимо. Если ЦП оптимизирует, фактически не записывая «без изменений-записи», это будет означать, что поведение кэша будет зависеть от того, что я делаю, что подорвет мою цель.
Итак, есть ли процессор, который пытается оптимизировать записи таким образом?