NoC的拓扑结构决定了网络中节点和通道之间的物理布局和连接,直接决定了消息的跳数(hops)、节点之间的距离、网络延迟、能耗、如何分散路径等。最简单的拓扑结构之一是总线,总线上每个信号都可以被所有总线上的设备观察到,但可扩展性差,带宽有限。
指标
我们在设计NoC时第一个做出的决定往往是对拓扑结构的选择,因此在网络的其他元素确定之前,有一种快速比较不同的拓扑结构的方法是非常有用的。下图展示了三种常用的拓扑结构,来说明一些常用的指标。
流量无关的指标
以下这些指标与流经网络的流量无关:
度数(Degree):和图论中的度数是同一个概念,如上图中,Ring拓扑的度数是2,Torus拓扑的度数是4,Mesh网络中并非所有的switch都有统一的度数。度数一定程度上可以表示网络实现的成本,原因在于更高的度数需要每个节点有更多端口,面积和功耗会更大。
分割带宽(Bisection bandwidth):分割带宽是指将网络分割成两个相等部分之间的带宽,如上图中,Ring拓扑有2条链接,Mesh是3条,Torus是6条。这个指标在确定一个特定网络的最坏情况下的性能时通常是有用的,因为分割带宽限制了可以从系统的一侧移动到另一侧的数据总量。分割带宽也可以表示网络布线的成本。
直径(Diameter):和图论中的直径也是同一个概念,如上图中,Ring的直径是4,Mesh的直径是4,Torus的直径是2,在没有竞争的情况下,直径可以表示网络中的最大延迟。
流量相关的指标
以下这些指标与流经网络的流量相关:
跳数(Hop count):一个消息从源头到目的地所需的跳数,最大跳数即网络直径。除了最大跳数以外,平均跳数也可以表示网络的延迟。
最大通道负载(Maximum channel load):这个指标对于估计网络能够支持的最大带宽很有用,或者说,在网络饱和之前,每个节点可以向网络注入的比特/秒(bps)的最大带宽值。即最大注入带宽(Maximum injection bandwidth) = 1 / 最大通道负载。直观地说,这个指标涉及到网络中的哪条链路或通道在特定的流量模式下将是最拥挤的,因为这条链路将限制整个网络带宽。信道负载可以通过各种方式计算,通常使用概率分析。
路径多样性(Path diversity):如上图中,Ring没有路径多样性,但Mesh和Torus都提供了路径多样性。
直接拓扑结构:Ring、Mesh和Torus
直接网络是指每个终端节点(例如,多处理器中的每个处理器核心或缓存)都与一个路由器相关联。目前大多数NoC的设计都采用直接网络。
直接拓扑结构可以由k元n维立方体来描述,k是每个维度立方体边上节点的数量。比如说,一个4x4的mesh或torus是4元2维立方体,共16个节点,一个4x4x4的mesh或torus是一个4元3维立方体,共64个节点。大多数NoC用的都是2维拓扑结构,可以很好地映射到平面上,但片下网络就不一定了,因为机箱中的电缆可以在三维空间内连接。
间接拓扑结构:Crossbar、蝴蝶、Clos网络、Fat Tree
间接网络通过一个或多个中间阶段的交换节点连接终端节点。具体内容可以参考原书,这里只给出了一些书中的插图。
不规则的拓扑结构
MPSoC的设计可能会使用各种不同的IP核,上述对称结构可能并不合适,定制的拓扑结构往往比标准的结构更省电、性能更好。下图展示了一个视频解码器定制拓扑结构的例子。
拆分与合并
有两种技术来定制拓扑结构:拆分与合并。通过拆分,一个大型的全连接交换机(很可能违反设计约束)被逐渐拆分成较小的交换机(直到满足设计约束)。通过合并,拓扑结构中相邻的交换机可以被合并,以降低功耗和面积。
拓扑综合算法
拓扑的综合和映射是一个NP-hard问题,因此人们提出了一些启发式的方法来高效寻找最佳的拓扑结构。
分层拓扑结构
到目前为止,我们假设网络节点和终端节点之间是一对一的对应关系,且整个系统的拓扑结构是统一的。然而,在真实的系统中,多个节点可能在一个拓扑结构中放在一起形成集群,集群通过另一种拓扑结构连接在一起,形成一个分层的拓扑结构。
分层拓扑结构的最简单形式是多个终端节点共享同一个路由器节点。如上图所示,a中4个终端节点共享一个路由器,只需要9个路由器就可以连接36个节点,但也可能增加网络的复杂性,b中32个节点被分为4个8节点的集群,通过环连接在一起,难点在于对进入中心环的带宽进行仲裁。