RISC‑V 架构:干净的指令集如何成为严重的威胁
Source: Dev.to
请提供您希望翻译的正文内容,我将按照要求保留链接、格式和技术术语,仅翻译文本部分。
什么是架构实际定义的
指令集架构定义了:
- CPU 能理解的指令
- 寄存器布局
- 特权级别
- 内存排序规则
- 软件与硬件的交互方式
它不定义:
- 流水线深度
- 缓存设计
- 时钟频率
- 制造工艺
两个 RISC‑V CPU 可以运行相同的程序,但内部仍可能完全不同。
为什么会有 RISC
RISC 意味着 Reduced Instruction Set Computing(精简指令集计算)。其理念是保持指令简洁且可预测,以便编译器和硬件能够高效运行。
与此相比:
- x86 – 复杂且充满遗留行为
- ARM – RISC,但受控且有授权
RISC‑V 保持了 RISC 哲学 但去除了所有权.
基础指令集
每个 RISC‑V CPU 都从一个基础 ISA 开始。
RV32I 和 RV64I 是其基石。
- RV32I – 32 位整数指令集
- RV64I – 64 位整数指令集
基础包括:
- 整数算术
- 控制流
- 内存加载与存储
- 32 个通用寄存器
基础中没有乘法、浮点或原子操作;这些只有在需要时才会添加。
这就是 RISC‑V 适用于小型芯片的原因。
扩展是 RISC‑V 的扩展方式
RISC‑V 是模块化的。功能通过扩展来添加。
常见扩展:
- M – 乘法和除法
- A – 原子指令
- F 和 D – 浮点运算
- C – 压缩指令
- V – 向量处理
能够运行 Linux 的系统通常支持 RV64IMAFDC。
这意味着 CPU 只包含所需的功能——没有多余的复杂性。
寄存器和调用约定
RISC‑V 有 32 个整数寄存器。以下是一些示例:
x0– 始终为零x1– 返回地址x2– 栈指针
没有隐藏或特殊的未文档化内容,这简化了编译器、调试器和操作系统内核。
特权模式与操作系统
RISC‑V 定义了三个特权级别:
- machine mode – 固件
- supervisor mode – 内核
- user mode – 应用程序
这与现代操作系统设计完全匹配,使得 Linux 支持变得直接。
Linux 能在 RISC‑V 上原生运行,具备完整的内核支持。
内存模型
RISC‑V 使用宽松的内存模型。指令可能会被重新排序,除非显式阻止,这提升了性能和可扩展性,但需要正确的同步。
设计类似于 ARM,而非 x86。
微架构自由
- 顺序执行或乱序执行
- 单核或多核
- 小型微控制器或服务器 CPU
相同的软件可以在所有这些上运行。
支持 RISC‑V 的操作系统
完全支持的操作系统
- Linux
- FreeBSD
- Zephyr
- RTEMS
实验性或部分支持
- Android
- 研究中的 Windows 移植
Linux 支持是成熟度最重要的信号。
今日可用的真实 RISC‑V 处理器
嵌入式和微控制器级别
- ESP32‑C3
- ESP32‑C6
- Microchip PolarFire SoC
支持 Linux 的处理器
- SiFive Performance 系列
- Alibaba T‑Head Xuantie
这些芯片可以启动 Linux 并运行真实工作负载。
谁应该使用 RISC‑V
RISC‑V 适用于:
- 定制硅芯片设计者
- 嵌入式和物联网设备
- 政府和公共基础设施
- 研究与教育
- 避免供应商锁定的长期平台
它目前 不 适用于:
- 高端消费级桌面电脑
- 游戏系统
- 依赖专有驱动的环境
为什么 RISC‑V 在别人失败的地方成功
与 Intel Itanium 不同,RISC‑V 并不试图一次性取代所有东西。它逐步发展,与现有生态系统共存,并且不强迫迁移。这种渐进式的方法正是它成功的原因。
最后思考
RISC‑V 并不是因为它今天很快而令人兴奋;它之所以令人兴奋,是因为它免费、简洁且稳定。它是一种旨在持续数十年的架构,使其成为我们这个时代最重要的 CPU 设计之一。