Intel Hyper-Threading Technology(2)
Intel® Hypter-Thread (initial)
通過在單個物理處理器封裝中實現多個邏輯處理器(即最早期的超執行緒技術),或者在物理處理器的核中實現多個邏輯處理器(即多核時代的超執行緒技術),Intel®超執行緒技術使得軟體可以利用任務級別,或執行緒級別的並行性。
在最初的超執行緒實現中,單個物理處理器封裝在軟體角度上看起來是兩個(或多個)邏輯處理器。在基於Knights Landing微架構的Intel Xeon Phi處理器中,每個處理器核可以支援4個邏輯處理器。絕大多數支援超執行緒技術的IA架構處理器,在每個處理器核中或者早期的單個物理處理器封裝中,實現兩個邏輯處理器。
在Intel的超執行緒實現中,每個邏輯處理器各自有一套完整的架構暫存器,同時共享單個物理器的資源(注:主要是執行引擎資源)。通過維護兩個邏輯處理器的架構狀態(即程式設計師可見的處理器狀態,主要是架構暫存器),超執行緒技術使得軟體(包括作業系統與應用程式)看起來像是在兩個(物理)處理器上執行。換句話說,通常情況下,軟體並不能感知到超執行緒技術的存在,軟體並不知道自己是在兩個物理處理器上執行,還是在兩個邏輯處理器上執行。
在峰值計算需求時,通過在兩個邏輯處理器間共享資源,使得超執行緒技術尤其適用於多處理器系統,與傳統的未採用超執行緒的多處理器系統相比,可以在吞吐量方面提供額外的提升。
下圖展示了一個典型的基於匯流排共享方式的對稱多處理器系統(SMP),但是處理器採用了超執行緒技術。每個邏輯處理器可以執行一個軟體執行緒,這樣就允許兩個軟體執行緒同時執行在單個物理處理器上。這裡“兩個軟體執行緒同時執行”指的是在同一個時鐘週期內,邏輯處理器0上的執行緒可以執行“add”操作,同時邏輯處理器1上的執行緒可以執行另一個“add”操作和“load”操作;這些操作都在共享的執行引擎中同時執行。
在最初的超執行緒技術實現中,物理執行資源是共享的;架構狀態是雙份的,每個邏輯處理器一份。順便提一下,高階可程式設計中斷控制器APIC也是兩個,每個邏輯處理器一個。
超執行緒技術能夠帶來的效能潛力主要取決於:
- 作業系統與應用程式能否將程序或執行緒同時排程到邏輯處理器上執行。
- 比起單執行緒(即指令級別)使用執行資源,能否在更高的級別上(即任務級別,或執行緒級別)使用片上執行資源;更高級別的資源利用率可以有更好的系統吞吐量。