I Linux-kÀrnan har implementationen av CRC32C-algoritmen optimerats

För inkludering i den kommande versionen av Linux-kĂ€rnan 6.13 har en patch föreslagits med en omarbetad implementation av algoritmen för CRC32C-kontrollsumma. Koden för CRC32C-implementeringen har minskats med cirka 10 gĂ„nger (frĂ„n 4546 till 418 byte). NĂ€r skyddet retpoline mot Spectre-attacker Ă€r avstĂ€ngt uppgĂ„r prestandaökningen vid anvĂ€ndning av den nya implementeringen till 11,8% pĂ„ AMD Zen 2-processorer, 6,4% pĂ„ Intel Emerald Rapids och 4,8% pĂ„ Intel Haswell. NĂ€r retpoline Ă€r aktiverat blir prestandaökningen mer markant och nĂ„r upp till 66,8% pĂ„ system med Intel Emerald Rapids-processorer, 35,0% pĂ„ Intel Haswell och 29,5% pĂ„ AMD Zen 2. retpoline aktiverad | 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 inaktiverad: | 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% |

Den ursprungliga versionen av CRC32C inkluderade 128 upprepade cykler (unroll), vilket ledde till ganska stor kod. Eftersom moderna processorer med stöd för att utföra instruktioner icke i ordning (out of order) kan utföra kommandon parallellt, visade sig sÄdan optimering av hoppkommandon i cykler overflödig och ledde enbart till onödigt stor kod. IstÀllet för 128 iterationer behölls endast 4 i den nya versionen, vilket inte bara kraftigt minskade kodens volym utan ocksÄ pÄskyndade utförandet av operationen.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster