在計算機體系結構中,Amdahl定律給出了在固定工作負載下執行任務所需的等待時間的理論加速,這可以期待系統的資源得到改善。amdahl法則有多準確?
Slatency
是在整個任務的執行的等待時間的理論加速;
s
是從系統資源的改進中受益的部分任務的執行延遲的加速;
p
是整個任務在改進之前從系統資源的改進中受益的部分的執行時間的百分比。
Slatency = 1/[(1-p) + (p/s)]
這是所有的理論,它迫使我思考,當是不適用的。估計CPU性能有多準確?
在計算機體系結構中,Amdahl定律給出了在固定工作負載下執行任務所需的等待時間的理論加速,這可以期待系統的資源得到改善。amdahl法則有多準確?
Slatency
是在整個任務的執行的等待時間的理論加速;
s
是從系統資源的改進中受益的部分任務的執行延遲的加速;
p
是整個任務在改進之前從系統資源的改進中受益的部分的執行時間的百分比。
Slatency = 1/[(1-p) + (p/s)]
這是所有的理論,它迫使我思考,當是不適用的。估計CPU性能有多準確?
通常,當您想調整某個程序的某個部分時,您需要創建一個微基準測試來獨立測試。
這並不總是反映它作爲完整程序的一部分運行時的行爲方式。 (即在執行調音的部分之間執行其他工作,而不是在緊密循環中)。
例如,如果您發現sin(x)
的計算結果很昂貴,並將它們替換爲查找表,那麼可能會贏得一個微基準,因爲當連續調用沒有其他工作時,足夠小的表在緩存中保持熱度。類似地,微基準測試使用分支預測啓動,並且沒有代碼緩存壓力(這可以使循環展開看起來比現在好)測量性能。
但這只是意味着你對s
的估計是錯誤的作爲整個程序的一部分,而不是Amdahl的法則是不準確的。這只是一個錯誤的使用情況。
然而,這確實導致了一個真正的回答你的問題:
加快程序的一個部分,導致更多的緩存的方式或TLB缺失,分支預測失敗等, 其他部分程序確實違反了Amdahl法律。
謝謝隊友。不知道估計's'是如此棘手。但它是有道理的。 –
Amdalh定律是一種簡單的數學關係,從這個意義上說它是可靠的 - 但它假設的底層性能模型(或者通常在教科書應用中假設)太簡單了:程序可以平均分爲兩部分:一部分受到一些「資源提升」(可能同樣是資源減少)和另一部分不受影響。在一個像現代主機這樣一個非常複雜的系統中,通常沒有這樣的清晰分工:一個部分的變化會對其他部分產生任意的連鎖效應,正如Peter解釋的那樣。 – BeeOnRope