Zmena jedného riadku v GCC viedla k 12% zrýchleniu v jednom teste a 14% spomaleniu v inom.

Inžinier spoločnosti Intel vykonal v kompilátore GCC jednoriadkovú zmenu, ktorá zvyšuje váhu chybných predpovedí vetvenia na procesoroch x86. Táto zmena zvýšila výkon generovaného kódu pri prechádzaní benchmarkom 544.nab_r o 12.7 % pri povolení optimalizácií „-O2 -mtune=graniterapids“ na procesoroch Intel Granite Rapids/Xeon 6 a o 12.1 % pri povolení optimalizácií „-O2 -mtune=znver5“ na procesoroch AMD Zen5.

Zmena váhy z „COSTS_N_INSNS (2)“ na „COSTS_N_INSNS (2) + 3“ zvyšuje významnosť chybnej predpovede z 2 na 5 podmienených inštrukcií, čo lepšie odráža špecifiká moderných procesorových kanálov, kde sú chybné predpovede vetvenia nákladnejšie. Táto zmena váhy núti kompilátor konvertovať príkazy „if“ na podmienené inštrukcie bez vetvenia, ako napríklad CMOV, čo eliminuje zastavenie chybnej predpovede vetvenia spôsobené potrebou prepláchnuť kanál. Predtým bola váha „COSTS_N_INSNS (2) + 3“ v GCC špecifikovaná iba pre procesory Intel Ice Lake a Alder Lake, ale teraz je nastavená pre generický profil procesorov x86.

Je pozoruhodné, že po prijatí záplaty sa objavila regresia, ktorá spôsobila, že benchmark „Hint“ bežal u jedného vývojára GCC o 30 % pomalšie pri zostavovaní s možnosťami „-march=generic -mtune=znver5“ a „-march=generic -mtune=graniterapids“. Výkon benchmarkov SPEC2017 a SPEC2026 zostal po zmene nezmenený. Regresiu potvrdil aj pôvodný committer, ktorý hlásil 14 % spomalenie benchmarku Hint pri zostavovaní s možnosťami „-O2 -mtune=generic -march=x86-64-v3“.

Spomalenie sa vysvetľuje skutočnosťou, že kód benchmarku Hint obsahuje iba jednu podmienenú konštrukciu, ktorú GCC konvertuje na reprezentáciu založenú na CMOV. Táto konštrukcia sa vykonáva pomerne zriedkavo (3 %) a jej optimalizácia nemá vplyv na výkon. Zmena režimu generovania kódu však mala vedľajší účinok v podobe spomalenia vykonávania častejšie vykonávaného kódu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster