El cuello de botella de PS “Neo” que nadie comenta

Existe una relación directa entre el número de unidades de texturizado y el número de unidades de procesamiento de los shaders desde el momento en que los Fragment/Pixel Shader trabajan con los datos que les llegan desde la unidad de texturas, es por ello que las unidades de texturas se encuentran acopladas a las unidades shader independientemente de la arquitectura gráfica y en el caso concreto de la GPU de PS4 y la de PS “Neo” estás se encuentran dentro de cada una de las unidades llamadas Compute Unit junto a los Shaders (las unidades SIMD) en la CU.

Compute Unit

Hay que tener en cuenta que las GPUs son procesadores de caudal/stream processors y su rendimiento como tal depende del ancho de banda de datos que reciban, un caudal insuficiente significará que el procesador no trabajará con su rendimiento óptimo, un exceso de datos significará que la GPU se verá sobresaturada y sin capacidad de realizar su trabajo a tiempo por lo que el ancho de banda es importante para las oparaciones aritméticas en el caso de los shaders de una GPU. Para conseguir el máximo rendimiento con los Stream Processors lo que se hace es dividir los programas en pequeños programas que pueden funcionar de manera paralela o concatenada llamados “kernels”. Esto nos permite paralelizar enormemente los programas y repartir el trabajo entre la enorme cantidad de núcleos que tiene el sistema.

streamprocessorskernel

Es decir, cada kernel es un programa autocontenido con principio y final que para poder ejecutarse lo más rapidamente posible aprovecha el hecho de encontrarse lo más cerca posible del procesador. En el mundo de los videojuegos hemos visto los stream processors en dos tipos de procesador distintos:

  • Los SPE del CBEA de PS3 que disponen de memoria local para realizar las operaciones desde allí.
  • Los Shaders de todas las GPUs modernas.

Es decir, en el caso concreto de las unidades shaders de las GPUs no tienen acceso directo a la memoria principal porque entonces esto significaría un ancho de banda necesario increiblemente alto y por eso son unidades autocontenidas en si mismas que van recibiendo los datos del exterior. Es decir, mientras las unidades shader se encuentren ocupadas realizando sus trabajos no ocurre absolutamente nada pero se han de encontrar métodos de autocontención para evitar que la maquinaría se pare, el metodo de contención en todas las GPUs con arquitectura GCN es el hecho de que cada CU tiene tiene un planificador interno para ir dando de comer a los voraces unidades SIMD y que no se queden sin caudal de datos.

Wavefront1

Wavefront2

 

¿Y como se reparte el procesamiento de lo Wavefronts?

Wavefront3

Cada Wavefront esta compuesto por 64 “hilos” y se procesa en cada una de las unidades SIMD en cuatro ciclos como mínimo, hay que tener en cuenta que existen instrucciones que requieren más tiempo que otras para ejecutarse pero esto significa que los 40 Wavefronts que puede almacenar el planificador de cada Compute Unit van a ser consumidos en 40 ciclos de reloj antes de quedarse sin “kernels” que procesar y sus datos correspondientes por lo que lo ideal es que los datos se encuentren dentro de la misma instrucción pero si el direccionamiento es directo (tenemos la dirección de memoria del mismo pero no el mismo dato) entonces es cuando empiezan los problemas porque se añade un retardo adicional que depende de donde se encuentre el dato y se encuentra en la memoria externa como ocurre con la mayoría de datos gráficos en los juegos entonces nos encontramos que todas y cada una de las CUs acaban haciendo peticiones a memoria y por tanto la cantidad de CUs acaba teniendo una relación directa con el ancho de banda de la memoria externa y es aquí donde entramos en el problema del ancho de banda.

Recordemos cuales son las especificaciones de PS “Neo” según la gente de Giant Bomb, especificaciones que el resto de los medios han ido asintiendo:

PSNeoSpecs

El salto de los 18 a los 36 CUs debería venir acompañado como mínimo de un aumento del ancho de banda, aunque los 176 GB/seg no se utilizan si que sabemos que la GPU de PS4 puede llegar a utilizar un caudal de 140 GB/seg en condiciones reales:

PS4-GPU-Bandwidth-140-not-176

El aumento del ancho de banda parece hecho a medida de los ROPS que siguen siendo los mismos y ha habido un leve aumento de la velocidad de reloj, pero lo que interesa aquí es la tasa de texturizado y no los ROPS, esta claro que la tasa con 218 GB/seg para 36 CUs es más baja que la de 140 GB/seg con 18 CUs y el ancho de banda debería ser un poco mejor… ¿Es posible hacerlo mejor? Si, utilizando memoria GDDR5X.

GDDR5X-clock-rates-and-bandwidth

El uso de memoria GDDR5 en PS “Neo” es el mismo problema que el uso de memoria DDR3 en Xbox One, la diferencia es que Microsoft no ha añadido más CUs de lo normal para que el caudal de datos sea insuficiente. Se que muchos ahora mismo estarán pensando… ¡Pero si la RX 480 que tiene la misma GPU usa memoria GDDR5! ¿De que coño estas hablando? 

RX480

¿Significa esto que la RX 480 alcance el rendimiento óptimo? Más bien el tema de la GDDR5 vs la GDDR5X es por tema de costes y abaratar, pero en el caso concreto de PS “Neo” es lo que me hace pensar que Sony para ahorrar en la estructura de costes va a tirar de GDDR5 convencional para poder utilizar la placa madre de PS4 provocando de manera indirecta un curioso cuello de botella en la arquitectura que inicialmente no se notara porque incluso con dicho cuello de botella el sistema es superior al hardware de PS4 que se encuentra actualmente en el mercado.

¿Entonces que es PS “Neo”? Es un movimiento estratégico basado en atacar por precio y defender estrategicamente las posiciones frente al posible embite de Xbox “Scorpio”.

Garry-Kasparov-998x675

Microsoft por otro lado piensa que Sony ha ganado por potencia y van a buscar la consola más potente posible y buscaran resetear la generación, Sony en cambio buscará mantener la posición en la que se encuentra y mantenerla utilizando dos puntas de lanza que son el tiempo de ventaja al lanzar PS “Neo” antes y por otra la ventaja del precio, la cual viene asociada en simplificar el transición de PS4 a PS “Neo” en lo que a costes de manufacturación asociados se refiere, algo que ya he comentado anteriormente en varias entradas y que consistiría en que tanto la PS4 estándar como PS “Neo” compartiesen una serie de componentes comunes.

La estrategia de Sony esta implicita en lo que parece que son las especificaciones de la máquina… ¿Podría llevar Zen? Es posible y esto colocaría la consola en el 2017… ¿Podría utilizar 16GB de GDDR5X? Por supuesto, pero eso tiene una serie de costes asociados. ¿Podría hacer una subida de vueltas a la GPU? Por supuesto, pero esto supondría un aumento del consumo que afectaría al diseño industrial de la consola. Se muy bien que me puedo equivocar pero para mi que Sony con PS “Neo” no va a jugar a la más potente y no va a entrar en el juego de la potencia que es con el que va a pretender entrar Microsoft quien a su mismo tiempo procurará hacer un reset generacional con tal de colocar los contadores a cero y Sony hará todo lo posible para evitarlo y poder mantener su hegemonía alargando la generación.

Anuncios