2 回答

TA貢獻2065條經驗 獲得超14個贊
這是原始答案的后續內容,根據Andreas Abel提供的測試結果分析其他五種架構的行為:
Nehalem處理器
珊迪大橋
常春藤橋
Broadwell微架構
咖啡湖
除了Skylake和Haswell之外,我們還快速了解這些架構的結果。它只需要一個“快速”的外觀,因為除了Nehalem之外的所有架構都遵循上面討論的現有模式之一。
首先,短nop情況下運行傳統解碼器(對于不適合LSD的循環)和LSD。以下是針對所有7種體系結構的此方案的周期/迭代。
圖2.1:所有架構密集的nop性能:
這個圖表非常繁忙(點擊查看大圖)并且有點難以閱讀,因為許多架構的結果彼此重疊,但我試圖確保專用閱讀器可以跟蹤任何架構的線路。
首先,我們來討論一下這個大異常值:Nehalem。所有其他架構的斜率大致遵循4 uops / cycle周期線,但Nehalem每個周期幾乎正好是3 uop,因此很快落后于所有其他架構。在最初的LSD區域之外,該線路也是完全平滑的,沒有在其他架構中看到的“階梯”外觀。
這與Nehalem的uop 退休限制為3 uops / cycle 完全一致。這是LSD之外的uops的瓶頸:它們每個周期都執行大約3個uop,退休時瓶頸。前端不是瓶頸,所以準確的uop計數和解碼安排都無關緊要,因此沒有臺階。
除了Nehalem之外,其他架構,除了Broadwell之外,還可以分成幾組:Haswell-like或Skylake-like。也就是說,所有Sandy Bridge,Ivy Bridge和Haswell都表現得像Haswell,因為大于15 uops的循環(在另一個答案中討論了Haswell行為)。盡管它們是不同的微架構,但由于它們的傳統解碼能力相同,因此它們的行為基本相同。低于約15 uops,我們看到Haswell對于任何uop計數而言都要快一些,而不是4的倍數。由于更大的LSD或者還有其他“小循環”優化,它可能會在LSD中額外展開。對于Sandy Bridge和Ivy Bridge,這意味著小循環應該絕對定位一個uop計數,它是4的倍數。
Coffee Lake的行為與Skylake 1相似。這是有道理的,因為微架構是相同的。Coffee Lake看起來比Skylake低約16 uops,但這只是Coffee Lake默認的殘疾LSD的影響。Skylake已經通過啟用的LSD進行了測試,之后由于安全問題,英特爾通過微碼更新禁用了它??Х群谶@個問題出現之后就被釋放了,所以LSD是開箱即用的。因此,對于此測試,Coffee Lake正在使用DSB(對于低于約18 uop的循環,仍然可以適合DSB)或傳統解碼器(對于其余循環),這樣可以獲得更好的小uop計數結果LSD強加開銷的循環(有趣的是,對于較大的循環,LSD和傳統解碼器碰巧強加完全相同的開銷,原因各不相同)。
最后,我們來看看2字節的NOP,它們不夠密集以防止使用DSB(因此這種情況更能反映典型代碼)。
圖2.1:2字節nop性能:
同樣,結果與前面的圖表一致。Nehalem仍然是每個周期3個uop的瓶頸。對于高達約60個uops的范圍,除了Coffee Lake之外的所有架構都使用LSD,我們看到Sandy Bridge和Ivy Bridge在這里表現稍差,四舍五入到下一個周期,因此只實現了4的最大吞吐量uops /循環如果循環中的uops數是4的倍數。在32 uops以上,Haswell和新uarchs的“展開”功能沒有任何影響,所以一切都大致相關。
Sandy Bridge實際上有一些uop范圍(例如,從36到44 uops),它比新架構表現更好。這似乎是因為并非LSD檢測到所有循環,并且在這些范圍內,循環由DSB提供。由于DSB通常更快,因此在這些情況下Sandy Bridge也是如此。
英特爾說的是什么
實際上,您可以在英特爾優化手冊第3.4.2.5節中找到專門處理此主題的部分,正如Andreas Abel在評論中所指出的那樣。在那里,英特爾說:
LSD擁有構建小“無限”循環的微操作。來自LSD的微操作分配在無序引擎中。LSD中的循環以采用分支結束到循環的開頭。循環結束時采用的分支始終是循環中分配的最后一個微操作。循環開始處的指令始終在下一個循環中分配。如果代碼性能受前端帶寬限制,則未使用的分配時隙會導致分配氣泡,并可能導致性能下降。英特爾微體系結構代碼名稱Sandy Bridge中的分配帶寬是每個周期四個微操作。當LSD中的微操作數導致未使用的分配插槽數量最少時,性能最佳。您可以使用循環展開來控制LSD中的微操作數。
他們繼續展示一個例子,由于LSD“四舍五入”,將循環展開一個因子2無助于性能,但是通過三個作品展開。這個例子很混亂,因為它實際上混合了兩個效果,因為展開更多也減少了循環開銷,因此減少了每次迭代的uop數。一個更有趣的例子就是將循環展開次數減少導致由于LSD舍入效應導致性能提高。
本節似乎準確描述了Sandy Bridge和Ivy Bridge的行為。上面的結果表明,這兩種體系結構都如上所述,并且對于分別具有4N + 3,4N + 2或4N + 1 uops的循環,您將丟失1,2或3個uop執行槽。
但是,Haswell及其后來的新性能尚未更新。如在另一個答案中所描述的,性能已經從上述簡單模型改進并且行為更復雜。
1在16 uops有一個奇怪的異常值,其中Coffee Lake表現比其他所有架構都差,甚至Nehalem(回歸率約為50%),但也許這個測量噪音?
- 2 回答
- 0 關注
- 959 瀏覽
添加回答
舉報