Egyetlen soros módosítás a GCC-ben 12%-os gyorsulást és 14%-os lassulást eredményezett egy másik tesztben.

Egy Intel mérnök egy egysoros módosítást végzett a GCC fordítókészletében, amely növeli a hibás elágazás-gyorsítók árát x86 processzorokon. Ez a változás lehetővé tette a generált kód teljesítményének 12,7%-os növelését a 544.nab_r teszt során az „-O2 -mtune=graniterapids” optimalizálások engedélyezésével az Intel Granite Rapids/Xeon 6 CPU-n, és 12,1%-os növekedést a „-O2 -mtune=znver5” optimalizálásokkal az AMD Zen5 CPU-n.

A súlynak a „COSTS_N_INSNS (2)” értékéről „COSTS_N_INSNS (2) + 3”-ra történő módosítása növeli a hibás elágazás jelentőségét 2-ről 5 feltételes utasításra, amely jobban tükrözi a modern CPU-k utasításkivitelezőinek (pipeline) sajátosságait, ahol a hibás elágazások költségesebbek. A súly módosítása arra kényszeríti a fordítót, hogy az „if” kifejezéseket ugrásmentes feltételes utasításokká alakítsa, például CMOV-t, amelyek kizárják a hibás elágazások miatti szüneteket az utasításkivitelező állapotának visszaállítása miatt. Korábban a „COSTS_N_INSNS (2) + 3” súlyt csak Intel Ice Lake és Alder Lake processzorok esetén adták meg a GCC-ben, most pedig a x86 processzorok általános (generic) profiljára is érvényes.

Figyelemre méltó, hogy a javítás elfogadása után egy regresszió lépett fel, ami miatt a „Hint” teszt 30%-kal lassabban futott az egyik GCC fejlesztőnél az „-march=generic -mtune=znver5” és az „-march=generic -mtune=graniterapids” opciókkal végzett fordítás során. A SPEC2017 és SPEC2026 tesztek teljesítménye a változtatás után változatlan maradt. A regressziót az eredeti commit szerzője is megerősítette, aki szerint a Hint teszt átfutási ideje 14%-kal lassabb az „-O2 -mtune=generic -march=x86-64-v3” opciókkal végzett fordításnál.

A lassulás oka az, hogy a Hint teszt kódjában csupán egy feltételes szerkezet található, amelyet a GCC CMOV alapú képviseletre alakít. Ez a szerkezet elég ritkán fordul elő (3%-ban), és az optimalizálása nem befolyásolja a teljesítményt. Ugyanakkor a kódgenerálási mód változása mellékhatást okozott, amely lelassította a gyakrabban futó kód végrehajtását.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster