谁拖累了统一构架
前言:经过了前面两周那段不算绮丽,甚至是有些艰苦和晦涩的阅读思考旅程之后,欢迎您来到最新一期的CBS探索与发现。这是中关村在线显卡频道从2011年初开始策划并执行的一个重要系列节目,通过对这一系列文章的阅读,你一定会了解到这个领域很多不为人知或者不想被揭开的秘密。
● 谁拖累了统一构架
作为剧透的一部分,我可以提前告诉您,作为一个系列的完结篇,本期将会对我们在前两期中一直不断提及的主要问题进行一个了结。在本期节目中,我们将会把最终导致今天乱局的幕后黑手揪出来示众,敬请期待吧。
世界上任何的事物都是由表象和本质构成的,“谁害了统一构架”这件事也是一样。在前面的文章中我们已经了解了他的第一个表象,也就是Unified Shader单元。下面,我们要面对的第二个表象将更加接近真实的表象,他就是家用机平台。
其实我一直在斟酌表象这个词到底合不合适用来形容家用机平台和Unified Shader单元,在文字定义和哲学定义上这么说确实没错,但我总觉得有些生涩。所以,不如我们从这里开始就叫他们“棋子”吧。
顾杰所写过的其他相关文章:
棋盘上的第二步棋
● 棋盘上的第二步棋
如果说Unified Shader单元是棋盘上第一个被出动的棋子,那么家用机平台就是第二个。
家用机硬件的开发,对各个厂商来说一直都是一个头疼的问题。家用机长久以来所形成的自成一派的盈利模式以及文化注定了其命运完全被游戏性而不是画面所掌握,某老任常年以劣质装备取得一个又一个飘红财报并且打翻了一个又一个使用科幻硬件的对手就充分说明了这个问题。但是时代在进步,家用机周边的环境发生了变化。硬件机能确实并不一定代表游戏性,可在几十寸的大电视上输出一大堆的移动的色块,游戏性再好也会被倒胃口的感觉所掩盖。因此,为家用机搭配适宜输出环境的硬件系统,成了新的次时代家用机开发过程中所要考虑的首要问题。
搭配适宜的硬件系统,这句话说来容易,做起来可是难于登天。家用级平台的硬件除了需要功能强劲,更重要的一点就是好学易用。稍稍翻译一下,就是既要保证效率又要保证泛用性。这两点对于独立开发的硬件来说,几乎是完全不可能同时达成的。
表面上看家用机不同于PC的多用途,它的硬件几乎只会被用来运行特定的游戏程序。但问题是硬件的背后同时也意味着特定的编译环境。游戏开发者也是人,是人就存在精力有限的问题。你让他绞尽脑汁保证自己的作品在游戏性上能够一鸣惊人,同时还要让他们绞尽脑汁的去跟图形代码甚至是诡异的数学去缠斗,甚至还要让他们绞尽脑汁的去学习如何利用新的完全没见过的底层硬件……抱歉,程序员们纷纷表示自己没有那么多脑汁。
另外,独立开发的硬件本身存在着极大的风险。开发新的独立IC是一个以亿美元为单位的砸钱的买卖,如果只针对自家平台的话,火了还好,如果平台销售失败,花大力气开发的硬件将直接变成废物,开发经费全部付诸东流。家用机平台开发商虽然个个来头都不小,但哪一个都不是能够容忍几亿十几亿美元凭空蒸发的冤大头。所以,新的次时代家用级平台上注定了不会再出现Emotion这种只为PS2单独存在的硬件。
既然这样,剩下的答案似乎就简单并且顺理成章了——使用现有的成熟的硬件体系,尤其是显示体系。而当时成熟的显示体系只有两个,Open GL和DirectX。
这应该不是一道很难做的选择题了。
仿佛上帝觉得这种接近纯原质打造的环境还不够完美,恰恰在各大厂商准备选择显示硬件的时候,“能实现一切特效”的DX9.0C以及其对应的GPU出现了。于是,SONY为PS3选择了RSX,而微软则为XBOX360选择了C1。
既然大家都找到了答案,上帝又那么给面子,那咱们就动手干吧。
于是,强大的次世代王朝自此确立。
左车:Power PC+C1显示体系分析
● 左车:Power PC 970+C1显示体系分析
XBOX360的主体显示系统由一颗3core的高频POWERPC 970和一颗C1 GPU组成。双方共享512M系统主存作为local memory。该显示系统使用DirectX作为API。
PowerPC 970属于RICS的POWER 4处理器家族,第一代PowerPC 970处理器出现在2002年。PowerPC 970采用SIMD结构,具备独特的Elastic I/O总线设计。得益于工艺的改进和主频的提升,出现在XBOX360上的3 core PowerPC 970的处理能力已经比最初版本有了长足的进步。
C1 GPU是ATI提供给微软使用的XBOX360图形解决方案,该GPU基于改进型R500构架,主频500MHz,由48个US单元,16组TMU和8个ROP单元组成,其最显著的特点就是在执行单元层面前瞻性的支持了Unified Shader,同时在ROP单元绑定了10M的edRAM作为延展存储。延展存储的引入在弥补了local memory带宽不足的同时为C1以及整个XBOX360提供了令人生畏的填充和采样输出性能。值得注意的是尽管C1支持Unified Shader,可以任意处理Vertex Shader和Pixel Shader指令,但其寄存器资源仍不满足DirectX 10的要求,因此依旧属于DirectX 9.0C构架。
整体来说,尽管共享local memory,但XBOX360仍旧属于一个CPU面向通用处理领域,显卡专精图形处理领域的分离式体系,其CPU在图形处理过程中仅负责顶点的生成以及IO控制,几乎完全不介入任何图形处理过程。这与我们即将介绍的PS3形成了鲜明的对比。
右炮:CELL+RSX显示体系分析
●右炮:CELL+RSX显示体系分析
与XBOX360不同,PS3拥有的是一个融合程度更深的显示体系,它由一颗CELL处理器和一颗RSX GPU组成。该体系使用改进型OpenGL作为主要API,同时亦可支持DirectX环境。
CELL处理器是IBM开发的新一代专用处理器,有一组负责管理控制以及整数处理的PPU单元和8组具有独立cache的专司浮点处理的SPE单元组成,整个体系拥有恐怖的吞吐和浮点处理能力。
相对于CPU的恐怖,PS3的GPU则显得要“平凡”一些。RSX GPU改进自NVIDIA的G70构架,主频550MHz,采用符合DirectX 9.0C规范的传统分离式shader单元设计,拥有8个Vertex Shader和24个Pixel Shader,8组TMU以及8个ROP单元。RSX搭配256M的常规GDDR3显存作为local memory,同时可以透过FlexIO总线与CPU分享228M的XDR主存并通过其与CPU进行数据交换。
由于CELL的CPU拥有强劲的处理能力和合适的吞吐结构,因此具备一定的shader执行能力。透过过FlexIO总线,CELL可以很方便的与GPU进行数据交换和共享,因此程序员可以将一部分shader及操作过程透过总线交给CPU进行处理,将CPU和GPU视为一个整体。因此总体来说,PS3尽管采用了更加常规的显卡,但其本身却是一个更加具有任务重叠性的体系,在传统领域体系可以交由GPU应对,在必要时CPU也可以尽可能多的介入图形处理过程。
步兵斜线连杀
● 步兵斜线连杀
从上面的分析我们不难看出,虽然在结构细部有所差异,但家用机显示体系整体上还是体现了与PC高互通性的原则。C1虽然有US单元,但其结构整体来讲与R580并无二致,可以理解成将shader单元进行了简单替换的R580。而RSX则干脆与G70构架一模一样,仅进行了一点点规模的削减。
相同的硬件构架,意味着相同的代码执行模式,意味着一套代码同时运行在两个平台以及PC平台,意味着天堂的入口。因为天堂还有个名字,它叫跨平台。
无论PS3还是XBOX360,他们使用的都是相同的硬件体系,即一颗通用CPU,一颗改进于桌面构架的GPU,本质上与PC几乎完全相同的总线及存储体系。他们的硬盘跟笔记本的没啥区别,他们的内存颗粒焊在对应的PCB上就可以直接插上电脑。你可以直接将他们看成一台性能不错的可以运行unix和linux的家用电脑。
显而易见,为这种平台编写的图形程序代码,对PC平台来说根本就是透明的,只需要稍加改写对应windows的代码部分即可让PC平台完美的执行。这也就意味着开发商只需要开发一套引擎就可以轻松地实现通杀所有平台的游戏编程需要。跨平台这个在之前的家用机平台上处于梦话状态的概念现在很轻松的就得到了实现。家用机作品得以更加轻松的进入PC游戏市场。
程序员们原则上只需要学会HLSL和GLSL,就可以通杀PC和家用机两大游戏编程领域了。家用机厂商不再需要负担昂贵的全新IC体系的开发成本以及风险,新平台的培训也明显会更加轻松和容易。传统PC领域的IC供应商也可以借此进入家用机这个巨大的市场分得一份利益。而微软则可以借由API的进入进一步统治家用机图形领域并更好的使得自家的家用机平台取得竞争的优势地位。
完美无瑕,无懈可击,你完全无法理解这种所有人都是赢家的局面是怎么形成的……
祭出真正的杀招?
● 祭出真正的杀招?
却说魏兵皆奔祁山寨来,蜀兵四下一齐呐喊奔走,虚作救应之势。司马懿见蜀兵都去救祁山寨,便引二子并中军护卫人马, 杀奔上方谷来。追到谷口,先令人入谷中哨探。回报谷内并无伏兵,山上皆是草房。懿曰:“此必是积粮之所也。”遂大驱士马,尽入谷中。
懿忽见草房上尽是干柴,前面魏延已不见了。懿心疑,谓二子曰:“倘有兵截断谷口,如之奈何?”言未已,只听得喊声大震,山上一齐丢下火把来,烧断谷口。 魏兵奔逃无路。山上火箭射下,地雷一齐突出,草房内干柴都着,刮刮杂杂,火势冲天。司马懿惊得手足无措,乃下马抱二子大哭曰:“我父子三人皆死于此处矣!”
正哭之间,忽然 狂风大作,黑气漫空,一声霹雳响处,骤雨倾盆。满谷之火,尽皆浇灭:地雷不震,火器无功。司马懿大喜曰:“不就此时杀出,更待何时!”即引兵奋力冲杀。张虎、乐綝亦各引兵 杀来接应。马岱军少,不敢追赶。司马懿父子与张虎、乐綝合兵一处,同归渭南大寨。
司马懿败了,被人用计诱至兵家死地,一把火烧的跟儿子抱头痛哭,完完全全的败了。但是他并没有输掉最后的战争。
孔明胜了,将敌人拉进圈套,成功的点了火,关起门来做焖炉烤鸭,完完全全的胜了。但是他并没有赢得最后的战争。
一阵风,一场雨,改变了两个人的命运。
这就是天意。
下面我们要说的,也是一个关于天意的故事。
是的,次世代平台无论从哪个角度来看都太过完美了。没有人失败,没有一家厂商错过分一杯羹的机会,甚至其所有硬件和API的准备时间和阶段都平顺而且恰到好处。如果不是天意,我实在是无法找到其他的解释了。一切都太顺利了,顺利的让所有人都觉得仿佛生活在梦境中一样。
此时此刻,没有人会想到一句老话——福兮祸所依,祸兮福所倚。
于是,一切都发生了。不光爱掷骰子,而且还喜欢把骰子丢到看不见的地方的那位老顽童将美梦赐予每个人的同时,也为他们准备了一场后续的噩梦。
完美的三步将军!
● 完美的三步将军!
07年8月开始的这场席卷全球的金融危机对于每一个人来说都是不堪回首的。从房地产次贷危机引发的一系列海啸式的动荡以极快的速度波及了人类世界的每一个角落,紧随动荡之后的就是非常传统的恶性循环剧本——危机源头引发了倒闭风潮,倒闭风潮导致了资金链断裂,没有现金就要缩紧银根,然后就是控制成本/采购减少,需求的减少又导致了供应方的损失,供应方支撑不住就要倒闭,倒闭又进一步引发了下一波的资金链断裂加剧金融危机……这场金融危机中没有任何一个行业得以逃脱这种命运,游戏业也不例外。
不管何种游戏,最终都是要有人来消费并进行娱乐。金融危机对于个人的影响,首当其冲的就是老百姓的等效可支配收入的缩水。收入缩水就要节省开支,节省开支就要压缩一些生存必须因素之外的支出。游戏,相对于衣食住行来说显然不是维持生计所必须的东西。于是在游戏业这个小剧场里,金融危机的恶性循环剧本换了几个演员改了几句台词之后上演了——金融危机导致老百姓没有足够的钱维持过去的生活,为了活下去就要缩紧银根保障衣食住行,缩紧银根就要削减娱乐消费,娱乐需求降低游戏开发商就赚不到钱,赚不到钱就要倒闭,倒闭就会导致新的资金链断裂加剧金融危机……
每个人都是经济的动物,这句话果然没错。
好吧,如果不想完蛋,经济的动物们就要想办法脱困。脱困无非就是注入资金打破恶性循环,办法只有两个——要么将处于困境中的企业收归国有,然后将纳税人的钱注入进来;要么自己开源节流,想办法在困境中创造更多利润,并将这些利润作为资金注入以维持生存。
游戏业对这场金融危机来说既不是源头也不是关键节点,更无关国计民生,显然不具备去财长那里哭一鼻子然后拉全体纳税人出来垫背的实力。那么剩下的选择就很直接很明确了——压缩成本同时打开更多市场提升销售量,借以维持利润和生存。
我们只是要活下去而已
● 我们只是要活下去而已……
生存这两个字说起来容易,但对于游戏业者,尤其是PC游戏业者来说,这个词几乎就是沉重的注脚。几十上百号人花十几甚至几十个月辛辛苦苦写了个几千万行代码的游戏,刚发售甚至还没发售即遭盗版,玩家花几个钟头从网上下载,花十几分钟安装,花几分钟随便感受下,然后再花几十秒跑去网上发帖痛骂下了个垃圾回来浪费了自己好几个钟头云云,最后一抖手删掉了。这就是PC游戏界的现状。生平时代,想在这个盗版猖獗同时节操缺失的环境下生存已属搏命,更何况现在金融危机呢。
好在上帝关上一扇门的时候往往都会留下一扇窗,找到这扇窗的人就能生存下去。于是被生计逼急了的众人纷纷跑向了能看到的唯一的窗户——跨平台。
家用机平台相对于PC平台来说可谓乐土一片了。厂商长期以来的极大投入以及家用机的高针对性所带来的加密资源的充裕保护了家用机平台的版权,再加上家用机平台对于常规网络长期以来的相对封闭以及家用机平台特殊的盈利分红模式,为家用机平台写游戏几乎成了铁饭碗甚至金饭碗的代名词。但是长期以来家用机独特的硬件构架导致了它与PC平台的编程规则差别极大,不仅编程进入门槛要求极高,想要为家用机平台开发图形程序基本上还意味着需要写一套全新的图形引擎,一个完整全新的图形引擎对于绝大多数游戏开发者来说都是一笔极为巨大的开销。所以乐土也好金饭碗也罢,传统的家用机平台游戏不是说些就能写出来的。这种状况直到次世代平台出现才得以被打破。
整个次世代王朝最显著的特点,就是硬件体系导致的软件层的高泛用性。PC平台与次世代平台的区别现在已经模糊到了仅能通过有没有X86指令以及兼容windows的代码来衡量了。程序员不用再像过去那样把家用机平台和PC平台的变成看做是两个次元的话题了,现在他们只需要认认真真的为其中一方的游戏计划写一个引擎,然后透过简单的代码修改就可以轻松实现跨平台编程。这样既保证了PC平台传统用户的需求,一旦把自己的作品放进家用机平台上去销售,在没有增加成本的前提下收益又会得到极大的提升。
得救了,幸存的游戏开发商全部双手合十,泪流满面的跪拜在窗前,一面感谢上帝的眷顾一面祈祷次世代平台能够千秋万代。
得救?你恰恰被逼入了死角
● 得救?你恰恰被逼入了死角
这样看来,次世代平台确实功德无量,它打开了全新的局面,让两个领域的硬件厂商均能获利,还在金融危机中拯救了无数人,一直到5年多以后的今天,家用机平台依旧发挥着这样的作用。
我不知道该用什么表情来面对自己接下来说的这句话:此时此刻,依旧没有人会想到一句老话——福兮祸所依,祸兮福所倚。
次世代平台虽然已经具备了极高的泛用性,但归根结底它还是个封闭系统,这导致了次世代平台在其生命周期内不可能发生构架级的硬件改变。整个次世代平台从出现到现在已经五年多了,期间只经历过一次制程升级,全部的硬件构架均未发生改变。
5年,60个月,按照摩尔定律估算,大规模集成电路的集成密度和性能已经提升了3次,涨幅更是超过800%了。
5年里,这个世界又发生了什么呢?
微软继续孜孜不倦的引领着图形编程界的进步,因为DX9.0C几乎已经将光栅化过程中所有非ALU方面的问题都摆上了台面,MS的目光很自然的转移到了ALU上。DX10引入了Unified Shader,让ALU可以近乎于全功率的无差别运行各种类型的shader,DX11中DC、并行kernel等先进技术的引入更是表明MS对ALU效率问题的重视程度已经提升到了前所未有的高度。桌面旗舰GPU也跟着从DX9.0C过渡到了DX11,集成度增长了10倍有余,甚至已经开始具备了CPU的某些雏形,5年前的GPU相对于现在的GPU,几乎就像算盘一样简陋。整个业界的形势几乎只能用一片欣欣向荣来形容了。
唯一没有恒久不变的,是依旧处在金融危机余波中的动荡的游戏界……
现在,窗边的程序员们不得不面临一个艰难的抉择——PC平台的日新月异吸引着他们,不论微软还是用户的需求似乎都在激励着他们向更加复杂、更加美轮美奂的特效前进。甚至从他们自身的角度来出发,更高的执行效率、更低的编程难度和更加自由的编程环境也在不断的诱惑着他们。但是低头看看荷包,再举目四望一下依旧是盗版猖獗同时节操缺失的生存环境,程序员们显然迷茫了……到底是选择前进还是选择生存呢?
掷子投降,天命所归
● 掷子投降,天命所归
人是经济的动物,去掉定语就成了人是动物。是动物,就会选择生存。选择生存,就要保住自己的饭碗。保住饭碗,就要继续用一套引擎以最低的成本包打天下。一套引擎跨平台,就要照顾所有平台中最短的那块板子。最短的那块板子,显然是5年没有被升级的羸弱的RSX和C1。
司马光此刻再次光芒万丈了。
于是,我们看到了今天的乱局,看到了构架设计和游戏表现的背离,看到了NVIDIA的该胜不胜以及AMD的当败不败,看到了DirectX 9.0C的异常坚挺,看到了很好用很强大的新API无人响应,看到了连打酱油的都算上之后5年56个游戏0个支持引擎的恐怖景象……
程序员们没有错,毕竟金融危机不是程序员群体直接导致的,家用机平台也不是程序员群体开发的,这些一切所导致的责任不应该由程序员来承担。人家只是要生存,只是要养家糊口而已。
游戏开发商也没有错,企业要发展,要维护自己的利润,不追寻利益的企业是不可能健康持续的发展下去的。对企业来说,图形业界再怎么进步,自己再怎么努力的去维护这种进步,倒闭了又有什么意义呢?
当然,责任也不在屏幕前的您身上。本来我是想说金融危机是人们自己的贪欲所导致的,但转念一想,你我似乎并不是导致这种贪欲的主体,我们甚至还在为阻止金融危机的进一步扩散而努力着。虽然你我都要为PC游戏界的现状承担一定的责任,但俗话说一个巴掌拍不响,导致现在这个局面的可不仅仅是PC游戏界。
家用机平台虽然是问题的表象和直接被利用的棋子,但它同样没有责任,从硬件构架设计上,次世代平台根本无可指摘。不仅如此,次世代平台甚至还极大的推进了游戏编程界的融会贯通,让原家用机平台的程序员和PC平台的程序员可以坐在一起充分的交流编程思想,促进先进算法和编程思想的交流及进步。微软则更加无辜,人家推动图形业界进步同时卖出自己的API还来不及呢,何来阻碍一说了。
那么剩下的能够承担一切责任的,就只有天命了。
上帝这个顽皮的老小孩摆好了棋盘,我们在文中设计的每一个环节则都是他面前的诸多棋子。家用机平台更新换代,金融危机爆发,编程主体被迫开始迁就次世代平台,新的更好的API得不到推广和应用,NVIDIA的更先进的构架没有用武之地,AMD的更加保守的构架成了识时务者为俊杰的注脚……棋盘上的棋子步步相连,每一步都在天命的控制之下坚定地无可挽回的进行着。
起手无悔,你从不曾犹豫,而我却受控在你手里……
● 残局需要抵近观察
虽然伴随着漫长的叙述以及艰难的阅读过程,现在谜底已经揭开了,但我还不打算在这里结束。一件事发生之后,我们不光要讨论它的起因和经过,对它的后果也要予以考虑。
时代总是在发展着,生活也还要继续。不管这个图形发展被制约的现状是如何形成的,当务之急显然是看清楚这种现状所能够导致的后果,以及想办法予以破解。
先来说说后果吧。图形界究竟被拖慢到了什么地步其实应该已经可以一目了然了——任你PC平台如何披荆斩棘的进化到了DirectX 11,特效发展何等的奇幻瑰丽,硬件水平怎样的给力爆缸,游戏编程的最低限始终被牢牢地拴在了G70和R580这一级DirectX 9.0C的水平上。既然短板是G70和R580这种老构架,那么就不得不为了照顾他们而采用更加规整方便吞吐的4D shader以及大量的材质操作。毕竟这些硬件的纹理单元和后端输出能力相对于他们的ALU的比例都是极高的,甚至像C1这种硬件,其edRAM的存在使得其在输出和采样等场合拥有了非常恐怖的水平,善加利用才能在家用机上尽可能多的实现更好的特效。于是,图形界的主流在今时今日显然还停留在2006年以前的水准上。
NVIDIA受到的影响也不可小觑。作为选择了shader而不是纹理的一方,NVIDIA不得不正面面对图形业界停滞不前带来的冲击。这种停滞不前险些让NVIDIA为了自己致命的先进构架理想付出惨痛的代价。毕竟游戏中表现不出构架级的优势,然后又为了构架级的优势而背负沉重的功耗和晶体管负担是其让人诟病的最主要原因。尽管NVIDIA在构架的主体发展上表现出了不屈的阻止图形业界因为任何外来原因出现倒退的信念,但作为一家企业,NVIDIA必须考虑收益和自身的发展问题。于是,我们看到了变通,看到了对现今游戏编程界的妥协,这个妥协就是大幅提高了纹理单元比例的GF104/114构架。GF104/114的成功多少也是对勇敢但命运多舛的NVIDIA的补偿吧。
AMD这边则要显的微妙得多。当初错误的选择险些彻底断送了ATI作为GPU设计者的前途,更是直接导致他被AMD收购。接受烂摊子的AMD依旧未能改变现状,可以说R600的初代完全是以失败告终。而且由于丧失了对未来的把握以及先机,摆在AMD面前的路十分的不明朗,他只得先着手改进手里的构架,然后走一步看一步了。但正当AMD一筹莫展的时候,包括自己在内,谁都没有想到的事发生了,R600本身以硬件设计和企业影响力来压迫程序员就范和让图形界尽可能缓慢平滑的过渡到新API的目的,竟然被金融危机和家用机平台联合完成了,甚至是超额完成了。作为这场天命大戏中唯一的受益者,突如其来的甜美让AMD几乎完全不能自己。在这个几乎完全是为R600衍生物构架准备的环境中,AMD疯狂的利用着眼下的机遇,时机准确的推出了一系列针对性极强的构架,每一代构架无不契合着当下游戏的特点和需求,单纯高吞吐,单纯纹理能力,单纯的晶体管堆砌……AMD也因此而莫名其妙的得到了诸如“为玩家着想”、“脚踏实地做事”之类的美誉。这个过程进行得太过顺利,以至于AMD就像是搭上了急速飞奔的列车,想要停下来的时候发现自己都已经欲罢不能了。
当构架发展到RV870的时候,过渡脱节的环境需求以及来自物理极限方面的压力让AMD意识到了危险的存在,于是我们看到了RV970上AMD的转身。但是因为先前的失控太过剧烈,AMD完全无法在自身扩展规模的道路上安全的停下来。因此RV970对ALU和执行效率的改进仅仅只能浅尝而已。要全盘推倒重来,对目前的AMD来说代价实在过于高昂。
架构残局谁来收
● 残局谁来收
说完了后果,我们自然要展望未来了。
不管是NVIDIA的坚韧不拔和信念不屈,还是AMD的成王败寇加实用至上,日子总还是要继续过的。不管是谁,未来的路都要从脚下开始走。在经历了这5年的迷局之后,如何调整自己在未来的道路将变得尤为重要。
首先是次世代平台,家用机虽然在金融危机中不得已而暂时的扮演了一个身份特殊的角色,但其尴尬的地位马上将被打破。按照家用机平台发展的规律来看,其升级在5年多以后的今天已经不可避免。不论使用DirectX 11还是支持未来的更新API的硬件,家用机平台终将继续推动图形业界的进步和发展。借由家用机的这次升级过程,目前的迷局将因为表象或者说表达手段的打破而最终得到破解。
但问题是这种家用机平台与PC平台的互通影响会不会在下一个五年里再次出现,甚至成为一个新的反复出现的魔咒,现在还不得而知。不过我个人相信,只要其他因素,诸如经济环境和PC游戏界的自身发展现状的不到改善的话,一切都将会像一幕陈旧的中世纪歌剧一样换几个演员反复上演的。
NVIDIA相对来说则不太让人担心。通过对过去的回顾,我们已经能够完整的勾勒出NVIDIA自G80开始发展的路线图,甚至可以将其延伸到更加遥远的未来。作为其精神的体现,贴近微软需求提供更加高效率运作而不是高规模运作的硬件的理念将一直贯穿在NVIDIA未来几年的发展路线中。
从G80到GF100的发展,NVIDIA始终坚定不移的走在自己规划的让GPU变得更加高效多能的路线上,灵活、并行化、融合以及更加明确的通用性是NVIDIA早在5年前就规划好的路线。通过一步步有条不紊的将各个单元融合进SM单元,实现多级cache和统一定址的引入,NVIDIA已经完成了对图形构架的收缩、统一、平铺以及开放准备。随着CUDA4.0的出现,多GPU间的直连和整个存储体系统一成一个local的可能性已经越来越大,存储的统一又为RISC构架CPU进驻并与GPU融合提供了第一必要的窗口。
NVIDIA为我们在未来准备的,将是一个高并行度的GPC单元透过高速总线和L2 cache包围一枚三发射乱序的ARM处理器的怪兽级芯片。透过CS之类解放通用计算能力并将其应用于图形领域的手段,这种芯片的shader效率将是极其恐怖的。完整的路线和坚定的执行力是未来NVIDIA实现发展的保障。不过话分两头,尽管这是很大的机遇,NVIDIA同时也要面对比过去更加严重的晶体管负担。如何面对这种负担,同时尽可能多的利用现有的条件将这些看似无用的晶体管转化成对图形运算的助益是NVIDIA面临的最大考验。
相对于NVIDIA的思路明确,AMD这边就要稍微混沌一些了。自R600开始的所有构架中,我们完全看不到AMD对未来的信心以及完整的规划。一直持续到RV870的机械性的规模放大仅仅是迎合了当下图形领域的非正常需求而已。对于未来AMD并没有一个完整的具有贯彻性的规划,从RV970的缓慢转身就可以看出这一点。目前的图形需求环境早晚要回归正常,在那之后R600构架的各种衍生物将丧失存在的意义。如果AMD不能提前制定应对措施,为自己制定一个明确的发展方向的话,缺乏完整的具备可执行性的规划和思路对于企业来说是一个极为严重的问题。因此,尽快拿出对未来的规划是AMD目前最大的挑战。
第二次“沙子-沙漠效应”
● 沙子-沙漠效应,我早说了要见两次的
受影响最深的,也可能是最致命的,就是整个光栅化的发展进程。光栅化过程说到底就是材质和颜色的过程。纹理和像素本应该是一对共同发展的好兄弟,适度搭配的纹理操作可以提升整个体系的操作效率,降低操作难度,而适当的像素则可以进一步表达正确的效果。问题是现实往往是残酷的,在现代半导体工业中,可用晶体管的数量总是有限的。这就导致了像素和纹理最终不可能得到平等的发展。本来要好的两兄弟,现在要为了各自的生存前景搏命了。
不管出于天命也好,人为也罢,总之在这个回合的较量中,材质的操作显然占据了上风。图形界既然没有沿着微软规划好的更高效shader为主的路线前进,接下来的发展方向自然就要发生变化。游戏编程界长时间停留在以材质、半透明和光照操作以及贴图表现为主的方向上,这势必会对今后程序员习惯使用的表现手法产生深远的影响。烘焙含有精确效果的纹理本身是需要时间的,高精确度的纹理经常需要几十甚至上百机时才可以完成。如果程序员开始习惯性的依赖起了预制烘焙纹理,结果会怎么样呢?
程序员通过和美工联动,用十几小时时间烘焙出了几十M漂亮的含有高光效果的材质,您眼前一亮。
接下来,简单的高光效果您看多了,于是希望别的真实的效果,于是程序员再次和美工联动,用几十小时烘焙出了几百M含有半透明效果的高光材质,您的眼前又是一亮。
然后,新的效果您又看烦了,为了满足您的眼睛,程序员开始绞尽脑汁开发纹理压缩算法,而美工们则熬红了双眼为您校正着各种光线的表现,终于在经历了几百小时的精心烘焙之后,您眼前的带漫反射效果的材质终于让您满意了。
现在,光有这些已经完全不够了,您还要阴影表现,还要更加真实的光照效果,还要求影子里的光度都不能出错,甚至要求所有场景都能够100%的依据您害死猫的好奇心正确的进行表达。结果,烘焙材质的时间变成了几千机时,材质大小直奔G为单位计而去,程序员对美工们在初始颜色上的精确要求让美工们抓了狂,而美工们所要求的完全无损的高比例纹理压缩算法则让程序员们发了疯。
下次,会怎么样呢?
我在前面的文章中提到过,我们会遇到两次沙子-沙漠效应。这就是第二次。而不同于上次的是,这次我们没有解决的办法……
纹理不同于像素,提升纹理的操作效率同时控制其对输出端资源和存储带宽的疯狂吞噬的唯一手段,就是高比例无损或者低损压缩算法。很显然,这又是一个纯数学方向上前进缓慢的领域。对像素我们可以透过结构来进行优化以换取快速执行效率,同时通过更新的API来改善编程环境减轻程序员的负担。对纹理我们不仅没有任何的办法,而且还要拉上完全无辜的美工们一起遭殃。当一个领域的发展直接受到了来自纯基础理论的束缚的时候,问题通常都是暂时无解的,CPU的并行化就是个极好的例子。既然问题无解,那这个方向显而易见是危险的不归路。
我们目前的编程界,似乎正在向着这个危险的方向滑落过去,甚至连标榜业界领先的图形表现测试基准的futuremark,也在3DMARK11中丢开了对更加灵活的shader的追求,直接大肆采用了各种高质量贴图来完成效果的表达。
我们说过,材质操作必不可少,他是提升系统执行效率的一个重要手段。但现在的材质操作正处在不均衡的过度发展状态,它更像是一个肿瘤,如果任其肆意生长下去,早晚有一天会压垮整个光栅化过程。
收拾棋盘的不是上帝,是商人
● 收拾棋盘的不是上帝,是商人
数学是美丽而和谐的,但同时也是晦涩的。正是因为这种晦涩,数学的和谐之美仿佛与人们相隔了千里之遥,一般人似乎一辈子都无法触碰到她美丽的身体,直到显卡的出现打破了晦涩所带来的隔阂。透过光栅化的过程,显卡将大自然中最基本的数学之美以图形的方式重构出来,具象化的展现在了我们的面前。我们应该感谢显卡,感谢光栅化过程。也正因为此,我们应该祈祷光栅化过程向着更加正确,起码是能够更加正确高效和准确的体现数学之美和自然之美的方向上发展。
光栅化过程的路最终将走向何方,我不知道,但我能够明确的是,等到微软公布了DirectX 12的必要情报之后一切都将变得再次清晰。这不仅关系到AMD和NVIDIA双方未来的命运,更关系到光栅化命运的发展。命运的重担,再次落在了微软的肩上。
上帝下完了这盘棋之后起身离开了,而一直呆在旁边的商人并没有走,他留下来开始收拾棋盘,把每一个棋子都摆放在了他认为合适的地方。等到棋子全部码放完毕的时候,上帝会回来,开始新的棋局。
这棋局中有商人自己,有家用机厂商,有AMD,有NVIDIA,有我,也有你。
后记:
我衷心的感谢所有阅读到这里的人。这趟数万字的阅读之旅对任何人来说都是一个艰难的过程。这个快节奏的读图的时代,能够认真的阅读文字的人已经越来越少了。能够为了计算机图形过程这么个与日常生活联系并不是十分紧密的领域花费如此多的时间,这不仅是作者的幸运,更是整个计算机图形界的幸运。
在这趟旅程中,相信您不仅已经复习了光栅化过程的基本知识,重温了AMD和NVIDIA双方过去5年来所经历的种种往事,更能够得到很多疑问的答案。能够为您解开一个个疑团,展现现象背后的真实是我的荣幸,更是我的骄傲。
在今后的CBS探索与发现节目中,我们将继续秉承CBS之眼的精神,为您揭秘种种行业现象,带您了解背后的真实。