Jednořádková změna v GCC vedla k urychlení o 12% v jednom testu a zpomalení o 14% v jiném

Inženýr ze společnosti Intel provedl v sadě překladačů GCC jednorázovou změnu, která zvyšuje váhu nesprávného předpovědění větvení na procesorech x86. Tato změna umožnila zvýšit výkon generovaného kódu během testu 544.nab_r o 12,7 % při zapnutí optimalizací „-O2 -mtune=graniterapids“ pro CPU Intel Granite Rapids/Xeon 6 a o 12,1 % při aktivaci optimalizací „-O2 -mtune=znver5“ na CPU AMD Zen5.

Změna váhy z „COSTS_N_INSNS (2)“ na „COSTS_N_INSNS (2) + 3“ zvyšuje význam chyby předpovědění z 2 na 5 podmínkových instrukcí, což lépe odráží charakteristiky pipeline v moderních CPU, kde jsou chyby předpovědění větvení nákladnější. Tato změna váhy vede k vynucení přetváření výrazů „if“ na podmínkové příkazy bez přechodů, jako jsou CMOV, což eliminuje zpoždění při nesprávném předpovědění větvení způsobené nutností resetování stavu pipeline. Dříve byla váha „COSTS_N_INSNS (2) + 3“ uváděna v GCC pouze pro procesory Intel Ice Lake a Alder Lake, nyní je nastavena pro obecný (generic) profil procesorů x86.

Je pozoruhodné, že po přijetí patche se objevila regrese, kvůli které test „Hint“ běžel u jednoho z vývojářů GCC o 30 % pomaleji při kompilaci s možnostmi „-march=generic -mtune=znver5“ a „-march=generic -mtune=graniterapids“. Výkon při testech SPEC2017 a SPEC2026 po provedení změny zůstal na stejné úrovni. Přítomnost regrese byla potvrzena autorem původního commitu, podle jeho údajů zpoždění průchodu testem Hint činilo 14 % při kompilaci s možnostmi „-O2 -mtune=generic -march=x86-64-v3“.

Zpoždění je vysvětleno tím, že v kódu testu Hint existuje pouze jedna podmínková konstrukce, kterou GCC převádí na reprezentaci založenou na CMOV. Tato konstrukce se vykonává poměrně zřídka (v 3 %) a její optimalizace nemá vliv na výkon. Zároveň změna režimu generování kódu vedla k vedlejšímu efektu, který zpomalil vykonávání častěji prováděného kódu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster