你所不知道的經典科技發展史:以前 CPU 如何設計出來的?

作者 | 發布日期 2018 年 03 月 01 日 8:45 | 分類 科技教育 , 科技趣聞 , 網路 follow us in feedly

從無到有(make something from scratch)一直是工程師的浪漫,例如自行調配出作業系統、自己寫系統核心等(如 Linux)。然而在家從無到有打造出「一顆」CPU 就沒聽過了吧?最近有一位 YouTuber 就在免焊萬用電路板(俗稱麵包板)上,以跳線實做出自己設計的 CPU。



▲ Paulo Constantino 自製的 CPU。(Source:影片截圖)

CPU(中央處理器),這麼一小顆神奇的高科技黑方塊,是現代電腦的核心元件,大多數電腦裝置都是 64 位元 CPU,技術層次之深、設計之複雜,要從無到有重新設計、打造出全新的 CPU 談何容易?1970 年代個人電腦剛萌芽時期的 Intel 8008、Zilog Z80 等 8 位元處理器相對單純原始,應該比較容易做得到吧?儘管如此,從無到有開發出一個新的 8 位元 CPU 也不是容易事。

不是 AMD、Intel、ARM 等大公司,自己打造 CPU 有可能嗎?YouTuber 保羅‧君士坦丁(Paulo Constantino )就向大家證明了這並非辦不到的事。他在自己的 Github 進行名為 Dreamcatcher 的完全自行開發電腦計畫──把電腦裡每個必要元件都重新設計、手工做出來。

對未受過訓練的人來說,君士坦丁的 CPU 作品看起來就像板子上一團又一團的電線。他的作品基於 74HC 系列的 CMOS 積體電路,插在麵包板上用電線跳接起來,他花了兩天時間畫電路圖、一個星期時間實際製作。目前還很簡陋,編寫程式需要用 DIP 開關進行,根據影片,目前只運作過簡單程式:從 0 記數到 255(用一排 8 個 LED 燈以二進位表示)、演奏音階、演奏走音的瑪莉兄弟主題曲。

簡陋歸簡陋,不過影片拍攝的時候是 8 位元,現在已經進化到 16 位元,一共擁有 256 道指令的指令集(instructions),現在還做好了簡單的 BIOS(基本輸入輸出系統),當然又是另外一團電線亂亂的麵包板。謝天謝地,終於可以輸出畫面到螢幕上了,君士坦丁的下一個目標就是再做好連接鍵盤的功能,這樣寫程式就方便多了,最終目標又能運作 MS-DOS 或 Minix 系統。

▲ Paulo Constantino「寫」程式的方法。(Source:影片截圖)

這樣用麵包版繞線做 CPU 原型簡直就像愚公移山,不過今日我們認為 PCB 印刷電路板印製、硬體描述語言(Verilog VHDL)、FPGA(可程式化的積體電路)技術是理所當然,而 1980 年以前,還沒有這些技術,CPU 原型就是如此打造。一位矢志從無到有重造輪子的自造者,自然要用古法來製作 CPU 原型囉。

▲ Z80 CPU 的原型。(Source:By Wikinaut (Self-photographed) [GFDL or CC BY-SA 3.0], via Wikimedia Commons

更多手工自製 CPU

▲ EASY-4。(Source:影片截圖)

看過君士坦丁的作品,我們可能以為全世界就只他一個瘋子,其實不然,這種手作 CPU 的非商業專案以前就有了,例如說一位日本老前輩在 1975 年時自製 16 位元 CPU 作品「EASY-4」就是其一,而且現在還在繼續改良。

▲ Magic-1 CPU。(Source:影片截圖)

看膩了一團又一團電線後,讓我們來瞧瞧 Homebrewcpu 自製的 16 位元迷你電腦 Magic-1,這個 CPU 體面多了,有個漂亮的外殼,設計也是採用 74 系列的積體電路,比起起步沒多久的 Dreamcatcher,Magic-1 更神了,它靠作者一人獨自開發了十年,最後完成完整電腦,系統時脈雖然只有 4.09 Mhz,但執行的系統可是多人多工的 Minix 2,不只會從 0 數到 255,還是一台連上網路的 server,其上運作了網頁伺服器提供這個網頁,還可用以下這個命令登入:

telnet magic-1.org 51515

帳號是「guest」、密碼為「magic」,假如你會 Unix 指令,可以好好探索一番,裡面也有經典程式如 Eliza、Conway’s Life 或 Hunt the Wumpus。如果你不嫌棄這台機器的龜速,上面也有 C 語言的編譯器可供開發程式。

更進一步,用積體電路在麵包版上繞繞線做 CPU 不算什麼,更有趣的,是完全用電晶體做自己的 CPU。巨無霸處理器──詹姆士‧紐曼(James Newman)的 Megaprocessor 專案就是這種計畫,該計畫目標打造巨大的「微」處理機,足足有一個房間那麼大。

它是一「顆」16 位元的 CPU,內含 4 萬個電晶體,光是一個 8 位元加法器的元件就有一個大人腳板那麼大,運作時脈達 20Khz。這個大傢伙看起來就好像 1950 年代的大型電腦還魂,也像一些老派科幻電影裡才會出現的電腦。

為何要重新發明輪子?

類似的計畫,在 YouTube 搜尋 homebrew CPU 可以找到各式各樣作品。然而說回來,這樣依古法重造輪子不是很浪費時間跟聰明才智嗎?這些人瘋了嗎?其實不然,比如說現代大大小小電機設備的基礎──馬達(電動機)我們已司空見慣了,但還記得國小高年級時,自然科學的課程要求每個小朋友用漆包線、鐵釘、磁鐵手工打造電動機嗎?其實大家小時候做的事情跟 19 世紀馬達的發明人做的事情沒兩樣。

現代美術的核心已是以電腦繪圖為主,然而美術基礎教育仍是從鉛筆、炭筆素描與水彩靜物和戶外寫生開始,為什麼學科要這樣安排,是因為透過手作創造早期經典,能最佳掌握一門學問的核心原理,例如說《大人的科學》雜誌也是在做類似的事。

今日的 CPU 已發展到內含數十億電晶體,一個高階語言程式原碼用編譯器生成可執行機器碼後,CPU 實際執行時的運作細節每每不完全為我們掌握,就像黑盒子,甚至 CPU 有可怕的設計漏洞我們也渾然不知使用許多年。

對資訊科學的教育而言,搞懂 CPU 的運作機制有其必要,以前述 Megaprocessor 專案來說,其實就是英國電算科技歷史中心(Centre for Computing History)的展品,由於全面使用電晶體實做,所以可把微處理機放大到每個單元──運算/邏輯單元(ALU)、通用暫存器、特殊暫存器、狀態機、IO 輸出入等,能分門別類呈現在眼前,輔以滿滿的 LED 燈顯示,得以即時觀測 CPU 如何執行程式,而不用跟哆啦 A 夢借縮小燈鑽到市售 CPU 裡。

Megaprocessor 是非常有教育意義的一台機器,那 Magic-1、Dreamcatcher 等較小型土法煉鋼做出的 CPU 呢?探究他們的開發者,不全然只是業餘嗜好,許多是軟體工程師、資訊科學系所的大學生,為了設計好的編譯器或純粹想搞懂 CPU 運作原理而實際打造。

當我們在說「為什麼我們做不出自己的引擎?」「為什麼我們做不出自己的 CPU?」抱怨基礎科技力低落時,是不是應該要自省:我們是不是問得多、做得少,做得不夠深入呢?以後看過教科書的理論,不妨親手做看看,先不管啥崇高的理念,Just for fun!

(首圖來源:shutterstock)

關鍵字: , , ,