微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在现代处理器8路集关联中设置缓存关联?

如何解决为什么在现代处理器8路集关联中设置缓存关联?

我看不到的8方式设置缓存关联性有什么特别的优势吗? (如果这是一个愚蠢的问题,也要事先道歉。)

解决方法

请注意,Ice Lake bumps that up to 12-way,48kiB(向每个集合添加更多方式,相同的索引编制)。 8路没有什么特别的魔术。以前的AMD设计,例如K8和Bulldozer,都尝试了不同的L1d和L1i几何形状,例如64k / 2路。 (不过,比英特尔的16k / 4-way和32k / 8-way少成功。)

对于L1d / L1i高速缓存,在给定x86的4k页面的情况下,8路允许32k高速缓存成为VIPT,而不会出现别名。 32kiB是2的幂次幂“最佳点”,它足够小而又快,但又足够大且具有足够的关联性,可以实现良好的命中率;如果您想避免需要更多的技巧来避免混叠,则8联是最小的关联性

有关see this的详细信息,请参见Why is the size of L1 cache smaller than that of the L2 cache in most of the processors?(因为无法构建L2或L3大小的大型缓存,以及延迟和我们需要/想要的L1读/写端口的数量,以及尝试将是一种浪费电力预算的坏方法)。另请参见Which cache mapping technique is used in intel core i7 processor?


8路也是关联的“足够”,例如大多数数组循环的总输入和输出流少于8个(如果它们来自页面对齐数组中相同的偏移量,则它们在L1d中彼此混叠),而这又是一个已知的问题。 (而且不同访问的某些形式的4k别名也是软件通常试图避免的已知问题。)

还请注意,SKL的256k L2高速缓存仅是4路关联的,而SKX的1MiB 16路L2则是这种方式。 (Skylake L2 cache enhanced by reducing associativity?)。而且L3缓存通常不止8位关联,但我猜您在谈论L1d / L1i缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。