複製鏈接
請複製以下鏈接發送給好友

同時多線程

鎖定
同時多線程是指是超標量技術多線程技術的結合。它的基本思路是把注意力返回到處理器本身,從充分利用CPU的效率、挖掘單個物理CPU的潛力人手,通過發射更多的指令來提高處理器的性能。
中文名
同時多線程
外文名
Simultaneous Multi-Threading
簡    稱
SMT
實現方法
細粒度、粗粒度方法
意    義
利用操作系統的虛擬多重處理
學    科
信息科學

目錄

同時多線程簡述

同時多線程(Simultaneous Multi-Threading,SMT)最重要的意義是利用操作系統的虛擬多重處理,把兩個(或多個)CPU看成是一個處理器。這樣,就能夠在每個時鐘週期都可以從多個線程中選擇多條不相關的指令發射到相應的功能部件去執行。由於基本解決了相關性問題,因此SMT處理器完全有可能在每個指令週期內填滿所有的發射槽。
SMT技術是超標量技術與多線程技術的充分協同與結合,可以解決影響處理器性能的諸多難題。 [1] 

同時多線程實現方法

主要有兩種主要的多線程實現方法。
第一種方法是細粒度(Fine-Grained)多線程技術,它在每條指令間都能進行線程的切換,從而導致多個線程的交替執行。通常以時間片循環的方法實現這樣的交替執行,在循環的過程中需要跳過被阻塞的線程。要實現細粒度的多線程,CPU必須在每個時鐘週期都能進行線程的切換。由於一個線程阻塞後其他線程的指令還能夠立即執行,所以細粒度多線程的主要優點是能夠隱藏由任何或長或短的阻塞帶來的吞吐率的損失。而其主要的缺點是減慢了每個獨立線程的執行,這是因為即使沒有任何阻塞,線程也會被其他線程的指令插入執行而導致延遲。
第二種方法是粗粒度(Coarse-Grained)多線程技術,它是基於細粒度多線程的優缺點而提出的。粗粒度多線程之間的切換隻在發生代價較高、時間較長的阻塞出現時,例如二級Cache失效時才進行線程間的切換。這一改變大大減少了線程間切換的次數,並且不會減慢每個獨立線程的執行,這是因為只有當線程發生高代價阻塞時才執行其他線程的指令。然而,粗粒度多線程也有較大的缺點:不能有效地減少吞吐率的損失,特別是對於較短的阻塞而言。這一缺點是由粗粒度多線程的流水線建立時間的開銷造成的。由於實現粗粒度多線程的CPU只執行單個線程的指令,因此當發生阻塞時,流水線必須排空或暫停。阻塞後切換的新的線程在指令執行產生結果之前必須先填滿整個流水線。由於有建立時間的開銷,粗粒度多線程對於減少高代價阻塞時帶來的損失較為有效,此時流水線的建立時間相對於阻塞時間可以忽略不計。 [1] 

同時多線程意義

SMT最重要的意義是利用操作系統的虛擬多重處理,把兩個(或多個)CPU看成是一個處理器。這樣,就能夠在每個時鐘週期都可以從多個線程中選擇多條不相關的指令發射到相應的功能部件去執行。由於基本解決了相關性問題,因此SMT處理器完全有可能在每個指令週期內填滿所有的發射槽。
SMT技術是超標量技術與多線程技術的充分協同與結合,可以解決影響處理器性能的諸多難題。
1)減少結構相關性的影響
當一條指令要使用的功能部件被前面的一條指令所佔用而無法執行時,就產生了指令間的結構相關性。在STM處理器中,不僅支持在超標量處理器中採用的亂序執行,還採用從多個不同線程中選擇指令的方式,大大減少了功能部件衝突的概率。
2)減少邏輯相關性的影響
邏輯相關性包括“偽相關”(有“讀後寫”、“寫後寫”)和“真相關”(“寫後讀”)。對於前者,SMT處理器沿用了超標量處理器中採用的“寄存器重命名”策略加以解決;對於後者,超標量處理器無法解決,而SMT處理器為每個線程配備了獨立的寄存器文件,不僅可以在線程切換過程中快速保存和恢復現場,而且由於只要選擇不同的線程就不存在相關。當再調度到同一線程時,先前的指令已經執行完畢。
3)減少控制相關的影響
對於超標量處理器來説,轉移預測的正確率對於減少控制相關非常重要。可惜預測的正確率並非百分之百,而且隨着IPC和指令流水級數的增加,作廢的指令條數也會迅速增加。STM處理器將兩個轉移方向映像到不同的線程中執行,等轉移地址確定後,從兩個線程中選擇正確的一個繼續執行,中止另一個。這一方法與轉移預測技術結合,會將控制轉移危害減輕許多。
4)隱藏遠程訪問和同步等待延遲
在大規模並行計算機系統,特別是擁有數千個處理器節點的DSP(分佈共享處理器)系統中,處理器訪問遠程存儲空間的延遲可以高達200多個時鐘週期。在如此大的系統中,多個節點間的同步等待延遲也不容忽視。傳統處理器通過忙等待或一個耗時很長的操作系統級線程切換來處理此類情況,隨着高性能計算對系統效率要求的不斷提高,這樣的處理方式已經不能滿足要求了。 [1] 
參考資料
  • 1.    張基温編著.計算機組成原理教程 (第6版):清華大學出版社,2016.05