Arm 缓存内存和紧密耦合内存有什么区别

Arm 缓存内存和紧密耦合内存有什么区别,arm,cpu-cache,Arm,Cpu Cache,由于嵌入在CPU内,TCM具有 哈佛建筑,所以有一个ITCM(教学TCM) 和DTCM(数据TCM)。DTCM不能包含任何 指令,但ITCM实际上可以包含数据。 DTCM或ITCM的大小最小为4KB,因此 最小配置为4KB ITCM和4KB DTCM 看起来tcm和缓存有着相同的用途 没有。他们在解释中没有使用单词cache缓存使用访问模式来填充缓存中的数据。它有额外的硬件来跟踪备份地址,并且可能与其他系统实体(SMP)通信,以跟踪缓存线何时变脏(其他人已将某些内容写入主内存) “TCM”(紧耦

由于嵌入在CPU内,TCM具有 哈佛建筑,所以有一个ITCM(教学TCM) 和DTCM(数据TCM)。DTCM不能包含任何 指令,但ITCM实际上可以包含数据。 DTCM或ITCM的大小最小为4KB,因此 最小配置为4KB ITCM和4KB DTCM

看起来tcm和缓存有着相同的用途


没有。他们在解释中没有使用单词cache

缓存使用访问模式来填充缓存中的数据。它有额外的硬件来跟踪备份地址,并且可能与其他系统实体(SMP)通信,以跟踪缓存线何时变脏(其他人已将某些内容写入主内存)

“TCM”(紧耦合存储器)速度很快,可能是SRAM多管存储器,就像高速缓存一样。两者都有到CPU的快速专用连接。然而,实现TCM的开销远小于缓存。通常,TCM是在较低端(可能是Cortex-M)手臂设备上发现的


大多数CPU缓存都有一个锁定功能,使它们能够像TCM一样工作。但是,TCM不具备动态缓冲高使用率代码和数据的能力。正因为如此,TCM(和锁定缓存)可能更具确定性,这可能有助于硬实时应用程序。

这就是我发现的更简洁、更切题的地方

高速缓存采用片上存储器和控制逻辑实现。紧耦合存储器由片上存储器和专用连接实现

紧耦合内存在地址映射中具有固定的范围。缓存不存在于地址映射中(……它有点存在……只是不要将其视为物理内存),而是充当处理器和内存之间的中间层,以(希望)提供更高效的内存访问

紧耦合存储器具有确定的存取时间。通过缓存的访问是不确定的,因为数据将存在于缓存中(hit),或者必须从主存中获取数据(miss)

另一个

虽然两者都是访问速度非常快的内存,但与连接到全局Avalon矩阵的标准内存相比,缓存动态存储最近用于提高访问速度的数据/代码。每次需要访问内存时,处理器都会检查所需的数据是否已经存在于缓存中,或者必须从内存中新获取;与此同时,旧的未使用缓存数据正在不断地被新数据替换。
紧耦合内存也是一种快速访问内存,因为它利用一个专用端口,但它有静态内容:您可以决定需要什么,然后在链接器脚本中指定它。

TCM分配了地址空间,以便您可以在内存映射中找到它。您可以控制链接时已存储在那里的数据。只需将其视为一个正常的系统内存,其访问时间与缓存类似。通常,来自TCM的数据是不可缓存的

如果我们忽略双可配置缓存和TCM,缓存应该连接到总线接口(BIU)以连接外部内存,而TCM不是。原因是TCM本身就有原始数据。而缓存是外部内存内容的临时存储(为了提高速度)

我正在使用STM32F777II,我想知道如何强制链接器仅在TCM/CCM中存储一些指定的变量和结构,而不在常规RAM中?这取决于您使用的链接器。使用gnu ld,阅读关于哪个使用的地址,或仅使用
处指定地址。还取决于MMU或LMA/VMA问题。TCM也可由DMA外围设备解决。锁定的缓存可能允许这样做,但可能性较小。通常情况下,这取决于总线结构,因此任何SOC(无论哪种情况)都可能只支持有限的一组设备。许多SOC还具有“片上”RAM。这通常也是零等待状态内存。对于任何内存类型,“零等待”状态都是CPU可以使用的最快内存。这意味着CPU的“负载存储”阶段比计算部分花费的时间更少。一些Cortex-M系统同时具有I/D和TCM。这是“哈佛”体系结构,如果没有缓存,它将具有最大的优势。因此,请阅读数据表,了解TCM在系统中的具体操作;但它与回答中提到的
缓存
不同。