首页 > 解决方案 > cortex-A53中L1和L2缓存的写入策略是什么?

问题描述

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

标签: armcpu-architecturecpu-cachecortex-a

解决方案


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

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

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


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

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

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

读分配模式

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

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

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


二级缓存:

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

可选的集成 L2 可配置缓存大小为 128KB、256KB、512KB、1MB 和 2MB。

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

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

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


推荐阅读