【简介】
S32K3XX 系列芯片是支持L1 的CACHE 特性。S32K3XX CACHE 的接口说明在之前的(https://forum.eepw.com.cn/thread/393569/1)文章中有介绍,memory 的的cache 属性配置是通过MPU来配置的,此贴中有介绍(https://forum.eepw.com.cn/thread/393625/1),本贴在此基础上进一步了解CACHE 的缓存策略的说明。
【缓存策略说明】
以下图片是S32K3XX 所属的ARMV7-M 架构中对CACHE 的描述,我们今天主题的MCU S32K3XX 在芯片设计时支支持L1的Cache.
对于Cache 的缓存策略可以分为读策略,写策略(cache hit/cache miss) 三种场景进行讨论。
读策略RA(read allocate):
对于读操作可配置的策略为(RA - read allocate),对于RA 属性的策略 意味着当读访问触发Cache Miss 时,会分配cache line 标记为valid 同时将K3 32byte 的cache lin 大小的数据从主存中加载到cache line 对这些数据的访问后续将cache hit 后续直接从cache 中读取数据。
写策略(cache hit)
WB(write back):
在写缓存命中时,仅更新数据缓存 同时cache line 标记为Dity 并且对主存的写入被推迟,指导cache line 被刷回到主存或者调用clean 清理刷回到主存。
WT(write through)
WT 策略在写缓存命中时,和WT 的区别为cache line 和主存的数据都会被更新。
写策略(cache miss)
WA(Write Allocate)
写时,在缓存未命中时,将分配一个缓存行(Cache Line),并加载来自主内存的数据。这意味着在处理器上执行 store类指令可能会导致发生突发读取,分配一个Cache Line,将数据从主内存加载到高速缓存CacheLine,然后再把store指令要写的数据写入缓存Cache Line,至于是否写入主存参考Write Policy (Cache hit case)。
No Write Allocate 策略
写时,在缓存未命中时,不会分配缓存行(Cache Line),数据将直接写入主内存。在这里,在读取时发生缓存未命中之前,不会缓存一行,然后使用 Read Allocate 策略加载缓存。
对于WA/RA 策略芯片文档中描述如下
WT/WB 策略描述如下
以下是ARM-V7M 中MPU_PASR 寄存器的策略配置说明,可以通过TEX/C/B 来配置memory 的缓存策略