流水線這個知識點在軟體設計師考試中是個重點也是個難點,考查的頻率比較高。之所以
說流水線是個難點,有兩方面的原因:一方面是需要理解流水線的理論,了解其工作原理,計
算方式;另一方面是在軟考當中,對於流水線的相關計算,標準並不是完全統一的,這一點在
後面我們將詳細介紹。
流水線是指在程式執行時多條指令重疊進行操作的一種準並行處理實現技術。各種部件同
時處理是針對不同指令而言的,它們可同時為多條指令的不同部分進行工作,以提高各部件的
利用率和指令的平均執行速度。
指令流水線是將指令執行分成幾個子過程,每乙個子過程對應乙個工位,我們稱為流水級
或流水節拍,這個工位在計算機裡就是可以重疊工作的功能部件,稱為流水部件。
如圖1所示,if,id,ex,wd分別是流水線的流水部件。
圖1 幾個部件組成的流水線
流水線要求所有的流水級部件必須在相同的時間內完成各自的子過程。在流水線中,指令
流動一步便是乙個機器週期,機器週期的長度必須由最慢的流水級部件處理子過程所需的時間
來決定。
那麼我們為什麼要提出流水線這個概念,以及流水線是如何提高系統吞吐量的呢?下面我
們來看幾個圖,概念自然就清楚了。
圖2是乙個非流水線結構系統執行指令時空圖。
圖2 非流水線結構系統執行指令時空圖
我們從圖2中可以看到,任意乙個系統時間都有大量的裝置處於空閒狀態,如第乙個時間段
有id,ex,wb空閒,則第二個時間段有if,ex,wb空閒。我們再來看採用了流水線結構的時空
圖3。
顯然,採用流水線可以大大提公升系統資源的利用率,以及整個系統的吞吐量。
流水線的操作週期取決於基本操作中最慢的那個。例如:乙個3段流水線,各段的執行時間
分別為t,2t,t。則最慢的一段為2t,所以流水線操作週期為2t。
流水線的執行時間公式為:
第1條指令的執行時間+(指令條數-1)*流水線操作週期
例題1
若每一條指令都可以分解為取指、分析和執行三步。己知取指時間t取指=4△t,分析時間
t分析=3△t,執行時間t執行=5△t。如果按序列方式執行完100條指令需要 (1) △t。如果
按照流水方式執行,執行完100條指令需要 (2) △t。
供選擇的答案
(1)a. 1190 b.1195 c. 1200 d.1205
(2)a. 504 b.507 c. 508 d.510
試題分析
本題考查的是計算機系統指令流水線方面的基礎知識。根據題意可以看到,在此流水線中
按序列方式執行完100條指令要用1200△t。採用流水方式執行,執行的總時間的關鍵取決於最
長的執行時間,所以執行完100條的時間為:4δt+3δt+5δt+(100-1)*5δt = 507δt 。
試題答案
c b
例題2
現採用4級流水線結構分別完成一條指令的取指、指令解碼和取數、運算,以及送回運算結
果4個基本操作,每步操作時間依次為60 ns,100 ns,50 ns和70 ns。該流水線的操作週期應
為 a ns。若有一小段程式需要用20條基本指令完成(這些指令完全適合於流水線上執行),則
得到第一條指令結果需 b ns,完成該段程式需 c ns。
在流水線結構的計算機中,頻繁執行 d 指令時會嚴重影響機器的效率。當有中斷請求發生
時,採用不精確斷點法,則將 e 。
供選擇的答案
a:①50 ②70 ③100 ④280
b:①100 ②200 ③280 ④400
c:①1400 ②2000 ③2300 ④2600
d:①條件轉移 ②無條件轉移 ③算術運算 ④訪問儲存器
e:①僅影響中斷反應時間,不影響程式的正確執行
②不僅影響中斷反應時間,還影響程式的正確執行
③不影響中斷反應時間,但影響程式的正確執行
④不影響中斷反應時間,也不影響程式的正確執行
試題分析
本題主要考查對流水線技術的掌握。
對於cpu來說,流水線技術實際上是一種以增加硬體換取效能的方式:把一條指令分解成多
條更小的指令,由不同的處理單元來處理,在理想的滿負荷執行狀態下,執行一條指令的時間
雖然沒有減少,但是由於多個處理單元同時工作,在同一時間上可以執行不同指令的不同部分
,從而使得總體的執行時間大大減少。流水線的操作週期取決於基本操作中最慢的那個。這裡
最慢的是100 ns,所以操作週期是100 ns。在流水線中,其實每一條指令的執行時間並沒有減
少,而第一條指令的執行並沒有體現流水線的優勢,它在4個操作週期後才能執行完成,這以後
每個操作週期都能完成一條指令的執行。
影響流水線效率的重要因素有條件轉移指令和中斷,因為它們打斷了流水線,使得流水線
上面的兩個例題,都是軟考當中出現過的真題。我們可以看出,兩個題在計算流水線時間
方面,標準並不是統一的。
在例題1中:
4δt+3δt+5δt+(100-1)*5δt = 507δt。
而在例題2中:
100ns+100ns+100ns+100ns+(20-1)*100ns=2300ns
這兩種計算方法,都是在套用公式:「第1條指令的執行時間+(指令條數-1)*流水線操
作週期」,而對於「第1條指令的執行時間」的理解並不相同。在例題1中,第1條指令的執行時
間是將指令執行時的幾個階段所需時間相加得到,而在例題2中,認為每乙個階段所需時間都是
流水線的週期時間。其中前者是流水線的理論計算方法,而後者是我們在設計硬體流水線時,
常用的方式。兩種計算方法,從理論上來講,都是正確的,但考試時,只有乙個是正確答案。
那麼我們應該怎麼做呢?由於每次考試中,無論認可的是哪種計算方式,都只會把這種計算方
式的正確答案放入選項中,而不會將兩個正確答案都放入,所以我們在用一種方式不能得到正
確選項時,應採用另一種方式進行計算,來得到正確答案。
中級軟體設計師考試總結
剛剛開始說要考這個的時候,興趣很大,因為作為乙個菜鳥級的程式設計師好想有乙個屬於自己的證件,於是就有了這篇總結。這個考試,考完了還是想留下點什麼,可能是為了自己下一次,但是絕對是為了下面即將要考試的小朋友。還是同樣的感覺,每次考試前都感覺自己準備的不充分,這個是肯定的,按照二八理論來說,總是有一些題...
中級軟體設計師考試總結
剛剛開始說要考這個的時候,興趣很大,因為作為乙個菜鳥級的程式設計師好想有乙個屬於自己的證件,於是就有了這篇總結。這個考試,考完了還是想留下點什麼,可能是為了自己下一次,但是絕對是為了下面即將要考試的小朋友。還是同樣的感覺,每次考試前都感覺自己準備的不充分,這個是肯定的,按照二八理論來說,總是有一些題...
中級軟體設計師筆記
二進位制 10100.01 1x2的4次方 1x2的2次方 1x2的 2次方 七進製 604.01 6 7的2次方 4 7的0次方 1 7的 2次方 十進位制轉其他進製 短除法。求差 求和 等。短除法 94轉換為二進位制 2 94 餘 0 2 47 1 2 23 1 2 11 1 2 5 1 2 2...