上一次看到开源GPU的发布,还是5年前,威斯康辛-麦迪逊大学的宣布了世界上第一款开源的GPGPU——“MIAOW”,当时引起业界很多瞩目的眼光,5年过去了,这个开源GPU项目在芯片江湖里面没有引起太多的波澜;最近,基于RISC-V的RV64X 开源GPU项目又一次引起了人们的眼球,那么这次开源GPU胜算几何?
如果说,MIAOW是授人以鱼,直接把一个可以运行GPU原型发布出来,使用者或者研究者只能选择用还是不用的二选一。这种方式,其实有点像RISC-V出现之前的OR1200,是开源一套代码,代码开源看似非常有吸引力,但是应用限制很大,就是“鞋子虽好,不一定合脚”;”削足适履“在已有框架下的代码改动就不是一件愉快和高效的事。因此OR1200和RISC-V的影响力不可同日而语(好多小伙伴可能根本就没有听说过OR1200);
那么,这次RV64X的思路就完全不同,这不是开源一套代码,而是制定开源了一套图像处理的指令集,这些指令集可以高效用于3D图像和媒体处理,也是一个融合了CPU和GPU的指令集,因此被定义为RV64X;
那么这些指令集都有什么特点?总结一下,简单来说就是两点:
一:用于图像处理的数据寄存器结构
二:用于图像处理指令;
这两点有点DSA的意思;专用于图像处理的架构,CPU和DSA的结合;
先说图像处理的数据寄存器,和CPU的通用寄存器32/64bit不同,RV64X定义了136bit的寄存器集合,其中包括128bit(数据)+8bit(数据类型);数据类型包括像素,点,向量,矩阵等不同数据类型,并且最多有256种数据类型,充分考虑了以后的扩展需求;
这128bit的数据包括:也可以拆分成8/16/24/32的定点和浮点;8/16/32bit的向量运算;2X2;3X3;4X4的矩阵运算;这些寄存器可以像通用寄存器一样随机读写,也可以像通过POP/PUSH来操作;
第二点:RV64X定义了一套图像处理的扩展指令,这些指令包括以下几类:
1:向量和矩阵处理(包括向量矩阵操作/矩阵乘加/点乘/叉乘/求逆/行列式/插值等),
2:数学函数处理(包括sin/cos/tan/exp/pow/log/rcp/rsp/sqrt/cordic等)
3:像素处理(z值检测,光栅操作等)
4:2D/3D图像纹理处理,贴图,绘图等;
5:帧缓冲区处理(同步,压缩,解压缩,位块转换,图像处理变换等)
6:可选的指令类型(可以通过微码实现)
这些指令对于程序员来说,它看起来就像一个带有64位长指令的硬件,这些指令被编码为标量指令。编程模型是一个明显的SIMD,即编译器从带前缀的标量操作码生成SIMD。因此目前来看,编译器的工作量也不小;当然,它将与Vulkan兼容,并后续支持其他api(OpenGL、DirectX和其他api)。这些也是其生态的一部分,这个也是很大的工作量;
除了指令这些寄存器结构和指令类型,这个团队还给出了一种实现架构;
如果用户单个性能偏低的话,还可以支持可扩展,类似多核,反正NVIDIA的GPU也是无数个SM流处理器的扩展; GPU就是这点好;类似于着色器这种应用,本身是数据不相关的,因为可以发扬“核”海战术来实现高性能的算力,同时,RV64X也为计算机视觉,机器学习,图像渲染,光线追踪等应用提供了新的思路;如果这些设想能够实现的话,通过RV64X可以实现用户自定义的GPU,特别是可以根据指令来裁剪;根据需求设计用户自己的GPU,想想还是挺有吸引力的;
因此说,RV64X这个思路还是很清晰的,开源指令先行,这只是开了个头,这些指令如何具体定义,怎么把这些指令变成成一个可以运行的GPU还是要有很长的路要走的;对于一个还未出生的“孩子”,RV64X,就像发起团队所讲的,其本身并不是和NVIDIA/AMD等这些商业巨头竞争,其在于能够提供一个可编程,小而美,低功耗,高能效的开源IP更为实际,
歪睿老哥认为,这种GPU其实更适合支持物联网等计算的场合,可以应用于MCU,目前可以不考虑服务器GPU的应用;比如:于摄像头内部,例如IPC SOC内部的GPU和机器学习应用;
不足的是,目前这些都还是初级阶段,就像上文所说“未出生的孩子”,指令集的细化,编译器设计优化迭代,各个大厂或其他机构跟进的力度等都是非常重要的因素;要知道基于RISC-V应用的处理器已经进入10亿的量级了,而RV64X是否能够复制RISC-V的魔力,有两个关键因素;
1:业界参与:RISC-V从MCU开始,到MPU甚至更高性能处理器,一路走来,依赖很多业界的支持,这包括很多创业公司也有很多大厂,有学术机构和科研院所;
2:价值回报;RISC-V给业界参与的各个创业公司/大厂/研究机构都提供丰厚的回报,包括且不限于节省的IP授权费用,可定制自有灵活架构,论文或者创业机会;正是RISC-V给CPU这个行业带来了新鲜的活力;
这么从业者的共襄盛举,实现了投入-产出-投入的正循环,才能有RISC-V蓬勃发展的今天;RV64X要在GPU这个领域大放异彩,而不是昙花一现,依赖于投入和产出的正循环;不过RV64X开源指令,这第一步就已经走在正确的道路上了;