跳轉到

1981 - CISC 與 RISC 之戰(兩條指令集哲學的對決)#

案件摘要#

1981 年,John Hennessy 與 David Patterson 在 UC Berkeley 與 Stanford 分別提出 RISC(精簡指令集電腦):

\[ \text{固定長度指令} + \text{少數定址模式} + \text{Load/Store 架構} \quad\Longrightarrow\quad \text{單週期執行、流水線易建}. \]

1990 年代初的實測結果:RISC 的性能超越 CISC——但 RISC 打输了市場戰爭。 CISC 藉 x86 的相容性護城河(見「1978-Intel8086.md」)稱霸 PC, RISC 則在行動與嵌入式(ARM)與 Apple(M 系列)另闢疆土。 這是電腦史最著名的「技術優於市場」的反例。

前因 -- 為什麼會有這個案子#

  • 1960s–1970s 硬體的「複雜度危機」: CISC 指令越加越多(大型機有數百條指令,如 IBM 360 的 200+ 條),微碼越來越大, 解碼器(decoder)佔用大量晶片面積與週期:
\[ \text{指令解碼延遲} \propto \text{指令複雜度} \quad\Longrightarrow\quad \text{速度受限。} \]
  • 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 定律):

\[ S(n) = \frac{1}{(1-p) + \frac{p}{n}} \quad \text{(p = 可平行比例,n = 流水線級數)}. \]
  • RISC:指令簡單 → 可流水線 5–8 級(FPGA/CPU),理想加速近 n。
  • CISC 傳統:變長指令 → 流水線化困難(早期 486 的 5 級已算極限)。 解法:微碼 + 快取 + 推測執行(1993 Pentium)——把 CISC 指令拆成微操作(µops):
\[ \text{CISC 指令} \xrightarrow{\text{微碼解碼}} \text{微操作序列} \xrightarrow{\text{超標量執行}} \text{結果}. \]

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)。

\[ \text{RISC 的勝利不在 PC,而在下一個計算平台}. \]

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
(Amdahl 定律顯示:並行比例 p 才是性能的真正瓶頸——流水線級數 n 增加到 16 時效率只有 45%。 RISC 的單週期指令讓流水線更有效率(勝 5.4x),但 CISC 用微架構(µop 快取 + 推測)追平。)

結案 -- 後果與影響#

  • 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。