APIs gráficas y equilibrio CPU-GPU (III)

Comentario original:

Muy interesante artículo Urian, Como siempre 😉

En resumen, dices que ahora mismo las máquinas están bastante empatadas ya que PS4 utiliza 14CU a 800Mhz y XboxOne 12CU a 853Mhz lo que da una potencia de 1.4TF y 1.31TF respectivamente.

Antes con la “reserva” de Kinect, eso no era así y de ahí que cada vez veamos mas paridad en los Multis.

Todo cuadra bastante, sin embargo no me cuadra que digas que XboxOne se hizo con DirectX11 en mente, no digo que no sea así, digo que lo afirmas con total rotundidad cuando eso no lo sabe nadie.

Tampoco me cuadra que MS sea tan tonta de estar invirtiendo tanto en una API cuya diapositiva más descriptiva es la de “presumir” como se reparte la CPU las tareas si su principal buque insignia en videojuegos es XboxOne y no le va a servir de nada (según tú)… vamos, es como cuando salió 360 y sus Shaders Unificados… DirectX9c los explotaba al máximo y ahí teníamos una de sus principales bazas de cara a la competencia (aunque tampoco me sorprendería ya que MS a veces toma decisiones super-absurdas).

No te cuadra pero es la verdad y  buena parte de lo que ya comentas ya lo comente en la segunda parte.

Afirmo las cosas con total rotundidad por el hecho de que son así y punto, no soy yo quien esta haciendo control de daños ni tergiversando las fuentes primarias por el hecho que no concuerdan con lo que yo quiero creer, la realidad es cruel a veces, pero más cruel sería si hubieses nacido en ciertas partes del mundo. El hecho de que haya gente perdiendo el tiempo especulando sobre las especificaciones ya conocidas de una consola es simplemente la demostración de lo banal que es el ser humano en el llamado primer mundo.

Los que seguimos el mundillo y nos lo tomamos enserio, tampoco entendemos que hay tras el NDA que mantienen MS y AMD, algo de lo que no hablan los arquitectos es de la ya “pública” memoria NAND de 8Gb que parece hacer de buffer del HDD y que permite un streaming de texturas al nivel de un SSD (eso dicen de Evolve),

¿NDA entre MS y AMD? Fuera de la documentación de las librerias propietarias que hay en el SDK… no hay NDA alguno en lo que a las especificaciones se refiere y en cuanto a o del Streaming de Texturas a nivel de SSD deja que me ria un poco anda.

HAHAHAHA

El Streaming de texturas es algo que ya vimos en la anterior generación en varios juegos, aquí tienes una presentación para que entiendas en que consiste.

tampoco se sabe mucho de los 4Mb apilados entre los 2 Jaguar… o lo que dicen los ingenieros en la entrevista con DF: “tocamos la construcción alrededor de la CPU y entonces miramos en como los núcleos Jaguar implementaban la virtualización, hicimos algunos cambios, pero nada fundamental a la ISA o añadir instrucciones”
No sólo por eso puedes dar por hecho que las “piezas” al lado de los Jaguar sean sólo para mejorar la virtualización.

La construcción que hay alrededor de  la CPU no es la CPU, es el llamado Northbridge/MMU que se encarga de comunicar todos los elementos de la consola entre si y estos con la memoria. La litografía deja muy claro que esa parte es diferente en ambas consolas y los mismos arquitectos en su entrevista a Digital Foundry confirman que han tocado esa parte:

Teardown-Xbox-One-processor-die-2

 

ps4-reverse-engineered-apu

 

Para los profanos,la parte a la que me refiero es la zona que se encuentra justo entre la CPU y la GPU, en el diagrama de su presentación en el Hotchips es la que recibe el nombre de CPU-Cache-Coherent-Memory Access:

XBox_One_SoC_diagram

En la famosa entrevista a los arquitectos tenemos la respuesta de lo que se trata, por un lado la cita que ya comente en la primera entrada:

Nick Baker: No ha habido ninguna configuración con dos clusters de Jagiar antes que la Xbox One (Nota de Urian: 1 Cluster Jaguar= 4 núcleos, el único procesador con Jaguar fue el AMD Kabini que tenía un solo Cluster, luego vinieron PS4 y Xbox One que utilizan dos tal y como se puede ver en las litografías de los procesadores) así que había cosas que teníamos que realizar para que esto funcionara. Queríamos una mejor coherencia entre la CPU y la GPU y esto es algo que teníamos que hacer, por lo quetocamos la construcción alrededor de la CPU (Nota de Urian: No habla de la CPU en si) y entonces miramos en como los núcleos Jaguar implementaban la virtualización, hicimos algunos cambios, pero nada fundamental a la ISA o añadir instrucciones.

¿Por qué es importante la coherencia entre la CPU y la GPU?

En Xbox One nuestras cargas de trabajo del Kinect están corriendo en la GPU con computación asincrona para todas nuestras cargas de trabajo de proposito general en la GPU y tenemos todos los requerimentos para una computación de ese tipo en terminos de una memoria rápida coherente, tenemos nuestros sistema operativo, el cual nos lleva a nuestro sistema de diseño. Nuestro manager de memoria en la pate de los juegos ha sido completamente re-escrto. Lo hicimos para asegurarnos que el direccionamiento virtual para la CPU y la GPU acabe siendo siempre el mismo estes en el lado que estes. Mantener las mismas direcciones virtuales tanto para la CPU como para la GPU permite a la ambas compartir los punteros.

De que me suena eso… ah si, es lo mismo que el hUMA que hay en PS4 y en PC:

huma_03

La diferencia es que esta vez la solución no es la genérica de AMD como ocurre en PC y PS4 sino que es algo completamente a medida… ¿el motivo? Tablas de paginación sincronizadas entre CPU y GPU, por cierto de la definición de la Wikipedia quedaos con esto:

Las tablas son mantenidas por el sistema operativo y utilizadas por la Unidad de Gestión de Memoria (MMU) para realizar las traducciones. Para evitar un acceso a las tablas de paginación, hay un dispositivo llamado Buffer de Traducción Adelantada (TLB, Translation Lookaside Buffer), acelerando el proceso de traducción.

Ahora vayamos a lo que afirman los arquitectos de la consola acerca del tema de las tablas de paginación:

Tuvimos que ser capaces de hacer que el sistema entero fuese capaz de virtualización, asegurandonos que todo tuviese tablas de paginación.

Nick hablo sobre las tablas de paginación. Algunas de las nuevas cosas que hemos hecho, la GPU tiene dos capas de páginas de tablas para la virtualización. Pienso que es la primera GPU aplicada  consumo que corre virtualizada. Queríamos que la virtualización tuviese ese aislamiento.

Construimos la virtualización de tal manera que no haya una carga en el sobrecoste para los gráficos excepto en las interrupciones. Hemos hecho todo lo posible para evitar las interrupciones… solo dos por fotograma. Hemos tenido que hacer cambios significativos en el hardware y en el software para conseguirlo. Tenemos superposiciones en el hardware donde tenemos dos capas para el título/juego y una capa para el sistema y la capa del sistema y la del juego puede renderizar de forma asincrona y presentar el resultado de forma completamente asincrona a lo que ocurre en el lado del sistema.

Dado que tanto la CPU como la GPU acceden en Xbox One a la memoria principal a través del mismo mecanismo (ver diagrama de más arriba) esto significa que los cambios en ese aspecto se tienen que hacer en esa parte y si miráis la descripción en el diagrama del sistema que he puesto arriba, la parte llamada CPU-Cache-Coherent-Memory Access coincide con esta descripción.

¿Cual es la diferencia con PS4 y PC? Pues que el mecanismo de PS4 esta pensado para múltiples contextos en un mismo sistema mientras que Microsoft necesitaba múltiples contextos en múltiples sistemas y esto les llevo a tocar la parte entre CPU y GPU, es más, lo más lógico y coherente es que la memoria SRAM sea un TLB magnificado para almacenar las tablas de paginación para ser utilizadas por CPU y GPU.

a mi eso ya me parece una gran pista para pensar que XboxOne está pensada para DirectX12.

¿Que tiene que ver eso con DirectX 12? Nada.

El motivo por el cual Xbox One esta preparada para DirectX 12 es por el hecho que su GPU es de la familia Sea Islands de AMD (aka GCN 1.1), pero no esta pensada y tal y como dije en la entrada anterior los desarrolladores tienen acceso a una API de bajo nivel en la consola que les permite sacar todo el jugo de la misma sin tener que esperar a DX12.

Tampoco queda claro lo de la litografía de las GPU, en “ElOtroForo” dices que simplemente estan cambiadas de orientación pero se ve claramente como están “partidas” o “duplicadas”… vamos que no se parecen en nada.

Compraos unas gafas por favor, ambas CPUs son la misma a tenor de un pequeño detalle:

Discrepency

Son de las litografias de arriba, son la misma CPU solo que están volteadas.

Por otra parte vamos viendo que queramos o no la industria va a dejar el DeferredRendering a favor del Forward+ y casualmente esa arquitectura le viene mejor a ONE ya que si la “imágen” cabe en los 32 paupérrimos Mb de EDRAM, en los que se puede leer y escribir simultaneamente consiguiendo cosas como 4xMSAA, mientras que “The Order 1866″ tiene que tirar de unas barras negras a lo “The Evil Within” que no son más que una excusa para mejorar el rendimiento…

El Forward+ se acabara estandarizando por el hecho que permite hacer lo mismo en menos tiempo tal y como AMD demostró hace unos años:

Con el Forward+ se puede conseguir que una escena de la misma complejidad visual se renderice en menos tiempo y aprovechar el tiempo ganado para aumentar la tasa de refresco o mejorar la calidad visual de los juegos sin coste adicional alguno. En un sistema cerrado como es una consola en que la optimización consiste en aprovechar cada recoveco de la potencia que se pueda al máximo posible será (sí no lo ha sido ya) aceptado con los brazos abiertos.

Nose.. como digo veo demasiadas incógnitas sin resolver en XboxOne y demasiadas cosas complejas como para pensar que es una consola “mal diseñada” ya que no aprovechará DirectX12.

Yo no he dicho que DirectX 12 no aprovechara la consola, porque la expresión debería ser a la inversa, no es el hardware el que aprovecha el software sino al reves. Tampoco he dicho que sea una consola mal diseñada sino que son directamente mentira las afirmaciones de cierta gente que contradicen las fuentes primarias relacionadas con la consola.

Para terminar, Incognitas sin resolver no hay realmente, hay la intención por parte de alguna gente de crear una falsa especulación acerca de la naturaleza de algo que ya se sabe como es, ergo la especulación es inutil y de ahí que tengan que inventarse la narrativa de que Microsoft y/o AMD ocultan cosas no sea que se les vea el truco. Es una discusión banal como he dicho antes, un sinsentido que solo sirve para alimentar el ego de unos pocos con los que no tengo ninguna intención de discutir, es como ponerse a discutir si el sol sale por el Este o si el cielo es azul o no.

 

 

 

Anuncios