附录 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 的"赢家"
      • 1990s:RISC 革命看似要赢(DEC Alpha / MIPS / SPARC 高性能)。

      • 2000s 后:x86 通过"复杂指令 → 微码 → RISC-like 微操作"反超;RISC 在嵌入式(ARM)和学术(RISC-V)保持优势。

      • 现代:x86 / ARM 双雄;RISC-V 崛起。

      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 创新
      • SPARC 引入 register window:每次函数调用"滑动"窗口,部分重叠。

      • 优点:减少函数调用寄存器保存 / 恢复。

      • 缺点:上下文切换慢(窗口切换代价大);现代 SPARC 已弱化。

      • ARM / MIPS 用固定 32 寄存器 + 软件约定(callee-saved)——更灵活。

      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 统治嵌入式的原因
      • 低功耗设计(适合电池供电设备)。

      • 庞大生态(ARM 架构授权给 Apple / Samsung / Qualcomm / 联发科 / …​)。

      • 多种配置(Cortex-A 应用 / Cortex-R 实时 / Cortex-M 微控制器)。

      • 配套工具链成熟(GCC / LLVM / IAR / Keil)。

      • 累计出货 > 3000 亿芯片(2024)。

      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 的现代化
      • Thumb-2(ARMv7-A / ARMv7-M):混合 16/32-bit 指令。

      • 性能接近 ARM(32-bit),代码密度接近 Thumb(16-bit)。

      • Cortex-M 系列默认 Thumb-2(无 ARM 模式)。

      • Cortex-A 系列支持 ARM + Thumb + Thumb-2(动态切换)。

      When:写 ARM 汇编;理解 ARM 二进制;移植到其他 ISA。

      ExampleADDNE 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 的工程权衡
      • 优点:代码密度 +30%(节省 Flash);指令缓存命中率提升。

      • 缺点:单条指令功能受限;某些场景性能略差(需多条 Thumb 指令完成 ARM 一条)。

      • Thumb-2 兼顾:64% Thumb 指令 + 36% ARM 指令;性能 + 密度平衡。

      When:嵌入式 ARM 编程(Cortex-M);选 ARM 模式 vs Thumb 模式。

      Example:Cortex-M0+ 默认 Thumb-2;指令宽度 16-bit 占大多数;密集分支 / 立即数场景用 32-bit Thumb-2。

      三、关键图表

      视觉图表

      图 D-1
      Figure 1. 图 D-1:RISC 设计哲学
      图 D-2
      Figure 2. 图 D-2:ARM 指令格式
      图 D-3
      Figure 3. 图 D-3:Thumb 指令格式
      图 D-4
      Figure 4. 图 D-4:SPARC register window

      非可视化条目

      非可视化条目(表 / 算法)
      编号 内容摘要

      表 D.1

      5 种桌面 RISC 对比(Alpha / MIPS / PA-RISC / PowerPC / SPARC)。

      表 D.2

      5 种嵌入式 RISC 对比(ARM / Thumb / SuperH / M32R / MIPS-16)。

      表 D.3

      各 ISA 寄存器数 / 寻址模式 / 指令长度对比。

      表 D.4

      ARM 指令格式(R / I / D / B / CB / TB)。

      核心公式对照表

      核心公式对照表
      概念 公式

      Thumb 代码密度

      \(\text{Density}_{\text{Thumb}} \approx 1.3 \times \text{Density}_{\text{ARM}}\)

      ARM 条件执行

      \(\text{Inst}_{\text{eff}} = \text{Inst}_{\text{base}} - \text{Short branches replaced}\)

      SPARC register window

      \(\text{Reg}_{\text{visible}} = 32 \times W \text{ (W = window depth)}\)

      四、思维导图

      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 微码实现。