《Spheres Vs Shapes》是一款开源的 3D 光线追踪游戏,用 C 语言编写后又被转换为了 FPGA 比特流。据说该游戏在 FPGA 硬件上的运行效率是在 AMD Ryzen 处理器上运行的 50 倍。
一般来说,在 FPGA 上使用的 Verilog 和 VHDL 语言都不太适合游戏开发或其他复杂的应用程序。因此,阿根廷的开发人员 Victor Suarez Rovere 和宾夕法尼亚州的系统工程师 Julian Kemmerer 就决定使用 Julian 的“PipelineC”类 C 硬件描述语言(HDL)、Victor 的解析器,以及数学类型库的 CflexHDL 工具来开发,先通过标准编译在 PC 上运行相同的代码,然后再通过自定义 C 到 VHDL 转换器在 FPGA 上运行相同的代码。
他们的白皮书中提供了有关游戏开发和测试结果的很多详细信息。比如下文:
该游戏开发需要一些数学函数,包括:浮点加法、减法、乘法、除法、倒数、平方根、平方根倒数、向量点积、向量归一化等。出于性能原因和设计情况,使用定点对应函数更容易适应目标 FPGA,也更利于与其他类型(整数和浮点数)进行相应转换。
他们对游戏进行了两次编译,一次是在运行 Linux 的 7纳米 Ryzen 4900H 8 核/16 线程处理器 @ 高达 4.4GHz (45W TDP) 上;另一次则是在 FPGA 硬件上,也就是 Digilent Arty A7- 100T 板,带有 101k LUT FPGA(Xilinx Artix-7 XC7A100TCSG324-1)。
对比来看,在两个平台上游戏都可以流畅运行,FPGA 解决方案也可以在 1920×1080 分辨率下以 60 fps 的速度渲染游戏。两者之间主要的区别在于功耗,FPGA 板的功耗是 660 mW,PC 的功耗是 35W。注意,据我了解,该游戏根本没使用 Ryzen CPU 中的 GPU,而是使用 SIMD 指令来加速游戏。虽然,依靠 GPU 进行 3D 图形加速的类似游戏消耗可能都挺少的,但仍然还是高于 FPGA 板的。另外,他们此次使用的 FPGA 是 28 纳米制程的,也就是说在与 Ryzen CPU 相同的 7纳米制程工艺的 FPGA 上预期效率就会提高 6 倍。
大家也可以通过观看视频,了解在 CPU 和 Arty-7 FPGA 板上模拟《Sphery vs. Shape》3D 光线追踪游戏的设计和演示情况。相关视频链接,点击此处可查看。
用户也可以在 PipelineC-Graphics 的 GitHub 存储库中找到更多详细信息。图形演示看起来还是挺酷的。他们的白皮书也解释过:“PipelineC 还可用于具有硬实时和低功耗要求的其他项目或产品。其中甚至还包括功率和重量参数非常重要的航空航天应用、需要高可靠性和实时处理的工业控制系统、更轻的虚拟和增强现实耳机、网络应用中的数据包过滤,以及安全和加密应用。
未来,上述应用程序的示例应该都会与 RISC-V CPU 和模拟器一起实现。目前他们打算设计一个带有开源硅知识产权和开源工具的 ASIC,并进行试生产。
原文链接:3D game running on FPGA shown to be 50x more efficient than on x86 hardware 由Jean-Luc Aufranc撰写。
文章来源:CNX Software中文站