指令流水線 你理解多少?

2021-06-06 11:19:05 字數 3140 閱讀 7367

流水線:

流水線是指在程式執行時多條指令重疊進行操作的一種準並行處理實現技術。各種部件同時處理是針對不同指令而言的,它們可同時為多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度。概念我們說那麼多,我們現在深入去理解,光有概念都是一些比較抽象的東西,我們看圖:我們有三個步驟。

然後我們來看一下一般情況下我們的指令是一條一條的來處理,第一條指令處理完,再處理第二條,再處理第三條,這種順序來處理機器裡邊的裝置的利用情況是怎樣的呢?我們來看這圖:

若我們每個指令的執行時間是1ms,

那麼三條指令執行完需要9ms的時間,我們還可以看得出來的是:取值這個裝置只有在1ms,4ms,7ms的時候工作,第一條指令只有三分之一的時間進行工作,別的時間就空閒了,對於這樣子中間就產生了很多裝置的空閒。所以我們引入了流水線。

取值裝置只要完成第一條指令的取值,就立即進入第二條指令的取值,第二條指令完成之後,就馬上執行第三條;分析這個操作也是一樣,我們看的出來,在5ms的時間就完成了。

當然我們也能觀察的出,單個指令的執行時間都是3ms。所以流水線對單條指令的執行是無效的。

流水線除了指令流水線,還有一種就是運算操作流水線,運算操作流水線就是計算機在執行各種運算操作時也可以應用流水線來提高運算速度,這是操作都是分階段執行的,所以我們用流水線來提高運算速度。

流水線指令執行時間的計算:

我們光看公式就幾個變數,不好理解,我們來看例題:

很簡單的一道題目,我們看的出來,很容易我們就計算的出來:(2+2+1)+(100-1)*2

我們接下來看乙個圖,來深刻的理解一下:

從這個圖中我們假設:取值5ns,分析 2ns,執行 5ns;那麼我們執行完一條指令應該是:  

若分析在取值之後執行的話,只需要7ns就能完成分析階段,那麼執行完成只需要12ns,而不需要15ns。

我們為什麼說分析能在取值之後馬上執行呢?我們再來看一下這個執行步驟:

第一條指令的取值完成之後,這兩條線就去掉了,就是說阻礙i2和c1發展的線就斷了,他們就能執行:

我們很清楚的看到分析就和下一條指令的取值就能進行了。

我們接下來繼續看乙個有點反常的題目,有點意思:

我們要是按照之前的那個公式

但是當我們的選項裡邊沒有這個答案,我們應該怎麼辦?想想,我們沒有錯,我們是按照公式來的,肯定錯不了。但是有時候我們為了得分,所以我們必須要向另一種方向轉變,就是我們的週期是100ns,那麼我們都按照週期來算,那麼我們第一條指令的完成時間就是:4*100=400,然後完成100條指令的時間就是:100*4+(20-1)*100=2300。那麼這個題目我們就能拿分了。

流水線的吞吐率

我們回頭看看這個吞吐率應該是:100/(2+2+1)+(100-1)*2=100/203

流水線的加速比

完成同樣的任務,不使用流水線所用的時間與使用流水線所用的時間之比。

我們來看乙個例題:

我們按照公式計算得到:

s=(6+7+8+9+6)n/[(6+7+8+9+6)+9(n-1)]=36n/[36+9(n-1)]=4n/(4+n-1)

我們用乙個極限的思想來求乙個加速比: 

流水線的效率

流水線的裝置利用率,公式是:

效率和吞吐率的關係:

和加速比的關係:

效率的計算,我們根據吞吐率和加速比都能直接的計算出來,所以在這裡就不再舉例了。原來流水線的東西還蠻多的嘛,但是不難,慢慢理解,變成自己的知識。

指令流水線的畫法

指令流水線的畫法 解題想法 流水線有五段,分別為s1,s2,s3,s4,s5.其中s4的執行時間為2 t,其他都是 t,乘法使用的是s1,s2,s5,加法使用的是s1,s3,s4,s5。利用吞吐率加速比和效率公式可不可以計算?對於此類題目,最好畫出指令流水線,因為公式法有一定的侷限性。畫好了!這樣畫...

評測師之 指令流水線吞吐率

往年真題 某指令流水線由4段組成,各段所需要的時間如下圖所示。連續輸出8條指令時的吞吐率 單位時間內流水線所完成的任務數或輸出的結果數 為 c a.8 56 t b.8 32 t c.8 28 t d.8 24 t 解析 當流水線各段所經歷的時間不一樣時,吞吐率的計算公式為 吞吐率tp 指令數 執行...

Linux學習筆記 002 ARM指令流水線

在cpu中,對於指令的處理一般分為 取指令 instruction fetch,if 階段是將一條指令從主存中取到指令暫存器的過程。程式計數器pc中的數值,用來指示當前指令在主存中的位置。當一條指令被取出後,pc中的數值將根據指令字長度而自動遞增 若為單字長指令,則 pc 1 pc 若為雙字長指令,...