用一把烙鐵,花三個月時間,你能搞出什么名堂?
這位網名叫 MINT 的小哥,從零純手搓了個 CPU 出來,從設計、布線到編程,全程都是他一人包攬。
而且用的還是 8 位時代(上世紀七八十年代)的舊內存芯片和邏輯元件。
為了秀一波肌肉,小哥自己寫了點代碼,用這個手搓的 CPU 再 VFD 屏幕上放起了《黑客帝國》。
分辨率是低了點,但能流暢播放已經是相當厲害了。
純手搓 CPU 的終極形態
這個手搓的 CPU 名叫 EPROMINT,從外觀來看,整個 CPU 用了四塊穿孔板,總重量有 500 來克。如果要把線路全部鋪開,總長度大概能有一千米。
在配置上,EPROMINT 還是 8 位,跟現在 64 位的性能肯定沒得比(具體如下)。
但要和好幾十年前的 8 位 CPU 比,它還是可圈可點的。既能根據真實的指令集運行,也能執行自己的匯編代碼,還能像商用處理器一樣對硬件中斷做出反應。
甚至它的運算速度,比當時的復古偶像產品還要更強勁。
比如驅動 Apple I/II 、任天堂紅白機的 MOS 6502 ,或者主導 CP/M 系統的Z80,在這個手搓的 CPU 面前,可能都要稍稍遜色一籌, 能流暢播《黑客帝國》就是很好的證據。
EPROMINT 是怎么造出來的?
最早有純手搓 CPU 這個想法,來自 MINT 小哥之前做過的一個實驗,他用過時的 EPROM 存儲芯片,搞了個能控制小型系統的開發板。
像是調節電機的轉速,或者控制消息顯示屏。
這個實驗一下子就激發了他內心深處的 DIY 靈魂,既然內存能用來模擬基本邏輯,那用它搞個完整的 CPU 也不是不可能。
于是手搓 CPU 的計劃就這么水靈靈地提上日程了。
手搓 CPU,主要就四個模塊
算術邏輯運算單元(ALU):負責執行算術和邏輯運算
內存控制模塊:用來數據存儲和地址尋址
IO 接口與程序存儲模塊:給CPU提供和外部交互的能力
控制模塊:讀取指令,并協調前面三個模塊
雖然聽著挺簡單,但實際手搓起來可就是另外一回事了。
就拿 ALU 來說,怎么設計就是一大難題,剛開始他搞出來的 ALU 還只能處理最簡單的加法運算,用他本人的原話來說就是個玩具,而且性能也不可靠。
后來不斷摸索才決定把 ALU 設計成全插槽式的,主打一個方便調試,這對手搓 CPU 來說也算是一個相當大的優勢。
而在手搓 CPU 的過程中,MINT 小哥偏偏又是個完美主義者,一個模塊沒做到最好,就會一直修改一直修改。。。
當然,硬件設計出來后還不算完,還得有對應的指令集,這決定了 CPU 之后都能干什么。
在這塊兒,MINT 小哥也是從 0 開始,寫了將近 2000 行的代碼,好定義 CPU 怎么處理指令,順帶簡化了數據在系統中的傳輸方式。
而且相較于 Z80 這些老式 CPU 的能力,EPROMINT 還支持它們沒有的乘法、除法、三角運算等等。
這還不算完,一個合格的 CPU 處理器,還需要學會中斷任務。
就比如 CPU 本來在放《黑客帝國》,突然來了個電話,這時 CPU 得學會停下來,等人接完電話后再回來繼續放。
而 EPROMINT ,遇到中斷時會亮起第二個 LED 燈,緊接著把當前的程序計數器(PC)壓入棧堆,等別的任務處理完后,在從棧堆里回復數據,好繼續任務。
目前,EPROMINT 已經完全開源,電路圖、設計文檔、指令集等等都能在 GitHub 上獲取,鏈接放在結尾了。
手搓 CPU 的意義是什么?
手搓 CPU,MINT 小哥不算是第一人,前些年 B 站就有 up 出過自己手搓 CPU 的視頻,熱度也是相當之高。
但可能還會有人納悶,現在造 CPU 的技術已經相當成熟了,為啥還要費力從零手搓 CPU 呢?
借用一句網友的話,“或許這才是 DIY 的精神所在”。從零手搓 CPU 不會像現代 CPU,把所有的執行路徑都隱藏在硅片之下,它的每個時鐘周期、所有寄存器的更改,都是可見、可追溯的。
同時,在某稱程度上手搓 CPU 也能通過深度實踐,推動開源硬件文化。
無論最后手搓出的 CPU 性能如何,就光是這個行為本身,就已經夠令人敬佩了。
參考資料:
CSDN、YouTube@Majsterkowanie i nie tylko、tomshardware
GitHub地址:
https://github.com/majsterkowanieinietylko/EPROMINT
編輯:三七
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.