多線程擴展內容

多線程(multithreading)擴展


多線程就是在一個單個的處理核心內同時運行多個工作線程的技術,
和CMP(CHIP MULTIPROCESSING,芯片多處理)不同,後者是通過集成多個處理內核的方式來讓系統的處理
能力提升——也就是現在常見的多核技術。現在主流的處理器都使用了CMP技術。


多線程技術的思想有些類似於早期的分時共享計算系統,執行多個線程的處理器在遇到某個線程由於
CACHE MISS或者分支預測失敗而停頓的時候,可以切換到另一個線程來執行。


目前主流的multithreading具有着三種形式,差別在於線程間共享的資源以及線程切換的機制:
其中CMT和FMT都是在單個執行單元下的技術,不同的線程在指令級別上並不是真正的“並行”,而SMT則具
有多個執行單元,同一時間內可以同時執行多個指令,因此前兩者有時先歸類爲TMT(TEMPORAL MULTITHREADING,時間多線程),以和SMT相區分。


首先介紹
CMT——COARSE-GRAINED MULTITHREADING:
它是最簡單的多線程技術,當單一執行線程遇到長時間的延遲,如CACHE MISSED時,就進行線程切換,
直到原線程等待的操作完成,才切換回去。


FMT——FINE-GRAINED MULTITHREADING:
隨時可以在每個時鐘週期內切換多個線程,以追求最大的輸出能力——當然,隨時可以切換也是有代價的,
它拉長了每個執行線程的平均執行時間。


SMT——SIMULTANEOUS MULTITHREADING:
前面說過,SMT其實和其他兩種多線程技術都不同——那兩種技術被稱之爲TMT時間多線程。SMT具有多個執
行單元,可以同時運行多條指令,因此才叫做“同步多線程”!---一個核2個以上的線程(指令)可以真正的
同步運行。SMT起先源自充分挖掘超標量架構處理器的潛力——超標量的意思就是可以同時執行多個不同的
指令。因此SMT具有最大的靈活性和資源利用率,然而實現也最複雜(當然比起多核結構來說就是小意思了)。


同步多線程(SMT)是一種在一個CPU的時鐘週期內能夠執行來自多個線程的指令的硬件多線程技術。本質上,
同步多線程是一種將線程級並行處理(多CPU)轉化爲指令級並行處理(同一CPU)的方法。
同步多線程是單個物理處理器從多個硬件線程上下文同時分派指令的能力。同步多線程用於在商用環境中
及爲週期/指令(CPI)計數較高的工作負載創造性能優勢。處理器採用超標量結構,最適於以並行方式讀取
及運行指令。同步多線程使您可在同一處理器上同時調度兩個應用程序,從而利用處理器的超標量結構性質。


同步多線程參考文檔:
http://baike.baidu.com/link?url=JptrnhSv6MyJPixXr4uliMS6rmvpT0IacGZyrmCIiUsIV_xTV8GvJxE3kJgB4ENa45qrS6kPIjweXixlXm4dl_


--後話
在NetBurst微架構後期,Intel爲了維持性能上的優勢,將Prescott核心的Pentium 4流水線拉長到31級;
細化後的流水線可以被分成若干個環節,然後執行不同的任務進程,
Intel將其稱爲“Hyper-Threading Technology(超線程技術,簡稱HT)”。但過長的流水線需要進行大量的
分支預測工作,而且一旦預測失準,就要把當前的工作全部推倒重新來過。這就造成了Pentium 4 HT處理
器空有高頻率,發熱量也大得驚人,性能卻提高有限,最終還被扣上了“高頻低能”的大帽子。 


從原則上來講HT技術絕對是一項非常有意義的創新和嘗試,如果我們假設當初HT遇到的不是流水線冗長
Prescott Pentium 4,而是更加精簡高效的Core 2 Duo,結果會怎樣? 


當然,只有14級流水線的Core 2 Duo最終還是與HT擦肩而過(當初的理由是過短的流水線沒必要引入超線
程技術);但這並不代表Intel放棄了這方面的努力,現在Nehalem就在嘗試做這樣的事情。所不同的是,
這次的主角有了一個新名字——Simultaneous Multi-Threading(同步多線程,簡稱SMT)。


新技術允許內核在同一時間運行兩個不同的進程,以此來壓縮多任務處理時所需要的總時間。這麼做有兩
個好處,
其一是提高處理器的計算性能,減少用戶得到結果所需的時間;
其二就是更好的能效表現,利用更短的時間來完成任務,這就意味着在剩下的時間裏節約更多的電能消耗。
當然這麼做有一個總前提——保證SMT不會重複HT所犯的錯誤,而提供這個擔保的則是在CORE微架構中表現非常出色的分支預測設計。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章