什么是商店缓冲?

时间:2012-06-19 17:03:29

标签: architecture hardware intel cpu-architecture

任何人都可以解释什么是加载缓冲区以及它与失效队列的不同之处。以及存储缓冲区和写入组合缓冲区之间的区别? Paul E Mckenny http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf的论文很好地解释了存储缓冲区和失效队列,但不幸的是没有谈论写入组合缓冲区

1 个答案:

答案 0 :(得分:34)

无效队列更像是存储缓冲区,但它是内存系统的一部分,而不是CPU。基本上,它是一个队列,可以跟踪失效并确保它们正确完成,以便缓存可以获取缓存行的所有权,以便它可以写入该行。加载队列是一种推测结构,用于跟踪无序处理器中的飞行中负载。例如,可以发生以下情况

  1. CPU推测性地从X
  2. 发出负载
  3. 在存储之后,该程序已按程序顺序,但Y的地址尚未解析,因此商店无法继续。
  4. Y被解析,结果证明等于X.在解析商店到Y时,该商店在加载队列中搜索已发出的投机负载,但在程序中存储到Y之后出现订购。它会注意到X的负载(等于Y),并且必须从负载X开始并随后压缩这些指令。
  5. 存储缓冲区是一种存在于CPU中的推测结构,就像加载队列一样,用于允许CPU在存储上进行推测。写入组合缓冲区是存储器系统的一部分,实质上需要一堆小写入(想想8字节写入)并将它们打包到一个更大的事务(64字节高速缓存行)中,然后再将它们发送到存储器系统。这些写入不是推测性的,而是一致性协议的一部分。目标是节省总线带宽。通常,写入组合缓冲区用于对I / O设备(通常用于图形卡)的未缓存写入。在I / O设备中通常通过执行8字节写操作来对设备寄存器进行一系列编程,而写组合缓冲区允许将这些写操作通过缓存传送出更大的事务。