最近几年有幸参与公司GPU芯片的软件开发工作,目前公司和个人都到了一个十字路口,趁着闲暇时间从一个软件工程师的角度梳理总结一下GPU相关知识。知识多数来自网络和个人经验。
GPU
GPU是Graphics Processing Unit的缩写,第一款真正意义的GPU显卡是Geforce 256(NV10),1999年8月由英伟达发布。据说GPU的理念80年代就由IBM提出,但是没有实际产品佐证。1994年索尼也使用了这个概念,不过英伟达将GPU概念发扬光大。
Render GPU
Render GPU,目前网络上这个概念并不流行,可以称为图形GPU或者干脆就说是GPU,但是为了与GPGPU对应起来,所以专门找到Render这个词来替代图形。Render一词特别说明此GPU主要功能是完成图形和图像渲染。
这里有必要说一下自己的理解,单纯的GPU概念中应该没有视频处理的功能,也没有图形和图像显示的功能,或者说后两者不是GPU的核心功能。但是目前的GPU产品尤其是Render GPU产品都将后两者功能集成到GPU中,N卡、A卡和I卡都是如此。
GPGPU
通用图形处理器(General-purpose computing on graphics processing units,简称GPGPU),其核心是支持浮点数 并行计算。这个领域的王者是N卡。
目前国内很多创业公司正定位在此领域,感觉技术难度比Render GPU还高,毕竟Render GPU还有很多IP可以借鉴。不过考虑到互联网和自动驾驶领域的实际情况,强大的现金流和需求,也许未来几年GPGPU会比Render GPU的发展要好。
桌面GPU和移动GPU
PC时代跟Intel竞争的失败者,转入移动市场,同样3D显示时代NV的众多竞争者纷纷转行进入移动领域。
桌面GPU应用场景复杂,需要支持Windows,要支持不断发展的游戏市场,功耗不是考虑的重点,性能才是。软件方面Windows是重点,Linux方面非常小众,甚至因为源代码不开源,被众多开源界大佬诟病,不过为了商业利益,也可以理解。
NV,AMD和Intel是桌面GPU公认的王者。
移动GPU,应用场景相对简单,更需要在功耗和性能做权衡。
下面罗列了一下重要的移动GPU企业。
IP授权 | 芯片 | 产品 | |
---|---|---|---|
IMG | √ | ⅹ | ⅹ |
ARM | √ | ⅹ | ⅹ |
图芯 | √ | ⅹ | ⅹ |
苹果 | ⅹ | √ | √ |
三星 | ⅹ | ⅹ | √ |
高通 | ⅹ | √ | ⅹ |
华为 | ⅹ | √ | √ |
联发科 | ⅹ | √ | ⅹ |
图芯,恐怕是其中名气最小的,但是作为IP授权商,客户也不少,前期的华为海思,韩国,日本和欧洲一些企业都购买过图芯GPU授权。
外国GPU
这里主要是从网上收集的一些资料来展示GPU发展的历程,明星企业和产品。通过这些历史信息来说明国内GPU的技术起源,根据技术起源大概推测实际性能,性能瓶颈和未来发展趋势。
NV
1993年在美国硅谷黄仁勋和两位同事开始创业,公司起名Nvidia,1993年硅谷芯片产品正处于蓬勃发展之中,显卡只是其中之一,网卡,硬盘芯片,声卡和显卡等等每个芯片细分行业都可以支持百亿甚至千亿的规模。当时NV只是众多显卡芯片创业者中的一个,3Dfx和S3算是NV创业前期最最主要的两个对手,大约6年后NV收购3Dfx,而S3则被威盛收购,NV成为最后的赢家。
根据各方面的资料我们总结一下NV成功的几个要素:
- 不可否认NV GPU本身具有一定的先进性,虽然NV1芯片产品销量并不好,但是让NV找到了芯片定制客户,日本游戏机企业世嘉委托资助NV开始研发游戏机显示芯片,项目资金对于创业初期的NV来说至关重要。
- NV放弃自主3D-API转而支持微软Direct3D接口,这样获取的微软的支持,NV进军个人PC和游戏市场;
- NV专注于芯片设计,芯片生产交给台积电(TSMC),显卡生产和销售则交给帝盟(Diamond)等合作厂商,芯片和显卡的生产都在台湾内完成,各方面的因素确保NV显卡的生产成本远远低于美国的3Dfx和德国的S3,销售利润却比后两者要高。
- 与微软良好的关系使用NV获得微软Xbox订单,进而获得索尼PS订单,进而与任天堂合作,当然NV也即将迎来最重要的对手ATI。
AMD-ATI
ATI也是华人创办,而且比NV还要早,不过ATI是加拿大企业。1985年何联合另外两个加拿大香港移民在多伦多创办了ATI公司。1985年对于很多香港人是很特殊的一年,很多人都选择了移民,加拿大是一个首选。香港很多影视作品都有过类似片段,网传段子著名喜剧之王周星星同学也想移民加拿大,但是因为背景问题被拒绝,就是不知道这个背景是指帮派背景,还是大陆背景。
ATI产品定位也是显卡,不过是2D显卡,而NV定位是3D显卡,每次技术革新都会出现一个新的王者企业。不过3D时代ATI并没有落伍,反而成为NV最大的竞争对手。由于商业竞争,微软,索尼等公司先后将最新一代产品的显卡芯片交给ATI,2003年左右ATI一度超越NV成为最大的显卡芯片公司。不过2006年ATI卖身给AMD,回过头来看显卡市场多数时候A卡都被N卡压制。
这里不得不提到2002年发布的芯片产品Mobility Radeon 9000,简称M9芯片,算是国产GPU的鼻祖。
INTEL
作为CPU时代的王者,成也CPU,败也CPU,手机基带芯片败给高通,独立Render GPU败给NV。
2D时代,Intel就曾经生产过显卡。1998年Intel联合其他3D显示企业研发了最后一款独立GPU,但是以失败收场,从此Intel彻底放弃独立显卡市场,专注于集成显卡。AI时代到来,Intel再次进入独立GPU芯片市场,不过依然失败。
这里说一下个人的测试经验,比如OpenCL性能,原生IMG GPU OpenCL计算单元有4个,而Intel集成GPU却有12个,可以简单理解理论上IMG GPU OpenCL计算能力只有Intel 集成GPU的三分之一,考虑到辅助模块和内存使用效率实际计算能力更低。
IMG
IMG是一家英国公司,3D Render GPU显卡败给NV,公司转型提供Render GPU IP授权,苹果曾经是其最大的客户。目前国内Render GPU显卡公司多数使用此公司授权。
光线追踪,单核算力1TFlops;4核6TFlops;看到这些信息就可以基本确定此款产品属于IMG Redner GPU架构。
ARM
ARM最初的定位是出售移动CPU IP,随着移动端显示功能需求增强,ARM集成了自家GPU Mali。出于各种考虑ARM GPU硬件授权策略也与CPU不同,硬件上授权,但是软件上只提供封装库,这套机制大大限制了Mali GPU整体性能。 近几年,ARM不断在GPU上的发力,Mali整体性能正在快速提升,网上并没有找到Mali算力,Arm宣传也是自己跟自己比较,Render性能和并行计算能力都不好界定,两代Mali测试glmark2跑分对比是680:1767,差不多3倍提升还不错,我们自己的显卡glmark2跑分大约是3000左右。
这里要特别说一下Panfrost,Panfrost是开源大佬对Mali GPU的firmware功能的破解实现,用软件替代硬件,所以Panfrost框架GPU的运行效率应该不如原来直接硬件运行方式。希望学习GPU框架的同学可以从Panfrost代码入手研究,Panfrost Mesa可以让我们很好的理解整个GPU的软件框架,甚至尝试提升Mali GPU性能。
苹果
苹果是一家商业公司,有着与众不同的基因,产品定位高端,品质追求完美,实际生产过程中外包代工和封闭体系相辅相成。
GPU方面,苹果使用IMG GPU代替Arm Mali GPU让苹果手机的显示品质远超所有竞争对手。芯片上苹果自主研发自己的GPU,软件上苹果放弃OpenGL框架专攻Metal私有显示框架。
图芯
图芯公司同样起源于美国硅谷,创始人还是改革开放后才去美国的上海人,不过图芯在桌面GPU和移动GPU领域没有多少产品推出,后来被兄弟公司芯原收购后专注于GPU IP授权。
S3 GPU
S3 GPU在与NV的竞争中失败后被威盛收购,后续兆芯接手。
国产GPU
芯原
芯原是中国大陆排名第一的IP提供商,收购兄弟公司图芯让芯原完善了自己的IP库,Vivante GPU授权给国内众多厂家,华为,景嘉微,甚至龙芯都使用过此GPU IP。
网上盛传Vivante GC4000 GPU IP的一个总线bug曾经让华为海思付出过惨痛代价。
网上搜索Vivante GPU,可以发现很多信息,很多国内外的厂家都使用过此授权。
IMG
这里用IMG代表国内所有使用IMG GPU IP授权的公司,当然也包括笔者所在的公司。GPU IP授权跟真正的GPU显卡之间还有不小的差距。
IMG GPU的软件框架比Arm Mali GPU的软件框架完善很多,原生GPU性能提升关键是添加DMA支持,而且整个框架基本。
景嘉微
景嘉微成立于2006年,最初是做ATI M9的Vxwork驱动移植,经过辛苦研发终于点亮了屏幕,获取了中航某所的订单。后续景嘉微又实现了M9芯片嵌入式操作系统下3D图形处理功能。几年后景嘉微研制出国内首款Render GPU芯片JM5400,主要用于机载,舰载和车载等军事领域;JM7200芯片和JM系统则杀入民用市场,当然操作系统是Linux。
曾经对比过一款景嘉微的显卡,具体型号就不说了,公司产品OpenGL性能测试会稍微强于景嘉微显卡,毕竟公司在这块还是具有一定实力。但是信创市场上,显卡适配方面景嘉微的表现要好很多,毕竟景嘉微已经深耕信创市场多年。
对于景嘉微的未来,我们可以从目前景嘉微三代产品的推出时间做一个推测,2010年GPU立项,2014年推出第一代JM5系列,2018年推出第二代JM7系列,2021年推出第三代JM9系列,目前2024年5月,景嘉微官网也只有这三代产品宣传,第四代GPU并没有推出,网传景嘉微已经和国内一家GPGU的公司开展合作共同开发下一代GPGPU,希望景嘉微尽快推出自己的新一代产品。
华为
华为海思GPU 实力国内第一应该无人反对,尤其是自主可控方面,是其他所有厂家无法比拟的。
通过十几年的不断研发,海思ARM芯片设计能力基本达到了ARM架构的第一梯队,与国外的高通,联发科伯仲之间。当然整个过程中也难免要购买其他人的专利授权,比如Vivante和ARM的Mali,华为本身的现金流和人才储备,让华为的GPU能力获取了极大提升,不但Render GPU方面追上了高通,同时GP GPU方面也有所突破。
这里说一下,自己对Render GPU和GPGPU的实现的差异,我觉得两者在硬件上是相通的(NV的显卡就说明这点,显示渲染和并行计算,一个硬件就可以实现),两者主要的差异体现在软件适配上。简单理解Render能力需要软件适配OpenGL框架,当然也需要适配DC显示层面,目前华为还是Linux为主。GPGPU并行计算这块主要考察OpenCL的能力,华为昇腾芯片推广自己的软件架构,猜测华为希望自己可以像NV那样推广CUDA来代替OpenCL。
海光
海光本身起点很高,国家队,中科院,精英专家,外加AMD授权,海光的成功可以说集合各方面的因素,天时地利人和。海光产品过硬,CPU性能在国产芯片中处于领先地位,国产化和信创市场上海光同样是明星企业。笔者曾经见过一个西部某研究内部导弹轨迹显示项目招标资料,里面就明确提到服务器是海光CPU。另外海光股市上表现也不错,子公司市值超过其母公司。
但是海光GPU却名声不显,据说AMD 交付给海光的GPU,去掉了显示渲染(Render)部分,所以海光GPU其实是GPGPU,但AMD 本身的GPU的并行计算部分也不算强(相对于NV来讲),所以海光GPU使用场景非常尴尬。想象一下这个场景,海光CPU GPU组成服务器,先不管GPU性能如何,但是想要点亮服务器屏幕,却不得不额外添加一块显卡才行,这滋味肯定有点酸爽。
网传海光将芯片从7nm工艺改为28nm工艺,最后结果并不如人意。
对于未来发展,猜测GPU应该不是海光的重点,CPU才是。合理推测海光GPU有几个方向,第一,突破AMD限制,自己添加渲染和显示部分,学习Intel实现集成Render GPU;第二,学习国内其他企业深度绑定CUDA。第三,再有魄力一点,学习华为推广自己的软件框架。
兆芯
兆芯最早起源于S3公司,S3经历了2D和3D时代,最后在与NV的竞争中失败,后来被威盛收购,再后来兆芯接手,后面独立成格兰菲。
兆芯2015年发布ZX-1000芯片,主要应用于机顶盒。2018年兆芯发布Arise GT-100芯片,新架构也采用桌面GPU通用架构TBDR(Tile-Based Deferred Rendering);相应的移动端GPU构架则是TBR(Tile-Based Rendering)架构,前者强调性能,而后者更注重性能和功耗的平衡。
目前2024年5月格兰菲官网显示最新GPU产品还是Glenfly Arise-GT-10C0显卡。
深流微
说实话,前面很少了解这个公司,只是偶尔的机会从深流微员工那边了解到深流微的GPU架构是自主研发架构的,也同样在研究Mesa和shader。只是公司遇到问题没有流片。
龙芯
龙芯GPU,后面了解了在补充。
摩尔线程
看摩尔产品介绍,大概率也是使用IMG GPU IP框架,但是摩尔的思路是不单支持Linux系统,同时支持Windows,B站很多粉丝评测其产品。
壁仞科技
只说一个趣谈,壁仞科技发布通用GPU芯片BR100,BF32算力达512 TFLOPS,算是国内的Top1,但是被美国直接加入黑名单,台积电无法继续代工。
瑞星微
瑞星微GPU完全使用Arm Mali GPU,这里特意提到瑞星微,因为国内能够将GPU完全开源的厂商不多,笔者经过一段时间的适配,终于通过Panfrost和Mesa将Rockchip Mali GPU跑起来,这里跑起来是编译运行Panfrost驱动和Mesa用户层代码。
同时根据IMG GPU经验,定位Mali GPU Render性能瓶颈所在。简单来说要想提高Mali GPU性能必须使用DMA实现加速,这就要求内存使用必须统一管理,所以首先需要将DRM框架统一到Panfrost框架中,同时内存申请,使用和分配也都通过Panfrost驱动来实现,其他诸如DRM驱动和Mesa应用层代码中申请使用。继续提高GPU性能,则需要优化DMAC实现,比如专门DMAC替代普通DMAC实现内存初始化和2D/3D纹理拷贝。至于更深层次的shader性能优化,则需要更加深入的了解Mali架构设计。
全志
全志GPU也是完全使用Arm Mali GPU,不多说,用过的都知道啥情况。
参考链接
https://www.sohu.com/a/724792815_116132 https://www.acfun.cn/a/ac19684485?ivk_sa=1024320u
https://mp3.zol.com.cn/141/1410054_vall.html
https://www.pcpop.com/article/150436.shtml
https://www.pcpop.com/article/179977_all.shtml
浅谈未来两年移动SoC GPU发展状况 (IMG-PowerVR篇) - 哔哩哔哩 (bilibili.com)