CPU体系(2):ARM Store Buffer

2022-12-30,,,,

本文主要翻译自 Arm Cortex-M7 Processor Technical Reference Manual r1p2 其中章节 Memory System / L1 caches / Store Buffer 。

Store Buffer

Cache中的数据,在写入memory或 AXIM 总线之前,先存放在store buffer中。store buffer有四个存储单元,每个存储单元由一个64bit数据存储及一个32bit地址存储组成。来自data-side的写请求都会存放在store buffer中,但有两个例外:写往TCM 或 AHBP接口的数据。

注:名词解释 浅谈嵌入式MCU CPU内核之ARM Cortex-M7内核高性能(Dual Issue ISA--双发指令)实现要点解析

AXIM :高性能内部总线互联矩阵。ARM Cortex-M7内核配备了ARM第4代的AMBA总线矩阵--AXIM,给MCU/SOC提供64-bit的存储器和外设总线互联能力,通过AXIM访问存储器(SRAM和Flash)和外设时可以配置内核的MPU使能I-Cache和D-Cache,从而加速访问,进一步提高系统效率。
AHBP :高性能外设接口。ARM Cortex-M7内核还为高性能低延迟的外设连接预留了一个32-bit的AHBP接口:通过该接口扩展的外设,读写访问时无需经过系统总线互联矩阵,从而保证了高性和低延迟。

Store buffer merging

    来自同一个cache line的写请求,被合并到同一个store buffer单元。store buffer写请求合并只适合于带有普通memory属性的写请求。
    如果是强内存序(怎么知道是强内存序??),或者是device memory属性的内存页,则不会发生store buffer写请求合并。
    遇到强内存序写或者device memory属性内存,会首先将store buffer中的数据全部写回,即清空了store buffer中的数据。

Store buffer 写请求转发

在指定条件下,store buffer会将写请求转给 Cache控制器,AXIM总线等(即跳过store buffer,交由cache控制器,AXIM总线)。

    比如针对 Non-Cacheable标记的数据,write-through 类型的cache,等操作,交由AXIM总线。

    比较难理解,不翻译

Store buffer draining

有些情况下,需要先等store buffer中的数据全部写回。有些情况下,需要等该单元的数据写回。

需要等全部的情形:

    cache维护操作;
    共享内存(Shared Memory)的独占操作;
    DMB, DSB指令;
    上面提到的强内存序地址,或device memory标记的数据。

ARM memory models

介绍了 devices memory等等。Armv8-A memory model

CPU体系(2):ARM Store Buffer的相关教程结束。

《CPU体系(2):ARM Store Buffer.doc》

下载本文的Word格式文档,以方便收藏与打印。