Lo que ha salido a la palestra por parte de Venkataramanan Kumar es una de esas cosas que seguro podrán contento a más de uno. Y es que esta vez no hace falta subir las frecuencias, aumentar el consumo ni lanzar un nuevo microcódigo AGESA para extraer más rendimiento de los AMD Zen 4 y Zen 5. En esta ocasión, el problema estaba en GCC (GNU Compiler Collection), cuyo modelo de costes no representaba correctamente cuánto penaliza una predicción de salto fallida en las arquitecturas nombradas y sus CPU Ryzen 7000 y 9000.
De hecho, AMD ha propuesto corregirlo modificando apenas dos valores, y el resultado llega hasta un 12% más de rendimiento en una prueba concreta. Y sí, es algo muy específico, no es un rendimiento general, pero tendrá impacto en una gran cantidad de aplicaciones y posiblemente en más de un juego.
AMD corrige un problema con GCC en sus CPU Ryzen 7000 y 9000 que les hace aumentar el rendimiento
El parche ha sido enviado a la lista de correo de GCC por Venkataramanan Kumar, ingeniero de compiladores de AMD. Su cometido es aumentar en tres unidades el coste estimado de una predicción errónea dentro de las tablas znver4_cost y znver5_cost, utilizadas cuando GCC genera código optimizado específicamente para estas arquitecturas.
Por contextualizar brevemente, GCC, o GNU Compiler Collection, es un conjunto de compiladores de código abierto utilizado para convertir el código escrito por los desarrolladores en programas ejecutables y ampliamente empleado para construir Linux, sus aplicaciones y multitud de proyectos de software.
GCC no se limita a traducir el código, sino que también intenta optimizarlo para cada arquitectura. Para conseguirlo utiliza unas tablas de costes que le indican, de manera aproximada, cuánto penalizan determinadas operaciones dentro de cada procesador. Si esos valores no representan correctamente el comportamiento de la CPU, el programa funcionará, pero el compilador puede generar un código menos eficiente de lo que permitiría el hardware.
Esto no modifica el predictor de saltos integrado en las CPU, que quede claro, pero lo que sí cambia es la información que utiliza el compilador para decidir cómo organiza y optimiza el código. Y ahí está toda la ventaja, que como es de esperar, se traducirá para cualquier SO y entorno, donde algunos lo aprovecharán, y otros no tanto.
Zen 5 mejora un 12% y Zen 4 alcanza un 9%, pero no en todo el software
Al comprender que una predicción fallida resulta más costosa de lo que indicaban las tablas actuales, GCC puede evitar determinadas decisiones que terminan vaciando la tubería (pipeline) de ejecución y desperdiciando ciclos de reloj.
Según las pruebas aportadas por AMD, el cambio mejora un 12% el rendimiento de Zen 5 y un 9% el de Zen 4 en 544.nab_r, una de las pruebas incluidas en SPEC CPU 2017. Los ejecutables fueron compilados con -O3 -march=native -flto, es decir, utilizando un nivel de optimización elevado, ajustes específicos para la CPU instalada y optimización durante el enlazado.
Aquí hay que poner el freno de mano antes de pensar que todos los Ryzen 9000 serán automáticamente un 12% más rápidos o que los Ryzen 7000 ganarán un 9%. AMD solamente ha publicado resultados para una carga concreta, especialmente sensible a este cambio, sin aportar todavía una media completa con aplicaciones, juegos y otros benchmarks.
Curiosamente, Intel ya había detectado en junio un problema equivalente en el perfil x86 genérico de GCC. La ingeniera de Intel Lili Cui propuso aumentar igualmente en tres unidades el coste de una predicción fallida, obteniendo un 12,7% más en Granite Rapids y un 12,1% en Zen 5 dentro del mismo benchmark. AMD traslada ahora ese ajuste a los perfiles específicos znver4 y znver5 gracias a lo que descubrió Intel, solo que lo optimiza para sus arquitecturas y comparte resultados obtenidos.
El parche de AMD todavía está en revisión tanto para Ryzen 7000 y Ryzen 9000, pero si termina aceptándose, debería incorporarse a GCC 17, con la posibilidad de llegar también a GCC 16.3. Sus ventajas requerirán recompilar el software con el compilador corregido, por lo que no estamos ante una actualización capaz de acelerar inmediatamente todos los PC y portátiles, sino ante una optimización que permitirá aprovechar mejor Zen 4 y Zen 5 en futuros ejecutables, o bien, en todos aquellos programadores que optimicen sus softwares para ello.
Lógicamente, este será el mayor freno para que el rendimiento despegue, así que es más fácil pensar que lo que esté por venir ya con esta optimización mejorará el rendimiento antes de pensar que todo lo que ya está en el mercado será actualizado, porque ya sabemos que esto no será así en la grandísima mayoría de casos.
La entrada AMD desbloquea el rendimiento de los Ryzen 7000 y 9000: hasta un 12% más en las CPU Zen 5 y un 9% en Zen 4 gracias a GCC aparece primero en El Chapuzas Informático.







