5.中央处理器
考綱內(nèi)容
- CPU的功能和基本結(jié)構(gòu)
- 指令執(zhí)行過程
- 數(shù)據(jù)通路的功能和基本結(jié)構(gòu)
- 控制器的功能和工作原理
- 硬布線控制器
- 微程序控制器
- 微程序、微指令和微命令、微指令格式
- 微命令的編碼方式
- 微地址的形成方式
- 指令流水線
- 指令流水線的概念
- 指令流水線的基本實現(xiàn)
- 超標(biāo)量和動態(tài)流水線的基本概念
1. CPU的功能和基本結(jié)構(gòu)
1. CPU的功能
- CPU由運算器和控制器組成
- 控制器:負責(zé)協(xié)調(diào)并控制計算機各部件執(zhí)行程序的指令序列,包括取指令、分析指令和執(zhí)行指令
- 運算器:對數(shù)據(jù)進行加工
- CPU具體功能
- 指令控制:完成取指令、分析指令和執(zhí)行指令的操作,即程序的順序控制
- 操作控制:CPU管理并產(chǎn)生由內(nèi)存取出的每條指令的操作信號,把各種操作信號送往相應(yīng)的部件,從而控制這些部件按指令的要求進行動作
- 時間控制:為每條指令按時間順序提供應(yīng)有的控制信號
- 數(shù)據(jù)加工:對數(shù)據(jù)進行算術(shù)和邏輯運算
- 中斷處理:對計算機運行過程中出現(xiàn)的異常情況和特殊請求進行處理
2. CPU的基本結(jié)構(gòu)
1. 運算器
- 任務(wù):接收從控制器送來的命令并執(zhí)行相應(yīng)的動作,對數(shù)據(jù)進行加工和處理
- 組成
- 算術(shù)邏輯單元(ALU):進行算術(shù)/邏輯運算
- 暫存寄存器:暫存從主存讀來的數(shù)據(jù)(不能放在通用寄存器中,否則會破壞其原有內(nèi)容),對應(yīng)用程序員透明
- 累加寄存器(ACC):暫存ALU運算的結(jié)果信息,可以作為加法運算的 一個輸入端
- 通用寄存器組:存放操作數(shù)(源操作數(shù)、目的操作數(shù)及中間結(jié)果)和各種地址信息等。如AX、BX、SP(堆棧指針,指示棧頂?shù)牡刂?#xff09;等,其位數(shù)等于機器字長
- 程序狀態(tài)字寄存器(PSW):保留由算術(shù)邏輯運算指令或測試指令的結(jié)果而建立的各種狀態(tài)信息。如溢出標(biāo)志(CF)、符號標(biāo)志(SF)、零標(biāo)志(ZF)、進位標(biāo)志(CF)等
- 移位器:對操作數(shù)或運算結(jié)果進行移位運算
- 計數(shù)器:控制乘除運算的操作步數(shù)
2. 控制器
- 任務(wù):執(zhí)行指令,每條指令的執(zhí)行是由控制器發(fā)出的一組微操作實現(xiàn)的
- 組成
- 程序計數(shù)器(PC):指出下一條指令在主存中的存放地址,有自增功能,其位數(shù)取決于存儲器的容量(指令條數(shù))
- 指令寄存器(IR):保存當(dāng)前正在執(zhí)行的指令,其位數(shù)等于指令字長
- 指令譯碼器(ID):對操作碼字段進行譯碼,向控制器提供特定的操作信號
- 存儲器地址寄存器(MAR):存放要訪問的主存單元的地址,其位數(shù)取決于存儲器容量
- 存儲器數(shù)據(jù)寄存器(MDR):存放向主存寫入的信息或從主存讀出的信息,其位數(shù)等于存儲字長
- 時序系統(tǒng):產(chǎn)生各種時序信號,由統(tǒng)一時鐘(CLOCK)分頻得到
- 微操作信號發(fā)生器:根據(jù)IR的內(nèi)容(指令)、PSW的內(nèi)容(狀態(tài)信息)及時序信號,產(chǎn)生當(dāng)前計算機各部件要用到的控制信號。分為組合邏輯型和存儲邏輯型兩種
3. 寄存器的透明度
- 用戶可見
- 移位器
- 通用寄存器組
- 程序狀態(tài)字寄存器(PSW)
- 程序計數(shù)器(PC)
- 用戶不可見
- 存儲器地址寄存器(MAR)
- 存儲器數(shù)據(jù)寄存器(MDR)
- 指令寄存器(IR)
- 暫存寄存器
2. 指令執(zhí)行過程
1. 指令周期
- 定義:CPU從主存中取出并執(zhí)行一條指令的時間
- 組成
- 取指周期:取指令,一次訪存
- 取出的是指令,以此區(qū)分指令和數(shù)據(jù)
- 間址周期:取有效地址,一次訪存
- 執(zhí)行周期:取操作數(shù),一次訪存
- 取出的是操作數(shù),以此區(qū)分指令和數(shù)據(jù)
- 中斷周期:保存程序斷點,一次訪存
- 進棧操作是將SP-1(計算機的堆棧中向低地址增加)
- 有中斷請求,才會進入中斷周期
- 取指周期:取指令,一次訪存
- 實現(xiàn)
- 在CPU內(nèi)設(shè)置4個標(biāo)志觸發(fā)器,“1”表示有效
- FE——取指周期
- IND——間址周期
- EX——執(zhí)行周期
- INT——中斷周期
- 特點
- 機器周期:完成一個基本操作所需的時間
- 時鐘周期(節(jié)拍脈沖、T周期):完成一個最基本的動作所需的時間
- 1個指令周期 = n個機器周期,1個機器周期 = n個時鐘周期
- 每個指令周期內(nèi)的機器周期數(shù)可以不等,每個機器周期內(nèi)的節(jié)拍數(shù)也可以不等
2. 指令周期的數(shù)據(jù)流
- 數(shù)據(jù)流:根據(jù)指令要求依次訪問的數(shù)據(jù)序列
1. 取指周期
- 任務(wù):根據(jù)PC中的內(nèi)容從主存中取出指令代碼(控制器自動進行)并存放在IR中
- 數(shù)據(jù)流向
2. 間址周期
- 任務(wù):取操作數(shù)有效地址。以一次間址為例,將指令中的地址碼送到MAR并送至地址總線,此后CU向存儲器發(fā)讀命令,以獲取有效地址并存至MDR
- 數(shù)據(jù)流向
3. 執(zhí)行周期
- 任務(wù):根據(jù)IR中的指令字的操作碼和操作數(shù)通過ALU操作產(chǎn)生執(zhí)行結(jié)果
- 數(shù)據(jù)流向:不同指令的執(zhí)行周期操作不同,沒有統(tǒng)一的數(shù)據(jù)流向
4. 中斷周期
- 任務(wù):處理中斷請求
- 數(shù)據(jù)流向
- 進棧操作:先修改棧頂指針,后存入數(shù)據(jù)
3. 數(shù)據(jù)通路的功能和基本結(jié)構(gòu)
1. 數(shù)據(jù)通路的功能
- 數(shù)據(jù)通路:數(shù)據(jù)在功能部件之間傳送的路徑
- 數(shù)據(jù)通路部件:路徑上的部件
- 功能(執(zhí)行)部件:數(shù)據(jù)通路中專門進行數(shù)據(jù)運算的部件
- 功能:實現(xiàn)CPU內(nèi)部的運算器與寄存器之間的數(shù)據(jù)交換
2. 基本結(jié)構(gòu)
1. 三種類型
- CPU內(nèi)部單總線方式:將所有寄存器的輸入端和輸出端都連接到一條公共通路上
- 特點
- 簡單,但存在較多的沖突現(xiàn)象,性能較低(一個時鐘周期只能傳送一個數(shù)據(jù))
- ALU要配合暫存寄存器使用
- 特點
- CPU內(nèi)部三總線方式:將所有寄存器的輸入端都連接到多條公共通路上
- 特點:多個總線上傳送不同的數(shù)據(jù),提高效率
- 專用數(shù)據(jù)通路方式:根據(jù)指令執(zhí)行過程中的數(shù)據(jù)和地址的流動方向安排連接線路,避免使用共享總線
- 特點:性能較高,但硬件量大(多路選擇與三態(tài)門實現(xiàn))
- 特點:性能較高,但硬件量大(多路選擇與三態(tài)門實現(xiàn))
- 注意
- 內(nèi)部總線:同一部件內(nèi)的總線
- 系統(tǒng)總線:同一臺計算機系統(tǒng)的各部件間的總線
4. 控制器的功能和工作原理
1. 控制器的結(jié)構(gòu)和功能
- 連接關(guān)系
- 運算器部件通過數(shù)據(jù)總線與內(nèi)存儲器、輸入設(shè)備和輸出設(shè)備傳送數(shù)據(jù)
- 輸入設(shè)備和輸出設(shè)備通過接口電路與總線相連接
- 內(nèi)存儲器、輸入設(shè)備和輸出設(shè)備從地址總線接收地址信息,從控制總線得到控制信號,通過數(shù)據(jù)總線與其他部件傳送數(shù)據(jù)
- 控制器部件從數(shù)據(jù)總線接收指令信息,從運算器部件接收指令轉(zhuǎn)移地址,送出指令地址到地址總線,還要向系統(tǒng)中的部件提供它們運行所需要的控制信號
- 控制器的主要功能
- 從主存中取出一條指令,并指出下一條指令在主存中的位置
- 對指令進行譯碼或測試,產(chǎn)生相應(yīng)的操作控制信號,以便啟動規(guī)定的動作
- 指揮并控制CPU、主存、輸入和輸出設(shè)備之間的數(shù)據(jù)流動方向
2. 硬布線控制器
- 基本原理:根據(jù)指令的要求、當(dāng)前的時序及外部和內(nèi)部的狀態(tài),按時間的順序發(fā)送一系列微操作控制信號
- 實現(xiàn):由復(fù)雜的組合邏輯門電路和一些觸發(fā)器構(gòu)成
- 特點
- 指令越多,設(shè)計和實現(xiàn)就越復(fù)雜,一般用于RISC
- 擴充一條新的指令,控制器的設(shè)計就要大改,擴充指令困難
- 執(zhí)行速度很快,微操作信號由組合邏輯電路即時產(chǎn)生
1. 硬布線控制單元圖
- 指令的操作碼是決定控制單元發(fā)出不同操作命令(控制信號)的關(guān)鍵
- CU輸入:操作碼譯碼電路ID、節(jié)拍發(fā)生器、狀態(tài)標(biāo)志、系統(tǒng)(控制)總線
- CU輸出:CPU內(nèi)部或外部控制總線
2. 時序系統(tǒng)及微操作
- 取指周期
(PC)→\rightarrow→ MAR
1→\rightarrow→R
M(MAR)→\rightarrow→MDR
MDR→\rightarrow→IR
OP(IR)→\rightarrow→ID
(PC)+1→\rightarrow→PC - 間址周期
Ad(IR)→\rightarrow→MAR
1→\rightarrow→R
M(MAR)→\rightarrow→MDR - 執(zhí)行周期
- CLA——清ACC
0→\rightarrow→ACC - COM——取反
ACC ̄→ACC\overline{ACC}\rightarrow ACCACC→ACC - LDA X——取數(shù)指令
Ad(IR)→\rightarrow→MAR
1→\rightarrow→R
M(MAR)→\rightarrow→MDR
MDR→\rightarrow→ACC - JMP X——無條件轉(zhuǎn)移
Ad(IR)→\rightarrow→PC - BAN X——條件轉(zhuǎn)移,ACC為負時轉(zhuǎn)移
A0?Ad(IR)+A0 ̄?(PC)→PCA_0·Ad(IR)+\overline{A_0}·(PC)\rightarrow PCA0??Ad(IR)+A0???(PC)→PC
- CLA——清ACC
3. 硬布線控制單元設(shè)計步驟
- 設(shè)計原則
- 微操作的先后順序不得隨意更改
- 被控對象不同的微操作,盡量安排在一個節(jié)拍內(nèi)完成
- 占用時間較短的微操作,盡量安排在一個節(jié)拍內(nèi)完成,并允許有先后順序
1. 分析每個階段的微操作序列(取指、間址、執(zhí)行、中斷四個階段)
2. 選擇CPU的控制方式
- 控制單元控制一條指令執(zhí)行的過程,實質(zhì)上是依次執(zhí)行一個確定的微操作序列的過程
- 每條指令和每個微操作所需的執(zhí)行時間不同
- 分類
- 同步控制方式:采取完全統(tǒng)一的、具有相同時間間隔和相同數(shù)目的節(jié)拍作為機器周期來運行不同的指令
- 異步控制方式:各部件按自身固有的速度工作,通過應(yīng)答方式進行聯(lián)絡(luò)
- 聯(lián)合控制方式:大部分采用同步控制,小部分采用異步控制
3. 安排微操作時序
- 取指周期
- 間址周期
- 執(zhí)行周期
- 中斷周期
4. 電路設(shè)計
3. 微程序控制器
- 實現(xiàn):采用存儲邏輯實現(xiàn),把微操作信號代碼化,使每條機器指令轉(zhuǎn)化為一段微程序并存入一個專門的存儲器(控制存儲器)中,微操作控制信號由微指令產(chǎn)生
1. 微程序控制的基本概念
- 設(shè)計思想:將每條機器指令編寫成一個微程序,每個微程序包含若干微指令,每條微指令對應(yīng)一個或幾個微操作命令
- 微操作:計算機中最基本的、不可再分解的操作
- 微命令:微程序控制的計算機中,控制部件向執(zhí)行部件發(fā)出的各種控制命令(構(gòu)成控制序列的最小單位)
- 相容性微命令:可以同時產(chǎn)生、共同完成某一些微操作的微命令
- 互斥性微命令:在機器中不允許同時出現(xiàn)的微命令
- 微指令:若干微命令的集合
- 操作控制字段(微操作碼字段):產(chǎn)生某一步操作所需的各種操作控制信號
- 順序控制字段(微地址碼字段):控制產(chǎn)生下一條要執(zhí)行的微指令地址
- 微周期:從控制存儲器中讀取一條微指令并執(zhí)行相應(yīng)的微操作所需的時間
- 控制存儲器(CM):用于存放微程序,在CPU內(nèi)部,用ROM實現(xiàn)
- 主存儲器:存放程序和數(shù)據(jù),在CPU外部,用RAM實現(xiàn)
- 微程序:微指令的有序集合,一條指令的功能由一段微程序?qū)崿F(xiàn)(1條指令 = 多個微程序)
- 程序:指令的有序集合,用于完成特定的功能
- 特點
- 微命令和微操作一一對應(yīng)
- 微命令是微操作的控制信號,微操作是微命令的執(zhí)行過程
- 注意
- 地址寄存器(MAR):存放主存的讀/寫地址
- 微地址寄存器(CMAR或μ\muμPC):存放控制存儲器的讀/寫微指令的地址
- 指令寄存器(IR):存放從主存中讀出的指令
- 微指令寄存器(CMDR或μ\muμIR):存放從控制存儲器中讀出的微指令
2. 微程序控制器的組成和工作過程
1. 基本組成
- 控制存儲器(CM):核心部件,存放各指令對應(yīng)的微程序
- 微指令寄存器(CMDR):存放從CM中取出的微指令,位數(shù) = 微指令字長
- 微地址形成部件:產(chǎn)生初始微地址和后繼微地址,保證微指令的連續(xù)執(zhí)行
- 微地址寄存器(CMAR):接收微地址形成部件送來的微地址
2. 工作過程
- 執(zhí)行取微指令公共操作
- 機器開始運行時,自動將取指微程序的入口地址送入CMAR,并從CM中讀出相應(yīng)的微指令送入CMDR
- 取指微程序的入口地址一般為CM的0號單元,當(dāng)取指微程序執(zhí)行完后,從主存中取出的機器指令就已存入指令寄存器中
- 由機器指令的操作碼字段通過微地址形成部件產(chǎn)生該機器指令所對應(yīng)的微程序的入口地址,并送入CMAR
- 從CM中逐條取出對應(yīng)的微指令并執(zhí)行
- 執(zhí)行完對應(yīng)于一條機器指令的一個微程序后,又回到取指微程序的入口地址,再完成取下一條機器指令的公共操作
3. 微程序和機器指令
- 一條機器指令對應(yīng)一個微程序
- 任何一條機器指令的取指令操作都是相同的
- 控制存儲器中的微程序個數(shù)應(yīng)為機器指令數(shù)再加上對應(yīng)取指、間址和中斷周期等公用的微程序數(shù)
- 若指令系統(tǒng)中具有n種機器指令,則控制存儲器中的微程序數(shù)至少是n+1(1為公共的取指微程序)
- 可以不提供間址周期和中斷周期
3. 微指令的編碼方式
- 編碼目標(biāo):保證速度的情況下,盡量縮短微指令字長
- 直接編碼(直接控制)方式
- 定義:操作控制字段中,每一位代表一個微操作命令(“1”表示控制信號有效)
- 優(yōu)點:簡單、直觀,執(zhí)行速度快,操作并行性好
- 缺點:微指令字長過長,n個微命令要求微指令的操作字段有n位,造成空存容量極大
- 定義:操作控制字段中,每一位代表一個微操作命令(“1”表示控制信號有效)
- 字段直接編碼方式
- 定義:將微指令的控制字段分為若干段,每段經(jīng)譯碼后發(fā)出控制信號
- 優(yōu)點:可以縮短微指令字長
- 缺點:要通過譯碼電路后再發(fā)出微命令,速度較慢
- 微命令字段分段原則
- 互斥性微命令分在同一段內(nèi),相容性微命令分在不同段內(nèi)
- 每個小段中包含的信息位不能太多,否則將增加譯碼線路的復(fù)雜性和譯碼時間
- 一般每個小段還要留出一個狀態(tài),表示本字段不發(fā)出任何微命令,通常全0表示不操作
- 定義:將微指令的控制字段分為若干段,每段經(jīng)譯碼后發(fā)出控制信號
- 字段間接編碼方式
- 定義:一個字段的某些微命令需由另一個字段中的某些微命令來解釋
- 優(yōu)點:可進一步縮短微指令字長
- 缺點:削弱了微指令的并行控制能力,故通常作為字段直接編碼方式的一種輔助手段
- 定義:一個字段的某些微命令需由另一個字段中的某些微命令來解釋
4. 微指令的地址形成方式
- 直接由微指令的下地址字段指出(斷定方式):設(shè)置一個下地址字段,由微指令的下地址字段直接指出后繼微指令的地址
- 根據(jù)機器指令的操作碼形成:微指令的地址由操作碼經(jīng)微地址形成部件形成
- 增量計數(shù)法:(CMAR) + 1 →\rightarrow→ CMAR(適用于后繼微指令地址連續(xù)的情況)
- 通過測試網(wǎng)絡(luò)形成
- 分支轉(zhuǎn)移
- 轉(zhuǎn)移方式:指明判別條件
- 轉(zhuǎn)移地址:指明轉(zhuǎn)移成功后的去向
- 由硬件直接產(chǎn)生微程序入口地址:第一條微指令地址由專門硬件產(chǎn)生(由專門的硬件記錄取指周期微程序的首地址);中斷周期由硬件產(chǎn)生中斷周期微程序首地址(用專門的硬件記錄)
5. 微指令的格式
1. 水平型微指令(短、肥)
- 定義:指令字中的一位對應(yīng)一個控制信號,有輸出時為1,否則為0(一條指令定義并執(zhí)行幾種并行的基本操作)
- 優(yōu)點:微程序短,執(zhí)行速度快
- 缺點:微指令長,編寫微程序較麻煩
2. 垂直型微指令(長、瘦)
- 定義:在微指令中設(shè)置微操作碼字段,采用微操作碼編譯法,由微操作碼規(guī)定微指令的功能(一條指令只能定義并執(zhí)行一種基本操作)
- 優(yōu)點:微指令短,簡單,規(guī)整,便于編寫微程序
- 缺點:微程序長,執(zhí)行速度慢,工作效率低
3. 混合型微指令
- 定義:在垂直型的基礎(chǔ)上增加一些不太復(fù)雜的并行操作
- 優(yōu)點:微指令較短,便于編寫;微程序不長,執(zhí)行速度加快
6. 微程序控制單元的設(shè)計步驟
- 寫出對應(yīng)機器指令的微操作命令及節(jié)拍安排
- 確定微指令格式
- 根據(jù)微操作個數(shù)決定采用何種編碼方式,以確定微指令的操作控制字段的位數(shù)
- 根據(jù)CM中存儲的微指令總數(shù),確定微指令的順序控制字段的位數(shù)
- 最后按操作控制字段位數(shù)和順序控制字段位數(shù)就可確定微指令字長
- 編寫微指令碼點
- 根據(jù)操作控制字段每一位代表的微操作命令,編寫每一條微指令的碼點
7. 動態(tài)微程序設(shè)計和毫微程序設(shè)計
- 動態(tài)微程序設(shè)計:能根據(jù)用戶的要求改變微程序,采用可擦除可編程只讀存儲器(EPROM)實現(xiàn)
- 毫微程序設(shè)計:硬件不由微程序直接控制,而是通過存放在第二級控制存儲器(毫微存儲器)中的毫微程序來解釋的
5. 指令流水線
1. 指令流水線的基本概念
1. 定義
- 一條指令的執(zhí)行過程可以分為多個階段(不同階段用到的硬件不同)
- 取指:根據(jù)PC內(nèi)容訪問主存儲器,取出一條指令送到IR中
- 分析:對指令操作碼進行譯碼,按照給定的尋址方式和地址字段中的內(nèi)容形成操作數(shù)的有效地址EA,并從EA中取出操作數(shù)
- 執(zhí)行:根據(jù)操作碼字段,完成指令規(guī)定的功能,即把運算結(jié)果寫到通用寄存器或主存中
- 三種執(zhí)行方式
- 順序執(zhí)行方式:指令按順序執(zhí)行,前一條指令執(zhí)行完后,才啟動下一條指令(傳統(tǒng)馮·諾依曼采用此方式)
- 執(zhí)行n條指令所用時間:T = 3nt(取指、分析、執(zhí)行三個階段的時間都為t)
- 優(yōu)點:控制簡單,硬件代價小
- 缺點:執(zhí)行指令的速度較慢,各功能部件的利用率很低
- 一次重疊執(zhí)行方式:同時進行第k條指令的執(zhí)行階段和第k+1條指令的取指階段
- 執(zhí)行n條指令的時間:T = (1 + 2n)·t
- 優(yōu)點:程序的執(zhí)行時間縮短了1/3,功能部件利用率提高
- 缺點:硬件開銷較大,控制過程更復(fù)雜
- 二次重疊執(zhí)行方式:同時進行取第k+1條指令和分析第k條指令,同時進行分析第k+1條指令和執(zhí)行第k條指令
- 執(zhí)行n條指令的時間:T = (2 + n)·t
- 優(yōu)點:程序的執(zhí)行時間縮短了2/3 (正常情況下,處理機同時有3條指令在執(zhí)行
- 若沒條指令需要通過4個或5個執(zhí)行步驟完成,則可以采取3次或4次重疊執(zhí)行方式
- 順序執(zhí)行方式:指令按順序執(zhí)行,前一條指令執(zhí)行完后,才啟動下一條指令(傳統(tǒng)馮·諾依曼采用此方式)
2. 表示方法——時空圖
- 時空圖:主要用于分析流水線的性能
- 橫坐標(biāo):時間(輸入流水線中的各個任務(wù)在流水線中所經(jīng)過的時間)
- 縱坐標(biāo):空間(流水線的每個流水段(對應(yīng)各個執(zhí)行部件))
3. 特點
- 把一個任務(wù)分解為幾個有聯(lián)系的子任務(wù),每個子任務(wù)由一個專門的功能部件來執(zhí)行
- 每個功能段后都要有一個緩沖寄存器(保存本流水段的執(zhí)行結(jié)果,供給下一流水段使用)
- 各功能段的時間應(yīng)盡量相等
- 只有連續(xù)不斷地提供同一種任務(wù)時才能發(fā)揮流水線的效率
- 流水線需要裝入時間和排空時間
- 裝入時間:第一個任務(wù)進入流水線到輸出流水線的時間
- 排空時間:最后一個任務(wù)進入流水線到輸出流水線的時間
- 并不是流水段越多,指令執(zhí)行越快
- 流水段緩沖之間的額外開銷增大:每個流水段有一些額外開銷用于緩沖間傳送數(shù)據(jù)、進行各種準備和發(fā)送等功能
- 流水線間控制邏輯變多、變復(fù)雜:用于流水線優(yōu)化和存儲器(或寄存器)沖突處理的控制邏輯將隨流水段的增加而大增
2. 流水線的分類
1. 部件功能級、處理機級和處理機間級流水線
- 部件功能級流水:將復(fù)雜的算術(shù)邏輯運算組成流水線工作方式。如:可將浮點加法操作分成求階差、對階、尾數(shù)相加及結(jié)果規(guī)格化等4個子過程
- 處理機級流水:把一條指令解釋過程分成多個子過程。如:取指、譯碼、執(zhí)行、訪存和寫回5個字過程
- 處理機間流水:一種宏流水,其中每個處理機完成某一專門任務(wù),各個處理機得到的結(jié)果需存放在與下一個處理機共享的存儲器中
2. 單功能流水線和多功能流水線
- 單功能流水:只能實現(xiàn)一種固定的專門功能的流水線
- 多功能流水:通過各段間的不同連接方式可以同時或不同時地實現(xiàn)多種功能的流水線
3. 動態(tài)流水線和靜態(tài)流水線
- 靜態(tài)流水線:在同一時間內(nèi),流水線的各段只能按同一種功能的連接方式工作
- 動態(tài)流水線:在同一時間內(nèi),當(dāng)某些段正在實現(xiàn)某種運算時,另一些段卻正在進行另一種運算
4. 線性流水線和非線性流水線
- 線性流水線:從輸入到輸出,每個功能段只允許經(jīng)過一次,不存在反饋回路
- 非線性流水線:存在反饋回路,從輸入到輸出,某些功能段將數(shù)次通過流水線(適合進行線性遞歸的運算)
3. 影響流水線的因素
- 機器周期的設(shè)置
1. 數(shù)據(jù)沖突(數(shù)據(jù)冒險)——同步
-
定義:在一個程序中,下一條指令會用到這一條指令計算出的結(jié)果
-
解決辦法
-
把遇到數(shù)據(jù)相關(guān)的指令及其后續(xù)指令都暫停一至幾個時鐘周期,直到數(shù)據(jù)相關(guān)問題消失后再繼續(xù)執(zhí)行
-
硬件阻塞(stall)
-
軟件插入“NOP”(空操作)
-
-
設(shè)置相關(guān)專用通路(數(shù)據(jù)旁路技術(shù)),即直接把前一條指令的ALU的計算結(jié)果作為自己的輸入數(shù)據(jù)開始計算過程
-
通過編譯器對數(shù)據(jù)相關(guān)的指令編譯優(yōu)化,調(diào)整指令順序來解決數(shù)據(jù)相關(guān)
-
-
相關(guān)概念——讀寫順序顛倒
- 讀后讀(RAR)相關(guān):兩條連續(xù)的指令讀取相同的寄存器時會產(chǎn)生RAR相關(guān),不會影響流水線
- 寫后讀(RAW)相關(guān):某條指令要讀取上一條指令所寫入的寄存器時,會產(chǎn)生RAW相關(guān),稱為數(shù)據(jù)相關(guān)或真相關(guān),影響流水線
- 讀后寫(WAR)相關(guān)和寫后寫(WAW)相關(guān):某條指令的上條指令要讀/寫該指令的輸出寄存器時,會產(chǎn)生WAR相關(guān)和WAW相關(guān)
- 按序流動的流水線只可能出現(xiàn)RAW相關(guān);非按序流動的流水線中,可能發(fā)生RAW、WAR和WAW相關(guān)
2. 控制沖突(控制冒險)
-
定義:一條指令要確定下一條指令的位置,例如在執(zhí)行轉(zhuǎn)移、調(diào)用或返回等指令時會改變PC值,而造成斷流
-
解決辦法
- 對轉(zhuǎn)移指令進行分支預(yù)測,盡早生成轉(zhuǎn)移目標(biāo)地址
- 靜態(tài)預(yù)測:預(yù)測條件不滿足,即繼續(xù)執(zhí)行分支指令的后續(xù)指令
- 動態(tài)預(yù)測:根據(jù)程序執(zhí)行的歷史情況,進行動態(tài)預(yù)測調(diào)整,有較高的預(yù)測準確率
- 預(yù)取轉(zhuǎn)移成功和不成功兩個控制流方向上的目標(biāo)指令
- 加快和提前形成條件碼
- 提高轉(zhuǎn)移方向的猜準率
- 對轉(zhuǎn)移指令進行分支預(yù)測,盡早生成轉(zhuǎn)移目標(biāo)地址
Cache缺失的處理過程也會引起流水線阻塞
3. 結(jié)構(gòu)相關(guān)(資源沖突)——互斥
- 定義:多條指令在同一時刻爭用同一資源而形成的沖突
- 解決辦法
- 前一指令訪存時,使后一條相關(guān)指令(以及其后續(xù)指令)暫停一個時鐘周期
- 單獨設(shè)置數(shù)據(jù)存儲器和指令存儲器。使兩項操作各自在不同的存儲器中進行
- 前一指令訪存時,使后一條相關(guān)指令(以及其后續(xù)指令)暫停一個時鐘周期
4. 流水線的性能指標(biāo)
1. 吞吐率
- 定義:單位時間內(nèi)流水線所完成的任務(wù)數(shù)量,或輸出結(jié)果的數(shù)量
- 公式:n為任務(wù)數(shù),TkT_kTk?是處理完n個任務(wù)所用時間TP=nTkTP=\frac{n}{T_k}TP=Tk?n?
2. 加速比
- 定義:完成同樣一批任務(wù),不使用流水線所用的時間和使用流水線所用的時間之比
- 公式:T0T_0T0?表示不使用流水線時的執(zhí)行時間,TkT_kTk?表示使用流水線時的執(zhí)行時間S=T0TkS=\frac{T_0}{T_k}S=Tk?T0??
3. 效率
- 定義:流水線的設(shè)備利用率。時空圖上,流水線的效率定義為完成n個任務(wù)占用的時空區(qū)有效面積,與n個任務(wù)所用的時間及k個流水段所圍成的時空區(qū)總面積之比。流水線的效率包含了時間和空間兩個因素
5. 超標(biāo)量流水線的基本概念
1. 超標(biāo)量流水線技術(shù)——空分復(fù)用
- 定義:每個時鐘周期可并發(fā)多條獨立指令(以并行操作方式將兩條或多條指令編譯并執(zhí)行),需配置多個功能部件
- 特點:不能調(diào)整指令的執(zhí)行順序,只能通過編譯優(yōu)化技術(shù)
2. 超流水線技術(shù)——時分復(fù)用
- 定義:在一個時鐘周期內(nèi)再分段,在一個時鐘周期內(nèi)一個功能部件使用多次
- 特點:不能調(diào)整指令的執(zhí)行順序,靠編譯程序解決優(yōu)化問題
3. 超長指令字
- 定義:由編譯程序挖掘出指令間潛在的并行性,將多條能并行操作的指令組合成一條具有多個操作碼字段的超長指令字
6. 五段式指令流水線
1. 運算類指令
2. LOAD指令
3. STORE指令
4. 條件轉(zhuǎn)移指令
5. 無條件轉(zhuǎn)移指令
總結(jié)
- 上一篇: 抽屉菜单
- 下一篇: 谷歌搜索,揭示人性最黑暗的5个秘密