Desgraciadamente estoy aquí para que enfrieis vuestras pretensiones para la siguiente generación por lo que esto os dejara helados.

Para teorizar sobre las especificaciones hemos de tomar un punto de partida que nos sirva para conocer que nos podemos esperar, ese punto de partida ha de ser conciso y claro para poder llegar a una conclusión final.

¿Es esta entrada información concisa y revelada secretamente por alguna fuente?

Basicamente lo que he decidido es plantearme… ¿Como podría ser una consola diseñada por AMD para Sony y/o Microsoft tomando como referencia lo que a nivel de usuario conocemos? Para llegar a las especificaciones de la potencial consola he realizado un proceso de deducción con una conclusión que bien puede estar muy cercana o muy alejada de la realidad.

¿Pero va a ser un salto espectacular la siguiente generación? Esto ya lo comento en su día, y perdón de nuevo por autocitarme, un trabajador de Guerrilla Games en reddit, cada salto generacional ha sido menor que el anterior.

La parte más interesante del texto es la siguiente:

La diferencia entre PS1 y PS2 fue enorme, la diferencia entre PS2 y PS3 fue más pequeña. La diferencia entre PS3 y PS4 es claramente notable, pero no tan grande como lo fue en otras generaciones previas. Las futuras generaciones sin dudas supondrán pequeños saltos en fidelidad gráfica.

Lo que hace una GPU es dibujar pixeles en pantalla y la cantidad de pixeles que puede dibujar a no ser que tenga un cuello de botella en alguna parte del pipeline gráfico va a estar siempre condicionado por el ancho de banda que tenga disponible la GPU y hemos de tener en cuenta que la siguiente generación no va a diferir mucho de la actual y se podría considerar una evolución más bien leve tecnicamente hablando Quien se espere 4K60 ya se puede ir olvidando porque el salto de los 1080P a los 4K como he comentado muchas veces de unas 4 veces más resolución, eso son 4 veces más shaders que calcular, 4 veces más pixeles que texturizar y 4 veces más el ancho de banda en consecuencia que los sistemas de la actual generación y si… Se dice mucho eso del…

Pero como he dicho el cuello de botella esta en la memoria y no me estoy olvidando de la memoria GDDR6 con ello. Es más, aprovechare para repasar algunos de los cambios que vamos a ver en la siguiente generación. El primer punto que tenemos que tener en cuenta de cara a la siguiente generación es que el HDR va a a ser estandar, 16 bits de color por canal RGBA y por tanto 8 bytes por pixel. Y si, se que el formato no es de 16 bits por componente pero en 16 bits puedes incluir cualquier formato y no tienen que hacer cambios sobre el hardware existente.

En realidad los ROPS de la arquitectura GCN están desde hace tiempo preparados para recibir y transmitir pixeles de 8 bytes de informacion en un solo ciclo, cada Compute Unit transmite un pixel por ciclo a través del Export Bus hacía la unidad RBE (4 ROPS por unidad RBE) por lo que queda unidad RBE puede recibir unos 4 pixeles al mismo tiempo y por tanto 32 bytes por pixel.

Pero esos 4 pixeles no solo pueden ser transmitidos a lo RBE sino también a la cache L2 en el cao de que no estemos utilizando el pipeline gráfico o queramos enviar los pixeles al pipeline de computación. El siguiente diagrama me servirá para ilustrar lo que viene después en el camino.

Tenemos asignados 2 RBE (32 bytes cada uno) y 2 particiones de cache L2 (32 bytes cada una) que pueden comunicarse con el controlador de memoria. En el diagrama no lo pone pero el Controlador de Memoria solo puede recibir unos 64 bytes de memoria… Esto significa que las combinaciones posibles son:

RBE 0RBE 1L2 0L2 1
RBE 0NO SI SI SI
RBE 1SINO SI SI
L2 0 SI SI NO SI
L2 1 SI SI SI NO

Luego el controlador de memoria esta conectado a dos interfaces GDDR5, cada interfaz es de 32 bits y son interfaces que se encuentran en el perimetro del chip que es por donde se comunican con la memoria GDDR5 que esta en el exterior, los 64 bytes que nos han llegado en lo dos canales de 32 bytes se vuelven a dividr de nuevo, uno ir a cada interfaz de memoria GDDR5 pero nos encontramos con un problema de entrada y es que estamos intentando transmitir unos 32 bytes (256 bits) a través de un bus de 32 bits. ¿Que hacemos? Pues muy simple, convertimos un envio de 256 bits en 8 pulsos de 32 bits donde se envian 2 por ciclo de reloj por lo que necesitamos que la memoria funcione a 4 veces la velocidad de reloj del controlador de memoria. Lo ideal sería que la velocidad del controlador de memoria y la velocidad de la GPU coincidiesen pero no es así la mayoría de las veces.

Esto se traduce que en vez de tener dos chips GDDR5 por controlador de memoria pasaremos a tener un solo chip GDDR6 por el motivo que ahora necesitamos dos canales para alimentar un chip.

Y como ahora el bus de cada canal es de 16 bits entonces no necesitamos 8 sino 16 pulsos que se dividiran en 2 pulsos por ciclo de reloj y por tanto la velocidad de la memoria deberá ser unas 8 veces más rápida. Esto se traduce en que adaptar una arquitectura GDDR5 con un ancho de banda igual a GDDR6 reduce la cantidad de chips de memoria a la mitad. Así pues podemos obtener el mismo rendimiento con ancho de banda de una configuración GDDR5 de 256 bits con una GDDR6 de 128 bits pero a cambio la gran ventaja de la GDDR6 es que permite «duplicar» el ancho de banda pero a cambio una configuración de 256 bits necesitaria unos 64 ROPS.

¿Y que memorias GDDR6 se pueden montar? Pues van a ir desde los 12 Gbps (1.5 Ghz) hasta los 20 Gbps (2.5 Ghz) y cualquier velocidad en dicho rango es posible, por lo que me he permitido el lujo de hacer una tabla haciendo incremento de 50Mhz.

GhzGbpsBusGB/s
1,512256384
1,5512,4256396,8
1,612,8256409,6
1,6513,2256422,4
1,713,6256435,2
1,7514256448
1,814,4256460,8
1,8514,8256473,6
1,915,2256486,4
1,9515,6256499,2
216256512
2,0516,4256524,8
2,116,8256537,6
2,1517,2256550,4
2,217,6256563,2
2,2518256576
2,318,4256588,8
2,3518,8256601,6
2,419,2256614,4
2,4519,6256627,2
2,520256640

Como soy un poco quisquilloso con ciertas cosas he decidido eliminar por completo de la tabla lo tenga algún decimal perdido. Esto es más bien por estética, no por otra cosa, no hay ninguna razón técnica para hacerlo.

GhzGbpsBusTotal GB/s
1,512256384
1,7514256448
216256512
2,2518256576
2,520256640

Bueno, en realidad sin querer he parado en las velocidades oficlales de la GDDR6…

El siguiente punto que hemos de tener en cuenta es el ancho de banda de la CPU, estoy seguro que la CPU será un pequeño chip aparte que se comunicara con el chip principal a través de un bus Infinity Fabric, el cual funcionara a la velocidad de reloj del controlador de memoria*256 bits.

Por lo que la CPU tomara una parte del ancho de banda de la RAM para si misma dejando a la GPU y a los aceleradores del sistema con el resto, por lo que nuestra tabla se complica un poco más…

GhzGbpsBusGB/sGB/s CPUGB/s GPU
1,51225638448336
1,751425644856392
21625651264512
2,251825657672504
2,52025664080560

Ahora bien, la GPU puede utilizar todo el ancho de banda de la memoria si esta disponible y tiene preferencia por lo que el ancho de banda va fluctuando y con ello la tasa de relleno máxima. La pregunta es… ¿Que columna para la tasa de relleno tomamo como referencia para la GPU? Personalmente apuesto por la más baja.

GhzGbpsTotal GB/sFillrateGB/s CPUGB/s GPUFillrate
1,512384484833642
1,7514448565639249
216512646451264
2,2518576727250463
2,520640808056070

Y de ahí obtenemos las posibles velocidades de reloj de la GPU…

GhzGbpsTotal GB/sGB/s CPUGB/s GPUFillrateGhz GPU
1,51238448336420,66
1,751444856392490,77
21651264512641,00
2,251857672504630,98
2,52064080560701,09

Las velocidades de reloj son demasiado bajas, por lo que toca hacer algunos ajustes en el controlador de memoria para que este tenga un tercer canal y podamos asignar 2 controladores de memoria a 3 chips GDDR6 y tener un bus de 384 bits.

En este caso la tabla pasa a tener más sentido.

GhzGbpsTotal GB/sGB/s CPUGB/s GPUFillrateGhz GPU
1,51257648528661,03
1,751467256616771,20
21676864704881,38
2,251886472792991,55
2,520960808801101,72

Teniendo en cuenta las velocidades de reloj en las que se mueve la actual Vega a 7nm que va a ser lanzada en el mercado en las proximas semanas para PC me parece que el rango de la GPU va a ser similar.

El caso es que estamos hablando de como sería una consola por lo que considero importante recortar por lo dos extremos y de ahí sacar una tabla derivada.

Ghz GPUCUsOps/CUTFLOPS
1,2401286,14
1,38401287,07
1,55401287,94
1,2441286,76
1,38441287,77
1,55441288,73
1,2481287,37
1,38481288,48
1,55481289,52
1,2521287,99
1,38521289,19
1,555212810,32
1,2561288,60
1,38561289,89
1,555612811,11
1,2601289,22
1,386012810,60
1,556012811,90
1,2641289,83
1,386412811,30
1,556412812,70

Es una tabla muy grande, pero hemos de tener en cuenta que Mark Cerny subjetivamente opino que 8 TFLOPS son el minimo necesario para 4K, pero yo personalmente opino que la siguiente generación ha de ser 10 TFLOPS+ de la misma manera que la actual es 1 TFLOPS+ y la anterior fue 0.1 TFLOPS+.

Ghz GPUCUsOps/CUTFLOPS
1,555212810,32
1,555612811,11
1,386012810,60
1,556012811,90
1,386412811,30
1,556412812,70

Y de esto podemos sacar una posible configuración final que para mi es la más equilibrada de todas.

GbpsGB/sGB/s CPUGB/s GPUFillrateGhz CUFP32
1676864704881,386010,60

Estas son las especificaciones que considero más realistas a día de hoy para una consola de siguiente generación con la tecnologia que tenemos actualmente en el mercado. Obviamente dicha tecnologia no es la aún no presentada AMD Navi, la cual va a ser una continuación de Vega, no sabemos si la next gen es con Navi o no por lo que nos quedamos con una Vega 7nm Custom donde la memoria HBM2 ha sido reemplazada por memoria GDDR6 en un bus de 384 bits, lo cual es un cambio lo suficientemente importante como para considerarlo una versión a medida.

Por otro lado, no vamos a ver un SoC sino un MCM compuesto por dos chips, en el chip más pequeño vamos a tener la CPU que va a ser un chiplet Ryzen de tercera generación como el visto en los Ryzen 3000 y el AMD Rome.

Este chiplet via Infinity Fabric se comunicara con el chip más grande donde se encontrara la GPU y el uncore del sistema y como ya he dicho en muchas entradas anteriores ahora el uncore va a ser uno al existir un esquema de memoria completamente coherente y unificado que ya hemos visto en el Summit Ridge y el Raven Ridge con el uncore universal que ha creado AMD.

En los Ryzen de tercera generación esta parte que se encarga de comunicarlo todo se encuentra en el IO Die, en el caso del AMD Vega de 7nm dicho uncore ya se encuenta en la GPU para comunicar los diferentes elementos de la GPU pero no colocaríamos solo los clásicos aceleradores de la GPU sino también los de E/S al color el puerto para el IO Hub, el cual sería modificado para conectar el Southbrige que iria en un chip aparte e incluso fuera del propio MCM principal. El Southbridge iría conectado a través de uno de los canales externos para el Infinity Fabric y sería una versión mejorada y más avanzada de lo que tenemos actualmente en ellas.

En el Southbridge tendriamos conectados no solo lo periféricos de Entrada y Salida convencionales sino también la cámara para el tracking del VR, la unidad FPGA de la que os he hablado… Pero la comunicación no será con la memoria principal del sistema aunque si con el Data Fabric/Uncore del sistema para ponerse en comunicación con los aceleradores dentro del chip de la GPU. Por otro lado, tendriamos la unidad FPGA, esta se encontraria también en un chip aparte y tendría dos canales de comunicación…

  • Un canal privado a través del Southbridge y sin pasar por el Data Fabric en el que la cámara pueda enviar las imagenes al FPGA para que las procese y las envie ya procesadas al MCM principal.
  • Un canal entre la salida de video del MCM principal y la salida HDMI de la consola donde la unidad FPGA puede realizar las operaciones de reescalado de imagen pertinentes de las que os he hablado en alguna que otra entrada.

La salida de video va a tener tres salidas de video distintas pero tendremos solo dos puertos HDMI… Uno va a ser para el televisor y el otro va a ser para las gafas VR, esto ya lo hemos visto en la Subor Z+… Donde se pueden ver dos salidas HDMI.

La tercera salida de video iría a un chip WiGig (802.11ad) para retrasmitir la imagen por streaming a unidades HMD (VR), smartphones y tablets en una especie de off-tv como el que tuvo Wii U.

Explicado más o menos como es el uncore nos queda solo la CPU y la memoria, la configuración de memoria creo que van a ser 12 chips de memoria GDDR6 de 2GB de densidad cada uno, un total de 24GB.

La CPU por otro lado por tema de costes tendrá una pequeña modificación, su cache L3 pasará de ser de 32MB (2MB por núcleo) a 16MB para sacar más chips por oblea pero sus capacidades internas y de calculo no se tocarán.

Y con esto termino, si queréis comentar algo como siempre tenéis el Discord y los comentarios de la entrada.