La comunicación interna en CPUs, GPUs y SoCs, ¿un cuello de botella?

Continuamente vemos noticias de que la cantidad de elementos de un procesador, ya sea una CPU, una GPU o un sistema heterogéneo como un SoC han aumentado la cantidad de núcleos, y nos creemos que esto es un hecho. Pero la comunicación interna de los diferentes elementos de un procesador se ve limitado por un elemento que hasta hace poco no se ha tenido en cuenta del todo, el consumo energético.

Hay un coste que normalmente se obvia, el motivo es porque este coste no tiene en apariencia una relación directa con la cantidad de cálculos que puede realizar un procesador o la cantidad de elementos que hay en este, pero en los últimos años se ha convertido en el problema número 1 de los arquitectos de hardware y el que menos se habla en los medios especializados sobre informática, especialmente por el hecho que es el elefante en la habitación, estamos hablando del coste energético de la transferencia de datos dentro de un procesador.

Comunicación interna y transferencia de datos

Cables Transmisión

La forma más simple de transmitir datos en un sistema electrónico a otro es a través de un transmisor y un receptor que se van transmitiendo pulsos de señal de manera continua, siendo la señal de reloj la que controla el compás de cada bit transmitido hacía al receptor como si fuese un metrónomo. Siendo el cableado las vías por las que viajan estas señales.

Si queremos transmitir datos en ambas direcciones solo tenemos que colocar un emisor y un receptor en cada una de las direcciones, y en el caso de que queramos transmitir varios bits en paralelo solo necesitaremos poner una gran cantidad de transmisores y receptores.

¿Parece sencillo no? Pero nos falta una cosa y es el coste de transmitir la información de una parte a otra del chip. Es como si nos hablaran de que una flota de camiones puede transportar kilos de mercancías pero de repente alguien se hubiese olvidado del coste del combustible todo este tiempo por el hecho que hubiese sido totalmente marginal  hasta un determinado momento.

Un poco de historia: El fin de la Escala de Dennard

Power-Limit

El final de la Escala de Dennard que se produjo a mitad de la década de los 2000, concretamente al llegar a los 65 nm, pero tiene aún hoy en día una consecuencia bastante importante, su enunciado como ley se puede resumir de la siguiente manera:

Si escalamos las características de una litografía a otra, nodo de fabricación, de la misma manera que el voltaje entonces lo que es el consumo energético por área debería mantenerse el mismo.

¿Cómo se llego al fin de la escala de Dennard? Simplemente los diseñadores de los diferentes microprocesadores hicieron escalar sus diseños mucho más arriba en lo que a la velocidad de reloj de lo que debían y se dieron contra un muro, lo que los forzó a invertir la tendencia a partir de 2005, el concepto potencia por vatio empezó a salir por todos lados en las diapositivas de marketing como una nueva tendencia de rendimiento.

Escala Dennard

Desde ese punto la obsesión de los ingenieros se invirtió, pasaron de despreocuparse por completo del consumo energético consumido a querer aumentar la cantidad de operaciones por vatio que podía hacer un procesador, pero en medio de dicho marketing no se tuvo en cuenta el coste energético de la comunicación de los datos, por el hecho que durante un largo tiempo el coste energético ha sido casi despreciable, pero desde hace un tiempo ya no lo es.

El cuello de botella de la comunicación interna

DMA caminos

Para entender el problema de las comunicaciones, hemos de tener en cuenta que a la hora de aumentar la cantidad de elementos en un procesador estamos también aumentando la cantidad de canales de comunicación necesarios para comunicarse, los cuales son siempre de 2n donde n es la cantidad de participantes en la comunicación.

Esto provoca que el añadir una mayor cantidad de elementos en un procesador también aumenta los canales de comunicación y fuerza con tal de mantener el consumo energético estable a mantener una velocidad de reloj más baja, la contrapartida es que a medida que vamos aumentando la cantidad de núcleos entonces vemos como el consumo energético no se mantiene estanco sino que va creciendo con el tiempo.

Las interconexiones encargadas de ir comunicando los diferentes núcleos van aumentando con el tiempo a medida que tenemos configuraciones más complejas y la cantidad de información que transmiten y la energía que consumen para ello va aumentando más y más, ocupando cada vez más del presupuesto energético de los diferentes procesadores, ya sean CPUs o GPUs, lo que conlleva un reto, especialmente en las GPUs, basadas en tener decenas e incluso centenares de núcleos

¿Entonces cuál es el problema de la comunicación interna en los procesadores?

Render-Procesador

El problema al que los ingenieros se enfrentan ahora es el hecho que a la hora de realizar una simple suma, el coste de sumar los operandos es un coste ínfimo en comparación de trasladar ambos operandos, por lo que el problema ya no esta en hacer que una simple ALU ejecutando un dato en sus registros pueda alcanzar una tasa de rendimiento determinada, sino que se pueda alcanzar esa tasa de velocidad haciendo uso de unos datos más alejados y por tanto van a acabar consumiendo más.

Esto provoca que diseños que aparentemente serían posibles sobre el papel y lo que a la capacidad de computación se refiere se tengan que descartar una vez se estudia la logística de los datos y la energía consumida por esta.

¿Cada cuánto escala la energía consumida?

Comunicación Interna Coste Energético

De cara al consumo energético de la comunicación interna, aquí tenemos que separar el coste energético en dos bloques distintos, por un lado tenemos el coste energético de la computación, el cual seguía la escala de Dennard y se ha enlentecido en los últimos años, pero hay una progresión constante que indica un mayor rendimiento.

Por el otro lado tenemos el coste de comunicación, este no es el coste de comunicación entre la RAM y el procesador, sino que cuanto cuesta transmitir un bloque de datos en energía.

No podemos olvidar que tanto la computación como la transferencia de datos están ligadas la una a la otra. Una mala comunicación dará como resultado una mala capacidad de computo y una mala capacidad de computo desaprovechará enormemente una eficiente estructura de comunicación.

El futuro esta en la infraestructuras

3DIC

Mientras nos hablan de procesadores cada vez más rápidos, con mayor cantidad de núcleos y por tanto con una mayor potencia, toda la carne en el asador esta puesta en mejorar la eficiencia energética a la hora de transmitir los datos, ya que es el siguiente cuello de botella con el que se van a topar a la hora de hacer crecer el rendimiento de los diferentes procesadores.

Es por ello que vemos en desarrollo nuevas formas de organizar un procesador, y cada vez son más comunes, el motivo de ello es que escalar un procesador de la manera convencional ya no es posible sin que aparezca el fantasma del consumo energético por la transferencia de datos.

Por el momento los modelos monolíticos aguantan, pero no sabemos hasta que punto podrán escalar.

¡Sé el primero en comentar!