如何充分有效地利用多核处理器中的那些核心是多核计算在过去的几年里一直面临着的一个最大的问题。
这并不是一个没什么人关注的问题。 这个问题还牵涉到许多其他的小问题,因为如果没有充足的理由,企业首席信息官们是绝对不会花大价钱去购买那些配备了多核心芯片的新服务器硬件进行多核计算的。
最根本的问题在于,芯片厂商们不能像以前那样去开发处理器了。如果它们继续提高单核心芯片的时钟速度,它们肯定会将芯片熔化掉。 因此它们将许多运行速度或许并不快的核心安装在一个芯片上,让多核心芯片的总体性能实现增长。然而不幸的是,大部分软件都不支持多核心处理器,因此很大一部分增长的性能都无法得到充分的利用。如果应用软件的某些部分可以被分到不同的线程上,它最多也只能利用芯片中的两个核心。
硬件开发商和英特尔、AMD和IBM等芯片厂商的高管们认为,这是软件方面的问题,如果有合适的编程工具,应用软件是可以充分利用多核心的性能优势的。而软件开发商们则坚称,目前世界上还没有能够一心二用的开发员,而且某些应用软件是绝对不能在多核心芯片上运行的。 它们曾经试着用并行处理技术来解决这个问题,但是经过几十年的研究,业内人士普遍认为之前的努力已经失败了。
在过去的几年里,并行编程也没有取得任何显著进展。为了实现并行编程,英特尔甚至开发出自己的编程语言;IBM也从多个层面对这个问题进行了深入的研究。 微软在这方面投入了无数的资源,AMD也从多核芯片的各个方面进行了深入研究。
最终,它们意识到目前还无法解决那个问题,也无法打破摩尔定律的平衡。这是一个默认的方向,而不是一种实际的状况,因为你不会在任何营销文件或公司网站上看到它。 但是,当你向软件厂商、硬件厂商以至于象IBM那样的系统厂商提出相同的问题时,所有厂商的软件和硬件工程师们将不约而同地给出一个相同的答案。
实际上,即使可以让软件在多个处理器上运行,也没人能够想到应该如何去实现它。但是,通过将内存或外围通信等芯片之外的任务转移到芯片内部去完成,以及在芯片内部增加更大的管道,那么虽然软件还是只能利用单个核心的性能,但是却可以获得足够的性能来满足企业客户的需求。
在提高性能方面还有其他一些变化。英特尔正在研究通过调整多个核心的功率的方式来提高应用性能。其他厂商也在研究专门为具体应用如安全加密或WiFi增加芯片核心数量,或者用两个芯片来实现某个应用软件的特殊功能。所有厂商都在研究增加单个芯片的信息通过量的方法,因为多个核心也意味着所有应用软件必须共享芯片中的至少一部分的相同资源。