Для кэша: размер 1 МБ, 4-полосная привязка и 32 ББ на блок.Объем памяти 16 МБ (поэтому phy_address - 24 бита) (см .: http://people.duke.edu/~tkb13/courses/ece250-2018su/homeworks/homework5.pdf - стр. 6)
Трассировка:
store 0xd53170 4 7d2f13ac *// instr phys_addr access_size data
*
load 0xd53172 1 *// instr phys_add access_size
*
Я написал c-программу, которая выполняла следующее:
./cachesim traces/example.txt 1024 4 32
Вывод:
store 0xd53170 miss
load 0xd53172 hit 13
Проблема или вопрос затронуты при второй загрузке.Ожидаемый результат - мисс.Тем не менее, моя программа видит это как хит.Мои программы видят промах в предыдущей строке.Заполняет кеш, а затем помечает этот блок как действительный.Таким образом, приводит к удару по нагрузке.Я получаю:
tag=0x35, set=0x98b, offset=0x10 (and 0x12 for load)
Дайте мне знать, если вы можете ответить, почему 2-я строка пропущена против.
Спасибо!