那么我也講一講我為什么不看好Apple Silicon

首先本文默認讀者了解以下常識:
Apple M1的實際性能是完全有可能大幅度超出一般人的預(yù)期的。
在更低的功率下實現(xiàn)更高的性能是可能的。
x86的二進制無法運行在arm平臺上,arm的二進制同樣也不能運行在x86平臺上。利用動態(tài)翻譯或者靜態(tài)翻譯為主,動態(tài)翻譯為輔的虛擬化技術(shù)可以二進制跨平臺運行,這個過程中會引入不小的overhead:但這一overhead不是硬件和平臺造成的。
好的下面正文開始。
在已知Apple Silicon性能并不差的情況下,我為什么依然不看好這一平臺呢,最主要的原因依然是arm。
第一點,我們首先考慮一下,為什么x86平臺的用戶普遍可以隨意更換操作系統(tǒng)。這是因為x86平臺本身有一套完備的體系,這套體系能夠在操作系統(tǒng)啟動之前,由硬件,平臺和固件為操作系統(tǒng)提供一致的環(huán)境。這套體系主要包括UEFI,ACPI,以及PCIE。這套體系并不完美,但足以使得操作系統(tǒng)早期階段的引導代碼能夠不加修改得在各個平臺上運行。
Windows的bootmgfw.efi,以及grub,systemd-boot,refind等常用的bootloader,都是已經(jīng)編譯好的二進制,這些二進制能夠在絕大多數(shù)x86-64平臺成功引導各種操作系統(tǒng),完全得益于x86的環(huán)境把平臺差異抽象掉了。
而ARM呢,ARM可以有UEFI,可以有PCIE和ACPI,但是,ARM卻沒有提供一個機制去允許硬件平臺無關(guān)得提供這些功能。要知道,x86的PCIE根復(fù)合體(北橋)是直接集成在CPU中的,而ARM并沒有在SoC中集成任何平臺無關(guān)的總線。
這就導致了一個很嚴重的問題:ARM平臺所有的底層程序,都是,至少都曾經(jīng)是,平臺特定的:一個很典型的例子是Android:Android及其各類衍生版本的所有二進制分發(fā)都是平臺特定的,這是因為在(目前的)大多數(shù)arm平臺上,Linux內(nèi)核的運行必須依賴bsp(板級支持包)。
在ARM被廣泛應(yīng)用于嵌入式平臺的時代,這并不是問題,因為嵌入式系統(tǒng)的軟件是隨硬件一同分發(fā)的,但在更需要通用性的桌面平臺,這是一個非常嚴重的問題。
ARM社區(qū)也正在努力解決這一問題,但這一努力遠未結(jié)束。
那么第二點:假如說我們不能在Apple Silicon的機器上使用其他操作系統(tǒng)呢?
可能很多MacOS的資深用戶并不會認為這是一個問題。但我必須要指出的是,在Mac硬件上同樣有眾多的Linux和Windows用戶。至少我本人作為Linux用戶,是無法忍受MacOS的種種不便的。
不過既然某個著名網(wǎng)絡(luò)噴子(內(nèi)誰)表態(tài)看好這一平臺,實際上我個人對linux在Apple Silicon上的前景并不是太擔心。
但是更重要的是用戶的選擇權(quán)。如果用戶被強制綁定在MacOS上,那么這和某些不允許解鎖bootloader的Android手機廠商又有什么區(qū)別呢。
以及現(xiàn)實得說,Windows是比MacOS要常用得多的操作系統(tǒng),但是Apple Silicon上是很可能不會再有windows的。這是相當大的損失。
然后是第三點:假如說為Apple M1準備的操作系統(tǒng)無法運行在其他的Apple Silicon上呢?
我上文中提到,Android的二進制分發(fā)是平臺特定的,這給Android用戶造成了相當多的不便。如果今后Apple Silicon上的操作系統(tǒng)也必須是平臺特定的,這對開發(fā)者和用戶都是很大的負擔。因為操作系統(tǒng)的開發(fā)者可能必須同時為多個平臺提供平臺特定的支持,而舊平臺的用戶將可能無法使用最新的操作系統(tǒng)。
對于Android來說這是現(xiàn)在進行時,對于Google的Chrome OS來說也可以說是現(xiàn)在進行時,但桌面平臺暫時還沒有慘遭毒手,甚至相反,最新的Linux內(nèi)核是依然可以運行在非常陳舊的(x86)平臺上的。
而甚至,這些在用戶看來的弊端反而是符合商業(yè)邏輯的。
將用戶鎖死在自己的操作系統(tǒng)上,就能讓用戶更多的為自己的軟件和渠道付費。
微軟也曾經(jīng)幻想通過Secure Boot來阻撓用戶更換操作系統(tǒng)。
人為得通過軟件縮短硬件的生命周期,就能讓用戶更多得為自己的硬件付費。
但作為用戶,我不想看到這樣的未來。
