stringtranslate.com

ABI x32

La ABI x32 es una interfaz binaria de aplicación (ABI) y una de las interfaces del núcleo Linux . La ABI x32 proporciona enteros de 32 bits, punteros largos y punteros ( ILP32 ) en hardware Intel y AMD de 64 bits. La ABI permite que los programas aprovechen los beneficios del conjunto de instrucciones x86-64 (mayor número de registros de CPU , mejor rendimiento de punto flotante, código independiente de la posición más rápido , bibliotecas compartidas , parámetros de función pasados ​​a través de registros, instrucción syscall más rápida) mientras utilizan punteros de 32 bits y, por lo tanto, evitan la sobrecarga de los punteros de 64 bits. [1] [2] [3]

Detalles

Aunque la ABI x32 limita el programa a un espacio de direcciones virtuales de 4 GiB, también disminuye la huella de memoria del programa al hacer que los punteros sean más pequeños. Esto puede permitir que se ejecute más rápido al incluir más código y más datos en la caché . [1] [2] [3] Los mejores resultados durante las pruebas se obtuvieron con el benchmark SPEC CPU 2000 de 181.mcf, en el que la versión ABI x32 fue un 40 % más rápida que la versión x86-64. [3] [4] En promedio, x32 es un 5-8 % más rápido en los benchmarks de números enteros de SPEC CPU en comparación con x86-64. No hay ninguna ventaja de velocidad sobre x86-64 en los benchmarks de punto flotante de SPEC CPU. [5] También hay algunos benchmarks de aplicaciones que demuestran las ventajas de la ABI x32. [6] [7]

Historia

La ejecución de un espacio de usuario que consta principalmente de programas compilados en modo ILP32 y que también tienen acceso principal a instrucciones de CPU de 64 bits no ha sido algo poco común, especialmente en el campo de los chips "RISC clásicos". Por ejemplo, el sistema operativo Solaris lo hace tanto para SPARC como para x86-64. En el lado Linux , Debian también incluye un espacio de usuario ILP32. La razón subyacente es la naturaleza algo "más cara" del código LP64 , [8] tal como se ha demostrado para x86-64. En ese sentido, la ABI x32 extiende el concepto de ILP32 en 64 bits a la plataforma x86-64.

Varias personas habían discutido los beneficios de una ABI x86-64 con punteros de 32 bits en los años desde el lanzamiento de Athlon 64 en 2003, en particular Donald Knuth en 2008. [9] Hubo poco progreso visible públicamente hacia la implementación de dicho modo hasta el 27 de agosto de 2011, cuando Hans Peter Anvin anunció a la lista de correo del kernel de Linux que él y HJ Lu habían estado trabajando en la ABI x32. [10]

Ese mismo día, Linus Torvalds respondió con la preocupación de que el uso de valores de tiempo de 32 bits en la ABI x32 podría causar problemas en el futuro. [11] [12] Esto se debe a que el uso de valores de tiempo de 32 bits haría que los valores de tiempo se desbordaran en el año 2038. [ 11] [12] A raíz de esta solicitud, los desarrolladores de la ABI x32 cambiaron los valores de tiempo a 64 bits. [13]

Una presentación en la Conferencia Linux Plumbers el 7 de septiembre de 2011 cubrió la ABI x32. [2]

La ABI x32 se fusionó con el kernel de Linux para la versión 3.4 y se agregó soporte para la biblioteca GNU C en la versión 2.16. [14]

En diciembre de 2018 se debatió si se debía descontinuar la ABI x32, lo que no ha sucedido hasta abril de 2023. [15] Tampoco ha sucedido hasta mayo de 2024, e incluso más, recibió algunos nuevos desarrollos. [16]

Adopción

Referencias

  1. ^ de Thorsten Leemhuis (13 de septiembre de 2011). "Registro del núcleo: la ABI x32 soluciona los inconvenientes de los 64 bits". www.h-online.com. Archivado desde el original el 28 de octubre de 2011. Consultado el 1 de noviembre de 2011 .
  2. ^ abc "x32 - una ABI nativa de 32 bits para x86-64". linuxplumbersconf.org . Consultado el 12 de junio de 2012 .
  3. ^ abc "x32-abi". Sitios de Google . Consultado el 1 de noviembre de 2011 .
  4. ^ "Archivo de descripción de referencia SPEC CPU2000 181.mcf". Standard Performance Evaluation Corporation. 14 de octubre de 1999. Consultado el 1 de noviembre de 2011 .
  5. ^ HJ Lu; H. Peter Anvin; Milind Girkar (septiembre de 2011). "X32: una ABI nativa de 32 bits para X86-64".
  6. ^ Rauschmayr, Nathalie; Streit, Achim (2013). "Evaluación de x32-ABI en el contexto de aplicaciones LHC". Procedia Computer Science . 18 : 2233–2240. doi : 10.1016/j.procs.2013.05.394 .
  7. ^ "Aplicaciones que se benefician del subestimado x32-ABI". www.sempria.de . Consultado el 22 de mayo de 2023 .
  8. ^ Tony Bourke (22 de enero de 2004). "¿Son los binarios de 64 bits realmente más lentos que los binarios de 32 bits?" . Consultado el 25 de marzo de 2014 .
  9. ^ Donald Knuth (febrero de 2008). «Noticias recientes: una controversia sobre los punteros de 64 bits». Archivado desde el original el 4 de noviembre de 2008. Consultado el 15 de mayo de 2012 .
  10. ^ H. Peter Anvin (27 de agosto de 2011). «RFD: números de llamada del sistema x32 ABI» . Consultado el 15 de mayo de 2012 .
  11. ^ de Jonathan Corbet (29 de agosto de 2011). "La ABI de llamada al sistema x32". LWN.net . Consultado el 1 de noviembre de 2011 .
  12. ^ por Linus Torvalds (26 de agosto de 2011). "Re: RFD: números de llamada del sistema x32 ABI". LWN.net . Consultado el 26 de febrero de 2016 .
  13. ^ Lu, HJ (24 de noviembre de 2011). «Actualización del estado del proyecto X32». libc-alpha (Lista de correo) . Consultado el 17 de octubre de 2019 .
  14. ^ O'Donell, Carlos (30 de junio de 2012). «La versión 2.16 de la biblioteca C de GNU ya está disponible». libc-alpha (Lista de correo) . Consultado el 27 de diciembre de 2016 .
  15. ^ "¿Podemos abandonar el soporte x32 de Linux?". LKML . Consultado el 13 de marzo de 2019 .
  16. ^ "La primera mitad de la ventana de fusión de 6.10". LWN . Consultado el 17 de mayo de 2024 .

Enlaces externos