這是一種驅(qū)使人們自愿構(gòu)建自己的CPU的癢。我們開始思考我們理解中的空白,這個(gè)空白潛伏在邏輯門和觸發(fā)器如何單獨(dú)工作以及機(jī)器代碼如何控制完全組裝的處理器之間。在硬連線電路開始隨著軟件不斷變化的曲調(diào)跳舞的神奇區(qū)域中究竟發(fā)生了什么?
事實(shí)證明,這種癢折磨著足夠多的人,以至于有商業(yè)套件供想要將 CPU 組裝在一起以看到(或聽到)它的制造商使用,并且網(wǎng)絡(luò)上充斥著自制的 4 位和 8 位 CPU,其架構(gòu)是 1970 年代工程師所熟悉的。我應(yīng)該知道——我自己做了一個(gè)。但后來我開始懷疑:我能不能用一些最新技術(shù)來構(gòu)建自己的CPU?我可以設(shè)計(jì)自己的完全兼容的 32 位 RISC-V 中央處理器嗎?
RISC-V 是一個(gè)開源架構(gòu),大約有 11 年的歷史,現(xiàn)在開始在由 x86 和 ARM CPU 架構(gòu)主導(dǎo)的世界中取得進(jìn)展。羅伯特·巴魯克(Robert Baruch)的工作提醒了我RISC-V的可能性,他大約兩年前開始了一個(gè)類似的項(xiàng)目,但尚未完成他的處理器,部分原因是他必須不斷重新設(shè)計(jì)他早期構(gòu)建的組件,以滿足不斷發(fā)展的設(shè)計(jì)需求。
RISC-V 設(shè)計(jì)的模塊化特性使我能夠?qū)?Pineapple One 構(gòu)建為一堆可單獨(dú)測(cè)試的 10 x 10 厘米 PCB,這些 PCB 具有不同的功能(順時(shí)針方向,從左上角開始):VGA 驅(qū)動(dòng)器;公羊;傳輸層;移;阿魯;寄存器文件;控制單元;程序計(jì)數(shù)器;只讀存儲(chǔ)器。詹姆斯·普羅沃斯特
取而代之的是,我首先在邏輯電路仿真器Logisim Evolution中構(gòu)建了我的完整設(shè)計(jì),我將其命名為Pineapple One。在查閱了官方 RISC-V 手冊(cè)以及 David Patterson 和 John Hennessy 的著作《計(jì)算機(jī)組織與設(shè)計(jì),RISC-V 版》(Elsevier,2017 年)的第一版,并將 Logisim 推向了極限,我在六個(gè)月內(nèi)對(duì) Pineapple One 進(jìn)行了工作模擬,滿足了基本 RISC-V CPU 的要求。
在實(shí)現(xiàn) RISC-V 架構(gòu)時(shí),我驚訝地發(fā)現(xiàn),與我早期自制 CPU 中使用的傳統(tǒng)復(fù)雜指令集相比,該架構(gòu)的意義要大得多。冗余被消除,處理器的寄存器(存儲(chǔ) CPU 工作內(nèi)存的暫存器)更加靈活。另一大優(yōu)勢(shì)是RISC-V是一個(gè)有據(jù)可查的模塊化設(shè)計(jì),所以我知道每個(gè)模塊必須做什么。我的目標(biāo)是以我自己的方式設(shè)計(jì)每個(gè)模塊,但要確保它的性能符合 RISC-V 標(biāo)準(zhǔn)。(這決定了我的 CPU 是 32 位的,因?yàn)楦鶕?jù)定義,RISC-V 指令至少那么長(zhǎng)。
從物理上講,菠蘿一號(hào)分布在垂直堆疊的八個(gè)方形印刷電路板上,這些電路板的邊長(zhǎng)約為10厘米,外加一個(gè)處理VGA顯示接口的卡。它使用了 230 多個(gè)集成電路,主要來自 74HCT 系列邏輯芯片。我最大的挑戰(zhàn)是實(shí)現(xiàn)桶形移位器,這種電路可以圍繞寄存器中的位以可控的量進(jìn)行移位。我首先嘗試了一種需要 80 多個(gè)組件的快速實(shí)現(xiàn),但盡我所能,我無法讓它適合我的 PCB。因此,我采用了一種低組件方法,基本上暫停了 CPU 其余部分的運(yùn)行,直到我的變速桿完成啟動(dòng)。由于菠蘿一號(hào)的走線很長(zhǎng),與單芯片CPU相比,我還很難管理寄生電容和阻抗,這意味著要調(diào)試一些非常奇怪的行為。
忠誠(chéng)shopping_cart刪除
詹姆斯·普羅沃斯特(James Provost):雖然有規(guī)定指令的長(zhǎng)度范圍在16位和理論上無限的數(shù)量之間,但這里是RISC-V指令的四種核心類型的固定32位格式。一些指令將操作碼與其他功能字段相結(jié)合來定義行為,而另一些指令則允許將多個(gè)源寄存器與所謂的即時(shí)數(shù)據(jù)相結(jié)合,并將結(jié)果放置在目標(biāo)寄存器中。
我使用Arduino微控制器測(cè)試了每塊板,以模擬計(jì)算機(jī)其余部分的輸入,并監(jiān)控輸出的正確性。我用3D打印了一個(gè)漂亮的外殼來容納整堆PCB和輸入/輸出連接器,這樣就可以將鍵盤和VGA顯示器直接連接到Pineapple One上。有 4 個(gè)通用 I/O 端口 — 2 個(gè) 8 位輸入和 2 個(gè)輸出。
我的朋友 Jan Vykydal 幫助我設(shè)置了一個(gè)符合 RISC-V 的編譯器才能正常工作,所以我用 C 語言編寫了一些系統(tǒng)軟件和演示程序。編譯器生成機(jī)器代碼,我使用一個(gè) Python 腳本來獲取代碼并將其閃存到 CPU 的內(nèi)存中。盡管 Pineapple One 的運(yùn)行頻率僅為 500 千赫茲,但這仍然足夠快,可以實(shí)時(shí)玩像 Snake 這樣的簡(jiǎn)單電腦游戲,而且 512 KB 的程序內(nèi)存和 512 kB 的 RAM 已經(jīng)足夠了。
最終,我想稍微升級(jí)一下處理器,以便它可以運(yùn)行更復(fù)雜的程序。我還想添加更多擴(kuò)展板,例如聲卡。您可以在 Hackaday 上找到原理圖和物料清單,但最終將其作為套件提供給其他有興趣了解當(dāng)代 CPU 設(shè)計(jì)的人會(huì)很棒。
審核編輯 黃宇
-
芯片
+關(guān)注
關(guān)注
450文章
49636瀏覽量
417167 -
cpu
+關(guān)注
關(guān)注
68文章
10702瀏覽量
209373 -
RISC-V
+關(guān)注
關(guān)注
44文章
2141瀏覽量
45711
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論