Как работает сопоставление адресов кэша?
Я начинаю изучать, как процессор кеш работает на фундаментальном уровне. Я смущен в одном пункте, хотя. Что происходит, когда процессор получает удар по двум адресам, которые имеют одинаковый тег и набор?
Допустим, у нас есть 64-байтовый кеш с 16-байтовыми блоками. Адреса 12-битные и используют прямое сопоставление. Тэг будет иметь 5 бит, набор будет иметь биты, а смещение будет иметь еще 5 бит. Если у нас есть два адреса 0x070 (0000 0111 0000 inn binary) и 0x068 (0000 0110 1000), мы видим, что тег (первые пять битов) одинаков, набор одинаков, отличается только смещение.
Насколько я понимаю, когда это "хит", компьютер учитывает только тег и набор. Так что, если оба адреса будут запускаться один за другим, в кеше будет "хит". Почему это работает? Разве оба адреса не содержат разную информацию и поэтому вызывают ошибку, если процессор рассматривает их как одно и то же? Или тогда процессор проверяет, совпадают ли значения, и затем продолжает работу?
Пожалуйста, дайте мне знать, если я что-то упустил или сделал ошибку.
1 ответ
Оба адреса находятся внутри одной строки кэша. ЦП работает со всей строкой кэша, используя младшие биты адреса, чтобы узнать, какие байты в строке кэша нужно изменить.