¿Por qué rinde tan mal el AMD Threadripper 2990WX de 32 núcleos en juegos?
Que los nuevos procesadores AMD Threadripper 2990WX no rinden bien en juegos, no es un secreto a estas alturas. Pero el porqué de este hecho, está más relacionado con la propia arquitectura interna del procesador. En este tutorial os explicaremos por qué un procesador de 32 núcleos no es lo mejor para jugar.
Antes de meternos en faena, lo más importante es explicar un poco cómo es la arquitectura interna de un procesador Threadripper.
Al igual que sus primos de escritorio (los procesadores AMD Ryzen) y para servidores (los AMD EPYC), los AMD Threadripper están construidos, de manera interna, con la base de un CPU Complex (CCX). Cada uno de estos está compuesto por cuatro núcleos que comparten, entre sí, su memoria Caché L3. El conjunto de cada dos CCX, situados físicamente uno al lado del otro, es lo que se denomina núcleo zeppelin. La base de todo el concepto de la arquitectura Zen es la escalabilidad de sus procesadores, en cuanto a que, si se quiere un procesador más potente, siempre se pueden añadir más CCX al diseño.
Es aquí donde aparece el concepto del bus Infinity Fabric, que es el bus de datos que conecta entre ellos los CCX para que puedan compartir la información que necesiten los núcleos para su trabajo. Un problema que tiene este bus es que las comunicaciones entre los CCX están sometidas a mayores latencias, cuando los datos han de saltar entre CCX que cuando todos se procesan dentro del CCX original.
Sin embargo, estas latencias que se producen cuando la información salta entre los CCX no perjudican en gran medida el rendimiento del procesador. El problema es que los AMD Threadripper usan un mínimo de dos núcleos zeppelin (o más si el procesador emplea más de 16 núcleos). Por tanto, el AMDThreadripper 2990WX emplea un total de 4 núcleos zeppelin para dar servicio a todos los 32 núcleos que engloba bajo su IHS.
Pero, y este es un «pero» muy importante, de estos cuatro núcleos zeppelin, solamente dos de ellos tienen acceso directo a la memoria RAM del sistema. Esto significa que, si un CCX que se encuentra en un núcleo zeppelin sin acceso directo a la RAM, necesita acceder a ella, antes debe de mandar su petición a través del bus Infinity Fabric a otro núcleo zeppelin y, de ahí, a la memoria RAM. Y esto genera unas latencias bastante grandes en el procesador.
Pero otra cosa que también se ha de tener en cuenta con estos procesadores es que los núcleos zepelin sin acceso a la RAM, tampoco tienen acceso al bus PCIe. Esto influye en que si el juego se ejecuta en uno de estos núcleos zeppelin, su rendimiento va a ser bastante más bajo que si se ejecuta en un núcleo con acceso a ese bus de datos.
Los AMD Threadripper son los únicos procesadores de escritorio que permiten configurar el modo de acceso a la RAM
Por tanto, la mejor opción para ejecutar un juego en uno de estos procesadores probablemente sería que el scheduler del sistema supiera administrar los núcleos que se están usando y para qué se están usando. Por desgracia, ese no es el caso de Windows. Windows de escritorio no se programó para ser empleado con procesadores que emplean una arquitectura de tipo NUMA (Non Uniform Memory Array) para escritorio, dado que ese tipo de arquitecturas se emplean más en el caso de los servidores, ya que los procesadores que más la empleaban son los Xeon de Intel.
Para minimizar las latencias de acceso a la RAM, los AMD Threadripper lo que poseen es el modo juego, o «Game Mode». Este modo le dice al sistema operativo que la configuración de la memoria RAM es de tipo UMA, haciéndole creer que todos los núcleos internos tienen acceso directo a la RAM del equipo y, en general, a todos los componentes interons, como si el procesador fuera un bloque uniforme donde está todo integrado.
Por otro lado, hay aplicaciones para Windows (como CoreInfo) que son capaces de mostrar la topología interna del procesador y qué núcleo zeppelin va unido al bus PCIe, así que para obtener un buen rendimiento en juegos, sería necesario forzar a Windows a que empleara tan solo ese o esos núcleos zeppelin para ejecutar los juegos.
Sin embargo, también hay que ser muy claros a este respecto, el AMD Threadripper 2990WX no es un procesador que se haya diseñado para ser empleado en juegos. Es un procesador destinado a ser empleado en operaciones de cómputo complejas, donde se requiere el empleo de muchos hilos de manera simultánea. Que sea capaz de mover bastantes juegos de manera aceptable es un bonus que podemos tener con este procesador, pero no es la función para la que están diseñados.