指令集架构 —— CISC、RISC、VLIW 与 RISC-V

第一章我们提到 X86 是 CISC、ARM 是 RISC,但只点到为止。这一篇把指令集架构(Instruction Set Architecture, ISA)拆开看:它是什么、为什么重要、各家流派怎么取舍。

什么是指令集架构

ISA 是 CPU 和软件之间的”合同”

graph TB
  APP[应用程序]
  COMPILER[编译器]
  ISA[指令集架构 ISA
CPU 暴露给软件的接口] CPU[CPU 硬件实现
微架构 µarch] APP --> COMPILER COMPILER -- 编译为 --> ISA ISA -- 由硬件实现 --> CPU

合同里规定的内容包括:

  • 指令格式:每条指令多少位、字段怎么布局
  • 寄存器:通用寄存器、特殊寄存器、向量寄存器
  • 寻址模式:直接寻址、寄存器间接、基址+变址……
  • 数据类型:整型大小、浮点格式、向量类型
  • 异常和中断:怎么报错、怎么响应
  • 特权级别:内核态/用户态、虚拟化扩展

ISA 是稳定的”接口”,微架构(µarch)才是 ISA 的具体硬件实现。同一套 ISA 可以有完全不同的微架构(比如 Intel 的 P-core 和 E-core 都跑 x86-64)。

三大指令集流派

历史上指令集设计哲学分为三大流派:CISC、RISC、VLIW。

CISC:复杂指令集

Complex Instruction Set Computer——70 年代早期 CPU 的主流。

设计哲学:

  • 最少的机器语言指令完成所需任务
  • 一条指令可以完成复杂操作(如 MOVS 一次搬一串字节,REP 循环)
  • 指令长度可变(x86 指令 1–15 字节)
  • 寻址方式多样
  • 对编译器友好,但 CPU 硬件复杂

代表:x86、x86-64、IBM System/360、VAX。

CISC 在编译器还很弱的年代是合理选择——人写汇编、用一条复杂指令就能搞定一件事。但当编译器成熟之后,CISC 的复杂度就成了负担。

RISC:精简指令集

Reduced Instruction Set Computer——80 年代由斯坦福(MIPS)和伯克利(RISC)项目带火。

设计哲学:

  • 指令少而简单,常用指令优先实现
  • 指令定长(多为 32 位),易于流水线和并行
  • 大部分指令在一个周期内完成
  • Load/Store 模型:只有 LD/ST 指令访问内存,其他指令只在寄存器间运算
  • 寄存器多(通常 32 个通用寄存器以上)
  • 对编译器要求高,但 CPU 硬件相对简单

代表:

架构 当前状态
ARM 服务器市场快速增长(Graviton、Grace、AmpereOne、鲲鹏)
POWER IBM 大型机/小型机,企业级长青树
MIPS 嵌入式为主,龙芯曾基于 MIPS(已转 LoongArch)
SPARC Oracle/Sun 体系,已边缘化
Alpha DEC,停产;技术血脉影响了 Itanium、x86-64
RISC-V 开源,2020 后快速崛起

VLIW:超长指令字

Very Long Instruction Word——一种”激进的并行”设计。

设计哲学:

  • 一条指令字内显式编排多条并行操作(典型 4–32 个操作槽)
  • 把”找出哪些操作能并行”的任务完全交给编译器
  • 硬件因此可以做得非常简单
1
2
VLIW 一条指令:
[加法操作] [乘法操作] [LD 操作] [ST 操作] [分支操作]

代表:

  • Intel Itanium(IA-64):押注 VLIW,最终在 2017 年停产
  • TI C6000 系列 DSP
  • 华为昇腾 NPU 内部架构部分采用 VLIW 思想

VLIW 的致命问题:编译器很难持续做出最优调度——它没法预知运行时的内存延迟和分支结果。这是 Itanium 失败的核心技术原因之一。

CISC vs RISC:还重要吗?

学界有个共识:现代 x86 内部其实是 RISC

graph LR
  X86[CISC x86 指令]
  DEC[译码器
Decoder] UOP[微操作 µops
RISC 风格] EXEC[乱序执行引擎] X86 --> DEC --> UOP --> EXEC

x86 译码器把复杂指令翻译成一系列微操作(micro-operations,µops),后端是 RISC 风格的乱序执行。从 Pentium Pro(1995)就开始了。

所以”CISC vs RISC”在 2026 年更多是生态和兼容性的差异:

x86 ARM RISC-V
指令长度 可变 1–15 字节 多为 32 位(部分 16/64) 多为 32 位(可扩展)
寄存器数 16 通用 31 通用 32 通用
译码功耗 较高
商业生态 最完整 移动+服务器+车 嵌入式起家,向上拓展
服务器份额(2026) 80%+ 15% 左右 极小
授权 Intel/AMD(封闭) ARM 公司(要付费) 开源(免费)

一张关键对比表

CISC(x86) RISC(ARM) VLIW
指令长度 可变 定长 超长定长
单周期完成指令数 1-3 4 20+
硬件复杂度
编译器复杂度 极高
译码功耗
兼容性 x86 几十年生态 ARM 生态完善中 已边缘化
服务器市场份额 90%+ <10% 几乎为零

国内厂商的指令集选择

国内服务器 CPU 厂商在 ISA 选择上各有路径:

厂商 ISA 来源
海光 x86-64 AMD Zen 1 授权,自研演进
兆芯 x86-64 通过合资公司获得 VIA 授权
鲲鹏(华为) ARMv8 ARM 永久指令集授权(v8.2+ 自定义扩展)
飞腾 ARMv8 ARM 永久授权
龙芯 LoongArch 自研指令集(早期基于 MIPS,2021 后独立)
申威 SW-64 自研,源于 DEC Alpha

待补充:海光在 Zen 1 授权之后的自研演进路径细节、龙芯 LoongArch 与 MIPS 的指令兼容程度。

RISC-V:值得关注的新势力

RISC-V 是 2010 年伯克利发起的开源指令集,最大特点:

  • 完全免费、可任意使用和扩展
  • 模块化设计:基础 ISA 极简(约 47 条指令),扩展通过 “RV32IM”、”RV64GC” 等组合表达
  • 主要扩展:M(乘除)、A(原子)、F/D(浮点)、V(向量)、C(压缩)

应用场景目前主要在:

  • 嵌入式 SoC(替代 ARM Cortex-M)
  • AI 芯片的控制核(很多 AI 加速器用 RISC-V 做主控核)
  • 部分服务器/HPC 探索(阿里平头哥 C910、SiFive HiFive、香山)

RISC-V 服务器化的关键瓶颈是软件生态——主流 Linux 发行版、虚拟化、数据库的 RISC-V 适配仍在追赶。但它的开源属性让它在中美科技博弈背景下成为重要的”备胎”选项

小结

  • ISA 是 CPU 和软件的合约,微架构是它的硬件实现
  • CISC、RISC、VLIW 三大流派——VLIW 已边缘化
  • x86 内部其实是 RISC,CISC vs RISC 的争论现在更多是生态之争
  • 服务器市场:x86 仍 80%+,ARM 上升,RISC-V 起势
  • 国内厂商在 ISA 上的路径分裂:海光/兆芯走 x86,鲲鹏/飞腾走 ARM,龙芯/申威自研

下一篇深入 Intel 的 X86 路线图——从 Tick-Tock 到 Intel 4 制程命名,Skylake 到 Granite Rapids 的代次更迭。