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