本文讲解对应于 Arm® Cortex®-M7 Processor Revision r1p2 Technical Reference Manual 的 About the Cortex-M7 processor 部分内容。
本文适用于有一定计算机组成原理或 IC电路基础的计算机硕士学生。使用相似概念介绍的方法进行描述讲解各个概念。
相似概念:同一级别的通用概念称为相似概念。
Overview - 总览
Summary - 总结
查阅提示
Arm Cortex-M7 内存接口支持三个主要内容,如需进一步了解可以查阅这三个内容或阅读本文:
- 紧耦合内存
- 哈佛结构
- AXI总线系列
Arm Cortex-M7支持以下几个部分(源自ARM原文,Harvard instruction是原文内容,指代Harvard architecture)
- Tightly-Coupled Memory (紧耦合内存) .
- Harvard instruction (哈佛结构)and data caches.
- AXI master (AXI总线系列) interface.
- Dedicated low-latency AHB-Lite peripheral (AHB总线系列[1]) interface.
- AHB-Lite slave (AHB总线系列[2]) interface that provides DMA access to TCMs.
Harvard instruction - 哈佛结构
在讲解TCM之前,我们先引入Harvard instruction(哈佛结构)部分。
Same Concepts - 相似概念
哈佛结构与计算机设备常见的冯·诺依曼结构相并列。
Why Harvard instruction - BG - 背景介绍
Art BG - 哈佛结构人文背景
哈佛Mark I的起源可以追溯到1935年,当时霍华德·艾肯在哈佛大学攻读物理研究生期间,构思建造一台强大且大规模的计算机。1937年11月,艾肯向IBM提出了自动计算机的提案。[4][5]该概念旨在解决高级数学问题。[6]经过IBM工程师的可行性研究,公司董事长托马斯·沃森(Thomas Watson)于1939年2月亲自批准了该项目及其资金。 工程学:哈佛Mark I - HandWiki
哈佛结构源自于 Mark I (不是马克一型坦克)。 作者是艾肯,目的是制作一台类似巴贝奇差分机的计算机器来处理自动化的复杂任务,由IBM进行了可行性研究和投资。
如下是关于冯·诺依曼结构的背景。
冯·诺依曼结构——又称冯·诺依曼模型或普林斯顿结构——是一种计算机体系结构,它基于《EDVAC 报告初稿》,[1]该报告由约翰·冯·诺依曼于 1945 年撰写,其中描述了他在宾夕法尼亚大学摩尔电气工程学院与约翰·莫奇利和J. 普雷斯珀·埃克特讨论过的设计方案。[1]: 1–4 [2] 冯·诺依曼结构 - HandWiki
冯·诺依曼结构基于EDVAC,后者是我们熟知的用于计算弹道导弹的计算设备(早期的计算机)。
Technic BG - 哈佛结构技术背景
本文没有找到具体设计历史的相关介绍,但是透过艾肯的思想推得他是想做一个自动化处理任务的机器。如果你找到了相关背景介绍,可以提供给本文 ;)
值得一提的是,哈佛结构比冯·诺依曼结构更为复杂,吞吐上更为强大,我们会在哈佛结构如何运作小节提及到这一点。
What Harvard instruction - Def - 哈佛结构是什么
我们以对比哈佛结构和冯·诺依曼结构的方式来讲解两者的不同
哈佛结构如下。

图a Harvard instruction (哈佛结构)
图来自Harvard Architecture - 维基百科
冯·诺依曼结构如下。

图b Von Neumann architure(冯·诺依曼结构)
图来自Von Neumann architecture - 维基百科
通过对比可以发现,冯·诺依曼结构的Memory Unit是一体的,而哈佛结构把Memory Unit 做了细分,划为指令型和数据型两种类型,这种区分让指令和数据存储在两种专有Memory Unit中。
How Harvard instruction - Strc - 哈佛结构如何运作
我们以冯·诺依曼瓶颈和哈佛瓶颈来对比哈佛结构和冯·诺依曼结构。
哈佛结构瓶颈如下。
在哈佛结构中,从指令存储器获取指令和从数据存储器读取/写入数据可以同时进行,无需等待指令完成。独立总线防止了数据和指令共享路径时出现的瓶颈。Harvard Architecture - GeeksforGeeks
冯·诺依曼结构瓶颈如下。
无论我们做什么来提升表现,都无法回避指令只能一次执行一个指令,且只能按顺序执行的事实。这两个因素都限制了CPU的能力。这通常被称为“冯·诺依曼瓶颈”。
看来哈佛结构的运作特征和它的具体的结构特征息息相关,不过这里指出一点,哈佛结构也是一次只能执行一个指令,冯·诺依曼瓶颈同样存在于经典一次一读的哈佛结构中。
由于前面提到哈佛结构可以并行访问指令和数据,因此,相对于冯·诺依曼结构,哈佛结构的优势在于它的访问的数据吞吐量更大(两个功能总线)。
TCM - 紧耦合内存
Same Concepts - 相似概念
TCM与Cache结构相并列。
Why TCM - BG - 背景介绍
Technic BG - TCM - 技术背景
紧耦合内存(TCM)提供低延迟的内存访问,内核可以直接使用,而不必承受缓存所固有的访问时间不可预测性。使用外部可缓存内存时,所请求的指令或数据可能位于缓存中,从而获得快速访问;也可能不在缓存中,需要以较慢的速度访问外部内存。而使用 TCM 时,访问时间是稳定一致的。ARM Cortex-R Series (Armv7-R) Programmer’s Guide
可见TCM的提出,类似于Cache,是为了解决访问速率不匹配问题的。
What TCM - Def - TCM是什么
TCM如下。
由于嵌入在 CPU 内部,TCM 具有哈佛架构(Harvard-architecture),因此存在 ITCM(指令 TCM)和 DTCM(数据 TCM)。DTCM 不能包含任何指令,但 ITCM 实际上可以包含数据。DTCM 或 ITCM 的最小大小为 4KiB,因此典型的最小配置是 4KiB ITCM 和 4KiB DTCM。Linux 中的 ARM TCM(紧耦合内存)处理 — Linux 内核文档
Cache如下。
在计算机领域,缓存是一种硬件或软件组件,用于存储数据,以便未来对该数据的请求能够更快地被送达;缓存中存储的数据可能是早期计算的结果,也可能是存储在其他地方的数据的副本。缓存命中发生在请求的数据中时,当请求的数据可以在缓存中被找到时,而缓存未命中则发生在无法找到时。缓存命中通过读取缓存数据来实现,这比重新计算结果或读取较慢的数据存储要快;因此,缓存中能处理的请求越多,系统执行速度越快。Cache (computing) - Wikipedia "Cache (computing) - Wikipedia")
额外做补充,对于ITCM,由于指令是提前规划好的,因此它往往存在于可读性硬件中,比如Flash,而DTCM作为数据通路,可以将其视为一个CPU和SRAM之间的数据快速通道。如图所示是ARM Cortex-M7的DTCM和ITCM布局。

图c DTCM and ITCM
图自Cortex M7手册。由图可见,ITCM和DTCM分别承担了哈佛结构中的Instruction Memory和Data Memory的作用。
How TCM - Strc - TCM结构如何运作
TCM运作方式如下。
TCM 接口设计用于连接 RAM 或类 RAM 的存储器,即 Arm 架构中的普通类型内存。处理器可以在这些接口上发出推测性读取访问。因此,通过 TCM 接口的读取访问可以重复,并且可以访问未初始化或不存在的内存位置。这意味着 TCM 接口通常不适合对读取敏感的设备,比如 FIFO。
Cache运作方式如下。
一组片上或片外的快速访问存储器位置,位于处理器和主存之间,用于存储和检索常用指令和/或数据的副本。这样做是为了大幅降低内存访问的平均速度,从而提升处理器性能。
CoreLink Level 2 Cache Controller L2C-310 Technical Reference Manual r3p2
TCM用于在CPU和RAM之间建立数据桥梁,由于我们前面提到它是一个RAM类型的存储,其控制形式是由软件自动控制的,而Cache是一种硬件自动控制的存储器件。
AXIM Bus- AXI系列[1]
Same Concepts - 相似概念
AXIM与传统系统总线是相似概念。
Why AXIM - BG - 背景介绍
Technic BG - AXIM - 技术背景
AXI属于AMBA系列的一个总线标准,早期的AMBA是为了解决SoC的总线布置问题而提出的。最早,AXI属于2003年发布的AMBA的一部分。而现在已经更新迭代多次。
What AXIM - Def - AXIM是什么
How AXIM - Strc - AXIM结构如何运作
AXI运作图如下。

图d CoreLink Level 2 Cache Controller L2C-310 Technical Reference Manual r3p2
传统系统总线运作如下。

图e William Stallings COADP 9th Edition
图f William Stallings COADP 9th Edition
AXI使用AXI Interconnect进行信号的优先级仲裁,使用了一种叫做交叉开关技术或多级互连结构技术,而传统总线技术往往采用轮询等方法。
交叉开关技术

图g 交叉开关技术