vincentni wrote:
在單核的時代,CPU使用率高達98%!所以,小弟有一個理論,如果在單核的時代,某人組一個兩個單核的CPU在同一個主機板上,在處理轉檔的動作時,他的速度一定會比單顆雙核的CPU快!因為前者用98%CPU使用率在跑,後者大約只用了50%!這樣的理論對嗎?...(恕刪)
這絕對是大錯特錯的,因為兩顆CPU必須靠北穚來溝通彼此的訊息,其速度遠遠不及雙核CPU用 L2 cache 在內部溝通。
執行單一程式雙核跑不到滿檔是正常的,這裡很多人以為雙核就等於兩倍效能,其實是對軟體架構不了解所致。
要讓一個工作分成相等的兩份(或多份)是非常困難的,因此往往會有不平衡的情況發生,一個執行序佔 80% 的負載,另一個則佔 20%, 那這樣即使雙核,效能提升也只有 20% 的程度。
再來多執行序的訊息溝通必須考慮到許多相當複雜的情況,ex deadlock, race condition,...為了避免這些事情發生,往往必須付出不少額外的效能犧牲。
然後還有資料處理順序的問題,一個工作分成多份,不太可能彼此就不相關,往往彼此都還有很大的相關性的,這就會造成,某一個執行序必須等另一個完成某個運算,才能繼續下個運算...
以上這些問題,都是造成你無法執行單一程式時就讓 CPU 跑滿 100% 的原因。
但讓 CPU 跑滿並不難,只要執行序彼此不相關,或你執行兩個程式,還是可以充份利用 CPU 效能。