又一位純手工打造CPU的牛人,並彙編實現類Unix系統,支持文件系統

以前發過好幾期這方面的展現,不一樣與FPGA的是這種系統化的設計可以讓你們對這些東西有一個更加全面的認識。

一、純手工打造CPU的那些牛人們,欣賞使人歎爲觀止的純手工佈線和高超技
http://www.armbbs.cn/forum.php?mod=viewthread&tid=25985

二、【本身動手搭建完整計算機系統】從數字邏輯基礎,CPU設計,虛擬機實現,彙編器,編譯器到操做系統設計一條龍
http://www.armbbs.cn/forum.php?mod=viewthread&tid=89124

三、爲了幫助學生學習計算機架構和工做原理,布里斯托大學制做16位計算機平臺,100多個
http://www.armbbs.cn/forum.php?mod=viewthread&tid=23367



硬件設計:

GR8CPU是在麪包板上構建功能齊全的計算機。第一個版本GR8CPU Rev2擁有600多條電線,74個集成電路和79個LED燈。它是一個8位架構,考慮了簡單性和處理能力。CPU能夠訪問256字節的RAM,已經爲其編寫了功能齊全的Tic-Tac-Toe遊戲。

到目前爲止,正在構建第二個GR8CPU Rev3。第一個CPU有不少有趣的工做要作:具備65536字節的內存,改進的算法和設計上更高的速度,該CPU是有史以來最複雜的麪包板CPU。

 


最先效果:

 

RAM模塊已完成
 

設計ALU
 

完成ALU設計:
 

視頻卡設計
 

完成視頻輸出電路:
  php

 
 

類Unix系統設計

GR8NIX是受Unix啓發的操做系統,Unix是1970年代發佈的簡單多用戶,多任務的操做系統。基於unix的思想的現代操做系統包括Linux, MacOS和Android等。GR8CPU Rev3用匯編語言編寫的,內核由2000行彙編實現,5KB代碼:

(1)多線程支持32個併發線程。
(2)理論上不受限制的運行程序數量。
(3)動態內存分配,當前大小最大爲8 KB。
(4)真正的程序執行與位置無關(動態應用程序加載)。

可是,GR8NIX並不完美,因爲硬件限制,GR8NIX沒法:
(1)保護內存免受進程侵害。
(2)從嘗試運行無效指令中恢復。
(3)可靠地防止進程退出後發生內存泄漏。

實現了動態內存管理後,開始文件系統的製做,實現從磁盤中加載文件:
 

視頻展現,在視頻中,你們能夠看到gr8nix變得栩栩如生,它成功加載並運行了一個Shell程序,該程序又加載並運行了您想要的任何其餘程序。

https://www.bilibili.com/video/BV1vX4y1V735/

首先,Exec負責加載程序並運行它們。Exec首先進行一些完整性檢查:文件是否存在?它是程序文件嗎?這是有效的嗎?接下來,Exec經過檢查每一個節條目並將其偏移量添加到其長度中來查找可執行文件的長度。Exec找到的長度是這些計算出的最大長度。

此後,Exec調用thread_launch,這是一種用於準備啓動線程的方法。Exec經過向過程當中添加一些原始數據來完成:用戶ID,指向分配的內存的指針,運行的命令行以及工做目錄等等。算法

相關文章
相關標籤/搜索