Blog Personal.

Futuro, Opinión, PlayStation 5, PS5, Xbox Series S, Xbox Series X, XSS, XSX

El Cuello de Botella en la Next Gen

El problema de PlayStation 5 no son los Tontoflops como muchos van repitiendo, el problema de PlayStation 5 es el enorme cuello de botella que hay con la RAM.

La consola tiene el mismo ancho de banda que la Radeon RX 5700 XT, la cual teniendo ese ancho de banda ya se ve limitada y no olvidemos que en el caso de PlayStation 5 la GPU lo más seguro es que ocurra lo mismo que ocurre en el caso de Xbox Series X, el cual los clientes del Data Fabric (CPU, E/S…) tomen de tanto en cuando el segundo canal y reduzcan el ancho de banda disponible a los 224GB/s para la GPU… ¿La única manera de evitarlo? Dejar que una parte del direccionamiento de memoria vaya en exclusiva a la GPU de tal manera que a la hora de acceder a esa parte de la RAM entonces la GPU tenga la posibilidad de utilizar los 2 canales de memoria de la GDDR6, simplemente vetando el acceso a esa parte de la memoria a todo lo que no sea la GPU.

¿Os habéis hecho un lió?

Esto que puede parecer muy lioso, no lo es, no es más que implementar el mismo sistema de acceso que hay en PC para en una configuración de memoría fisicamente unificada. En PC la CPU no puede acceder a la memoria local de la GPU sino que deja los mensajes para la GPU en una parte de la RAM principal y es una unidad DMA en la GPU a través del puerto PCI Express la que le de acceso temporal a la GPU a esos datos que necesita y se encuentran en la RAM principal como son las listas de comandos o cuando la GPU actua como co-procesador y escribe los resultados de vuelta.

Pero en consolas la RAM esta físicamente unificada… ¿Como lo hacemos? Pues vetando el acceso a ciertas direcciones de la RAM al UMC que es por donde accede la CPU y el resto de componentes que no son la GPU, de esta manera hay una parte de los 16GB de memoria que queda aislada que en el caso de Xbox Series X y estoy al 100% seguro que en Xbox Series S también son los 10GB asignados a la GPU, pues bien, creo que vamos a ver la misma configuración en PlayStation 5, no me veo para una cosa así a AMD desarrollando dos piezas distintas y tiene más sentido desarrollar una universal.

Pero el problema es que como he dicho antes sabemos que la RX 5700 XT tiene un cuello de botella con su GDDR6, esto se sabe porque sin subir la velocidad del núcleo de la GPU pero si su memoria se ve una mejora. Por lógica si subimos la velocidad de reloj de la GPU sin tocar la memoria ese cuello de botella aumentará y cuando hay un cuello de botella de este tipo se producen los llamados rendimiento decrecientes donde la recta de rendimiento empieza a curvarse hacia abajo si la ponemos en una gráfica.

¿Significa esto que la Xbox Series X con su bus de 320 bits no tiene dicho problema? No lo sabemos pero bien podría tenerlo, en todo caso depende del B/F que tenga la arquitectura de la GPU.

Bytes por FLOP (B / F) es una medida de la intensidad de la memoria por trabajo de cómputo o la cantidad de bytes necesarios para ser transferidos entre la unidad de ejecución y la memoria fuera del chip en relación con el número de operaciones de punto flotante requeridas para una tarea en particular.

Haciendo una sobresimplificación…

ConsolaFLOPSBytesB/F
Xbox Series X12 TFLOPS560 GB/s0,04667
PlayStation 510.28 TFLOPS448 GB/s0,04358

El ratio de B/F de la Xbox Series X y PS5 es muy cercano, pero tened en cuenta que no es el ideal en ambos casos ya que sabemos que la RX 5700 XT con 9.75 TFLOPS ya tiene problemas con los 448 GB/s, en todo caso Xbox Series X esta mucho más cercana del ratio de la RX 5700 XT original.

TarjetaFLOPSBytesB/F
RX 5700 XT9,75E+124,48E+110,04595

… Pe, pero Urian estas comparando una RDNA 1 con GPUs de la familia RDNA 2… ¿No es un poco injusto?

El B/F de RDNA 2 no lo sabemos, pero dudo mucho que un bus de 448GB/s sea suficiente, en PC vamos a ver RDNA utilizando GDDR6 de 16Gbps y lo más seguro que con una configuración de 256 bits, en este caso la elección de Microsoft de ir a los 320 bits de ancho de banda para la RAM es algo que tiene sentido ya que con un bus de 448 GB/s obviamente el ratio B/F sería mucho menor. Es decir, Microsoft con tal de mantener un ratio aceptable entre el ancho de banda de la GDDR6 y la potencia de la GPU ha tenido que ir de los 256 bits a los 320 bits.

¿Pero acaso Sony y/o Microsoft no puede reemplazar la GDDR6 a 14Gbps por GDDR6 a 16Gbps? La realidad es que una RAM es más cara que la otra, la cantidad de chips de memoria que salen a 16Gbps es mucho menor porque el ratio de rendimiento de los yields paramétricos es menor. Es lo mismo que ocurre con las CPUs, esto ya trastoca lo que es el presupuesto por consola, pero la cosa no termina ahí sino que también esta eltem

Primero de todo tened en cuenta que:

1 Joule/Segundo equivale a un 1W.

Sabemos que tanto PlayStation 5 como Xbox Series X utilizan memoria GDDR6 a 14Gbps… ¿Pero cuanto es dicha memoria dentro del presupuesto energético de ambas consolas? Existe un Paper de Micron donde se nos da parcialmente dicha información.

Esta gráfico solo marca lo que consumen en la transferencia de datos los chips de RAM. no tiene en cuenta el consumo energético de los controladores de memoria situados en el SoC que son la otra mitad del consumo energético ni tampoco el consumo que resulta el mantener los datos en memoria. De lo que sacamos en conclusión es que un envió o recepción de datos en un controlador de memoria GDDR6 a 14Gbps tiene un consumo de 5.5 Pj/bit, pero obviamente a esto falta sumarle el consumo energético en el otro extremo, ya que todo mecanismo de memoria necesita un emisor y un receptor.

Vayamos a lo que importa:

Un modulo GDDR6 a 14Gbps por pin tiene un ratio de consumo de 5.5 Pj/bit.

14Gb= 15032385536 bits

15032385536* 5.5= 82678120448 Pj/bit= 0.08W

Pero los buses que tenemos son de 256 bits y 320 bits respectivamente.

  • La GDDR6 en PlayStation 5 consume un total de 20.48 W, la interfaz del SoC con la GDDR6 también unos 20.48W por lo que en total consumen unos 41W aprox.
  • La GDDR6 en Xbox Series X consume un total de 25.6 W, la interfaz del SoC con la GDDR6 también unos 25.6W por lo que en total consumen unos 51.2W aprox

El problema es que el consumo en Pj/bits no es constante para toda la GDDR6 como tampoco lo era para toda la GDDR5 ya que el aumento de la velocidad viene con el aumento del voltaje ¿Cual es la siguiente opción? La GDDR6 a 16Gbps… ¿Pero cuanto consume? La siguiente tabla nos da una pista de cual sería su consumo.

¿En que nos tenemos que fijar?

  1. mW/Gb equivale a pJ/s por lo que la conversión
  2. Nos marca que 16Gbps son 8 mW/Gb y por tanto 8 Pj/s

Si hacemos lo mismo de antes:

16Gb= 17179869184 bits

17179869184 bits *8 Pj/bit= 137438953472= 0,14 W.

Por lo que:

  • En PlayStation 5 si la GDDR6 fuese a 16Gbps entonces consumiría unos ¡35,84 W! Si sumamos el consumo de la interfaz de memoria aproximadamente unos 70W.
  • En Xbox Series X si la GDDR6 fuese a 16Gbps entonces consumiría unos ¡44.8W! Si sumamos el consumo de la interfaz de memoria aproximadamente unos 90W.

Es decir, solo por un aumento del 15% en el ancho de banda hemos visto un aumento que cuasi duplica el consumo energético. Ese es el problema con la memoria que su presupuesto energético es cada vez más caro a medida que vamos aumentando el ancho de banda y el rendimiento de una GPU depende del ancho de banda de la memoria a la que esta asignada.

La lógica en resumen es la siguiente:

  • El consumo energético limita el ancho de banda dentro de un presupuesto energético dato.
  • El ancho de banda energético limita el rendimiento de una GPU.

Espero que con esto se entienda el motivo por el cual la GDDR6 a 14Gbps en las consolas es un cuello de botella y porque tanto Sony como Microsoft pero especiamente Sony no lo pueden solucionar.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
9 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ger

Hola Urian, puede que lo esté entendiendo mal pero según veo Series X el espacio de 10GB de ram de alta velocidad está reservado única y exclusivamente para la GPU lo que de ser así me parece, bajo mi punto de vista, bastante raro porque entonces la CPU solo tiene disponible 3,5GB de la ram lenta (2,5GB reservados para sistema, etc), no sería eso también un grave problema?
Por otro lado, que papel podría desempeñar el SSD en ambas consolas para paliar el cuello de botella que comentas? Muchas gracias, saludos.

Ger

Me gustaría hacer otra pregunta después de releer la entrada. Como bien dices MS ha optado por aislar los 10gbs, aumentar así el bus a 320bits y mejorar B/F. Dado que Sony no ha realizado esto puede que su estrategia para B/F sea la velocidad variable? Es decir normalmente operar cerca del pico y sólo en momentos puntuales llegar a su tope sin dejar que el decrecimiento en rendimiento sea palpable? Gracias

Set

Me confundo cuando no divides Ram de VRam, la Ram es la que se usa en PC actualmente DDR4, VRam es la de mayor velocidad que incorporan las GPU GDDR, las consolas usan Vram como memoria general (unificada). Sobre el cuello de ancho de banda de la 5700xt nunca lo lei, tendria que revizar test en juegos, pero hay que diferenciar a que se le llama cuello, ya que generalmente a todas las GPU si subes la velocidad de memoria ganas algo, se le llama cuello cuando las ganancias son mas que subiendo el core clock.Por ejemplo la Vega 64… Read more »

Klayf

Tengo entendido que polaris usa delta color compression y que incluso las fury usaban una versión más simple

Steven

Hola lastima que la hbm2 no es económica consume poco

Steven

Hola disculpa no pienso entra a discord talves tienes tiempo para decir que opinas de opencl 3.0 gracias disculpame que modeste mucho

Steven

Es no puedo entrar

Nowcry

Después de mucho estudiar puedo demostrar teóricamente que la XBox Serx NO TIENE CUELLO DE BOTELLA en L1 a diferencia de lo que pasaba en RDNA1 si la XBox usara la misma arquitectura. Entendiendo que esto seria lo mínimo que podríamos esperar de RDNA2 si no hubiera cambios. Ojo que es denso pero después de mucho estudiar (me aburro con el confinamiento) creo que lo he conseguido. Voy a empezar con los cálculos de una GPU de RDNA1 para tener una referencia y porque podemos comprobar los resultados y saber si estamos bien. Resultados según fabricante : L0 bandwith 9,76… Read more »