第二章 ARM架构基础:从一家小公司到芯片帝国

说实话,我刚入行那会儿,ARM还只是英国剑桥一家不起眼的小公司。谁能想到,今天全球95%以上的智能手机、几乎所有的物联网设备,甚至苹果的M系列芯片,都离不开ARM架构。今天我就带大家好好捋一捋ARM的来龙去脉。

2.1 ARM公司简介:不造芯片的芯片巨头

ARM的全称是Advanced RISC Machines,成立于1990年。它有个很有意思的特点——自己不生产芯片。ARM只做一件事:设计IP核,然后授权给其他公司。

我当年第一次接触ARM时,也觉得奇怪。一家不造芯片的公司,凭什么能统治半导体行业?后来我明白了,这恰恰是ARM最高明的地方。

ARM的商业模式核心:

  • IP授权:把处理器设计蓝图卖给其他公司
  • 架构授权:允许客户基于ARM指令集自研内核
  • 版税收入:每卖出一颗芯片,ARM抽成1-2%

举个例子,苹果的A系列芯片、高通的骁龙系列、华为的麒麟系列,底层都是ARM架构。但每家都做了自己的优化。这就是ARM生态的魅力——你可以在ARM的框架下,做出自己的特色

2.2 ARM处理器架构演进:从ARMv1到ARMv9

ARM架构的演进,说白了就是一部「性能与功耗的博弈史」。我把它分成几个关键阶段:

架构版本 发布时间 位宽 核心特点
ARMv1 1985 32位 最早的ARM处理器,26位地址总线
ARMv4 1996 32位 引入Thumb指令集,ARM7TDMI大获成功
ARMv7 2005 32位 引入NEON、TrustZone,Cortex-A/R/M三线并行
ARMv8 2011 64/32位 引入AArch64,支持64位计算
ARMv9 2021 64位 强化安全、AI、可伸缩矢量扩展

这里有个小故事。我记得2011年ARMv8刚发布时,很多工程师都在抱怨:「32位够用了,搞什么64位?」结果后来移动设备内存突破4GB,大家才意识到ARM的远见。嗯,做架构设计,有时候就是要看得远一点。

2.3 ARMv7 vs ARMv8 vs ARMv9:核心差异对比

这三个版本,我挑几个关键点给大家讲透:

2.3.1 指令集的变化

ARMv7:纯32位,A32指令集。每条指令32位,简单粗暴。

ARMv8:引入AArch64,同时兼容AArch32。这意味着你可以跑32位的老程序,也能享受64位的大地址空间。

ARMv9:全面转向64位,32位兼容模式被弱化。我建议新项目直接上64位,别走回头路。

避坑指南:我曾经在一个项目中,为了兼容老代码保留了32位模式。结果发现,AArch32和AArch64的上下文切换开销很大,性能损失了约15%。后来我学乖了——新设计直接上64位,别犹豫

2.3.2 安全机制的升级

ARMv7引入了TrustZone,把系统分成「安全世界」和「非安全世界」。你想想看,指纹支付、人脸识别这些敏感操作,就是在安全世界里跑的。

ARMv8在TrustZone基础上,增加了更多的安全扩展。比如指针认证,能有效防止ROP攻击。

ARMv9则把安全提到了新高度——机密计算架构。说白了,就是你的数据在内存里是加密的,连操作系统都看不到。这对云计算、金融场景特别重要。

2.3.3 矢量计算能力

ARMv7的NEON是128位SIMD,做图像处理够用。

ARMv8的NEON升级到128位,但增加了双精度浮点支持。

ARMv9引入了可伸缩矢量扩展,长度可以从128位扩展到2048位。这对AI推理、科学计算是质的飞跃。

2.4 ARM Cortex系列处理器分类

ARM Cortex系列,我习惯把它分成三条线:

Cortex-A系列:Application,应用处理器

  • 面向高性能场景:手机、平板、服务器
  • 代表型号:Cortex-A76、Cortex-X2
  • 特点:乱序执行、多级缓存、支持MMU

Cortex-R系列:Real-time,实时处理器

  • 面向实时控制场景:汽车、工业、通信
  • 代表型号:Cortex-R52、Cortex-R82
  • 特点:低延迟中断、硬件虚拟化、支持TCM

Cortex-M系列:Microcontroller,微控制器

  • 面向嵌入式场景:IoT、传感器、电机控制
  • 代表型号:Cortex-M4、Cortex-M7、Cortex-M33
  • 特点:极低功耗、单周期乘法、嵌套中断

我举个例子帮你理解。你手里的手机,主芯片是Cortex-A系列。车里的ABS刹车系统,用的是Cortex-R系列。你家的智能灯泡,里面是Cortex-M系列。三条线各司其职,互不干扰。

注意:选型时千万别搞混。我曾经见过一个团队,把Cortex-M7用在需要跑Linux的项目上。结果发现M7没有MMU,跑不了Linux。最后只能推倒重来,白白浪费了三个月。记住:跑操作系统,必须用A系列

2.5 ARM架构核心逻辑图

下面这张图,是我自己总结的ARM架构演进与分类的核心逻辑。你仔细看看,就能明白ARM为什么能通吃从传感器到服务器的所有场景。

ARM架构演进与Cortex系列分类 ARMv7 2005 ARMv8 2011 ARMv9 2021 Cortex-A 应用处理器 手机 · 平板 · 服务器 乱序执行 · MMU · 多级缓存 Cortex-R 实时处理器 汽车 · 工业 · 通信 低延迟 · TCM · 硬件虚拟化 Cortex-M 微控制器 IoT · 传感器 · 电机 极低功耗 · 嵌套中断 ARM架构的核心设计哲学 1. 精简指令集:每条指令在一个周期内完成 2. 低功耗优先:从M系列到A系列,功耗始终是核心指标 3. 生态兼容:从ARMv7到ARMv9,软件可以平滑迁移 4. 授权模式:让全球芯片公司都能基于ARM做创新

这张图其实揭示了一个道理:ARM的成功,不是靠某一款处理器,而是靠一套完整的生态体系。从低功耗的M系列,到高性能的A系列,再到实时可靠的R系列,ARM用统一的指令集架构,覆盖了几乎所有的计算场景。

我个人觉得,ARM最厉害的地方在于——它让「一次编写,到处运行」在嵌入式领域变成了现实。你写的C代码,可以在M0上跑,也可以在A76上跑,只是性能不同而已。这种兼容性,是x86做不到的。

学习建议:如果你是初学者,我建议先从Cortex-M系列入手。买个STM32开发板,跑几个裸机程序,把ARM汇编、中断、外设这些基础打牢。然后再去啃Cortex-A,学习MMU、缓存一致性、多核调度这些高级内容。别一上来就搞A系列,容易劝退。

好了,ARM架构的基础就讲到这里。记住:ARM不是一家芯片公司,而是一个计算生态的构建者。理解了这一点,你才能真正用好ARM。


公众号:蓝海资料掘金营,微信deep3321