首页 文章

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

提问于
浏览
1

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

  • 一个32字节的逐出缓冲区

  • 一个4项,64位合并存储缓冲区

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

  • "eviction buffer"用于在将被驱逐的行写入RAM之前保存它们

  • "merging store buffer"用于在将数据写入RAM之前保存数据

我猜“驱逐缓冲区”仅用于回写策略,而“合并存储缓冲区”仅用于直写策略,但我不确定该假设 .

谢谢,对不起我的基本英语 .

2 回答

  • 2

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

    根据Wikipedia's write buffer,直写高速缓存不需要驱逐缓冲区 . 合并存储缓冲区实际上不是缓存功能,可以看作是完全不同的实体 . 但它与内存访问优化(如缓存)有关,并且位于同一功能块中 .

  • 1

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

    驱逐缓冲区位于缓存和内存之间(或者可能是下一个缓存级别);它的目标只是成为缓存线被逐出缓存的临时存储,这样缓存就可以重用现在未分配的线,而不必等待确认告知整行已写入内存 .

相关问题