ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² GCC ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡŽ Π½Π° 12% Π² ΠΎΠ΄Π½ΠΎΠΌ тСстС ΠΈ замСдлСнию Π½Π° 14% Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ

Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel внёс Π² Π½Π°Π±ΠΎΡ€ компиляторов GCC однострочноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ вСс Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ прСдсказания вСтвлСния Π½Π° процСссорах x86. ИзмСнСниС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ тСста 544.nab_r Π½Π° 12.7% ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Β«-O2 -mtune=graniterapidsΒ» для CPU Intel Granite Rapids/Xeon 6 ΠΈ Π½Π° 12.1% ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Β«-O2 -mtune=znver5Β» Π½Π° CPU AMD Zen5.

ИзмСнСниС вСса с Β«COSTS_N_INSNS (2)Β» Π΄ΠΎ Β«COSTS_N_INSNS (2) + 3Β» ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ ошибки прСдсказания c 2 Π΄ΠΎ 5 условных инструкций, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ особСнности ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ (pipeline) Π² соврСмСнных CPU, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ошибки прСдсказания вСтвлСния Π±ΠΎΠ»Π΅Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹. ИзмСнСниС вСса ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ„ΠΎΡ€ΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ прСобразования компилятором Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Β«ifΒ» Π² условныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CMOV, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ приостановки ΠΏΡ€ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌ прСдсказании вСтвлСния, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ сброса состояния ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°. Π Π°Π½Π΅Π΅ вСс Β«COSTS_N_INSNS (2) + 3Β» указывался Π² GCC Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для процСссоров Intel Ice Lake ΠΈ Alder Lake, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выставлСн для ΠΎΠ±Ρ‰Π΅Π³ΠΎ (generic) профиля процСссоров x86.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ послС принятия ΠΏΠ°Ρ‚Ρ‡Π° всплыла рСгрСссия, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ тСст Β«HintΒ» стал Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² GCC Π½Π° 30% ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΏΡ€ΠΈ сборкС с опциями Β«-march=generic -mtune=znver5Β» ΠΈ Β«-march=generic -mtune=graniterapidsΒ». ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прохоТдСния тСстов SPEC2017 ΠΈ SPEC2026 послС внСсСния измСнСния ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π½Π° ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. НаличиС рСгрСссии ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, ΠΏΠΎ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ прохоТдСния тСста Hint составляСт 14% ΠΏΡ€ΠΈ сборкС с опциями Β«-O2 -mtune=generic -march=x86-64-v3Β».

Π—Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ тСста Hint имССтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° условная конструкция, прСобразуСмая GCC Π² прСдставлСниС Π½Π° Π±Π°Π·Π΅ CMOV. Данная конструкция выполняСтся достаточно Ρ€Π΅Π΄ΠΊΠΎ (Π² 3%) ΠΈ Π΅Ρ‘ оптимизация Π½Π΅ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΠ±ΠΎΡ‡Π½ΠΎΠΌΡƒ эффСкту, Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠ²ΡˆΠ΅ΠΌΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ часто выполняСмого ΠΊΠΎΠ΄Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster