提问者:小点点

什么是存储缓冲区?


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


共1个答案

匿名用户

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

  1. CPU推测性地从X发出负载
  2. 在存储到Y之后,加载是按程序顺序进行的,但Y的地址尚未解析,因此存储不会继续。
  3. Y被解析,结果等于X。当存储到Y被解析时,该存储在加载队列中搜索已经发出的推测加载,但这些加载按程序顺序出现在存储到Y之后。它会注意到X的加载(等于Y),并且必须压缩那些从加载X开始并跟随的指令。

存储缓冲区是一种推测性结构,存在于CPU中,就像加载队列一样,用于允许CPU推测存储。写合并缓冲区是内存系统的一部分,本质上需要一堆小的写入(想想8字节的写入),并在将它们发送到内存系统之前将它们打包成一个更大的事务(64字节的缓存线)。这些写入不是推测性的,是一致性协议的一部分。目标是节省总线带宽。通常,写合并缓冲区用于对I/O设备的未缓存写入(通常用于显卡)。在I/O设备中,通常通过执行8字节写入来对设备寄存器进行大量编程,并且写入组合缓冲区允许这些写入在通过缓存传送时组合成更大的事务。