1987 John Cocke —— 無名的超級最佳化者#
「圖靈獎史上的隱形人:他沒有寫出知名的書、沒有創立學派, 卻同時是編譯器最佳化、RISC、語音辨統計方法的三位生父之一。」
案件檔案#
| 項目 | 內容 |
|---|---|
| 得主 | John Cocke (1925–2002) |
| 得獎理由 | 編譯器設計與大型系統架構的理論、實作與影響 |
| 關鍵詞 | FORTRAN 編譯器、RISC、register allocation |
前因#
1950s 末 IBM 組織 FORTRAN 最佳化編譯器(Backus 1977 案)。 Cocke 作為數學出身的系統工程師介入,追問:編譯器產生的 碼,能比人手寫的更快嗎?如何系統化?
線索與推理#
線索一:資料流分析(1970,與 Allen)#
把程式控制流化為圖,在圖上做不動點迭代求出每個點的 活性/到達定義:
live-in[n] = use[n] ∪ (live-out[n] − def[n])
反覆迭代直到不變(不動點)——格論與偏序的收斂性保證正確
全域暫存器配置(graph coloring allocation,與 Chaitin) 把暫存器分配化為圖著色:變數衝突圖的著色數 ≤ 暫存器數則 零溢出——把 1985 案的 NP 完全問題轉化為實用的啟發式。
線索二:RISC 的思想實驗(1970s,IBM 801 專案)#
對指令使用頻率的偵查發現:80% 的執行時間在 20% 的簡單 指令上;複雜指令(微碼實作)反而拖慢一切。結論:
CISC 假設:硬體多做事 → 程式更快 ✗(偵破)
RISC 原理:指令簡單固定長度 + 暫存器多 + 編譯器排程
→ 單週期執行、管線順暢、頻率上限高
IBM 801 計畫(1975–80)因屬內部機密未發表;伯克利 Patterson 與史丹佛 Hennessy 各自重造(2017 案)而揚名。
線索三:統計語音辨識的無心插柳#
Cocke 在 IBM 推動以統計 + 大量語料取代規則式語音辨識—— 間接孕育了日後 IBM 的統計機器翻譯與 NLP 學派(2018 案 的遙遠前奏)。
理論評析#
Cocke 的統一方法論:測量驅動的簡化。無論指令集、 暫存器、還是語音規則,先測量真實使用分佈,再砍掉 貢獻度低的複雜性。這正是 80/20 法則的工程化身。
後果#
- 現代編譯器(LLVM、GCC)的資料流/著色配置骨架源自其案。
- RISC 思想經 POWER、SPARC、ARM 一路統治行動裝置, 最终連 x86 內部也 RISC 化(微碼分解為類 RISC 微指令)。
關聯案件#
→ 1977-John-Backus與FORTRAN高階程式語言、2017-Hennessy-Patterson與RISC及量化設計、2020-Aho-Ullman與編譯器理論