05-中央处理器
CPU的功能與結構
CPU的功能
1.指令控制。完成取指令、分析指令和執行指令的操作,即程序的順序控制。
2.操作控制。一條指令的功能往往是由若干操作信號的組合來實現的。CPU管理并產生由內存取出的每條指令的操作信號,把各種操作信號送往相應的部件,從而控制這些部件按指令的要求進行動作。
3.時間控制。對各種操作加以時間上的控制。時間控制要為每條指令按時間順序提供應有的控制信號。
4.數據加工。對數據進行算術和邏輯運算。
5.中斷處理。對計算機運行過程中出現的異常情況和特殊請求進行處理。
運算器和控制器的功能
運算器:對數據進行加工
控制器:協調并控制計算機各部件執行程序的指令序列,基本功能包括取指令、分析指令、執行指令
- 取指令:自動形成指令地址;自動發出取指令的命令。
- 分析指令:操作碼譯碼(分析本條指令要完成什么操作);產生操作數的有效地址。
- 執行指令:根據分析指令得到的“操作命令”和“操作數地址”,形成操作信號控制序列,控制運算器、存儲器以及I/O設備完成相應的操作。
- 中斷處理:管理總線及輸入輸出;處理異常情況(如掉電)和特殊請求(如打印機請求打印一行字符)。
運算器基本結構
1.算術邏輯單元:主要功能是進行算術/邏輯運算。
2.通用寄存器組:如AX、BX、CX、DX、SP等,用于存放操作數(包括源操作數、目的操作數及中間結果)和各種地址信息等。SP是堆棧指針,用于指示棧頂的地址。位數與機器字長相等,便于操作控制。
專用數據通路方求:根據指令執行過程中的數據和地址的流動方向安排連接線路。
如果直接用導線連接,相當于多個寄存器同時并且一直向ALU傳輸數據
解決方法1.使用多路選擇器根據控制信號選擇一路輸出
解決方法2.使用三態門可以控制每一路是否輸出
性能較高,基本不存在數據沖突現象,但結構復雜,硬件量大,不易實現。
CPU內部單總線方式:將所有寄存器的輸入端和輸出端都連接到一條公共的通路上。
結構簡單,容易實現,但數據傳輸存在較多沖突的現象,性能較低。
3.暫存寄存器:用于暫存從主存讀來的數據,這個數據不能存放在通用寄存器中,否則會破壞其原有內容。如:兩個操作數分別來自主存和R。,最后結果存回R。,那么從主存中取來的操作數直接放入暫存器,就不會破壞運算前R。的內容。
4.累加寄存器:它是一個通用寄存器,用于暫時存放ALU運算的結果信息,用于實現加法運算。
5.程序狀態字寄存器:保留由算術邏輯運算指令或測試指令的結果而建立的各種狀態信息,如溢出標志(OP)、符號標志(SF)、零標志(ZF)、進位標志(CF)等。PSW中的這些位參與并決定微操作的形成。包括兩個部分,一是狀態標志,二十控制標志。
6.移位器:對運算結果進行移位運算。
控制器的基本結構
1.程序計數器PC:用于指出下一條指令在主存中的存放地址。CPU就是根據PC的內容去主存中取指令的。因程序中指令(通常)是順序執行的,所以PC有自增功能。程序計數器的位數與存儲器地址的位數相等,而存儲器地址取決于存儲器的容量。
2.指令寄存器IR:用于保存當前正在執行的那條指令。不需要用戶干預,對用戶透明。位數取決于指令字長。
3.指令譯碼器:僅對操作碼字段進行譯碼,向控制器提供特定的操作信號。
4.微操作信號發生器:根據IR的內容(指令)、PSW的內容(狀態信息)及時序信號,產生控制整個計算機系統所需的各種控制信號,其結構有組合邏輯型和存儲邏輯型兩種。
5.時序系統:用于產生各種時序信號,它們都是由統一時鐘(CLOCK)分頻得到。
6.存儲器地址寄存器MDR:用于存放所要訪問的主存單元的地址。
7.存儲器數據寄存器MAR:用于存放向主存寫入的信息或從主存中讀出的信息。
控制器由程序計數器PC,指令寄存器IR,存儲器地址寄存器MAR,存儲器數據寄存器MDR,指令譯碼器,時序電路和微操作發生器組成。
指令執行過程
指令周期
指令周期:CPU從主存中每取出并執行一條指令所需的全部時間。
指令周期常常用若干機器周期來表示,機器周期又叫CPU周期。
一個機器周期又包含若干時鐘周期(也稱為節拍、T周期或CPU時鐘周期,它是CPU操作的最基本單位)。
每個指令周期內機器周期數可以不等,每個機器周期內的節拍數也可以不等。
各種周期的分別
- 時鐘周期是計算機操作的最小時間單位,由計算機的主頻決定,是主頻的倒數。工作脈沖是控制器的最小時間單元,起i定時觸發作用,一個時鐘周期有一個工作脈沖。
- 指令周期可以由多個CPU周期組成。
- CPU周期即機器周期,包含若干個時鐘周期。
- 存取周期是指存儲器進行兩次獨立的存儲器操作(連續兩次讀或寫操作)之間所需的最小間隔時間。
指令周期流程
四個工作周期都有CPU訪存操作,只是訪存的目的不同。取指周期是為了取指令,間址周期是為了取有效地址,執行周期是為了取操作數,中斷周期是為了保存程序斷點。
指令周期的數據流-取指周期
指令周期的第一個機器周期是取指周期,即從主存中取出指令字。
1.當前指令地址送至存儲器地址寄存器,記做:(PC)→MAR
2.CU發出控制信號,經控制總線傳到主存,這里是讀信號,記做:1→R
3.將MAR所指主存中的內容經數據總線送入MDR,記做:M(MAR)→ MDR
4.CU發出控制信號,形成下一條指令地址,記做:(PC)+1 →PC
取指結束后,PC自動加1,執行周期中,如果PC需要修改為跳轉到的地址,則需要再+1
指令周期的數據流-間指周期
1.將指令的地址碼送入MAR,記做: Ad(IR) →MAR或Ad(MDR)→MAR
2.CU發出控制信號,啟動主存做讀操作,記做:1→R
3.將MAR所指主存中的內容經數據總線送入MDR,記做:M(MAR)→MDR
4.將有效地址送至指令的地址碼字段,記做:(MDR)→ Ad(IR)
存儲器間通過形式地址訪存,寄存器間址通過寄存器內容訪存。
存儲器本身無法區分存儲單元中存放的是指令還是數據。而在控制器的控制下,計算機在不同的階段對存儲器進行讀/寫操作時,取出的代碼擁有不同的用處,而在取指階段讀出的二進制代碼為指令,在執行階段取出的代碼可能是數據。
指令周期的數據流-執行周期
執行周期的任務是根據IR中的指令字的操作碼和操作數通過ALU操作產生執行結果。不同指令的執行周期操作不同,因此沒有統一的數據流向。
指令周期的數據流-中斷周期
中斷:暫停當前任務去完成其他任務。為了能夠恢復當前任務,需要保存斷點。一般使用堆棧來保存斷點,這里用SP表示棧頂地址,假設SP指向棧頂元素,進棧操作是先修改指針,后存入數據。
1.CU控制將SP減1,修改后的地址送入MAR記做:(SP)-1 →SP,(SP) → MAR
本質上是將斷點存入某個存儲單元,假設其地址為a,故可記做: a →MAR
2.CU發出控制信號,啟動主存做寫操作,記做:1→w
3.將斷點(PC內容)送入MDR,記做:(PC)→ MDR
4.CU控制將中斷服務程序的入口地址(由向量地址形成部件產生)送入PC,記做:向量地址→PC
指令執行方案
一個指令周期通常要包括幾個時間段(執行步驟),每個步驟完成指令的一部分功能,幾個依次執行的步驟完成這條指令的全部功能。
方案1.單指令周期
對所有指令都選用相同的執行時間來完成。指令之間串行執行;指令周期取決于執行時間最長的指令的執行時間。
對于那些本來可以在更短時間內完成的指令,要使用這個較長的周期來完成,會降低整個系統的運行速度。
方案2.多指令周期
對不同類型的指令選用不同的執行步驟來完成。指令之間串行執行;可選用不同個數的時鐘周期來完成不同指令的執行過程。
需要更復雜的硬件設計。
方案3.流水線方案
在每一個時鐘周期啟動一條指令,盡量讓多條指令同時運行,但各自處在不同的執行步驟中。指令之間并行執行。
數據通路
采用CPU內部總線方式的數據通路的特點:結構簡單,實現容易,性能較低,存在較多的沖突現象。
不采用CPU內部總線方式的數據通路的特點是:結構復雜,硬件量大,不易實現,性能高,基本不存在數據沖突現象。
單總線結構
內部總線是指同一部件,如CPU內部連接各寄存器及運算部件之間的總線;
系統總線是指同一臺計算機系統的各部件,如CPU、內存、通道和各類l/O接口間互相連接的總線。
由于ALU是一個組合邏輯電路,因此其運算過程中必須保持兩個輸入端的內容不變,又由于CPU內部采用單總線結構,因此為了得到兩個不同的操作數,ALU的一個輸入端與總線相連,另一個輸入端需要通過一個寄存器與總線相連。此外,ALU的輸出端也不能直接與內部總線相連,否則其輸出又通過總線反饋到輸入端,影響運算結果,因此輸出端需要通過一個暫存器(用來暫存結果的寄存器)與總線相連。
1.寄存器之間數據傳送
比如把PC內容送至MAR,實現傳送操作的流程及控制信號為:
(PC)→Bus PCout有效,PC內容送總線
Bus→MAR MARin有效,總線內容送MAR
重要的是描述清楚數據流向
2.主存與CPU之間的數據傳送
比如CPU從主存讀取指令,實現傳送操作的流程及控制信號為:
(PC)→Bus→MAR PCout和MARin有效,現行指令地址→MAR
1→R CU發讀命令(通過控制總線發出,圖中未畫出)
MEM(MAR)→MDR MDRin有效
MDR→Bus→IR MDRout和IRin有效,現行指令→IR
3.執行算術或邏輯運算
比如一條加法指令,微操作序列及控制信號為:
Ad(IR)→Bus→MAR MDRout和MARin有效或AdlRout和MARin有效
1→R CU發讀命令
MEM(MAR)→數據線→MDR MDRin有效
MDR→Bus→Y MDRout和Yin有效,操作數→Y
(ACC)+(Y)→z ACCout和ALUin有效,CU向ALU發送加命令
Z→ACC Zout和ACCin有效,結果→ACC
例題
設有如圖所示的單總線結構,分析指令ADD (RO),R1的指令流程和控制信號。
1.分析指令功能和指令周期
功能:((R0))+(R1)→(R0)
取指周期、間址周期、執行周期
2.寫出各階段的指令流程
取指周期:公共操作
間址周期:完成取數操作,被加數在主存中,加數已經放在寄存器R1中。
執行周期:完成取數操作,被加數在主存中,加數已經放在寄存器R1中。
專用數據通路
取指周期
例題
下圖是一個簡化了的CPU與主存連接結構示意圖(圖中省略了所有的多路選擇器)。具中有一個系加寄存器(ACC)、一個狀態數據寄存器和其他4個寄存器:主存地址寄存器(MAR)、主存數據寄存器(MDR)、程序寄存器(PC)和指令寄存器(IR),各部件及其之間的連線表示數據通路,箭頭表示信息傳遞方向。
要求:
(1) 請寫出圖中a、b、c、d 4個寄存器的名稱。
d能自動“+1”,是PC
PC內容是地址,送MAR,故c是MAR
b與微操作信號發生器相連,是IR
與主存相連的寄存器是MAR和MDR,c是MAR,則a是MDR
(2)簡述圖中取指令的數據通路。
(PC)→ MAR
M(MAR)→MDR
(MDR)→IR
(3)簡述數據在運算器和主存之間進行存/取訪問
存/取的數據放到ACC中、設數據地址已放入MAR
取:
M(MAR)→ MDR
(MDR)→ALU →ACC
存:
(ACC)→ MDR
(MDR)→ M(MAR)
(4)簡述完成指令LDA X的數據通路(X為主存地址)LDA的功能為(X)→ACC
X→MAR
M(MAR)→MDR
(MDR)→ALU →ACC
(5)簡述完成指令ADD Y的數據通路(Y為主存地址)ADD的功能為(ACC)+(Y)→ACC
Y → MAR
M(MAR)→ MDR
(MDR)→ ALU,(ACC) → ALU
ALU →ACC
(6)簡述完成指令STA Z的數據通路(Z為主存地址)STA的功能為(ACC)→Z
Z→ MAR
(ACC) →MDR
(MDR)→M(MAR)
硬布線控制器的設計
設計步驟:
分析每個階段的微操作序列
選擇CPU的控制方式
安排微操作時序
電路設計
(1)列出操作時間表
(2)寫出微操作命令的最簡表達式
(3)畫出邏輯圖
硬布線控制器的特點:
- 指令越多,設計和實現就越復雜,因此一般用于RISC(精簡指令集系統)
- 如果擴充一條新的指令,則控制器的設計就需要大改,因此擴充指令較困難。
- 由于使用純硬件實現控制,因此執行速度很快。微操作控制信號由組合邏輯電路即時產生。
硬布線控制器
根據指令操作碼、目前的機器周期、節拍信號、機器狀態條件,即可確定現在這個節拍下應該發出哪些“微命令”
Tips:邏輯表達式是電路的數學化描述
硬布線控制器的設計
設計步驟:
1.分析每個階段的微操作序列(取值、間址、執行、中斷四個階段):確定哪些指令在什么階段、在什么條件下會使用到的微操作
2.選擇CPU的控制方式:采用定長機器周期還是不定長機器周期?每個機器周期安排幾個節拍?假設采用同步控制方式(定長機器周期),一個機器周期內安排3個節拍。
3.安排微操作時序:如何用3個節拍完成整個機器周期內的所有微操作?
4.電路設計:確定每個微操作命令的邏輯表達式,并用電路實現
分析每個階段的微操作序列
安排微操作時序的原則
原則一:微操作的先后順序不得隨意更改
原則二:被控對象不同的微操作盡量安排在一個節拍內完成
原則三:占用時間較短的微操作盡量安排在一個節拍內完成并允許有先后順序
M( MAR )→MDR從主存取數據,用時較長,因此必須一個時鐘周期才能保證微操作的完成
MDR→IR是CPU內部寄存器的數據傳送,速度很快,因此在一個時鐘周期內可以緊接著完成OP(IR)→ID。也就是可以一次同時發出兩個微命令。
安排微操作時序-間址周期
安排微操作時序-執行周期
電路設計
設計步驟:
1.列出操作時間表:列出在取指、間址、執行、中斷周期,T0、T1、T2節拍內有
可能用到的所有微操作
2.寫出微操作命令的最簡表達式
3.畫出邏輯圖
組合邏輯設計
時間操作表
微操作信號綜合
畫出邏輯圖
微程序控制器
微程序控制器的設計思路
程序:由指令序列組成
微程序:由微指令序列組成,每一種指令對應一個微程序
指令是對程序執行步驟的描述
微指令是對指令執行步驟的描述
微命令與微操作一一對應,微指令中可能包含多個微命令
微程序控制器的基本結構
微程序控制器的工作原理
取指周期微程序通常是公用的,故如果某指令系統中有n條機器指令,則CM中微程序的個數至少是n+1個
一些早期的CPU、物聯網設備的CPU可以不提供間接尋址和中斷功能,因此這類CPU可以不包含間址周期、中斷周期的微程序段
Tips:物理上,取指周期、執行周期看起來像是兩個微程序,但邏輯上應該把它們看作一個整體。因此,“一條指令對應一個微程序”的說法是正確的
微指令的設計
微指令的格式
相容性微命令:可以并行完成的微命令。
互斥性微命令:不允許并行完成的微命令。
水平型微指令
一條微指令能定義多個可并行的微命令。
優點:微程序短,執行速度快;
缺點:微指令長,編寫微程序較麻煩。
垂直型微指令
一條微指令只能定義一個微命令,由微操作碼字段規定具體功能
優點:微指令短、簡單、規整,便于編寫微程序;
缺點:微程序長,執行速度慢,工作效率低。
混合型微指令
在垂直型的基礎上增加一些不太復雜的并行操作。
微指令較短,仍便于編寫;微程序也不長,執行速度加快。
微指令的編碼方式
微指令的編碼方式又稱為微指令的控制方式,它是指如何對微指令的控制字段進行編碼,以形成控制信號。編碼的目標是在保證速度的情況下,盡量縮短微指令字長。
直接編碼(直接控制)方式
在微指令的操作控制字段中,每一位代表一個微操作命令
某位為“1”表示該控制信號有效
優點:簡單、直觀,執行速度快,操作并行性好。
缺點:微指令字長過長,n個微命令就要求微指令的操作字段有n位,造成控存容量極大。
字段直接編碼方式
將微指令的控制字段分成若干“段”,每段經譯碼后發出控制信號
微命令字段分段的原則:
①互斥性微命令分在同一段內,相容性微命令分在不同段內。
②每個小段中包含的信息位不能太多,否則將增加譯碼線路的復雜性和譯碼時間。
③一般每個小段還要留出一個狀態,表示本字段不發出任何微命令。因此,當某字段的長度為3位時,最多只能表示7個互斥的微命令,通常用000表示不操作。
優點:可以縮短微指令字長。缺點:要通過譯碼電路后再發出微命令,因此比直接編碼方式慢。
例題
某計算機的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接編碼法,共有33個微命令,構成5個互斥類,分別包含7、3、12、5和6個微命令,則操作控制字段至少有多少位?
第1個互斥類有7個微命令,要留出1個狀態表示不操作,所以需要表示8種不同的狀態,故需要3個二進制位。
以此類推,后面4個互斥類各需要教示4、13、6、7種不同的狀態,分別對應2、4、3、3個二進制位。
故操作控制字段的總位數為3+2+4+3+3 = 15位
Tips:若采用直接編碼方式,則控制字段需要33位
字段間接編碼方式
一個字段的某些微命令需由另一個字段中的某些微命令來解釋,由于不是靠字段直接譯碼發出的微命令,故稱為字段間接編碼,又稱隱式編碼。
優點:可進一步縮短微指令字長。缺點:削弱了微指令的并行控制能力,故通常作為字段直接編碼方式的一種輔助手段。
微指令的地址形成方式
1.微指令的下地址字段指出
微指令格式中設置一個下地址字段,由微指令的下地址字段直接指出后繼微指令的地址,這種方式又稱為斷定方式。
2.根據機器指令的操作碼形成
當機器指令取至指令寄存器后,微指令的地址由操作碼經微地址形成部件形成。
3.增量計數器法(CMAR )+1→CMAR
4.分支轉移
轉移方式:指明判別條件;轉移地址:指明轉移成功后的去向。
5.測試網絡
6.由硬件產生微程序入口地址
第一條微指令地址―由專門硬件產生(用專門的硬件記錄取指周期微程序首地址)中斷周期―由硬件產生中斷周期微程序首地址(用專門的硬件記錄)
例題–斷定方式
微程序控制單元的設計
微程序控制單元的設計
顯然,微程序控制器的速度比硬布線控制器更慢
微程序設計分類
1.靜態微程序設計和動態微程序設計
靜態微程序無需改變,采用 ROM
動態通過改變微指令和微程序改變機器指令有利于仿真,采用EPROM
2.毫微程序設計
毫微程序設計的基本概念
微程序設計用微程序解釋機器指令
毫微程序設計用毫微程序解釋微程序
硬布線與微程序的比較
指令流水線的基本概念
理想情況:各階段花費時間相同;每個階段結束后能立即進入下一階段。
指令流水的定義
一條指令的執行過程可以分成多個階段(或過程)。根據計算機的不同,具體的分法也不同。
取指:根據PC內容訪問主存儲器,取出一條指令送到IR中。
分析:對指令操作碼進行譯碼,按照給定的尋址方式和地址字段中的內容形成操作數的有效地址EA,并從有效地址EA中取出操作數。
執行:根據操作碼字段,完成指令規定的功能,即把運算結果寫到通用寄存器或主存中。
特點:每個階段用到的硬件不一樣。
設取指、分析、執行3個階段的時間都相等,用t表示,按以下幾種執行方式分析n條指令的執行時間:
傳統馮·諾依曼機采用順序執行方式,又稱串行執行方式。
優點:控制簡單,硬件代價小。
缺點:執行指令的速度較慢,在任何時刻,處理機中只有一條指令在執行,各功能部件的利用率很低。
優點:程序的執行時間縮短了1/3,各功能部件的利用率明顯提高。
缺點:需要付出硬件上較大開銷的代價,控制過程也比順序執行復雜了。
與順序執行方式相比,指令的執行時間縮短近2/3。這是一種理想的指令執行方式,在正常情況下,處理機中同時有3條指令在執行。
注:也可以把每條指令的執行過程分成4個或5個階段,分成5個階段是比較常見的做法。
流水線的表示方法
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VkNlUwgC-1657716190898)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220713175752033.png)]
主要用于分析指令執行過程以及影響流水線的因素
主要用于分析流水線的性能
流水線的性能指標
吞吐率
加速比
效率
五段式指令流水線
機器周期的設置
流水線每一個功能段部件后面都要有一個緩沖寄存器,或稱為鎖存器,其作用是保存本流水段的執行結果,提供給下一流水段使用。
為方便流水線的設計,將每個階段的耗時取成一樣,以最長耗時為準。即此處應將機器周期設置為100ns。
理想情況下,每個機器周期(功能段)只消耗一個時鐘周期。
考試中常見的五類指令:·運算類指令、LOAD指令、STORE指令、條件轉移指令、無條件轉移指令
只有上一條指令進入ID段后,下一條指令才能開始IF段,否則會覆蓋lF段鎖存器的內容
運算類指令的執行過程
運算類指令
IF:根據PC從指令Cache取指令至lF段的鎖存器
ID:取出操作數至ID段鎖存器
EX:運算,將結果存入EX段鎖存器
M:空段
WB:將運算結果寫回指定寄存器
LOAD指令的執行過程
LOAD指令
IF:根據PC從指令Cache取指令至IF段的鎖存器
ID:將基址寄存器的值放到鎖存器A,將偏移量的值放到Imm
EX:運算,得到有效地址
M:從數據cache中取數并放入鎖存器
WB:將取出的數寫回寄存器
通常,RISC處理器只有“取數LOAD”和“存數STORE”指令才能訪問主存
STORE指令的執行過程
STORE指令
lF:根據PC從指令Cache取指令至IF段的鎖存器
ID:將基址寄存器的值放到鎖存器A,將偏移量的值放到Imm。將要存的數放到B
EX:運算,得到有效地址。并將鎖存器B的內容放到鎖存器Store。
M:寫入數據Cache
WB:空段
條件轉移指令的執行過程
轉移類指令常采用相對尋址
條件轉移指令
IF:根據PC從指令cache取指令至IF段的鎖存器
ID:進行比較的兩個數放入鎖存器A、B;偏移量放入Imm
EX:運算,比較兩個數
M:將目標PC值寫回PC
WB:空段
很多教材把寫回PC的功能段稱為“WrPC段”,其耗時比M段更短,可安排在M段時間內完成
無條件轉移指令的執行過程
無條件轉移指令
lF:根據PC從指令Cache取指令至IF段的鎖存器
ID:偏移量放入Imm
EX:將目標Pc值寫回PC(左圖沒畫全)
M:空段
WB:空段
“WrPC段”耗時比EX段更短,可安排在EX段時間內完成。WrPC段越早完成,就越能避免控制沖突。當然,也有的地方會在WB段時間內才修改PC的值
例題
指令流水線的影響因素和分類
流水線每一個功能段部件后面都要有一個緩沖寄存器,或稱為鎖存器,其作用是保存本流水段的執行結果,提供給下一流水段使用。
影響流水線的因素
結構相關(資源沖突)
由于多條指令在同一時刻爭用同一資源而形成的沖突稱為結構相關。
解決辦法:
1.后一相關指令暫停一周期
2.資源重復配置:數據存儲器+指令存儲器
數據相關(數據沖突)
數據相關指在一個程序中,存在必須等前一條指令執行完才能執行后一條指令的情況,則這兩條指令即為數據相關。
解決辦法:
1.把遇到數據相關的指令及其后續指令都暫停一至幾個時鐘周期,直到數據相關問題消失后再繼續執行。可分為硬件阻塞(stall)和軟件插入“NOP”兩種方法。
2.數據旁路技術:轉發機制
3.編譯優化:通過編譯器調整指令順序來解決數據相關。
控制相關(控制沖突)
當流水線遇到轉移指令和其他改變PC值的指令而造成斷流時,會引起控制相關。
解決辦法:
1.轉移指令分支預測。簡單預測(永遠猜ture或false) 、動態預測(根據歷史情況動態調整)
2.預取轉移成功和不成功兩個控制流方向上的目標指令
3.加快和提前形成條件碼
4.提高轉移方向的猜準率
流水線的分類
1.部件功能級、處理機級和處理機間級流水線
根據流水線使用的級別的不同,流水線可分為部件功能級流水線、處理機級流水線和處理機間流水線。
部件功能級流水就是將復雜的算術邏輯運算組成流水線工作方式。例如,可將浮點加法操作分成求階差、對階、尾數相加以及結果規格化等4個子過程。
處理機級流水是把一條指令解釋過程分成多個子過程,如前面提到的取指、譯碼、執行、訪存及寫回5個子過程。
處理機間流水是一種宏流水,其中每一個處理機完成某一專門任務,各個處理機所得到的結果需存放在與下一個處理機所共享的存儲器中。
2.單功能流水線和多功能流水線
按流水線可以完成的功能,流水線可分為單功能流水線和多功能流水線。
單功能流水線指只能實現一種固定的專門功能的流水線;
多功能流水線指通過各段間的不同連接方式可以同時或不同時地實現多種功能的流水線。
3.動態流水線和靜態流水線
按同一時間內各段之間的連接方式,流水線可分為靜態流水線和動態流水線。
靜態流水線指在同一時間內,流水線的各段只能按同一種功能的連接方式工作。
動態流水線指在同一時間內,當某些段正在實現某種運算時,另一些段卻正在進行另一種運算。這樣對提高流水線的效率很有好處,但會使流水線控制變得很復雜。
4.線性流水線和非線性流水線
按流水線的各個功能段之間是否有反饋信號,流水線可分為線性流水線與非線性流水線。
線性流水線中,從輸入到輸出,每個功能段只允許經過一次,不存在反饋回路。
非線性流水線存在反饋回路,從輸入到輸出過程中,某些功能段將數次通過流水線,這種流水線適合進行線性遞歸的運算。
流水線的多發技術
超標量技術
每個時鐘周期內可并發多條獨立指令
要配置多個功能部件
不能調整指令的執行順序
通過編譯優化技術,把可并行執行的指令搭配起來
超流水技術
在一個時鐘周期內再分段(3段)
在一個時鐘周期內一個功能部件使用多次( 3次)
不能調整指令的執行順序
靠編譯程序解決優化問題
超長指令字
由編譯程序挖掘出指令間潛在的并行性,將多條能并行操作的指令組合成一條
具有多個操作碼字段的超長指令字(可達幾百位)
采用多個處理部件
譯碼、執行、訪存及寫回5個子過程。
處理機間流水是一種宏流水,其中每一個處理機完成某一專門任務,各個處理機所得到的結果需存放在與下一個處理機所共享的存儲器中。
2.單功能流水線和多功能流水線
按流水線可以完成的功能,流水線可分為單功能流水線和多功能流水線。
單功能流水線指只能實現一種固定的專門功能的流水線;
多功能流水線指通過各段間的不同連接方式可以同時或不同時地實現多種功能的流水線。
3.動態流水線和靜態流水線
按同一時間內各段之間的連接方式,流水線可分為靜態流水線和動態流水線。
靜態流水線指在同一時間內,流水線的各段只能按同一種功能的連接方式工作。
動態流水線指在同一時間內,當某些段正在實現某種運算時,另一些段卻正在進行另一種運算。這樣對提高流水線的效率很有好處,但會使流水線控制變得很復雜。
4.線性流水線和非線性流水線
按流水線的各個功能段之間是否有反饋信號,流水線可分為線性流水線與非線性流水線。
線性流水線中,從輸入到輸出,每個功能段只允許經過一次,不存在反饋回路。
非線性流水線存在反饋回路,從輸入到輸出過程中,某些功能段將數次通過流水線,這種流水線適合進行線性遞歸的運算。
流水線的多發技術
超標量技術
[外鏈圖片轉存中…(img-NmrT2nhs-1657716190909)]
每個時鐘周期內可并發多條獨立指令
要配置多個功能部件
不能調整指令的執行順序
通過編譯優化技術,把可并行執行的指令搭配起來
超流水技術
[外鏈圖片轉存中…(img-0lgjUJOL-1657716190909)]
在一個時鐘周期內再分段(3段)
在一個時鐘周期內一個功能部件使用多次( 3次)
不能調整指令的執行順序
靠編譯程序解決優化問題
超長指令字
[外鏈圖片轉存中…(img-xOjJL88w-1657716190909)]
由編譯程序挖掘出指令間潛在的并行性,將多條能并行操作的指令組合成一條
具有多個操作碼字段的超長指令字(可達幾百位)
采用多個處理部件
總結
- 上一篇: android全屏模式动画,Androi
- 下一篇: 七大设计原理