多年来,软件和硬件的开发一直保持着有规律的“二步舞”,芯片制造商推出速度更快的***产品,软件商就设法将芯片强大的处理能力转变为更快的程序运行速度和各种更酷的新功能。不过,有多核之称的新一代芯片已经复杂到与之前产品有了本质区别,以至让软件开发者感到手足无措。“我们以前也经历过变革。”微软***研究与战略官克雷格·蒙迪(Craig Mundie)说。但这次在他眼里则是“现代电脑史上”***“概念性不同”的一次变革。多核芯片已经让所有的软件开发者感到了头疼,现在还没有人找到***的解决途径。
多核时代的挑战
近年来,处理器从来没有停止前进的脚步,但每一次性能的突破,换来的只是用户对更高性能的需求,特别是在油气勘探、气象预报、虚拟现实、人工智能等高度依赖于计算能力的领域,对处理器性能的渴求更是迫切。
以前计算能力的提升一直在摩尔定律的指引下,沿着提升CPU时钟频率这条道路前进,从初期的几十MHz到如今的几GHz。但是,进入2002年以来,CPU提升主频的困难越来越大,因为主频的提升带来了散热和功耗的大幅增加等问题。几年前,英特尔和AMD都调整了研究方向,开始研究在同一CPU中放置多个执行内核。
多核的好处非常明显。首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不大。其次,与多CPU相比,多核处理器采用与单CPU相同的硬件机构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。正是由于这些优点,多核很快被用户接受并得以普及。IDC的一份报告称,现在80%-90%的基于PC的CPU的出货量都是多核的。
随着多核芯片的普及,一个巨大的问题产生了:多核设计大大增加了软件开发者的难度。如果软件开发者想把多核芯片的能力完全发挥出来,就必须拆分应用程序,由每个核来各自运行,这个过程被叫做“平行运算”。但是,平行运算的编程对于只受过线性编程培训的普通程序员而言过于复杂。
毫无疑问,多核给人们提供了更经济的计算能力,但这种能力能否善加利用还要取决于软件。软硬件在这里的关系就如同路与车的关系:如果把多核平台看成是高速公路,软件就是高速公路上的汽车:高速公路只是提供了一个基础,而到底能发挥多大运输能力,还要看汽车能跑多快。
更重要的一点是,如果不针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,相反还有可能不如单核CPU好用。因为采用多核的CPU,其每个内核的主频比主流的单核CPU通常要低一些,如果程序只能发挥出一个内核的效用,自然不如单核CPU好用。
“从某种程度上说,对于软件开发者而言,CPU主频提升就像是免费的午餐,此前所有的程序很自然地会从主频的提升中受益,而如今多核出现了,这种免费的午餐没有了。我们必须针对多核重
斯坦福大学新设立的普适平行实验室(Pervasive Parallelism Lab)的计算机科学教授孔勒·欧鲁克顿(Kunle Olukotun)抨击多核带来的挑战时如此说。“这是一次危机,而且我们目前正在做的以及业内为应对变化所做的努力太少也太迟了。”
就连多核的创造者们也承认他们制造了麻烦。“我认同平行运算是个大问题。”英特尔负责销售和营销的执行副总裁肖恩·马隆尼(Sean Maloney)说。
“分水岭“式的意义
不过,多核对于不同应用领域的软件影响并不相同。在清华大学高性能计算机中心副主任陈文光看来,科学计算、互联网服务器和PC机及移动用户所使用的软件有很大的不同,因此,多核带来的挑战也不同。
***类是传统的科学计算机用户,他们的软件大部分是高性能计算专家写的,也多是并行的,他们对MPI、OpenMP等并行编程模型也已经掌握。对这类用户而言,多核提供的是更高性能的执行平台,他们下一步的工作就是对多核进行优化,但这不是当前最主要的问题。所以对这类用户来说,多核的应用基本不存在多大困难。
第二类是一般意义上提到的服务器,如银行以及搜狐、Google这样的互联网公司,它们主要的业务特征是并发的访问。这些应用具有天然的并行性,如多用户的访问本身就是并行的。对于这些一般意义上的服务器、数据库处理而言,多核同样也为他们提供了一个便宜而且高性能的计算平台,面临的挑战也不是很大。
第三类是移动用户和桌面用户,他们是面临挑战***的群体。这些用户的原有大部分程序都是串行的,如大部分串行程序是用Visual Basic语言编写的,怎样为这类用户提供很好的并发编程模型和开发环境,以帮助他们开发有效的并行程序,这是多核应用里最重大的挑战。
“尽管软件研究人员在编程模型、编译器、自动转换、调试工具等方面做了很多的工作,但把一个现有软件并行化,其代价还是很高的。因此,对第三类用户而言,多核对他们的挑战更大。”陈文光说。
面对多核的挑战,众多IT巨人已经开始使尽浑身解数应对。此前,Google已收购专门提供基于高性能、多核和并行处理器的软件编程工具专业厂商PeakStream,以便为开发多核系统所用的高性能应用软件做准备。Intel、AMD两大巨头也开始资助大学研究基于多核的软件开发,Microsoft、Oracle以及Linux的软件供应商都在积极着手准备向多核过渡。此前中国软件企业也发表了对多核开发的看法,用友软件公司U8研发本部总经理邓适宜说:“目前,用友基于四核调优的产品正在研发。”
然而,应对挑战不可能一帆风顺。采纳这类新技术造成灾难,已经不是***次了。从 2000年起,视频游戏业就面临一场类似的挑战,当时索尼的PlayStation在市场居于统治地位,接下来的PS二代的芯片转而采用多核处理器技术。结果,用AMD公司软件零售商关系总监尼尔·罗宾逊(Neal Robinson)的话来说,“到处都是鲜血和尸体。”视频游戏公司拼命去适应新系统,而它们的产品开发周期却没有及时跟上,导致销售一败涂地。
未来的多核芯片将无处不在,多核的软件开发已是摆在软件产业界一个很大的挑战。有专家甚至预言,针对多核和多线程的软件开发将是未来十年软件开发的主要挑战。
不过针对此问题,业界也有乐观的看法。Intel的技术专家马隆尼断言,因为受到“巨大经济利益的驱动”,这个问题终将得到解决。不过,他也指出,“***想出办法来利用多核优势的人不管是谁,一定都会给他们的竞争对手造成巨大的经济损失。”
微软的蒙迪则认为,解决方案的出现将具有分水岭式的意义:新一代杀手级的应用程序将会出现,而业界也将有一次大的飞跃,业绩会大幅提升。那样的话,业务又会重回可持续稳定发展的正轨。只是还有很长的路要走。“我们现在处在一个过渡停顿点上。”他说。
【编辑推荐】