"一心不可二用"的簡單科普

來源: 2011-10-25 20:09:38 [博客] [舊帖] [給我悄悄話] 本文已被閱讀:

大家都知道,CPU越快越好。但大概很少人知道CPU的利用率非常低。

以及Pentium 4為例,P4有七個執行單元(Execution Unit),其中兩個EU每個時鍾周
期能做兩次運算,其餘5個能做一次運算。因為7個EU是互相獨立的,這樣理論上P4每
個時鍾周期可以做9次運算。但是INTEL發現,典型的應用下,P4的利用率隻有35%。

這是因為一個CPU隻能執行一個線程(process)。如果有多個線程需要執行,CPU分時執行多個
線程。而CPU的7個EU分工做不同的運算。比如有的專門做浮點運算,有的專門做定
點運算,還有的做圖形相關運算。

如果一個線程隻需要大量定點運算,那麽顯然有的EU非常忙,而另外的EU卻閑著。
INTEL推出"超線程"Pentium 4,一個CPU可以同時執行兩個線程,如果這兩個線程有互補性
質,比如一個大量做定點運算,另一個大量做浮點運算,那麽CPU的利用率就會顯著
提高。這是最早的"雙核"處理器。但這隻是虛擬雙核。如果同時執行的兩個線程沒
有互補性質,CPU的速度會更慢。

後來出現了真正的雙核處理器,相當於把兩個CPU做在一起,每個核就是一個CPU,可
以單獨執行一個線程。從操作係統角度看,一個雙核CPU就是兩個CPU,同時執行兩
個線程。一個四核CPU就是四個CPU,同時執行四個線程。