#23 Que tú no lo entiendas (yo tampoco) no quiere decir que lo haga un mago.
Me voy a permitir quotear a un usuario de otro foro:
"Bueno, dado el despropósito al que se está llegando en este hilo voy a explicar lo que significa el PDF famoso.
Primero unas preguntas y respuestas rápidas importantes para entender la explicación:
- ¿Tiene Xbox ONE doble GPU?: NO.
- ¿Reserva ONE CPs o CUs para el sistema?: NO.
- ¿Podemos tener una GPU que admita multihilo sin tener doble contexto gráfico?: SI. Podemos tener 2 CP pidiendo tareas a la GPU y la GPU irá realizando las tareas pero no simultáneamente (por ejemplo pensad en un núcleo de CPU de 2 hilos, lo que ejecutan no es simultáneo sino que los hilos cogen la capacidad de proceso según el otro hilo ya no lo necesita). Para que una GPU realice dos tareas GRÁFICAS en paralelo DEBE tener 2 contextos gráficos (no podemos pintar en un lienzo en dos puntos al mismo tiempo si no tenemos dos pinceles). Resalto gráficas porque una GPU puede realizar GPGPU al mismo tiempo que renderiza.
Aquí habláis desde la teoría pero no desde la práctica., y es por eso que no se entiende el porqué de la estructura de One. Para entender la tecnología hay que entender el rendering, el porqué y el cómo se hacen las distintas técnicas actuales y futuras. El factor determinante es el doble contexto gráfico. Ésto es MUY importante, la clave es la palabra "gráfico".
Un ejemplo muy sencillo de renderizado de sombras seria: CPU prepara y pide crear una sombra de un objeto, la GPU entra en juego y la genera. Y así sucesivamente por cada sombra. Hay que tener una cosa MUY clara, renderizar una sombra no necesita PARA NADA los 12 CUs de la consola, ni por tener 12 o 18 va a renderizarla más rápido, una sombra necesita una capacidad de cómputo determinada y que posiblemente con 1 única CU nos bastaría. El problema es que cuando se renderiza se OCUPA la GPU, por lo tanto aunque no necesitemos los 12 CUs, los 12 CUs se van a bloquear para poder pintar la sombra. Obviamente podemos distribuir los CUs, y decir que sólo queremos usar un máximo de CUs para renderizado, y el resto para GPGPU (y aprovechar así el tiempo de renderizado para sacar cómputo). Pero a la hora de renderizar y para los CUs asignados a renderizar TODOS quedan bloqueados.
A partir de aquí C es CPU y G es GPU. Si queremos generar 4 sombras tenemos:
C > G > C > G > C > G > C > G
¿Qué sucede en One?. Que al tener 2 contextos gráficos puede renderizar 2 sombras al mismo tiempo. Con lo que nos queda:
G > G
C > C
G > G
Esto es, ni más ni menos, que la mitad del tiempo. ¿Estamos duplicando en este caso el rendimiento gráfico de One?: SÍ. ¿Es One más potente por ello?: NO. La capacidad de cómputo de One es la misma solo que el rendimiento es el doble.
Otro ejemplo seria un engine gráfico basado en tiled forward (http://www.cse.chalmers.se/olaolss/main_frame.php?contents=publication&id=tiled_shading). Esta implementación se basa en generar el frame final a base de tiles o porciones de pantalla pequeñas (pequeños rectángulos). A parte de las características negativas y positivas de ésta técnica (toda técnica tiene su lado bueno y su lado malo), a dónde quiero ir a parar es en el hecho en el que... teniendo 2 contextos gráficos simultáneos podemos dibujar 2 de esas porciones SIMULTÁNEAMENTE. Con lo que el resultado es que obtenemos el frame en la mitad del tiempo y por tanto doblamos el rendimiento. Aquí también quiero hacer incapié en otra característica única de One: su eSRAM. Dado que esta técnica no requiere de gran ancho de banda, lo que más le beneficia es una memoria RÁPIDA, es decir de bajísima latencia (no confundir RAPIDEZ con ANCHO DE BANDA, no tienen NADA que ver, la rapidez la determina el tiempo para que la memoria vuelva a estar disponible para una nueva petición y ahí importa la latencia, el ancho de banda sólo sirve para MOVER grandes cantidades de memoria de un punto A a un punto . Quiero decir con esto que de aplicar esta técnica en ambas consolas, One ganaría por absoluta goleada. Pero si aplicamos técnicas más antiguas como un deferred engine PS4 tiene ventaja por su ancho de banda (y de aquí vienen las diferencias en multis hasta ahora en cuanto a resolución o framerate).
A todo esto hay que añadirle que One tiene Full HSA, es decir coherencia total de memoria, algo básico si tenemos más de un contexto gráfico y además GPGPU, porque sí, One puede renderizar dos cosas y hacer GPGPU AL MISMO TIEMPO y compartiendo la MISMA memoria. Y esto es MUY potente y da una serie de posibilidades únicas.
¿Bien... significa todo esto que One doblará su rendimiento?: NO. One doblará su rendimiento GRÁFICO en múltiples tareas gráficas pero el rendimiento GLOBAL de un juego no SÓLO depende de la GPU. Hay muchos otros factores: CPU, memoria, técnicas gráficas utilizadas...
Ahora bien, si a mi se me pregunta: ¿Cuánto crees en promedio que mejorará el rendimiento de One?. Sinceramente y, bajo MI opinión, One incrementará con DX12 el rendimiento entre un 50 a un 75%.
Sorry por el tocho y espero haber dejado bastantes cosas claras."