Amdahl定律
Amdahl定律是計算機科學中非常重要的定律它定義了串行系統並行化後加速比的計算公式和理論上限
加速比定義加速比=優化前系統耗時/優化後系統耗時
所謂加速比就是優化前的耗時與優化後耗時的比值加速比越高表明優化效果越明顯
Amdahl定律給出了加速比與系統並行度和處理器數量的關系設加速比為Speedup系統內必須串行化的程序比重為FCPU處理器數量為N則有
根據這個公式如果CPU處理器數量趨於無窮那麼加速比與系統的串行化率成反比如果系統中必須有%的代碼串行執行那麼系統的最大加速比為
假設有一程序分為以下步驟執行每個執行步驟花費個時間單位其中只有步驟和步驟可以進行並行步驟必須串行如圖所示在全串行的情況下系統合計耗時個時間單位
圖 串行工作流程
若將步驟和步驟並行化假設在雙核處理上則有如圖所示的處理流程在這種情況下步驟和步驟的耗時將為個是單位故系統整體耗時為個時間單位根據加速比的定義有
加速比=優化前系統耗時/優化後系統耗時=/=
或者前文中給出的加速比公式由於個步驟中個步驟必須串行因此其串行化比重為/=即F=且雙核處理器的處理器個數N為代入公式得
加速比=/(+()/)=
圖 雙核處理上的並行化
在極端情況下假設並行處理器個數為無窮大則有如圖所示的處理過程步驟和步驟的處理時間趨於即使這樣系統整體耗時依然大於個時間單位即加速比的極限為/=
圖 極端情況下的並行化
使用加速比計算公式N趨於無窮大有Speedup=/F且F=故有Speedup=
由此可見為了提高系統的速度僅增加CPU處理器的數量並不一定能起到有效的作用需要從根本上修改程序的串行行為提高系統內可並行化的模塊比重在此基礎上合理增加並行處理器數量才能以最小的投入得到最大的加速比
注意根據Amdahl定律使用多核CPU對系統進行優化優化的效果取決於CPU的數量以及系統中的串行化程序的比重CPU數量越多串行化比重越低則優化效果越好僅提高CPU數量而不降低程序的串行化比重也無法提高系統性能
返回目錄Java程序性能優化讓你的Java程序更快更穩定
編輯推薦
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLEG數據庫開發優化指南
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27847.html