【发布时间】:2019-09-23 00:04:22
【问题描述】:
Cortex-A53 处理器有 1 到 4 个内核,每个内核都有一个 L1 内存系统和一个共享的 L2 缓存。
【问题讨论】:
标签: arm cpu-architecture cpu-cache cortex-a
Cortex-A53 处理器有 1 到 4 个内核,每个内核都有一个 L1 内存系统和一个共享的 L2 缓存。
【问题讨论】:
标签: arm cpu-architecture cpu-cache cortex-a
正如预期的那样,ARM 使用带有 write-allocate 的回写缓存。这是几乎所有东西的标准设计,因为它适用于大多数 CPU 用例。
我没有为 L2 找到明确的确认,只有 L1d,但如果最后一级缓存是直写的,那就太奇怪了。存在具有直写内部缓存的设计(例如,具有小型写入组合缓冲区的 AMD Bulldozer 系列)。但是写通 L2 没有什么意义。
cortex-a53 cache policy 的快速 google 发现这是最热门的
ARM Cortex-A53 MPCore 处理器技术参考手册
Home > 一级内存系统 > 缓存行为 > Data cache coherency
L1d 使用 MOESI 实现缓存一致性,允许在 L1d 缓存之间直接传输“脏”行。
读取分配模式
L1 数据缓存仅支持回写策略。它通常在读取未命中或写入未命中时分配缓存行,但您可以通过更改内部缓存分配提示来更改此设置在页表中。
但是,在某些情况下不希望在写入时进行分配,例如执行 C 标准库 memset() 函数将大块内存清除为已知值。
所以显然它支持整个缓存行的不分配写入,基本上是一个缓存绕过 memset,可能类似于 x86 上的 NT 存储。 (除了 ARM 总是弱排序的,而 x86 需要特殊指令来使存储弱排序以及缓存绕过。)
二级记忆系统>Optional integrated L2 cache
可选集成的 L2 可配置缓存大小为 128KB、256KB、512KB、1MB 和 2MB。
数据仅在从 L1 内存系统逐出时分配给 L2 缓存,而不是在首次从系统中获取时分配给 L2 缓存。此规则的唯一例外是标记有内部瞬态提示的内存,或非临时加载,请参阅非临时加载,它们只分配给 L2 缓存。 L1 缓存可以从系统中预取数据,而不会从 L2 缓存中逐出数据。
指令在从系统获取时分配到二级缓存,并且在维护操作期间可能会失效。
L2 缓存是 16 路组关联的。 L2 缓存标签与 SCU 重复标签并行查找。如果 L2 标记和 SCU 重复标记都命中,则读取会优先访问 L2 缓存,而不是窥探其他内核之一。
【讨论】: