計算機操作系統(四) --- 流水線的通用原理


計算流水線

         下面的圖就可以知道流水線的思維了,I1 ,I2 ,I3 為需要經過ABC 組合邏輯的信號,可以看到當I1 到了 B 時,I2 已經到了A 了,

同理 I3也一樣,流水線的思維提高了工作效率.

流水線

             這里說一下吞吐量 , 延遲 , 時間周期的計算,下圖為例,可以看到, 假如我們的時間周期為 70ps. 那么下面一個信號走完就需要 6*70 = 420ps , 那么 420ps 就是延遲, 吞吐量就是單位時間內可以處理的信號量,可以知道用一除以70乘以一個時間單位得到 14.29 GIPS .即是時間周期的倒數.

延遲

 

流水線的局限性

  • 不一致的划分

流水線局限

           我們可以看到以B 為周期(以為B里的延遲最大,思考一下要是選AC會是怎么樣的),那么AC中會有空閑的地方.

 

  • 流水線過深,收益反而下降

lsx

 

流水線的改進

電路重定時( circuit retiming )

       將計算PC的部分移到時序的開頭.具體的查看下面的鏈接

 

分支預測

       當出現分支的時候, 猜測分支的方向並根據猜測的方向進行預測.

 

流水線冒險

       流水線冒險

       一個准備寫入的時候,一個提前先拿了出來就會造成數據錯誤,解決這個問題可以通過以下的方式

  • 用暫停來比避免數據冒險(stalling)

stallingrisk

          但是這樣會暫停三個周期,嚴重影響了性能.

 

  • 用轉發來避免數據冒險

           還是上圖的那種情況,一個寫入,一個讀取,讀取的時候發現這個值需要被其他操作寫入,那么讀取的操作直接就拿寫入的值就夠了,不再等其他操作寫入后,我再讀取了(仔細想想,類型於並發中的可視性啊!!)

bypass

 

  • 加載/使用數據冒險

加載使用冒險

         下面為暫停+轉發的方式來解決加載/使用冒險

互鎖

 

 

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM