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.

gs4106-the-amd-gcn-architecture-a-crash-course-by-layla-mah-34-638

 

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.  gcncache2

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.

gcncachehierarchy

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.

gcnse

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

radeon-rx480-gpuz-4gb-vs-8gb

¿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:

scorpiogpucorrectdiagram

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.