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

时间:2019-05-04 21:06:34

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

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

1 个答案:

答案 0 :(得分:2)

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

按预期,ARM将回写缓存与write-allocate一起使用。这是几乎所有内容的标准设计,因为它在大多数CPU用例中都能很好地工作。

我没有为L2(只有L1d)明确确认这一点,但是如果最后一级的缓存是直写的,那将是非常奇怪的。存在具有直写式内部高速缓存的设计(例如,带有小型写合并缓冲区的AMD Bulldozer系列)。但是使用直写L2毫无意义。


cortex-a53 cache policy的快速搜索引擎将其列为热门搜索

ARM Cortex-A53 MPCore处理器技术参考手册
主页> 1级内存系统>缓存行为> Data cache coherency

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

  

读取分配模式

     

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

     

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

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


L2缓存:

2级内存系统> Optional integrated L2 cache

  

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

     

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

     

从系统中获取指令时,指令会分配给L2缓存,并且在维护操作期间可以使指令无效。

     

L2缓存是16路设置关联的。 L2缓存标签与SCU重复标签并行查找。如果L2标签和SCU重复标签都命中,则读取优先于侦听其他内核之一来访问L2缓存。