第一页:多核心处理器的最大问题就是软件问题!
题首语:
多核心处理器与之前的单核心处理器有很大的不同就是它需要软件的支持,只有基于线程化的软件硬应用上多核心处理器才能发挥出应有的效能,因此多核心处理器的最大问题就是软件问题。
从现在看来单核处理器到多核处理器的迈进是整个工业界不可逆转的一个趋势,然而这个计算领域的进化过程中却多少与以前不一样,比如同一款Photoshop6.0版本软件从奔腾3平台升级到奔腾4平台后,执行速度就大不一样。而在工业界从单核处理器到多核处理器的迈进过程中,事情却有了新的变化。之前发布的软件并不会因为从单核处理器平台升级到多核处理器平台而改善程序的运行速度,除非你的程序已经实现了并发。因为多核心处理器与之前的单核心处理器有很大的不同就是它需要软件的支持,只有基于线程化的软件硬应用上多核心处理器才能发挥出应有的效能,因此多核心处理器的最大问题就是软件问题。天极网在整个2006年都致力于宣传多核时代软件的重要性,旨在为消费者阐明多核心处理器的性能瓶颈所在,使之能更加理性的去看待多核。对于行业而言,天极网愿意和工业界与学术界一起加速并行编程的推广进程。
虽然并发编程并不是什么新鲜的玩意,关于并行计算的程序也早就出现,比如Oracle、IBM的DB2这类的数据库程序就是并发编译的程序。但有一点要提醒的是,面向对象的语言我们从上个世纪60年代Simula就开始采用,但一直到了90年代面向对象语言真正开始占主流地位。并行编程差不多也有同样漫长的历史可以追朔,特别是进十年来,并发应用越来越多(有多线程的,也有多进程的,但发生整体转向性巨变,目前还不具备条件,需假以时日。
就像在90年代我们都在学习什么是对象(Class)一样,现在我们又开始在学习什么是并发编译,但在这过程中我个人的心得是:在并发编程中千万不要盲目的去理解并发编程,要根据面向目标的原则来做出决定。因为实际上并不是所有的应用都需要并发,一个简单的例子就是:一个女人需要花十个月才能生出一个小孩,那如果生小孩是作为对象的目标的话,我们就不能把这十个月分为十个线程并发执行,让这女人一个月就生出一个小孩来。所以,在学习并发编译的时候我们一定要坚持住面向目标的原则,不是所有的应用都可以并发执行的。
新技术通常都很吸引人,有时候也很有用,但软件开发方式的重大变革必须来源于在真正得到爆发式应用前就存在并经过多年的缓慢成长、先进而稳定的技术。这个过程是必须的。变革所依赖的基础技术必须足够成熟(包括有固定的厂商与工具支持),通常这个稳定与成熟的过程需要花费7年甚至更长的时间,新的技术在广泛应用时才不会有潜在的性能悬崖与陷阱。面向对象的编程是这样,并发编程也同样如此。
第二页:架构与制程的交叉更替是软件厂商的救赎
当我们放眼服务器市场就可以发现:并发编程在行业领域已经有了多年的沉淀,因为大型机上SMP对称处理技术早就开始应用,在Cluster系统、MP Server、DP Server这样的环境中,几乎所有的应用都实现了并发。而桌面领域的情况则刚好相反,由于缺乏多路平台与多核处理器的支持,目前大多数的应用都是居于单线程,Pentium4 2.4c之后才首次引入了HT虚拟线程技术,随后的PentiumD系列双核心处理器的面世、AMD Quad FX 4x4平台的首次将SMP多路对称计算技术引入桌面领域,才彻底了从硬件层级上改变了之前单线程的计算模式,使得并发编程在桌面上萌芽有了发展必须的基础。
虽然并发编译的硬件基础已经具备,但就如我们开篇所说:软件行业发生整体性转变的基础技术还没有经过足够的沉淀,对于软件厂商来说目前似乎只有两条路可走:一是优化程序代码,使程序执行更有效率;二是实现并发。但这其中不管是哪一条都势必使开发成本、时间大大增加,调试也比较艰难。但好在Intel除了把旺盛的精力投入到并行计算中外,还在处理器架构与生产工艺(Process)上不断的交叉更替改进,以确保在制程没有改变的情况下可以借由处理器体系架构的更新来提升产品性能,又或是处理器架构没有改变的情况下借由制程的更新来提升产品性能。也因为这样,软件厂商才能在并行编译的全面变革前得到喘息机会。今年年底,Intel的45nm工艺将会正式开始投入使用。与以往不同的是Intel这次45nm工艺的改进不仅是晶体管间线宽的缩短,还改进了沿用了40多年晶体管(Transistor)构成材料,在正式进入E6850的测试之前我们不妨来关注一下这个生产工艺(Process)上的“题外话”。
晶体管其实就是一种简单的开关装置,可处理电子数据中的0、1组合。处理器就是含有数百万此类通过铜线以特定方式连接在一起的晶体管。而晶体管内部是由源极、漏极、栅电极、栅介质、及硅底层通道。源极是指晶体管中电流产生的部分,它包含涂层硅(doped Si),漏极是指晶体管中电流流向的部分,这部分与源极一样,都参杂了一些杂质以降低电阻。不过晶体管是绝对对称的,则电流可以从源极流向漏极,也可以从漏极流向源极。栅极电极就是晶体管顶端的区域,其电流的状态决定晶体管是打开还是闭合,传统上栅的制作材料是多晶硅或原子随意排列且不形成网格状结构的硅。栅极介质是位于栅极电极以及沟槽之间一层薄层,目前的数字芯片中晶体管栅介质是由二氧化硅组成,而二氧化硅是绝缘体材料,它的作用是隔绝来自栅极电极的泄漏电流,但如果这个栅介质层太薄其泄漏电流的电量就越大。
Intel对晶体管的改进是来自之前晶体管的栅极介质,Intel是使用一种基于铪元素的化合物来替代之前的二氧化硅,这种基于铪元素的High-K介质具备良好的绝缘属性,同时可以在栅极及硅底层之间形成较高的场效应(High-K)。因为High-K的铪化合物比二氧化硅更厚的同时保持着理想的高场效特性,所以,这种High-K材料还可以大幅度减少泄露电流。据Intel官方发布的数据,这种High-K介质可以比之前的二氧化硅材料降低泄漏电流10以上。而同时因为场效的提高,使得晶体管源极到漏极的驱动电流提升20%,源极到漏极的泄露电流降低5倍以上。如果这些数据真的如Intel所公布的一样,那么对于单个晶体管来说我们就可以获得比之前更高的开关效率,以及更低的泄露电流。而对于拥有几亿个晶体管的现代处理器来说,我们可以从中获益是非常可观的,这显然更有利于提升intel处理器的每瓦性能(Performance per watt)。
虽然基于铪的这种High-K栅介质有着高场效以及绝缘的良好特性,但其却不能使用之前的多晶硅栅极,而是需要应用上一种全新的金属栅极来替代,目前Intel均没有透露这些材料的组成元素以及其具体配方,但在之前的新晶体管发表会时Intel代表却表示,竞争对手想要达到目前Intel 45nm产品晶体管的效能,至少需要到对手下一代的32nm工艺,对于Intel的这种说法我们是持有待考察的态度,毕竟实际的效能表现需要等双方的产品具体发布出来才有正确的答案。
第三页:第一颗FSB-1333处理器Conroe E6850
按照Intel一直在奉行制程更新与处理器架构体系改变的交叉更替的规律,在Conroe架构推出之后很自然的就是借助45nm工艺来提高处理器效能,但在45nm正式试产之前,Conroe架构还有一次重要的升级就是把系统的前端总线(FSB)自FSB-1066升级到FSB-1333,以缓解双核、四核产品的并发执行对总线的压力,更好的支持计划在年底投入市场的DDR3高频率内存。
从Intel的Roadmap来看,我们手上的这颗Conroe E6850似乎计划在今年第三季度投入市场,在这期间还有E64x0\E63x0等一系列新产品发布,这些新的产品将会在缓存容量以及FSB上有所改进。
从具体的产品信息可以看到到,Intel今年在四核的产品上还会有Q6600、Q6400两款Kentsfield产品推出,而FSB-1333前端的暂时只有Conroe架构下的E6850、E6750、E6550三款,此外目前的Conroe E6300、E6400产品将会有4MB Share Cache的版本推出。
在图片中左下角那颗经过打磨的CPU为Conroe E6850,上方的是Conroe X6800,最右边的是Kentsfield QX6700四核处理器,对比一下右图Conroe E6850与Conroe X6800底部的电阻发现没什么不同。
最新Version 1.38的CPU-Z软件已经可以正常识别出Conroe E6850,透过CPU-Z的界面上资讯我们可以看到Conroe E6850的前端为333MHz,Multiple为9x,由于我们拿到的版本是ES工程版,因此Multiple可以在6x到9x之间自由调节,L2 Cache与之前的Conroe X6800一样为4MB。此外这批FSB-1333的产品都为低电压版本,核心电压在1.1-1.2V之间。
第四页:Conroe E6850测试平台及测试环境介绍
目前市面上能正式支持Conroe E6850处理器的P965主板并不多,仅有ASUS与Gigabyte两家表示通过更新BIOS可以支持FSB-1333的处理器,其中Gigabyte的全线Ver1.0、Ver2.0 P965产品都可以通过刷新新版本的BIOS支持FSB-1333处理器,而其版本号为3.3版本的P965产品则是硬件支持FSB-1333,在将来想要升级FSB-1333处理器的玩家不妨留意一下。
我们这次测试使用了Kentsfield QX6700四核处理器、Conroe X6800、Conroe E6300来与Conroe E6850进行对比,内存使用的是Corsair XMS2-8500 1066MHz的512MB两条,不过我们在BIOS中使用Auto设置,则FSB-1333是内存运行在DDR2-833,而FSB为1066时内存运行在DDR2-800。
Conroe E6850主板推荐:Gigabyte P965-DQ6 Ver3.3
正如我们在前面文章介绍过的目前通过升级BIOS支持FSB-1333的P965系主板在Memory上都只能支持到DDR2-667,不能支持更高的DDR2-833等频率DRAM,唯有通过硬件的修改才能完整支持。这也意味着Gigabyte的Ver1.0、ver2.0以及目前通过升级BIOS支持FSB-1333的P965产品都存在Memory上的遗憾,而经过硬体升级支持FSB-1333的这款Gigabyte P965-DQ6 Ver3.3则完全可以支持到DDR2-833 Memory,这是目前市场上唯一一款正式硬体上支持FSB1333处理器的主板。
夸张的CPU供电系统
为求静音目的而设计的热管散热系统,看起来非常夸张
第五页:Conroe E6850 Power Usage in 3Dmark06
Conroe E6300 Power Usage in 3Dmark06
Conroe X6800 Power Usage in 3Dmark06
Conroe E6850 Power Usage in 3Dmark06
Kentsfield QX6700 Power Usage in 3Dmark06
第六页:E6850 - 3DMark06 Performance Per Watt
从3Dmark06的测试成绩来看,FSB1333的Conroe E6850尽管前端总线比Conroe X6800高出不少,但在3Dmark06中的得分并没有能高出多少,而是与Conroe X6800得分相近。因此在最终得分的每瓦性能对比上也可以看作是处于同一水平。在该项目测试中FSB-1333的优势并不明显,其实3DMark06以及游戏在目前更看重的是处理器频率。
第七页:FSB-1333 Conroe E6850 in PCmark05
虽然Conroe E6850在PCMark总分及CPU子项目的测试中都不及Kentsfield QX6700四核心处理器,但在Memory、Graphics两个子系统的测试中成绩却明显好于Kentsfield QX6700,这是因为Conroe E6850拥有FSB-1333的前端总线带宽,在内存吞吐方面性能要高于FSB只有1066的Kentsfield QX6700,而Graphics这块与3DMark06的情况相同,目前的游戏需求还是以处理器的主频为主。
第八页:Conroe E6850 in Sandra2007&Sciencemark
Sandra2007中的测试成绩并没有什么意外,在处理器器算术运算能力、多媒体解压缩能力方面,Kentsfield QX6700占尽优势,几乎以一倍的性能差距领先Conroe E6850。而在Memory Bandwidth的测试中毫无疑问是FSB-1333的处理器拥有较大的内存吞吐带宽。
Sciencemark的测试成绩表明了这是一款没有经过任何并行优化的软件,与传统的测试软件一样,Sciencemark要求的是内存带宽,处理器主频的因素,在这种前提下Conroe E6850全面领先于Kentsfield QX6700,虽然这个结果可能有点遗憾,但该结果却反映了目前业界的现实,那就是绝大多数的软件都是基于单线程的,多核处理器并不能为这些应用带来任何效率上的提高。
第九页:Conroe E6850 in Cinebench&3DS MAX8
Cinebench 9.5是一款经过多核心优化的测试软件,软件可以根据CPU中物理核心的多少而自动分配相同的线程同时进行工作,在这样的测试软件中多核心处理器的效率是可观的,Kentsfield QX6700四核处理器充分展示了自己的并发优势,在最短的时间内完成了渲染任务。
3DS Max 8同样是一款经过多核心优化的优秀动画制作软件,在这里的测试结果与所有经过多核心优化的程序一样,毫无疑问的是Kentsfield QX6700四核心处理器取得最好的成绩。
第十页:FSB-1333 Conroe E6850 in Game
虽然一些行业性的软件比如3DS MAX8、Sony Vegas7中就已经局部为多核心处理器进行了优化,但从整个软件行业的大环境上看:目前的绝大多数应用软件都是基于单线程,尤其是游戏业,并发编译要求以人类不习惯的模式去思考问题,这对于习惯按逻辑思维去思考的游戏开发人员来说,并发编译难度远较其他行业来的更大。游戏开发在软件开发行业中被认为是最艰苦的行业,因为游戏开发行业是唯一不会随着硬件平台性能增强而改善开发环境的行业,相反,很多时候还随着显示卡性能的增强使的游戏开发难度增大。现在这个“最辛苦”的开发行业又要迎来新一轮的挑战——游戏的开发难度还需要在现有的基础上加入并发的概念,以适应未来多核处理器越来越强的计算环境。
与并行计算在行业软件开发的几十年基础相比,游戏开发领域之前并没有相关开发的案例,Autodesk虽然尽力在让旗下的3DS MAX、Maya软件能从多核处理器中获益,可以极大的提高游戏开发效率,但讽刺的是其开发出来的游戏却没能从多核处理器中获益。有时候反而会因为使用上多核处理器而导致效能下降。
我们测试了目前主流的两款3D游戏——《FarCry》、《Splinter Cell Chaos Theory》,在同一套测试平台上分别使用双核心的Conron X6800与4核心的Kentsfield QX6700作为对比测试,从测试的结果可以看到,双核心的X6800因为主频较高而击败了主频较低的4核心处理器QX6700。这些实际的测试说明:即使是目前最新设计最好的游戏,也远远没有能利用上多核处理器强大的计算能力。
鉴于目前娱乐游戏开发行业之前并没有很好的多核优化案例,Intel软件开发部门与Futurmark公司联合开发了一款名为Ice Storm Fighter的游戏Demo,这款游戏是基于一个多线程的游戏引擎设计(Multi-Threaded Game Engine),使用Microsoft DirectX 9.0c API,游戏引擎是使用一种称为“n-number threading”的技术来设计。在这个游戏Demo中的每一个导弹都有自己的重力、运动惯性等特性,其他的物件也都有单独的线程来控制,这样就能很好的利用多核处理器强大的并绪执行能力。
第十一页:多核时代,黎明前平静的等待
通过我们上面一系列软件的测试,其中有的测试软件已经实现了并发,比如CineBench9.5、3DS Max 8等都可以极大的发挥多核处理器的并发执行优势。多核心技术所带给我们的最大贡献或者说我们对多核技术的最大期望便是:提供比目前计算机更强计算能力,因为它将会大大的降低社会生活的总成本,无论是生产成本还是娱乐成本。比如在一些需要大量并行处理能力的行业、网络游戏服务商、门户网站等都将受益于并行计算。
然而望总是与问题同在,在Sciencemark、3D游戏这些仍然使用单线程的测试项目里,反而会因为配备了多核处理器而导致性能有所下降。虽然这个结果可能有点遗憾,但该结果却反映了目前业界的现实,那就是绝大多数的软件都是基于单线程的,多核处理器并不能为这些应用带来任何效率上的提高。在一些特殊的行业里,因为缺乏成功的案例以及足够的基础技术沉淀,实现并发编程的难度远超想象。在之前Intel曾与Futurmark共同开发了一个基于多线程的游戏引擎——Ice Storm Fighter,旨在为游戏开发者提供一个基础模型。但可惜的是围绕着游戏开发的整体开发环境还并没有为多核做好准备,软件技术的发展需要一个成熟而缓慢的过程,看来Intel还必须为这个行业做更多的事情。
因此对于多核时代,我们目前不能一味的过高期待其性能表现,也不能因为配置了多核心处理器发现系统没有比单核心处理器性能提升多少而抱怨或失望,我们应该用“理性的眼光”和“平和的心态”来默默做准备。毕竟多核时代的黎明正在悄悄的来临。
|