Una Network-on-Chip (NoC) es un paradigma de interconexión para System-on-Chips (SoCs) que modela la comunicación interna como una red de paquetes. A diferencia de los buses compartidos o las interconexiones punto a punto, una NoC utiliza routers y enlaces dedicados para crear una topología de red escalable (ej. malla, toro, árbol) que permite la comunicación concurrente entre múltiples IP cores. Cada core se conecta a un router NoC, que es responsable de encaminar los paquetes de datos a su destino, gestionando la contención y garantizando la entrega. Esto mejora significativamente el rendimiento, la eficiencia energética y la escalabilidad en comparación con las arquitecturas de bus tradicionales, especialmente en SoCs complejos con docenas o cientos de cores.
Las NoC son fundamentales en la mayoría de los SoCs modernos de alto rendimiento. Por ejemplo, los procesadores multinúcleo de ARM (como la serie Cortex-A) y los procesadores de GPU de NVIDIA y AMD utilizan arquitecturas NoC para interconectar los núcleos de procesamiento, las unidades de memoria caché, los controladores de memoria y otros aceleradores. Los SoCs de Apple para iPhone y Mac (ej. serie 'M' y 'A') también dependen en gran medida de NoC para su comunicación interna de alta eficiencia. En el ámbito de los FPGAs, herramientas como Xilinx Vitis y Altera Quartus Prime permiten a los diseñadores integrar y configurar NoC para interconectar IP blocks personalizados dentro de sus diseños.
Para un arquitecto de sistemas, la elección y configuración de una NoC es una decisión crítica con profundas implicaciones. La topología de la NoC (ej. malla 2D, toro 3D, fat-tree) impacta directamente en la latencia, el ancho de banda y el consumo de energía. Una NoC bien diseñada puede mitigar cuellos de botella de comunicación, permitiendo que los IP cores operen a su máximo potencial y facilitando la escalabilidad del SoC. Sin embargo, una NoC mal optimizada puede introducir latencias excesivas, aumentar el consumo de energía y limitar el rendimiento general del sistema. El arquitecto debe considerar los patrones de tráfico esperados, los requisitos de QoS (Quality of Service) para diferentes tipos de datos (ej. streaming de video vs. acceso a memoria), y los trade-offs entre la complejidad de la implementación y los beneficios de rendimiento para seleccionar la NoC más adecuada para la aplicación específica.