多核游戏开发模式 |
|
通用处理器的并行计算远景,x86体系入多核时代 在1993年Intel首次将自己X86的产品命名方式改为Pentium以来,至今已经有13年,虽然其间经历了Cyrix、IBM、 IDT、UMC、Rise、AMD等多家公司的挑战,但Pentium处理器13年来还是以最强的性能,延续着摩尔定律,并代表了各个时代处理器发展的最 新进程。可以说摩尔定律见证了Intel这个高傲巨人的成长,并亲眼目睹了其在这个星球上建立起一个强大的IT基础设备黄金帝国。 Pentium的辉煌一直持续到Intel 4GHz处理器计划的取消,受制于处理器散热、功耗、泄露电流等一系列的问题,Intel处理器不能再像以前一样以提高频率来增强性能,而是把旺盛的精力 投入到多核心处理器的研发上,然而多核心处理器的发展让一些的潜在问题暴露出来,因为多核心处理器与之前的单核心处理器最大的不同就是它需要软件的支持, 只有基于线程化的软件硬应用上多核心处理器才能发挥出应有的效能,因此多核心处理器的最大问题就是软件问题。 在过去三十年里,处理器的设计者主要从三个方面提高处理器的性能,分别是时钟速度,执行优化和缓存,而头两个就是从线性执行流程上考虑的。这使 得大多数软件不用做版本的升级甚至原封不动,就可以轻松而持续的享受处理器性能提升的成果。让程序的执行速度大大加快。比如同一款 Photoshop6.0版本软件在几年前的机器上和现在的机器上执行速度就大不一样。而接下来的数年里,新型芯片的性能提升将主要从三个方面入手,其中 仅有一个沿袭是过去的:(1)超线程(2)多核(3)缓存。而头两个就是从并行执行流程上考虑的,对单线程的应用程序毫无帮助,也就是说在之前的大部分基 于单线程的程序将不能从以后多核心处理器升级中获得效能提升,软件厂商再想像以前一样轻松而持续的享受处理器性能提升的成果已经不再可能,除非你的程序已 经实现并发。 虽然并发编译并不是什么新鲜的玩意,关于并行计算的程序也早就出现,比如Oracle、IBM的DB2这类的数据库程序就是并发编译的程序。但 有一点要提醒的是,面向对象的语言我们从上个世纪60年代Simula就开始采用,但一直到了90年代面向对象语言才真正开始占主流地位。并行编程差不多 也有同样漫长的历史可以追朔,特别是进十年来,并发应用越来越多(有多线程的,也有多进程的),但发生整体转向性巨变,目前还不具备条件,需假以时日。 游戏并行开发的曙光-Ice Storm Fighter 在一些行业性的软件比如3DS MAX8、Sony Vegas7中就已经局部为多核心处理器进行了优化,但从整个软件行业的大环境上看:目前的绝大多数应用软件都是基于单线程,尤其是游戏业,并发编译要求 以人类不习惯的模式去思考问题,这对于习惯按逻辑思维去思考的游戏开发人员来说,并发编译难度远较其他行业来的更大。游戏开发在软件开发行业中被认为是最 艰苦的行业,因为游戏开发行业是唯一不会随着硬件平台性能增强而改善开发环境的行业,相反,很多时候还随着显示卡性能的增强使的游戏开发难度增大。现在这 个“最辛苦”的开发行业又要迎来新一轮的挑战——游戏的开发难度还需要在现有的基础上加入并发的概念,以适应未来多核处理器越来越强的计算环境。 与并行计算在行业软件开发的几十年基础相比,游戏开发领域之前并没有相关开发的案例,Autodesk虽然尽力在让旗下的3DS MAX、Maya软件能从多核处理器中获益,可以极大的提高游戏开发效率,但其开发出来的游戏却没能从多核处理器中获益。有时候反而会因为使用上多核处理 器而导致效能下降。 ![]() ![]() 我们测试了目前主流的两款3D游戏——《FarCry》、《Serious Sam2》,在同一套测试平台上分别使用双核心的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中的每一个导弹都有自己的重力、运动惯性等特性,其他的物件也都有单独的线程来控制,这样就能很好 的利用多核处理器强大的并绪执行能力,下面我们来具体体验一下这款Demo。 | |


