Esta es una continuación de la entrada «Next Generation Uncore«.

Como ya os comente en la entrada de hace unos días una de la particularidades de la siguiente generación es que pasaremos de tener 2 uncores (uno para acceso coherente con la CPU y otro para la GPU) a tener solamente uno, esto es debido a que a partir de Ryzen a nivel de CPU y Vega (GFX9) a nivel de GPU el uncore en el caso de los SoC pasa a ser único.

infinity fabric

La naturaleza de dicho uncore ya la hemos visto en la primera entrada, ahora bien. ¿Cual es la clave para que este pueda dar un acceso completamente coherente a la memoria? Para empezar el método de la Access Translation Cache que había en las GFX8 (uncore tipo «Carrizo») ha desaparecido por completo y a lo que se ha optado es que el uncore universal, el Data Fabric, tenga su propia cache y a nivel de acceso a memoria sea un nivel de cache adicional ya que la coherencia entre varios núcleos se consigue con un nivel adicional de cache compartida. ¿Es algo especial de AMD? No, no lo es en realidad y es una práctica muy común por ejemplo ARM utiliza uncores con cache desde hace tiempo.

ccn512-block.gif

Pero ahora diréis… ¿Como sabes que el uncore del tipo Raven Ridge tiene un nivel adicional de cache si AMD no ha dicho nada sobre ello? Bueno, el departamento de marketing de AMD no ha dicho nada pero es la solución más obvia y general para que el acceso a la RAM entre todos los elementos del sistema sea completamente coherente porque es la que normalmente se utiliza.

Existe una patente de AMD llamada «Variable Wavefront Size» cuya FIG.1 es la siguiente:

VariableWavefrontSizeAMD1.PNG

La Shared Cache 120A y 120B es cuanto menos sospechosa… ¿Como es que la GPU 130 al igual que los Processing Unit 115 pueden acceder a la misma? Mejor veamos la descripción:

Refiriéndonos ahora a la FIG. 1, se muestra un diagrama de bloques de una realización de un sistema informático 100. En una realización, el sistema informático 100 incluye el sistema en el chip (SoC) 105 acoplado a la memoria 150. El SoC 105 también puede denominarse un circuito integrado (IC). En una realización, SoC 105 incluye unidades de procesamiento 115A-N, interfaces de entrada / salida (E / S) 110, cachés compartidas 120A-B, Fabric 125, unidad de procesamiento de gráficos (GPU) 130 y controlador (es) de memoria 140. SoC 105 también puede incluir otros componentes no mostrados en la FIG. 1 para evitar oscurecer la figura. Las unidades de procesamiento 115A-N son representativas de cualquier número y tipo de unidades de procesamiento. En una realización, las unidades de procesamiento 115A-N son núcleos de unidades de procesamiento central (CPU). En otra realización, una o más de las unidades de procesamiento 115A-N son otros tipos de unidades de procesamiento (por ejemplo, circuito integrado específico de la aplicación (ASIC), matriz de puerta programable de campo (FPGA), procesador de señal digital (DSP)). Las unidades de procesamiento 115A-N están acopladas a cachés compartidas 120A-B y Fabric 125.

Recordad que al Data Fabric no solo se le acopla la CPU y la GPU sino también los otros aceleradores del sistema.  Pero la patente es interesante porque tal cual nos habla de un diagrama del estilo Raven Ridge. ¿De que va la patente? Pues va de algo que se ha visto en Vega que es el Rapid Packet Math que no es otra cosa que la capacidad de poder subdivididir las ALUs de las unidades SIMD de la Compute Unit y sus registros para aumentar la cantidad de operaciones por ciclo en operaciones de menor precisión por lo que es una patente relacionada con GFX9 y por consecuencia el diagrama se refiere a un uncore del estilo Raven Ridge.

¿Y que tiene que ver esto con la siguiente generación? Si me permitis voy a sacar la Patente Cerny que supuestamente es sobre PS5.

CernyUncore

Cada uno de los Cluster es un CCX del Ryzen y hemos de tener en cuenta que el nivel más alto de la cache de estos (L3) si que se encuentra dentro de cada CCX siendo la cache compartida a nivel de Cluster. ¿Pero que es la Higher Level Shared Cache? La patente no nos dice clarament que es, para empezar nos dice que es un nivel de cache adicional compartido entre todos los clusters de la CPU y lo llama «Cache L3», lo cual tiene sentido desde la perspectiva del AMD Jaguar utilizado en PS4 y PS4 Pro, pero no la tiene desde la perspectiva del Ryzen donde seria la «Cache L4», en todo caso desde la perspectiva de la GPU que tiene solo 2 niveles de cache seria la «Cache L3», La patente nos dice que en algunas  situaciones la GPU 130 no estaria conectada a la Higher Level Cache 204, el problema es que la definición esta pesimamente escrita pero de cara a la retrocompatibilidad con PS4 y PS4 Pro tiene cierto sentido.

Veamos… PS4 y PS4 Pro utilizan un uncore del estilo Kaveri la primera y Carrizo la segunda, en realidad utilizan el mismo tipo de uncore desde que la ATC esta desactivada en PS4 Pro, en ese tipo de uncore la GPU tiene un acceso no-coherente a la memoria y esto es debido a que esta cableada al controlador de memoria y puede mandar los datos directamente sin pasar por el UNB que en el caso que nos ocuparía (futura PS5) sería el Data Fabric general.

PS4MemoryTotals

No es una solución que se me hubiese pasado por la cabeza y realmente no había prestado atención, es decir, Sony pude re-implementar en PS5 la separación de los dos buses para la GPU y sus aceleradores (Onion y Garlic) para los modos de retrocompatibilidad, digamos que en el modo retro-compatible la GPU no accederia al Data Fabric y lo ignoraria y la organización de la memoria seria como ya he comentado mucha veces:

NonFullHSA

Mientras que en modo PS5 los juegos tendrían la siguiente organización de memoria:

FullHSA

Por otro lado los aceleradores conectados al uncore/data fabric como mínimo serían los mismos que en PS4 y PS4 Pro y/o versiones más avanzadas y retrocompatibles con los elementos originales, recordar por ejemplo que los aceleradores de video de PS4 no soportan el formato HEVC que va a ser completamente estandar. En el caso de Xbox One Scarlett os podéis hacer una idea de que aceleradores vamos a ver.

Y con esto termino la entrada, podría hacerle más larga pero creo que con este tamaño es suficiente y así no os lio con tanta información, bueno, ya sabéis, teneis los comentarios de esta misma entrada  y el Discord del blog para comentarla.