对于以下高速缓存:1MB大小,4路设置的assoc和每个块32B。 内存大小16MB(因此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)
让我知道您是否可以回答为什么第二行是未命中还是命中。
谢谢!
答案 0 :(得分:0)
该文件指出 “缓存是直写且不分配写的。”
这意味着在写未命中时,缓存中将不会发生任何事情。数据将被写入主内存中,但缓存中不会进行任何分配。
存储0xd53170未命中(转发到内存,在缓存中不分配任何内容)
加载0xd53172未命中(行未在缓存中分配,因此这是未命中)
可能您没有在模拟器中正确管理未命中的错误。