Экспериментальная сборка Gentoo для x32 ABI. Реализация поддержки x32 ABI для LLVM
Проект Gentoo первым из дистрибутивов объявил о выпуске кандидата в релизы установочного образа stage3 для процессоров на базе архитектуры x86_64, собранного с использованием x32 ABI, поддержка которого была добавлена в ядре Linux 3.4. Для реализации поддержки x32 ABI в сборке также задействованы GCC 4.7.0, Glibc, binutils 2.22 и другие системные компоненты с патчами для обеспечения поддержки x32 ABI.Отдельно отмечается, что вместо экспериментальной ветки библиотеки Glibc 2.16 для которой изначально созданы патчи с поддержкой x32 ABI, в Gentoo задейстована прошлая версия Glibc 2.15, в которую данные патчи были бэкпортированы. Первый стабильный релиз x32-образа Gentoo планируется выпустить сразу после релиза Glibc 2.16, в котором появится штатная поддержка данной архитектуры. До этого момента, разработчики намерены рассматривать представленный stage3 как кандидат в релизы, так как он содержит в себе некоторые экспериментальные компоненты.
X32 представляет собой гибридный x86_64 ABI, позволяющий использовать на 64-разрядных системах 32-разрядную модель адресации памяти. ABI X32 позволяет приложениям использовать все преимущества архитектуры x86_64, такие как дополнительные регистры и более быстрые инструкции, PIC ABI. В то же время ABI X32 даёт возможность работать с 32-разрядными указателями памяти, что позволяет экономить память, способствует более эффективному наполнению процессорного кэша и положительно сказывается на общей скорости исполнения кода. При тестировании в ситуациях, связанных с интенсивной работой с указателями, новый ABI продемонстрировал ускорение исполнения кода вплоть до 30% в сравнении с классическим x86_64 ABI. Ограничением ABI X32 является невозможность адресации из приложения более 4 Гб памяти.
Дополнительно можно упомянуть, что несколько дней назад для фреймворка LLVM и основанного на нём C/C++ компилятора Clang были представлены патчи с поддержкой x32 ABI. Ранее реализация поддержки x32 ABI была доступна только для GCC. Особенно впечатляют опубликованные вместе с патчами результаты тестирования производительности. В некоторых тестах по сравнению с 32-разрядной архитектурой x86 наблюдается ускорение до 60% (в среднем 10%), а по сравнению с x86_64 - ускорение до двух раз (в среднем около 10%, но в некоторых единичных тестах наблюдается и замедление работы). При этом также наблюдается небольшое уменьшения размера скомпилированных программ (в пределах 5-10%). Для генерации исполняемых файлов для x32 ABI в Clang добавлена новая опция "-mx32".
© OpenNet