软考--流水线问题吞吐率详解
???? 今天從網上看到一篇不錯的關于流水線吞吐率的文章,為軟考問題做出了詳細的解釋,轉載分享給廣大網友。
??? 從生活中的工廠入手,流水線上每個工人所作的工作都不同,但卻是相連的,上面的工人做完了他的事就直接丟給下面的工人,而后一直這樣傳下去,直到這條流水線結束。 做流水線要眼疾手快,不然你手中的還沒做完,上面又丟些下來,到時你就手忙腳亂,全線也就亂套了,總的來說生活中的流水線就是一種工業上的生產方式,指每一個生產單位只專注處理某一個片段的工作,以提高工作效率及產量。流水線,在我們的計算機中也有類似的概念,小編理解中的流水線,和計算機世界中的流水線有哪些不一樣的地方呢?計算機中的流水線有著怎樣神奇的一面?這篇博文,小編主要和大家來學習一下流水線的相關知識,小編會循著下面這張圖的脈絡,一一介紹,首先,我們來看一下整體的有關流水線知識點的框架。
?? 接下來,小編就沿著上圖的痕跡,對流水線進行一一解剖,有不同意見的小伙伴歡迎討論交流。
? ? ? ?概念
? ? ? ?流水線是指在程序執行時多條指令重疊進行操作的一種準并行處理實現技術。各種部件同時處理是針對不同指令而言的,它們可同時為多條指令的不同部分進行工作,以提高各部件的利用率和指令的平均執行速度。概念我們說那么多,我們現在深入去理解,光有概念都是一些比較抽象的東西,我們看圖,一共有三個步驟:
? 然后我們來看一下一般情況下我們的指令是一條一條的來處理,第一條指令處理完,再處理第二條,再處理第三條,這種順序來處理機器里邊的設備的利用情況是怎樣的呢?我們來看這圖:
?若我們每個指令的執行時間是1ms,如下圖:
? ? ? ??
? ? ? ??那么三條指令執行完需要9ms的時間,我們還可以看得出來的是:取值這個設備只有在1ms,4ms,7ms的時候工作,第一條指令只有三分之一的時間進行工作,別的時間就空閑了,對于這樣子中間就產生了很多設備的空閑。所以我們引入了流水線。用流水線所用的時間:
? ? ? ??
? ? ? ??取值設備只要完成第一條指令的取值,就立即進入第二條指令的取值,第二條指令完成之后,就馬上執行第三條;分析這個操作也是一樣,我們看的出來,在5ms的時間就完成了。當然我們也能觀察的出,單個指令的運行時間都是3ms。所以流水線對單條指令的執行是無效的。流水線除了指令流水線,還有一種就是運算操作流水線,運算操作流水線就是計算機在執行各種運算操作時也可以應用流水線來提高運算速度,這是操作都是分階段運行的,所以我們用流水線來提高運算速度。
? ? ? ?流水線指令運行時間的計算
? ? ? ?
? ? ? ?小試牛刀
? ? ? ?我們光看公式就幾個變量,不好理解,我們來看例題:
? ? ? ?例題1
? ? ? ?
? ? ? ?很簡單的一道題目,我們看的出來,很容易我們就計算的出來:(2+2+1)+(100-1)*2=203
? ? ? ?我們接下來看一個圖,來深刻的理解一下:
? ? ? ?
? ? ? ?從這個圖中我們假設:取值5ns,分析 2ns,執行 5ns;那么我們執行完一條指令應該是:?
? ? ? ?
? ? ? ?若分析在取值之后執行的話,只需要7ns就能完成分析階段,那么執行完成只需要12ns,而不需要15ns。我們為什么說分析能在取值之后馬上執行呢?我們再來看一下這個執行步驟:?
? ? ? ?
? ? ? ?第一條指令的取值完成之后,這兩條線就去掉了,就是說阻礙I2和C1發展的線就斷了,他們就能運行:
? ? ? ?
? ? ? ?我們很清楚的看到分析就和下一條指令的取值就能進行了,接下來,我們來看一道有點兒奇怪的題:
? ? ? ?例題2
? ? ? ?
? ? ??我們要是按照之前的那個公式,能很快的算出來:周期=100ns(時間最長的),然后得到第一條指令的結果是:60ns+100ns+50ns+70ns=280ns。然后完成這段程序需:280+(20-1)*100=2180。我們按照這個公式來算,一點問題都沒有。但是我們看一下答案:
? ? ? ??
? ? ? ?但是當我們的選項里邊沒有這個答案,我們應該怎么辦?想想,我們沒有錯,我們是按照公式來的,肯定錯不了。但是有時候我們為了得分,所以我們必須要向另一種方向轉變,就是我們的周期是100ns,那么我們都按照周期來算,那么我們第一條指令的完成時間就是:4*100=400,然后完成100條指令的時間就是:100*4+(20-1)*100=2300。那么這個題目我們就能拿分了。
? ? ? ? 小編寄語:該博文,小編主要從三個方面對流水線的相關知識點進行簡單的回顧和總結,第一,簡單的介紹了一下流水線的概念,第二,指令運行時間的計算,第三,鞏固理論知識,講解了兩個例題。初次接觸流水線,小編的理解也不是很深,有不同意見的小伙伴歡迎討論交流, 軟考準備的日子即將接近尾聲,在十月的末尾,十一月的指尖綻放,謝謝博客陪我走過 2014年的兩個備考之月,進京趕考倒計時,小伙伴加油!
本文轉載于:https://blog.csdn.net/u010850027/article/details/40706839
總結
以上是生活随笔為你收集整理的软考--流水线问题吞吐率详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FTP中文乱码问题
- 下一篇: js开发实例 —— 发送短信验证码倒计时