【问题标题】:what are writing policies of L1 and L2 cache in cortex-A53?cortex-A53中L1和L2缓存的写入策略是什么?
【发布时间】:2019-09-23 00:04:22
【问题描述】:

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

【问题讨论】:

    标签: arm cpu-architecture cpu-cache cortex-a


    【解决方案1】:
    • L1i:只读,因此没有写入策略。
    • L1d:回写、写分配(通常)
    • (可选)L2:回写(我假设)、L1d 的受害者缓存,或读取指令时的正常分配。

    正如预期的那样,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 缓存,而不是窥探其他内核之一。

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2013-01-20
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多