那是因为Mac OS X10.6开启了苹果解决电脑业一个整体困境的长期工作:如何从现代处理器中挤出更多效用。苹果没有在SnowLeopard塞满立即可用的新功能,而是努力适应处理器能同步处理许多工作,而非快速处理单一工作的新现实。
Mac OS X营销经理Wiley Hodges说:“我们要替未来打好基础。”
苹果在今年6月的全球开发者大会(WWDC,Worldwide DeveloperConference)上,透露该计划名为GrandCentralDispatch,但许多细节仅与签约保密的程序开发者分享。现在该公司开始公开更多内容,和其他利用绘图芯片与英特尔64位处理器的深度计划。
这些动作让苹果的脚步与运算界的主流变化更一致。多年来,如英特尔和AMD等芯片厂商,一直持续增加处理器的单位速率,程序设计师也习惯了每一代新产品都有性能提升。但几年前,阻碍单位速率无限上升的问题出现了。
首先,芯片真正发挥的性能非常少,因为速度较慢的内存无法提供更多资料供其处理。更糟的是,芯片需要更多电力,同时制造出大量又难以处理的热能。因此,主流多核心时代就此展开,处理器现在大都具备多个运算引擎,可同时运作。对某些可分割成独立片段的工作而言,这是绝对有利的发展。但程序设计师大都惯于线性思考,用一连串接续的步骤执行工作。
Grand CentralDispatch(简称GCD),这个纳入SnowLeopard的元件,是特别用来消除许多平行程序设计的困难。苹果表示,使用GCD可以轻松地变更现有软件,并且由操作系统代替程序设计师,处理复杂的例行管理工作。
平行程序设计的难题
整体而言,Illuminata分析师GordonHaff认为,电脑运算业现在才准备好积极解决平行程序设计的难题。他说,如果构建成熟的平行程序设计工具是一本十个章节的书,业界目前只进展到第二章。但在没有替代方法的情况下,这本书还是得继续完成。Haff说:“它必须完成。信息科技的历史可证,需要实现的事情,必然会实现。”
程序设计师因应多核心处理器和多核心主机的方法之一,是通过所谓的线程概念。一般来说,一个线程就是一个独立的运算操作。程序设计师利用多核心处理器的方式,是每一个核心指派一个线程。问题解决了,是吗?
没那么容易。线程有包袱,每一个都需要内存空间和时间开启。程序必需根据处理器提供的核心数,分拆成不同数量的线程。程序设计师要担心所谓的“locking”(锁定)问题,提供一个机制,确保某个线程不会改变另一个线程已在使用的资料,和某个已排程的程序不会妨碍另一个同时在跑的程序。
某些既有工具可以减轻上述难题,如英特尔的ThreadingBuildingBlocks,但线程还是很复杂。Hodges说:“我们认为这部分需要从基础上重新思考,我们要让多核心应用软件的开发更容易。我们把管理程序代码的责任交给操作系统,应用程序开发者就不必同时负责编写和维护。”
GCD的核心机制是区块与伫列。程序设计师将程序代码分成不同区块,然后告诉应用软件如何制作管理那些区块实际执行的伫列。区块执行可与特定事件相连,如网络信息的抵达、文件变更,和鼠标点击。
苹果希望程序设计师会喜欢这种区块执行的好处:旧的程序代码可轻松地用区块翻新改进,不需大费周章地重写即可测试;不执行时,它们不会占据太多资源和空间,也有足够的弹性压缩进或大或小的程序代码。Hodges说:“线程制作有许多限制,让你必须把程序分割的数量尽可能降低。利用GrandCentralDispatch,你可以随意把程序分割成任何你想要的数量。”
GCD途径的另一个差异是中央化。操作系统负责管理所有应用软9
7
3
1
2
4
8
:
本文来源:中关村在线 作者:佚名