cortex-A53 中 L1 和 L2 缓存的写入策略是什么?

-4 arm cpu-architecture cpu-cache cortex-a

Cortex-A53 处理器有 1 到 4 个内核,每个内核都有一个 L1 内存系统和一个共享的 L2 缓存。

Pet*_*des 5

  • L1i:只读所以没有写策略。
  • L1d:回写,写分配(通常)
  • (可选)L2:回写(我假设),L1d 的受害者缓存,或读取指令时的正常分配。

正如预期的那样,ARM 使用带写分配的回写缓存。这是几乎所有东西的标准设计,因为它适用于大多数 CPU 用例。

我没有找到对 L2 的明确确认,只有 L1d,但如果最后一级缓存是直写的,那将是非常奇怪的。存在具有直写内部缓存的设计(例如,具有小型写入组合缓冲区的 AMD Bulldozer 系列)。但是拥有直写 L2 没有什么意义。


一个快速的谷歌cortex-a53 cache policy发现这是最热门的

ARM Cortex-A53 MPCore 处理器技术参考手册
首页 > 一级内存系统 > 缓存行为 >数据缓存一致性

L1d 使用 MOESI 实现缓存一致性,允许在 L1d 缓存之间直接传输“脏”行。

读取分配模式

L1 数据缓存仅支持回写策略。 它通常在读取未命中或写入未命中时分配缓存线,尽管您可以通过更改页表中的内部缓存分配提示来改变这一点。

但是,在某些情况下不需要写入时分配,例如执行 C 标准库 memset() 函数以将大块内存清除为已知值。

所以显然它支持整个缓存行的无分配写入,基本上是一个缓存绕过的内存集,可能类似于 x86 上的 NT 存储。(除了 ARM 总是弱排序的,而 x86 需要特殊指令来使存储弱排序以及缓存绕过。)


二级缓存:

二级内存系统 >可选集成二级缓存

所述可选的集成L2配置高速缓存器尺寸是128KB,256KB,512KB,1MB,和2MB。

数据仅在从 L1 内存系统逐出时才会分配到 L2 缓存,而不是在首次从系统中获取时。此规则的唯一例外是标记有内部瞬态提示的内存,或非临时加载,请参阅非临时加载,它们仅分配给 L2 缓存。L1 缓存可以从系统预取数据,而不会从 L2 缓存中逐出数据。

从系统获取指令时,指令被分配到 L2 缓存,并且可以在维护操作期间失效。

L2 缓存是 16 路组关联的。L2 缓存标签与 SCU 重复标签并行查找。如果 L2 标记和 SCU 重复标记命中,则读取优先访问 L2 缓存,而不是窥探其他内核之一。