Eine einmalige Änderung in GCC fĂŒhrte zu einer Beschleunigung um 12 % in einem Test und zu einer Verzögerung um 14 % in einem anderen.

Ein Ingenieur von Intel hat eine einzeilige Änderung im GCC-Compiler-Set vorgenommen, die das Gewicht der falschen Zweigvorhersage auf x86-Prozessoren erhöht. Diese Änderung ermöglicht eine Steigerung der Leistung des generierten Codes beim Test 544.nab_r um 12,7 % bei Aktivierung der Optimierungen „-O2 -mtune=graniterapids“ fĂŒr CPU Intel Granite Rapids/Xeon 6 und um 12,1 % bei Aktivierung der Optimierungen „-O2 -mtune=znver5“ fĂŒr CPU AMD Zen5.

Die Änderung des Gewichts von „COSTS_N_INSNS (2)“ auf „COSTS_N_INSNS (2) + 3“ erhöht die Bedeutung der Vorhersagefehler von 2 auf 5 bedingte Anweisungen, was die Besonderheiten der Befehlspipeline in modernen CPUs besser widerspiegelt, in denen Zweigvorhersagefehler kostenintensiver sind. Die Gewichtung fĂŒhrt dazu, dass der Compiler die „if“-AusdrĂŒcke in bedingte Befehle ohne SprĂŒnge umwandelt, wie z. B. CMOV, die Unterbrechungen bei falschen Zweigvorhersagen, die durch das ZurĂŒcksetzen des Pipeline-Zustands verursacht werden, ausschließen. Zuvor wurde das Gewicht „COSTS_N_INSNS (2) + 3“ im GCC nur fĂŒr Intel Ice Lake und Alder Lake Prozessoren angegeben, ist jetzt aber auch fĂŒr das allgemeine (generic) Profil von x86-Prozessoren festgelegt.

Bemerkenswert ist, dass nach der Annahme des Patches eine Regression aufgetreten ist, die dazu fĂŒhrte, dass der Test „Hint“ bei einem der GCC-Entwickler 30 % langsamer ausgefĂŒhrt wurde, wenn er mit den Optionen „-march=generic -mtune=znver5“ und „-march=generic -mtune=graniterapids“ kompiliert wurde. Die Leistung bei den SPEC2017- und SPEC2026-Tests blieb nach der Änderung auf dem bisherigen Niveau. Die Regression wurde von dem Autor des ursprĂŒnglichen Commits bestĂ€tigt; laut seinen Angaben betrĂ€gt die Verlangsamung des Hint-Tests 14 % bei der Kompilierung mit den Optionen „-O2 -mtune=generic -march=x86-64-v3“.

Die Verlangsamung wird dadurch erklĂ€rt, dass der Hint-Test nur eine bedingte Konstruktion enthĂ€lt, die GCC in eine CMOV-basierte Darstellung umwandelt. Diese Konstruktion wird relativ selten (in 3%) ausgefĂŒhrt, und ihre Optimierung hat keinen Einfluss auf die Leistung. Gleichzeitig fĂŒhrte die Änderung des Codegenerierungsmodus zu einem Nebeneffekt, der die AusfĂŒhrung des hĂ€ufigeren Codes verlangsamte.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster