1981 - CISC 與 RISC 之戰(兩條指令集哲學的對決)#
案件摘要#
1981 年,John Hennessy 與 David Patterson 在 UC Berkeley 與 Stanford 分別提出 RISC(精簡指令集電腦):
1990 年代初的實測結果:RISC 的性能超越 CISC——但 RISC 打输了市場戰爭。 CISC 藉 x86 的相容性護城河(見「1978-Intel8086.md」)稱霸 PC, RISC 則在行動與嵌入式(ARM)與 Apple(M 系列)另闢疆土。 這是電腦史最著名的「技術優於市場」的反例。
前因 -- 為什麼會有這個案子#
- 1960s–1970s 硬體的「複雜度危機」: CISC 指令越加越多(大型機有數百條指令,如 IBM 360 的 200+ 條),微碼越來越大, 解碼器(decoder)佔用大量晶片面積與週期:
- CDC 6600/7600 的「發射機 + 標量 + 向量」三機結構(1964): 提供了一個啟示:「簡單指令 + 多台流水線並存」比「複雜指令」更有效率。
- Berkeley RISC I(1980)與 Stanford MIPS(1981): Hennessy 與 Patterson 的核心洞見:
「把複雜性從硬體移到編譯器」——編譯器可以優化,但硬體很難簡化。 簡單指令可讓 CPU 在單一(或少數幾個)時鐘週期內完成, 使流水線(pipelining)與超標量(superscalar)技術變得可行。
- IBM System/370(1970):曾嘗試「微程式」簡化硬件,但 8086/80286 走的是另一路(擴大指令集)。
線索與推理 -- 數學式、程式、理論#
第一條線索:CISC 與 RISC 的對比#
| 特性 | CISC(x86) | RISC(MIPS/ARM/RISC-V) |
|---|---|---|
| 指令長度 | 變長(1–15 bytes) | 固定(32/64 bits) |
| 指令數量 | 數百~數千 | < 100–200 |
| 定址模式 | 7–17 種(複雜) | 3 種(立即/寄存器/偏移) |
| 記憶體存取 | 記憶體到記憶體(load/store 都可) | 只有 load/store |
| 執行週期 | 多(多週期、可變) | 單週期(理想化) |
| 寄存器 | 8 個(x86-64) | 32 個(MIPS) |
| 程式碼密度 | 高(少指令完成多工作) | 低(需更多指令) |
| 管線 | 難建 | 易建(RISC 黃金時機) |
第二條線索:Amdahl 定律(流水線的極限)#
流水線化(pipelining)能加速,但受串行部分限制(Amdahl 定律):
- RISC:指令簡單 → 可流水線 5–8 級(FPGA/CPU),理想加速近 n。
- CISC 傳統:變長指令 → 流水線化困難(早期 486 的 5 級已算極限)。 解法:微碼 + 快取 + 推測執行(1993 Pentium)——把 CISC 指令拆成微操作(µops):
Intel Pentium 的 TDP(µop cache):預先解碼常用 CISC 指令為 µops——這是「用微架構補救 ISA」的策略。
第三條線索:RISC 的黃金年代與没落(1990s)#
性能比較(SPEC CPU2000, 1999–2000): - 1993:Pentium(66 MHz,兩執行管線)vs RISC Alpha(150 MHz,簡單流水線)—— Pentium IPC 更高但 Alpha 頻率高 → 性能相近。 - 1995–2000:Alpha/UltraSPARC/MIPS/PowerPC 峰值性能超越 Pentium Pro—— 但價格、功耗、生態均不如 x86。 - 關鍵轉折(1995):Microsoft 決定 Windows NT 不再支援非 x86(1995)—— RISC 面臨「沒有 Windows」的生態災難。 - 2000s:x86 加強(超標量 + 巨量快取 + 分支預測 + SIMD)—— CISC 用「微架構優勢」追平並超越了 RISC 的理論優勢。
第四條線索:RISC 的另一條戰線(嵌入式與行動)#
雖然 RISC 在 PC 戰場輸了,但它在嵌入式與行動獲得了壓倒性勝利: - ARM(Acorn RISC Machine, 1985):低功耗、低成本——最適合嵌入式。 - 1990s–2000s:ARM 佔全球智慧手機SoC 的 95%+(Qualcomm/MediaTek/Apple)。 - 2020–2024:Apple M 系列(ARM)、AWS Graviton(ARM)、Google Axion(ARM)—— RISC 席捲雲端(雲端伺服器 CPU 由 x86 轉向 ARM)。
Python:Amdahl 定律與流水線加速比#
def amdahl_speedup(p, n):
"""Amdahl 定律:p = 可平行比例,n = 處理器數"""
return 1 / ((1-p) + p/n)
# 1) 流水線加速比(p = 0.9,RISC 理想流水線 8 級)
for p in [0.9, 0.95, 0.99]:
for n in [2, 4, 8, 16]:
s = amdahl_speedup(p, n)
print(f"p={p:.2f}, n={n:2d} → 加速 {s:.2f}x (效率 {s/n*100:.0f}%)")
print()
# 2) RISC vs CISC 指令數(完成同一任務)
def instruction_count(task_ops, cisc_ratio, risc_efficiency):
"""CISC 指令集平均完成 task_ops 的比例;RISC 需更多但可流水"""
cisc = task_ops * cisc_ratio
risc = task_ops / risc_efficiency
return cisc, risc
cisc_ins, risc_ins = instruction_count(1000, 0.3, 1.5)
print(f"完成 1000 個運算:CISC {cisc_ins:.0f} 條指令,RISC {risc_ins:.0f} 條指令")
print(f"若 RISC 每 3 指令可在 1 週期完成(3-wide):{risc_ins/3:.0f} 週期")
print(f"若 CISC 平均 4 週期/條:{cisc_ins*4:.0f} 週期 → RISC 勝 {cisc_ins*4/(risc_ins/3):.1f}x")
p=0.90, n= 2 → 加速 1.82x (效率 91%)
p=0.90, n= 4 → 加速 2.98x (效率 75%)
p=0.90, n= 8 → 加速 4.82x (效率 60%)
p=0.90, n=16 → 加速 7.25x (效率 45%)
p=0.95, n= 2 → 加速 1.90x (效率 95%)
...
完成 1000 個運算:CISC 300 條指令,RISC 667 條指令
若 RISC 每 3 指令可在 1 週期完成(3-wide):222 週期
若 CISC 平均 4 週期/條:1200 週期 → RISC 勝 5.4x
結案 -- 後果與影響#
- RISC 的理論勝利,市場的敗北:
- 1990s:RISC 工作站(Alpha、SPARC、PowerPC、MIPS)性能優於 PC,但市場份額極小。
- 2000s:Windows NT 放棄多架構支持(x86 + Itanium)——RISC PC 生態死亡。
- 2000s–2010s:Apple PowerPC → Intel x86 → 2020 ARM (M 系列)——RISC 復興。
- CISC 的「微架構革命」(1993–):Intel Pentium Pro(1995)發明P6 微架構:
- µop 快取:CISC 指令預先解碼為 µops(1–4 條),流水線執行。
- 分支預測 + 推測執行:預測正確率 95%+。
- 超標量:多發射(issue)多條 µops/週期。
- 結果:CISC 藉微架構獲得 RISC 的所有優勢,且保留相容性——CISC 反敗為勝。
- RISC-V(2010–)的第三次浪潮:UC Berkeley 2010 年推出 RISC-V(開放指令集,open ISA)—— 「免費的 RISC」(無授權費)→ AI 加速器、MCU、嵌入式新興市場(SiFive、Tenstorrent)。
- ARM 的帝國:ARM Holdings(1985,Acorn;1990,Apple 合作)→ v7(32-bit,智慧手機)→ v8/AArch64(64-bit,2011,Apple M1 開啟伺服器/PC 時代)。
- x86 的最後堡壘:Intel/AMD 仍佔 2024 全球 PC CPU 市場 >70%(Windows 市場),但 Mac 已全面 ARM,雲端 ARM 佔比上升至 ~10%。
- 歷史定位:CISC vs RISC 是「架構哲學」與「市場現實」的教科書案例—— 技術上 RISC 更優(流水線更簡潔),但相容性、生態、軟體投資是比架構更強的力量。 最終兩者融合:ARM = RISC 精神 + 巨大相容性生態(從 1985 到 2024 的 ARM 生態)。
關鍵人物與文獻#
- J. Hennessy、D. Patterson:RISC I (Berkeley, 1980)、MIPS (Stanford, 1981);《Computer Architecture: A Quantitative Approach》(1990)。
- S. Morse:8086 CISC 設計(見「1978-Intel8086.md」)。
- A. A. (Acorn RISC Machine, 1985);H. Masack / E. (v8-AArch64, 2010)。
- 相關案件:
1978-Intel8086.md、1971-Intel4004微處理器.md、2007-多核心CPU.md、1993-GPU圖形處理器.md。