Esta entrada no es sobre que consola es mejor, sino para comentar un hecho objetivo del apartado técnico entre ambas consolas, no me gustaría que la gente lo tomase como un ataque a una consola en particular.

Con el lanzamiento de Red Dead Redemption 2 (RDR2 a partir de ahora) han surgido como siempre las comparativas entre Xbox One X y PS4 pro en el tema técnico donde la consola de Microsoft tiene las de ganar por ser una consola más potente sobre el papel, el problema es el enorme margen por el cual gana, el cual teniendo en cuenta que ambas tienen arquitecturas similares (con elementos cuasi identicos) hace que sorprenda aún más la cosa porque en este caso si que podemos comparar 1:1 entre ambos sistemas y sinceramente la diferencia en números no cuadra.

El ejemplo reciente de Red Dead Redemption 2 es cuanto menos sorprendente, donde la diferencia en resolución es 2X el número de pixeles cuando para haberle tiene que existir una diferencia de 2X en la tasa de relleno, tasa de texturizado y en la potencia de las unidades programables (shaders), una simple tabla no revela que esa diferencia a niveles prácticos no existe.

PS4 Pro Xbox One X Factor
Shaders (TFLOP) 4,2 6 1,4
Tasa Relleno (Gpixeles) 58,3 37,5 0,6
Tasa Texturizado (Gtexeles) 131,18 187,52 1,4

Si pensáis que las cifras no corresponden en el caso de la tasa de relleno de Xbox One X o dire que es información oficial.

XboxOneXGPUSpecs

La GPU de Xbox One X es una AMD Polaris con 40 CUs y es en este punto donde empiezan las confusiones, los medios no paran de repetir que lo que lleva dentro la PS4 Pro es una RX 480 (Polaris 10) tal cual, en realidad eso es falso y el propio SDK nos lo dice, coincidiendo unicamente en la cantidad de Compute Units.

PS4ProGPUSpecs

En PS4 Pro tenemos en su GPU 1MB de Cache L2 y uno 64 ROPS, el motivo por el cual sabemos que tiene 64 ROPS lo repasare más adelante, de momento quiero que hagáis un acto fe y me creais que la GPU de PS4 Pro no es una AMD Polaris como dicen los medios y dejo caer Sony en su día.

amd-radeon-rx-480-polaris-10_gcn-4-0-block-diagram

PS4 es un caso particular en su GPU, porque pese a ser claramente una GFX7 (Sea Islands) tiene un elemento que no tiene Xbox One ni las Sea Islands (GCN 1.1/GCN2) que es la configuración con 8 ACE aparte del/de lo procesador/procesadores de comandos gráficos en el Front End, por cierto que muchos medios han dicho durante tiempo que la GPU de PS4 es el equivalente a una Radeon 7870 (GCN 1.0/GCN1) y esto es para que os deis cuenta de lo perdidos que han estado todo este tiempo. Pues bien, la configuración en los procesadores de comandos de PS4 en PC no la vimos hasta la GCN 1.2… ¿Significa esto que es una GCN 1.2/GCN3? No porque no tiene todos los elementos para ser considerada una.

AMD-Polaris-Architecture-Comparison.jpg

Uno de esto elementos es el el Delta Color Compression, curioamente Sony lo añadio en PS4 Pro y esto lo sabemos por la referencias en el SDK que hay al mismo.

PS4DCC

¿De donde sacamos lo de los 64 ROPS? De la tasa de relleno que vemos en el gráfico, como mucho puede dibujar a una tasa de unos 58 Gpixeles/s pero necesita el DCC para ello porque la memoria es un cuello de botella ya que funciona a 160 GB/s solamente en terminos realistas, el DCC es una funcionalidad de las GCN 1.2/GCN3 que se añadio a los RBE, curioamente también GCN 1.3/GCN4 que es Polaris también es GFX8 pero con una serie de funcionalidades extra.

¿Pero en que otras cosas me baso para afirmar que la GPU de PS4 Pro no es Polaris? La primera de ellas es el True Audio, en el caso de Xbox One tenemos que Microsoft utiliza su hardware de audio propietario que se encuentra conectado al Northbridge coherente de la CPU, en el caso de PS4 el Audio lo lleva el True Audio de AMD.

bbchsze.png

AMD mantuvo el True Audio en las GCN 1.2/GCN3 pero lo elimino por completo en GCN 1.3/GCN4, este cambio no afecta a Xbox One X desde el momento en que Microsoft fue precavida y creo su propia solución de audio pero en el caso de Sony no fue así y si hubiesen adoptado GCN 1.3/GCN4 entonces el audio de los juegos no hubiese funcionado porque AMD elimino el soporte del mismo.

Pe… pero… Urian, podrían haber incluido los DSP del True Audio.

Es cierto, pero la coincidencia es sospechosa y nos queda un punto que es el no-soporte de HEVC/H.265 para el codificador/descodificador de video y es que PS4 Pro carece de ello, por lo que podemos asumir que su GPU es una Volcanic Islands en vez de una Polaris. Ahora bien, esto no explica el motivo por el cual hay una diferencia tan bestia a efectos prácticos entre ambos sistemas y que no cuadra para nada con el hecho de que existan esas diferencia no en uno sino en varios juegos.

jgxkaam96z701.jpg

Por lo que no es un problema exclusivo del Red Dead Redemption 2 sino que es un problema general y la conclusión es que PS4 Pro tiene un cuello de botella enorme en algún lugar que no tiene Xbox One X. ¿Pero cual puede ser ese cuello de botella? Para mi que tiene que ver con el ancho de banda y de paso con la tasa de relleno, curiosamente Mark Cerny aparte de decir que la GPU de PS4 Pro es Polaris (cosa que como habréis visto dudo por completo) en su entrevista a DF por el lanzamiento de la consola:

«DCC allows for inflight compression of the data heading towards framebuffers and render targets which results in a reduction in the bandwidth used to access them. Since our GPU power has increased more than our bandwidth, this has the potential to be extremely helpful.»

Pero paradojicamente en los SDK Sony dice que el DCC es experimental y que es posible que lo retiren en futuras iteraciones.

DCCExperimental

Es decir, PS4 Pro tiene un cuello de botella enorme en el ancho de banda de ahí la necesidad del DCC pero va Sony y le dice a los desarrolladores que no lo utilicen en sus juegos porque puede ser que lo eliminen por completo el soporte en futuros SDK. Si miramos las specs de Xbox One X a simple vista con lo 37.5 Gpixeles/s sigue estando por debajo de lo 40 Gpixeles/s de PS4 Pro, pero es que esta también soporta el DCC por hardware por lo que no podemos explicar teniendo en cuenta estas diferencias el motivo por el cual Xbox One X rinde tan bien en comparación con PS4 Pro… En pocas palabras…

suspi

Es decir, la enorme cantidad de RBE (ROPS) que tienen tanto PS4 como PS4 Pro no les aportan nada de ventaja y no influyen nada. Mi teoría es que para PS4 Pro lo que hizo AMD para Sony fue expandir un poco el conjunto de registros/instrucciones de PS4 por un lado y por el otro duplicar la Cache L2 en consecuencia junto a los Shader Engines, cuando se dieron cuenta que se quedaban cortos en cuanto a tasa de relleno en AMD colocaron el DCC pero algo me dice que Sony no queria el DCC en PS4 Pro y que AMD lo añadio porque formaba parte del paquete.

#2 Cuellos de Botella

Tanto Xbox One X como la familia PS4 Pro tienen un mecanismo UMA donde tenemo un pozo de memoria universal por lo que todo pasa por el el controlador de memoria de la GDDR5 y todo crea contención desde el momento en que es una memoria de un 1 solo canal por lo que si algo accede a la RAM entonces el resto no puede acceder a la memoria.

Es aquí donde en el caso de PS4 Pro vemos la verdadera historia de terror.

Degradation.PNG

Esto es con la configuración máxima permitida en lo juegos y es del SDK de la propia Sony, el UNB que es el Northbridge Coherente toma como mucho unos 20.2 GB/s según el DK pero en ambos casos la degradación es de 2.8 veces respecto a lo que consume pero lo que nos queda del Bus Garlic (que es lo que afecta la tasa de relleno es cuanto menos)… Por si no sabéis que son Garlic y Onion…

Resulta que tanto PS4 como Xbox One X tienen un uncore (el mecanismo de conexión que comunica los diferentes componentes entre si) con dos caminos distintos para la GPU.

  • Uno llamado Onion, cuyo ancho de banda es de 25.6 GB/s en PS4 y de 30GB/s en Xbox One (por el añadido del subsistema de audio) que accede al Uncore propio de la CPU (Northbridge del sistema) llamado tambíén UNB, esto le permite ser coherente en lo que a direcciones de memoria se refiere.
  • Otro llamado Garlic, que puede utilizar todo el ancho de banda de la RAM para la GPU, esto hace que no sea coherente pero es ideal para escenarios en los que hace falta mucho ancho de banda.

Si eliminamos al bus Onion de la ecuación entonces Garlic se ve bastante beneficiado pero igualmente no encontramos que hay conflicto.

Degradation2.PNG

Pero el conflicto sigue existiendo por lo que he comentado antes, la memoria GDDR5 es de un solo canal y esto genera conflictos. Dudo mucho que Xbox One X no se encuentre en un problema similar…

Degradation4.PNG

Esto de cara a la siguiente generación con el uso de la GDDR6 que utiliza no 1 sino 2 canales de memoria se debería haber solventado, en realidad se solventa con cualquier memoria que soporte 2 o más canales de memoria (como la HBM por ejemplo). Curioamente en el caso de Xbox One (S) al existir la ESRAM ese problema no existe, sobretodo en escritura a memoria por parte de la GPU dado que obviamente la ESRAM es otro pozo de memoria y por tanto se evita el conflicto, pero en Xbox One X… La configuración de memoria es como en las PS4 por lo que la perdida de ancho de banda debería ser igual en Xbox One X pero con el resultado que teniendo más ancho de banda disponible en Xbox One X el ancho de banda que le queda a la GPU es superior.

Si tiramos de la información del SDK de PS4 veremos que el ancho de banda disponible para la GPU en modo PS4 Pro es de 160 GB/s… ¿El de Xbox One X? Según lo que dijo Microsoft en el Hotchips del año pasado… ¡Unos 285 GB/s! Y es en este punto donde entramos en un punto interesante.

Curiosamente tanto PS4 Pro como Xbox One X utilizan GDDR5 a 6.8 Gbps… Pero si Xbox One X tuviese la misma eficiencia en el controlador de memoria que PS4 Pro entonces el ancho de banda sería de 240 GB/s y no de 285 GB/s, mi hipotesis para la diferencia de rendimiento esta entre otras cosas que tanto AMD como Microsoft tocaron el controlador de memoria GDDR5 de cara a Xbox One X para que fuese más eficiente y hemos de tener en cuenta que el ancho de banda es sumamente importante a nivel gráfico ya que este afecta directamente al rendimiento de la GPU.

¿Es posible que esta sea la explicación del rendimiento mejor de la cuenta para Xbox One X respecto a PS4 Pro? Pues para mi si, no existe otra evidencia para ello. No solo tenemos un bus de memoria más ancho sino que ante memoria de la misma velocidad el rendimiento es mayor. Viendo como Sony utiliza componentes estandar de AMD para sus GPUs y Microsoft es más dada a tocar el hardware diria que el controlador de memoria GDDR5 no es un trabajo de AMD en cuanto a diseño sino de la propia Microsoft. Si fuese de AMD hubiesemos visto un aumento de rendimiento en ese aspecto en las GPUs de PC y AMD hubiese sacado pecho de ello. Otra cosa que me hace pensar eso es que Microsoft saco hace unos meses una oferta de trabajo que pedía un ingeniero experto en memorias para la implementación de la GDDR6 en un futuro sistema, esto me hace pensar que con Xbox One X han creado su propio controlador GDDR5.

JobGDDR6

Y si, se que la oferta es para lo que es Scarlett, pero me agarro a lo que he dicho antes. Claro esta que… ¿Como afecta el ancho de banda al rendimiento? Pues a los Shaders desde que trabajan con sus registros no afecta la memoria externa pero si a la tasa de relleno y a la tasa de texturizado, el ancho de banda marca la tasa máxima de pixeles y de texeles con los que la GPU puede trabajar. En la etapa del Pixel/Fragment Shader las instrucciones se ejecutan por cada texel por lo que si tenemos menos ancho de banda tenemos menos texeles y con ello el trabajo del Pixel/Fragment Shader es menor. Y si en algo se caracteriza la resolución es por el número de pixeles que se ve afectado por la cantidad de texeles.

Un téxel (contracción del inglés texture element, o también texture pixel) es la unidad mínima de una texturaaplicada a una superficie,1​ usada en gráficos por computador. De la misma forma que una imagen digital se representa mediante una matriz de píxeles, una textura se puede representar mediante un matriz de téxeles.

Cuando se aplica una textura a una superficie 3D, en el proceso conocido como mapeado de texturas, se asignan téxeles a los píxeles correspondientes que aparecerán en la imagen final. Un téxel puede corresponder a varios píxeles, o bien ser de tamaño inferior a uno, en cuyo caso podría no ser visible. El hecho de que un téxel corresponda a varios píxeles no quiere decir que éstos vayan a tener un color uniforme.

En los ordenadores modernos, este proceso es llevado a cabo en la tarjeta gráfica.

Y con esto termino, ya sabéis, para comentar tenéis el Discord y los propios comentarios de esta entrada.