Как стать автором
Обновить

Вышел патч для ядра Linux со значительной оптимизацией реализации алгоритма CRC32C

Время на прочтение1 мин
Количество просмотров6K

Представлен патч для новой версии ядра 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), что приводило к довольно большому коду. Так как современные процессоры c поддержкой выполнения инструкций не по порядку (out of order) могут выполнять команды параллельно, подобная оптимизация команд перехода в циклах получилась избыточной и приводила лишь к чрезмерно большому коду. Вместо 128 итераций в новом варианте было оставлено только 4, что не только сильно сократило объем кода, но и ускорило выполнение операции.

Теги:
Хабы:
+7
Комментарии3

Другие новости

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань