FPGA中流水線詳細介紹(重溫流水線)

總覽

1、什麼是流水線?流水線有什麼好處。

流水線和串行處理

       顧名思義,就是將數據以流水的方式運行起來。以三條指令爲例。由下圖可見,總執行時間,減少4t,相當於一半。尤其指令越多,流水線處理越好,但一般不超過八段,超過八段以上就屬於超長流水線,因爲每條指令中各段執行時間不一致,就會導致更受瓶頸的影響,短板效應。

流水線和並行處理

      由上圖可以見到,流水線就是利用資源,將數據進行並行處理。所以可以肯定的是,能夠進行流水線的處理肯定能夠進行並行處理。那麼至於什麼時候採取並行化,什麼時候採取流水線。

以我的理解,並行化處理一般發生在指令互不相關的時候,而流水線處理,主要是爲了縮短關鍵路徑的時間,通過對某條指令的流水處理,也就是添加寄存器從而縮短其關鍵路徑。還有就是下條指令的結果和上條指令相關時,只有上條指令完成才進行下條指令時,可以有效採取流水線處理。在此,主要討論流水處理。

流水線的瓶頸和性能指標。

瓶頸:

一、各流水線處理時間需要小於一個時鐘週期。電路肯定存在電路延遲和時鐘偏移等,每條指令都需要一個鎖存器鎖存,所以此時如果各條指令的執行時間較短也就是時鐘較快,如果一個時鐘週期無法完成數據處理工作,流水線也就無法使用。也就是說,流水線的處理只能發生在同步信號,且

二、流水線的時鐘週期不能快於最慢的流水段。也就是說,執行時間最長的流水段將成爲整個流水的瓶頸,此時,慢的流水段等待工作。

性能指標:

吞吐率,,加速比,,效率。

吞吐率:也就是單位時間內,完成的任務數量。

當各指令段時間相等時,P=1/t=n/nt;

但當指令段時間不相等時,比如第二個指令段的時間爲5t,此時該路徑一般也成爲系統的關鍵路徑。因爲在該指令段時,其他指令必須要等待該指令執行完纔可以進行,所以此時P=1/5t;

一般爲解決5t時間內,各流水線的等待問題,一般會想辦法把5t再細分爲5段的1t,這時候整個系統的吞吐率仍然爲1/t,但很多時候,這事用來解決關鍵路徑過長的辦法。因爲加入寄存器後,關鍵路徑就相當於分成五段。

但很多時候,有些指令無法細分,就可以將長週期指令複製5份,每一個分別對應1t的數據,最後,再分別將五份數據對應輸出到下一級流水。很明顯,該思想就是通過並行化的方式來解決時間長的問題,五等分,每份處理一部分。

加速比,就是使用流水線,和不用流水線的時間比。

流水線的效率:就是儘可能的提高吞吐率。有效面積下,吞吐率越高,效率越高。最大爲1。

流水線的最佳段數:P=[1/(t/k+d)]*1/[a+bk]一般不超過八段。a爲流水段的價格,b爲鎖存器的價格,d爲鎖存器的延遲時間。

其他比如結構相關,就是不要搶資源。數據相關就是要等前面有結果了再進行下一步。控制相關就是如果有其他外部指令導致流水線斷流。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章