Gdy procesor z pamięcią podręczną L1 dokonuje zapisu, zwykle dzieje się tak, że (zakładając, że linia pamięci podręcznej, do której pisze, jest już w pamięci podręcznej L1) pamięć podręczna (oprócz aktualizacji danych) oznacza tę linię pamięci jako brudną , i wypisze wiersz ze zaktualizowanymi danymi w późniejszym czasie.
Jedną z możliwych optymalizacji byłoby porównanie pamięci podręcznej z treścią zapisu i poprzednią zawartością pamięci podręcznej, a jeśli są takie same, nie zaznaczaj linii jako brudnej. Ponieważ może to pozwolić pamięci podręcznej na uniknięcie czasami zapisów zwrotnych, widzę, jak producent procesora może uznać to za warte bramek potrzebnych do wykonania tej logiki.
Moje pytanie: czy są procesory, które przeprowadzają tę optymalizację?
Tło, dlaczego pytam: piszę kod, który musi mieć stały dostęp do pamięci; to znaczy, ktoś, kto jest w stanie wsłuchać się w zachowanie pamięci podręcznej, nie powinien być w stanie wydedukować tego, co robię. Niektóre z moich dostępów to zapisy i w oczywisty sposób, aby wdrożyć ten kod, wiele zapisów będzie zapisywać te same dane, które już tam są. Muszę robić zapisy, ponieważ w zależności od danych dane, które piszę, mogą, ale nie muszą być takie same, i ważne jest, aby wykonać tę samą akcję niezależnie od tego. Jeśli procesor optymalizuje się, nie pisząc „zapisu bez zmian”, oznaczałoby to, że zachowanie pamięci podręcznej będzie się różnić w zależności od tego, co robię, co podważyłoby mój cel.
Czy jest więc procesor, który próbuje zoptymalizować zapis w ten sposób?