片上网络Noc原理
一、NoC介绍
NoC 的全称是 Network-on-Chip,即片上网络。它是一种在单一芯片上实现通信网络的基础架构。
与传统总线(如AXI, AHB)或交叉开关(Crossbar)这种共享的、中心化的互联方式不同,NoC是一种分布式的、基于数据包路由的通信架构。
一个简单的比喻:
* 传统总线(BUS) 像是一条单车道的高速公路,所有车辆(数据)都挤在这条路上,由一个交警(仲裁器)指挥,容易造成拥堵(性能瓶颈)。
* 交叉开关(Crossbar) 像一个大型立交桥,虽然可以从任何入口到任何出口,但当设备数量增多时,其复杂度和面积会呈平方级增长,造价昂贵。
* 片上网络(NoC) 则像是一个城市道路网。数据包像车辆一样,从起点出发,经过多个路口(路由器),按照路标(路由算法)选择路径,最终到达目的地。多条道路可以同时通行,极大地提高了整体交通流量(带宽)。
二、NoC的基本原理与核心组件
NoC的架构借鉴了大型计算机网络(如互联网)的思想,将其微型化并集成到芯片上。它主要由以下几个核心组件构成:
1. 处理单元(PE - Processing Element)
这不是NoC本身,而是需要互联的单元,例如:CPU核心、GPU核心、DSP、内存控制器、专用加速器等。每个PE都连接到一个路由器上。
2. 路由器(Router / Switch)
* 这是NoC的核心枢纽,分布在芯片的各处。
* 它的功能是:接收数据包,根据其目标地址和内置的路由算法,决定将其转发到哪个相邻的路由器(或最终的终端PE)。
* 每个路由器通常与邻近的多个其他路由器相连,形成网络拓扑。
3. 网络接口(NI - Network Interface)
* 这是PE和NoC之间的翻译官。
* 它将PE发出的传统总线事务(如AXI的读/写请求)打包成可以在NoC中传输的数据包。
* 同时,它将接收到的数据包解包,转换成PE能够理解的总线事务。
4. 链路(Link)
* 连接各个路由器之间的物理通道,通常由一组并行的导线构成。
* 负责在路由器之间传输数据包。
NoC的工作流程(数据包如何旅行)
1. 打包(Packetization):
* 当一个CPU核心(PE)想要向内存控制器写入数据时,它通过标准的AXI等协议发起请求。
* 该请求到达网络接口(NI)。NI将这个请求(包括地址、数据、命令类型)分解并封装成一个或多个数据包。每个数据包包含头部(目标地址、源地址、包类型等信息)和载荷(实际要传输的数据或命令)。
2. 路由(Routing):
* 数据包被注入网络,进入第一个路由器。
* 路由器查看数据包头部的目标地址,根据其内置的路由算法(例如XY路由,即先沿X轴走,再沿Y轴走)决定下一个出口方向(东、南、西、北或本地PE)。
3. 交换(Switching):
* 路由器根据其交换策略(如 wormhole - 虫洞交换)将数据包的部分(称为flits, flow control digits)通过网络链路转发到下一个路由器。
4. 转发(Forwarding):
* 这个过程在每个中间路由器上重复,直到数据包到达连接着目标PE(内存控制器)的路由器。
5. 解包(Depacketization):
* 目标PE处的网络接口(NI) 接收数据包,将其重组为原始的AXI写事务。
* 内存控制器最终执行写操作,并可能通过相同的NoC路径返回一个响应包。
三、NoC的优势与挑战
优势:
1. 极高的可扩展性:要连接更多核心,只需增加更多的路由器节点即可。其性能不会像总线那样急剧下降。这是NoC最核心的优势。
2. 高并行性与带宽:多条通信路径可以同时工作,彻底解决了传统总线的带宽瓶颈问题。
3. 功耗效率:虽然网络本身有开销,但由于通信效率高,完成同样通信任务的整体能耗可能更低。并且可以动态关闭空闲部分的电源。
4. 结构规整:路由器阵列通常非常规整,有利于芯片的物理设计和时序收敛。
挑战:
1. 设计复杂性:需要设计路由算法、流控机制、拓扑结构等,比总线复杂得多。
2. 面积开销:每个路由器都会占用一定的芯片面积。
3. 延迟不确定性:数据包的延迟取决于网络拥堵情况,不如总线或Crossbar的延迟确定。这对于实时性要求极高的场景是个挑战(需要通过QoS机制解决)。
应用场景
NoC并非用于所有芯片,它主要应用于:
* 多核/众核CPU:如Intel的至强Phi、许多研究中的众核处理器。
* 大型SoC:特别是在AI芯片、网络处理器、高端手机AP(应用处理器)中,连接数十个甚至上百个IP核。
* FPGA:新一代FPGA(如AMD Versal)在其可编程逻辑和计算引擎之间使用NoC来提供高速、可预测的互联。
四、总结
NoC是一种颠覆性的片上互联范式。它通过将宏观计算机网络的概念微型化并集成到芯片上,使用分布式路由和分组交换的方式,完美解决了多核时代传统共享总线架构所带来的可扩展性瓶颈和带宽限制问题。它是实现未来超大规模、高性能SoC的关键使能技术。