計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第3章(流水技術(shù)與流水處理機(jī))_第1頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第3章(流水技術(shù)與流水處理機(jī))_第2頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第3章(流水技術(shù)與流水處理機(jī))_第3頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第3章(流水技術(shù)與流水處理機(jī))_第4頁
計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)第3章(流水技術(shù)與流水處理機(jī))_第5頁
已閱讀5頁,還剩124頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【學(xué)習(xí)目標(biāo)】1.理解指令交叉方式的工作原理,以及處理機(jī)處理機(jī)在結(jié)構(gòu)上必須解決的問題.2.掌握流水方式的工作原理,掌握利用時(shí)空圖計(jì)算流水線的吞吐率、加速比和效率的方法;了解從不同角度對流水線的分類及其定義,了解消除流水線瓶頸的方法.3.掌握單功能非線性流水線的最優(yōu)調(diào)度方法,求解最優(yōu)調(diào)度及其流水線的吞吐率、加速比和效率的方法.了解雙功能非線性流水線的最優(yōu)調(diào)度方法及無沖突調(diào)度的實(shí)現(xiàn)方法.4.掌握流水線發(fā)生局部相關(guān)和全局相關(guān)的原因及其處理方法.5.理解超標(biāo)量處理機(jī)、超流水線處理機(jī)、超標(biāo)量超流水線處理機(jī)三種處理機(jī)在指令級上并行的工作原理,以及它們分別相對于標(biāo)量流水處理機(jī)加速比的計(jì)算方法.6.了解超長指令字處理機(jī)的基本工作原理.7.了解向量的3種處理方式,掌握向量流水處理機(jī)上的一串向量指令序列的指令并行和指令鏈接的條件,以及計(jì)算指令序列執(zhí)行時(shí)間的方法.3.1指令重疊與先行控制提高處理機(jī)執(zhí)行指令速度的途徑,通常有三種途徑:(1)提高處理機(jī)的工作頻率(2)采用RISC技術(shù)減少指令執(zhí)行的平均周期數(shù)(3)多條指令并行執(zhí)行—指令級并行技術(shù)①流水線處理機(jī)或超流水線處理機(jī)(superpipeliningprocessor)②多操作部件處理機(jī)或超標(biāo)量處理機(jī)(superscalar)3.1.1指令的順序執(zhí)行方式與重疊執(zhí)行方式3.1.2.先行控制技術(shù)③超長指令字(VeryLongInstructionWord,VLIW)技術(shù)取指令:指令計(jì)數(shù)器訪問主存取出一條指令指令寄存器分析指令:操作碼譯碼形成操作數(shù)地址讀取操作數(shù)(從主存或寄存器)指令執(zhí)行:完成指令規(guī)定的功能結(jié)果寫入主存或寄存器三個(gè)階段都可能訪問主存指令的順序執(zhí)行方式與重疊執(zhí)行方式

1.指令的順序執(zhí)行方式一條指令執(zhí)行過程

:一條指令的執(zhí)行分為三個(gè)階段:取指令、分析與執(zhí)行.指令的順序執(zhí)行方式與重疊執(zhí)行方式

1.指令的順序執(zhí)行方式指令之間順序串行,且指令內(nèi)的各階段之間也是順序串行的方式.如果取指、分析、執(zhí)行3個(gè)階段所需時(shí)間均為t,那么順序執(zhí)行n條指令所用的時(shí)間為:=3nt

順序執(zhí)行方式的優(yōu)點(diǎn)指令之間相互關(guān)聯(lián)關(guān)系易于控制和處理,結(jié)構(gòu)設(shè)計(jì)與組成實(shí)現(xiàn)簡便易行.缺點(diǎn)是執(zhí)行的速度慢,系統(tǒng)各部件的利用率低.取指令i分析i執(zhí)行i取指令i+1分析i+1執(zhí)行i+1

一次重疊方式是指第i條指令和第i+1條指令的執(zhí)行有一段的執(zhí)行是重疊的。例如第i條指令的執(zhí)行指令階段同時(shí)也是第i+1條指令的取指令階段.一次重疊執(zhí)行方式假設(shè)執(zhí)行一條指令的三個(gè)過程的時(shí)間都為t,可以看出:除了第一條指令外,每經(jīng)過兩段就會完成一條指令。指令的順序執(zhí)行方式與重疊執(zhí)行方式

2.指令的重疊執(zhí)行方式優(yōu)點(diǎn):一是提高了功能部件的利用率;二是明顯提高了指令的執(zhí)行速度。缺點(diǎn):

需要增加一些硬件;

控制過程比較復(fù)雜.一次重疊執(zhí)行方式2.指令的重疊執(zhí)行方式

兩次重疊方式和一次重疊方式的道理是一樣的,不過重疊的是指令的兩個(gè)階段.兩次重疊執(zhí)行方式如果執(zhí)行一條指令的三個(gè)過程所用的時(shí)間相等,則執(zhí)行n條指令的時(shí)間為:執(zhí)行n條指令所用的時(shí)間優(yōu)缺點(diǎn):執(zhí)行時(shí)間縮短了將近三分之二。處理機(jī)的機(jī)構(gòu)要作比較大的改變,要采用先行控制方式.T=(2+n)t2.指令的重疊執(zhí)行方式3.1.2先行控制技術(shù)

采用二次重疊執(zhí)行方式,在處理機(jī)中同時(shí)有三條指令分別在取指令、分析和執(zhí)行。要使指令能夠正確地重疊執(zhí)行,必須解決如下兩個(gè)問題:

第一,為了實(shí)現(xiàn)取指令,分析指令和執(zhí)行指令同時(shí)進(jìn)行,需要有獨(dú)立的取指令部件、指令分析部件和指令執(zhí)行部件。因此,要把順序執(zhí)行方式中的一個(gè)集中的指令控制器,分解成三個(gè)相對獨(dú)立的控制器,它們是:存儲控制器,簡稱存控;指令控制器,簡稱指控;運(yùn)算控制器,簡稱運(yùn)控。需要解決的問題:

第二,要解決訪問主存儲器的沖突問題。例如,取指令時(shí)要訪問主存儲器,分析指令時(shí)可能要取操作數(shù),執(zhí)行指令時(shí)可能要向主存儲器寫運(yùn)算結(jié)果。常規(guī)的主存儲器體系結(jié)構(gòu)無法實(shí)現(xiàn)指令的重疊執(zhí)行。先行控制技術(shù)

需要解決的問題:如何解決把主存儲器分成兩個(gè)獨(dú)立編址的存儲器,一個(gè)專門存放指令,稱為指令存儲器,簡稱指存;另一個(gè)專門存放操作數(shù),稱為數(shù)據(jù)存儲器,簡稱數(shù)存。兩個(gè)存儲器可以同時(shí)獨(dú)立訪問;這樣,就解決了取指令和讀操作數(shù)的沖突。指令和數(shù)據(jù)仍然混合存放在同一個(gè)主存儲器內(nèi),采用低位交叉存取方式,在一個(gè)存儲器周期中可以訪問多個(gè)存儲單元。如果處理機(jī)同時(shí)執(zhí)行的取指令和讀操作數(shù)所訪問的不是同一個(gè)存儲體,則可以實(shí)現(xiàn)指令重疊執(zhí)行。如果正好訪問同一個(gè)存儲體,則指令無法重疊執(zhí)行。

先行控制技術(shù)解決訪問存儲器沖突的方法:先行控制技術(shù)

采用先行控制技術(shù)的處理機(jī)結(jié)構(gòu)主存儲器存儲控制器先行指令緩沖棧先行讀數(shù)棧后行寫數(shù)棧指令分析器先行操作棧運(yùn)算控制器運(yùn)算器通用寄存器先行指令緩沖棧作為主存與指令分析器之間之間的緩沖部件,用以平滑主存和指令分析器的工作速度的差異.先行操作棧是指令分析器與運(yùn)算控制器之間的一個(gè)緩沖存儲器,由指令分析器對指令進(jìn)行預(yù)處理后送入先行操作棧.各種運(yùn)算型指令、移位指令、數(shù)據(jù)傳輸指令等都要處理成RR型指令,為了與指令系統(tǒng)中原有的RR型指令相區(qū)別,通常將送入先行操作棧的指令稱為RR*型指令.運(yùn)算控制器從先行操作棧取出RR*型指令,運(yùn)算器需要的操作數(shù)來自先行讀數(shù)?;蛲ㄓ眉拇嫫?先行控制技術(shù)

采用先行控制技術(shù)的處理機(jī)結(jié)構(gòu)主存儲器存儲控制器先行指令緩沖棧先行讀數(shù)棧后行寫數(shù)棧指令分析器先行操作棧運(yùn)算控制器運(yùn)算器通用寄存器先行讀數(shù)棧是主存和運(yùn)算器之間的一種緩沖存儲器,用來平滑運(yùn)算器與主存的工作速度差異.對于先行的指令而言,是把后續(xù)的指令要用到的操作數(shù)“先行”從主存讀取,所以稱為先行讀數(shù)棧,原來要訪存取操作數(shù)變?yōu)樵L問先行讀數(shù)棧中的寄存器,大大加快了指令的執(zhí)行速度.先行控制技術(shù)

采用先行控制技術(shù)的處理機(jī)結(jié)構(gòu)主存儲器存儲控制器先行指令緩沖棧先行讀數(shù)棧后行寫數(shù)棧指令分析器先行操作棧運(yùn)算控制器運(yùn)算器通用寄存器后行寫數(shù)棧當(dāng)指令分析器遇到向主存寫數(shù)的指令,則把形成的主存有效地址送入后行寫數(shù)棧的后行地址緩沖器中,并把預(yù)處理好的RR*型指令送入先行操作棧,這條RR*型指令中的目標(biāo)寄存器就是后行寫數(shù)棧的緩沖寄存器編號.當(dāng)運(yùn)算器執(zhí)行這條RR*型指令時(shí),把原定寫到主存中去的數(shù)據(jù)送入后行寫數(shù)棧的相應(yīng)后行數(shù)據(jù)緩沖寄存器中即可,而由后行寫數(shù)棧負(fù)責(zé)把數(shù)據(jù)緩沖器中的數(shù)據(jù)按地址緩沖器中的主存地址送入主存.這樣,運(yùn)算器不必等待數(shù)據(jù)寫回主存,就可以繼續(xù)執(zhí)行后續(xù)指令.因此,后行寫數(shù)棧也是主存與運(yùn)算器之間的一種緩沖存儲器..先行控制技術(shù)

采用先行控制技術(shù)的處理機(jī)結(jié)構(gòu)主存儲器存儲控制器先行指令緩沖棧先行讀數(shù)棧后行寫數(shù)棧指令分析器先行操作棧運(yùn)算控制器運(yùn)算器通用寄存器可以看出,先行控制技術(shù)實(shí)質(zhì)上是緩沖技術(shù)和預(yù)處理技術(shù)相結(jié)合的技術(shù).通過對指令和數(shù)據(jù)的預(yù)處理和緩沖,使指令分析器和指令執(zhí)行部件能夠獨(dú)立地工作,并始終處于忙碌狀態(tài),從而大大提高了指令重疊執(zhí)行的速度.

通常把先行指令緩沖棧、先行讀數(shù)棧、先行操作棧和后行寫數(shù)棧統(tǒng)稱為先行控制器.先行控制器與指令分析器一起構(gòu)成先行控制方式中的指令控制部件.而原來的運(yùn)算器及運(yùn)算控制器一起組成指令執(zhí)行部件.3.2流水線的分類與性能

3.2.1.流水線的分類與時(shí)空圖3.2.2線性流水線的性能計(jì)算1.流水線的分類2.時(shí)空圖1.吞吐率2.加速比3.效率流水線可按不同的觀點(diǎn)進(jìn)行分類,一般來說流水線可以分為如下幾種類型:(1)線性流水線和非線性流水線按照流水線的各個(gè)功能段之間是否有反饋信號分類線性流水線(linearpipelining)是指流水線的各段串行連接,數(shù)據(jù)從流水線的一端進(jìn)入,從另一端輸出,在各個(gè)功能段流過時(shí)僅流過一次,沒有反饋回路。流水線的分類(1)線性流水線和非線性流水線非線性流水線

流水線中除有串行連接的通路處,還有反饋回路或前饋回路。下面的非線性流水線帶有反饋回線。流水線的分類(2)單功能流水線和多功能流水線這是按照流水線所完成的功能來分類的。單功能流水線,是指只能完成一種固定功能的流水線。要完成多種功能,可采用多個(gè)單功能流水線。多功能流水線,是指同一流水線的各個(gè)段之間可以進(jìn)行不同的連接,從而使流水線在不同的時(shí)間,或者在同一時(shí)間完成不同的功能。流水線的分類(3)部件級、處理機(jī)級及系統(tǒng)級流水線

是按照流水線使用的級別來進(jìn)行分類。部件級流水線,又叫運(yùn)算操作流水線。它是指部件內(nèi)部各子部件組成的流水線.如指令分析部件中各子部件組成的指令分析部件流水線。處理機(jī)級流水線,又叫指令流水線。它是指處理機(jī)內(nèi)各部件之間的流水線,把執(zhí)行指令的過程按照流水方式處理,取指部件、指令分析部件和指令執(zhí)行部件組成的指令流水線。處理機(jī)間級流水線,又叫宏流水線。它是由兩個(gè)以上的處理機(jī)串行地對同一數(shù)據(jù)流進(jìn)行處理,每個(gè)處理機(jī)對數(shù)據(jù)流的不同部分分別進(jìn)行處理。流水線的分類(4)靜態(tài)流水線和動態(tài)流水線在多功能流水線中,按照同一時(shí)間內(nèi)是否能夠連接成多種方式,同時(shí)執(zhí)行多種功能來分類:靜態(tài)流水線,是指在同一時(shí)間內(nèi),流水線的各段只能按同一種功能的連接方式工作。動態(tài)流水線,是指在同一時(shí)間內(nèi),當(dāng)某些段上在實(shí)現(xiàn)某種運(yùn)算(如定乘)時(shí),另一些段卻在實(shí)現(xiàn)另一種運(yùn)算(如浮加),這樣就不是非得相同運(yùn)算的一串操作才能流水處理。流水線的分類(5)標(biāo)量流水處理機(jī)與向量處理機(jī)流水處理機(jī)按是否具有向量數(shù)據(jù)表示和相應(yīng)的向量指令,可分為標(biāo)量流水處理機(jī)和向量流水處理機(jī).標(biāo)量流水處理機(jī)(ScalarPipelineProcessor),只有流水線,沒有向量數(shù)據(jù)表示和相應(yīng)的向量指令.向量流水處理機(jī)是向量數(shù)據(jù)表示與向量指令流水線的結(jié)合.流水線的分類

流水線的工作常用“時(shí)空圖”來描述,用橫軸代表時(shí)間,縱軸表示流水線的各功能部件。規(guī)格化1規(guī)格化2規(guī)格化3規(guī)格化4規(guī)格化52.時(shí)空圖(Time-SpaceDiagram)流水線的分類與時(shí)空圖四段浮點(diǎn)加法器流水線時(shí)空圖加法器流水線:求階差對階尾數(shù)加規(guī)格化入出時(shí)空圖求階差1求階差2求階差3求階差4求階差5對階1對階2對階3對階4對階5尾數(shù)加1尾數(shù)加2尾數(shù)加3尾數(shù)加4尾數(shù)加5空間時(shí)間0多功能流水線的時(shí)空圖時(shí)空圖輸入求階差對階尾數(shù)加規(guī)格化尾數(shù)乘累加輸出AB輸入求階差對階尾數(shù)加規(guī)格化尾數(shù)乘累加輸出AB輸入求階差對階尾數(shù)加規(guī)格化尾數(shù)乘累加輸出AB輸入求階差對階尾數(shù)加規(guī)格化尾數(shù)乘累加輸出AB流水線g=f(A,B)定點(diǎn)乘浮點(diǎn)加浮點(diǎn)點(diǎn)積123……n-1n123……n-1n多功能流水線的時(shí)空圖靜態(tài)時(shí)空圖空間輸出累加尾數(shù)乘規(guī)格化尾數(shù)加對階求階差輸入123……n-1n123……n-1n123……n-1n123……n-1n浮點(diǎn)加時(shí)間1234…123…12…1…定點(diǎn)乘123……n-1n123……n-1n多功能流水線的時(shí)空圖動態(tài)時(shí)空圖空間輸出累加尾數(shù)乘規(guī)格化尾數(shù)加對階求階差輸入123……n-1n123……n-1n123……n-1n123……n-1n浮點(diǎn)加時(shí)間123456…12345…1234…123…定點(diǎn)乘吞吐率

流水線的吞吐率(throughputrate,),是指單位時(shí)間內(nèi)流水線完成的任務(wù)數(shù)或輸出的結(jié)果.

分子表示n個(gè)任務(wù),分母表示完成n個(gè)任務(wù)所用的時(shí)間。線性流水線的性能計(jì)算

(1)各段執(zhí)行時(shí)間相的吞吐率.輸入連續(xù)任務(wù)情況下完成n個(gè)連續(xù)任務(wù)需要的總時(shí)間為:

Tk=(k+n-1)Dt

k為流水線的段數(shù),Dt為時(shí)鐘周期流水線的吞吐率從流水線的輸出端看,用k個(gè)周期輸出第一個(gè)任務(wù),以后是每個(gè)時(shí)鐘周期輸出一個(gè)任務(wù),即用n-1個(gè)時(shí)鐘完成其余的n-1個(gè)任務(wù).從輸入端看,因?yàn)槭侨蝿?wù)之間隔一個(gè)時(shí)鐘周期,因此要用n個(gè)時(shí)鐘周期向流水線輸入n個(gè)任務(wù),另外還要用k-1個(gè)時(shí)鐘周期為流水線的排空時(shí)間(即最后一個(gè)任務(wù)出流水線).輸出端輸入端各段執(zhí)行時(shí)間相等,輸入連續(xù)任務(wù)吞吐率:

最大吞吐率與吞吐率之間的關(guān)系最大吞吐率為:結(jié)論:流水線的實(shí)際吞吐率與哪些因素有關(guān)?吞吐率(2)流水線各段執(zhí)行時(shí)間不相等37吞吐率為:最大吞吐率為:(2)各段執(zhí)行時(shí)間不相等、輸入連續(xù)任務(wù)情況吞吐率實(shí)際吞吐率和最大吞吐率主要由流水線中執(zhí)行時(shí)間最長的那個(gè)功能塊決定.這個(gè)功能塊成了整個(gè)流水線的“瓶頸”.吞吐率解決流水線的“瓶頸”問題的方法一是將“瓶頸”流水段細(xì)分(如果可分的話)二是將“瓶頸”流水段重復(fù)設(shè)置流水段重復(fù)設(shè)置的流水線1時(shí)間空間23nS1S2-1456…14…-2-1n-225…n-136…n123n456…-2-1123n456…-2-1S2-2S2-3S3S4時(shí)空圖最大吞吐率:線性流水線的性能計(jì)算

分子是采用非流水線用的時(shí)間,分母是采用流水線所用的時(shí)間。(1)各段執(zhí)行時(shí)間相等的加速比在等效的非流水線上所需時(shí)間為:T0=n·k·Δt所以,對于各功能段執(zhí)行時(shí)間均相等,有K段的流水線完成n個(gè)連續(xù)任務(wù)時(shí)的加速比S為:

2.加速比

流水線的加速比是指等功能的非流水線的速度與具有m段流水線的速度之比。加速比的基本公式為:

2.加速比最大加速比:從上式可以看出,當(dāng)n>>k時(shí),流水線的最大加速比等于流水線的段數(shù)。即:

最小加速比:當(dāng)n=1時(shí),加速比為為1,最小

與流水線的段數(shù)有關(guān):如n=64時(shí),4段流水線的加速比為3.8,而有8段的流水線的加速比為7.2是否流水線的段數(shù)可以不受限制的增加呢?加速比(2)各段執(zhí)行時(shí)間不等的加速比如果各段時(shí)間不等,則有:線性流水線的性能計(jì)算

3.效率(Efficiency)定義:效率是指流水線的設(shè)備利用率。時(shí)空圖表示:在時(shí)空圖上,流水線的效率表示為n個(gè)任務(wù)占用的時(shí)空區(qū)與k個(gè)功能段總的時(shí)空區(qū)之比.流水線的效率與其包含的時(shí)間、空間兩方面的因素有關(guān).表達(dá)式:n個(gè)任務(wù)占用的時(shí)空區(qū)就是順序執(zhí)行n個(gè)任務(wù)所使用的總的時(shí)間T0,而一條k段的流水線完成n個(gè)任務(wù)的總的時(shí)空區(qū)為KTk.其中Tk是流水線完成n個(gè)任務(wù)使用的總時(shí)間.則一條k段的流水線的效率可以表示為:3.效率(1)各段執(zhí)行時(shí)間相等,n個(gè)任務(wù)連續(xù),一條k段的流水線的效率為:上式的分母是時(shí)空圖中完成n個(gè)任務(wù)所用的時(shí)間與k個(gè)功能所圍成的總面積;而分子是時(shí)空圖中n個(gè)任務(wù)實(shí)際占用的面積。當(dāng)n>>k時(shí),E≈1。這個(gè)結(jié)論和上面分析吞吐率及加速比的結(jié)論是一致的.線性流水線的性能計(jì)算從以上的分析很容易可以得出關(guān)于流水線的三個(gè)性能標(biāo)準(zhǔn)的之間的關(guān)系。三個(gè)性能標(biāo)準(zhǔn)的之間的關(guān)系效率和吞吐率之間的關(guān)系可以表示為:當(dāng)時(shí)鐘周期△t不變時(shí),流水線的效率與吞吐率成正比。這就是說,為了提高流水線的效率而采取的措施,同時(shí)也提高了流水線的吞吐率。效率和加速比之間的關(guān)系可以表示為:3.效率(2)各段執(zhí)行時(shí)間不等的效率例3.3非線性流水線的調(diào)度與性能計(jì)算3.3.1非線性流水線的最優(yōu)調(diào)度方法與性能計(jì)算1.單功能非線性流水線的最優(yōu)調(diào)度方法及其性能計(jì)算2.多功能非線性流水線的最優(yōu)調(diào)度方法及其性能計(jì)算3.3.2非線性流水線的最優(yōu)調(diào)度的時(shí)空圖3.3.3非線性流水線的動態(tài)調(diào)度的實(shí)現(xiàn)流水線的相關(guān)問題與相關(guān)處理所謂相關(guān)是指在一段程序的相近指令之間有某種關(guān)系,這種關(guān)系可能影響指令的重疊執(zhí)行.通常把相關(guān)分為兩大類:局部相關(guān)(LocalCorrelation),僅涉及到相關(guān)指令前后的一條或幾條指令的執(zhí)行.全局相關(guān)(GlobalCorrelation)指影響整個(gè)程序執(zhí)行方向的相關(guān),主要是轉(zhuǎn)移類指令和中斷引起的相關(guān).3.4.1局部相關(guān)及處理3.4.2全局相關(guān)及處理3.4.3相關(guān)對流水線性能的影響3.4.1局部相關(guān)及處理局部相關(guān)主要有:“先寫后讀”相關(guān)“先讀后寫”相關(guān)“寫-寫”相關(guān)這些相關(guān)問題的出現(xiàn)同對象序列在流水線中流動順序有關(guān)1.順序流動的“先寫后讀”相關(guān)及處理順序流動是指對象從流水線流出的次序與它們流入流水線的次序一樣.讀取寫段nKkjjjm空ik空iil空hhh18指令存儲單元入出(異步流動)(順序流動)(判出j,h相關(guān))如果指令h寫入結(jié)果的目的地址同指令j讀操作數(shù)的源地址是同一個(gè)存儲單元或寄存器,稱這兩條指令有“先寫后讀”要求.若指令j到達(dá)讀段時(shí),指令h還沒有到達(dá)寫段完成寫操作,則指令j讀出的數(shù)據(jù)就是錯(cuò)誤的,這就是“先寫后讀”相關(guān).解決的方法當(dāng)指令j到達(dá)讀段時(shí),若通過比較地址碼發(fā)現(xiàn)與指令h相關(guān),則指令j及其后面的指令停止流動直到指令h流過寫段再繼續(xù)流動.2.異步流動的局部相關(guān)

異步流動是指對象從流水線流出的次序同它們流入流水線的次序不同.異步流動也稱亂序(OutofOrder)流動或錯(cuò)序流動.

對于解決順序流動中的“先寫后讀”相關(guān),異步流動可提高流水線的吞吐率和效率,但會出現(xiàn)兩種新的相關(guān):“寫-寫”相關(guān)和“先讀后寫”相關(guān).

若指令i和指令k都有寫操作,且寫入的目的地址是同一存儲單元或同一寄存器,順序執(zhí)行時(shí)是i先寫,而k后寫.但是,采用異步流動時(shí),可能k先于到達(dá)寫段,那么該存儲單元或寄存器的內(nèi)容最后是由i寫入,這就是“寫-寫”相關(guān).

若指令i的讀操作和指令k寫操作是同一個(gè)存儲單元或寄存器,則這兩條指令有“先讀后寫”要求.采用異步流動,可能出現(xiàn)指令k的寫操作先于i的讀操作,造成“先讀后寫”相關(guān).

解決的方法,同樣可采用延遲方法.3.相關(guān)專用通路

解決“先寫后讀”相關(guān)的另一種方法是建立相關(guān)專用通路,即在流水線的讀段和寫段之間增加一條專用的數(shù)據(jù)通路.對于“先寫后讀”數(shù)據(jù)相關(guān),先A→B,然后B→C;等效于A→B→C.如果采用設(shè)置專用路徑的方法,新增加一條從A到C的專用路徑,撤消原來從B到C的路徑.這樣可避免“先寫后讀”數(shù)據(jù)相關(guān),或者縮短發(fā)生“先寫后讀”數(shù)據(jù)相關(guān)的時(shí)間。延遲的方法是以增加時(shí)間為代價(jià),降低速度來解決問題;相關(guān)專用通路是以增加設(shè)備為代價(jià),提高成本來解決問題全局相關(guān)及處理

由于程序的執(zhí)行方向改變而引起的相關(guān),例如條件轉(zhuǎn)移或程序中斷引起的相關(guān),叫全局相關(guān),是對整個(gè)程序的大的改變。在目前的處理機(jī)當(dāng)中程序的執(zhí)行方向改變主要有轉(zhuǎn)移子程序,轉(zhuǎn)移和中斷三種情況。

條件轉(zhuǎn)移指令在一般的程序中占有比較大比例.

中斷所占的比例不大,但中斷發(fā)生在程序的哪一條指令,發(fā)生在指令執(zhí)行過程中的哪一個(gè)功能段都是不確定的,因此處理好條件轉(zhuǎn)移和中斷所引起的全局相關(guān)是很重要的.1.條件轉(zhuǎn)移的處理2.中斷處理?xiàng)l件轉(zhuǎn)移的處理無條件轉(zhuǎn)移,就是在流水線里,碰到一條無條件轉(zhuǎn)移指令(通常是JMP指令),無條件的轉(zhuǎn)移到別的地方。條件轉(zhuǎn)移指令有兩種,即一般條件轉(zhuǎn)移指令和復(fù)合條件轉(zhuǎn)移指令。其中,一般條件轉(zhuǎn)移指令的轉(zhuǎn)移條件來自上一條指令,或來自更前面的指令。而復(fù)合型條件轉(zhuǎn)移指令直接根據(jù)本條指令的執(zhí)行結(jié)果決定是否轉(zhuǎn)移。無論哪種情況,一般都要在轉(zhuǎn)移指令執(zhí)行到流水線的最后功能段時(shí),轉(zhuǎn)移條件才能建立.因此,在條件轉(zhuǎn)移指令進(jìn)入流水線之后,到形成轉(zhuǎn)移條件之前,后續(xù)指令不能進(jìn)入流水線.(1)轉(zhuǎn)移的影響猜測的分支固定在轉(zhuǎn)移不成功方向.如果形成的條件碼是對應(yīng)于轉(zhuǎn)移不成功,猜測正確,吞吐和效率不受影響;如果形成的條件碼對應(yīng)于轉(zhuǎn)移成功,則猜測錯(cuò)誤,有k-2個(gè)功能段是浪費(fèi)的.轉(zhuǎn)移的影響用“猜測法”解決由于條件轉(zhuǎn)移使流水線“斷流”問題i-1ii+1i+2i+k-3i+k-2pP+1P+k-4P+k-3形成條件碼的指令條件轉(zhuǎn)移指令轉(zhuǎn)移不成功轉(zhuǎn)移成功形成條件碼輸入輸出輸出……時(shí)間條件轉(zhuǎn)移的處理更嚴(yán)重的情況:如果第i+1指令是

(R1)+(R2)→R1

一旦這條指令執(zhí)行完成,寄存器R1的內(nèi)容就被破壞,使程序的執(zhí)行結(jié)果發(fā)生錯(cuò)誤.

為避免之,采取兩種做法:

只進(jìn)行指令譯碼和準(zhǔn)備好操作數(shù),在轉(zhuǎn)移條件沒有形成之前不執(zhí)行運(yùn)算;一直執(zhí)行到運(yùn)算完成,但不送回運(yùn)算結(jié)果.在一些典型程序中,轉(zhuǎn)移指令所占的比例為p=20%,轉(zhuǎn)移成功率為q=60%,對于一個(gè)有8個(gè)功能段的流水線,由于條件轉(zhuǎn)移的影響,流水線的最大吞吐率要下降46%.轉(zhuǎn)移的影響條件轉(zhuǎn)移的處理減少條件轉(zhuǎn)移指令對流水線影響的措施延遲轉(zhuǎn)移技術(shù).是RISC的關(guān)鍵技術(shù).它是依靠編譯器把轉(zhuǎn)移指令之前的一條或幾條沒有數(shù)據(jù)相關(guān)的指令調(diào)整到轉(zhuǎn)移指令的后面.一般用于段數(shù)較少的流水線中.據(jù)統(tǒng)計(jì),編譯器只調(diào)整一條指令的成功概率在90%以上,調(diào)整兩條指令的成功概率只有40%左右.當(dāng)沒有合適的指令可供調(diào)整時(shí),編譯器只能在轉(zhuǎn)移指令后面插入空操作指令.靜態(tài)轉(zhuǎn)移預(yù)測技術(shù).在兩個(gè)方向都預(yù)取指令,增設(shè)一定數(shù)量的緩沖寄存器堆棧,以減少轉(zhuǎn)移方向猜測錯(cuò)誤是造成的影響.(2)減少轉(zhuǎn)移影響的措施條件轉(zhuǎn)移的處理減少條件轉(zhuǎn)移指令對流水線影響的措施動態(tài)轉(zhuǎn)移預(yù)測技術(shù).是根據(jù)近期轉(zhuǎn)移是否成功的歷史記錄來預(yù)測下一次轉(zhuǎn)移的方向.能夠隨程序的執(zhí)行過程動態(tài)地改變轉(zhuǎn)移的預(yù)測方向.其關(guān)鍵技術(shù):一是如何記錄轉(zhuǎn)移的歷史記錄;二是如何根據(jù)記錄的歷史信息預(yù)測轉(zhuǎn)移的方向.

一種方法是在指令Cache中專門設(shè)置一個(gè)字段,稱為“歷史轉(zhuǎn)移表”,將轉(zhuǎn)移成功或不成功的信息記錄在表中.提前形成條件碼.由編譯器調(diào)整指令序列,把產(chǎn)生條件碼的運(yùn)算型指令與使用這個(gè)條件碼的條件轉(zhuǎn)移指令分離開來,提前執(zhí)行這個(gè)運(yùn)算形指令.條件轉(zhuǎn)移的處理(2)減少轉(zhuǎn)移影響的措施

中斷不能預(yù)知,在流水線處理機(jī)中,同時(shí)有多條指令被執(zhí)行,每一條指令在流水線中都不斷地改變著現(xiàn)場.因此,當(dāng)有一個(gè)中斷源的中斷請求被響應(yīng)時(shí),選擇哪一條指令作為斷點(diǎn)指令?需要保存的現(xiàn)場信息是哪一些指令的現(xiàn)場?有兩種處理方法:不精確斷點(diǎn)方法.進(jìn)入流水線的指令都執(zhí)行完,斷點(diǎn)是該指令序列中最后進(jìn)入流水線的那條指令.提出中斷請求的指令可能并不是最后那條指令.

這種方法保存現(xiàn)場和恢復(fù)現(xiàn)場的工作量較小;但是有兩個(gè)問題:一是程序執(zhí)行的結(jié)果可能出錯(cuò);二是程序員無法看到自己設(shè)置的斷點(diǎn)初的現(xiàn)場.精確斷點(diǎn)法.對于在流水線中同時(shí)執(zhí)行的多條指令,由哪一條指令的程序性錯(cuò)誤或故障發(fā)出的中斷請求,斷點(diǎn)就是這條指令.其前尚在流水線中已完全執(zhí)行或部分執(zhí)行的指令的執(zhí)行情況都作為現(xiàn)場保存起來.硬件代價(jià)高,控制復(fù)雜.2.中斷處理全局相關(guān)及處理3.4.3相關(guān)對流水線性能的影響

流水線處理對象之間的相關(guān)將導(dǎo)致流水線的性能下降.對此應(yīng)盡可能采取措施減少流水線性能下降的程度.下面通過幾個(gè)例子,說明用時(shí)空圖來表示流水處理過程和對流水線性能的影響.

例1:在一臺流水處理機(jī)上執(zhí)行下述的指令序列,每條指令的取指令和指令譯碼各需1個(gè)時(shí)鐘周期,MOVE、ADD和MUL的執(zhí)行分別需要2個(gè)、3個(gè)和4個(gè)時(shí)鐘周期,且都在第一個(gè)時(shí)鐘周期從通用寄存器中讀取操作數(shù),在最后一個(gè)時(shí)鐘周期把目的操作數(shù)寫到通用寄存器中.k:MOVER1,R0;R1←(R0)k+1:MULR0,R2,R1;R0←(R2)×(R1)k+2ADDR0,R2,R3;R0←(R2)+(R3)(1)就程序本身而言,哪些指令之間發(fā)生何種數(shù)據(jù)相關(guān)?(2)畫出按指令序列的順序流動的時(shí)空圖,共使用了多少個(gè)時(shí)鐘周期?解:(1)若3條指令順序流動,則指令k與指令k+1對寄存器R1發(fā)生操作數(shù)的“先寫后讀”相關(guān).若3條指令異步流動,則指令k+1與指令k對寄存器R1發(fā)生“先讀后寫”相關(guān),指令k+2與指令k+1對寄存器R0發(fā)生“寫-寫”相關(guān).(2)若3條指令順序流動,則流水線的時(shí)空圖如下:kkK+1K+1K+1K+1K+2K+2K+2kK+1K+2kK+1K+2執(zhí)行譯碼取指T()由圖可以看出,由于指令k與指令k+1之間的“先寫后讀”相關(guān),指令k+1多延遲了2個(gè)時(shí)鐘周期.3條指令順序流動共需要13個(gè)時(shí)鐘周期.例2:一條線性靜態(tài)多功能流水線由6個(gè)功能段組成,加法操作使用其中的1、2、3、6功能段,乘法操作使用其中的1、4、5、6功能段,每個(gè)功能段的執(zhí)行時(shí)間均為.流水線的輸出與輸入端之間有直接數(shù)據(jù)通路,且設(shè)置有足夠的緩沖寄存器.試用盡可能短的時(shí)

間計(jì)算,畫流水線時(shí)空圖,并計(jì)算流水線

的實(shí)際吞吐率、加速比和效率.解:為了減少流水線中發(fā)生先寫后讀相關(guān)的次數(shù),使流水線完成計(jì)算的時(shí)間盡可能短,采用下列算法計(jì)算F:

F=(a1×b1+a2×b2)+(a3×b3+a4×b4)+(a5×b5+a6×b6)

先計(jì)算括號內(nèi)的6次乘法,再做括號內(nèi)的3次加法,然后再做括號外的兩次加法.1234567891011123456123456789101178910111234567891011S6S5S4S3S2S1t由時(shí)空圖可得的實(shí)際吞吐率、加速比和效率分別為:3.5多發(fā)射處理機(jī)及其性能

常規(guī)的流水處理機(jī)是單發(fā)射處理機(jī),即處理機(jī)在一個(gè)時(shí)鐘周期只解釋一條指令,通常將一個(gè)時(shí)鐘周期平均發(fā)射指令的條數(shù)稱為處理機(jī)的指令級并行度(InstructionlevelParalleism,ILP).單發(fā)射處理機(jī)的指令級并行度ILP=1,實(shí)際上小于1.為了提高處理機(jī)的ILP值,從而提高處理機(jī)的性能,在單發(fā)射技術(shù)的基礎(chǔ)上進(jìn)一步開發(fā)指令流水線的并行性,出現(xiàn)了多發(fā)射技術(shù).多發(fā)射是指處理機(jī)在一個(gè)時(shí)鐘周期可發(fā)射多條指令,其指令級并行度ILP≥23.5多發(fā)射處理機(jī)及其性能

3.5.1超標(biāo)量處理機(jī)及其性能計(jì)算3.5.2超流水處理機(jī)及其性能計(jì)算3.5.3超標(biāo)量超流水處理機(jī)及其性能計(jì)算3.5.4超長指令字處理機(jī)的基本結(jié)構(gòu)與特征3.5.5多發(fā)射處理機(jī)的性能比較1.超標(biāo)量處理機(jī)(Superscalarprocessor)指令流水線的結(jié)構(gòu)2.超標(biāo)量處理機(jī)性能3.5.1超標(biāo)量處理機(jī)及其性能計(jì)算處理機(jī)一個(gè)時(shí)鐘周期只能發(fā)射一條指令,每個(gè)時(shí)鐘周期只取一條指令(IF),只對一條指令進(jìn)行譯碼(ID),只執(zhí)行一條指令(EX),只寫回一個(gè)運(yùn)算結(jié)果。這樣的處理機(jī)叫做單發(fā)射處理機(jī)。超標(biāo)量處理機(jī)指令流水線的結(jié)構(gòu)時(shí)空圖(1)單發(fā)射處理機(jī)單發(fā)射處理機(jī)單發(fā)射處理機(jī)的結(jié)構(gòu)

一套取指令部件和指令譯碼部件;而操作部件可以只設(shè)置一個(gè)多功能操作部件,也可以設(shè)置多個(gè)獨(dú)立的操作部件.指令級流水線結(jié)構(gòu):而在操作部件中,有的機(jī)器不一定采用流水線結(jié)構(gòu)。單發(fā)射處理機(jī)的設(shè)計(jì)目標(biāo)是每個(gè)時(shí)鐘周期平均執(zhí)行一條指令,即它的指令級并行度ILP的期望值為1,實(shí)際上就是有k段流水線的普通標(biāo)量處理機(jī).(2)超標(biāo)量處理機(jī)超標(biāo)量處理機(jī)一個(gè)時(shí)鐘周期同時(shí)發(fā)射多條指令,經(jīng)過一個(gè)周期再同時(shí)發(fā)射多條指令。這樣就需要有多套硬件來保障,假如一個(gè)周期發(fā)射三條指令就要有三套同樣的硬件來保障指令的發(fā)射。時(shí)空圖一個(gè)時(shí)鐘周期內(nèi)能夠同時(shí)發(fā)射多條指令,同時(shí)對多條指令進(jìn)行譯碼,執(zhí)行多條指令,寫回多個(gè)運(yùn)算結(jié)果。超標(biāo)量處理機(jī)指令流水線的結(jié)構(gòu)處理機(jī)的結(jié)構(gòu)超標(biāo)量處理機(jī)

多套取指令部件和指令譯碼部件;必須兩條或兩條以上能夠同時(shí)工作的指令流水線??刂七壿嫳容^復(fù)雜。超標(biāo)量處理機(jī)指令流水線的結(jié)構(gòu)超標(biāo)量處理機(jī)性能在理想情況下,N條沒有資源沖突、沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令在單流水線普通標(biāo)量處理機(jī)上的執(zhí)行時(shí)間為:其中,k是流水線的級數(shù),△t是一個(gè)時(shí)鐘周期的時(shí)間長度。如果把相同的N條指令在一臺每個(gè)時(shí)鐘周期發(fā)射m條指令的超標(biāo)量處理機(jī)上執(zhí)行,所需要的時(shí)間為:其中,第1項(xiàng)是第一批m條指令同時(shí)通過m條流水線所需要的時(shí)間,而第2項(xiàng)是執(zhí)行其余N-m條指令所需要的時(shí)間,這時(shí)每一個(gè)時(shí)鐘周期有m條指令分別通過m條指令流水線.因此,超標(biāo)量處理機(jī)相對于單流水線普通標(biāo)量處理機(jī)的加速比為:當(dāng)N→∞時(shí),超標(biāo)量處理機(jī)的加速比的最大值為:超流水處理機(jī)及其性能計(jì)算(超流水線處理機(jī)Superpipelineprocessor)在一般標(biāo)量流水線處理機(jī)中,通常把一條指令的執(zhí)行過程分解為“取指令”、“譯碼”、“執(zhí)行”和“寫回”四級流水線。如果把其中的每級流水線再細(xì)分,例如,可以再分解為兩級延遲時(shí)間更短的流水線,則一條指令的執(zhí)行過程就要經(jīng)過8級流水線。這樣,在一個(gè)基本時(shí)鐘周期內(nèi)就能夠“取指令”兩條,“譯碼”、“執(zhí)行”和“寫回”各兩條指令。超流水線處理機(jī)就是在一個(gè)基本時(shí)鐘周期內(nèi)分時(shí)發(fā)射多條指令的處理機(jī)。從時(shí)空圖上看,超標(biāo)量處理機(jī)采用的是空間并行性,而超流水線處理機(jī)采用的是時(shí)間并行性.超標(biāo)量處理機(jī)一個(gè)時(shí)鐘周期發(fā)射的指令的條數(shù)稱為并行度。一個(gè)并行度為n的超流水線處理機(jī)在一個(gè)時(shí)鐘周期內(nèi)可以發(fā)射n條指令,也就是每隔1/n個(gè)時(shí)鐘周期就發(fā)射一條指令。采用超流水線技術(shù)比采用超標(biāo)量技術(shù)節(jié)省了大量的硬件。因?yàn)槌瑯?biāo)量處理機(jī)一個(gè)時(shí)鐘周期同時(shí)發(fā)射多條指令,經(jīng)過一個(gè)周期再同時(shí)發(fā)射多條指令。這樣就需要有多套硬件來保障,假如一個(gè)周期發(fā)射三條指令就要有三套同樣的硬件來保障指令的發(fā)射。超流水線則不同,它采用的是時(shí)間并行,只需增加少量的硬件,通過各硬件的重疊工作來提高處理機(jī)的性能。超流水線處理機(jī)的指令執(zhí)行時(shí)空圖。(1)指令執(zhí)行時(shí)序超流水處理機(jī)及其性能計(jì)算超流水線處理機(jī)的指令執(zhí)行時(shí)空圖說明:這是原理上的指令執(zhí)行時(shí)空圖,實(shí)際上,功能段還要細(xì)分,分成多個(gè)流水級,每個(gè)流水級也都有名稱,如“譯碼”功能段可再細(xì)分為“譯碼”流水級、“取第一個(gè)操作數(shù)”流水級和“取第二個(gè)操作數(shù)”流水級.通常把指令流水線有8個(gè)或8個(gè)以上流水級的處理機(jī)稱為超流水線處理機(jī).(2)典型處理機(jī)結(jié)構(gòu)—R4000基本結(jié)構(gòu)片內(nèi)兩個(gè)64位Cache,指令Cache和數(shù)據(jù)Cache容量各8K字節(jié),一個(gè)時(shí)鐘周期可以從指令Cache中讀出兩條指令,從數(shù)據(jù)Cache中讀出或?qū)懭雰蓚€(gè)數(shù)據(jù)。整數(shù)部件為核心處理部件,它主要包括32個(gè)32位的通用寄存器,一個(gè)ALU,一個(gè)專用的乘法/除法部件。

基本結(jié)構(gòu)浮點(diǎn)部件.包括一個(gè)浮點(diǎn)通用寄存器堆和一個(gè)執(zhí)行部件。浮點(diǎn)通用寄存器堆由16個(gè)64位的通用寄存器組成,它也可以設(shè)置成32個(gè)32位的浮點(diǎn)寄存器。浮點(diǎn)執(zhí)行部件由浮點(diǎn)乘法部件、浮點(diǎn)除法部件和浮點(diǎn)加法/轉(zhuǎn)換/求平方根部件等三個(gè)獨(dú)立的部件組成,這三個(gè)浮點(diǎn)部件可以并行工作。浮點(diǎn)操作主要包括浮點(diǎn)加法、減法、乘法、除法、求平方根、定點(diǎn)與浮點(diǎn)格式的轉(zhuǎn)換、浮點(diǎn)格式之間的轉(zhuǎn)換、浮點(diǎn)數(shù)比較等15種。

流水線操作R4000的指令流水線有8級超流水線結(jié)構(gòu),取指令和訪問數(shù)據(jù)都要跨越兩個(gè)流水級;實(shí)際上,每個(gè)時(shí)鐘周期包含兩個(gè)流水級,處理器取第一條指令(IF)和取第二條指令(IS)兩個(gè)流水級都要訪問指令Cache,這兩個(gè)流水級為一個(gè)時(shí)鐘周期。在寄存器流水級(RF)的開始,指令已經(jīng)讀到了指令寄存器中,因此可以進(jìn)行譯碼,并且訪問寄存器堆。另外,由于指令Cache是采用直接映象方式的,因此,從指令Cache中讀出的區(qū)號要與訪問存儲器的物理地址進(jìn)行比較;如果相等,表示指令Cache命中。對于非存儲器操作指令,如果指令Cache命中,指令可以在指令執(zhí)行(EX)流水級執(zhí)行,指令的執(zhí)行結(jié)果可以在EX流水級的末尾得到。工作時(shí)序在正常情況下,一條指令的執(zhí)行過程經(jīng)歷8個(gè)流水線周期(流水級)。由于一個(gè)主時(shí)鐘周期包含有兩個(gè)流水線周期,因此,也可以認(rèn)為每4個(gè)主時(shí)鐘周期執(zhí)行完一條指令。

工作時(shí)序從輸入端看,每1個(gè)流水線周期啟動1條指令;同樣,從輸出端看,每1個(gè)流水線周期執(zhí)行完成1條指令。當(dāng)流水線被充滿時(shí),有8條指令在同時(shí)執(zhí)行。如果把兩個(gè)流水線周期看作一個(gè)時(shí)鐘周期,則在一個(gè)時(shí)鐘周期內(nèi),處理機(jī)分時(shí)發(fā)射了兩條指令,并在一個(gè)時(shí)鐘周期內(nèi),執(zhí)行完成了兩條指令。因此,是1種典型的超流水線處理機(jī)。輸入端輸出端(3)超流水線處理機(jī)性能

在一臺指令級并行度為(1,n)的超流水線處理機(jī)上,執(zhí)行N條沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令所需要的時(shí)間為:其中,k是指令流水線的功能段數(shù)或執(zhí)行一條指令所需要的時(shí)鐘周期數(shù),而不是流水線級數(shù)。在一般超流水線處理機(jī)中,指令流水線的段數(shù)為kn。式中的頭一項(xiàng)是第一條指令通過指令流水線執(zhí)行完成所需要的時(shí)間,而第二項(xiàng)是執(zhí)行其余N一1條指令所需要的時(shí)間,這時(shí),每一個(gè)時(shí)鐘周期有n條指令要在指令流水線中執(zhí)行完成,也就是每一個(gè)流水線周期執(zhí)行完成一條指令。超流水線處理機(jī)相對于單流水線普通標(biāo)量處理機(jī)的加速比為:當(dāng)N→∞時(shí),理想情況下,超流水線機(jī)的加速比的最大值為:超標(biāo)量超流水線處理機(jī)及其性能計(jì)算

(superpipeliningsuperscalarprocessor)

為了進(jìn)一步提高處理機(jī)的指令級并行度,可以把超標(biāo)量技術(shù)與超流水線技術(shù)結(jié)合在一起,這就是超標(biāo)量超流水線處理機(jī)。下面介紹超標(biāo)量超流水線處理機(jī)的工作原理、處理機(jī)結(jié)構(gòu)和主要性能。

(1)指令執(zhí)行時(shí)序(2)典型處理機(jī)結(jié)構(gòu)(3)超標(biāo)量超流水線處理機(jī)性能指令執(zhí)行時(shí)序它在一個(gè)時(shí)鐘周期內(nèi)要發(fā)射指令n次,每次發(fā)射指令m條,因此,超標(biāo)量超流水線處理機(jī)每個(gè)時(shí)鐘周期總共要發(fā)射指令m×n條。圖中,每一個(gè)時(shí)鐘周期分為3個(gè)流水線周期,每一個(gè)流水線周期發(fā)射3條指令。在理想情況下,每個(gè)時(shí)鐘周期能夠發(fā)射并執(zhí)行完成9條指令。即超標(biāo)量超流水線處理機(jī)執(zhí)行程序的速度應(yīng)該是超標(biāo)量處理機(jī)和超流水線處理機(jī)執(zhí)行程序速度的乘積。典型處理機(jī)結(jié)構(gòu)DEC公司的Alpha處理機(jī)采用了超標(biāo)量超流水結(jié)構(gòu).它主要由四個(gè)部件和兩個(gè)Cache組成。四個(gè)部件是整數(shù)執(zhí)行部件EBOX、浮點(diǎn)執(zhí)行部件FBOX、地址部件ABOX和中央控制部件IBOX。四個(gè)部件地址部件ABOX包括地址發(fā)生器、存儲管理部件、讀數(shù)緩沖棧和寫數(shù)緩沖棧。中央控制部件IBOX負(fù)責(zé)取指令、指令譯碼、指令發(fā)射、流水線控制、程序計(jì)數(shù)器PC的計(jì)算等。IBOX可以同時(shí)從指令Cache中讀入兩條指令,同時(shí)對讀入的兩條指令進(jìn)行譯碼,并對這兩條指令作資源沖突檢測,進(jìn)行數(shù)據(jù)相關(guān)性和控制相關(guān)性分析。如果資源和相關(guān)性允許,IBOX就把兩條指令同時(shí)發(fā)射給EBOX、ABOX和FBOX三個(gè)指令執(zhí)行部件中的兩個(gè)。

四個(gè)部件整數(shù)執(zhí)行部件EBOX內(nèi)有一個(gè)由32個(gè)64位寄存器組成的定點(diǎn)寄存器堆,這個(gè)寄存器堆有四個(gè)讀出端口和兩個(gè)寫入端口,它可以同時(shí)把兩個(gè)源操作數(shù)或結(jié)果送到整數(shù)操作部件及地址部件ABOX中。操作部件的數(shù)據(jù)寬度為64位,包括加法器、桶式移位器、邏輯部件和整數(shù)乘法器等。在EBOX內(nèi)還有多條專用數(shù)據(jù)通路,可以把運(yùn)算結(jié)果直接送到執(zhí)行部件,而不必先寫到寄存器中。四個(gè)部件浮點(diǎn)執(zhí)行部件FBOX采用流水線結(jié)構(gòu),它有兩套浮點(diǎn)操作指令,一套是針對DEC浮點(diǎn)數(shù)格式的,而另一套是針對IEEE754浮點(diǎn)數(shù)格式的,共有36條浮點(diǎn)操作指令。FBOX內(nèi)有一個(gè)32X64位的浮點(diǎn)寄存器堆,這個(gè)寄存器堆有三個(gè)輸出端口和兩個(gè)輸入端口。另外,還有一個(gè)用戶可以訪問的控制寄存器FPCR。FPCR包含有舍入控制、陷阱允許和異常事故標(biāo)志信息等。除了除法指令之外,F(xiàn)BOX每個(gè)流水線周期可以接受一條指令,執(zhí)行指令的延遲時(shí)間是6個(gè)流水線周期。在FBOX內(nèi)也設(shè)置有專用數(shù)據(jù)通路,當(dāng)有數(shù)據(jù)相關(guān)時(shí),可以通過專用數(shù)據(jù)通路把運(yùn)算結(jié)果直接寫到執(zhí)行部件中。

2個(gè)Cache芯片內(nèi)有兩個(gè)Cache,一個(gè)指令Cache,一個(gè)數(shù)據(jù)Cache。容量均為8KB,由于都采用直接映象方式,因此,每個(gè)Cache中都包含有一個(gè)區(qū)號字段。另外,由于采用動態(tài)轉(zhuǎn)移預(yù)測技術(shù),在指令Cache中,每個(gè)數(shù)據(jù)塊(32B)包含有一個(gè)8位的轉(zhuǎn)移歷史字段。它與中央控制部件IBOX中的轉(zhuǎn)移預(yù)測邏輯一起實(shí)現(xiàn)條件轉(zhuǎn)移的動態(tài)預(yù)測。指令Cache的每個(gè)存儲單元中設(shè)置有一個(gè)“轉(zhuǎn)移歷史位”,在執(zhí)行轉(zhuǎn)移指令時(shí),把轉(zhuǎn)移發(fā)生或不發(fā)生的情況記錄在這個(gè)“轉(zhuǎn)移歷史位”中,當(dāng)下次再執(zhí)行到這條指令時(shí),根據(jù)“轉(zhuǎn)移歷史位”中記錄的信息預(yù)測是否發(fā)生轉(zhuǎn)移。

21064處理機(jī)共有三條流水線,每一條指令流水線實(shí)際上是把一條指令的執(zhí)行過程分成了兩部分。一部分是4個(gè)流水級的靜態(tài)流水線,在中央控制部件IBOX中執(zhí)行,另一部分是動態(tài)流水線。對于整數(shù)操作部件EBOX和地址部件ABOX動態(tài)流水線為3個(gè)流水級,對于浮點(diǎn)操作部件FBOX動態(tài)流水線為6個(gè)流水級。由于資源沖突、數(shù)據(jù)相關(guān)或控制相關(guān)等原因,指令在靜態(tài)流水線中可以停留若干個(gè)流水線周期。當(dāng)指令進(jìn)入動態(tài)流水線之后必須一直往前流動,不允許停留。因此,每一條指令必須在靜態(tài)流水線中,即在中央控制部件IBOX中完成全部的資源沖突檢測,數(shù)據(jù)相關(guān)性和控制相關(guān)性分析,在指令從靜態(tài)流水線發(fā)射到動態(tài)流水線時(shí),指令整個(gè)執(zhí)行過程所要求的資源、數(shù)據(jù)相關(guān)性和控制相關(guān)性都應(yīng)該是沒有問題的。

指令流水線從圖可以看到,Alpha21064處理機(jī)的三條指令流水線的平均級數(shù)為8級,而且,每個(gè)時(shí)鐘周期能夠發(fā)射兩條指令。Alpha21064處理機(jī)應(yīng)該是超標(biāo)量超流水線處理機(jī)。超標(biāo)量超流水線處理機(jī)性能在一臺指令級并行度為(m,n)的超標(biāo)量超流水線處理機(jī)上,連續(xù)執(zhí)行N條沒有資源沖突、沒有數(shù)據(jù)相關(guān)和控制相關(guān)的指令所需要的時(shí)間為:其中,k是指令流水線的時(shí)鐘周期數(shù),而不是流水線級數(shù)。例如,在Alpha21064超標(biāo)量超流水線處理機(jī)中,k=4?!鱰是一個(gè)時(shí)鐘周期的時(shí)間長度。式中的第一項(xiàng)是開始m條指令通過指令流水線所需要的時(shí)間,第二項(xiàng)是執(zhí)行其余N—m條指令所需要的時(shí)間,這時(shí),每一個(gè)時(shí)鐘周期平均執(zhí)行完成m×n條指令,也就是每一個(gè)流水線周期平均執(zhí)行完成m條指令。超標(biāo)量超流水線處理機(jī)相對于單流水線標(biāo)量處理機(jī)的加速比為:當(dāng)N→∞時(shí),(VeryLongInstructionWord

3.5.4超長指令字處理機(jī)的基本結(jié)構(gòu)與特征超長指令字(VLIW)處理機(jī)的超長指令字的機(jī)器指令長度達(dá)數(shù)百位.VLIW處理方式是把一個(gè)足夠長的指令分割成多個(gè)字段,每個(gè)字段都可以獨(dú)立地控制各自的運(yùn)算器、寄存器、互連網(wǎng)絡(luò)(矩陣開關(guān))和存儲器等.例如,有代表性的VLIW處理機(jī)QA-2有256位的超長指令,一條超長指令可以同時(shí)譯出4個(gè)不同的的算術(shù)邏輯運(yùn)算控制、4個(gè)不同的主存地址的訪問控制.1.超長指令字處理機(jī)的基本結(jié)構(gòu)2.超長指令字處理方式的主要特征超長指令字處理機(jī)

1.超長指令字處理機(jī)的基本結(jié)構(gòu)012…n-101…m-1指令運(yùn)算器控制字段存儲器控制字段其他控制字段運(yùn)算器0運(yùn)算器1運(yùn)算器2運(yùn)算器n-1存儲模塊寄存器堆/結(jié)合網(wǎng)可以看出:一個(gè)超長指令容納有可并行執(zhí)行的n個(gè)運(yùn)算控制指令字段、若干個(gè)訪問存儲器控制指令字段和其他控制字段.n個(gè)運(yùn)算控制指令字段控制相應(yīng)指定的n個(gè)運(yùn)算部件(FU).各個(gè)運(yùn)算部件所需要的操作數(shù)或產(chǎn)生的結(jié)果可以來自或存入寄存器,也可以由存儲器指令段對指定存儲模塊的存儲單元讀出或?qū)懭?超長指令字處理機(jī)

1.超長指令字處理機(jī)的基本結(jié)構(gòu)012…n-101…m-1指令運(yùn)算器控制字段存儲器控制字段其他控制字段運(yùn)算器0運(yùn)算器1運(yùn)算器2運(yùn)算器n-1存儲模塊寄存器堆/結(jié)合網(wǎng)可以看出:結(jié)合網(wǎng)(開關(guān)矩陣)在其他控制字段的控制下,提供指定的存儲模塊與運(yùn)算部件之間的數(shù)據(jù)鏈接,結(jié)合網(wǎng)也可以為運(yùn)算部件之間提供提供直接的數(shù)據(jù)鏈路,把一個(gè)運(yùn)算部件的輸出設(shè)置成其他運(yùn)算部件的輸入.由于VLIW處理機(jī)可以在一個(gè)周期發(fā)射多條指令,故也是多發(fā)射處理機(jī).指令0指令1指令2指令3超長指令字處理機(jī)

VLIW與超標(biāo)量處理方式的比較LVIW處理機(jī)可在一個(gè)時(shí)鐘周期執(zhí)行一條超長指令,即它在一個(gè)時(shí)鐘周期可發(fā)射n條短指令,由n個(gè)運(yùn)算部件執(zhí)行.從在一個(gè)周期同時(shí)發(fā)射多條指令的特點(diǎn)來看,它與超標(biāo)量處理方式有些相似,但它們的基本工作原理是有區(qū)別的.LVIW機(jī)器指令指令0指令1指令2指令3FU0FU1FU2FU3PU0PU1PU2PU3LVIW方式FU:功能模塊超標(biāo)量方式PU:處理模塊超長指令字處理機(jī)

VLIW與超標(biāo)量處理方式的比較LVIW方式與超標(biāo)量方式

的區(qū)別(1)LVIW方式是由編譯程序?qū)υ绦蛑械闹噶钆袛嗖⑿羞\(yùn)算的可能性,編譯時(shí)從原程序的相鄰指令抽出可并行的若干指令組成一條超長指令.LVIW處理機(jī)中的FU的個(gè)數(shù)是固定的,要想提高LVIW處理機(jī)同時(shí)發(fā)射指令的條數(shù),需要重新設(shè)計(jì)新的LVIW指令格式,并重新設(shè)計(jì)編譯.

超標(biāo)量處理機(jī)依靠多個(gè)指令處理模塊PU來支持多指令發(fā)射,一個(gè)PU可以是一個(gè)指令流水線,每個(gè)PU各自處理一條程序指令.程序運(yùn)行時(shí),指令的可并行性由PU硬件來檢測,無需由編譯來保證.因此,增加PU的個(gè)數(shù)就可以提高超標(biāo)量處理機(jī)的同時(shí)發(fā)射指令的條數(shù).(2)LVIW處理機(jī)中的各個(gè)PU一般分別是整數(shù)邏輯運(yùn)算部件、浮點(diǎn)小數(shù)運(yùn)算部件、訪存操作部件及順序控制部件等專用單功能部件,各PU是非同構(gòu)的.若LVIW處理機(jī)中只有一個(gè)浮點(diǎn)小數(shù)運(yùn)算部件,而程序中有2條相鄰可并行浮點(diǎn)運(yùn)算指令,那么,編譯只能將它們組裝到2條超長指令中.另外,若程序中連續(xù)若干條指令中都沒有浮點(diǎn)運(yùn)算指令,此時(shí),超長指令中相應(yīng)的浮點(diǎn)小數(shù)運(yùn)算指令字段只能空缺.可以看出,雖然LVIW處理機(jī)的專用異構(gòu)的PU會使硬件結(jié)構(gòu)簡單,但使得超長指令的指令字段的利用率不高.

超標(biāo)量處理機(jī)的各FU必須是能實(shí)現(xiàn)所有程序指令功能的通用部件,一定是同構(gòu)的,只要指令是可并行的,就可同時(shí)發(fā)射m條指令.超長指令字處理機(jī)

VLIW與超標(biāo)量處理方式的比較LVIW方式與超標(biāo)量方式

的區(qū)別(3)LVIW方式是由編譯抽出程序中可并行的操作嵌入LVIW指令中,編譯對指令并行的調(diào)度是靜態(tài)調(diào)度.因此,LVIW方式的處理性能在很大程度上取決于優(yōu)化編譯的能力.另外,由于是靜態(tài)調(diào)度,指令中的訪存等操作沒有運(yùn)行就不可能知道程序的物理地址流,也就不能完全解決數(shù)據(jù)相關(guān)問題.因此,經(jīng)編譯生成的LVIW指令中還有不可并行執(zhí)行的操作,這就是造成LVIW指令字段實(shí)際利用率不高的重要原因.

超標(biāo)量處理方式雖然也需要優(yōu)化編譯的支持,但是,這種支持是輔助性的.程序指令的并行調(diào)度主要是由超標(biāo)量處理機(jī)的硬件來檢測和動態(tài)調(diào)度的,即是對程序指令序列邊執(zhí)行邊進(jìn)行指令并行調(diào)度.超標(biāo)量處理機(jī)只發(fā)射可執(zhí)行的并行操作.超長指令字處理機(jī)

VLIW與超標(biāo)量處理方式的比較LVIW方式與超標(biāo)量方式

的區(qū)別(4)LVIW指令格式固定,因此LVIW指令的譯碼比超標(biāo)量譯碼容易.(5)超標(biāo)量處理機(jī)的兼容性優(yōu)于LVIW處理機(jī).

超長指令字處理機(jī)

VLIW與超標(biāo)量處理方式的比較LVIW方式與超標(biāo)量方式

的區(qū)別(1)依靠編譯組裝超長指令VLIW處理方式是在編譯時(shí)判定程序的并行運(yùn)算可能性,編譯程序從原程序中抽出可能的并行運(yùn)算組成一條超長指令,可以得到接近LVIW處理機(jī)中并行運(yùn)算器數(shù)n的并行度.但是,在程序并行度較低時(shí),LVIW指令中的運(yùn)算器控制指令字段就有空閑,降低了指令字段的率.LVIW處理方式的并行運(yùn)算的程度依賴于編譯的并行化能力及應(yīng)用程序本身的并行性程度.(2)硬件結(jié)構(gòu)簡單因?yàn)槌绦蛑噶畹牟⑿姓{(diào)度是由編譯完成的,所以在運(yùn)行時(shí)不需要采用硬件對運(yùn)行程序的指令序列進(jìn)行并行性檢測和動態(tài)調(diào)度,硬件結(jié)構(gòu)也比較簡單.2.超長指令字處理方式的主要特征超長指令字處理機(jī)

(3)適合細(xì)粒度的并行處理VLIW處理方式用指令字段直接控制多個(gè)運(yùn)算部件在指令這一級進(jìn)行細(xì)粒度并行處理,而且,在LVIW處理機(jī)中,有多條總線連著運(yùn)算器,用指令字段直接控制著這些總線的控制器,為運(yùn)算器提供需要的數(shù)據(jù)鏈路,所以,通信開銷很小.故LVIW處理方式適合于面向低級運(yùn)算粒度并行處理.(4)指令系統(tǒng)的非兼容性

LVIW處理方式的超長指令格式是根據(jù)LVIW處理機(jī)中并行運(yùn)算部件數(shù)來設(shè)計(jì)的,LVIW處理機(jī)的硬件組成確定后,LVIW指令格式也就固定了,這可使LVIW處理機(jī)的指令系統(tǒng)和指令譯碼簡單,但這也使得LVIW的指令系統(tǒng)同其他類型的處理機(jī)指令系統(tǒng)不兼容,即使是用LVIW處理方式開發(fā)不同并行性的LVIW處理機(jī)時(shí)也需要設(shè)計(jì)不同的指令系統(tǒng).由于LVIW處理機(jī)缺乏對傳統(tǒng)機(jī)硬件和軟件的兼容性,盡管LVIW處理方式的并行思想在理論上是合理的,但至今無法進(jìn)入計(jì)算機(jī)的主流.2.超長指令字處理方式的主要特征超長指令字處理機(jī)

3.5.5多發(fā)射處理機(jī)的性能比較4種不同類型處理機(jī)的性能比較機(jī)器類型單發(fā)射處理機(jī)超標(biāo)量處理機(jī)超流水處理機(jī)超標(biāo)量超流水處理機(jī)流水線周期同時(shí)發(fā)射指令條數(shù)指令發(fā)射等待時(shí)間指令級并行度ILP1個(gè)時(shí)鐘周期1條1個(gè)時(shí)鐘周期11個(gè)時(shí)鐘周期m條1個(gè)時(shí)鐘周期m1/n時(shí)鐘周期1條1/n時(shí)鐘周期n1/n時(shí)鐘周期m條1/n時(shí)鐘周期m×n結(jié)論:

第一,超標(biāo)量處理機(jī)的相對性能最高,其次是超標(biāo)量超流水線處理機(jī),超流水線處理機(jī)的相對性能最低,主要原因是:

1.超標(biāo)量處理機(jī)在每個(gè)時(shí)鐘周期的一開始就同時(shí)發(fā)射多條指令,而超流水線處理機(jī)則要把一個(gè)時(shí)鐘周期平均分成多個(gè)流水線周期,每個(gè)流水線周期發(fā)射一條指令。因此,超流水線處理機(jī)的啟動延遲比超標(biāo)量處理機(jī)大。

2.條件轉(zhuǎn)移造成的損失,超流水線處理機(jī)要比超標(biāo)量處理機(jī)大。

3.在指令執(zhí)行過程中的每一個(gè)功能段,超標(biāo)量處理機(jī)都重復(fù)設(shè)置有多個(gè)相同的指令執(zhí)行部件,而超流水線處理機(jī)只是把同一個(gè)指令執(zhí)行部件分解為多個(gè)流水級。因此,超標(biāo)量處理機(jī)指令執(zhí)行部件的沖突要比超流水線處理機(jī)小。結(jié)論:第二,在實(shí)際設(shè)計(jì)超標(biāo)量、超流水線、超標(biāo)量超流水線處理機(jī)的指令級并行度時(shí)要適當(dāng),否則,有可能造成花費(fèi)了大量的硬件,但實(shí)際上處理機(jī)所能達(dá)到的指令級并行度并不高。目前,一般認(rèn)為m和n都不要超過4。第三,一個(gè)特定程序由于受到本身的數(shù)據(jù)相關(guān)和控制相關(guān)的限制,它的指令級并行度的最大值是確定的。這個(gè)最大值主要由程序自身的語義來決定,與這個(gè)程序運(yùn)行在那一種處理機(jī)上無關(guān)。一個(gè)程序能夠達(dá)到的實(shí)際指令級并行度還與所采用的調(diào)度算法有關(guān)。目前,國際上已經(jīng)提出了多種開發(fā)指令級并行性的優(yōu)化調(diào)度算法.對于沒有條件轉(zhuǎn)移操作,沒有輸入輸出,沒有程序調(diào)用和程序中斷,單入口單出口的基本塊程序,實(shí)現(xiàn)最優(yōu)調(diào)度并不十分困難。但是,對于一般程序,要充分開發(fā)程序中的指令級并行性,實(shí)現(xiàn)最優(yōu)調(diào)度非常復(fù)雜,已經(jīng)證明,這是一個(gè)NP完全問題。另外,實(shí)現(xiàn)最優(yōu)調(diào)度所需要的代價(jià)很大,包括硬件代價(jià)和軟件代價(jià),通常需要編譯器和硬件的結(jié)合才能獲得比較好的調(diào)度效果。目前,開發(fā)程序指令級并行性的許多優(yōu)化調(diào)度算法及編譯技術(shù)還在進(jìn)一步研究中。結(jié)論:例3.103.6向量流水處理機(jī)及其性能

什么是向量處理?向量運(yùn)算在數(shù)值運(yùn)算中十分常見。(矩陣運(yùn)算,F(xiàn)FT,圖像圖形,模擬仿真等等)下面通過一個(gè)簡單的例子來說明向量處理與標(biāo)量處理的差別。先考察一個(gè)用FORTRAN語言編寫的程序:

DO100I=1,NA(I)=B(I)+C(I)100B(I)=2*A(I+1)一般機(jī)器可用下列指令序列來實(shí)現(xiàn):INITIALIZEI=110READB(I)READC(I)ADDB(I)+C(I)STOREA(I)←B(I)+C(I)READA(I+1)MULTIPLY2*A(I+1)STOREB(I)←2*A(I+1)INCREMENTI←I+1;IFI≤NGOTO10STOP什么是向量處理?標(biāo)量標(biāo)量指令序列標(biāo)量處理一條標(biāo)量指令只能處理一個(gè)或一對操作數(shù)向量程序上面的程序如果在向量處理機(jī)上進(jìn)行編譯,則只需幾條指令向量指令:

A(1:N)=B(1:N)+C(1:N)TEMP(1:N)=A(2:N+1)B(1:N)=2*TEMP(1:N)

向量:相互獨(dú)立的數(shù)

向量處理:利用向量指令對相互獨(dú)立的數(shù)的處理

向量指令:一條向量指令可以處理N個(gè)或N對操作數(shù)顯然向量指令的效率比標(biāo)量指令的效率在此類運(yùn)算中要高得多.向量流水處理機(jī)及其性能3.6.1向量處理方式3.6.2向量流水處理機(jī)的結(jié)構(gòu)3.6.3向量流水處理機(jī)的性能向量處理方式按照數(shù)組中各計(jì)算相繼的次序,可以把向量處理方法分為三種:

1.橫向處理方式;

2.縱向處理方式;

3.縱橫處理方式.例:有四個(gè)長度為N的向量A、B、C、D。要完成下面的運(yùn)算:

D=A*(B+C)D=(d1,d2,…,dn)A=(a1,a2,…,an)B=(b1,b2,…,bn)C=(c1,c2,…,cn)問題:采用何種方式,才能最充分發(fā)揮流水線的效能計(jì)算是按行的方式從左向右橫向地進(jìn)行 先算d1=a1*(b1+c1)

再算d2=a2*(b2+c2)

…最后算dn=an*(bn+cn)計(jì)算過程:

bi+cikiki*aidi顯然,流水線不能連續(xù)流動,WR相關(guān)頻繁,適于標(biāo)量處理機(jī),不適于并行處理。——標(biāo)量處理機(jī)處理方式.1.橫向處理方式向量處理方式垂直縱向方式,流水線連續(xù)流動,無相關(guān),無切換,只是對中間結(jié)果的存放需要更多的存儲單元或寄存器組適于向量處理機(jī),向量長度N不受限制。缺點(diǎn):對存儲器流量要求高(相同的運(yùn)算都用一條向量指令)按列方式從上到下縱向進(jìn)行

b1+c1k1b2+c2k2…bn+cnkn

k1*a1d1k2*a2d2…kn*andn2.縱向處理方式向量處理方式3.縱橫處理方式縱向處理和橫向處理相結(jié)合(分組加工)當(dāng)前最常用1組:b1~n+c1~n

u1~n

u1~n*a1~n

d1~n

2組:

bn+1~2n+cn+1~2n

un+1~2n

un+1~2n*an+1~2n

dn+1~2n

K+1組:

bkn+1~N+ckn+1~N

ukn+1~N

ukn+1~N*akn+1~N

dkn+1~N

N太長,超出了向量寄存器組縱寄存器的個(gè)數(shù),可分組計(jì)算(把長度為N的向量分成長度為n的K個(gè)組。)N=k*n+r共k+1組組內(nèi)縱向,組間橫向優(yōu)點(diǎn):減少了訪存次數(shù),降低了對存儲器信息流量的要求,減少了因訪存發(fā)生的沖突,提高了處理速度;對向量長度無限制。缺點(diǎn):橫向處理慢向量處理方式向量處理機(jī)的結(jié)構(gòu)

為實(shí)現(xiàn)向量化處理,向量處理機(jī)的操作部件一般都采用流水線結(jié)構(gòu)。下面是典型的向量加法器結(jié)構(gòu):多端口存儲器系統(tǒng)流水結(jié)構(gòu)加法器ABC=A+B實(shí)現(xiàn)時(shí),存儲器系統(tǒng)必須能為運(yùn)算器提供連續(xù)的數(shù)據(jù)流,并接收來自運(yùn)算器的運(yùn)算結(jié)果.采取的所有技術(shù)都是為此目的。向量處理機(jī)要解決兩個(gè)問題:設(shè)法維持連續(xù)的數(shù)據(jù)流(提供連續(xù)的A和B)。設(shè)法降低對存儲器的壓力。

一種能實(shí)現(xiàn)2個(gè)向量相加的流水結(jié)構(gòu)的加法器向量處理機(jī)的結(jié)構(gòu)向量處理機(jī)一般采取以下技術(shù)措施:提高存儲器的帶寬。例STAR-100,32體。增設(shè)高速中間存儲器——向量寄存器。例(銀河)YH-1,有8組向量寄存器,每組128個(gè)單元(每個(gè)單元64位)。按向量操作對象及結(jié)果主要存放在寄存器中還是存放在存儲器中,可分為兩大類:

1.存儲器——存儲器結(jié)構(gòu)2.寄存器——寄存器結(jié)構(gòu)向量處理機(jī)的結(jié)構(gòu)1.存儲器-存儲器結(jié)構(gòu)主存儲器由8個(gè)模塊構(gòu)成,它的帶寬是單個(gè)模塊的8倍。流水線運(yùn)算器與主存儲器系統(tǒng)之間有三條相互獨(dú)立的數(shù)據(jù)通路,各數(shù)據(jù)通路可以同時(shí)工作,但是一個(gè)存儲器模塊在某一時(shí)刻只能為一個(gè)通路服務(wù)。(1)基本結(jié)構(gòu)

設(shè)向量A、B、C各由八個(gè)分量組成,計(jì)算C=A+B最理想的方法是:A[0],A[1],…,A[7]分別存放在模塊0,模塊1,…,模塊7;B[0]存放在模塊2,B[1]存放在模塊3,…,B[5]存放在模塊7,B[6]存放在模塊0,B[7]存放在模塊1;C[0]存放在模塊4,C[3]存放在模塊7,C[4]存放在模塊0,…,C[7]存放在模塊3。這樣存放便于計(jì)算地址.也防止發(fā)生沖突。

1.存儲器-存儲器結(jié)構(gòu)(2)向量運(yùn)算的實(shí)現(xiàn)向量在存儲系統(tǒng)中的存放1.存儲器-存儲器結(jié)構(gòu)(2)向量運(yùn)算的實(shí)現(xiàn)執(zhí)行時(shí)序橫軸代表時(shí)間,縱軸代表存儲器模塊和流水線部件的工作情況。假設(shè)運(yùn)算流水線分為四段,輸入數(shù)據(jù)進(jìn)入流水線四個(gè)時(shí)鐘周期之后產(chǎn)生相應(yīng)的輸出值。數(shù)據(jù)充滿之后,流水線就一直處于忙狀態(tài)。圖中相應(yīng)格內(nèi)用數(shù)字標(biāo)出的段表示正在工作,符號“RA0”表示正在從該模塊讀出向量A的下標(biāo)為0的元素。

使主存有較高帶寬的另一種方法是由一級或多級中間存儲器形成一個(gè)層次結(jié)構(gòu)的存儲器系統(tǒng),其中帶寬最高的這一級存儲器安排在距處理器最近的位置。當(dāng)處理器需要向量時(shí),把向量從主存送到速度最快的這一級存儲器。中間幾級存儲器起著把數(shù)據(jù)送往最快速存儲器時(shí)或使用后送回主存儲器時(shí)中間存儲的作用,即寄存器一寄存器結(jié)構(gòu)。美國Cray公司1976

推出的產(chǎn)品Cray-l系統(tǒng),是一臺運(yùn)算速度達(dá)億次/秒以上的巨型機(jī)。速度高的一個(gè)原因是它采用了層次結(jié)構(gòu)的存儲器系統(tǒng)。

它使計(jì)算機(jī)模擬成為重要的科學(xué)研究方法之一.

現(xiàn)在的向量機(jī)大多采用寄存器-寄存器工作方式.

Cray-2,Crayx-Mp,CrayY-MP,C-90(4個(gè)機(jī)群,64Gflops),NECSX-X,富士通的vP-2000,VPP500(335Gflops)中國的YH(銀河機(jī))向量處理機(jī)的結(jié)構(gòu)2.寄存器-寄存器結(jié)構(gòu)Cray-1由中央處理機(jī)、診斷維護(hù)控制處理機(jī)、大容量磁盤存儲子系統(tǒng)、前端處理機(jī)組成的功能分布異構(gòu)型多處理機(jī)。其簡化框圖如下圖.向量處理機(jī)的結(jié)構(gòu)2.寄存器-寄存器結(jié)構(gòu)以Cray-l系統(tǒng)為例Cray-l系統(tǒng)結(jié)構(gòu)在主存和運(yùn)算器之間有一級或兩級的中間存儲器對于向量運(yùn)算:中間存儲器由V寄存器組成,即向量寄存器,由8個(gè)具有64個(gè)分量的寄存器組成,每個(gè)分量為一個(gè)64位寄存器。向量指令能對向量寄存器的分量進(jìn)行連續(xù)的重復(fù)處理。執(zhí)行向量指令時(shí),流水結(jié)構(gòu)運(yùn)算器在一個(gè)時(shí)鐘周期內(nèi)從兩個(gè)V寄存器得到一對操作數(shù),完成某種操作后用一個(gè)時(shí)鐘周期的時(shí)間把結(jié)果送入另一個(gè)V寄存器。主存儲器與V寄存器之間的數(shù)據(jù)傳送以成組傳送的方式進(jìn)行。向量流水線是從向量寄存器而不是從主存儲器取數(shù)據(jù)。同樣,從流水線輸出的結(jié)果向量也是送回向量寄存器。Cray-l系統(tǒng)結(jié)構(gòu)對于標(biāo)量運(yùn)算:有兩級中間存儲器。速度快的一級是8個(gè)64位的S寄存器,它是標(biāo)量寄存器。直接與標(biāo)量運(yùn)算流水線相連,為標(biāo)量運(yùn)算和邏輯運(yùn)算提供源寄存器和結(jié)果寄存器。另一級速度稍慢,但仍具很高速的中間存儲器T寄存器。它由64個(gè)標(biāo)量寄存器組成,每個(gè)寄存器字長64位。主存儲器與T寄存器之間以成組傳送的方式進(jìn)行數(shù)據(jù)傳送。由T寄存器組成的標(biāo)量存儲器的作用與Cache存儲器相同,都是為了保存那些在高速的標(biāo)量存儲器中裝不下的數(shù)據(jù)。同樣,新的數(shù)據(jù)也可以在被運(yùn)算器使用之前就預(yù)取到中間標(biāo)量存儲器中。Cr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論