El primer elemento importante que tenemos que tratar es la Cache L2, ya que es el elemento que se encuentra entre las Compute Units y el Controlador de Memoria.
Uno de los elementos que se han visto cambiados en Polaris es la cache L2, ya que la configuración es completamente distinta y este es uno de los cambios menos comentados:
- En GCN 1.0, 1.1 y 1.2 (Polaris es GCN 1.3) el limite son 16 particiones (tenemos 2 particiónes por controlador de memoria) por lo que una configuración GDDR5 solo tendría unas 8 particiones.
- El limite de memoria por partición es de 64-128KB, por lo que una configuración de 8 particiones tendria como mucho 1MB de memoria.
- Cada partición de cache L2 esta conectada a un grupo de hasta 4 CUs, esto sería una configuración máxima de 32 CUs.
Esto significa que en Polaris AMD ha realizado cambios en dicha parte de la GPU, en el white paper de la arquitectura AMD no dice lo siguiente:
Los arquitectos de Polaris también han tomado ventaja en la densidad del proceso de 14nm FinFet para duplicar la cache L2, en comparación con diseños anteriores.
Esto explicaría el motivo por el cual hemos pasado de 1MB a 2MB pero no explica el motivo por el cual PS4 Pro y la RX 480 tienen 36 CU en vez de las 32 CUs que debería tener por los motivos que he explicado antes. Hay que tener en cuenta que cada grupo de hasta 4 CUs comparten una cache L1 (lo podéis ver en el diagrama de arriba) que habitualmente se representa de la siguiente manera:
La linea vertical representa dicha Cache L1 que esta conectada directamente a la Cache L2 y la Cache L2 le transmite. Hay que tener en cuenta que hay dos cache L1, la que esta fuera del chip y la que esta dentro del chip y por tanto en realidad tenemos dos caminos de datos distintos. Pero lo que tiene que quedar claro es que cada grupo de hasta 4 Compute Units esta conectado a una partición y es ahí donde entra toda la confusión. Si solo han aumentado la densidad de la cache entonces tendríamos que tener 8 particiones de Cache L2 conectadas a grupos de hasta 4 CUs (aunque pueden ser configuraciones de 3 CUs)… ¿Estoy diciendo que AMD miente al hablar de 36 CUs? En absoluto, solo que la configuración ha cambiado por los motivos que he dicho y que hay más de lo que aparentemente parece.
El secreto esta en el Request&Data Crossbar, dado que cada CU es un procesador en si mismo y la cache L2 es global ha de haber una unidad encargada de gestionar los accesos a dicha Cache L2, este nunca aparece en los diagramas generales y se encarga de que los datos de la Cache L2 sean coherentes entre las Compute Units. Pero gracias a dicha unidad de la GPU podemos tener 8 particiones de cache L2 conectadas a la misma y unos 9 (4 CUs por grupo) o 12 (3 CUs por grupo) en el caso de PS4 Pro y de la RX 480. Pero en esta entrada lo que nos interesa es la configuración de la Xbox Scorpio y no… no he olvidado la entrada que estoy haciendo. Lo que tiene que quedar claro es que lo ideal es que el número de canales del Crossbar con los grupos de CUs no puede quedar por debajo del número de particiones de la Cache L2 por el hecho de que así cada grupo coge su propio canal y no queda en conflicto con el resto a la hora de acceder a la Cache L2.
La configuración con 10 chips GDDR5 tendría unas 10 particiones de Cache L2, esto daría para unos 2.5MB de Cache L2 y por tanto unas 10 particiones por lo que la configuración mínima serían unas 40 CUs, esto son unos 10 CUs pero el problema es que estamos ante unos 10 RBs en esta configuración y no podemos colocar 2.5 RBs por Shader Engine y estos han de ser simetricos y no podemos poner de menos por lo que la configuración tendría que ser con 12 RBs, esto rompería por completo la posible configuración con 10 Chips GDDR5 dejando como única participante la configuración GDDR5X. La cual estaría compuesta por unas 16 particiones, un total 4MB de Cache L2 y podría tener sin problemas una configuración de 64 CUs divididas en un total de hasta 16 CUs, por Shader Engine.
Las configuraciones posibles por Shader Engine y las potenciales velocidades de reloj para llegar a los 6 TFLOPS serían:
Configuración | Velocidad para 6 TFLOPS |
4-4-4-4 (64 CU) | 733 Mhz |
3-4-4-4 (60 CU) | 782 Mhz |
3-3-4-4 (56 CU) | 834 Mhz |
3-3-3-4 (52 CU) | 902 Mhz |
3-3-3-3 (48 CU) | 977 Mhz |
Dichas velocidades de reloj no son inalcanzables para la arquitectura Polaris
¿Entonces con cual configuración nos quedamos? Por temas de espacio y de coste la configuración de 48 CUs es la que tendría más números de ser la de la GPU de Xbox Scorpio, pero hemos de tener en cuenta que estamos ante un SoC, pero con los datos que tenemos podemos hacer un diagrama incompleto del SoC incluyendo la interfaz de memoria y la GPU tomando como referencia la configuración de 48 CUs:
Edición del Lunes 19 de Septiembre de 2016: El diagrama ha sido corregido.
Después de este mareante viaje lo voy a dejar por ahora, el siguiente punto será la CPU del sistema, el XB de la misma, el sistema de sonido y dare las especificaciones completas de este potencial modelo de Xbox Scorpio, pero recordad que por el momento esta serie de entradas son completamente especulatorias y presentan un escenario sobre Xbox Scorpio que bien no podría ser el definitivo.
«la configuración mínima serían unas 40 CUs»
Te recuerdo que seguramente lleve 4 cus desactivados igual que ps4 lleva 2 por si los fallos de fabricacion XD
El incremento de L2 duplicada es interesante porque permite añadir tile rendering (de modo que ocupe menos de 1 mb en cada cache) para alcanzar 4k mas facilmente
También me parece que se almacenan en la L2 de la gpu los trozos de uso inmediato de la megatextura usando partial resident textures, y el metodo que propuso sony para iluminacion global con conetracing sacrificaba la posibioidad de usar megatexturas, así que esta duplicación debería de permitir ambas cosas.
Aunque el consumo de ese tipo de tecnicas tipo svogi voxelizando depende directamente de la resolucion (lei no se donde que a full hd el svogi de epic podia consumir cerca de 1 tdlop pero luego alguien me dijo que no, que eso es una barbaridad) así que juntando todo esto se obtienen posibles ajustes ultra en full hd en ps4 pro
La megatextura se usaria igualmente y en la pro se daria opcion al conetracing simultaneo aprovechando el incremento de L2.
En cambio si se busca 4k nativos se usaria tile rendering sin megatexturas ni conetracing y bajando algunos ajustes graficos respecto a full hd
En juegos para pro tipo call of duty buscando 60 fps inamovibles usar tile rendering ahorraria recursos para alcanzar 1440p en la pro con menos esfuerzo (y reescalar a 4k) pero racanearian con ajustes como siempre.
Me gustaMe gusta
Bueno, si lees bien la entrada verás que el modelo con 40 CUs lo descarto al final… No deja de ser una divagación a partir de unas premisas y la conclusión es el diagrama del final.
Me gustaMe gusta
O sea que dices que tiene 48 CUs y 12 desactivados? O como va esto. Tiene 36.
Me gustaMe gusta
48 CUs a 977 Mhz
Me gustaMe gusta
Obviamente me refiero a Xbox Scorpio.
Me gustaMe gusta
Muchas gracias Urian
Me gustaMe gusta