日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

超标量处理机和超流水线处理机——计算机系统结构

發(fā)布時間:2023/12/13 综合教程 60 生活家
生活随笔 收集整理的這篇文章主要介紹了 超标量处理机和超流水线处理机——计算机系统结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

單流水線處理機只有一條指令流水線,只有一個多功能的操作部件,每個時鐘周期"取指令"和"分析"完成一條指令。在許多流水線處理機中,指令流水線的流水段數(shù)k=4;它把一條指令的執(zhí)行過程主要分解為"取指令"、"分析"、"執(zhí)行"和"寫結(jié)果"4個階段。指令所要執(zhí)行的功能主要在多功能操作部件中,在"執(zhí)行"這一流水段完成。多數(shù)流水線處理機的多功能操作部件采用流水線結(jié)構(gòu)。有的簡單指令,只要一個時鐘周期就能夠在"執(zhí)行"流水段中完成,而比較復(fù)雜的指令往往需要多個時鐘周期。另外,還有條件轉(zhuǎn)移等的影響;因此,一般流水線標(biāo)量處理機每個時鐘周期平均執(zhí)行指令的條數(shù)小于1,即它的指令級并行度ILP<1。
超標(biāo)量、超流水線和超標(biāo)量超流水線三種處理機在一個時鐘周期內(nèi)可以執(zhí)行完成多條指令,即它們的指令級并行度ILP都大于1。

超標(biāo)量處理機

基本結(jié)構(gòu)

超標(biāo)量處理機的典型結(jié)構(gòu)是有多個操作部件,一個或幾個比較大的通用寄存器堆,一個或兩個高速Cache。先進的超標(biāo)量處理機一般都包含有三個處理單元,一個是定點處理單元,通常稱為中央處理單元(CPU),它由一個或多個整數(shù)處理部件組成;第二個是浮點處理單元(FPU),它由浮點加減法部件和浮點乘除法部件等組成;第三個是圖形加速部件,也稱為圖形處理單元(GPU),這是現(xiàn)代處理機中不可缺少的一個部分。先進的超標(biāo)量處理機通常都設(shè)置有大量的通用寄存器。在有的超標(biāo)量處理機中,CPU和FPU分別使用兩個通用寄存器堆。在多數(shù)超標(biāo)量處理機中都設(shè)置有兩個一級高速Cache,一個是指令Cache,另一個是數(shù)據(jù)Cache,這種把指令Cache和數(shù)據(jù)Cache分開的結(jié)構(gòu)被稱為哈佛(Harvard)結(jié)構(gòu)。每個高速Cache的容量一般在幾K至幾十K字節(jié);有的超標(biāo)量處理機,還把二級Cache也做在處理機芯片內(nèi)。

在MC88110超標(biāo)量處理機內(nèi)部有兩個寄存器堆;其中,整數(shù)部件使用通用寄存器堆,它由32個32位的寄存器組成;浮點點部件使用擴展寄存器堆,它由32個80位的寄存器組成。每個寄存器堆有8個端口,分別與8條內(nèi)部總線相連接,可以同時讀出8個操作數(shù)提供給各個操作部件使用。另外,在取數(shù)/存數(shù)部件中,還有一個緩沖深度為4的先行讀數(shù)棧和一個緩沖深度為3的后行寫數(shù)棧。
  指令和數(shù)據(jù)分別存放在兩個獨立的高速Cache中,指令Cache和數(shù)據(jù)Cache的容量各為8K字節(jié)。兩個Cache都采用兩路組相聯(lián)方式工作,因此,每個時鐘周期可以提供兩個64位的指令和數(shù)據(jù)。另外,為了減少轉(zhuǎn)移指令對流水線的影響,專門設(shè)置有一個轉(zhuǎn)移目標(biāo)指令Cache。在遇到條件轉(zhuǎn)移指令時,在指令Cache和目標(biāo)指令Cache中分別存放兩路分支上的有關(guān)指令;并且,指令分配部件在每個時鐘周期分別從指令Cache和目標(biāo)指令Cache中各取出兩條指令來同時進行譯碼;最后,根據(jù)形成的條件碼決定把其中一路分支上的指令送到操作部件中去。
 
如圖5.47所示,是由Motorola公司生產(chǎn)的一種先進超標(biāo)量處理機MC88110。它有10個操作部件,其中兩個整數(shù)部件,可以作32位整數(shù)運算,其中也包括地址運算等。整數(shù)操作是單周期執(zhí)行,完成一條 整數(shù)運算指令使用一條4段流水線,包括取指令I(lǐng)F、譯碼ID、執(zhí)行EX和寫結(jié)果WR,每個時鐘周期可以完成兩條整數(shù)指令。浮點運算是80位字長的,包括浮點加、減、乘、除和求浮點平方根等16條指令。浮點加法部件和乘法部件都采用3級流水線,每個時鐘周期可以完成一條乘法指令和一條浮點加法指令;而且,對單精度、雙精度及擴展雙精度指令的執(zhí)行速度都一樣快。兩個專用的圖形處理部件可以直接對圖形的象素進行處理,它與浮點操作部件一起,提供高性能的三維(3D)圖形處理能力,共有9條專門的圖形處理指令。

在MC88110超標(biāo)量處理機內(nèi)部有兩個寄存器堆;其中,整數(shù)部件使用通用寄存器堆,它由32個32位的寄存器組成;浮點點部件使用擴展寄存器堆,它由32個80位的寄存器組成。每個寄存器堆有8個端口,分別與8條內(nèi)部總線相連接,可以同時讀出8個操作數(shù)提供給各個操作部件使用。另外,在取數(shù)/存數(shù)部件中,還有一個緩沖深度為4的先行讀數(shù)棧和一個緩沖深度為3的后行寫數(shù)棧。
  
指令和數(shù)據(jù)分別存放在兩個獨立的高速Cache中,指令Cache和數(shù)據(jù)Cache的容量各為8K字節(jié)。兩個Cache都采用兩路組相聯(lián)方式工作,因此,每個時鐘周期可以提供兩個64位的指令和數(shù)據(jù)。另外,為了減少轉(zhuǎn)移指令對流水線的影響,專門設(shè)置有一個轉(zhuǎn)移目標(biāo)指令Cache。在遇到條件轉(zhuǎn)移指令時,在指令Cache和目標(biāo)指令Cache中分別存放兩路分支上的有關(guān)指令;并且,指令分配部件在每個時鐘周期分別從指令Cache和目標(biāo)指令Cache中各取出兩條指令來同時進行譯碼;最后,根據(jù)形成的條件碼決定把其中一路分支上的指令送到操作部件中去。
 

單發(fā)射與多發(fā)射

單發(fā)射處理機的指令執(zhí)行時空圖如圖5.48(a)所示,它在一個時鐘周期內(nèi)只從存儲器中取出一條指令,并且只對一條指令進行譯碼,只執(zhí)行一條指令,只寫一個運算結(jié)果。
  在單發(fā)射處理機中,取指令部件和指令譯碼部件只各設(shè)置一套,而操作部件可以只設(shè)置一個多功能操作部件,也可以設(shè)置多個獨立的操作部件。例如,定點算術(shù)邏輯部件ALU、取數(shù)存數(shù)部件LSU、浮點加法部件FAD、乘除法部件MDU等。一個有4個操作部件組成的單發(fā)射處理機如圖5.49(a)所示。單發(fā)射處理機在指令一級通常采用流水線結(jié)構(gòu);而在操作部件中,有的機器采用流水線結(jié)構(gòu),也有的機器不采用流水線結(jié)構(gòu)。
  單發(fā)射處理機的設(shè)計目標(biāo)是每個時鐘周期平均執(zhí)行一條指令,即它的指令級并行度ILP的期望值1。如果從表5.2中看,相當(dāng)于m=1。實際上,它就是一臺有k段流水線的普通標(biāo)量處理機。由于數(shù)據(jù)相關(guān)、條件轉(zhuǎn)移和資源沖突等原因,實際的ILP不可能達到1。通過優(yōu)化編譯器對指令序列進行重組(recorganizer),以及采用軟件與硬件相結(jié)合的方法處理數(shù)據(jù)相關(guān)、條件轉(zhuǎn)移和資源沖突等,可以使ILP接近于1。但是,單發(fā)射處理機的ILP不可能大于1。

圖5.48 單發(fā)射與多發(fā)射處理機的指令執(zhí)行時空圖

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

性能

為了便于比較,把單流水線普通標(biāo)量處理機的指令級并行度記作(1,1),超標(biāo)量處理機的指令級并行度記作(m,1),超流水線處理機的指令級并行度記作(1,n),而超標(biāo)量超流水線處理機的指令級并行度記作(m,n)。
  在理想情況下,N條指令在單流水線普通標(biāo)量處理機上的執(zhí)行時間為:

    (5.29)
  其中,k是流水線的級數(shù),是一個時鐘周期的時間長度。
  如果把相同的N條指令在一臺每個時鐘周期發(fā)射m條指令的超標(biāo)量處理機上執(zhí)行,所需要的時間為:

   
  其中,第一項是第一批m條指令同時通過m條指令流水線所需要的執(zhí)行時間,而第二項是執(zhí)行其余N-m條指令所需要的時間,這時,每一個時鐘周期有m條指令分別通過m條指令流水線。
  因此,超標(biāo)量處理機相對于單流水線普通標(biāo)量處理機的加速比為:

   
  當(dāng)N→∞時,在沒有資源沖突,沒有數(shù)據(jù)相關(guān)和控制相關(guān)的理想情況下,超標(biāo)量處理機的加速比的最大值為:

超流水線處理機

在一般標(biāo)量流水線處理機中,通常把一條指令的執(zhí)行過程分解為"取指令"、"譯碼"、"執(zhí)行"和"寫回結(jié)果"4個流水段。如果把其中的每個流水段再細分,例如,再分解為兩個延遲時間更短的流水段,則一條指令的執(zhí)行過程就要經(jīng)過8個流水段,這樣,在一個時鐘周期內(nèi)就能夠"取指令"兩條,"譯碼"、"執(zhí)行"和"寫結(jié)果"各兩條指令。這種在一個時鐘周期內(nèi)能夠分時發(fā)射多條指令的處理機稱為超流水線處理機。另外,也可以把指令流水線的段數(shù)大于或等于8的流水線處理機稱為超流水線處理機。
  超流水線處理機與上一節(jié)中介紹的超標(biāo)量處理機不同,超標(biāo)量處理機是通過重復(fù)設(shè)置多"取指令"部件,設(shè)置多個"譯碼"、"執(zhí)行"和"寫結(jié)果"部件,并讓這些功能部件同時工作來提高指令的執(zhí)行速度,實際上是以增加硬件資源為代價來換取處理機性能的;而超流水線處理機則不同,它只需要增加少量硬件,是通過各部分硬件的充分重疊工作來來提高處理機性能的。從流水線的時空圖上看,超標(biāo)量處理機采用的是空間并行性,而超流水線處理機采用的是時間并行性。

指令執(zhí)行時序

 一臺并行度ILP為n的超流水線處理機,它在一個時鐘周期內(nèi)能夠發(fā)射n條指令;但這n條指令不是同時發(fā)射的,每隔1/n個時鐘周期發(fā)射一條指令;因此,實際上超流水線處理機的流水線周期為1/n個時鐘周期。一臺每個時鐘周期分時發(fā)射3條指令的超流水線處理機的指令執(zhí)行時空圖如圖5.56所示。

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

典型結(jié)構(gòu)

 在早期生產(chǎn)的計算機中,巨型計算機CRAY-1和大型計算機CDC-7600屬于超流水線處理機,其指令級并行度n=3。在目前大量使用的微處理器中,只有SGI公司的MIPS(Microprocessor without Interlocked Piped Stages)系列處理機屬于超流水線處理機。MIPS是除Intel公司的X86系列微處理器之外,生產(chǎn)量最大的一種微處理器。MIPS系列的微處理器主要有R2000、R3000、R4000、R5000和R10000等幾種,其中,R4000是典型的超流水線處理機。下面以R4000為例,說明超流水線處理機的基本結(jié)構(gòu)和工作原理,圖5.57是R4000微處理器的結(jié)構(gòu)框圖。
  R4000芯片內(nèi)有兩個Cache,指令Cache和數(shù)據(jù)Cache的容量各8K字節(jié),每個Cache的數(shù)據(jù)寬度為64位。由于每個時鐘周期可以訪問Cache兩次,因此,在一個時鐘周期內(nèi)可以從指令Cache中讀出兩條指令,從數(shù)據(jù)Cache中讀出或?qū)懭雰蓚€數(shù)據(jù)。
  整數(shù)部件是R4000的核心處理部件,它主要包括一個32個32位的通用寄存器堆,一個算術(shù)邏輯部件,一個專用的乘法/除法部件。整數(shù)部件負責(zé)取指令,整數(shù)操作的譯碼和執(zhí)行,LOAD與STORE操作的執(zhí)行等。通用寄存器堆用作標(biāo)量整數(shù)操作和地址計算,寄存器堆有兩個輸出端口和一個輸入端口,它還設(shè)置有專用的數(shù)據(jù)通路,可以對每一個寄存器讀和寫兩次。整數(shù)部件包括一個整數(shù)加法器和一個邏輯部件,負責(zé)執(zhí)行算術(shù)運算操作,地址運算和所有的移位操作。乘法/除法部件能夠執(zhí)行32位帶符號和不帶符號的乘法或除法操作,它可以與整數(shù)部件并行執(zhí)行指令。
  浮點部件包括一個浮點通用寄存器堆和一個執(zhí)行部件。浮點通用寄存器堆由16個64位的通用寄存器組成,它也可以設(shè)置成32個32位的浮點寄存器。浮點執(zhí)行部件由浮點乘法部件、浮點除法部件和浮點加法/轉(zhuǎn)換/求平方根部件等三個獨立的部件組成,這三個浮點部件可以并行工作。浮點操作主要包括浮點加、減、乘、除和求平方根、定點與浮點格式的轉(zhuǎn)換、浮點格式之間的轉(zhuǎn)換、浮點數(shù)比較等15種。浮點控制寄存器用來設(shè)置浮點協(xié)處理器的狀態(tài)和控制信息,主要用于診斷軟件、異常事故處理、狀態(tài)保存與恢復(fù)、舍入方式的控制等。
  R4000的指令流水線有8級,流水線操作如圖5.58所示。R4000采用超流水線結(jié)構(gòu),取指令和訪問數(shù)據(jù)都要跨越兩個流水級。實際上,每個時鐘周期包含兩個流水級,處理器取第一條指令(IF)和取第二條指令(IS)兩個流水級都要訪問指令Cache,這兩個流水級為一個時鐘周期。在寄存器流水級(RF)的開始,指令已經(jīng)讀到了指令寄存器中,因此可以進行譯碼,并且訪問寄存器堆。另外,由于指令Cache是采用直接映象方式的,因此,從指令Cache中讀出的區(qū)號要與訪問存儲器的物理地址進行比較。如果相等,表示指令Cache命中。


對于非存儲器操作指令,如果指令Cache命中,那么,指令可以在指令執(zhí)行(EX)流水級執(zhí)行,指令的執(zhí)行結(jié)果可以在EX流水級的末尾得到。
  在正常情況下,MIPS R4000指令流水線工作時序如圖5.59所示。一條指令的執(zhí)行過程經(jīng)歷8個流水線周期。由于一個主時鐘周期包含有兩個流水線周期,因此,也可以認(rèn)為每4個主時鐘周期執(zhí)行完一條指令。

從流水線的輸入端看,每一個流水線周期啟動一條指令。同樣,從流水線的輸出端看,每一個流水線周期執(zhí)行完成一條指令。當(dāng)流水線被充滿時,如圖5.59中的黑框內(nèi)所示,有8條指令在同時執(zhí)行。如果把兩個流水線周期看作一個時鐘周期,則在一個時鐘周期內(nèi),R4000處理機分時發(fā)射了兩條指令。同樣,在一個時鐘周期內(nèi),流水線也執(zhí)行完成了兩條指令,因此,R4000是一種很典型的超流水線處理機。
  在取第一個數(shù)據(jù)(DF)和取第二個數(shù)據(jù)(DS)流水級期間,R4000要訪問數(shù)據(jù)Cache。首先,存儲器管理部件(MMU)在DF和DS流水級把數(shù)據(jù)的虛擬地址變換成主存物理地址,然后,在標(biāo)志檢驗(TC)流水級從數(shù)據(jù)Cache中讀出數(shù)據(jù)的區(qū)號,并把讀出的區(qū)號與變換成的主存物理地址進行比較。如果比較結(jié)果相等,則數(shù)據(jù)Cache命中。對于STORE指令,如果命中,只要把數(shù)據(jù)送到寫入緩沖器,由寫入緩沖器負責(zé)把數(shù)據(jù)寫到數(shù)據(jù)Cache的指定中去。對于非存儲器操作指令,在寫回結(jié)果(WB)流水級要把指令的最后執(zhí)行結(jié)果寫回到通用寄存器堆中。

性能

在一臺指令級并行度為(1,n)的超流水線處理機上,執(zhí)行N條沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令所需要的時間為:

其中,k是指令流水線的流水段數(shù),或時鐘周期數(shù);而不是流水線級數(shù)。在一般超流水線處理機中,指令流水線的級數(shù)實際應(yīng)為k n。上式中的頭一項是第一條指令通過指令流水線執(zhí)行完成所需要的時間,而第二項是執(zhí)行其余N-1條指令所需要的時間,這時,每一個時鐘周期有n條指令要在指令流水線中執(zhí)行完成,也就是每一個流水線周期執(zhí)行完成一條指令。
  
單流水線普通標(biāo)量處理機連續(xù)執(zhí)行N條指令所用時間如(5.29)式所示,因此,超流水線處理機相對于單流水線普通標(biāo)量處理機的加速比為:

當(dāng)執(zhí)行的指令條數(shù)N→∞時,在沒有數(shù)據(jù)相關(guān)和控制相關(guān)的理想情況下,超流水線處理機的加速比的最大值為:

摘自https://pop0726.github.io/jsj/content/sec.htm,侵刪(TSU的遠古課件,但還是很詳盡)

總結(jié)

以上是生活随笔為你收集整理的超标量处理机和超流水线处理机——计算机系统结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。