ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΡΠΎΡΡΠ°Π² Π±ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ ΡΠ΄ΡΠ° 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