NVIDIA发展轶事(202x)
2012-06-26 10:18:06

本站赞助商链接,请多关照。 本文主要用于记录NVIDIA发展和使用过程中的大事记,截止到2030年前。

因 Linux 驱动失去中国的千万台 PC 订单

正式开源其 Linux GPU 内核模块

在 2024 年出货十亿个 RISC-V 核心的背后

因 Linux 驱动失去中国的千万台 PC 订单


Linux作者因为NVIDIA的Linux驱动而对其竖起中指,2012年6月下旬有传言说NVIDIA因Linux驱动而失去了中国的千万台PC订单。中国计划向所有学校推广运行Linux系统,使用中国自制CPU和NVIDIA GeForce显卡的PC,它可能会一次性采购超过一千万台PC——10万所学校,每所100到150台。


最近几年,中国自主研制了不同架构的处理器,基 于Alpha、MIPS、Sparc和ARM架构,如龙芯是基于MIPS。但中国国产处理器团队在整合NVIDIA显卡时遇到了问题,因为NVIDIA没 有发布Linux驱动源代码,而它的二进制程序只支持X86。中国CPU团队联系NVIDIA,希望能合作解决问题。据消息人士透露,NVIDIA很傲慢,称重新编译Linux驱动成本很高,因为这是一项非重现工程项目,它要求中国人为此支付数百万美元,结果双方谈判不欢而散。

原文链接

NVIDIA 正式开源其 Linux GPU 内核模块

2022年5月11日,NVIDIA 在博客中宣布以 GPL/MIT 双重许可正式开源其 Linux GPU 内核模块。

众所周知,不同于老对手AMD 对开源的热情,NVIDIA 一直非常抗拒拥抱开源。尽管他们提供了出色的 Linux 驱动程序支持,但其私有闭源驱动却饱受 Linux 社区诟病。比如赫赫有名的 Linus+中指+ “So,fxxk you NVIDIA”,Fedora 项目负责人也曾发文抨击 NVIDIA 的专有驱动软件栈。如今 NVIDIA 直接把整个 Linux GPU 内核模块开源,实在是出乎意料。可能是受到了前些时间黑客攻击导致源码泄漏,让NVIDIA索性开源了?

目前,此 NVIDIA Open GPU 内核模块的第一个版本是 R515,除了源代码之外,还提供了驱动程序的完全构建和打包版本。

对于 NVIDIA Turing 和 NVIDIA Ampere 架构系列中的数据中心 GPU,这些代码可用于生产。
对于 GeForce 和工作站 GPU,这些代码被认为是“alpha 版本的质量”
拥有 Turing 和 Ampere GPU 的客户可以选择安装哪些模块。
Pre-Turing 客户将继续运行闭源模块。

注意: R515 版本中提供了闭源驱动程序和开源内核模块的预编译版本,这些驱动版本是互斥的,用户可以在安装时进行选择。而据 NVIDIA 的说法,此举只是该公司更广泛的开源计划的第一步,旨在“改善在 Linux 中使用 NVIDIA GPU 的体验、与操作系统更紧密集成以及方便开发人员调试、集成和回馈”。


目前,Ubuntu、Red Hat 和 SUSE 都在准备打包和使用该开放内核模块,比如 Ubuntu 表示会在短期内将其用于最近的 Ubuntu 22.04 LTS 版本。但这些内核模块还无法上游化,因为“当前的代码库不符合 Linux 内核设计惯例”。毕竟之前为了省事,NVIDIA 在 Linux 上的专有驱动程序用的还是跨 Windows / Linux / FreeBSD / Solaris 几大平台的同一套代码,要使其在 Linux 内核中上游化,可能需要进行更多重构以迎合 Linux。但 NVIDIA 表示它已计划与 Linux 内核社区合作,以改善这种情况。

目前该 Linux GPU 内核模块的源代码托管在GitHub 上的 NVIDIA Open GPU Kernel Modules 仓库中。R515 Linux beta 驱动程序可以在 NVIDIA.com上下载。

在 2024 年出货十亿个 RISC-V 核心的背后

在2025年2月的 RISC-V 北美峰会上,NVIDIA 多媒体架构副总裁 Frans Sijstermans 深入阐述了其选择 RISC-V 作为其嵌入式微控制器架构的原因,以及它如何成为其产品成功的重要组成部分。

背景:NVIDIA 从零到十亿个 RISC-V 核心的历程
NVIDIA 与 RISC-V 的历史可以追溯到 2016 年。当时,NVIDIA 开始将其内部的 Falcon 微处理器(用于 GPU 产品的逻辑控制)转向新的架构。在评估了多种架构后,NVIDIA 选择了 RISC-V ISA,并自此开始将 RISC-V 微控制器添加到其产品中,逐步替换旧版 Falcon。

在其 10 年的生命周期中,NVIDIA 估计出货量约为 30 亿个 Falcon 处理器,预计这一转型最终将导致数十亿个 RISC-V 处理器的出货。通常,每个 NVIDIA 芯片包含 10 到 40 个 RISC-V 核心,具体数量取决于配置。2024 年,基于出货的总芯片数量,NVIDIA 的 RISC-V 处理器出货量超过了十亿个。

自 RISC-V 社区首次会议以来,NVIDIA 一直是该社区的积极成员,并且几乎一直在董事会层面拥有代表权。NVIDIA 参与了许多技术工作组,不仅贡献和分享自己的工作,还从其他社区成员的贡献中受益,同时还参与了 RISE 软件组织。 尽管如此,NVIDIA 并不常与 RISC-V 联系在一起,这可能是因为其许多工作都是内部进行的,尽管重要,但大多与面向客户的产品无关。RISC-V 在 NVIDIA 产品组合中主要涉及三个关键领域:
1.功能级控制器,包括视频编解码器、显示器、摄像头、内存控制器(培训)、芯片间接口和上下文切换。

2.芯片/系统级控制,包括资源管理、电源管理和安全性。

3.数据处理,包括网络中的数据包路由以及 DLA(非 GPU)中的激活和其他深度学习网络层。

NVIDIA 的 RISC-V 核心

NVIDIA 从仅支持 32 位的 Falcon 核心过渡到 RISC-V 的初衷是为了满足 64 位能力的需求。他们的第一个 RISC-V 开发是一个相对普通的双发射乱序 RISC-V 核心,配备标准扩展,并可作为多处理器版本部署。随后,他们还为面积受限的应用添加了 32 位版本,并增加了一个 1024 位向量单元的向量处理器。


NVIDIA 还开发了几个自定义扩展,有些是特定于 NVIDIA 的,另一些则对一般用户有益。例如,2kB 页面大小扩展是 NVIDIA 独有的,能够提高传统软件性能 50%。同样,64 位地址扩展在大规模系统中非常有用,如数据中心,其内存是分布式且相距甚远。另一方面,他们的指针掩码扩展在安全和保护应用方面具有广泛的潜力。因此,NVIDIA 将该扩展提交给 RISC-V 标准,并获得批准,现在已被许多社区成员使用。

NVIDIA 还拥有额外的扩展,可实现通用功能、安全性和性能,虽然这些扩展在技术上并不特别先进,但对于整个系统来说至关重要。

RISC-V 支持的子系统

NVIDIA 的 SoC 使用自己的 RISC-V 子系统,名为 Peregrine。除了 RISC-V 核心外,它还包括其他外设,如 DMA 和安全 IP。Peregrine 对 NVIDIA 至关重要,因为它允许他们选择和重用 30 多个系统控制和管理应用,而无需每次都进行独立开发。RISC-V 架构使 NVIDIA 具备灵活性和模块化,能够根据需求配置子系统,在除存储和AI领域外的大规模使用。例如,他们可以选择 32 位或 64 位核心,并添加特定工作负载所需的扩展,从而最大化开发重用和投资回报。


类似地,在软件方面,所有 30 多个应用使用单一堆栈,这使得诸如引导、操作系统、分离内核和应用程序库等项目的重用变得显著。


NVIDIA 同样致力于使其产品尽可能安全,内部设有一支进攻性安全团队,作为 “黑客” 积极寻找设计中的弱点、漏洞和错误。

Peregrine 子系统的核心组件是分离内核,可以被视为一个非常基础的虚拟机监控器。它将系统划分为不同的独立部分,便于单独验证。用户可以在不同的分区上运行不同的软件。例如,符合 ASIL-D 认证的安全合规应用可以在一个分区上运行,而另一个非认证应用可以在另一个分区独立运行。

应用实例
NVIDIA 拥有 30 多个使用 RISC-V 核心的系统控制和管理应用,并且可以根据具体用例灵活部署。以下详细介绍了其中两个应用程序。

首先,GPU 系统处理器(GSP)为 NVIDIA 的软件开发方式带来了根本性变化。GSP 是位于 GPU 顶部的处理器,负责创建 GPU 可执行的抽象。主处理器和内核驱动不再使用 GPU 内部的各个控制寄存器,而是直接与 GSP 通信,GSP 将这些高级命令转换为低级控制寄存器的操作。


GSP Peregrine 配备 64 位 RISC-V 处理器,提供单线程和多线程版本。最重要的是,GSP 可以完全访问 GPU 中的所有内容,包括内存和显示控制器,这些在软件中需要非常仔细地管理。从软件的角度看,用户可以部署具有内核驱动和多个访客虚拟机的主处理器。访客虚拟机在 GSP 上具有相应的 vGPU 运行时分区,而分离内核确保它们之间相互隔离,不会干扰。资源管理器会根据需要切换不同的访客,并确保资源分配公平。这一功能支持了诸如保密计算等特定用例,在这种情况下,GPU 被分配给访客,且不会受到虚拟机监控器的影响。在这种情况下,RISC-V 架构因其特定的隔离能力和 NVIDIA 自身的扩展特性而对安全性至关重要。

第二个支持 NVIDIA RISC-V 的应用程序是深度学习加速器,作为一些专用 AI SoC 的一部分。它本质上是一个图处理编程的推理引擎。例如,ONNX 程序表示深度学习网络中处理的层图。它使用标准的 RISC-V 编译器,将内核代码编译为可执行文件。在此基础上,还有一个 RVV 编译器,将其转换为可加载格式。也可以将不同内核组合成单一内核,以实现最优执行。

DLA 并不会在 RISC-V 处理器上运行所有东西,主卷积核心和矩阵乘法器是独立的实体。在下图的硬件结构中,有两个 RISC-V 处理器,一个是控制核心,简单的 32 位单元,另一个是 NVRVV,这是一种 1024 位向量单元。还包括一个卷积核心,总共六个硬件引擎。例如,Rubik 是一个智能 DMA 数据转换器,负责数据传输,而 RISC-V RVV 向量处理器用于大多数非矩阵乘法的层。简而言之,它是一个在 DLA 上运行的完整 ONNX 实现。


小结:为何 RISC-V 适合 NVIDIA

总结来说,NVIDIA 选择 RISC-V ISA 以及它取得成功的原因有 5 个:

1.定制化:定制能力至关重要,使 NVIDIA 能够最大化使用硅片。RISC-V 的许可模型允许他们使用基本 ISA 作为构建块,添加适合特定应用需求的扩展和配置文件。

2.硬件/软件协同设计:确保硬件针对软件负载进行了优化,从而提升效率和性能。

3.配置选项:标准的 “现成” 处理器往往对应用要求过高。通过 RISC-V,NVIDIA 可以通过配置实现仅需的特定扩展来节省成本和开发努力。

4.自定义扩展:允许 NVIDIA 添加特定功能、安全性和性能等要求。

5.统一的硬件和软件架构:允许 NVIDIA 在其 30 多个应用程序中重复使用资产,而无需为每个应用程序创建或调整新架构。减少开发工作量、简化部署并降低成本。