Представлен патч для новой версии ядра Linux 6.13 со значительной оптимизацией реализации алгоритма нахождения контрольной суммы CRC32C.
Исходный код реализации CRC32C уменьшен примерно в 10 раз (с 4546 до 418 байт).По данным OpenNET, при выключенной защите retpoline от атак класса Spectre прирост производительности при использовании новой реализации алгоритма CRC32C достигает 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.Изначальный вариант CRC32C включал 128 развёрнутых циклов (unroll), что приводило к довольно большому коду.
Читать на habr.com