Caching ARM Cortex-M4中是否有缓存?

Caching ARM Cortex-M4中是否有缓存?,caching,arm,microcontroller,cpu-cache,cortex-m,Caching,Arm,Microcontroller,Cpu Cache,Cortex M,我想知道手臂Cortex-M4内是否有缓存 我在技术参考手册中没有找到任何线索,但这是官方的还是隐藏的?我知道有些微控制器有一个高速缓存,但是它在总线和RAM之间,而不是在核心内部 您知道有任何文档对此进行了澄清吗?据我所知,没有为Cortex-M4 core定义缓存,本文档中未提及缓存。然而,我知道许多基于Cortex-M4的微控制器都有缓存,有些只用于闪存加速,有些用于访问ram。紧耦合内存(TCM)代替数据缓存也很常见,因为它们使程序具有更可预测的行为。Cortex-M4内部没有“隐藏”缓

我想知道手臂Cortex-M4内是否有缓存

我在技术参考手册中没有找到任何线索,但这是官方的还是隐藏的?我知道有些微控制器有一个高速缓存,但是它在总线和RAM之间,而不是在核心内部


您知道有任何文档对此进行了澄清吗?

据我所知,没有为Cortex-M4 core定义缓存,本文档中未提及缓存。然而,我知道许多基于Cortex-M4的微控制器都有缓存,有些只用于闪存加速,有些用于访问ram。紧耦合内存(TCM)代替数据缓存也很常见,因为它们使程序具有更可预测的行为。

Cortex-M4内部没有“隐藏”缓存。没有文档支持这一点,否则它就不会被隐藏


系统级缓存和TCM当然是具体实现的一个细节,因此MPU可以为不同的区域指定缓存策略。

简短回答:

不,ARM Cortex-M4内核中没有缓存

长答案:

根据维基百科关于ARM Cortex-M()的页面,指令和数据缓存是Cortex-M架构的硅选项,Cortex-M4不包括此类缓存

一个可靠的来源是手臂应用注321:手臂皮质™-M内存屏障指令编程指南(/),其中说明:

Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3和Cortex-M4处理器没有 任何内部高速缓存。然而,SoC设计可以集成系统级缓存

接着是:

注意:Cortex-M3和Cortex-M4处理器中有一个小型缓存组件,用于在指令获取期间加速闪存访问

此外,在同一应用说明的后面部分,它提到:

某些Cortex-M3和Cortex-M4设计可能具有特定于实现的程序 缓存以加速程序内存访问

因此,总而言之,ARM Cortex-M4核心不包含(相关)缓存


但是,建议检查您正在使用的实际微控制器的数据表。例如,NXP i.MX 7系列()确实包含一个带指令和数据缓存的Cortex-M4,但正如您在问题中已经指出的,这超出了内核。

他们可以有缓存,但它是特定于实现的,因此您不能总是假设有缓存。像ST这样的一些公司在闪存前面有自己的sorta隐形缓存,并且会选择不使用靠近cortex-m4的缓存。当然,也可能有例外。从arm文档开始很好,但也可以参考芯片供应商文档,因为应该有一个enable和刷新它的方法,这需要文档记录。好的,但我认为cortex M4是他自己实现的。我的意思是,它是用RTL语言描述的,并以它的形式交付给ARM客户。所以如果他们在某个地方集成了一个缓存,它就在每个皮质M4中。我在AMR文档中提到了M4和总线之间的写缓冲区,因此我认为如果他们没有提到缓存,那么它在任何地方都不存在。您可以在内核之外有一个系统级缓存,这对任何处理器都是正确的,即使在某些情况下是片外的(在某些情况下,您有值得使用的片外缓存)。但是arm的内核中没有缓存。TCM==单周期SRAM我猜?@marko TCM是一个附加组件,它的存在、实现和特性取决于设备。我不认为TCM是用来“代替数据缓存”的。TCM确实不需要缓存,但TCM价格昂贵,因此相对较小。大多数微控制器也支持其他存储器(SRAM、SDRAM、闪存),这就是缓存的相关之处。