ARM Mac 對 Apple 是否為正確的發展呢?

Eric
Insights the Chips World | 洞悉晶片的世界
11 min readJul 21, 2020

--

從計算機架構、硬體架構、軟體系統 3 個方面分析

11:30 pm Taipei, July 21, 2020

Apple Silicon (google image)

前言

在大學時期,我本身主要是學習晶片設計以及計算機結構領域的,看了很多國外 YouTube 對 ARM Mac 的討論,大部分都是從科技的角度下手,這也讓我也想利用自己所學的,思考一下到底為何 Apple 會走向這一步。

我對於 ISA (Instruction Set Architecture 指令架構集) 有一些認識,ISA 是軟體跟硬體之間溝通的橋樑,因此如果可以整合這部分的設計的話,可以大大的提升硬體的表現和能耗,這個是絕對沒問題的。大四上時我就做過類似的事情,分析軟體部分跑比較慢之處,然後在硬體上給予優化,這個就是所謂客製化晶片 (Customized Chip) 的優勢。

有了 Apple Silicon,蘋果可以針對自己的平台,對自己的硬體做優化。而我們可以信賴廣大的開發者會願意在蘋果的生態圈去開發軟體,讓這個生態系不會被孤立。那究竟我們該怎麼從技術上,分析這樣的轉變會給 Mac 帶來什麼樣的好處跟壞處呢?

# 計算機架構

從計算機架構來分析的話就必須了解 ISA。

RISC vs. CSIC

ISA 有分 RISC (reduced instruction set computer) 以及 CISC (complex instruction set architecture) 顧名思義,RISC 為比較縮減版、較簡單的 ISA,因此所設計的硬體可以較為簡單、輕量; 而 CISC 為比較複雜的 ISA,希望透過複雜、仔細的指令集來控制硬體,因此相對硬體會較為複雜、龐大。從這邊你就可以了解到 RISC 在硬體效能上差但耗電量低 (適合行動裝置),CISC 在效能上好但耗電量高 (適合筆電、桌機),也區隔出來兩者的市場區位。

ARM and Intel-x86

而 ARM 就是屬於 RISC; x86 屬於 CISC,兩者不斷在各自領域發展自己的技術。不過現今 RISC 跟 CISC 的界線已經模糊不清,只能說這是一個給硬體設計師的概念,因 ARM 其實也在後續發展上加了很多複雜指令來迎合手機效能的需求、x86 也把複雜的指令拆成小指令 (microcode) 來讓處理器更有效率。但由於市場區位的定義,ARM 累積了很多行動裝置開發的 methodologies,使用 ARM 這樣的 platform 能開發出非常有效率的硬體,而 Intel 憑藉著 Moore’s Law 的優勢,利用電晶體的數量,不斷的追求性能卓越,讓 CPU 愈來愈強,但 Moore’s 定律已經漸漸式微,Intel 主要增加性能的方法被限縮,同時,製程的縮小讓能耗的問題日趨重要,這讓他們的「耗能」弱點浮現,因此他們也往開始有效率的處理器開始設計,這會需要很多硬體跟 ISA 上面設計的技巧 (architect benefits)。

10 年中效能提升: Intel 1st Gen ~ 7th Gen → 10 X; Apple A series A4 ~A13 → 100x 雖說平台不一樣,但這代表 ARM 的進步空間很大。

However, ARM 本身就是設計較輕量的處理器,在現今愈來愈多各樣化的晶片,如 Neural Engine、Machine Learning Accelerator 出來後,CPU 不單單是重點的計算中心,因此更著重在整體的表現。除此之外,多核心的 CPU 漸成趨勢,如此以 ARM 的設計思維,不需要將 CPU 的效能最大化,也能與 Intel 媲美,同時又能更低的能耗,ARM 在 PC 的機會就來了。

小結

相對於 Intel,ARM 可以提供 Apple 低耗能的表現

不過說歸說,性能上,ARM 到底能不能媲美 Intel 制霸以久的處理器呢?

# 硬體架構

針對軟硬體垂直優化,我認為是有辦法的,但這方面我們較難去知道 Apple 怎麼去做這方面的優化,通常你只能說:「根據 macOS系統去做硬體上的優化。」但怎麼做蠻難去理解的,至少對我來說目前的 domain knowledge 還不足,因此先不討論 Apple 軟硬體整合可以讓性能提升這件事。

我們必須看看 System-on-Chip (SoC) 跟 主機板-based CPU 的比較。

*主機板-based CPU: 就是 Intel CPU 透過主機板跟很多其他裝置溝通 eg. memory, GPU

SoC vs. mother-boarded CPU

SoC 就是把電腦所需要的所有東西,組在一個晶片裡,包含 CPU、GPU、Memory 等等,你就想家裡桌機主機板上面的東西被縮小在一個晶片內。由此可見 SoC 在能量使用的效率會更好(電流小),速度又快(距離短)。不過缺點就是,SoC 要顧慮的元件太多,會需要較長的設計及驗證時間來完成一塊零缺點的晶片,因此成本較高,這也是為何以前電腦較少使用 SoC 的原因。

Apple Silicon

Apple Silicon 的特色 from Apple Developer Video

上面那張圖就是 ARM Mac 會有的特色,ARM Mac 將 CPU 跟 GPU 整合再一起這會比以往 CPU 跟 GPU 分開的架構下更有效率。以往的 CPU、GPU 算是分別進行,中間要透過 PCIE Bus 來溝通,而且所運作的記憶體空間 (memory space) 也不一樣。但 Apple 的做法讓兩者直接融合再一起,利用所謂的 Unified Memory Architecture (統一記憶體結構),即讓 CPU 以及 GPU 去分享記憶體,去除 Bus 的需要,讓兩者溝通效率大幅提升 (能量、效能上都是)。值得注意的就是,如同 iPhone、iPad 手機的晶片一樣,還有掛載 Neural Engine, ML Accelerators,讓 CPU 可以針對一些人工智慧的應用去做加速,這也是傳統 Intel CPU 所缺乏的功能。

但這樣做並不是很容易的,這需要好好協調各個部件之間的運算模式,才不會讓不同運算單位把運算結果放錯、蓋過其他人的位置,造成一些無謂的運算浪費,architecture design, memory protocol 都要有新的想法,這也跟 Intel 利用 Moore’s Law 來增加效能的方法不一樣,而是好好的去設計多元件的計算機結構。不過 Apple 養這麼多工程師,做了這麼多台 iPhone 及 iPad,我相信他們經驗是非常老道的。

小結

SoC 的特性可以補足 ARM 在效能上的缺失,超前 Intel 在傳統 CPU 上累積已久的實力。

這一切的一切都不是一蹴可幾,而是利用錢 (1.5 兆美金)、跟耐心 (10 年) 出來的成果,並不是因為他是 Apple 所以有機會,而是他背後累積的成就有機會 。

# 軟體系統

以上都是對硬體做的分析,我們得知 ARM 在 Performance 以及 Power Efficiency 上面都是很有機會甚至一定能超過 Intel 的,那麼問題就來了,到底在軟體端、使用者端是否能成功體會到呢?

ARM on Windows

先看看 ARM 在 Windows 系統筆電的例子,Microsoft 與 Qualcomm 合作開發了一顆使用在 Windows 電腦的 ARM 晶片,SQ1。這顆晶片是 ARM 在 PC 內的一個嘗試,硬體其實不算差,問題在於系統、軟體支援尚未成熟,就連 Windows 自己的 Apps 大部分都不能用了,雖然可以利用 compiler 把 App 編譯成 ARM 看得懂的程式,不過這會降低效能,讓 ARM 達不到本來要的效率及省電,這也是為何實測中 surface pro x 並沒有特別突出的 battery life。

macOS?

那在 macOS 上面呢?我們從 WWDC2020 的 keynotes 中可以知道

Craig said, we built everything as native for Apple Silicon, including our own demanding Pro Apps like Final Cut Pro and Logic Pro up and running as native now and they’ll be ready for customer on day one.

這其實不必太訝異,Apple 已經有好幾年在 iOS 以及 iPadOS 打造 App 的經驗,而這些 OS 都是 macOS 改良過去的版本。甚至 Office、Adobe 都已經開發 native Apple Silicon Apps,所以基本上不用擔心有 App 不能跑的問題。

native Apple Apps from WWDC keynote

Tools

除了自己跟其他大型 third party 的 Apps 做好之外,軟體工具讓整個 Apple Silicon 的 Apps 更完整,利用的就是這兩個

  • Universal 2
  • Rosetta 2

Universal 這個 toolchain 可以把 Apps 翻譯成 ARM 跟 Intel 都看得懂的原始碼,不過這會需要一些開發時間,把 Apps 開發成 ARM 的形狀。

Rosetta 2 可以直接執行 Intel 的原始碼 (這叫做 virtualization),任何以前可以在 Intel Mac 跑的 Apps 到 ARM Mac 還是可以跑,但根據實測效能會下降個 25 ~ 40 %,這也是轉換成 ARM 平台上最需要擔心的事情,也就是軟體的支援是否能即時。

但根據 Apple Silicon Native Apps 的開發速度,重點開發工作上會用到的 App 都是不需要 Rosetta 幫忙,唯一可能不足的就是 Gaming,但 Gaming 本身就不是 Apple 專注的方向。

A12Z 利用 Rosetta 跑分跟 Surface Pro X Run ARM Code 一樣快

值得注意的是,現階段最強的 ARM Laptop Surface Pro X 跑分跑的跟 Apple 發給開發者的 Testing Machine 一樣快,那可想而知他之後專為 Mac 設計的晶片有多強了。

小結

工作、開發 (Final Cut Pro, Office, Adobe, Docker …) 等這些 Apps 都很完整,但會需要時間把剩下的生態圈建立起來,否則效能可能會降低 10 ~ 15 % 左右

結論

Apple 轉換至 ARM、設計自己的處理器這樣的決定算是一個時代的推進

Customized Chip 已經是一個趨勢 (可以去參考我探討 RISC-V 的文章),以往的 General Processor 已經不再是潮流了,因為現今應用太複雜、多元,不能以一個處理器打天下。Berkeley 圖靈獎得主 John Hennessy 和 David Patterson 都提到 Domain-Specific Architecture (特定領域結構),是未來的硬體發展趨勢,如此可以針對一個領域的應用去做優化、設計,就如同 Apple 所做的一樣 — Apple Silicon。

Apple 如此的轉變提供了未來的 Mac 省電、高效的表現

從 SoC 架構、更多核心的處理器來降低能量使用率及處理器的計算效率。因目前的 supercomputer 就是從 ARM 架構來的,擁有 45 核心的 CPU,如此可想見 ARM 在未來的 Desktop Computing 有多麼有前景。

對我來說這帶來最棒的就是風扇的移除!我現在的 2015 Macbook Pro 常常就因為處理器過熱,然後需要風扇幫忙降溫,除了吵之外,有時候溫度還降不下來,甚至電腦當機,所以如果可以能量效率這件事情做好,對使用者的體驗是會大大上升的。

Apple PowerPC → Intel 的經驗

而蘋果也不是第一次做這樣底層的大改變,在以前 PowerPC 的年代時,也是花了一陣子成功轉換到 Intel,軟體生態系的問題、硬體的問題都是類似的,因此目前都呈現看好的狀態,同時 Apple 在做一件事情都非常認真,所以大家也非常的認真看待這個轉變,也才會相信他們做得到。總而言之,根據 Apple 過往在 ARM 的經驗、硬體架構的優勢、軟體上面所做的準備,這個 Transition 其實非常的 Obvious,可以好好期待年底的 13.3 inches Macbook Pro!

參考影片

  1. Intel is in serious trouble. ARM is the Future
  2. Domain-Specific Architecture from David Patterson and John Hennessy
  3. Geekbench: Rosetta may hurt performance
  4. A12Z vs. Surface Pro X
  5. Apple Developer Video — Apple Silicon
  6. TWiT: Apple on ARM vs. Windows on ARM
  7. TWiT: Mac on ARM vs. Windows on AR
  8. Surface Pro X Problems

--

--

Eric
Insights the Chips World | 洞悉晶片的世界

SoC Software Engineer at Tesla | 2021 UC Berkeley EECS | 2019 NTUEE.