1. 课程导入
各位同学好。我是老张,在芯片设计这行摸爬滚打了十几年。今天咱们聊RISC-V的起源,说实话,这个话题我每次讲都挺感慨的。
2010年,加州大学伯克利分校的Krste Asanović教授带着几个学生,想做几个开源项目。他们需要一套指令集,但翻来翻去发现:ARM要授权费,x86不开放,MIPS虽然开放但专利问题一堆。说白了,当时就没有一个真正免费、开放、好用的指令集。
于是他们决定自己搞一个。这就是RISC-V的起点。
为什么叫RISC-V?V是罗马数字5,代表这是伯克利开发的第五代RISC架构。前面四代分别是RISC-I、RISC-II、SOAR、SPUR,都是学术项目。到了第五代,他们决定彻底开源。
核心事实:RISC-V不是某家公司控制的,它归RISC-V国际基金会管理。任何个人、公司、高校都可以免费使用,不需要交一分钱授权费。
1.1 为什么RISC-V能成功?
我经常被问到这个问题。我的回答很简单:天时、地利、人和。
天时:摩尔定律放缓了。以前大家都追最先进的工艺,现在开始关注定制化、领域专用架构。RISC-V的可扩展性正好满足这个需求。
地利:物联网爆发了。海量设备需要低功耗、低成本、可定制的处理器。ARM虽然强,但授权模式对初创公司不友好。RISC-V给了大家另一个选择。
人和:开源运动深入人心。Linux、Android、GitHub……开发者习惯了开放协作。RISC-V的社区生态成长速度惊人。
我个人觉得,最关键的是第三点。我在2016年第一次接触RISC-V时,社区还很小。但那种开放的氛围,跟当年Linux早期很像。大家不是为了赚钱,而是真心想做好一个开放的指令集。
我的经验:2018年我参与过一个IoT芯片项目,客户要求用RISC-V。当时团队里有人反对,觉得生态不成熟。但最后我们硬着头皮上了,结果发现RISC-V的模块化设计让定制变得异常简单。从那以后,我就成了RISC-V的忠实用户。
1.2 指令集架构基础概念
聊RISC-V之前,咱们得先把基础概念理清楚。指令集架构(ISA)是什么?说白了,就是软件和硬件之间的契约。
你写一段C代码,编译器把它翻译成机器指令。这些指令长什么样?怎么编码?怎么执行?这些规则就是ISA定义的。
ISA分两种:
- 复杂指令集(CISC):x86是典型代表。一条指令能干很多事,但硬件实现复杂。
- 精简指令集(RISC):ARM、RISC-V都是。指令简单、规整,硬件实现高效。
RISC-V属于RISC家族,但它比ARM更纯粹。举个例子:
// RISC-V 加法指令
ADD x1, x2, x3 // x1 = x2 + x3
// ARM 加法指令
ADD x1, x2, x3 // 看起来一样,但ARM的编码更复杂
表面上看差不多,但RISC-V的指令编码非常规整。所有指令都是32位固定长度(基础指令集),操作码、寄存器地址的位置都是固定的。这简化了硬件设计。
1.3 RISC-V的模块化设计
RISC-V最让我欣赏的一点是它的模块化设计。它不像ARM那样给你一个固定的指令集,而是提供了一套基础指令集(RV32I/RV64I),然后允许你按需添加扩展。
| 扩展名 | 全称 | 用途 |
|---|---|---|
| RV32I | 基础整数指令集 | 必须实现,包含算术、逻辑、分支、访存等 |
| M | 整数乘除法扩展 | 硬件乘除法器 |
| A | 原子操作扩展 | 多核同步、锁操作 |
| F/D | 单/双精度浮点扩展 | 浮点运算 |
| C | 压缩指令扩展 | 16位短指令,减小代码体积 |
| V | 向量扩展 | SIMD/向量处理 |
这种设计的好处很明显:
- 按需定制:做IoT芯片,只需要RV32I + M + C就够了,省面积、省功耗。
- 向后兼容:基础指令集永远不会变,扩展可以自由组合。
- 自定义扩展:你可以自己定义新的指令,比如加速AI推理的专用指令。
避坑指南:我曾经见过一个团队,为了追求性能,把能加的扩展全加上了。结果芯片面积暴涨,功耗失控。记住:不是扩展越多越好,够用就行。
1.4 RISC-V生态全景
说到生态,我画了一张图,帮你理清RISC-V的生态结构。
从这张图你能看到,RISC-V生态分三层:
- 指令集层:这是核心,由RISC-V国际基金会维护。
- 实现层:包括硬件(CPU核、SoC)和软件(编译器、模拟器)。
- 应用层:覆盖从IoT到服务器、AI加速的各种场景。
每一层都有开源和商业的参与者。比如硬件方面,有SiFive、平头哥、芯来科技;软件方面,GCC和LLVM已经原生支持RISC-V。
现状:截至2024年,RISC-V国际基金会已有超过4000名会员,包括谷歌、英特尔、高通、英伟达等巨头。RISC-V处理器累计出货量已超过100亿颗(主要是IoT领域)。
1.5 为什么选择RISC-V?
最后,我想说说我个人的体会。为什么我选择RISC-V?
- 自由:不受任何一家公司控制,不用担心制裁或授权终止。
- 简洁:指令集设计优雅,学起来快,实现起来也快。
- 可扩展:想加什么指令就加什么指令,真正实现领域专用加速。
- 生态:虽然不如ARM成熟,但发展速度惊人。而且开源社区的力量,你懂的。
嗯,这一章就到这里。记住一句话:RISC-V不是万能的,但它给了我们一个前所未有的选择。接下来的课程,我们会一步步深入,从指令集细节到SoC集成,再到调试实战。准备好了吗?