幾周前,我們報道了一家名為Corellium的初創公司成功地在一臺蘋果M1公司的電腦上運行了Linux。當時作業系統執行,但是不支援很多東西,本質上很大程度上讓PC無法使用。最近公司終於設法讓大部分東西(包括Wi-Fi)工作起來,這意味著Linux現在可以用在最新款的Macs上了。但是在這種計算機上執行非蘋果作業系統的整個專案有一個有趣的副作用,因為它揭示了蘋果的作業系統與其他基於Arm的架構相比有多麼不同。
大量專利技術
眾所周知,蘋果公司很長一段時間以來一直專注於構建自己的基於Arm的微體系結構,以提供與蘋果手機和蘋果平板電腦不可匹敵的效能。與競爭對手不同,該公司沒有投入更多核心,而是提高了核心的單核/單執行緒效能。據Corellium稱,除了定製核心,蘋果顯然還使用了高度定製的系統架構。
當幾乎所有64位基於Arm的系統啟動時,它們透過一個名為PSCI的介面呼叫韌體,但在M1的情況下,中央處理器核心從MMIO暫存器指定的地址開始,然後開始執行核心。此外,蘋果系統還使用不符合Arm標準的專有蘋果中斷控制器(Apple Interrupt Controller.AIC)。同時,定時器中斷連線到FIQ,這是一個模糊的架構特性,主要用於與Linux不相容的32位Arm系統。
為了使M1電腦中的各種處理器相互協作,作業系統必須提供一組處理器間中斷(IPIs)。以前,IPIs的處理方式與傳統的IRQs一樣,使用MMIO訪問AIC,但是在M1的情況下,蘋果使用處理器核心暫存器來分派和確認依賴於FIQs的IPIs。
蘋果的奇特之處還不止於此。例如,蘋果的Wi-Fi/藍芽控制器使用非標準的基於PCIe的協議連線到SoC(幸運的是,Corellium虛擬化軟體支援該協議)。更復雜的是,蘋果的PCIe和整合的Synopsys DWC3 USB控制器使用了公司專有的輸入-輸出記憶體管理單元(IOMMU),稱為裝置地址解析度表(DART)。此外,蘋果的I2C有一個使用獨家協議的定製韌體,這阻礙了USB-A型埠的使用。
複雜化系統設計
對蘋果來說,使用專有系統架構並不是什麼新鮮事,但這將使得將其他作業系統移植到其平臺以及以虛擬化模式執行這些作業系統變得更加困難。最近,一名開發人員使用QEMU虛擬化技術,成功地使微軟即將推出的Windows 10X在基於蘋果M1的系統上執行,但這種作業系統還不是最終版本,不清楚它有多穩定。此外,Windows 10X不執行Win32應用程式,這使得它對一些使用者來說價值更低。
在蘋果電腦上執行Windows 10或Linux對大多數蘋果電腦使用者來說可能並不重要。但是,以多種專有技術為特徵的複雜系統架構可能會使為基於Arm的Macs開發某些型別的軟體和硬體變得更加困難。