Recientemente se dio a conocer un correo mediante la lista de correos del Kernel de Linux y este correo tiene como principal objetivo eliminar el código de la implementación de la subarquitectura x32 (que no debe confundirse con x86 IA-32).
El cual permite poder utilizar el modelo de direccionamiento de memoria de 32 bits (híbrido x86 y x86_64) en sistemas x86 de 64 bits.
¿Cual es la arquitectura x32?
Es importante mencionar que la sub-arquitectura x32 es una ABI x86_64 híbrida, que permite usar un modelo de direccionamiento de memoria de 32 bits en sistemas de 64 bits (el procesador funciona en modo de 64 bits, pero utiliza punteros de 32 bits y operaciones aritméticas).
ABI X32 permite a las aplicaciones aprovechar al máximo la arquitectura x86_64, como registros adicionales e instrucciones más rápidas, PIC ABI.
Al mismo tiempo, ABI X32 permite trabajar con punteros de memoria de 32 bits, lo que ahorra memoria, contribuye a un llenado más eficiente de la memoria caché del procesador y tiene un efecto positivo en la velocidad general de la ejecución del código.
La limitación de ABI X32 es la imposibilidad de direccionar desde la aplicación más de 4 GB de memoria.
El soporte de X32 ha sido parte del Kernel de Linux desde su lanzamiento.3.4, formado en mayo de 2012.
Los desarrolladores debatirán si seguirán con el mantenimiento de esta arquitectura o no
Según el desarrollador que propone la eliminación de la tecnología x32 no se ha justificado y no ha encontrado una aplicación práctica en las distribuciones industriales modernas.
Además, el código x32 utiliza un método bastante controvertido para trabajar con llamadas al sistema, lo que crea el riesgo de interrumpir el funcionamiento normal después de procesar las implementaciones de llamadas al sistema.
Linus Torvalds dijo que estaría de acuerdo con la eliminación de x32 si no hay argumentos enviados o si no se presentan los sistemas en los que se ha aplicado la subarquitectura x32.
Linus también señaló que, aparentemente, el uso de la arquitectura x32 se limitaba a pruebas de rendimiento extremas, ya que el soporte de esta subarquitectura se asocia con una gran cantidad de complicaciones para mantener las distribuciones y el entorno de desarrollo.
El correo:
Hola a todos.
Estoy considerando seriamente enviar un parche para eliminar el soporte x32 de Linux. Aquí detallo algunos problemas con esto:
- No está del todo claro que tenga usuarios. Por lo que yo sé, es soportado en Gentoo y Debian
- La forma en que funciona el sistema de llamadas es muy extraña. La mayoría de los syscalls en x32 ingrese a través de su * nativo * (es decir, no COMPAT_SYSCALL_DEFINE) con el punto de entrada, y esto es intencional.
Por ejemplo, adjtimex () utiliza la entrada nativa, no la entrada de compat, porque struct timex de x32 coincide con el diseño x86_64. Pero un puñado de syscalls tienen separado puntos de entrada – estos son los syscalls que comienzan en 512.
Estos entran a través de los puntos de entrada COMPAT_SYSCALL_DEFINE.
Las syscalls x32 que * no * están en el rango 512 violan todo semblante de la convención de syscall del núcleo.
En los manipuladores de syscall, in_compat_syscall () devuelve true, pero la entrada COMPAT_SYSCALL_DEFINE no se invoca esto es de locos y se corre el riesgo de romper cosas cuando la gente re factoriza sus implementaciones syscall.
Y sobre todo nadie prueba estas cosas.
En una ocasión, al probar x32, uno de los desarrolladores de Gentoo llegó a la conclusión de que la mejora en el rendimiento al cambiar a ABI x32 no es tan grande como muestran las pruebas sintéticas de los creadores de ABI x32:
se observa un progreso significativo solo cuando se compara con la arquitectura x86 anterior, pero al comparar con la arquitectura x86-64 actual, la ganancia es insignificante (las pruebas SPEC realizadas por los creadores de x32 mostraron una aceleración de hasta el 40% en comparación con la ABI clásica x86_64, las pruebas con el códec H.264 mostraron una aceleración de 15-20%).
Fuente: Linuxadictos.com