
編者按:本文來(lái)自微信公眾號(hào)雷科技(ID:leitech),作者:雷科技互聯(lián)網(wǎng)組,創(chuàng)業(yè)邦經(jīng)授權(quán)轉(zhuǎn)載,圖源:攝圖網(wǎng)。
如果有人和你說(shuō)要“手搓”一顆CPU,我想大多數(shù)對(duì)于CPU行業(yè)有所了解的朋友第一反應(yīng)都是“你在做什么夢(mèng)?”。因?yàn)榫退闶悄壳俺杀咀畹偷男酒辽俣疾捎梦⒚准?jí)工藝,不管是設(shè)計(jì)還是制作都需要專業(yè)機(jī)器的輔助,靠原始工具來(lái)制造幾乎不可能成功。
不過(guò),如果是古董級(jí)別的CPU,那么人工自制的成功可能性還是有的,畢竟人類第一臺(tái)計(jì)算機(jī)就是由一群工程師和科學(xué)家徒手打造的,最多就是用上了諸如焊槍等工具。如果說(shuō)幾十年前的人可以完成,那么在現(xiàn)代更發(fā)達(dá)的微電子工程學(xué)的指導(dǎo)下,制作一顆古董級(jí)處理器并不是一件困難的事情。
比如一位貼吧大神就自制了一顆CPU,并且成功運(yùn)行了自己手寫的二進(jìn)制程序,被網(wǎng)友稱為“肝上長(zhǎng)了個(gè)人”“焊武帝”,如果你好奇他是怎么自制CPU的,小雷今天就帶你一起看看吧。
如何手搓一顆CPU?
手搓CPU之前,首先要了解CPU的基本構(gòu)造,雖然經(jīng)過(guò)數(shù)十年的發(fā)展,現(xiàn)代CPU在工藝上已經(jīng)與最早的CPU有了很大區(qū)別,但是在基本構(gòu)造上還是大致相同的。比如用于邏輯計(jì)算的運(yùn)算邏輯部件,用于暫存指令、數(shù)據(jù)和地址的寄存器部件以及用于控制和分析指令的控制部件,小到普通的燈控芯片,大到超級(jí)計(jì)算器的處理器核心,基本上都遵循這個(gè)設(shè)計(jì)。

在弄清楚了CPU的主要構(gòu)造后,擋在面前的第一道攔路虎是電路設(shè)計(jì),否則就連如何接線,接在哪里都會(huì)成為問(wèn)題,更談不上打造一顆處理器。可以用于CPU設(shè)計(jì)的軟件有不少,這位手搓CPU的肝帝使用的Quartus就是一款由英特爾推出的設(shè)計(jì)軟件,擁有強(qiáng)大的輔助功能。

在翻出了數(shù)年前用Quartus設(shè)計(jì)的原理圖后,naiweide(貼吧手搓CPU的大神ID)開(kāi)始打造移位寄存器,也就是我們上面提到的CPU關(guān)鍵部件之一。 輸入的數(shù)據(jù)會(huì)在經(jīng)過(guò)并被分配到該去的位置,按照naiweide的描述“就像是現(xiàn)在馬路中間的交警,指揮著數(shù)據(jù)什么時(shí)候該往哪里走”。
可以說(shuō),如果移位寄存器出現(xiàn)問(wèn)題,那么數(shù)據(jù)就會(huì)無(wú)法輸入到正確的位置,導(dǎo)致無(wú)法正確執(zhí)行指令,就像是出了“車禍”一樣,無(wú)法通行。
大家可以感受一下這個(gè)移位寄存器的大小。


基本上用到的零件主要是二極管、三極管和電阻,此外還有作為地基的門電路,實(shí)際上后續(xù)的幾個(gè)部件基本上也只需要這些零件即可,只不過(guò)是數(shù)量多寡的區(qū)別。
在完成了寄存器的制作后,naiweide開(kāi)始制作程序計(jì)數(shù)器,也就是上面提到的運(yùn)算邏輯部件,這個(gè)模塊可以說(shuō)整個(gè)第一階段最困難的,某種程度上來(lái)說(shuō)也是最“勸退”的一個(gè)階段(naiweide自稱為此耗費(fèi)了半個(gè)腦袋的頭發(fā),為他的頭發(fā)默哀一下)。

程序計(jì)數(shù)器涉及到的零件數(shù)量遠(yuǎn)超寄存器,只要其中一個(gè)零件出現(xiàn)問(wèn)題那么就會(huì)影響整個(gè)系統(tǒng),而且缺乏有效的debug機(jī)制,想要找到故障位置也是相當(dāng)困難。而在實(shí)際的焊接過(guò)程中,受焊錫量、焊接時(shí)間等因素的影響,看似正常的各個(gè)零件在實(shí)際運(yùn)行時(shí)都可能出現(xiàn)意想不到的問(wèn)題。
比如在一次成功運(yùn)行后,雖然肉眼之下一切正常,但是當(dāng)naiweide用手機(jī)記錄并慢放視頻后,很快就發(fā)現(xiàn)程序計(jì)數(shù)器的執(zhí)行速度忽快忽慢,而在正常情況下執(zhí)行速度應(yīng)該是恒定的,忽快忽慢就說(shuō)明其中有一個(gè)硬件出現(xiàn)了問(wèn)題。
在經(jīng)過(guò)一個(gè)星期的debug后,終于在硬件深處找到了一個(gè)焊接反了的二極管,再加上處理其他各種問(wèn)題的時(shí)間,程序計(jì)數(shù)器花了超過(guò)一個(gè)月的時(shí)間才終于制作成功,而這還只是第一步,在將其與寄存器組合在一起后,能否正常運(yùn)行還是一個(gè)未知數(shù)。
為了更直觀的給大家展示一下程序計(jì)數(shù)器的復(fù)雜程度,可以看一看naiweide拍攝的局部細(xì)節(jié)圖。




而且,在打造程序計(jì)數(shù)器的過(guò)程中,naiweide還發(fā)現(xiàn)自己的原理圖存在嚴(yán)重問(wèn)題,無(wú)法正確控制和分析指令,最終只能夠一邊debug一邊對(duì)電路圖進(jìn)行修改,功夫不負(fù)有心人,最終成功點(diǎn)亮所有指示燈,得到了正常運(yùn)行的回饋。
在寄存器和程序計(jì)數(shù)器均完成后,接下來(lái)還要打造一個(gè)指令集,用于解析和執(zhí)行輸入的指令,也就是控制部件。某種程度上,指令集的先進(jìn)程度會(huì)直接影響到CPU的性能,但是對(duì)于naiweide打造的這個(gè)古董級(jí)CPU來(lái)說(shuō),能夠正常運(yùn)行就是成功的。

相較于程序計(jì)數(shù)器,指令集部分的設(shè)計(jì)和制作并不算難,但是同樣會(huì)遇到許多問(wèn)題,因?yàn)榈搅诉@一步已經(jīng)需要將三大部件組合在一起進(jìn)行測(cè)試,只要其中一環(huán)出現(xiàn)沖突,那么就會(huì)反饋出錯(cuò)誤的信息和結(jié)果。


在焊接上對(duì)應(yīng)的硬件后,naiweide成功讓這個(gè)古董級(jí)CPU成功運(yùn)行了00H和01H兩個(gè)指令,嚴(yán)格上來(lái)說(shuō),他已經(jīng)成功打造了一顆真正的CPU,接下來(lái)的目標(biāo)是使用這顆CPU實(shí)現(xiàn)流水燈效。
甚至在此之前,程序計(jì)數(shù)器部分又一次損壞,在經(jīng)過(guò)詳細(xì)檢查后發(fā)現(xiàn)一顆二極管在運(yùn)行過(guò)程中被電流擊穿,完全損壞,在更換后才終于正常啟動(dòng)。
真·寫代碼
流水燈效,簡(jiǎn)單來(lái)說(shuō)就是燈光依次亮起熄滅,是我們?nèi)粘I钪凶畛R?jiàn)的燈效之一,在一般情況下,只需要一個(gè)小指甲蓋大小的芯片就可以實(shí)現(xiàn)包括流水燈效在內(nèi)的多種燈效控制。
這么看來(lái),似乎不難?畢竟只是燈光控制罷了,隨便一個(gè)玩具都可能具備這個(gè)功能。但是,不要忘了這顆CPU是完全手工打造的,相當(dāng)于完全自主研發(fā)的指令集和架構(gòu),所以沒(méi)有辦法從現(xiàn)有的資料中獲得幫助,甚至連配套的編程語(yǔ)言都欠缺。
那么,naiweide是如何解決編程問(wèn)題的?很簡(jiǎn)單,使用最原始的機(jī)械語(yǔ)言——二進(jìn)制,也就是由0和1組成的一長(zhǎng)串?dāng)?shù)字代碼。對(duì)于一般人來(lái)說(shuō),也許光是看著那一大串代碼就已經(jīng)頭暈,并且覺(jué)得人類真的可以理解嗎?實(shí)際上想要對(duì)其進(jìn)行編譯也不是什么異想天開(kāi)的事情,一些常用的代碼還是可以比較輕松記憶下來(lái)的。

如果是利用現(xiàn)有的一些編程軟件,其實(shí)也可以輕松的寫下這段代碼,不過(guò)naiweide還是使用了最原始的手寫代碼方式,來(lái)打造這顆CPU的第一個(gè)完整程序。至于輸入程序的方式也是相當(dāng)硬核,“扣”按鍵,在一塊8位指令輸入板上按照二進(jìn)制代碼的順序依次扣動(dòng)對(duì)應(yīng)按鍵,輸入完成后再進(jìn)行第二條代碼的輸入。

在完成指令輸入后,naiweide發(fā)現(xiàn)程序并沒(méi)有正常運(yùn)行,在隨后的檢查中發(fā)現(xiàn)有地方的連接因?yàn)橐馔鈹嚅_(kāi),而且程序設(shè)計(jì)上也有一些問(wèn)題,最終重新編程后才成功運(yùn)行了一套完整的流水燈效。
手搓CPU有意義嗎?
naiweide制作的這顆CPU,從性能和功能上來(lái)說(shuō)可能還不如淘寶幾塊錢買的一顆處理器。根據(jù)作者描述,在最初啟動(dòng)的時(shí)候,主頻只有可憐的1Hz,而在經(jīng)過(guò)多次改進(jìn)后,也僅僅提升到了100kHz。
作為對(duì)比,淘寶售價(jià)5元的G620處理器主頻為2.6GHz,也就是2600MHz,等于2600000KHz,也就是自制CPU的兩萬(wàn)六千倍,考慮到更豐富完善的指令集和架構(gòu),實(shí)際差距還會(huì)更大。至于大家談?wù)揅PU時(shí)常提的制程,該CPU大概是2.54mm制程,是目前的5nm先進(jìn)制程的數(shù)十萬(wàn)倍。
當(dāng)然,單看性能什么的,肯定是沒(méi)有意義的,naiweide制作CPU的初衷主要是想親自驗(yàn)證一下二進(jìn)制代碼的執(zhí)行過(guò)程,以及從零開(kāi)始摸清楚CPU的運(yùn)行邏輯,實(shí)踐出真知,只有實(shí)際做過(guò)了,在隨后的工作中才能更好的了解整個(gè)系統(tǒng)和硬件的運(yùn)行過(guò)程。
所以,從實(shí)用上看,確實(shí)沒(méi)有多大意義,但是對(duì)于naiweide來(lái)說(shuō)卻是一個(gè)很好的學(xué)習(xí)及積累經(jīng)驗(yàn)的過(guò)程。
雖然不少評(píng)論都說(shuō)只需要大學(xué)級(jí)別的知識(shí)就能制作出相同的作品,但是其中的毅力、耐心卻很少有人具備,而這些恰恰是成功所具備的前置條件,所以小雷十分期待這位UP日后能夠在這個(gè)領(lǐng)域做出更大的貢獻(xiàn)。
本文為專欄作者授權(quán)創(chuàng)業(yè)邦發(fā)表,版權(quán)歸原作者所有。文章系作者個(gè)人觀點(diǎn),不代表創(chuàng)業(yè)邦立場(chǎng),轉(zhuǎn)載請(qǐng)聯(lián)系原作者。如有任何疑問(wèn),請(qǐng)聯(lián)系editor@cyzone.cn。







