計算機組成原理筆記——處理器(1)[未完]

Chapter4_邏輯設計基礎


部件介紹

組合邏輯部件不遵循時序,有輸入就有輸出

時序部件:

  • 存儲信息 Store information
  • PC 指令內存, 數據內存

-組合邏輯

  • 與門
  • 加法器
  • 多路選擇開關 Multiplexer
  • ALU 算術邏輯單元
    • 9 條指令但不是9種運算
      • lw,sw的加法
      • 減法
      • AND , OR
      • set-on-less-than
      • 共五種運算

-狀態組件

寄存器輸出信號在上升沿變化(有效表示邏輯高,無效表示邏輯低)

寫控制的寄存器,需要在時鐘沿上升時write寫入信號爲真,纔會根據輸入改變輸出

時鐘控制策略

  • 組合邏輯電路至於時鐘間隔中
  • 從時序部件取出,置入時序部件,從寄存器取出,放入內存或寄存器中
  • 組合邏輯完成後的下一個時鐘再傳回PC+4

數據通路(Datapath)和控制器

-Datapath組件

​ CPU內處理數據和地址的組件

  • 寄存器 Registers
  • 算術邏輯單元 ALU
    • 兩個32位輸入,一個32位輸出,一個1位輸出(表示結果是否爲0)
  • 多路選擇器 MUX
  • 內存 Data Memory
    • 其實是DCache,在教學模型中簡化了
  • 程序計數器 PC
    • 任何類型的指令都需要使用到PC
  • **符號擴展 Sign-extend **
    • 有符號數擴展——高位填充

寄存器堆,ALU

-操作簡述

R-format Instruction

  • 讀取兩個寄存器
  • 進行算術邏輯運算
  • 結果寫入寄存器

Load/Store Instructions

  • 讀取寄存器
  • 使用16位立即數進行計算地址(使用算術邏輯單元進行符號擴展)
    • Load: 讀取內存,更新寄存器
    • Store: 將寄存器值寫入內存

Branch Instructions

  • 需要兩種指令beq, bne的原因:
    • 跳轉範圍一共是232 ,而分支跳轉的範圍是216 ,若beq無法達到該位置,則可以使用bne加j完成跳轉
  • 計算分支目標地址
  • 比較操作數

-操作詳述(結合圖片&暫不考慮控制信號)

區分

  1. R-format Instructions (指令包含三個寄存器)

    • 獲取三個寄存器地址,進入寄存器堆
    • 將兩個讀取數據置入ALU,通過ALUOP控制運算方法。
    • 輸出值爲數值,無需進入數據內存,直接返回到寄存器堆
    • 將結果寫入目標寄存器中
    • PC獲取新的指令地址(PC+4),完成
  2. Load/Store Instructions (指令包含兩個寄存器和一個16位有符號立即數)

    • 獲取寄存器地址,進入寄存器堆,立即數通過擴展進入ALU

    • 將內存地址讀取置入ALU,與立即數進行加法運算得到準確的內存地址

    • 如果是Load指令

      • 進入數據內存讀取數據,返回到寄存器堆

      • 將結果寫入目標寄存器中(寫寄存器通過RegDst控制)

        這裏值得注意的一點是,雖然我們寫的是

        lw $t0 (0)$a0
        

        但是$t0作爲需要被寫入的寄存器,在機器碼中處於[20:16]的位置,也就是如圖所示,Read register2的位置,於是通過多重選擇器,導入到了Write register的位置,進行寫入操作

    • 如果是Store指令

      • 將從Read Register2讀取到的數據(Read Data2)傳輸到數據內存的寫入區(Write Data)進行寫入操作

        之所以是從Read Register2讀取數據,見上面Load中解釋

    • PC獲取新的指令地址,完成

  3. Branch Instructions (指令包含兩個寄存器和一個16位有符號立即數)

    • 獲取寄存器地址,進入寄存器堆,立即數通過擴展進入Shift-left左移兩位

      左移兩位是因爲地址信息需要乘以數據長度

    • 兩個寄存器讀取的數據進入ALU進行運算,ZERO位輸出是否相等的結果

    • 結果通過組合邏輯電路輸入到右上角的MUX進行多重選擇,若滿足條件,則使用PC+4+L,否則使用PC+4

      組合邏輯電路此圖未顯示

    • PC獲取新的指令地址,完成

控制信號詳述

ALU controller

ALU控制信號的分配

  • Load/Store : F = add
  • Branch: F = subtract
  • R-type F depends on function field
ALU control Function
0000 AND
0001 OR
0010 add
0110 subtract
0111 set-on-less-than
1100 NOR

每個數據通路同時只能進行一個操作

ALU 控制信號生成方式

  • 根據2位操作碼和6位功能字段生成ALU控制信號

ALU控制信號對應的OP、Funct字段

通過將[27:26]的ALUop和[6:0]的Funct字段聯合控制,可以由組合邏輯電路產生控制信號,具體實現方式可以通過列出帶無關項真值表獲得。(如下圖)

真值表


主控制單元

​ 數據通路如何得知需要進行哪些操作呢?除了ALU通過ALU控制信號得知運算單元需要進行的運算方式,讀寫控制多重選擇都需要控制信號的注入,而這些控制信號,就由主控制單元根據[31:26]的Op字段操作碼運算得出~

控制信號

控制信號含義

  1. RegDst [Register Destination]
    • 在寄存器堆處,用於區分存取指令和R指令(存取指令寫入rt,R指令寫入rd)
  2. RegWrite [Register Write]
    • 寄存器堆可寫入
  3. ALUSrc [我並不能想到全稱是什麼]
    • 用於MUX,ALU操作數之一爲Read Data1,第二個操作數可選,ALUSrc用於選擇Read Data2或是Sign-extend後的offset立即數
  4. **PCSrc ** [Src可能是System resource controller?]
    • 正常情況,PC自增之後替換原PC,但在分支指令中,若分支爲真,則需要用PC+4+L替換原PC,PCSrc即用於Branch Instructions
  5. MemRead [Memory Read]
    • 內存數據讀取使能,用於load word指令
  6. MemWrite [Memory Write]
    • 內存數據寫入使能,用於save word指令
  7. MemtoReg [Memory to Register?]
    • 寫入寄存器數據是否來自內存,用於lw指令

下圖即爲不同指令所對應需要的控制位信息:
不同指令對應需要的控制位信息


(未完,若有錯誤請大佬不吝指正)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章