9 计算机组成原理第五章 中央处理器 指令流水线
文章目錄
- 1 指令流水線基本概念性能指標(biāo)
- 1.1 指令流水的定義
- 1.1.1 指令分法
- 1.1.2 指令執(zhí)行時(shí)間
- 1.2 流水線的表示方法
- 1.3 流水線的性能指標(biāo)
- 2 指令流水線影響因素分類
- 2.1 機(jī)器周期的設(shè)置
- 2.2 影響流水線的因素
- 2.2.1 數(shù)據(jù)相關(guān)(數(shù)據(jù)沖突)三種類型
- 2.2.2 流水線影響因素小結(jié)
- 2.3 流水線的分類
- 2.4 流水線的多發(fā)技術(shù)
- 2.5 指令流水線小結(jié)
1 指令流水線基本概念性能指標(biāo)
1.1 指令流水的定義
1.1.1 指令分法
一條指令的執(zhí)行過程可以分成多個(gè)階段(或過程)。
根據(jù)計(jì)算機(jī)的不同,具體的分法也不同。
- 取指:根據(jù)PC內(nèi)容訪問主存儲(chǔ)器,取出一條指令送到IR中。
- 分析:對(duì)指令操作碼進(jìn)行譯碼,按照給定的尋址方式和地址字段中的內(nèi)容形成操作數(shù)的有效地址EA,并從有效地址EA中取出操作數(shù)。
- 執(zhí)行:根據(jù)操作碼字段,完成指令規(guī)定的功能,即把運(yùn)算結(jié)果寫到通用寄存器或主存中。
以上分法特點(diǎn)是:每個(gè)階段用到的硬件不一樣。
1.1.2 指令執(zhí)行時(shí)間
設(shè)取指、分析、執(zhí)行3個(gè)階段的時(shí)間都相等,用t表示,按以下幾種執(zhí)行方式分析n條指令的執(zhí)行時(shí)間:
傳統(tǒng)馮·諾依曼機(jī)采用順序執(zhí)行方式,又稱串行執(zhí)行方式。
優(yōu)點(diǎn):控制簡(jiǎn)單,硬件代價(jià)小。
缺點(diǎn):執(zhí)行指令的速度較慢,在任何時(shí)刻,處理機(jī)中只有一條指令在執(zhí)行,各功能部件的利用率很低。
優(yōu)點(diǎn):程序的執(zhí)行時(shí)間縮短了1/3,各功能部件的利用率明顯提高。
缺點(diǎn):需要付出硬件上較大開銷的代價(jià),控制過程也比順序執(zhí)行復(fù)雜了。
與順序執(zhí)行方式相比,指令的執(zhí)行時(shí)間縮短近2/3。這是一種理想的指令執(zhí)行方式,在正常情況下,處理機(jī)中同時(shí)有3條指令在執(zhí)行。
注:也可以把每條指令的執(zhí)行過程分成4個(gè)或5個(gè)階段,分成5個(gè)階段是比較常見的做法。
1.2 流水線的表示方法
不同的階段占用不同的資源,有幾個(gè)階段,縱坐標(biāo)就有幾個(gè)位置
1.3 流水線的性能指標(biāo)
(1)吞吐率
(2)加速比
(3)效率
- 吞吐率是指在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量,或是輸出結(jié)果的數(shù)量。
- 設(shè)任務(wù)數(shù)為n;處理完成n個(gè)任務(wù)所用的時(shí)間為Tk
- 則計(jì)算流水線吞吐率(TP)的最基本的公式為TP=n/Tk
理想情況下,流水線的時(shí)空?qǐng)D如下:
理想情況:
各階段花費(fèi)時(shí)間相同
每個(gè)階段結(jié)束后能立即進(jìn)入下一階段
一條指令的執(zhí)行分為k個(gè)階段,每個(gè)階段耗時(shí)Δt,一般取Δt=一個(gè)時(shí)鐘周期
Tk=(k+n-1)Δt
第一條指令kΔt時(shí)間結(jié)束,其余n-1條指令每隔Δt時(shí)間執(zhí)行
流水線的實(shí)際吞吐率為TP=n /(k+n-1)Δt
當(dāng)連續(xù)輸入的任務(wù)n→oo時(shí),得最大吞吐率為TPmax=1/Δt
- 第一條指令執(zhí)行的時(shí)間→裝入時(shí)間
- 最后一條指令從輸入到執(zhí)行完成的時(shí)間→排空時(shí)間
- 裝入時(shí)間和排空時(shí)間中間的那塊時(shí)間,流水線是最理想的狀態(tài),每一個(gè)時(shí)刻,每個(gè)功能部件都被占用,并且可以保證每隔Δt時(shí)間就有一個(gè)任務(wù)被提交
- 加速比表示完成同樣一批任務(wù),不使用流水線所用的時(shí)間與使用流水線所用的時(shí)間之比。
設(shè) To 表示不使用流水線時(shí)的執(zhí)行時(shí)間,即順序執(zhí)行所用的時(shí)間;
Tk 表示使用流水線時(shí)的執(zhí)行時(shí)間
則計(jì)算流水線加速比(S)的基本公式為S=To / Tk
單獨(dú)完成一個(gè)任務(wù)耗時(shí)為kΔt,則順序完成n個(gè)任務(wù)耗時(shí)To=nkΔt
Tk=(k+n-1)Δt
實(shí)際加速比為S=knΔt/(k+n-1)Δt =kn/ k+n-1
當(dāng)連續(xù)輸入的任務(wù)n→oo時(shí),最大加速比為Smax=k。
表示一個(gè)充分流動(dòng)的流水線,它的工作能力是原來不使用流水線的k倍
- 流水線的設(shè)備利用率稱為流水線的效率。
- 在時(shí)空?qǐng)D上,流水線的效率定義為完成n個(gè)任務(wù)占用的時(shí)空區(qū)有效面積與n個(gè)任務(wù)所用的時(shí)間與k個(gè)流水段所圍成的時(shí)空區(qū)總面積之比。
效率轉(zhuǎn)化為:順序完成n個(gè)任務(wù)耗時(shí)To=nkΔt/k倍使用流水線的時(shí)間
- 效率=紅/藍(lán) 表示使用的設(shè)備占所有總設(shè)備的比率
總=長(zhǎng)TkX寬k
當(dāng)連續(xù)輸入的任務(wù)n→oo時(shí),最高效率為Emax=1。
2 指令流水線影響因素分類
2.1 機(jī)器周期的設(shè)置
為方便流水線的設(shè)計(jì),將每個(gè)階段的耗時(shí)取成一樣,以最長(zhǎng)耗時(shí)為準(zhǔn)。
即此處應(yīng)將機(jī)器周期設(shè)置為100ns。
流水線每一個(gè)功能段部件后面都要有一個(gè)緩沖寄存器,或稱為鎖存器,其作用是保存本流水段的執(zhí)行結(jié)果,提供給下一流水段使用。
設(shè)置鎖存器的目的:設(shè)計(jì)流水線時(shí),在這條指令處于當(dāng)前階段時(shí),另一條指令是在用下一階段的資源,如果這條指令這一階段數(shù)據(jù)提前流入下一階段,會(huì)破壞當(dāng)前指令的指令
2.2 影響流水線的因素
(1)結(jié)構(gòu)相關(guān)(資源沖突)
(2)數(shù)據(jù)相關(guān)(數(shù)據(jù)沖突)
(3)控制相關(guān)(控制沖突)
由于多條指令在同一時(shí)刻爭(zhēng)用同一資源而形成的沖突稱為結(jié)構(gòu)相關(guān)。
解決辦法:
數(shù)據(jù)相關(guān)指在一個(gè)程序中,存在必須等前一條指令執(zhí)行完才能執(zhí)行后一條指令的情況,則這兩條指令即為數(shù)據(jù)相關(guān)。
解決辦法:
數(shù)據(jù)相關(guān)(數(shù)據(jù)沖突)例題:
假設(shè)某指令流水線采用“按序發(fā)射(即不能把后面的指令移到前面執(zhí)行,如果發(fā)生沖突,只能等待),按序完成”方式,沒有采用轉(zhuǎn)發(fā)技術(shù)(也叫數(shù)據(jù)旁路技術(shù))處理數(shù)據(jù)相關(guān),并且同一寄存器的讀和寫操作不能在同一個(gè)時(shí)鐘周期內(nèi)進(jìn)行。若高級(jí)語言程序中某賦值語句為x=a+b,x、a和b均為int型變量,它們的存儲(chǔ)單元地址分別表示為[x]、[a]和[b]。該語句對(duì)應(yīng)的指令序列及其在指令流中的執(zhí)行過程如下圖所示。
I1 I2 I3 I4指令表示含義:
解答:I3與I1和I2存在數(shù)據(jù)相關(guān),I4和I3存在數(shù)據(jù)相關(guān)
說明:對(duì)于相關(guān)的指令而言,只有等到相關(guān)的數(shù)據(jù)寫回之后,才可以開始這條指令的譯碼,取指有序進(jìn)行,取指結(jié)束發(fā)現(xiàn)相關(guān),是譯碼階段被延遲
2.2.1 數(shù)據(jù)相關(guān)(數(shù)據(jù)沖突)三種類型
數(shù)據(jù)的基本操作:讀(R)、寫(W)
沖突的基本類型:RAW(A代表after,倒過來念,寫后讀)、WAR(讀后寫)、WAW(寫后寫)
注:“按序發(fā)射,按序完成”時(shí),只可能出現(xiàn)RAW相關(guān)。
當(dāng)流水線遇到轉(zhuǎn)移指令和其他改變PC值的指令而造成斷流時(shí),會(huì)引起控制相關(guān)。
解決辦法:
2.2.2 流水線影響因素小結(jié)
2.3 流水線的分類
- 根據(jù)流水線使用的級(jí)別的不同,流水線可分為部件功能級(jí)流水線、處理機(jī)級(jí)流水線和處理機(jī)間流水線。
- 部件功能級(jí)流水就是將復(fù)雜的算術(shù)邏輯運(yùn)算組成流水線工作方式。例如,可將浮點(diǎn)加法操作分成求階差、對(duì)階、尾數(shù)相加以及結(jié)果規(guī)格化等4個(gè)子過程。
- 處理機(jī)級(jí)流水是把一條指令解釋過程分成多個(gè)子過程,如前面提到的取指、譯碼、執(zhí)行、訪存及寫回5個(gè)子過程。
- 處理機(jī)間流水是一種宏流水,其中每一個(gè)處理機(jī)完成某一專門任務(wù),各個(gè)處理機(jī)所得到的結(jié)果需存放在與下一個(gè)處理機(jī)所共享的存儲(chǔ)器中。
- 按流水線可以完成的功能、流水線可分為單功能流水線和多功能流水線。
- 單功能流水線指只能實(shí)現(xiàn)一種固定的專門功能的流水線;
- 多功能流水線指通過各段間的不同連接方式可以同時(shí)或不同時(shí)地實(shí)現(xiàn)多種功能的流水線。
- 按同一時(shí)間內(nèi)各段之間的連接方式,流水線可分為靜態(tài)流水線和動(dòng)態(tài)流水線。
- 靜態(tài)流水線指在同一時(shí)間內(nèi),流水線的各段只能按同一種功能的連接方式工作。
- 動(dòng)態(tài)流水線指在同一時(shí)間內(nèi),當(dāng)某些段正在實(shí)現(xiàn)某種運(yùn)算時(shí),另一些段卻正在進(jìn)行另一種運(yùn)算。這樣對(duì)提高流水線的效率很有好處,但會(huì)使流水線控制變得很復(fù)雜。
4.線性流水線和非線性流水線
- 按流水線的各個(gè)功能段之間是否有反饋信號(hào),流永線可分為線性流水線與非線性流水線。
- 線性流水線中,從輸入到輸出,每個(gè)功能段只允許經(jīng)過一次,不存在反饋回路。
- 非線性流水線存在反饋回路,從輸入到輸出過程中,某些功能段將數(shù)次通過流水線,這種流水線適合進(jìn)行線性遞歸的運(yùn)算。
2.4 流水線的多發(fā)技術(shù)
每個(gè)時(shí)鐘周期內(nèi)可并發(fā)多條獨(dú)立指令
要配置多個(gè)功能部件
不能調(diào)整指令的執(zhí)行順序
通過編譯優(yōu)化技術(shù),把可并行執(zhí)行的指令搭配起來
在一個(gè)時(shí)鐘周期內(nèi)再分段(3段)
在一個(gè)時(shí)鐘周期內(nèi)一個(gè)功能部件使用多次(3次)
不能調(diào)整指令的執(zhí)行順序
靠編譯程序解決優(yōu)化問題
超流水技術(shù)特點(diǎn):流水線速度是原來速度的3倍
由編譯程序挖掘出指令間潛在的并行性,
將多條能并行操作的指令組合成一條
具有多個(gè)操作碼字段的超長(zhǎng)指令(可達(dá)幾百位)
2.5 指令流水線小結(jié)
總結(jié)
以上是生活随笔為你收集整理的9 计算机组成原理第五章 中央处理器 指令流水线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计-人脸表情识别系统、人工智能
- 下一篇: 【大数据学习-hadoop1】大数据如何