1 CPU 的功能及結構
1.1 CPU 功能
- 指令控制:完成取指令、分析指令和執行指令的操作,即程序的順序控制
- 操作控制:一條指令的功能往往是由若干操作信號的組合來實現的。CPU管理並產生由內存取出的每條指令的操作信號,把各種操作信號送往相應的部件,從而控制這些部件按指令的要求進行動作
- 時間控制:對各種操作加以時間上的控制。時間控制要為每條指令按時間順序提供應有的控制信號
- 數據加工:對數據進行算術和邏輯運算
- 中斷處理:對計算機運行過程中出現的異常情況和特殊請求進行處理
1.2 運算器
1 運算器結構
- 算術邏輯單元:主要功能是進行算術 / 邏輯運算
- 通用寄存器組:如 AX、BX、CX、DX、SP 等,用於存放操作數(包括源操作數、目的操作數及中間結果)和各種地址信息等(SP是堆棧指針,用於指示棧頂的地址)
- 暫存寄存器:用於暫存從主存讀取來的數據,該數據不能直接存放在通用寄存器中,否則會破壞原有數據內容
- 累加寄存器:它是一個通用寄存器,用於暫時存放 ALU 運算的結果信息,用於實現加法運算
- 程序狀態字寄存器:保留由算術邏輯運算指令或測試指令的結果而建立的各種狀態信息,如溢出標志(OP)、符號標志(SF)、零標志(ZF)、進位標志(CF)等。PSW中的這些位參與並決定微操作的形成
- 移位器:對運算結果進行移位運算
- 計數器:控制乘除運算的操作步數
2 運算器與 CPU 連接方式
-
專用數據通路連接方式
-
接法:根據指令執行過程中的數據和地址的流動方向安排線路
-
缺點:若直接使用導線進行連接,則會出現指令同時流向 ALU 的情況,會導致無法確定要執行的具體指令,解決方式有以下兩種:
-
使用多路選擇其根據信號選擇一路輸出
-
使用三態門控制每一路是否輸出
-
-
特點:性能較高、基本不存在數據沖突現象,但是結構復雜,硬件量大,不易實現
-
-
CPU 內部總線方式
-
將所有的寄存器的輸入端和輸出端都連接到一條公共的通路上,ALU 也與總線相連,其中一條通路設計一個暫存寄存器,方式兩端同時接收到同一個數據
-
特點:結構簡單,容易實現,但是數據傳輸存在較多的沖突現象,性能較低
-
1.3 控制器
1 控制器結構
- 程序計數器:用於指出下一條指令在主存中的存放地址。CPU就是根據PC的內容去主存中取指令的。因程序中指令(通常)是順序執行的,所以PC有自增功能
- 指令寄存器:用於保存當前正在執行的那條指令
- 指令譯碼器:僅對操作碼字段進行譯碼,向控制器提供特定的操作信號
- 微操作信號發生器:根據R的內容(指令)、PSW的內容(狀態信息)及時序信號,產生控制整個計算機系統所需的各種控制信號,其結構有組合邏輯型和存儲邏輯型兩種
- 時序系統:用於產生各種時序信號,它們都是由統一時鍾( CLOCK)分頻得到
- 存儲器地址寄存器:用於存放所要訪問的主存單元的地址
- 存儲器數據寄存器:用於存放向主存寫入的信思或從主存中讀出的信息
2 控制器與 CPU 連接
1.4 CPU 結構
2 指令執行過程
2.1 指令周期
-
指令周期:CPU 從主存中每取出並執行一條指令所需的全部時間
-
指令周期常常用若干機器周期來表示,機器周期又叫CPU周期
-
一個機器周期又包含若干時鍾周期(也稱為節拍、T 周期或 CPU 時鍾周期,它是 CPU 操作的最基本單位)
-
每個指令周期內機器周期數可以不等,每個機器周期內的 CPU 時鍾周期也可以不等
2.2 指令周期流程
-
指令周期流程圖
問:那么,怎么知道目前處於哪一個指令周期呢?
答:設置一個觸發器來控制當前處於哪一個周期
2.3 取指周期
- 當前指令地址送至存儲器地址寄存器記做:\((PC)→MAR\)
- CU 發出控制信號,經控制總線傳到主存,這里是讀信號,記做:\(1→R\)
- 將 MAR 所指主存中的內容經數據總線送入 MDR,記做:\(M(MAR)→MDR\)
- 將 MDR 中的內容(此時是指令)送入 IR,記做:\((MDR)→IR\)
- CU 發出控制信號,形成下一條指令地址,記做:\((PC)+1→PC\)
2.4 間址周期
- 將指令的地址碼送入 MAR,記做:\(Ad(IR)→MAR\) 或 \(Ad(MDR)→MAR\)
- CU 發出控制信號,啟動主存做讀操作,記做:\(1→R\)
- 將 MAR 所指主存中的內容經數據總線送入 MDR, 記做:\(M(MAR)→MDR\)
- 將有效地址送至指令的地址碼字段,記做: \(MDR→Ad(R)\)
2.5 執行周期
執行周期的任務是根據 IR 中的指令字的操作碼和操作數通過 AU 操作產生執行結果,同指令的執行周期操作不同,因此沒有統一的數據流向
具體細節見后續章節
2.6 中斷周期
- 中斷:暫停當前任務去完成其他任務
- 為了能夠恢復當前任務,需要保存斷點
- 一般使用堆棧來保存斷點,這里用 SP 表示棧頂地址,假設 SP 指向棧頂元素,進棧操作是先修改指針,后存入數據
- CU 控制將 SP 減 1,修改后的地址送入 MAR,記做:\((SP)-1→SP,(SP)→MAR\)
- 本質上是將斷點存入某個存儲單元,假設其地址為 a,故可記做:\(a→MAR\)
- CU 發出控制信號,啟動主存做寫操作,記做:\(1→W\)
- 將斷點 (PC內容) 送入 MDR,記做:\((PC)→MDR\)
- CU 控制將中斷服務程序的入口地址送入 PC,記做:\(向量地址→PC\)
2.7 指令執行方案
- 單指令周期
- 對所有指令都選用相同的執行時間來完成
- 指令之間串行執行
- 指令周期取決於執行時間最長的指令的執行時間
- 對於那些本來可以在更短時間內完成的指令,要使用這個較長的周期來完成,會降低整個系統的運行速度
- 多指令周期
- 對不同類型的指令選用不同的執行步驟來完成
- 指令之間串行執行
- 可選用不同個數的時鍾周期來完成不同指令的執行過程
- 需要更復雜的硬件設計
- 流水線方案
- 在每個時鍾周期啟動一條指令,盡量讓多條指令同時運行,但各自處在不同的執行步驟中
- 指令之間並行執行
3 CPU 內部單總線
- 內部總線:是指同一部件,如CPU內部連接各寄存器及運算部件之間的總線
- 系統總線:是指同一台計算機系統的各部件接口間互相連接的總線
3.1 寄存器之間的數據傳輸
例如:將 PC 中的內容送至 MAR
- 實現傳送的流程及控制信號為
- Pcout 有效,PC 內容送至總線,即 \((PC)→Bus\)
- MARin有效,總線內容送至 MAR,即 \(Bus→MAR\)
3.2 主存與 CPU 之間的數據傳送
例如:CPU 從主存中取指令
- 實現傳送的流程及控制信號為
- Pcout 和 MRAin有效,現行指令地址 → MAR,即 \((PC)→Bus→MAR\)
- CU 發出讀命令(通過控制總線發出,圖中未畫出),即 \(1→R\)
- MDRin 有效,即 \(M(MAR)→MDR\)
- MDRout 和 Rin 有效,現行指令 → IR,即 \(MDR→Bus→IR\)
3.3 執行算術或邏輯運算
例如:執行一條加法指令
- 微操作序列及控制信號為
- MDRout 和 MARin 有效,即 \(Ad(IR)→Bus→MAR\)
- CU 發出讀命令,即 \(1→R\)
- MDRin 有效,即 \(M(MAR)→數據線→MDR\)
- MDRout 和 Yin 有效,操作數→Y,即 \((MDR)→Bus→Y\)
- ACCout 和 ALUin 有效,CU 向 ALU 發送加命令,即 \((ACC)+(Y)→Z\)
- Zout 和 ACCin 有效,最終結果 → ACC,即 \(Z→ACC\)
3.4 例題
設有如圖所示的單總線結構,分析指令 ADD、(R0)、R1 的指令流程好人控制信號
- 分析指令功能和指令周期
- 功能:\(((R0))+(R1)→(R0)\)
- 指令周期:取指周期、間址周期、執行周期
- 取指周期:公共操作
時序 | 微操作 | 有效控制信號 |
---|---|---|
1 | \((PC)→MAR\) | PCout / MARin |
2 | \(M(MER)→MDR\\(PC)+1→PC\) | MemR / MARout / MDRinE |
3 | \((MDR)→IR\) | MDRout / IRin |
4 | 指令譯碼 | / |
- 間址周期:完成取數操作,被加數在主存中,加數已經放在寄存器 R1 中
時序 | 微操作 | 有效控制信號 |
---|---|---|
1 | \((R0)→MAR\) | R0out / MARin |
2 | \(M(MAR)→MDR\) | MemR / MARout / MDRinE |
3 | \((MDR)→Y\) | MRDout / Yin |
- 執行周期:完成取數操作,被加數在主存中,加數已經放在寄存器 R1 中
時序 | 微操作 | 有效控制信號 |
---|---|---|
1 | \((R1)+(Y)→Z\) | R1out / ALUin / CU 向 ALU 發出 ADD 控制信號 |
2 | \((Z)→MDR\) | Zout / MDRin |
3 | \((MDR)→M(MAR)\) | MemW / MDRoutE / MARout |
4 專用數據通路
4.1 取指周期
- \((PC)→MAR\) ,\(C_0\) 有效
- \((MAR)→\) 主存 ,\(C_1\) 有效
- \(1→R\) ,控制單元向主存發出讀命令
- \(M(MAR)→MDR\) ,\(C_2\) 有效
- \((MDR)→IR\) ,\(C_3\) 有效
- \((PC)+1→PC\) ,程序計數器加一
- \(Op(IR)→CU\) ,\(C_4\) 有效
5 控制器的功能的原理
5.1 控制器的結構
5.2 控制器的功能
- 從主存中取出一條指令,並指出下一條指令在主存中的位置
- 對指令進行譯碼或測試,產生相應的操作控制信號,以便啟動規定的動作
- 指揮並控制 CPU、主存、輸入和輸出設備之間的數據流動方向
5.3 控制單元的輸入輸出
- 輸入
- 指令寄存器 \(OP(IR)→CU\) 控制信號的產生與操作碼有關
- 時鍾:一個時鍾脈沖發一個操作命令或一組需要同時執行的操作命令
- 標志:根據相應的標志位決定下一步的操作
- 外來信號:如中斷請求信號、總線請求信號
- 輸出
- CPU 內部的控制信號
- 寄存器之間的數據傳輸
- PC 的修改
- 控制 ALU 進行相應的運算
- 到控制總線的信號
- 到存儲器
- 訪存控制信號 \(\overline{MREQ}\)
- 讀命令 \(\overline{RD}\)
- 寫命令 \(\overline{WR}\)
- 到 I/O 設備:訪問 I/O 設備的控制信號 \(\overline{IO}\)
- 中斷響應信號 \(INTA\)
- 總線響應信號 \(HLDA\)
- 到存儲器
- CPU 內部的控制信號
5.4 硬布線控制器
設計步驟:
- 選擇 CPU 的控制方式
- 安排微操作時序
- 電路設計
假設采用同步控制方式,一個機器周期安排在 3 個節拍
1 CPU 控制方式
- 同步控制方式
- 整個系統所有的控制信號均來自一個統一的時鍾信號
- 優點:控制電路簡單
- 缺點:運行速度慢
- 異步控制方式
- 異步控制方式不存在基准時標信號
- 各部件按自身固有的速度工作,通過應答方式進行聯絡
- 優點:運行速度快
- 缺點:控制電路比較復雜
- 聯合控制方式
- 對各種不同的指令的微操作實行大部分采用同步控制、小部分采用異步控制的辦法
2 安排微操作時序
-
原則
- 微操作的先后順序不得隨意更改
- 被控制對象的微操作,盡量安排在一個節拍內完成
- 占用間斷時間的微操作,盡量安排在一個節拍內完成,並允許有先后順序
-
取指周期
- \(T_0:PC → MAR\)
- \(T_0:1 → R\) ,存儲器空閑即可
- \(T_1:M(MDR) → MDR\) ,在 \(PC → MAR\) 之后
- \(T_1:MDR → IR\) ,在 \(PC → MAR\) 之后
- \(T_2:OP(IR) → ID\) ,在 \(M(MDR) → MDR\) 之后
- \(T_2:(PC)+1→ PC\) ,在 \(MDR → IR\) 之后
-
間址周期
- \(T_0:Ad(IR) → MAR\)
- \(T_0:1 → R\)
- \(T_1:M(MAR) → MDR\)
- \(T_2:MDR → Ad(IR)\)
-
執行周期
-
非訪存指令
- ACC 清零:CLA
- \(T_0\)
- \(T_1\)
- \(T_2:0 → AC\)
- ACC 取反:COM
- \(T_0\)
- \(T_1\)
- \(T_2:\overline{AC} → AC\)
- 算術右移:SHR
- \(T_0\)
- \(T_1\)
- \(T_2:L(AC) → R(AC)\)
- \(T_2:AC_0 → AC_0\)
- 循環左移:CSL
- \(T_0\)
- \(T_1\)
- \(T_2:R(AC) → L(AC),AC_0 → AC_n\)
- 停機:STP
- \(T_0\)
- \(T_1\)
- \(T_2:0 → G\)
- ACC 清零:CLA
-
訪存指令
- 加法指令:ADD X
- \(T_0:Ad(IR) → MAR,1 → R\)
- \(T_1:M(MAR) → MDR\)
- \(T_2:(AC)+(MDR) → AC\)
- 存數指令:STA X
- \(T_0:Ad(IR) → MAR,1 → W\)
- \(T_1:AC → MDR\)
- \(T_2:MDR → M(MAR)\)
- 取數指令:LDA X
- \(T_0:Ad(IR) → MAR,1 → R\)
- \(T_1:M(MAR) → MDR\)
- \(T_2:MDR → AC\)
- 加法指令:ADD X
-
轉移指令
- 無條件轉移:JMP X
- \(T_0\)
- \(T_1\)
- \(T_2:Ad(IR) → PC\)
- 條件轉移:BAN X
- \(T_0\)
- \(T_1\)
- \(T_2:A_0·Ad(IR)+\overline{A_0}·PC → PC\)
- 無條件轉移:JMP X
-
-
中斷周期
- \(T_0:a → MAR\)
- \(T_0:1 → W\) ,存儲器空閑即可
- \(T_0:0 → EINT\) ,硬件關中斷
- \(T_1:(PC) → MDR\) ,內部數據通路空閑即可
- \(T_2:MDR → M(MAR)\) ,在 \((PC) → MDR\) 之后
- \(T_2:向量地址 → PC\) ,在 \((PC) → MDR\) 之后
3 電路設計
-
組合邏輯設計
-
原則
- 列出操作時間表
- 寫出微操作命令的最簡表達式
- 畫出邏輯圖
-
操作時間表
-
取指階段
-
間址階段
-
執行階段
-
-
微操作最簡表達式
以 \(M(MAR) → MDR\) 為例,微操作最簡表達式如下:
\[FE·T_1+IND·T_1(ADD+STA+LDA+JMP+BAN)+EX·T_1(ADD+LDA)\\ =T_1\{FE+IND(ADD+STA+LDA+JMP+BAN)+EX(ADD+LDA)\} \] -
畫出邏輯圖
-
5.5控制器的設計思路
- 硬布線工作原理:微操作控制信號由組合邏輯電路根據當前的指令碼、狀態和時序,即時產生
- 微程序工作原理:事先把微操作控制信號存儲在一個專門的存儲器(控制存儲器)中,將每一條機器指令編寫成一個做程序,這些微程序可以存到一個控制存儲器中,用尋址用戶程序機器指令的辦法來尋址每個微程序中的微指令
微程序控制器的結構
- 微地址形成部件:產生初始微地址和后繼微地址,以保證微指令的連續執行
- 微地址寄存器:接收微地址形成部件送來的微地址,為在 CM 中讀取微指令作准備
- 地址譯碼器:將地址碼轉化為存儲單元控制信號
- 控制存儲器(CM):用於存放各指令對應的微程序,控制存儲器可用只讀存儲器 ROM 構成
- CMDR:用於存放從CM 中取出的微指令,它的位數同做指令字長相等
6 微指令
6.1 微指令的格式
-
水平型微指令
-
一次能定義並執行多個並行操作
-
優點:微程序短,執行速度快
-
缺點:微指令長,編寫程序實現比較麻煩
-
-
垂直型微指令
-
類似於機器指令操作碼的方式,由未操作碼字段規定微指令的功能
-
優點:微指令短、簡單、規整,便於編寫程序
-
缺點:微程序長、執行速度慢、工作效率低
-
-
混合型微指令
- 在垂直型的基礎上增加一些不太復雜的操作
- 微指令較短,便於編寫
- 微程序也不長,執行速度加快
6.2 微指令的編碼方式
-
直接編碼(直接控制)方式
-
在微指令的操作控制字段中,每一位代表一個微操作命令
-
優點:簡單、直觀、執行速度快、操作並行性號
-
缺點:微指令字長過長,n 個微命令就要求微指令的操作字段由 n 位,造成控存容量極大
-
-
字段直接編碼方式
-
將微指令的控制字段分成若干“段”,每段經譯碼后發出控制信號
- 互斥性微命令分在同一段內,相容性微命令分在不同段內
- 每個小段中包含的信息位不能太多,否則將增加譯碼線路的復雜性和譯碼時間
- 一般每個小段還要留出一個狀態,表示本字段不發出任何微命令
- 通常用 000 表示不操作
-
-
字段間接編碼方式
-
一個字段的某些微命令需由另一個字段中的某些微命令來解釋由於不是靠字段直接譯碼發出的微命令,故稱為字段間接編碼,又稱隱式編碼
-
優點:可以進一步縮短微指令字長
-
缺點:削弱了微指令的並行控制能力,通常作為字段直接編碼方式的一種輔助手段
-
6.3 微指令的地址形成方式
- 微指令的下地址字段:微指令格式中設置一個下地址字段,由微指令的下地址字段直接指出后繼微指令的地址,這種方式又稱為斷定方式
- 根據機器指令的操作碼形成:當機器指令取至指令寄存器后,微指令的地址由操作碼經
微地址形成部件形成 - 増量計數器法 \((CMAR)+1→CMAR\)
- 分支轉移轉移方式:指明判別條件;轉移地址:指明轉移成功后的去向
- 通過測試網絡
- 由硬件產生微程序入口地址
- 第一條微指令地址由專門硬件產生
- 中斷周期由硬件產生中斷周期微程序首地址
6.4 硬布線與微程序的比較
類別 / 對比項目 | 微程序控制器 | 硬布線控制器 |
---|---|---|
工作原理 | 微操作控制信號以微程序的形式存放在控制存儲器中,執行指令時讀出即可 | 微操作控制信號由組合邏輯電路 根據當前的指令碼、狀態和時序,即時產生 |
執行速度 | 慢 | 快 |
規整性 | 較規整 | 繁瑣、不規整 |
應用場合 | CISC / CPU | RISC / CPU |
易擴充性 | 易擴充修改 | 困難 |
7 指令流水線
7.1 流水線定義
- 指令流水線分為取指、分析、執行階段
- 取指:根據 PC 內容訪問主存儲器,取出一條指令送到 IR 中
- 分析:對指令操作碼進行譯碼,按照指定的尋址方式和地址字段中的內容形成操作數的有效地址 EA,並從有效地址 EA 中取出操作數
- 執行:根據操作碼字段,完成指令規定的功能,即把運算結果寫到通用寄存器或者主存中
假設取指、分析、執行三個階段的時間都相等,用 t 表示,按照以下幾種執行方式分析 n 條指令執行的時間
1 順序執行方式
-
傳統的馮諾依曼機采用順序執行方式,又稱串行執行方式
-
優點:控制簡單,硬件代價小
-
缺點:執行指令的速度較慢,在任何時刻,處理機中只有一條指令在執行,各部件利用率很低
-
總耗時:\(T=3nt\)
2 一次重疊執行方式
-
優點:程序的執行時間縮短了近 1/3,各部件利用率明顯提高
-
缺點:硬件需要較大開銷,控制過程也比順序執行復雜度高
-
總耗時:\(T=(1+2n)t\)
3 二次重疊執行方式
-
優點:與順序相比,執行時間縮短了近 2/3,是一種理想的執行方式
-
一般將指令執行分成 5 個階段
7.2 流水線表示
1 指令執行過程圖
2 指令執行時空圖
7.3 流水線的性能指標
1 吞吐率
-
吞吐率:在單位時間內流水線所完成的任務數量,或是輸出結果的數量
-
假設任務數為 n,處理完 n 個任務所用時間為 \(T_k\) ,則流水線的吞吐率為 \(TP=\frac{n}{(k+n-1)△t}\) ,當任務量 n 趨於無窮大時,得最大吞吐率為 \(TP_{max}=\frac{1}{△t}\) (理想情況下)
-
第一個(最后一個)指令從開始到結束的時間稱為裝入(排空)時間
-
一條指令的執行分為 k 個階段,每個階段耗時\(△t\) ,一般取 \(△t=\) 一個時鍾周期
2 加速比
-
加速比:完成同樣一批任務,不使用流水線所用的時間與使用流水線所用的時間之比
-
設 \(T\) 表示不使用流水線時的執行時間,\(T_k\) 表示使用流水線時的執行時間,則計算流水線加速比的公式為 \(S={T_0 \over T_k}\) (理想情況下)
-
單獨完成一個任務耗時為 \(k\Delta t\) ,則順序完成 n 個任務總耗時 \(T_0=nk\Delta t,\ T_k=(k+n-1)t\) ,則加速比為 \(S={kn\Delta t \over (k+n-1)\Delta t}={kn \over k+n-1}\) ,當任務量 n 趨於無窮大時,最大加速比為 \(S_{max}=k\)
3 效率
-
效率:流水線的設備利用率稱為流水線的效率
-
在時空圖上,流水線效率定義為 n 個任務占用的時空區域的有效面積與 n 個任務所用的時間與 k 個流水段所圍成的時空區域的總面積之比(理想情況下)
-
流水線效率公式為 \(E={n 個任務占用的時空區域的有效面積 \over n 個任務所用的時間與 k 個流水段所圍成的時空區域的總面積}={T_0 \over kt_k}=(下圖中{S_紅 \over S_藍})\)
-
當任務量 n 趨於無窮時,最高效率 \(E_{max}=1\)
7.4 流水線的影響因素
1 結構相關(資源沖突)
-
由於多條指令在同一時刻爭用同一資源而形成的沖突稱為結構相關
-
解決方法
- 后一相關指令暫停一周期
- 資源重復配置:數據存儲器 + 指令存儲器
2 數據相關(數據沖突)
-
在一個程序中,存在必須等前一條指令執行結束后一才能執行的指令的情況稱為數據相關
-
解決方法
-
將相關指令暫停幾個周期,直至數據相關問題消失后再執行
-
硬件阻塞(stall)
-
軟件插入(NOP)
-
-
數據旁路技術
-
編譯優化:通過調整指令順序來解決數據相關問題
-
-
數據基本操作:讀(R)、寫(W)
-
沖突的基本類型
- 寫后讀(RAW):“按序發射、按序完成”只可能出現該沖突
- 讀后寫(WAR):亂序發射導致
- 寫后寫(WRW):亂序完成導致
3 控制相關(控制沖突)
-
流水線遇到轉移指令和其他改變 PC 值的指令而造成的斷流時,會引起控制相關
-
解決方法
- 盡早判別轉移是否發生,盡早生成轉移目標地址
- 預取轉移成功和不成功兩個控制方向上的目標指令
- 加快和提前形成條件碼
- 提高轉移方向的猜准率
7.5 流水線的分類
1 根據級別分類
- 部件功能級流水線:將復雜的算術邏輯運算組成流水線工作方式
- 處理機級流水線:把一條指令解釋過程分成多個子過程,如取指、譯碼、執行、訪存及寫回 5 個子過程
- 處理機間流水線:是一種宏流水,其中每一個處理機完成某一專門任務,各個處理機所得到的結果需存放在與下一個處理機所共享的存儲器中
2 根據功能分類
- 單功能流水線:只能實現一種固定的專門功能的流水線
- 多功能流水線:通過各段間的不同連接方式可以同時或不同時地實現多種功能的流水線
3 根據連接方式分類
- 靜態流水線:在同一時間內,流水線的各段只能按同一種功能的連接方式工作
- 動態流水線:在同一時間內,當某些段正在實現某種運算時,另一些段卻正在進行另一種運算
4 根據反饋信號分類
- 線性流水線:從輸入到輸出,每個功能段只允許經過一次,不存在反饋回路
- 非線性流水線:存在反饋回路,從輸入到輸出過程中,某些功能段將數次通過流水線,這種流水線適合進行線性遞歸的運算
7.6 流水線的多發技術
1 超標量技術
-
每個時鍾周期內可以並發多條獨立指令
-
要配置多個功能部件
-
不能調整指令的執行順序,只能編譯優化,將可並行的指令搭配起來
2 超流水技術
-
在一個時鍾周期內再分段
-
在一個時鍾周期內一個功能部件使用多次
-
不能調整指令的執行順序,只能通過編譯優化
3 超長指令字
-
由編譯程序挖掘出指令間潛在的並行性
-
將多條能並發執行的指令組合成一條
-
具有多個操作碼字段的超長指令字
8 本章總結
-
思維導圖