Tomemos para empezar una presentación titulada  NoC Architectures for Silicon Interposer Systems,

En ella lo que nos muestran de entrada es lo siguiente:

NoC1

Lo que a primera vista puede recordar a cualquier chip con 4 memorias HBM y un sustrato/interposer, al estilo AMD Fiji…

AMD-Fiji-GPU-High-Resolution-Shot

Pero la presentación no va sobre ello sino sobre la tipología del sustrato/interposer, que es la pieza encargada de cablear y comunicar los diferentes elementos entre si, ya sea para los diferentes elementos dentro del chip como con la memoria externa al chip.

NoC2.PNG

El concepto es trasladar el cableado de los procesadores lógicos y la memoria, el que comunica los diferentes elementos entre si en un procesador o en un SoC al interposer sobre el sustrato con tal de conseguir saltarse ciertas limitaciones que sinceramente si las explicará en esta entrada muchos estaríais completamente…

mareado.jpg

Por el momento quedaos con la siguiente propuesta que se puede ver en la presentación.

NoC3.PNG

Dejemos por el momento la memoria y quedemonos solamente con esto:

NoC4

Nos hablan de unos 64 núcleos en total, no abemos cual es la naturaleza de esos núcleos por el momento. Se encuentran en el interposer principal que es donde se encuentra en el interposer activo y ocupan un espacio de unos 16.5mm x 18mm (297mm^2), lo que hace el chip ideal para una consola de videojuegos si tuviesemos un SoC encima del interporposer activo.

¿El siguiente paso en nuestro camino? Una patente de AMD cuya ilustración principal es la siguiente:

AMDNoC1

Se nos describe un sustrato/interposer que esta dividido en 16 «slots» a los que la patente llama «Site». ¿Que relacion tiene con la presentación de antes? Para entenderlo tenemos que conocer el concepto general de «Network on a Chip»/NoC y como funciona.

Network on chip o network on a chip (NoC o NOC) es un subsistema de comunicación en un circuito integrado tipicamente entre núcleos de propiedad intelectual (IP) en un SpC. Los NoC puede generar señales a velocidades de reloj sincronas y asincronas o utilizar lógica asincrona. Utiliza la teoría de redes y la metodología para la comunicación y trae importantes beneficios sobre los buses convencionales y las intercomunicaciones crossbar. Los NoC aumentan la escalabiliddad de los SoC y la eficiencia energética de los SoC complejos en comparacion con otros diseños.

Cuando tenemos dos elementos en un SoC no basta conectarlos, muchas veces hace falta un Crossbar Swich para comunicar los diferentes elementos entre si.

4_8

Todo sistema informático tiene uno o varios crossbar switch para las comunicaciones entre diferentes procesadores, en el caso de los SoC la parte de no-procesamiento pero si de control del tráfico de los datos y que se encuentra fuera del control de los programadores cuando realizan un programa se le llama hoy en día cololoquiamente como “uncore” que se podría traducir como “no-núcleo” para diferenciarla de partes como la CPU, GPU, DSP

¿Que ocurre cuando dos procesadores quieren acceder a un mismo destino? ¿Como lo hacemos para saber cual tiene preferencia y cual no? Pues de estas tareas se encarga el Crossbar Switch, el cual tiene un microcontrolador no programable por el desarrollador de aplicaciones encargado de monitorizar y vigilar todas las comunicaciones. Pensad en dicho microcontrolador pieza como un centro de control de tráfico ferroviario. ¿Pero cual es la limitación? A medida que el chip es más complejo más aumenta el cableado del mismo para comunicar los diferentes elementos entre si, dicho cableado ocupa espacio en el chip y es el culpable de que la implementación en forma de SoC de dos tecnologías tarde un tiempo en poder diseñarse.

¿Y a que viene esta explicación? Pues en el hecho que cada Site 102 de la patente contiene el sistema de comunicación de un NoC, es decir, se comunica con el resto de Sites 102 teniendo un «router» cada uno de ellos y la tipología es la de un NoC en mallá.

NoCMesh.PNG

La imagen de arriba no es de la patente, pero es para que os hagáis una idea de cual es la topología de comunicación.

SITE

Esto si que es un Site, por lo que tenemos definido de forma simple como es la organización del interposer. ¿Pero que puede ir arriba? Es en el siguiente punto donde las cosas se ponen interesantes.

AMDNoC2Veamos cual es la descripción de los Chiplets según la patente.

Chiplet1Chiplet2

Como se describe arriba, las encarnaciones descritas incluyen un interpsoer sobre el cual los chiplets pueden ser montados. Generalmente, los chiplets incluyen cualquier tipo de chip, dispositivo empaquetado, módulo, etc, que se puede montar en el interposer tal y como se describe. En algunas encarnaciones, los chiplets están configurados con circuitos integrdos y/o otros elementos de circuito. Por ejemplo, en algunas encarnaciones los chiples pueden incluir lógica computacional como unidades centrales de proceso (CPUs) y unidades de procesamiento gráfico (GPUs) , circuitos integrados de aplicación específica (ASICs), caches y controladores de caches, logica programable como FPGAs, módulos de memoria volatil y no/volatil, módulos scratchpad (almacenamiento direccionable temporal de baja latencia), circuitos de procesamiento de red…

Es decir, que un Chiplet puede ser cualquier circuito integrado y puede ocupar uno o varios Site. El concepto es poder crear un «SoC» a medida uniendo diversos Chiplets en cualquier configuración encima del interposer con tal de crear el NoC. ¿Como es que esto es importante? Tomemos por ejemplo el AMD Ryzen.

dieshot_small

El núcleo principales el llamado CCX…

CCX14

Pero nos encontramos con el hecho que tenemos una parte marcada en azul en la ilustración del chip completo que es el cableado para comunicar las diversas partes, en el NoC de AMD dicho cableado iría por el interposer. ¿La otra ventaja? El Platform IO que es la E/S… ¿Que ocurre si colocamos varios Ryzen? Pues que acabamos repitiendo varias veces lógica redundante.

AMD-EPYC-Four-Die-with-Infinity-Fabric

Así que reduciendo enormemente el cableado entre los CCX por un lado y la lógica repetida podemos re-hacer el Ryzen en un NoC por ejemplo. Pero no es el único caso, otro ejemplo son las GPUs… Las cuales suelen tener también internamente un Crossbar Switch.

AMD-RX-460-Polaris-11-Pro-GPU

En este diagrama se puede ver algo llamado Multimedia Accelerators, no forman parte del núcleo 3D sino que están comunicados en un Crossbar Switch. En un NoC se podrían separar en forma de un chiplet independiente y colocarse aparte tranquilamente. La idea es descomponer los SoC en pequeños chiplets con tal de crear un NoC

Infinity Fabric

El siguiente punto es el protocolo de intercomunicación entre los diferentes Chiplets, para ello voy a tomar dos fuentes distintas, la primera es una noticia que la podéis encontrar aquí.

Hace unos cuatro años AMD decidió crear un superset del Hypertransport para reemplazar las interconexones dentro de un chip que utilizaba para sus CPUs y GPUs. El resultado es Infinity Fabric que debuta en Summit Ridge antes de Abril y las GPUs AMD Vega antes de Julio.

La compañía ha decidido declinar dar datos de latencia para Infinity, el cual viene solo en la versión coherente. Sin embargo, se dice que es modular y escala de las versiones de los 30-50 GB/s de los portátiles a los 512GB/s y más allá para Vega.

Infinity es agnóstico en cuanto a las topologías y será implementado como una malla en Vega… puede proveer el ancho de banda de cualquier DRAM conectada.

«Esto es algo que no se podía hacer en el pasado» dice Steinman.

Durante los últimos cuatro años, AMD ha conseguido actualizar su libreria de propiedad intelectual con controladores satélite y actualizar su código BIOS para Infinity.

«Teníamos múltiples protocolos en el chip intentando hacer lo mismo por lo que esto nos daba algunas ineficiencias» dice Steinman. Añadio que crear una nueva interconexión «fue una enorme inversión, pero ahora vemos la posibilidad de hacer variaciones y arquitecturas que no podríamos hacer y que ahora estamos adoptando».

En el pasado, un cambio en la red dentro del chip en el ciclo de diseño de un SoC tardaría unos seis meses. «pero ahora lo podemos hacer en pocas horas» dice. Además, AMD es capaz de ofrecer más variaciones de interconexión a sus clientes, como los fabricantes de consolas.

Es decir, el tiempo de desarrollo de un NoC es mucho más bajo que el de un SoC, acelerarando el tiempo de implementación en el mercado. El segundo documento que quiero que leais es este. Bueno, se que esta en Japonés, pero os hago un resumen.

  • Ryzen, las GPUs de Vega en adelante y las APU/SoC utilizan esta tecnología para comunicarse.
  • El rendimiento del IF escala de manera lineal hasta 64 núcleos (¿os suena? Si, los 64 núcleos que hemos visto en la primera presentación).
  • La configuración del IF para portátiles y PC es distinta.
  • Gracias a ello pueden olvidarse de la carga de tener un bus de memoria dedicado para la CPU y otro para la GPU.

El último punto es importante, AMD con el SoC Carrizo elimino ya el uso de dos buses a través del bus Onion3, haciendo que todo el acceso a la memoria fuese coherente.

onion3

¿Verdad que en la fuente de más arriba he marcado cierto texto en verde? Es porque tiene relación con esto, el Infinity Fabric es una evolución del Onion3. En un artículo de Semiaccurate definieron el Onion3 claramente como la unión de los dos buses, haciendo que todo el espacio de memoria del sistema sea coherente.

Puede que te acuerdes de los días en los que había dos buses, Onion y Garlic. Con la integración más avanzada las funciones en Carrizo no necesitan de dos buses nunca más, Onion3 combina las uniones de ambos en un diseño más simple.

Este cambio aunque parece banal es importante porque su integración será lo que rompera la compatibilidad hacía atrás, hasta ahora tanto en la familia PS4 como en la familia Xbox One la memoria se ha dividido en dos espacio distintos, una parte coherente a la que se accede a través del uncore/crossbar coherente y una parte no-coherente a la que se accede a través del uncore/crossbar no-coherente y que solía ser privada de la GPU.

Es decir, pasar de esto…

NonFullHSA

… a esto:

FullHSA

¿Pero cual es el ancho de banda del Infinity Fabric y cuales son sus limitaciones? Para empezar solo sirve para comunicar núcleos dentro del mismo sustrato/interposer.

900px-amd_infinity_fabric_dual-socket.svg.png

975px-amd_infinity_fabric_dual-socket(4_dies).svg

  • Se asume en los ratios que se utiliza RAM DDR4-2667.

Fijaos como el ratio de comunicación del GMI es muy pero que muy cercano a los 40GB/s del Onion3. Fijaos como pueden haber hasta 4 nodos… ¿Recordais los 4 slots de Data de los Site 102 de la patente del principio ? Poco a poco las piezas van cuadrando. ¿Que mejor si leemos una explicación más clara? El chip con 4 dies correspondería el AMD Epyc/Threadripper que tenemos actualmente pero me sirve para ilustraros por el momento como sería la comunicación. Los anchos de banda corresponden a la memoria DDR4-2667 con un bus de 64 bits por cada GMI como podéis observar. El ancho de banda del GMI esta directamente relacionado con el ancho de banda de la memoria RAM del sistema en este caso, esto es entendible desde el momento en que el controlador de memoria y el GMI deberían estar en el mismo lugar del chip, en el Northbridge, solo que esta vez no tendríamos un Crossbar Switch para la comunicación.

Un concepto que lleva tiempo dando vueltas

AMD lleva años hablando del concepto del NoC y de los GMIs, pero en especial de esto último.

amd-greenland-gpu-based-hpc-apu

En el diagrama podmeos ver como el ancho de banda de la memoria (DDR4 3200) es el mismo que el de los 4 enlaces GMI que comunican un núcleo llamado Zeppelin con una GPU llamamada AMD Greenland en un MCM, por lo que podemos suponer que son pizas separadadas en un sustrato/interposer. En principio no sabemos la configuración pero… es lo mismo que esto otro (en principio).

Greenland

Zeppelin por tanto serían 16 núcleos Zen/4 modulos CCX en teoría. ¿La GPU? Es un AMD Vega… Lo sabemos por dos motivos, el primero…

AMD-Vega-GPU_2

… son los dos chips HBM2 asociados al Vega 10. ¿El segundo? La configuracion del Greenland que es la misma que la de Vega.

greenlandcus

¿El tercero? Que es llamado IP gráfica de novena generación, lo mismo que Vega, por lo que definitivamente es Vega.

vega10specs

¿Pero que es lo que ocurre? AMD habría tirado por la borda este diseño para crear el diseño NoC basado en múltiples chiplets combinados entre si para la siguiente generación de consolas.

Desarrollo de cara MUY al futuro, el EHP

El EHP es un procesador teórico, basado en el mismo concepto pero con ciertas diferencias puntuales que esta descrito en la presentación titulada  Design and Analysis of an APU for Exascale Computing

No presenta un sistema para ser lanzado a corto plazo, esto lo sabemos porque la presentacion define la configuración para el 2022-2023. ¿Y como es que es interesante? Pues por el hecho que aquí vemos de nuevo el concepto de Chiplet que hemos visto en la patente del principio.

EHP

La diferencia respecto al modelo de antes que es la memoria HBM esta en una configuración 3DIC (montados encima de la GPU) y esto es algo que por motivos de coste no es viable por el momento en un sistema doméstico, no tan siquiera a corto plazo. Se trata de un procesador de gama muy alta que va a tener que ir en los racks de mainframes y no es para el mercado doméstico.

CPU Unit Server Room Data Center

Pero el concepto de dividir la GPU en diversos Chiplets es algo que creo que vamos a acabar viendo. No solo a nivel de SoC sino también de las propias GPUs de PC, por ejemplo veremos que las diferentes familias escalaran según el número de chiplets que tengan, (1, 2, 3, 4…) En realidad esto ya lo estamos viendo en las GPUs actuales donde en el caso de AMD el escalado es según el número de Shader Engines que haya en el sistema y en el caso de Nvidia en la cantidad de GPCs.

¿Que es lo que ocurre actualmente? Pues que tanto la Cache L2 de la GPU como el planificador se encuentran fuera de los Shader Engines. ¿Como hacemos entonces? Lo que se me ocurre basicamente es convertir el planificador de la GPU en otro Chiplet independiente de tal manera que la configuración quedaría de la siguiene manera.

GPUChiplets.2png.png

Enlazando con la primera parte (Tile Rendering).

En la primera parte os comente la aparicion posible de los Blend Shaders y la evolución de las GPUs a Tile Renderers. 

Una cosa particular que tienen los Tile Renderers es que dividen las GPUs por núcleos completos donde el único punto en común es un Crossbar común para la intercomunicación de estos y el numero de núcleos va escalando según la necesidad en computación gráfica que tenga el sistema. Os voy a poner dos versiones de una misma arquitectura con un Tile Renderer, el Apple A9 y el Apple A9X donde se puede ver…

La parte común es al cableado que los comunica entre si y el planificador. ¿Cual es la ventaja de tener varios «núcleos»? Pues en un Tile Renderer donde hemos dividido la pantalla por Tiles…

tilebuffer

… podemos asignar a cada núcleo de la GPU un Tile a procesar para maximizar el paralelismo entre ellos y terminar el renderizado del fotograma mucho antes. En nuestro caso cada Tile estaría procesado por un GPU Chiplet por lo que dividieriamos la pantalla en varias partes y la posibilidad de partir el renderizado de un fotograma entre varias GPUs es algo que se encuentra en el DX12 con el Split Frame Rendering.

Direct-x-12-split-frame-rendering

LA configuración de nuestro querido NoC tendría unos 4 GPU Chiplets en total para renderizar la escena. Desconozco cual sería la configuración de estos en lo que al número de CUs se refiere. Pero lo que es importante aquí es el tema de la Cache L2, obviamente cada uno de los Chiplets tendría una Cache L2 asociada desde la que procesaría el Tile, pero este es un tema más avanzado que dejare para la tercera entrega porque creo que por el momento para explicar el concepto del NoC, los Chiplets y la relación con la primera entrada es suficiente por el momento.