跳轉到

威爾克斯:EDSAC 與微程式的導師#

戰時的雷達工程師#

一九一三年生於英國达德利(Dudley)的莫里斯・威爾克斯(Maurice Wilkes),劍橋大學聖約翰學院數學出身,一九三六年進入劍橋卡文迪什實驗室。二次大戰爆發,他被徵調從事雷達——先在劍橋的防空研究,再到 TRE 電信研究機構與曼徹斯特。六年的戰時工程經驗塑造了他一生的工程哲學:真正的進步來自「快速做出能用的系統,再用它解決真實題目」。

電話裡聽到的轉捩點#

一九四五年威爾克斯回任劍橋數學實驗室主任(其時年僅三十二歲),第一個任務竟是修復一座被戰火耽誤已久的差分分析儀。但他很快聽說美國人在做電子計算機。一九四六年他赴美參加賓大摩爾學院的「電子數位計算機理論與設計講習」(Moore School Lectures),這場講習匯集了馮・紐曼、艾克特、莫奇利與二十多位英、美未來電腦先驅,是電腦科學史上第一場跨國技術傳播的盛會。

多年後威爾克斯回憶那個夜晚:「我與馮・紐曼同車,在車上他向我解釋儲存程式的概念……那晚我在床上躺了很久,腦中把這個想法翻來覆去,我意識到這就是電腦的未來——這是我一生中最重大的一夜。」回到劍橋後他決定:不買現成機器,自己動手造。

EDSAC:世界首台真正可用的儲存程式電腦#

威爾克斯的作法極為務實:他不追求最強性能,而追求「盡快能跑」。他借鑑 MIT 塔克(William Tuttle)的水銀延遲線記憶體設計(其實是他親赴戰後的 MIT 拿到的草圖),以最簡化的架構定案 EDSAC(Electronic Delay Storage Automatic Calculator)。一九四九年五月六日,EDSAC 首次成功執行程式——計算 \(2^{30}\) 以下平方數列表——成為世界最早投入日常運算服務的儲存程式電腦,比曼徹斯特 Mark I 更早提供正式用戶服務。劍橋的化學家、生物學家、經濟學家排隊送題目上機;最早的重量級用戶之一是數學家惠勒(David Wheeler)與後來的諾貝爾化學獎得主肯德魯(John Kendrew),蛋白質晶體結構學派在 EDSAC 上找到第一批數值計算夥伴。EDSAC 幾乎晝夜不停運作近十年。

一九五一年威爾克斯與 Wheeler、Gill 合寫《電子數位計算機程式設計》(Preparation of Programs for an Electronic Digital Computer),是史上第一本程式設計教科書,書中內含副程式、輸入碼(initial orders)與程式庫的概念,等於定義了「軟體」這門手藝的教學模板。

微程式:把控制做成「一層程式」#

一九五一年在曼徹斯特的一場會議演講中,威爾克斯提出了微程式(microprogramming)的構想:把控制單元的每一條機器指令,分解為一連串由唯讀記憶體取出的微指令(microinstructions),如同在硬體內部再寫一層程式。他坦承靈感來自戰時在 TRE 所見的「互連矩陣」。這個想法當時因成本考量而少有人採用,但到了 IBM System/360(採用微程式統一各型號的實作差異)問世後,微程式成為主機設計的標準做法,一直延續到今天的虛擬化與韌體架構中。

劍橋電腦實驗室的文化與等待時間#

一九五〇年代 EDSAC 的用戶必須透過打孔紙帶送題、排隊等候,威爾克斯團隊發展出排程與會計制度,甚至有研究生分析佇列行為;丹麥統計學家康拉森(Agner Krarup Erlang)一九〇九年在哥本哈根電話公司建立的排隊理論,數十年後在劍橋機房成了每天必須面對的實務——後來的作業系統排程與效能工程師常引用 Erlang C 型公式 \(W_q \approx \frac{\lambda^2}{\lambda\mu(\mu-\lambda)}\) 計算平均等待時間。一九八〇年劍橋衍生出微處理器設計公司 Acorn 與 Cambridge Ring 區域網路研究,都出自這條血脈。順帶一提:丹麥統計學家康拉森(Agner Krarup Erlang)一九〇九年在哥本哈根電話公司得到的排隊理論,數十年後在劍橋機房成了每天必須面對的實務——工程師排程論文常引用 Erlang C 公式 \(W_q = \frac{\lambda^2}{\lambda \mu(\mu-\lambda)}\) 來計算歸屬者平均等待時間。

長壽而乾淨的一生#

威爾克斯性格宗教般純樸、言談坦率。他一生得遍大獎——一九六七年 ACM 圖靈獎(得獎演說中他回顧軟體本質並引用達爾文式的比喻:事物的演化常早於其被理解的理論)、英國爵士。他於一九八〇年退休後仍活躍至百歲近前,二〇一〇年十一月逝於劍橋,享壽九十七歲。他晚年最常掛在嘴邊的一句自嘲是:「我們那一代的人真是幸運——我們是第一批能坐在鍵盤前,眼見自己寫下的想法真的跑起來的人。」