流水線和吞吐率

2021-08-03 07:26:23 字數 2151 閱讀 9650

流水線設計將原來乙個時鐘週期完成的較大的組合邏輯,通過切割後分由多個時鐘完成,所以,該部分邏輯執行的時鐘頻率會有明顯提公升,流水線設計只在開始處理時需要一定的處理時間,以後就會不間斷的輸出資料,從而大大提高處理速度,所以系統的頻率就提高了。

jumphigh1987 (2012-8-06 15:02:06)

9樓正解! 假如以前乙個組合邏輯需要50納秒完成,那其對外顯示的就是50ns才能完成這個功能,之後每50納秒完成這個功能。 引入流水線以後(假如分成十級,每級5納秒),第一次這個功能需要50納秒出來結果,之後每隔5納秒就會輸出乙個結果。 以前對外顯示的是50納秒完成,此時就顯示成了5納秒完成,效率提高了10倍。 流水線就是在序列中完成了形式上的並行。

您好,這樣的; 流水線的引入提高的只是得系統的throughput

(吞吐率),即全速工作時候,單位時間內執行

的指令數目增加了。但是如果僅看單條指令的絕對執行時間

,這個量必然是增加的:因為 每多插入一級d flip-flop必然引入sequencing overhead(中文翻譯時序支出?我不知道我翻譯的對不對)。 具體來說,舉例子: a沒流水線的時候,時鐘週期最小tclk1>=tsetup+tpd_critical ,每條指令乙個時鐘週期執行完。其中tsetup為

觸發器的建立時間,tpd_critical為

關鍵路徑

的最壞傳輸延遲。 b假設我採用級流水線,每一級組合邏輯的critcal delay均分 (是之前critical delay的1/3, 即tpd_critical/3) ,新時鐘週期 tclk2>=tsetup+tpd_critical/3 ,每條指令要花三個時鐘週期執行完。當全速執行的時候,每個時鐘週期結束都有一條指令處理完,而新時鐘週期tclk2明顯比之前沒流水線時候tclk1小了,所以我們說吞吐率提高了。如果你只關注一條指令的實際執行時間(注意每條指令花三個時鐘週期完成): 3* tsetup+tpd_critical/3)= 3*tsetup + tpd_critical 你發現

絕對時間

來看,單條指令執行時間反而比沒流水線時候大了。多出來2個tsetup就是所謂的sequencing overhead。 注意實際情況可能比上述複雜,但是上述例子用來解釋本問題是足夠的了。 接下來還要注意一點:我們說吞吐率提高了,只是在「全速工作」的情況下。前面還有人作答提到p4的高頻低能問題。其實這個問題又得從流水線的本質來解釋。比如,如果由於某種原因processor就是沒法全速工作怎麼辦?這種情況還不少見:比如我們有指令1指令2指令3,其中 指令2的執行依賴於指令1的結果,然後指令3的執行又依賴於指令2的結果。當出現這種情況時候,必須等前面一條指令完全執行完畢,產生結果之後,下條指令才能開始執行。當這種情況出現過多的時候,流水線的存在不僅沒有多大幫助,反而因為多出來的sequencing overhead讓效能降低。 總之,很多關於

計算機硬體

的問題如果想要究其本質,需要離開你平時所工作的level of abstraction(抽象層級)到更加底層的層次中去。

在談這張圖之前,我們再看乙個概念:k階流水線。

k階段流水線(「k流水線」)是乙個非迴圈電路,對應於從輸入到輸出的每一條路徑恰好有k個暫存器。因此前面的電路為啥是2階應該清楚了。通時,我們還可以知道,1、組合邏輯電路是0階流水線;2、在k階段流水線中,每個流水線階段的輸出(而不是輸入)都有乙個暫存器。好,我們接著談上面的流水線時空圖。

通過流水線時空圖,我們觀察到,當流水線每個階段都開始工作後,每乙個時鐘週期都會有乙個結果的輸出,也就是說k階段流水線的吞吐量即是時鐘頻率,而k階流水線的延時是對所有暫存器公用的時鐘週期的k倍

同時我們也可以觀察到,所有的流水級都只花費乙個時鐘週期的時間,因此,時鐘週期必須能夠滿足最慢操作的執行需要

因此我們可以得出

指令執行時間(流水線)=指令執行時間(非流水線)/流水線級數

即在理想情況和有大量指令的情況下,流水線所帶來的加速比與流水線的級數近似相同。例如乙個5級流水線能夠獲得的加速比接近於5。

而這樣一種技術如果用到電腦裡面豈不能提高效能啦?沒錯,我們現在的電腦裡面跑的cpu

就用到了流水線技術,通過這樣的一種技術,提高了指令的吞吐率,從而帶來了效能的提高。注意:流水線所帶來的效能提高是通過增加指令的吞吐率,而不是減少單條指令的執行時間實現的。為什麼呢?這就好像洗衣服,幹衣服用的時間沒變,但是最終的產出卻是增加了的道理一樣。

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

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

求流水線吞吐率和最大資料傳輸率

近幾天在緊張地複習 計算機組成原理 計算題頗多,比較難理解的就如題目所說的這兩個 當然還有其他的 實際上簡單到非常。1s 1000ms 1000 000 s,1ghz 1000 mhz 1000 000 000 hz,1s 1 1hz 後面會用到。指令總數 流水線執行總時間 x100 例題 主頻為1...

流水線排程

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a i 和b i 你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間...