【问题标题】:What is the difference between eviction buffer and merging store buffer on ARM CPU?ARM CPU上的驱逐缓冲区和合并存储缓冲区有什么区别?
【发布时间】:2014-05-13 15:19:34
【问题描述】:

我使用带有两个 L1 缓存的 Cortex A9 CPU:一个用于数据,另一个用于指令。缓存策略可以是“回写”或“直写”。 Cortex-A9 Technical Reference Manual part "7.1. About the L1 memory system"表示数据L1缓存有:

  • 一个 32 字节的驱逐缓冲区
  • 4 条目、64 位合并存储缓冲区

我不明白这两个缓冲区之间的区别。在我看来:

  • “eviction buffer”用于在写入 RAM 之前保存脏的逐出行
  • “合并存储缓冲区”用于在将数据写入 RAM 之前保存数据

我猜“驱逐缓冲区”仅与回写策略一起使用,而“合并存储缓冲区”仅与直写策略一起使用,但我不确定这个假设。

感谢并为我的基本英语感到抱歉。

【问题讨论】:

标签: arm cpu-architecture cpu-cache cortex-a


【解决方案1】:

write-backwrite-through 的缓存策略仅适用于可缓存的访问。对于device or strongly ordered,必须在不进入缓存的情况下写入数据。对于 device 访问,合并存储缓冲区可用于在设备写入完成时临时保存数据。 CPU 可以去做其他事情。

根据Wikipedia's write bufferwrite-through 缓存不需要逐出缓冲区。 合并存储缓冲区 并不是真正的缓存功能,可以视为完全不同的实体。但它与内存访问优化(如缓存)有关,并且在同一个功能块中。

【讨论】:

    【解决方案2】:

    合并存储缓冲区位于 CPU 和缓存之间;它的目标是合并相邻的写入。例如,如果您执行一系列相邻的 8 位写入,这些写入将首先在合并缓冲区中累积,然后以更大的块和更少的缓存事务写入缓存。

    驱逐缓冲区位于缓存和内存之间(或者可能是下一个缓存级别);它的目标只是成为一个缓存行的临时存储空间,以便缓存行可以重用现在未分配的行,而无需等待确认通知整行已写入内存。

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2014-10-10
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2012-06-21
      • 1970-01-01
      • 2013-12-08
      相关资源
      最近更新 更多