支持报文交叉存储的动态共享缓冲方法技术

技术编号:8961282 阅读:171 留言:0更新日期:2013-07-25 20:30
本发明专利技术公开了一种支持报文交叉存储的动态共享缓冲方法,其实施步骤如下:1)预先建立缓冲区和寄存器组;2)判断新报文切片的类型,根据类型分配缓冲地址、分配或更新寄存器组,修改缓冲区中前一个报文切片的下级切片地址指针,将新报文切片写入缓冲地址;如果寄存器组非空,则执行下一步;3)从缓冲区选择当前报文切片并判断其类型,根据当前报文切片的类型与下一级节点进行通讯来实现对当前报文切片的流控,如果当前报文切片符合流控条件则执行下一步;4)对当前报文切片进行仲裁,仲裁成功则将当前报文切片流出并更新对应寄存器项,仲裁不成功则返回步骤3)。本发明专利技术具有数据传输性能好、资源利用率高、通用性好的优点。

【技术实现步骤摘要】

本专利技术涉及互连通信领域的报文缓存方法,具体涉及一种。
技术介绍
报文缓存技术是通信系统的关键技术。如图1所示,报文切片是报文在网络传输过程中的基本信息单位,每一个报文都包括多个报文切片,报文切片的类型由头切片(也称为报文头)、体切片和尾切片(也称为报文尾)构成,其中头切片标示一个报文的开始,头切片中包含了报文的路由信息,尾切片标示一个报文的结束。目前普遍采用的报文缓存技术有基于先进先出(FIFO)结构的缓存方式以及面向输出端口组织的动态访存队列(DAMQ)方式。这两种方式都顺序存储报文,不支持报文间交叉存储,这样不同程度地会导致头报文阻塞(HOL)现象,从而导致通信系统存在数据传输性能差、资源利用率低等问题。
技术实现思路
本专利技术要解决的技术问题是提供一种数据传输性能好、资源利用率高、通用性好的。为了解决上述技术问题,本专利技术采用的技术方案为: 一种支持报文交叉存储的动态 共享缓冲方法,其实施步骤如下: 1)预先建立用于存储流入报文切片的缓冲区和用于存储流入报文的路由信息的寄存器组,所述缓冲区缓存的报文切片项包括报文切片本身和指向报文切片对应报文中下一个报文切片的下级切片地址指针,所述寄存器组缓存的寄存器项与缓冲区中尚未全部流出报文一一对应,所述寄存器项包括报文路由信息和指向报文中将流出的报文切片的待流出切片地址指针;当前节点在接收到上一级节点发送的新报文切片时,跳转执行下一步; 2)当前节点判断所述新报文切片的类型,如果新报文切片为头切片,则在缓冲区中为新报文切片分配缓冲地址、在寄存器组中为新报文切片分配寄存器项,将新报文切片携带的路由信息和缓冲地址写入所述寄存器项中,并将新报文切片写入所述缓冲地址中;如果新报文切片为体切片或尾切片,则在缓冲区中为新报文切片分配缓冲地址,确定新报文切片对应的寄存器项,根据寄存器项的待流出切片地址指针在缓冲区找到新报文切片对应报文的前一个报文切片,修改所述前一个报文切片的下级切片地址指针将其指向分配给新报文切片的缓冲地址,将新报文切片写入分配给新报文切片的缓冲地址;同时,定时判断所述寄存器组是否为空,如果为空则继续等待;如果寄存器组非空,则跳转执行步骤3); 3)当前节点从所述缓冲区选择一个报文切片作为当前报文切片并判断当前报文切片的类型,如果当前报文切片为头切片,则当前节点获取下一级节点缓冲区可存储的报文切片数量和寄存器组中的空闲寄存器项数量,如果下一级节点缓冲区可存储的报文切片数量大于或等于I且下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4);如果当前报文切片为体切片或者尾切片,则当前节点获取下一级节点寄存器组中的空闲寄存器项数量,如果下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4); 4)当前节点对当前报文切片进行仲裁,如果当前报文切片仲裁成功,则首先判断当前报文切片的类型,如果当前报文切片为尾切片则删除当前报文切片对应的寄存器项,如果当前报文切片为头切片或者体切片,则根据当前报文切片的下级切片地址指针获取当前报文切片对应报文中下一个报文切片缓冲地址,修改当前报文切片对应寄存器项的待流出切片地址指针将其指向所述当前报文切片对应报文中下一个报文切片缓冲地址,然后将当前报文切片通过网络流出至下一级节点;如果当前报文仲裁不成功,则等待下一个周期返回重新执行步骤4)。作为本专利技术上述技术方案的进一步改进:所述寄存器项还包括上级节点寄存器项号和上级节点输入端口号字段域;所述步骤4)当前节点将当前报文切片通过网络流出至下一级节点之前,当前节点还获取当前报文切片对应寄存器项的寄存器项号、当前报文切片输入当前节点的输入端口号,当前节点将当前报文切片通过网络流出至下一级节点时还一并发送所述寄存器项号和输 入端口号;所述步骤2)中当前节点在将新报文切片携带的路由信息和缓冲地址写入所述寄存器项中时,当前节点还获取上一级节点发送的寄存器项号和输入端口号,并将所述寄存器项号写入寄存器项的上级节点寄存器项号字段域、将所述输入端口号写入分配的寄存器项的上级节点输入端口号字段域;所述步骤2)中当前节点在为新报文切片确定新报文切片对应的寄存器项时,则首先获取上一级节点发送新报文切片时一并发送的寄存器项号和输入端口号,然后将所述寄存器项号与寄存器组中各个寄存器项的上级节点寄存器项号进行比对、将所述输入端口号分别与寄存器组中各个寄存器项的上级节点输入端口号字段域进行比对,如果找到两者都匹配的寄存器项,这找到的寄存器项即确定为新报文切片对应的寄存器项。本专利技术具有下述优点:本专利技术将报文以报文切片为单位进行存储和仲裁,通过缓冲区来缓冲不同报文的报文切片,通过寄存器项的报文路由信息以及待流出切片地址指针、报文切片项的下级切片地址指针来对不同报文的报文切片进行交叉存储以及流控管理,因此可以实现链路报文交叉存储和传输、彻底解决头报文阻塞问题,大大提高了通信系统的性能和资源的利用率,能够有效地抑制报文传输过程中的头报文阻塞(HOL)现象,而且本专利技术不局限于具体硬件平台,具有数据传输性能好、资源利用率高、通用性好的优点。附图说明图1为现有技术采用报文切片传输时的报文切片结构示意图。图2为本专利技术实施例的基本实施流程示意图。图3为本专利技术实施例的动态共享缓冲结构示意图。具体实施例方式如图2所示,本实施例的实施步骤如下: I)预先建立用于存储流入报文切片的缓冲区和用于存储流入报文的路由信息的寄存器组,缓冲区缓存的报文切片项包括报文切片本身和指向报文切片对应报文中下一个报文切片的下级切片地址指针,寄存器组缓存的寄存器项与缓冲区中尚未全部流出报文一一对应,寄存器项包括报文路由信息和指向报文中将流出的报文切片的待流出切片地址指针;当前节点在接收到上一级节点发送的新报文切片时,跳转执行下一步; 2)当前节点判断新报文切片的类型,如果新报文切片为头切片,则在缓冲区中为新报文切片分配缓冲地址、在寄存器组中为新报文切片分配寄存器项,将新报文切片携带的路由信息和缓冲地址写入寄存器项中,并将新报文切片写入缓冲地址中;如果新报文切片为体切片或尾切片,则在缓冲区中为新报文切片分配缓冲地址,确定新报文切片对应的寄存器项,根据寄存器项的待流出切片地址指针在缓冲区找到新报文切片对应报文的前一个报文切片,修改前一个报文切片的下级切片地址指针将其指向分配给新报文切片的缓冲地址,将新报文切片写入分配给新报文切片的缓冲地址;同时,定时判断寄存器组是否为空,如果为空则继续等待;如果寄存器组非空,则跳转执行步骤3); 3)当前节点从缓冲区选择一个报文切片作为当前报文切片并判断当前报文切片的类型,如果当前报文切片为头切片,则当前节点获取下一级节点缓冲区可存储的报文切片数量和寄存器组中的空闲寄存器项数量,如果下一级节点缓冲区可存储的报文切片数量大于或等于I且下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4);如果当前报文切片为体切片或者尾切片,则当前节点获取下一级节点寄存器组中的空闲寄存器项数量,如果下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4); 4)当前节点对当前报文切片进行仲裁,如果当前报文切片仲裁成功,则首先判断当前报文切片的类型,如果当前报文切片为尾切本文档来自技高网...

【技术保护点】
一种支持报文交叉存储的动态共享缓冲方法,其特征在于实施步骤如下:1)预先建立用于存储流入报文切片的缓冲区和用于存储流入报文的路由信息的寄存器组,所述缓冲区缓存的报文切片项包括报文切片本身和指向报文切片对应报文中下一个报文切片的下级切片地址指针,所述寄存器组缓存的寄存器项与缓冲区中尚未全部流出报文一一对应,所述寄存器项包括报文路由信息和指向报文中将流出的报文切片的待流出切片地址指针;当前节点在接收到上一级节点发送的新报文切片时,跳转执行下一步;?2)当前节点判断所述新报文切片的类型,如果新报文切片为头切片,则在缓冲区中为新报文切片分配缓冲地址、在寄存器组中为新报文切片分配寄存器项,将新报文切片携带的路由信息和缓冲地址写入所述寄存器项中,并将新报文切片写入所述缓冲地址中;如果新报文切片为体切片或尾切片,则在缓冲区中为新报文切片分配缓冲地址,确定新报文切片对应的寄存器项,根据寄存器项的待流出切片地址指针在缓冲区找到新报文切片对应报文的前一个报文切片,修改所述前一个报文切片的下级切片地址指针将其指向分配给新报文切片的缓冲地址,将新报文切片写入分配给新报文切片的缓冲地址;同时,定时判断所述寄存器组是否为空,如果为空则继续等待;如果寄存器组非空,则跳转执行步骤3);3)当前节点从所述缓冲区选择一个报文切片作为当前报文切片并判断当前报文切片的类型,如果当前报文切片为头切片,则当前节点获取下一级节点缓冲区可存储的报文切片数量和寄存器组中的空闲寄存器项数量,如果下一级节点缓冲区可存储的报文切片数量大于或等于1且下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4);如果当前报文切片为体切片或者尾切片,则当前节点获取下一级节点寄存器组中的空闲寄存器项数量,如果下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4);4)当前节点对当前报文切片进行仲裁,如果当前报文切片仲裁成功,则首先判断当前报文切片的类型,如果当前报文切片为尾切片则删除当前报文切片对应的寄存器项,如果当前报文切片为头切片或者体切片,则根据当前报文切片的下级切片地址指针获取当前报文切片对应报文中下一个报文切片缓冲地址,修改当前报文切片对应寄存器项的待流出切片地址指针将其指向所述当前报文切片对应报文中下一个报文切片缓冲地址,然后将当前报文切片通过网络流出至下一级节点;如果当前报文仲裁不成功,则等待下一个周期返回重新执行步骤4)。...

【技术特征摘要】
1.一种支持报文交叉存储的动态共享缓冲方法,其特征在于实施步骤如下: 1)预先建立用于存储流入报文切片的缓冲区和用于存储流入报文的路由信息的寄存器组,所述缓冲区缓存的报文切片项包括报文切片本身和指向报文切片对应报文中下一个报文切片的下级切片地址指针,所述寄存器组缓存的寄存器项与缓冲区中尚未全部流出报文一一对应,所述寄存器项包括报文路由信息和指向报文中将流出的报文切片的待流出切片地址指针;当前节点在接收到上一级节点发送的新报文切片时,跳转执行下一步; 2)当前节点判断所述新报文切片的类型,如果新报文切片为头切片,则在缓冲区中为新报文切片分配缓冲地址、在寄存器组中为新报文切片分配寄存器项,将新报文切片携带的路由信息和缓冲地址写入所述寄存器项中,并将新报文切片写入所述缓冲地址中;如果新报文切片为体切片或尾切片,则在缓冲区中为新报文切片分配缓冲地址,确定新报文切片对应的寄存器项,根据寄存器项的待流出切片地址指针在缓冲区找到新报文切片对应报文的前一个报文切片,修改所述前一个报文切片的下级切片地址指针将其指向分配给新报文切片的缓冲地址,将新报文切片写入分配给新报文切片的缓冲地址;同时,定时判断所述寄存器组是否为空,如果为空则继续等待;如果寄存器组非空,则跳转执行步骤3); 3)当前节点从所述缓冲区选择一个报文切片作为当前报文切片并判断当前报文切片的类型,如果当前报文切片为头切片,则当前节点获取下一级节点缓冲区可存储的报文切片数量和寄存器组中的空闲寄存器项数量,如果下一级节点缓冲区可存储的报文切片数量大于或等于I且下一级节点寄存器组中的空闲寄存器项数量大于或等于1,跳转执行步骤4);如果当前报文切片为体切片或者尾切片,则当前节点获取下一级节点寄存器组中的空闲寄存器项数量,如果下一级节点寄存器组中的空闲寄存器项数量...

【专利技术属性】
技术研发人员:徐炜遐肖灿文王永庆刘路张鹤颖沈胜宇张磊戴艺伍楠曹继军高蕾
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1