在現有的計算機里,程序由多個執行線程組成的,這些線程是一系列相關指令。在個人電腦時代早期,大多數程序僅含有單個線程。當時的操作系統在某一時間僅能運行一個此類程序。由于系統不能同時處理兩項任務,下一個任務必須等到上一個任務處理結束時才能處理,后來的操作系統創新引入了多任務處理,從而能夠掛起一個程序,以運行另一個程序。通過使用這種方式來迅速地切換程序,系統能夠“看上去”同時運行多個程序。然而,事實上處理器一直運行的僅僅是單個線程。
2003 年,Intel在自家的至強上應用了新的技術:超線程技術,
超線程技術是在一顆CPU同時執行多個程序而共同分享一顆CPU內的資源,理論上能像兩顆CPU一樣在同一時間執行兩個線程,這樣,處理器需要多加入一個邏輯處理單元,而其余部分如整數運算單元(ALU)、浮點運算單元(FPU)、二級緩存(L2 Cache)則保持不變,這些部分是被分享的。
雖然采用超線程技術能同時執行兩個線程,但它并不像兩個真正的CPU那樣,每個CPU都具有獨立的資源。當兩個線程都同時需要某一個資源時,其中一個要暫時停止,并讓出資源,直到這些資源閑置后才能繼續。因此超線程的性能并不等于兩顆CPU的性能。
根據英特爾性能指標評測,通過在含有超線程技術的處理器上運行,采用多個線程編寫的應用程序可獲得高達 30% 的性能提升。更重要的是,兩個程序能夠同時在一枚處理器上運行,而無需來回切換(參見圖1)。
我們能體會到的好處就是,當在運行一個巨大的游戲的時候,而CPU的占用率還沒到100%,所以系統還迅速的在DOC文檔的攻略,瀏覽器搜索引擎里的秘籍以及播放自己喜歡音樂的Winamp中自由的切換。
超線程技術支持在單個處理器內核上同時執行兩個線程
然而,超線程技術的性能提升受到了兩個執行線程共享資源可用性的限制。結果,由于這些共享資源之間的爭用,超線程技術不能實現兩枚獨立處理器的處理吞吐率。如果想在單個芯片上實現更出色的性能提升,處理器就需要兩個單獨的內核,這樣每個線程就能擁有其專屬的整套執行資源。