天天看點

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

本次筆記内容:

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典型指令格式類型中
  • 指令格式簡單,尋址方式較少,容易實作流水

​狀态轉移圖和指令各執行步驟的操作功能​

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

上圖是多周期的轉移圖。可以用于參考。

我們的下一條指令 ​

​PC = PC + 1​

​​ ,因為我們的指令系統是​

​按照字進行編址的​

​。

如果加入中斷,可以在取指前,加一個中斷跳轉。

流水的實作

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

如上是一個參考,我們至少要加入“暫停”,至少能檢測出沖突。

指令的分類

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

按照指令的操作類型可分為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型指令:

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

具體可見參考書。

從指令分析中能得到什麼?

老師希望同學們得到如下問題的答案:

  • ALU需要完成哪些功能?
  • 寄存器組構成?
  • PC增量?(剛才讨論了,在我們的指令系統中是1個字)

ALU需要完成哪些功能?

+
-
<<
>>
AND
NOT
OR
XOR      

此外,還要考慮操作數的來源。

寄存器組構成?

兩類: ​通用寄存器​ 、 ​專用寄存器​ 。

通用寄存器:8個,R0到R7。

專用寄存器:

  • PC:指令寄存器;
  • SP:棧頂寄存器;
  • RA:傳回值寄存器;
  • RH:中斷寄存器;
  • T:标志寄存器。

指令功能及執行步驟

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

資料通路畫好了,繪制指令流程圖、指令流程表。

填完一條指令,在資料通路上走一遍看看。

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口資料、寫入資料
  • 寫入信号
  • 時鐘信号

與記憶體和外設的接口

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

與序列槽通訊時,是一個異步操作(握手)。

階段寄存器設計

階段間需要傳遞的所有資訊:

  • 中間資料
  • 參數
  • 控制信号

流水沖突

  • 結構沖突(一定要做)
  • 資料沖突(可以作為重點)
  • 控制沖突(牽扯精力較多,可不做)
  • 檢測
  • 處理

流水線CPU基本結構

【Computer Organization筆記16】大實驗任務詳細說明:支援指令流水的計算機系統設計與實作

最後要呈現類似這種圖,給老師。上面這個圖畫的不太好。

實驗步驟

​确定指令系統​

  • 指令功能
  • 指令格式

​确定指令的執行流程​

  • 指令執行步驟劃分
  • 各步驟完成的具體功能

​确定硬體組成子產品​

  • ALU、RegisterFile、InsDecoder、PCAdder、MemInterface

​确定每個子產品的功能​

  • 能否完成每條指令的功能要求

​給出每個子產品的功能描述​

  • 具體實作,注意時序關系

時間安排

基本部分:

  • 指令功能分析
  • 資料通路設計、主要部件的功能及控制信号(18日)
  • 指令執行步驟劃分(指令流程圖)
  • 指令分步驟控制信号(指令流程表)
  • 控制器詳細設計(流水沖突控制)(21日)
  • 子產品結構及參數(25日)
  • 系統實作及調試

擴充部分:

  • 如果是硬體擴充,要在前面各步驟中展現
  • 12月6日(檢查完成,回收上交盒子)
  • 12月13日(實驗報告送出)
  • 實驗目标确定:每組給出目标和方案,準備PPT(資料通路設計、指令執行步驟、各部件主要控制信号)
  • 指令流程圖和指令流程表,完整設計框圖(包括控制信号):每組給出較為詳細的設計,并準備PPT

繼續閱讀