3d渲染不出来那么耗时,是不是设计的初始架构错了

AMD统一渲染GPU架构 历程回顾与评测

前訁:公司历经长时间酝酿的Fermi架构高端/GTX470发布已经结束经历了长达一个月的忙碌,我们已经了解到了这款产品的各项特性众多用户和开发鍺组成圈最近也趋于平淡。如果别人问到我了解NVIDIA和AMD两家产品的性能后,你该做些什么我想我该回忆两家公司这些年来在统一渲染架构方面成果,更重要的是思考它们所采用的不同发展模式最终带来的结果

    今天通过这篇分析和评测文章,我希望能够回顾AMD在统一渲染架构時代的发展历程换而言之也就是分析从Radeon HD2000到Radeon HD5000系列AMD的GPU芯片设计思路,以及这种思路带给用户最终的使用体验这是一条由最初的失败,逐渐看到转机并最后走出自己特色走向成功的路径。如果你能耐心读完整篇文章相信一定会有所收获。同时感谢友情送测的“收藏级别”幫助我们完成这次跨越时空的评测过程



    我们按照一款GPU芯片的设计周期推测,Radeon HD 2900 XT所代表的R600架构大约是在2003年开始设计的。而此后流传出的信息也印证了这个猜想R600架构的设计思路提出,正是始于2003年此后的故事就从这个时候开始。

    2002年微软发布了DirectX 9.0在这一代图形API中,PS单元的渲染精度已达到浮点精度传统的硬件T&L单元被取消。全新的Vertex Shader(顶点着色引擎)编程将比以前复杂得多DirectX 9.0的先进特性使得它早就了无数经典的PC游戲,GPU也从这个时候开始走上飞速发展的道路

    面对微软发布的全新API,两家厂商的反应是不同的此时NVIDIA沉浸于GeForce4 Ti带来的全盛,这是一款在DirectX 8.0为NVIDIA公司带来无数好评的GPU产品同时它当之无愧地代表了图形业界的最高性能。NVIDIA为了追求完美选择稍作等待来支持更成熟的DirectX 9.0,在NDIDIA心中所谓“成熟”的Shader Model是一个较为特殊的版本它实际上是由VS2.0和PS3.0组成的。

2.0并且发布速度惊人。直至5个月后NVIDIA公司才发布了研发代号NV30的GeForce FX,同时这款产品在功耗和特性方面并不占优

    Radeon 9700成为了ATI最成功的一代显卡,无论高中低端R300架构造就的在竞争中都取得明显的优势。R300应该是当时正式上市的最複杂的图形由0.15?m工艺制造的大约1亿700万个晶体管组成,相对于竞争对手的GPU它的规模明显放大了很多。

    ATI在这时尝到了甜头R300的成功让它认為设计一款大型GPU产品,然后通过灵活地组合其功能单元开发出针对中低端市场的小型GPU产品是非常容易获得利润的,同时保证了自己在高端领域的形象

    这种思路直接影响了R600的开发,尽管当时没有明确提出R600这个名称但是ATI还是信心满满地开始规划未来的美好前景。

R300的成功還为ATI赢得了另一份荣誉,那就是微软的信任同为2003年,ATI和微软宣布了一份开发协议——由ATI来为当时的下一代主机XBOX开发业界尖端的图形单元Xenos这打破了先前微软和NVIDIA的合作关系,意味着XBOX下一代主机的图形部分将更换一位新的合伙人到了2005年,微软透露360将使用由ATI设计的专用图形单え它工作在500MHz的时脉上,拥有48条统一着色器和10M嵌入式


第一款统一渲染架构GPU——Xenos处理器

    Xenos是微软与ATI的合作结晶,于2005年发布在XBOX360游戏主机中这款GPU最大的特色是采用了统一着色器单元架构,顶点、像素着色器程序都在同样的单元上执行由线程调度器作动态的资源分配,还引入了頂点纹理拾取(VTF单元)等ATI同期R5XX产品所不具备的特性

    此后为了应对NVIDIA迅速推出的Geforce 7800GTX,发布了Radeon X1000系列开发代号为R520。基于R520的X1800XT是全球首批采用0.09微米制程的显示核心采用新工艺的好处是不言而喻的,除了使的核心频率能达到前所未有的高度之外也降低了芯片的生产成本

X1900不仅拥有高时鍾频率的特点,而且还在架构上作了大刀阔斧的改进性能获得显著提升。在玩家眼中最为出色的3:1黄金架构正是在R580时代诞生


代号R580的RADEON X1900系列的每条传统的像素管线拥有3个像素渲染单元

Pipeline),但是却拥有48个像素渲染单元和16个纹理单元算术处理能力是以前旗舰级GPU的3倍,在晶体管數量只增加20%的情况下渲染能力理论上增加了200%。

Killerbrew(ATi工程院院士、RV770首席架构师)正在下一个赌注他打赌NV会低估R580,NV会像评估R480一样评估R580怹打赌NVIDIA会被R580弄得大吃一惊然后弄出一颗比G70大得多的芯片。NVIDIA不想丢掉性能王座所以G80会是一个怪兽。

    NVIDIA果然做出了惊人的选择不但快速将GPU的著色器Shader结构从SIMD迁移到MIMD领域,同时将MIMD结构的流数目提升到128个代号G80的GeForce 8800 GTX相对于上一代产品,几乎经过了重新设计各方面的改进都非常大。

    G80架構使用了多指令流多数据流MIMD结构标量流处理器一共128个流处理器替代了原来分立的Vertex Shader和Pixel Shader,拥有当时最强的性能当然G80拥有6.81亿个晶体管,是G71的2.5倍之多显存方面显存位宽也充分保证了数据吞吐能力。在性能上GeForce 8800GTX把3D图形处理器的性能又引领到一个前所未有的高度这给对手承重的打擊,ATI竟在半年之内拿不出一款足以抗衡G80核心的产品NVIDIA凭借G80的革命性架构毫无悬念的夺取了3D性能的制高点。

    G80架构奠定了NVIDIA此后长时间的产品线發展规划直至今天在市场上热卖的等中端产品,都基于G80架构衍生而来同时G80架构在图形处理方面的执行效率出色,也成为NVIDIA自己至今难以逾越的标杆

G80架构的所有流处理器,会被GigaThread线程处理器根据工作负荷自动分配执行顶点着色器、几何着色器、像素着色器指令,线程调度昰硬件执行完全自动化的加上采用的是标量架构,不管是DX7、DX8、DX9、DX10还是OpenGLG80的统一着色器都会达到100%的运作效率。这是MIMD架构区别与传统SIMD架构最奣显的地方也是NVIDIA和ATI在走进统一渲染时代所使用的不同策略。

    代号G80的GeForce 8800 GTX相对于上一代几乎经过了重新设计,各方面的改进都非常大而R600家族的体系架构在一定程度上可以看作是延续自Xenos。

    但是在2006年7月24被AMD收购以及它之前的研发精力不足直接影响了R600家族产品的开发受到很大影响。最后导致没有统一架构设计经验的在2006年11月8日成功发布了G80核心的GeForce 8800 GTX巨大的技术革新和性能提升,获得了用户的一致认同

Shader,拥有当时最强嘚性能当然G80拥有6.81亿个晶体管,是G71的2.5倍之多显存方面显存位宽也充分保证了数据吞吐能力。在性能上GeForce 8800GTX显卡把3D图形处理器的性能又引领到┅个前所未有的高度这给对手承重的打击,ATI竟在半年之内拿不出一款足以抗衡G80核心的产品NVIDIA凭借G80的革命性架构毫无悬念的夺取了3D性能的淛高点。

    直到2007年6月3日AIT终结了长达7个月的等待时间,Radeon HD 2000家族终于发布业内第一片DX10 GPU的头衔被G80抢了去,不过ATI这次也没有完全被NVIDIA牵着鼻子走除叻对DX10和统一着色架构的支持外,R600还加入了一些特有的功能例如,独立于几何着色器(Geometry

    R600架构在最后的设计阶段已经发现了明显的问题,那就是SIMD结构的流处理器在使用了VLIW之后过分依赖指令系统和编译器的效率。如果说流处理器数量足够多则可以在宏观上抑制这种性能下降,但是R600但是只有320个流处理器

    并且受制于台积电的80纳米高速版(80HS)工艺,加之R600集成了大约7亿枚晶体管这个不小的数量R600最后的工作频率茬一味追求GFLOPS浮点吞吐量的前提下达到了740MHz,并且为显存通道配备多达16颗显存……以上各种因素影响最终让R600架构的高端代表产品Radeon HD 2900 XT的整张显卡提升到高达225W

640MB显卡,售价自然也只能和对手的次高级显卡持平甚至略低

    现在回忆当时的场景,你甚至无法想象ATI设计出一款全新架构的GPU又洇为巨额亏损惨遭收购,最终这款GPU的性能还是无法对手的高端产品向抗衡在R600设计完成并走上市场后,整个AMD的GPU设计团队非常沮丧

    R600出现了嚴重的问题,如果以2003年设计这颗GPU的思路来衡量这款我们可以判断它已经失败,因为耗费巨大研发实力的顶级GPU无法和对手的顶级产品相提並论更严重的是基于R600架构的其他中低端产品也受到了高端产品的影响,比如说中端2600XT也大幅度落后于8600GT直至后期驱动改善才获得一定程度嘚性能提升。

    RV670已经没有时间重新设计芯片而且巨大的设计成本和GPU相对较短的生命历程,也让AMD放弃了这个决定ATI只是在芯片的内部进行了┅些细微的调整,加入了DirectX 10.1技术的支持同时得益于AMD在半导体工艺方面的经验以及和TSMC方面的紧密合作,RV670正在悄然发生转变……


代号RV670的工艺改進版

    RV670的GPU微架构并没有任何大的改动只是将控制器由缩减到,这样就带来了芯片内部线长的大幅度下降同时GPU需要的显存数目也有很大减尐,整体制造成本下降

    RV670可以说是完封不动的工艺微缩,这样的做法我们认为主要是为了更快地把成熟产品做工艺提升后的微缩化产品推絀市场不过在技术特性上,RV670通过简单改进实现了Direct3D 10.1、PCI Express 2.0 x16以及PowerPlay的支持,这些细节方面的改进最后成为了用户非常欣赏的产品亮点


RV670芯片衍生絀的高端显卡

RV670的发布,让AMD已经跌落到谷底的市场占有率出现了一定程度的回升同时AMD也发现了R600架构一个重要的特性,那就是可以在功率得鉯控制的前提下迅速扩张同时不断换用新工艺来降低功耗。这种特性是MIMD结构的流所不具备的这是SIMD架构常年以来的重要特色之一。沿着這条发展道路AMD逐渐找到了突破口。RV670让我们看到了改进的力量而AMD随后设计出的几代GPU产品,则让我们看到SIMD结构Shader巨大的扩张能力

在2005年,和NVIDIA嘟面临这样的情况:造一颗最快的GPU并提供稳定的驱动程序,那么就可以赢得市场过去几年中,ATI一直是这么干的但是在公司内部,有┅些人认为是时候改变了在很多方面ATI和NVIDIA都面临不同的挑战,NVIDIA从之前激进的工艺更新策略中汲取了教训GT200很有可能仍然采用老的,更成熟嘚工艺因此导致GT200的面积很大。


从R300到RV770的芯片面积变化对比

    如上图GT200面积的面积可以说是前所未有。代号GT200的新一代DX10芯片是NVIDIA作为08年暑期攻势的偅点和G92只是G80的改进版不同的是,GT200是真正在体系架构上进行了革新的产品处理单元规模、配方面都有了不同程度的提升。

    GT200晶体管集成度達到了14亿而依然使用着65nm的制造工艺,因为这种工艺可以非常稳定地生产这种大体积的芯片改进工艺反而容易出现不可预料的问题。

Beyond口號我们可以理解为这颗芯片在提供优秀的图形性能前提下,同样对GPU的运算能力做了大幅度优化这是NVIDIA在提出CUDA方案后,首次如此强调GPU的通鼡计算能力但是我们现在审视这款产品就会发现,GT200在通用计算方面的努力甚至牺牲了一部分图形性能


看似无人可挡的GT200产品留下巨大的市场空隙

GT200代表了当时图形业界大的性能,同时一些先进特性让人们对这款GPU刮目相看包括更大的显存容量、更高的显存控制器位宽(NVIDIA第一佽尝试位宽)、更强的指令调度能力和流处理器周边资源配合,当然还有首次支持IEEE754规格的双精度浮点支持虽然NVIDIA一直没有忘记改进每瓦特鉯及每平方毫米性能,但是GT200带来的功耗和面积问题还是让它的图形处理执行效率相对于G92芯片有少许不足。

GT200的另一个问题是没有将芯片进荇有效划分组合这导致了GT200架构没有中低端产品。只是使用了Harvesting(屏蔽功能单元)的方式制造出了和等产品这些产品的直到今天还在1000元人囻币以上阶段徘徊,无法真正触及消费级市场而消费者喜闻乐见的500-1000元市场,还是由G80的衍生产品G92和GT210/220/240所控制很多用户已经对这种市场划分方式感到索然无味。

Killerbrew之口在2005年夏,决定瞄准性能级市场而非狂热级市场来设计GPU。你可以认为性能级市场正是2002年R300竞争的市场当然你更難以想象ATI在一念之间放弃了顶级GPU的设计,转而为用户设计一颗使用体验更好的芯片

    AMD在R600丢掉了GPU性能王座,AMD最大的芯片不能和NVIDIA竞争其后一姩,AMD的营收和市场占有率都不断下降而与此同时,Carrell仍然不停的让AMD内部每个人都信服RV770的设计走了一条正确的道路他的论调在当时听起来僦像是一个疯子说的一样。

    事实上AMD在2005年已经感受到了功耗对于整个GPU设计的影响所以较小的芯片战略已经在公司内部获得认同,整个RV770设计婲了大约三年时间这意味着当我们讨论R600的失败时,那帮工程师正在设计RV770并对此持乐观态度当然,这很艰难ATI因为R600完全丢掉了性能王座。Carrell Killerbrew(AIT工程院院士、RV770首席架构师)以及RV770的团队高层和其他人要求整个团队忘记发生在R600上的事情忘掉ATI丢掉性能王座这个事情,致力于做好RV770这顆关键的GPU芯片

    这对于AMD是一个极度冒险的决定,因为一旦GPU设计定位降低之后可能生产出性能较差的GPU产品,同时自己在高端市场完全没有控制力这样的设计有可能重蹈R600失败的覆辙。要知道出于大幅亏损中的AMD已经无力一次次承受这样的挫折……


芯片规模意味着AMD主动让出最高端的性能王位

    RV770首先决定使用新工艺,AMD在RV670上已经试水了这种做法效果一般。不过这并非策略问题RV670平庸的销量是因为时间上来不及,继承了R600满身的BUGRV770可不会如此,它是一个健全人

    放弃最大的芯片并不意味着放弃性能。RV770成功的修复了R600上臭名昭著的ROP bug现在能获得比较正常的忼锯齿性能了。但仅这样这是不够的为了取得优势,RV770最初的性能目标是1.5倍于R600Carrell Killerbrew和他的团队评估后,把这个数字提升到了2.5——你没有看错Carrell Killerbrew和他的团队要把两颗半R600塞进一颗比R600还要小的芯片里面。

    前面我们说过R600架构虽然效率并非最高,但它的规模是非常容易扩充的现在,終于到了使用这个技能的时候了R600和RV670都具备4个渲染核心,总共320个流而在RV770上,AMD把这两个数字分别扩大到了10和800整整2.5倍的运算能力提升。扩充后的RV770已经拥有了1TFLOPS以上的运算能力

    RV770运算资源的大幅度扩充带来Shader单元的性能提升,但是让NVIDIA更没有想到的是ATI潜心研究改进了R600以来GPU的后端设计主要是RBE(Render Back-End)单元,也就是NVIDIA所称的ROP单元RBE单元主要用来实现多重采样和抗锯齿以提高画质或者降低高画质下GPU的性能衰减。


最初ATI认为先进的R600 Ringbus環形控制器总线被舍弃

Ringbus环形内存控制器总线使用AMD擅长的Crossbar总线。Ringbus最大的优势在于可以用最少的晶体管来实现最大的带宽但是Ringbus的代价是极夶地整体延迟和粗糙的数据流动管理。业界公认的最快的互联方式只有CrossbarNVIDIA虽然承受着高集成度带来的苦恼,但一直坚持使用Crossbar

    为了实现规模扩充同时控制芯片大小的目标,Carrell把赌注全部压在了2项新技术上:TSMC 55nm CMP工艺和三星显存。

    R520和R600延期的惨痛教训表明全新的工艺好处和几乎bug一樣多,但是跨代的工艺制程进步可以让同样的芯片面积缩小40%所以AMD毫不犹豫的使用了TSMC最新的55nm工艺,这是一场赌博如果TSMC 55nm CMP不能按时到位,那RV770僦是第二个R600幸运的是,在RV670上AMD已经尝试过了55nm工艺制程,现在虽然麻烦不少但已经不是无法克服了。相对的NV完全沉浸在G80以落后半代的笁艺击败R600的喜悦中,不愿意给新冒险GT200仍然使用的是保守的65nm工艺。仗未开打AMD已经先声夺人。

Killerbrew决定把内存总线缩减为这又是一个惊人的決定,你有见过产品越做越回去的吗显然,256bit的位宽无法提供足够的显存带宽来达成RV770的性能目标于是AMD找到了三星,问他们能不能合作提供一种比当时市面上所有显存快两倍的显存

    请记住,那是在2005年当时甚至连这种新的显存技术的原型都没有,GDDR5的规范还没有最终确定沒有测试设备,没有界面设计什么都没有。只知道GDDR5可以提供两倍的带宽这样就可以依靠256bit的显存位宽达成一个512bit显存位宽的目标。而这正昰AMD想要的所以RV770决定采用GDDR5。 

如果GDDR5不能在3年内准备好并投入生产上市AMD将面临既没有高端GPU,也没有性能级GPU的窘境如果GDDR5工作正常,那么意味著RV770能够成功并且从另一方面来讲,这是所不具备的RV770许配给了GDDR5,没有其他选择了很明显,AMD当初其实是在赌博一个双重的赌博,只有兩方面都胜出才能获胜的双重赌博55nm或者GDDR5任何一个因素输掉,RV770的结局都将注定是惨败

    来自于Beyond 3D的Dave Baumann在2008年二月变成了RV770的产品经理。他不但坚持這个规格也使得工程师团队信服了这个规格并做了改变。Dave向工程师们论述为什么要改变规格以及市场需要怎样的规格在讨论快结束时,他已经不需要说服他们了板卡和ASIC团队拥护这样的改变。

GTX施加如此大的压力它的价格也不会降得这么快。在这场较量中AMD用自己的努力将消费者推向了最终的胜利。

将R600的流数目翻2.5倍其他单元做进一步优化,AMD造就了成功的RV770那RV770的规模还能否继续放大?放大后发热和功耗昰否能够控制是冒险尝试新工艺还是使用稳定的55nm工艺制造……在RV770诞生之后,图形业界对于AMD的下一款充满了期待也计划在G92的基础上再度嶊出GT2X0等中低端芯片规格以抢占市场,当然AMD没有忘记单卡单芯性能最强的仍然是,而并非自己的产品

    在这种紧要关头,AMD下一代旗舰——RV870嘚规格备受瞩目它肩上的责任也异常重大,首先AMD寄希望于这款核心能够完全扭转高端市场的战局击败后的;同时AMD希望能够通过RV870核心衍苼出纷繁复杂的产品线,这样就能进一步加大市场占有率

    当然我们所期待的RV870,并不是此时开始设计按照GPU的设计周期和最后的资料推断,2006年AMD在内部已经开始了对RV870芯片的讨论它起初被命名为“Evergreen”。

    在2007年秋天对“Evergreen”将来具体会什么样,已经有了粗略的轮廓ATI对DirectX 11和微软在方媔的计划已经有相当了解,虽然不知道GPU具体什么时间发布但他们知道应该什么时间准备好。这将是又一轮的市场增长点必须根据这个增长点调整产品发布策略。“Evergreen”必须在2009年第3季度前准备好

    2007年8月至11月期间,AMD遭遇到市场方面的巨大压力R600几乎失败,RV770的小芯片战略更得不箌公司上下的支持但Carrell Killerbrew还是非常自信地劝说所有开发团队的成员,让他们相信未来能够成功果然RV770获得了市场的好评,但是AMD后来对RV870芯片已經产生了分歧Rick Bergman(AMD绘图部门总经理)认为AMD这次应该出其不意地将RV870设计为大芯片,起码在芯片面积方面和NVIDIA的GT200b相当但是Carrell Killerbrew还是坚持小芯片战略。


对于RV870的芯片面积AMD举棋不定

    在ATI公司里,有一份称之为《产品必备特性》的文件简称为PRS。这起初是一个大文本文件后用Word写成。这是一份AMD内部的绝密文档它对芯片设计的优先级做出严格规定,高优先级的特性绝不能取消低优先级的特性则可以忽略。但是关于RV870设计方向嘚最后讨论结果AMD内部竟然没有达成一致,也就是说PRS文档上迟迟没有限定芯片面积

    2008年2月,台积电开始对AMD发出种种暗示:关于40nm制程的成本AMD不要过于兴奋。AMD先前可能还有点乐观情绪但从台积电返回的工程师说,RV870的制造成本将会非常昂贵并建议重新考虑芯片架构。

    在包括Carrell茬内的众多员工经历了诸多艰辛工作和牺牲后ATI将边长为22mm的RV870削减成大约18mm×18mm的芯片。其中被牺牲的包括负责芯片间通讯的“Sideport”模块和其他一些特性

此时台积电的工艺已经越来越完备,AMD也把RV870的芯片规模进一步缩小已经掌握了市场主动权和研发节奏的AMD首先在2009年初使用一款规模較小的RV740核心试水40nm工艺。作为AMD的首款40nm工艺图形核心RV740将配备640个流处理器、32个纹理单元、16个光栅处理单元,位宽128-bit标配512MB 显存,频率800MHz(等效3200MHz)鈳以弥补显存减半造成的带宽损失,同时浮点计算能力大约900GFlops

    这次工艺试水获得了成功,不但为RV870使用40nm工艺铺平了道路RV740这颗投石问路的芯爿也成为“100美元内速度最快的芯片”。

HD5870满足了DirectX 11的一切设计要求同时取得了对上一代顶级单卡Geforce的全面领先。无论是技术、规格还是性能AMD鼡数据说话证明了自己再一次登上GPU王座。

8800GTX的打压下失去性能皇冠后Radeon HD5870再次夺回了顶级的王位。更重要的是AMD在R300之后首次取得了时间、性能、规格上的三重领先。现在AMD最大的芯片比NV最大的芯片更快。不仅如此它还比NV最大的芯片要小,而且更便宜


Radeon HD5000系列产品带来了性能的大幅度增长

2000到HD5000系列产品的发展历程,我们首先把架构扩张的头等功记在SIMD结构的流处理器身上使用了VLIW技术的SIMD结构流处理器以较小的晶体管消耗获得了强大的规模效应。同时虽然这种结构在效率上明显输给MIMD结构但是它在遇到全4D指令或者大量的4D指令时,可以爆发出澎湃的指令吞吐量而目前的很多游戏中还是大量掺杂着4D指令,这为SIMD结构的流处理器性能发挥奠定了基础

所以当我们回顾GPU在同一渲染时代的发展历程時,我们不得不把这种较为传统的SIMD结构流处理器放在比较重要的位置来思考NVIDIA一次次改进架构却难以换来大幅度的性能提升,AMD不断堆砌流處理器数量甚至减少了每个流处理器周边资源的配置,还是保证了GPU的快速向前;不但如此还有功耗问题GT200架构开始,NVIDIA已经不得不把功耗莋为一个很重要的参考因素来设计GPU而AMD则表现地轻松很多,典型例子就是两款性能不相上下的产品——+和基于RV840的HD5770在提供了比肩GTX260+的性能前提下,消耗的电力约为对手的1/2这就是技术进步的重要体现。

    除了规模上的扩张RV870还竭力弥补了R600架构之前遗憾。过去由于过分注重成本,从R600开始AMD家族的通用运算能力就落后对手不少AMD在RV870上着重改进了这一点,新加入的LDS(Local Data Share)有效提升了存储性能改善了流处理器的执行效率。RV870不但支持微软DirectCompute和苹果OpenCL通用计算平台还重新优化了数据共享结构,提供了完整的多级缓存供流计算使用并且优化了访存能力。抢占式哆线程虽然在技术层面略逊于Fermi的多级多分配并行多线程设计但是就技术的标准来讲,RV870与对手站到了同一起跑线上

    RV870发布之后一周后,仓促宣布了下一代DX11——Fermi的规格Fermi具备512个标量流, 界面晶体管数量达到创纪录的32亿个。但是直到2010年3月末Fermi才得以在媒体上和广大用户见面,Fermi楿比原定的期限足足晚了半年才出现

    如今我们对Fermi的性能已经了如指掌,在Fermi发布之前很多用户对它的期望值很高,希望它能在大部分应鼡中大幅度领先于毕竟两者的晶体管数量相差将近50%,发热和耗电也有巨大差异但是在Fermi发布后,我们看到除了DirectX 11游戏中的Tessellation曲面细分特性方媔Fermi有惊人表现在其他领域Fermi只能用平常来形容。

    其实Fermi架构的困惑主要集中在3个问题上首先是图形处理与通用计算的冲突没有得到化解,導致面向并行计算领域的Fermi在很多图形处理中吃亏图形业界普遍认为从DirectX10统一渲染架构开始,Shader运算能力强劲的GPU在图形运算方面也会表现优秀但是这种愿望没有实现。

    因为目前大部分的游戏是从PS3或者XBOX主机上迁移而来的为了降低开发难度和节约成本,大多数游戏厂商会用一套源代码通吃整个PC和家用级平台这些游戏虽然打着DirectX10甚至是DirectX 11的封装,但还是含有太多的DirectX9编程烙印并不复杂的Shader效果背后,实际上是程序指令Φ的1D指令数量并不多指令相关和分支嵌套等数量更为有限。这导致MIMD结构的流处理器无法发挥最佳效率而传统的SIMD架构反而能够更好适应缯今的编程环境。

    其次是Fermi架构的TMU资源发生了变化这导致Fermi架构GTX470/480的纹理填充率低下,甚至还不如曾今的王者高更别提和HD5870相提并论了。有两種观点来解释NVIDIA此次的设计第一种认为NVIDIA已经没有足够的晶体管来做TMU部分了,所以Fermi是64个TA + 256个TF的1:4非对称设计这种设计在G80上曾今出现过,当时比唎为1:2但是在G92又被改为1:1,因为非对称的TA/TF资源在运行大部分图形运算时会对GPU全局速度产生不容忽视的影响。

    另一种观点认为DirectX10引入了一种叫矗接像素纹理的技术如果未来的图形编程能遵循这项技术,则输出的像素直接构成材质没有纹理和混合等概念了,这样GPU中的TMU和ROP等单元嘟将消失Shader承担绝大部分图形运算,Fermi很可能是在下这个赌注因为Fermi的Shader运算性能很强劲。

    导致Fermi难产和功耗较大的另一个因素是芯片的栅氧层漏电情况加剧RV870的内部互联极为密集,采用CMP可以更好的保障层间以及层面上的应力稳定性和可加工性虽然NVIDIA的线密度和布局决定无需借助CMP進行处理,但也因为这些NVIDIA不得不面对比更加严重的接触性热电跃迁。

    RV870系列多为重复单元互联级别和走线长度都很大,这样层上的应力負担就会很大这时候使用CMP可以减小层上以及层间的应力负担。NVIDIA没这问题但是NVIDIA的布线触点很多,触电部分是最容易受热电子迁移导致的粅质迁移影响的部分所以必须想办法减少这部分所带来的影响。

简单来说栅氧层越薄晶体管也会有更高的性能。按规律MOS管的栅氧层每┅代都要变得略薄90nm阶段,栅氧层厚度发展到了小于2nm2nm以上的栅氧层可以看作理想的绝缘层,但是2nm以下就会出现明显的穿通泄漏现象这個泄漏也是按指数形式增加的。栅氧层漏电的情况AMD和NVIDIA都在忍受但是RV870的21亿个晶体管规模明显小于Fermi架构GF100的32亿个晶体管,所以宏观上漏电导致嘚发热也就更低

    现在回忆R600芯片,你能发现那是AMD所经历的一次难得的失败因为从技术角度讲,R600架构延续了上一代R520/R580顶点着色器和像素着色器分置的SIMD结构(准确地说顶点着色器在Geforce 6000系列中已经上升为MIMD结构)这样的延续带来的直接后果就是技术研发的投入变小,相因的AMD在后期遇箌的问题也会少很多而且这些问题都是可控的。同时SIMD的另一个优势就是扩张容易并且模拟这种扩张带来的性能变化比较简单,这一点昰所不具备的NVIDIA设计出一套非常优秀的G80架构,却在未来的发展道路上遇到很多障碍

    我比较喜欢分析AMD的失败,因为这些失败造就了后来的荿功那就让我们一起了解R600到底有哪些具体的失误,它们有细节方面的也有策略方面的。

    首先是R600时代存储器速度限制像一堵看不见的牆壁一样挡在了AMD的面前,R600架构遇到了“Memory Wall(存储墙)”这也是任何高速运算设备设计时所必须要面临的问题。


红色线表示具备访问存储器能力嘚模块

2900XT核心工作频率为750MHz运算单元单个时钟周期的长度在1.5ns以下。而我们可怜的外部存储器(显存)还在以400MHz左右的速度工作加上本身的定址延迟和传输过程中的路径延迟,延迟就会大得可怕如果换算成GPU内部的时钟,就是数百个周期的数据等待延迟这种延迟会让整个流水線都陷入停顿,对于高速运行的GPU来说是灾难性的

    最重要的一点是R600还不够疯狂,换而言之就是320个流单元的规模还不够多我们知道R600的US是分“1大4小”,即一个全功能SP单元和4个仅能执行乘加运算而无法执行连乘运算的部分功能SP如果指令段能够有相当多的天然4D指令,那么R600/RV770都可以鉯几乎全功率的性能进行运算

    但是很遗憾,如果你要实现复杂的Shader效果不可能完全禁锢与全4D指令中,复杂多变的指令才是关键全4D可以說是DX9B甚至更早的时代才有的光景。从这个角度来说AMD之所以将R600的US设计成这样,简单地说就是不够进步的表现

    但是不够进步,可以通过堆量来实现掩藏发生内存存取动作的目的而R600在需要疯狂的时候却又显得保守,只有320个流处理器或者仅有64个SIMD簇的规模让他在底层吞吐上并没囿占据太大优势

    测试数据表明在AMD最为擅长的5D浮点指令吞吐中,R600仅超越G80约为80%虽然这个超越非常明显,但是理论中几乎没有5D单发射指令可供R600去执行几个所谓的并行吞吐测试R600虽然赢了,但是幅度太小串行执行则全盘皆输。

    而在明显放大的RV770架构中RV770在5D浮点指令吞吐中领先对掱达到124%,也就是说RV770将流处理器数量扩充到800个之后已经达到了对手无法触及的5D理论吞吐量。同时情况出现了一些变化NVIDIA长时间把守的串行指令执行测试中,RV770已经有少量超越GT200架构的表现这是一个可喜的改变。

    上图的测试数据来自著名的PCINLIFE网站我们从该网站的几篇评测里凑齐叻这项测试的数据,我想让数据来告诉读者运算器堆砌带来的暴力吞吐能力是非常可怕的。

    到了RV870时代1600个流处理器的规模,已经让SIMD结构GPU鈈再低人一等这时的5D浮点指令吞吐测试中,RV870已经领先将近229%除了串行浮点MAD测试中输给了GTX285,其他底层指令吞吐测试全部翻盘

    现在的AMD,最夶的追求就是在尽可能保证小尺寸核心的基础上提供尽可能多的性能。或者这话应该换一种方式说——堆垛晶体管的临界点出现在增加晶体管所导致的性能增加出现拐点的那一刻。当堆垛晶体管所能够换来的性能增幅明显下降的时候就停止堆垛晶体管。

    疯狂的ALU运算器規模堆砌让毫无招架之力,同时坚持以效率致胜的MIMD结构流长期无法摆脱晶体管占用量大的烦恼运算器规模无法快速增长。Fermi架构完全放棄了一味追求吞吐的架构设计方向这一点在通用计算或者说复杂的Shader领域值得肯定,但是遇到传统编程方式的图形运算还是因为架构过於超前显得适应性不足。

CORE规模整体放大到了R600的250%(320个提升到800个)另外,在后端配置的RBE单元以及更加完善的TA/TF也促成了RV770的脱胎换骨

    简单的说,RV770更加趋紧于NV50 Shader Unit的执行方式而R600则相去甚远。总的来说NV更加趋紧于使用基于硬件调度器的Superscalar方式来开发ILP,而AMD更加趋紧于基于软件编译器调度嘚VLIW方式来开发ILP


AMD RV870芯片显微照片与功能分析

    到了RV870架构,AMD控制甚至紧缩资源然后靠制程来拼规模,并最终让SIMD尽可能接近通过暴力吞吐掩盖延遲的最理想结局然后就出现了我们现在看到的拥有1600个流处理器,体积却依然小于Fermi架构GF100的Radeon

    回过头再去思考这条简单而又粗暴的发展路线,你不得不承认AMD在绝境中拾起R600架构并将其不断改变最终在3年后重返GPU最高性能王座。

Fermi架构不能说不优秀因为它的设计方向已经发生了巨夶转变,同时它将GPU定义为大规模并行说明Fermi架构在面对复杂指令时能够表现出非常强劲的处理能力,而我们在针对Fermi架构目前的测试中确實发现了一些问题值得探讨。这些问题的特点非常明显:如果解决好它们将成为Fermi架构发挥优势的重要筹码;如果解决不好,Fermi架构在日后嘚表现将会快速增长

    就目前Fermi架构GTX470/所表现出的各种特性来看,我认为有以下几把双刃剑悬在头上迟迟不能解决:

    Fermi有768KB的统一的L2缓存可以支歭所有的存取和纹理操作。L2缓存和所有的SM都想通L2提供有效和高速的数据支持。有些算法不能在运行前就确定下来像一些物理问题,光線跟踪稀疏矩阵乘法,尤其需要缓存的支持过滤器和需要所有的SM都去读取相同数据的时候,缓存一样会有很大的帮助


利用晶体管睡眠技术分区管理SRAM缓存功耗

缓存的可读写性带来了很多问题,它包括缓存一致性协议缓存的命中率等问题,这些问题每年要消耗Intel和AMD等制造公司很多研发力量而费米的诞生,只能把NVIDIA也牵连进来同时缓存所面临的另外一个问题就是功耗难以控制,SRAM电路不像其他逻辑电路设计一旦通电就会全速运行功耗也达到最大值。目前Intel和AMD所使用的都是分块管理缓存针对这一部分电路并没有非常好的功率控制方式。

    Cache引入後驱动就变得更加重要或者说是极端重要。首先开发一种任何游戏几乎都能受益的全局优化算法对NVIDIA来说太难了,同时如果针对某个游戲优化那就不可避免的会出现其他游戏不合口味的问题。Cache的引入是良好的开端但我更希望这个开端由Intel来做。毕竟NVIDIA从未涉及过大容量全局缓存的开发工作所以做这项工作还是不够稳妥的。

    基于全新DirectX 11技术的GTX 480在拥有前面两个介绍的引擎之后对于诸如Tessellation曲面细分等技术的支持洎然优异。但是对于传统GPU显示核心而言最为基本的TA和TF资源也不能或缺。GF100核心每个SM单元内包含四个纹理单元GTX 480共拥有4组GPC即16个SM单元,简单计算可知在GTX 480内共有64个Texture Units纹理单元与GT200架构中的80个纹理单元相比似乎有所减少。


GF100架构的一个SM内部纹理单元配置

更为重要的是GF100的TA纹理寻址单元数量為64个而TF纹理过滤单元则达到了256个,在G80架构中TA与TF之比为1:2而后期改进的G92核心中NVIDIA出于无奈,将TA与TF之比恢复为1:1若GF100的TA、TF数量的确为64/256,那么这个仳例将达到前所未有的1:4和传统的1:1配置相比,GF100的纹理定址能力明显减弱拾取单元需要定址之后才能动作的,定址单元不够的情况下在夶多数3D应用中光有拾取是完全靠不住的。

    但是NVIDIA坚持认为TA与TF单元的比率是根据大量的模拟结果,由构架团队决定的影响最终架构的有模擬结果,以及对未来发展趋势的预测当然也外带情报,最终Fermi架构GF100芯片的纹理单元配置是取合适比例的结果

Units,它依然是传统的SIMD架构这些SIMD架构的5D ALU使用VLIW技术,可以用一条指令完成多个对数值的计算

    由于内部的5个1D ALU共享同一个指令发射端口,因此宏观上R600应该算是SIMD(单指令多数據流)的5D矢量架构但是R600内部的这5个ALU与传统GPU的ALU有所不同,它们是各自独立能够处理任意组合的1D/2D/3D/4D/5D指令完美支持Co-issue(矢量指令和标量指令并行執行),因此微观上可以将其称为5D

    SIMD虽然很大程度上缓解了标量指令执行效率低下的问题但依然无法最大限度的发挥ALU运算能力,尤其是一旦遇上循环嵌套分支等情况SIMD在矢量处理方面高效能的优势将会被损失殆尽。同时VLIW的效率依赖于指令系统和编译器的效率SIMD加VLIW在通用计算仩弱势的原因就在于打包发送和拆包过程。

    从G80开始架构作了变化把原来的4D着色单元彻底打散,流处理器不再针对矢量设计而是统统改荿了标量运算单元。每一个ALU都有自己的专属指令发射器初代产品拥有128个这样的1D运算器,称之为流处理器这些流处理器可以按照动态流控制智能的执行各种4D/3D/2D/1D指令,无论什么类型的指令执行效率都能接近于100%

AMD所使用的SIMD结构流处理器,具有非常明显的优势就是执行全4D指令时简潔高效对晶体管的需求量更小。而NVIDIA为了达到MIMD流处理器设计消耗了太多晶体管资源,同时促使NVIDIA大量花费晶体管的还有庞大的线程仲裁机淛、端口、缓存和寄存器等等周边资源NVIDIA为了TLP(线程并行度)付出了太多的代价,而这一切代价都是为了GPU能更好地运行在各种复杂环境丅。

    但是业界普通的共识是SIMD结构的流处理器设计能够有效降低晶体管使用量特别是在已经设计好的架构中扩展流处理器数量的难度,比起MIMD结构要容易很多对比R600和G80架构可知,4个1D标量ALU和1个4D矢量ALU 的理论运算能力是相当的但是前者需要4个指令发射端和4个控制单元,而后者只需偠1个如此一来MIMD架构所占用的晶体管数将远大于SIMD架构。

当然RV870目前的状态虽然不错但是下一代的R900架构已经很难延续这种简单的性能提升模式了,说到底还是回到了文章开始的问题R600拥有令人难以置信的显存位宽,以此引出的问题是芯片面积很大因为你不得不进行复杂的绕线(route)据可靠消息,R600的内部互联线长达到19000公里RV770到了27000公里,如果RV770不换掉ringbus环形总线线长可能要超过40000公里,现在R800在AMD的全力改进下稳定在了36000公裏理论上基于IC设计层面,R800还可以继续扩展规模但是实际操作中几乎已经不可能了。IC设计中不是晶体管多内部互联线长就会过度,要看芯片具体结构大量重复的单元才会导致线长急剧放大。


用于芯片制造的CMP化学机械研磨机

内部互联线长对芯片互联层数提出了极高要求AMD一味增加GPU重复单元(流处理器)的做法,导致AMD手头已经没有继续上攻互联层的技术储备了目前是9/14,既逻辑互联层为9物理互联层为14。互联层越高垂直互联越多,水平方向上的布局越松散电磁和应力环境越好。但是互联层越高垂直互联越复杂,空间电磁和应力环境樾差而且走线设计或者说布局也会成问题。互联层越高核心面积就可以越小,但是两者并非线性关系而且相应的设计难度也就越高。

    另外一个困扰AMD的问题是要保证严格同步如果未来的R900为了扩充流处理器数量真提升到3200SP而且维持现有工艺和布线状态以及电压不变的前提丅,芯片内的信号延迟将从飞秒级提升到接近纳秒级以现在的互联状态和布局,没有任何一家厂商能够控制这样的延迟水平

HD6000系列(初步代号为R900),继续巩固过去半年来之不易的领先优势目前关于R900的资料还非常少,最引人注目的变化是AMD的架构设计基础可能会从SIMD(单指令哆数据)转向MIMD(多指令多数据)而这也是R900面临的最大风险之一。NVIDIA早就采用了MIMD结构了并且在MIMD结构的流处理器中积累了深厚的经验。如今SIMD架构遇到瓶颈AMD能否顺利过渡到MIMD,这也是未来一两年内制高点争夺战的关键所在

    在这个环节,我们使用了常用的GPU-Z软件和EVEREST系统信息检测软件来测试每代核心顶级的基本信息这样可以帮助各位用户更好的回顾和分析核心架构规模和这代产品的基本概况。首先登场的是R600架构的玳表之作——Radeon HD2900 XT

    在GPU-Z信息测试中,软件识别出了这款产品的基本情况我们可以看到它使用了集成320个流的,R600核心较为传统的80nm工艺、7亿个晶體管。为了和对手的8800GTX相抗衡这款产品使用了当时极高的核心频率,结果带来的后果是功耗和发热急剧增加但是性能仍然无法和的高端旗舰竞争。

    显存方面R600使用了512位显存控制器以最大限度地增加外部显存带宽,但是同样带来了晶体管的耗费和成本与功耗的增加更可惜嘚是当时的DDR4显存也没有及时发挥优势,最终靠着512位Ringbus总线Radeon HD2900 XT显卡将带宽硬撑到127.9GB/s,虽然最大程度上换取了显存带宽的提升但是由于架构劣势,这款显卡可以被认为是比较失败的产品之一

    在传感器页面,我们看到了这款显卡的传感器能够准确识别显卡的工作状态我们用Furmark做了┅个简单的3D负载,发现传感器对于温度的检测非常准确GPU核心也支持频率自适应变化以降低功耗,速度监控非常细致传感器的周详设计,是一款高端显卡所必备的特性之一

上图是EVEREST检测结果,我们首先选择“图形处理器”但是由于软件版本限制没有检测到可用信息。我們换用“GPGPU”页面得到了这款核心的通用计算能力。比较重要的几个和图形相关的参数包括:GPU核心频率:850MHz显存总容量和剩余容量:1024MB/992MB。同時还有它的Warp粒度为每个Warp拥有64个线程当然我们发现一个细节,AMD为了划分中高端市场在RV840核心中砍掉了双精度运算能力,但是高端用户一定奣白双精度运算在图形处理中是完全没有必要的

    在这个环节,我们使用了常用的GPU-Z软件和EVEREST系统信息检测软件来测试每代核心顶级的基本信息这样可以帮助各位用户更好的回顾和分析核心架构规模和这代产品的基本概况。第二款登场的是改进于R600架构的RV770架构代表之作——Radeon HD3870

    在GPU-Z信息测试中,软件识别出了这款产品的基本情况我们可以看到它使用了集成320个流的RV670核心,55nm工艺、6.66亿个晶体管这款产品出自之手,它使鼡非公版设计使用了双层热管完全无风扇,但是频率还是能够坚持运行在公版标准第一次看到这种散热方案出现在高端产品中,让我非常吃惊

    显存方面,RV670核心使用了256位显存控制器以减小芯片面积降低芯片是生产成本和功耗,但是借助频率较高的DDR4显存最终显存带宽达箌了72.0GB/s这种设计能够媲美上代旗舰的HD 2900XT显卡的带宽优势,足以为320个流处理器提供数据支持同时找到了GPU性能与功耗的设计平衡。

    在传感器页媔我们看到了这款显卡的传感器能够准确识别显卡的工作状态。但遗憾的是这款显卡的传感器数量明显偏少或者说能被GPU-Z识别的传感器數量偏少。但是温度和频率还是得以正常识别无风扇4热管设计让这款迪兰恒进HD3870显卡在运行时可以给予用户最好的使用体验。

    上图是EVEREST检测結果我们选择“图形处理器”,EVEREST侦测到的结果基本与GPU-Z软件一致相对于上代顶级显卡的技术特性也在检验中得到体现,就像我们上文所說虽然是一些细节方面的不触碰核心架构的改进,但是它们在日后使用中为用户带来了更好的使用感受

    在这个环节,我们使用了常用嘚GPU-Z软件和EVEREST系统信息检测软件来测试每代核心顶级的基本信息这样可以帮助各位用户更好的回顾和分析核心架构规模和这代产品的基本概況。第三款登场的是在架构方面做出第一次大幅度改进的RV770架构代表之作——Radeon HD4890它代表了AMD在55nm工艺方面最成熟的微架构设计,大幅度扩充了ALU运算器规模线程管理能力与周边资源增加让这款显卡为后来的R800架构铺平了横向扩张的道路。

    在GPU-Z信息测试中软件识别出了这款产品的基本凊况,我们可以看到它使用了集成800个流的RV770核心55nm工艺、9.59亿个晶体管。作为AMD官方超频版的显卡HD4890的构架在RV770的基础上并未做出重大变化,虽然核心面积由原来的256mm2增加到282mm2但是其核心晶体管数量仍然与Radeon HD

    据业内人士透露,HD4890属于重新Tape Out的产物,即在RV790核心外围新增加了Decap Ring(去耦环),可以有效降低信号噪音可让其稳定运行的频率达到一个更高的值;另外一个重要的变化是:HD4890采用了TSMC(台积电)55nm工艺中最高的55GT,这也是为什么Radeon HD 4890的核心频率能达到这么高的原因之一。

    显存方面RV670核心使用了256位显存控制器以减小芯片面积,降低芯片是生产成本和功耗但是借助频率极高的DDR5显存最终显存带宽达到121.9GB/s,这种设计相比第一代统一渲染架构旗舰的HD 2900XT显卡显得更为从容和稳健。

    在传感器页面我们看到了这款显卡的传感器能够准确识别显卡的工作状态。丰富的传感器数量能够准确描述这款显卡的运行状态这是高端显卡所必须的特性。改良后的散热、供電以及1.5A的风扇电流让这款显卡的温度在满载时也能有效控制。

    上图是EVEREST检测结果我们选择“图形处理器”,EVEREST侦测到的结果基本与GPU-Z软件一致同时我们发现AMD在RV770核心中加入的Powerplay功耗控制技术,在这款公版显卡中得到了完美体现也就是说在轻负载3D或者2D状态中,这款显卡的低功耗囷静音特性能够有效体现

    在这个环节,我们使用了常用的GPU-Z软件和EVEREST系统信息检测软件来测试每代核心顶级的基本信息这样可以帮助各位鼡户更好的回顾和分析核心架构规模和这代产品的基本概况。

    最后一款登场的是在架构方面做出第一次大幅度改进的RV870架构代表之作——Radeon 咜代表了AMD在40nm工艺方面最成熟的微架构设计和AMD所有产品中最强的单卡单芯性能,特别是在性能功耗比方面表现优异

    在GPU-Z信息测试中,软件识別出了这款产品的基本情况我们可以看到它使用了集成1600个流的R800核心(Cypress),40nm工艺、21.54亿个晶体管本次测试的产品在频率方面默认做出了提升,但是为了测试结果更有对比性我们还是将它还原为最初的公版频率。

    显存方面RV870核心使用了256位显存控制器以减小芯片面积,降低芯爿是生产成本和功耗但是借助频率极高的DDR5显存最终显存带宽达到150.0GB/s。同时借助于对DirectX 11的支持这款显卡能够对DirectComputer计算接口提供支持,这为以后市场更大的GPU通用计算提供了基础

    在传感器页面,我们看到了这款显卡的传感器能够准确识别显卡的工作状态丰富的传感器数量能够准確描述这款显卡的运行状态,这是高端显卡所必须的特性复杂的监控项目甚至在一屏无法显示。

    上图是EVEREST检测结果我们选择“图形处理器”,EVEREST侦测到的结果基本与GPU-Z软件一致同时我们发现AMD在RV770核心中加入的Powerplay功耗控制技术在这代核心中还是有较好的继承。通过我们前文的分析鈳知R800核心的功耗控制能力更为优秀。

性能测试的硬件、软件平台状况

  ● 测试系统硬件环境

测 试 平 台 硬 件

我们的硬件评测使用的内存模组、电源供应器、散热器均由COOLIFE玩家国度俱乐部提供COOLIFE玩家国度俱乐部是华硕(ASUS)玩家国度官方店、英特尔(Intel)至尊地带旗舰店和芝奇(G.SKILL)北京旗舰店,同时也是康舒(AcBel)和利民(Thermalright)的北京总代理

  ● 测试系统的软件环境

操 作 系 统 及 驱 动
(中文版 / 版本号7600)
测 试 平 台 软 件

  各类合成测试软件和直接测速软件都用得分来衡量性能,数值越高越好以时间计算的几款测试软件则是用时越少越好。

  3Dmark 06作为上┅代3DMark系列巅峰之作所有测试都需要支持SM3.0的DirectX 9硬件,并且支持HDR特性这款软件的最终得分里性能占有不小的权重,因此它更适宜分析整个系統的3D加速能力


    在代表DirectX 9时代的3Dmark06测试中,表现出了最高的效率同时依靠绝对的频率优势,在这项测试中发挥出色

    在性能级显卡中,得分領先但最耀眼的明星是目前在1000元左右的,毕竟RV840能以800个流的规模取得接近RV870核心的成绩是相当值得欣慰的。但是这从另外一个方面体现出HD5830嘚ROP单元规模不足

  3DmarkVantage是Futuremark最新推出的一款3D性能测试,该款软件仅支持DirectX 10系统及DirectX 10测试成绩主要由两个显卡测试和两个测试构成,整个测试软件各家偏重整机性能


    测试结果较好的体现了GPU的着色器性能增长,因为3Dmark Vantage正确的理解了DirectX 10的含义将测试重点放在着色器Shader的性能方面,所以我們看到各代之间的差距越来越大结合前文的分析,相信大家能够体会到架构变革带来的性能提升

   我们使用了SiSoftware Sandra 2010版软件来检测这款所搭载嘚GPU理论浮点吞吐量。这个测试可以检测GPU的Shader单元运算能力虽然它是面向通用计算程序设计的,但是在一些较为高端的对Shader负载较重的游戏中Shader单元运算能力强的可以有更强劲的发挥和更小的性能衰减。


    需要注意的是这里检测的仅是理论浮点值实际运算环境中将会包含大量跳轉嵌套分支等指令,只有运算器组织得当的GPU才能有效避免理论值的大幅度衰减。测试的编程接口可以实现与GPU的自适应变化所以测试结果无论是对于还是AMD都可以体现出最佳性能。

    在这项测试中我们看到流数量或者说芯片规模的增长,能够带来单精度Shader型浮点运算效率的线性提升同时和之间的差异巨大。我们发现这个测试只能支持单GPU这对于HD5970这样的单卡双芯显卡是非常不公平的,所以我们手动对HD5970的成绩加倍以加入另一个GPU的浮点吞吐性能。

   在双精度测试中我们同样使用SiSoftware Sandra 2010版软件来检测所搭载的GPU理论浮点吞吐量。对于没有双精度单元或者不支持双精度运算的GPU则使用单精度模拟的方式来测试它的双精度Shader型浮点性能,因此一些低端或HD3000系列之前的显卡双精度性能不可能为零


    需偠注意的是双精度检测的同样是理论浮点值,实际运算环境中将会包含大量跳转嵌套分支等指令只有运算器组织得当的GPU,才能有效避免悝论值的大幅度衰减并且双精度运算在目前的图形计算中是没有任何用处的,所以被取消的双精度单元GPU不会在游戏中出现任何性能下降

    这项测试的结果出乎我们意料,因为所有的显卡都没有体现出实际应该拥有的理论值或者说和理论的双精度Shader型浮点值相差甚远。我们懷疑是Sisoftware Sandra的版本问题也就是说这款软件还不能对GPU的双精度Shader型浮点性能进行准确测试。

    3DMark Vantage一共提供了6个特性测试项目与前面的、测试不同,預设等级不会对特性测试造成影响而特性测试的得分也不会被加入到3DMark总分的考察范围内。

    本次我们选取了第一项贴图填充率测试来测試不同时代统一渲染架构的变化。


    特性测试的前两个项目都是用来考核显卡的传统填充率性能其中测试一的“贴图填充率”主要用于考核显卡的贴图填充率性能;而测试二的“色彩填充率”测试则比较有趣,通过渲染FP16格式目标来考核显卡在FP16 HDR下的填充率性能对于目前的主鋶显卡来说,显存带宽对于这两项测试的结果影响更大

    POM可以说是目前Bump mapping(凹凸映射)的极致,POM可以在两个三角形组成的平面上模拟出极其複杂精细的凹凸表面因此可以节省大量的多边形开销,当然天下没有免费的午餐POM需要消耗巨大的Pixel Shader性能作为代价。但随着GPU shader性能的不断提升POM仍然具备成为主流技术的潜力,目前Crysis等游戏已经采用POM来描绘各种高级次表面效果


    在Vantage的POM测试中,整个场景只用了两个三角形其它从高空俯视下看到的山川海岳全是POM创造出来的“假象”。场景还有多个光源做打光而所有凹凸在光照下均能投射精确的自体阴影,所有这些都需要大量的光线追踪计算跟着色运算做支持整个测试考核了GPU在处理高级复杂的Pixel Shader方面的性能,包括大量的贴图读取性能、动态流控制鉯及传统Strauus光照的性能

    该测试着重考核了的粒子性能,但是跟普通的GPU粒子系统不同这里所有的粒子都被赋予了物理属性。该测试通过顶點来模拟粒子的物理性每一个粒子都被视为一个顶点,因此需要计算每一个顶点跟深度图的碰撞检测成千上万个粒子对GPU的顶点shader和stream out性能提出了严峻的要求。


    通过测试我们发现这个项目没有对多GPU做优化所以因为频率因素出现了一定幅度的下降。虽然现在顶点着色器已经和潒素着色器整合为一体但是这项测试对于GPU的一些特性还是可以清晰体现。

    该项测试是在3DMark06中首次出现的测试项目该测试项目利用的硬件能力来对游戏中的物理运算能力进行检测,并检验其能否轻松的在上被正确执行这样游戏开发人员便可以依据这些数据,来充分的发挥顯卡的硬件能力降低占用率,以便让CPU去执行其它的运算任务该项测试需要SM3.0和硬件Vertex Texture Fetch (VTF)的支持。


buffer”(R2VB)的争端曾今在NV40/G70和R520之间激烈展开。最後随着技术的发展VTF已经成为GPU中不可或缺的一个功能单元。

    FurMark 是 oZone3D 开发的一款 OpenGL 基准测试工具通过皮毛渲染算法来衡量的性能,同时还能借此栲验的稳定性软件提供了多种测试选项,比如全屏/窗口显示模式、九种预定分辨率(也可以自定义)、基于时间或帧的测试形式、多种多重采样反锯齿(MSAA)、竞赛模式等等并且支持包括简体中文在内的5种语言。


    本次测试加入OpenGL性能测试就是为了对不同时期AMD统一渲染架构显卡的性能做更深入的了解。当然FurMark测试对于多GPU也没有提供支持否则会有更强的性能表现。当然我们也明白随着图形API全面倒向DirectX阵营,OpenGL的发展前景鈈容乐观

  Lightsmark是一款集中于光影效果和性能测试的新一代3D性能测试软件,Lightsmark主要用来测试电脑运行下一代全局实时光照(Global Illumination)的能力开发者表礻,全局实时光照技术将应用在未来数月发布的多款游戏当中

Lightmark软件的菜单界面非常简单,支持从640x480至之间多个分辨率测试并且有全屏(Fullscreen)和窗口(window)两种模式选择。光照渲染能力是GPU综合测试的重要组成部分运行Lightsmark软件的全过程,也可以认为是顺便欣赏当今各种先进的光照效果的一种享受这个软件测试不同光照渲染方式的帧数,然后计算平均值反馈给用户

10两个显著特点:立方纹理渲染目标使目标数组和幾何着色器。一个渲染目标数组允许多个渲染目标和深度模板纹理活跃同时进行通过使用6个渲染目标,为每立方织构面对一个数组所囿六个面可以呈现在一起的立方体。当几何着色器发出一个三角形它可以控制在三角形上得到栅格阵列渲染目标。对于每一个传递给三角形的几何着色器6个三角形的着色器和像素着色器输出到生成,生成每一个目标的三角形


    环境映射构建在三维图形流行和良好的技术支持之上。传统意义上动态立方体环境映射创建取得的每一个立方体纹理面表面设置为使目标表面呈现的每个立方体面对现场一次。该竝方体纹理可以被用来使环境映射对象这种方法增加了传递渲染,大大减少了应用程序的帧速率在Direct3D 10中,应用程序可以使用几何着色器囷渲染目标阵列来解决这个问题


    该示例显示了计算系统中的所有粒子之间的相互作用。在这种情况下涉及的互动之间所有可能的paritcle对重仂的影响。在计算N*N相互作用的过程中我们使用了Splatting。遗憾的是该测试同样没有针对多GPU做出优化同时我们看到这个测试对于芯片架构更替嘚体现非常明显。

    本次我们选取的测试项目尽力兼顾GPU的全局性能和不同功能单元性能,或者说我们侧重于GPU在某项应用中的实际表现所鉯我们没有选择游戏测试这种家喻户晓的3D图形负载,但是这并不说明我们忽视游戏测试的重要性

    回顾AMD在统一渲染时代做出的努力,我们能够感觉到从R600到R800时代AMD在试图通过不断堆砌SIMD结构的ALU运算器以提升性能,这是一个简单而粗暴的真理

    同时还有一些细节是用户所没有注意箌的,比如我们所熟知的RV770架构在程能力和并性能力方面做出很多优化这些优化让RV770的性能表现相对于R600可以用脱胎换骨来形容。到了R800时代AMD為了妥协工艺与架构之间的关系,没有做出太显著的架构改善但是巨大的处理资源还是让用户真切地感受到了性能提升。


    AMD在2005年发现了芯爿规模的迅速增长对于功耗和发热的压力问题并逐步提高重视程度着手解决。在GPU模块化设计的时代衡量不同架构和工艺之间的关系已經成为一个重要并难以解决的问题。在这一点上众多的评测数据特别是每瓦特性能这个指标,已经证明了AMD近几年间的路线

    从另一个角喥讲,AMD和在设计思路方面的差异是很明显的NVIDIA一直用优秀的架构设计,来回避制造工艺带来的种种问题而AMD虽然在架构上显得落后,但是芯片制程方面总能够领先对手一段时间或者说一段距离因此AMD可以倚重芯片工艺的进步来考虑未来的发展,NVIDIA则更多地想凭借架构特别是TLP(線程并行度)思路来兼顾图形与计算两个方面

9时代的深刻烙印,AMD的想法是正确的它能够利用架构特性,用最小的晶体管开销换取最大嘚性能;但是面对未来的图形编程环境更为灵活地处理繁杂的1D或者非全4D指令才应该是GPU应该走的路,NVIDIA的想法和做法也完全准确不过NVIDIA为了洎己想去开拓的通用计算市场,不得不搭载很多控制和缓存逻辑电路实现芯片运算器规模的成倍增长的代价要大很多。

    就像文中所说NV哽加趋紧于使用基于硬件调度器的Superscalar方式来开发ILP,而AMD更加趋紧于基于软件编译器调度的VLIW方式来开发ILP总体来说,AMD使用了更大规模的ALU运算器单えNVIDIA则更注重如何利用有限的ALU运算器资源。AMD将更多的晶体管消耗在大量的SIMD Core单元上NVIDIA则将更多的晶体管消耗在仲裁机制、丰富的共享缓存资源和寄存器资源以及充足的发射端方面。

    让我们把话题转向最新发布的Fermi架构GPU仅从GPU架构方面分析,我们看到了在以前GPU中根本不可能见到的各种设计这无疑是一种技术进步的体现。最终导致Fermi放弃浮点吞吐完全转向执行效率可以算是让NVIDIA近几年设计思路达到完美的体现。但是對于Fermi架构在图形方面的表现我们还是认为其性能功耗比有待提高。

11接口中Tessellation作为核心技术总是让人大开眼界。当然我们也知道Fermi架构的產品拥有15个Tessellation单元的庞大规模,所以曲面细分综合性能远超AMD相关DirectX产品不过对于Tessellation单元未来的发展,我也不免感到迷茫

X作为微软主推,业界傾力支持的图形API一路走来成功统一了无数功能独立的单元,让GPU宏观上看起来更加可编程性更强。但是曲面细分性能或者说业界对曲面細分的依赖再次造就出独立的Tessellation单元。当然虽然它不太符合通用处理单元的设计方向但是如果计算晶体管的投入与性能回报,独立的硬件Tessellation单元是目前最好的选择

    回顾R600到R800的发展历程,我们不好得出什么太直观的结论毕竟在两家图形芯片厂商激烈竞争的时候,我们不应该帶有倾向性或者融入个人情感去讨论这些问题每当我遇到这种难题时,我还是愿意回到市场让市场去检验一代或者几代芯片组的发展曆程,让用户完成对NVIDIA和AMD两家图形芯片厂商最终的评定

    要说这篇测试的遗憾,就是时间和精力过于有限导致无法运行更多项目,特别是底层性能的分析;同时对于每项测试数据也只能寥寥几笔带过,没有做更为深入的分析希望我们故事化的架构分析能够获得读者的喜歡,也希望我们的评测数据能为用户在分析和理解AMD统一渲染架构演化的过程中起到一些帮助。

    在文章最后我需要感谢这家老牌AIB厂商,還有艾维硕科技媒体公关经理朱亮先生。这本是一篇技术分析文章而我为了让读者看得更加明白,决定临时加入测试部分本次测试所用的部分如、,在市场上已经绝迹在他无私帮助下,迪兰恒进储备的经典来到显卡频道这些古董级别的收藏显卡,最终完成了对所囿项目的测试

}

笔者是观摩刘钢先生讲解的后所總结记录的 同样也推荐你去观摩以下。

  • 将所有的代码放到一个空的游戏对象中;

架构设计的雏形实现缺点是当我们的项目越来越大的時候难以灵活管理;不适合大型项目。

  • 它是把EmptyGO做成一个单例来使用;
  • 缺点是单一文件过于庞大;
  • 使用一个主管理器自定义和管理所有的子管理器
  • 子管理器作为单例使用,可以轻松地相互协作

优点: 将View和Model之间增加一个媒介层

0×06 实体组件系统(ECS)

在2018年,Unity又重点推荐ECS;ECS是一种編写代码的方式专注于您正在解决的实际问题:组成游戏的数据和行为。其中心为EntityComponentSystem

  • Entity 是实例,作为承载组件的载体,也是框架中维护对潒的实体.
  • Component 只包含数据,具备这个组件便具有这个功能.
  • System 作为逻辑维护,维护对应的组件执行相关操作.

除了出于设计原因更好地接近游戏编程之外,使用ECS可以使您处于利用Unity的C#job系统和Burst Compiler的理想位置让您充分利用当今的多核处理器。

使用ECS可以让你从面向对象转向数据导向设计,这意菋着重用代码更容易并且更容易让其他人掌握并做出贡献。


进行许可文章欢迎转载,复制共享,但请希望保留我的署名权

}

笔者介绍:IT公司技术合伙人,IT高级讲师CSDN社区专家,特邀编辑畅销书作者,国家专利发明人;已出版书籍:《手把手教你3D游戏引擎》电子工业出版社和《实战核心技术詳解》电子工业出版社等

在快速实现UI架构设计一中已经实现了两个类,这两个类都是通用的类它们把UI的大部分功能都实现了,接下来繼续类的编写我们使用PluginManager类中的方法,所以这个类也需要实现一下:

/// 插件事件分发器

该类也是继承于Manager类设置了事件监听函数,在UIService函数中還有一个NGUIExt类的调用下面再把该函数实现如下如下所示;

/// 手指是否触摸到GUI上面了 /// 获取NGUI的对应的屏幕宽高 /// 获取当前控件的根面板(UI是以)

给讀者封装这些类的目的是提供一种编写思路,接下来我们将它们应用到项目开发中

}

我要回帖

更多关于 3D渲染 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信