技术开发 频道

多核:新芯片设计带来新挑战

  【IT168 分析评论】多核处理器现在已经走到普通用户的身边,例如英特尔的酷睿2双核处理器已经在个人计算机中非常常见,这让软件开发者们面临着一个新的挑战:为了让自己开发的软件能够具有最大的性能,他们必须根据新处理器设计特点来修改自己的软件。但是,说起来容易做起来难,开发者必须解决并发性问题和潜在的性能问题。根据工具厂商Coverity赞助的一项IDC调查显示,目前已经有71%的企业正在为多核硬件开发多线程应用程序。

  IDC分析师Melinda Ballou建议,开发者需要获得组织范围内的支持,才能适应多核软件开发。只有通过致力于企业级别的更好的实践,以及从项目角度来进行质量管理和变更管理,才能真正适应多核软件开发。

  由于单核芯片在散热和性能扩展上已经无法再被改进,因此多核处理器将变得更加重要。另外,能耗问题也推动了多核芯片的发展。诸如英特尔之类的芯片制造商正在增加它们的CPU的核心。微软并行计算平台的总经理Lynne Hill表示,“在最近20年的计算机科学发展历史中,我们的确已经通过升级频率而大大提高了计算能力,”但是现在,能耗问题成为一个障碍,如果想提高计算机的处理能力,硬件必须做出修改。

  而实际上硬件也正在发生改变,这给开发人员带来了新的压力——必须调整自己的应用软件来更好的使用新硬件的能力。开发者们必须学习新的技术,并且使用新工具来编写具有最大性能的软件。

  因为多核处理器在工作原理上与单核处理器有很大的不同,它需要以并行方式来处理多重指令。这意味着,软件必须拆分它的指令,以使它们能够被并行处理。Coverity公司为多核开发提供工具,其首席技术官Ben Chelf表示,“当你使用多核设备时,你的程序必须充分利用所有这些核心,它必须能够在这些核心上同时运行指令。”另外一家多核开发工具提供商RapidMind的首席执行官Ray DePaul则表示,“软件一直是运行在单核设备上的,现在它将被设计为运行在多核的并行处理方式下,这是开发者所面临的挑战。”

  Azul Systems公司的著名工程师Cliff Click曾针对大型病房程序问题做过技术探讨,他强调了编写多线程程序的难度。“这的确非常难,但不至于难到无法实现的层次,”他如是说到。

  为了帮助开发者应对多核挑战,实现并行编程,诸如英特尔、微软和Sun等公司都纷纷提出了相应的协助方案。

  英特尔的多核软件开发支持

  英特尔开发者产品部门的营销主管James Reinders表示,“毫无疑问,多核软件开发是一个挑战,而且是一个相当大的挑战。”并发性是开发中遇到的一个主要问题,他强调说,“当你编写一个并行程序时,很容易让它陷入不确定性中,而这可能意味着会输出不同的结果,或者是逻辑路径。”多核应用程序开发要求对软件设计进行更复杂的考虑,这是多数软件开发者所做不到的,他表示。“多数情况下,大部分程序员没有多核开发的经验,需要相应的工具和培训,来帮助他们充分利用多核开发。”

  对于那些靠自身能力无法完成从单核编程到多核编程转变的程序员,英特尔提供了一些帮助方案。它推出了Threading Building Blocks模板库,来帮助C++程序员实现并行编程。英特尔的Thread Checker可以帮助程序员发现那些不确定编程错误,而英特尔Thread Profiler可以帮助开发者以可视化的方式检查每一个程序,确定每一个核心正在进行的工作。另外,英特尔还有一个叫做Ct的代码库项目,该项目可以为常见的数据并行程序提供创建模块。

  Reinders表示,同步对于并行编程来说是非常重要的,它可以避免竞太条件的发生。在竞太条件下,并发条件不能被合适的同步,因此它们完成的顺序会影响输出结果。程序死锁也可能发生:并行执行的每一个指令都等待其它指令完成后再执行,因此可能导致哪一个指令也无法完成。

0
相关文章