純手工打造CPU

Image
看看上面這張圖,究竟是個什麼東東呢?不過是個大學生用的實驗儀器吧。啊哈,可能細心的朋友已經看到這個東西下面的“Magic-1 Homebrew CPU”字樣了。

難道這真的是一個CPU?請趕快閉好你張大了的嘴,我來告訴你答案:的確是!這是一個名字叫Bill Buzbee的朋友用200多塊74系列的TTL整合電路透過純手工製造的CPU


Magic-1是一個名叫Bill Buzbee的傢夥手工打造的CPU,也是基於這個CPU製造的電腦的名字。“制作Magic-1的念頭是在一次午餐中冒出來的”,Buzbee說。Buzbee是一位編譯器作者,但他為自己不熟悉CPU的實際工作而感到鬱悶,因此想到動手來親自作一個CPU。Buzbee在大學時候沒有學過任何電子類的課程,而且對於晶體管、電阻、電容等也隻是一知半解。他的朋友Ken想到有一本老雜誌曾經介紹過如何使用TTL整合電路來制作極其簡單的CPU,並推薦他去看一看。一周後,Buzbee找到了這些文章,並全部讀了一遍。然後在下一次午餐上,Buzbee對Ken說起決定自己打造一個CPU,Ken說:為什麼不呢?於是,Bill Buzbee的Magic-1項目拉開了序幕--

2001年12月6日 Buzbee開始寫項目日誌,並為自己制定了一張艱難但還算樂觀的日程表

2001年12月18日 完成錯誤處理和中斷機制的基本設計

2001年12月29日 完成微代碼的第一輪設計

2002年1月6日 完成了Magic-1模擬器,可以對調用/返回指令序列進行跟蹤

2002年1月8日 模擬了Fibonacci函數,並豐富了軟體接口約定

2002年1月13日 Magic-1彙編器(qas)成形

2002年1月18日 決定是選擇大尾數法還是小尾數法表示整數的位元組順序,最終選擇了大尾數法

2002年2月28日 在模擬器中完成了頁面錯誤機制

2002年3月9日 決定使用普通電線來進行連線

2002年6月3日 對指令集結構進行了意義重大的改變

2002年6月4日 用C語言編寫了Fabonacci程式並編譯為Magic匯程式設計序

2002年6月22日 改用分立的數據和代碼地址空間

2002年6月25日 設計用於多進程的上下文環境切換

2002年7月12日 完成對微代碼的重寫工作

2002年8月13日 放棄對rotate指令的支援

2002年9月11日 上了Gil Smith的一堂電子電路課程

2002年9月22日 從eBay上買了板材和外殼

2002年的其他日子 向Ken Sumrall請教如何使用暫存器,從他那裏學到了Ohm規則

2003年3月30日 從Jhon Doran的D16/M中得到了靈感,完成了ALU/暫存器板的結構

2003年4月13日 完成控制板的結構

2003年4月14日 思考前面板的結構

2003年5月3日 第一輪結構設計完畢

2003年5月6日 將構建環境從Linux一直到Windows

2003年5月16日 構思新的Magic-1模擬器

2003年5月27日 在新的模擬器上成功運行了Fibonacci程式

2003年6月3日 完成了新的彙編器功能

2003年6月21日 Magic結構驗證和測試用例達到了100%覆蓋率

2003年6月23日 Alistair Roe透過email提出了Magic-1外殼的構想

2003年8月3日 將LCC(C編譯器)一直到了Magic上

2003年8月10日 在模擬器上成功地實現了Fibonacci程式的C語言版本 (這一天是Buzbee的生日)

2003年8月27日 從David Conroy那裏學到了信號完整性

2003年9月18日 決定使用普通的帶皮電線進行連接(奇怪,前面已經決定一次了)

2004年1月3日 完成了全部的設計工作,開始制作

2004年1月18日 Magic-1有了第一次心跳

2004年1月26日 前面板完成

2004年2月9日 記憶體板完成

2004年2月20日 EPROM子板完成

2004年2月26日 設備板完成

2004年3月7日 微代碼序列成功運轉

2004年3月9日 執行了第一條指令

2004年3月19日 控制板完成

2004年4月8日 嘗試發佈前期的工作

2004年4月12日 ALU/暫存器板完成;同日被告知,發佈嘗試失敗

2004年4月13日 Magic-1成功運行了Fibonacci程式!

2004年4月25日 Dave Conroy的測試會話發現了不真實的記憶體碎片

2004年5月3日 Magic-1能“說話”了

2004年5月8日 運行“Sieve of Erasthones”基準

2004年5月16日 完成了IDE接口,Alistair Roe完成了外殼設計

2004年7月23日 發佈基本結構

2004年9月12日 用戶模式程式可以工作

2004年9月15日 運行“Dhrystone”基準

2004年9月22日 使用copy-on-write實現了fork()

2004年10月23日 Magic-1的Dhrystone得分達到了384(0.25MIPS)

2004年10月31日 運行Colossal Cave Adventure

2005年4月9日 Alistair Roe設計的外殼到貨

2005年5月13日 Magic-1的硬體設計完畢


測試圖
Image
ALU/暫存器板的元件面
Image
ALU/暫存器板的連線面
Image
控制板的元件面
Image
Image
看看背面連線的局部圖
Image

Image
學過數字邏輯和數字電路的朋友一定知道,透過使用TTL門電路,的確是能夠實現一個CPU的;然而,Buzbee朋友搞得這個傢夥卻是一個功能完全的CPU,我不知該如何形容它的功能,我本想說“麻雀雖小,五臟俱全”,但是……

這款“家釀”CPU可以支援完整的硬體地址轉換、記憶體影射IO和DMA,並且支援多進程,主頻“高達”3MHz;該CPU採用8位地址總線,每個進程擁有128K地址空間,其中包括32個2K的數據頁和32個2K的代碼頁,這些地址影射到22位的物理地址空間中,如果算上外部設備的地址空間就是23位物理地址空間。

怎麼樣?夠強的吧?這還不算什麼,這個Buzbee還用這個CPU組裝了一台微型電腦,名字就叫Magic-1,這台電腦包括兩個串口和一塊20M的1.3吋硬碟和另一塊30M硬碟。最讓人“乍舌”的事,這位朋友還將這台電腦做為一個Web伺服器,同時支援Telnet會話(雖然隻支援一個會話)。哦,還有,為了讓這個系統能夠跑起來,Buzbee還為它準備了一個C編譯器!

作者網站:http://www.homebrewcpu.com/

  • 沒想到有人這麼閒,把它給實作出來了。
    我想下一個大作不會是使用電晶體做出一台x86的電腦出來吧!!
    那會有好幾百萬顆的電晶體,那一定會超級壯觀的…

    我的站也是用bo-blog架的..有空到小站坐坐

  • 高三生

    但都是英文,看不太清楚ㄟ….可以番成中文ㄉ嗎?
    抱歉喔!!拜託一下謝謝

  • 高三生

    謝謝你喔!!那你可不可以把耶些基本的東西告訴我ㄚ
    例如為何要做這個或是怎麼做之類ㄉ!!
    拜託你ㄌ謝謝

  • 高三生

    不好意思!!請問一下,我可不可以用你這篇文章
    因為我覺得這篇寫的很好作品也非常的棒
    我是高三生,所以我要多多加強我的推徵資料
    我看這文章對我的資料好像有幫助,我是要推
    電子工程系,希望你看到這篇留言時可以回復一下
    拜託了!!謝謝
    還有我現在有要做專題製作,到現在我物知道要什
    麼專題,希望你能給我一些意見和做什麼專題比較好
    我要推的是電子工程系或資訊工程系

  • ROCKS

    我門也搞一台來ㄚ,然後灌Vista操暴它,好不好ㄚ