缓存模拟器::命中与未命中问题

时间:2019-01-04 05:35:26

标签: c caching simulator

对于以下高速缓存: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)

让我知道您是否可以回答为什么第二行是未命中还是命中。

谢谢!

1 个答案:

答案 0 :(得分:0)

该文件指出 “缓存是直写且不分配写的。”

这意味着在写未命中时,缓存中将不会发生任何事情。数据将被写入主内存中,但缓存中不会进行任何分配。

存储0xd53170未命中(转发到内存,在缓存中不分配任何内容)

加载0xd53172未命中(行未在缓存中分配,因此这是未命中)

可能您没有在模拟器中正确管理未命中的错误。