Экспериментальная сборка Gentoo для x32 ABI. Реализация поддержки x32 ABI для LLVM
10 июня 2012 года
Проект 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".
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.