由于 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