1. 程式人生 > >【併發】Amdahl's Law 阿姆達爾定律

【併發】Amdahl's Law 阿姆達爾定律

轉自:http://book.2cto.com/201301/12892.html

利用Amdahl定律,可以計算出通過改進計算機某一部分而能獲得的效能增益。Amdahl定律表明,使用某種快速執行模式獲得的效能改進受限於可使用此種快速執行方式的時間比例。

Amdahl定律定義了使用某一特定功能所獲得的加速比(speedup)。加速比是什麼?假定我們可以對某一計算機進行某種升級,在採用這一升級時可以提高計算機的效能。加速比的定義為:


 

加速比告訴我們,與原計算機相比,在經過升級的計算機上執行一個任務可以加快多少。

Amdahl定律為我們提供了一種快速方法,用來計算某一升級所得到的加速比,加速比取決於下面兩個因素。

(1) 原計算機計算時間中可升級部分所佔的比例。例如,一個程式的總執行時間為60秒,如果有20秒的執行時間可進行升級,那這個比例就是20/60。我們將這個值稱為升級比例,它總是小於或等於1。

(2) 通過升級執行模式得到的改進,也就是說在為整個程式使用這一執行模式時,任務的執行速度會提高多少倍。這個值等於原模式的執行時間除以升級模式的執行時間。如果為程式的某一部分採用升級模式後需要2秒,而在原始模式中需要5秒,則提升值為5/2。我們將這個值稱為升級加速比,它總是大於1。

原計算機採用升級模式後的執行時間等於該計算機未升級部分耗用的時間加上使用升級部分耗用的時間:

例題 假設我們希望升級一個用於提供Web服務的處理器。新處理器執行Web服務應用程式的計算速度是原處理器的10倍。假定原處理器有40%的時間忙於計算,60%的時間等待I/O,進行這一升級後,所得到的總加速比為多少?
解答 升級比例=0.4、升級加速比=10、總加速比 
 

Amdahl定律闡述了一個回報遞減規律:如果僅改進一部分計算的效能,在增加改進時,所獲得的加速比增量會逐漸減小。Amdahl定律有一個重要推論:若某一升級僅對一項任務的一部分適用,則該任務的總加速比不會超過一個數值,該數值即1減去未升級部分所佔比例,再取其倒數。

在應用Amdahl定律時的一個常見錯誤是混淆“可升級部分在升級之前所佔時間比例”和“升級部分在升級之後所佔時間比例”。如果我們測量的不是計算中可以應用該升級的時間,而是測試應用升級之後的時間,結果就是錯誤的!

Amdahl定律可用來判斷某項升級能使效能提高多少,以及如何分配資源來提高性價比。分配目標顯然是:某一部分的升級資源應當與這一部分原來花費的時間成比例。Amdahl定律對於比較兩種系統的整體系統效能尤其有用,不過也可用於比較兩種處理器設計,如下面的例子所示。

例題
圖形處理器中經常需要的一種轉換是求平方根。浮點(FP)平方根的實現在效能方面有很大差異,特別是在為圖形設計的處理器中,尤為明顯。假設FP平方根(FPSQR)佔用一項關鍵圖形基準測試中20%的執行時間。有一項提議:升級FPSQR硬體,使這一運算速度提高到原來的10倍。另一項提議是讓圖形處理器中所有FP指令的執行速度提高到原來的1.6倍,FP指令佔用該應用程式一半的執行時間。設計團隊相信,他們使所有FP指令執行速度提高到1.6倍所需要的工作量與加快平方根運算的工作量相同。試比較這兩種設計方案。
解答 可以通過計算加速比來對比兩種方案:

 
提高整體FP運算的效能要稍好一些,原因是它的使用頻率較高。
 Amdahl定律的適用範圍不僅限於效能。我們重做1.7節的可靠性例題,通過冗餘來提高電源可靠性,將MTTF從200 000小時提高到830 000 000小時,達到4150多倍。
例題 磁碟子系統故障率的計算為:

 
因此,可改進的故障率比例就是5次/百萬小時佔整個系統23次/百萬小時的比例,
即0.22。
解答 可靠性的改進為:

 
儘管一個模組的可靠性提高了4150倍之巨,但從系統的角度來看,這一改變所帶來的好處雖然可測,但數值很小。

在上面的幾個例子中,我們需要知道改進後的新版本所佔比例;這些時間一般是很難直接測量的。在下一節,我們將看到另外一種比較方法:利用一個公式將CPU執行時間分解為三個獨立分量。如果我們知道一種候選方案是如何影響這三個分量的,就可以判斷它的整體效能。另外,通常可以構建一個模擬器,在實際設計硬體之前先測量這些分量。