20世纪80年代晚期,RISC思潮在业界成为主流,以MIPS和Sun为代表的公司都靠它获得了可观的利润。IBM在考虑为他们的工作站和伺服器采用类似的架构,于是便有了POWER架构(POWER指Performance Optimization With Enhanced RISC)。90年代初,由于POWER架构很好很强大,所以IBM依据IBM POWER架构开发了PowerPC架构,并准备把它量产。PowerPC一发布就引起了许多厂商的兴趣。在跑分测试中,PowerPC架构的处理器都与同时代高档的Intel处理器相当甚至更快,所以很多公司都来凑热闹。例如Microsoft为之发布了Windows NT 3.51,Sun编译出一套Solaris,IBM也把AIX发布到PowerPC架构上。但刚才讲的问题没变,平台上有丰富健壮的生态系统才是王道,即使有了适合的操作系统,用户的程序都不能用还是白搭,所以这些厂商很快哪儿凉快待哪儿去了。
苹果吸取了教训,采取了一个折中的方式,把内核紧要的代码移植到PowerPC架构上,上层空间中新写了一个模拟器来运行原先的摩托罗拉68k老架构的程序。这就是Mac OS System 7.1.2。所以在Mac OS X之前,Mac OS的用户空间一直保留着大量的68k代码,哪怕很多系统自带的程序都不是原生执行的。苹果一直试图把更多的老代码逐渐重写,重写的过程中引入的问题加重 了Mac OS操作系统的不稳定性,因为PowerPC完全使用了和68k不同的异常机制,使得Mac OS漏洞百出。一直到OS 8.5左右,大部分68k代码被替换为PowerPC代码,才使得稳定性有一定的提高。
但在商业上苹果自然会采取“老王卖瓜自卖自夸”的策略,发布了一系列的广告吹捧自己的计算机有多强大。这些广告自然不会提及Mac OS的稳定性,能拿得出手的只有PowerPC这套架构的先进性。20世纪90年代的苹果广告大多充满着对Intel架构的尖酸味,例如反映自己比 Intel核心的电脑快上许多,甚至夸张地把Intel的奔腾二说成慢如蜗牛。当然了,广告夸得再好,谁用谁知道,客户又不是傻子,真正的铁杆果粉又有几个。所以苹果在Mac OS一系列重写和修正失败后决定收购NeXT,把NeXTSTEP当作构建Mac OS X的基石(见《Mac OS X 背后的故事一》)。
NeXTSTEP另一个有趣的内核功能是支持称为胖二进制文件的技术。NeXT公司自己定制的GCC编译器可以 通过交叉编译,产生一个包含所有架构可执行码的二进制文件。这个文件可以在一个特定硬件平台上解出该平台原生版本的机器码执行。这个技术在Mac OS到Mac OS X的迁移中并没有被公布,却成为2005年往英特尔迁移时的核心技术之一。
NeXTSTEP有了这两个很好的条件后, 往PowerPC的移植并没经历太多的挫折,并且在前期一度准备x86平台和PowerPC平台“两手抓,两手都要硬。”1998年的MacWorld 上,乔布斯声称Rhapsody最后将成为Mac OS X Server 1.0版。而完整的Unix层代码后被释出,成为以Darwin为名的开放源代码软件。读者如果移步 http://opensource.apple.com/,会发现即使是在早期的Mac OS X 10.0代码中也是包含x86支持的。
Intel的捷径
显然,Mac OS X支持PowerPC是为了对老苹果用户负责,但对于x86平台的支持,不能不说Jobs早早地为后来的迁移做好了两手准备。的确,在早期,PowerPC这套RISC的架构确实比Intel好,无论在速度还是准确性上。跑分测试中PowrePC遥遥领先,而且,由于Intel芯片中的数表错误,造成其芯片计算浮点数运算时在某些场合会算错。Intel在20世纪90年代中后期一直力推奔腾4,但由于流水设计问题,其性能甚至不如奔腾3。 但Jobs在这时,目光却看得更实际、更远。
这引发了Jobs和摩托罗拉的CEO Chris Galvin的争吵(《Jobs传》)。1997年,Jobs回到苹果后,曾立即决定停止授权同类电脑制造商使用麦金塔操作系统。他打电话向Galvin提议, 如果摩托罗拉加速研发可用于笔记本电脑的芯片,那么苹果公司可能会考虑为摩托罗拉破例,授权其StarMax Mac兼容机使用麦金塔操作系统。两人的对话越来越激烈,Jobs对高尔文说,摩托罗拉的芯片烂透了。高尔文也是个有脾气的人,立即反驳,Jobs挂了他的电话,摩托罗拉从此停止生产StarMax电脑,而Jobs则开始暗中计划抛弃PowerPC芯片,转而投向Intel的怀抱。
文/王越
苹果暗中计划放弃PowerPC芯片后,组成了秘密团队希望使每个版本的Mac OS X都能在Intel的x86平台上无缝运行,与此同时,在HP的说服下,Intel在1999年开发出了Itanium处理器,但这款处理器却存在着两个致命的缺陷,这给竞争对手AMD留下了可乘之机。
暗度陈仓,苹果系统向Intel迁移
在Steve Jobs暗中决定抛弃PowerPC芯片转投Intel时,PowerPC在技术上并非没有优势,如果Mac OS X还没成型就对底层架构作如此大的变动,会得罪所有仅存的苹果用户,让苹果面临崩溃。当时的苹果己经弱得经不起什么折腾了,同时也需要IBM和 Motorola的支持去跟Microsoft竞争。
在产品介绍上,甚至很多PowerPC的缺陷都被包装成亮点,例如Power Mac G5的介绍短片,金牌设计师Jonathan Ive还专门出镜,说PowerPC太强大了发热量好高,所以我们得给它设计了一个很拉风的风扇云云……
但这只是外在的表现。这段时期,Steve Jobs在严格规划每个版本的Mac OS X时,专门秘密组织了一小班人马,这组人有个秘密代号——Marklar,最早于2002年被媒体披露,并在2005年被更多的媒体报道。这组人做的事, 就是——只要Steve Jobs一声令下,x86版的Mac OS X光盘就能送到开发者或用户手上。
先前讲到,NeXTSTEP具有 良好的移植性。但Mac OS X中,有大量源于Mac OS的代码,如Carbon等,都是存在一定的PowerPC架构依赖的(如Quick-Time、iTunes、Quartz等)。使用了大量 PowerPC特有的AltiVec功能来实现数据并行。因此移植仍具难度,需要改写至Intel的SSE指令。
2000 年她丈夫John为了和亲人团圆主动请缨要做Intel版本的Mac OS X。十八个月后,他回到组里报告成果,老板Joe看后大为满意,立刻拉来了分管技术的高级副总裁Bertrand Serlet。Bertrand问“如果我买个索尼的Vaio,你多长时间能把Mac OS X移植上去?”John回答“不用很长时间。” “两周还是三周?”“两三小时吧”。Bertrand Serlet遂让人买了台索尼机器,果然数小时后Mac OS X就在机器上跑起来了。于是,John的工作成为Marklar团队的起始点。