在如今越來越靠程序化、流水線作業來完成生產的制造業中,想找一件手工打造的產品,真是越來越難了。
好在當今社會中,還是有一些強人在孜孜不倦的在完成著心中的“完美DIY”夢想。因此也使我們多了一些大開眼界、崇拜和向慕的機會。  看看上面這張圖,究竟是個什么東東呢?可能有人會說,這不過是個大學生用的實驗儀器吧。但細心的朋友則肯定已經看到這個東西下面的“Magic-1 Homebrew CPU”字樣了。 難道這真的是一個CPU?請趕快閉好你張大了的嘴巴。讓筆者來告訴你答案:的確是!這是一個名字叫Bill Buzbee的朋友用200多塊74系列的TTL集成電路通過純手工制造的CPU。 這個神奇的Magic-1,就是由一個名叫Bill Buzbee的家伙手工打造的CPU。而Magic-1也是基于這個CPU制造的計算機的名字。有意思的是,“制作Magic-1的念頭是在一次午餐中冒出來的”,Buzbee說。 Buzbee是一位編譯器作者。但他為自己不熟悉CPU的實際工作而感到郁悶。因此想到了親自動手來作一個CPU。Buzbee在大學時候沒有學過任何電子類的課程,而且對于晶體管、電阻、電容等也只是一知半解。不過他的朋友Ken想到有一本老雜志曾經介紹過如何使用TTL集成電路來制作極其簡單的CPU,并推薦他去看一看。一周后,Buzbee找到了這些文章,并全部讀了一遍。然后在下一次午餐上,Buzbee對Ken說起決定自己打造一個CPU。Ken說:“為什么不呢?”于是,Bill Buzbee的Magic-1項目拉開了序幕。
純手工CPU制造編年大史記
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的硬件設計完畢
純手工CPU的廬山真面目
 實物照片大曝光,已經在工作狀態……  鏤空的頂板,可以看到內部的照明藍光,非常絢麗 學過數字邏輯和數字電路的朋友一定知道,通過使用TTL門電路,的確是能夠實現一個CPU的;筆者在大學時也曾在軟件上使用74系列芯片模擬過功能非常簡單的CPU。然而,Buzbee朋友搞得這個家伙卻是一個功能完全的CPU,我不知該如何形容它的功能,我本想說“麻雀雖小,五臟俱全”,但是……
 這小朋友抱著DIY出來的CPU,不知道心里是個什么滋味呢? 這款“家釀”CPU可以支持完整的硬件地址轉換、內存影射IO和DMA,并且支持多進程,主頻“高達”3MHz;該CPU采用8位地址總線,每個進程擁有128K地址空間,其中包括32個2K的數據頁和32個2K的代碼頁,這些地址影射到22位的物理地址空間中,如果算上外部設備的地址空間就是23位物理地址空間。
手工電路板特寫圖秀
 ALU/寄存器板的元件面  ALU/寄存器板的連線面  控制板的元件面  設備板的元件面,注意中間有一塊鋰電池  大特寫!背面連線的局部圖 怎么樣?夠強的吧?這還不算什么,這個Buzbee還用這個CPU組裝了一臺微型計算機,名字也叫Magic-1。
 可實現Telnet服務功能 這臺計算機包括兩個串口和一塊20M的1.3吋硬盤和另一塊30M硬盤。最讓人“乍舌”的事,這位朋友還將這臺計算機做為一個Web服務器,同時支持Telnet會話(雖然只支持一個會話)。哦,還有,為了讓這個系統能夠跑起來,Buzbee還為它準備了一個C編譯器!
真正的DIY名作:自己設計制造的CPU!
真的猛士,敢于DIY自己的生活;真的猛士,敢于DIY自己的電子產品;真的猛士,敢于只用導線和晶體管DIY自己的電腦。
從零開始造電腦……這得是何等的生猛啊。一般人也就是自己組臺機器裝個系統啥的,這位叫Steve的哥們卻不這么想,他覺得不自己拿導線啥的造臺電腦出來你出門都不好意思跟人家打招呼……
 現在的電腦,僅僅一個CPU里那可是有上億個晶體管啊……純手工的話那簡直是不可想象,即使強如此人也只能退而求其次,最終造出來極低配置電腦……但那也是電腦啊!!  這臺名叫“線地獄”(Big Mess O‘ Wires)的電腦能運行BASIC程序,CPU主頻為2MHz(理論最高極限為3MHz),512KB的RAM和512KB的ROM(上一次看到KB級 別的配置是何時?真是懷念的淚流滿面啊),視頻輸出方面如果是黑白雙色的話能夠輸出512×480的分辨率,如果是256色的話就只有128×240了。  OTZ……果然是技術宅救世么?  
以下是這臺BMOW的內部結構圖和一些主要參數:  *處理器主頻2MHz,理論最高主頻可達3MHz; *處理器使用8位數據線,24位地址線。內建四個8位通用數據寄存器,三個24位寄存器則用于存放程序計數器,堆棧指針寄存器以及地址指針,CPU內部采用一條數據總線來連接寄存器和算術邏輯單元,而內存,ROM和內存映射裝置等則使用另一條數據總線連接。ALU單元還配備了專用左/右數據輸入總線。 *CPU的機器語言指令以微指令形式存儲在三個并行ROM中,以生成24位微代碼指令字。每時鐘周期可以執行一條微指令,一條機器語言指令最多可以包含16條微指令; *配備512KB內存,512KB ROM,使用24位地址線結構,最多允許的RAM+ROM容量為1MB; *耗電10W,額定工作電流2.0A,電壓5V; *支持512x480雙色VGA輸出,或128x240256色VGA輸出; *音效功能由三聲部可編程發生器提供; *可連接PS/2接口普通鍵盤; *具備24x2 Debug顯示屏; *整個元件使用了約1250條線纜。 除了名字起的很糟糕之外,這塊處理器可謂Steve Chamberlin的心血之作。這款8位處理器及其配套的計算機系統將在第四屆Maker Faire年會會場上展示,屆時Steve Chamberlin將向與會的8萬名參展人員演示使用這臺DIY電腦玩國際象棋游戲。Maker Faire年會是一個專供DIY愛好者,改造愛好者展示自己作品的大型展會。
|