x32 ABI - x32 ABI

редактировать

x32 ABI - это двоичный интерфейс приложения (ABI) и один из интерфейсов ядра Linux. Это позволяет программам использовать преимущества набора команд x86-64 (большее количество регистров ЦП, лучшая производительность с плавающей запятой, более быстрый позиционно-независимый код, разделяемые библиотеки, параметры функций, передаваемые через регистры, более быстрая команда syscall ) при использовании 32-битных указателей, что позволяет избежать накладных расходов на 64-битные указатели.

Содержание
  • 1 Подробности
  • 2 История
  • 3 Ссылки
  • 4 Внешние ссылки
Подробности

Хотя x32 ABI ограничивает программу виртуальным адресным пространством размером 4 ГиБ, это также уменьшает объем памяти, занимаемый программой, за счет уменьшения размера указателей. Это может позволить ему работать быстрее, поместив больше кода и больше данных в cache. Наилучшие результаты во время тестирования были получены с тестом 181.mcf SPEC CPU 2000, в котором версия x32 ABI была на 40% быстрее, чем версия x86-64. В среднем x32 на 5-8% быстрее в целочисленных тестах SPEC CPU по сравнению с x86-64. В тестах SPEC CPU с плавающей запятой нет преимущества в скорости по сравнению с x86-64.

Сравнение ABI
Функцияi386 ABIx32 ABIx86-64 ABI
Указатели 4 байта8 байтов
Макс. память на процесс 4 ГиБ128 ТиБ
Целочисленные регистры 6 (PIC)15
Регистры FP 816
64-битные арифметикаНетДа
Арифметика с плавающей точкой x87 SSE
Соглашение о вызовах Память Регистры
PIC пролог2–3 инструкцииНет
История

Запуск пользовательского пространства, состоящего в основном из программ, скомпилированных в режиме и также имеющих основной доступ к 64-битным инструкциям ЦП не был редкостью, особенно в области «классических RISC-чипов». Например, операционная система Solaris делает это как для SPARC, так и для x86-64. Что касается Linux, Debian также предоставляет пользовательское пространство ILP32. Основная причина - несколько «более дорогая» природа кода LP64, как это было показано для x86-64. В этом отношении x32 ABI расширяет концепцию ILP32-on-64bit на платформу x86-64.

Несколько человек обсуждали преимущества x86-64 ABI с 32-битными указателями за годы, прошедшие после выпуска Athlon 64 в 2003 году, в частности, Дональд Кнут в 2008 году. Не было заметного публичного прогресса в реализации такого режима до 27 августа 2011 года, когда Ханс Питер Анвин объявил в списке рассылки ядра Linux, что у него и Х. Дж. Лу есть работал над x32 ABI.

В тот же день Линус Торвальдс выразил обеспокоенность тем, что использование 32-битных значений времени в x32 ABI может вызвать проблемы в будущем. Это связано с тем, что использование 32-битных значений времени приведет к переполнению значений значений времени в году 2038. Следуя этому запросу, разработчики x32 ABI изменили значения времени на 64-битные.

В презентации на Linux Plumbers Conference 7 сентября 2011 года был рассмотрен x32 ABI.

ABI x32 был объединен с ядром Linux для выпуска 3.4 с добавлением поддержки в GNU C Library в версии 2.16.

В декабре 2018 года считалось, что отказаться от x32 ABI, чего не было по состоянию на сентябрь 2019 года.

Ссылки
Внешние ссылки
  • icon Портал Linux
Последняя правка сделана 2021-06-22 06:09:35
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте