傳統的CPU在某一時間只能處理一個指令序列,通常我們把它稱為一個線程。線上程處理的過程中CPU的處理單元需要不斷調入指令與資料進行處理。隨著CPU技術的發展,CPU的主頻與效能不斷提高,需要調入指令和資料的速度不斷提高。但不幸的是記憶體技術的發展並沒有跟上CPU發展的速度,記憶體通常無法提供足夠的指令和資料給CPU進行處理。
為瞭解決這個問題,業界通常採用多級緩衝的方式。CPU處理單元中的寄存器是最快的,通常一個CPU中有一、兩百個寄存器,它可以在一個刻度內提供指令和資料。其次是一級緩衝,他的大小通常為幾十KB,它需要幾個刻度的訪問時間。再下面是二級緩衝,他的大小通常為幾MB,它需要十幾個刻度的訪問時間。然後是記憶體,從記憶體中取得資料需要幾十個個刻度。而最慢的是硬碟,通常需要幾千甚至幾萬個刻度的訪問時間。
當CPU需要處理下一條指令時,他通常按照寄存器、一級緩衝、二級緩衝、記憶體、硬碟這一順序去尋找。但如果在記憶體中仍然找不到需要的指令或資料時。系統會進行Context Switch,終止此線程在CPU上的運行,使其處於等待狀態,而讓其他的線程運行,當此線程需要的資料被調入記憶體後,此線程處於就緒狀態,可以被調度到CPU上運行。線程間的Context Switch需要幾十個刻度。
由此可見當CPU需要從記憶體中取資料時,處理單元需要空轉幾十個刻度,有關統計顯示當前CPU處理單元的平均利用率不足25%。為了提高CPU處理單元的利用率,設計者採用了線程級的並行技術,即在CPU的核心中執行一個以上的指令序列。對於作業系統來說,一個物理的處理器相當於兩個邏輯的處理器,當前有三種不同的方式,實現多線程技術。
粗粒度的多線程,在任一時刻只有一個線程執行,當線程遇到一個長延遲事件時,如二級緩衝不命中,則系統調度另一個線程執行,而不是讓系統資源空轉等待此線程。這一機制可以提高整個系統的利用率。這兩個線程共用許多系統資源,如CPU的寄存器和緩衝等,因此這兩個線程的切換比Context Switch要快得多,只需要幾個刻度。IBM在使用PowerPC RS64 IV處理器的pSeries 680和pSeries 660-6M1上使用過這種粗粒度的多線程技術。
另一種與粗粒度的多線程技術相對的是細粒度多線程技術,採用這種多線程的系統迴圈的執行兩個線程的指令,這就需要在處理器的設計上增加許多冗餘的組件。如果一個線程遇到個長延遲事件時,對應這一線程執行的刻度仍然沒有被利用。
第三種多線程技術是同步多線程技術(SMT),與其他的多線程技術一樣,同步多線程能夠從多個線程中取出指令來運行,它能夠同時執行不同線程的指令。通過同步多線程技術,系統能夠動態調整系統內容,如有可能同時執行不同線程的指令。當一個線程遇到長延遲事件時,允許另一個線程使用所用的處理單元。
Power5 處理器的設計採用兩路的同步多線程設計,雖然更多路的同步多線程也是可能的,但類比現實,其所增加的系統的複雜性是不經濟的。另外一個需要注意的問題是,同步多線程技術可能會由於緩衝爭用而降低整個系統的效能。