在以前的文章里,筆者談到單核CPU無論在PC端還是服務器上基本上已經退出歷史舞臺,目前主流的計算平臺是使用多核(multiple cores)的CPU以及眾核(many cores)的GPU。另外處理器與內存訪問速度差距也不斷增大,為克服訪存瓶頸主要采用兩種方法。
其中多核CPU與單核CPU都是利用Cache來掩蓋訪問系統內存的延遲,以減輕訪存帶寬的壓力,其芯片的較大面積也都貢獻給Cache。在另一端,GPU通過同時運行很多簡單的線程,不使用或者只利用相對較小的Cache。
而主要通過線程間的并行(Thread Level Parallelism, TLP)來隱藏內存訪問延遲,當一部分線程因為訪存停滯的時候,另一部分線程會接著執行,使得處理單元不會空閑下來。
目前的異構計算平臺同時采用這兩種截然不同的架構,使得性能預測和優化都不太容易,面對一個給定的計算負載,我們應該如何分發能夠達到性能最佳?對芯片架構師而言,在面積受限的芯片上,怎樣合理部署處理單元、Register File和Cache等等也是讓人撓頭的事情。
希望能夠為理解優化性能提供參考,論文作者定義了一個統一仿真模型可以容納延展這兩種不同特點的架構設計。這個模型對應一個想象的混合計算平臺,該平臺由很多簡單的處理單元以及較大的共享緩存構成,通過靈活配置一系列參數,包括處理單元個數、緩存大小以及緩存和內存的訪問延遲等等,可以觀察不同參數變化對計算性能的影響。
為保持模型簡單,論文假設所有線程相互不共享數據且系統內存帶寬足夠大。如下圖所示,作者發現,當線程數量較少的時候,隨著線程數量增加,性能開始提升,而當線程數量到達轉折點,Cache不能夠容納所有線程的工作集的時候,性能反而下降。
之后,隨著線程數量越來越多,由于有足夠的線程來掩蓋Cache訪問不命中帶來內存訪問延遲,性能又接著上升,直達到平臺可獲得的最大性能。我們可以認為MC Region對應多核CPU的情形,而MT Region自然對應有超多線程的GPU,MC Region和MT Region之間的性能波谷區域在我們的架構設計和程序優化中都是要努力避免的。
以下我們具體推導下參數曲線對應的公式,下表列出計算模型涉及的參數,左邊是平臺相關的,右邊跟運算任務有關。
公式(1)為考慮Cache命中率的線程平均訪問內存所需要的時鐘數。
這就是說,線程每運行1/rm條指令,就會因為訪存停滯tavg時鐘,如果沒有別的線程替換進來,對應的處理單元就會處于空閑狀態,要讓該處理單元充分利用,額外需要的線程數為tavg/(CPIexe/rm)。所以要讓整個計算平臺滿負荷運轉,總共需要的線程數量為
NPE * (1 +tavg/(CPIexe/rm))。給定有n個線程的計算任務,計算平臺的利用率η可以計算如公式(2)。
在η=1的情況下,再添加多余的線程于性能無補。根據利用率η我們可以得到計算平臺的預期性能為NPE * (f/CPIexe)*η OPS(Operations Per Second,每秒鐘運算數)。通過該公式,我們可以觀察以下各種參數調節對性能曲線的影響。
值得注意的是以上計算中我們沒有考慮內存帶寬受限的情況,如果把它納入考慮,對特定性能Performance,我們可以按公式(3)計算所要求帶寬。
所以在內存帶寬也是約束條件的情況下,性能計算修正為公式(4)。
而下圖也反映了內存帶寬對性能曲線的影響。值得提醒的是性能曲線水平頂表示計算任務在該平臺上已經觸到了內存帶寬墻(off-chip bandwidth wall),在這種情況下繼續增加線程有可能會惡化Cache命中率,使得帶寬問題更加嚴重反而有損性能,這也是為什么之前我們提到過的GPU顯存帶寬要遠大于CPU系統內存帶寬。
主要參考資料:
Many-core vs many-thread machines: Stay away from the valley
The Interplay of Caches and Threads in Chip-MultiProcessors
編輯:jq
-
cpu
+關注
關注
68文章
10855瀏覽量
211610 -
PC
+關注
關注
9文章
2078瀏覽量
154156 -
內存
+關注
關注
8文章
3020瀏覽量
74013 -
TLP
+關注
關注
0文章
32瀏覽量
15625
原文標題:多線程計算平臺的性能模型
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論