各位學員大家好,相信大家在學習計算機系統構成及硬件基礎知識時,感覺指令流水線這部分比較難,其實只要大家掌握了解題方法,很快就可以定位出正確答案,接下來就帶領大家一起來學習一下!
1、例題:某指令流水線由4段組成,各段所需的時間如下圖所示。連續輸入8條指令時的吞吐率(單位時間內流水線所完成的任務數或輸出的結果數)為( )?
A、8/56Δt???????
B、8/32Δt
C、8/28Δt????????????
D、8/24Δt
【昊洋詳解】:這道題目是在2013年軟件評測師考試真題的第4題,是一道典型的指令流水線類型題目。流水線是指在程序執行時,多條指令重疊進行操作的一種準并行處理實現技術。一般情況下有固定的三個步驟:取值—>分析—>執行,而本題顯然沒有那么復雜,只需要大家記住一個公式就可以快速地計算出流水線方式所需總時間。該公式為:
其中n表示有n條指令,m表示流水線一共有m段組成,△ti表示指令流中組成的每一段所用的時間,其中i從1開始,最大值為m,△tj表示指令流中最長耗時的一段。簡而言之,n條指令使用流水線方式所需的總時間就是:一條指令使用流水線方式執行完m段所需的完整時間+(n-1)乘以指令流m段中耗時最長的那段的耗時。
該題目中提到的流水線的吞吐率指的是計算機中的流水線在特定的時間內可以處理的任務或輸出的數據的結果的數量。流水線的吞吐率可以進一步分為最大吞吐率和實際吞吐率。該題目中要求解的是實際吞吐率,計算方式就是輸入的指令條數除以總耗時。
以流水方式執行8條指令的執行時間套用上面的公式可以快速得出8條指令所需總時間為:(1Δt+2Δt+3Δt+1Δt)+(8-1)*3Δt =28Δt,因此吞吐率為8/28Δt,故正確答案為C。
理解了以上的解析之后,我們還需要融會貫通,接下來就通過幾種指令流水線題目的變種練習,來檢驗一下大家學習的效果。
1.3.3 鞏固練習題
(1)某指令流水線由4段組成,各段所需的時間分別為2ms、1ms、5ms和2ms。則連續輸入10條指令時所需的總耗時為為( )?
A、55ms
B、110ms
C、100ms
D、50ms
(2)假設磁盤塊與緩沖區大小相同,每個盤塊讀入緩沖區的時間為10μs,由緩沖區送至用戶區的時間是5μs,系統對每個磁盤塊數據的處理時間為2μs。若用戶需要將大小為10個磁盤塊的Doc文件逐塊從磁盤讀入緩沖區,并送至用戶區進行處理,那么采用單緩沖區需要花費的時間為(1 )μs;采用雙緩沖區需要花費的時間為(2 )μs。
1、A、100?? B、107?? C、152?? D、170
2、A、100?? B、107?? C、152?? D、170
1.3.4 練習題參考答案
(1)解析:本題考察的知識點和例題基本上一模一樣,相信只要大家把例題搞明白了,這道題很容易就能夠得出答案。首先確定有10條指令,流水線的四段組成,耗時最長的是第三段,耗時5ms,最后我們套用公式,總耗時為:(2ms+1ms +5ms +2ms)+(10-1)*5ms =55ms,故正確答案為A。
(2)解析:本題同樣是考察指令流水線的知識,只不過增加了迷惑性,但是只要大家認真思考,就可以撥云見日,快速掌握其精髓。這道題的主要難點在于單緩沖區和雙緩沖區的區別,首先我們能夠確定的是,采用雙緩沖區時,計算方法和我們例題中的情景是一樣的,我們可以確定的是有10個磁盤塊,一條完整的流水線分為三部分,耗時分別為10μs、5μs和2μs,所以總耗時套用公式為:(10μs+5μs+2μs)+(10-1)*10μs=107μs,故第二問的正確答案為B。
接下來我們再回頭看一下第一問,我們知道通過題干知道采用流水線進行處理時,每個數據要經過3個步驟:讀入緩沖區—>由緩沖區送至用戶區—>系統處理。這剛好對應了我們例題1中提到的三個固定步驟:取值—>分析—>執行。在這三個步驟中,前兩個步驟是需要用到緩沖區的,所以這兩個步驟執行時,緩沖區都不可以開始下一個磁盤區的處理工作,這就是單緩沖區的限制,所以三個步驟可合并為兩個:讀入緩沖區并送用戶區、處理。此時,仍然可應用流水線的方式來提升效率,只不過我們將其濃縮成了兩個步驟。此時我們再次確定基礎數據,有10個磁盤塊,一條完整的流水線分為兩個部分,耗時分別為15μs和2μs,所以總耗時套用公式為:(15μs+2μs)+(10-1)*15μs=152μs,故第一問的正確答案為C。
該題目相對例題來說,增加了難度,但是大家如果在考試的時候遇到了相同的知識點,但是形式不同時,不用緊張,只需要根據自己掌握的知識和題干中的提示,大膽推理即可。在此,昊洋老師送給大家一句話:遇到問題,分析問題,解決問題。
寫于2020年6月5日
作者:昊洋講師
版權所有,侵權必究