ARM CPU上的逐出缓冲区和合并存储缓冲区之间的区别是什么?

ARM CPU上的逐出缓冲区和合并存储缓冲区之间的区别是什么?,arm,cpu-architecture,cpu-cache,cortex-a,Arm,Cpu Architecture,Cpu Cache,Cortex A,我使用一个Cortex A9 CPU,有两个L1缓存:一个用于数据,另一个用于指令。缓存策略可以是“回写”或“直写”。 所述数据一级缓存具有: 一个32字节逐出缓冲区 4项64位合并存储缓冲区 我不明白这两个缓冲区之间的区别。我认为: “逐出缓冲区”用于在写入RAM之前保存脏的逐出行 “合并存储缓冲区”用于在数据写入RAM之前保存数据 我猜“逐出缓冲区”仅用于写回策略,而“合并存储缓冲区”仅用于写通策略,但我不确定这一假设 感谢并抱歉我的基础英语 回写或直写的缓存策略仅适用于可缓存的访问

我使用一个Cortex A9 CPU,有两个L1缓存:一个用于数据,另一个用于指令。缓存策略可以是“回写”或“直写”。 所述数据一级缓存具有:

  • 一个32字节逐出缓冲区
  • 4项64位合并存储缓冲区
我不明白这两个缓冲区之间的区别。我认为:

  • “逐出缓冲区”用于在写入RAM之前保存脏的逐出行
  • “合并存储缓冲区”用于在数据写入RAM之前保存数据
我猜“逐出缓冲区”仅用于写回策略,而“合并存储缓冲区”仅用于写通策略,但我不确定这一假设

感谢并抱歉我的基础英语

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


根据,直写缓存不需要逐出缓冲区。合并存储缓冲区实际上不是一个缓存特性,可以看作是一个完全不同的实体。但它与内存访问优化(如缓存)有关,并且位于同一功能块中。

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


逐出缓冲区位于缓存和内存(或者可能是下一个缓存级别)之间;它的目标只是作为缓存线的临时存储,以便缓存可以重新使用现在未分配的缓存线,而不必等待整个缓存线已写入内存的确认。

我推荐这个不错的答案,并给出一些很酷的评论