一种片上网络的路由节点微结构的制作方法

文档序号:7686342阅读:119来源:国知局
专利名称:一种片上网络的路由节点微结构的制作方法
技术领域
本发明涉及一种路由节点微结构,具体地说,涉及一种片上网络 的路由节点微结构。
背景技术
随着电子技术的发展,复杂SoC受到越来越多的关注。在目前的 技术条件下,复杂SoC需要的物理基础——单片上集成十亿个以上的 门成为可能;同时,其广泛的应用范围,使得市场对复杂SoC的需求 大大增加。复杂SoC的应用领域很多,从安全系统、控制系统、个人 健康系统,到主流消费品领域,如多媒体处理、个人通信、个人的计 算、娱乐、视频/图象等等。事实上,目前针对这些应用的专用IC中, 大部份已经有了很高的复杂度。但是,随着科学研究和实现应用的逐 渐深入,现有的专用IC越来越不能满足人们对具有更强大功能的器 件的需求,更加复杂的SoC的实现技术便成为研究热点, 一些新的理 念和关键技术被提出来,并开始影响处理器的设计和复杂SoC的研 发。
目前最复杂的SoC,在一个芯片上所包含的处理器数目也不超过 十数个,更多数量的处理器的设计会面临一系列困难。另一方面,是 电子设计和制造技术的发展,可以在一个IC芯片上设计与集成足够 多的晶体管。但是,设计者常常不能够充分开发和使用IC中所有的 晶体管。到了 2003年,各类实时处理SoC的复杂性,已经远远落后
于现在的硅技术发展的水平。复杂SoC设计的生产力缺口己经较大, 并有继续扩大的趋势。
在目前的技术和需求的推动作用下,使用越来越多的处理器核和 大量可重复使用的IP模块,将它们集成在一个硅芯片上,将是未来 复杂SoC设计的基础。当处理器或IP数量达到上百或数百、甚至上 千时,芯片内部采用什么通信结构就变得越来越重要。当前在SoC设 计中,如S0PC技术、多处理器技术、SIMD技术等,总线是连接芯片 上的各个IP或处理器的主要方式。但是,现有的总线结构却有如下 的困难
一. 总线能有效连接的部件数量较少,而且随着总线连接部件的 数量增加,各个部件之间的冲突也会增加,这就会使得SoC的复杂性 受到限制;
二. 随着总线连接部件数量的增加,总线长度也会随之增长,但 是在SoC设计中,长的全局总线会造成SoC中的部件通信的瓶颈效应, 从而降低通信效率,甚至引发阻塞;
三. 将较多部件挂接在同一总线上,就要求所有的部件都具有标 准统一的总线接口,这会为各个部件的设计带来额外的开销;
四. 总线结构造成的通信瓶颈也会使得SoC的规模受到限制,由于 不能提供高效的通信模式,使得能利用的芯片中的晶体管数量受到限 制,从而造成SoC芯片性能受到限制。
五. 由于连接SoC中各个部件的是单一的总线,在进行扩展的时 候,必须为需扩展的部件设计能用于总线的接口,且各个部件的接口
必须统一,这就降低了SoC的设计灵活性和可扩展性。
因此在复杂SoC设计中,随着越来越多的IP被集成在单个硅芯 片上,可编程和可定制的片上通信结构越来越占据主导地位。由于有
相当丰富且价格便宜的特定功能的IP核,设计的重心就会集中在
如何实现有效的片上通信。而在片上网络体系结构中,其各个部件的 片上通信是通过部件所连接的路由节点来实现的,所以,路由节点是 片上网络通信的关键部分。

发明内容
本发明的目的是提供一种片上网络的路由节点微结构,取代现有 技术中片上网络采用的总线结构,解决现有技术中存在的缺陷,提高 片上网络的通信效率和性能。
为了实现上述目的,本发明所采用的技术方案如下 一种片上网络的路由节点微结构,由输入模块和输出模块组成, 其中,输入模块包括
头部译码模块,负责对进入路由节点的数据进行头部分析,并将
数据输入至数据缓存模块;输入缓存模块,用于缓存数据;输入控制 模块,用于翻译握手协议和对数据写入输入缓存模块的过程进行控 制;
而输出模块包括输出仲裁模块,主要作用是控制数据向输出缓 存模块输入;输出缓存模块,用来存储输入端口传入的数据,并在输 出控制器的控制下输出数据;输出控制模块,用于实现对输出链路的 控制。
所述头部译码模块进行头部分析的步骤包括 首先根据路由算法确定数据的输出端口;再向与输出端口对应的 VOQ发送请求信号;头部译码模块接受到VOQ发回的允许信号后,通
过虚拟通道选择器选择一个非空通道将数据输入至输入缓存模块。 所述虚拟通道选择器通过RR调度算法来实现非空通道的选择,
以及将数据输入至输入缓存模块。 所述RR调度算法包括如下步骤
首先将CPU处理一个数据包的传输时间等分为若干个时间片,并 为每个虚拟通道分配若干个时间片;然后将所有虚拟通道排成一个队 列,并从队列的起点开始选择一个含有数据的虚拟通道作为第一个向 输入缓存模块输入数据的非空通道;当第一个非空通道使用完自身所 有的时间片后,若第一个非空通道内的数据尚未输入完毕,则停止输 入,并将第一个非空通道排列至原队列的末尾,同时,按队列的先后 顺序选择第二个非空通道,并进行数据输入;当第二个非空通道使用 完自身所有的时间片后,若其数据尚未输入完毕,则停止输入,并将 第二个非空通道排列至第一个非空通道之后,同时,按照新队列的先
后顺序选择第三个非空通道,并进行数据输入;按照上述方法依次选 择队列中所有的非空通道进行数据输入,直到所有的非空通道将数据 全部输入至输入缓存模块。
所述输入缓存模块由至少一组虚输出队列组成,每组虚输出队列 又由至少一个虚拟通道组成,所有虚拟通道结构相同。
所述时间片为在两个相邻路由节点之间传输一个完整数据包所
需时间。
所述输出仲裁模块根据状态机的状态来控制数据向输出缓存模 块输入。
所述输出仲裁模块控制数据向输出缓存模块输入的步骤包括 首先在状态机的初始状态,判断输出FIFO是否为空,若输出FIFO 为空,则状态机状态保持不变;反之,则从输出FIFO中读出一个数 据,状态机从其初始状态转移到头部检测状态,并进行头部检测;头 部检测状态如检测到数据包头,那么状态机转移到数据传输状态进行 数据传输;否则,状态机转回其初始状态,并从输出FIFO中读出下 一个数据进行头部检测;状态机处于数据传输状态时,状态机根据下 一级路由接点的信息进行数据传输,知道数据传输完毕;数据传输完 毕后,若输出FIFO为非空,状态机直接转移至头部检测状态,进行 数据包头检测,并进行数据传输;反之,则回到状态机的初始状态等 待新数据到来。
所述输出控制模块根据本级输出缓存模块的状态对下级路由节 点的输入端口提出请求,并接受下级路由节点的输入端口发回的响应 信号,根据响应信号来判断是否输出数据。
对于具有多处理器的复杂SoC系统来说,路由节点的主要作用是 能独立于处理器完成并行的数据交换和通信,实现片上的网络通信, 并尽可能的提高通信效率,保证通信质量。
本发明将路由节点之间的微结构分为输入模块和输出模块,并对 输入模块和输出模块进行分别设计,并在数据传输过程中采用特殊的
调度算法进行控制,使数据传输效率得到提高,下面对输入模块和输 出模块进行详细说明。 一.输入模块
输入模块包括头部译码模块(HD)、输入缓存模块(IB)和输入 控制模块(IC)。
1.头部译码模块(HD)
头部译码模块负责对进入路由节点的数据进行头部分析,以确定 数据的路由。经过路由分析后,就可以确定数据将从路由节点的哪一 个输出端口输出,并将数据发送到输入缓存中对应输出端口的VOQ 中。如果该组V0Q有多个虚通道,则通过虚拟通道选择器选择一个非 空通道输入数据包,然后,向相应方向的VOQ发送请求信号,并接收 VOQ传回的允许信号,将输入送入VOQ中进行缓存。其中,虚通道选 择器通过RR (Round Robin)调度算法来实现,在后面将详细介绍 这种调度算法。
下面详细介绍RR调度算法。
RR调度算法,又称时间片轮循法,是一种经典的调度算法。在 分时系统中,现有的RR调度算法是将CPU的处理时间分为若干时间 片, 一个时间片从几毫秒到几百毫秒不等。系统给每一个进程分配若 干个时间片,被调度选中的进程使用完系统分配的时间片之后,系统 就会发生调度。如果该进程还未完成要求的任务,则调度程序暂时停 止该进程的执行,将它排到就绪对列的末尾,等待下一次调度。同时, 调度程序会调度当前就绪队列中的下一个进程。这样,就可以保证就
绪队列中的所有进程在- -个给定的时间内均能得到执行。
在本发明中,对RR调度算法稍作修改,将它作为片上网络路由 节点的仲裁算法用在虚拟通道选择以及输出端口对输入端口请求的 响应上。在设计中,时间片比较固定, 一般为传输一个完整数据包所 需要的时间,而各个数据包所在的不同虚拟通道相当于分时系统的进 程。图3说明了本发明中采用的RR调度算法的调度方式,图中,假 设系统有8个需调度的虚拟通道,调度的起点在A通道,通道中的数 据包数目各不相同。首先,由于A通道有数据包可发送,故第l轮调 度A通道,然后在第2轮调度中,先检查B通道,由于B通道没有数 据包可发送,所以跳过B通道,检查C通道,发现C通道有数据包, 因而C被选出。第3轮调度,先检査D通道,从而调度D通道,以此 类推,其中第6轮调度完成了对所有通道的检查,重新从A通道开始 检査;第8轮调度由于D通道在第3轮调度中把一个数据包发送出去 后,处于无数据包可发状态,从而调度E通道。从图中可以看出要实 现Round Robin算法,关键是从起始的通道开始,找到第一个存有数 据包的虚拟通道。
具体实现RR调度算法的实际逻辑结构如图4所示。通道状态寄 存器用来存放需调度虚拟通道(即该虚拟通道内是否有数据包)的状 态,它是Round Robin调度的基础,准备好的虚拟通道才可以被调度, 没准备好的(即没有数据包的虚拟通道)不能被调度。以4个虚拟通 道为例,通道状态寄存器就是4位的寄存器,通道状态由前一级FIFO 的empty信号给出,按照虚拟通道排列的先后顺序,哪一位排在前面
的通道为"1"则表示哪一个虚拟通道非空,有数据包可传输,则该 虚拟通道第--个被调度。
桶式移位器根据调整逻辑送过来的移位次数在一个时钟周期内
对通道状态寄存器完成移位操作。它是现代高速RISC微处理芯片中 采用的结构,具有使各种位数的移位操作都能在单个周期内完成的能 力,这对RR算法的实现很关键。
桶式移位器完成移位操作后,将所得的结果送到优先编码器进行 优先编码。
调整逻辑主要是一个累加器,它把优先级编码器的编码结果加1 后进行累加,这就相当于把每次Round Robin调度的开始点保存在累 加器中。累加器的位数由调度通道数决定,例如4个通道需要2位累 加器。
2. 输入缓存模块(IB)
数据缓存模块用于缓存数据,主要是由M组虚输出队列组成,每 一组虚输出队列(V0Q)对应一个方向。每一组虚输出队列中又可以 有N (N>1)个虚拟通道,当N4的时候,是最简单的形式。此处的 虚拟通道并不对应的代表每个输出端口,所有的虚拟通道结构都相 同。虚拟通道的宽度就是数据包的宽度,虚拟通道的深度可以变化。 输入缓存模块是输入模块与输出模块通信的接口,输出模块通过检测 输入缓存的状态来获得从输入端口传入的数据,从而实现数据在片上 网络路由节点内部的传送。
3. 输入控制模块(IC)
输入控制模块的作用是翻译握手协议和冇选择的S入输入缓存
的虚通道。valid表示上级路由节点有效数据来临,请求输入,当--个完整的数据包传输完毕,上级的请求信号放弃请求;ack信号是输 入确认信号,当来自IB模块的Full信号不全为高电平l时,说明至 少有1组V0Q还有剩余存储空间,可以接收数据包,此时IC将ack 响应信号置高电平,通知上级路由节点可以开始传输数据;若数据包 传输过程中,所使用的虚拟通道达到满状态,则停止响应,并记录当 前数据包与所使用的虚通道标号,以备下次使用。同时,转换到下一 个非满的虚拟通道,准备开始新的数据包传输。 二.输出模块
输出模块采用分布式仲裁方式,各个输出端口都有对应的独立仲 裁器。仲裁器采用RR算法,以公平轮循的方式对各个输入请求进行 响应,并产生多路复用器的选择信号sel。当测到包尾eop信号时, 说明一个完整的数据包已经传输完成,需要释放gnt信号,并使用数 据包尾部e叩信号来触发下一次轮循。输出模块包括输出缓存模块 (0B)、输出控制模块(0C)和输出仲裁模块(0A)三个部分。
1.输出仲裁模块(0A)
输出仲裁模块较复杂,它的主要作用是实现数据写入到输出缓存 中。输出仲裁通过状态信号线获取输入缓存的信息,并产生读信号反 馈给输入端口。当有多个端口同时请求一个输出端口时,输出仲裁根 据设定好的仲裁方式(即RR算法)对输入端口进行仲裁,最终选择 一个输入端口输入数据。根据输出缓存模块的状态以及下级路由节点
的状态,通过状态机的方式来实现,其状态转移情况如图5所示。
在图5中,IDLE空闲状态为状态机的初始状态,如果在此状态 下,输出FIFO始终为空,那么状态机就在此状态下等待,直到输出 FIF0非空,从FIFO中读出一个数据,然后转移到头部检测状态。在 头部检测状态(Header Detector)如检测到数据包头,那么状态机 转移到数据传输状态(Data Transfer)进行数据传输;否则,状态 机转回IDLE,再从FIFO中读出下一个数据进行头部检测。在数据传 输状态(Data Transfer)下,状态机就根据下一级路由节点的信息 进行数据传输,直到包尾到来,如果此时输出FIFO为非空,就说明 FIFO中还有数据可以传输,状态机直接转移到头部检测状态;否则, 如果FIFO为空,就转移到IDLE,以等待数据的到来。
2. 输出缓存模块(OB)
输出缓存用来存储输入端口传入的数据,并在输出控制模块的控 制下输出数据。仲裁器根据其内部的仲裁结果,以及输出缓存的full 信号,产生写信号,控制数据从输入端口的写入。
3. 输出控制模块(0C)
输出控制模块主要进行输出链路的控制。它根据本级输出缓存的 状态对下级路由节点的输入端口提出请求,并接收响应信号,从而控 制数据输出。其产生的各输出信号的时序关系如图6所示。
通过对上述模块的设计,本发明实现了一种片上网络的通信结 构,取代现有技术中的总线结构,解决了因总线结构带来的通信瓶颈 问题,不仅保证了路由节点之间的通信质量,而且提高了通信效率。
本发明主要应用于片上网络的内部路由节点通信。 图l为本发明的结构框图。
图2为本发明中RR调度算法示意图。
图3为本发明中RR调度算法的逻辑结构图。
图4为本发明中输出仲裁模块的输出仲裁状态转移图。
图5为本发明中输出控制模块的相关信号时序关系图。
图6为本发明-实施例的Mesh结构示意图。
图7为实施本发明实施例的现有技术的总线结构示意图。
图8为本发明与总线结构在相同环境下实施本发明的实施例的
延时性能比较图。
图9为本发明与总线结构在相同环境下实施本发明的实施例的
归一化吞吐性能比较图。
具体实施例方式
下面以由标准的5个输出端口和5个输入端口组成的输入模块 和输出模块为例,对本发明作具体说明。
在硬件上,输入模块由5个输入端口组成,5个输入端口分别代 表东、南、西、北和本地5个方向,本地方向与本地处理器相连。


图1中虚线部分表示输入端口北向输出端口西传输的结构示意 图,其他端口之间的传输与图1中虚线部分结构相同。
如图1所示,在本发明中,当一个数据包要从上一级节点传向 当前节点时,首先会将数据包的携带有路由信息的头部flit作为请求
信号发往当前节点。在当前节点收到头部flit之后,由头部解析模块 根据所采用的路由算法进行头部解析,则可以知道此数据包将要发往 的方向。若此方向的虚拟通道有足够剩余的空间接收数据包,当前节 点就会拉高确认信号以便让上一级节点开始此次传输,并选通
DEMUX,确定对应的虚拟通道。上一级节点收到为高的确认信号后, 拉高有效信号,并将数据包以flit为单位从FIFO中读出,并发送到 当前节点对应的虚拟通道中。自此,数据包就从上一级节点发送到了 当前节点输入模块的虚拟通道中。当虚拟通道检测到其中有数据包 时,就会发送一个为高的请求信号到输出模块。输出模块可能同时收 到来自不同方向的几个请求信号,在这种情况下,输出模块就会根据 RR仲裁器,从中选择一个方向进行响应——将其它方向的允许信号 拉低,将所选中方向的允许信号拉高并选通MUX为此方向。当虚拟 通道收到为高的允许信号时,就会从FIFO中以flit为单位将数据包 读出,并发送到输出端口的FIFO中,这样就完成了两级节点之间的 数据包传输。在采用本结构的NOC中,数据包就是以这样一种方式, 从源节点, 一级一级的发送到目的节点。
如图7所示,在传统的总线结构中,所有的节点都挂在一条总 线上,并由一个总线仲裁器来控制它们之间的通信。在总线结构中, 如果一个节点要发起通信(一般称此节点为Master,接收通信的节点 为Slave),它首先会检测此时总线是否已经被占用,如果没有被占用, 则将包含slave地址的请求发到总线上;如果总线己经被占用了,则 等待至总线被释放时,再发送请求。总线控制器收到了不同的请求之
后,会根据其仲裁算法选择一个master/slave对,允许其通信,并阻 止其它master/slave对的通信。当-个master收到允许之后,就会将 数据放到总线上,而对应的slave就会从总线上获取该数据。在这一 次通信完成之前,总线都是被此master/slave对所独享。其它节点若 要发起通信就只有等总线被释放之后,再发起请求。
下面对本发明所设计的片上网络路由节点微结构所构成的片上 网络与现有技术中总线结构的性能进行比较。片上网络和总线结构的 大小都为16个节点。本发明设计的片上网络采用Mesh结构,如图6 所示;现有技术的总线结构如图7所示。在图6中,IP表示处理器核, R为片上网络中的路由器,NI为IP与路由器的接口。在图7中,IP 表示处理器核,I表示处理器核与总线的接口。在将等数量的IP连接 成片上网络结构和总线结构后,分别对两者的性能进行仿真,结果表 明本发明所设计的路由节点构成的片上网络,性能要大大优于传统的 总线结构。上述性能分析是在均匀通信模式的情况下得到的,在这种 模式中,所有的IP都按照相等的数量向其他的IP传送数据包,但是 每次传送的数据的目的地址是随机的。分析性能时主要考虑了多处理 器核通信中的两个重要指标平均延时和归一化吞吐率。平均延时是 指数据通过片上网络(或总线)所消耗的平均时间,它反应了整个结 构对数据传输时间的影响,可以用总的延时除以总的数据量的平均值 来得到。归一化吞吐率反应的是数据在片上网络(或总线)中能被正 确传送的概率,它可以用在一段时间内正确收到的数据包除以注入的 数据包的比值来表示。在同样的注入率(单位时间内注入的数据量)
情况下,延吋越低,归一化吞吐率越高,表示性能越好。图8和图9 分别为片上网络与总线结构的延时和归-化吞吐率性能的仿真比较结果。
权利要求
1. 一种片上网络的路由节点微结构,其特征在于,所述片上网络的路由节点微结构包括输入模块和输出模块,其中,输入模块包括头部译码模块,负责对进入路由节点的数据进行头部分析,并将数据输入至数据缓存模块;输入缓存模块,用于缓存数据;输入控制模块,用于翻译握手协议和对数据写入输入缓存模块的过程进行控制;而输出模块包括输出仲裁模块,主要作用是控制数据向输出缓存模块输入;输出缓存模块,用来存储输入端口传入的数据,并在输出控制器的控制下输出数据;输出控制模块,用于实现对输出链路的控制。
2. 根据权利要求1所述的片上网络的路由节点微结构,其特征在 于,所述头部译码模块进行头部分析的步骤包括首先通过路由算法确定数据的输出端口; 再向与输出端口对应的V0Q发送请求信号;头部译码模块接受到V0Q发回的允许信号后,通过虚拟通道选择 器选择一个非空通道将数据输入至输入缓存模块。
3. 根据权利要求2所述的片上网络的路由节点微结构,其特征在 于,所述虚拟通道选择器通过RR调度算法来实现非空通道的选择, 以及将数据输入至输入缓存模块。
4. 根据权利要求3所述的片上网络的路由节点微结构,其特征在于,所述RR调度算法包括如下歩骤首先将CPU处理-"个数据包的传输时间等分为若干个时间片,并 为每个虚拟通道分配若干个时间片;然后将所有虚拟通道排成 一个队列,并从队列的起点开始选择一 个含有数据的虚拟通道作为第一个向输入缓存模块输入数据的非空通道;当第一个非空通道使用完自身所有的时间片后,若第一个非空通 道内的数据尚未输入完毕,则停止输入,并将第一个非空通道排列至 原队列的末尾,同时,按队列的先后顺序选择第二个非空通道,并进 行数据输入;当第二个非空通道使用完自身所有的时间片后,若其数据尚未输 入完毕,则停止输入,并将第二个非空通道排列至第一个非空通道之 后,同时,按照新队列的先后顺序选择第三个非空通道,并进行数据 输入;按照上述方法依次选择队列中所有的非空通道进行数据输入,直 到所有的非空通道将数据全部输入至输入缓存模块。
5. 根据权利要求1所述的片上网络的路由节点微结构,其特征在 于,所述输入缓存模块由至少一组虚输出队列组成,每组虚输出队列 又由至少一个虚拟通道组成,所有虚拟通道结构相同。
6. 根据权利要求4所述的片上网络的路由节点微结构,其特征在 于,所述时间片为在两个相邻路由节点之间传输一个完整数据包所需 时间。
7. 根据权利要求1所述的片上网络的路由节点微结构,其特征在 于,所述输出仲裁模块根据状态机的状态来控制数据向输出缓存模块 输入。
8. 根据权利要求6所述的片上网络的路由节点微结构,其特征在 于,所述输出仲裁模块控制数据向输出缓存模块输入的步骤包括首先在状态机的初始状态,判断输出FIFO是否为空,若输出FIFO 为空,则状态机状态保持不变;反之,则从输出FIFO中读出一个数 据,状态机从其初始状态转移到头部检测状态,并进行头部检测;头部检测状态如检测到数据包头,那么状态机转移到数据传输状 态进行数据传输;否则,状态机转回其初始状态,并从输出FIFO中 读出下一个数据进行头部检测;状态机处于数据传输状态时,状态机根据下一级路由接点的信息 进行数据传输,知道数据传输完毕;数据传输完毕后,若输出FIFO为非空,状态机直接转移至头部 检测状态,进行数据包头检测,并进行数据传输;反之;则回到状态 机的初始状态等待新数据到来。
9. 根据权利要求1所述的片上网络的路由节点微结构,其特征在 于,所述输出控制模块根据本级输出缓存模块的状态对下级路由节点 的输入端口提出请求,并接受下级路由节点的输入端口发回的响应信 号,根据响应信号来判断是否输出数据。
全文摘要
本发明公开了一种片上网络的路由节点微结构,该片上网络的路由节点微结构由头部译码模块、输入缓存模块、输入控制模块、输出仲裁模块、输出缓存模块和输出控制模块组成,头部译码模块对从上一级路由节点进行本级路由节点的数据进行头部分析,并将数据输入至输入缓存模块,输入缓存模块用于数据的临时存储,并在输入控制模块的作用下向输出仲裁模块输入数据;数据进入输出仲裁模块后,输出仲裁模块根据输出缓存模块的状态来决定是否向输出缓存模块输出数据,而输出控制模块则对整个输出链路进行控制,以实现对下一级路由接点传输数据。通过本发明所述的路由节点微结构,不仅可以实现片上网络的路由节点间的数据传输,还能大大提高传输效率。
文档编号H04L12/56GK101383712SQ20081004628
公开日2009年3月11日 申请日期2008年10月16日 优先权日2008年10月16日
发明者桓 李, 李玉柏, 杨中明, 松 柴, 畅 武, 坚 王 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1