Blackrose's Blog Blackrose's Blog

Mac OS X的内核——从PowerPC到Intel

in growth-logread (393) 文章转载请注明来源!

本文转载自Weiphone论坛,作者fantacyleo(weiphone's id)。遵循CC版权协议。原文链接

苹果和摩托罗拉的渊源极深。1984年的Macintosh电脑就装配了Motorola 68000,尽管这款CPU实际的主频只有可怜的6MHz(Macintosh 128K)2011年iMac最低配使用的CPU主频为2.5GHz,是Motorola 68000实际主频的约500倍)。从那时起,摩托罗拉的CPU就成了Mac电脑的“标配”,直到2005年苹果公司公开宣布转向Intel平台。用今天的话来说就是Macrola联盟(仿Wintel的构词法)。随后,又一家公司加入了Macrola联盟,这就是在和微软的合作中十分受伤的IBM。当年,IBM与微软联合推出IBM兼容机+DOS,有效遏制了上升势头正劲的苹果。未曾想共患难易,同享福难,IBM和微软很快翻脸。自此,Wintel联盟独霸一方,另一方面,IBM没从自己提出的PC标准中捞到多少好处,却养肥了组装PC厂商。世上没有永远的朋友,只有永恒的利益。失意的IBM找到苹果和摩托罗拉,三家公司于1991年10月联合发表了联盟声明,欲将IBM和摩托罗拉在硬件方面的优势与苹果在软件方面的优势结合起来,形成一个新的PowerPC体系,对抗Wintel联盟,时人以三家公司的打头字母,称之为AIM PowerPC联盟。该联盟在硬件方面的主要目标就是研发更加强大的PowerPC,取代苹果已经使用了多年的Motorola 68X00系列处理器,而在软件方面,该联盟希望共同开发新的操作系统,树立业界标准,以吸引更多开发者的依附。针对苹果和IBM结盟,比尔盖茨评论道:这简直像一个女流氓嫁给了银行家(参见“Power PC失乐园 IT巨头芯片领域恩仇录”

1994年推出的PowerMac 6100成为第一台装备PowerPC的苹果电脑。尽管它的销量不错,但苹果的“软硬件一体化”策略使得AIM联盟根本无法撼动Wintel的统治地位。比尔·盖茨在1995年出版的《未来之路》中评论道:“苹果公司为了它自己的硬件而决定限制销售它自己的操作系统软件,这种错误,在未来的年代还会时常重演。” 后来苹果的几任CEO开始将Mac OS对其他厂商开发授权,这有助于PowerPC市场份额的扩大,当然是IBM和摩托罗拉乐于看到的,因为这将带来规模效应,降低生产成本,开放授权也正是当年IBM和微软联盟时采用的策略。但是,正如第三章中提到过的,开放Mac OS的授权却损害了苹果公司自身的利益,数年内,苹果在授权问题上摇摆不定,于是,博弈论中经典的囚徒困境在AIM联盟中上演了。当上下游厂商之间的交易成本变得十分巨大之时,IBM想到了垂直整合,他们意欲收购苹果,但最终因价格没有谈拢而作罢。

PowerPC 6100

尽管AIM联盟在软件方面的目标从未实现,它的硬件目标却很成功。早期的PowerPC的性能远胜Intel(所以PowerPC联盟未能战胜Wintel联盟主要还是归咎于苹果自身),苹果曾推出了《蜗牛》广告片。广告中,蜗牛驮着英特尔处理器缓缓爬过,苹果以此嘲讽英特尔处理器很慢(苹果一向擅长通过广告嘲笑竞争对手,请看“细数苹果最具攻击性的广告”)。所以乔帮主在回归后仍然沿用PowerPC,并且在2001年的WWDC大会上专门安排了一个环节来讲解为何Intel不敌PowerPC,有条件的锋友请翻越GFW,观看MHz myth 。虽然苹果在评论竞争对手时经常夸大,但这回他们的批评还是很中肯的。当时的Intel迷信主频(也可能是他们利用消费者对主频的迷信),不重视优化CPU的架构。为了提高CPU主频,Intel过度增加管线长度(管线长度和频率的关系 ),造成高频低能。在架构问题上,Intel还在AMD K8那里吃过亏,给了AMD崛起的机会。 然而,随着AIM联盟中各方的貌合神离,PowerPC的优势很快就丧失殆尽,被Intel反超。乔帮主要求摩托罗拉加快研发速度,甚至以允许摩托罗拉继续生产Mac兼容机为诱饵,未果。后来,摩托罗拉将芯片部门独立出去,成立了飞思卡尔公司,IBM成了PowerPC的主要负责人。但是苹果电脑的市场实在太小众了,而且IBM当时正和微软、Sony、任天堂的游戏主机打得火热(http://www.cnhubei.com/200503/ca778102.htm),对苹果经常爱搭不理的。2003年,乔帮主宣布PowerPC的主频将在2年内达到3GHz,可是到了2005年这一目标仍未实现,这让帮主很没面子,加之PowerPC的功耗也大大高于Intel CPU,他终于下定决心抛弃PowerPC(参见http://en.wikipedia.org/wiki/Apple%27stransitiontoIntelprocessors)。不过我纳闷的是,帮主2001年才说主频不是一切,嘲笑Intel主频至上吗,怎么2年之后就开始“唯主频”了呢?。 WWDC大会上,帮主拿他2年前的3.0GHz PowerPC承诺说事儿

转向不同的处理器平台可不是件轻松的事情。不同的处理器工作方式差异很大,编写的软件需要转换成相应的机器指令(0、1构成的二进制序列)才能被CPU识别和执行。不过,苹果向Intel的转换过程既不痛苦,也不漫长,这归功于两项技术。一是帮主从NeXT时代就开始使用的微核心内核架构。苹果电脑进入PowerPC时代时,乔帮主正在主攻高校科研市场,卖力推销他的NeXT计算机。结果大家对NeXT的硬件不感冒,对其操作系统NeXTSTEP倒是情有独钟。后来,NeXT干脆砍掉了硬件部门,专门发展软件(参见《Cocoa Programming for Mac OS X》第1章 )。由于没有了硬件,乔帮主就不可能再坚持软硬件一体化时代的“不授权”策略了,NeXTSTEP必须能够跑在各种各样的硬件平台上。这种情况下,NeXTSTEP采用Mach微核心的优势就体现出来了。Mach的一个设计目标就是适应各种硬件平台,由于微核心只实现操作系统最基本的那些功能,在移植到不同平台时无须作太多改动,只需要针对不同平台修改驱动程序和高级功能,并挂在微核心上运行即可。在微核心架构的帮助下,NeXTSTEP被先后移植到x86、PA-RISC和SPARC等硬件(参见Mac OS X背后的故事 三)。而苹果公司也曾利用Mach与Linux结合,开发出能运行于PowerPC上的MkLinux(见本系列第三章)。二是通用二进制技术(Universal Binary)帮助新系统实现对老程序的完美兼容。在旧CPU平台上编写的程序想要在新平台运行,有两种方式。一是借助于模拟器,就像现在大家在Mac上用Paralells跑Win,好处是完全不用改程序代码,缺点则是速度慢。Mac OS X提供了一个叫Rosetta的模拟器,星际争霸I和PhotoShop都曾在Rosetta上跑过。第二种方式就是在一个程序中同时捆绑两种平台的代码,由系统根据需要调用不同版本的代码,这就是通用二进制技术的基本思想。通用二进制技术避免了模拟器带来的速度损失,代价是程序变得臃肿。

Universal Binary的logo:

向Intel过渡时期,应用程序可以选择以Rosetta模拟器方式执行

在移植计划的具体执行方面,根据几个老员工回忆苹果很早就有转向Intel平台的计划,当年把乔帮主请回来就是要完成向Intel平台的转变。而根据另一苹果员工Michael Burg的回忆,他在1999年时曾参与Mac OS向Intel平台的移植,他的团队成功地在Intel平台上启动了命令行界面和图形界面,但是在图形界面下无法运行任何程序(参见http://www.quora.com/Apple-Inc-2/How-does-Apple-keep-secrets-so-well中第一个帖子的评论部分) 。今年6月,另一位前苹果员工的妻子在社交网站quora上披露了Mac OS X在2000-2001年间首次成功地运行在Intel PC上(http://www.quora.com/Apple-Inc-2/How-does-Apple-keep-secrets-so-well),这个故事非常有趣,在这里和大家分享一下。

我们知道,苹果为了照顾Win用户,推出了BootCamp简化在Mac电脑上装Win。现在来看,尽管每天Mac区都有不少帖子抱怨装上Win后的大大小小问题,但至少Win在Mac电脑上跑起来还是比较轻松的。相比之下,PC用户装Mac OS就没有那么轻松了,黑苹果碰到的问题要大得多,装不上、装上却不能启动的一大把。weiphone论坛曾有一篇帖子,教大家在Sony笔记本上装Mac OS。不知道有没有锋友成功地让Sony跑上了Mac OS呢?其实,Sony笔记本装Mac OS本可以不必这么麻烦,只是天意弄人,Sony终于没能吃上一口美味的苹果。

2000年,已经在苹果工作了13 年的 John Kullmann Scheinberg(此人在Linkedin的主页http://www.linkedin.com/in/jdkullmann,他在苹果工作了21年,2008年离职,现在是另一家公司的联合创始人和CTO)正打算带着儿子老婆回他们位于东海岸的老家,和父母同住。这意味着以后他将成为SOHO一族,无法再和其他同事一起共事,他只好去寻找一个可以独自完成的项目。美国西部时间2000年6月20日,John Kullmann给他的上司发了一封邮件: Date: Tue, 20 Jun 2000 10:31:04 -0700 (PDT) From: John Kullmann jk@apple.com To: Joe Sokol Subject: intel

i'd like to discuss the possibility of me becoming responsible for an intel version of MacOS X.

whether that's just as an engineer, or as a project/ technical lead with another person - whatever.

i've been working on the intel platform for the last week getting continuations working, i've found it interesting and enjoyable, and, if this (an intel version) is something that could be important to us i'd like to discuss working on it full-time.

jk

这封邮件开门见山,第一句就提出要负责将Mac OS X移植到Intel平台。我们刚才看到了,苹果的移植计划可以追溯到1999年,也就是说,John并不是突发奇想要去跟进这个项目的。说来也巧,John的上司正好是13年前将他招入苹果的那位。这个提议得到了批准,之后的18个月里,John逐步从原来的项目中撤出,开始专心研究Mac OS X的移植,他的家里和办公室各有三台Intel PC,而根据苹果的保密措施,这六台电脑都不能通过苹果的内部流程来申请购买,John找了他的一个卖电脑的朋友搞到了这些电脑。在那18个月里,这个名为Marklar的计划只有6个人知道。2001年12月,John的上司让他报告一下现有的工作成果。John已经在几台Intel PC上装好了Mac OS,开机后,屏幕上出现了熟悉的Mac OS X欢迎画面。

John的上司傻眼了,马上叫来Mac OS X业务主管Bertrand Serlet。Bertrand也傻了,他问John在一台Intel电脑上装Mac OS X要多久,2-3周够不?John回答说不用,最多三小时(昨天还在黑苹果区看到有人用8个小时在PC上装Mac OS X)。Bertrand兴奋不已,他让John马上去电脑城买几台顶配的Sony Vaio电脑,然后现场装Mac OS X给他看。到了晚上7点半,电脑买来了,Mac OS X也装好了,运行正常。 Mac OS X业务主管Bertrand,2011年从苹果离职,2012年加入Paralells,就是做那个虚拟机软件的公司。

很快,乔帮主就去见Sony老总了。关于会谈,也有几种说法。一种说法是John的妻子提供的,说在苹果确认Vaio能够运行Mac OS X的第二天,帮主就飞往日本去见Sony老总洽谈在Vaio预装Mac OS事宜。第二种说法,是在John的妻子的帖子后发表评论的一位日本记者提供的。该记者自称采访过时任Sony老总Ando,Ando告诉他,乔帮主在夏威夷打高尔夫时透露了移植成功的消息。而第三种说法是上面提到的那位Michael Burg猜的,他认为乔帮主去见Sony老总只是为了商谈供货事宜,因为当时许多苹果产品内都使用了Sony的芯片。不管是哪个版本,反正最后苹果和Sony没谈妥移植的事情。虽然没谈妥,但苹果转向Intel的脚步并未停止。John Kullmann继续,苹果增派了更多的工程师和他一起。由于John已经和妻子谈过移植项目的一些情况,且演示移植时其妻儿也在场,苹果公司要求John的妻子不得泄密,而且John不能再和妻子谈论任何有关项目的话题,而John的房子也被要求进行改装以增强保密性。

有了内核架构和Universal Binary的保障,以及工程师们的不懈努力,苹果基本上做好了完全转向Intel的准备。2005年,乔帮主在WWDC大会上正式宣布将在2年内将全部电脑产品转向Intel平台(WWDC 2005视频片段,22分钟开始是转向Intel平台)。2006年1月,搭载Intel Core Duo处理器的iMac和Macbook Pro就已经面世,比原计划提早半年(参见http://tech.sina.com.cn/n/2006-07-14/111138197.shtml),2006年4月,BootCamp1.0推出,苹果电脑上终于能轻松地跑Windows了。软件方面的过渡也在逐步展开,从10.3开始,苹果用了3个版本的Mac OS X,终于在10.6雪豹停止对PowerPC电脑的支持,全面Intel化。

PowerPC和Intel平台各产品名称对照表: PowerPC Intel —————————————— Mac Mini Mac Mini iMac iMac Power Mac Mac Pro Xserve Xserve iBook MacBook PowerBook MacBook Pro

文章二维码

扫描二维码,在手机上阅读!

mac
发表新评论
博客已萌萌哒运行
© 2018 由 Typecho 强力驱动.Theme by Yodu
前篇 后篇
雷姆
拉姆