ARM Cortex-M4 中是否有缓存?

Wel*_*riv 3 microcontroller caching arm cpu-cache cortex-m

我想知道ARM Cortex-M4内部是否有缓存。

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

你知道有什么文件可以澄清这一点吗?

wov*_*ano 10

简短的回答:

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

长答案:

据有关ARM的Cortex-M(维基百科页面链接)的指令和数据缓存是为Cortex-M架构的硅选项,并在Cortex-M4并没有包含这样的高速缓存。

可靠的来源是ARM 应用说明 321:ARM Cortex™-M 内存屏障指令编程指南( html / pdf ),其中指出:

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,但正如您在问题中已经指出的那样,这在核心之外。