首页 > 解决方案 > 商店失误影响业绩?

问题描述

我们知道,脏数据不会立即写回 RAM,而是隐藏在存储缓冲区中,然后在时间允许的情况下稍后再写回 RAM。此外,存储转发技术,如果您在将值刷新到缓存/内存之前对同一核心上的同一位置执行后续 LOAD,则存储缓冲区中的值将被“转发”,您将获得的值刚刚存储。这可以与缓存访问并行完成,因此不会减慢速度。

我的问题是 - 在存储缓冲区和存储转发的帮助下,存储未命中不一定需要处理器(对应的核心)停止。因此,存储未命中不会影响总缓存未命中延迟,对吧?

谢谢。

标签: cachingmemory-managementcpu-architecturecpu-cache

解决方案


DRAM 延迟非常高,因此当缓存未命中存储停止其进程时,存储缓冲区很容易填满并停止将新存储指令分配到后端。存储缓冲区将执行与缓存未命中分离/隔离的能力受到其有限大小的限制。不过,它总是对一些人有所帮助。你是对的,商店更容易隐藏缓存未命中延迟。

对于像 x86 的 TSO 这样的强有序内存模型来说,停止和填满存储缓冲区更多的是一个问题:存储只能按程序顺序从存储缓冲区提交到 L1d 缓存,因此任何缓存未命中的存储都会阻塞存储缓冲区的进度,直到RFO(读取所有权)完成。尽早启动 RFO(在存储到达存储缓冲区的提交端之前,例如在退休时)可以通过在数据需要到达之前让 RFO 运行来隐藏一些这种延迟。

可以将连续存储到同一高速缓存行中的数据合并到一个缓冲区中,当数据从 RAM(或从另一个拥有所有权的内核)到达时,这些缓冲区可以让它们一次全部提交。有一些证据表明,英特尔 CPU 在不违反内存排序规则的有限情况下确实做到了这一点。


推荐阅读