2 回答

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