caching - 为什么现代处理器中的集合缓存关联性是 8 路集合关联性?

标签 caching intel cpu-architecture cpu-cache amd-processor

8 路集缓存关联性有什么我看不到的特别优势吗?

最佳答案

请注意 Ice Lake bumps that up to 12-way, 48kiB (为每个集合添加更多方法,相同的索引)。 8-way 并没有什么神奇之处。以前的 AMD 设计,如 K8 和 Bulldozer,试验了不同的 L1d 和 L1i 几何结构,如 64k/2-way。 (虽然不如英特尔的 16k/4 路和 32k/8 路成功。)

对于 L1d/L1i 缓存,给定 x86 的 4k 页面,8 路允许 32k 缓存成为无别名的 VIPT ( see this )。 32kiB 是一个很好的 2 次幂“最佳点”,它足够小以提高命中率,但又足够大且关联性足够高,如果您想避免需要额外的技巧来避免混叠,则 8 向是最小关联性.

参见 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-way 也是“足够”的联想,例如数组上的大多数循环的总输入和输出流少于 8 个(如果它们来自页面对齐数组中的相同偏移量,它们将在 L1d 中相互混淆),而且拥有更多循环是一个已知问题。 (不同访问的某些形式的 4k 别名也是软件大多试图避免的已知问题。)

另请注意,SKL 的 256k L2 缓存仅为 4 路关联,而 SKX 的 1MiB 16 路 L2。 (Skylake L2 cache enhanced by reducing associativity?)。 L3 缓存通常超过 8 路关联,但我猜你说的是 L1d/L1i 缓存。

关于caching - 为什么现代处理器中的集合缓存关联性是 8 路集合关联性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64797760/

相关文章:

x86 - 为非核心频率和缓存分配技术设置封装范围的 MSR

caching - OpenCL 缓冲区缓存行为

java - 缓存 header 拦截器不执行任何操作 - struts2

c - 链接时跳过不兼容错误

caching - 如何计算三级缓存的有效 CPI

c - 一个人的补充是一个现实世界的问题,还是一个历史问题?

php - Yii::如何使用 CDbCriteria 作为缓存依赖

android - 请求不是从 android 应用发出的,设置了 max-age

python - undefined symbol : __intel_sse2_strcpy

assembly - 了解intel汇编中的%rip注册