Por Canuto  

AMD propuso incorporar a LLVM una opción experimental de Clang capaz de alinear segmentos de 2 MiB y solicitar la promoción del código ejecutable a páginas enormes, con posibles mejoras en cargas de trabajo grandes, aunque también con binarios más pesados y costos de arranque.
***

  • La opción experimental -fenable-readonly-thp automatiza ajustes de compilación, enlazado e inicio del proceso para activar iTHP.
  • AMD reporta mejoras dependientes de la carga en SPEC CPU 2026, Geekbench, CPython y servidores, sin cifras firmes en el RFC.
  • El mecanismo requeriría Linux 7.2 o posterior para funcionar plenamente y podría incrementar el tamaño de los binarios.


El equipo de compiladores de AMD propuso una nueva opción para LLVM Clang que busca extraer más rendimiento de programas con grandes huellas de instrucciones. La función, denominada -fenable-readonly-thp, implementaría páginas enormes transparentes de instrucciones, conocidas como iTHP, durante la compilación, el enlazado y el inicio del proceso. La propuesta todavía se encuentra en fase de discusión, pero AMD ya cuenta con un parche prototipo sometido a pruebas.

La idea central consiste en organizar los segmentos del ejecutable con una alineación de 2 MiB o superior, enlazar un pequeño objeto de arranque y solicitar al núcleo de Linux que compacte el rango de texto ejecutable mediante madvise(MADV_COLLAPSE). De esa manera, las asignaciones predeterminadas de páginas de 4 KiB podrían convertirse en páginas enormes cuando cumplan los requisitos de alineación. El objetivo es reducir la presión sobre la caché de traducciones de instrucciones, conocida como iTLB, especialmente en binarios grandes.

Una optimización dirigida al código ejecutable

Las páginas de memoria de 4 KiB ofrecen una granularidad útil, pero un programa con una cantidad extensa de código puede necesitar muchas entradas para traducir sus direcciones de instrucciones. Cuando la aplicación queda limitada por la capacidad del frontend del procesador y por la presión sobre la iTLB, agrupar ese código en páginas de 2 MiB puede disminuir el número de traducciones necesarias. AMD sostiene que Linux puede promover regiones elegibles de la sección .text a páginas enormes, siempre que exista la alineación adecuada y el proceso solicite explícitamente la operación.

En la práctica, esa activación suele exigir que los desarrolladores mantengan scripts personalizados del enlazador y código propio durante el arranque del programa. La propuesta de AMD pretende trasladar esa complejidad al conjunto de herramientas, mediante una ruta opcional que pueda utilizarse en compilaciones destinadas a producción. El carácter optativo resulta relevante porque no todos los programas tienen una huella de instrucciones suficientemente grande como para justificar el cambio.

Bhuvanendra Kumar N, integrante del equipo de tecnologías de compilación de AMD, presentó la solicitud de comentarios y explicó que el controlador de Clang coordinaría los cambios necesarios en las distintas etapas. Según su planteamiento, el proceso comenzaría con la alineación de los segmentos, continuaría con la incorporación del objeto de inicio y terminaría con la llamada al sistema al arrancar la aplicación. La propuesta no depende de que el desarrollador escriba manualmente un script específico para cada ejecutable.

El RFC describe la función como una alternativa administrada por el compilador para aplicaciones con grandes volúmenes de instrucciones, entre ellas intérpretes, simuladores y binarios parecidos a los de compiladores. AMD también la diferencia de BOLT, el optimizador de disposición binaria que puede reorganizar código para mejorar el comportamiento de la iTLB. Mientras BOLT requiere perfiles de carga de trabajo u otra información de ejecución, la opción propuesta busca operar sin ese proceso de perfilado.

Resultados iniciales y límites de la propuesta

AMD afirmó que midió mejoras de rendimiento con SPEC CPU 2026, Geekbench y otras pruebas, aunque no publicó cifras firmes en el anuncio del RFC. La empresa también mencionó experimentos con CPython, cargas de bases de datos y servidores, además de pruebas microarquitectónicas. El resultado, según la descripción presentada, depende de cada carga y es más sólido cuando el ejecutable contiene una sección de texto particularmente grande.

La ausencia de una cifra general impide presentar la función como una aceleración uniforme para cualquier aplicación. El propio equipo de AMD señaló que algunos trabajos permanecieron sin cambios, mientras que en sus pruebas no observó regresiones amplias. Esa cautela es consistente con la naturaleza de la optimización, porque una reducción de la presión sobre la iTLB solo debería producir un efecto visible cuando ese componente limite realmente el desempeño.

La compañía identificó como principales beneficiarios potenciales a los intérpretes, simuladores y programas con características similares a las de un compilador, debido a sus grandes huellas de instrucciones. En esos casos, el costo de recorrer numerosos mapeos de páginas de 4 KiB puede ser más relevante que en ejecutables pequeños. La mejora esperada, por tanto, no depende únicamente del procesador, sino también del tamaño, la distribución y el comportamiento del código ejecutable.

Causas de movimientos recientes

No aplica: la propuesta de AMD para LLVM es una noticia sobre compiladores y memoria virtual, no un movimiento de mercado.

La estrategia también tiene costos posibles que los desarrolladores deberán evaluar antes de activarla de manera generalizada. El alineamiento adicional puede producir binarios más grandes, mientras que la llamada realizada durante el inicio introduce un pequeño costo de arranque. El beneficio neto dependerá de que el ahorro sostenido durante la ejecución supere esos costos iniciales y del tiempo durante el cual el programa permanezca activo.

Dependencia del núcleo y camino hacia LLVM

La función tendría compatibilidad plena con Linux 7.2 y versiones posteriores, de acuerdo con la información incluida en la propuesta. Las versiones más antiguas del núcleo solo permiten trabajar con iTHP cuando el contenido procede de almacenamiento basado en TMPFS, una limitación que reduce el alcance del mecanismo para ejecutables convencionales. Por ello, la disponibilidad de la opción en el compilador no bastaría por sí sola para garantizar el mismo resultado en todos los sistemas.

Este requisito introduce una consideración operativa para distribuciones, administradores y equipos que distribuyen binarios precompilados. Un ejecutable creado con la opción podría conservar su funcionamiento en sistemas anteriores, pero no necesariamente obtendría la promoción de páginas que justifica la optimización. La diferencia entre compilar con la función y conseguir que el núcleo la ejecute plenamente será un punto importante en las pruebas de compatibilidad.

Durante la conversación técnica sobre el RFC, un ingeniero de Google indicó que su organización había desarrollado una biblioteca para realizar un enfoque semejante. La observación sugiere que el problema ya recibe atención fuera de AMD, aunque la propuesta busca evitar que cada sistema dependa de una biblioteca externa para activar la funcionalidad. La aspiración de AMD es llevar el soporte a LLVM y, potencialmente, también a las herramientas de GNU.

El siguiente paso consiste en recoger comentarios antes de presentar la serie completa de parches en Phabricator, según explicó el equipo de AMD. El prototipo ya existe y fue probado, pero su eventual incorporación al proyecto LLVM dependerá de la revisión técnica, del comportamiento en más cargas y de la evaluación de sus costos. Hasta que avance ese proceso, -fenable-readonly-thp debe entenderse como una propuesta experimental y no como una característica disponible de forma general.

Si el soporte llega a las herramientas principales, los desarrolladores podrían activar iTHP con una opción de compilación en lugar de mantener soluciones personalizadas. La posible ganancia resulta especialmente atractiva para programas limitados por el frontend, pero el tamaño del binario, el arranque y la versión del núcleo seguirán condicionando su utilidad. AMD plantea así una optimización de bajo esfuerzo para el usuario final, aunque su impacto real tendrá que demostrarse aplicación por aplicación.


Imagen original de DiarioBitcoin, creada con inteligencia artificial, de uso libre, licenciada bajo Dominio Público.

Este artículo fue escrito por un redactor de contenido de IA y revisado por un editor humano para garantizar calidad y precisión.


ADVERTENCIA: DiarioBitcoin ofrece contenido informativo y educativo sobre diversos temas, incluyendo criptomonedas, IA, tecnología y regulaciones. No brindamos asesoramiento financiero. Las inversiones en criptoactivos son de alto riesgo y pueden no ser adecuadas para todos. Investigue, consulte a un experto y verifique la legislación aplicable antes de invertir. Podría perder todo su capital.

Suscríbete a nuestro boletín