你所不知道的經典科技發展史:以前 CPU 如何設計出來的?
【Technews科技新報】從無到有(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) [GFDLorCC BY-SA 3.0],via Wikimedia Commons)
更多手工自製 CPUEASY-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!
(首圖來源:影片截圖)
如需獲取更多資訊,請關注微信公眾賬號:Technews科技新報
維基媒體協會理事、開源碼軟體創作者、音樂人,關心開放原碼軟硬體的發展,以及在創作上的應用。
Latest posts by Shoichi Chou未經許可,任何媒體、網站或個人不得複製、轉載、或以其他方式使用本網站的內容,違者必究。
※提供補助鼓勵不快樂的員工離職,亞馬遜:留著對員工公司都不健康
※硬式 OLED 慘,傳三星產能對半砍
TAG:TechNews |