跳轉到

1971 - Intel 4004:世界第一顆微處理器#

案件摘要#

1971 年 11 月,Intel 推出 4004——世界第一顆商用微處理器,2300 個電晶體把整顆 CPU 塞進一塊晶片。這本是日本計算機公司 Busicom 的一紙委託案,卻意外成為電腦史的分水嶺。

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

  • 1969 年,日本 Busicom 委託 Intel 為其新式計算機設計 12 顆專用晶片。
  • 原方案(Masatoshi Shima 草擬)是 12 顆固定功能晶片,每顆只做一件事。
  • Intel 的 Ted Hoff 看了方案後提出反提案:與其做 12 顆專用晶片,不如做一顆通用處理器 + RAM + ROM,用軟體定義功能——這樣晶片數更少、成本更低。
  • Federico Faggin 領導晶片設計,在矽閘(silicon-gate)製程上把 Hoff 的架構變成物理現實;Shima 後來加入 Intel 負責邏輯驗證與 ROM 微碼。
  • 商業插曲:合約寫明 Intel 為 Busicom 獨家生產。1971 年 Busicom 財務困難,Intel 以 6 萬美元買回晶片的所有銷售權——史上最划算的交易之一。

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

1. 規格:2300 電晶體、740 kHz#

項目 數值
電晶體數 2,300(10 μm 製程)
時脈 740 kHz(最慢版 500 kHz)
字長 4 位元
指令集 46 條指令
定址 640 位元組 RAM 直接定址(4 KB 程式記憶體)
封裝 16 腳 DIP

計算機晶片組共四顆:4004(CPU)、4001(ROM)、4002(RAM)、4003(移位暫存器 I/O)。

2. 微處理器 = CPU on a chip 的架構革命#

1971 年前,CPU 是一整片機櫃(minicomputer)或數十顆 MSI 晶片。4004 的革命在於馮紐曼架構的單晶化:

\[ \text{CPU} = \underbrace{\text{PC} + \text{IR} + \text{ALU} + \text{Registers}}_{\text{全部塞進 2300 電晶體}} \]

它是一台真正的電腦:取指(fetch)→ 解碼(decode)→ 執行(execute)→ 寫回(writeback)的循環,用軟體定義行為。這意味著: - 功能由軟體決定:同一顆晶片,換程式就是計算機、控制箱或計數器。 - 規模經濟:單一晶片大量生產 → 摩爾定律的曲線從此有火車頭。 - 嵌入式的誕生:電腦第一次可以藏進任何機器裡。

3. 取指-解碼-執行週期(4-bit 觀點)#

4004 的一個機器週期含 8 個時相(A1–A3、M1–M2、X1–X3),4-bit 匯流排上一次傳半個位元組,所以 8-bit 位址要分兩次送。指令長度 1 或 2 位元組,基本指令 8 個週期完成。

4. 8008 / 8080 / x86 譜系#

4004 (1971, 4-bit, 2.3k) ──┐
8008 (1972, 8-bit, 3.5k) ──┤─ CTC 委託案衍生
8080 (1974, 8-bit, 6k)  ─── Altair 8800 → 微軟/Apple 起點
8086 (1978, 16-bit, 29k) ── x86 誕生 → IBM PC (1981)
80386 (1985) → Pentium (1993) → Core → 現代 x86-64
- 8008 來自另一個流產委託案(CTC Datapoint 2200),8080 由 Faggin 離開 Intel 前規劃、Masatoshi Shima 設計。 - 8080 催生了 Altair 8800(1975),蓋茲與艾倫為它寫了 BASIC——微軟的起點。 - 8086 的 x86 指令集至今(2020s)仍是 PC 伺服器主流——指令集的長壽遠超設計者的想像。

5. 嵌入式的誕生#

4004 證明「通用處理器 + 軟體」比「專用邏輯」便宜後,嵌入式系統爆發:家電、汽車、工業控制、玩具。後織者如 Intel 8048、8051(1980)、Microchip PIC、ARM Cortex-M——今日全球每人平均擁有數十顆嵌入式處理器。

6. Python 模擬 4004 指令週期概念(簡單 CPU 模擬器)#

# 極簡 4-bit CPU 模擬器:展示 fetch-decode-execute 循環
REG = 16  # 16 個 4-bit 暫存器(含累加器)

class CPU4004Like:
    def __init__(self, program, data):
        self.rom = program          # 程式(指令列表)
        self.ram = data             # 資料記憶體
        self.reg = [0] * REG        # R0..R15
        self.pc = 0                 # 程式計數器
        self.acc = 0                # 累加器(R0)
        self.halted = False

    def fetch(self):
        instr = self.rom[self.pc]
        self.pc = (self.pc + 1) % len(self.rom)
        return instr

    def decode_execute(self, instr):
        op, arg = instr[0], instr[1]
        if   op == "LD":  self.acc = self.ram[arg]        # 載入
        elif op == "ST":  self.ram[arg] = self.acc        # 儲存
        elif op == "ADD": self.acc = (self.acc + self.ram[arg]) & 0xF  # 4-bit 加法
        elif op == "SUB": self.acc = (self.acc - self.ram[arg]) & 0xF
        elif op == "JNZ":                                   # 條件跳躍
            if self.acc != 0: self.pc = arg
        elif op == "HLT": self.halted = True

    def run(self, max_cycles=1000):
        cycles = 0
        while not self.halted and cycles < max_cycles:
            instr = self.fetch()              # 取指
            self.decode_execute(instr)        # 解碼 + 執行
            cycles += 1
            print(f"cycle {cycles:3d}: {instr}  acc={self.acc:04b} pc={self.pc}")
        return cycles

# 程式:把 RAM[10] 加 3 次,結果存回 RAM[11]
program = [("LD", 10), ("ST", 11), ("LD", 11), ("ADD", 10),
           ("ST", 11), ("LD", 11), ("ADD", 10), ("ST", 11), ("HLT", 0)]
data = [0]*16; data[10] = 2

cpu = CPU4004Like(program, data)
n = cpu.run()
print(f"halted in {n} cycles; RAM[11] = {cpu.ram[11]} (expect 6, mod 16)")

這個玩具模擬器展現了 4004 的核心概念:一個固定週期循環 + 可編程指令集 = 通用計算。真正的 4004 還有微碼 ROM、8 相時脈與 4-bit 匯流排名雙工等細節,但架構精神完全相同。

7. 頻率與效能的小算術#

4004 @ 740 kHz、每指令 8 週期 → 約 92.5 kIPS(千指令/秒)。對照現代 CPU(數十 GFLOPS):

\[ \frac{10^{10}}{9.25\times10^4} \approx 10^5 \times \text{提升} \]

五十年百萬倍——正是摩爾定律與架構進步的疊加。

結案 -- 後果與影響#

  • 1972 年 8008、1974 年 8080、1978 年 8086(x86)、1981 年 IBM PC——個人電腦時代的物種起源都可追溯到 4004。
  • Faggin 離開 Intel 創辦 Zilog(Z80);Shima 加入 Zilog 再戰;Intel 則靠 8080/8086 成為半導體霸主。
  • Busicom 計算機本身在 1970 年代破產,但它點燃的火燒了半個世紀。
  • 結案評語:這案的真相是——最好的產品來自被放棄的委託案。Hoff 的「不如做一顆通用的」這句話,把計算變成了像電力一樣隨手可得的商品。

關鍵人物與文獻#

  • Federico Faggin:4004 晶片設計主導者,矽閘技術關鍵人物,後創辦 Zilog。
  • Masatoshi Shima(嶋正利):Busicom 方案草擬者,後加入 Intel 完成 4004 邏輯與微碼。
  • Ted Hoff(Marcian Hoff):提出「通用處理器」反提案的架構構想。
  • F. Faggin, M. E. Hoff, S. Mazor, M. Shima, "The history of the 4004," IEEE Micro, 1996.
  • Intel 4004 datasheet (1971); Original Busicom contract (1969–1971 buyback).