天天看點

超标量處理機和超流水線處理機——計算機系統結構

超标量處理機和超流水線處理機——計算機系統結構

在表5.2中,基準标量處理機是一台普通的單流水線處理機。為了便于進行比較,把基準标量處理機的機器流水線周期和指令發射等待時間都假設為1個時鐘周期,同時發射的指令條數為一條,它的指令級并行度ILP(Instruction Level Parallelism)假設為1。另外三種指令級并行處理機,即并行度為m的超标量處理機,并行度為n的超流水線處理機,以及并行度為(m,n)的超标量超流水線處理機,它們的性能都相對于基準标量處理機進行比較。

單流水線處理機隻有一條指令流水線,隻有一個多功能的操作部件,每個時鐘周期"取指令"和"分析"完成一條指令。在許多流水線處理機中,指令流水線的流水段數k=4;它把一條指令的執行過程主要分解為"取指令"、"分析"、"執行"和"寫結果"4個階段。指令所要執行的功能主要在多功能操作部件中,在"執行"這一流水段完成。多數流水線處理機的多功能操作部件采用流水線結構。有的簡單指令,隻要一個時鐘周期就能夠在"執行"流水段中完成,而比較複雜的指令往往需要多個時鐘周期。另外,還有條件轉移等的影響;是以,一般流水線标量處理機每個時鐘周期平均執行指令的條數小于1,即它的指令級并行度ILP<1。

超标量、超流水線和超标量超流水線三種處理機在一個時鐘周期内可以執行完成多條指令,即它們的指令級并行度ILP都大于1。

超标量處理機

基本結構

超标量處理機的典型結構是有多個操作部件,一個或幾個比較大的通用寄存器堆,一個或兩個高速Cache。先進的超标量處理機一般都包含有三個處理單元,一個是定點處理單元,通常稱為中央處理單元(CPU),它由一個或多個整數處理部件組成;第二個是浮點處理單元(FPU),它由浮點加減法部件和浮點乘除法部件等組成;第三個是圖形加速部件,也稱為圖形處理單元(GPU),這是現代處理機中不可缺少的一個部分。先進的超标量處理機通常都設定有大量的通用寄存器。在有的超标量處理機中,CPU和FPU分别使用兩個通用寄存器堆。在多數超标量處理機中都設定有兩個一級高速Cache,一個是指令Cache,另一個是資料Cache,這種把指令Cache和資料Cache分開的結構被稱為哈佛(Harvard)結構。每個高速Cache的容量一般在幾K至幾十K位元組;有的超标量處理機,還把二級Cache也做在處理機晶片内。

在MC88110超标量處理機内部有兩個寄存器堆;其中,整數部件使用通用寄存器堆,它由32個32位的寄存器組成;浮點點部件使用擴充寄存器堆,它由32個80位的寄存器組成。每個寄存器堆有8個端口,分别與8條内部總線相連接配接,可以同時讀出8個操作數提供給各個操作部件使用。另外,在取數/存數部件中,還有一個緩沖深度為4的先行讀數棧和一個緩沖深度為3的後行寫數棧。

  指令和資料分别存放在兩個獨立的高速Cache中,指令Cache和資料Cache的容量各為8K位元組。兩個Cache都采用兩路組相聯方式工作,是以,每個時鐘周期可以提供兩個64位的指令和資料。另外,為了減少轉移指令對流水線的影響,專門設定有一個轉移目标指令Cache。在遇到條件轉移指令時,在指令Cache和目标指令Cache中分别存放兩路分支上的有關指令;并且,指令配置設定部件在每個時鐘周期分别從指令Cache和目标指令Cache中各取出兩條指令來同時進行譯碼;最後,根據形成的條件碼決定把其中一路分支上的指令送到操作部件中去。

 

如圖5.47所示,是由Motorola公司生産的一種先進超标量處理機MC88110。它有10個操作部件,其中兩個整數部件,可以作32位整數運算,其中也包括位址運算等。整數操作是單周期執行,完成一條 整數運算指令使用一條4段流水線,包括取指令IF、譯碼ID、執行EX和寫結果WR,每個時鐘周期可以完成兩條整數指令。浮點運算是80位字長的,包括浮點加、減、乘、除和求浮點平方根等16條指令。浮點加法部件和乘法部件都采用3級流水線,每個時鐘周期可以完成一條乘法指令和一條浮點加法指令;而且,對單精度、雙精度及擴充雙精度指令的執行速度都一樣快。兩個專用的圖形處理部件可以直接對圖形的象素進行處理,它與浮點操作部件一起,提供高性能的三維(3D)圖形處理能力,共有9條專門的圖形處理指令。

超标量處理機和超流水線處理機——計算機系統結構

在MC88110超标量處理機内部有兩個寄存器堆;其中,整數部件使用通用寄存器堆,它由32個32位的寄存器組成;浮點點部件使用擴充寄存器堆,它由32個80位的寄存器組成。每個寄存器堆有8個端口,分别與8條内部總線相連接配接,可以同時讀出8個操作數提供給各個操作部件使用。另外,在取數/存數部件中,還有一個緩沖深度為4的先行讀數棧和一個緩沖深度為3的後行寫數棧。

  

指令和資料分别存放在兩個獨立的高速Cache中,指令Cache和資料Cache的容量各為8K位元組。兩個Cache都采用兩路組相聯方式工作,是以,每個時鐘周期可以提供兩個64位的指令和資料。另外,為了減少轉移指令對流水線的影響,專門設定有一個轉移目标指令Cache。在遇到條件轉移指令時,在指令Cache和目标指令Cache中分别存放兩路分支上的有關指令;并且,指令配置設定部件在每個時鐘周期分别從指令Cache和目标指令Cache中各取出兩條指令來同時進行譯碼;最後,根據形成的條件碼決定把其中一路分支上的指令送到操作部件中去。

 

單發射與多發射

單發射處理機的指令執行時空圖如圖5.48(a)所示,它在一個時鐘周期内隻從存儲器中取出一條指令,并且隻對一條指令進行譯碼,隻執行一條指令,隻寫一個運算結果。

  在單發射處理機中,取指令部件和指令譯碼部件隻各設定一套,而操作部件可以隻設定一個多功能操作部件,也可以設定多個獨立的操作部件。例如,定點算術邏輯部件ALU、取數存數部件LSU、浮點加法部件FAD、乘除法部件MDU等。一個有4個操作部件組成的單發射處理機如圖5.49(a)所示。單發射處理機在指令一級通常采用流水線結構;而在操作部件中,有的機器采用流水線結構,也有的機器不采用流水線結構。

  單發射處理機的設計目标是每個時鐘周期平均執行一條指令,即它的指令級并行度ILP的期望值1。如果從表5.2中看,相當于m=1。實際上,它就是一台有k段流水線的普通标量處理機。由于資料相關、條件轉移和資源沖突等原因,實際的ILP不可能達到1。通過優化編譯器對指令序列進行重組(recorganizer),以及采用軟體與硬體相結合的方法處理資料相關、條件轉移和資源沖突等,可以使ILP接近于1。但是,單發射處理機的ILP不可能大于1。

超标量處理機和超流水線處理機——計算機系統結構

圖5.48 單發射與多發射處理機的指令執行時空圖

  多發射處理機在一個基本時鐘周期内同時從指令Cache中讀出多條指令,同時對多條指令進行譯碼。一個同時發射三條指令的多發射處理機的指令執行時空圖如圖5.48(b)所示。為了實作在一個時鐘周期同時多發射條指令,通常需要有多個取指令部件,多個指令譯碼部件和多個寫結果部件。圖6.53(b)是一個同時發射兩條指令的多發射處理機的指令流水線。兩個取指令部件同時從指令Cache中取出兩條指令,兩個指令譯碼部件同時對兩條指令進行譯碼,指令的譯碼結果分别送往4個操作部件執行。

性能

為了便于比較,把單流水線普通标量處理機的指令級并行度記作(1,1),超标量處理機的指令級并行度記作(m,1),超流水線處理機的指令級并行度記作(1,n),而超标量超流水線處理機的指令級并行度記作(m,n)。

  在理想情況下,N條指令在單流水線普通标量處理機上的執行時間為:

超标量處理機和超流水線處理機——計算機系統結構

    (5.29)

  其中,k是流水線的級數,是一個時鐘周期的時間長度。

  如果把相同的N條指令在一台每個時鐘周期發射m條指令的超标量處理機上執行,所需要的時間為:

超标量處理機和超流水線處理機——計算機系統結構

   

  其中,第一項是第一批m條指令同時通過m條指令流水線所需要的執行時間,而第二項是執行其餘N-m條指令所需要的時間,這時,每一個時鐘周期有m條指令分别通過m條指令流水線。

  是以,超标量處理機相對于單流水線普通标量處理機的加速比為:

超标量處理機和超流水線處理機——計算機系統結構

   

  當N→∞時,在沒有資源沖突,沒有資料相關和控制相關的理想情況下,超标量處理機的加速比的最大值為:

超标量處理機和超流水線處理機——計算機系統結構

超流水線處理機

在一般标量流水線處理機中,通常把一條指令的執行過程分解為"取指令"、"譯碼"、"執行"和"寫回結果"4個流水段。如果把其中的每個流水段再細分,例如,再分解為兩個延遲時間更短的流水段,則一條指令的執行過程就要經過8個流水段,這樣,在一個時鐘周期内就能夠"取指令"兩條,"譯碼"、"執行"和"寫結果"各兩條指令。這種在一個時鐘周期内能夠分時發射多條指令的處理機稱為超流水線處理機。另外,也可以把指令流水線的段數大于或等于8的流水線處理機稱為超流水線處理機。

  超流水線處理機與上一節中介紹的超标量處理機不同,超标量處理機是通過重複設定多"取指令"部件,設定多個"譯碼"、"執行"和"寫結果"部件,并讓這些功能部件同時工作來提高指令的執行速度,實際上是以增加硬體資源為代價來換取處理機性能的;而超流水線處理機則不同,它隻需要增加少量硬體,是通過各部分硬體的充分重疊工作來來提高處理機性能的。從流水線的時空圖上看,超标量處理機采用的是空間并行性,而超流水線處理機采用的是時間并行性。

指令執行時序

 一台并行度ILP為n的超流水線處理機,它在一個時鐘周期内能夠發射n條指令;但這n條指令不是同時發射的,每隔1/n個時鐘周期發射一條指令;是以,實際上超流水線處理機的流水線周期為1/n個時鐘周期。一台每個時鐘周期分時發射3條指令的超流水線處理機的指令執行時空圖如圖5.56所示。

超标量處理機和超流水線處理機——計算機系統結構

圖5.56隻是超流水線處理機原理上的指令執行時空圖。實際上,流水段還要進一步細分,一個流水段要細分為多個流水級,每一個流水級也都有名稱。在分解流水段時要根據實際情況,有些流水段分解的流水級數可多些。例如,圖5.56中的"譯碼(ID)"流水段,可以再細分為"譯碼"流水級、"取第一個操作數"流水級和"取第二個操作數"流水級等。有些流水段分解的流水級數可少些,也的流水段可以不再細分,如"寫結果"流水段一般不再細分。

典型結構

 在早期生産的計算機中,巨型計算機CRAY-1和大型計算機CDC-7600屬于超流水線處理機,其指令級并行度n=3。在目前大量使用的微處理器中,隻有SGI公司的MIPS(Microprocessor without Interlocked Piped Stages)系列處理機屬于超流水線處理機。MIPS是除Intel公司的X86系列微處理器之外,生産量最大的一種微處理器。MIPS系列的微處理器主要有R2000、R3000、R4000、R5000和R10000等幾種,其中,R4000是典型的超流水線處理機。下面以R4000為例,說明超流水線處理機的基本結構和工作原理,圖5.57是R4000微處理器的結構框圖。

  R4000晶片内有兩個Cache,指令Cache和資料Cache的容量各8K位元組,每個Cache的資料寬度為64位。由于每個時鐘周期可以通路Cache兩次,是以,在一個時鐘周期内可以從指令Cache中讀出兩條指令,從資料Cache中讀出或寫入兩個資料。

  整數部件是R4000的核心處理部件,它主要包括一個32個32位的通用寄存器堆,一個算術邏輯部件,一個專用的乘法/除法部件。整數部件負責取指令,整數操作的譯碼和執行,LOAD與STORE操作的執行等。通用寄存器堆用作标量整數操作和位址計算,寄存器堆有兩個輸出端口和一個輸入端口,它還設定有專用的資料通路,可以對每一個寄存器讀和寫兩次。整數部件包括一個整數加法器和一個邏輯部件,負責執行算術運算操作,位址運算和所有的移位操作。乘法/除法部件能夠執行32位帶符号和不帶符号的乘法或除法操作,它可以與整數部件并行執行指令。

  浮點部件包括一個浮點通用寄存器堆和一個執行部件。浮點通用寄存器堆由16個64位的通用寄存器組成,它也可以設定成32個32位的浮點寄存器。浮點執行部件由浮點乘法部件、浮點除法部件和浮點加法/轉換/求平方根部件等三個獨立的部件組成,這三個浮點部件可以并行工作。浮點操作主要包括浮點加、減、乘、除和求平方根、定點與浮點格式的轉換、浮點格式之間的轉換、浮點數比較等15種。浮點控制寄存器用來設定浮點協處理器的狀态和控制資訊,主要用于診斷軟體、異常事故處理、狀态儲存與恢複、舍入方式的控制等。

  R4000的指令流水線有8級,流水線操作如圖5.58所示。R4000采用超流水線結構,取指令和通路資料都要跨越兩個流水級。實際上,每個時鐘周期包含兩個流水級,處理器取第一條指令(IF)和取第二條指令(IS)兩個流水級都要通路指令Cache,這兩個流水級為一個時鐘周期。在寄存器流水級(RF)的開始,指令已經讀到了指令寄存器中,是以可以進行譯碼,并且通路寄存器堆。另外,由于指令Cache是采用直接映象方式的,是以,從指令Cache中讀出的區号要與通路存儲器的實體位址進行比較。如果相等,表示指令Cache命中。

超标量處理機和超流水線處理機——計算機系統結構
超标量處理機和超流水線處理機——計算機系統結構

對于非存儲器操作指令,如果指令Cache命中,那麼,指令可以在指令執行(EX)流水級執行,指令的執行結果可以在EX流水級的末尾得到。

  在正常情況下,MIPS R4000指令流水線工作時序如圖5.59所示。一條指令的執行過程經曆8個流水線周期。由于一個主時鐘周期包含有兩個流水線周期,是以,也可以認為每4個主時鐘周期執行完一條指令。

超标量處理機和超流水線處理機——計算機系統結構

從流水線的輸入端看,每一個流水線周期啟動一條指令。同樣,從流水線的輸出端看,每一個流水線周期執行完成一條指令。當流水線被充滿時,如圖5.59中的黑框内所示,有8條指令在同時執行。如果把兩個流水線周期看作一個時鐘周期,則在一個時鐘周期内,R4000處理機分時發射了兩條指令。同樣,在一個時鐘周期内,流水線也執行完成了兩條指令,是以,R4000是一種很典型的超流水線處理機。

  在取第一個資料(DF)和取第二個資料(DS)流水級期間,R4000要通路資料Cache。首先,存儲器管理部件(MMU)在DF和DS流水級把資料的虛拟位址變換成主存實體位址,然後,在标志檢驗(TC)流水級從資料Cache中讀出資料的區号,并把讀出的區号與變換成的主存實體位址進行比較。如果比較結果相等,則資料Cache命中。對于STORE指令,如果命中,隻要把資料送到寫入緩沖器,由寫入緩沖器負責把資料寫到資料Cache的指定中去。對于非存儲器操作指令,在寫回結果(WB)流水級要把指令的最後執行結果寫回到通用寄存器堆中。

性能

在一台指令級并行度為(1,n)的超流水線處理機上,執行N條沒有資料相關和控制相關的指令所需要的時間為:

超标量處理機和超流水線處理機——計算機系統結構

其中,k是指令流水線的流水段數,或時鐘周期數;而不是流水線級數。在一般超流水線處理機中,指令流水線的級數實際應為k n。上式中的頭一項是第一條指令通過指令流水線執行完成所需要的時間,而第二項是執行其餘N-1條指令所需要的時間,這時,每一個時鐘周期有n條指令要在指令流水線中執行完成,也就是每一個流水線周期執行完成一條指令。

  

單流水線普通标量處理機連續執行N條指令所用時間如(5.29)式所示,是以,超流水線處理機相對于單流水線普通标量處理機的加速比為:

超标量處理機和超流水線處理機——計算機系統結構

當執行的指令條數N→∞時,在沒有資料相關和控制相關的理想情況下,超流水線處理機的加速比的最大值為:

超标量處理機和超流水線處理機——計算機系統結構

摘自

https://pop0726.github.io/jsj/content/sec.htm

,侵删(TSU的遠古課件,但還是很詳盡)