一、多核时代的出现
自从20世纪90年代末引入多核芯片研究以来,片上网络已经成为一个重要且不断发展的研究领域。随着计算核心数量的不断增加,多核处理器被广泛应用在高端服务器、智能手机,甚至物联网(Internet of Things,IoT)网关等各种领中。为了提高计算核心利用率,我们迫切地需要更大的通信带宽,并构建可扩展的片上互连结构。
通常来说,片上互连结构的设计方式和部署形态取决于多核架构本身的通信需求。随着片上计算核心数量的增加,用于连接它们的可扩展、低延迟和大带宽的通信结构变得至关重要。在4个计算核心或8个计算核心的情况下,总线(bus)和交叉开关(crossbar)是主要的互连结构 。总线是共享的多比特物理通道,每个计算核心均连接在总线上,并对总线进行监听。在一个特定的时刻,只允许一个计算核心向总线发送数据。总线可以提供较低的传输延迟,但是无法提供足够的带宽。交叉开关(crossbar)可以为任何一对计算核心提供非阻塞的连接。交叉开关具有大的带宽和相对较低的延迟,但是受限于面积和功率方面的表现,交叉开关的规模扩展性不佳。因此,片上网络正在迅速取代总线和交叉开关,成为多计算核心芯片中普遍存在的通信结构。在这种片上网络中,每个节点都有路由器,节点间通过短距离的本地片上链路连接到邻居节点;多个通信流在这些链路上时分复用,因此可以提供高可扩展性和大传输带宽。
二、片上网络与片外网络的比较
虽然片上网络可以借鉴超级计算机、工作站集群和因特网路由器中使用的多机箱互连网络的设计思想,但片上网络面临的设计要求差异巨大。因此,片上网络迫切需要全新的设计。幸运的是,将通信移动到芯片内可以大大减轻以前多机箱互连网络所面临的输入/输出 (Input/Output,I/O)
瓶颈问题:丰富的片上布线资源可提供比芯片外I/O 大出好几个数量级的带宽,同时避免了片外 IO 传输相关的固有延迟开销。
然而,许多严格的技术限制为片上网络设计带来了挑战。具体而言,在严格的功率范围和面积预算之内,针对高性能多核处理器的片上网络必须提供足够大的传输带宽,并同时保持极低的传输延迟。因此,在多核和众核芯片设计中,高速缓存、互连组件将会和计算核心竞争同一颗芯片上的空间和资源。对架构设计者而言,在严格的面积和功率限制下集成大量组件并在这些组件之间
进行综合权衡,是在设计时所必须面对的重大挑战。
片上网络的创新使其具有可与交叉开关相提并论的通信延迟,因此使得片上网络被广泛采用。此外,尽管相比总线和交叉开关,片上网络对功耗的需求小得多,但仍然需要精心设计,否则一不小心,就会导致过大的片上网络功耗。因此,功率限制是设计片上网络时必须考虑的问题。
三、片上网络的演变
片上网络,作为广义的互连网络的一个子集,可以看作是用于实现节点 之间数据传输的可编程系统。片上网络可以被视为一个系统,是因为它集成了许多组件,包括通道(channel)、缓冲区(buffer)、交换单元(switch)和控制(control)。
当节点数量很少时,可以使用专用的布线来连接它们。然而,当片上节点数量激增时,使用专用布线是不可行的,这是因为直接连接每个节点所需的布线量过高。
在计算核心数量较少的设计中,可以采用总线(bus)和交叉开关(crossbar)。在传统的多处理器系统和更新的多核架构中,基于总线的系统只能扩展连接数量不多的处理器。这种有限的可扩展性是因为添加到总线上的计算核心越多,这些计算核心对总线的竞争就越大,从而使总线流量迅速饱和 。在这种情况下,每个连接到总线的处理器很难获得足够大的带宽。而且,驱动长距离物理连线的总线所需的功耗也比较大。此外,随着计算核心数量的增加,集总式仲裁器(arbiter)也会带来额外的仲裁延迟。为了解决这些问题,复杂的总线设计采用了分段(segmentation)、分布式仲裁(distributed arbitration)、分离传输(split transactions)等技术,使其越来越类似于基于开关结构的片上网络。
交叉开关 解决了总线的带宽问题,并已用于少量节点的片上互连。但是,随着计算核心数量的增加,它们需要占用较大的芯片面积,并且产生更大的功耗,因此其可扩展性并不理想 。为了应对该问题,层级交叉开关(hierarchical crossbar)应运而生,其中计算核心采用簇(cluster)的方式进行组织------一个簇构成一个节点,并且使用多级较小规模的交叉开关来提供不同层级间的互连。这些复杂的交叉开关结构,类似于多跳(multi-hop)片上网络,其中每一跳完成一层交叉开关内的数据传输。
由于多种原因,片上网络是总线和交叉开关最有吸引力的替代方案。首先,片上网络为片上通信提供了一种可扩展的解决方案,因为它们能够使用较小的面积提供可扩展的带宽,并且随着节点数量的增加,提供近似线性的带宽增幅。其次,片上网络的布线非常高效,在相同链路上复用不同的通信流,进而提供更大的传输带宽。最后,具有规则拓扑结构的片上网络具有固定长度的局部短互连,因此,可以使用规则的可复用结构进行模块化优化和构建,从而减轻了验证的负担。
四、片上网络的基本构建模块
片上网络的设计可以分解为各种构建模块:拓扑、路由、流控制、路由器微体系结构,以及链路结构。
- 拓扑 :片上网络由传输通道和路由器(router)节点组成。网络拓扑确定了网络中节点和通道之间的物理布局和连接。
- 路由:对于给定的拓扑,路由算法确定消息从源节点到达目的节点所通过的网络路径。路由算法平衡流量(或负载)的能力直接影响了片上网络的吞吐量和性能。
- 流控制:流控制是指在消息通过网络时如何为消息分配资源。流控制机制负责为等待的数据包分配(和解除分配)缓冲区和通道带宽。与基于以太网技术的片外网络相比,大多数片上网络设计被认为是无损设计。
- 路由器微体系结构:常见的路由器微体系结构由以下组件组成:输入缓冲区(input buffer)、路由器状态(router state)、路由逻辑(routing logic)、分配器(allocator)和交叉开关(crossbar)。路由器功能通常设计成流水线结构,以提高吞吐量。片上网络中经过路由器产生的延迟是通信延迟的主要部分。因此,大量的研究工作通过减少路由器流水线级数来降低网络延迟。
- 链路结构:大多数片上网络原型使用传统的全摆幅逻辑和带有中继器(repeater)的连线。当传输数据1(高电平)时,全摆幅线从0V(接地)提高到电源电压:当传输数据0(低电平)时,全摆幅线从电源电压降低到0V(接地)。对于较长的连线,降低延迟的有效方法是插入等间隔的中继器(反相器或缓冲区),使延迟能够与中继器的数量(而不是长度的二次方)成线性关系。
五、总结
当片上存在多个处理节点需要进行互连与数据交互时,最简单的方式是采用总线或crossbar结构进行连接,但是当节点很多的时候,总线会由于节点的竞争增大而迅速饱和,从而导致带宽受限,corssbar则会因为节点的增加占用较大的芯片面积,从而导致功耗增大。
因此,片上网路的发展逐渐得到重视,片上网络的设计可以分解为各种构建模块:拓扑、路由、流控制、路由器微体系结构,以及链路结构。