ARM Cortex-M4 有缓存吗?

Is there a cache in the ARM Cortex-M4?

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

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

你知道有什么文件可以阐明这一点吗?

据我所知,没有为 Cortex-M4 内核定义缓存,official Arm documentation for Cortex-M4 中也没有提到缓存。但是,我知道许多基于 Cortex-M4 的微控制器都有缓存,有些只用于闪存加速,有些也用于访问 ram。使用紧耦合内存 (TCM) 而不是数据缓存也很常见,因为它们使程序具有更可预测的行为。

Cortex-M4 内部没有 'hidden' 缓存。没有文档支持这个,否则不会被隐藏。

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

简答:

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

长答案:

根据关于 ARM Cortex-M (link) 的维基百科页面,指令和数据缓存是 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 core 包含(相关)缓存。

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