《高效能科學與工程計算》 1 5 多執行緒處理器

2021-09-30 21:14:43 字數 680 閱讀 1304

所有現代的處理器都以高度流水線化來提高效能(如果可以使用流水線)。前面提到,一些因素會影響流水線的高效利用:相關性、儲存延遲、不確定的迴圈長度、指令混合以及分支判斷錯誤等(參考2.32節)將導致流水線頻繁等待,很大一部分執行資源處於空閒狀態(見圖1-19)。不幸的是,這種情況是規則而不是意外。為了提高時鐘頻率而盡可能設計長流水線會增加演算法的複雜性,結果導致沒有獲得成比例的效能提公升,處理器也會有更多的功耗。

正是由於這個原因,到很多現代的處理器設計中加入了執行緒,也叫做超執行緒技術(hyper threading)[v108,v109]或者實時多執行緒(simultaneous multithreading,smt)。這種設計的特點是cpu核的結構狀態多次復現在不同的執行緒中,結構狀態包括資料、狀態和控制暫存器,還有棧和指令指標,但諸如算術運算器、cache、記憶體介面等執行資源沒有重複。由於多個結構狀態的存在,cpu看起來像是包含了一組核(有時也叫邏輯處理器),可以並行執行多個指令流或者執行緒,而不用理會它們是否屬於同乙個程式。硬體必須記錄指令屬於哪個結構狀態。所有執行緒共享這些執行資源,所以由流水線阻塞而產生的氣泡可以用另外乙個執行緒的指令來填充。如果存在並行執行的多個流水線(參見1.2.4節),乙個執行緒擱置了或者多個流水線正處於空閒狀態,則另乙個執行緒就可以使用它們,參見圖1-20。

《高效能科學與工程計算》 3 7 習題

3.1 非連續訪存。如果乙個或者多個陣列以不定間隔方式讀寫,3.1節中介紹的 平衡值和lightspeed應如何修改?對於乙個間隔為s的向量操作,可以期望什麼樣的效能特徵?能否用展開並合併技術作用於外層迴圈 參見3.5.2節 來減少 平衡值?嘗試編寫上面 的四路展開版本。n沒有特定的假設 除了n取值...

《高效能科學與工程計算》 2 6 習題

2.1 分支的危險。考慮下面的基準 如果a是乙個單精度浮點數陣列,當offset取何值時,該迴圈可被simd向量化 如圖1 8所示 2.3 棧上的延遲構造。在2.5.2節的延遲構造例子中,如果我們使用標準c的double陣列,而不是使用std vector。陣列被宣告時的區別在 2.4 快速賦值。在...

TCP高效能伺服器程式設計 多程序與多執行緒

首先回憶一下在tcp程式設計中,主要看一下伺服器端的 include include include include include include include include ip位址轉換函式 include 位元組序轉換函式 int main int n recv c,buff,2,0 阻塞...