本文源自《书香度年华》「ARM 架构专栏」,是一系列由浅入深、循序渐进的文章,文章之间有一定的前后关联性,所以按顺序阅读,建议收藏专栏。
目录
前言
提醒:全文10千字,预计阅读时长15分钟;
读者:对 Arm 架构感兴趣的小伙伴;
摘要:本文主要探讨了 Arm 架构的底层逻辑,介绍了Arm 架构的顶层设计;以处理器核心架构为基础,以系统架构为核心,以A系列和M系列架构为典型,对关键系统组件进行的通俗易懂的描述;本文提到的 Arm 架构不包含 GPU、NPU 架构;
关键词 :Arm架构、微架构、Cortex-A、Cortex-R、Cortex-M、Armv7、Armv8、Armv9、ISA、指令集、AMBA总线、Debug、Trustzone、虚拟化、EL-2、S-EL2、EL-1、S-EL1、操作系统、RISC-V;
相关推荐:如果你对结构、架构、系统等概念感兴趣,建议阅读架构与系统 ;
相关推荐:如果你对 Arm 公司感兴趣,建议阅读一文读懂Arm公司;
一、架构概述
1.1 冯诺依曼架构
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。
1.2 哈佛架构
哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。 与两个存储器相对应的是系统的4条总线:程序和数据的数据总线与地址总线。
1.3 Arm 架构
Arm 架构指的是 Arm 处理器的体系结构,包含中央处理单元(CPU)微架构、系统微架构、总线微架构、监控微架构、安全微架构、虚拟化微架构。
CPU微架构是指令集架构ISA的实现,包括 A32/T32、A64、NEON、VFP 等;
系统架构集包括中断控制器 GIC /系统内存管理器 SMMU /电源管理 PSCA/APCI 等;
总线微架构指的是 AMBA 微架构,包括 AHB、APB、AXI、CHI 等;
监控微架构包括调试 debug, 跟踪 trace ;
安全微架构包括 Trustzone、Realm、Crypto Cell、Crypto Island 等;
虚拟化微架构包括 VMSA、LPAE、EL-2、S-EL2 等。
表1 微架构系统
CPU 微架构 | 实现指令集架构的中央运算单元架构,A、R、M系列架构描述的就是 CPU 架构 |
系统微架构 | 为了处理器各个组件能够正常运行而存在的系统组件架构 |
总线微架构 | 将各个架构子系统连接起来的桥梁架构 |
监控微架构 | 对系统各个架构组件进行调试、跟踪 |
安全微架构 | 用来实现系统安全的架构集合 |
虚拟化微架构 | 用来对硬件资源进行虚拟化的架构集合 |
通常 指令集架构 ISA 的实现就叫做微架构,比如 Armv8.0-M 是 ISA, cortex-M33 是微架构
关于 ISA 和微架构,我在 RISC-V 架构科普解读 中写的比较清楚
二、架构图谱
2.1 三驾马车
Arm 架构根据应用场景不同分为 Cortex-A、Cortex-M、Cortex-R 三个架构家族;
Arm A-Profile 架构主要包括用于移动、 PC 端的 Cortex-A 系列处理器、用于云计算和机器学习的高性能 Neoverse 处理器以及和客户合作开发的高效能 Cortex-X 系列处理器,后面两个系列可能形成独立系列;
Arm M-Profile 架构主要包括 Armv6 的 M0,Armv7 的 Cortex-M3、 Cortex-M4 ,Armv8 的 Cortex-M23、 Cortex-M33 、 Cortex-M35 、Cortex-M55 、Cortex-M85,用于通用 MCU 、IoT 物联网领域;
Arm R-Profile 架构主要包括 Armv7 的Cortex- R4、 Cortex-R5、 Cortex-R7、 Cortex-R8,Armv8 的 Cortex-R52 、Cortex-R82,用于实时控制领域。
每个架构家族演进既有独立性又有关联性。目前 A 系列已经演化到 Armv9 版本、M 系列演化到 Armv8 版本、R系列演化到 Armv8 版本,下面是每个家族代表性处理器的架构。
2.2 六代传承
Arm 架构从 Armv4 到 Armv9 已经经历了六个版本;
目前市面活跃的是 Armv7、Armv8、Armv9 三个版本;
各个版本引进/废弃了不同的功能特性,比如 Armv6 的 Trustzone、 Armv7 的虚拟化,Armv8 的向量扩展 SVE、Armv9 的矩阵扩展 SME 等。
2.3 最新成员
2.3.1 大师兄 Cortex-A710
Cortex-A710 是 Cortex-A78 的增强版,Armv9-A 架构的大核架构,使用起来和上一代基本相同,新的微架构能获得更好的性能和更低的功耗;增强版的向量计算扩展架构 SVE2 支持;高级 SIMD&DSP 的 NEON 架构支持;兼容 VFPv3 向量浮点的 FPU 浮点架构。
图4 Cortex-A710 架构图
图片来源于网络如有侵权请私信删除
2.3.2 二师弟 Cortex-R82
Cortex-R82 是 R 系列最新的处理器,采用 Armv8 架构,包含 CoreSgiht MDT、GIC、FPU、TCM、SCU、ACP、AXI-S、AXI-M、LLPP、LLRAM 等微架构。
图5 Cortex-R82 架构图
图片来源于网络如有侵权请私信删除
2.3.3 小师妹 Cortex-M85
M85 是 Armv8.1-M 架构,包括 MPU、Helium、PMU、CP、FPU、TCM、AHB、DSP、ETM、PACBTI、APH 等微架构。
图6 Cortex-M85 架构图
图片来源于网络如有侵权请私信删除
2.4 架构宗亲
本文讲述的 Arm 架构指的是通用处理器架构,并不包含专业处理器。除了通用处理器,Arm 还有图形处理器和神经网络处理器。
2.4.1 图形处理器单元 GPU
图7 Mali GPU 路线图
图片来源于网络如有侵权请私信删除
GPU 架构分为传统的 Mali 架构和最新的 Immortalis 架构两个分支:
Mali目前一共四代,分别是 Utgard,Midgard,Bifrost 和 Valhall
Immortalis 是新推出的架构,以Immortalis-G715 为代表
更多GPU架构知识,参考 Arm GPUs
2.4.2 神经网络处理器单元 NPU
图8 Ethos NPU 家族
图片来源于网络如有侵权请私信删除
Ethos - NPUs 是Arm推出的基于神经网络的机器学习芯片架构,包括 U55、U65、 N78,
更多 NPU 知识,参考 Arm NPUs