Se que esta serie de entradas no son del agrado de la gente pero… Resulta para mi algo fascinante ver como Sony esta obsesionada en mantener la compatibilidad hacía atrás en PS5 de cualquier forma posible por hardware y sin problemas.

Ya he comentado por activa y por pasiva que el uso de explicito en la API GNM (la API gráfica de bajo nivel y exclusiva de PS4) de lo buses Onion y Garlic en PS4 y su posterior eliminación por parte de AMD sería la fuente de mucho problemas. Esa una apreciación personal mia basada en la observación, pues bien, hace unos días a Sony le concedieron una patente titulada «Simulating legacy bus behavior for backwards compatibility» y su nombre es bastante explicito en si mismo, lo mejor es ir al preambulo para entender por donde van lo tiros.

1. Un método para abordar los problemas que surgen debido a las diferencias en el comportamiento del bus cuando se ejecuta una aplicación heredada en un nuevo dispositivo, el método comprende: limitar el rendimiento del bus en el nuevo dispositivo de una manera que emula el comportamiento del bus de un dispositivo heredado al ejecutar el aplicación legada.

2. El método de la reivindicación 1, en el que el rendimiento del bus de regulación en el nuevo dispositivo se basa en las asignaciones de ancho de banda estimadas determinadas a partir del comportamiento del bus heredado.

3. El método de la reivindicación 1, en el que el rendimiento del bus de regulación en el nuevo dispositivo incluye limitar la cantidad de ancho de banda disponible del bus asignada para transacciones de bus particulares según las cantidades estimadas del comportamiento de un bus heredado en el dispositivo heredado.

La idea no es otra que los juegos de PS4 no pueden correr mejor en PS5 sino igual. ¿El problema? En PS4 el bus de la GPU que accede al bus coherente de la CPU (Onion) tiene un bug que hace que consuma 3 veces el ancho de banda que deberia consumir el realidad pese a que su velocidad no suba. El bus Onion en PS4 tiene un ancho de banda de 25.6 GB/s pero acaba consumiendo casi unas 3 veces más, lo que forzo a Sony a colocar GDDR5 a 176 GB/s para solventar ese problema. ¿Microsoft? con la ESRAM en Xbox One.

Ese problema fue tipico en las GFX7 de AMD en el que la versión inicial de Xbox One y PS4 se basaron, AMD a nivel de PC lo solvento con el parche de la ATC que daba la opción a que todo el espacio de memoria fuese coherente y la GPU prescindiese tecnicamente del viejo Garlic para convertirlo en Onion3, la idea era no tocar el Northbridge coherente para evitar la contención basandose en la coherencia de caches de todo el sistema.

slide-20-hsa-accel-features_575px

La ATC en el GFX8 se puede desactivar y esto es lo que ocurre en PS4 Pro en los modos Base y Common pero el ATC se activa en el modo Neo… ¿Adivináis cuantos juegos han salido en PS4 Pro bajo el modo Neo?

PS4Promodes.PNG

Ni uno solo, pero el caso es que como ya he comentado anteriormente con la llegada del GFX9 en adelante lo que es el modo legado (GFX7) ha desaparecido y aunque es posible emularlo el «problema» esta en que al no-existir la contención entre ambos buses porque ahora es uno solo…

infinity fabric

… incluso si limitamos CPU y GPU al rendimiento de PS4 de manera artificial el bus dado que va a tener más rendimiento por la falta de ahogamiento hará que los juegos nos funcionen igual. ¿Solución? Ahogar artificialmente el bus para que los juegos de PS4 no corran mejor en PS5 y la gente se compre el parche o la versión PS5 del juego. Y si, se lo que muchos estaréis pensando…

Thefuck-random-30688791-407-393

Pero si, la patente va sobre capar los buses y ahogarlos para que los juegos funcionen con el mismo rendimiento que en PS4 en PS5 pero sobretodo de emular el funcionamiento del sistema anterior. Esto conlleva a que el SoC tenga la capacidad de bajar su rendimiento bajando su velocidad y apagando ciertas funcionalidades en modo PS4 y no solo el SoC sino también la memoria. No en vano la GDDR6 tiene un modo de bajo voltaje que se puede activar en cualquier momento que bajo un bus de 128 bits tiene el rendimiento igual a la GDDR5 de PS4 con un bus de 256 bits. No solo eso, sino que la desactivación selectiva de unidades ya la habíamos visto en PS4 Pro donde las unidades DCC de los RBE son desactivadas así como 2 Shader Engines en modo base (PS4).

La patente no tiene más secreto que la simulación del comportamiento del bus de la anterior generación en la nueva generación con tal de asegurarse que los juegos que utilizan el GNM de PS4 no tengan problemas.

gnmlayer.PNG

Pese a ser de origen GFX7 tanto PS4 como Xbox One tienen su propio set de registros e instrucciones con una asociación 1:1 con sus APIs de bajo nivel (DX11.X/DX12 para Xbox en el caso de Microsoft) y GNM en el caso de Sony. Cada empresa tiene su propio procesador de comandos y mientras a nivel de PC donde no existen APIs de bajo nivel por la enorme variedad de hardware de los usuarios. Es decir, pese a que arquitecturalmente Sony y Microsoft utilicen arquitectura GCN hay una serie de diferencias puntuales en forma de instrucciones exclusivas no soportadas en el otro sistema. El tema esta en que el uso de los buses onion y garlic es explicito en la API GNM y Sony para asegurarse la compatibilidad completa ha de procurarse al menos poderlo emular, pero de esto ya he hablado varias veces. Como anecdota si queréis saber como describe la patente la emulación del doble bus pues es muy simple, con el uso de un búfer temporal de contención dado que Onion y Garlic en PS4 funcionaban como una sola memoria por lo que hay contención entre ambos buses. Por lo que solo hace falta colocar un bus como si fuese la sala de espera del médico.

¿Todo esto para que? Pues para que paguemos por la versión de PS5 ya sea por el parche o a versión completa comprada via PSN o via juego en la tienda. ¿Me lo saco de la manga? No, lo jodido es que Microsoft que esta en una situación similar con Xbox One X a la que estara Sony con PS5 con el tema de la retrocompatibilidad al menos tiene la decencia de incluir la versión de Xbox One y la de Xbox One X en el mismo disco. ¿Sony? Sony no, porque les ha ido muy bien la estrategia de remasters para apuntalar a PS4 en los inicios y la van a repetir de nuevo. ¿Que se ha visto en Xbox One? Pues claro, por la politica de multiplataformidad que existe en el sector pero la que más ha defendido el remaster ha sido Sony, claro que de PS3 a PS4 había suficiente incompatibilidad como para justificar un remaster. ¿De PS4 a PS5? Se la tienen que sacar artificialmente de la manga y forzarla en el hardware para que la gente haga colas en la Universidad Bovina para re-comprar y todo acompañado por una campaña tremenda de marketing en lo medios del sector.

¿Es este el únicot tema que yo quería tratar? No, porque el siguiente punto son… «Expansion Ports»… Y si… tiene que ver con el uncore también pero para entenderlo tenemos que tener en cuenta que lo que llamamos uncore no son más que las autopistas de comunicacion entre diferentes memorias y procesadores pero… ¿Que ocurriria si os dijese que va a ser posible aumentar la potencia de los sistemas de siguiente generación a través de un simple puerto de expansión? Aqui es donde entramos en la interfaces GMI y xGMI.

El GMI es una interfaz externa del tipo Infinity Fabric que es utilizado en los Summit Ridge (AMD Ryzen 8 núcleos y sin CPU) para comunicar varias CPUs entre si y sirve para poder montar estructuras como las del AMD Epyc.

AMD-EPYC-ZEN-3650px-amd_epyc_interconnectAMD-EPYC-Four-Die-with-Infinity-Fabric

De la misma manera que podemos utilizar el GMI para comunicar CPUs también podemos utilizar el xGMI cuya diferencia es que incluye en su interior una conexión PCI Express 4.0 por lo que sirve para comunicar dentro de una misma placa y codo con codo unas dos gráficos, pensad en ello como una especie de Crossfire pero mucho más avanzado. Ahora bien… ¿Que ocurre si dejamos la consola con un SoC con interfaz x GMI pero no con la segunda GPU o el segundo SoC y con un puerto de expansión en la parte posterior de la consola? Pues que obviamente podemos conectar una segunda GPU con su memoria a la consola y con ello sacar un modo dual que renderice las escenas en modo split frame rendering donde una GPU se encargue de una mitad de la escena y la otra GPU de la otra mitad, lo cual también es excelente para acelerar la VR aún más. Obviamente por motivos de rendimiento la segunda GPU o el segundo SoC deberá tener la misma cantidad de memoria RAM asignada que en el primer sistema.

Otra opcíón a la tarjeta de expansión sería el hecho de poder conectar dos consolas a través de un puerto de enlace para el mismo menester… Simplemente el juego detecta que hay una segunda consola conectada a través del puerto de expansión y se dedica a ayudar al renderizado de la escena permitiendo cosas como duplicar la resolución, duplicar la tasa de fotogramas o hacer viable para la VR juego que no lo serían. Con ello Sony y/o Microsoft podrian ir a la gama muy pero que muy alta porque no todo el mundo tiene dos consolas conectadas en casa y si, se que la idea puede sonar absurda pero es algo que ahora no es posible y en la next gen va a ser posible sin problema en la memoria dado que ahora ambas GPUs no tendrán un espacio distinto de memoria sino que será completamente coherente.

Pero esto lo de utilizar una segunda consola o un SoC para expansión no es algo que aparezca en dicha patente del principio pero si un escenario posible. Y con esto termino, ya sabéis como siempre tenéis el Discord y los comentarios del blog para comentar esta entrada.