论文:《Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research》 MICRO’21
1 Vortex是什么?
Vortex是一个基于RISC-V指令集扩展实现的GPGPU,并且实现了纹理单元,在FPGA上可以扩展32个核心,200MHz主频性能为25.6 GFlops。其实现结构如下:
2 背景
目前GPGPU的架构研究主要仿真上,但是缺乏开源的硬件实现。
目前开源GPGPU的实现
目前已有的开源GPGPU的模拟器实现有如下:
-
[10] Analyzing CUDA workloads using a detailed GPU simulator. 2009
-
[54] gem5-gpu: A heterogeneous cpu-gpu simulator. 2014
-
[31] Emerald: graphics modeling for SoC systems. 2019
-
[63] Multi2Sim: A simulation framework for CPU-GPU computing. 2012
-
[41] Macsim: A cpu-gpu heterogeneous simulation framework user guide. 2012
-
[23] ATTILA: a cycle-level execution-driven simulator for modern GPU architectures. 2006
以上的研究主要是针对中间语言级别的仿真(如PTX、HSAIL)。
其中:
-
[55] Modeling Modern GPU Applications in gem5. 2020
基于GEM5实现AMD GPU的模拟,能够缩小与真实硬件的差距,但是在包括运行时、能效、可靠性、以及RTL级别的微架构评估方面还很欠缺。
也有一些开源的GPGPU硬件实现:
-
[1] FGPU: An SIMT-architecture for FPGAs. 2016
-
[21] Simty: generalized SIMT execution on RISC-V. In First Workshop on Computer Architecture Research with RISC-V. 2017
-
[16] Nyami: a synthesizable GPU architectural model for general-purpose and graphics-specific workloads. 2015
-
[4] FlexGrip: A soft GPGPU for FPGAs.
-
[17] NyuziRaster: Optimizing rasterizer performance and energy in the Nyuzi open source GPU. 2016
-
[11] Miaow-an open source rtl implementation of a gpgpu. 2015
-
[40] Lightweight SIMT Core Designs for Intelligent 3D Stacked DRAM.
以上的开源硬件实现都缺乏对Cache的实现,并且这些实现中的指令集都是定制或者专有的。
当前实现开源GPGPU的条件
-
高端FPGA的发展使得实现全功能GPGPU成为可能。
-
免费、开放可扩展的RISC-V指令集为以较低的成本设计硬件架构提供了一个新的选择,并且其有丰富的软件生态可工具链。
-
对更高速、更高质量的实时渲染的需求不断增长
面临的挑战
-
GPGPU指令集的虚确定,要适合现代GPU的SIMT执行模型,并且适合FPGA实现。
-
基于RISC-V指令集的微架构实现。
-
适合FPGA实现,使资源利用率最大化。
本文的主要贡献:
-
展示了当前GPGPU指令集的分类方法,并提出了一个涵盖基本的SIMT微架构功能的最小子集。
-
描述了Vortex的SIMT微架构,纹理单元的实现以及光栅化图形管线的实现
-
介绍了Votex 的cache实现,基于FPGA的多端口多bank的优化
-
实现了基于PCIe的FPGA软核
3 指令级实现
Vortex ISA:
Vortex扩展了6条指令用来支持GPGPU:
-
wspawn指令:一个PC激活多个wavefront,确保多个实例能够并行的运行。
-
tmc指令:根据thread mask寄存器来使能/停止线程的执行
-
split/join指令:split将mask信息及分支结果压入栈中,join 用来信息出栈。
-
bar指令:进行wavefront的栅栏同步
-
tex指令:用来支持纹理单元的访问
4 微体系结构
Vortex实现了一个标准的五级顺序流水线,并且实现了以下的SIMT组件:
-
hardware wavefront scheduler:包含PC、thread mask寄存器、IPDOM 栈
-
GPRs:对于wavefront中的每个线程的general-purpose-register
-
High-bandwidth caches:线程并行访问的cache
-
Barrier control module:wavefront级别的同步。
5 软件支持
主要支持的OpenCL,基于POCL框架实现。
修改POCL的后端实现:
-
添加新的设备和编译器支持来支持RISC-V
-
支持新的Vortex指令
-
与Vortex运行时系统集成
如何支持图形:
-
几何处理在Host端,光栅化之后在gpu上运行。
-
纹理采样通过加速的tex指令实现
-
编译器:LunarGLASS -> SPIR-V -> LLVM-IR -> Vortex Binary
参考资料:
-
Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics Research