La GPU de Xbox One X, al contrario de la GPU de PS4 Pro se basa enteramente en la arquitectura AMD Polaris, esto lo sabemos porque el sistema tiene ciertas especificaciones de Polaris.

Microsoft-Xbox-One-X-Scorpio-Engine-Hot-Chips-29-04

Pues bien, esta entrada es una fe de erratas mias después de haber estado investigando más sobre el hardware y he llegado a la conclusión de que el hardware es mucho más potente de lo que yo creía inicialmente. El motivo de ello tiene que ver con lo que comente el otro dia que tiene la GPU del SoC AMD en sus diferentes caches que son:

  • La Cache de Texturas dentro de cada Compute Unit. carrizo_gcn_scematics_01
  • Las Caches L1 (Compartida por un grupo de CUs) y Cache L2 del sistema, asi como el controlador de memoria. Slide 20 - HSA Accel Features_575px

¿Las consecuencias de eso? En Carrizo fue que a nivel práctico desaparecieron tanto Onion como Garlic para unificarse en Onion 3, un sistema que da completa coherencia en cuenta a los visión de la memoria tanto a la CPU como a la GPU de manera completamente transparente, haciendo que a nivel práctico se pase de esto…

NonFullHSA

… a esto:

FullHSA

¿Las consecuencias en los SoC de AMD? Pues se elimina uno de los antigos problemas y se consigue que la contención sobre el ancho de banda total de la memoria que existía al utilizar el bus coherente desaparezca. En la Xbox One original donde existe ese problema el bus coherente que va a 30GB/s…

XBox_One_SoC_diagram

… Cuando esta en uso por parte de la GPU para acceder a la parte coherente de la RAM resta unos 30(32)GB/s*3… Esto son 90(96)GB/s y es más que lo que puede dar la DDR3 dejando a la parte no-coherente sin ancho de banda. ¿Solucion? La ESRAM. Esto provoca además que sea necesario tener componentes que copian bloques de memoria de un punto a otro en la Xbox One original que son los Move Engines/Swizzle Copy/DMA avanzados.

xbox-one-gpu-bus-overview

No es un problema solo de Xbox One dado que PS4 también tiene ese problema y en las listas de comandos de la GPU se tienen que incluir operaciones de copia de datos entre la ESRAM y los diferentes espacios de memoria de la RAM. En un espacio completamente coherente no hace falta este tipo de unidades pero sabemos por el diagrama de Xbox One X que Microsoft las ha mantenido. ¿Motivos? Compatibilidad hacía atrás con Xbox One porque si hablasemos de una consola completamente nueva estos se podrían eliminar por completo pero Microsoft ha decidido conservarlos, esto no quita que realmente el sistema sean dos consolas en una y requiera el optimizado del codigo para sacarle todo el provecho posible.

Ahora a la fe de erratas, según Microsoft en el Hot Chips del Agosto pasado el ancho de banda que le queda a la GPU restando el ancho de banda de la memoria coherente es de unos 285GB/s, teniendo en cuenta que la RAM funciona a 326 GB/s podemos concluir que no hay contención de ningun tipo en Xbox One X.

El Espejismo de los 32 ROPS vs 64 ROPS

PS4 Pro lo que hace es duplicar los Shader Engines de la GPU de PS4 sin cambios aparentes incluidas las unidades RBE/ROPS que hay dentro de cada uno de ellos, haciendo que se pase de los 32 a los 64 ROPS, Xbox One X tiene solo unos 32 ROPS… Durante años hemos escuchado como los fanboys de Sony repetían el mantra de la superioridad por el mayor número de ROPS en su consola.

¿Pero que hacen los ROPS? Es hacía donde envian los datos ya resueltos el Pixel/Fragment Shader siendo los ROPS los encargados de la etapa final, el merger output que lo que haran será escribir los fragmentos ya texturizados y procesados al búfer o a los búfers de imagen según el caso.¿El truco? Esta en que podemos escoger la cantidad de información que escribe cada uno (4 bytes pixel aka RGBA8, 8 bytes pixel aka RGBA16F o 16 bytes pixel aka RGBA32F).

XB1ESRAMBW

Desde Direct3D 10 en adelante estamos limitados a 8 Color Buffers distintos (MRT) pero podemos empaquetar varios Color Buffers en un solo envio a memoria que es más eficiente. Con los 285GB/s de ancho de banda es más que posible y aún sin utilizar el Color Compression pode enviar bloques de 8 bytes/pixel a memoria con los 32 ROPS, lo cual contrasta con los 4 bytes/pixel de PS4 Pro, por lo que la diferenciacion entre los 32 y los 64 ROPS aqui no tiene importancia.

Conclusiones Parciales.

Se ha de tener en cuenta que Xbox One X es una consola que se diseño inicialmente como un salto generacional respecto a la Xbox One original y el ejemplo de ello es el cambio sustancial de la organizacion de la memoria y la arquitectura interna de la misma. Esto explicaría el motivo por el cual crear parches que den compatibilidad en Xbox One X resulte en un trabajo mucho más complejo en la nueva consola de Microsoft.

Esto significa que realmente tenemos dos sistemas distintos a la hora de ejecutar los juegos en Xbox One X, el principal de la propia Xbox One X es un sistema que ve la memoria de manera completamente coherente y no le hace falta realizar operaciones de copia etre espacios de memoria, el segundo es como funcionan tanto Xbox One S como la Xbox One original pero lo que hace es apagar por completo 2 de los Shader Engines en el proceso, lo que deja la configuración en solo 16 ROPS pero en 20 CUs activas, lo cual significa que en modo Xbox One la consola es mucho mejor que lo que es PS4 Pro en modo PS4.

El siguiente gráfico que proviene de un artículo de Digital Foundry de hace exactamente un año

1810x-1.png

Compara 3 escenarios en cuanto a rendimiento que son:

  1. Ejecutar un juego en la Xbox One original.
  2. Ejecutar un juego de la Xbox One original en Xbox One X sin optimizarlo para Xbox One X.
  3. Ejecutar un juego optimizado para Xbox One X.

Si eliminasemos los Move Engines/Swizzle Copy/DME de la ecuacion entonces nos encontrariamos que de los tres escenarios posibles en Xbox One X solo nos quedaría uno:

  1. Ejecutar un juego en la Xbox One original.
  2. Ejecutar un juego de la Xbox One original en Xbox One X sin optimizarlo para Xbox One X.
  3. Ejecutar un juego optimizado para Xbox One X.

El motivo de ello es que en la lista de comandos cuando apareciese un comando de copia o movimiento de memoria entonces daría error porque no estaría el hardware. Pero nos falta una pequeña parte que explicar, en modo Xbox One X tenemos el ATC activo en las caches de la GPU que hace que se vea todo el espacio coherente. ¿Como lo hacemos para revertir a una organizacion de la memoria donde tengamos un espacio coherente y otro no-coherente? Pues es muy sencillo, desconectamos el Access Translation Cache y de repente la visión de la GPU en cuanto a la memoria deja de ser completamente coherente.

El Uncore de Raven Ridge, Xbox One X, Carrizo y unos apuntes Siguiente Generación.

Los buses Onion y Onion+ hacen en un SoC de AMD el mismo trabajo que el bus PCIe en el caso de un PC convencional donde para acceder a la RAM principal (parte coherente) se utiliza el PCIe. ¿Que tiene que ver esto con Xbox One X? Pues que el mismo uncore utilizado en Carrizo y en Xbox One X es utilizado en Raven Ridge y aquí es donde entramos en un bulo enorme de AMD que no me acuerdo si lo comente con anterioridad pero bueno, luego comentare que relación tiene con esto.

Si hacemos caso de la siguiente diapositiva…

infinity fabric

Lo que pensaremos directamente es que la GPU esta directamente conectada al Northbridge del sistema, siendo completamente distinto a lo que hay en Carrizo, no obstante existe una trampa en todo esto de cara a su implementación en futuras consolas. En el pasado mes han aparecido dos artículos que hablan de que la siguiente generacion no va a ser borrón y cuenta nueva y el mecanismo planteado por AMD en la diapositiva rompe la compatibildiad hacía atrás por completo.

¿Cuales son esos artículos? El primero fue escrito hace unas semanas por Paul Thurrot acerca de la siguiente iteración de Xbox.

El artículo habla de lo siguiente:

  • Adopcion de memoria GDDR6, esto lo sabemos por una oferta de trabajo de la propia Microsoft.
  • Segun Thurrot: «La compañía no tiene prisas para reemplazar la Xbox One X desde el momento en que tiene una ventaja en cuanto a potencia en comparación a lo que ofrece Sony actualmente.» Es decir, Microsoft no lanzará un modelo más potente hasta que Sony lo haga.
  • También según Thurrot: «Y como podréis esperar, la consola será compatible hacía atrás y hacía adelante
  • De cara a la siguiente iteracion, Thurrot dice explicitamente: «En cuanto a la línea de tiempo para el próximo lanzamiento de la consola, he escuchado que dentro de tres años es una posibilidad realista;«. Thurrot utiliza el termino within en el texto original que significa «dentro» por lo que no me queda claro si en 3 años veremos algo nuevo o en un espacio de 3 años contando el actual sobre ello ya comentare después. Curiosamente John Kodera, el actual mandamás de Sony ha hablado en los mismos términos.

¿Que tiene que ver esto con el Raven Ridge? Si miramos la organizacion interna de los chips basados en Ryzen veremos que los CCX en el caso del Summit Ridge se comunican con el Data Fabric/Northbridge utilizando el Infinity Fabric como protocolo de comunicacion.

RyzenDataFlow

El Data Fabric comunica a dos puntos distintos, uno es el UMC y el otro es el IO Hub, el cual tiene unos 24 lineas PCIe 3.0 de las cuales se hacen servir unas 16 para la GPU externa en el caso del Summit Ridge, el cual carece de GPU y tiene 2 CCX. Pero sobre el Raven Ridge se dice lo siguiente:

AMD ha lanzado hoy su primera APU de escritorio Raven Ridge que combina un Zen de 4 nucleos con una solución gráfica integrada Vega. Una de las especificaciones que nos ha llamado la atención es su interfaz PCI-Express. Aparentemente estos chips solo dejan unas 8 lineas PCI-Express 3.0 para gráficos dedicados (una GPU externa) aparte de las 4 lineas para el bus del chipset (Southbridge) y las 4 lineas manejando un slot M.2 NVMe a 32Gbps (Nota de Urian: Es para los Discos Duros SSD). Lo que significa para el usuario final es que las tarjetas gráficas dedicadas que se conecten al puerto PCI-Express 3.0 x16 funcionaran a la mitad del ancho de banda. PCI-Express 3.0 x8.

¿Donde han ido a parar las 8 lineas? Pues son utilizadas por la GPU integrada, la cual no esta directamente conectada al Data Fabric a través de un Infinity Fabric de manera directo, lo que se traduce en que la organización de la logistica interna en el Raven Ridge es exactamente igual que en Carrizo. Esto es importante porque si la organización fuese que la GPU estuviese directamente enchufada al Data Fabric entonces no sería posible utilizar el modo no completamente coherente y de utilizarse dicha tecnología en una consola futura romperia la compatibilidad hacía adelante. ¿Como se comunica la GPU en Raven Ridge entonces? Pues a través del puerto PCIe y de ahí al IO Hub… Data Fabric… ¿Como lo veríamos en una consola de siguiente generación? La GPU ocuparía las 16 lineas al completo para si mismo.

Pero no es algo que afecte a Microsoft solamente esto, aunque Microsoft lo ha dicho de manera extra-oficial a través de Thurrot, en el caso de Sony tenemos información no-oficial que es la que dio Semiaccurate que nos hablan de la compatibilidad hacía atrás.

PS5Fake2

Y la otra oficial que es la que ha dado Sony estos dias, la clave esta en la siguiente diapositiva que es oficial.

qWfwsB9

La idea de mitigar el salto generacional es con la compatibilidad hacía adelante de tal manera que todos los juegos de PS4 funcionen sin problemas en el nuevo sistema a los que se les puedan aplicar mejoras técnicas. El uncore utilizado en Raven Ridge, Carrizo y Xbox One X no es propiedad de Microsoft sino de AMD por lo que Sony podria utilizarlo en Epsilon sin problemas y como hemos visto en Xbox One X mantiene la compatibilidad hacía atrás.

El punto final de todo es el llamado «Dentro de unos tres años» que habla tanto el articulo de Thurrot como el propio Kodera… Esto es importante porque a partir de principios de 2019 aparece según el comite auto-regulatorio entre los tres grandes fabricantes de cara a la Union Europea un nuevo tipo de sistema.

Keynote1Keynote3

Recordad que una no quiere ir detrás de las otras, no es que la «siguiente generación» vaya a salir en 2019 sino que la tercera iteración que son consolas puramente UHD aparecerán a partir de 2019, por lo que ni PS4 Pro ni Xbox One X entran segun sus fabricantes en esa categoría. La otra pista que tenemos viene de la propia Sony…

BizarrePrediction.PNG

Al lanzar un nuevo sistema entonces los gastos aumentan enormemente y con ello se reducen los beneficios al reducirse los margenes. La gráfica tiene varias interpretaciones y no una sola pero nos ayuda a concretar que dentro de 3 años no es un lanzamiento en 2021 precisamente como muchos dicen.

Y con esto termino, se que ha sido una entrada larga pero dadas las noticias de los últimos días y el hecho que tenía la entrada de fe de erratas sobre Xbox One X a medio hacer y en los borradores he decidido unificarlas en una sola entrada. Espero que haya sido de vuestro agrado.