2010軟件水平考試軟件設(shè)計師重點難點輔導(dǎo)(2)

字號:

2010軟件水平考試軟件設(shè)計師重點難點輔導(dǎo)(2)

    流水線這個知識點在軟件設(shè)計師考試中是個重點也是個難點,考查的頻率比較高。之所以說流水線是個難點,有兩方面的原因:一方面是需要理解流水線的理論,了解其工作原理,計算方式;另一方面是在軟考當中,對于流水線的相關(guān)計算,標準并不是完全統(tǒng)一的,這一點在后面我們將詳細介紹。
    流水線是指在程序執(zhí)行時多條指令重疊進行操作的一種準并行處理實現(xiàn)技術(shù)。各種部件同時處理是針對不同指令而言的,它們可同時為多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執(zhí)行速度。
    指令流水線是將指令執(zhí)行分成幾個子過程,每一個子過程對應(yīng)一個工位,我們稱為流水級或流水節(jié)拍,這個工位在計算機里就是可以重疊工作的功能部件,稱為流水部件。
    如圖1所示,IF,ID,EX,WD分別是流水線的流水部件。
    流水線要求所有的流水級部件必須在相同的時間內(nèi)完成各自的子過程。在流水線中,指令流動一步便是一個機器周期,機器周期的長度必須由慢的流水級部件處理子過程所需的時間來決定。
    那么我們?yōu)槭裁匆岢隽魉€這個概念,以及流水線是如何提高系統(tǒng)吞吐量的呢?下面我們來看幾個圖,概念自然就清楚了。
    圖2是一個非流水線結(jié)構(gòu)系統(tǒng)執(zhí)行指令時空圖。
    我們從圖2中可以看到,任意一個系統(tǒng)時間都有大量的設(shè)備處于空閑狀態(tài),如第一個時間段有ID,EX,WB空閑,則第二個時間段有IF,EX,WB空閑。
    我們再來看采用了流水線結(jié)構(gòu)的時空圖3。
    顯然,采用流水線可以大大提升系統(tǒng)資源的利用率,以及整個系統(tǒng)的吞吐量。
    流水線的操作周期取決于基本操作中慢的那個。例如:一個3段流水線,各段的執(zhí)行時間分別為t,2t,t。則慢的一段為2t,所以流水線操作周期為2t。
    流水線的執(zhí)行時間公式為:
    第1條指令的執(zhí)行時間+(指令條數(shù)-1)*流水線操作周期
    例題1
    若每一條指令都可以分解為取指、分析和執(zhí)行三步。己知取指時間t取指=4△t,分析時間t分析=3△t,執(zhí)行時間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
    試題分析
    本題考查的是計算機系統(tǒng)指令流水線方面的基礎(chǔ)知識。根據(jù)題意可以看到,在此流水線中按串行方式執(zhí)行完100條指令要用1200△t。采用流水方式執(zhí)行,執(zhí)行的總時間的關(guān)鍵取決于長的執(zhí)行時間,所以執(zhí)行完100條的時間為:4Δt+3Δt+5Δt+(100-1)*5Δt = 507Δt。
    試題答案
    C B
    例題2
    現(xiàn)采用4級流水線結(jié)構(gòu)分別完成一條指令的取指、指令譯碼和取數(shù)、運算,以及送回運算結(jié)果4個基本操作,每步操作時間依次為60 ns,100 ns,50 ns和70 ns。該流水線的操作周期應(yīng)為 A ns。若有一小段程序需要用20條基本指令完成(這些指令完全適合于流水線上執(zhí)行),則得到第一條指令結(jié)果需 B ns,完成該段程序需 C ns。
    在流水線結(jié)構(gòu)的計算機中,頻繁執(zhí)行 D 指令時會嚴重影響機器的效率。當有中斷請求發(fā)生時,采用不精確斷點法,則將 E 。
    供選擇的答案
    A:①50 ②70 ③100 ④280
    B:①100 ②200 ③280 ④400
    C:①1400 ②2000 ③2300 ④2600
    D:①條件轉(zhuǎn)移 ②無條件轉(zhuǎn)移 ③算術(shù)運算 ④訪問存儲器
    E:①僅影響中斷反應(yīng)時間,不影響程序的正確執(zhí)行
    ②不僅影響中斷反應(yīng)時間,還影響程序的正確執(zhí)行
    ③不影響中斷反應(yīng)時間,但影響程序的正確執(zhí)行
    ④不影響中斷反應(yīng)時間,也不影響程序的正確執(zhí)行
    試題分析
    本題主要考查對流水線技術(shù)的掌握。
    對于CPU來說,流水線技術(shù)實際上是一種以增加硬件換取性能的方式:把一條指令分解成多條更小的指令,由不同的處理單元來處理,在理想的滿負荷運行狀態(tài)下,執(zhí)行一條指令的時間雖然沒有減少,但是由于多個處理單元同時工作,在同一時間上可以執(zhí)行不同指令的不同部分,從而使得總體的執(zhí)行時間大大減少。流水線的操作周期取決于基本操作中慢的那個。這里慢的是100 ns,所以操作周期是100 ns。在流水線中,其實每一條指令的執(zhí)行時間并沒有減少,而第一條指令的執(zhí)行并沒有體現(xiàn)流水線的優(yōu)勢,它在4個操作周期后才能執(zhí)行完成,這以后每個操作周期都能完成一條指令的執(zhí)行。
    影響流水線效率的重要因素有條件轉(zhuǎn)移指令和中斷,因為它們打斷了流水線,使得流水線不得不重新裝載。
    不精確斷點法實現(xiàn)簡單,但是要等到流水線內(nèi)的指令完成之后再響應(yīng)中斷。
    試題答案
    A.③ B.④ C.③ D.① E.②
    上面的兩個例題,都是軟考當中出現(xià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
    這兩種計算方法,都是在套用公式:“第1條指令的執(zhí)行時間+(指令條數(shù)-1)*流水線操作周期”,而對于“第1條指令的執(zhí)行時間”的理解并不相同。在例題1中,第1條指令的執(zhí)行時間是將指令執(zhí)行時的幾個階段所需時間相加得到,而在例題2中,認為每一個階段所需時間都是流水線的周期時間。其中前者是流水線的理論計算方法,而后者是我們在設(shè)計硬件流水線時,常用的方式。兩種計算方法,從理論上來講,都是正確的,但考試時,只有一個是正確答案。那么我們應(yīng)該怎么做呢?由于每次考試中,無論認可的是哪種計算方式,都只會把這種計算方式的正確答案放入選項中,而不會將兩個正確答案都放入,所以我們在用一種方式不能得到正確選項時,應(yīng)采用另一種方式進行計算,來得到正確答案。