多核芯片未充分利用 并行编程无进展
扫描二维码
随时随地手机看文章
北京时间8月31日《福布斯》文章指出,为什么应用软件总是无法充分利用芯片的强大功能呢?
如何充分有效地利用处理器中的那些核心是处理器行业在过去的几年里一直面临着的一个最大的问题。
这并不是一个没什么人关注的问题。这个问题还牵涉到许多其他的小问题,因为如果没有充足的理由,企业首席信息官们是绝对不会花大价钱去购买那些配备了多核心芯片的新服务器硬件的。
最根本的问题在于,芯片厂商们不能像以前那样去开发处理器了。如果它们继续提高单核心芯片的时钟速度,它们肯定会将芯片熔化掉。因此它们将许多运行速度或许并不快的核心安装在一个芯片上,让多核心芯片的总体性能实现增长。然而不幸的是,大部分软件都不支持多核心处理器,因此很大一部分增长的性能都无法得到充分的利用。如果应用软件的某些部分可以被分到不同的线程上,它最多也只能利用芯片中的两个核心。
硬件开发商和英特尔、AMD和IBM等芯片厂商的高管们认为,这是软件方面的问题,如果有合适的编程工具,应用软件是可以充分利用多核心的性能优势的。而软件开发商们则坚称,目前世界上还没有能够一心二用的开发员,而且某些应用软件是绝对不能在多核心芯片上运行的。它们曾经试着用并行处理技术来解决这个问题,但是经过几十年的研究,业内人士普遍认为之前的努力已经失败了。
在过去的几年里,并行编程也没有取得任何显著进展。为了实现并行编程,英特尔甚至开发出自己的编程语言;IBM也从多个层面对这个问题进行了深入的研究。微软在这方面投入了无数的资源,AMD也从多核芯片的各个方面进行了深入研究。
最终,它们意识到目前还无法解决那个问题,也无法打破摩尔定律的平衡。这是一个默认的方向,而不是一种实际的状况,因为你不会在任何营销文件或公司网站上看到它。但是,当你向软件厂商、硬件厂商以至于象IBM那样的系统厂商提出相同的问题时,所有厂商的软件和硬件工程师们将不约而同地给出一个相同的答案。
实际上,即使可以让软件在多个处理器上运行,也没人能够想到应该如何去实现它。但是,通过将内存或外围通信等芯片之外的任务转移到芯片内部去完成,以及在芯片内部增加更大的管道,那么虽然软件还是只能利用单个核心的性能,但是却可以获得足够的性能来满足企业客户的需求。
在提高性能方面还有其他一些变化。英特尔正在研究通过调整多个核心的功率的方式来提高应用性能。其他厂商也在研究专门为具体应用如安全加密或WiFi增加芯片核心数量,或者用两个芯片来实现某个应用软件的特殊功能。所有厂商都在研究增加单个芯片的信息通过量的方法,因为多个核心也意味着所有应用软件必须共享芯片中的至少一部分的相同资源。
所有的这些都是必要的,因为它们促进了虚拟化技术的发展。虚拟化技术已经成为所有硬件厂商共同关注的一颗耀眼的新星。单核心服务器一般只能运行一个应用软件和一个操作系统,因此它们总是处于利用率较低的状态中。随着企业规模的增长,这种组织被看作是授权某业务部或部门的方法。但是企业通常会有成千上万台这样的服务器,即使那些服务器处于空闲状态,它们也在消耗电能,而且企业还要为那些服务器支付必要的维护费用、软件许可证费用,此外还要将它们与企业的其他部分整合在一起,但企业们意识到上述问题时,它们同时也会意识到它们必须将应用软件也整合起来,因为服务器数量过多的话,相关的成本实在是太高了。
但是在技术领域,一个问题通常会引发另一个问题。将所有的应用都集中到一台服务器上并不是一件容易的事。这就是为什么最近的技术研究工作主要集中在开放处理器内部的通道以提高芯片内外的信息通过量、规划以及给运行在不同核心上的应用软件划分优先等级从而保证它们可以在不降低性能的前提下共享处理器的内存和逻辑的原因所在。
当然,这些都不会排除在并行编程上取得突破性进展的可能性,不管怎样,芯片开发商和软件厂商都不会感到高兴,因为总是会有一些问题还有待解决。虽然目前的硬件还不能支持应用软件的并行运行,但是至少现在还有许多理由去支持用户购买新硬件。