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

存储未命中会影响性能?

如何解决存储未命中会影响性能?

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

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

谢谢。

解决方法

DRAM 延迟非常高,因此当缓存未命中存储停止其进度时,存储缓冲区很容易填满并停止向后端分配新的存储指令。存储缓冲区 decouple / insulate execution from cache misses 的能力受到其有限大小的限制。不过,它总是对一些有所帮助。您说得对,商店更容易隐藏缓存未命中延迟。

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

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

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