用FPGA做GPU?

发布于:2024-06-26 ⋅ 阅读:(21) ⋅ 点赞:(0)

由于 GPU 市场竞争激烈,目前大公司除了专利垄断,一些技术细节也是封闭的。

除了英特尔,它发布了大量关于其 GPU 的技术文档:

https://kiwitree.net/~lina/intel-gfx-docs/prm/

当然,还可以在网上找到一些古老的GPU 如 i810/815 手册。

AMD 也发布了大量文档 :

https://www.amd.com/en/developer/browse-by-resource-type/documentation.html

包括其当前和过去产品的完整 ISA 文档,但是这些文档更倾向于“使用手册”,主要包括(数百或数千个)寄存器及其位域的简洁的描述。几乎没有任何关于微架构的解释。相比之下,英特尔文档更加完整。

上面是一些介绍类的文档,学习的关键是实操,今天介绍几个项目,主要是用FPGA做一个GPU。

TinyGPU

项目介绍

这个项目主要集中于探索:

  • 架构 - GPU的架构是什么样子的?最重要的元素是什么?

  • 并行化 - SIMD编程模型是如何在硬件中实现的?

  • 内存 - GPU如何解决有限内存带宽的限制?

项目地址

https://github.com/adam-maj/tiny-gpu

项目架构

78b4e5e1d931892ab389107f9b99aefd.png

4ff3eb3a8095dfa14232f3f44cfee0a2.png

仿真

本项目也使用开源仿真器iverilog和cocotb进行仿真验证,想学习iverilog和cocotb的也可以跟着试一试。

FuryGPU

项目介绍

国外游戏软件开发者Dylan Barrie耗时四年,成功打造开源完全定制GPU——Fury GPU。该项目基于Xilinx FPGA设计,外观复古但配备现代化接口。目前项目还处于计划开源阶段。

45d1372306935ecbe5f44d8d46e9bdea.png

1b6006db1f2467c40b47fd75f2e9e164.gif

项目地址

https://www.furygpu.com/

项目架构

35675ce3528500209c4c022998371ef5.png

miaow

项目介绍

MIAOW是AMD Southern Islands GPU ISA的开源项目。

项目地址

https://github.com/VerticalResearchGroup/miaow

项目架构

3251caec9abb0f84f0b2161f88cf898e.png

VeriGPU

项目介绍

一个用于机器学习的开源 GPU。

项目地址

https://github.com/hughperkins/VeriGPU/tree/main

项目架构

753e4eb304d252113d3511803bfca37f.png

c0d7741e565b80275435eb64334b14ed.png

总结

MIAOW项目文档最详细,包括GPU架构细节设计。VeriGPU设计最严谨,因为该项目的目标是流片。TinyGPU最简洁,主要目标是学习,同时也最“年轻”,目前作者还在进行设计修改。FuryGPU有层神秘的面纱,目前看项目功能完整,适合使用FPGA进行移植,但是目前作者还没开源。所以想学习这方面知识的建议看下Intel的文档,学习一下MIAOW和VeriGPU,然后跟着TinyGPU一起成长。

acaea20ac44ddd53134d2d423fbd888d.jpeg