第4章-流水技術(shù)與向量處理_第1頁
第4章-流水技術(shù)與向量處理_第2頁
第4章-流水技術(shù)與向量處理_第3頁
第4章-流水技術(shù)與向量處理_第4頁
第4章-流水技術(shù)與向量處理_第5頁
已閱讀5頁,還剩183頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2023/9/21第4章流水技術(shù)與向量處理

4.1標(biāo)量流水工作原理4.2標(biāo)量流水中的障礙及控制4.3流水線的調(diào)度技術(shù)4.4先進(jìn)的流水技術(shù)4.5Pentium微處理器中的流水技術(shù)4.6向量流水技術(shù)2023/9/22本章學(xué)習(xí)要求掌握標(biāo)量流水的性能分析及障礙的處理方法掌握非線性流水調(diào)度技術(shù)掌握向量流水機(jī)的結(jié)構(gòu)特征、向量指令并行性分析了解標(biāo)量流水、超標(biāo)量流水、超流水及超長(zhǎng)指令字計(jì)算機(jī)的基本工作原理2023/9/23提高指令執(zhí)行速度的主要途徑:

(1)提高處理機(jī)的工作主頻

(2)采用更好的算法和設(shè)計(jì)更好的功能部件

(3)采用指令級(jí)并行技術(shù)三種指令級(jí)并行處理機(jī):

(1)流水線處理機(jī)和超流水線(Super-pipelining)處理機(jī)

(2)超標(biāo)量(Superscalar)處理機(jī)

(3)超長(zhǎng)指令字(VLIW:VeryLongInstructionWord)處理機(jī)2023/9/24……4.1標(biāo)量流水工作原理什么是流水線?考慮設(shè)計(jì)一個(gè)洗衣機(jī)的工作流程,假定它有三道工序:洗滌、清洗、甩干。每個(gè)環(huán)節(jié)為5分鐘。需要完成的任務(wù)為3批,則考慮下述工作方式的工作效率:第一種:串行工作方式,即按照如下方式工作:第1批洗滌第1批清洗第1批甩干第2批洗滌第2批清洗第2批甩干第3批洗滌第3批清洗第3批甩干3批衣服的整個(gè)工作時(shí)間為3*3*5=45分鐘2023/9/25第二種:重疊工作方式,設(shè)計(jì)三個(gè)部件,可以同時(shí)工作,每個(gè)部件只做一樣工作,操作方式如下圖:第1批洗滌第1批清洗第1批甩干第2批洗滌第2批清洗第2批甩干第3批洗滌第3批清洗第3批甩干TΔtΔtΔtΔtΔt3批衣服的工作時(shí)間為5*5=25分鐘,節(jié)省20分鐘。2023/9/26引出下述關(guān)于洗衣機(jī)工作的有關(guān)性能特點(diǎn):吞吐率:?jiǎn)挝粫r(shí)間內(nèi)完成的任務(wù)數(shù)TP=n/T

加速比:串行方式與流水線方式的時(shí)間比:上述為45/25=1.8

效率:即洗衣機(jī)的利用率,上述洗衣機(jī)的效率是9/15=3/5=60%將一條指令的執(zhí)行分為幾個(gè)階段,讓幾條指令按重疊或流水方式工作,以提高程序的執(zhí)行速度。這就引出了計(jì)算機(jī)中的流水線技術(shù)。2023/9/27指令的重疊解釋與先行控制計(jì)算機(jī)系統(tǒng)中廣泛存在著重疊工作方式指令的解釋方式一般只有三種:順序、重疊和流水重疊和流水給指令的執(zhí)行帶來了高的吞吐率和加速比,同時(shí)也給系統(tǒng)增加了障礙2023/9/28指令的解釋過程ALULOAD/STOREIF取指取指ID譯碼、讀寄存器堆譯碼、讀寄存器堆EX執(zhí)行計(jì)算訪存有效地址MEM---訪存(讀或?qū)懀¦B結(jié)果寫回寄存器堆將讀出的數(shù)據(jù)寫入寄存器堆2023/9/29一、指令的重疊解釋方式1、順序執(zhí)行方式一條指令的執(zhí)行過程:取指令->分析->執(zhí)行執(zhí)行n條指令所用的時(shí)間為:

如每段時(shí)間都為t,則執(zhí)行n條指令所用的時(shí)間為:T=3nt主要優(yōu)點(diǎn):控制簡(jiǎn)單,節(jié)省設(shè)備。主要缺點(diǎn):執(zhí)行指令的速度慢,功能部件的利用率很低。取指令k分析k執(zhí)行k取指令k+1分析k+1執(zhí)行k+12023/9/210

2、重疊執(zhí)行方式(最簡(jiǎn)單的流水線方式)

如果每個(gè)過程的時(shí)間相等,則執(zhí)行n條指令的時(shí)間為:T=(1+2n)t

主要優(yōu)點(diǎn):

指令的執(zhí)行時(shí)間縮短

功能部件的利用率明顯提高主要缺點(diǎn):

需要增加一個(gè)IBR取指分析執(zhí)行取指分析執(zhí)行取指分析執(zhí)行2023/9/2113、更高重疊度的重疊解釋方式把取第k+1條指令提前到分析第k條指令同時(shí)執(zhí)行如果三個(gè)過程的時(shí)間相等,執(zhí)行n條指令的時(shí)間為:T=(2+n)t理想情況下同時(shí)有三條指令在執(zhí)行處理機(jī)的結(jié)構(gòu)要作比較大的改變,必須采用先行控制方式取指k+2分析k+2執(zhí)行k+2取指k+1分析k+1執(zhí)行k+1取指k分析k執(zhí)行k2023/9/2121.訪存沖突分析與取指均要訪問主存解決:

1)采用兩個(gè)獨(dú)立編制的存貯器數(shù)據(jù)/指令

但增加了復(fù)雜性

2)采用多體交叉存貯器

3)指令緩沖寄存器2.功能部件的沖突

解決:設(shè)置獨(dú)立的分析部件和執(zhí)行部件重疊方式對(duì)計(jì)算機(jī)組成的要求2023/9/2133.同步分析與執(zhí)行所需的時(shí)間不同,要求的是一次重疊一次重疊:任何時(shí)間都是“分析K+1”與“執(zhí)行K”的重疊=>相鄰兩條指令的重疊分析K執(zhí)行K分析K+1執(zhí)行K+1T=(n+1)t2023/9/2144.轉(zhuǎn)移

無條件轉(zhuǎn)移/條件轉(zhuǎn)移

當(dāng)轉(zhuǎn)移成功時(shí),重疊預(yù)取無效,變?yōu)轫樞驁?zhí)行應(yīng)盡可能不使用或少使用條件轉(zhuǎn)移指令5.相關(guān)

鄰近指令之間出現(xiàn)某種關(guān)聯(lián),為避免出錯(cuò)而不能同時(shí)執(zhí)行的現(xiàn)象。局部性相關(guān)、全局性相關(guān)2023/9/2152023/9/216先行控制技術(shù)基本思想:使分析和執(zhí)行部件分別連續(xù)不斷地運(yùn)行,使部件空閑狀態(tài)減至最低。(a)重疊方式分析k+1分析k執(zhí)行k執(zhí)行k+1分析k+2執(zhí)行k+2分析部件空閑執(zhí)行部件空閑分析k+1分析k執(zhí)行k分析k+2(b)先行控制執(zhí)行k+1執(zhí)行k+22023/9/217關(guān)鍵:緩沖技術(shù)+預(yù)處理技術(shù)緩沖技術(shù):在工作速度不固定的兩個(gè)功能部件之間設(shè)置緩沖棧,用以平滑它們的工作預(yù)處理技術(shù):把進(jìn)入運(yùn)算器的指令都預(yù)處理成R-R型指令,與緩沖技術(shù)相結(jié)合,為進(jìn)入運(yùn)算器的指令準(zhǔn)備好所需的全部操作數(shù)先行控制方式使運(yùn)算器可專注于運(yùn)算,從而可大幅度提高程序的執(zhí)行速度硬件要求:增設(shè)指令緩沖棧,消除取指過程;增設(shè)數(shù)據(jù)緩沖棧,保證不同指令的讀、寫操作并行;增設(shè)先行操作棧,保證執(zhí)行部件能連續(xù)執(zhí)行。2023/9/218工作原理主存存控指令分析器

先行指令棧先行讀數(shù)棧后行寫數(shù)棧執(zhí)行部件先行操作棧數(shù)據(jù)緩沖棧

棧的深度要求:D指緩≥D操作≥D讀?!軩寫棧2023/9/219二、標(biāo)量流水工作原理基本思想:流水是重疊的進(jìn)一步延伸,使指令解釋過程進(jìn)一步細(xì)化,提高各部件的利用率,以提高指令執(zhí)行速度。流水線的表示方法:連接圖、時(shí)空?qǐng)D、預(yù)約表2023/9/2201、簡(jiǎn)單流水線的連接圖表示流水線的每一個(gè)階段稱為流水段、流水線階段、流水功能段、功能段、流水級(jí)、流水節(jié)拍等。一個(gè)流水階段與另一個(gè)流水階段相連形成流水線。有些復(fù)雜指令,在執(zhí)行階段也采用流水線方式工作,稱為操作流水線。取指訪存執(zhí)行譯碼寫回IFIDEXMEMWBS1S2S3S4S5輸入輸出2023/9/221

一種指令流水線一般4至12個(gè)流水段,等于及大于8個(gè)流水段的稱為超流水線處理機(jī)2、流水線的時(shí)空?qǐng)D采用“時(shí)空?qǐng)D”表示流水線的工作過程。一條簡(jiǎn)單流水線的時(shí)空?qǐng)D:取指形成操

作數(shù)地址譯碼取操作數(shù)執(zhí)行保存結(jié)果2023/9/222一個(gè)浮點(diǎn)加法器流水線的時(shí)空?qǐng)D(由求階差、對(duì)階、尾數(shù)加和規(guī)格化4個(gè)流水段組成):ED1時(shí)間空間0t1t2t3t4t5ED2ED3ED4ED5EA1EA2EA3EA4EA5MA1MA2MA3MA4MA5NL1NL2NL3NL4NL5t6t7t8NL:規(guī)格化MA:尾數(shù)加EA:對(duì)階ED:求階差EDEAMANLmt2023/9/2233、流水線的預(yù)約表

時(shí)間流水段1234567S1XXXS2XXS3XXS4X2023/9/224三、流水線工作方式取指訪存執(zhí)行譯碼寫回IFIDEXMEMWBS1S2S3S4S5輸入輸出指令的流水處理

流水線的基本結(jié)構(gòu)中主要包括三大部分:鎖存器、時(shí)鐘、功能段。流水線中每個(gè)段都是由一些執(zhí)行算術(shù)和邏輯功能的組合邏輯線路組成的,它們可以互相獨(dú)立地對(duì)流過的信息進(jìn)行某種操作,相鄰兩站由高速鎖存器(latch)隔開,信息在各段間的流動(dòng)靠同時(shí)送到各站的時(shí)鐘信號(hào)來控制。1、流水線的結(jié)構(gòu)2023/9/225S1S2Sm輸入

輸出流水線的基本結(jié)構(gòu).….…..時(shí)鐘2023/9/226121321nn-1...43215432...543......54.........5nn-1......n-1.........nn-1n1234△t0△t0

△t0△t0T0=m△t0n△t0T(m-1)△t0(n-1)△t0填入正常排空流水時(shí)空?qǐng)D空間時(shí)間建立時(shí)間、正常流動(dòng)時(shí)間、排空時(shí)間。2、流水線工作的三個(gè)時(shí)間2023/9/2273、流水線的分級(jí)、分類分級(jí):(處理的級(jí)別分類)部件級(jí)(操作流水線):將復(fù)雜的算邏運(yùn)算組成流水工作方式;指令級(jí):把一條指令解釋過程分成多個(gè)子過程;處理機(jī)級(jí):每個(gè)處理機(jī)完成某一專門任務(wù),各個(gè)處理機(jī)所得到的結(jié)果需存放在與下一個(gè)處理機(jī)所共享的存儲(chǔ)器中2023/9/228其他分類:功能:?jiǎn)喂δ芰魉€(如CRAY-1)、多功能流水線(如TI-ASC)工作方式:靜態(tài)流水線、動(dòng)態(tài)流水線連接方式:線性、非線性處理數(shù)據(jù):標(biāo)量流水、向量流水1234出入非線性流水線2023/9/2291)ASC算術(shù)運(yùn)算流水線(多功能)輸入減階對(duì)階移位相加規(guī)格化相乘累加輸出123456784、流水線舉例輸入減階對(duì)階移位相加規(guī)格化輸出123458加輸入相乘累加輸出1678乘2023/9/230...1234......n-1n...1234......n-1n...1234......n-1n...1234......n-1n12345867...1234...n-1n...1234......n-1n時(shí)間空間(段號(hào))加法一二三四二三一二一一乘法......靜態(tài)多功能流水線時(shí)-空?qǐng)D靜態(tài)流水線:只有當(dāng)進(jìn)入的是一串相同運(yùn)算的指令時(shí),流水的效能才得以發(fā)揮,才能使各個(gè)功能段并行地對(duì)多條指令的數(shù)據(jù)進(jìn)行流水處理。2023/9/231區(qū)別:如果從軟硬功能分配的觀點(diǎn)上來看,靜態(tài)流水線其實(shí)是把功能負(fù)擔(dān)較多地加到軟件上,以簡(jiǎn)化硬件;動(dòng)態(tài)流水線則是把功能負(fù)擔(dān)較多地加在硬件上,以提高流水的效能。...12345......n-1n...12345......n-1n...12345......n-1n...12345......n-1n12345867...12345......n-1n...12345......n-1n時(shí)間加法乘法一二三四五六一二三四五六七一二三四五一二三四動(dòng)態(tài)多功能流水線時(shí)-空?qǐng)Dm2023/9/232四、標(biāo)量流水線性能分析衡量流水線處理機(jī)的性能主要是吞吐率、加速比和效率。

1.吞吐率:?jiǎn)挝粫r(shí)間內(nèi)能處理的指令條數(shù)或能輸出的數(shù)據(jù)量。吞吐率越高,計(jì)算機(jī)系統(tǒng)的處理能力就越強(qiáng)。就流水線而言,吞吐率就是單位時(shí)間內(nèi)能流出的任務(wù)數(shù)或能流出的結(jié)果數(shù)。最大吞吐率:流水線達(dá)到穩(wěn)定狀態(tài)后可獲得的吞吐率。(1)Tpmax=1/

t(2)TPmax=1/max{

t1,

t2,

t3,

t4}“瓶頸”子過程:1234

t

t3

t

t2023/9/233子過程3為瓶頸段的時(shí)空?qǐng)D最大吞吐率TPmax=1/3

tmTS1S2S3S4t1t2t3t4t5t6t7t8t9t10t12t13t14t151234t11123412341234輸出2023/9/2341312323342143a3b3c333瓶頸段細(xì)分重復(fù)設(shè)置瓶頸流水段解決瓶頸有兩種方法A:B:2023/9/235T重復(fù)設(shè)置瓶頸流水段后的工作時(shí)空?qǐng)DmS1S2S3aS3cS3bS4123546789101112123546789101112147102581136912123546789101112t1t12t172023/9/236實(shí)際吞吐率(1)完成n條指令的解釋共需時(shí)間

可以看出不僅實(shí)際的吞吐率總是小于最大的吞吐率,而且只有當(dāng)n>>m時(shí),實(shí)際的吞吐率才能接近于理想的最大吞吐率。(2)各功能段時(shí)間不相等2023/9/2372.效率:設(shè)備的利用率,直接反映了處理機(jī)結(jié)構(gòu)有效程度。流水線有建立時(shí)間、排空時(shí)間,不總是滿負(fù)載工作。各段時(shí)間相等:各段時(shí)間不等:2023/9/238各段時(shí)間相等:各段時(shí)間不等:加速比:M段流水線的速度與等效的非流水線的速度之比。2023/9/239K=6K=10任務(wù)

個(gè)數(shù)加速比10246811248163264128因?yàn)橐虼耍篍=TP·Δt,S=k·E流水線的吞吐率、加速比與效率的關(guān)系2023/9/240例1.

有一四段線性流水線,每功能段延時(shí)時(shí)間分別是:△t1=△t3=△t4=△t,△t2=3△t?,F(xiàn)在這個(gè)流水線上分別執(zhí)行4個(gè)任務(wù)和40個(gè)任務(wù)。求實(shí)際吞吐率、效率和加速比。解法一:時(shí)空?qǐng)D分析法時(shí)間12343111223234123123123444443△t3△t空間152023/9/241Tp=4/(15△t)E=24△t

/(4*15△t)=40%Sp=4*6△t

/15△t=1.6完成4個(gè)任務(wù)時(shí):完成40個(gè)任務(wù)時(shí),如何畫時(shí)空?qǐng)D呢??方法二,公式分析法。當(dāng)流水線中各功能段的執(zhí)行時(shí)間不相等時(shí),有2023/9/2422023/9/243例2、以浮點(diǎn)加法運(yùn)算為例(四段)各段時(shí)間相等,求Z=A+B+C+D+E+F+G+H的TP、E、Sp。時(shí)間空間Z=A+B+C+D+E+F+G+H1234567TP=7/15△tE=7*4/(15*4)=7/15Sp=4*7/15=28/15=1.871111222233334444555566667777152023/9/244例3.ASC計(jì)算機(jī)功能算術(shù)運(yùn)算流水線各段時(shí)間相等,6次浮點(diǎn)加、5次定點(diǎn)乘的吞吐率、效率和加速比。1,2,3,4,5,8組成加法流水1,6,7,8組成乘法流水12345678對(duì)階減階輸出相加規(guī)格化相乘累加輸入ASC計(jì)算機(jī)的流水線2023/9/245分析:T加=6+(6-1)*1=11T乘=4+(5-1)*1=8TP=11/(11+8)△t=11/19△tE=(6*6+5*4)△t/(19*8△t)=11.54%Sp=56△t/19△t=2.9412345612345612345612345612345867123456123456時(shí)間浮加定點(diǎn)乘一二三四五一二三四五一二三四五一二三四五2023/9/2464.2標(biāo)量流水中的障礙及控制保持流水線性能條件:不能停頓或斷流。影響流水線性能因素:相關(guān)和功能切換。相關(guān)類型:全局相關(guān):轉(zhuǎn)移指令引起的相關(guān)結(jié)果:流水線斷流,流水線中后續(xù)指令全部作廢。局部相關(guān):資源或結(jié)構(gòu)相關(guān);指令相關(guān);數(shù)據(jù)相關(guān)。結(jié)果:流水線停頓,流水線中后續(xù)指令有效。2023/9/247一、資源相關(guān)資源相關(guān):功能部件、主存資源當(dāng)有多條指令進(jìn)入流水線后在同一機(jī)器周期內(nèi)爭(zhēng)用同一功能部件所引起的相關(guān)(沖突)當(dāng)有多條指令進(jìn)入流水線后在同一機(jī)器周期內(nèi)同時(shí)訪問主存資源2023/9/248例1:兩條指令同時(shí)要用一個(gè)加法器ALULOAD/STOREIF取指取指ID譯碼、讀寄存器堆譯碼、讀寄存器堆EX執(zhí)行計(jì)算訪存有效地址MEM-訪存(讀或?qū)懀¦B結(jié)果寫回寄存器堆將讀出的數(shù)據(jù)寫入寄存器堆指令流水段不同類型指令中各流水段進(jìn)行的操作2023/9/249兩條指令同時(shí)訪存造成資源相關(guān)MEMEXIDIF指令i+4WBMEMEXIDIF指令i+3WBMEMEXIDIF指令i+2WBMEMEXIDIF指令i+1WBMEMEXIDIFLoad指令87654321

時(shí)鐘指令沖突取指譯碼執(zhí)行訪存寫回例2:2023/9/250EXIDIF指令i+4MEMEXIDIF停頓指令i+3WBMEMEXIDIF指令i+2WBMEMEXIDIF指令i+1WBMEMEXIDIFLoad指令87654321

時(shí)鐘指令9WBMEM使i+3指令停頓一拍進(jìn)入流水線,以解決訪存相關(guān);或重復(fù)設(shè)置一個(gè)存儲(chǔ)器;采用先行控制技術(shù)解決方法:2023/9/251二、指令相關(guān)后續(xù)指令的內(nèi)容取決于當(dāng)前指令執(zhí)行的結(jié)果,即指令允許修改引起的相關(guān)解決相關(guān):不準(zhǔn)修改指令、變指令相關(guān)為數(shù)據(jù)相關(guān)EXR1D2B2X2IBM370中的“執(zhí)行”指令2023/9/252三、數(shù)據(jù)相關(guān)由于流水線中的各條指令間的重疊解釋,使得原來對(duì)操作數(shù)的訪問順序發(fā)生了變化,從而導(dǎo)致了數(shù)據(jù)之間的相關(guān)。這種相關(guān)有三類:先寫后讀(改用相關(guān))

、先讀后寫(用改相關(guān))、寫寫相關(guān)(改改相關(guān))。設(shè)有i和j兩條指令,i指令在前,j指令在后,則三種不同類型的數(shù)據(jù)相關(guān)的含義為:2023/9/253RAW讀寫(先寫后讀)---指令j試圖在指令i寫入寄存器前就讀出該寄存器內(nèi)容,這樣,指令j就會(huì)錯(cuò)誤地讀出該寄存器舊的內(nèi)容。

i:R1+R2->R3

j:R3*R4->R5WAR寫讀(先讀后寫)---指令j試圖在指令i讀出寄存器之前就寫入該寄存器,這樣,指令i就錯(cuò)誤地讀得該寄存器新的內(nèi)容。

i:R3*R4->R5j:R1+R2->R3WAW寫寫(先寫后寫)---指令j試圖在指令i寫寄存器之前就寫入該寄存器,這樣,兩次寫的先后次序被顛倒,就會(huì)錯(cuò)誤地使由指令i寫入的值成為該寄存器內(nèi)容。

i:R1*R2->R3

j:R4+R5->R32023/9/254解決數(shù)據(jù)相關(guān)的辦法用軟件和硬件技術(shù):時(shí)間推后法旁路技術(shù)或相關(guān)專用通路技術(shù)例:

n:loadAIFIDEXWRn+1:loadBIFIDEXWRn+2:addA,B

IF

ID

氣泡EXWRn+3:storeCIFID氣泡EXWRn+4:jumpKIFIDEXWRn+5:loadE停頓停頓停頓。。

n+6………停頓。。

K:IFIDEX例中有資源相關(guān)、有控制轉(zhuǎn)移相關(guān),這將影響流水線的性能。2023/9/255IF

ID

EX

MEM

WB

IF

ID

EX

WB

IF

ID

EX

WB

IF

ID

EX

WB

IF

ID

EX

WB

ADDR1,R2,R3SUBR4,R1,R5ANDR6,R1,R7ORR8,R1,R9XORR10,R1,R11定向傳遞R1值數(shù)據(jù)相關(guān)和定向傳遞指令寫R1完成MEM

MEM

MEM

MEM

2023/9/256ALU運(yùn)算結(jié)果寫RF

RF讀RFALU操作數(shù)寄存器專用通路(旁路)旁路RFALUBufferMultMult2023/9/257四、全局性相關(guān)由轉(zhuǎn)移指令(條件/無條件)引起的相關(guān)轉(zhuǎn)移指令在程序中所占比例約為20-25%,不可忽視解決這種相關(guān)的方法:猜測(cè)法、加快和提前形成條件碼、加快短循環(huán)程序的處理、采用延遲轉(zhuǎn)移技術(shù)2023/9/2581、猜測(cè)法:選取發(fā)生概率較高的分支為猜測(cè)方向,若猜對(duì),繼續(xù)執(zhí)行;否則,作廢猜測(cè)方向的執(zhí)行,返回實(shí)際轉(zhuǎn)移處。(1)如何提高猜測(cè)命中率靜態(tài)猜測(cè)法:猜測(cè)不成功方向。由程序員和編譯程序把發(fā)生概率高的分支安排在猜測(cè)方向。動(dòng)態(tài)猜測(cè)法:根據(jù)轉(zhuǎn)移歷史猜測(cè)。I-1I-2I+4I+1I+2I+3IK+3K+2K+1kbranch成功不成功2023/9/259轉(zhuǎn)移目標(biāo)緩沖器(BTB)

利用BTB(BranchTargetBuffer)硬件,動(dòng)態(tài)地預(yù)測(cè)轉(zhuǎn)移方向轉(zhuǎn)移指令地址轉(zhuǎn)移目標(biāo)地址狀態(tài)欲取指令的PC查找預(yù)測(cè)PC值=按正常順序執(zhí)行NY2023/9/260轉(zhuǎn)移預(yù)測(cè)原理:用2位二進(jìn)制數(shù)記錄實(shí)際轉(zhuǎn)移狀態(tài)(歷史位),高位為1時(shí)預(yù)測(cè)轉(zhuǎn)移發(fā)生,高位為0時(shí)預(yù)測(cè)轉(zhuǎn)移不發(fā)生。注意:初始狀態(tài)、狀態(tài)修改、猜測(cè)方向表示預(yù)測(cè)發(fā)生11預(yù)測(cè)發(fā)生10預(yù)測(cè)不發(fā)生01預(yù)測(cè)不發(fā)生00轉(zhuǎn)移1不轉(zhuǎn)移0不轉(zhuǎn)移0不轉(zhuǎn)移0轉(zhuǎn)移1轉(zhuǎn)移1轉(zhuǎn)移1不轉(zhuǎn)移02023/9/261(2)猜測(cè)的后續(xù)處理分支現(xiàn)場(chǎng)的保護(hù)及恢復(fù):

猜測(cè)執(zhí)行只完成譯碼、取操作數(shù)或執(zhí)行但不寫結(jié)果;采用后援寄存器保存可能被破壞的狀態(tài)。預(yù)防猜不中時(shí)的加速處理:

預(yù)取猜測(cè)方向的另一方向的前幾條指令,放到緩沖器中,加速猜不中時(shí)回頭速度。I-1I-2I+4I+1I+2I+3IK+3K+2K+1kbranch成功不成功2023/9/2622、加快和提前形成條件碼單條指令的條件碼并不一定要等執(zhí)行完成得到運(yùn)算結(jié)果后才能形成循環(huán)程序判斷的提前形成3、優(yōu)化延遲轉(zhuǎn)移技術(shù)

a.將轉(zhuǎn)移指令前的那條指令調(diào)度到延遲槽中;

b.將轉(zhuǎn)移目標(biāo)處的那條指令調(diào)度到延遲槽中;

c.將轉(zhuǎn)移不發(fā)生時(shí)該執(zhí)行的那條指令調(diào)度到延遲槽中。4、加快短循環(huán)處理2023/9/263五、流水線中的中斷處理流水機(jī)器處理中斷的關(guān)鍵不在于如何縮短斷流時(shí)間,而是如何處理好斷點(diǎn)現(xiàn)場(chǎng)及中斷后的恢復(fù)問題不精確斷點(diǎn)法:不論第i條指令在流水線的哪一段發(fā)出中斷申請(qǐng),都不再允許那時(shí)還未進(jìn)入流水線的后續(xù)指令再進(jìn)入。斷點(diǎn)就是最后進(jìn)入流水線的那條指令2023/9/264S1S8S7S6S5S4S3S2輸入輸出i+5ii-1i+1i+2i+3i+4i-2PC:不精確斷點(diǎn)申請(qǐng)中斷精確斷點(diǎn)特點(diǎn):硬件開銷小,控制簡(jiǎn)單,適用于常規(guī)的I/O操作。2023/9/265

精確斷點(diǎn)法:不論第i條指令是在流水線中哪一段發(fā)出的中斷申請(qǐng),給中斷處理程序的現(xiàn)場(chǎng)全都是對(duì)應(yīng)第i條的。適用于程序性錯(cuò)誤和機(jī)器故障等產(chǎn)生的中斷精確斷點(diǎn)法中對(duì)原有現(xiàn)場(chǎng)的恢復(fù),要增加后援寄存器,以保留各功能段狀態(tài)i:FADDR1,R2;(R1)+(R2)→R1i+1:FMULR3,R1;(R3)*(R1)→R3S6:加法結(jié)果溢出精確斷點(diǎn)法有利于程序調(diào)試2023/9/266例4

在一條單流水線處理機(jī)上執(zhí)行下面的程序。每條指令都要經(jīng)過“取指”,“譯碼”,“執(zhí)行”和“寫結(jié)果”4個(gè)流水段。每個(gè)流水段的延遲時(shí)間都是5ns。在“執(zhí)行”流水段,LS部件完成LOAD或STORE操作,其它操作都在ALU部件中完成,兩個(gè)操作部件的輸出端有直接數(shù)據(jù)通路與任一操作部件的輸入端相連,ALU部件產(chǎn)生的條件碼也能夠直接送入控制器。2023/9/2671:SUBR0,R0;R0←02:LOADR1,#8;向量長(zhǎng)度83:LOOP:LOADR2,A;R2←A向量的一個(gè)元素

4:MULR2,R1;R2←(R2)*(R1)5:ADDR0,R2;R0←(R0)+(R2)6:DJNER1,LOOP;R1←(R1)-1若(R1)≠0則轉(zhuǎn)

7:STORER0,S;保存結(jié)果(1)采用靜態(tài)分支預(yù)測(cè)技術(shù),每次都預(yù)測(cè)轉(zhuǎn)移不成功。畫出指令流水線的時(shí)空?qǐng)D。計(jì)算流水線的吞吐率和加速比。并分別計(jì)算出譯碼部件和ALU部件的使用效率。(2)采用靜態(tài)分支預(yù)測(cè)技術(shù),每次都預(yù)測(cè)轉(zhuǎn)移成功。計(jì)算指令流水線的吞吐率和加速比。并分別計(jì)算出譯碼部件和ALU部件的使用效率。2023/9/26852112112322333454445556666取指寫回ALULS譯碼3333444455556666333344445555666633334444555566667777............重復(fù)8次m(1)解:每次預(yù)測(cè)轉(zhuǎn)移不成功,流水線時(shí)空?qǐng)D如下:2023/9/269112112322333454445556666取指寫回ALULS譯碼333344445555666633334444555566667777......重復(fù)8次m(2)解:每次預(yù)測(cè)轉(zhuǎn)移成功,流水線時(shí)空?qǐng)D如下:2023/9/2704.3流水線的調(diào)度技術(shù)靜態(tài)調(diào)度:借助軟件對(duì)指令執(zhí)行順序進(jìn)行調(diào)度,以減少由于流水線中存在相關(guān)沖突而引起流水線的停頓時(shí)間。動(dòng)態(tài)調(diào)度:通過硬件重新安排指令的執(zhí)行順序以減少流水的停頓。有集中式和分布式兩種。2023/9/271一、靜態(tài)調(diào)度技術(shù)靜態(tài)調(diào)度:借助軟件對(duì)指令執(zhí)行順序進(jìn)行調(diào)度,以減少由于流水線中存在相關(guān)沖突而引起流水線的停頓時(shí)間。非線性流水線中存在著前(反)饋回路,必然會(huì)引起功能段的沖突而發(fā)生流水線停頓。調(diào)度方法會(huì)減少停頓時(shí)間。調(diào)度方案是基于二維預(yù)約表和狀態(tài)圖來進(jìn)行分析2023/9/272非線性流水線的連接圖

時(shí)間流水段1234567S1XXXS2XXS3XXS4X非線性流水線的預(yù)約表S1S2S3S4輸出輸入反饋線2023/9/273某流水線結(jié)構(gòu)如下:非線性流水線調(diào)度舉例

S1S2S3S4S5入①②③④⑥⑤⑦⑧⑦⑨出⑧

流水線調(diào)度方案如下:2023/9/274(1)形成預(yù)約表指令總拍數(shù)為n,流水線有k個(gè)段,則形成n×k的預(yù)約表,段的使用情況用“×”表示。預(yù)約表如下:××5××4×3××××2××198765438271tS2023/9/275(2)由預(yù)約表形成禁止表FF={各段中沖突間隔拍數(shù)}

---功能段1的禁止間隔拍數(shù)為8;

---功能段2的禁止間隔拍數(shù)為5和6;

---功能段3的無禁止間隔拍數(shù);

---功能段4的禁止間隔拍數(shù)為1;

---功能段5的禁止間隔拍數(shù)為1。F={1,5,6,8}(3)由禁止表F形成初始沖突向量C0C0=(10110001),ci=1沖突,0不沖突。2023/9/276(4)由初始沖突向量C0形成狀態(tài)轉(zhuǎn)換圖a.

取C0分別間隔2、3、4、7拍,且將C0分別邏輯右移2、3、4、7位,高位補(bǔ)0后再與C0按位“或”,形成新的沖突向量C1、C2和C3;10110001101101111011110110111011初始狀態(tài)3427C0C1C2C32023/9/277b.再分別取C1間隔2、7拍;取C2間隔4、7拍;取C3間隔3、7拍。方法同上,直至全部完成。

注意:向量Ci右移后,總是與原始向量C0作邏輯加。1011000110110111101111011011101110111111初始狀態(tài)34422777C0C1C2C3C4772023/9/278(5)根據(jù)狀態(tài)圖寫出調(diào)度方案

每一個(gè)閉合回路就是一個(gè)調(diào)度方案(策略)1011000110110111101111011011101110111111初始狀態(tài)34422777C0C1C2C3C47732023/9/279本例中調(diào)度方案如下:調(diào)度策略平均間隔拍數(shù)調(diào)度策略平均間隔拍數(shù)(2,7)4.50(4,3)3.50(2,2,7)3.67(4,3,7)4.67(3,4)3.50(4,7)5.00(3,7)5.00(7)7.00(3,4,7)4.67

平均延時(shí)最小的調(diào)度方案為最佳調(diào)度方案,本例為(3,4)和(4,3)。

對(duì)非C0開始的調(diào)度方案由流水線控制器完成控制的過渡。2023/9/280調(diào)度方案的驗(yàn)證原理:二維預(yù)約表方法:給定任務(wù)數(shù),使用每一種可能的調(diào)度方案進(jìn)行調(diào)度驗(yàn)證:調(diào)度過程中有無功能段的沖突?2023/9/281123456789101112131415S1√√√√√S2√√√√√√√√√S3√√√S4√√√√√√S5√√√√√√例如,按(3,4)調(diào)度方案,連續(xù)輸入3個(gè)任務(wù)的調(diào)度過程如下:2023/9/282按(4,3)調(diào)度方案連續(xù)輸入6個(gè)任務(wù)的時(shí)空?qǐng)DS1S2S3S4S5mt2023/9/283性能分析設(shè)共輸入8個(gè)任務(wù),按最佳調(diào)度方案(平均時(shí)延最小3.5拍)(3,4)進(jìn)行調(diào)度,計(jì)算流水調(diào)度的最大和實(shí)際吞吐率2023/9/284例5設(shè)有一4段流水線處理機(jī)如下圖所示。此流水線的總值時(shí)間為6個(gè)時(shí)鐘周期,所有相繼段必須在每個(gè)時(shí)鐘周期之后才能使用。(1)列出這一流水線的4行6列的預(yù)約表;(2)列出禁止表和畫出狀態(tài)圖;(3)求出平均延遲最小的調(diào)度方案和最大吞吐率。S1S2S3S4輸出輸入2023/9/285功能段123456S1√√S2√√S3√S4√解法一:4行6列的預(yù)約表(一)禁止表的原始沖突向量為:F={4},C=(1000)2023/9/28610001100111011111010100110111101111212333223解法一的狀態(tài)轉(zhuǎn)移圖平均延遲最小的調(diào)度方案是:(1,2,3,2)。最小平均延遲是:2▲t。最大吞吐率是:TPmax=1/2▲t。2023/9/287功能段123456S1√√S2√√√S3√√S4√解法二:4行6列的預(yù)約表(二)禁止表的原始沖突向量為:F={2,4},C=(1010)2023/9/28810101111101113355解法二的狀態(tài)轉(zhuǎn)移圖平均延遲最小的調(diào)度方案是:(3)。最小平均延遲是:3▲t。最大吞吐率是:TPmax=1/3▲t。2023/9/289二、動(dòng)態(tài)調(diào)度技術(shù)動(dòng)態(tài)調(diào)度:通過硬件重新安排指令的執(zhí)行順序以減少流水的停頓。有集中式和分布式優(yōu)點(diǎn):(1)能處理某些在編譯時(shí)無法知道的相關(guān)情況(2)能簡(jiǎn)化編譯程序設(shè)計(jì)(3)使代碼有可移植性缺點(diǎn):相應(yīng)的硬件較為復(fù)雜。2023/9/2901、集中式動(dòng)態(tài)調(diào)度靜態(tài)調(diào)度中的指令是按序(In-order)執(zhí)行,如果一條指令在流水線中發(fā)生停頓,后續(xù)指令就不再前進(jìn)了動(dòng)態(tài)調(diào)度可使指令按無序(Out-order)方式工作集中式動(dòng)態(tài)調(diào)度:依靠硬件在程序運(yùn)行過程中對(duì)可能出現(xiàn)的相關(guān)情況加以檢測(cè),從而保證流水線中的各個(gè)功能部件能最大限度地重疊工作2023/9/291EX

MEMWB

集中式動(dòng)態(tài)調(diào)度IFID整數(shù)部分浮點(diǎn)加浮點(diǎn)乘浮點(diǎn)除RF記錄控制器指令控制/狀態(tài)控制/狀態(tài)狀態(tài)記錄控制器(記分牌)記錄與控制在流水線的EX段開始。2023/9/292檢測(cè)功能:功能部件(資源)沖突;源、目的REG引起的RAW、WAR、WAW相關(guān)??刂乒δ埽河袥_突或相關(guān)的指令推后進(jìn)入流水線的執(zhí)行部件,否則正常指令進(jìn)入流水線的執(zhí)行部件;記錄功能部件、REG、指令的狀態(tài);根據(jù)記錄的狀態(tài),控制后續(xù)指令的進(jìn)入。2023/9/2932、分布式動(dòng)態(tài)調(diào)度

此方法是由Tomasulo于1967年提出來的,已在IBM360/91機(jī)中采用。IBM360/91的浮點(diǎn)運(yùn)算器主要部件:(1)

運(yùn)算部件:一個(gè)加法部件和一個(gè)乘除部件。(2)保存站:加法部件中有A1~A3三個(gè)保存站,乘除部件有M1和M2兩個(gè)保存站,用來保存當(dāng)前參加運(yùn)算的數(shù)據(jù)。2023/9/294(3)

指令操作緩沖棧:存放經(jīng)分析后由指令部件送來的指令,譯碼后,產(chǎn)生相應(yīng)的控制信號(hào)送到各個(gè)部件。(4)浮點(diǎn)操作數(shù)寄存器(FLB):存放由主存預(yù)取來的操作數(shù)。(5)浮點(diǎn)寄存器(FLR):存放操作數(shù)的寄存器。(6)

存儲(chǔ)數(shù)據(jù)緩沖站(SDB):存放將寫入存儲(chǔ)器的結(jié)果數(shù)據(jù),也有站號(hào)。(7)

公共數(shù)據(jù)總線(CDB):以上各部件間的連接總線。2023/9/295浮點(diǎn)操作數(shù)緩沖器(FLB)控浮點(diǎn)操作棧(FLOS)忙制位站號(hào)源1控制站號(hào)源2站號(hào)源1站號(hào)源2控制控制號(hào)站存數(shù)緩沖器(SDB)加法器乘/除法器譯碼器站號(hào)浮點(diǎn)寄存器(FLR)M1M2A1A2A3101010111100FLB總線FLR總線10001001CDB公共數(shù)據(jù)總線指令處理部件存儲(chǔ)器總線654321站號(hào):

01100001F76543F21F0保存站IBM360/91的浮點(diǎn)運(yùn)算部件結(jié)構(gòu)框圖2023/9/296S1:(FLB1)→F0S2:(F0)*(FLB2)→F0S3:(F0)→AS4:(FLB3)→F0S5:(F0)+(FLB4)→F0;F0站號(hào)置為0001;F0置忙位為1,M1源1為0001,源2為0010,F(xiàn)0站號(hào)為1000;C1站號(hào)置1000;F0站號(hào)置為0011;F0置忙位為1,A1源1為0011,源2為0100,F(xiàn)0站號(hào)為1010調(diào)度方法特點(diǎn):通過FLR的“忙”位,檢測(cè)RAW相關(guān);通過修改站號(hào)(重命名),消除WAR、WAW相關(guān);通過設(shè)置保存站,減少資源相關(guān)沖突;借助CDB作相關(guān)專用通路。2023/9/2974.4先進(jìn)的流水技術(shù)流水中指令級(jí)并行性的進(jìn)一步開發(fā)粗粒度并行性:在多處理機(jī)上分別運(yùn)行多個(gè)進(jìn)程,由多臺(tái)處理機(jī)合作完成一個(gè)程序;細(xì)粒度并行性:指在一個(gè)進(jìn)程中進(jìn)行操作一級(jí)或指令一級(jí)的并行處理。RISC機(jī)進(jìn)一步開發(fā)細(xì)粒度并行性2023/9/298一、超標(biāo)量流水處理技術(shù)每個(gè)時(shí)鐘周期平均執(zhí)行指令的條數(shù)大于或等于2超標(biāo)量處理機(jī)典型結(jié)構(gòu):

多條指令流水線、多個(gè)功能部件先進(jìn)的超標(biāo)量處理機(jī)有:定點(diǎn)處理部件CPU,浮點(diǎn)處理部件FPU,圖形加速部件GPU,大量的通用寄存器,兩個(gè)一級(jí)高速Cache超標(biāo)量處理機(jī)的指令級(jí)并行度ILP大于12023/9/299超標(biāo)量流水線處理機(jī)的一般結(jié)構(gòu)IFIDFA1FA2FA3MD1MD2MD3ALLS浮點(diǎn)加法部件乘除法部件定點(diǎn)ALU部件取數(shù)存數(shù)部件WRIFIDWR2023/9/2100整數(shù)

部件整數(shù)

部件位

操作浮點(diǎn)加乘法

部件除法

部件圖形

部件圖形

部件內(nèi)部總線讀數(shù)存

數(shù)部件通用寄

存器堆擴(kuò)展寄

存器堆目標(biāo)

指令指令分配

轉(zhuǎn)移部件數(shù)據(jù)Cache(8KB)指令Cache(8KB)系統(tǒng)總線32位地址總線32位數(shù)據(jù)總線超標(biāo)量處理機(jī)MC88110的結(jié)構(gòu)2023/9/2101IFIDFA1FA2FA3MD1MD2MD3ALLS浮點(diǎn)加法部件乘除法部件定點(diǎn)ALU部件取數(shù)存數(shù)部件WRIFIDWRIFID先行指

令窗口注:先行指令窗口除了能夠做數(shù)據(jù)相關(guān)性分析和功能部件沖突的檢測(cè)之外,還至少有一套取指令部件和一套指令譯碼部件2023/9/2102IF時(shí)鐘

周期指令I(lǐng)1I2I3IDEXWR123456I4I5I6IFIDEXWRI7I8I9IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR超標(biāo)量流水處理機(jī)的時(shí)空?qǐng)D2023/9/2103超標(biāo)量流水線的調(diào)度按序發(fā)射:當(dāng)指令按策劃功能序的次序發(fā)射時(shí),稱之為按序發(fā)射(in-orderissue)無序發(fā)射:為改善流水線性能,可以將有相關(guān)的指令推后發(fā)射,而將后面的無相關(guān)性的指令提前發(fā)射,即不按程序原有次序發(fā)射指令,稱之為無序發(fā)射(out-of-order)按序完成:完成順序與發(fā)射順序一致無序完成:完成順序與發(fā)射順序不一致2023/9/2104按序發(fā)射按序完成—靜態(tài)調(diào)度策略;(Pentium)按序發(fā)射無序完成—?jiǎng)討B(tài)調(diào)度策略;(PentiumII/III)無序發(fā)射無序完成—?jiǎng)討B(tài)調(diào)度策略。無論那種調(diào)度策略,都要保證程序運(yùn)行的最終結(jié)果是正確的,發(fā)射策略由譯碼控制器完成,完成策略由執(zhí)行控制器完成。常用的調(diào)度方法2023/9/2105IF1ID1L/SWR1IF2ID2部件FA1WR2FA3FA2順序(RAW)順序(WAW)順序順序(RAW)MD1MD2MD3WR1IF2ID2FA1FA2FA3ID1IF1WR2ID1ALIF1WR1ID2MD1MD2MD3I1WR2IF2I2I3I4I5I6指令時(shí)鐘周期12345678910流水線2流水線1I1:LOADR1,A;主存單元A→R1I2:FADDR2,R1

;(R1)+(R2)→R2I3:FMULR3,R4

;(R3)×(R4)→R3I4:FADDR4,R5

;(R4)+(R5)→R4I5:DECR6

;(R6)-1→R6I6:FMULR6,R7

;(R6)×(R7)→R6按序發(fā)射按序完成之調(diào)度過程2023/9/2106IF1ID1L/SWR1IF2ID2部件FA1WR2FA3FA2(RAW)(RAW)MD1MD2MD3WR1IF2ID2FA1FA2FA3ID1IF1WR2ID1ALIF1WR1ID2MD1MD2MD3I1WR2IF2I2I3I4I5I6指令時(shí)鐘周期123456789流水線2流水線1I1:LOADR1,A;主存單元A→R1I2:FADDR2,R1

;(R1)+(R2)→R2I3:FMULR3,R4

;(R3)×(R4)→R3I4:FADDR4,R5

;(R4)+(R5)→R4I5:DECR6

;(R6)-1→R6I6:FMULR6,R7

;(R6)×(R7)→R6按序發(fā)射無序完成之調(diào)度過程2023/9/2107IF1ID1L/SWR1IF2ID2FA1WR2FA3FA2MD1MD2MD3WR1IF1ID1FA2FA3FA1ID3IF3WR2ID2ALIF2WR1ID2MD2MD3MD1I1WR2IF2I3I4I2I5I6指令時(shí)鐘周期12345678流水線2流水線1I1:LOADR1,A;主存單元A→R1I2:FADDR2,R1

;(R1)+(R2)→R2I3:FMULR3,R4

;(R3)×(R4)→R3I4:FADDR4,R5

;(R4)+(R5)→R4I5:DECR6

;(R6)-1→R6I6:FMULR6,R7

;(R6)×(R7)→R6無序發(fā)射無序完成之調(diào)度過程先行控制2023/9/2108超標(biāo)量流水線的資源沖突在先進(jìn)的超標(biāo)量流水機(jī)中,有多個(gè)操作(執(zhí)行)部件,如:ALU、FADD、FMUL、GPU、LSU等操作部件必須采用流水結(jié)構(gòu),可減少資源沖突2023/9/2109I1:FADDR0,R1;(R0)+(R1)→R0

I2:FMULR2,R3;(R2)×(R3)→R2I3:FADDR4,R5;(R4)+(R5)→R4I4:FMULR6,R7;(R6)×(R7)→R6IF1IF2ID1ID2FADDIF1ID1IF2ID2WR1FMULWR2FADDFMULWR1WR2I1I2I3I41234567891011雙流水線超標(biāo)量處理機(jī)(操作部件非流水結(jié)構(gòu))2023/9/2110I1:FADDR0,R1;(R0)+(R1)→R0

I2:FMULR2,R3;(R2)×(R3)→R2I3:FADDR4,R5;(R4)+(R5)→R4I4:FMULR6,R7;(R6)×(R7)→R6IF1IF2ID1ID2FA1IF1ID1IF2ID2WR1FM1WR2WR1I1I2I3I412345678t雙流水線超標(biāo)量處理機(jī)(操作部件流水結(jié)構(gòu))FA2FA3FM2FM3FM4FA1FA2FA3FM1WR2FM2FM3FM42023/9/2111二、超流水線處理機(jī)兩種定義:

一個(gè)周期內(nèi)能夠分時(shí)發(fā)射多條指令的處理機(jī)稱為超流水線處理機(jī)。

指令流水線有8個(gè)或更多功能段的流水線處理機(jī)稱為超流水線處理機(jī)。提高處理機(jī)性能的不同方法:

超標(biāo)量處理機(jī)是通過增加硬件資源為代價(jià)來換取處理機(jī)性能的。超流水線處理機(jī)則通過各硬件部件充分重疊工作來提高處理機(jī)性能。兩種不同并行性:

超標(biāo)量處理機(jī)采用的是空間并行性

超流水線處理機(jī)采用的是時(shí)間并行性2023/9/2112指令執(zhí)行時(shí)序每隔1/n個(gè)時(shí)鐘周期發(fā)射一條指令,流水線周期為1/n個(gè)時(shí)鐘周期在超標(biāo)量處理機(jī)中,流水線的有些功能段還可以進(jìn)一步細(xì)分,例如:ID功能段可以再細(xì)分為譯碼、讀第一操作數(shù)和讀第二操作數(shù)三個(gè)流水段。也有些功能段不能再細(xì)分,如WR功能段一般不再細(xì)分。因此有超流水線的另外一種定義:有8個(gè)或8個(gè)以上流水段的處理機(jī)稱為超流水線處理機(jī)2023/9/2113IF時(shí)鐘

周期指令I(lǐng)1I2I3IDEXWR123456I4I5I6IFIDEXWRI7I8I9IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR每個(gè)時(shí)鐘周期分時(shí)發(fā)送3條指令的超流水線2023/9/2114MIPSR4000處理機(jī)的流水線操作指令CacheIF:取第一條指令 IS:取第二條指令

RF:讀寄存器堆,指令譯碼

EX:執(zhí)行指令 DF:取第一個(gè)數(shù)據(jù)

DS:取第二個(gè)數(shù)據(jù) TC:數(shù)據(jù)標(biāo)志校驗(yàn);WB:寫回結(jié)果指令

譯碼讀寄

存器堆ALU數(shù)據(jù)Cache標(biāo)志檢驗(yàn)寄存器堆IFISRFEXDFDSWBTC2023/9/2115IF流水線周期當(dāng)前CPU周期ISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWBIFISRFEXDFDSTCWB主時(shí)

周期MIPSR4000正常指令流水線工作時(shí)序2023/9/2116三、超標(biāo)量超流水線處理機(jī)把超標(biāo)量與超流水線技術(shù)結(jié)合在一起,就成為超標(biāo)量超流水線處理機(jī)

指令執(zhí)行時(shí)序

超標(biāo)量超流水線處理機(jī)在一個(gè)時(shí)鐘周期內(nèi)分時(shí)發(fā)射指令n次,每次同時(shí)發(fā)射指令m條,每個(gè)時(shí)鐘周期總共發(fā)射指令m×n條。2023/9/2117IF時(shí)鐘周期指令I(lǐng)1I2I3IDEXWR12345I4I5I6I7I8I9IFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRI10I11I12每時(shí)鐘周期發(fā)射3次,每次3條指令2023/9/2118不同結(jié)構(gòu)計(jì)算機(jī)的性能分析標(biāo)量處理機(jī)的并行度(1,1)超標(biāo)量處理機(jī)的并行度(m,1)超流水處理機(jī)的并行度(1,n)超標(biāo)量超流水處理機(jī)的并行度(m,n)2023/9/2119標(biāo)量流水處理機(jī)上執(zhí)行N條指令的時(shí)間:超標(biāo)量流水處理機(jī)上執(zhí)行N條指令的時(shí)間:2023/9/2120超流水處理機(jī)上執(zhí)行N條指令的時(shí)間:超標(biāo)量超流水處理機(jī)上執(zhí)行N條指令的時(shí)間:2023/9/2121四、超長(zhǎng)指令字(VLIW)計(jì)算機(jī)VLIW是以一條長(zhǎng)指令實(shí)現(xiàn)多個(gè)操作的并行執(zhí)行,減少存儲(chǔ)器訪問。主要特點(diǎn):(1)單一的控制流。只有一個(gè)控制器,每個(gè)周期啟動(dòng)一條指令。(2)超長(zhǎng)指令字被分成多個(gè)控制字段,每個(gè)字段直接獨(dú)立地控制每個(gè)功能部件。(3)在編譯階段完成超長(zhǎng)指令中多個(gè)可并行執(zhí)行操作的調(diào)度。2023/9/2122

超長(zhǎng)指令字計(jì)算機(jī)舉例如完成以下運(yùn)算:C=A+B、K=I+J、

L=M-K、Q=C×K需以下13條指令完成:(需花14個(gè)T

)LOADA、LOADB、C=A+B、STOREC、LOADI、LOADJ、K=I+J、STOREK、LOADM、L=M-K、STOREL、Q=C×K、STOREQ2023/9/2123主存RF(寄存器堆)LD/ST2FADDFMULLD/ST1LD/ST1LD/ST2FADDFMUL存/取1存/取2浮點(diǎn)加浮點(diǎn)乘操作并行度≤4LOADALOADBLOADILOADJC=A+BLOADMSTORECK=I+JSTOREKL=M-KQ=C×KSTORELSTOREQ用VLIW則只需6個(gè)T2023/9/2124例6

在下列不同結(jié)構(gòu)的處理機(jī)上運(yùn)行8×8的矩陣乘法C=A×B,計(jì)算所需要的最短時(shí)間。只計(jì)算乘法指令和加法指令的執(zhí)行時(shí)間,不計(jì)算取操作數(shù)、數(shù)據(jù)傳送和程序控制等指令的執(zhí)行時(shí)間。加法部件和乘法部件的延遲時(shí)間都是3個(gè)時(shí)鐘周期,另外,加法指令和乘法指令還要經(jīng)過一個(gè)“取指令”和“指令譯碼”的時(shí)鐘周期,每個(gè)時(shí)鐘周期為20ns,C的初始值為“0”。各操作部件的輸出端有直接數(shù)據(jù)通路連接到有關(guān)操作部件的輸入端,在操作部件的輸出端設(shè)置有足夠容量的緩沖寄存器。2023/9/2125(1)處理機(jī)內(nèi)只有一個(gè)通用操作部件,采用順序方式執(zhí)行指令。解:需要完成的乘法次數(shù)為8×8×8=512次需要完成的加法次數(shù)為8×8×7=448次執(zhí)行完成總時(shí)間為:2023/9/2126(2)單流水線標(biāo)量處理機(jī),有一條兩個(gè)功能的靜態(tài)流水線,流水線每個(gè)功能段的延遲時(shí)間均為一個(gè)時(shí)鐘周期,加法操作和乘法操作各經(jīng)過3個(gè)功能段。解:IFIDAD1AD2AD3MU1MU3MU22023/9/2127(3)單流水線標(biāo)量處理機(jī),處理機(jī)內(nèi)有兩條獨(dú)立的操作流水線,流水線每個(gè)功能段的延遲時(shí)間均為一個(gè)時(shí)鐘周期。解:IFIDAD1AD2AD3MU1MU3MU22023/9/2128(4)超標(biāo)量處理機(jī),每個(gè)時(shí)鐘周期同時(shí)發(fā)送一條乘法指令和一條加法指令,處理要內(nèi)有兩條獨(dú)立的操作流水線,流水線的每個(gè)功能段的延遲時(shí)間均為一個(gè)時(shí)鐘周期。(不考慮數(shù)據(jù)之間的相關(guān)性,下同。)解:2023/9/2129(5)超流水處理機(jī),把一個(gè)時(shí)鐘周期分為兩個(gè)流水級(jí),加法部件和乘法部件的延遲時(shí)間都為6個(gè)流水級(jí),每個(gè)時(shí)鐘周期能夠分時(shí)發(fā)射兩條指令,即每個(gè)流水級(jí)能夠發(fā)射一條指令。IFIDAD1AD2AD3MU1MU3MU2解:123456789102023/9/2130(6)超標(biāo)量超流水線處理機(jī),把一個(gè)時(shí)鐘周期分為兩個(gè)流水級(jí),加法部件和乘法部件延遲時(shí)間都為6個(gè)流水級(jí),每個(gè)流水級(jí)能夠同時(shí)發(fā)射一條乘法指令和一條加法指令。解:2023/9/21314.6向量流水技術(shù)向量流水的基本原理CRAY-1型向量處理機(jī)增強(qiáng)向量處理性能的方法2023/9/21324.6.1向量流水的基本原理提高流水性能方法:增加流水線段數(shù),以減少Δt;每個(gè)時(shí)鐘同時(shí)啟動(dòng)多條指令;減少相關(guān),減少功能變換次數(shù),增加處理指令條數(shù)。向量操作特點(diǎn)1.向量元素間操作相互獨(dú)立,且為相同操作。2.相當(dāng)于標(biāo)量循環(huán),對(duì)指令帶寬的訪問要求不高。3.可采用多體交叉存儲(chǔ)器,減少訪存延遲。向量操作很適合于流水處理或并行處理。2023/9/2133例如:Y=a*X+YX、Y為向量,長(zhǎng)度為64;a為標(biāo)量LDF0,aADDIR4,RX,#512;由X向量的末址地裝入R4LOOP:LDF2,0(RX);取向量元素X(i)MULDF2,F0,F2;X向量與標(biāo)量乘

LDF4,0(RY);取向量元素Y(i)ADDDF4,F2,F4SD0(RY),F4;存結(jié)果向量

ADDIRX,RX,#8ADDIRY,RY,#8;地址增量

SUBR20,R4,RX;R4-RX→R20JNZR20,LOOP;判是否為02023/9/2134如果用向量處理機(jī)來完成同樣的操作LDF0,aLDVV1,RX;裝入向量XMULVV2,F0,V1;X向量與標(biāo)量乘

LDVV3,RY;取向量元素YADDVV4,V2,V3SDVRY,V4;存結(jié)果向量特點(diǎn):1、執(zhí)行指令6條(標(biāo)量執(zhí)行8*64+2=514條)。降低了存儲(chǔ)器對(duì)取指帶寬的要求。2、標(biāo)量運(yùn)算過程中存在的數(shù)據(jù)相關(guān)性,在向量運(yùn)算過程中已基本消除(共2次)。2023/9/2135一、向理處理的方式有三種處理方式:

1.橫向處理方式,又稱為水平處理方式,橫向加工方式等。向量計(jì)算是按行的方式從左至右橫向地進(jìn)行。

2.縱向處理方式,又稱為垂直處理方式,縱向加工方式等。向量計(jì)算是按列的方式自上而下縱向地進(jìn)行。

3.縱橫處理方式,又稱為分組處理方式,縱橫向加工方式等。橫向處理和縱向處理相結(jié)合的方式。2023/9/2136向量處理方式以一個(gè)簡(jiǎn)單的C語言編寫的程序?yàn)槔?,說明向量的三種處理方式的工作原理。

for(i=1;i<=n;i++)

y[i]=a[i]×(b[i]+c[i]);2023/9/21371、橫向處理方式

逐個(gè)分量進(jìn)行處理:設(shè)k中間變量

第1個(gè)分量:k=B[1]+C[1],Y[1]=A[1]×k;

第2個(gè)分量:k=B[2]+C[2],Y[2]=A[2]×k;

……

第n個(gè)分量:k=B[N]+C[N],Y[N]=A[N]×k.存在兩個(gè)問題:

在計(jì)算向量的每個(gè)分量時(shí),都發(fā)生先寫后讀的數(shù)據(jù)相關(guān)。流水線性能降低

如果采用多功能流水線,必須頻繁進(jìn)行流水線切換橫向處理方式對(duì)向量處理機(jī)不適合

即使在標(biāo)量處理機(jī)中,也經(jīng)常通過編譯器進(jìn)行指令流調(diào)度。2023/9/21382、縱向處理也稱為垂直處理方式,縱向加工方式等

T[1]=B[1]+C[1]

T[2]=B[2]+C[2]

……

T[n]=B[n]+C[n]

Y[1]=A[1]×T[1]

Y[2]=A[2]×T[2]

……

Y[N]=A[N]×T[N]采用向量指令只需要2條:

ADDVT,B,C

MULVY,A,T這種處理方式適用于向量處理機(jī),數(shù)據(jù)相關(guān)不影響流水線連續(xù)工作。不同的運(yùn)算操作只需要切換1次。2023/9/21393、縱橫向處理方式

將長(zhǎng)度為n的向量分成若干組,每組長(zhǎng)度為N,組內(nèi)按縱向方式處理,依次處理各組,組間是橫向處理方式。用于寄存器-寄存器結(jié)構(gòu)的向量處理機(jī)中

向量寄存器的長(zhǎng)度是有限的,例如,每個(gè)向量寄存器有64個(gè)寄存器。向量長(zhǎng)度N=64時(shí),需要分組處理。分組方法:n=K·N+r,其中:r?yàn)橛鄶?shù),共分K+1組。

組內(nèi)采用縱向處理方式,組間采用橫向處理方式。因此,也稱為分組處理方式。2023/9/2140二、向量處理機(jī)的分類向量處理機(jī)的基本思想是把兩個(gè)向量的對(duì)應(yīng)分量進(jìn)行運(yùn)算,產(chǎn)生一個(gè)結(jié)果向量。最關(guān)鍵問題是存儲(chǔ)器系統(tǒng)能夠滿足運(yùn)算部件帶寬的要求。主要采用兩種方法:

1.存儲(chǔ)器-存儲(chǔ)器結(jié)構(gòu)

多個(gè)獨(dú)立的存儲(chǔ)器模塊并行工作

處理機(jī)結(jié)構(gòu)簡(jiǎn)單,對(duì)存儲(chǔ)系統(tǒng)的訪問速度要求很高

2.寄存器-寄存器結(jié)構(gòu)

運(yùn)算通過向量寄存器進(jìn)行

需要大量高速寄存器,對(duì)存儲(chǔ)系統(tǒng)訪問速度的要求降低2023/9/21411、存儲(chǔ)器-存儲(chǔ)器結(jié)構(gòu)下圖說明一個(gè)具有8個(gè)存儲(chǔ)體的向量處理機(jī):

MMMMMMMM流水結(jié)構(gòu)加法器ABC=A+B三條互相獨(dú)立的數(shù)據(jù)通路,可并行工作,同一個(gè)存儲(chǔ)模塊同時(shí)只能為一個(gè)通路服務(wù)2023/9/2142

參加運(yùn)算的向量數(shù)據(jù)在存儲(chǔ)器中,運(yùn)算的結(jié)果也送到存儲(chǔ)器中,其結(jié)構(gòu)與數(shù)據(jù)流的示意圖如下圖所示。如果以向量加法為例子C=A+B存儲(chǔ)器ABC流水線運(yùn)算部件(

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論