如果你最近关注芯片行业,一定会反复看到 RISC-V 这个词。它读作 risk-five,是第五代精简指令集架构的缩写。这篇文章用最短的篇幅讲清楚三件事:它是什么、一条指令长什么样、为什么值得你亲手学一遍。

一条开源的指令集

CPU 能听懂的语言叫「指令集架构」(Instruction Set Architecture)。x86 是 Intel 和 AMD 的商业授权体系,ARM 是 Arm 公司的授权体系,而 RISC-V 走了完全不同的路:它以开源协议发布,任何人都可以免费用它设计处理器,不需要授权费,也不存在卡脖子的风险。

它诞生于 UC Berkeley 的一个研究项目,设计目标是「足够精简、没有任何历史包袱」。2010 年发布至今,已经被 Ubuntu、Debian、Android 等系统原生支持,从微控制器到服务器芯片都有它的身影。

为什么「精简」反而更强

RISC(Reduced Instruction Set Computer)的核心思想是:把指令做得又少又规整,让硬件实现简单、编译器容易优化。x86 有几千条指令,而 RISC-V 的基础整数指令集 RV32I 只有 47 条。

指令少不等于能力弱。复杂操作由简单指令组合完成,这正像搭积木——积木种类少,但能搭出的东西是无限的。

模块化的扩展方式

RISC-V 的另一个特点是模块化:RV32I 是地基,在此之上可以按需拼装扩展:

  • M:整数乘除法
  • A:原子操作(多核同步)
  • F / D:单精度 / 双精度浮点
  • C:压缩指令(16 位定长编码,省内存)

一套指令集,既能裁剪进一枚几毛钱的单片机,也能堆出 64 核服务器芯片。

一条指令长什么样

RISC-V 是定长指令集,RV32I 每条指令固定 32 位。指令按操作数的来源分成几种格式:

格式 典型指令 布局(32 位)
R add、sub 两个源寄存器 + 一个目的寄存器
I addi、lw 一个源寄存器 + 立即数
S sw、sb 存内存,立即数拆成两段
B beq、bne 条件分支,立即数再拆
U / J lui、jal 大立即数 / 长跳转

用 HI RISC-V App 的模拟器随手写两条感受一下:

# 让 a0 = 42,再累加一次
addi a0, zero, 42     # a0 = 0 + 42
add  a1, a0, a0       # a1 = a0 + a0 = 84

第一行的 addi 是「立即数加法」:把常数 42 加到 zero 寄存器(恒为 0)上,结果放进 a0。就这么朴素——所有复杂的程序,最终都被编译器翻译成这样一条条小指令。

提示:zero、a0、a1 是 ABI 寄存器名。RISC-V 有 32 个通用寄存器,按调用约定各有分工,这是读懂任何汇编的第一步。

它能用来做什么

今天 RISC-V 已经在真实世界大规模落地:

  • AI 加速卡、SSD 主控、无线耳机里都有 RISC-V 核心在跑
  • 国内多家芯片公司的量产 SoC 采用 RISC-V
  • 教学领域尤其合适——指令集小而规整,学生一个学期就能摸到操作系统底层

对学习者来说,RISC-V 最大的价值是门槛低、天花板高:47 条指令就能入门,同一套体系又能一路深入到特权级、中断、页表和 Bootloader。

怎么开始学

最快的路径是动手。推荐的学习闭环:

  1. 读懂指令的编码和语义(本文的表格就是起点)
  2. 在模拟器里亲手写、亲手跑
  3. 逐关推进:寄存器 → 特权级 → 中断 → 页表 → Bootloader

免费下载 HI RISC-V App,39 关闯关从第一条 addi 一路写到亲手跑起 Bootloader,全部教学汇编都在真实 RISC-V 虚拟机上验证过。