Новости В 10 раз компактнее: новая реализация CRC32C в ядре Linuх

NewsMaker

I'm just a script
Премиум
13,850
20
8 Ноя 2022
Оптимизация кода значительно влияет на многопоточные системы.


4a0t2vxe6p2trk0qxui8d6uut085msxs.jpg


В состав будущей версии ядра Linux 6.13 Для просмотра ссылки Войди или Зарегистрируйся , перерабатывающий алгоритм нахождения контрольной суммы CRC32C. Новая реализация позволила сократить объем кода примерно в десять раз — с 4546 байт до 418 байт. Уменьшение количества операций и оптимизация логики цикла принесли значительное ускорение, особенно заметное при отключенной защите retpoline от атак Spectre. Так, на процессорах AMD Zen 2 наблюдается прирост производительности до 11,8%, на Intel Emerald Rapids — 6,4%, а на Intel Haswell — 4,8%.


dq7c192zhz259px9xmp07eert8qyc773.png


При включенной защите retpoline эффект от оптимизации еще более выражен: производительность на Intel Emerald Rapids увеличивается на 66,8%, на Intel Haswell — на 35,0%, а на AMD Zen 2 — на 29,5%.

Ранее CRC32C использовал 128 развернутых циклов (unroll), что заметно увеличивало объем кода. Поскольку современные процессоры поддерживают выполнение команд не по порядку (out of order), избыточное количество команд перехода внутри циклов стало препятствием для оптимизации. В новой реализации количество итераций сокращено до четырех, что позволило значительно уменьшить объем кода и одновременно улучшить скорость выполнения операции.
 
Источник новости
www.securitylab.ru

Похожие темы