1971 - Intel 4004 微處理器(單晶片 CPU)#
案件摘要#
1971 年 11 月 15 日,Intel 推出 4004——世界上第一顆商用單晶片微處理器:
它把中央處理單元(CPU)——算術邏輯單元、控制單元、暫存器—— 全部塞進一片積體電路(見「1958-積體電路.md」):
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{控制訊號}.
\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 需進位旗標)
結案 -- 後果與影響#
- 微處理器時代的開端(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。