淺析FMT,CMT, SMT區別


  • FMT(fine-grained multithreading)又叫交叉多線程或指令交錯多線程

–       每個時鍾周期都進行線程的切換,多個線程交替執行,同一個周期只從一個線程發射指令到功能部件

–       理論上,FMT通過有效的調度可以完全隱藏存儲延時,即在存儲操作完成之前不從同一個線程取指

 

 

  • CMT(coarse-grained multithreading)又叫阻塞多線程或塊交錯多線程

–       連續執行一個線程的指令,直到遇到長延時操作才切換到另一個線程,也是同一個周期只能從一個線程發射指令

–       在線程切換發生之前,一個線程可以全速運行

–       CMT中的線程切換時機非常重要

 

 

  • SMT(simultaneous multithreading) 同時多線程(SMT)

–       每個周期把來自多個線程的指令發射到多個功能部件去執行,已經沒有線程切換的概念

–       能夠同時開發單個應用中的指令級並行和多個應用間的線程級並行

–       Intel的超線程(Hyper-Threading,簡稱HT)技術就是SMT的一種變體,並被應用在Xeon處理器和Pentium4處理器中

 

下面對比他們的不同,以下圖為例:

 

 

 

此圖含義:從上到下為時鍾周期,4個方塊為4個發射槽。

  FMT一個周期只允許一個線程發射指令。分析前2個時鍾周期,第一個時鍾周期線程4占有,它只發射一條指令,如 a=3;第二個時鍾周期,切換到線程2,線程2發射2條可以並行執行的指令,如 a=b+c,d=e+f;之后切換到線程3...如此往復。

  CMT個周期也只允許一個線程發射指令。但是與FMT不同的是只有遇到長延時操作才切換到另一個線程。故一個線程可以較長時間占有發射槽。

FMT和CMT通過線程切換可以隱藏存儲延時,因此減少了發射槽的垂直浪費。但由於FMT和CMT在同一個時鍾周期里只能從一個線程發射指令,因此指令級並行不足造成的水平浪費仍然存在。

  SMT能夠減少發射槽的水平浪費和垂直浪費(1)每個周期可以發射來自不同線程的指令去執行,通過線程級並行來彌補單線程指令級並行的不足,從而減少水平浪費(2)當某個線程因為長延時操作導致無法發射指令時,可以選擇發射其他線程的指令,通過隱藏延時來減少垂直浪費,SMT的圖分析不予贅述。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM