RISC-V一直以其开源特性而备受业界关注。不过,一直以来,RISC-V相关IP主要集中在CPU领域,而事实上,它也可以用在GPU领域。
你我都知道,GPU领域几乎被一两家企业所统治,这是因为GPU领域生态是最大的壁垒。加之专利门槛极高,GPGPU(通用GPU)IP在图形处理领域一直不温不火。
最近几年,大家都探索通过扩展和改写RISC-V CPU指令集,做GPU。
全世界都在研究RISC-V GPU架构
事实上,全世界都不想看一两家厂商垄断市场,都在想办法做各种开源GPU架构,这其中既包含较老的指令集或是中间语言进行实现,有些则基于RISC-V CPU指令集进行改进和扩展来实现GPGPU的功能。
2021年,乔治亚理工研究了一种支持CUDA的RISC-V GPU架构——Vortex。
前几日,一个成立于2022年的美国公司X-Silicon发布了其开放标准、低功耗的C-GPU架构。
根据介绍,C-GPU架构将打造成为开源、统一的RISC-V 矢量 CPU-with-GPU ISA 架构,C-GPU采用NanoTile架构,X-Silicon将这种CPU/GPU混合处理器称为“万能处理器”。其处理器专为动态内容最佳管理和渲染而设计,并超越传统GPU限制。
翻译翻译就是把基于RISC-V架构的CPU和GPU放在同一个核内。
国内方面,上海清华国际创新中心集成电路研究平台推出的首款基于RISC-V向量扩展(RVV)的GPGPU“Ventus(乘影)”,是国内首个开源GPGPU,也为后续协同企业开发国产全自主GPU商用产品的路上迈出关键一步。
根据官方信息显示,RVV GPGPU参考RISC-V CPU开发思路,在满足SIMT基础功能同时,汲取RISC-V向量扩展在功能定义和指令设计上优势,将二者有机结合,使乘影同时具备向量处理器工具链兼容性和GPGPU编程灵活性。
陈巍博士解读,乘影主体大框架借鉴GPGPU的结构,每个流多处理器(Streaming Multiprocessor,SM)主体结构接近于RISC-V。后端执行则直接使用处理器中常用ALU、FPU、LSU。为了让SM能够完成GPGPU工作,乘影里添加了SIMT-stack和SFU这类GPU中的常见功能模块。
2024年2月,芯瞳成功开源了一款基于RISC-V指令集的GPU处理器模型RVGPU,这是芯瞳在RISC-V + GPU方向持续研究取得的重要突破。
根据官方介绍,RVGPU采用SIMT(单指令多线程)技术,现已成功实现对CUDA(Compute Unified Device Architecture)的兼容支持,包括CUDA编译器和运行时环境。除此以外,RVGPU的架构指令CModel仿真模型允许开发者在模拟环境中模拟GPU的各种指令和行为。
综合来看,上述产品均基于LLVM开源工具链完成GPGPU编译器的开发,支持OpenCL开源并行编程框架。
可见,所有厂商都有着一个共同的目标,那就是建设一个开源GPU生态。
不过,总的来说,GPU是一个非常复杂的产品,绝不仅仅只是一个开源GPU就能够与现有玩家五五开的,未来还依赖大量的研发与投入。
跨越专利、生态门槛是关键
目前的RISC-V可以说是初入 GPU赛道,未来能否取得更好表现,业界也在关注。David Harold就表示,GPU确实是一个很难的赛道,如果不是这么多专利保护起来,不会看到现在世界上只有为数不多的几家GPU。RISC-V肯定也会面临这些困境,很难克服这种挑战。只有完全克服这些挑战才能成为大家更加认可的开源GPU。
生态也是RISC-V未来发展过程中面临的重要挑战。无论是x86、ARM,还是早期市场上的MIPS、PowerPC等芯片架构,决定竞争成败的都不仅是产品性能本身,还包括是否具有丰富的上层应用,以及高效的软硬协同。平头哥半导体副总裁孟建熠指出:“RISC-V将继续向高主频、高性能演进。而随着稳定硬件的出现,软硬件全栈成为必然。同时,RISC-V将走向更广的生态合作,在商业合作上涌现更多新模式,软件持续丰富,应用不断多样化。这是未来RISC-V发展的大趋势。”
那么,下一步RISC-V厂商就应当积极加强自身产业生态的营造,使上层的软件与应用丰富起来。Imagination 公司技术产品管理高级总监Stephen Barton指出:“GPU其实是一个很复杂的东西,不光是硬件开源了就可以直接为大家所使用,还要有相应的DDK(设备驱动程序套件)和应用软件。这些软件和DDK的开发是否是开源硬件同来源的公司提供的?优化程度如何?能不能完整地支持各种不同的接口和各种Open GL(开放图形库)?这些都是很复杂的事情,绝不是一句简单的开源就完事的,还有大量细致的工作要做,还有许多挑战要面对。”
David Harold也承认,现在有很多与RISC-V相关的IP供应商,但能提供GPU IP的并不多。对RISC-V来说,GPU是一个相对新的领域,更加需要产业链上下游的企业共同携手,才能取得突破。但是,中国科学院软件研究所总工程师武延军也强调:“虽然目前RISC-V还局限在一些对算力和软件生态丰富程度要求不那么高的领域,但是它的商用时机已经到了,以此为起点今后它的加速度是惊人的。”
用RISC-V做GPU,有好也有坏
用RISC-V做GPU,有人拍手叫好,也有人觉得多此一举。
觉得它好的人,认为RISC-V可以直接套用RISC-V的生态,不需要完全自建GPU生态,规避了与CUDA的专利对决。毕竟这是个开源的GPU IP,大家都加入到开源建设的大家庭,就能够弥补GPU生态不足,也不容易踩到知识产权的坑。
与此同时,每个SM核的独立性更好,可以执行比常规GPU CUDA核更复杂的计算。如果加上MMU,未来甚至可以在每个SM核上跑操作系统,非常有利于虚拟化。
觉得它不好的人,认为目前的RISC-V GPU产品,都是目前NVIDIA的GPU的形似物,设计没有什么太大差别,而HBM这样的器件八成是用不起的,其它诸如Nvidia GPU里面的Texture Unit也是缺失的。
更何况,CUDA这样的生态是很难跨越的鸿沟。有大佬曾言:“如果你看一下GPU的生态系统,就会发现工具链是由NVIDIA控制的,包括AMD在内的其他竞争对手都试图打破垄断,但失败了。通过扩展RISC-V标准指令集,几乎不可能与不断更新的NVIDIA生态系统兼容。另一方面,也很难重新开始,因为英伟达拥有先发优势。”
所以,对于大部分RISC-V GPU来说,支持CUDA生态至关重要,我们也看到许多厂商确实也是这样做的。因为虽然通过LLVM可能只需要重构compiler后端,但性能好不好就是另外一回事了。
还有比较激进的观点,认为从RISC-V开始做GPU,不如直接从白纸开始做。他们认为,要使基本的RISC-V指令集适应GPU任务,需要大量投资来定义自定义ISA扩展,构建高度复杂的微架构更改,并对开源工具进行大手术,使它们几乎与原始工具相似。这样一来,使用RISC-V的几乎所有潜在价值,都被定制架构比下去了。
就连上海交大也曾经说过,“我们想做的是一个独立完整的GPGPU架构和指令设计,而不依赖于现有RISC-V CPU开源指令,这样才能更完备地打造和融入原生的GPGPU生态 ,从而与现有的各种CPU系统无缝衔接。”所以因此,他们做了“青花瓷”这样一个定制的开源GPGPU架构。