什麼是超執行緒技術?
儘管提高CPU的時脈頻率和增加快取容量後的確可以改善效能,但這樣的CPU效能提高在技術上存在較大的難度。實際上在應用中基於很多原因,CPU的執行單元都沒有被充分使用。如果CPU不能正常讀取資料(匯流排/記憶體的瓶頸),其執行單元利用率會明顯下降。另外就是目前大多數執行執行緒缺乏ILP(Instruction-Level Parallelism,多種指令同時執行)支援。這些都造成了目前CPU的效能沒有得到全部的發揮。因此,Intel則採用另一個思路去提高CPU的效能,讓CPU可以同時執行多重執行緒,就能夠讓CPU發揮更大效率,即所謂“超執行緒(Hyper-Threading,簡稱“HT”)”技術。超執行緒技術就是利用特殊的硬體指令,把兩個邏輯核心模擬成兩個物理晶片,讓單個處理器都能使用執行緒級平行計算,進而相容多執行緒作業系統和軟體,減少了CPU的閒置時間,提高的CPU的執行效率。
採用超執行緒及時可在同一時間裡,應用程式可以使用晶片的不同部分。雖然單執行緒晶片每秒鐘能夠處理成千上萬條指令,但是在任一時刻只能夠對一條指令進行操作。而超執行緒技術可以使晶片同時進行多執行緒處理,使晶片效能得到提升。
超執行緒技術是在一顆CPU同時執行多個程式而共同分享一顆CPU內的資源,理論上要像兩顆CPU一樣在同一時間執行兩個執行緒,P4處理器需要多加入一個Logical CPU Pointer(邏輯處理單元)。因此新一代的P4 HT的die的面積比以往的P4增大了5%。而其餘部分如ALU(整數運算單元)、FPU(浮點運算單元)、L2 Cache(二級快取)則保持不變,這些部分是被分享的。
雖然採用超執行緒技術能同時執行兩個執行緒,但它並不象兩個真正的CPU那樣,每個CPU都具有獨立的資源。當兩個執行緒都同時需要某一個資源時,其中一個要暫時停止,並讓出資源,直到這些資源閒置後才能繼續。因此超執行緒的效能並不等於兩顆CPU的效能。
英特爾P4 超執行緒有兩個執行模式,Single Task Mode(單任務模式)及Multi Task Mode(多工模式),當程式不支援Multi-Processing(多處理器作業)時,系統會停止其中一個邏輯CPU的執行,把資源集中於單個邏輯CPU中,讓單執行緒程式不會因其中一個邏輯CPU閒置而減低效能,但由於被停止執行的邏輯CPU還是會等待工作,佔用一定的資源,因此Hyper-Threading CPU執行Single Task Mode程式模式時,有可能達不到不帶超執行緒功能的CPU效能,但效能差距不會太大。也就是說,當執行單執行緒運用軟體時,超執行緒技術甚至會降低系統效能,尤其在多執行緒作業系統執行單執行緒軟體時容易出現此問題。
需要注意的是,含有超執行緒技術的CPU需要晶片組、軟體支援,才能比較理想的發揮該項技術的優勢。作業系統如:Microsoft Windows XP、Microsoft Windows 2003,Linux kernel 2.4.x以後的版本也支援超執行緒技術。目前支援超執行緒技術的晶片組包括如:
Intel晶片組:
845、845D和845GL是不支援支援超執行緒技術的;845E晶片組自身是支援超執行緒技術的,但許多主機板都需要升級BIOS才能支援;在845E之後推出的所有晶片組都支援支援超執行緒技術,例如845PE/GE/GV以及所有的865/875系列以及915/925系列晶片組都支援超執行緒技術。
VIA晶片組:
P4X266、P4X266A、P4M266、P4X266E和P4X333是不支援支援超執行緒技術的,在P4X400之後推出的所有晶片組都支援支援超執行緒技術,例如P4X400、P4X533、PT800、PT880、PM800和PM880都支援超執行緒技術。
SIS晶片組:
SIS645、SIS645DX、SIS650、SIS651和早期SIS648是不支援支援超執行緒技術的;後期的SIS648、SIS655、SIS648FX、SIS661FX、SIS655FX、SIS655TX、SIS649和SIS656則都支援超執行緒技術。
ULI晶片組:
M1683和M1685都支援超執行緒技術。
ATI晶片組:
ATI在Intel平臺所推出的所有晶片組都支援超執行緒技術,包括Radeon 9100 IGP、Radeon 9100 Pro IGP和RX330。
nVidia晶片組:
即將推出的nForce5系列晶片組都支援超執行緒技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式執行緒新解:什麼是程式?什麼是執行緒?執行緒
- 什麼是程式(執行緒)同步執行緒
- 什麼是多執行緒?Python多執行緒有什麼優勢?執行緒Python
- 【多執行緒與高併發】Java守護執行緒是什麼?什麼是Java的守護執行緒?執行緒Java
- 什麼是執行緒安全和執行緒不安全執行緒
- 什麼是Python執行緒?Python執行緒如何建立?Python執行緒
- JDK21的虛擬執行緒是什麼?和平臺執行緒什麼關係?JDK執行緒
- 什麼是程式、執行緒和協程?執行緒
- 舉例理解什麼是程式,執行緒執行緒
- 聊聊執行緒技術與執行緒實現模型執行緒模型
- IOS 多執行緒技術iOS執行緒
- Python多執行緒是什麼意思?有什麼優勢?Python執行緒
- 【Java面試】什麼是守護執行緒,它有什麼特點Java面試執行緒
- redis是單執行緒的,為什麼這麼快Redis執行緒
- vr全景技術是指什麼?什麼是vr全景技術?VR
- 多執行緒核心技術(1)-執行緒的基本方法執行緒
- 24. 一個普通main方法的執行,是單執行緒模式還是多執行緒模式?為什麼?AI執行緒模式
- Web前端技術分享:什麼是塊元素?什麼是行內元素?Web前端
- 為什麼redis是單執行緒的以及為什麼這麼快?Redis執行緒
- 什麼是cdn技術
- 【併發技術01】傳統執行緒技術中建立執行緒的兩種方式執行緒
- 執行緒池管理(1)-為什麼需要執行緒池執行緒
- redis為什麼用單執行緒不用多執行緒Redis執行緒
- 王者榮耀多執行緒模式怎麼開啟? 王者榮耀多執行緒模式是什麼執行緒模式
- 什麼是技術債,為什麼要還技術債?
- Redis為什麼是單執行緒?為什麼有如此高的效能?Redis執行緒
- 為什麼?為什麼StringBuilder是執行緒不安全的?UI執行緒
- 為什麼 Random.Shared 是執行緒安全的random執行緒
- 多執行緒面試題之多執行緒有幾種實現方案,分別是什麼執行緒面試題
- Redis作為單執行緒 為什麼我用它還是出現了超賣呢?Redis執行緒
- 什麼是CDN?CDN的技術原理是什麼?
- Redis是單執行緒的,但Redis為什麼這麼快?Redis執行緒
- 保證執行緒安全的技術執行緒
- java核心技術筆記--執行緒Java筆記執行緒
- 多執行緒技術交流提綱執行緒
- C#多執行緒同步技術C#執行緒
- 遠端執行緒嵌入技術 (轉)執行緒
- Netty是什麼,Netty為什麼速度這麼快,執行緒模型分析Netty執行緒模型