我可以在 Atmel SAM E70 处理器中使用 "Instruction" TCM 处理数据吗?

Can I use the "Instruction" TCM in an Atmel SAM E70 processor for data?

我正在为 Atmel SAME70Q21 微处理器开发应用程序。此 MCU 具有 ARM Coretex-M7 内核。

Atmel 已在此特定 MCU 变体中实现了 ARM TCM(紧耦合存储器)。 Atmel 似乎将 TCM 分为两部分 "ITCM"(指令 TCM)和 "DTCM"(数据 TCM)

我目前正在使用 DTCM 进行快速存储,通常来自中断。然而,目前ITCM实际上是关闭的,虽然TCM的配置系统仍然分配给它32K的数据。

我在想,既然我不是在ITCM之外执行,而且ram已经分配好了,我可以用ITCM来存储数据吗? Cortex-M7 是冯·诺依曼架构 CPU,我看到的架构图显示两个 TCM 内存段与 CPU.

有不同的接口

DTCM 和 ITCM 内存空间都在链接描述文件中 rw(要使用 ITCM,实际上您必须在运行时将代码重新定位到其中)。以这种方式(滥用)使用 ARM 内核对性能有何影响?

From the ARM Cortex-M7 Processor Technical Reference Manual Section 5.8 TCM Interfaces:

The Prefetch Unit (PFU) can fetch instructions from any of the TCM interfaces. The Load Store Unit (LSU) and the AHBS interface can each read and write data using any of the TCM interfaces. Best performance is achieved if code is placed in ITCM and data in DTCM. However, there is no functional restriction in which TCM, code and data is placed.

如果您没有将两者用于代码,那么可能不会影响性能,但是如果您 运行 TCM 中的代码,那么将它们分开有利于哈佛架构,允许并发指令获取和数据读取。 ITCM 的 64 位总线大概允许单周期指令和操作数获取 - 但我怀疑这对数据有任何好处 read/write.