當年Mac OS的整個生態是如何從PowerPC遷徙到X86上的,指令集不是不同么?
看到大家討論CPU指令集對軟體生態的影響,那麼當初蘋果是怎麼做到MacOS的生態從RISC處理器遷徙到CISC處理器上的?
對於 Apple 來說,當時從 PPC 遷移到 Intel x86 平台是一個必然的,也是唯一的選擇。PPC 當時已經日漸式微,外加 PowerPC G5 系列處理器的功耗問題 (你會發現有 G5 的 iMac 和 Mac Pro,但是沒有 Power Book 和 iBook),促使了 Apple 開始這一轉變過程。其實對於 Apple 來說,轉移到 Intel 平台反而沒有想像中的那麼困難。首先是 Apple 自家的硬體都是可控的,在可控平台上做遷移強過在各種未知平台上做這一事情。其次,Apple 本來就使用了當時較為先進的 OpenFirmware 固件,當時正好 Intel 也開始推廣 EFI,可謂一拍即合。再者,Apple 這種位內核架構的操作系統,對於這類轉變也有天然的優勢。
其實對於上層的應用開發者來說,這個轉變幾乎是無疼的,你只需要重新編譯應用程序即可。除非你所使用的三方庫還沒有針對新平台進行重新編譯。並且 Apple 提供了相應的技術,幫助開發者和用戶度過這個轉變期。
Rosetta,對於那些不再維護但用戶還要使用的基於 PPC 架構的二進位代碼,Rosetta 可以對其進行翻譯,緩存並在 x86 平台上執行,大部分情況可以獲得 70-90% 的性能。
Fat Binary (Universal Binary),就是一個特殊的二進位文件,裡面有一個文件頭表明該二進位文件含有幾種架構類型的代碼,以及這個代碼在該文件中的偏移量。這樣一來,PPC,x86,x86_64 代碼可以打包進一個二進位文件中,在不同的平台上運行。實際上當前 Windows 10 也是採取了這種類似策略。所以,對於應用程序開發者還是用戶來說,架構的轉變問題並不大,但是 Apple 做了很多工作。好在 OS X 分層架構做的比較好,Apple 也很努力,所以基本完美的解決了這個問題。在 10.4 10.5 時,你還能看到 PPC 和 x86 混合後的 Fat Binary 內核,在 10.6 10.7 你還可以看到混合了 x86,x86_64 代碼的內核,當然包括上層的框架等都是此設計。
這一轉變的一個直接的好處,就是促成了 iOS ,當年的主流想法是基於 Linux 開發手機的操作系統,Moto 當時是這一理念的先鋒。而 Apple 顯然不想使用 Linux 作為基礎開發自己的操作系統,那麼能不能將 OS X 移植到 ARM 上就是一個關鍵問題。顯然,OS X 的移植過程為這個想法提供正面反饋,而最後 iOS 也正是一個跑在 ARM 上的,經過精簡和重新設計的 OS X 系統。也是當時為數不多(也可能是第一個)跑在 ARM 上的 Unix 系統。
對於未來的 Apple,這一轉變過程為其提供了不可估量的信心與技術儲備,所以無論是說 Apple 要將 OS X 轉到自家 ARM 處理器上,還是要在 x86 的 OS X 上跑 iOS 的應用程序,我都不會吃驚,畢竟這對 Apple 來說,是個簡單的事情。問題的關鍵是 Apple 想不想以及是否願意,而非技術問題。
轉平台是個大事,但是對於用戶和上層應用程序開發者來說,影響不算巨大,Apple 就提供了一個好的範本。畢竟它家現在掌握操作系統,生態環境,硬體平台,編譯器技術,就算再轉幾回也沒事。對於老的powerpc程序,蘋果提供了一個名叫Rosetta的模擬器,可以將用戶程序翻譯成X86指令。另外,蘋果系統裡面的所有系統庫,蘋果也都同時提供了powerpc版本來供powerpc程序調用。所以那些老的powerpc程序可以直接在intel的機器上運行。jobs當時演示了ps, word等程序,性能都完全可以接受。Rosetta模擬器直到2011年的OS X 10.7才被徹底移除。
模擬器還只是無奈之舉。蘋果還呼籲開發者儘快對程序進行重新編譯。為了方便程序移植,蘋果推出了新的技術-通用二進位程序(universal binary)。其實就是在一個程序包裡面同時提供X86平台和powerpc平台的二進位碼。由系統自行檢測和判斷該運行那部分程序。這樣一個程序無論在哪個平台都可以原生運行了。而對於開發人員而言,Xcode的編譯選項裡面有一個生成intel代碼和生成powerpc代碼的選項,開發人員只需要打兩個勾,然後編譯一遍就可以了。簡直再簡單不過了。
後來OS X 10.5的時候蘋果還提出了四架構二進位概念,同時對應intel和powerpc的32位和64位版本。以方便第三方程序向64位遷移。
蘋果在平台切換方面確實做的非常出色,無論是powerpc向intel遷移,還是32位向64位遷移。甚至iOS從32位向64位遷移的過程,也是非常迅速的。
《喬布斯傳》里提到蓋茨是這樣評價的。比爾蓋茨對此感到驚奇。他對於設計色彩花哨的電腦機箱並無興趣,但是秘密換掉電腦內部的CPU,並能按時無縫完成,這是他真正欽佩的壯舉。多年後我採訪蓋茨,提起喬布斯的成就,他告訴我:「如果你說,好,我們現在要換掉微處理器晶元,但是一拍都不能落下,這聽起來是不可能的,但是他們基本做到了。」
謝邀。
還是看老喬是怎樣決策的,指令集及平台遷移只是技術層面的東西。就現在來說當初老喬全面轉向intel平台降低了多方面的門檻:
1. 價格:PPC是當年apple價格高企的原因之一,就總體價格而言intel平台成本比PowerPC低的多,配置上也更容易多樣化,且intel迭代速度快容易刺激銷售增長。2. 軟體:編程語言方面我沒有發言權,但相信intel架構的普及率降低了軟體的開發門檻,而且現在的app比PPC時代多的多。
3. 市場:對市場受眾而言intel平台的apple更具有親和力,兼容性好、用不慣OS X分分鐘就能裝Windows,消費者可以很放心的入手,市場佔有率也由此大幅度提升。記得06年在PC上測試黑蘋果10.4.6成功後,很無恥的第一時間出掉了G5 A1117入手Dell 390,不但沒賠還省了不少錢…………推薦閱讀:
※高通驍龍系列產品會撼動Intel酷睿系列的地位嗎?
※如何看待英特爾正式放緩 CPU 更新時程?
※在視頻解碼方面,為什麼硬體解碼跟軟體解碼比起來,前者的畫面質量總是肉眼可見地略遜一籌?
※對於內存大小和CPU頻率同樣的台式機與筆記本,性能為什麼有差異?
TAG:macOS | 蘋果公司AppleInc | 中央處理器CPU | 精簡指令集RISC | 複雜指令集CISC |