




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章
控制單元CU本章導(dǎo)讀控制器控制計(jì)算機(jī)系統(tǒng)中所有組成部件的工作情況,是CPU中結(jié)構(gòu)最復(fù)雜,功能最重要的組成部分。本章導(dǎo)讀本章介紹CPU中控制器部分的組成與工作原理,內(nèi)容包括控制器的功能與結(jié)構(gòu),計(jì)算機(jī)系統(tǒng)中有關(guān)時(shí)序的基本概念,指令執(zhí)行的過程等,同時(shí)對(duì)于流水線技術(shù)、超標(biāo)量和超流水等技術(shù)進(jìn)行簡單介紹。最后,通過一個(gè)RISCCPU的結(jié)構(gòu)實(shí)例,幫助讀者加深對(duì)相關(guān)知識(shí)的理解。本章要點(diǎn)控制器的功能與結(jié)構(gòu)指令執(zhí)行過程指令流水線的基本概念超標(biāo)量的基本概念動(dòng)態(tài)流水線的基本概念7.1控制器的功能與組成7.1.1控制器的功能7.1.2控制器的組成7.1.1控制器的功能計(jì)算機(jī)對(duì)信息進(jìn)行處理(或計(jì)算)是通過程序的執(zhí)行而實(shí)現(xiàn)的,程序是完成某個(gè)確定算法的指令序列,要預(yù)先存放在存儲(chǔ)器中??刂破鞯淖饔檬强刂瞥绦虻膱?zhí)行,它必須具有以下基本功能:(1)取指令當(dāng)程序已在存儲(chǔ)器中時(shí),首先根據(jù)程序入口地址取出第一條指令,為此要發(fā)出指令地址及控制信號(hào)。在程序執(zhí)行中再不斷取出第2、3…條指令。(2)分析指令或叫解釋指令、指令譯碼等。是對(duì)當(dāng)前取得的指令進(jìn)行分析,指出它要求作什么操作,并產(chǎn)生相應(yīng)的操作控制命令,如果參與操作的數(shù)據(jù)在存儲(chǔ)器中,還需要形成操作數(shù)地址。(3)執(zhí)行指令根據(jù)分析指令時(shí)產(chǎn)生的“操作命令”和“操作數(shù)地址”形成相應(yīng)的操作控制信號(hào)序列,通過CPU、存儲(chǔ)器及輸入輸出設(shè)備的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中還包括對(duì)運(yùn)算結(jié)果的處理及下條指令地址的形成。(4)控制程序和數(shù)據(jù)的輸入與結(jié)果輸出根據(jù)程序的安排或人的干預(yù),在適當(dāng)?shù)臅r(shí)候向輸入輸出設(shè)備發(fā)出一些相應(yīng)的命令來實(shí)現(xiàn)I/O功能,這實(shí)際上也是通過執(zhí)行程序來完成的。(5)對(duì)異常情況和某些請(qǐng)求的處理當(dāng)機(jī)器出現(xiàn)某些異常情況,如算術(shù)運(yùn)算的溢出和數(shù)據(jù)傳送的校驗(yàn)錯(cuò);或機(jī)器有某些外來請(qǐng)求,如磁盤上的成批數(shù)據(jù)需送存儲(chǔ)器或程序員從鍵盤送入命令等,此時(shí)由這些部件發(fā)出中斷請(qǐng)求信號(hào)或DMA請(qǐng)求信號(hào)??刂破饕鼙WC這些情況的處理。7.1.2控制器的組成
根據(jù)對(duì)控制器功能的描述,可見控制器的主要任務(wù)就是根據(jù)指令操作碼和時(shí)序信號(hào),產(chǎn)生各種微操作控制信號(hào),以便正確地建立數(shù)據(jù)通路,從而完成取指令和執(zhí)行指令的控制。由此得出控制器的基本組成如下:(1)程序計(jì)數(shù)器(PC)即指令地址寄存器。在某些計(jì)算機(jī)中用來存放即將要執(zhí)行的下一條指令的地址;而在另一些計(jì)算機(jī)中則用來存放當(dāng)前正在執(zhí)行的指令的地址;而在有指令預(yù)取功能的計(jì)算機(jī)中,一般還需要增加一個(gè)程序計(jì)數(shù)器用來存放下一條要取出的指令地址。有兩種途徑來形成指令地址,其一是順序執(zhí)行的情況,通過程序計(jì)數(shù)器加“1”形成下一條指令地址(如存儲(chǔ)器按字節(jié)編址,要按指令的實(shí)際字節(jié)數(shù)修改)。其二是遇到需要改變順序執(zhí)行程序的情況,一般由轉(zhuǎn)移類指令形成轉(zhuǎn)移地址送往程序計(jì)數(shù)器,作為下一條指令的地址。(2)指令寄存器(IR)用以存放當(dāng)前正在執(zhí)行的指令代碼,以便在指令執(zhí)行過程中,控制完成一條指令的全部功能。(3)指令譯碼器或操作碼譯碼器對(duì)指令寄存器中的指令操作碼OP部分進(jìn)行分析解釋,判斷指令的功能,并作為產(chǎn)生相應(yīng)的控制信號(hào)的依據(jù)。在執(zhí)行指令過程中,需要形成有一定時(shí)序關(guān)系的操作控制信號(hào)序列,為此還需要下列組成部分。(4)脈沖源和啟停線路脈沖源產(chǎn)生一定頻率的脈沖信號(hào)作為整個(gè)機(jī)器的時(shí)鐘脈沖,是機(jī)器周期和工作脈沖的基準(zhǔn)信號(hào)。在機(jī)器剛加電時(shí),還應(yīng)產(chǎn)生一個(gè)總清信號(hào)(reset)。啟停線路保證可靠地送出或封鎖時(shí)鐘脈沖,控制時(shí)序信號(hào)的發(fā)生或停止,從而啟動(dòng)機(jī)器工作或使之停機(jī)。(5)時(shí)序控制信號(hào)形成部件當(dāng)機(jī)器啟動(dòng)后,在CLK時(shí)鐘作用下,根據(jù)當(dāng)前正在執(zhí)行的指令的需要,產(chǎn)生相應(yīng)的時(shí)序控制信號(hào),并根據(jù)被控功能部件的反饋信號(hào)調(diào)整時(shí)序控制信號(hào)。圖7-1是控制器基本組成的框圖,假設(shè)操作數(shù)地址以及轉(zhuǎn)移地址的計(jì)算在運(yùn)算器中進(jìn)行(事實(shí)上有不少計(jì)算機(jī)專設(shè)有地址加法器)。并假設(shè)運(yùn)算器與控制器之間有內(nèi)部數(shù)據(jù)通路,而運(yùn)算器、控制器與存儲(chǔ)器、輸入輸出設(shè)備之間均通過總線相連。一般數(shù)據(jù)總線能雙向傳送數(shù)據(jù),地址總線的信息傳送方向視情況而定,一般CPU輸出地址,存儲(chǔ)器或I/O設(shè)備接收地址。圖7-1控制器基本組成框圖
在某些計(jì)算機(jī)的控制器中,將反映機(jī)器運(yùn)行的狀態(tài)(程序計(jì)數(shù)器PC及運(yùn)算結(jié)果的狀態(tài)等信息)集中在一起稱為程序狀態(tài)字(PSW),而將保存程序狀態(tài)的寄存器稱為程序狀態(tài)寄存器(PSR)。各個(gè)機(jī)器的程序狀態(tài)字所包含的內(nèi)容不完全相同。圖7-1給出的框圖是最基本的控制器組成,事實(shí)上現(xiàn)代計(jì)算機(jī)體系結(jié)構(gòu)有很大的發(fā)展,如有些CPU中有一個(gè)指令預(yù)取隊(duì)列,可以預(yù)取出若干條指令,存放在由寄存器組成的隊(duì)列中,這樣當(dāng)執(zhí)行程序需取指令時(shí),可從寄存器中得到。有些CPU為了提高速度,采用了流水線技術(shù)。另外在CPU中還應(yīng)包括有關(guān)“中斷處理”的部分、存儲(chǔ)管理的部分、高速緩存部分等。7.2指令周期與多級(jí)時(shí)序系統(tǒng)7.2.1指令周期的概念7.2.2多級(jí)時(shí)序系統(tǒng)7.2.3多級(jí)時(shí)序系統(tǒng)舉例7.2.1指令周期的概念
CPU每取出并執(zhí)行一條指令所需的全部時(shí)間叫指令周期,也即CPU完成一條指令的時(shí)間。如圖7-2所示,取指階段完成取指令和分析指令的操作,又叫取指周期;執(zhí)行階段完成執(zhí)行指令的操作,又叫執(zhí)行周期。在大多數(shù)情況下,CPU就是按照取指—執(zhí)行—再取指—再執(zhí)行……的順序自動(dòng)工作的。圖7-2指令周期定義示意
由于各種指令操作功能不同,因此各種指令的指令周期是不相同的。例如無條件轉(zhuǎn)移指令JMPX,在執(zhí)行階段如果不需要訪問主存,操作就非常簡單,完全可以在取指階段的后期將轉(zhuǎn)移地址X送至PC,達(dá)到轉(zhuǎn)移的目的。這樣,JMPX指令的指令周期就是取指周期。一地址格式的加法指令A(yù)DDX,在執(zhí)行階段首先要從X所指示的存儲(chǔ)單元中取出操作數(shù),然后和ACC的內(nèi)容相加,結(jié)果存于ACC中,故這種指令的指令周期在取指和執(zhí)行階段各訪問一次存儲(chǔ)器,其指令周期就包括兩個(gè)存取周期。再如乘法指令,其執(zhí)行階段所要完成的操作比加法指令多得多,故它的執(zhí)行周期超過了加法指令,如圖7-3所示。圖7-3各種指令周期的比較
當(dāng)遇到間接尋址的指令時(shí),由于指令字中只給出操作數(shù)有效地址的地址,因此,為了取出操作數(shù),需先訪問一次存儲(chǔ)器,取出有效地址,然后再訪問存儲(chǔ)器,取出操作數(shù)。這樣,間接尋址的指令周期就包括取指周期、間址周期和執(zhí)行周期三個(gè)階段,如圖7-4所示。圖7-4具有間址周期的指令周期
當(dāng)CPU采用中斷方式實(shí)現(xiàn)主機(jī)與I/O交換信息時(shí),CPU在每條指令執(zhí)行階段結(jié)束前,都要發(fā)中斷查詢信號(hào),以檢測(cè)是否有某個(gè)I/O提出中斷請(qǐng)求。如果有請(qǐng)求,CPU則要進(jìn)入中斷響應(yīng)階段,又稱中斷周期。在這階段,CPU必須將程序斷點(diǎn)保存起來。這樣,一個(gè)完整的指令周期應(yīng)包括取指、間址、執(zhí)行和中斷四個(gè)子周期。圖7-5指令周期流程總之,上述四個(gè)周期都有CPU訪存操作,只是訪存的目的不同。取指周期是為了取指令,間址周期是為了取有效地址,執(zhí)行周期是為了取操作數(shù),中斷周期是為了保存程序斷點(diǎn)。這四個(gè)周期又可叫CPU的工作周期,為了區(qū)別它們,可在CPU內(nèi)設(shè)置四個(gè)標(biāo)志觸發(fā)器,如圖7-6所示。圖7-6CPU工作周期的標(biāo)志
FE、IND、EX和INT分別對(duì)應(yīng)取指、間址、執(zhí)行和中斷四個(gè)周期,并以“1”狀態(tài)表示有效,它們分別由1→FE、1→IND、1→EX和1→INT四個(gè)信號(hào)控制。7.2.2多級(jí)時(shí)序系統(tǒng)1、機(jī)器周期機(jī)器周期可看作是所有指令執(zhí)行過程中的一個(gè)基準(zhǔn)時(shí)間,機(jī)器周期取決于指令的功能及器件的速度。確定機(jī)器周期時(shí),通常要分析機(jī)器指令的執(zhí)行步驟及每一步驟所需的時(shí)間。例如,取數(shù)、存數(shù)指令能反映存儲(chǔ)器的速度及其與CPU的配合情況;加法指令能反映ALU的速度;條件轉(zhuǎn)移指令因?yàn)橐鶕?jù)上一條指令的執(zhí)行結(jié)果,經(jīng)測(cè)試后才能決定是否轉(zhuǎn)移,所需的時(shí)間較長。總之,通過對(duì)機(jī)器指令執(zhí)行步驟的分析,會(huì)找到一個(gè)基準(zhǔn)時(shí)間,在這個(gè)基準(zhǔn)時(shí)間內(nèi),所有指令階段的操作都能結(jié)束。但若以這個(gè)基準(zhǔn)時(shí)間定為機(jī)器周期,顯然不是最合理的。這是因?yàn)橹挥幸酝瓿蓮?fù)雜指令功能所需的時(shí)間作為基準(zhǔn),才能保證所有指令在這個(gè)時(shí)間內(nèi)完成全部操作,而這個(gè)基準(zhǔn)時(shí)間對(duì)簡單指令來說,顯然是一種浪費(fèi)。進(jìn)一步分析發(fā)現(xiàn),機(jī)器內(nèi)的各種操作大致可歸屬為對(duì)CPU內(nèi)部的操作和對(duì)主存的操作兩大類。由于CPU內(nèi)部的操作速度較快,CPU訪存的操作時(shí)間較長,因此通常以訪問一次存儲(chǔ)器的時(shí)間定為基準(zhǔn)時(shí)間較為合理,這基準(zhǔn)時(shí)間就是機(jī)器周期。又由于不論執(zhí)行什么指令,都需要訪問存儲(chǔ)器取出指令,因此在存儲(chǔ)字長等于指令字長的前提下,取指周期也可看作機(jī)器周期。2、時(shí)鐘周期(節(jié)拍)在一個(gè)機(jī)器周期里機(jī)器可完成若干個(gè)微操作,每個(gè)微操作都需要一定的時(shí)間,可用時(shí)鐘信號(hào)來控制產(chǎn)生每一個(gè)微操作命令。這樣,一個(gè)機(jī)器周期內(nèi)就包含了若干個(gè)時(shí)鐘周期,又稱節(jié)拍或狀態(tài)。每個(gè)節(jié)拍的寬度正好對(duì)應(yīng)一個(gè)時(shí)鐘周期。3、多級(jí)時(shí)序系統(tǒng)圖7-7反映了指令周期、機(jī)器周期、節(jié)拍和時(shí)鐘周期的關(guān)系??梢姡粋€(gè)指令周期包含若干個(gè)機(jī)器周期,一個(gè)機(jī)器周期又包含若干個(gè)時(shí)鐘周期,每個(gè)指令內(nèi)的機(jī)器周期數(shù)可以不等,每個(gè)機(jī)器周期內(nèi)的節(jié)拍數(shù)也可以不等。圖7-7多級(jí)時(shí)序關(guān)系
圖中(a)為定長的機(jī)器周期,每個(gè)機(jī)器周期包含4個(gè)節(jié)拍(4個(gè)T);(b)為不定長的機(jī)器周期,每個(gè)機(jī)器周期包含的節(jié)拍數(shù)可以為4個(gè)也可以為3個(gè),這種情況適合于操作比較簡單的指令,它可以跳過某些時(shí)鐘周期,縮短指令周期。指令周期、機(jī)器周期、節(jié)拍組成了多級(jí)時(shí)序系統(tǒng)。7.2.3多級(jí)時(shí)序系統(tǒng)舉例為了加深對(duì)周期及節(jié)拍等概念的理解,下面以Intel8085CPU為例,通過對(duì)一條I/O寫操作指令運(yùn)行過程的分析,來進(jìn)一步認(rèn)識(shí)多級(jí)時(shí)序系統(tǒng)與控制信號(hào)的關(guān)系。1、Intel8085的組成圖7-8是Intel8085的組成框圖。其內(nèi)部有三個(gè)16位寄存器:SP、PC和增減地址暫存器IDAL;11個(gè)8位寄存器:B、C、D、E、H、L、IR、AC、暫存器TR以及地址緩沖寄存器ABR和地址數(shù)據(jù)緩沖寄存器ADBR;一個(gè)5位的狀態(tài)標(biāo)志寄存器FR。圖7-8Intel8085的組成框圖2、Intel8085的外部信號(hào)8085芯片引腳圖如圖7-9所示,共40個(gè)引腳。外部信號(hào)分以下幾類。(1)地址和數(shù)據(jù)信號(hào);(2)定時(shí)和控制信號(hào);(3)存儲(chǔ)器和I/O的初始化信號(hào);(4)與中斷有關(guān)的信號(hào);(5)CPU初始化;(6)電源和地。圖7-9Intel8085的外部引腳圖3、機(jī)器周期和節(jié)拍與控制信號(hào)的關(guān)系8085一條指令可分成1~5個(gè)機(jī)器周期,每個(gè)機(jī)器周期內(nèi)又包含3~5個(gè)節(jié)拍,每個(gè)節(jié)拍持續(xù)一個(gè)時(shí)鐘周期。在每個(gè)節(jié)拍內(nèi),CPU根據(jù)控制信號(hào)執(zhí)行一個(gè)或一組同步的微操作。下面分析一條輸出指令,其功能是將AC的內(nèi)容寫入到所選擇的設(shè)備中,執(zhí)行該指令的時(shí)序圖如圖7-10所示。圖7-108085輸出指令時(shí)序圖該指令的指令周期包含3個(gè)機(jī)器周期M1,M2和M3,每個(gè)機(jī)器周期內(nèi)所包含的節(jié)拍數(shù)不同(M1含4拍,M2和M3均含3拍)。該指令字長為16位,由于數(shù)據(jù)線只有8位,所以要分成兩次將指令取至CPU內(nèi)。第一個(gè)機(jī)器周期取指令的操作碼,第二個(gè)機(jī)器周期取被選設(shè)備的地址,第三個(gè)機(jī)器周期把AC的內(nèi)容通過數(shù)據(jù)總線寫入到被選中的設(shè)備中。7.3指令的執(zhí)行過程上面分析了控制器的功能與組成,計(jì)算機(jī)的周期與節(jié)拍等時(shí)序概念,CPU操作時(shí)對(duì)外所需的控制命令等。下面通過一個(gè)簡單的運(yùn)算器框圖結(jié)構(gòu),來進(jìn)一步的了解指令執(zhí)行的過程與所需的控制信號(hào)。設(shè)CPU結(jié)構(gòu)如圖7-1所示,運(yùn)算器結(jié)構(gòu)及數(shù)據(jù)通路如圖7-11所示。運(yùn)算器由8個(gè)通用寄存器GR及一個(gè)算術(shù)邏輯運(yùn)算部件ALU組成,并有4個(gè)記憶運(yùn)算結(jié)果狀態(tài)的標(biāo)志觸發(fā)器N,Z,V和C。圖7-11運(yùn)算器框圖圖中小圓圈“○”表示受控制的“與”門,帶*號(hào)的是控制命令,各控制命令均來自控制器,其功能在圖中已標(biāo)明。需說明的是,圖7-1中某些操作也需要有相應(yīng)的控制命令控制。(1)一條加法指令的執(zhí)行過程先來分析一條加法指令的執(zhí)行過程,設(shè)指令格式如下:rs,rd,rs1為通用寄存器地址,imm(或disp)為立即數(shù)(或位移量)。加法指令功能:將寄存器(rs)中的一個(gè)數(shù)與存儲(chǔ)器中的一個(gè)數(shù)(其地址為(rs1)+disp)相加,結(jié)果放在寄存器rd中,rs與rd為同一寄存器。加法指令需完成以下幾步操作:①、從存儲(chǔ)器取指令,送入指令寄存器,并進(jìn)行操作碼譯碼(分析指令)。程序計(jì)數(shù)器PC+1,為取下一條指令作好準(zhǔn)備??刂破餍璋l(fā)出的控制信號(hào)為:PC→AB,W/R#=0,M/IO#=1;DB→IR;PC+1。②、計(jì)算數(shù)據(jù)地址,將計(jì)算得到的有效地址送地址寄存器MAR??刂破餍璋l(fā)出的控制信號(hào)為:rs1→GR,(rs1)→ALU,disp→ALU(將rs1的內(nèi)容與disp送ALU);“+”(加法命令送ALU);ALU→MAR(有效地址送地址寄存器)。③、到存儲(chǔ)器取數(shù)控制器需發(fā)出的控制命令為:MAR→AB,W/R#=0,M/IO#=1;DB→MDR(將地址寄存器內(nèi)容送地址總線,同時(shí)發(fā)訪存讀命令,存儲(chǔ)器讀出數(shù)據(jù)送數(shù)據(jù)總線后,打入數(shù)據(jù)寄存器)。④、進(jìn)行加法運(yùn)算,結(jié)果送寄存器,并根據(jù)運(yùn)算結(jié)果置狀態(tài)位N,Z,V,C??刂破餍璋l(fā)出的控制信號(hào)為:rs→GR,(rs)→ALU,MDR→ALU(兩個(gè)源操作數(shù)送ALU);“+”(ALU進(jìn)行加法運(yùn)算);rd→GR,ALU→rd,置N,Z,V,C(結(jié)果送寄存器,并置狀態(tài)位)。以上操作需要四個(gè)機(jī)器周期,其時(shí)間安排如下:其中取指令和取數(shù)周期通過總線訪問存儲(chǔ)器;計(jì)算地址和運(yùn)算送結(jié)果在CPU內(nèi)部進(jìn)行操作,此時(shí)總線空閑。(2)條件轉(zhuǎn)移指令的執(zhí)行過程指令功能:根據(jù)N,Z,V,C的狀態(tài),決定是否轉(zhuǎn)移。如轉(zhuǎn)移條件成立,則轉(zhuǎn)移到本條指令所指定的地址,否則順序執(zhí)行下一條指令。本條指令需完成以下幾步操作:①、從存儲(chǔ)器取指令,送入指令寄存器,并進(jìn)行操作碼譯碼。程序計(jì)數(shù)器加1,如不轉(zhuǎn)移,即為下一條要執(zhí)行的指令地址。②、如轉(zhuǎn)移條件成立,根據(jù)指令規(guī)定的尋址方式計(jì)算有效地址,轉(zhuǎn)移指令經(jīng)常采用相對(duì)尋址方式,此時(shí)轉(zhuǎn)移地址=PC+disp。計(jì)算后將結(jié)果重新送入PC。注意此處的PC已是轉(zhuǎn)移指令的下一條指令的地址。本條指令只需要兩個(gè)機(jī)器周期,如轉(zhuǎn)移條件成立,在第二機(jī)器周期增加一個(gè)ALU→PC信號(hào);另外,如為相對(duì)轉(zhuǎn)移,則用PC→ALU信號(hào)取代加法指令第二周期中的(rs1)→ALU信號(hào),其他信號(hào)與加法指令的前兩個(gè)機(jī)器周期中的信號(hào)相同。其他指令的控制信號(hào)也可按同樣方法分析,根據(jù)每條指令的功能確定所需的機(jī)器周期數(shù),并得出每個(gè)機(jī)器周期所需要的控制信號(hào),最后可將所有的控制信號(hào)進(jìn)行綜合簡化。至此,講述了為什么需要控制信號(hào)及需要什么樣的控制信號(hào),控制器的功能就是按每條指令各個(gè)執(zhí)行步驟的要求產(chǎn)生出每步所需的一系列控制信號(hào)。7.4控制方式控制單元控制一條指令執(zhí)行的過程,實(shí)質(zhì)上是依次執(zhí)行一個(gè)確定的微操作序列的過程。由于不同指令所對(duì)應(yīng)的微操作數(shù)及其復(fù)雜程度不同,因此每條指令和每個(gè)微操作所需的執(zhí)行時(shí)間也不同。通常將如何形成控制不同微操作序列所采用的時(shí)序控制方式稱作控制器的控制方式。1、同步控制指令任何一條指令或指令中的任何一個(gè)微操作的執(zhí)行,都由事先確定且有統(tǒng)一基準(zhǔn)時(shí)標(biāo)的時(shí)序信號(hào)所控制的方式,叫做同步控制方式。圖7-7(a)就是一種典型的同步控制方式,每個(gè)機(jī)器周期都包含4個(gè)節(jié)拍。如果機(jī)器內(nèi)的存儲(chǔ)器其存取周期不統(tǒng)一,那么只有把最長的存取周期作為機(jī)器周期,才能采用同步控制,否則取指令和取數(shù)時(shí)間不同,無法用統(tǒng)一的基準(zhǔn)。又比如有些不訪存的指令,執(zhí)行周期的微操作較少,無須4個(gè)節(jié)拍。因此,為了提高CPU的效率,在同步控制中又有三種方案。(1)采用完全統(tǒng)一的機(jī)器周期和節(jié)拍這種方案的特點(diǎn)是:不論指令所對(duì)應(yīng)的微操作序列有多長,也不管微操作的簡繁,一律以最長的微操作序列和最繁的微操作作為標(biāo)準(zhǔn),采取完全統(tǒng)一的、具有相同時(shí)間間隔和相同數(shù)目的節(jié)拍作為機(jī)器周期來運(yùn)行各種不同的指令。顯然,這種方案對(duì)于微操作序列較短的指令來說,會(huì)造成時(shí)間上的浪費(fèi)。(2)采用不同節(jié)拍的機(jī)器周期這種方案每個(gè)機(jī)器周期內(nèi)的節(jié)拍數(shù)可以不等,圖7-7(b)就是其中一例。這種控制方式可解決微操作執(zhí)行時(shí)間不統(tǒng)一的問題。通常把大多數(shù)微操作安排在一個(gè)較短的機(jī)器周期內(nèi)完成,而對(duì)某些復(fù)雜的微操作,采用延長機(jī)器周期或增加節(jié)拍的辦法來解決,如圖7-12所示。圖7-12延長機(jī)器周期示意(3)采用中央控制和局部控制相結(jié)合的方法這種方案將機(jī)器的大部分指令安排在統(tǒng)一的、較短的機(jī)器周期內(nèi)完成,稱為中央控制,而將少數(shù)操作復(fù)雜的指令中的某些操作采用局部控制方式來完成,如乘除法運(yùn)算和浮點(diǎn)運(yùn)算等。圖7-13示意了中央控制和局部控制相結(jié)合的時(shí)序關(guān)系。圖7-13中央控制和局部控制的時(shí)序關(guān)系以乘法指令為例,第一個(gè)機(jī)器周期采用中央控制的節(jié)拍控制取指令操作,接著仍用中央控制的T0、T1、T2節(jié)拍去完成將操作數(shù)從存儲(chǔ)器中取出并送至寄存器的操作,然后轉(zhuǎn)局部控制,用局部控制節(jié)拍T*完成重復(fù)加和移位的操作。2、異步控制方式異步控制方式不存在基準(zhǔn)時(shí)標(biāo)信號(hào),沒有固定的周期節(jié)拍和嚴(yán)格的時(shí)鐘同步,執(zhí)行每條指令和每個(gè)操作需要多少時(shí)間就占用多少時(shí)間。這種方式微操作的時(shí)序由專門的應(yīng)答線路控制,即當(dāng)CU發(fā)出執(zhí)行某一微操作的控制信號(hào)后,等待執(zhí)行部件完成了該操作后發(fā)回“回答”(或“結(jié)束”)信號(hào),再開始新的微操作,3、聯(lián)合控制方式同步控制和異步控制相結(jié)合就是聯(lián)合控制方式。這種方式對(duì)各種不同指令的微操作實(shí)行大部分統(tǒng)一、小部分區(qū)別對(duì)待的辦法。例如,對(duì)每條指令都有的取指令操作,采用同步方式控制;對(duì)那些時(shí)間難以確定的操作,如I/O操作,則采用異步控制,以執(zhí)行部件送回的“回答”信號(hào)作為本次微操作的結(jié)束。4、人工控制方式人工控制是為了調(diào)試和軟件開發(fā)的需要,在機(jī)器面板或內(nèi)部設(shè)置一些開關(guān)或按鍵,來達(dá)到人工控制的目的。(1)Reset(復(fù)位)鍵(2)連續(xù)或單條執(zhí)行轉(zhuǎn)換開關(guān)(3)符合停機(jī)開關(guān)7.5指令流水線前面對(duì)控制器的組成作了介紹,并分析了指令的執(zhí)行過程,可以看到機(jī)器的各部分在某些周期內(nèi)在進(jìn)行操作,而在某些周期內(nèi)是空閑的。如果控制器調(diào)度恰當(dāng),讓各個(gè)部件都緊張工作,就可提高計(jì)算機(jī)運(yùn)行速度,于是按此思想,在計(jì)算機(jī)中出現(xiàn)了流水線技術(shù)。1、流水線基本工作原理指令流水線類似于工廠的裝配線,裝配線利用了產(chǎn)品在裝配的不同階段其裝配過程不同這一特點(diǎn),使不同產(chǎn)品處在不同的裝配段上,即各個(gè)裝配段同時(shí)對(duì)不同產(chǎn)品進(jìn)行加工,這樣可大大提高裝配效率。將這種裝配生產(chǎn)線的思想用到指令的執(zhí)行上,就引出了指令流水的概念。完成一條指令的操作實(shí)際上可分成許多階段,為簡單起見,先把指令的處理過程分為取指令和執(zhí)行指令兩個(gè)階段,在不采用流水技術(shù)的計(jì)算機(jī)里,取指令和執(zhí)行指令是周而復(fù)始地重復(fù)出現(xiàn),各條指令是按順序串行執(zhí)行的,如圖7-14所示。圖7-14指令的串行執(zhí)行圖中取指令的操作可由指令部件完成,執(zhí)行指令的操作可由執(zhí)行部件完成,程序按指令的順序執(zhí)行完一條再執(zhí)行下一條。順序執(zhí)行的優(yōu)點(diǎn)是控制簡單,各指令間不會(huì)有干擾,但是機(jī)器各部分的利用率不高。如指令部件工作時(shí),執(zhí)行部件基本空閑,而執(zhí)行部件工作時(shí),指令部件基本空閑。如果指令執(zhí)行階段不訪問主存,則完全可以利用這段時(shí)間取下一條指令,這樣就使取下一條指令的操作和執(zhí)行當(dāng)前指令的操作同時(shí)進(jìn)行,從而構(gòu)成兩條指令的重疊執(zhí)行,也即指令的二級(jí)流水。執(zhí)行過程如圖7-15所示。圖7-15指令的二級(jí)流水當(dāng)指令部件完成對(duì)第一條指令的操作后,交給執(zhí)行部件去繼續(xù)處理,同時(shí)進(jìn)行第二條指令的取指操作。假如每個(gè)部件完成操作所需的時(shí)間為T,那么盡管每條指令的執(zhí)行時(shí)間為2T,但當(dāng)?shù)谝粭l指令處理完后,每隔T時(shí)間就能得到一條指令的處理結(jié)果,相當(dāng)于把處理速度提高了一倍。為了進(jìn)一步提高處理速度,可將指令的處理過程分解為更細(xì)的幾個(gè)階段。如按前面分析的加法指令為例,一條指令分成4段,可得到4級(jí)流水線執(zhí)行過程,如圖7-16所示。圖7-16指令的四級(jí)流水若每段所需時(shí)間為T,那么一條指令的執(zhí)行時(shí)間為4T,但當(dāng)?shù)谝粭l指令處理完后,每隔T時(shí)間就能得到一條指令的處理結(jié)果,平均速度提高到4倍左右。但在程序開始執(zhí)行時(shí),由于流水線未裝滿,有的功能部件沒有工作,速度較低。因此只有在流水線裝滿的穩(wěn)定狀態(tài)下,才能保證最高處理速率。當(dāng)將一條指令的執(zhí)行過程分成4段后,需每段都有各自的功能部件執(zhí)行,而各個(gè)功能部件的執(zhí)行時(shí)間是不可能完全相等的。例如,從存儲(chǔ)器取指或取數(shù)的時(shí)間與運(yùn)算時(shí)間可能就不一樣,而在流水線裝滿的情況下,各個(gè)功能部件同時(shí)都在工作,為了保證完成指定的操作,T值應(yīng)該取4段中最長的時(shí)間。此時(shí)有些功能段便會(huì)長時(shí)間處于等待狀態(tài),而達(dá)不到所有功能段全面忙碌的要求,影響流水線作用的發(fā)揮。為了解決這一問題可采用將幾個(gè)時(shí)間較短的功能段合成一個(gè)功能段或?qū)r(shí)間較長的功能段分成幾段等方法,最終目的是使各段所需的時(shí)間相差不大。除了對(duì)指令執(zhí)行可采用流水線技術(shù)外,運(yùn)算操作也可采用流水線技術(shù)。例如,浮點(diǎn)加減運(yùn)算,可以分成“對(duì)階”,“尾數(shù)加/減”及“結(jié)果規(guī)格化”三段,每一段設(shè)置有專門的邏輯電路完成指定操作,并將其輸出保存在鎖存器中,作為下一段的輸入,實(shí)現(xiàn)流水操作,如圖7-17所示。圖7-17運(yùn)算操作流水線由于流水線相鄰兩段在執(zhí)行不同的指令(操作),因此無論是指令流水線或運(yùn)算流水線,在相鄰兩段之間必須設(shè)置鎖存器或寄存器,以保證在一個(gè)周期內(nèi)流水線的輸入信號(hào)保持不變。通常根據(jù)流水線使用級(jí)別的不同,可把流水線分成部件級(jí)、處理機(jī)級(jí)和系統(tǒng)級(jí)流水線。功能部件級(jí)是指構(gòu)成部件內(nèi)的各子部件之間的流水。如運(yùn)算器內(nèi)浮點(diǎn)運(yùn)算的流水。處理機(jī)級(jí)又稱為指令流水線,是指解釋指令的全過程按流水線方式進(jìn)行處理,使處理機(jī)能重疊地執(zhí)行多條指令。系統(tǒng)級(jí)流水線又稱為宏流水線,是指兩個(gè)或兩個(gè)以上的處理機(jī)通過存儲(chǔ)器串行聯(lián)接起來,每個(gè)處理機(jī)對(duì)同一數(shù)據(jù)流的不同部分分別進(jìn)行處理。2、限制流水線性能的因素影響流水線性能的因素主要反映在兩方面:訪存沖突和相關(guān)問題。(1)訪存沖突在上述指令的執(zhí)行階段中,取指令、取操作數(shù)都要訪問存儲(chǔ)器,為了避免沖突,可采用如下一些方法:第一,設(shè)置兩個(gè)獨(dú)立的存儲(chǔ)器分別存放操作數(shù)和指令,以免取指令和取操作數(shù)同時(shí)進(jìn)行時(shí)互相沖突,使取某條指令和取另一條指令的操作數(shù)實(shí)現(xiàn)時(shí)間上的并行。第二,采用指令預(yù)取技術(shù)。如在8086CPU中設(shè)置了指令隊(duì)列,將指令預(yù)先取到指令隊(duì)列中排隊(duì)。指令預(yù)取技術(shù)的實(shí)現(xiàn)基于訪存周期很短的情況,如在執(zhí)行指令階段,取數(shù)時(shí)間很短,因此在執(zhí)行指令時(shí),主存會(huì)有空閑,此時(shí),只要指令隊(duì)列空出,就可取下一條指令,并放至空出的指令隊(duì)列中,從而保證執(zhí)行上的重疊。(2)相關(guān)問題所謂相關(guān)問題是指程序的相近指令之間出現(xiàn)某種關(guān)聯(lián),使指令流水線出現(xiàn)停頓,影響了指令流水線的效率。例如,當(dāng)下一條指令需要用到前面一條(或幾條)指令的結(jié)果時(shí),必須待前面的指令流出流水線后才能執(zhí)行。當(dāng)流水線的級(jí)數(shù)增多時(shí),由于要同時(shí)解釋多條指令,相關(guān)的情況更為復(fù)雜。指令間的相關(guān)大體可分為控制相關(guān)和數(shù)據(jù)相關(guān)兩類。①、控制相關(guān)如果一條指令要等前一條指令作出轉(zhuǎn)移方向的決定后,才能進(jìn)入流水線,便發(fā)生了控制相關(guān),最典型的情況就是條件轉(zhuǎn)移指令,此時(shí)在條件轉(zhuǎn)移指令進(jìn)入流水線后直到確定下一地址之前,流水線不能繼續(xù)處理后面的指令而處于等待狀態(tài),因而影響流水線效率。②、數(shù)據(jù)相關(guān)數(shù)據(jù)相關(guān)是發(fā)生在幾條相近的指令間共用同一個(gè)存儲(chǔ)單元或寄存器時(shí)發(fā)生的。例如,某條指令為了計(jì)算操作數(shù)的地址需要用到某寄存器的內(nèi)容。但是產(chǎn)生這個(gè)“內(nèi)容”的指令還未執(zhí)行結(jié)束,也即還沒有產(chǎn)生結(jié)果,這時(shí)流水線也只能暫停等待。為了解決此問題,可采用旁路技術(shù),即在執(zhí)行部件與指令部件之間設(shè)置直接傳送數(shù)據(jù)的通路,在執(zhí)行部件產(chǎn)生結(jié)果向寄存器送數(shù)的同時(shí),把此數(shù)直接送至指令部件,參與下一條指令的計(jì)算。數(shù)據(jù)相關(guān)按照發(fā)生的情況與流水線的控制方式還可分為讀-寫相關(guān),寫-讀相關(guān),寫-寫相關(guān)等。從上述四級(jí)流水線執(zhí)行圖中還可看出,操作數(shù)的計(jì)算和地址的計(jì)算同時(shí)發(fā)生,若用同一個(gè)計(jì)算部件(圖7-1結(jié)構(gòu))就沒法實(shí)現(xiàn),此時(shí)的解決辦法是在控制器中增設(shè)一個(gè)地址計(jì)算部件(加法器)專門來實(shí)現(xiàn)各尋址方式下有效地址的生成。3、轉(zhuǎn)移指令的處理?xiàng)l件轉(zhuǎn)移指令是保證一個(gè)指令穩(wěn)定進(jìn)入流水線的最大障礙,下面的幾種方法可用于轉(zhuǎn)移指令的處理。(1)多個(gè)指令流一個(gè)簡單的指令流之所以會(huì)受到轉(zhuǎn)移指令的嚴(yán)重影響,其原因在于它必須在取下一條指令時(shí)作出選擇,而且這種選擇還不一定正確。一個(gè)應(yīng)對(duì)的措施是復(fù)制流水線的初始部分,使用兩個(gè)指令流,這兩個(gè)指令流分別執(zhí)行轉(zhuǎn)移指令可能的兩種選擇情況。這種措施雖然可以解決轉(zhuǎn)移指令的不確定性,但是它本身還是存在一些問題。①、使用了多個(gè)流水線,由于對(duì)寄存器和存儲(chǔ)器訪問競(jìng)爭,將會(huì)產(chǎn)生延遲。②、在原來轉(zhuǎn)移判決還未決定之前,可能有其他的轉(zhuǎn)移指令進(jìn)入流水線(兩條中都有可能),這將導(dǎo)致再加流水線。(2)預(yù)取轉(zhuǎn)移目標(biāo)就是在碰到一個(gè)條件轉(zhuǎn)移指令時(shí),除了取出此轉(zhuǎn)移指令之后的指令之外,轉(zhuǎn)移目標(biāo)處的指令也取出來并且保存起來直到轉(zhuǎn)移指令被執(zhí)行。如果轉(zhuǎn)移發(fā)生了,則轉(zhuǎn)移目標(biāo)處的指令已經(jīng)被取出來了。(3)循環(huán)緩沖器循環(huán)緩沖器指的是在流水線取指階段維護(hù)的一個(gè)很小但是速度很快的存儲(chǔ)器,里面裝有n條最近取來的順序指令。如果一個(gè)轉(zhuǎn)移將要發(fā)生時(shí),則硬件首先會(huì)檢查轉(zhuǎn)移的目標(biāo)是否在此存儲(chǔ)器內(nèi),如果在,則下一指令從此緩沖器中取得。在原理上,循環(huán)緩沖器很類似于指令cache,但是循環(huán)緩沖器只保留順序指令,所以容量較小,而且成本較低。采用循環(huán)緩沖器的優(yōu)點(diǎn)有:①、采用預(yù)取技術(shù)的話,循環(huán)緩沖器內(nèi)將會(huì)有一些順序在當(dāng)前指令之前的指令,這樣,順序取來的指令都可能被使用,節(jié)省了通常的訪問存儲(chǔ)器的時(shí)間。②、如果轉(zhuǎn)移的目標(biāo)正好在此轉(zhuǎn)移指令之前的少數(shù)幾個(gè)位置,則轉(zhuǎn)移的目標(biāo)已經(jīng)在緩沖器內(nèi),如使用非常普遍的IF-THEN和IF-THEN-ELSE的順序。③、對(duì)于循環(huán)或者重復(fù)處理非常有用,因此得名循環(huán)緩沖器,如果循環(huán)緩沖器的容量夠大,可以容下循環(huán)所有的指令,那么在第一次循環(huán)時(shí)就會(huì)將所有指令從存儲(chǔ)器中取出,在后面的重復(fù)過程中不再需要取指令。(4)轉(zhuǎn)移預(yù)測(cè)轉(zhuǎn)移預(yù)測(cè)是用來預(yù)測(cè)轉(zhuǎn)移是否發(fā)生的方法,常用的有:依照操作碼預(yù)測(cè);預(yù)測(cè)轉(zhuǎn)移總是發(fā)生;預(yù)測(cè)轉(zhuǎn)移絕不發(fā)生;發(fā)生/不發(fā)生切換;轉(zhuǎn)移歷史記錄等。前三種方法屬于靜態(tài)的,它們不依賴于轉(zhuǎn)移指令過去執(zhí)行的指令的記錄;后面兩種方法為動(dòng)態(tài)的,它們依賴于轉(zhuǎn)移指令執(zhí)行的記錄。它們的思想是預(yù)測(cè)一個(gè)轉(zhuǎn)移的分支,按它繼續(xù)取指并處理,假如條件碼生成后,說明預(yù)測(cè)是正確的,則流水線可繼續(xù)進(jìn)行下去,沒有被打斷,時(shí)間得到充分利用;假如預(yù)測(cè)錯(cuò)誤,則要返回分支點(diǎn)重新取指令執(zhí)行。4、流水線的性能指標(biāo)衡量流水線性能的主要指標(biāo)有吞吐率、加速比和效率。(1)流水線的吞吐率吞吐率(throughputrate)是衡量流水線速度的重要指標(biāo)。它是指在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量或輸出結(jié)果的數(shù)量。計(jì)算流水線的吞吐率最基本的公式為:TP=n/Tk其中n為任務(wù)數(shù),Tk為處理完成n個(gè)任務(wù)所用的時(shí)間。設(shè)輸入到流水線中的任務(wù)是連續(xù)的理想情況,一條k段線性流水線能夠在k+n-1(前k個(gè)周期完成1個(gè)任務(wù),以后每過一個(gè)時(shí)鐘周期有一個(gè)任務(wù)結(jié)束)個(gè)時(shí)鐘周期內(nèi)完成n個(gè)任務(wù)。設(shè)Δt為時(shí)鐘周期,得到流水線的實(shí)際吞吐率為:
TP=TP=當(dāng)輸入的任務(wù)n非常大時(shí),得到最大吞吐率為:
TPmax=(2)流水線的加速比完成同樣一批任務(wù),不使用流水線所用的時(shí)間與使用流水線所用的時(shí)間之比稱為流水線的加速比(speedupratio)。設(shè)T0表示不使用流水線即順序執(zhí)行所用的時(shí)間,Tk表示使用流水線時(shí)的執(zhí)行時(shí)間,則流水線的加速比S的基本公式為:
S=如果流水線各段的執(zhí)行時(shí)間都相等,則一條k段流水線完成n個(gè)連續(xù)任務(wù)所需的時(shí)間為Tk=(k+n-1)?Δt。而不使用流水線即順序執(zhí)行n個(gè)任務(wù)時(shí),所需時(shí)間為T0=k?n?Δt。代入上式可看到,在理想情況下,n非常大時(shí),最大加速比為Smax=k。(3)流水線的效率流水線的設(shè)備利用率稱為流水線的效率(efficiency),即在整個(gè)運(yùn)行時(shí)間里,流水線的設(shè)備有多少時(shí)間是真正用于工作的。它包含時(shí)間和空間兩個(gè)因素,由于流水線存在有建立時(shí)間和排空時(shí)間(最后一個(gè)任務(wù)流入后到流出的時(shí)間),在連續(xù)完成n個(gè)任務(wù)的時(shí)間里,流水線的各段并不總是滿負(fù)荷工作,所以效率總會(huì)小于1。5、Intel80486流水線Intel80486流水線共分5個(gè)階段,分別為:(1)取階段。(2)譯碼階段1(D1)。(3)譯碼階段2(D2)。(4)執(zhí)行階段(EX)。(5)寫回階段(WB)。圖7-1880486指令流水時(shí)序圖圖中(a)為在需要訪問存儲(chǔ)器時(shí),沒有將延遲引入流水線。而在(b)中,對(duì)于一個(gè)用于計(jì)算存儲(chǔ)器地址的值,引入了延時(shí),也就是當(dāng)一個(gè)值從存儲(chǔ)器裝入寄存器中時(shí),該寄存器又作為下一條指令的基址寄存器,則讓處理器延遲一個(gè)周期。圖(c)中為假定轉(zhuǎn)移發(fā)生時(shí)對(duì)轉(zhuǎn)移指令的定時(shí),在WB階段比較指令更新條件碼,使用一個(gè)旁路路徑使得轉(zhuǎn)移指令的EX階段可以同時(shí)使用新的條件碼。在轉(zhuǎn)移指令的EX階段,處理器將同時(shí)運(yùn)行一個(gè)推測(cè)取周期來轉(zhuǎn)移目標(biāo)。當(dāng)轉(zhuǎn)移條件不成立時(shí),處理器將廢除這個(gè)預(yù)取同時(shí)繼續(xù)執(zhí)行一個(gè)順序指令。7.6動(dòng)態(tài)流水線的基本概念從流水線具有功能的多少來看,可分為單功能流水線和多功能流水線。所謂單功能流水線指的是只能實(shí)現(xiàn)固定的一種功能的流水處理。所謂多功能流水線指的是同一個(gè)流水線的各段之間可以有多種不同的聯(lián)接方式以實(shí)現(xiàn)多種不同的運(yùn)算或功能。美國TI-ASC的運(yùn)算器流水線就是多功能的,它有8個(gè)可并行工作的獨(dú)立功能段,如圖7-19所示。當(dāng)要進(jìn)行浮點(diǎn)加、減法運(yùn)算時(shí),各功能段的聯(lián)接如圖7-19(b)所示;當(dāng)要進(jìn)行定點(diǎn)乘法運(yùn)算時(shí),各功能段的聯(lián)接如圖7-19(c)所示。圖7-19ASC運(yùn)算器的流水線從流水線中各段在同一時(shí)間是否允許有多種聯(lián)接方式,可把流水線分成靜態(tài)流水線和動(dòng)態(tài)流水線。當(dāng)然這都是在具有多功能流水線的基礎(chǔ)上而言的。靜態(tài)流水線指的是在同一時(shí)間內(nèi),多功能流水線中的各個(gè)功能段只能按一種功能的聯(lián)接方式工作。上述ASC的8個(gè)功能段只能或者按浮點(diǎn)加、減運(yùn)算的聯(lián)接方式,或者按定點(diǎn)乘除運(yùn)算的聯(lián)接方式工作,因此,在靜態(tài)流水線中,只有當(dāng)進(jìn)入的是一串相同運(yùn)算的指令時(shí),流水的效能才得以發(fā)揮,才能使各個(gè)功能段并行地對(duì)多條指令的數(shù)據(jù)進(jìn)行流水處理。然而,若進(jìn)入的是不同指令相間的指令串,則上述靜態(tài)流水線的效能會(huì)降低到和順序方式一樣。動(dòng)態(tài)流水線則是指在同一時(shí)間內(nèi),上述多功能流水線中的各個(gè)功能段可按不同運(yùn)算或功能的聯(lián)接方式工作。如圖7-19的各個(gè)功能段可以做到在同一個(gè)時(shí)間內(nèi),當(dāng)某些功能段正在實(shí)現(xiàn)某種運(yùn)算時(shí),另一些功能段卻在實(shí)現(xiàn)另一種運(yùn)算。這樣,就不要求非得是進(jìn)入相同運(yùn)算的一串指令才能流水處理。因此,采用動(dòng)態(tài)流水線對(duì)提高流水的吞吐率和設(shè)備的利用率都很有好處,然而卻因?yàn)樵谕粫r(shí)間內(nèi),流水線需能執(zhí)行不同的多種運(yùn)算,從而使流水線的控制要復(fù)雜得多,成本有明顯的增加。目前,流水機(jī)器還是采用靜態(tài)流水線的占多數(shù)。7.7超標(biāo)量的基本概念通常把一個(gè)時(shí)鐘周期內(nèi)能夠同時(shí)發(fā)射、處理多條指令的處理機(jī)稱為超標(biāo)量處理機(jī)。這種處理機(jī)的基本要求是必須要有兩套或者兩套以上的完整的指令執(zhí)行部件。在超標(biāo)量實(shí)現(xiàn)的處理器結(jié)構(gòu)中,整數(shù)和浮點(diǎn)運(yùn)算、裝入、存儲(chǔ)以及條件轉(zhuǎn)移等普通指令可以同時(shí)啟動(dòng)并且獨(dú)立執(zhí)行,即在每個(gè)時(shí)鐘周期內(nèi)可以同時(shí)并發(fā)且執(zhí)行多條獨(dú)立的指令。這種設(shè)計(jì)的實(shí)現(xiàn)涉及到指令流水線的一些復(fù)雜問題。由于在大多數(shù)的應(yīng)用中,大量的操作都是對(duì)標(biāo)量進(jìn)行的,所以超標(biāo)量技術(shù)代表了高性能通用處理器發(fā)展的下一個(gè)目標(biāo)。1、超標(biāo)量和超流水超流水技術(shù)建立在流水線技術(shù)基礎(chǔ)上。超流水的實(shí)現(xiàn)事實(shí)基礎(chǔ)為:大多數(shù)的流水階段所完成的任務(wù)只需要比時(shí)鐘周期的一半還少的時(shí)間。因此在雙倍的內(nèi)部時(shí)鐘速率下,在一個(gè)外部時(shí)鐘周期內(nèi)允許完成兩個(gè)任務(wù)。圖7-20超標(biāo)量和超流水比較從圖中實(shí)現(xiàn)的方式來看,程度更高的超流水和超標(biāo)量的實(shí)現(xiàn)是可能的。需要說明的是,圖中的超流水和超標(biāo)量,二者在穩(wěn)定的狀態(tài)下執(zhí)行相同的指令數(shù)。但是在程序開始和每次轉(zhuǎn)移目標(biāo)時(shí),超流水處理器要落后于超標(biāo)量處理器。2、超標(biāo)量的限制超標(biāo)量的實(shí)現(xiàn)取決于處理器并行執(zhí)行多條指令的能力。所謂指令級(jí)并行指的就是程序指令能夠并行執(zhí)行的程度。通過將硬件技術(shù)和編譯器的優(yōu)化技術(shù)結(jié)合可以達(dá)到最大的程序指令級(jí)的并行性。通常并行性的限制條件有:真實(shí)數(shù)據(jù)相關(guān)性;過程相關(guān)性;資源沖突等。(1)真實(shí)數(shù)據(jù)相關(guān)性如果有如下指令序列:addx,ymovz,x其中第二條指令在第一條指令執(zhí)行之前不能被執(zhí)行,因?yàn)榈诙l指令的執(zhí)行前提是得到第一條指令產(chǎn)生的數(shù)據(jù)。這種情況即為真實(shí)數(shù)據(jù)相關(guān)性。如果不存在相關(guān)性,兩條指令則可以并行地取和執(zhí)行。如果第一、第二條指令間存在數(shù)據(jù)相關(guān)性,則第二條指令要延遲一定的時(shí)鐘周期以待相關(guān)性被消除。一般情況下,所有的指令在它所需要輸入的值被輸入之前都必須被延遲。圖7-21表示了2級(jí)超標(biāo)量機(jī)器中的數(shù)據(jù)相關(guān)性。圖7-21超標(biāo)量流水線中的相關(guān)性(2)過程相關(guān)性指令序列中的條件轉(zhuǎn)移指令將流水線的操作變得十分復(fù)雜,對(duì)于轉(zhuǎn)移指令(可能發(fā)生或者不發(fā)生轉(zhuǎn)移)之后的指令來說,它們的執(zhí)行和轉(zhuǎn)移的過程有相關(guān)性,在轉(zhuǎn)移指令執(zhí)行之前它們都不能執(zhí)行。圖7-21中也說明了2級(jí)超標(biāo)量流水中轉(zhuǎn)移指令的相關(guān)性影響。(3)資源沖突資源沖突指的是有兩個(gè)或者兩個(gè)以上的指令同時(shí)競(jìng)爭同一個(gè)資源,這里的資源可以為存儲(chǔ)器、Cache、寄存器、總線、端口或者功能單元等。它有些類似于數(shù)據(jù)的相關(guān)性。3、超標(biāo)量的設(shè)計(jì)超標(biāo)量在設(shè)計(jì)時(shí),應(yīng)該從以下幾個(gè)方面考慮。(1)指令級(jí)并行性和機(jī)器并行性指令級(jí)并行和機(jī)器并行兩個(gè)概念有著重要的區(qū)別,當(dāng)指令順序中的指令是獨(dú)立的,并且因而可以通過重疊來并行地執(zhí)行,則存在指令級(jí)的并行性。而機(jī)器并行性指的是處理器獲取指令級(jí)并行性益處的能力,即可以同時(shí)取和執(zhí)行的指令條數(shù)(并行流水線數(shù));處理器用來查找出獨(dú)立指令的機(jī)構(gòu)速度以及精致程度,將決定機(jī)器的并行性。為了說明指令級(jí)并行性,考慮以下的兩個(gè)代碼段:loadR1←R2
AddR3←R3,“1”AddR3←R3,“1”AddR4←R3,R2AddR4←R4,R2Store[R4]←R0(1)并行度=3(2)并行度=1代碼段(1)中三條指令是獨(dú)立的,所以從理論上來說,它們是可以并行執(zhí)行的。而在(2)中,三條指令不能并行執(zhí)行,因?yàn)榈诙l指令使用了第一條指令的結(jié)果,而第三條指令又使用了第二條指令的結(jié)果。代碼中真實(shí)數(shù)據(jù)相關(guān)性和過程的相關(guān)性的頻繁程度決定了指令級(jí)的并行性。而這兩個(gè)因素又取決于指令的結(jié)構(gòu)和應(yīng)用。指令級(jí)的并行性也可以通過操作滯后時(shí)間來確定。操作滯后時(shí)間指的是將一條指令的結(jié)果可以作為后續(xù)指令的操作數(shù)使用時(shí)所需要等待的時(shí)間。它確定了一個(gè)數(shù)據(jù)相關(guān)性或者過程相關(guān)性可能會(huì)引起的延遲時(shí)間。(2)指令發(fā)射技術(shù)由于機(jī)器并行性并不只是使得每個(gè)流水段具有多條指令執(zhí)行那么簡單,處理器必須可以確定指令級(jí)并行性,并且指揮指令并行地取指、譯碼和執(zhí)行。而指令發(fā)射就是確定指令級(jí)并行的技術(shù),它指的是處理器試圖在當(dāng)前執(zhí)行點(diǎn)的前面查找可以帶入流水線并且執(zhí)行的指令。為了實(shí)現(xiàn)這一技術(shù),需要確定三種順序。第一,取指令的順序;第二,指令執(zhí)行的順序;第三,指令改變寄存器和存儲(chǔ)器位置的順序。處理器設(shè)計(jì)的好的話,這些順序之間的關(guān)系限制就少。對(duì)于那些嚴(yán)格按照順序執(zhí)行的序列,處理器為了實(shí)現(xiàn)各種流水線元素的最大利用,可能需要更改一個(gè)或多個(gè)順序。不過,處理器更改的前提是必須保證結(jié)果是正確的。所以處理器必須要調(diào)節(jié)好前面所討論的那些沖突。超標(biāo)量指令的發(fā)射技術(shù)可以分成以下幾類:按序發(fā)射按序完成按序發(fā)射無序完成無序發(fā)射無序完成4、寄存器重命名當(dāng)允許無序指令發(fā)射或者無序指令完成時(shí),可能引起輸出相關(guān)性或者反相關(guān)性。這些相關(guān)性和真實(shí)數(shù)據(jù)相關(guān)性和資源沖突有所不同,真實(shí)數(shù)據(jù)相關(guān)性和資源沖突反映了數(shù)據(jù)通過程序的流動(dòng)和執(zhí)行的順序,而輸出相關(guān)性和反相關(guān)性是由于寄存器的值可能不再反映被程序流指定的值的順序而引起的。如下面的程序段:I1:R1=R1OPR2I2:R3=R1+1I3:R1=R4+1I4:R6=R1OPR3代碼段中在指令I(lǐng)2開始執(zhí)行并且已經(jīng)取得它的操作數(shù)之前,I3指令不能完成執(zhí)行,因?yàn)镮3指令將修改寄存器R1,而R1中的內(nèi)容是I2指令的操作數(shù)。由于這種限制的情況與真實(shí)數(shù)據(jù)相關(guān)性正好相反,所以稱之為反相關(guān)性。反相關(guān)性和輸出相關(guān)性就是使用寄存器存儲(chǔ)發(fā)生沖突的情況,在多個(gè)指令需要使用同一寄存器時(shí)發(fā)生競(jìng)爭,從而產(chǎn)生了妨礙流水性能的限制。解決這類寄存器存儲(chǔ)沖突的一個(gè)辦法是使用基于傳統(tǒng)的資源沖突的解決辦法,即資源復(fù)制。在這里,此技術(shù)稱為寄存器的重命名??紤]前面的程序段,在使用重命名之后如何使用寄存器。I1:R1b=R1aOPR2aI2:R3b=R1b+1I3:R1c=R4a+1I4:R6b=R1cOPR3b在本例中,指令I(lǐng)3中寄存器R1c的分配,避免了對(duì)于第二條指令的反相關(guān)性和對(duì)第一條指令的輸出相關(guān)性。并且不影響被I4訪問所需的正確值。這樣,I3指令就可以立即發(fā)射了。7.8CPU舉例7.8.1RISC的CPU結(jié)構(gòu)7.8.2RISC的編譯優(yōu)化7.8.1RISC的CPU結(jié)構(gòu)在此以Sun微系統(tǒng)公司的SPARC結(jié)構(gòu)為例來說明CPU(RISC)的構(gòu)成,并進(jìn)一步講述流水的一些實(shí)現(xiàn)技術(shù)。在RISC機(jī)的指令系統(tǒng)已確定的前提下,為了達(dá)到高速運(yùn)算的目的,其流水線組織盡量使大多數(shù)指令在一個(gè)機(jī)器周期內(nèi)完成,并盡量縮短機(jī)器周期的時(shí)間。1、SPARC的邏輯圖圖7-22是基于SPARC的MB86901芯片的邏輯框圖,其右半部分基本上是運(yùn)算器,左半部分為控制器。圖7-22MB86901邏輯框圖2、流水線組織流水線實(shí)際上是將一條指令的實(shí)現(xiàn)過程分成時(shí)間上大體相等的幾個(gè)階段,然后使幾條指令的不同階段在時(shí)間上重疊起來進(jìn)行。(1)取指、譯碼、執(zhí)行等操作所需時(shí)間的分析①、對(duì)所有指令,取指操作的實(shí)現(xiàn)是相同的。由于現(xiàn)代計(jì)算機(jī)的主存儲(chǔ)器容量比較大,所以它的讀/寫操作速度明顯低于運(yùn)算和邏輯電路。在微機(jī)中,經(jīng)常插入等待周期,以匹配兩者的時(shí)間差距。為減少或消除等待時(shí)間,可采用指令預(yù)取或cache存儲(chǔ)器兩種方法。②、指令譯碼時(shí)間。由于設(shè)計(jì)RISC指令系統(tǒng)時(shí)經(jīng)過周密考慮,指令格式固定,所以譯碼時(shí)間較短。大部分控制信號(hào)經(jīng)過一級(jí)與門和一級(jí)或門即可形成,所以譯碼不一定獨(dú)占流水線的一段,可以與其他操作一起安排在流水線的某一段中。SPARC將譯碼和“從寄存器取數(shù)”安排在同一段內(nèi)。③、執(zhí)行時(shí)間。在RISC中,利用ALU進(jìn)行運(yùn)算的指令,基本上分成兩類:一類是算邏指令,對(duì)寄存器中的操作數(shù)進(jìn)行運(yùn)算后,結(jié)果送回寄存器;另一類是訪問存儲(chǔ)器的Load/Stroe指令或轉(zhuǎn)移指令,需要對(duì)地址進(jìn)行計(jì)算,但不處理數(shù)據(jù)。(2)SPARC指令流水線分析SPARC與存儲(chǔ)器之間的數(shù)據(jù)傳送寬度為32位,所以一次訪存能取出一條指令或存取一個(gè)32位字長的數(shù)據(jù)。在存儲(chǔ)系統(tǒng)中只設(shè)置一個(gè)cache,因此取指和存取數(shù)據(jù)不能同時(shí)進(jìn)行。SPARC的大部分指令按四級(jí)流水線工作,每個(gè)周期完成一條指令,稱為單周期流水線,如圖7-23所示。從存儲(chǔ)器取來的指令一般先送到D寄存器譯碼,然后在下一機(jī)器周期送到E寄存器,在再下一個(gè)機(jī)器周期送W寄存器。D,E和W是處于不同流水段上的指令寄存器。通過C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省大慶市龍鳳區(qū)2026屆中考語文適應(yīng)性模擬試題含解析
- 2026屆衡水市滏陽中學(xué)中考物理全真模擬試卷含解析
- 七年級(jí)語文上冊(cè)期中主題及情境性默寫集訓(xùn)3輪
- 福建省莆田市第七中學(xué)2026屆中考聯(lián)考英語試卷含答案
- 2026屆福建省光澤縣重點(diǎn)達(dá)標(biāo)名校中考物理五模試卷含解析
- 江蘇省無錫市北塘區(qū)重點(diǎn)中學(xué)2026屆中考猜題英語試卷含答案
- 2026屆山東省青島超銀中學(xué)初中物理畢業(yè)考試模擬沖刺卷含解析
- 四川省內(nèi)江市資中學(xué)縣達(dá)標(biāo)名校2026屆中考英語最后沖刺模擬試卷含答案
- 浙江省溫嶺市實(shí)驗(yàn)校2026屆中考英語猜題卷含答案
- 2026屆廣東省深圳市大鵬新區(qū)達(dá)標(biāo)名校中考語文考試模擬沖刺卷含解析
- 清潔工用工勞務(wù)合同范文(2025版)
- 【《重載鐵路牽引變電所儲(chǔ)能裝置的拓?fù)浣Y(jié)構(gòu)和控制策略分析概述》5000字】
- 2024年連云港市教育局直屬學(xué)校教師招聘真題
- 2025貴州畢節(jié)十小教師“跨校競(jìng)聘”工作筆試模擬試題及答案解析
- 消防維保承包合同協(xié)議書
- 五年級(jí)下冊(cè)數(shù)學(xué)期末綜合測(cè)試卷(附答案解析)
- 指定生鮮進(jìn)境管理辦法
- 返鄉(xiāng)創(chuàng)業(yè)園區(qū)管理辦法
- 超市水果供貨協(xié)議書范本
- 2025年內(nèi)蒙古自治區(qū)中考英語真題(原卷版)
- 設(shè)計(jì)師工作總結(jié)素材
評(píng)論
0/150
提交評(píng)論