从专有Falcon到RISC-V的十年演进

RISC-V架构的商业化突破常被预期出现在通用计算领域,但Nvidia已在专用微控制器层面实现了大规模部署。2024年,Nvidia出货的RISC-V核心数量超过10亿个。这些核心并非用于典型的数据计算,而是嵌入GPU内部,负责图形处理之外的管理任务。据估算,每颗GPU包含10至40个此类核心,具体数量取决于型号。

这些RISC-V核心对用户不可编程,且经过密码学验证,任何篡改都将阻止GPU固件启动。自2018年以来,其中一个特定核心承担了大量原属图形驱动程序的工作。在此之前,Nvidia长期使用专有的Falcon(FAst Logic CONtroller)微控制器。Falcon最早出现于2005年的G98世代,取代了Tensilica Xtensa核心。这种32位、变长指令集的专有架构专为低硅片面积和长内存延迟优化,随着GPU复杂度提升,Nvidia在芯片中集成了越来越多Falcon核心。

截至2016年,单颗芯片上可包含超过15个Falcon引擎,执行视频编解码、电源管理及安全验证等任务。然而,Falcon的32位地址空间限制及其无法运行完整操作系统的缺陷,使其逐渐难以胜任日益复杂的任务。此外,Falcon严格的签名验证机制曾导致Linux用户无法调整GPU时钟频率,引发了开源社区的不满。

为何弃用Arm选择自研RISC-V

Nvidia硬件工程副总裁Frans Sijstermans指出,放弃Falcon的主要原因在于缺乏64位地址空间,且其无数据缓存,无法运行真正的操作系统。2016年,Nvidia重新评估技术路线,考量了Arm Cortex系列、Synopsys ARC、MIPS以及Cadence等方案,同时也评估了自行构建新核心的可能性。

评估结果显示,Arm Cortex-A53因硅片面积无法在16nm工艺下压缩至0.1平方毫米以下而被否决;Cortex-A9和Cortex-R5则因不支持64位寻址等原因落选。Synopsys ARC HS在安全性和寻址方面也未达标。即便改进版Falcon也无法满足性能和地址空间需求。虽然Nvidia测试了Berkeley的Rocket参考核心,但因紧耦合内存和功能仿真模型缺失而失败。最终,RISC-V指令集凭借灵活性胜出。Nvidia基于RISC-V构建的核心,以两倍于Falcon的面积实现了三倍的性能提升。

单芯数十核:RISC-V在Nvidia架构中的渗透

Sijstermans透露,每颗Nvidia芯片可能包含10至40个RISC-V处理器。考虑到Nvidia庞大的芯片出货量,每年RISC-V核心的部署量可能在10亿至20亿之间。核心数量随GPU规模扩展:以Ada Lovelace AD102为例,其拥有12个图形处理集群(GPC),加上视频引擎、NVENC/NVDEC单元等,核心总数可达30至40个。

Nvidia开源内核模块的头文件证实了这一架构。该文件列出了32个微控制器条目,其中14个为RISC-V引擎,包括GSP_RISCV、PMU_RISCV和NVDEC_RISCV等。值得注意的是,寄存器头文件已涵盖Blackwell之后的Rubin架构,显示RISC-V将在未来代际中持续存在。

Nvidia开发了三种主要核心设计:NV-RISCV32(有序核心)、NV-RISCV64(无序核心,支持对称多处理)以及NV-RVV(带1024位向量单元的深度学习加速核心)。这些核心均封装在名为“Peregrine”的可重用子系统中,集成缓存、紧耦合内存、DMA引擎及加密模块。此外,Nvidia还构建了20多个专有扩展,如64位物理/虚拟寻址、安全调试及缓存操作指令,以满足特定内部需求。

GSP:驱动与虚拟化的关键枢纽

GPU系统处理器(GSP)是RISC-V应用中最关键的组件。它由四个RV64核心组成,位于芯片顶层,处理几乎所有流量。自Turing架构起,资源管理器被分为运行在CPU上的CPU-RM和运行在GPU RISC-V核心上的GSP-RM,两者通过RPC消息队列通信。主机驱动程序向GSP发送高级命令,由GSP处理初始化、电源管理和时钟频率控制。这意味着,用户安装的GPU驱动程序实质上是指挥GPU内部的另一台计算机工作。

固件分析显示,GSP固件包含针对Ampere、Ada、Hopper等架构的RSA签名部分,并运行Nvidia自研的微内核LibOS,利用RISC-V标准的PMP机制进行内存隔离。这种设计实现了对硬件的低延迟访问,同时减少了主机MMIO通信表面。更重要的是,GSP使得单个物理GPU能被划分为多个客户虚拟机,无需虚拟化程序介入,从而支持企业级vGPU功能。尽管普通消费者较少使用vGPU,但开源社区已成功在消费级显卡上启用该功能,GSP在其中起到了关键的隔离作用。

开放指令集与封闭生态的悖论

尽管RISC-V是开放指令集,但Nvidia GPU并未因此变得开放。GSP固件的RSA签名验证机制确保了只有Nvidia授权的代码才能执行,引导链中的安全引擎会在运行时固件启动前进行身份验证。Nvidia选择RISC-V的部分原因正是其隔离和内存保护功能有助于构建这种锁定机制。

对于Linux开源驱动开发者而言,这意味着大量控制逻辑移入了不透明的二进制文件中,导致固件体积庞大且缺乏稳定ABI。然而,这也带来了意外的好处:Nvidia现在提供允许nouveau加载的签名GSP固件,使得开源驱动能够重新控制GPU时钟频率并以全速运行,挽回了自Maxwell时代以来失去的功能。基于Rust的新一代驱动Nova明确支持GSP,标志着开源驱动能力的回归,尽管这是以牺牲完全开放的驱动程序为代价的。

AMD的相反路径与Nvidia的隐形战略

与Nvidia不同,AMD在GPU中采用了多种异构架构,包括Arm Cortex-A5(用于PSP)、Tensilica Xtensa(用于SMU)以及专有的“F32”指令集(用于命令处理器)。AMD并未统一采用RISC-V,其固件 blob 缺乏明确的架构标识,逆向工程难度极大。尽管AMD是RISC-V国际成员,并推出了基于RISC-V的MicroBlaze V用于FPGA市场,但在GPU内部并未像Nvidia那样大规模替换原有架构。

Nvidia的RISC-V工作之所以长期未被大众知晓,是因为这些设计完全内部化,软件不面向客户。Sijstermans表示,大多数人不会将Nvidia与RISC-V联系起来。然而,这一局面正在改变。在2025年上海RISC-V峰会上,Nvidia宣布正在将CUDA移植到RISC-V处理器上,意味着RISC-V CPU未来可作为主应用处理器驱动Nvidia GPU。虽然数据中心级RISC-V硅片尚未成熟,时间表未定,但此举表明Nvidia已认可该平台在严肃计算中的价值。

当CUDA正式支持RISC-V时,这将被视为RISC-V进入高性能计算领域的里程碑。但事实上,Nvidia的RISC-V核心已在过去十年间默默启动了无数显示器并管理着风扇转速。这一变革早已发生,只是Nvidia此前从未有理由向外界宣告。