




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章
控制單元CU本章導讀控制器控制計算機系統中所有組成部件的工作情況,是CPU中結構最復雜,功能最重要的組成部分。本章導讀本章介紹CPU中控制器部分的組成與工作原理,內容包括控制器的功能與結構,計算機系統中有關時序的基本概念,指令執行的過程等,同時對于流水線技術、超標量和超流水等技術進行簡單介紹。最后,通過一個RISCCPU的結構實例,幫助讀者加深對相關知識的理解。本章要點控制器的功能與結構指令執行過程指令流水線的基本概念超標量的基本概念動態流水線的基本概念7.1控制器的功能與組成7.1.1控制器的功能7.1.2控制器的組成7.1.1控制器的功能計算機對信息進行處理(或計算)是通過程序的執行而實現的,程序是完成某個確定算法的指令序列,要預先存放在存儲器中。控制器的作用是控制程序的執行,它必須具有以下基本功能:(1)取指令當程序已在存儲器中時,首先根據程序入口地址取出第一條指令,為此要發出指令地址及控制信號。在程序執行中再不斷取出第2、3…條指令。(2)分析指令或叫解釋指令、指令譯碼等。是對當前取得的指令進行分析,指出它要求作什么操作,并產生相應的操作控制命令,如果參與操作的數據在存儲器中,還需要形成操作數地址。(3)執行指令根據分析指令時產生的“操作命令”和“操作數地址”形成相應的操作控制信號序列,通過CPU、存儲器及輸入輸出設備的執行,實現每條指令的功能,其中還包括對運算結果的處理及下條指令地址的形成。(4)控制程序和數據的輸入與結果輸出根據程序的安排或人的干預,在適當的時候向輸入輸出設備發出一些相應的命令來實現I/O功能,這實際上也是通過執行程序來完成的。(5)對異常情況和某些請求的處理當機器出現某些異常情況,如算術運算的溢出和數據傳送的校驗錯;或機器有某些外來請求,如磁盤上的成批數據需送存儲器或程序員從鍵盤送入命令等,此時由這些部件發出中斷請求信號或DMA請求信號。控制器要能保證這些情況的處理。7.1.2控制器的組成
根據對控制器功能的描述,可見控制器的主要任務就是根據指令操作碼和時序信號,產生各種微操作控制信號,以便正確地建立數據通路,從而完成取指令和執行指令的控制。由此得出控制器的基本組成如下:(1)程序計數器(PC)即指令地址寄存器。在某些計算機中用來存放即將要執行的下一條指令的地址;而在另一些計算機中則用來存放當前正在執行的指令的地址;而在有指令預取功能的計算機中,一般還需要增加一個程序計數器用來存放下一條要取出的指令地址。有兩種途徑來形成指令地址,其一是順序執行的情況,通過程序計數器加“1”形成下一條指令地址(如存儲器按字節編址,要按指令的實際字節數修改)。其二是遇到需要改變順序執行程序的情況,一般由轉移類指令形成轉移地址送往程序計數器,作為下一條指令的地址。(2)指令寄存器(IR)用以存放當前正在執行的指令代碼,以便在指令執行過程中,控制完成一條指令的全部功能。(3)指令譯碼器或操作碼譯碼器對指令寄存器中的指令操作碼OP部分進行分析解釋,判斷指令的功能,并作為產生相應的控制信號的依據。在執行指令過程中,需要形成有一定時序關系的操作控制信號序列,為此還需要下列組成部分。(4)脈沖源和啟停線路脈沖源產生一定頻率的脈沖信號作為整個機器的時鐘脈沖,是機器周期和工作脈沖的基準信號。在機器剛加電時,還應產生一個總清信號(reset)。啟停線路保證可靠地送出或封鎖時鐘脈沖,控制時序信號的發生或停止,從而啟動機器工作或使之停機。(5)時序控制信號形成部件當機器啟動后,在CLK時鐘作用下,根據當前正在執行的指令的需要,產生相應的時序控制信號,并根據被控功能部件的反饋信號調整時序控制信號。圖7-1是控制器基本組成的框圖,假設操作數地址以及轉移地址的計算在運算器中進行(事實上有不少計算機專設有地址加法器)。并假設運算器與控制器之間有內部數據通路,而運算器、控制器與存儲器、輸入輸出設備之間均通過總線相連。一般數據總線能雙向傳送數據,地址總線的信息傳送方向視情況而定,一般CPU輸出地址,存儲器或I/O設備接收地址。圖7-1控制器基本組成框圖
在某些計算機的控制器中,將反映機器運行的狀態(程序計數器PC及運算結果的狀態等信息)集中在一起稱為程序狀態字(PSW),而將保存程序狀態的寄存器稱為程序狀態寄存器(PSR)。各個機器的程序狀態字所包含的內容不完全相同。圖7-1給出的框圖是最基本的控制器組成,事實上現代計算機體系結構有很大的發展,如有些CPU中有一個指令預取隊列,可以預取出若干條指令,存放在由寄存器組成的隊列中,這樣當執行程序需取指令時,可從寄存器中得到。有些CPU為了提高速度,采用了流水線技術。另外在CPU中還應包括有關“中斷處理”的部分、存儲管理的部分、高速緩存部分等。7.2指令周期與多級時序系統7.2.1指令周期的概念7.2.2多級時序系統7.2.3多級時序系統舉例7.2.1指令周期的概念
CPU每取出并執行一條指令所需的全部時間叫指令周期,也即CPU完成一條指令的時間。如圖7-2所示,取指階段完成取指令和分析指令的操作,又叫取指周期;執行階段完成執行指令的操作,又叫執行周期。在大多數情況下,CPU就是按照取指—執行—再取指—再執行……的順序自動工作的。圖7-2指令周期定義示意
由于各種指令操作功能不同,因此各種指令的指令周期是不相同的。例如無條件轉移指令JMPX,在執行階段如果不需要訪問主存,操作就非常簡單,完全可以在取指階段的后期將轉移地址X送至PC,達到轉移的目的。這樣,JMPX指令的指令周期就是取指周期。一地址格式的加法指令ADDX,在執行階段首先要從X所指示的存儲單元中取出操作數,然后和ACC的內容相加,結果存于ACC中,故這種指令的指令周期在取指和執行階段各訪問一次存儲器,其指令周期就包括兩個存取周期。再如乘法指令,其執行階段所要完成的操作比加法指令多得多,故它的執行周期超過了加法指令,如圖7-3所示。圖7-3各種指令周期的比較
當遇到間接尋址的指令時,由于指令字中只給出操作數有效地址的地址,因此,為了取出操作數,需先訪問一次存儲器,取出有效地址,然后再訪問存儲器,取出操作數。這樣,間接尋址的指令周期就包括取指周期、間址周期和執行周期三個階段,如圖7-4所示。圖7-4具有間址周期的指令周期
當CPU采用中斷方式實現主機與I/O交換信息時,CPU在每條指令執行階段結束前,都要發中斷查詢信號,以檢測是否有某個I/O提出中斷請求。如果有請求,CPU則要進入中斷響應階段,又稱中斷周期。在這階段,CPU必須將程序斷點保存起來。這樣,一個完整的指令周期應包括取指、間址、執行和中斷四個子周期。圖7-5指令周期流程總之,上述四個周期都有CPU訪存操作,只是訪存的目的不同。取指周期是為了取指令,間址周期是為了取有效地址,執行周期是為了取操作數,中斷周期是為了保存程序斷點。這四個周期又可叫CPU的工作周期,為了區別它們,可在CPU內設置四個標志觸發器,如圖7-6所示。圖7-6CPU工作周期的標志
FE、IND、EX和INT分別對應取指、間址、執行和中斷四個周期,并以“1”狀態表示有效,它們分別由1→FE、1→IND、1→EX和1→INT四個信號控制。7.2.2多級時序系統1、機器周期機器周期可看作是所有指令執行過程中的一個基準時間,機器周期取決于指令的功能及器件的速度。確定機器周期時,通常要分析機器指令的執行步驟及每一步驟所需的時間。例如,取數、存數指令能反映存儲器的速度及其與CPU的配合情況;加法指令能反映ALU的速度;條件轉移指令因為要根據上一條指令的執行結果,經測試后才能決定是否轉移,所需的時間較長。總之,通過對機器指令執行步驟的分析,會找到一個基準時間,在這個基準時間內,所有指令階段的操作都能結束。但若以這個基準時間定為機器周期,顯然不是最合理的。這是因為只有以完成復雜指令功能所需的時間作為基準,才能保證所有指令在這個時間內完成全部操作,而這個基準時間對簡單指令來說,顯然是一種浪費。進一步分析發現,機器內的各種操作大致可歸屬為對CPU內部的操作和對主存的操作兩大類。由于CPU內部的操作速度較快,CPU訪存的操作時間較長,因此通常以訪問一次存儲器的時間定為基準時間較為合理,這基準時間就是機器周期。又由于不論執行什么指令,都需要訪問存儲器取出指令,因此在存儲字長等于指令字長的前提下,取指周期也可看作機器周期。2、時鐘周期(節拍)在一個機器周期里機器可完成若干個微操作,每個微操作都需要一定的時間,可用時鐘信號來控制產生每一個微操作命令。這樣,一個機器周期內就包含了若干個時鐘周期,又稱節拍或狀態。每個節拍的寬度正好對應一個時鐘周期。3、多級時序系統圖7-7反映了指令周期、機器周期、節拍和時鐘周期的關系。可見,一個指令周期包含若干個機器周期,一個機器周期又包含若干個時鐘周期,每個指令內的機器周期數可以不等,每個機器周期內的節拍數也可以不等。圖7-7多級時序關系
圖中(a)為定長的機器周期,每個機器周期包含4個節拍(4個T);(b)為不定長的機器周期,每個機器周期包含的節拍數可以為4個也可以為3個,這種情況適合于操作比較簡單的指令,它可以跳過某些時鐘周期,縮短指令周期。指令周期、機器周期、節拍組成了多級時序系統。7.2.3多級時序系統舉例為了加深對周期及節拍等概念的理解,下面以Intel8085CPU為例,通過對一條I/O寫操作指令運行過程的分析,來進一步認識多級時序系統與控制信號的關系。1、Intel8085的組成圖7-8是Intel8085的組成框圖。其內部有三個16位寄存器:SP、PC和增減地址暫存器IDAL;11個8位寄存器:B、C、D、E、H、L、IR、AC、暫存器TR以及地址緩沖寄存器ABR和地址數據緩沖寄存器ADBR;一個5位的狀態標志寄存器FR。圖7-8Intel8085的組成框圖2、Intel8085的外部信號8085芯片引腳圖如圖7-9所示,共40個引腳。外部信號分以下幾類。(1)地址和數據信號;(2)定時和控制信號;(3)存儲器和I/O的初始化信號;(4)與中斷有關的信號;(5)CPU初始化;(6)電源和地。圖7-9Intel8085的外部引腳圖3、機器周期和節拍與控制信號的關系8085一條指令可分成1~5個機器周期,每個機器周期內又包含3~5個節拍,每個節拍持續一個時鐘周期。在每個節拍內,CPU根據控制信號執行一個或一組同步的微操作。下面分析一條輸出指令,其功能是將AC的內容寫入到所選擇的設備中,執行該指令的時序圖如圖7-10所示。圖7-108085輸出指令時序圖該指令的指令周期包含3個機器周期M1,M2和M3,每個機器周期內所包含的節拍數不同(M1含4拍,M2和M3均含3拍)。該指令字長為16位,由于數據線只有8位,所以要分成兩次將指令取至CPU內。第一個機器周期取指令的操作碼,第二個機器周期取被選設備的地址,第三個機器周期把AC的內容通過數據總線寫入到被選中的設備中。7.3指令的執行過程上面分析了控制器的功能與組成,計算機的周期與節拍等時序概念,CPU操作時對外所需的控制命令等。下面通過一個簡單的運算器框圖結構,來進一步的了解指令執行的過程與所需的控制信號。設CPU結構如圖7-1所示,運算器結構及數據通路如圖7-11所示。運算器由8個通用寄存器GR及一個算術邏輯運算部件ALU組成,并有4個記憶運算結果狀態的標志觸發器N,Z,V和C。圖7-11運算器框圖圖中小圓圈“○”表示受控制的“與”門,帶*號的是控制命令,各控制命令均來自控制器,其功能在圖中已標明。需說明的是,圖7-1中某些操作也需要有相應的控制命令控制。(1)一條加法指令的執行過程先來分析一條加法指令的執行過程,設指令格式如下:rs,rd,rs1為通用寄存器地址,imm(或disp)為立即數(或位移量)。加法指令功能:將寄存器(rs)中的一個數與存儲器中的一個數(其地址為(rs1)+disp)相加,結果放在寄存器rd中,rs與rd為同一寄存器。加法指令需完成以下幾步操作:①、從存儲器取指令,送入指令寄存器,并進行操作碼譯碼(分析指令)。程序計數器PC+1,為取下一條指令作好準備。控制器需發出的控制信號為:PC→AB,W/R#=0,M/IO#=1;DB→IR;PC+1。②、計算數據地址,將計算得到的有效地址送地址寄存器MAR。控制器需發出的控制信號為:rs1→GR,(rs1)→ALU,disp→ALU(將rs1的內容與disp送ALU);“+”(加法命令送ALU);ALU→MAR(有效地址送地址寄存器)。③、到存儲器取數控制器需發出的控制命令為:MAR→AB,W/R#=0,M/IO#=1;DB→MDR(將地址寄存器內容送地址總線,同時發訪存讀命令,存儲器讀出數據送數據總線后,打入數據寄存器)。④、進行加法運算,結果送寄存器,并根據運算結果置狀態位N,Z,V,C。控制器需發出的控制信號為:rs→GR,(rs)→ALU,MDR→ALU(兩個源操作數送ALU);“+”(ALU進行加法運算);rd→GR,ALU→rd,置N,Z,V,C(結果送寄存器,并置狀態位)。以上操作需要四個機器周期,其時間安排如下:其中取指令和取數周期通過總線訪問存儲器;計算地址和運算送結果在CPU內部進行操作,此時總線空閑。(2)條件轉移指令的執行過程指令功能:根據N,Z,V,C的狀態,決定是否轉移。如轉移條件成立,則轉移到本條指令所指定的地址,否則順序執行下一條指令。本條指令需完成以下幾步操作:①、從存儲器取指令,送入指令寄存器,并進行操作碼譯碼。程序計數器加1,如不轉移,即為下一條要執行的指令地址。②、如轉移條件成立,根據指令規定的尋址方式計算有效地址,轉移指令經常采用相對尋址方式,此時轉移地址=PC+disp。計算后將結果重新送入PC。注意此處的PC已是轉移指令的下一條指令的地址。本條指令只需要兩個機器周期,如轉移條件成立,在第二機器周期增加一個ALU→PC信號;另外,如為相對轉移,則用PC→ALU信號取代加法指令第二周期中的(rs1)→ALU信號,其他信號與加法指令的前兩個機器周期中的信號相同。其他指令的控制信號也可按同樣方法分析,根據每條指令的功能確定所需的機器周期數,并得出每個機器周期所需要的控制信號,最后可將所有的控制信號進行綜合簡化。至此,講述了為什么需要控制信號及需要什么樣的控制信號,控制器的功能就是按每條指令各個執行步驟的要求產生出每步所需的一系列控制信號。7.4控制方式控制單元控制一條指令執行的過程,實質上是依次執行一個確定的微操作序列的過程。由于不同指令所對應的微操作數及其復雜程度不同,因此每條指令和每個微操作所需的執行時間也不同。通常將如何形成控制不同微操作序列所采用的時序控制方式稱作控制器的控制方式。1、同步控制指令任何一條指令或指令中的任何一個微操作的執行,都由事先確定且有統一基準時標的時序信號所控制的方式,叫做同步控制方式。圖7-7(a)就是一種典型的同步控制方式,每個機器周期都包含4個節拍。如果機器內的存儲器其存取周期不統一,那么只有把最長的存取周期作為機器周期,才能采用同步控制,否則取指令和取數時間不同,無法用統一的基準。又比如有些不訪存的指令,執行周期的微操作較少,無須4個節拍。因此,為了提高CPU的效率,在同步控制中又有三種方案。(1)采用完全統一的機器周期和節拍這種方案的特點是:不論指令所對應的微操作序列有多長,也不管微操作的簡繁,一律以最長的微操作序列和最繁的微操作作為標準,采取完全統一的、具有相同時間間隔和相同數目的節拍作為機器周期來運行各種不同的指令。顯然,這種方案對于微操作序列較短的指令來說,會造成時間上的浪費。(2)采用不同節拍的機器周期這種方案每個機器周期內的節拍數可以不等,圖7-7(b)就是其中一例。這種控制方式可解決微操作執行時間不統一的問題。通常把大多數微操作安排在一個較短的機器周期內完成,而對某些復雜的微操作,采用延長機器周期或增加節拍的辦法來解決,如圖7-12所示。圖7-12延長機器周期示意(3)采用中央控制和局部控制相結合的方法這種方案將機器的大部分指令安排在統一的、較短的機器周期內完成,稱為中央控制,而將少數操作復雜的指令中的某些操作采用局部控制方式來完成,如乘除法運算和浮點運算等。圖7-13示意了中央控制和局部控制相結合的時序關系。圖7-13中央控制和局部控制的時序關系以乘法指令為例,第一個機器周期采用中央控制的節拍控制取指令操作,接著仍用中央控制的T0、T1、T2節拍去完成將操作數從存儲器中取出并送至寄存器的操作,然后轉局部控制,用局部控制節拍T*完成重復加和移位的操作。2、異步控制方式異步控制方式不存在基準時標信號,沒有固定的周期節拍和嚴格的時鐘同步,執行每條指令和每個操作需要多少時間就占用多少時間。這種方式微操作的時序由專門的應答線路控制,即當CU發出執行某一微操作的控制信號后,等待執行部件完成了該操作后發回“回答”(或“結束”)信號,再開始新的微操作,3、聯合控制方式同步控制和異步控制相結合就是聯合控制方式。這種方式對各種不同指令的微操作實行大部分統一、小部分區別對待的辦法。例如,對每條指令都有的取指令操作,采用同步方式控制;對那些時間難以確定的操作,如I/O操作,則采用異步控制,以執行部件送回的“回答”信號作為本次微操作的結束。4、人工控制方式人工控制是為了調試和軟件開發的需要,在機器面板或內部設置一些開關或按鍵,來達到人工控制的目的。(1)Reset(復位)鍵(2)連續或單條執行轉換開關(3)符合停機開關7.5指令流水線前面對控制器的組成作了介紹,并分析了指令的執行過程,可以看到機器的各部分在某些周期內在進行操作,而在某些周期內是空閑的。如果控制器調度恰當,讓各個部件都緊張工作,就可提高計算機運行速度,于是按此思想,在計算機中出現了流水線技術。1、流水線基本工作原理指令流水線類似于工廠的裝配線,裝配線利用了產品在裝配的不同階段其裝配過程不同這一特點,使不同產品處在不同的裝配段上,即各個裝配段同時對不同產品進行加工,這樣可大大提高裝配效率。將這種裝配生產線的思想用到指令的執行上,就引出了指令流水的概念。完成一條指令的操作實際上可分成許多階段,為簡單起見,先把指令的處理過程分為取指令和執行指令兩個階段,在不采用流水技術的計算機里,取指令和執行指令是周而復始地重復出現,各條指令是按順序串行執行的,如圖7-14所示。圖7-14指令的串行執行圖中取指令的操作可由指令部件完成,執行指令的操作可由執行部件完成,程序按指令的順序執行完一條再執行下一條。順序執行的優點是控制簡單,各指令間不會有干擾,但是機器各部分的利用率不高。如指令部件工作時,執行部件基本空閑,而執行部件工作時,指令部件基本空閑。如果指令執行階段不訪問主存,則完全可以利用這段時間取下一條指令,這樣就使取下一條指令的操作和執行當前指令的操作同時進行,從而構成兩條指令的重疊執行,也即指令的二級流水。執行過程如圖7-15所示。圖7-15指令的二級流水當指令部件完成對第一條指令的操作后,交給執行部件去繼續處理,同時進行第二條指令的取指操作。假如每個部件完成操作所需的時間為T,那么盡管每條指令的執行時間為2T,但當第一條指令處理完后,每隔T時間就能得到一條指令的處理結果,相當于把處理速度提高了一倍。為了進一步提高處理速度,可將指令的處理過程分解為更細的幾個階段。如按前面分析的加法指令為例,一條指令分成4段,可得到4級流水線執行過程,如圖7-16所示。圖7-16指令的四級流水若每段所需時間為T,那么一條指令的執行時間為4T,但當第一條指令處理完后,每隔T時間就能得到一條指令的處理結果,平均速度提高到4倍左右。但在程序開始執行時,由于流水線未裝滿,有的功能部件沒有工作,速度較低。因此只有在流水線裝滿的穩定狀態下,才能保證最高處理速率。當將一條指令的執行過程分成4段后,需每段都有各自的功能部件執行,而各個功能部件的執行時間是不可能完全相等的。例如,從存儲器取指或取數的時間與運算時間可能就不一樣,而在流水線裝滿的情況下,各個功能部件同時都在工作,為了保證完成指定的操作,T值應該取4段中最長的時間。此時有些功能段便會長時間處于等待狀態,而達不到所有功能段全面忙碌的要求,影響流水線作用的發揮。為了解決這一問題可采用將幾個時間較短的功能段合成一個功能段或將時間較長的功能段分成幾段等方法,最終目的是使各段所需的時間相差不大。除了對指令執行可采用流水線技術外,運算操作也可采用流水線技術。例如,浮點加減運算,可以分成“對階”,“尾數加/減”及“結果規格化”三段,每一段設置有專門的邏輯電路完成指定操作,并將其輸出保存在鎖存器中,作為下一段的輸入,實現流水操作,如圖7-17所示。圖7-17運算操作流水線由于流水線相鄰兩段在執行不同的指令(操作),因此無論是指令流水線或運算流水線,在相鄰兩段之間必須設置鎖存器或寄存器,以保證在一個周期內流水線的輸入信號保持不變。通常根據流水線使用級別的不同,可把流水線分成部件級、處理機級和系統級流水線。功能部件級是指構成部件內的各子部件之間的流水。如運算器內浮點運算的流水。處理機級又稱為指令流水線,是指解釋指令的全過程按流水線方式進行處理,使處理機能重疊地執行多條指令。系統級流水線又稱為宏流水線,是指兩個或兩個以上的處理機通過存儲器串行聯接起來,每個處理機對同一數據流的不同部分分別進行處理。2、限制流水線性能的因素影響流水線性能的因素主要反映在兩方面:訪存沖突和相關問題。(1)訪存沖突在上述指令的執行階段中,取指令、取操作數都要訪問存儲器,為了避免沖突,可采用如下一些方法:第一,設置兩個獨立的存儲器分別存放操作數和指令,以免取指令和取操作數同時進行時互相沖突,使取某條指令和取另一條指令的操作數實現時間上的并行。第二,采用指令預取技術。如在8086CPU中設置了指令隊列,將指令預先取到指令隊列中排隊。指令預取技術的實現基于訪存周期很短的情況,如在執行指令階段,取數時間很短,因此在執行指令時,主存會有空閑,此時,只要指令隊列空出,就可取下一條指令,并放至空出的指令隊列中,從而保證執行上的重疊。(2)相關問題所謂相關問題是指程序的相近指令之間出現某種關聯,使指令流水線出現停頓,影響了指令流水線的效率。例如,當下一條指令需要用到前面一條(或幾條)指令的結果時,必須待前面的指令流出流水線后才能執行。當流水線的級數增多時,由于要同時解釋多條指令,相關的情況更為復雜。指令間的相關大體可分為控制相關和數據相關兩類。①、控制相關如果一條指令要等前一條指令作出轉移方向的決定后,才能進入流水線,便發生了控制相關,最典型的情況就是條件轉移指令,此時在條件轉移指令進入流水線后直到確定下一地址之前,流水線不能繼續處理后面的指令而處于等待狀態,因而影響流水線效率。②、數據相關數據相關是發生在幾條相近的指令間共用同一個存儲單元或寄存器時發生的。例如,某條指令為了計算操作數的地址需要用到某寄存器的內容。但是產生這個“內容”的指令還未執行結束,也即還沒有產生結果,這時流水線也只能暫停等待。為了解決此問題,可采用旁路技術,即在執行部件與指令部件之間設置直接傳送數據的通路,在執行部件產生結果向寄存器送數的同時,把此數直接送至指令部件,參與下一條指令的計算。數據相關按照發生的情況與流水線的控制方式還可分為讀-寫相關,寫-讀相關,寫-寫相關等。從上述四級流水線執行圖中還可看出,操作數的計算和地址的計算同時發生,若用同一個計算部件(圖7-1結構)就沒法實現,此時的解決辦法是在控制器中增設一個地址計算部件(加法器)專門來實現各尋址方式下有效地址的生成。3、轉移指令的處理條件轉移指令是保證一個指令穩定進入流水線的最大障礙,下面的幾種方法可用于轉移指令的處理。(1)多個指令流一個簡單的指令流之所以會受到轉移指令的嚴重影響,其原因在于它必須在取下一條指令時作出選擇,而且這種選擇還不一定正確。一個應對的措施是復制流水線的初始部分,使用兩個指令流,這兩個指令流分別執行轉移指令可能的兩種選擇情況。這種措施雖然可以解決轉移指令的不確定性,但是它本身還是存在一些問題。①、使用了多個流水線,由于對寄存器和存儲器訪問競爭,將會產生延遲。②、在原來轉移判決還未決定之前,可能有其他的轉移指令進入流水線(兩條中都有可能),這將導致再加流水線。(2)預取轉移目標就是在碰到一個條件轉移指令時,除了取出此轉移指令之后的指令之外,轉移目標處的指令也取出來并且保存起來直到轉移指令被執行。如果轉移發生了,則轉移目標處的指令已經被取出來了。(3)循環緩沖器循環緩沖器指的是在流水線取指階段維護的一個很小但是速度很快的存儲器,里面裝有n條最近取來的順序指令。如果一個轉移將要發生時,則硬件首先會檢查轉移的目標是否在此存儲器內,如果在,則下一指令從此緩沖器中取得。在原理上,循環緩沖器很類似于指令cache,但是循環緩沖器只保留順序指令,所以容量較小,而且成本較低。采用循環緩沖器的優點有:①、采用預取技術的話,循環緩沖器內將會有一些順序在當前指令之前的指令,這樣,順序取來的指令都可能被使用,節省了通常的訪問存儲器的時間。②、如果轉移的目標正好在此轉移指令之前的少數幾個位置,則轉移的目標已經在緩沖器內,如使用非常普遍的IF-THEN和IF-THEN-ELSE的順序。③、對于循環或者重復處理非常有用,因此得名循環緩沖器,如果循環緩沖器的容量夠大,可以容下循環所有的指令,那么在第一次循環時就會將所有指令從存儲器中取出,在后面的重復過程中不再需要取指令。(4)轉移預測轉移預測是用來預測轉移是否發生的方法,常用的有:依照操作碼預測;預測轉移總是發生;預測轉移絕不發生;發生/不發生切換;轉移歷史記錄等。前三種方法屬于靜態的,它們不依賴于轉移指令過去執行的指令的記錄;后面兩種方法為動態的,它們依賴于轉移指令執行的記錄。它們的思想是預測一個轉移的分支,按它繼續取指并處理,假如條件碼生成后,說明預測是正確的,則流水線可繼續進行下去,沒有被打斷,時間得到充分利用;假如預測錯誤,則要返回分支點重新取指令執行。4、流水線的性能指標衡量流水線性能的主要指標有吞吐率、加速比和效率。(1)流水線的吞吐率吞吐率(throughputrate)是衡量流水線速度的重要指標。它是指在單位時間內流水線所完成的任務數量或輸出結果的數量。計算流水線的吞吐率最基本的公式為:TP=n/Tk其中n為任務數,Tk為處理完成n個任務所用的時間。設輸入到流水線中的任務是連續的理想情況,一條k段線性流水線能夠在k+n-1(前k個周期完成1個任務,以后每過一個時鐘周期有一個任務結束)個時鐘周期內完成n個任務。設Δt為時鐘周期,得到流水線的實際吞吐率為:
TP=TP=當輸入的任務n非常大時,得到最大吞吐率為:
TPmax=(2)流水線的加速比完成同樣一批任務,不使用流水線所用的時間與使用流水線所用的時間之比稱為流水線的加速比(speedupratio)。設T0表示不使用流水線即順序執行所用的時間,Tk表示使用流水線時的執行時間,則流水線的加速比S的基本公式為:
S=如果流水線各段的執行時間都相等,則一條k段流水線完成n個連續任務所需的時間為Tk=(k+n-1)?Δt。而不使用流水線即順序執行n個任務時,所需時間為T0=k?n?Δt。代入上式可看到,在理想情況下,n非常大時,最大加速比為Smax=k。(3)流水線的效率流水線的設備利用率稱為流水線的效率(efficiency),即在整個運行時間里,流水線的設備有多少時間是真正用于工作的。它包含時間和空間兩個因素,由于流水線存在有建立時間和排空時間(最后一個任務流入后到流出的時間),在連續完成n個任務的時間里,流水線的各段并不總是滿負荷工作,所以效率總會小于1。5、Intel80486流水線Intel80486流水線共分5個階段,分別為:(1)取階段。(2)譯碼階段1(D1)。(3)譯碼階段2(D2)。(4)執行階段(EX)。(5)寫回階段(WB)。圖7-1880486指令流水時序圖圖中(a)為在需要訪問存儲器時,沒有將延遲引入流水線。而在(b)中,對于一個用于計算存儲器地址的值,引入了延時,也就是當一個值從存儲器裝入寄存器中時,該寄存器又作為下一條指令的基址寄存器,則讓處理器延遲一個周期。圖(c)中為假定轉移發生時對轉移指令的定時,在WB階段比較指令更新條件碼,使用一個旁路路徑使得轉移指令的EX階段可以同時使用新的條件碼。在轉移指令的EX階段,處理器將同時運行一個推測取周期來轉移目標。當轉移條件不成立時,處理器將廢除這個預取同時繼續執行一個順序指令。7.6動態流水線的基本概念從流水線具有功能的多少來看,可分為單功能流水線和多功能流水線。所謂單功能流水線指的是只能實現固定的一種功能的流水處理。所謂多功能流水線指的是同一個流水線的各段之間可以有多種不同的聯接方式以實現多種不同的運算或功能。美國TI-ASC的運算器流水線就是多功能的,它有8個可并行工作的獨立功能段,如圖7-19所示。當要進行浮點加、減法運算時,各功能段的聯接如圖7-19(b)所示;當要進行定點乘法運算時,各功能段的聯接如圖7-19(c)所示。圖7-19ASC運算器的流水線從流水線中各段在同一時間是否允許有多種聯接方式,可把流水線分成靜態流水線和動態流水線。當然這都是在具有多功能流水線的基礎上而言的。靜態流水線指的是在同一時間內,多功能流水線中的各個功能段只能按一種功能的聯接方式工作。上述ASC的8個功能段只能或者按浮點加、減運算的聯接方式,或者按定點乘除運算的聯接方式工作,因此,在靜態流水線中,只有當進入的是一串相同運算的指令時,流水的效能才得以發揮,才能使各個功能段并行地對多條指令的數據進行流水處理。然而,若進入的是不同指令相間的指令串,則上述靜態流水線的效能會降低到和順序方式一樣。動態流水線則是指在同一時間內,上述多功能流水線中的各個功能段可按不同運算或功能的聯接方式工作。如圖7-19的各個功能段可以做到在同一個時間內,當某些功能段正在實現某種運算時,另一些功能段卻在實現另一種運算。這樣,就不要求非得是進入相同運算的一串指令才能流水處理。因此,采用動態流水線對提高流水的吞吐率和設備的利用率都很有好處,然而卻因為在同一時間內,流水線需能執行不同的多種運算,從而使流水線的控制要復雜得多,成本有明顯的增加。目前,流水機器還是采用靜態流水線的占多數。7.7超標量的基本概念通常把一個時鐘周期內能夠同時發射、處理多條指令的處理機稱為超標量處理機。這種處理機的基本要求是必須要有兩套或者兩套以上的完整的指令執行部件。在超標量實現的處理器結構中,整數和浮點運算、裝入、存儲以及條件轉移等普通指令可以同時啟動并且獨立執行,即在每個時鐘周期內可以同時并發且執行多條獨立的指令。這種設計的實現涉及到指令流水線的一些復雜問題。由于在大多數的應用中,大量的操作都是對標量進行的,所以超標量技術代表了高性能通用處理器發展的下一個目標。1、超標量和超流水超流水技術建立在流水線技術基礎上。超流水的實現事實基礎為:大多數的流水階段所完成的任務只需要比時鐘周期的一半還少的時間。因此在雙倍的內部時鐘速率下,在一個外部時鐘周期內允許完成兩個任務。圖7-20超標量和超流水比較從圖中實現的方式來看,程度更高的超流水和超標量的實現是可能的。需要說明的是,圖中的超流水和超標量,二者在穩定的狀態下執行相同的指令數。但是在程序開始和每次轉移目標時,超流水處理器要落后于超標量處理器。2、超標量的限制超標量的實現取決于處理器并行執行多條指令的能力。所謂指令級并行指的就是程序指令能夠并行執行的程度。通過將硬件技術和編譯器的優化技術結合可以達到最大的程序指令級的并行性。通常并行性的限制條件有:真實數據相關性;過程相關性;資源沖突等。(1)真實數據相關性如果有如下指令序列:addx,ymovz,x其中第二條指令在第一條指令執行之前不能被執行,因為第二條指令的執行前提是得到第一條指令產生的數據。這種情況即為真實數據相關性。如果不存在相關性,兩條指令則可以并行地取和執行。如果第一、第二條指令間存在數據相關性,則第二條指令要延遲一定的時鐘周期以待相關性被消除。一般情況下,所有的指令在它所需要輸入的值被輸入之前都必須被延遲。圖7-21表示了2級超標量機器中的數據相關性。圖7-21超標量流水線中的相關性(2)過程相關性指令序列中的條件轉移指令將流水線的操作變得十分復雜,對于轉移指令(可能發生或者不發生轉移)之后的指令來說,它們的執行和轉移的過程有相關性,在轉移指令執行之前它們都不能執行。圖7-21中也說明了2級超標量流水中轉移指令的相關性影響。(3)資源沖突資源沖突指的是有兩個或者兩個以上的指令同時競爭同一個資源,這里的資源可以為存儲器、Cache、寄存器、總線、端口或者功能單元等。它有些類似于數據的相關性。3、超標量的設計超標量在設計時,應該從以下幾個方面考慮。(1)指令級并行性和機器并行性指令級并行和機器并行兩個概念有著重要的區別,當指令順序中的指令是獨立的,并且因而可以通過重疊來并行地執行,則存在指令級的并行性。而機器并行性指的是處理器獲取指令級并行性益處的能力,即可以同時取和執行的指令條數(并行流水線數);處理器用來查找出獨立指令的機構速度以及精致程度,將決定機器的并行性。為了說明指令級并行性,考慮以下的兩個代碼段:loadR1←R2
AddR3←R3,“1”AddR3←R3,“1”AddR4←R3,R2AddR4←R4,R2Store[R4]←R0(1)并行度=3(2)并行度=1代碼段(1)中三條指令是獨立的,所以從理論上來說,它們是可以并行執行的。而在(2)中,三條指令不能并行執行,因為第二條指令使用了第一條指令的結果,而第三條指令又使用了第二條指令的結果。代碼中真實數據相關性和過程的相關性的頻繁程度決定了指令級的并行性。而這兩個因素又取決于指令的結構和應用。指令級的并行性也可以通過操作滯后時間來確定。操作滯后時間指的是將一條指令的結果可以作為后續指令的操作數使用時所需要等待的時間。它確定了一個數據相關性或者過程相關性可能會引起的延遲時間。(2)指令發射技術由于機器并行性并不只是使得每個流水段具有多條指令執行那么簡單,處理器必須可以確定指令級并行性,并且指揮指令并行地取指、譯碼和執行。而指令發射就是確定指令級并行的技術,它指的是處理器試圖在當前執行點的前面查找可以帶入流水線并且執行的指令。為了實現這一技術,需要確定三種順序。第一,取指令的順序;第二,指令執行的順序;第三,指令改變寄存器和存儲器位置的順序。處理器設計的好的話,這些順序之間的關系限制就少。對于那些嚴格按照順序執行的序列,處理器為了實現各種流水線元素的最大利用,可能需要更改一個或多個順序。不過,處理器更改的前提是必須保證結果是正確的。所以處理器必須要調節好前面所討論的那些沖突。超標量指令的發射技術可以分成以下幾類:按序發射按序完成按序發射無序完成無序發射無序完成4、寄存器重命名當允許無序指令發射或者無序指令完成時,可能引起輸出相關性或者反相關性。這些相關性和真實數據相關性和資源沖突有所不同,真實數據相關性和資源沖突反映了數據通過程序的流動和執行的順序,而輸出相關性和反相關性是由于寄存器的值可能不再反映被程序流指定的值的順序而引起的。如下面的程序段:I1:R1=R1OPR2I2:R3=R1+1I3:R1=R4+1I4:R6=R1OPR3代碼段中在指令I2開始執行并且已經取得它的操作數之前,I3指令不能完成執行,因為I3指令將修改寄存器R1,而R1中的內容是I2指令的操作數。由于這種限制的情況與真實數據相關性正好相反,所以稱之為反相關性。反相關性和輸出相關性就是使用寄存器存儲發生沖突的情況,在多個指令需要使用同一寄存器時發生競爭,從而產生了妨礙流水性能的限制。解決這類寄存器存儲沖突的一個辦法是使用基于傳統的資源沖突的解決辦法,即資源復制。在這里,此技術稱為寄存器的重命名。考慮前面的程序段,在使用重命名之后如何使用寄存器。I1:R1b=R1aOPR2aI2:R3b=R1b+1I3:R1c=R4a+1I4:R6b=R1cOPR3b在本例中,指令I3中寄存器R1c的分配,避免了對于第二條指令的反相關性和對第一條指令的輸出相關性。并且不影響被I4訪問所需的正確值。這樣,I3指令就可以立即發射了。7.8CPU舉例7.8.1RISC的CPU結構7.8.2RISC的編譯優化7.8.1RISC的CPU結構在此以Sun微系統公司的SPARC結構為例來說明CPU(RISC)的構成,并進一步講述流水的一些實現技術。在RISC機的指令系統已確定的前提下,為了達到高速運算的目的,其流水線組織盡量使大多數指令在一個機器周期內完成,并盡量縮短機器周期的時間。1、SPARC的邏輯圖圖7-22是基于SPARC的MB86901芯片的邏輯框圖,其右半部分基本上是運算器,左半部分為控制器。圖7-22MB86901邏輯框圖2、流水線組織流水線實際上是將一條指令的實現過程分成時間上大體相等的幾個階段,然后使幾條指令的不同階段在時間上重疊起來進行。(1)取指、譯碼、執行等操作所需時間的分析①、對所有指令,取指操作的實現是相同的。由于現代計算機的主存儲器容量比較大,所以它的讀/寫操作速度明顯低于運算和邏輯電路。在微機中,經常插入等待周期,以匹配兩者的時間差距。為減少或消除等待時間,可采用指令預取或cache存儲器兩種方法。②、指令譯碼時間。由于設計RISC指令系統時經過周密考慮,指令格式固定,所以譯碼時間較短。大部分控制信號經過一級與門和一級或門即可形成,所以譯碼不一定獨占流水線的一段,可以與其他操作一起安排在流水線的某一段中。SPARC將譯碼和“從寄存器取數”安排在同一段內。③、執行時間。在RISC中,利用ALU進行運算的指令,基本上分成兩類:一類是算邏指令,對寄存器中的操作數進行運算后,結果送回寄存器;另一類是訪問存儲器的Load/Stroe指令或轉移指令,需要對地址進行計算,但不處理數據。(2)SPARC指令流水線分析SPARC與存儲器之間的數據傳送寬度為32位,所以一次訪存能取出一條指令或存取一個32位字長的數據。在存儲系統中只設置一個cache,因此取指和存取數據不能同時進行。SPARC的大部分指令按四級流水線工作,每個周期完成一條指令,稱為單周期流水線,如圖7-23所示。從存儲器取來的指令一般先送到D寄存器譯碼,然后在下一機器周期送到E寄存器,在再下一個機器周期送W寄存器。D,E和W是處于不同流水段上的指令寄存器。通過C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45683-2025產品幾何技術規范(GPS)幾何公差一般幾何規范和一般尺寸規范
- 2025年心理學概論考試試卷及答案
- 2025年心理學專業碩士研究生入學考試試卷及答案
- 2025年物理學基礎知識驗收考試題及答案
- 2025年食品安全監督相關考試試題及答案
- Adezmapimod-hydrochloride-Standard-SB-203580-hydrochloride-Standard-生命科學試劑-MCE
- 2025年社會工作者職業資格認證考試試題及答案
- 2025年農學與生態學研究生入學考試試題及答案
- 2025年電子商務技術考試試卷及答案
- 2025年兒童發展心理學考試試題及答案
- 審核技巧培訓
- 延遲退休人員協議書
- 井下作業施工方案
- 2025年房地產開發經營服務項目投資風險評估報告
- EPC項目全流程咨詢管理的核心要點與優化策略
- 鐵路施工高空作業安全教育
- 2025年管道工(技師)職業技能鑒定理論考試題庫(含答案)
- 一體化污水處理設備采購安裝及運維 投標方案(技術方案)
- 晉升品質主管述職報告
- 雷火灸技術操作流程圖及考核標準
- 北師大版三年級下冊數學全冊教案(完整版)教學設計含教學反思
評論
0/150
提交評論