附录 D RISC 架构综述 (A Survey of RISC Architectures)
核心结论
-
桌面 / 服务器 RISC(§D.2-D.11):Alpha / MIPS-64 / PA-RISC / PowerPC / SPARC v9——共同特点 32 寄存器、load / store、定长指令、简单寻址。
-
嵌入式 RISC(§D.12-D.16):ARM / Thumb / SuperH / M32R / MIPS-16——共同特点 16/32-bit 混合、Thumb 指令压缩、低功耗。
-
RISC vs CISC:RISC 简单指令 + 大量寄存器 + 流水线友好;CISC 复杂指令 + 少量寄存器 + 减少指令数。
-
ARM 特色(§D.12):条件执行(几乎所有指令都可条件执行)+ 桶形移位器 + 链接加载 / 存储。
-
Thumb 指令压缩(§D.13):16-bit 子集 ISA 用于代码密度敏感的嵌入式场景。
-
共同点:所有 RISC 用 32 寄存器(除 PA-RISC / SPARC 有 register window);load / store 架构;定长 32-bit 指令。
|
本章主旨
附录 D 是"ISA 综述"——把第 2 章的 LEGv8 与真实商业 ISA 对比。读者应能识别不同 RISC 的共同设计原则(load / store、定长指令、大寄存器堆)与各自特色(ARM 条件执行、MIPS 简洁、SPARC register window)。理解 RISC 演进史才能理解为何现代 ARM 主导嵌入式、x86 主导桌面 / 服务器。 |
一、核心概念
本章围绕 5 个核心概念展开:RISC 设计哲学 → 桌面 / 服务器 RISC → 嵌入式 RISC → ARM 特色 → Thumb 压缩。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
RISC 设计哲学 |
简单指令 + 大寄存器堆 + load/store + 定长指令 + 流水线友好。 |
§D.2;1980s 革命性思想,影响 ARM / MIPS / RISC-V / SPARC。 |
桌面 / 服务器 RISC |
Alpha / MIPS-64 / PA-RISC / PowerPC / SPARC v9;高性能通用计算。 |
§D.3-D.11;曾与 x86 竞争;现大多退出桌面市场(被 x86 / ARM 取代)。 |
嵌入式 RISC |
ARM / Thumb / SuperH / M32R / MIPS-16;低功耗 / 低成本 / 代码密度优先。 |
§D.12-D.16;ARM 主导手机 / IoT / 嵌入式(每年出货数十亿芯片)。 |
ARM 特色 |
条件执行(几乎所有指令都可条件执行)+ 桶形移位器 + 链接加载 / 存储。 |
§D.12;降低分支开销、统一移位延迟;ARM Cortex 进一步简化。 |
Thumb 指令压缩 |
16-bit 子集 ISA;代码密度敏感场景(IoT / 移动);Thumb-2 混合 16/32-bit。 |
§D.13;现代 ARM 默认 Thumb-2(兼顾性能与密度)。 |
二、详细笔记
2.1 RISC 设计哲学 (RISC Design Philosophy)
What:RISC(Reduced Instruction Set Computer)= 简单指令 + 大量寄存器 + load/store 架构。
Why:RISC 让 CPU 设计更简单、流水线更高效、功耗更低;是 1980s 至今的主流架构(除 x86)。
How:
RISC 共同特征:
-
简单指令:每条指令执行单一操作;硬件解码简单。
-
大寄存器堆:32 个寄存器(部分架构用 register window,逻辑 128+)。
-
load/store 架构:只有 load / store 访问内存;算术指令只操作寄存器。
-
定长指令:32-bit 固定长度(Thumb 除外);硬件解码简单、流水线友好。
-
流水线友好:每条指令 1 个周期完成(理想 CPI = 1)。
|
RISC vs CISC 的"赢家"
|
When:选 ISA(性能 / 功耗 / 生态);理解编译优化(不同 ISA 优化策略不同)。
Example:现代手机用 ARM(Cortex-A 系列);桌面 / 服务器用 x86;超算 / HPC 用 RISC-V / ARM(部分)。
2.2 桌面 / 服务器 RISC (Desktop/Server RISC)
What:1990s 高性能 RISC ISA,与 x86 竞争;现大多退出桌面。
Why:理解 ISA 演进;为下一代 RISC(如 RISC-V)做参考。
How:
桌面 / 服务器 RISC 简介(§D.3-D.11):
-
Alpha:DEC 1992;64-bit 先驱;性能领先;后被 HP / Compaq 收购,停产。
-
MIPS-64:Stanford 1985;教学与嵌入式;现多用于路由器 / 嵌入式。
-
PA-RISC:HP 1986;32 寄存器;后被 Itanium 取代。
-
PowerPC:IBM / Motorola / Apple 1991;游戏机(Xbox 360 / Wii / PS3)+ 嵌入式。
-
SPARC v9:Sun 1987;register window(128 逻辑寄存器);服务器(Sun Fire / Fujitsu)。
|
register window 创新
|
When:历史 / 学术研究;选特定 RISC ISA(嵌入式 / 学术)。
Example:Nintendo Wii / GameCube 用 PowerPC;Sony PS3 用 Cell(PowerPC + SPERT);现 Apple Silicon M1/M2 改用 ARM。
2.3 嵌入式 RISC (Embedded RISC)
What:低功耗 / 低成本 / 代码密度优先的 RISC;ARM 主导。
Why:嵌入式市场(手机 / IoT / 汽车 / 家电)每年数十亿芯片;ARM 是事实标准。
How:
嵌入式 RISC 简介(§D.12-D.16):
-
ARM:Acorn 1985;32-bit;条件执行 + 桶形移位器;Cortex-A / Cortex-M 系列。
-
Thumb:ARM 1995;16-bit 指令子集;代码密度提升 30%+。
-
Thumb-2:ARM 2003;混合 16/32-bit 指令;Cortex-M 默认。
-
SuperH:Hitachi 1990;32-bit;游戏机(Dreamcast / Saturn)。
-
M32R:Mitsubishi 1990;32-bit;微控制器。
-
MIPS-16:MIPS 1997;16-bit 子集;代码密度。
|
ARM 统治嵌入式的原因
|
When:嵌入式系统设计;选 MCU / MPU;ARM vs RISC-V vs MIPS 选型。
Example:手机 SoC(Apple A17 / 高通骁龙 8 Gen 3 / 联发科天玑 9300)都是 ARM Cortex-A 系列;汽车 ECU 用 Cortex-M / Cortex-R;IoT 设备用 Cortex-M0+。
2.4 ARM 特色 (ARM Distinctive Features)
What:ARM 的几个独特设计——条件执行、桶形移位器、链接加载 / 存储。
Why:理解 ARM 的设计选择能解释为何 ARM 主导嵌入式;理解后可移植到其他 ISA。
How:
ARM 特色(§D.12):
-
条件执行:几乎所有指令都可条件执行(条件码 NE / EQ / LT / …);消除短分支。
-
桶形移位器(Barrel Shifter):ALU 输入移位(LSL / LSR / ASR / ROR)单周期完成;统一移位延迟。
-
链接加载 / 存储:
LDM / STM多寄存器加载 / 存储;BL链接分支(保存返回地址到 LR)。
|
ARM Thumb-2 的现代化
|
When:写 ARM 汇编;理解 ARM 二进制;移植到其他 ISA。
Example:ADDNE R0, R0, #1 是 ARM 条件执行;如果 zero flag 没设置,跳过加法;消除 1 条分支。
2.5 Thumb 指令压缩 (Thumb Instruction Compression)
What:ARM 的 16-bit 指令子集;代码密度提升 ~30%。
Why:嵌入式场景代码大小敏感(Flash 容量小);Thumb 用一半指令宽度实现大部分功能。
How:
Thumb 特点:
-
16-bit 指令:操作码 + 立即数字段更小。
-
有限寄存器访问:只能访问低 8 个寄存器(Thumb-1);Thumb-2 扩展。
-
有限操作:某些复杂操作不可用;Thumb-2 扩展。
-
ARM / Thumb 切换:
BX指令动态切换;现代默认 Thumb-2。
|
Thumb 的工程权衡
|
When:嵌入式 ARM 编程(Cortex-M);选 ARM 模式 vs Thumb 模式。
Example:Cortex-M0+ 默认 Thumb-2;指令宽度 16-bit 占大多数;密集分支 / 立即数场景用 32-bit Thumb-2。
三、关键图表
视觉图表
非可视化条目
|
非可视化条目(表 / 算法)
|
核心公式对照表
|
核心公式对照表
|
四、思维导图
mindmap
root((附录 D RISC 综述))
设计哲学
简单指令
大寄存器堆
loadstore
定长指令
桌面服务器RISC
Alpha
MIPS64
PARISC
PowerPC
SPARC
嵌入式RISC
ARM
Thumb
SuperH
M32R
MIPS16
ARM特色
条件执行
桶形移位
链接加载
Thumb压缩
16bit子集
代码密度
Thumb2混合
五、重点与易错点
-
RISC 的"赢家":嵌入式(ARM)+ 学术(RISC-V);桌面 / 服务器已被 x86 主导(除 Apple Silicon)。
-
ARM 条件执行降低分支数:
ADDNE / ADDEQ等替代短分支;性能优化必备。 -
Thumb-2 是 Cortex-M 默认:平衡性能与代码密度;嵌入式首选。
-
ARM 累计出货 > 3000 亿:嵌入式市场绝对统治者;任何嵌入式选 ARM 通常安全。
-
RISC-V 崛起:开源、免授权;中国 / 印度 / 学术界推动;未来 5-10 年可能挑战 ARM。
-
Apple Silicon 转向 ARM:M1 / M2 / M3 抛弃 Intel x86;性能 / 功耗双赢。
-
RISC ≠ 一定优于 CISC:x86 通过微码实现 RISC-like 微操作;性能与 RISC 相当。
-
ISA 选择需考虑生态:x86 服务器生态成熟;ARM 嵌入式生态成熟;新兴 RISC-V 生态仍在建。
-
跨章衔接:第 2 章 LEGv8 是简化 ARM ISA;附录 B GPU 与 ARM CPU 组成异构 SoC;附录 C 控制单元可用 ARM 微码实现。