Разработчики ядра Linux обсуждают вопрос удаления субархитектуры x32

В списке рассылки ядра Linux обсуждается вопрос удаления кода с реализацией субархитектуры x32, позволяющей использовать на 64-разрядных системах 32-разрядную модель адресации памяти. По мнению инициатора удаления технология x32 не оправдала себя и не нашла практического применения в современных промышленных дистрибутивах. Кроме того, в коде x32 используется достаточно спорный метод работы с системными вызовами, создающий риск нарушения нормального функционирования после переработки реализаций системных вызовов.

Линус Торвальдс сообщил, что он не против удаления x32, если не будут представлены аргументированные возражения или не будут заявлены системы, в которых x32 нашла своё применение. Линус также отметил, что, судя по всему, применение x32 ограничилось экстремальными тестами производительности, так как поддержка данной субархитектуры сопряжена с большим усложнением сопровождения дистрибутивов и окружения для разработки.

В своё время при тестировании x32, один из разработчиков Gentoo пришёл к выводу, что выигрыш в производительности при переходе на x32 ABI не столь велик, как показывают синтетические тесты от создателей x32 ABI — заметный прогресс отмечается только при сравнении с устаревшей архитектурой x86, но при сравнении с актуальной архитектурой x86–64 выигрыш несущественный (тесты от создателей x32 показывали ускорение до 30% в сравнении с классическим x86_64 ABI, в ситуациях, связанных с интенсивной работой с указателями).

Напомним, что субархитектура x32 представляет собой гибридный x86_64 ABI, позволяющий использовать на 64-разрядных системах 32-разрядную модель адресации памяти (процессор работает в 64-разрядном режиме, но использует 32-разрядные указатели и арифметические операции). ABI X32 позволяет приложениям использовать все преимущества архитектуры x86_64, такие как дополнительные регистры и более быстрые инструкции, PIC ABI. В то же время ABI X32 даёт возможность работать с 32-разрядными указателями памяти, что позволяет экономить память, способствует более эффективному наполнению процессорного кэша и положительно сказывается на общей скорости исполнения кода. Ограничением ABI X32 является невозможность адресации из приложения более 4 Гб памяти. Поддержка X32 входит в состав ядра Linux начиная с выпуска 3.4, сформированного в мае 2012 года.

©  OpenNet