正文

世界最牛的DIY!-----手工 CPU!

(2009-02-16 08:14:13) 下一個
看看上麵這張圖,究竟是個什麽東東呢?不過是個大學生用的實驗儀器吧。啊哈,可能細心的朋友已經看到這個東西下麵的“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的硬件設計完畢





(2)工作中的Magic-1





(3) 鏤空的頂板,可以看到內部的照明藍光,非常絢麗


(4):學過數字邏輯和數字電路的朋友一定知道,通過使用TTL門電路,的確是能夠實現一個CPU的;筆者在大學時也曾在軟件上使用74係列芯片模擬過功能非常簡單的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編譯器!

ALU/寄存器板的元件麵



(5):ALU/寄存器板的連線麵




(6):控製板的元件麵




(8):設備板的元件麵,中間有一塊鋰電池




(9):看看背麵連線的局部圖











[ 打印 ]
閱讀 ()評論 (1)
評論
目前還沒有任何評論
登錄後才可評論.