一种片上网络路由器输出缓冲系统的制作方法

文档序号:7857359阅读:393来源:国知局
专利名称:一种片上网络路由器输出缓冲系统的制作方法
技术领域
本发明涉及一种输出缓冲系统,特别涉及一种片上网络路由器的输出缓冲系统。
背景技术
片上多核系统主要是通过片上 网络来进行核间通讯的。片上网络由网络适配器、路由结点、链路等基础部件组成,其中路由结点无疑是片上网络的关键部件。路由结点包含有输入缓冲、输出缓冲、交叉开关、路由仲裁单元和链路控制单元等元器件,其中交叉开关根据路由仲裁单元得出的路线将相应的输入缓冲和输出缓冲相连,实现消息转发。如图I所示为常规的使用交叉开关来连接输入缓冲和输出缓冲的方式,图中四个输入端口连接着四个独立的输入缓冲,输入缓冲通过一个4*4的交叉开关,连接四个独立的输出缓冲,每个输出缓冲连接着输出端口。在目前大多数的片上网络体系结构中,缓冲占据着路由器主要面积,而缓冲在突然爆发的阻塞情况下是非常有用的,它可以吸收部分数据,从而解决或缓解这种突发情况,因此,在不增加总缓冲区大小的前提下,提高每个端口可用缓冲大小,从而提高网络的吞吐量,是片上网络性能改进的一个努力方向。通常情况下路由结点中各输出端口的缓冲数量是相等的,那么如果一个路由结点上,绝大多数的输入消息都是向同一个输出方向转发时,就会发生某一条输出通道拥塞,其它的输出通道空闲的情况,这样空闲的输出通道就浪费了缓冲资源。因此,针对这种不均匀的消息转发模式,共享缓冲资源是提高缓冲利用率,改善缓冲性能的一个途径。如果使用软件的方式动态共享缓冲资源,势必会降低运行速度,提高计算复杂度,因此,具有硬件控制的共享缓冲队列将是更优的选择。共享缓冲资源可以由两种方式实现,一种是根据实际应用的需求,将原本平均分配的缓冲资源调度给阻塞比较严重的通道上使用,是借用其它通道空闲缓冲的方式;另一种是将所有的缓冲资源整合起来,在需要时动态的为各通道分配所需的缓冲;相比较两种方法,后者对缓冲的分配更直接、有效。在片上网络路由器中,交叉开关是连接输入缓冲和输出缓冲的枢纽,它有多种连接模式,通过时钟触发循环的更替,并结合路由仲裁单元计算的连接方式,实现消息从输入缓冲至输出缓冲的准确转发。但交叉开关十分消耗能源,如能试图用其他方式实现交叉开关的功能,从而取代它,将对减少片上网络的能量消耗有所帮助。

发明内容
本发明的目的在于提高片上网络路由器输出缓冲的利用率,尤其针对网络中不均匀的消息转发模式,改善网络的拥塞状况。同时通过增加硬件控制部件,取代交叉开关的基本功能,更快更有效的共享缓冲资源。本发明的目的是通过以下技术方案实现的一种片上网络路由器输出缓冲系统,包括共享输出缓冲存储器、可用地址队列模块、与输出端口数对应的通道队列模块,设路由器有I个输入端口和J个输出端口,则路由器的每个输入端口通过消息数据线RDATA_i与存储器连接,每个输出端口通过消息数据线SDATA_j与存储器连接;可用地址队列模块与存储器、每个通道队列模块之间通过I条输入地址数据线RAddr_i连接;每个通道队列模块有一条输出地址数据线SAddr_j分别连接到存储器、可用地址队列模块;其中共享输出缓冲存储器用于存储被传递的消息,在输入消息时,可用地址队列模块向存储器输入消息的存储地址,共享输出缓冲存储器将从输入端口接收的消息存入对应的地址中;在输出消息时,输出端口对应的通道队列模块向存储器输入消息的存储地址,存储器将该地址对应的消息输出到对应的输出端口;可用地址队列模块用环形队列的方式,存放共享 输出缓冲存储器中尚未使用的消息存储单元地址,该队列设有PTail指针指向可用地址队列的队尾,并且设有I个pAddr_i指针指向下一个将要分配给来自输入端口 i的消息存储单元地址;当从输入端口 i接收一个要分配给输出端口 j的消息时,可用地址队列模块将该输入端口对应的可用地址即pAddr_i指针指向的地址传输到存储器和对应的通道队列模块,并为pAddr_i分配新的可用地址;当输出端口 j要输出消息时,可用地址队列模块将从输出端口 j对应的通道队列模块接收到的地址数据进行回收,即插入到可用地址队列的队尾;通道队列模块用环形队列的形式存放分配给对应输出端口的消息在共享输出缓冲存储器中的地址,当从输入端口 i接收一个需要分配给输出端口 j的消息时,端口 j对应的通道队列模块从可用地址队列模块接收地址数据,并存储到自己的队列中;当输出端口j要输出数据时,端口 j对应的通道队列模块将队首的地址数据传输到存储器和可用地址队列I吴块。使用本发明提供的片上网络路由器输出缓冲系统接收消息的步骤是a)可用地址队列模块判断共享输出缓冲存储器是否有可用空间,即判断可用地址队列是否为空,并告知输入端口一方;b)如共享输出缓冲存储器有可用空间,且输入端口 i要发送消息至输出端口 j,则可用地址队列模块将pAddr_i所指向的地址值发送给共享输出缓冲存储器和与输出端口 j对应的通道队列模块,并使pAddr_i指向一个新的可用地址;c)共享输出缓冲存储器根据从可用地址队列模块接收到的地址值,将从输入端口接收到的消息存放在对应的存储空间内;d)与输出端口 j对应的通道地址队列模块将从可用地址队列模块接收到的地址值插入Tail所指的队列尾端,并将Tail指针后移一位。发送消息的步骤为a)通道队列模块判断对应的输出端口是否有要发送的消息,即判断通道队列是否为空,并告知输出端口一方;b)如通道队列不为空并且输出端口可发送消息,则对应的通道队列模块将队列Head指针所指向的地址值发送给共享输出缓冲存储器和可用地址队列模块,并将Head指针后移一位;c)共享输出缓冲存储器根据从通道队列模块接收到的地址值,将存放在对应存储空间的消息发送给与通道队列模块对应的输出端口;d)可用地址队列模块将从通道队列模块接收到的地址值插入pTail所指的队列尾端,并将PTail指针后移一位。有益效果本发明将所有输出端口的缓冲资源整合到一起,统一由硬件动态分配管理,支持多端口并行读写,通过模块间的协同工作,实现了交叉开关的基本功能,从而取代了交叉开关。本发明不仅提高了每个端口的可用缓冲数量,进而提高网络的吞吐量,而且更有效的解决了在不均匀的消息转发模式下缓冲利用率低的问题,改善了片上网络对拥塞的承受能力。


图I为交叉开关缓冲连接模式图;图2为共享缓冲队列的缓冲连接模式图;图3为共享缓冲队列的结构示意图。
具体实施例方式下面结合附图,具体说明本发明的优选实施方式。然而,应该注意实施例只是本发明的一种实施方式,因此不能被认为是对本发明范围的限制(如端口数量),因为本发明可允许其他等效的实施方式。针对图I所示的常规的使用交叉开关来连接输入缓冲和输出缓冲的方式,使用本发明设计后,交叉开关和四个独立的输出缓冲被整合到一起,形成一个共享输出缓冲存储器,如图2所示,图中BUFFER QUEUE为本发明的输出缓冲系统。图3是BUFFER QUEUE内部的详细结构图,其主要由三种类型的子模块构成共享输出缓冲存储器Shared MEM、四个通道队列模块Queue_0、Queue_l、Queue_2、Queue_3和可用地址队列模块Addr_Queue。同时设置Trans_Copy模块实现数据分流,如果路由仲裁单元判断输入端口 i的消息要转发至输出端口 j,通过RQueue_i信号告知Trans_Copy, Trans_Copy模块将信息通过Trans j_i信号通知给Queue_j模块。共享输出缓冲存储器Shared MEM的功能为无论是发往哪个输出端口的消息,都会被存储在该模块中,由输出端口所对应的通道队列模块记录下存放消息的地址。可根据应用的实际情况选择合适大小的存储器。在本实施例中将存储空间设计成32Byte,并假设每个消息长为8bit,每个输出缓冲队列平均缓存8条消息,总共可存放32条消息。通道队列模块Queue_j :大小为20byte (32*5bit)的队列,它是一个四入一出的多端口队列,它可以接受来自四个输入通道的消息,并连接至对应的输出端口。Queue_j中存储的内容不是消息本身,而是消息在Shared MEM中存储的地址。逻辑上Queue_j是一个环形队列,设有Head和Tail指针。Head指向下一个将提供给输出端口的消息地址;Tail指向队尾最后一个消息。可用地址队列模块Addr_Queue :大小为20byte (32*5bit)的队列,存放着所有Shared MEM中尚未使用的消息存储单元地址,它是一个四入四出的多端口队列,它根据路由仲裁结果,对来自四个输入端口 Buffer的转发请求,分配Shared MEM中的存储空间,并将已分配的存储地址插入到相应的Queue_j的队尾。每当Queue_j发送一个消息,会归还一个存储空间,将这个存储空间地址插到Addr_Queue的队尾。
逻辑上Addr_Queue也是一个环形队列,它有5个指针,分别是pAddr_0、pAddr_l、pAddr_2>pAddr_3和pTail,pAddr_i指向为下一个来自输入端口 i的消息所分配的存储单元地址,pTail指向队列的尾部。Queue_j和Addr_Queue两个模块完成了虚拟缓冲层上的功能,这两个模块协同工作,使用地址表示的方式完成了四个原本独立的缓冲队列的逻辑功能,而消息实体则存放在 Shared MEM 中。本实施例中,共享输出缓冲存储器支持并行的多端口写和多端口读,写端口数与路由器输入端口数相同,读端口数与路由器输出端口数相同,从而可以提高读写速度。通道队列模块的个数与路由器输出端口的个数相同,且一一对应;通道队列模块是一个支持并行的多入一出的环形队列,通道队列模块中队列的最大长度与共享输出缓冲存储器中存储 单元个数相同。可用地址队列模块中pAddr_i指针的个数与路由器输入端口的个数相同,且一一对应;可用地址队列模块是一个支持并行的多入多出的环形队列;可用地址队列模块中队列的最大长度与共享输出缓冲存储器中存储单元个数相同。在本实施例中,设输入端口数为I,输出端口数为J,输入端口与可用地址队列模块之间还连接有I条输入信号线RMSG_Ri和I条地址满信号线NFull_i,可用地址队列模块与共享输出缓冲存储器之间连接有I条输入信号线REn_i,每个通道队列模块与共享输出缓冲存储器之间还连接有一条输出信号线SEn_j,且每个通道队列模块与对应输出端口之间通过非空信号线NEmpty_j和输出端口可用信号线SACK_j连接;本实施例中,当接收一个消息时,执行步骤如下a)Addr_Queue模块检查pAddr_i指针是否和pTail指针重合,如果没有重合,说明可用地址队列非空,则NFull」置有效值,否则,NFull_i置无效值;b)如果NFull」有效,且输入端口 i有消息要发送,将消息内容赋给数据总线RDATA_i,并保持有效,置RMSG_Ri信号为有效值;如Addr_Queue接收到有效的RMSG_Ri信号,则将pAddr_i指针所指内容由RAddr_i信号线传递给Shared MEM模块和Queue_j模块,同时使REn_i信号有效;Addr_Queue给pAddr_i分配新的可用地址,如果没有可用地址,将pTail 的值赋给 pAddr_i ;c) Shared MEM模块一旦检测到W_i信号即REn_i有效,则将RDATA_i上的消息存储到RAddr_i地址所指的存储单元里;d) Queue_j模块一旦检测到Trans j_i信号有效,则将RAddr_i地址插入通道队列Tail指针所指的队尾,并将Tail指针后移一位。如要发送一个消息,步骤如下a)通道队列模块检查Head指针是否和Tail指针重合,如果没有重合,说明通道队列非空,则NEmpty_j置有效值,否则,NEmpty_j置无效值;b)如果NEmpty_j有效,且输出端口可以发送消息,返回有效的SACK_j信号,Queue_j 一旦检测到SACK_j有效,则将Head所指的地址通过SAddrJ发送给Shared MEM模块和Addr_Queue模块,且将SEnJ信号置为有效值,Head指针后移一位;c) Shared MEM模块一旦检测到RJ即SEnJ信号有效,则将SAddrJ地址所指的存储单元中的消息内容通过数据总线SDATA_j传递给输出端口 ;d) Addr_Queue模块将接收到的SAddr_j地址值插入到pTail所指的队列尾端,并将pTail指针后移一位。应该理解的是,以上所述仅为 本发明的具体实施方式
,并不用于限定本发明的保护范围,凡是在本发明的精神和原则之内,对上述内容所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种片上网络路由器输出缓冲系统,其特征在于,包括共享输出缓冲存储器、可用地址队列模块、与输出端口数对应的通道队列模块,设路由器有I个输入端口和J个输出端ロ,则路由器的每个输入端ロ通过消息数据线RDATAj与存储器连接,每个输出端ロ通过消息数据线SDATA_j与存储器连接;可用地址队列模块与存储器、每个通道队列模块之间通过I条输入地址数据线RAddrj连接;每个通道队列模块有一条输出地址数据线SAddr_j分别连接到存储器、可用地址队列模块;其中 共享输出缓冲存储器用于存储被传递的消息,在输入消息时,可用地址队列模块向存储器输入消息的存储地址,共享输出缓冲存储器将从输入端ロ接收的消息存入对应的地址中;在输出消息时,输出端ロ对应的通道队列模块向存储器输入消息的存储地址,存储器将该地址对应的消息输出到对应的输出端ロ 可用地址队列模块用环形队列的方式,存放共享输出缓冲存储器中尚未使用的消息存储单元地址,该队列设有PTail指针指向可用地址队列的队尾,并且设有I个pAddr_i指针指向下一个将要分配给来自输入端ロ i的消息存储单元地址;当从输入端ロ i接收ー个要分配给输出端ロ j的消息时,可用地址队列模块将该输入端ロ对应的可用地址即pAddr_i指针指向的地址传输到存储器和对应的通道队列模块,并为PAddrj分配新的可用地址;当输出端ロ j要输出消息时,可用地址队列模块将从输出端ロ j对应的通道队列模块接收到的地址数据进行回收,即插入到可用地址队列的队尾; 通道队列模块用环形队列的形式存放分配给对应输出端ロ的消息在共享输出缓冲存储器中的地址,当从输入端ロ i接收ー个需要分配给输出端ロ j的消息时,端ロ j对应的通道队列模块从可用地址队列模块接收地址数据,并存储到自己的队列中;当输出端ロ j要输出数据时,端ロ j对应的通道队列模块将队首的地址数据传输到存储器和可用地址队列模块。
2.根据权利要求I所述的片上网络路由器输出缓冲系统,其特征在干,输出缓冲系统接收消息的步骤是 a)可用地址队列模块判断共享输出缓冲存储器是否有可用空间,即判断可用地址队列是否为空,并告知输入端ロー方; b)如共享输出缓冲存储器有可用空间,且输入端ロi要发送消息至输出端ロ j,则可用地址队列模块将pAddr_i所指向的地址值发送给共享输出缓冲存储器和与输出端ロ j对应的通道队列模块,并使pAddr_i指向一个新的可用地址; c)共享输出缓冲存储器根据从可用地址队列模块接收到的地址值,将从输入端ロ接收到的消息存放在对应的存储空间内; d)与输出端ロj对应的通道地址队列模块将从可用地址队列模块接收到的地址值插入Tail所指的队列尾端,并将Tail指针后移一位。
3.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,输出缓冲系统发送消息的步骤为 a)通道队列模块判断对应的输出端ロ是否有要发送的消息,即判断通道队列是否为空,并告知输出端ロー方; b)如通道队列不为空并且输出端ロ可发送消息,则对应的通道队列模块将队列Head指针所指向的地址值发送给共享输出缓冲存储器和可用地址队列模块,并将Head指针后移一位; C)共享输出缓冲存储器根据从通道队列模块接收到的地址值,将存放在对应存储空间的消息发送给与通道队列模块对应的输出端ロ; d)可用地址队列模块将从通道队列模块接收到的地址值插入PTail所指的队列尾端,并将pTail指针后移一位。
4.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,共享输出缓冲存储器支持并行的多端ロ写和多端ロ读,写端口数与路由器输入端口数相同,读端口数与路由器输出端口数相同。
5.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,通道队列模块的个数与路由器输出端ロ的个数相同,且一一对应;通道队列模块是ー个支持并行的多入一出的环形队列,通道队列模块中队列的最大长度与共享输出缓冲存储器中存储单元个数相同。
6.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,可用地址队列模块中pAddr_i指针的个数与路由器输入端ロ的个数相同,且一一对应;可用地址队列模块是ー个支持并行的多入多出的环形队列;可用地址队列模块中队列的最大长度与共享输出缓冲存储器中存储单元个数相同。
7.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,设置Trans_C0py模块实现数据分流,如果路由仲裁単元判断输入端ロ i的消息要转发至输出端ロ j,通过RQueue_i信号告知Trans_Copy, Trans_Copy模块将信息通过Transj_i信号通知给Queue_j模块。
8.根据权利要求I或2所述的片上网络路由器输出缓冲系统,其特征在于,输入端ロ与可用地址队列模块之间还连接有I条输入信号线RMSG_Ri和I条地址满信号线NFull_i,可用地址队列模块与共享输出缓冲存储器之间连接有I条输入信号线REn_i,每个通道队列模块与共享输出缓冲存储器之间还连接有一条输出信号线SEn_j,且每个通道队列模块与对应输出端ロ之间通过非空信号线NEmpty_j和输出端ロ可用信号线SACK_j连接。
9.根据权利要求8所述的片上网络路由器输出缓冲系统,其特征在于,当接收ー个消息时,执行步骤如下 a)Addr_Queue模块检查pAddr_i指针是否和pTail指针重合,如果没有重合,说明可用地址队列非空,则NFull_i置有效值,否则,NFul l_i置无效值; b)如果NFull_i有效,且输入端ロi有消息要发送,将消息内容赋给数据总线RDATA_i,并保持有效,置RMSG_Ri信号为有效值;如Addr_Queue接收到有效的RMSG_Ri信号,则将pAddr_i指针所指内容由RAddr_i信号线传递给Shared MEM模块和Queue_j模块,同时使REn_i信号有效;Addr_Queue给pAddr_i分配新的可用地址,如果没有可用地址,将pTail的值赋给pAddr_i ; c)Shared MEM模块一旦检测到W_i信号即REn_i有效,则将RDATA_i上的消息存储到RAddr_i地址所指的存储单元里; d)Queue_j模块一旦检测到Trans j_i信号有效,则将RAddr_i地址插入通道队列Tail指针所指的队尾,并将Tail指针后移一位。
10.根据权利要求8所述的片上网络路由器输出缓冲系统,其特征在于,如要发送ー个消息,步骤如下 a)通道队列模块检查Head指针是否和Tail指针重合,如果没有重合,说明通道队列非空,则NEmptyJ置有效值,否则,NEmptyJ置无效值; b)如果NEmpty_j有效,且输出端ロ可以发送消息,返回有效的SACK_j信号,Queue_j一旦检测到SACKJ有效,则将Head所指的地址通过SAddrJ发送给Shared MEM模块和Addr_Queue模块,且将SEnJ信号置为有效值,Head指针后移一位; c)Shared MEM模块一旦检测到RJ即SEnJ信号有效,则将SAddrJ地址所指的存储 単元中的消息内容通过数据总线SDATA_j传递给输出端ロ ; d)Addr_Queue模块将接收到的SAddr_j地址值插入到pTail所指的队列尾端,并将pTail指针后移一位。
全文摘要
本发明涉及一种片上网络路由器输出缓冲系统,包括共享输出缓冲存储器、可用地址队列模块、与输出端口数对应的通道队列模块,设路由器有I个输入端口和J个输出端口,则路由器的每个输入端口通过消息数据线RDATA_i与存储器连接,每个输出端口通过消息数据线SDATA_j与存储器连接;可用地址队列模块与存储器、每个通道队列模块之间通过I条输入地址数据线RAddr_i连接;每个通道队列模块有一条输出地址数据线SAddr_j分别连接到存储器、可用地址队列模块。本发明将所有输出端口的缓冲资源整合到一起,统一由硬件动态分配管理,通过模块间的协同工作,实现了交叉开关的基本功能,改善了片上网络对拥塞的承受能力。
文档编号H04L12/56GK102821046SQ201210275130
公开日2012年12月12日 申请日期2012年8月3日 优先权日2012年8月3日
发明者计卫星, 张凌宇, 石峰, 王一拙, 高玉金 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1