Специалисты компании Cybozu Labs из Японии представили новый способ деления на константу для 64-битных процессоров, устраняющий ограничения старых 32-битных алгоритмов. Их метод использует расширенную разрядность современных регистров, повышая эффективность вычислений.
Патч уже включён в популярный компилятор LLVM (версия 23.0.0), а обновления для GCC и MSVC находятся в стадии тестирования. Традиционные компиляторы применяют алгоритмы, разработанные более 30 лет назад и ориентированные на 32-битные системы, что снижает производительность на современных 64-битных процессорах.
Автор инновации — Мицунари Шигео вместе с Хошино Такаши — отказались от имитации 33-битной арифметики и предложили прямую работу с 64-битной разрядностью. Использование команд MULX на архитектуре x86-64 и UMULH на ARM позволяет выполнять деление за одну операцию, сокращая количество инструкций с 9 до 3.
Тесты на процессорах Intel Xeon w9-3495X и Apple M4 показали ускорение до 1.98 раза, особенно заметное на Apple Silicon благодаря высокой пропускной способности умножителей. Также повысилась предсказуемость выполнения задач, что важно для серверных систем.
Интеграция метода в основные компиляторы позволит ускорить программы, работающие с большими объёмами данных, включая базы данных и криптографию, без изменения исходного кода. Это значительный шаг к использованию полной мощности 64-битных процессоров в базовых арифметических операциях и устранению устаревших ограничений.