Как работает сопоставление адресов кэша?

Я начинаю изучать, как процессор кеш работает на фундаментальном уровне. Я смущен в одном пункте, хотя. Что происходит, когда процессор получает удар по двум адресам, которые имеют одинаковый тег и набор?

Допустим, у нас есть 64-байтовый кеш с 16-байтовыми блоками. Адреса 12-битные и используют прямое сопоставление. Тэг будет иметь 5 бит, набор будет иметь биты, а смещение будет иметь еще 5 бит. Если у нас есть два адреса 0x070 (0000 0111 0000 inn binary) и 0x068 (0000 0110 1000), мы видим, что тег (первые пять битов) одинаков, набор одинаков, отличается только смещение.

Насколько я понимаю, когда это "хит", компьютер учитывает только тег и набор. Так что, если оба адреса будут запускаться один за другим, в кеше будет "хит". Почему это работает? Разве оба адреса не содержат разную информацию и поэтому вызывают ошибку, если процессор рассматривает их как одно и то же? Или тогда процессор проверяет, совпадают ли значения, и затем продолжает работу?

Пожалуйста, дайте мне знать, если я что-то упустил или сделал ошибку.

1 ответ

Решение

Оба адреса находятся внутри одной строки кэша. ЦП работает со всей строкой кэша, используя младшие биты адреса, чтобы узнать, какие байты в строке кэша нужно изменить.

Другие вопросы по тегам