我们目前正致力于1级缓存未命中,根据我们在PAPI的帮助下收集的结果,我开始认为我们可能做错了。
我目前正在使用Intel(R)Core(TM)i3-2370M CPU @ 2.40GHz的笔记本电脑上运行测试。 根据规范,L1数据高速缓存具有32KB大小,具有8路组关联性,并且线路具有64字节。因此我们得出结论,它有64组,每组有8行。
给定32位内存地址,我们认为它具有以下L1缓存中的放置结构:
TAG | line id | set id | line offset
---------- ------------ -------------
3 bits 6 bits 6 bits
这个假设是真的吗?
答案 0 :(得分:1)
不完全是。 “8路”意味着特定的存储器行可以在8个不同的高速缓存行中的任何一个中。所以你的缓存基本上由8个不同的64行组成,但是你的标签(假设这里是64位系统)实际上是52位(理论上,假设所有64位都被实现,这不是一成不变的), 6位用于标识行ID,然后是6位偏移量。高速缓存电路将在所有8个不同的集合中查找52位标签(通常并行,或尽可能接近它)。没有从地址分配的位来指定“方式”-ness ...