1. 程式人生 > >【筆記】CPU的結構和功能(二)

【筆記】CPU的結構和功能(二)

三、指令流水

  (1)提高器件的效能
  (2)改進系統的結構,開發系統的並行性
  並行:包含同時性併發性兩方面。同時性指兩個或多個事件在同一時刻發生,併發性指兩個或多個事件在同一時間段發生。在同一時刻或同一時間段內完成兩種或兩種以上性質相同或不同的功能,只要在時間上互相重疊,就存在並行性。
  並行性體現在不同等級上。通常分為4個級別:作業級或程式級、任務級或程序級、指令之間級和指令內部級。前兩級為粗粒度,又稱為過程級;後兩級為細粒度,又稱為指令級。粗粒度並行性一般用演算法實現,細粒度並行性一般用硬體實現。粗粒度並行性是在多個處理機上分別執行多個程序,由多臺處理機合作完成一個程式;細粒度並行性

是指在處理機的操作級和指令級的並行性,其中指令的流水作業就是一項重要技術。

1.指令流水原理

  把指令的處理過程分為取指令和執行指令兩個階段,在不採用流水技術的計算機裡,取指令和執行指令是周而復始地出現,各條指令按順序序列執行的。

  存在兩個原因使得執行效率加倍是不可能的:

  • 指令的執行時間一般大於取指時間,因此取指階段可能要等待一段時間,也即存放在指令部件緩衝區的指令還不能立即傳給執行部件,緩衝區不能空出。
  • 當遇到條件轉移指令時,下一條指令是不可知的。因為必須等到執行階段結束後,才能獲知條件是否成立,從而決定下條指令的地址,造成時間損失。

  通常為了減少時間損失,採用猜測法

,即當條件轉移指令從取指階段進入執行階段時,指令部件仍按順序預取下一條指令。這樣如果條件不成立,轉移沒有發生,則沒有時間損失;若條件成立,轉移發生,則所取的指令必須丟掉,並再取新的指令。

  可將指令的處理過程分解為更細的幾個階段:

  • 取指(FI):從儲存器取出一條指令並暫時存入指令部件的緩衝區。
  • 指令譯碼(DI):確定操作性質和運算元地址的形成方式。
  • 計算運算元地址(CO):計算運算元的有效地址。
  • 取運算元(FO):從儲存器中取運算元。(若運算元在暫存器中則無須此階段)
  • 執行指令(EI):執行指令所需的操作,並將結果存於目的位置(暫存器中)。
  • 寫運算元(WO):將結果存入儲存器。

2.影響流水線效能的因素

  在流水過程中會出現三種相關,使流水線不斷流實現起來很困難,即結構相關、資料相關、控制相關
  結構相關:當多條指令進入流水線後,硬體資源滿足不了指令重疊執行的要求時產生的。
  資料相關:指令在流水線中重疊執行時,當後繼指令需要用到前面的執行結果時發生的。
  控制相關:當流水線遇到分支指令和其他改變PC值的指令時引起的。

  假設流水線由5段組成,它們分別是取指令(IF)、指令譯碼/讀暫存器(ID)、執行/訪存有效地址計算(EX)、儲存器訪問(MEM)、結果寫回暫存器(WB)

結構相關

  結構相關是當指令在重疊執行過程中,不同指令爭用同一功能部件產生資源衝突時產生的,故又有資源相關之稱。
  解決衝突的方法可以讓流水線在完成前一條指令對資料的儲存器訪問時,暫停(一個時鐘週期)取後一條指令的操作。
  另一種方法是設定兩個獨立的儲存器分別存放運算元和指令,以免取指令和取運算元同時進行時互相沖突,使取某條指令和去另一條指令的運算元實現時間上的重疊。

資料相關

  資料相關是流水線中的各條指令因重疊操作,可能改變對運算元的讀寫訪問順序,從而導致了資料相關衝突。
  解決這種資料相關的方法可以採用後推法,即遇到資料相關時,就停頓後繼指令的執行,直至前面指令的結果已經生成。
  另一種解決方法是採用定向技術,又稱為旁路技術相關專用通路技術。其主要思想是不必待某條指令的執行結果送回到暫存器後,再從暫存器中取出該結果,作為下一條指令的源運算元,而是直接將執行結果送到其他指令所需要的地方。

  根據指令間對同一暫存器讀和寫操作的先後次序關係,資料相關衝突可分為寫後讀相關(RAW)、讀後寫相關(WAR)、寫後寫相關(WAW)
  上述三種資料相關在按序流動的流水線中,只可能出現RAW相關。在非按序流動的流水線中,由於允許後進入流水線的指令超過先進入流水線的指令而先流出流水線,則既可能發生RAW相關,還可能發生WAR和WAW相關。

控制相關

  控制相關主要是由轉移指令引起的。當轉移發生時,將使流水線的連續流動受到破壞。當執行轉移指令時,根據是否發生轉移,它可能將程式計數器PC內容改變成轉移目標地址,也可能只是使PC加上一個增量,指向下一條指令地址。
  為了解決控制相關,可以採用儘早判別轉移是否發生,儘早生成轉移目標地址;預取轉移成功或不成功兩個控制流方向上的目標指令;加快和提前形成條件碼;提高轉移方向的猜準率等方法。

3.流水線效能

  流水線效能通常用**吞吐率、加速比、效率**3項指標來衡量。

吞吐率

  在指令級流水線中,吞吐率是指單位時間內流水線所完成指令或輸出結果的數量。吞吐率又有最大吞吐率實際吞吐率之分。
  最大吞吐率是指流水線在連續流動達到穩定狀態後所獲得的吞吐率。對於m段的指令流水線而言,若各段的時間均為Δt,則最大吞吐率為

Tpmax=1Δt
  流水線僅在連續流動時才可達到最大吞吐率。實際吞吐率總是小於最大吞吐率。
  實際吞吐率是指流水線完成n條指令的實際吞吐率。實際吞吐率為Tp=nmΔt+(n1)Δt=nΔt[1+(m1)/n]=Tpmax1+(m1)/n 僅當n>>m時,才會有TpTpmax

加速比

  流水線的加速比是指m段流水線的速度與等功能的非流水線的速度之比。加速比Sp

Sp=nmΔtmΔt+(n1)Δt=nmm+n1=m1+(m1)/n

效率

  效率是指流水線中各功能段的利用率。通常用流水線各段處於工作時間的時空區與流水線中各段總的時空區之比來衡量流水線的效率。

E=nmΔtm(m+n1)Δt=nm+n1=Spm=TpΔt

4.流水線中的多發技術

  除了採用好的指令排程演算法、重新組織指令執行順序、降低相關帶來的干擾以及優化編譯外,還可開發流水線中的多發技術,設法在一個時鐘週期內,產生更多的結果。常見的多發技術有超標量技術、超流水線技術、超長指令字技術

超標量技術

  超標量技術是指在每個時鐘週期內可同時併發多條獨立指令,即以並行操作方式將兩條或兩條以上指令編譯並執行。
  要實現超標量技術,要求處理機中配置多個功能部件和指令譯碼電路,以及多個暫存器埠,以便能實現同事執行多個操作。

超流水線技術

  超流水線技術是將一些流水線暫存器插入到流水線段中,好比將流水線再分段。

超長指令字技術

  超長指令字技術(VLIW)和超標量技術都是採用多條指令在多個處理部件中並行處理的體系結構,在一個時鐘週期內能流出多條指令。當超標量的指令來自同標準的指令流,VLIW則是由編譯程式在編譯時挖掘出指令間潛在的並行性後,把多條能並行操作的指令組合成一條具有多個操作碼欄位的超長指令,由這條超長指令控制VLIW機中多個獨立工作的功能部件,由每一個操作碼欄位控制一個功能部件,相當於同時執行多條指令。

  VLIW較超標量具有更高的並行處理能力,但對優化編譯器的要求更高,對Cache的容量要求更大。

5.流水線結構

指令流水線結構

  指令流水線是將指令的整個執行過程用流水線進行分段處理,典型的指令執行過程分為“取指令——指令譯碼——形成地址——取運算元——執行指令——回寫結果——修改指令指標”這幾個階段。
  指令流水線對機器效能的改善程度取決於把處理過程分解為多少個相等的時間段數。

運算流水線

  流水線相鄰兩段在執行不同的操作,因此在相鄰兩段之間必須設定鎖存器或暫存器,以保證在一個時鐘週期內流水線的輸入訊號不變。這一指導思想也適用於指令流水。

四、中斷系統

1.概述

引起中斷的各種因素

  (1)人為設定的中斷
  這種中斷一般稱為自願中斷,因為它是程式中人為設定的,故一旦機器執行這種人為中斷,便自願停止現行程式而轉入中斷處理。
  (2)程式性事故
  如定點溢位、浮點溢位、操作碼不能識別、除法中出現“非法”等,這些都屬於由程式設計不周而引起的中斷。
  (3)硬體故障
  (4)I/O裝置
  I/O裝置被啟動以後,一旦準備就緒,便向CPU發出中斷請求。
  (5)外部事件
  使用者通過鍵盤來中斷現行程式屬於外部事件中斷。

  通常將能引起中斷的各個因素稱為中斷源。中斷源可分為兩大類:一類為不可遮蔽中斷,這類中斷CPU不能禁止,如電源掉電;另一類為可遮蔽中斷,對可遮蔽中斷源的請求,CPU可根據該中斷源是否被遮蔽來確定是否給予響應。若未遮蔽則能響應;若已被遮蔽,則CPU不能響應。

2.中斷請求標記和中斷判優邏輯

中斷請求標記

  為了判斷是那個中斷源提出的請求,在中斷系統中必須設定中斷請求標記觸發器,簡稱中斷請求觸發器,記作INTR。當其狀態為“1”時,表示中斷源有請求。這種觸發器可集中設在CPU內,組成一箇中斷請求標記暫存器。
  中斷請求觸發器越多,說明計算機處理中斷的能力越強。這些觸發器既可以集中在CPU的中斷系統內, 也可以分散到各個中斷源中。

中斷判優邏輯

  任何一箇中斷系統,在任一時刻,只能響應一箇中斷源的請求。當某一時刻多箇中斷源提出中斷請求時,中斷系統必須按其優先順序予以響應,這稱為中斷判優。各中斷源的優先順序是根據該中斷源若得不到及時響應,致使機器工作出錯的嚴重程度而定的。

  中斷判優可用硬體實現,也可用軟體實現。

  (1)硬體排隊
  硬體排隊又可分為兩種。一種為鏈式排隊器,對應中斷請求觸發器分散在各個介面電路中的情況,每一個介面電路中都設有一個非門和一個與非門,它們猶如鏈條一樣串接起來。另一種排隊器設在CPU內,當最高優先順序的中斷源有請求時INTR1=1,就可封住比它第的中斷源的請求。

  (2)軟體排隊
  軟體排隊是通過編寫查詢程式實現的。程式按中斷源的優先等級,從高至低逐級查詢各中斷源是否有中斷請求,這樣就可以保證CPU首先響應級別高的中斷源的請求。

3.中斷服務程式入口地址的尋找

  通常有兩種方法尋找入口地址:硬體向量法軟體查詢法

硬體向量法

  硬體向量法就是利用硬體產生向量地址,再由向量地址找到中斷服務程式的入口地址。向量地址由中斷向量地址形成部件產生,這個電路可分散設定在各個介面電路中,也可設定在CPU內。

  由向量地址尋找中斷服務程式的入口地址通常採用兩種辦法。一種在向量地址記憶體放一條無條件轉移指令,CPU響應中斷時,只要將向量地址送至PC,執行這條指令,便可無條件轉向印表機服務程式的入口地址200。另一種是設定向量地址表,該表設在儲存器內,儲存單元的地址為向量地址,儲存單元的地址為入口地址。只要訪問向量地址所指示的儲存單元,便可獲得入口地址。

  硬體向量法尋找入口地址速度快。


這裡寫圖片描述

軟體查詢法

  用軟體尋找中斷服務程式入口地址的方法稱為軟體查詢法。當查到某一中斷源有中斷請求時,接著安排一條轉移指令,直接指向此中斷源的中斷服務程式入口地址,機器便能自動進入中斷處理。

  這種方法不涉及硬體裝置,但查詢時間較長。

4.中斷響應

響應中斷的條件

  當EINT=1,且有中斷請求(即中斷請求標記觸發器INTR=1)時,CPU可以響應中斷。

響應中斷的時間

  之所以CPU在指令的執行週期後進入中斷週期,是因為CPU在執行週期的結束時刻同一向所有中斷源發中斷查詢訊號,只有此時CPU才能獲知哪個中斷源有請求。
  可在指令執行過程中設定若干個查詢斷點,CPU在每個“查詢斷點”時刻均發中斷查詢訊號,以便發現有中斷請求便可及時響應。

中斷隱指令

  (1)保護程式斷點
  保護程式斷點就是要將當前程式程式計數器PC的內容儲存到儲存器中。它可以存在儲存器的特定單元內,也可以存入堆疊。

  (2)尋找中斷服務程式的入口地址
  由於中斷週期結束後進入下條指令(即中斷服務程式的第一條指令)的取指週期,因此在中斷週期內必須設法找到中斷服務程式的入口地址。
  有兩種方法尋找入口地址:
  1. 在中斷週期內,將向量地址送至PC(對應硬體向量法),使CPU執行下一條無條件轉移執行,轉至中斷服務程式入口地址。
  2. 在中斷週期內,將軟體查詢入口地址的程式(又稱中斷識別程式)首地址送至PC,使CPU執行中斷識別程式,找到入口地址(對應軟體查詢法)。

  (3)關中斷
  CPU進入中斷週期,意味著CPU響應了某個中斷源的請求,為了確保CPU響應後所需做的一系列操作不至於又受到新的中斷請求的干擾,在中斷週期內必須自動關中斷,以禁止CPU再次響應中斷請求。當進入中斷週期時,INT為“1”狀態,觸發器原端輸出有一個正跳變,經反相後產生一個負跳變,使EINT置“0”,即關中斷。
  保護斷點、尋找入口地址和關中斷這些操作都是在中斷週期內由一條中斷隱指令完成的。
  中斷隱指令:即在機器指令系統中沒有的指令,它是CPU 在中斷週期內由硬體自動完成的一條指令。

5.保護現場和恢復現場

  保護現場:應該包括保護程式斷點保護CPU內部各暫存器內容的現場兩個方面。程式斷點的現場由中斷隱指令完成,各暫存器內的現場可在中斷服務程式中由使用者(或系統)用機器指令程式設計實現。
  恢復現場:是指在中斷返回前,必須將暫存器的內容回覆到中斷處理前的狀態,這部分工作也由中斷服務程式完成。

6.中斷遮蔽技術

多重中斷的概念

  當CPU正在執行某個中斷服務程式時,另一箇中斷源又提出了新的中斷請求,而CPU又響應了這個系難道請求,暫時停止正在執行的服務程式,轉去執行新的中斷服務程式,這稱為多重中斷,又稱為中斷巢狀。如果的CPU對新請求不予響應,待執行完當前的服務程式後再響應,即為單重中斷

實現多重中斷的條件

  1. 提前設定“開中斷”指令。
  多重中斷“開中斷”指令的位置前於單重中斷,從而保證了多重中斷允許出現中斷巢狀。
  2. 優先級別高的中斷源有權中斷優先級別低的中斷源。
  為了保證級別低的中斷源不干擾級別高的中斷源的中斷處理過程,保證上述2的試試,可採用遮蔽技術。

遮蔽技術

  (1)遮蔽觸發器與遮蔽字
  對應每個中斷請求觸發器就有一個遮蔽觸發器,將所有遮蔽觸發器組合在一起,便構成一個遮蔽暫存器,遮蔽暫存器的內容稱為遮蔽字。遮蔽字與中斷源的優先級別是一一對應的。
  在中斷服務程式中設定適當的遮蔽字,能起到對優先級別不同的中斷源的遮蔽作用。

  (2)遮蔽技術可改變優先等級
  優先順序包含響應優先順序處理優先順序響應優先順序是指CPU響應各中斷源請求的優先次序,這種次序往往是硬體線路已設定好的,不便於改動。處理優先順序是指CPU實際對各中斷源請求的處理優先次序。如果不採用遮蔽技術,響應的優先次序就是處理的優先次序。
  在不改變CPU響應中斷的次序下,通過改變遮蔽字可以改變CPU處理中斷的次序。

  (3)遮蔽技術的其他作用
  遮蔽技術還能給程式控制帶來更大的靈活性。

多重中斷的斷點保護

  中斷系統對斷點的儲存都是在中斷週期內由於中斷隱指令實現的,對使用者是透明的。
  斷點可以儲存在堆疊中,由於堆疊先進後出的特點,出棧時按相反順序便可準確返回到程式的間斷處。
  斷點也可儲存在特定的儲存單元內,例如約定一律將程式斷點存至主存的0號地址單元內。在中斷服務程式中的開中斷指令之前,必須先將0地址單元的內容轉存至其他地址單元中,才能真正儲存每一個斷點。