首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同缓存线大小的多级CPU缓存是如何工作的?

具有相同缓存线大小的多级CPU缓存是如何工作的?
EN

Stack Overflow用户
提问于 2017-11-15 01:07:36
回答 1查看 766关注 0票数 0

注意:我不确定StackOverflow是否是这个问题的正确位置,或者是否有一个更适合这个问题的StackExchange子

我在一本书中读到,对于多级CPU缓存,缓存行大小随级别的总内存大小而增加。当与相当简单的架构一起使用时,我可以完全不去想它是如何工作的(至少我认为是这样的)。然后我穿越了这个问题。问题是同一条高速缓存线的高速缓存存储器是如何协作的?

这就是我如何理解不同缓存线大小的缓存内存的工作方式。为了简单起见,让我们假设数据和指令没有不同的缓存,我们只有L1和L2缓存(L3和L4不存在)。如果L1的缓存行大小为64字节,L2为128字节,那么当我们在L2上有缓存缺失时,我们需要从主内存中获取所需的字节或单词,我们也会带来它最接近的字节或单词,以填充L2缓存行的128个字节。然后,由于处理器产生的对内存位置的引用的局部性,当在L2上丢失时,我们在L1上受到攻击的概率更高。但是,如果我们有相同的缓存线大小,这当然不会发生,用前面的算法。您能解释一下现代CPU如何利用具有相同行大小的缓存的一些简单的算法或实现吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 03:49:35

我在一本书中读到,对于多级CPU缓存,缓存行大小随级别的总内存大小而增加。

对于大多数CPU来说,情况并非如此。通常,所有缓存中的行大小都是相同的,但总大小会增加。通常也是相联性,但通常不像总尺寸那么大,所以集合的数量通常会增加。

多级缓存的点的目的是获得较低的延迟和较大的大小,而不需要一个既大又低的缓存(因为这在物理上是不可能的)。

HW预取到L2和/或L1是顺序读取工作良好的原因,而不是在缓存的out级别上更大的行大小。(在多核CPU中,私有L1/L2 +共享L3为访问共享域的内存工作负载提供私有延迟+带宽筛选器,但您可以使用L3作为一致性备份,而不是对核间共享的数据使用DRAM。)

在不同的缓存中拥有不同的行大小要复杂得多,特别是在多核系统中,缓存必须保持与其他使用MESI的一致性。在缓存之间围绕整个缓存进行传输很好。

但是,如果L1D行为64B,而私有L2 /共享L3行为128 B,那么一个核心上的负载可能会迫使L2缓存分别请求两个一半,以防分别对128 B行的两个部分进行修改。听起来非常复杂,并将更多的逻辑放入外部级缓存中。

(保罗·克莱顿对你的问题的回答指出,解决该问题的可能方法是对较大缓存线的两部分单独的有效性位,甚至单独的MESI一致性状态。但是仍然共享相同的标记,所以如果它们都是有效的,那么它们必须缓存相同128 B块的两部分。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47297826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档