計算機組成與設計(八)—— 單周期處理器


處理器的設計步驟

  1. 分析指令系統,得出對數據通路的需求
  2. 為數據通路選擇合適的組件
  3. 連接組件,建立數據通路
  4. 分析每條指令的實現,以確定控制信號
  5. 集成控制信號,完成完整的數據通路

 

具體設計步驟

(一)分析指令系統

MIPS的所有指令是非常多的,我們只實現其簡化版,包含如下6種:

 

(二)需求分析

需求分析,需要存放指令地址的32位寄存器(PC),需要存放指令的存儲器,可讀,數據和指令均為32位(MEM[PC])。還需要一個寄存器堆,用來保存源操作數和目的操作數,一個ALU進行運算。

 

(三)選擇組件

所以我們需要如下組件:

  • 算術邏輯單元(ALU):操作數為2個32位數,來自寄存器或擴展后的立即數
  • 立即數擴展部件:將一個16位立即數擴展為32位,擴展方式包括零擴展和符號擴展
  • 程序計數器(Program Counter,PC):是一個32位寄存器,支持兩種加法:加4或加立即數
  • 寄存器堆(Register File):包含32個寄存器,每個32位寬;支持讀和寫操作
  • 存儲器:一個是只讀的指令寄存器,一個可讀寫的數據存儲器,兩者地址和數據都是32位(這兩個存儲器實際對應CPU中的指令高速緩存和數據高速緩存,雖然馮·諾伊曼結構要求指令和數據不加區分的存儲,但在CPU的高速緩存是做區分的)

寄存器堆

內部構成是3個32位寄存器。Ra(5位):寄存器編號,將該編號寄存器的內容放到busARb(5位):寄存器編號,將該編號寄存器的內容放到busBRw(5位):寄存器編號,在時鍾上升沿,如果寫使能信號有效,將busW的內容存入該寄存器。

busAbusB:兩組32位的數據輸出,busW:一組32位的數據輸入

存儲器

Address:32位的地址信號,該信號指定一個存儲單元,將其內容送到數據輸出信號。Write Enable:寫使能信號,在時鍾上升沿,如果寫使能信號有效(為1),將數據輸入信號的內容存入地址信號指定的存儲單元。

Date In:32位的數據輸入信號。Date Out:32位的數據輸出信號。

 

(四)建立數據通路

 建立數據通路,即根據指令的需求連接組件。指令的需求包括所有指令的共同需求、不同指令的不同需求。

所有指令的共同需求

主要包括取指令和更新PC

 

不同指令的不同需求

加法和減法指令的需求是最簡單的

 

邏輯運算指令有立即數參與,需要增加兩個二路選擇器,一個選擇數據輸入來自寄存器還是立即數,另一個選擇目的寄存器是rd還是rs

 

 訪存指令需要對立即數進行符號擴展,同時需要一個數據存儲器用來讀取和寫入數據

 

數據通路初步完成

 

(五)控制信號的集成

現有指令所需的控制信號

 

 控制信號哪來的呢?肯定來自指令。我們說opcodefunc決定了指定功能,理所當然,控制信號也由它們決定。

opcodefunc決定了8個信號

 

add指令(add  rd,rs,rt;PC = PC + 4)為例,看需要將哪些信號設為有效,哪些設為無效,哪些任意。如圖所示

 

 用同樣的分析方法,我們可以得到其它的指令的信號設置,它們的邏輯表達式如下:

根據數字邏輯的知識,我們很容易求出每個控制信號關於opcodefunc的邏輯表達式

例如,求$RegDest$,按行觀察

$RegDest = add + sub$

$add = rtype · func5 · ~func4·~func3·~func2·~func1·~func0$

$sub = rtype · func5 · ~func4·~func3·~func2·func1·~func0$

$rtype = ~op5·~op4·~op3·~op2·~op1·~op0$

同理可得到其它表達式的邏輯表達式

 

 觀察發現,這些表達式都是先相與、再相或,所以可用如下的電路來實現

 

 

參考鏈接:https://www.coursera.org/learn/jisuanji-zucheng/lecture/kRJer/506-kong-zhi-xin-hao-de-ji-cheng

 


免責聲明!

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



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