7.2 雙核心與多核心(Multi-Core)的範式轉移:「不再追求跑得更快,而是追求跑得更多」#
2005 年 5 月,英特爾的公關稿寫道:「我們將停止追逐頻率。」——這一行字,宣判了三十年「單核效能拜物教」的終結,也把難題甩給了全世界軟體工程師。
一、第一顆雙核心的兩條路#
2005 年,雙核心同時從兩條路徑誕生:
- AMD Athlon 64 X2(2005.4):原生雙核——兩個核心在同一塊矽上、共用記憶體控制器,架構乾淨;
- Intel Pentium D(2005.5):「雙核」其實是兩顆 Pentium 4 壓在同一封裝內,各自有前端匯流排、互相搶頻寬——更像「兩顆晶片貼在一起」。
AMD 以「真雙核」行銷打的英特爾抬不起頭,這是 AMD 史上最風光的一段(2006 年伺服器市場份額一度逼近 25%)。但英特爾真正的翻盤武器在後面:Core 架構(2006)——把為筆電設計的省電 Pentium M 放大,追求每瓦效能(IPC),第一代雙核 Core 2 Duo 的功耗只有 Pentium D 的一半而效能更強。「省電架構打敗高頻架構」,功耗牆後的第一場大戰就此定調。
二、免費午餐之後:並行程式的難題#
硬體給了 8 核、16 核、128 核,但軟體工程師很快發現:程式不會自動變快。Amdahl 定律(1967)澆了冷水:
其中 \(p\) 是可平行化的比例。若 95% 可平行、5% 必須序列:
就算給你無限核心,最多快 20 倍。 這個殘酷的數學讓「多核心」絕不會是免費的。於是軟體工程界被迫進行三十年一遇的範式轉移:
- 執行緒與鎖的普及:pthread、Java concurrency——以及隨之而來的死鎖、競態條件、難以重現的 bug;
- 函數式程式復興:「不可變資料」避免鎖——Haskell、Scala、Clojure 從學院玩具變成工業選項;
- GPU 與資料平行化:圖形以外的通用運算(GPGPU)把「容易平行」的工作卸載出去(第十一章);
- 記憶體一致性模型的公共課:為何 x86 的 TSO 與 ARM 的弱一致性讓同一支程式結果不同——併發程式設計從邊角知識變成核心素養。
三、單核效能還有救嗎?——微架構的持續內捲#
多核心時代,單核效能並未停止,只是成長放緩到每年 1–3%(對比 1980 年代的 50%)。工程師榨取的剩餘手段:
- 快取戰爭:L3 快取從 1MB 膨脹到 100MB+(AMD 3D V-Cache 用 3D 堆疊 DRAM 於遊戲 CPU);
- 推測執行深化:更寬的亂序引擎(現代旗艦一週期可發射 8–10 個微操作);
- 專用加速單元:AVX-512 向量、加密指令、AI 指令集(AMX/NEON)——「對特定工作特化」;
- 異質整合:核心本身異質化(效能核 P-core + 效率核 E-core),Intel Alder Lake(2021)與 Apple M1(2020)都走此路。
四、經濟與社會的重新分配#
- 競爭格局重置:英特爾靠 Core 架構重新拉開差距;AMD 在 2006–2014 年低迷後,以 Zen(第九章)東山再起——多核時代重新開賽;
- 伺服器的定價革命:雲端按「核心・小時」計費,多核心 CPU 直接成為雲端經濟的計量單位;
- 程式員的角色重估:工程師的薪資溢價開始向「懂平行與分散式」傾斜——「免費午餐結束了」(Herb Sutter, 2005)這篇著名文章成為一代軟體工程師的集體記憶。
五、文化切片:單核時代的浪漫終結#
老一代玩家至今懷念「超頻」年代:一塊主機板、一桶液氮,就能買到百分點的效能。多核心時代終結了這種個人英雄主義——效能不再是「買更快的一顆」,而是「把工作切給更多人」。這種集體主義式的效能觀,在思想史上有趣的迴響:它與網際網路、與開源軟體的「群體協作」範式同步成長。
歷史因果鏈:功耗牆 → 真假雙核之爭 → Core 架構確立「每瓦效能」王道 → Amdahl 定律的軟體難題 → 併發程式範式轉移 → 快取與異質化的內捲。當「核心數」成為新的行銷數字(重演 MHz 劇本),真正的決戰轉移到了另一個戰場:手機與省電——下一章的 ARM 逆襲。