stringtranslate.com

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]

История

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

Несколько человек обсуждали преимущества x86-64 ABI с 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]

Принятие

Рекомендации

  1. ^ аб Торстен Лимхейс (13 сентября 2011 г.). «Журнал ядра: x32 ABI имеет около 64-битных недостатков». www.h-online.com. Архивировано из оригинала 28 октября 2011 года . Проверено 1 ноября 2011 г.
  2. ^ abc «x32 — собственный 32-битный ABI для x86-64». linuxplumbersconf.org . Проверено 12 июня 2012 г.
  3. ^ abc "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. ^ аб Джонатан Корбет (29 августа 2011 г.). «Системный вызов ABI x32». LWN.net . Проверено 1 ноября 2011 г.
  12. ^ аб Линус Торвальдс (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 г.

Внешние ссылки