超線程(Hyper-Threading)

運行方式

      每個單位時間內,一個CPU只能處理一個線程操作系統:thread),以這樣的單位進行,如果想要在一單位時間內處理超過一個線程是不可能的,除非是有兩個CPU的實體單元。雙核心技術是將兩個一樣的CPU放置於一個封裝內(直接將兩個CPU做成一個芯片)。而英特爾的Hyper-Threading技術是在CPU內部僅複製必要的資源、讓CPU模擬成兩個線程;也就是一個實體核心,兩個邏輯線程,在一單位時間內處理兩個線程的工作,模擬實體雙核心、雙線程運作。

      Intel自Pentium開始引入超標量亂序運行、大量的暫存器寄存器重命名、多指令解碼器預測運行等特性;這些特性的原理是讓CPU擁有大量資源,並可以預先運行及平行運行指令,以增加指令運行效率,可是在現實中這些資源經常閒置;爲了有效利用這些資源,就乾脆再增加一些資源來運行第二個線程,讓這些閒置資源可運行另一個線程,而且CPU只要增加少數資源就可以模擬成兩個線程運作。

Hyper-Threading概述

      超線程技術,Hyper-Threading是一種多線程並行技術——即同步多執行線程(SMT,simultaneous Multi-threading)。通過在一枚cpu上整合兩個邏輯處理器(注:是處理器而不是運算單元)單元,使得具有這種技術的新型CPU具有能同時執行多個線程的能力。

      Hyper-Threading的原理很簡單,就是把一顆CPU當成兩顆來用,將一顆具Hyper-Threading功能的“實體”處理器變成兩個“邏輯”處理器,而邏輯處理器對於操作系統來說跟實體處理器並沒什麼兩樣,因此操作系統會把工作線程分派給這“兩顆”處理器去執行,讓多種應用程序或單一應用程序的多個執行緒(thread),能夠同時在同一顆處理器上執行;不過兩個邏輯處理器是共享這顆CPU的所有執行資源。

      Hyper-Threading做法是複製一顆處理器的架構指揮中心(architectural state)變成兩個,使得操作系統認爲是在與兩顆處理器溝通,但這兩個架構指揮中心共享該處理器的工作資源(execution resources)。架構指揮中心追蹤每個程序或執行緒的執行狀況;工作資源指的則是“處理器用來進行加、乘、加載等工作的單元(execution unit)”。如此一來,操作系統把工作線程安排好以後,就分派給這兩個邏輯上的處理器執行,而這顆CPU的每個執行單元等於在同樣的時間內要服務兩個“指令處理中心”,當然它的效率就高多了,操作系統就把一顆實體的處理器認定爲兩個邏輯處理器作工作指派,當然整體工作效能就比沒有具備Hyper-Threading 的處理器高出許多,性價比自然高出許多。

顧慮

      由於處理器實際上只有一個實體核心,能夠提升的性能約爲5~15%左右,且萬一發生資源互搶的情形時,整體性能反而會下降。這亦是AMD不提供虛擬雙核心處理器的理由。

      要令到電腦支持超線程技術,必須要軟件和硬件的配合。

  • 硬件方面:處理器本身要支持超線程,芯片組亦要支持相關處理器。
  • 軟件方面:要充分發揮超線程的性能,用戶要使用支持超線程技術的操作系統(除了微軟的Windows 2000之後的版本外,Linux kernel 2.4.x亦開始支持該技術)。不是所有程序都可以發揮超線程,通常優化了多處理器的程序都可以支持到。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章