如何在多核系统上顺利编程?


  数十年来,改善处理器性能就意味着提升芯片时钟速度。这样做的收效对于用户来说立竿见影:应用程序跑得更快了。但是,更快的芯片消耗更多的电能,耗光移动设备的电池。因此,芯片制造商转向节能多核设计,在一块芯片上集成多个低功耗处理器以达到与单一快速芯片相当的性能。

  不幸的是,多核系统上的应用程序不会随着内核数的增加而自动变快。必须在编写的软件中进行优化才能利用并行处理能力的优势。而编写能高效稳定运行在多核芯片上的程序十分困难。惠普研发高级副总裁普利斯•巴纳杰(Prith Banerjee)表示,除非我们能解决这个编程问题,否则用户将不会在新的微处理器上体会到任何速度优势。巴纳杰补充说:“这是个根本问题。”

  一种可能的解决方法是尽量将程序员从这个怪圈中拽出来:与其让每个程序员绞尽脑汁使他们的程序运行在双核、4核,甚至更多的内核上,不如将混乱的细节交给编译器去完成,这种软件用来把高级编程语言转换成计算机可以理解的机器代码。所有主要的软件与芯片公司,以及许多学术研究者们都在开发能处理这项任务的编译器。最大的阻碍在于识别程序的哪个部分不依赖于其它部分,以免某个内核为了等待其它内核的数据而闲置。伊利诺伊大学电子与计算机工程教授胡文美(Wen-mei Hwu)表示,只要说服开发者们书写更加整洁的程序,在代码块之间建立完善的接口,就会使这项工作变得容易许多。不过他估计,要让多核优化编译器和与之对应的编程习惯在计算机行业内流行起来还需要五年时间。