1990 - ARM 授權模式:IP-based SoC 的誕生#
案件摘要#
1990 年 11 月,Acorn、Apple、VLSI Technology 三方合資成立 Advanced RISC Machines(ARM)。 ARM 不製造任何晶片,只授權架構與 RTL、每顆晶片抽權利金。 從此「指令集本身」成為可販售的商品,IP-based SoC 設計成為產業主流。
前因 -- 為什麼會有這個案子#
- Acorn 財務告急,卻握著低功耗王牌:Acorn 從 BBC Micro 的 6502 學到教訓——自製處理器是燒錢怪物。1983 年起 Steve Furber 與 Roger(Sophie)Wilson 設計 ARM,1985 年 4 月 26 日由 VLSI Technology 以 3 µm CMOS 製成第一批矽片,開機即通,不到 25,000 個電晶體,目標 4 MHz 實跑 8 MHz(約 4 MIPS),無 cache、無乘法器、無浮點,卻只有 44 條指令且每條都可條件執行。
- RISC 有了定量理論支撐:1980 Berkeley RISC-I、1981 Stanford MIPS 證明「硬體簡單化」能把複雜指令的解碼器成本轉成排程深度;Amdahl 定律給出換取點:
\[ S_{\text{speedup}} = \frac{1}{(1-s) + \dfrac{s}{E}} \quad\xrightarrow{\;s\to 1\;} E \]
改寫後的路徑佔比 \(s\) 接近 1、排程深度 \(E\) 放大到 5 以上,加速比就逼近 \(E\) ——這正是 1988 年 VLSI Technology 宣稱「ARM 達 100 MIPS/W、每 MIPS 售價低於 1 美元」的理論根據。 - Newton 的誘因:Apple 正為 PDA 尋找一個能在兩節電池下跑整天的 32 位元核心,Acorn 的 ARM 幾乎是唯一候選。
線索與推理 -- 數學式、程式、理論#
1. RISC 架構的三條鐵律#
| 原則 | 內容 | 代價與收益 |
|---|---|---|
| Load/Store 架構 | 只有 LDR/STR 能碰記憶體,運算指令全在暫存器中 | 需多幾個 LDR,但排程只需固定兩階段 |
| 固定 32 位元指令 | 編碼位置固定 → 解碼器像 ROM、可合成邏輯極簡 | 程式碼密度略輸 CISC( \(\Rightarrow\) 後來有 Thumb) |
| 大量暫存器且重疊 | ARM1 有 25 個 32 位元暫存器,部分與中斷模式重疊 | 中斷不必全部儲存,體積與延遲同步下降 |
理論定義(load/store 的資料流限制):
\[ R_i \leftarrow f(R_j, R_k) \quad\text{(運算)}\qquad\qquad R_i \leftrightarrow \text{mem}[a] \quad\text{僅限 load/store} \]
效能式子裡 RISC 的企圖非常直白:
\[ \text{CPI}_{\text{RISC}} \approx 1 \quad\Longrightarrow\quad T_{\text{CPU}} = \text{IC} \times \text{CPI} \times T_{clk} \]
只要解碼夠短, \(T_{clk}\) 就能壓到極低——省下的就是電池。
2. ARM 指令的位元佈局與即值編碼#
MOV r0, #0 ; 0xE3A00000 cond=1110, I=1, opcode=1101(MOV), imm8=0x00
MOV r1, #10 ; 0xE3A0100A imm8=0x0A
loop ADD r0, r0, r1 ; 0xE0800001 I=0 暫存器型,opcode=0100(ADD),Rm=r1
SUBS r1, r1, #1 ; 0xE2511001 opcode=0010(SUB),S=1 更新旗標
BNE loop ; 0x1AFFFFFE cond=0001(NE),imm24 = -2 指令(無條件自跳為 0xEAFFFFFE)
; r0 = 55
資料處理指令的固定欄位(立即值型):
\[ \underbrace{\text{cond}}_{31:28}\ \underbrace{00}_{27:26}\ \underbrace{I}_{25}\ \underbrace{\text{opcode}}_{24:21}\ \underbrace{S}_{20}\ \underbrace{Rn}_{19:16}\ \underbrace{Rd}_{15:12}\ \underbrace{\text{rot}}_{11:8}\ \underbrace{\text{imm8}}_{7:0} \]
只有 8 位元立即值,卻能表示任意 32 位元常數,靠的是右旋公式:
\[ \text{const} = \text{imm8} \gg (2\cdot\text{rot}) \;\big|\; \text{imm8} \ll (32 - 2\cdot\text{rot}) \]
OPS = ['AND','EOR','SUB','RSB','ADD','ADC','SBC','RSC','TST','TEQ','CMP','CMN','ORR','MOV','BIC','MVN']
def enc_mov(rd, imm): # MOV rd, #imm(rot 自動搜尋)
for rot in range(16):
v = ((imm & 0xFF) >> (2 * rot)) | (((imm & 0xFF) << (32 - 2 * rot)) & 0xFFFFFFFF)
if v == imm:
return 0xE3A00000 | (rot << 8) | (rd << 12) | (imm & 0xFF)
def enc_data(op, rd, rn, operand, imm=True, s=0): # imm=True 用 imm8,否則用暫存器編號
return (0xE0000000 | (int(imm) << 25) | (OPS.index(op) << 21) | (s << 20)
| (rn << 16) | (rd << 12) | operand)
def enc_branch(cond, target, pc): # B:0x1A000000 + (offset<<2),offset 以指令計
return (cond << 28) | 0x0A000000 | (((target - pc) >> 2) & 0xFFFFFF)
print(*(hex(w) for w in [enc_mov(1, 10), enc_data('ADD', 0, 0, 1, imm=False),
enc_data('SUB', 1, 1, 1, s=1), enc_branch(1, 0x100, 0x108)]))
# 0xe3a0100a 0xe0800001 0xe2511001 0x1afffffe
「幾乎每條指令都帶 cond 欄位」是一個漂亮的省碼技巧:把 if (a) x++; 編譯成 ADDEQ,省掉一次分支,減少管線停滯。
3. 授權模式:把 NRE 變成固定費,把風險外包#
\[ \text{ARM 收入} = \underbrace{L}_{\text{授權金(一次/每個核心版本)}} + \underbrace{r \cdot N}_{\text{權利金(每顆出貨晶片)}} \qquad \text{邊際成本} \approx 0 \]
- 架構授權(Architecture License):可自製相容核心(Apple、Qualcomm、Samsung、NVIDIA…)。
- 核心授權(RTL / hard macro license):取得可綜合 RTL 與 verification suite,摻進自己的 SoC。
- 對 ARM:零晶圓產能、零庫存、零良率風險,收入隨客戶量產複利式放大。
- 對客戶:省下的不只是矽光罩,更是 \(\text{NRE}\) 與上市時間;1990 年 ARM3 版一 MIPS 的售價號稱低到 1 美元。
4. Apple Newton 與 ARM6:第一份訂單#
- 1993/8/3 上市:Original MessagePad 採 ARM 610(ARM6 核心,20 MHz,4 MB ROM、640 KB SRAM、無快取),靠 4 顆 AA 電池撐約兩週——POWER 處理器做不到。
- 1994–96:MessagePad 120/130 改用 ARM 710a(25 MHz + 4 KB cache)。
- 1997:MessagePad 2000/2100 換上 StrongARM SA-110(162 MHz,與 DEC 共同開發),效能宣稱 925 MIPS/W。
- 結案判定:Newton 產品本身失敗(1998 年停產),但實驗證實了低功耗 RISC 在手捧裝置上的可行性;Apple 當年投入約 300 萬美元換得 30% 股權,1999 年持股降至 14.8%,可說數倍回收。教訓:Apple 當年放棄的架構,二十多年後用 M 系列親手取回。
5. 手機時代的壟斷#
- 1997 年 Nokia 6110 採用 ARM7TDMI(含 16 位元 Thumb),開啟手機 SoC 大量採用 ARM 的先例。
- 接著 ARM920T 進數位相機、ARM7TDMI-S 進 Feature Phone、ARM11 到 Cortex-A/M/R 進智慧型手機與微控制器。
- 今日旗艦 SoC(Snapdragon、Dimensity、Exynos、Apple A/M、AWS Graviton)全數建立在 ARM 指令集之上,累計出貨 ARM 核心超過 2,500 億顆——這是史上出貨量最大的 CPU 架構。
6. IP-based SoC:晶片變成積木清單#
\[ \text{SoC} = \text{CPU 核} + \text{GPU} + \text{NPU/DSP} + \text{記憶體介面} + \text{匯流排} + \text{I/O IP} \]
- AMBA 匯流排(1996):AHB/APB 後來到 AXI,讓不同供應商的 IP 能即插即用,是 IP 生態的交通規則。
- IP 市場自此分工:ARM(CPU)、Imagination(GPU)、CEVA(DSP)、Synopsys/Cadence(介面與實體 IP)。
- 配合 TSMC(1987) 的純代工,形成「IP 授權 → SoC 設計 → 晶圓代工」三段式供應鏈,今日 90% 的手機 SoC 皆出自這條鏈。
結案 -- 後果與影響#
- 證明「不製造晶片的晶片公司」可以統治產業:ARM 沒有任何晶圓廠,卻定義了全球行動運算。
- 授權模式被後來者抄襲:MIPS(1991 開放授權)、ARC(1996,El Tidjani)、以及開源 ISA 的 RISC-V(2010, UC Berkeley)——ARM 自己也在 2019 年把 ARMv8-A 開源,正是為了對抗這個開源浪潮。
- 架構中立化:一旦大家都寫 ARM 程式碼,開發者學習成本轉嫁給 Microsoft/Google/Qualcomm(授權費),這正是 2024 年 Arm 收購 NVIDIA 授權業務的關鍵。
- 資本市場見證:2016 SoftBank 以 320 億美元收購,2023 重新掛牌 Nasdaq;Apple Silicon(2020 M1)讓 RISC 首次正面挑戰 x86 的 PC 地盤。
- 一條血脈貫穿四十年: \(6502 \to\) BBC Micro \(\to\) Berkeley RISC \(\to\) ARM1 \(\to\) ARM 授權 \(\to\) Thumb \(\to\) RISC-V。
關鍵人物與文獻#
- Sophie Wilson(Roger Wilson)與 Steve Furber:ARM1 的架構與硬體設計者;Wilson 亦為 BBC Micro 的設計者。
- Hermann Hauser:Acorn 共同創辦人,ARM 獨立與早期募資的推手。
- David Patterson(Berkeley RISC, 1980)與 John Hennessy(Stanford MIPS, 1981):RISC 哲學奠基人,2017 年圖靈獎。
- Robin Saxby:ARM 首任 CEO(1990–2007),把授權模式推向全世界。
- S. Furber, ARM System-on-Chip Architecture;D. Seal, ARM Compiler for Embedded Applications。
- D. Patterson & D. Hennessy, Computer Organization and Design: The Hardware/Software Interface。
- Acorn Computers, “ARM Evaluation System” 新聞稿(1986-07-07);D. Jaggar (Ed.), RISC Architecture Design Handbook, ARM Ltd.