本次筆記内容:
P31 計算機組成原理(31)
P32 計算機組成原理(32)
我的計組筆記彙總:計算機組原理成筆記
視訊位址:計算機組成原理 清華大學劉衛東 全58講 國家精品課程 1080P 更完
幻燈片見我的 GitHub 倉庫:計算機組成原理 src/slides
本節課繼續由老師講解實驗;本節課後的下周周一、周四由同學們來講解自己的進度。
本将标題為:支援
指令流水
的計算機系統設計與實作。
盡量做流水,實在不行做多周期。
這節課也是對計算機組成原理的綜述、複習。很重要。
文章目錄
- 内容提要
- 實驗目的
- 實驗目标
- 指令系統設計
- 指令分類和指令格式
- 流水的實作
- 指令的分類
- 指令格式功能描述
- 從指令分析中能得到什麼?
- ALU需要完成哪些功能?
- 寄存器組構成?
- 指令功能及執行步驟
- CPU總體設計
- CPU的外部特性
- CPU主要組成
- ALU設計
- 寄存器組設計
- 與記憶體和外設的接口
- 階段寄存器設計
- 流水沖突
- 流水線CPU基本結構
- 實驗步驟
- 時間安排
内容提要
- 實驗目的及目标
- 指令系統分析
- 指令執行驟舉例
- CPU架構設計
- 讨論
做計算機第一件事,幹什麼呢?
設計指令系統
。老師已經給大家了。
指令系統分析實際上就是需求分析
。
實驗目的
- 進一步了解和掌握 Von Neumann 結構計算機各部件組成及内部工作原理
- 進一步掌握計算機指令系統及指令功能的實作方法
- 進一步加深對指令流水概念、實作機制和流水沖突等的了解
- 培養
(計算機系唯一需要在硬體上動手的課,此外,CS國防生可能以後還要做很多硬體相關的東西)和調試的能力硬體設計
- 培養團隊管理、合作精神及表達溝通能
實驗目标
最低目标
- 實作 THCO MIPS 指令系統,能運作已有的監控程式
- 多周期/指令流水CPU
- 支援I/O操作
- 可在監控程式下運作應用程式
- 完善監控程式等輔助軟體系統
更高目标
- 更好地解決流水線“沖突”問題
- 中斷、分時、雙機通信
- 應用程式
- 與編譯系統的結合
- …
指令系統設計
- 16位字長單字指令
- 滿足指令系統的基本要求
- 完備性、規整性、高效性、相容性
- 容易實作指令流水
- 指令格式簡單、尋址方式簡單
- MIPS 16e 指令系統格式
- 建議的指令系統
- 見實驗指導書
指令分類和指令格式
- 基本可歸結到寄存器型、立即數型和跳轉型三類MIPS典型指令格式類型中
- 指令格式簡單,尋址方式較少,容易實作流水
狀态轉移圖和指令各執行步驟的操作功能
上圖是多周期的轉移圖。可以用于參考。
我們的下一條指令
PC = PC + 1
,因為我們的指令系統是
按照字進行編址的
。
如果加入中斷,可以在取指前,加一個中斷跳轉。
流水的實作
如上是一個參考,我們至少要加入“暫停”,至少能檢測出沖突。
指令的分類
按照指令的操作類型可分為4種:
- 純資料:R型、I型
- 控制流相關:B型、J型。
R型指令
(寄存器-寄存器型)從寄存器堆中讀取源操作數,結果寫回寄存器堆:SLL、SRL、SRA、SLLV、SRLV、SRAV、MTSP、MOVE、ADDU、SUBU、MFPC、SLT、SLTU、CMP、NEG、AND、OR、xOR、NOT、MFIH、MTIH。
I型指令
(立即數型)使用一個(4位或5位或8位或11位)立即數作為一個源操作數:SW_Rs、SW_SP、SW、LW_SP、LW、 ADDIU3、 ADDSP3、 ADDSP、ADDIU、LI、SLTI、 SLTUI、CMPI、INT。
B型指令
(立即數跳轉型)使用一個立即數作為跳轉的目标位址:B、BEQZ、BNEZ、 BTEQZ、 BTNEZ。
J型指令
(寄存器跳轉型)使用寄存器的值作為跳轉的目标位址:JR、JRRA、JALR
指令格式功能描述
R型指令:
具體可見參考書。
從指令分析中能得到什麼?
老師希望同學們得到如下問題的答案:
- ALU需要完成哪些功能?
- 寄存器組構成?
- PC增量?(剛才讨論了,在我們的指令系統中是1個字)
ALU需要完成哪些功能?
+
-
<<
>>
AND
NOT
OR
XOR
此外,還要考慮操作數的來源。
寄存器組構成?
兩類: 通用寄存器 、 專用寄存器 。
通用寄存器:8個,R0到R7。
專用寄存器:
- PC:指令寄存器;
- SP:棧頂寄存器;
- RA:傳回值寄存器;
- RH:中斷寄存器;
- T:标志寄存器。
指令功能及執行步驟
資料通路畫好了,繪制指令流程圖、指令流程表。
填完一條指令,在資料通路上走一遍看看。
CPU總體設計
CPU的外部特性
輸入信号
- CLK、INT、 Reset
輸出信号
- 對基本存儲的控制信号(總線)
- 基本存儲的位址信号
- 對擴充存儲的控制信号(總線)
- 擴充存儲的位址信号
入出信号
- 基本存儲的資料
- 擴充存儲的資料
即,考慮總體的外部條件。
CPU主要組成
- ALU:另設加法器完成位址計算
- Register File
- PC、SP、IH、RA
- 步驟間寄存器組
- 控制信号生成部件(Decoder):
- Forwarding
- Hazard testing
- 動态預測
展現設計功力的地方,而實作可以分工進行。
ALU設計
功能:
- 加、減、與、或、非、比較…
接口:
- 輸入:A、B、OpCode
- 輸出:F
寄存器組設計
功能:
- 通用寄存器:多少個?
- 提供資料通路:什麼時候讀?什麼時候寫?寫的條件是什麼?
接口:
- A口位址、B口位址、寫入寄存器位址
- A口資料、B口資料、寫入資料
- 寫入信号
- 時鐘信号
與記憶體和外設的接口
與序列槽通訊時,是一個異步操作(握手)。
階段寄存器設計
階段間需要傳遞的所有資訊:
- 中間資料
- 參數
- 控制信号
流水沖突
- 結構沖突(一定要做)
- 資料沖突(可以作為重點)
- 控制沖突(牽扯精力較多,可不做)
- 檢測
- 處理
流水線CPU基本結構
最後要呈現類似這種圖,給老師。上面這個圖畫的不太好。
實驗步驟
确定指令系統
- 指令功能
- 指令格式
确定指令的執行流程
- 指令執行步驟劃分
- 各步驟完成的具體功能
确定硬體組成子產品
- ALU、RegisterFile、InsDecoder、PCAdder、MemInterface
确定每個子產品的功能
- 能否完成每條指令的功能要求
給出每個子產品的功能描述
- 具體實作,注意時序關系
時間安排
基本部分:
- 指令功能分析
- 資料通路設計、主要部件的功能及控制信号(18日)
- 指令執行步驟劃分(指令流程圖)
- 指令分步驟控制信号(指令流程表)
- 控制器詳細設計(流水沖突控制)(21日)
- 子產品結構及參數(25日)
- 系統實作及調試
擴充部分:
- 如果是硬體擴充,要在前面各步驟中展現
- 12月6日(檢查完成,回收上交盒子)
- 12月13日(實驗報告送出)
- 實驗目标确定:每組給出目标和方案,準備PPT(資料通路設計、指令執行步驟、各部件主要控制信号)
- 指令流程圖和指令流程表,完整設計框圖(包括控制信号):每組給出較為詳細的設計,并準備PPT