【IT168 特稿】上篇介绍了四核的价值、定位与应用领域,下篇将阐述多核软件方面的问题,并对2007年四核推广做出展望和估计。
软件扯了四核的后腿?
随着双核、四核的出现,针对多核的并行化软件也受到了越来越多的重视。因为只有在软件能够充分利用多核处理器的特性时,多核CPU优势才能发挥出来。当前,多核处理软件总体滞后于硬件,软件开发商面临技术和商业问题,软件界缺少为多核处理器进行高效编程的标准工具,缺少开发并行应用所需的技巧。
1)多核软件的产业环境
对此,英特尔顾凡认为,服务器与台式机、笔记本电脑所面临的软件环境截然不同。从早期的SMP时代,到“SMP+多线程”时代,服务器商业应用软件早已为并行化计算做好了准备,可以发挥四核硬件平台的优势。诸如Microsoft Windows XP、Windows Server、Microsoft Vista、Microsoft Office 2007及多种Linux软件产品都已经实现了线程化,以便通过利用最新的四核处理器来提高性能。另外,针对大量存在的行业ISV,为了帮助其尽快的实现从单线程应用向多线程应用的转变,英特尔也投入了大量资源,向业界提供编译器、应用程序分析和调试、数学函数库等软件工具。
然而,问题似乎远没有这么简单。
国家863计划高性能计算机评测中心副主任、清华大学计算机系副教授陈文光认为,多核处理器延续并加重了以往并行计算给软件编程带来的挑战,同时也带来新的机遇。多内核处理器对软件提出的最大挑战在于并行应用的开发,包括需要开发新的编程模型如X10、Transactional Memory,优化现有的编程模型如MPI和OpenMP,以及解决并行程序调试中的开销问题。
陈文光进一步介绍说,线程级并行、共享缓存、非一致的内存访问开销等特性在以往的SMP、NUMA等体系中已经出现,并不是多核带来的新东西。但在SMP系统中,两个芯片之间的通信会受到系统总线带宽的限制,而多核处理器的内核间的带宽已经大大增加,通信延迟大大减少。为了有效地利用这种优势,就需要开发新的编程模型或对现有的MPI、OpenMP等进行优化。另外,从市场的角度来看,多核的普及使得并行系统的价格门槛大大降低,拥有多处理器(核)系统的用户范围大大扩展,所以需要业界开发更多并行的应用软件。但对于不同层次的软件,从底层的OS和Hypervisors、系统库、中间件一直到最上层的应用软件和框架,多核带来的挑战和问题是不一样的,因此需要区别对待。
2)现有部分软件对多核有限定
宝德科技程佶也认为,虽然服务器、HPC领域的多数软件系统已经能够很好地发挥四核硬件平台的优势,但有部分软件还是对多核有所限定,甚至在HPC领域,有些软件的代码也没有对四核系统进行优化和编译,从而使得同档次双核系统与四核系统的性能表现相差无几。因此,他建议用户在选购多核硬件系统时,还是需要对相关操作系统和应用软件进行考察,比如有些国外的HPC软件在国内采用总代方式销售,没有原代码,只是应用程序,因此用户无法对多核系统做出优化。
3)多核软件计价问题
另外,我们也注意到,虽然英特尔和AMD也在大力呼吁软件厂商以实际CPU SOCKET数来收费,并得到了微软、Novell SuSE Linux、Sun等厂商的支持,但针对多核CPU的软件许可收费方式也远未统一。IBM将根据不同情况做出许可决定; BEA的做法则是先将两个核心视为单颗处理器,之上每增加两个核心视为0.5个处理器(如四核处理器将被看作1.5颗处理器);Oracle的计价方式则更为复杂,共有三级系数值模式新版授权方式:针对英特尔和AMD的多核处理器,每个核心视作0.5个处理器;针对Sun的UltaSPARC T1,则看作0.25;其他多核处理器则是0.75。
可见,增加的软件费用有可能会抵消潜在的性能提升价值。由于多核CPU不是线性可扩展,即每增加一个核,并不会获得100%的性能提升,如此一来,翻倍的软件成本将导致较低的总性价比。同样,如果将多核系统用于虚拟化环境,那么软件厂商针对多个虚拟化实例的软件许可政策也值得用户留心。
4)情况多样的实际应用
而用户的实际情况可能更加复杂。比如,有很多用户还在使用老版本的Linux操作系统,如Redhat 9、FreeBSD 5.1等,这些老OS在软件驱动等组件方面不能支持多核;用户的使用习惯也是一个问题,在从单核平台切换到多核平台时,原有的应用软件测试、代码优化都需要一个过程。为此,程佶表示,宝德已经尽可能向多核平台切换,但还是保留了一定比例的单核产品,以满足不同用户的现实需要。