2012年軟考軟件設(shè)計(jì)師重點(diǎn)難點(diǎn):流水線

字號(hào):

流水線這個(gè)知識(shí)點(diǎn)在軟件設(shè)計(jì)師考試中是個(gè)重點(diǎn)也是個(gè)難點(diǎn),考查的頻率比較高。之所以說(shuō)流水線是個(gè)難點(diǎn),有兩方面的原因:一方面是需要理解流水線的理論,了解其工作原理,計(jì)算方式;另一方面是在軟考當(dāng)中,對(duì)于流水線的相關(guān)計(jì)算,標(biāo)準(zhǔn)并不是完全統(tǒng)一的,這一點(diǎn)在后面我們將詳細(xì)介紹。
    流水線是指在程序執(zhí)行時(shí)多條指令重疊進(jìn)行操作的一種準(zhǔn)并行處理實(shí)現(xiàn)技術(shù)。各種部件同時(shí)處理是針對(duì)不同指令而言的,它們可同時(shí)為多條指令的不同部分進(jìn)行工作,以提高各部件的利用率和指令的平均執(zhí)行速度。
    指令流水線是將指令執(zhí)行分成幾個(gè)子過(guò)程,每一個(gè)子過(guò)程對(duì)應(yīng)一個(gè)工位,我們稱為流水級(jí)或流水節(jié)拍,這個(gè)工位在計(jì)算機(jī)里就是可以重疊工作的功能部件,稱為流水部件。
    如圖1所示,IF,ID,EX,WD分別是流水線的流水部件。
    


    圖1 幾個(gè)部件組成的流水線
    流水線要求所有的流水級(jí)部件必須在相同的時(shí)間內(nèi)完成各自的子過(guò)程。在流水線中,指令流動(dòng)一步便是一個(gè)機(jī)器周期,機(jī)器周期的長(zhǎng)度必須由最慢的流水級(jí)部件處理子過(guò)程所需的時(shí)間來(lái)決定。
    那么我們?yōu)槭裁匆岢隽魉€這個(gè)概念,以及流水線是如何提高系統(tǒng)吞吐量的呢?下面我們來(lái)看幾個(gè)圖,概念自然就清楚了。
    圖2是一個(gè)非流水線結(jié)構(gòu)系統(tǒng)執(zhí)行指令時(shí)空?qǐng)D。
    


    圖2 非流水線結(jié)構(gòu)系統(tǒng)執(zhí)行指令時(shí)空?qǐng)D
    我們從圖2中可以看到,任意一個(gè)系統(tǒng)時(shí)間都有大量的設(shè)備處于空閑狀態(tài),如第一個(gè)時(shí)間段有ID,EX,WB空閑,則第二個(gè)時(shí)間段有IF,EX,WB空閑。我們?cè)賮?lái)看采用了流水線結(jié)構(gòu)的時(shí)空?qǐng)D3。
    


    顯然,采用流水線可以大大提升系統(tǒng)資源的利用率,以及整個(gè)系統(tǒng)的吞吐量。
    流水線的操作周期取決于基本操作中最慢的那個(gè)。例如:一個(gè)3段流水線,各段的執(zhí)行時(shí)間分別為t,2t,t。則最慢的一段為2t,所以流水線操作周期為2t。
    流水線的執(zhí)行時(shí)間公式為:
    第1條指令的執(zhí)行時(shí)間+(指令條數(shù)-1)*流水線操作周期
    例題1
    若每一條指令都可以分解為取指、分析和執(zhí)行三步。己知取指時(shí)間t取指=4△t,分析時(shí)間t分析=3△t,執(zhí)行時(shí)間t執(zhí)行=5△t。如果按串行方式執(zhí)行完100條指令需要 (1) △t。如果按照流水方式執(zhí)行,執(zhí)行完100條指令需要 (2) △t。
    供選擇的答案
    (1)A. 1190 B.1195 C. 1200 D.1205
    (2)A. 504 B.507 C. 508 D.510
    試題分析
    本題考查的是計(jì)算機(jī)系統(tǒng)指令流水線方面的基礎(chǔ)知識(shí)。根據(jù)題意可以看到,在此流水線中按串行方式執(zhí)行完100條指令要用1200△t。采用流水方式執(zhí)行,執(zhí)行的總時(shí)間的關(guān)鍵取決于最長(zhǎng)的執(zhí)行時(shí)間,所以執(zhí)行完100條的時(shí)間為:4Δt+3Δt+5Δt+(100-1)*5Δt = 507Δt。
    試題答案
     C B
    例題2
    現(xiàn)采用4級(jí)流水線結(jié)構(gòu)分別完成一條指令的取指、指令譯碼和取數(shù)、運(yùn)算,以及送回運(yùn)算結(jié)果4個(gè)基本操作,每步操作時(shí)間依次為60 ns,100 ns,50 ns和70 ns。該流水線的操作周期應(yīng)為 A ns。若有一小段程序需要用20條基本指令完成(這些指令完全適合于流水線上執(zhí)行),則得到第一條指令結(jié)果需 B ns,完成該段程序需 C ns。
    在流水線結(jié)構(gòu)的計(jì)算機(jī)中,頻繁執(zhí)行 D 指令時(shí)會(huì)嚴(yán)重影響機(jī)器的效率。當(dāng)有中斷請(qǐng)求發(fā)生時(shí),采用不精確斷點(diǎn)法,則將 E 。
    供選擇的答案
     A:①50 ②70 ③100 ④280
     B:①100 ②200 ③280 ④400
     C:①1400 ②2000 ③2300 ④2600
     D:①條件轉(zhuǎn)移 ②無(wú)條件轉(zhuǎn)移 ③算術(shù)運(yùn)算 ④訪問(wèn)存儲(chǔ)器
     E:①僅影響中斷反應(yīng)時(shí)間,不影響程序的正確執(zhí)行
     ②不僅影響中斷反應(yīng)時(shí)間,還影響程序的正確執(zhí)行
     ③不影響中斷反應(yīng)時(shí)間,但影響程序的正確執(zhí)行
     ④不影響中斷反應(yīng)時(shí)間,也不影響程序的正確執(zhí)行
    試題分析
    本題主要考查對(duì)流水線技術(shù)的掌握。
    對(duì)于CPU來(lái)說(shuō),流水線技術(shù)實(shí)際上是一種以增加硬件換取性能的方式:把一條指令分解成多條更小的指令,由不同的處理單元來(lái)處理,在理想的滿負(fù)荷運(yùn)行狀態(tài)下,執(zhí)行一條指令的時(shí)間雖然沒(méi)有減少,但是由于多個(gè)處理單元同時(shí)工作,在同一時(shí)間上可以執(zhí)行不同指令的不同部分,從而使得總體的執(zhí)行時(shí)間大大減少。流水線的操作周期取決于基本操作中最慢的那個(gè)。這里最慢的是100 ns,所以操作周期是100 ns。在流水線中,其實(shí)每一條指令的執(zhí)行時(shí)間并沒(méi)有減少,而第一條指令的執(zhí)行并沒(méi)有體現(xiàn)流水線的優(yōu)勢(shì),它在4個(gè)操作周期后才能執(zhí)行完成,這以后每個(gè)操作周期都能完成一條指令的執(zhí)行。
    影響流水線效率的重要因素有條件轉(zhuǎn)移指令和中斷,因?yàn)樗鼈兇驍嗔肆魉€,使得流水線不得不重新裝載。
    不精確斷點(diǎn)法實(shí)現(xiàn)簡(jiǎn)單,但是要等到流水線內(nèi)的指令完成之后再響應(yīng)中斷。
    試題答案
     A.③ B.④ C.③ D.① E.②
    希賽IT教育專家提示:
    上面的兩個(gè)例題,都是軟考當(dāng)中出現(xiàn)過(guò)的真題。我們可以看出,兩個(gè)題在計(jì)算流水線時(shí)間方面,標(biāo)準(zhǔn)并不是統(tǒng)一的。
    在例題1中:
     4Δt+3Δt+5Δt+(100-1)*5Δt = 507Δt。
    而在例題2中:
     100ns+100ns+100ns+100ns+(20-1)*100ns=2300ns
    這兩種計(jì)算方法,都是在套用公式:“第1條指令的執(zhí)行時(shí)間+(指令條數(shù)-1)*流水線操作周期”,而對(duì)于“第1條指令的執(zhí)行時(shí)間”的理解并不相同。在例題1中,第1條指令的執(zhí)行時(shí)間是將指令執(zhí)行時(shí)的幾個(gè)階段所需時(shí)間相加得到,而在例題2中,認(rèn)為每一個(gè)階段所需時(shí)間都是流水線的周期時(shí)間。其中前者是流水線的理論計(jì)算方法,而后者是我們?cè)谠O(shè)計(jì)硬件流水線時(shí),常用的方式。兩種計(jì)算方法,從理論上來(lái)講,都是正確的,但考試時(shí),只有一個(gè)是正確答案。那么我們應(yīng)該怎么做呢?由于每次考試中,無(wú)論認(rèn)可的是哪種計(jì)算方式,都只會(huì)把這種計(jì)算方式的正確答案放入選項(xiàng)中,而不會(huì)將兩個(gè)正確答案都放入,所以我們?cè)谟靡环N方式不能得到正確選項(xiàng)時(shí),應(yīng)采用另一種方式進(jìn)行計(jì)算,來(lái)得到正確答案。