Π’ ядрС Linux ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° CRC32C

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² состав Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ ядра Linux 6.13 ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΏΠ°Ρ‚Ρ‡ с ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° нахоТдСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы CRC32C. Код Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ CRC32C ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 10 Ρ€Π°Π· (с 4546 Π΄ΠΎ 418 Π±Π°ΠΉΡ‚). ΠŸΡ€ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Π΅ retpoline ΠΎΡ‚ Π°Ρ‚Π°ΠΊ класса Spectre прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ использовании Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ достигаСт 11.8% Π½Π° процСссорах AMD Zen 2, 6.4% — Intel Emerald Rapids ΠΈ 4.8% Intel Haswell. ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ retpoline прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π΅Π½ ΠΈ достигаСт 66.8% Π½Π° систСмах с процСссорами Intel Emerald Rapids, 35.0% — Intel Haswell ΠΈ 29.5% — AMD Zen 2. retpoline enabled | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 35.0% | 20.7% | 17.8% | 9.7% | -0.2% | 4.4% | Intel Emerald Rapids | 66.8% | 45.2% | 36.3% | 19.3% | 0.0% | 5.4% | AMD Zen 2 | 29.5% | 17.2% | 13.5% | 8.6% | -0.5% | 2.8% | retpoline disabled: | 512 | 833 | 1024 | 2000 | 3173 | 4096 | ———————+——-+——-+——-+—— +——-+——-+ Intel Haswell | 3.3% | 4.8% | 4.5% | 0.9% | -2.9% | 0.3% | Intel Emerald Rapids | 7.5% | 6.4% | 5.2% | 2.3% | -0.0% | 0.6% | AMD Zen 2 | 11.8% | 1.4% | 0.2% | 1.3% | -0.9% | -0.2% |

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ CRC32C Π²ΠΊΠ»ΡŽΡ‡Π°Π» 128 Ρ€Π°Π·Π²Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² (unroll), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ довольно Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ соврСмСнныС процСссоры c ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ выполнСния инструкций Π½Π΅ ΠΏΠΎ порядку (out of order) ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, подобная оптимизация ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° лишь ΠΊ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ. ВмСсто 128 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ Π±Ρ‹Π»ΠΎ оставлСно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сильно сократило объСм ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ ускорило Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

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