Coste, Diseño y Xbox One

Comentario #1:

Si te he entendido bien lo que quieres decir que es la gpu no deja de trabajar al no disponer de un dato que no se encuentra en cache y que entonces esta realizando otras operaciones con los datos de los que si dispone, de modo que cuando vuelve a solicitar el dato que le faltaba es probable que ya se encuentre en la cache entrando en un ciclo en el que el tiempo “latencia” que tarda el dato en estar accesible no provoca una parada en el proceso.

La latencia no es tan importante en una GPU como en una CPU por el hecho que lo que se hace es aplicar una misma instrucción para un grupo de datos (ya sean vértices, pixeles…) en vez de un solo componente, por lo que esta que haya aplicado la instrucción a todos los datos que la requieran no se hará una petición a memoria. En una CPU en cambio la latencia importa por el hecho que el 99% de los casos se aplica una instrucción a un solo dato y por tanto se hacen continuos accesos a memoria para buscar el siguiente. La contrapartida a esto en el caso de la GPU es que cada acceso a memoria requiere que se le traigan una enorme cantidad de datos y de ahí la necesidad de memorias con un un gran ancho de banda para poder llenar las caches de la GPU con la mayor cantidad posible de datos cada vez que existe una petición.

Se ha de tener en cuenta que mientras que el hardware gráfico se ha ido volviendo más y más potente en muchas áreas, en otras se ha ido quedando atrás como es el número de ROPS (que nos dicen cuantos pixeles/datos en memoria podemos colocar por ciclo de reloj) y estos se han mantenido bajos por el hecho que dependen del ancho de banda de la memoria y durante todo este tiempo el diferencial entre la misma y la capacidad de los procesadores se ha ido haciendo cada vez más grande.

fig2-2

¿Como solventas ese hecho? Pues evitando que el procesador pregunte continuamente a la memoria a través de mantenerlo ocupado un buen tiempo y la mejor manera de hacerlo es manteniendo los “Shaders” ocupados con programas largos que se ejecutan directamente de forma local. Incluso en algunos casos se recomienda que si se necesita un resultado concreto para realizar una operación posterior que dicho resultado no se vuelque en memoria y se realice la operación posterior directamente en el Shader.

Entiendo que cuando hablas de cache de la gpu te refieres a pequeñas porciones de memoria que se encuentran dentro fisicamente de la gpu y no a la eSRAM.

Exacto.

Entonces por lo que comentas el dato relevante sobre la eSRAM es el ancho de banda y el tamaño, lo cual me hace pensar en cual es el motivo de meterla dentro de la gpu sacrificando otros elementos cuando podian haberla dejado fuera y ya de paso haberla hecho mucho mas grande, cuando ademas esto habria facilitado mucho las cosas en la fabricacion de la Apu y seguramente en la cantidad de chip funcionales.

Vamos a ver, el motivo por el cual Microsoft ha prescindido de la DRAM para utilizar SRAM es por una serie de motivos que tiene que ver con el coste de fabricación, en primer lugar una solución como la de 360…

Xbox 360 GPU ATI  X02056 Xenos (r500) 01

… Tiene unos costes mucho más altos por el hecho que se ha de fabricar el chip de memoria y la GPU aparte (costes de infraestructura para ambos chips), se ha de fabricar el sustrato/interposer por lo que es una solución mucho más barata tirar de memoria embebida.

¿Pero porqué no de DRAM si la DRAM tiene 3 veces más densidad? Pues por el hecho que añadir DRAM dentro de un chip (no de un encapsulado, no confundamos) añade etapas en la fabricación de un chip y eso también aumenta el coste. Por lo que al final Microsoft ha optado por la opción que les sale más barata en el tema de costes de fabricación del chip. La otra ventaja es que este planteamiento permite escalar el chip mucho mejor que utilizando eDRAM,  por ejemplo Nintendo no puede realizar una versión de 28nm de Wii U por el hecho que el “Latte” que es el chip donde esta la eDRAM no puede escalar a los 28nm por esta, ya que no existe un proceso de fabricación desarrollado para eDRAM a 28nm (este es otro de los motivos por los cuales Microsoft tiro de SRAM en vez de DRAM), en cambio la SRAM escala mucho mejor en los procesos de fabricación.

Sin ir más lejos ya empiezan a salir rumores de una versión a 20nm del procesador de Xbox One:

A través de los foros de Beyond3D, se ha descubierto que AMD ya tiene un nuevo procesador para Xbox One, el cual es más pequeño, se calienta menos y tendrá un menor coste de fabricación, permitiendo, consecuentemente, un mayor beneficio para Microsoft, y/o un precio más barato de venta para la consola.

La APU pasará de usar tecnología de 28nm a tecnología de 20nm, y por el momento no hay informaciones oficiales de la misma, por lo que puede ser un prototipo que no se incluya finalmente en Xbox One.

En cualquier caso, el procesador se podría introducir en una revisión de la consola a nivel interno, que puede ir o no acompañada de una revisión a nivel externo.

El pasar de los 28nm a los 20nm significa que el área del chip disminuye a la mitad aproximadamente por lo que la cantidad de chips por oblea aumenta (teóricamente reduciendo costes) y también el consumo energético del chip por lo que afecta directamente al resto de componentes de la consola y le permite a Microsoft eliminar piezas de la placa lógica. Obviamente lo de reducir el tamaño del chip también lo puede hacer Sony con PS4, por lo que para entender todo el esquema tenemos que ir a la otra parte de la historia que es la DDR3.

Comentario#2:

Puede ser como comentas, no te voy a discutir de algo sobre lo que no se, pero ¿como ayuda entonces la eSRAM a salvar el pobre ancho de banda de la ddr3?

¿Por el hecho que los ROPS o sea lo que marca la tasa de relleno esta directamente relacionado con el ancho de banda de la memoria?

Captura de pantalla 2014-11-01 a la(s) 12.19.23

 

Si yo utilizo exclusivamente la DDR3 entonces por cada ROP podré escribir 4 bytes de memoria pero para poder escribir 8 bytes de memoria necesitare dos ciclos de reloj debido a que estaré limitado por el ancho de banda de la DDR3, en cambio si escribo el búfer de imagen en la ESRAM podré hacerlo con 8 bytes y por tanto consumiré un solo ciclo de memoria manteniendo la tasa de relleno. Tened en cuenta que como he dicho antes el secreto para mantener alto el rendimiento de una GPU es reducir al máximo las escrituras a memoria y dejarlas únicamente para lo estrictamente necesario.

¿Entonces como es que Microsoft no ha optado por una GDDR5 en vez de la DDR3? La primera respuesta es el coste por chip y la segunda es la densidad, en realidad la GPU de Xbox One es la misma la del R7 260, con la diferencia de que la GPU para PC funciona a 1Ghz utiliza memoria GDDR5 de 128 bits y un ancho de banda de 96 GB/seg (96 bytes por ciclo de reloj) y la de Xbox One funciona a 853Mhz y con un ancho de banda de 68GB/seg (80 bytes por ciclo de reloj) y desde que toda GPU es un procesador de caudal cabe preguntarse… ¿como es que Microsoft no opto por una memoria más rápida como la GDDR5? Pues por el hecho que con un bus de 128 bits (el correspondiente a 16 ROPS) la densidad máxima sería solo de 4GB y ya que estamos… ¿Por qué no DDR3 a mayor velocidad? Pues por el hecho de que el número de chips buenos por oblea disminuye si subimos la velocidad de la memoria por lo que Microsoft ha escogido la DDR3 que resulta el punto de equilibrio entre costes y rendimiento.

Pero hay una ventaja adicional relacionada con los costes y la DDR3, actualmente la consola utiliza chips de 512MB (16 de ello para llegar a los 8GB) pero sabemos que ya hay disponibles chips de 8Gb (1GB), cosa que de momento no ocurre con la GDDR5 por lo que es posible que en un futuro próximo Microsoft pueda reducir costes (y ojalá al precio) al reducir el número de chips de memoria en la placa base de la consola (y otros componentes de forma indirecta).

Dicho de otra manera: Xbox One esta diseñada para escalar en costes hacia abajo de forma rápida.

Anuncios