事實上在Pentium 4 3.06GHz問世之前,Hyper-Threading這項技術就已經應用在今年發表的新一代伺服器級處理器Intel Xeon(Xeon 512)身上。在了解Hyper-Threading的工作原理之前,我們先來溫習一下處理器的基礎運作原理。當使用者向程式下達命令(或輸入資料),程式會向處理器發送執行緒,告訴它應該做什麼,對處理器來說,一個執行緒就是一組必須執行的指令,而指令是如何進入處理器的呢?靠的是處理器入口處的程式計數器(Program Counter,簡稱PC),當程式計數器接收的每一組指令進入處理器之後,下一組指令都會自動存放在記憶體中,並在下一個周期送進處理器。執行緒可以強制處理器終止指令,如此執行緒之間就能相互中斷彼此的運行,不過在一個特定時間內只能有一組執行緒能夠被執行。
近十年來x86架構處理器運算速度的爆炸性成長,靠的是處理器製造商不斷拉高運作時脈、加大快取記憶體容量,並開發出多種技術以便讓處理器可以在一個周期內執行更多指令,受到執行緒的限制,單一處理器的效能的確到了一個瓶頸,從英特爾不斷推出時脈更高的Pentium 4,效能進步幅度卻是相當有限這點可以看出端倪。即使時脈再怎麼攀高,同一時間內能被執行的指令增加不多,系統資源真正能運用到的部分依舊相當有限。
在伺服器、高階工作站領域,很早就已經朝向多執行緒方面尋求解決處理器的效能瓶頸,運用對稱式多處理器系統(Symmetric Multi-processor,簡稱SMP),配合作業系統將執行緒以平行方式排定處理程序,增進運作效能。不過SMP系統需要兩顆以上的處理器,昂貴的價格並不適合做為桌上型電腦的解決方案。而一種稱之為同時多重執行緒(Simultaneous Multi-threading,簡稱SMT)的技術,則是提供了另一條解決處理器效能瓶頸的途徑,Hyper-Threading採行的正是這項技術。
讓單顆處理器具備雙處理器的效能
SMT技術是在單一處理器上提供執行緒層級的平行處理(Thread-Level Parallelism,TLP)功能,簡單的說,這項技術可讓作業系統將單一實體處理器視為兩顆甚至更多顆的邏輯處理器,提高處理器執行資源的利用程度。以Pentium 4 3.06GHz所具備的Hyper-Threading技術來說,作法是藉由複製處理器上的結構(Architecture State),並共用同一組處理器的執行資源。執行資源指的是處理器內進行加、乘、載入等工作的單元,結構則是負責追蹤程式或執行緒的流向。
我們假設處理器是一座工廠,生產線(執行資源)有一位負責追蹤訂單(執行緒)並確保工廠運作順利的監工(結構),一旦發生某個零件缺料,在待料的同時,生產線(執行資源)的速度也會降低。運用Hyper-Threading技術的處理器就像是工廠內有兩位監工(結構),共享工廠中相同的生產線(執行資源),當一位監工(結構)在等待零件送達時,另一位監工(結構)就可以使用生產線(執行資源)。由於生產線(執行資源)的使用率提高,工廠可以在不增加任何設備的情況下,更有效率的運作,生產更多的貨品。
Hyper-Threading技術和SMP系統不同的是,SMP系統中每顆處理器都擁有自己的執行資源,而Hyper-Threading中的兩顆邏輯處理器則是共用執行資源,只不過它們都各自配備暫存器。為了讓技術的複雜性降至最低,Hyper-Threading並不將獲取資源和編解碼這兩個步驟指向兩個執行緒,而是在兩顆處理器之間交替進行,試圖讓兩個執行緒同時執行指令,進而充分運用系統資源,增加執行效率。
[這篇文章最後由chine在 2002/11/29 17:30:05 編輯]