C++ 获得对新型 RISC-V 硬件平台的支持

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C++ 正式添加对 RISC-V 架构的支持:这对开发者意味着什么?



编程语言的世界持续演进。本月初,C++ 标准化委员会 (WG21) 以及主要编译器(GCC、Clang/LLVM)的开发团队宣布,在当前的 C++17、C++20 以及即将到来的 C++23 版本中,完全官方支持开放硬件架构 RISC-V。这一事件标志着该语言发展进入新阶段,该语言历来被视为嵌入式系统和高性能计算的“王者”。



此前,C++ 已对 RISC-V 提供实验性支持,但现在该支持已变得稳定。这意味着开发者可以在基于该架构的微控制器、服务器甚至超级计算机上使用现代语言特性(模板、constexpr、协程、ranges),而无需担心遇到未记录的编译错误。



为什么 RISC-V 对 C++ 如此重要?



RISC-V 不仅仅是又一款处理器。它是一种开放的模块化架构,任何制造商都可以免版税使用。与生态系统由供应商严格控制的 ARM 或 x86 不同,RISC-V 提供了完全的自由:从制造 IoT 芯片的初创公司,到追求技术独立性的政府项目,皆可受益。



对于 C++ 而言,这是一个理想的环境:

  • 底层控制。 该语言允许编写最接近硬件的代码,而 RISC-V 拥有简单且可预测的指令集。
  • 可扩展性。 从 8 位微控制器 (RV32E) 到 64 位多核系统 (RV64GC) —— C++ 无处不在。
  • 安全性。 C++20/23 新标准增加了模块、概念和改进的内存管理,这对于没有复杂 MMU 的 RISC-V 设备至关重要。


具体发生了什么变化?



获得“生产就绪”状态的主要新特性包括:

  • GCC 13+ 和 Clang 16+: 完全支持 RISC-V 扩展(向量指令 V、压缩指令 C、原子操作 A)。
  • 标准库: 已适配以在 RISC-V 上处理硬件定时器、中断和多线程。
  • 工具链: QEMU 现在拥有一个参考 RISC-V 模型,并完全支持 C++ 的 GDB 调试。
  • 操作系统: 用于 RISC-V 的 Linux 6.x 和 FreeBSD 完全支持 C++ 应用程序(包括 std::thread、std::filesystem)。


实际使用示例



目前,开发者正在积极将复杂的 C++ 框架移植到 RISC-V:

  • 游戏引擎(Godot、Unity —— 实验性)。
  • 机器学习库(TensorFlow Lite、ONNX Runtime)。
  • 密码学库(OpenSSL、Botan)。

特别令人感兴趣的是 SiFive 项目,该项目在 RISC-V 芯片上运行完整的 C++ 应用程序,并使用协程在 IoT 网络中进行异步输入/输出。



下一步是什么?



C++ 委员会已宣布成立工作组,负责优化 RISC-V 的 ABI(二进制接口)并添加标准硬件属性(例如,用于直接访问寄存器)。预计到 2025 年,RISC-V 可能

推荐库