关于缓存:ARM Cortex-M4中是否有缓存?

Is there a cache in the ARM Cortex-M4?

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

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

您是否知道任何可以阐明这一点的文件?


简短答案:

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

长答案:

根据有关ARM Cortex-M(链接)的维基百科页面,指令和数据缓存是Cortex-M架构的芯片选项,而Cortex-M4不包含此类缓存。

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

The Cortex-M0, Cortex-M0+, Cortex-M1, Cortex-M3, and Cortex-M4 processors do not have
any internal cache memory. However, it is possible for a SoC design to integrate a system level cache.

然后是:

Note: A small caching component is present in the Cortex-M3 and Cortex-M4 processors to accelerate flash memory accesses during instruction fetches.

此外,稍后在同一应用笔记中也提到:

Some Cortex-M3 and Cortex-M4 designs might have an implementation specific program
cache to accelerate program memory accesses.

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

但是,建议您检查所使用的实际微控制器的数据表。例如,恩智浦i.MX 7系列(链接)确实包含带有指令和数据缓存的Cortex-M4,但是正如您已经在问题中指出的那样,这不在核心范围内。


据我所知,没有为Cortex-M4内核定义缓存,并且在Cortex-M4的官方Arm文档中未提及缓存。但是,我知道许多基于Cortex-M4的微控制器都具有缓存,其中一些仅用于闪存加速,其他也用于访问ram。使用紧密耦合的内存(TCM)而不是数据高速缓存也是很常见的,因为它们使程序具有更可预测的行为。


Cortex-M4内部没有\\'hidden \\'缓存。没有支持此操作的文档,否则它不会被隐藏。

系统级缓存和TCM当然是特定实现的详细信息,因此,MPU可以为不同区域指定缓存策略。