Një ndryshim me një rresht në GCC solli një përshpejtim prej 12% në një test dhe një ngadalësim prej 14% në një tjetër

Një inxhinier nga kompania Intel bëri një ndryshim të vetëm në argumentin e kompilatorëve GCC, i cili rrit peshën e parashikimit të gabuar të degëzimit në procesorët x86. Ky ndryshim mundësoi një përmirësim të performancës së kodit të gjeneruar me 12.7% në testin 544.nab_r kur aktivizoheshin optimizimet "-O2 -mtune=graniterapids" për CPU Intel Granite Rapids/Xeon 6 dhe me 12.1% kur aktivizoheshin optimizimet "-O2 -mtune=znver5" në CPU AMD Zen5.

Ndryshimi i peshës nga "COSTS_N_INSNS (2)" në "COSTS_N_INSNS (2) + 3" rrit rëndësinë e gabimit të parashikimit nga 2 në 5 instruksione të kushtëzuara, që pasqyron më mirë karakteristikat e konvejeve të procesimit të komandeve (pipeline) në CPU-të moderne, ku gabimet e parashikimit të degëzimit janë më të kushtueshme. Ky ndryshim i peshës çon në forcim të transformimit nga kompilatori të shprehjeve "if" në komanda kushtzuese pa kalime, siç janë CMOV, duke eliminuar ndalimet që rezultojnë nga gabimet në parashikim të degëzimit, të shkaktuara nga nevoja për të rikthyer gjendjen e konvejit. Më parë, pesha "COSTS_N_INSNS (2) + 3" ishte caktuar në GCC vetëm për procesorët Intel Ice Lake dhe Alder Lake, dhe tani është caktuar për profilin e përgjithshëm (generic) të procesorëve x86.

ËshtĂ« interesante se pas miratimit tĂ« patch-it u shfaq njĂ« regresion, pĂ«r shkak tĂ« tĂ« cilit testi "Hint" filloi tĂ« ekzekutohej nga njĂ«ri prej zhvilluesve tĂ« GCC 30% mĂ« ngadalĂ« kur komilohej me opsionet "-march=generic -mtune=znver5" dhe "-march=generic -mtune=graniterapids". Performanca e kalimeve tĂ« testeve SPEC2017 dhe SPEC2026 mbeti nĂ« tĂ« njĂ«jtin nivel pas ndryshimit. Prania e regresionit Ă«shtĂ« konfirmuar nga autori i komitit origjinal, sipas tĂ« dhĂ«nave tĂ« tij, ngadalĂ«simi i kalimit tĂ« testit Hint Ă«shtĂ« 14% kur komilohet me opsionet "-O2 -mtune=generic -march=x86-64-v3".

Ngadalësimi shpjegohet me faktin se kodi i testit Hint ka vetëm një konstrukcion kushtzuese, e cila konvertohet nga GCC në një paraqitje të bazuar në CMOV. Ky konstrukcion ekzekutohet mjaft rrallë (në 3%) dhe optimizimi i saj nuk ndikon në performancë. Megjithatë, ndryshimi i mënyrës së gjenerimit të kodit çoi në një efekt anësor, që ngadalësoi ekzekutimin e kodit më të shpesh ekzekutuar.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster