¿Como es que el Jaguar es una CPU tan mala para juegos? La explicación de ello es muy sencilla pero se ve en las siguientes diapositivas.

NDPS4_5-565x425.jpg

Esto es el tiempo de acceso en un mismo módulo, fijaos como el acceso a la Cache L2 es poco más de 20 ciclos, ahora veamos de un módulo a otro:

NDPS4_8.jpg

La cosa se nos va a los 190 ciclos.  ¿Y como es que ocurre esto? Pues porque el paso de datos de un módulo a otro se hace en el clasico Northbridge de AMD, es el System Request Interface de dicho Northbridge el que acaba manejando los accesos de las CPUs a la memoria principal y de las CPUs entre si y no es que sea muy rápido que digamos en el caso del AMD Jaguar. AMD para la construccion del Ryzen ha decidido utilizar un bus de comunicación más ancho para solventar este problema.

¿Y como es que es un problema? El SRI desde el primer Opteron forma parte del Northbridge Coherente integrado en las CPUs de AMD desde el primer Opteron, el cual a su vez se trata del controlador de memoria integrado dentro del chip. Dicho UNB/Northbridge Coherente tiene la siguiente arquitectura en todos los SoC de AMD que hay disponibles en el mercado.

UNBAMD.PNG

No hay una conexion directa de un módulo con el otro, lo que hay es que los datos han de realizar un largo camino y esto en ciertas situaciones se convierte en un problema de rendimiento enorme.

 

A los Sistemas Operativos modernos les «gusta» intercambiar la carga de los hilos en los hilos a menudo a través de la cache. Basicamente, intercambiará computaciones en serie  y los colocara en la cache de la CPU independiente en que parte estaba antes y en la qu este de nuevo. Esto tiene sentido para los viejos productos de Intel y AMD donde existe una cache unificada a través de todos los núcleos. Pero es malo en el caso del AMD Jaguar donde no existe una cache unificada para todos los núcleos por lo que unos datos de que se estén procesando en el modulo 0 pueden acabar en el módulo 1 y al volverse  acceder la latencia a la hora de acceder a estos pase de los +20 ciclos a los +190 ciclos. ¿Lo triste? Que esto es algo que afecta a:

  • Xbox One
  • Xbox One S
  • Xbox Scorpio
  • PS4
  • PS4 Pro

¿Entonces no es mejor utilizar unos 4 núcleos solamente? El motivo por el cual la consola esta pensada para utilizar 6 núcleos es para «emular» el funcionamiento de la anterior generación. En PS3 había una CPU director (El PPE) y los SPE hacían el trabajo, en PS4 ya no hay CPU director pero las tareas de los SPE se reparten entre los 6 núcleos disponibles. En PS3 habían 7 SPEs en total, 1 de ellos se reservaba al SO, en PS4 tenemos 6 núcleos en total para el juego para ello, dejando 2 de los 8 núcleos para la CPU en el proceso.

NDPS4_2-571x425.jpg

En el salto de Xbox 360 a Xbox One ocurre lo mismo, la CPU de Xbox 360 era de 3 núcleos con 2 hilos de ejecución por lo que funcionaba como 6 núcleos virtuales, de ahí el uso también de 6 núcleos y el hecho de que existan el problema de rendimiento con la CPU en estas consolas. En realidad si miramos lo disponible para PC en estos momentos AMD no vende ni un solo modelo con doble modulo Jaguar, es una «chapuza» para los fabricantes de consolas que necesitaban tener unos 6 núcleos en total con tal de portar más facilmente lo hecho en la anterior generación a esta generación, pero tiene una grave contrapartida.

La solución de cara al futuro

AMD de cara a Ryzen para comunicar los módulos (CCX) entre si, así como estos con la memoria utiliza una tecnologia llamada Infinite Fabric. El AMD Ryzen hereda el mismo problema que el AMD Jaguar al no tener una cache universal compartida entre los dos módulos, pero AMD ha realizado algunos ajustes:

xPyZyR4ABSIUpB0Jf7hZk4quIhDEhzuqk26Y-e_K1R4.png

Aquí es donde entramos en un punto importante, la velocidad de rendimiento del Ryzen de incluirse en una futura PS5 dependerá de la velocidad de reloj del controlador de memoria. ¿Que significa esto? Pues que la memoria seleccionada en futuros sistemas va a ser crucial y es un punto más para dejar las memoria HBM basadas en un bus ancho pero una baja velocidad de reloj en la estacada dado que la velocidad de reloj de sus controladores va a ser siempre más baja que la de la memoria GDDR6 e incluso que la GDDR5 y la GDDR5X.

Pero para poner las cosas en perpectiva, el SRI del Jaguar no aumenta en ancho de banda utilizando una memoria más rapida. Es tan lento utilizando la DDR3 de Xbox One como la GDDR5 de PS4/PS4 Pro/Xbox Scorpio y resulta en un problema enorme de rendimiento en elementos que son altamente dependientes de la CPU, en especial en juegos donde hay una enorme cantidad de hilos de ejecución concurrentes. ¿Pero cuando puede ser ese futuro a corto plazo? Dudo mucho que veamos el Ryzen actual en una consola de videojuegos dado su alto consumo, no es un chip como el AMD Jaguar de bajo consumo precisamente.

getgraphimg

Las malas lenguas hablan de un configuracion en un MCM donde CPU se encuentre en un chip y la GPU en otro chip encima del mismo sustrato/interposer. AMD ya va a hacer experimentos de colocar dos procesadores Ryzen de 8 núcleos en un mismo MCM a través del Threadripper o cuatro con el EPYC, paso previo a cambiar uno de los procesadores por una GPU y tener así el diseño completo, el problema es que en tamaño y consumo esto no es viable a nivel doméstico hasta como mínimo la segunda generación.

mark-papermaster-page-019-740x416

¿La GPU que lo acompañaría? La versión a 7nm del RX Vega, más conocida como Vega 20 en estos momentos.

vega20

La diferencia es que por motivos de coste y el tema del controlador de memoria del Ryzen como he comentado antes que veamos un sistema basado en memoria HBM2 pero si en memoria GDDR6 en un futuro, la posibilidad para finales de 2018-2019 existe por completo y yo de entrada no descartaría que PS5/Xbox Scorpio 2 tengán sus especificaciones escritas ya sobre el papel pero esperando a que sean posibles a nivel de costes para colocarlo en una consola de videojuegos que apareciese por ese periodo de tiempo en el mercado.

¿Otra posibilidad arquitectural? El hecho de colocar una Cache L3 universal en el UNB, esta medida es la que esta siendo utilizada en el caso de las CPUs bajo arquitectura ARM donde existen los mismos problemas al no existir una cache compartida, para ello se añade en el Northbridge de la arquitectura una cache L3 en el Northbridge encargado de comunicar los diferentes módulos entre si con tal de paliar la enorme latencia de comunicación entre los módulos con ello a la hora de acceder a ciertos datos. Con ello tanto Sony como Microsoft podrían continuar utilizando los núcleos Jaguar en futuras iteraciones sin hacer cambios profundos en su microarquitectura aunque pienso que Ryzen tiene más números de aparecer como CPU pero no en su versión actual y aún tendremos que esperar un tiempo para verlo funcionando en una consola de videojuegos que se encuentre a nivel comercial.