X32 ABI

x32 ABI — находящийся в стадии разработки проект двоичного интерфейса приложений для Linux, который позволяет компилировать программы для x32 ABI и работать в 64-разрядном режиме x86-64 с использованием 32-битных указателей и полей данных[1][2][3]. Хотя это ограничивает виртуальное адресное пространство программы максимумом в 4 Гб, это также уменьшает объём памяти, занимаемой программами, а в некоторых случаях может позволить им работать быстрее[1][2][3]. Лучшие результаты во время тестирования были получены в тесте 181.mcf SPEC CPU 2000, для которого результат x32 версии ABI оказался на 32 % быстрее, чем для x86-64 версии[3][4]. Иными словами, x32 ABI удобен для программ, использующих не более 4 Гб виртуальной памяти.

Несколько человек обсуждали преимущества x86-64 ABI с 32-битными указателями после выпуска Athlon 64 в 2003 году (в частности, Дональд Кнут в 2008 году[5]). Затем был малозаметный публично прогресс реализации такого режима до 27 августа 2011 года, когда H. Peter Anvin объявил в списке рассылки ядра Linux, что он и HJ Lu работали над x32-ABI[6].

В тот же день Линус Торвальдс выразил обеспокоенность тем, что использование 32-разрядного значения времени в x32 ABI может привести к проблемам в будущем[7][8]. Это потому, что использование 32-разрядного значения времени приведёт к переполнению значения времени в 2038 году[7][8]. Разработчики x32 ABI планируют изменить значения времени на 64-битные[3][9].

x32 ABI вошёл в релиз ядра Linux 3.4.[10]

На декабрь 2018 года x32 ABI считался устаревшим и готовился к полному удалению поддержки из ядра linux.[11]

Примечания

[править | править код]
  1. 1 2 Thorsten Leemhuis (2011-09-13). "Kernel Log: x32 ABI gets around 64-bit drawbacks". www.h-online.com. Архивировано 28 октября 2011. Дата обращения: 1 ноября 2011.
  2. 1 2 "x32 - a native 32-bit ABI for x86-64". linuxplumbersconf.org. Архивировано 5 мая 2012. Дата обращения: 12 июня 2012.
  3. 1 2 3 4 "x32-abi". Google Sites. Архивировано 30 октября 2011. Дата обращения: 1 ноября 2011.
  4. "181.mcf SPEC CPU2000 Benchmark Description File". Standard Performance Evaluation Corporation. 1999-10-14. Архивировано 8 сентября 2018. Дата обращения: 1 ноября 2011.
  5. Donald Knuth. Recent News: A Flame About 64-bit Pointers (февраль 2008). Дата обращения: 15 мая 2012. Архивировано 26 сентября 2012 года.
  6. H. Peter Anvin. RFD: x32 ABI system call numbers (27 августа 2012). Дата обращения: 15 мая 2012. Архивировано 26 сентября 2012 года.
  7. 1 2 Jonathan Corbet (2011-08-29). "The x32 system call ABI". LWN.net. Архивировано 7 мая 2022. Дата обращения: 1 ноября 2011.
  8. 1 2 Linus Torvalds (2011-08-26). "Re: RFD: x32 ABI system call numbers". LWN.net. Архивировано 1 декабря 2017. Дата обращения: 1 ноября 2011.
  9. H. Peter Anvin (2011-08-29). "Re: RFD: x32 ABI system call numbers". LWN.net. Архивировано 16 ноября 2011. Дата обращения: 1 ноября 2011.
  10. Linux 3.4 - Linux Kernel Newbies. Дата обращения: 12 августа 2012. Архивировано 15 августа 2012 года.
  11. LKML: Andy Lutomirski: Can we drop upstream Linux x32 support? Дата обращения: 12 мая 2020. Архивировано 8 ноября 2020 года.