前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件开发者谈GPU

软件开发者谈GPU

原创
作者头像
tankaro
发布2024-05-20 16:53:03
1430
发布2024-05-20 16:53:03

最近几年有幸参与公司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成功的几个要素:

  1. 不可否认NV GPU本身具有一定的先进性,虽然NV1芯片产品销量并不好,但是让NV找到了芯片定制客户,日本游戏机企业世嘉委托资助NV开始研发游戏机显示芯片,项目资金对于创业初期的NV来说至关重要。
  2. NV放弃自主3D-API转而支持微软Direct3D接口,这样获取的微软的支持,NV进军个人PC和游戏市场;
  3. NV专注于芯片设计,芯片生产交给台积电(TSMC),显卡生产和销售则交给帝盟(Diamond)等合作厂商,芯片和显卡的生产都在台湾内完成,各方面的因素确保NV显卡的生产成本远远低于美国的3Dfx和德国的S3,销售利润却比后两者要高。
  4. 与微软良好的关系使用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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GPU
    • Render GPU
      • GPGPU
        • 桌面GPU和移动GPU
        • 外国GPU
          • NV
            • AMD-ATI
              • INTEL
                • IMG
                  • ARM
                    • 苹果
                      • 图芯
                        • S3 GPU
                        • 国产GPU
                          • 芯原
                            • IMG
                              • 景嘉微
                                • 华为
                                  • 海光
                                    • 兆芯
                                      • 深流微
                                        • 龙芯
                                          • 摩尔线程
                                            • 壁仞科技
                                              • 瑞星微
                                                • 全志
                                                • 参考链接
                                                相关产品与服务
                                                GPU 云服务器
                                                GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档