一种用于片上网络的交换开关结构

时间:2009-07-20

  摘要:半导体技术的飞速发展推动了片上系统设计进入到片上网络阶段。为了进一步研究其结构及不同工艺对其的影响,文章分析了片上网络对于片上系统的优越性,并针对其重要组成部分——交换开关提出了一种×pipes 交换开关结构,通过将该结构在65 纳米和90 纳米库中进行分别进行综合分析,从而得出采用65 纳米技术具有很大优势。

  1 引言

  在过去的 50 年中,集成电路制造工艺以每年58%的增长率持续发展着。进入21 世纪后,90 纳米和65 纳米工艺相继投产,标志着纳米时代的开始。在未来的5~10 年中,集成电路的电路规模将超过40 亿晶体管,目前的单一处理器及总线结构是无法驾驭规模如此庞大的电路的。一颗芯片内集成越来越多的内核数量,在实现了强大功能的同时,也引入了许多新的设计问题。其中之一就是如何实现内核间的互连。首先,如何实现一个稳定可靠的内核互连机制?这种互连机制会在很大程度上影响SOC 系统的性能甚至是功耗,简单的总线结构已无法满足SOC 系统中越来越复杂的通信需求。

  一个由多个内核组成的系统如果使用总线连接,则会需要很长的连线,而这样的总线不可能达到很高的速度。另外,芯片的同步越来越困难,按照传统的方式使用单一时钟已经变得几乎是不可能的。所以,未来的SOC 有可能采用一个全局异步局部同步[3]的工作方式(Globally Asynchronous and LocallySynchronous),也就是说芯片将不再使用一个统一的时钟,而是采取一种分布式的方式,只是在局部(如一个内核内部)使用传统的单一时钟。相对于SOC 而言,全新的NOC(Networkon chip)体系结构是更高层次、更大规模的片上系统,是片上的网络系统。片上网络就是将网络技术应用于SOC 模块互连的设计方法, NOC 技术的思想是将计算机网络技术应用到芯片设计中来,以便彻底解决多CPU 的体系结构问题。NOC 可以定义为在单一芯片上实现的基于网络通讯的多处理器系统。NOC 包括运算和通讯两类节点。运算节点(又称为资源,Resource)完成广义的运算任务。它们既可以是SOC,也可以是各种单一功能的IP;通讯节点(又称交换开关,Switch)负责运算节点之间的数据通讯。通讯节点及其之间的网络称为OCN(On Chip Network),它借鉴了分布式计算机系统的通讯方式,用路由和分组交换技术替代传统的总线技术完成通讯任务。本文我们主要介绍交换开关。

  2 交换开关

  2.1 交换开关基本原理与结构

  交换开关也称为路由器,它用于建立交换网络。一般来说,一个交换开关有多个输入、输出端口,每个输入端口内有一个接收器和输入缓冲器,用以处理到达的包或报元。每个输出端口内含一个发送器,传输输出数据信号到连接另一个交换开关的通信线路上。一个4×4 的交换开关如图1。其中内部交叉开关用来同时建立输入和输出间的连接。每个交叉点可在程序控制下接通或断开。多个开关和链路常按选择的拓扑结构,建成大型的交换网络。
  一个二元开关对应一个 2×2 开关模块,每一个输入可连接到任意输出端口,但只允许一对一或一对多的映射,不允许多对一的映射,因为这将发生输出冲突。网络设计终要归结到交换开关的设计和如何将交换开关连接起来。交换开关的度、内部的选路机制和内部的缓冲策略决定了能支持什么样的网络拓扑和选路算法。前面描述了交换开关的基本原理,现在我们通过一个具体的实例来仔细的看一下交换开关的设计。


  图 1 交换开关图

  2.2 ×pipes 交换开关结构

  本文采用一种×pipes 交换开关结构。×pipes 交换开关(图2)具有输出缓冲;每个输出有可重构深度的FIFOs,输入是单独的寄存器。数组宽度可以任意设定。输入输出的数量也是一个参数;中心交叉网络提供完全互连。每一个输出有一个仲裁来处理连接问题。因为×pipes 进行资源布线,所以开关本身不包括布线查找表。采用×pipes 是为了提供高运行和可靠的通信。开关的作用是通过一个抽象定义或动态选择的路径将进入网络的数组传输到他们的目的地。开关将数组从一个输入节点传输到一个或多个输出节点。开关设计通常以功耗和运行折衷为特征:功耗大的开关存储器资源可以用于支持高速运行的片上通讯。开关设计可以包括输出和输入缓冲或仅一种类型的缓冲。输入排队使用较少的缓冲但是必须有队首块。虚拟输出排队有更高的运行效率,但是需要更多的缓冲。网络流程控制(或布线模式)专门说明开关中缓冲资源数量的限制。


  图2 4×4 ×pipes 交换开关网络

  1) 端口

  交换开关的引脚数目是输入和输出端口的总数乘以通道宽度。相对于芯片面积来说,芯片周长增长缓慢,因此交换开关引脚数目受到限制。高速串行连接使用少的引脚,并且消除了在通道的不同位线之间歪斜的问题。但其主要缺点是,时钟和所有的控制信息都必须在串行位流的帧内进行编码。使用并行连接,需要有一根线专门用来传递时钟信号。另外,流量控制可以通过另外一根提供准备/确认握手信号的线来实现。

  2) 内部数据路径

  数据路径是输入端口和输出端口之间的通路,虽然它可以用许多方法来实现,但通常是指内部的(纵横)交叉开关。在一个非阻塞交叉开关中,每一个输入端口能以任何置换次序连向一个独立的输出端口。如图3a 所示,从逻辑上来说,一个n×n 交换开关无非是一个与每个目标相关的n-路多路复用器。依赖于底层技术,多路复用器可以用不同的方法来实现。



  图 3 交叉开关的实现: a 多路复用器实现,b 三态驱动器构成的网络

  例如,采用VLSI 技术,典型的实现是采用如图3b 所示的三态驱动电路形成单个总线。在这种情况下,对于每个输出端口,控制通路提供n 个使能点。


  图4 输入端缓冲的交叉开关

  3) 通道缓冲区

  交换开关中缓冲区的组织对性能影响很大。传统的路由器和交换开关设计,常常在交换开关组织外设置很大的SRAM 或DRAM,但在VLSI 设计中,缓冲区在交叉开关内部,在数据通路和控制部分一样占据硅片。缓冲区设置有四种基本选择:不设置缓冲区、在输入端设置缓冲区、在输出端设置缓冲区和设置一个集中的共享缓冲池。

  a 输入缓冲区:一种方法是在每个输入端口提供独立的FIFO 缓冲区,如图5 所示。每个缓冲区在一个时钟周期内接收一个节片,并向输出端口发送一个节片。这样一来,交换开关的内部带宽就能很容易匹配进来的数据流。交换开关的操作相对简单,它监控每一个输入FIFO 对列的头,计算出每个要去的输出端口,然后调度相应信包通过交叉开关。选路逻辑与每个输入端口相关,用来决定想要去的输出端口。如果是算数选路,每个输入端口需要一个算数单元;如果是查表找路,每个输入端口需要一个选路表;如果是切通选路,选路逻辑不需要每个时钟周期都作出决定,只需要对每个信包做决定即可。实际上,选路逻辑是个有限状态机,在信包的边界作出新的路由决定前,将同一个信包的所有数据片送到同一个输出通道。

  然而这种简单的输入端缓冲方法会形成一个“排头”阻塞问题。例如,如果两个输入端口都有信包要传到同一个输出端口,其中一个将会被调度输出,另一个将会被阻塞。可是,在被阻塞的信包后面的信包,可能是要传到一个没有被使用的输出端口,但是它却不能被传输。“排头”阻塞对通道利用率会有很大影响。

  b 输出缓冲:需要对交换开关做的基本改进是解决在每个输入端口有多个信包等待传到输出端口的情况。一种方法是扩展输入FIFO 队列,为每个输出端口设置独立的缓冲区,这样一来,信包在到达时就按目的端口排序了。假如输入端口通信流稳定的话,输出端能100%驱动。尽管这种设计有很大好处,但是代价很高,需要额外的缓冲区和复杂的内部连接,并且需要一个排序阶段和更宽的多路复用器。这些可能会导致交换开关的时钟周期变长,或者增加了选路延迟。缓冲区是与输入端口还是与输出端口相关,完全是一个视角问题。如果看做是输出端口缓冲区,主要特点是在一个时钟周期内,每个输出端口有足够的内部带宽来从每个输入端口接收一个信包。这些也能够用一个单个的输出FIFO 来实现,只不过它要求队列的内部时钟速率要比输入端口的时钟速率快n 倍。

  c 共享池:使用共享池,每个输入端口都将数据放到一个集中的内存中,每个输出端口从那里读数据。这种方法不会出现“排头”阻塞问题,因为只要有空间,每个输入输出端口都能像共享池写数据,而不管是传到哪个输出端口。这种方法的一个问题是如何将n 个输入端口的带宽匹配n 个输出端口的带宽。一种方法是使连到共享池的内部数据通路的宽度是链路的2n 倍,每个输入端口在写入共享池之前缓存2n 节片,每个输出端口取得2n 节片。共享池通常采用SRAM。

  d 虚拟通道缓冲:虚拟通道提供了另一种组织交换开关内部缓冲区的方法。为了支持虚拟通道,通过链路的数据流在到达输入端口时被分解后放到独立的通道缓冲区中。在通过交叉开关之前或者之后,被重新合并后进入输出端口。如果一个虚拟通道被阻塞,则其他的虚拟通道还能继续通向输出端口。尽管有可能所有的虚拟通道都选路到同一个输出端口,但是期望的输出端口覆盖率会好很多。

  4)输出调度

  在交换开关设计中还有一个主要的部分是调度算法,它决定在每个时钟周期选择要传输的信包。解决输出调度问题也有多种方法。一种简单的方法是将调度问题看作是n 个仲裁问题,每个输出端口一个。每个输入缓冲区都有请求线连向每个输出端口,且每个输出端口有一根授予线连到输入缓冲区。选路逻辑计算出欲发送到的输出端口,并置位跟选定的输出端口相连的请求线。输出端口调度逻辑在这些请求之间进行仲裁,选出一个并置位相应的授予信号线。然后,选中的输入缓冲逻辑就开始传输它的信包。

  另一个设计问题是选择什么样的仲裁算法,有多种方法可供选择,包括静态优先权、随机法、轮转法和老优先权法。每种方法都有不同的性能特征和实现复杂度。静态优先权法实现简单,只需要用一个简单的优先权编码器,然而在一个很大的网络里,可能会造成不确定的延迟。一般来说,给每个输入端口提供公平服务的调度算法性能会更好。轮转法需要一个额外的位,在每个时钟周期改变优先级的次序。老优先法虽然与随机法有同样的平均延迟,但延迟变化比随机法要小一些。我们采用的一种实现老优先法的办法是,在每个输出端口上设置一个输入端口号控制FIFO 队列。当一个输入缓冲区请求获得一个输出端口进行传输时,就将一个请求放入输入控制FIFO 队列中,在FIFO 队列中老的请求被授予输出端口。



  图 5 ×pipes 开关在不同技术库中的分析

  我们分别将×pipes 交换开关在4 个不同的库中进行不同的功耗/运行折衷(LP-LVT 和LP-HVT)分析,两个用65 纳米工艺,另两个用90 纳米工艺。在分析中,开关被充分的布局和路由,而且增加了一个时钟树。

  从结果(图 5)中可以看出,65 纳米库提供了更大的改进空间。事实上我们发现采用65 纳米库,功耗降低了50%,面积节省了40%~50%。同样重要的是,在相同的技术节点处两种不同库中所得出的结果有很大的不同。在65 纳米中,LP-HVT 库比LP-LVT 库有更少的功耗。而且,我们的结果表明和90 纳米库相比其操作空间增加了。例如,通过观察可行的时钟频率,LP-HVT65 纳米库可以达到的频率比90 纳米低50%,但是LP-LVT65 纳米库实际上比90 纳米库快25%。这一趋势说明在新的技术节点中设计者可以有新的自由度。

  3 结论

  目前的应用和技术趋势推动了从总线结构向片上网络的转变。片上网络不仅用于解决物理设计的难题,而且提高了带宽需求。然而,片上网络的设计性能和折衷在100 纳米以下的研究比较少。本文分析了片上网络的一个重要组成部分——交换开关。×pipes 是一个软模块库,我们将其运用于交换开关的设计。并且将其在65 纳米和90 纳米两种前提下进行综合分析,实验证明,65 纳米技术下的交换开关的性能更好,更适于目前低功耗的设计趋势。

  本文作者创新点:提出了一种新的交换开关结构,并将其在65 纳米及90 纳米库中进行综合分析,得出虽然65 纳米工艺有一定的缺点但总体而言还是有很大的研究价值和空间。


  
上一篇:基于sopc的电能谐波测量系统的设计
下一篇:一种基于8051核SoC引导程序的设计与实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料