谁能解释什么是加载缓冲区以及它与失效队列有何不同。以及存储缓冲区和写入组合缓冲区之间的区别?
保罗·E·麦肯尼 (Paul E Mckenny) 的论文http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf很好地解释了存储缓冲区和失效队列,但遗憾的是没有讨论写入组合缓冲区
无效队列更像是存储缓冲区,但它是内存系统的一部分,而不是 CPU。基本上,它是一个跟踪失效并确保它们正确完成的队列,以便缓存可以取得缓存行的所有权,以便可以写入该行。加载队列是一种推测结构,用于跟踪乱序处理器中正在进行的加载。例如,可能会发生以下情况
- CPU 推测性地从 X 发出负载
- 该负载按程序顺序排列after存储到 Y,但 Y 的地址尚未解析,因此存储不会继续。
- Y 被解析,结果等于 X。当 Y 的存储被解析时,该存储在加载队列中搜索已发出的推测加载,但这些加载按程序顺序出现在 Y 的存储之后。它将注意到 X 的加载(等于 Y),并且必须压缩以加载 X 开始及其后的指令。
存储缓冲区是存在于 CPU 中的推测结构,就像加载队列一样,用于允许 CPU 推测存储。写入组合缓冲区是内存系统的一部分,本质上是接受一堆小写入(例如 8 字节写入)并将它们打包成单个较大的事务(64 字节缓存行),然后再将它们发送到内存系统。这些写入不是推测性的,而是一致性协议的一部分。目标是节省总线带宽。通常,写入组合缓冲区用于对 I/O 设备(通常用于显卡)的未缓存写入。在 I/O 设备中,通常通过执行 8 字节写入来对设备寄存器进行大量编程,并且写入组合缓冲区允许这些写入在通过缓存传送时被组合成更大的事务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)