来源:内容来自半导体行业观察综合|CUDA被移植,基于RISC-V的GPU有戏了?( 二 )


GPU+RISC-V
目标硬件将有一个GPU功能单元和一个RISC-V核心 。 该组合以64位指令编码为标量指令的处理器的形式出现 。 关键在于编译器将从带前缀的标量操作码生成SIMD指令 。 其他功能包括可变问题、基于谓词的SIMD后端;分支跟踪;精确的异常;和矢量前端 。 设计将包括一个16位定点版本和一个32位浮点版本 。 前者适用于FPGA实现 。
该团队说:“不需要使用RPC/IPC调用机制来将3DAPI调用发送到未使用的CPU内存空间或从未使用的CPU内存空间发送到GPU内存空间 , 反之亦然 , ”
“融合”CPU-GPUISA方法的优势在于可以在微代码中使用标准图形管道 , 并且可以支持自定义着色器 。 甚至可以包括光线追踪扩展 。
该设计将采用Vblock格式(来自LibreGPU的努力):这有点像VLIW(但不是真的) 。 指令块之前带有寄存器标记 , 这些标记为该块内的标量指令提供了额外的上下文 。 子块包括向量长度 , 旋转 , 向量/宽度覆盖和预测 。 所有这些都添加到标量操作码中!没有矢量操作码(也不需要任何操作码) 。 在矢量上下文中 , 它是这样的:如果标量操作码使用寄存器 , 并且该寄存器在矢量上下文中列出 , 则将激活矢量模式 。 激活会导致硬件级别的for循环发出多个连续的标量运算(而不只是一个) 。 实现者可以自由地以他们想要的任何方式来实现循环-SIMD , 多问题 , 单执行;几乎任何东西 。
RV32-V向量处理2到4个元素的8位 , 16位或32位/元素的向量操作 。 对于用于64位和128位固定和浮点XYZW点的常规3D图形渲染管线 , 还将有专门的指令 。 8、16、24和32位RGBA像素;8位 , 每个组件16位UVW纹素;以及灯光和材质设置(Ia , ka , Id , kd , Is , ks等) 。
属性向量表示为4×4矩阵 。 该系统将本地支持2×2和3×3矩阵 。 向量支持也可能适用于使用AI和机器学习应用程序中常见的8位整数数据类型的数值模拟 。
设计中可以包含自定义光栅化器 , 例如样条线 , SubDiv曲面和面片 。 该方法还允许包含自定义管线阶段 , 自定义几何/像素/帧缓冲阶段 , 自定义细分器和自定义实例化操作 。
RV64X
RV64X参考实现包括:
指令/数据SRAM缓存(32kB)微码SRAM(8kB)双功能指令解码器(实现RV32V和X的硬连线;用于自定义ISA的微编码指令解码器)四向量ALU(32位/ALU-固定/浮动)136位寄存器文件(1k个元素)特殊功能单元纹理单位可配置的本地帧缓冲区
RV64X是可扩展的架构(图2) 。 它的融合方法是新的 , 对于自定义数据类型使用可配置寄存器也是如此 。 用户定义的基于SRAM的微代码可用于实现扩展 , 例如自定义光栅化器阶段 , 光线跟踪 , 机器视觉和机器学习 。 单一设计可以应用于独立的图形微控制器或具有可扩展着色器单元的多核解决方案 。
来源:内容来自半导体行业观察综合|CUDA被移植,基于RISC-V的GPU有戏了?

图2.RV64X可以从简单的低端设计(左)扩展到多核解决方案(右) 。
RISC-V的图形扩展可以解决可伸缩性和多语言问题 。 这可以实现更高级别的用例 , 从而带来更多的创新 。
下一步是什么
RV64X规范仍在早期开发中 , 可能会发生变化 。 正在建立一个讨论论坛 。 近期目标是使用指令集模拟器构建示例实现 。 这将在使用开放源代码IP和设计为开放源代码项目的自定义IP的FPGA实现上运行 。
来源:半导体行业观察