¿Por qué el ancho de banda es un cuello de botella en CPUs y GPUs?

¿Por qué el ancho de banda es un cuello de botella en CPUs y GPUs?

Josep Roca

A la hora de diseñar un procesador una de las cosas de las que no se suele hablar es del coste energético del movimiento de los datos, el cual es crucial para poder alcanzar la máxima potencia en un diseño con un consumo energético dado. En este artículo os vamos a hacer una introducción acerca de por qué este parámetro se ha vuelto el más importante de todos.

En los años siguientes vamos a ver un crecimiento de los aceleradores integrados, el motivo de ello es que son núcleos con una memoria interna propia que no solo ocupan poco espacio, sino que además consumen muy poca energía a la hora de hacer ciertas tareas en comparación con otro tipo de procesadores. Todo ello gracias a que tienen un parco m

¿Qué entendemos como movimiento de datos?

Movimiento Datos

Un movimiento de datos en un hardware informático es el traslado de información de un tipo de memoria a otro, sea cual sea la dirección en la que van dichos datos e independientemente si hablamos de DRAM, SRAM, memoria NAND Flash, registros, cache, etcetera.

Los diferentes procesadores que hay en el hardware de tu PC principalmente hacen dos cosas, por un lado se encargan de procesar los datos que reciben y por el otro mueven datos por todas las memorias del hardware. Esto se traduce en que las dos cosas que más hace un procesador es mover datos, pero es lo que más hace un hardware al completo debido a que las memorias solo se encargan de eso, mover datos desde y hacía ellos.

A la hora de diseñar una nueva arquitectura de CPU o de GPU, los ingenieros no buscan solamente la máxima potencia posible dentro de limitaciones de tamaño del chip y consumo, sino que tienen en cuenta el presupuesto energético de todas y cada una de las transacciones de datos que se van a realizar en la arquitectura. No en vano, en el caso de los SoC para smartphone se llegan a cuotas del 67% en cuanto a consumo energético solo con el movimiento de los datos de un procesador a otro.

Donde estén los datos es importante

Movimiento Datos

A la hora de diseñar un nuevo procesador, la localización de los datos es importante. ¿El motivo? Fácil, el consumo energético aumenta cuanto mayor es la distancia a la que se encuentran los datos. Por lo que lo ideal es que los datos se procesen en la memoria más cercana al procesador, algo que es imposible, ya que no se pueden colocar las grandes cantidades de memoria necesarias en un programa dentro de una CPU o una GPU. Claro esta que se van copiando fragmentos de la RAM hacía o desde las cachés, pero esto supone también movimiento de datos y de consumo.

Hasta hace relativamente poco esto no tenía importancia, si miramos la gráfica encima de estas líneas donde se compara un hipotético nodo de 45 nm con un hipotético nodo de 11 nm. Se puede ver como mientras que el consumo de realizar una instrucción con precisión de coma flotante de 64 bits disminuye, así como el acceso a sus registros. El coste energético de comunicar los datos si están más allá de los registros no lo ha hecho, por lo que al final la situación ha revertido en cuanto a diseño y no es el coste energético de realizar un cálculo lo que más importa en el futuro de los procesadores, sino el coste de mover los datos necesarios para ello.

Es precisamente el coste de traslado de los datos lo que diferencia un SoC para smartphone de uno para el PC, ya que las interfaces utilizadas en el PC para poder transmitir una mayor cantidad de datos requieren una mayor cantidad de energía. La realidad es que tanto en PC como en smartphones será necesario el uso de nuevos métodos y estructuras de comunicación para poder alcanzar mayores tasas de rendimiento en el futuro.

¿Cómo se mide el consumo de datos?

pj bit RAM

La forma de medirlo son los pJ/bit, donde se mide el consumo de un bus de datos por cada bit que transmite. Para obtener el consumo energético durante un segundo se multiplica la cantidad de pico Joules por el ancho de banda, en bits por segundo y no en bytes. El motivo de ello es que los vatios, W, son los Joules por segundo.

Las empresas de CPUs y GPUs no suelen hablar de este tipo de datos, ya que ellos venden la capacidad de procesar datos de sus diseños, pero las que se encargan de hablar de buses de datos si que los dan. Dos buses pueden dar el mismo ancho de banda, pero ser completamente dispares en lo que a consumo energético se refiere debido a tener dos valores distintos en cuanto a pJ/bit.

Es por eso por ejemplo que las memoria GDDR6 y GDDR5 pese a tener el mismo ancho de banda que las memoria basadas en HBM tiene un peor rendimiento energético. Cuanto menos pJ/bit consuma una interfaz de datos entonces mejor será esta.