CNET科技资讯网9月2日国际报道 苹果8月28日正式推出新版操作系统Mac OS X Snow Leopard(雪豹),但这次更新真正的重要性将在日后逐渐浮现。
那是因为Mac OS X 10.6开启了苹果解决电脑业一个整体困境的长期工作:如何从现代处理器中挤出更多效用。苹果没有在Snow Leopard塞满立即可用的新功能,而是努力适应处理器能同步处理许多工作,而非快速处理单一工作的新现实。
Mac OS X营销经理Wiley Hodges说:“我们要替未来打好基础。”
苹果在今年6月的全球开发者大会(WWDC,Worldwide Developer Conference)上,透露该计划名为Grand Central Dispatch,但许多细节仅与签约保密的程序开发者分享。现在该公司开始公开更多内容,和其他利用绘图芯片与英特尔64位处理器的深度计划。
这些动作让苹果的脚步与运算界的主流变化更一致。多年来,如英特尔和AMD等芯片厂商,一直持续增加处理器的单位速率,程序设计师也习惯了每一代新产品都有性能提升。但几年前,阻碍单位速率无限上升的问题出现了。
首先,芯片真正发挥的性能非常少,因为速度较慢的内存无法提供更多资料供其处理。更糟的是,芯片需要更多电力,同时制造出大量又难以处理的热能。因此,主流多核心时代就此展开,处理器现在大都具备多个运算引擎,可同时运作。对某些可分割成独立片段的工作而言,这是绝对有利的发展。但程序设计师大都惯于线性思考,用一连串接续的步骤执行工作。
Grand Central Dispatch(简称GCD),这个纳入Snow Leopard的元件,是特别用来消除许多平行程序设计的困难。苹果表示,使用GCD可以轻松地变更现有软件,并且由操作系统代替程序设计师,处理复杂的例行管理工作。
平行程序设计的难题
整体而言,Illuminata分析师Gordon Haff认为,电脑运算业现在才准备好积极解决平行程序设计的难题。他说,如果构建成熟的平行程序设计工具是一本十个章节的书,业界目前只进展到第二章。但在没有替代方法的情况下,这本书还是得继续完成。Haff说:“它必须完成。信息科技的历史可证,需要实现的事情,必然会实现。”
程序设计师因应多核心处理器和多核心主机的方法之一,是通过所谓的线程概念。一般来说,一个线程就是一个独立的运算操作。程序设计师利用多核心处理器的方式,是每一个核心指派一个线程。问题解决了,是吗?
没那么容易。线程有包袱,每一个都需要内存空间和时间开启。程序必需根据处理器提供的核心数,分拆成不同数量的线程。程序设计师要担心所谓的"locking"(锁定)问题,提供一个机制,确保某个线程不会改变另一个线程已在使用的资料,和某个已排程的程序不会妨碍另一个同时在跑的程序。
某些既有工具可以减轻上述难题,如英特尔的Threading Building Blocks,但线程还是很复杂。Hodges说:“我们认为这部分需要从基础上重新思考,我们要让多核心应用软件的开发更容易。我们把管理程序代码的责任交给操作系统,应用程序开发者就不必同时负责编写和维护。”
GCD的核心机制是区块与伫列。程序设计师将程序代码分成不同区块,然后告诉应用软件如何制作管理那些区块实际执行的伫列。区块执行可与特定事件相连,如网络信息的抵达、文件变更,和鼠标点击。
苹果希望程序设计师会喜欢这种区块执行的好处:旧的程序代码可轻松地用区块翻新改进,不需大费周章地重写即可测试;不执行时,它们不会占据太多资源和空间,也有足够的弹性压缩进或大或小的程序代码。Hodges说:“线程制作有许多限制,让你必须把程序分割的数量尽可能降低。利用Grand Central Dispatch,你可以随意把程序分割成任何你想要的数量。”
GCD途径的另一个差异是中央化。操作系统负责管理所有应用软件的执行区域,而不是让个别应用软件自行监督。也就是由操作系统决定哪一项工作使用哪些资源,即使在忙碌中,系统整体的回应也会更好。
Snow Leopard还有另一项帮助程序设计师进一步利用硬件性能的机制,称为OpenCL或Open Computing Language(开放式运算语言)。它让电脑不仅能利用绘图芯片加速图像处理,还能用来处理一般运算工作。
要使用OpenCL,程序设计师先用C程序语言的变种OpenCL C编写程序模组。Snow Leopard再将程序代码翻译成绘图芯片能理解的指令,并转移必要的资料到绘图系统内存。许多工作无法受益于这项机制,但OpenCL对电玩实体模拟或人工智能演算规则、技术运算例行工作及多媒体操作都非常有用。
转换64位
三大绘图芯片商,英特尔、Nvidia和AMD的ATI,都为OpenCL背书。Khronos Group甚至将它列为标准。那代表程序设计师或可在Windows应用软件重复使用他们的OpenCL程序代码。绘图处理器利用平行引擎对许多资料要素执行同样的处理工作。针对没有绘图芯片的电脑,OpenCL也能利用一般多核心处理器的平行执行策略。
苹果早在多年前的PowerPC处理器时代,就开始其64位转换工作。在Snow Leopard,几乎整套Mac软件,包括Mail、Safari、Finder、iChat和iPhoto,都是64位程序。
现在的英特尔芯片也全是64位,但与32位芯片相比,64位究竟有什么好处?简单的说,它能让重量级的程序使用超过4GB的内存,提供更多内存插槽(暂存器),并加速某些数学运算。但转换到64位设计不一定保证有立即加速的效果。苹果在一份开发文件中表明:“迷思:我的应用软件若是原生的64位软件,执行速度将大幅加快。事实:有些64位软件在64位英特尔和PowerPC架构上的执行可能更慢。”
苹果鼓励程序设计师测试他们的软件,看64位版是否真的较快。改成64位的苹果应用软件全都比较快。不过,MacBook和iMac等消费者产品配搭的Mac OS X的核心元件(kernel),仍是32位软件。苹果这么做是让应用软件能处理4G以上的内存,核心也完全能应付。
苹果在其64位表现的开发者文件中表示:“迷思:核心必须是64位才能完全发挥64位处理器的最佳性能。事实:核心不一定需要一次直接处理超过4 GB的RAM。”但苹果的32位核心碰到非常大量的内存便无法应付。因此,苹果表示:“从Snow Leopard开始,对于支持如此大量内存组态的硬件,核心也改成64位软件。”这里指的是Xserve服务器产品线和Mac Pro工作站。
从32位核心改成64位核心的难处,在于驱动程序(让操作系统与硬表机、硬盘和声卡等周边设备沟通的软件)也必须是64位。如果是苹果自产的硬件,事情很好处理。问题是第三方设备自有的驱动程序也要转换。但苹果认为事情没那么难。苹果在参考文件中表示:“身为驱动程序开发者,你必须更新你的驱动程序到64位二进位码。所幸…许多驱动程序在编译程序设定变更后,还是有用。”
这一切听起来似乎非常低层次,但对程序设计师而言,苹果的层次已属最高了。那可以是一项有利的资产,因为许多有意采用平行程序设计的单位,其需求通常远超过多数程序设计师愿意或能够处理的层次。但吸引程序设计师才是关键。毕竟,GCD和OpenCL等苹果的深层技术计划,只有在其他开发者愿意使用的情况下,才有可能成功。
用户评论