多核给软件开发带来挑战
时间:02-23
来源:51CTO
点击:
为了提升服务器和PC芯片|0">芯片的性能,为处理器增加更多的核心已成为芯片供应商们的最主要手段。但是,如果无法应对来自硬件和编程方面的新挑战,多核的优势不仅会大大降低,而且及有可能成为芯片性能的阻碍。在刚刚举行的多核芯片博览会(Multicore Expo)上,与会者纷纷对此表示了担心。
目前大多数为单核芯片编写的软件将需要重新编写或者更新,以适合Intel、Sun以及其它芯片供应商们提供的新产品,行业技术分析公司Linley Group总裁兼首席分析师Linley Gwennap这样说。现在的应用程序在多至4个处理器核心时通常会运行得更快,但处理核心数量一旦超过这个数字,应用程序的效果就会降低甚至恶化。
最近来自Gartner的一份报告同样显示了这个问题。为此,芯片和系统制造商们已开始着力培训软件开发者,并为他们提供更好的用于多核编程的工具。一年前,Intel和微软表示,他们将在美国投资2000万美元开设两个研究中心专门解决这一问题。目前,缺乏多核编程工具也许是今天的编程行业所面临的最大挑战,Gwennap说。
把应用程序中不同的计算任务,比如数学运算和渲染图片加以区分对待,让它们分别在多个内核中同时执行的编写方式早已被人们提出。但是,这一通常被称为并行计算的模式一直受到专业化与高性能计算环境的限制。
近年来,Intel和AMD已经改变了提高时钟频率的传统做法,将加入核心数量作为更直接有效的方式来提高芯片的性能。Intel即将为我们带来多达8个处理内核的Nehalem-EX芯片(51CTO.com注,Nehalem是英特尔的新芯片架构。代号为Nehalem的处理器包括专为高性能服务器市场设计的、研发代号为"Nehalem-EP" 的处理器,面向可扩展服务器市场的代号为"Nehalem-EX"。英特尔不久前称,高端的Nehalem EX处理器可能在今年年底供货)。而51CTO.com的资料也显示,AMD代号为"伊斯坦布尔"(Istanbul)的六核45纳米皓龙处理器已公开演示,预计将于今年下半年正式推出;此外AMD也正在设计12内核的服务器芯片。所有这些新技术都提高了多线程能力,使每个内核都可以在同一时间执行多行代码。
这意味着主流的应用程序必须以不同的方式来编写,以利用更多的内核资源。这做起来不仅很难,而且很有可能带来的新类型的软件bug。最常见之一就是"竞争条件(Race Conditions)"--计算的结果输出要求各种任务按照一定的顺序完成,如果不是这样,那么可能就会导致错误的发生。
目前已经有些厂商提供了并行编程工具,如Intel的Parallel Studio for C and C++,还有这一领域里的其他厂商如Codeplay、Polycore Software和Clik Arts的相关工具。此外基于C语言的新的并行编程模型标准OpenCL,已由Khronos Group发布,并迅速得到了Intel、AMD、Nvidia和其他各厂商的共同支持。
Santa Clara举行的多核芯片博览会展示了更多的工具正在开发中。嵌入微处理基准联盟(51CTO.com注,即EEMBC,为嵌入式芯片制订基准的非盈利性组织)的软件工程总监Shay Gal-on说,软件编译器必须能够识别并行的代码,然后在没有人工干预下完成并行工作。
尽管缺少相关的工具,一些软件供应商已经找到了相对容易的建立并行代码的方法,用来处理简单的计算工作比如图像和视频处理,Gwennapp表示,比如Adobe已经通过重写Photoshop,在某些特定的x86内核上运行放大和图像滤镜等任务时,性能可以提高到3到4倍。
"在处理视频或图片时,你可以将不同的像素系统分配给不同的CPU。这样你就可以得到并行处理方式,"Gwennapp说。但是,对于更复杂的任务,则很难找到一个单一的方法来确定并行计算的顺序,然后将它们分配给不同的CPU。
编程方面可能面临着多核带来的最大挑战,而在硬件方面也需要作出变化,来克服如内存延迟和总线速度缓慢等问题。"由于你的芯片上添加了越来越多的内核,你就需要更多的内存带宽来适应它们,"Gwennapp说。
共享一个内存高速缓存或数据总线的多个内核会造成瓶颈效应,这意味着额外的内核将在很大程度上遭到浪费。"这种情况下假设你有6或8个CPU,那么它们所有的时间将花费在互相交谈上,既不向前走,也不做任何工作,"他说。
责任最终还是要背负在开发者的肩上。他们需要编写更好的并行程序来搭建硬件和软件之间的桥梁。很多软件开发者并没有跟上硬件设计的最新进展,EEMBC的Gal-on这样说,他们应该打开数据表来研究最新的芯片架构,考虑一下怎样能让他们的代码表现得更好。
目前大多数为单核芯片编写的软件将需要重新编写或者更新,以适合Intel、Sun以及其它芯片供应商们提供的新产品,行业技术分析公司Linley Group总裁兼首席分析师Linley Gwennap这样说。现在的应用程序在多至4个处理器核心时通常会运行得更快,但处理核心数量一旦超过这个数字,应用程序的效果就会降低甚至恶化。
最近来自Gartner的一份报告同样显示了这个问题。为此,芯片和系统制造商们已开始着力培训软件开发者,并为他们提供更好的用于多核编程的工具。一年前,Intel和微软表示,他们将在美国投资2000万美元开设两个研究中心专门解决这一问题。目前,缺乏多核编程工具也许是今天的编程行业所面临的最大挑战,Gwennap说。
把应用程序中不同的计算任务,比如数学运算和渲染图片加以区分对待,让它们分别在多个内核中同时执行的编写方式早已被人们提出。但是,这一通常被称为并行计算的模式一直受到专业化与高性能计算环境的限制。
近年来,Intel和AMD已经改变了提高时钟频率的传统做法,将加入核心数量作为更直接有效的方式来提高芯片的性能。Intel即将为我们带来多达8个处理内核的Nehalem-EX芯片(51CTO.com注,Nehalem是英特尔的新芯片架构。代号为Nehalem的处理器包括专为高性能服务器市场设计的、研发代号为"Nehalem-EP" 的处理器,面向可扩展服务器市场的代号为"Nehalem-EX"。英特尔不久前称,高端的Nehalem EX处理器可能在今年年底供货)。而51CTO.com的资料也显示,AMD代号为"伊斯坦布尔"(Istanbul)的六核45纳米皓龙处理器已公开演示,预计将于今年下半年正式推出;此外AMD也正在设计12内核的服务器芯片。所有这些新技术都提高了多线程能力,使每个内核都可以在同一时间执行多行代码。
这意味着主流的应用程序必须以不同的方式来编写,以利用更多的内核资源。这做起来不仅很难,而且很有可能带来的新类型的软件bug。最常见之一就是"竞争条件(Race Conditions)"--计算的结果输出要求各种任务按照一定的顺序完成,如果不是这样,那么可能就会导致错误的发生。
目前已经有些厂商提供了并行编程工具,如Intel的Parallel Studio for C and C++,还有这一领域里的其他厂商如Codeplay、Polycore Software和Clik Arts的相关工具。此外基于C语言的新的并行编程模型标准OpenCL,已由Khronos Group发布,并迅速得到了Intel、AMD、Nvidia和其他各厂商的共同支持。
Santa Clara举行的多核芯片博览会展示了更多的工具正在开发中。嵌入微处理基准联盟(51CTO.com注,即EEMBC,为嵌入式芯片制订基准的非盈利性组织)的软件工程总监Shay Gal-on说,软件编译器必须能够识别并行的代码,然后在没有人工干预下完成并行工作。
尽管缺少相关的工具,一些软件供应商已经找到了相对容易的建立并行代码的方法,用来处理简单的计算工作比如图像和视频处理,Gwennapp表示,比如Adobe已经通过重写Photoshop,在某些特定的x86内核上运行放大和图像滤镜等任务时,性能可以提高到3到4倍。
"在处理视频或图片时,你可以将不同的像素系统分配给不同的CPU。这样你就可以得到并行处理方式,"Gwennapp说。但是,对于更复杂的任务,则很难找到一个单一的方法来确定并行计算的顺序,然后将它们分配给不同的CPU。
编程方面可能面临着多核带来的最大挑战,而在硬件方面也需要作出变化,来克服如内存延迟和总线速度缓慢等问题。"由于你的芯片上添加了越来越多的内核,你就需要更多的内存带宽来适应它们,"Gwennapp说。
共享一个内存高速缓存或数据总线的多个内核会造成瓶颈效应,这意味着额外的内核将在很大程度上遭到浪费。"这种情况下假设你有6或8个CPU,那么它们所有的时间将花费在互相交谈上,既不向前走,也不做任何工作,"他说。
责任最终还是要背负在开发者的肩上。他们需要编写更好的并行程序来搭建硬件和软件之间的桥梁。很多软件开发者并没有跟上硬件设计的最新进展,EEMBC的Gal-on这样说,他们应该打开数据表来研究最新的芯片架构,考虑一下怎样能让他们的代码表现得更好。
- 博通公司推出世界首个28nm多核通信处理器系列(09-17)
- 携手多核时代共赢应用未来 英特尔发布《多核应用白皮书》(02-27)
- 伯克利大学专家阐述多核计算的十大前景(01-22)
- 英特尔公布新型多核处理器开发计划(02-19)
- 帕特·基辛格先生首度透露英特尔多核架构信息(02-21)
- LSI 制定TARARI内容处理器与多核处理器相结合的蓝图(03-09)