天天看點

【轉載】解密CPU的超線程原理與性能

【轉載】解密CPU的超線程原理與性能

        所謂超線程,就是我們平時說的CPU雙核四線程這種線程數多餘核心數的情況,比如大部分的i5和i7都是支援超線程的。很多人,尤其是一些僞大神認為超線程的兩個線程實際上還是一個核心,運作效率低下,不值一提。其實,超線程技術對CPU而言還是有很大性能提升的,因為超線程技術不僅僅是邏輯技術,還是一個硬體技術。

        我們先看CPU是如何處理指令的。通俗的說可以分成兩部分,第一部分是負責讀取指令,第二部分是負責執行指令。一般執行部分是非常複雜的,通俗的來講,比如加減乘除等需要不同的執行機構,一套執行機構要包括多種運算法則的執行單元。通常的CPU是讀取部分和執行部分一對一的,而超線程的CPU則是多個讀取部分和一個執行機構對應的,也就是說一個核心裡有好幾套的讀取機構和一套執行機構。

        超線程的優勢:首先讀取機構1和讀取機構2分别讀取不同的指令,假設指令1是乘法,指令2是加法,那麼CPU就可以調用一套執行機構中的不同部分來同時處理;而對于不支援超線程的CPU,執行指令1時盡管加法執行單元是空閑的但是也隻能等指令1執行完成之後且指令2讀取完畢後才能執行。在這種情況下多線程效率接近多核。

        另一種情況:如果指令1和指令2都是加法,那麼指令2就必須等待指令1執行完成,這時的超線程和單核是一樣的。此外,如果指令2的執行需要指令1的結果,那麼指令2也是必須等待指令1的。

        那麼,多線程技術的效果實際上取決于對指令的排列順序。在通常的CPU上這是取決于目前執行的程式,而為了提升CPU的性能以intel為首的CPU巨頭使用了一個叫做指令預測和亂序的技術。通過數學邏輯上的優化可以相當程度的重排CPU指令順序這樣就能有效的避免指令2等待指令1的悲劇,性能也就提升了不少。