自己設計制作cpu與單片機(一)


原著作者:姜詠江

 

這是一本為有志於計算機CPU設計的人員所寫的書,不論你是狂熱的發燒友,還是精明的計算機專業工作者。
本書以作者幾十年學習設計制作CPU與通用單片機的經歷,來告訴你如何從無到有地設計屬於你自己的CPU和可以運行用戶程序的單片機。書中以作者的十幾個CPU設計工程為主線,展示了精簡指令系統RISC和復雜指令系統CISC計算機CPU的設計方法。既有硬件編程,又有原理圖設計,適合軟硬件人員學習計算機核心技術之用。
書中通過實例告訴讀者,如何創造性地進行計算機高端產品CPU的立意和設計,介紹了人機交互和操作系統內核的設計方法。這是一本對要全面掌握計算機高端技術的人員而言必讀的CPU設計制作之書。

 

 簡單cpu組成

從邏輯上講,大家都知道計算機是由運算器、控制器、存儲器、輸入設備和輸出設備組成的。這僅僅是一個極其概括的認識,是非專業的理解。對於想要設計CPU的人來說,這種粗淺的理解顯然是差距太大了。即使是最簡單的計算機CPU結構,也遠不是“運算器和控制器統稱CPU”的那種概念,而實際應該理解成:計算機的CPU是由控制單位、運算單位和存儲單位構成的。什么是控制單位、運算單位和存儲單位?在圖 3-1中我們用三種顏色粗略地給出了一個簡單的CPU結構,從左向右分別是控制單位、運算單位和存儲單位。

控制單位有指令寄存器ir,還有控制邏輯control等。運算單位有運算器alu和它的前端寄存器A、B及各種運算控制邏輯。存儲單位包含的器件較多,有程序存儲器irom與程序計數器pc,數據存儲器dram和地址寄存器mar,還有累加器da和輸出寄存器out等。它們表示的僅是一個非常簡單的CPU結構。這種結構將設備通過公共線路相互關聯,公共使用的線路在我國一般稱為總線。多個設備連接的公共線路中導線通常都會有多條,有時候人們也將多條導線組成的線路也叫總線。這種將多股線稱為總線的叫法是一種習慣,實際上很容易區別。

用總線進行連接各種設備的結構稱為總線結構。總線結構是計算機設計的一種基本結構,在相當長的時間內是計算機結構設計的標准。總線結構數據傳遞方式是廣播式的。在總線上連接的設備,不能同時有2個,或者多於2個的設備向總線輸送數據,這樣會造成數據混亂。反過來,一個設備發送到總線上的數據,所有連接在總線上的其他設備都可以同時接收。

圖 3-1中這個簡單的計算機CPU用一個只讀存儲器irom放置程序,指令地址由寄存器pc指示。由於pc是專門指示指令地址的,習慣上人們稱之為程序計數器。可進行讀寫的存儲器dram是專門放置數據的,因而稱為數據存儲器。dram的存儲單元地址由寄存器mar來指示,mar叫地址寄存器。獨立的寄存器da用來臨時存放數據,特別是存放一些指令執行的中間運算結果,人們一般稱之為累加器。寄存器out用來保持輸出數據,被稱為輸出寄存器。ALU是運算器,ALU一般可以進行算術運算和邏輯運等多種運算,A、B是它的前端寄存器,用以保持參與運算的數據。ALU實行運算時,參加運算的數據必須是穩定的,所以要有前端寄存器來保證數據的穩定性。

從邏輯上講,irom、dram是這個計算機的存儲器,它們和臨時存放數據的mar、da、out和pc等寄存器構成了這個計算機的存儲單位。存儲單位是保存程序和數據的地方,長時間保存的數據要放在存儲器當中,臨時性保存的數據一般放在寄存器中。寄存器中的數據讀寫速度快,而對存儲器中的數據進行讀寫,相對來說就慢一些。

ALU負責數據計算。各種運算的設備是不一樣的,所以ALU的內部也很復雜。比如有算數加減法運算器,乘除法運算器、邏輯運算器、浮點數運算器和其他操作設備等。

控制單位最主要的是控制器,它當中最主要的有控制矩陣、時鍾振盪器和節拍器等,指令寄存器是它進行指令分析時,保存指令的臨時設備。人們不進行設計研究的時候,就把指令寄存器也放到控制器當中,而不單獨提到它。以往的設計很少考慮程序轉移的變化,所以將累加器、程序計數器等存儲設備放到了控制單位一邊,並將它們統稱為控制器。本書將它們划歸到存儲單位一邊,是考慮到程序快速轉移的問題。這種划分看似簡單,但卻引發了計算機程序運行轉換的革命性變化。這是我十幾年前研究程序執行“死鎖”想出的辦法。這種划分,引出了多處理器CPU的動態變化問題。從前很多計算機設計都將運算器的前端寄存器A和B之一做為累加器,這樣很方便使用前面指令運算結果。可世間的事情往往是有一利必有一弊,這種設計並不方便程序轉移到其他處理器上執行,對多處理器同處一機的並行程序執行方式,還是將累加器獨立出來會更好。有關這方面的問題,我們將在動態計算機的章節中闡述。

將累加器和程序計數器放入存儲單位,可以使程序的指令之間變化在控制器和運算器上不留數據,這種情況我們稱為指令間處理器無關。CPU的處理器是控制單位和運算單位的統稱,又叫指令執行單位或處理器,用PU(Performance Unit)來記。CPU中去除PU,剩下來的部分就是存儲單位,我們用MU(Memory Unit)來記。這樣一來,計算機的CPU就是PU+MU組成的。

公共總線BUS是由多條導線組成的,導線的數量一般不少於運算器或寄存器的位數。現在流行的設計,都將總線導線的數量和運算器的位數一致,當實際用不到那么多導線時,就讓部分導線臨時閑置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM