NoC(Network on Chip,片上网络) 是一种在复杂芯片(如多核处理器、SoC)内部,用于连接大量核心(CPU、GPU)、内存、缓存和其他IP模块的通信架构。
1. 为什么需要NoC?传统总线的问题
在芯片核心还很少的时代(比如双核、四核),通常使用传统的总线(Bus) 或交叉开关(Crossbar) 进行通信。
- 总线(Bus):像一条共享的高速公路,所有组件都连接在这条公路上。缺点是独占性,同一时间只能有一对组件通信,其他组件必须等待,容易成为性能瓶颈。
- 交叉开关(Crossbar):像是一个巨大的交换机,可以建立多个并行的点对点连接,性能很好。但问题是复杂度高,随着核心数量(N)的增加,其布线资源和面积开销会以 N² 的速度增长,成本极高。
当芯片发展到拥有几十个甚至上百个核心时(例如,服务器CPU、AI加速器),传统的总线架构就无法满足高带宽、低延迟、可扩展的通信需求了,这时,NoC就成为了必然选择。
2. NoC的核心思想和工作原理
NoC借鉴了大型计算机网络(如互联网)的思想,将通信和计算分离。
- 网络化:将芯片上的各个模块看作网络中的一个个“节点”(Node)。
- 路由:数据被打包成一个个“数据包”(Packet),通过一系列“路由器”(Router)和“链路”(Link)被路由到目的地。
- 并行通信:多个数据包可以同时在网络的不同部分传输,实现了极高的并行通信能力。
NoC的基本组成单元:
- 处理单元(PE):就是需要被连接的各个核心、内存控制器、DSP等IP模块。
- 路由器(Router):网络的核心交换设备,负责接收、缓存、选择和转发数据包。每个路由器通常连接到邻近的其他路由器和本地处理单元。
- 网络接口(NI):连接处理单元和路由器的适配器,负责将处理单元的通信请求打包成网络数据包,或者将收到的数据包解包并传递给处理单元。
- 链路(Link):连接路由器和网络接口的物理通道(一组导线)。
3. NoC的主要拓扑结构
拓扑结构决定了路由器和处理单元是如何连接的,直接影响性能、面积和功耗。常见的有:
-
网格(Mesh):最常见的一种,路由器呈二维网格排列,每个路由器连接东、南、西、北四个邻居和本地一个处理单元。结构规整,易于设计和布局布线。例如,Intel的很多至强处理器就采用Mesh NoC。
-
环(Ring):路由器连接成一个环。结构简单,但延迟会随着节点增多而变大。在一些多核CPU(如早期的Intel酷睿)中常用。
-
蝶形(Butterfly):一种高性能拓扑,适用于高吞吐量场景,但结构更复杂。
-
树(Tree):像公司组织架构图,根节点带宽压力大,可能成为瓶颈。
4. NoC相比传统总线的优势
特性 | 传统总线 (Bus) | 片上网络 (NoC) |
---|---|---|
可扩展性 | 差,核心越多,竞争越激烈,性能下降快 | 优秀,增加核心只需增加路由器和链路,性能线性增长 |
并行性 | 差,共享介质,同一时间只能一对一通信 | 强,多对通信可在网络的不同部分同时进行 |
带宽 | 有限,所有流量共享总线的最大带宽 | 极高,整体带宽是众多链路带宽的总和 |
功耗 | 所有信号广播,功耗较高 | 点到点通信,只在需要时激活相关链路,更节能 |
时钟 | 通常需要全局同步时钟 | 可以设计为全局异步局部同步(GALS),设计更灵活 |
设计复杂度 | 简单 | 复杂,需要设计路由算法、流控、避免死锁等 |
5. 应用场景
NoC是现代复杂芯片的“血管”和“神经系统”,广泛应用于:
- 多核CPU:AMD EPYC、Intel Xeon、ARM Neoverse等多核服务器处理器。
- AI加速器:NVIDIA的GPU、Google的TPU,内部有巨大的NoC来处理海量核心间的数据流。
- 复杂SoC:智能手机的SoC(如高通骁龙、苹果A系列),连接CPU、GPU、NPU、ISP、内存控制器等。
- FPGA:新一代FPGA内部也采用NoC来提供高速互连。
总结
NoC(片上网络)是一种用于芯片内部、基于分组交换的高速互连技术。它通过将计算机网络的思想引入芯片设计,解决了多核时代传统总线架构存在的可扩展性差、带宽瓶颈等问题,是实现当今拥有数十亿晶体管、上百个核心芯片的基石技术。