服务热线
RISC-V 一直是计算领域最热门的话题之一,因为除了整个开源、免许可的优势之外,这种指令集架构 (ISA) 还允许广泛的定制并且易于理解。甚至还有一个基于 RISC-V ISA 设计通用 GPU 的项目,现在我们正在见证 Nvidia 的 CUDA 软件库移植到 Vortex RISC-V GPGPU 平台。
Nvidia 的 CUDA(计算统一设备架构)代表了在 Nvidia 显卡系列上运行的独特计算平台和应用程序编程接口 (API)。当为 CUDA 支持编写应用程序时,一旦系统发现基于 CUDA 的 GPU,它就会获得代码的大量 GPU 加速。
今天,研究人员研究了一种在名为 Vortex 的 RISC-V GPGPU 项目上启用 CUDA 软件工具包支持的方法。 Vortex RISC-V GPGPU 旨在提供基于 RV32IMF ISA 的全系统 RISC-V GPU。这意味着 32 位内核可以从 1 核 GPU 设计扩展到 32 核 GPU 设计。它支持 OpenCL 1.2 图形 API,现在还支持一些 CUDA 操作。
研究人员解释道:“……在这个项目中,我们提出并构建了一个管道来支持端到端 CUDA 迁移:该管道接受 CUDA 源代码作为输入,并在扩展的 RISC-V GPU 架构上执行它们。我们的pipeline由几个步骤组成:将CUDA源代码转换为NVVM IR,将NVVM IR转换为SPIR-V IR,将SPIR-V IR转发到POCL以获得RISC-V二进制文件,最后在扩展RISC-V GPU二进制文件架构上执行。 ”
该过程如上图所示,显示了使其工作的所有步骤。简单来说,CUDA 源代码以一种称为 NVVM IR 的中间表示 (IR) 格式表示,基于开源 LLVM IR。它后来被转换为标准可移植中间表示 (SPIR-V) IR,然后转发为 OpenCL 标准的可移植开源实现,称为 POCL。由于 Vortex 支持 OpenCL,因此它提供了受支持的代码并且可以毫无问题地执行它。
有关这个复杂过程的更多详细信息,请点击下面阅读原文。 重要的是,您必须感谢这些研究人员为使 CUDA 在 RISC-V GPGPU 上运行所做的努力。虽然这只是目前的一小步,但它可能是 RISC-V 用于加速计算应用程序时代的开始,就像 Nvidia 今天的 GPU 系列一样。
延伸阅读:RISC-V能否改变GPU?
任何研究过 GPU 架构的人都知道,这是矢量处理器的 SIMD 结构。它是一种超高效的并行处理器,可用于各种用途,从运行模拟和精彩游戏到教机器人如何获得人工智能以及帮助聪明人操纵股票市场。它甚至在我写这篇文章时检查我的语法。
但GPU领域已经成为私有领域,其内部工作由IP和 高效 AMD、英特尔和 Nvidia 等开发商的供应。如果有一套专为 3D 图形和媒体处理而设计的新图形指令集会怎样?嗯,也许有。
新指令基于 RISC-V 基本向量指令集构建。他们将本着核心 RISC-V ISA 的精神,添加对新的图形特定数据类型的支持作为分层扩展。支持矢量、先验数学、像素和纹理以及 Z/帧缓冲区操作。它可能是融合的 CPU-GPU ISA。该库 - RISC 3D 小组将其称为 RV64X(图 1),因为指令的长度为 64 位(32 位不足以支持强大的 ISA)。
该小组表示,他们的动机和目标是创建一个具有自定义可编程性和可扩展性的小型高效设计。它应该提供低成本的知识产权所有权和开发,而不是与商业产品竞争。它可以在 FPGA 和 ASIC 目标上实现,并且免费且开源。最初的设计目标是兼容 Khronos Vulkan 的低功耗微控制器,并支持其他 API(OpenGL、DirectX 等)。
GPU+RISC-V
该团队表示:“无需使用 RPC/IPC 调用机制将 3D API 调用发送到未使用的 CPU 内存空间或未使用的 CPU 内存空间到 GPU 内存空间,反之亦然。”
“融合”CPU-GPU ISA 方法的优点是可以在微代码中使用标准图形管道,并且可以支持自定义着色器。甚至可以包括光线追踪扩展。
该设计将采用 Vblock 格式(来自 Libre GPU 的努力):
- 它有点像 VLIW(但不是真的)。
- 指令块前面有寄存器标记,为该块内的标量指令提供附加上下文。
- 子块包括矢量长度、旋转、矢量/宽度叠加和预测。
- 所有这些都被添加到标量操作码中!
- 没有向量操作码(也不需要任何)。
- 在向量上下文中,它是这样的:如果标量操作码使用寄存器,并且该寄存器在向量上下文中列出,则将激活向量模式。
- 激活会导致硬件级 for 循环发出多个连续的标量操作(而不是仅一个)。
- 实现者可以自由地以任何他们想要的方式实现循环 - SIMD、多发出、单执行;几乎任何东西。
RV32-V向量处理8至16个元素的32位、2位或4位/元素向量运算。还将有针对 3 位和 64 位定点和浮点 XYZW 点的通用 128D 图形渲染管道的专用指令。 8、16、24 和 32 位 RGBA 像素;每个组件 8 位、16 位 UVW 纹素;以及灯光和材质设置(Ia、ka、Id、kd、Is、ks 等)。
属性向量表示为 4×4 矩阵。该系统本身支持 2×2 和 3×3 矩阵。矢量支持也可能适用于使用 AI 和机器学习应用中常见的 8 位整数数据类型的数值模拟。
设计中可以包含自定义光栅器,例如样条线、SubDiv 曲面和面片。此方法还允许包含自定义管道阶段、自定义几何/像素/帧缓冲区阶段、自定义细分器和自定义实例化操作。
RV64X
-
指令/数据 SRAM 缓存 (32 kB)
-
微代码 SRAM (8 kB)
-
双功能指令解码器(针对 RV32V 和 X 进行硬连线;针对定制 ISA 进行微编码指令解码器)
-
四向量 ALU(32 位/ALU 固定/浮点)
-
136 位寄存器文件(1k 元素)
-
特殊功能单元
-
纹理单元
-
可配置的本地帧缓冲区
RV64X 是一种可扩展架构(图 2)。它的融合方法是新的,对于自定义数据类型使用可配置寄存器也是如此。用户定义的基于 SRAM 的微代码可用于实现自定义光栅阶段、光线追踪、机器视觉和机器学习等扩展。单一设计可应用于独立图形微控制器或具有可扩展着色器单元的多核解决方案。
RISC-V 的图形扩展解决了可扩展性和多语言问题。这可以实现更高级别的用例,从而带来更多创新。
下一步是什么
RV64X 规范仍处于早期开发阶段,可能会发生变化。正在建立一个讨论论坛。近期目标是使用指令集模拟器构建示例实现。这将开放使用设计为开源项目的定制 IP 的源 IP 和 FPGA 实现。
免责声明:本文转载自《半导体行业观察》。本文仅代表作者个人观点,不代表Sac Micro及业界观点,仅供转载分享,支持保护知识产权,转载请注明原始出处和作者。如有侵权,请联系我们删除。




粤公网安备44030002007346号