本文目的非技术指导,并不保证其中数据资料的准确性,欢迎指正。
我们相对熟悉的GPU是一个高热高功耗,对于游戏PC来说已经取代CPU成为PC内最大发热单元的独立部件。
更进一步还能了解到GPU是非常依赖于显存带宽的,乃至于商家也会使用这类手法推荐给消费者性能其实未必高的高位宽的上代高端卡。
但是还有一种GPU,在功耗和带宽都受限的情况下发展形成,它们随着掌上游戏机和高端智能手机的普及正越来越变得为人熟知。
功耗如何受限呢?
目前最低端的桌面独立显卡功耗大约就有20w,顺便一提,这大约就是一台Wii的功耗,笔记本用的有更低的8w左右。
但就算是8w,对于一个只有3~6wh的电可用的设备来说,也是不切实际的高度了。
一般来说,整一个SOC,包括了CPU、GPU一干,在常见应用下的平均功耗不能超过500mw。
带宽如何受限呢?
一条普通的内存条,可以说是PC内功耗最低的部件,一般的款式不需要散热片即可工作,它的大约功耗为3W,但这个3W对携带设备来说也已经过于奢侈。
携带芯片算是最好选择的大概是16bit 533Mhz的LPDDR2,一条DDR3内存条1/12~1/8的带宽,最低端显卡(64bit 800Mhz GDDR2)的1/6带宽。跟前面的功耗份额一样,整个SOC共用。
PowerVR在携带GPU已经几乎是垄断者,除高通之外(因为收购了ATI Imageon,所以有自己的GPU,名为Adreno GPU,其实就是Imageon Z430),三星和德仪都是用PowerVR的方案。
甚至就连英特尔的Atom Z系列,所配套的GMA500,其实就是SGX535的别名。
PowerVR为什么可以做到这个地步?
因为它有绝活,在DC时代人们就听说过隐面消除一词,大约可以节省2/3的渲染工作量。
不过现在这个的名词一般称作:延迟渲染,而PowerVR自MBX起,就将其更进一步,将分块渲染和延迟渲染结合起来。
延迟渲染是先判定哪些像素是最后需要显示的再着色。
而分块渲染则是把画面分割成小块,每次渲染一小块一小块,来完成一整帧。
前者降低了GPU的工作量,后者则大大减少了需要的显存大小。
这都是非常适合低功耗低带宽低容量的携带领域的特征。
PowerVR作为先行者,在这方面留下了相当高的专利门槛,特别是延迟渲染方面,硬件上就专门为延迟渲染设计的就这么一家。
而且PowerVR推出新产品的速度也很快,可以支持16核并联的SGX543理论上可以组出性能超过9600GT的显卡,而SGX545更是在携带领域第一个实现了OpenCL的支持,可以享受通用加速。
既有专利护身,又有市场占有率带来准标准优势,研发方面也不含糊。
基本上,在携带GPU市场而言是不可战争的对手,它在携带领域GPU的领先优势不亚于桌面显卡的A、N跟其他厂商的距离。
而DMP,一个不知名的厂商,没有一只量产的手机使用了它的GPU。
但是,事实上3DS现在展出的画面远远超过iphone。
为什么?
因为DMP也不是蠢到直接把桌面GPU简化下就拿过来的企业。
PICA200的原型名为ULTRAY2000,是一个桌面领域的DX9显卡,自然是具备shader的。
但是,在把ULTRAY2000改进到PICA200后,却成了没有shader的DX7级别。
把不常用的数据类型删除减少管线数量这些是把桌面显卡改便携显卡很常见的处理方法,毕竟OpenGL ES本来就是OpenGL的简化版,而且由于分辨率的降低,性能要求也更少。类似的设计很多,Tegra的GPU来自NV40,Imageon Z430来自C1,都是简化数据支持和删减管线数量的结果,但没有从DX9改成DX7的。
但是,和其他的删减管线相反,PICA的管线保留了ULTRAY2000完整的4条,而功耗却大大的降低了。
因为和可编程的shader比起来,固定管线非常省电。
同时因为固定管线不可编程也就不需要写指令,而指令同样需要储存在显存之中需要消耗带宽和容量,换而言之,固定管线对于显存的依赖也更少,而这正是PowerVR本来的优势。
但是固定管线无法支持新的特效又该怎么解决呢?
靠扩展
而显卡的扩展当年是一个噩梦
早期显卡OpenGL会议上各家自说自话,D3D还没成熟,各家显卡商都有大量胡乱的扩展,游戏如果需要发挥显卡的性能开发非常困难,而且当时的3D游戏兼容性也很差。
而且扩展是固定管线的设计,它可以增加显卡的特效,不像shader可以编程实现新的特效,一旦设计完成拿去生产一切就固定下来了。如果选择的不好,要么浪费了,要么该有的没有,那都不是好结果。
MAESTRO扩展如何避免出现这种情况呢?
那就是靠后发优势,2005年,伴随ULTRAY2000一起,MAESTRO-1扩展技术问世了。当时DX9已经使用多年,基本上DX9硬件的可能性,它能实现的各种特效都已经非常清楚,其中有几种特效最为常用的,MAESTRO-1就用固定管线把他们都实现了。所以MAESTRO-1的特效每一条都是可称作DX8、9名片的代表性特效,有用了就感到这是DX9游戏,或者DX9游戏怎么可能没有用这个的级别。
而且因为都是原有的代表性特效,这也避免了兼容性问题,DMP提供的开发工具可以很简单的把原有的DX9特效转换为MAESTRO上的实现。
在PICA200投身到携带领域后,MAESTRO-2G诞生了,在MAESTRO-1的基础上加以改进,最大的变化就是加入了过程纹理和曲面细分。这两都可以有效减少对显存的需求,可以说是非常适合于携带领域的功能。
Tegra,出自老牌图形厂商Nvidia,更重要的是有传闻它就是3DS将采用的SOC。
这是怎么样的一个GPU呢?
这不是GPU而是包含了GPU的SOC,实际上Tegra比较特色的地方也不是GPU。
它是一个自称7、8核心的SOC,除了1、2个传统意义上的CPU外,包括一个音频解码核心,一个支持1080p H.264硬件加速的视频解码核心,一个高清视频编码核心,一个最高支持1200万像素摄像头的图片/照片处理核心,一个GeForce 2D/3D图形核心以及一个用于芯片内部数据/功耗管理的ARM 7处理器核心。
最大的区别就是音频、视频的解码都是硬件实现,而且,没有一般SOC中担任这个任务的DSP核心。
DSP是可编程的运算单元,通过编程可以实现很多功能,但是功耗也比较大,硬件实现的不灵活,功耗就低多了。
同时,Tegra塞了ARM7来管理芯片内通讯,一般情况下这是主CPU的任务。
以播放MP3为例,一般SOC的主CPU需要工作虽然运行在比较低负载的情况下,同时DSP也在忙;而Tegra的主CPU可以完全进入休眠,只有ARM7+硬件音频解码单元在工作。
于是,可以大大降低功耗。
GPU呢?NV作为GPU大厂,难道卖点不是GPU么?
Tegra里面塞有一枚基于GF6100集成显卡,加入了CUDA支持的GPU核心,规模是1VS、2PS,频率是120MHz,应该说,比我最初想象的要弱……
这个GPU的性能应该说是不怎么值得一提的,实际上NV除了拿Tegra用小屏幕跑过TNT2都能跑顺的雷神3也没有对自己的3D性能多说什么。
而且实际采用Tegra的产品也没有拿来主打3D游戏的,Zune HD、KIN手机,反而无一例外,都拿MP3和视频播放当作卖点。
应该说,Tegra的3D性能强劲很大程度上是因为其出自NV带来的一种错觉。
那么Tegra2呢?
首先我要说2010年1月才发布的Tegra2不可能用于一个2010年内上市的游戏机,因为设计产品、制作开发套件、制作首发游戏这个过程来不及。
Tegra2带来性能提升的主要改动,大概有3处,一个是内存控制器从支持LPDDR1扩展到支持DDR2,带宽大概翻了4倍;然后CPU从800Mhz的ARM11升级到了1Ghz双核的Cortex-A9,这也是4倍;还有GPU,因为没有太多蛋疼的人拿到Tegra2来做测试,官方又没有公布具体设计,具体性能还是未知,但是官方有一个说法“2x 3D graphics performance of previous generation Tegra”,就是说2倍,是Tegra2主要提升中提升幅度最小的。
要去如何评论呢?
PowerVR无疑是携带领域GPU的正统
而Tegra继承自桌面正统GPU
而PICA200只是邪门歪道的取巧设计
但是在机缘巧合之下。
比方说DX9流行的非常久,2002年有了9700,而到现在高清家用机是DX9的GPU,还有大量使用XP的电脑,DX9还生命旺盛。这使得PICA200有4年的时候可以总结DX9的主要特效,而且这些特效到现在还一点都不过时。
比方说游戏机是一个硬件规格稳定的平台,游戏商本来就是针对你来开发,不标准的设计也没有什么问题,换成跑安卓的手机就不一样了。
比方说开发3DS的是对续航非常在意的任天堂。
在机缘巧合之下,DMP的PICA200相对PowerVR、Tegra,确实是合适的多得多的选择。
其实,NV在Tegra之前也有过一款携带GPU的设计,
实际上那款要比NV40的缩水版要有意思多了。
那就是2004年随着GoForce 3000/4000一起问世的GoForce 3D,或者说它的代号AR10,这是一款和前面的GPU截然不同的设计。
前面那些PowerVR很正统,PICA200是把shader取消掉只留固定管线来节省功耗,Tegra是把NV40缩减规模降低频率。
而这款GoForce 3D呢?它把一些现在GPU都不敢丢掉的固定部分也给除掉了,只使用可编程的shader来实现。
一般的固定管线GPU是很长一条流水线,一个像素从头走到尾就算完成了输出。
而GoForce之中,要反复在在shader上跑,每一次处理一个功能。
GoForce是很极端的设计,它确实做到了比固定管线更少的晶体管和更低的功耗(我前面说了,固定管线比shader更省晶体管和功耗,但是做事做绝就又反过来了),而且理论性能还差不多。
看起来很好。
但就结果而言这款设计称不上成功,NV搞Tegra时也没有去延续它。
为什么呢?
一是就我的理解,GoForce 3D架构的实际性能不怎么样,它的理论性能我怀疑只有渲染那种一张贴图搞定的天空一类,单次贴图,不考虑前后景遮蔽关系,没有半透明的部分时才能实现。
实际上真有这种画面,也是支持OpenVG的2D卡就可搞定的。
而复杂画面的时候,一次渲染都需要要反复执行,性能表现就比用长固定管线一次搞定的就要悲剧很多了。
当然现代显卡的shader也是类似的流程,不过在结构上早就做了对应的改进,比方说SP的数量要比Tex多得多,更细化的分支,更大的并行度,线程管理等等,同时像TA、Z一类的实在是必然用到的单元,还是保持固定设计。
二就是实在是生不逢时,支持shader的OpenGL ES 2.0是2007年才发布的,GoForce 3D虽然内含shader但还是只能跑OpenGL ES 1.0、1.1的API,根本没有机会发挥自己的特长。
三是因为NV没有延迟渲染啥的专利优势,为了弥补显存过慢的问题,采用了edram,而且集成的很大,640KB甚至2.5MB,这部分的缺陷使得面积优势并不存在;还有除了GoForce6100(其实我不确定这个用的还是Goforce 3D核心)是个集成了ARM11的SOC外,GoForce系列是独立显卡,相比PowerVR一贯的SOC方案,那外部总线的功耗消耗,更难协调的电源管理使得功耗优势很可能也不复存在。
结果就是成了各方面都显示不出优点,还用起来比较慢的玩意,失败也在情理之中了。
这款东西非常独特甚至可以说是超前,现在精神上的继承者可能是PS3最初计划采用的Cell GPU或者英特尔的LRB一类使用全可编程的管线的设计,这显然是属于未来的。
尤为有趣的是为了降低功耗,GoForce 3D走了和PICA200完全相反的路线。
原帖由 @哭泣的大屌 于 2023-12-8 20:28 发表
A9开始的安卓U都是工艺地狱,性能因为发热很难发挥出来,PSV能发挥更好的效能,但是因为CPU的工艺限制,才没有拉开3DS。
3DS用最成熟的架构,gpu部分裸眼3D需要渲染双屏,加上开发工具落后,也只能发挥CPU一半性能。
这个开发环境问题各家都有,索尼在PS4迅速扭转回来,任天堂则因为这个问题wiiu直接大暴死一代。
欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) | Powered by Discuz! 6.0.0 |