Jump to content

x32 АБИ

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

Подробности

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

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

Сравнение ABI
Особенность i386 АБИ x32 АБИ x86-64 АБИ
Указатели 4 байта 8 байт
Макс. память на процесс 4 ГиБ 128 ТиБ
Целочисленные регистры 6 (ПИК) 15
регистры ФП 8 16
64-битная арифметика Нет Да
с плавающей запятой Арифметика х87 СШЭ
Соглашение о вызовах Память Регистры
ПИК пролог 2–3 инструкции Никто

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

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

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

Презентация на конференции Linux Plumbers Conference 7 сентября 2011 г. была посвящена x32 ABI. [2]

ABI x32 был объединен с ядром Linux для версии 3.4, а поддержка была добавлена ​​в библиотеку GNU C в версии 2.16. [14]

В декабре 2018 года обсуждался вопрос о прекращении поддержки x32 ABI, чего не произошло по состоянию на апрель 2023 года. [15] И этого не произошлопо состоянию на май 2024 года, и даже больше, он получил новое развитие. [16]

Принятие

[ редактировать ]
Дистрибутив Linux Дополнительная информация
Дебиан Порт X32
Генту Мультибиблиотека через abi_x86_x32 флаги использования
Йокто Проект X32 АБИ
Т2 СДЕ х86-64
  1. ^ Jump up to: а б Торстен Лемхейс (13 сентября 2011 г.). «Журнал ядра: x32 ABI устраняет недостатки 64-битной системы» . www.h-online.com. Архивировано из оригинала 28 октября 2011 года . Проверено 1 ноября 2011 г.
  2. ^ Jump up to: а б с «x32 — собственный 32-битный ABI для x86-64» . linuxplumbersconf.org . Проверено 12 июня 2012 г.
  3. ^ Jump up to: а б с "x32-аби" . Сайты Google . Проверено 1 ноября 2011 г.
  4. ^ «181.mcf Файл описания теста производительности SPEC CPU2000» . Корпорация стандартной оценки эффективности. 14 октября 1999 г. Проверено 1 ноября 2011 г.
  5. ^ Х.Дж. Лу; Х. Питер Анвин; Милинд Гиркар (сентябрь 2011 г.). «X32 — собственный 32-битный ABI для X86-64» .
  6. ^ Раушмайр, Натали; Стрейт, Ахим (2013). «Оценка x32-ABI в контексте приложений LHC» . Procedia Информатика . 18 : 2233–2240. дои : 10.1016/j.procs.2013.05.394 .
  7. ^ «Приложения, извлекающие выгоду из недооцененного x32-ABI» . www.sempria.de . Проверено 22 мая 2023 г.
  8. ^ Тони Бурк (22 января 2004 г.). «Действительно ли 64-битные двоичные файлы медленнее, чем 32-битные?» . Проверено 25 марта 2014 г.
  9. ^ Дональд Кнут (февраль 2008 г.). «Последние новости: Пламя о 64-битных указателях» . Проверено 15 мая 2012 г.
  10. ^ Х. Питер Анвин (27 августа 2011 г.). «RFD: номера системных вызовов x32 ABI» . Проверено 15 мая 2012 г.
  11. ^ Jump up to: а б Джонатан Корбет (29 августа 2011 г.). «Системный вызов ABI x32» . LWN.net . Проверено 1 ноября 2011 г.
  12. ^ Jump up to: а б Линус Торвальдс (26 августа 2011 г.). «Re: RFD: номера системных вызовов x32 ABI» . LWN.net . Проверено 26 февраля 2016 г.
  13. ^ Лу, HJ (24 ноября 2011 г.). «Обновление статуса проекта X32» . libc-alpha (список рассылки) . Проверено 17 октября 2019 г.
  14. ^ О'Донелл, Карлос (30 июня 2012 г.). «Библиотека GNU C версии 2.16 теперь доступна» . libc-alpha (список рассылки) . Проверено 27 декабря 2016 г.
  15. ^ «Можем ли мы отказаться от поддержки исходной версии Linux x32?» . ЛКМЛ . Проверено 13 марта 2019 г.
  16. ^ «Первая половина окна слияния 6.10» . ЛВН . Проверено 17 мая 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f9f81ae0b8bfe2010c894c502248d54e__1715950680
URL1:https://arc.ask3.ru/arc/aa/f9/4e/f9f81ae0b8bfe2010c894c502248d54e.html
Заголовок, (Title) документа по адресу, URL1:
x32 ABI - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)