硬件設(shè)計
GR8CPU是在面包板上構(gòu)建功能齊全的計算機。第一個版本GR8CPU Rev2擁有600多條電線,74個集成電路和79個LED燈。它是一個8位架構(gòu),考慮了簡單性和處理能力。CPU可以訪問256字節(jié)的RAM,已經(jīng)為其編寫了功能齊全的Tic-Tac-Toe游戲。
到目前為止,正在構(gòu)建第二個GR8CPU Rev3。有很多有趣的工作要做:具有65536字節(jié)的內(nèi)存,改進的算法和設(shè)計更高的速度,該CPU是有史以來最復(fù)雜的面包板CPU。
最早效果:
RAM模塊已完成:
設(shè)計ALU:
完成ALU設(shè)計:
視頻卡設(shè)計:
完成視頻輸出電路:
類Unix系統(tǒng)設(shè)計
GR8NIX是受Unix啟發(fā)的操作系統(tǒng),Unix是1970年代發(fā)布的簡單多用戶,多任務(wù)的操作系統(tǒng)。基于unix的思想的現(xiàn)代操作系統(tǒng)包括Linux, MacOS和Android等。GR8CPU Rev3用匯編語言編寫,內(nèi)核由2000行匯編實現(xiàn),5KB代碼:
(1)多線程支持32個并發(fā)線程。
(2)理論上不受限制的運行程序數(shù)量。
(3)動態(tài)內(nèi)存分配,當(dāng)前大小最大為8 KB。
(4)真正的程序執(zhí)行與位置無關(guān)(動態(tài)應(yīng)用程序加載)。
但是,GR8NIX并不完美,由于硬件限制,GR8NIX無法:
(1)保護內(nèi)存免受進程侵害。
(2)從嘗試運行無效指令中恢復(fù)。
(3)可靠地防止進程退出后發(fā)生內(nèi)存泄漏。
實現(xiàn)了動態(tài)內(nèi)存管理后,開始文件系統(tǒng)的制作,實現(xiàn)從磁盤中加載文件:
在視頻展示中,大家可以看到gr8nix變得栩栩如生,它成功加載并運行了一個Shell程序,該程序又加載并運行了大家想要的任何其他程序。
首先,Exec負責(zé)加載程序并運行它們。Exec首先進行一些完整性檢查:文件是否存在?它是程序文件嗎?這是有效的嗎?接下來,Exec通過檢查每個條目并將其偏移量添加到其長度中來查找可執(zhí)行文件的長度。Exec找到的長度是這些計算出的最大長度。
此后,Exec調(diào)用thread_launch,這是一種用于準(zhǔn)備啟動線程的方法。Exec通過向過程中添加一些原始數(shù)據(jù)來完成:用戶ID,指向分配的內(nèi)存指針,運行的命令行以及工作目錄等等。
編輯:jq
-
led
+關(guān)注
關(guān)注
241文章
23136瀏覽量
658471 -
cpu
+關(guān)注
關(guān)注
68文章
10825瀏覽量
211150 -
ALU
+關(guān)注
關(guān)注
0文章
33瀏覽量
13075
原文標(biāo)題:厲害了!又一位純手工打造CPU的牛人,并且匯編語言實現(xiàn)類Unix系統(tǒng),支持文件系統(tǒng)
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論