跳轉到

1971 - Intel 4004 微處理器(單晶片 CPU)#

案件摘要#

1971 年 11 月 15 日,Intel 推出 4004——世界上第一顆商用單晶片微處理器:

\[ 2300 \text{ 顆電晶體} \quad 740\ \text{kHz} \quad 4\ \text{ bit} \quad \text{體積如豆} \quad \text{每顆 \$265. \]

它把中央處理單元(CPU)——算術邏輯單元、控制單元、暫存器—— 全部塞進一片積體電路(見「1958-積體電路.md」):

\[ \text{一顆晶片} = \text{完整的 CPU(算術 + 控制 + 記憶體介面)}. \]

4004 只比當時的運算器(calculators)稍強——但它開啟了微處理器時代: 今日全球 90 億顆 iPhone,核心都是 4004 的直系後裔。

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

  • 電子計算器晶片的誕生(1969–1970): Intel 的工程師 Federico Faggin(來自義大利,1968 加入)主導設計了 4004 的前身:
  • Biacl(基於 AL 補數的 2 位元運算器,1969):4 顆 IC 組成的小型運算器。
  • 2201(AM930 顯示器驅動 + 基數翻譯器,1970):$100 顆 IC 的獨立小晶片。

$$ \text{Biacl(1969)} + \text{顯示器驅動} \ \Longrightarrow \ \text{4004(1971)}. 關鍵商機:BOM(物料清單)成本降至 \(150**(從\) 600)——Intel 看到電子計算器市場的龐大潛力。 - Busicom(商用合約): 1969 年,日本 Busicom 公司委託 Intel 設計 5 顆晶片(業務委託費 $100,000): - 要求:1 顆晶片完成 n 粒電子計算器所需的全部功能。 - 關鍵設計決策(Federico Faggin + Ted Hoff + Marcian Hoff): 1. Marcian Hoff(軟體背景,轉硬體):提出「微程式(microprogramming)」—— 用 ROM 儲存指令執行序列,簡化硬體設計:不需複雜的硬接線控制。 2. Faggin(Silicon Gate, 1970,關鍵製程突破):發明 矽閘技術(Silicon Gate Technology)—— 用多晶矽(polysilicon)取代金屬鋁做閘極: - 製程步驟從 4 層遮罩 → 2 層遮罩(製造簡化 50%); - 電晶體密度提高 2 倍。 3. 架構:4-bit 資料路徑 + 16 顆 4-bit 暫存器(堆疊結構**)→ 支援 BCD(十進位編碼)運算。

線索與推理 -- 數學式、程式、理論#

第一條線索:4 位元堆疊架構(4004 的核心設計)#

4004 是4-bit 機器,運算元以 4 位為單位(BCD 十進位運算): - 16 個 4-bit 暫存器:索引 0–15,採堆疊式存取(LIFO / TOP 指針)。 - 4 個 16-bit 暫存器:PC(程式計數器)、SP(堆疊指標)、AC(累加器)、暫存指令暫存器(IR)。 $$

\text{定址模式:} \quad \text{Register addressing} + \text{Immediate} + \text{Memory (12-bit addr)}.

$$ 這是堆疊式虛擬機(如 6502 的 S 堆疊、x86 的 SP)的開端—— 4004 的堆疊設計,後來成為 Forth、Java JVM 的技術源頭。

第二條線索:微程式控制(Microprogramming,Hoff 的核心創新)#

傳統 CPU 控制:把「每條指令執行步驟」用硬接線組合邏輯(combinational logic)實現——改指令集要改硬體。 4004 採用微程式: $$

\text{指令} \xrightarrow{\text{解碼}} \text{微位址} \xrightarrow{\text{ROM 讀出}} \text{微指令} \xrightarrow{} \text{控制訊號}.

\[ - **控制 ROM 存放微指令序列**——改行為只需改 ROM(韌體),**不需改硬體**。 - 這是**軟體定義硬體**的第一次成功嘗試——後來 IBM 360(1964)、x86 微碼都用此技術。 - **架構權衡**: \]

\text{軟體定義(微碼)} \quad\text{vs}\quad \text{硬體定義(RISC,直接執行)} \quad\Longrightarrow\quad \text{RISC 之戰(1981,見下篇)}.$$

第三條線索:Intel 4004 指令集與性能#

4004 有 46 條指令(1 字元 + 2 字元 + 3 字元格式)、12 條輸入/輸出埠: | 規格 | 4004 (1971) | 現代 CPU (2024) | |------|-------------|-----------------| | 電晶體 | 2300 | ~200 億 | | 時鐘 | 740 kHz | 5 GHz | | 位元寬 | 4 bit | 64 bit | | IPC(指令/週期) | ~0.5 | 4–6 | | 暫存器 | 16 × 4-bit | 32 × 64-bit 向量 | | 製程 | 10 \(\mu\text{m}\) PMOS | 3 nm FinFET/GAA | 4004 vs 現代 CPU:時鐘只慢 6700 倍,但電晶體多 10 億倍—— 摩爾定律 + 投機執行 + 微架構優化的聯合成果。

Python:4-bit 堆疊機模擬(4004 風格)#

class Stack4Bit:
    """4004 風格的 4-bit 堆疊機"""
    def __init__(self):
        self.regs = [0]*16        # 16 個 4-bit 暫存器
        self.acc  = 0            # 累加器 (4-bit)
        self.TOP  = 0            # 堆疊指標
        self.pc   = 0
        self.sp   = 0

    def wrap(self, v):           # 4-bit 溢出
        return v & 0xF

    def push(self, val):
        self.regs[self.TOP] = self.wrap(val)
        self.TOP = self.wrap(self.TOP + 1)

    def pop(self):
        self.TOP = self.wrap(self.TOP - 1)
        return self.regs[self.TOP]

    def push_psw(self):          # PUSH PSW(累加器入堆疊)
        self.push(self.acc)

    def add(self):               # ADD:ACC + TOP → ACC
        b = self.pop()
        self.acc = self.wrap(self.acc + b)

    def sub(self):               # SUB
        b = self.pop()
        self.acc = self.wrap(self.acc - b)

    def clc(self): self.acc = 0

# 示範:計算 (5 + 3) - 4 = 4(BCD 加法用 4-bit 模擬)
cpu = Stack4Bit()
cpu.push_psw()          # PUSH PSW(存 0)
cpu.acc = 5; cpu.push(3) # 載入 5(ACC),push 3
cpu.add()               # ACC = 5+3 = 8
cpu.push(4)             # push 4
cpu.sub()               # ACC = 8-4 = 4
print(f"結果 ACC = {cpu.acc}(5+3-4 = 4 ✓,4-bit 堆疊機)")

# 4-bit 溢出示範(BCD 加法)
cpu2 = Stack4Bit()
cpu2.acc = 9; cpu2.push(8)
cpu2.add()
print(f"9+8 (4-bit) = {cpu2.acc}(BCD 應為 17,用 4-bit 需進位旗標)")
輸出:
結果 ACC = 4(5+3-4 = 4 ✓,4-bit 堆疊機)
9+8 (4-bit) = 1(BCD 應為 17,用 4-bit 需進位旗標)
(4-bit 堆疊機:ACC + TOP → ACC。9+8 = 17,用 4-bit 需進位旗標 → 輸出 1—— 正是當時小型 IC(如 1971 電子計算器)處理 BCD 十進位算術的真實挑戰。)

結案 -- 後果與影響#

  • 微處理器時代的開端(1971–):4004 → 8008(1972)→ 8080(1974)→ 8086(1978,x86 起點,見「1978-Intel8086.md」) → 全系列至今(Core i9,Meteor Lake/Meteor Lake, 2023)。
  • PC 革命(1977–):Altair 8800(1975,MITS,採用 Intel 8080)→ Apple II(1976)→ IBM PC(1981)→ PC 成為 20 世紀末最重要的計算平台。
  • 「單晶片 = 電腦」的哲學:4004 證明 CPU 可以作為通用元件出售—— 從「組裝機器」變成「選擇元件」:這一轉變創造了整個半導體產業(2024 年全球微處理器市場 $800 億+)。
  • Intel 的矽霸權(1971–2020):Intel 憑 4004 崛起,1980s 佔 x86 市場 90%+, 直至 2020s 被 AMD/NVIDIA/Apple(M 系列 ARM)瓜分。
  • 微程式 → 韌體生態:Intel 微碼、微軟 BIOS/UEFI(1980s–)→ 現在的韌體更新機制—— 「軟體定義硬體」的傳統從 1971 延續到今天的 BIOS/UEFI、Microcode 更新。
  • 歷史定位:4004 是「從電腦時代到半導體時代」的樞紐——它把電子計算機從「研究機構的怪物」變成「人人可買的元件」。

關鍵人物與文獻#

  • M. Hoff(Ed. Hoff):微程式架構設計 (1969);F. Faggin:Silicon Gate + 4004 實作(1970–1971); R. Noyce:Intel 共同創辦人 + 管理;S. Morse:4004 設計團隊。
  • 相關案件:1958-積體電路.md、1978-Intel8086.md、1981-CISC與RISC之戰.md。