片上互联系统
chapter1
- 介绍:可在片上互联成千上百个core。就集成在芯片上的组件类型而言,异构性现在在许多细分市场中都很常见,这进一步提高了芯片上互连结构的复杂性。除了处理器核心之外,片上结构还必须互连 嵌入式存储器 、加速器(如DSP模块)、视频处理器和图形处理器
- multiprocessor systems-on-chip***(MPSoCs)***
- NOC设计组成:
- 拓扑(Topology)。片上网络由信道和路由器节点组成。网络拓扑结构决定了网络中节点和通道之间的物理布局和连接方式。
- 路由(Routing)。对于给定的拓扑结构,路由算法确定消息通过网络到达目的地的路径。路由算法平衡流量(或负载)的能力直接影响网络的吞吐量和性能。
- 流控制(Flow control)。流控制决定了在消息通过网络时如何将资源分配给消息。流控制机制负责为等待的数据包分配(和释放)缓冲区和通道带宽。与基于以太网技术的片外网络相比,大多数片内网络在设计上被认为是无损的。
- 路由器微体系结构(Router microarchitecture)。一个通用的路由器微体系结构由以下组件组成:输入缓冲区、路由器状态、路由逻辑、分配器和交叉栏(或交换机)。路由器功能通常是流水线化的,以提高吞吐量。片上网络中每个路由器的延迟是造成通信延迟的主要原因。因此,在减少路由器管道阶段和提高吞吐量方面投入了大量的研究工作。
- 链接架构(Link architecture)。大多数片上网络原型使用传统的全摆式逻辑和重复导线。当传输1时,全摆线从0 V(地)过渡到电源电压,当传输0时,返回到地。在长线上等间隔的中继器(逆变器或缓冲器)是一种有效的减少延迟的技术,使延迟与中继器的数量成线性关系,而不是与长度成二次关系。
Chapter2 Interface with system architecture
-
一些概念:
- shared-memory chip multiprocessors (CMPs)
- multiprocessor SoCs (MPSoCs)
-
CMPS:
- Cache coherence protocols(缓存一致性协议),规定单个写多个读,控制了共享内存多处理器中必要的通信。
图2.1描述了一个典型的由64个节点组成的共享内存多处理器。一个节点包含一个处理器、私有的1级指令和数据缓存,以及可以是私有的或共享的第二级缓存。在高速缓存的第二层之外,可以在芯片上并入第三层。这第三级缓存通常由芯片上的所有处理器共享。处理器到网络接口(在本章后面讨论)和路由器作为本地模块和其他片上组件之间的网关。
共享内存多处理器的两个关键特征决定了它对互连的需求:确保节点接收到正确的最新缓存线路副本的缓存一致性协议,以及缓存层次结构。
- 多处理器系统通常依赖于两种不同类型的相干协议:广播协议或目录协议
- 广播协议:使用广播协议时,相干请求被发送到芯片上的所有节点,导致广播协议对带宽的要求很高。数据响应是点对点性质的,不需要任何排序;广播系统可以依赖于两个物理网络:一个用于排序的互连和一个用于数据传输的更高带宽的无序互连。或者,可以使用多个虚拟通道来确保相干流量之间的顺序;请求和响应可以通过独立的虚拟通道流动。
- 目录协议:目录协议依赖于点对点消息而不是广播;一致性消息的减少允许这类协议提供更大的可伸缩性。该目录不是广播到所有内核,而是包含有关哪些内核拥有缓存块的信息。单核接收来自图2.2b目录的读请求,因此带宽需求较低。
- NOC的一致性协议要求:
- 缓存一致性协议需要几种类型的消息:单播、多播和广播。目录协议通常是单播的(点对点),可减少带宽需求。广播协议的带宽要求更高。
- 缓存一致共享内存芯片多处理器通常需要两种消息大小。第一个消息大小用于没有数据的一致性请求和响应。这些消息由一个内存地址和一个一致性命令(请求或响应)组成。在缓存一致性协议中,数据在全缓存行块中传输。数据消息由整个缓存块(通常为64字节)和内存地址组成。这两种消息类型还包含附加的特定于网络的数据。
- 除了消息类型和大小之外,共享内存系统还要求网络没有协议级死锁。
Chapter3 Topology
- 三种常见拓扑
-
指标:
-
degree(度):指每个节点上的链路数量。图3.1中拓扑的度,ring结构的度为2,因为每个节点有两个链路,而torus度为4,因为每个节点有四个链路连接到四个相邻节点。每个路由的端口数称为路由基数。
-
bisection bandwidth(对分带宽):对分带宽是将网络分成相等的两部分后,两部分之间的通信带宽。在图3.1中,穿过ring结构的对分线的链路数为2,穿过mesh结构的对分线的链路数为3,穿过torus结构的对分线的链路数为6。
-
diameter(直径):网络的直径是指拓扑中任意两个节点之间的最大距离,其中距离是指最短路由中的链路数。例如,在
图3.1 ring直径为4,mesh直径为4,torus直径为2。在没有争用的情况下,直径充当拓扑中最大延迟的代理。
-
hop count(跳数):消息从源到目的的跳数,或者经过的链路数定义了跳数。这是一个非常简单和有用的网络延迟代理,因为即使没有争用,每个节点和链接也会产生一些传播延迟。最大跳数由网络的直径决定。除了最大跳数之外,平均跳数作为网络延迟的代理非常有用。它由网络中所有可能的源-目的对的平均跳数来给出平均跳数。ring的最大跳数为4,mesh最大跳数为4,torus最大跳数提升到2。同样,torus具有最小的平均跳数4/3,mesh为16/9,ring为20/9.
-
maximum channel load(最大通道负载):这个指标对于估计网络可以支持的最大带宽,或者每个节点在网络饱和之前可以注入的最大每秒比特数(bps)很有用。
- Maximum Injection Bandwidth = 1 / Maximum Channel Load(最大注入带宽=1/最大通道负载)
-
path diversity(路径多样性):拓扑中的路径多样性为路由算法提供了更大的灵活性来实现负载均衡,从而减少了信道负载,从而提高了吞吐量。
-
-
direct topologies(直连拓扑):rings,meshes,tori
- 直连网络是其中每个终端节点(例如,芯片多处理器中的处理器核心或缓存)与路由器相关联的网络;所有路由器既充当流量的源/汇,又充当来自其他节点的流量的交换机。迄今为止,片上网络的大多数设计都使用直接网络,因为在芯片上的区域受限环境中,与终端节点共同定位的路由器通常是最合适的。
- 直连拓扑可以用 k-ary n-cubes来描述,k表示每个维度上的节点数,n表示维度数。
- For instance, a 4 × 4 mesh or torus is a 4-ary 2-cube with 16 nodes, a 8 × 8 mesh or torus is a 8-ary 2-cube with 64 nodes, while a 4 × 4 × 4 mesh or torus is a 4-ary 3-cube with 64 nodes.
- 实际上,大多数片上网络使用二维拓扑,可以很好地映射到平面衬底
-
indirect topologies(非直连拓扑):crossbars(交叉开关),butterflies(蝶形网络),clos 网络,fat tree网络
-
非直连拓扑指所有终端节点通过一个或多个中间交换节点(switch node)相连的网络拓扑。只有终端节点是流量的源(发出新的流量)或目的地(处理输入的流量而不向下继续传递),中间交换节点只是流量的中转站(将流量从输入送到指定的输出)。
-
crossbars:最简单的非直连拓扑,一个交叉开关通过n×m个简单的交换节点连接了n个输入和m个输出。它是非阻塞的,因为它总是可以将发送方与特定的接受方直接连起来。
-
butterflies:可以描述为k-ary n-fly,K是开关的度,n是开关的阶段数。源节点是位于图左边的圆形节点,目的节点是位于图右边的圆形节点,这里的圆形节点统称为终端节点(terminal node),图中方形的是交换节点。
-
一个蝶形网络将哥哥交换节点合并后的版本,我们称之为扁平蝶形(flattened butterfly)网络。它将同一行中的中间交换节点合并为一个交换节点,从而将非直连拓扑转化为直连拓扑。
-
clos 网络:对称的Clos网络是一个可以用三元数组**(m,n,r)**表示的3级网络,m为中级开关数量,n为每个输入/输出级交换节点(一级和末级开关)上的输入/输出端口数量,r表示网络的第一级或最后一级交换节点数。
-
**fat tree **网络:fat tree 网络是一个如图所示的二叉树结构,物理上各个节点内部的布线资源不同,距离根节点越近的节点内部的连线资源越多。一个 fat tree 网络可以由 clos 网络折叠而成。
Chapter 4 Routing
- 使用路由算法来确定消息通过网络到达目的地的路径。路由算法的目标是将流量均匀地分布在网络拓扑提供的路径上,以避免热点,减少争用,从而提高网络的延迟和吞吐量。
-
路由算法的类型:路由算法一般分为三类:确定性路由(deterministic routing)、无关路由(oblivious routing)和自适应路由(adaptive routing)。
- 维序路由(dimension-order routing, DOR):在片上网络中最广泛使用的路由算法,是确定性路由
- 无关路由:Valiant 随机路由算法
- 自适应路由
-
死锁(deadlock)
- 死锁是由多个数据包在传输路径上形成了打结的环路造成的
- 避免方式:
- 设计路由算法以避免在网络中形成打结的环路
- 设计数据流控制协议(flow control protocol)以避免路由器缓冲区(buffer)的占用和请求构成循环依赖
Chapter 5 Flow Control
- 流控制负责网络缓冲区和链路的分配。它决定何时为消息分配相应的缓冲区和链路资源,以及分配资源的粒度,另外还决定如何在许多消息之间共享这些网络资源。
- 消息、数据包、flit 和 phit
- 当一条消息被注入到网络中时,它首先被分割成数据包,然后这些数据包被分割成固定长度的flit( flow control unit 的缩写,为流量控制中最小粒度数据的单元)。flit 可以进一步分解为phit(physical transfer unit 的缩写,为物理传输最小粒度数据单元)。
- 基于flit 的流控制:虫洞流控制 wormhole flow control
-
缓冲区反压:
- 当缓冲区中阻塞并积压 flit 时,必须有相应的反压(backpressure)机制
- 基于credit的缓冲区反压机制
- 基于开启/关闭信号的缓冲区反压机制
-
Chapter 6 Router Microarchitecture
-
路由器微体系结构决定了它的关键路径的延迟,进而影响到整个网络每跳的延迟。决定整个网络的吞吐量,影响网络的功耗,直接影响整个片上网络的面积开销。
-
组成路由器的主要组件:
- 输入缓冲区(input buffers)
- 路由计算模块(route computation logic)
- 虚拟通道分配器(virtual channel allocator)
- 开关分配器(switch allocator)
- 交叉开关(crossbar switch)
-
缓冲区和虚拟通道
- 缓冲区作用是存储无法立刻移动至输出端口的数据包或flit,一般设置输入缓冲区
- 单输入定长队列(无虚拟通道),会发生队首阻塞
- 多输入定长队列,每个输入端口的缓冲区被组织成多个具有固定长度的队列,每个队列称为一个虚拟通道
- 多输入变长队列
- 最小虚拟通道数量。虚拟通道作用:避免死锁和提升性能
- 最小缓冲区队列(虚拟通道)长度,为了保证功能正确且防止死锁,一个路由器的每个虚拟通道都至少需要一个缓冲区
- 缓冲区作用是存储无法立刻移动至输出端口的数据包或flit,一般设置输入缓冲区
-
输入虚拟通道状态
- 全局(G):空闲/路由/等待输出虚拟通道 credit/激活。激活的虚拟通道能够申请开关分配
- 路由(R):数据包的输出端口,这个字段用于申请开关分配
- 输出虚拟通道(O):数据包的输出虚拟通道,即下游路由器输入端口的虚拟通道,该输出虚拟通道在虚拟通道分配后被head flit填充。
- credit 计数(C):credit 计数表示下游路由器的每一个虚拟通道的缓冲区空闲情况
-
开关设计
5流控制
5.9之前的一段
基于credit的缓冲区反压机制更适合片上网络
6.6低功耗微体系
图片6-19
7.2.2
NOC功耗的主要来源是,缓冲区,交叉开关,节点间链路
5.4基于flit的流控制
虫洞控制将数据包分为flit,未接受到完整的数据包之前就继续妆发flit
拓扑:二维拓扑(二维mesh)
路由算法:确定性维序路由算法(每台路由器独立计算)4.3
流控制技术:基于flit流控制(虫洞)5.4
缓冲区反压:基于ON/OFF的缓冲区反压机制5.7.2
round-robin仲裁器6.4.1
可分离的输入优先分配器6.4.3
重点放在简化路由器子模块之间的连接上,因此SystemVerilog提供的“接口”结构被广泛采用。
每个端口上的每个虚拟通道,实现一个单比特错误输出