Vivimos en una era en la que los circuitos integrados, ya sean en forma de varios chips o en forma de uno solo, son cada vez más complejos y compuestos por cada vez por más partes que se han de interconectar entre sí y esto se ha convertido en uno de los problemas a los que se enfrentan los ingenieros. El término NoC, el cual significa Network on a Chip y que se traduce como red en un chip, es uno de los tipos de circuitos electrónico heterogéneos más comunes. Pero ¿cuál es su organización, en qué consisten y cuál es el motivo de su existencia?
Aclaración: en este artículo hacemos referencia a los diferentes procesadores dentro de un SoC o de un NoC como elementos de procesamiento o PE, y estos pueden ser cualquier elemento dentro de una de estas infraestructuras, por lo que pueden hacer referencia a una CPU, una GPU, un DSP, una NPU, etc.
La comunicación interna en un SoC y sus limitaciones
Utilizamos SoCs continuamente, y es que en realidad hoy en día todos los procesadores que utilizamos tanto en nuestros PCs como en nuestros teléfonos inteligentes son SoCs, pero una cosa que mucha gente no se llega a preguntar es: ¿cómo se comunican los diferentes elementos de procesamiento en un SoC? ¿En qué parte de un SoC ocurre la comunicación de todos sus elementos de procesamiento? Pues en el puente norte que es la parte que comunica los diferentes elementos de procesamiento entre si y estos con la memoria, siendo las estructuras más comunes el Crossbar Switch y los anillos de comunicación.
El Crossbar Switch está compuesto por una serie de interruptores comunicados entre ellos en forma de matriz, donde cada uno de los elementos de procesamiento que componen el circuito electrónico está conectado a uno de estos interruptores y la transmisión de datos se realiza activando los diferentes interruptores extremo a extremo; para ello el Crossbar Switch tiene un pequeño sistema de control interno encargado de gestionar los diferentes envíos de datos entre las diferentes partes.
La configuración en anillo en cambio es un poco más compleja y un símil para explicarlo de la forma más simple posible son las rotondas. En esta organización los paquetes de datos son los que circulan por la rotonda y recorren un segmento de la misma en cada ciclo de reloj, saliendo del anillo cuando llegan al segmento en el que está conectado el elemento destino.
El problema principal en ambos casos es que cuando se crea un nuevo sistema derivado de uno ya existente cambiando un solo elemento, aunque sea bajo la misma arquitectura se ha volver a hacer la infraestructura de comunicación.
Además se crea el problema de que a medida que vamos añadiendo elementos de procesamiento a la infraestructura que los comunica, esta crece cada vez más y de manera exponencial, hasta el punto en que esta acaba ocupando más que los propios elementos de procesamiento que comunicar y en ese punto donde es necesario adoptar otras infraestructuras de comunicación.
La intercomunicación en un Network on a Chip
Los NoC o Network on a Chip buscan solventar los problemas de escalabilidad de los SoC, permitiendo así estructuras más complejas que la que permiten estos.
En vez de construir una infraestructura de comunicación muy compleja como ocurre en los SoC, en el caso de los NoC lo que se hace es añadir un enrutador (R) y una infraestructura de red (NI) conectada a cada elemento. La idea es que cuando un PE se quiere comunicarse con otro PE, solo tiene que “llamar al número” del otro elemento de procesamiento con el cual se quiera comunicar, y entonces los enrutadores situados en cada una de las partes se ponen en contacto y se transmiten los datos entre ellos.
La mayor ventaja de esto es que les permite a los creadores de sistemas heterogéneos crear nuevas estructuras sin tener que crear una infraestructura de comunicación compleja, y les permite además crear variaciones de sus arquitecturas de manera mucho más rápida que utilizando otros sistemas de comunicación gracias a que la estructura de comunicación se encuentra no fuera de los diferentes PEs sino dentro de cada uno de ellos, facilitando la creación de arquitecturas escalables en cuanto a la cantidad de elementos de procesamiento.