0. 前言:片上网络NoC区别于Bus总线结构
1. NoC
1.1 NoC的概述
1.2 拓扑结构
1.3 数据包packets格式:message -> packets -> flit -> phits
1.4 路由选择算法routing algorithm
1.5 NoC失效的一些情况:死锁Deadlock、拥塞Congestion
2. Router architecture
2.1 Router的内部结构
2.2 流水线,用于NoC内部router传递消息
3. 缓存一致的内存访问结构Cache Coherence Protocols
4.流量控制机制
4.2 基于握手(handshaking)的流量控制机制
4.3 Wormhole packet switching flow-control
4.4 其他流量控制机制
5. 网络接口 Network Interface
5.1 基于FIFO的NI结构
5.2 符合 Wishbone 总线的NI结构
基于NoC的多处理器系统是一种使用网络互连的架构,将多核CPU、GPU、FPGA等处理器和加速器通过高带宽、低延迟的通信通道连接起来,实现高性能、可扩展的并行计算。它提供了灵活性、节能性和可靠性,适用于高性能计算、嵌入式系统等领域,加速图形处理、人工智能和机器学习等任务。
NoC-based MPSoCs(Network on chip; Multi-Processor System on Chip )设计面临的一个主要挑战是确保所有节点之间的通信效率和一致性,包括实现有效的 缓存一致性协议和 流量控制策略。
0. 前言:片上网络NoC区别于Bus总线结构
总线(Bus)结构:总线结构是最基础的连接方式,其中所有设备都连接到同一条总线上,数据传输需要在总线上进行,所有设备共享这条总线。这种结构简单且成本低,但当连接的设备数量增加时,性能会下降,因为所有的设备必须共享有限的总线带宽。
共享总线(Shared Bus)结构:在共享总线结构中,所有的处理器或核心都连接到同一条总线上。这意味着任何时候只有一个处理器可以使用总线。这种设计在低核心数量的系统中可能是有效的,但是在高并发的环境中会成为瓶颈,因为所有的处理器必须等待总线空闲才能发送数据。
矩阵连接(Matrix Connect)结构:在矩阵连接结构中,每个处理器都有一个专用的连接到每个其他处理器的路径。这使得在任何时候都可以有多个并行的通信,从而提供了更高的带宽和更低的延迟。然而,这种架构的缺点是需要大量的物理连接,这会增加设计的复杂性和成本。
NoC(Network-on-Chip)结构:NoC设计为处理大规模和复杂的通信需求,例如在多核处理器和复杂的系统级集成(SoC)设计中。NoC使用标准的网络协议和技术(例如路由和分包)来管理在芯片上的数据流。NoC可以支持大量的并行通信,并提供比其他方法更高的带宽。然而,NoC的设计和实现比其他方法更复杂,可能需要更多的硬件资源。
1. NoC
1.1 NoC的概述
如图所示是一个基于NoC(Network on Chip)的MPSoCs(multiprocessor systems-on-chip),一共具有16个SoC(System on Chip)(可以是CPU、GPU、NPU、纯内存或其他功能SoC),每个SoC工作在 IP(intellectual property ) 上,NoC的运行基于路由器Router(R)以一定拓扑结构(Topology)的互相连接进行消息的传递,IP和Router间由NI(Network Interface)将IP中的数据抽象成通用的网络通信协议,以数据包的形式在共享相同的线路传递数据包。
Links:是物理连接节点并实现通信的链路。
Routers:路由器,实现通信协议。
Network Interface:网络接口 (NI)在 IP 核和网络之间建立逻辑连接。
Tile:包括Router、NI、IP。是指构成系统的基本处理和通信元素的基本构建块或单元,Tile它可以被视为单个处理元素 (PE) 或处理核心及其相关资源。
NI:网络接口(Network Interface)将cache messages(控制或数据)转换为packets。
1.2 拓扑结构
NoC里Router之间的link链路连接可以定义成不同的结构以改变通信测量和简化片上通信结构。 (a)Ring:环形,每个router都有2个相邻节点,虽然部署和故障排除相对容易,但主要缺点是其通信的距离也即环形的直径会增大,通信路径单一不能优化,扩展节点数量时会降低系统性能。另一个缺点是,当一个节点出现错误时会使得通信之间出错(容易受到攻击)。 (b)Octagon :八角形,除了8个节点连接到环路上以外,对角线上共4对节点两两相连,比环形的扩展性更强。 (c)Star:星形,在星形结构的中间有一个中心节点,它连接着周围所有的节点,这样的星形结构使得所有节点互相传递消息的距离为2(先传给中心节点,再传给星角上的另一个)。星角上的节点是分离的,所以星角上节点故障时可以改进不会影响其他节点。缺点是有着通信的瓶颈,且中心节点出错时会影响全局通信。 (d)Mesh:网状,是最广泛使用的互联拓扑结构,每个路由器都通过通信通道连接到一个计算资源和四个相邻路由器(分别是North,south,west,east),每个router都通过通信通道连接到一个PE和四个相邻routers。这种拓扑结构可以容忍某处的链路故障,而且可以根据传递消息的布线策略选择路径最短的路径传播消息。但它的直径随着节点数量的增加而显着增加。 (e)Torus:环面拓扑,解决了网状拓扑直径随网络规模增加的挑战。这是通过在同一列或行中的端节点之间添加直接连接来实现,从头到尾减少了一半的跳转数。然而,它的长环绕链接可能会导致不当延迟。 (f)Folded torus:折叠环面拓扑,相比环面,他的四个均匀分布在一个环上,并不是直接将首尾相连。从而提供更短的链路长度,从而减少互连链路之间数据包的实施面积和遍历时间。与环面相比,折叠环面提供了更多的路径多样性,使其更具容错性。 (g)Butterfly:蝴蝶拓扑,把所有节点分到两边,中间加一层过渡节点,负责通路上通信的开关,成本比较低。但有的节点可能只有唯一路径,故缺乏路径多样性,导致链路容错性低,带宽低。通常需要很长的电线,相关的复杂电线布局会导致更多的能源消耗 (h)Binary Tree Network:二叉树形,由顶部(根)节点和底部(叶)节点组成,随着树长度的增加,网络