6 p/ ?- M. V l
介紹Hyper-Threading原理分析與測試
% e. V& h9 m& q文:天晴
; @' x/ M# V8 R4 J( T
" J" [/ |, ]* o, ]4 n6 p6 F
一粒
CPU當兩粒駛!?這並不是筆者胡吹的。桌面處理器又再次改朝換代了,
Intel並不是只會在時脈上提升效能,還會找尋不同方法,令效能斷續上升。繼MMX、SSE、SSEII以後,
Intel更把原來只用在工作站上的Xeon
CPU才有的Hyper Threading技術也引入到桌面處理器。
) S/ ~$ E5 `8 P( s8 W
今次我們會介紹Hyper-Threading原理與Single Threading及Mutil-Tasking的分別,如何一粒CPU分身兩粒。
" m3 B3 ^7 `! s9 j+ l- ^" E# ~9 ~
& G1 F6 K) u0 t, w# W! t6 n# {# YHyper-Threading 運作原理 9 ~0 w1 [5 i! a- a( \& x7 B
# _( [' h! ?$ x- X* B5 G上面提到,Pentium 4 HTT加入多一個Logical CPU Pointer,故能同時處理二個Threads,而且同時分享處理器內的資源,例如FPU、ALU、Load/Store等,減少了資源的浪費,由於不是每一個Thread都完全佔用CPU內的資源,空出來的便可以給另一個Thread使用。
2 [3 m6 j9 G, s# I" W- r; C用上圖去作個例子,在沒有Hyper-Threading下,
程式不能同時執行,需要等待運算的中的CPU出現閒置,才能切換至另一個
程式執行,同一時間下,運作中CPU的資源是不會分享給其他
程式,十分浪費。
! A7 V* Q; j# H: h! ]5 i+ EHyper-Threading技術就是減低每個Cycle對CPU資源的浪費,在這技術下,程式能同時被執行,CPU的資源能同時被分享,就如上圖那樣,減少CPU資源的浪費,從而增加效率。
1 {" P/ W/ W; g8 |
- D1 B' L j% [: F$ w: D一粒當兩粒!?
) x b9 g9 R7 z
H5 x3 K% N: [5 n$ o大家可能在想,Hyper-Threading可以同時執行兩個Threads,那麼同雙處理器有什麼分別呢?真的一粒U當兩粒嗎?
/ ~5 D% t _* U雖然Hyper-Threading能同時執行兩個Threads,但它並不像兩粒真正的CPU那樣,各CPU都有獨立的資源,如果兩個Threads都同時需要某一個資源時,其中一個要暫停並要讓出資源,要待那資源閒置才能繼續。舉個例子,上面的程式在Single Thread時要6個Cycles,但Multi
Processing就能以3個Cycle完成,而Hyper-Threading就由於某Cycles中,CPU的資源出現重疊,故某個Thread會出現延遲,但效能卻比Single Thread要好,因為Single Thread要使用6個Cycle,以上只是原理,實際上當然更複雜。
, k; ^! @$ d& v0 J
以上的情況是十分理想,其實
AMD日前提供了一份資料關於Hyper-Threading,它指出當兩個Threads同時要求同一樣資源時,就會出現衝突(Conflict),解決這Conflict時會出現延遲或需重新開始,當Conflict大量出現時,效能就會減慢甚至比沒有Hyper-Threading更差。
' m! j1 V/ v: Z; W0 R# |的確,Hyper-Threading對支援 Multi-Processor的程式效能有一定的幫助。但是,又有幾多程式支援Multi-Processor(沒太多吧)。那麼,當那個只支援Single-Threaded的程式時,P4 HT會否令其中一個Logical CPU出現閒置(Idle)呢?
3 B1 c8 @& b* J- ~# s其實Intel P4 HHT有兩個Hyper-Threading運行模式,Single Task Mode及Multi Task Mode,當程式不支援Multi-Processing時,系統會停止其中一個Logical CPU的運作,把資源集中於單一Logical CPU,令Single-Threaded程式不會導致其中一個Logical CPU閒置,拖慢效能。但由於被停止作業的Logical CPU還是會等候工作,佔用一定的資源。故此Hyper-Threading CPU運行Single Task Mode程式時可能不及沒有Hyper-Threading的CPU,但效能分別不會相差太大(但還是會有例外)。