Os aviso que esta entrada es una enorme paja mental donde me voy a poner a discurrir de mala manera llegado a un punto así que…

warning-banner.png

La siguiente presentación es bastante técnica, pero me ha llamado poderosamente la atención y no recuerdo haberla comentado.

Design and Analysis of a GPU for Exascale Computing

La presentacion va acerca del diseño de una APU/SoC de AMD para ser colocada en un mainframe copaz de llegar al Exaflop. Es decir, para construir algo como esto…

CPU Unit Server Room Data Center

…que sea capaz de alcanzar los 1018 calculos por segundo en coma flotante. La presentación es interesante porque buena parte de lo que se desarrolla en este tipo de investigaciones se aplica acaba en la gama de consumo. Pero lo mejor es ir comentando las particularidades de dicha arquitectura.

ENA.PNG

Lo que llama la atención del ENA es el EHP, en principio parece un procesador pero es algo mucho más complejo.

EHP.PNG

EL EHP separa los diferentes componentes del SoC y la RAM principal en varios procesadores bajo el mismo sustrato. Lo primero que llama la atención es el hecho que tenemos una configuración de 8 chips HBM de 8 stacks cada uno, pero no en una configuracion 2.5D sino 3D con la división de la GPU en 8 partes y cada de las partes teniendo un stack de memoria HBM, de la que desconocemos el tipo.

amd-radeon-3d-hbm-vs-25d-high-bandwidth-memory

En el tema del rendimiento iremos más adelante, lo mejor es ir desgranando las diferentes partes del EHP.

El EHP también emplea ocho CPU chiplets (de ocho núcleos cada uno), pero un total de 32 núcleos, con enorme paralelismo a través de multihilo simultaneo.

Es decir, este enorme monstruo tiene en la parte central del EHP de ser fabricado hoy en día seria esto precisamente…

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

Recordar que cada uno de los chips son 2 modulos de CPU en este caso…

amd-ryzen-die-shot

Pe… pe…pero esto significa entonces que el EHP es enorme…

Con la tecnología que tenemos ahora obviamente que sería enorme pero luego veréis el motivo por el cual AMD lo ve viable. El caso es que parece que tenemos unos 8 modulos Ryzen como CPU, lo cual son 32 núcleos… Esto es un overkill para lo que sería un sistema doméstico pero no estamos hablando de un sistema doméstico.

¿Y que hay de la GPU?

El EHP utiliza ocho GPU chiples. Nuestra configuración inicial provee 32 CUs por chiplet.

Es decir, tenemos una bestia parda de unas 256 CUs en cada uno de los EHP, es decir, cuatro veces más que el AMD RX Vega que saldra este año que tiene 64 CUs. Curiosamente ambas configuraciones en cuanto a GPU tienen asignado un modulo HBM por cada 32 CUs pero… ¿Es suficiente la HBM2 actual como para alimentar una bestia de 256 CUs? Por lógica de entrada no lo es:

Para el 2022-2023, estimamos que la memoria HBM (o un equivlaente similar) habrá avanzado al manos dos generaciones. Asumiendo duplicar la capacidad por cada generación, proyectamos que para el tiempo esperado la DRAM 3D proveera unos 32GB por pila. Dado que la interfaz de la HBM2 es ya de 2Gbps, no esperamos que se doble el ancho de banda por generación; al menos asumimos que se doble una vez (a través de interfaces más anchas o mayores velocidades. El EHP hace uso de ocho stacks de DRAM 3D (uno por GPU chiplet), así que la capacidad total es de 256GB con un agregado total de 4 TB/s.

Es decir, hablamos de 5 años vista haciendo uso de una hipotética HBM4 lo que se haya desarrollado durante ese tiempo (de ahí que vean viable esta configuración). Y si, continua siendo un overkill, pero luego vamos a ir escalando. ¿Que nos queda? Ah si, la memoria externa.

El paquete EHP imaginado provee ocho interfaces a memoria externa.

Es la configuración relatada en la presentación de AMD Vega.

hbccvega

Por lo que es una confirmación de que cada uno de los GPU Chiplets son de arquitectura Vega, a medida que AMD vaya lanzando nuevas arquitecturas de GPU el concepto de la EHP ira evolucionando.

Más adelante especifican:

Dependiendo de las necesidades del cliente del superordenador, la red de memoria externa pueda consistir en una mezcla dispositivos de DRAM y memoria no volatil.

Es decir, la memoria externa puede ser memoria convencional o memoria flash según las necesidades del sistema en cada momento. Es curioso que en las diapositivas de AMD sobre el Vega se van dos canales distintos… Y que en la AMD Vega de este año hayan unas 64 CUs y unos dos canales a la memoria externa.

Ahora bien, el concepto principal es el uso del PIM (Processor in Memory), basada en la idea de colocar la GPU, CPU o SoC junto al mismo encapsulado que la RAM. Esto obviamente supone una serie de ventajas nuevas y limitaciones. La presentación que estoy comentando es una de muchas de las que AMD ha realizado sobre el tema y no es la única y no deja de ser una propuesto sobre el papel de un sistema que en estos momentos no sería viable a nivel doméstico y que esta pensado para ser lanzado en unos años, pero el concepto de una configuración 3DIC lleva tiempo siendo investigada por AMD.

Para terminar tenemos la unión de los diferentes componentes… La cual se consigue como es obvió a través del Infinite Fabric que es la interfaz que AMD utilizará para los NoC basados en varios chips en un solo MCM.

amd-infinity-fabric-data-on

Que el EHP es un NoC se puede ver tranquilamente en el diagrama del EHP.

NoC.PNG

Aunque como he dicho esto incluso para un chip de la siguiente generación sería una exageración. Lo que quiero que veáis es el concepto de separar la GPU en varias GPUs pequeñas interconectadas entre si. ¿La ventaja da de esto? El hecho de poder alcanzar mayores velocidades de reloj en teoría ya que no habría supuestamente ahogamiento termal de la CPU a la GPU y viceversa, aunque realment este no sería el caso porque aquí es donde entra el concepto PIM. ¿Que es? Pues Processor in Memory que es para explicar la configuración 3DIC en la que la memoria se encuentra encima de la GPU. Por cierto, la memoria apilada sería en este caso memoria local de la GPU… Y no sería la memoria del sistema.

AMD especula con la construcción de un sistema utilizando memoria no existente, nos comentan de entrada unos 4TB/s de ancho de banda que hoy por hoy serían imposibles. Necesitariamos ni más ni menos que una configuración con la HBM2 de 16 pilas, algo que es imposible en lo que están proponiendo en la presentacion con la tecnología que hay ahora y no hablemos ya de la memoria GDDR6… Vamos, la presentación habla de un sistema ahora mismo imposible pero no es la primera vez que AMD comenta el concepto de hacer una GPU con memoria 3DIC en un paper.

La primera vez que lo hizo fue en la siguiente presentación:

TOP-PIM

Donde es descrita una versión preliminar del procesador que estamos hablando y por tanto con menos potencia, lo primero que llama la atención es esto:

PIM16nm2

PIM16nm

Tenemos unas 12 CUs por pila utilizando el proceso de 16nm, eso si… A una baja velocidad de 650Mhz, aunque lo que llama la atencion es al ancho de banda por pila… 640GB/s… ¿Como es que es tan alta? ¿Como es que la velocidad de reloj de la GPU es tan baja? ¿Como es que solo 12 CUs pila?

Historicamente el tamaño de la DRAM, no ha superado los tamañod de los 40-80mm^2. Hemos asumido que una base lógica cercana al máximo de ese rango y una cantidad de CUs en cada configuraciñon que no superen el 50% del area lógica (incluyendo las estructuras de soporte de las CUs, caches compartidas). Estas configuraciones en los procesadores dentro de la memoria están limitadas a no superar los 10W atribuidos a las CUs, caches y al soporte de hardware. De acuerdo a nuestro modelo termal, este consumo deja suficiente espacio para otros componentes dentro de la pila mientras no se exceden los 85º C.

En cuanto al ancho de banda.

Hemos modelado las interfaces de memoria basandonos en los datos disponibles de la memoria HMC. Cada pila provee unos 160GB/s al procesador huesped.

Bueno, las cosas empiezan a cambiar porque el Host Processor en dicha presentación es el procesador central.

HostProcessor.PNGPor otro lado, la memoria en dicha configuracion parece ser la Hybrid Memory Cube… Algo que AMD en la segunda presentación del concepto descartaría por completo.

eckert

En esta segunda presentación nos presentan cada PIM bajo un tamaño de 8x8mm de area (64mm^2)

PIMSize.PNG

Ce nuevo en ella nos encontramos con el limite de los 85º por PIM y se nos comentan los limites en cuanto al consumo por PIM.

Nuestra evaluación muestra que el enfriamento pasivo es suficiente para enfriar una Pila PIM de 8.5W con procesador integrado y memoria. Este limite de consumo esta en el mismo rengo que en los procesadores portátiles de bajo consumo que hay actualmente.

La presentación nos habla de 3 configuraciones distintas según lo que haya en el chip lógico.

LogicPIM.PNG

Tanto la APU como la CPU están desfasadas por lo que nos quedamos con la GPU…

Utilizamos nodos de 25nm y 10nm para la memoria y la lógica respectivamente.

¿Cual es la configuración de la GPU?

Basamos el diseño de la GPGPU en la arquitectura GCN. La lógica del PIM contiene unas 16 Compute Units (CUs) y 2MB de cache L2 compartida tal y como se ve en la Figura 2.

Es decir, hemos pasado de las 12 CUs a 16nm a las 16 CUs a 10nm, de unos 80mm^2 de area a unos 64mm^2 de area durante la evolución. Al igual que en la primera presentación tenemos cuatro PIM de GPU+memoria en una configuración 3DIC.

HostProcessor2

Por lo que podemos asumir que la configuración con 8 GPU Chiplets del EHP es una exageración enorme pensada para los mainframe. Obviamente el hecho de tener un NoC como este tampoco sería barato a nivel doméstico. Pero es mucho más viable… Lo que llama poderosamente la atención es el hecho que la memoria utilizada de ejemplo en la presentación sea la WideIO de primera generación. La cual es una memoria 3DIC que estaba disponible en ese momento en el mercado, claro esta que se penso para sistemas de bolsillo y en su primera generación alcanzaba solamente los 12.8 GB/s y podía llegar a los 17GB/s como mucho, lo que resultaría de rendimiento respecto a los 160GB/s del HMC y por tanto un recorte enorme del rendimiento, es quizas por ello que en la tercera iteracion que es el EHP hayan ido a la memoria HBM.

Pero el problema es que la memoria HBM es muy cara incluso para el mercado doméstico, de ahí a que se estén buscando alternativas.

lowcosthbm

Un ancho de banda de 192 GB/s para unas 16 CUs es más que suficiente, pero no sabemos como afectaría esto en el consumo energético y de temperatura del PIM y por tanto a la configuración del mismo. La clave es que realmente necesitariamos unos 768 GB/s se ancho de banda en este caso… ¿La podemos conseguir externamente? Sería lo mejor porque de esta manera nos cargamos el limite de los 10W y de los 85º pudiendo alcanzar velocidades de reloj más altas pero… ¿Que tenemos a medio plazo?

57460_01_sk-hynix-teases-gddr6-gtc-2017-16gbps-bandwidth.jpg

Humm… Interesante… unos 16Gbps en el caso de la memoria GDDR6… ¿Que interfaz necesitariamos?

768*8/16= 384 bits.

Es decir una interfaz de 12 chips de memoria como la Xbox One X, por lo que en realidad sería viable hacerlo… Por lo que en nuestra configuración podríamos quitarnos de encima la memoria apilada encima del procesador, reducir enormemente los costes y… hacer que el sistema sea viable a nivel doméstico.

Aunque personalmente le daría una vuelta de tuerca adicional añadiendo una configuración con 2 CUs adicional por cada una de las cuatro GPUs, llegando al total de unas 72 CUs. El doble que PS4 Pro y unas cuatro veces más que la PS4 estándar. Obviamente la velocidad de reloj sería más alta que la de PS4 Pro e incluso que la de la Xbox One X gracias a la configuración en un NoC que elimina buena parte de los problemas del ahogamiento termico de cara a la velocidad de reloj de los componentes. Aunque no podemos olvidar que si van a los 7nm al final en vez de los 10nm (lo que tiene más números) entonces la cantidad de CUs por GPU Chiplet se puede aumentar aún más.

¿Y cual sería el ideal? Los 16.8 TFLOPS de potencia gráfica o lo que es lo mismo… 4X respecto a PS4 Pro con tal de que pueda mover lo que la PS4 Pro mueve a 1080P a 4K.

Pero conseguir eso incluso con 64 CUs es algo muy pero que muy dificil y muy lejano. En todo caso tendría sentido un salto generacional que fuese 10X respecto al anterior, en PS4 lo vimos respecto a PS3… ¿Como es que no podremos de cara a PS5 por ejemplo? Es que por si fuera poco el salto en cuanto a resolución es más alto que el que hemos visto de PS3 a PS4. ¿Vamos a tener una larga generacion debido a la imposibilidad con la tecnología actual de alcanzar una velocidad 10X respecto a PS4? Otra posibilidad es que Sony haga borrón y cuenta nueva y decida irse con Nvidia, cuyo rendimiento/FLOP es mucho más alto que el de AMD pero Nvidia no esta desarrollando el concepto de separar la GPU en diversos bloques simétricos, lo cual me parece una idea sumamente interesante en el fondo.

En todo caso, la cosa esta muy verde todavía y falta un largo tiempo para llegar a lo que es PS5… ¿2018? Pfff… Lo dudo mucho, más que nada porque el salto generacional debería ser de 10X respecto a PS4 porque aunque no lo parezca aún hay mucho margen en lo que a potencia necesaria se refiere.