Softbank 收購 ARM 的啟示
幾天前看到日本 Softbank 花 243 億英鎊收購 ARM Holdings 的新聞,一時真是驚訝得說不出話來。雖然不知道這事醞釀了多久,但無疑它對整個行動裝置的半導體市場是一顆震撼彈。
大部分的人可能聽過 ARM,但不見得知道它在幹嘛,或是在整個行動通訊產業及即將來臨的物聯網產業中扮演者什麼樣的角色,因此我想寫這篇文章來聊聊 ARM 在這個產業中的地位及它所扮演的角色。
ARM 在幹嘛 ?
在 IC 設計的領域,很少有 IC 設計公司會從頭到尾自己硬幹,就像蓋房子的人不會自己燒磚塊一樣。IC 上面有很多常用的 block,如處理器、記憶體控制器、標準的 I/O (HDMI、USB、DisplayPort… 等) 都有現成的設計可用,這些現成的設計就叫做 silicon IP,或叫矽智財。當 IC 設計公司需要用到這些 block 時,他們不用重新打造輪子,只要花點錢向提供 IP 的公司購買這些 IP,就可以站在巨人的肩膀上繼續設計 IC。
ARM 就是一間賣輪子的公司 (嚴格來說,是賣輪子的設計圖),它提供的 IP 是 IC 設計中非常關鍵的元件 – 處理器。只要你設計的 IC 需要跑程式,就會用到處理器,手機需要跑程式,平板需要跑程式,於是 ARM 的處理器就隨著這些行動裝置的 IC 滲透到你我的生活當中。
ARM 成立於 1990 年,至今已經賣出超過 200 億個 IP 授權到各式各樣的裝置中。事實上,除了極少數的例外 (像華碩的某些 Zenfone 手機),不管你用 iPhone 還是 Android 手機,裡面的處理器都是 ARM 核心。
難道世界上只有 ARM 一間公司賣輪子給 IC 設計公司嗎 ? 其實事情剛開始的時候不是這樣的,很久以前輪子有很多牌子,除了 ARM 以外,還有 MIPS、AVR、SuperH、在工作站上紅極一時的 SPARC、以及曾幫 Mac 撐起一片天的 PowerPC。
它們都哪去了呢 ? 這又是一個很長的故事了…
指令集大爆發
時間回到 80 年代初。
當時差不多是 Intel 推出世界上第一顆微處理器 4004 之後的 10 年左右,因為 IC 設計和製程的進步,各種微處理器如雨後春筍般地出現在市場上。除了初代 IBM PC 使用的 Intel 8088 外,還有曾用在 Apple II 和第一代任天堂主機上的 MOS Technology 6502,以及可以在 Apple II 上跑 CP/M 作業系統的 Zilog Z80 等。Motorola 當然也沒缺席,6800/6809/68HC11 等微處理器也都曾在市場上佔有一席之地。
當時的處理器設計隨著半導體製程的進步,越來越複雜,甚至已經到了有點走火入魔的程度。處理器的設計者不斷嘗試將各式各樣的指令塞到處理器裡面,以 Motorola 68HC11 來說,它有 145 個基本指令,搭配各式各樣不同的定址方式,排列組合後的指令總數超過 300 個,而且指令長度從 1 個 byte 到 5 個 bytes 不等。光是遞增 (increment) 或遞減 (decrement) 指令就各有 6 個,加法和減法指令也各有 8 個,更不用說那一大堆讓人永遠搞不清楚的條件分支指令。
這是 68HC11 指令表的一部分,這樣的表一共有 6 張。
不過在那個年代,這樣的指令集爆炸現象其實是有它的時空背景的。當時的程式語言都相對高階,而編譯器 (compiler) 的技術跟今天比起來還像是在石器時代,因此為了要讓處理器能更接近程式語言的設計,工程師們就不斷地把各式各樣的指令塞到處理器裡。曾在大型電腦佔有一席之地的 VAX 甚至有處理多項式的硬體指令,以現今的眼光來看其實非常誇張。
這就是 VAX 的 POLY 指令,常常被拿來當作複雜指令集的典範。
RISC 的濫觴
1974 年,IBM 的電腦科學家 John Cocke 注意到,80% 的程式碼只用到 20% 的指令,因此用硬體去實作剩下那 80% 的複雜指令 (像前面講過的多項式指令,很多程式設計師可能一輩子都用不到) 其實只是徒增複雜度而已。因此它著手設計了 “精簡指令集” 的電腦架構並將它實作在 IBM 801 這台迷你電腦上。一般認為這是精簡指令集電腦 (RISC,reduced instuction set computer) 的濫觴。
但真正有系統及定量的研究,則要等到 Patterson 教授登場了。
1980 年代時, UCLA 有位 David Patterson 教授,開始了一系列關於處理器的指令集和架構的研究。Patterson 分析了大量的微處理器程式碼,並做了非常多定量的分析及統計,不僅證明以 RISC 架構設計的處理器在系統複雜度上遠遠低於傳統的 CISC 架構,而透過 compiler 的最佳化及,RISC 在效能上並不會輸給 CISC。
最重要的是,RISC 的特性 (指令定長、指令碼短、執行時間單純甚至統一… 等) 更促使了後來各種先進計算機架構的大爆發,如深度執行管線 (把執行單元拆成很多工作站,排成生產線來跑)、非循序執行 (通向很多平行時空的道路)、分支預測 (猜猜下一期樂透開什麼 ?)、暫存器更名 (變魔術…) 等,大概都是在 RISC 發展的過程當中一起確立的。
David Patterson 的巨作 “Computer Architecture: A Quantitative Approach” 大概是這個年代學習計算機架構的學生不可能錯過的一本書。台灣的中文版書名一度把 “Quantitative Approach” 翻成 “計量接近”,實在有夠瞎。”Approach” 指的是研究方法,Patterson 教授是第一個用定量及統計的方法去研究計算機處理核心的人,他也為整個計算機架構的研究領域開啟了一個新頁。
然後這個新頁,就在 ARM 的手上發揚光大了…
ARM 的崛起
就如同 ARM 的名字 “Advanced RISC Machines”,ARM 在 RISC 處理器的領域深耕超過 20 年。它早期也做過一些默默無聞的設計,如 ARM1/ARM3 (有人聽過嗎?) 以及曾用在 Apple 的 Newton PDA 中的 ARM6,但真正為它打下江山的,應該是 1994 年左右的 ARM7 家族,以及後來加上 thumb 指令集的 ARM7TDMI。
ARM 的核心從 ARM2 開始就是 32-bit 的核心,可以算是 32-bit RISC 微處理器的始祖。
當時的 CISC 處理器如 Motorola 68000 因為指令集又多又複雜,幾乎不可能用硬體直接解碼,因此中間都有一層稱之為 micro code 的轉譯過程,將機器碼再拆成更簡單的微碼來執行。光是這個轉譯的過程,就要耗掉不知道多少電晶體。
而受到 RISC 理論的影響,ARM 一開始的設計就不使用 micro code,而是直接用硬體執行單元去解碼指令,因此它從指令集和機器碼的設計從一開始就完全為了執行單元做最佳化,也可以說它的機器碼就如 CISC 的微碼一樣簡單。因此同為 32-bit 的處理器,ARM2 的電晶體數量還不到 68000 的一半。
但 32-bit 處理器的問題就是什麼都是 32bit,資料是 32-bit,指令也是 32-bit,在那個 flash memory 剛出來還很貴的年代,32-bit 的指令碼殺程式記憶體的速度讓很多客戶心驚驚。ARM 於是順勢推出了 thumb 指令集。Thumb 指令集將常用的一些指令重新編碼後成為 16-bit 的指令集,而處理器可在 16-bit 和 32-bit 的指令集之間切換。因為 Thumb 指令集包含了最常用的指令,這個作法讓 ARM7 的 code density 大幅提高,ARM7TDMI 也成為史上最受歡迎的 ARM 核心。
1990 年左右,DEC 取得了 ARM 的授權,開始設計及生產 ARM 架構的處理器晶片,就是後來舉世聞名的 StrongARM 系列處理器。這一系列的處理器被用在許多行動裝置上,如 Apple 的 MessagePad 2000 (Newton 的傳人)、Psion 掌上型電腦,以及大量的 set top box 中。1997 年 DEC 將 StrongARM 賣給了 Intel,繼續發光發熱。
Intel 接手 StrongARM 後最有名的產品叫 SA-1110,它被用在當時紅透半邊天的 Compaq iPAQ PDA 中。
StrongARM 之所以被廣泛用在當時的行動裝置上,是因為它的單位能量計算能力遠優於其它競爭對手。第一顆 StrongARM SA-110 在 233MHz 全速運作下只有 1W 的耗電,雖然半導體製程的改善功不可沒,但 ARM 架構本身的簡潔、優雅仍是成功的主因。
StrongARM 以及其它的 ARM 衍生處理器剛好趕上了 GSM 行動電話系統崛起的時間,因此當時 2G 到 2.5G 的手機晶片中到處都可以看到 ARM 核心的蹤影。不管是國產的 MTK 、歐洲來的飛利浦半導體 (後獨立為 NXP) SySol 平台、還是美國來的 TI LoCosto 平台,裡面的處理器核心都是 ARM,而且以 ARM7TDMI 為大宗。
這是 TI 的 LoCostco GSM/GPRS 行動電話單晶片結構圖,除了 TI 最擅長的 DSP 核心外,另一個要角就是 ARM7TDMI 處理器核心。
Intel 後來將 StrongARM 系列更名為 XScale,並繼續隨著 ARM 的架構一路更新至 ARM9/ARM11。2006 年 Intel 將行動通訊事業出售給 Marvell,XScale 處理器一併被賣掉了,從此 Intel 與 ARM 分道揚鑣,再無瓜葛。
小而美的 Cortex-M
在 ARM11 之後,ARM 開始用 Cortex 的 A、R、M 三個系列來區分 application processor、real-time processor、以及 microcontroller。其中 Cortex-M 所屬的 microcontroller 系列產品是首度引入 ARM 的產品線,而讓使用者非常驚訝的是,原來 ARM 的核心也可以精簡到這樣小而美的程度,甚至進入微控制器的領域。
早年微控制器是個幾乎無法有新架構的市場,Intel 的 8051 架構雖然又慢又笨,但三十多年下來累積的大量程式碼和週邊設計不是說改就能改的,因此始終沒有其它微控制器的架構可用撼動 8051 的霸主地位。Intel 將 8051 的架構完全公開,因此其它廠商可以自行設計各式各樣的 8051 相容晶片,有時脈上百 MHz 的,有可以定址 1MB 以上的,還有包了各式各樣週邊進去的。
Motorola 的 68HC11 是另外一個狠角色,但在台灣除了汽車的 ECU 外很少人熟悉它,學校也不太教。而其它來分食這塊市場的還有 Microchip 的 PIC 架構,Atmel 的 AVR 架構等,但多年來始終沒有一個破壞性創新的角色進入這個領域。
直到 ARM Cortex-M 的出現。
Cortex-M 直接將 MCU 帶進 32-bit 的時代,而且是以不可思議的 gate count 和功耗達到的。Cortex-M0 的核心只有 12,000 個 gates 左右,但是具有 0.9DMIPS/MHz 的計算能力 (第一代的 486 只有 0.7DMIPS/MHz)。大部份的廠商做出來的 Cortex-M0 晶片都有 33MHz 甚至更快的時脈,換句話說,現在一顆小小的 Cortex-M0 所擁有的計算能力,比 1990 年的 486 還要快。除了 Cortex-M0 外,還有一樣小巧但更強大的 Cortex-M3/M4 和較晚推出的 Cortex-M0+,ARM 的產品一舉涵蓋整個 MCU 市場。
這一次,真的有人出來撼動 8051 的江山了。而且,剛好在 IoT 這個浪頭即將來臨之前。
兇猛無比的 Cortex-A
在高階處理器的市場,ARM 也沒有閒著。Cortex-A 系列的核心就是為了這個市場而存在的。
從 2005 年的第一個 Cortex-A8 核心開始,Cortex-A 核心幾乎滲透到現在世界上所有的行動裝置中。Apple 自己設計的第一顆處理器 A4,裡面用的就是 Cortex-A8 核心,然後 A5 用了 Cortex-A9、A6 正式進入雙核心時代、A7 進入 64-bit 時代…
除此之外,Qualcomm、MTK、nVidia 等晶片設計大廠,也都在它們的設計中廣泛使用 ARM 的核心,有直接使用 Cortex-A 核心的,也有跟 ARM 購買 ARMv7-A 或 ARMv8-A 架構來自行修改的。
而且 Cortex-A 系列支援多核心配置,嫌一個核心不夠快你可以多放幾個,後來甚至還有非對稱的大小核配法,讓設計者可以想快的時候就快,想省電的時候就省電。
不管你用 iPhone 還是 iPad、用 Android 還是 iOS,通通逃不過 ARM 的手掌心,這些裝置裡的處理器核心通通來自 ARM。
「但是對不起,那種量你是躲不過我的!」- 劉德華
大概是這個意思吧。
收購之後的效應
Softbank 在打什麼算盤,各方都在猜測,不過因為半導體 IP 設計跟 Softbank 的本業實在相去太遠,一般認為 Softbank 不太可能介入 ARM 的營運。ARM 還是 ARM,它還是繼續在處理器的領域發光發熱,而且接下來還有 IoT 這塊市場可以讓它好好耕耘。更有甚者,認為這意味著手機時代的結束 (所以 ARM 的成長動能減緩),物聯網時代來臨 (真的嗎?) 或有可能是另一個典範轉移的前兆。
我本來以為會做這件事的可能是 Apple,畢竟以授權的數量級來算,Apple 自己的 A 系列處理器應該是 ARM 的授權中單一晶片最大的,而且遠遠把第二名拋在後面,而 Apple 也確實有動機這樣做。不過它沒有發生。曾經有馬路消息指出 Apple 有出過價但是被拒絕了,不過沒有被證實。如果事情為真,Apple 現在不知道會不會很後悔…
無論如何,將近一兆台幣的價格,讓全世界都見識到了 ARM 這家公司有多值錢,也再一次讓大家重新檢視 ARM 在整個半導體產業的貢獻。至於軟銀接下來會怎麼做,或是 Apple 會有什麼反應,就讓我們等著看吧。
近期留言