一种减少协议处理流水线停顿的方法及系统与流程

文档序号:11215661阅读:1199来源:国知局
一种减少协议处理流水线停顿的方法及系统与流程

本发明涉及多路服务器内存技术处理领域,具体地说是一种减少协议处理流水线停顿的方法及系统。



背景技术:

在多路服务器内存一致性协议处理器中,为提高处理速度,对协议报文的处理采用流水线设计。由于地址相同的报文进入流水线会引起冲突,当遇到同地址报文时,流水线必须停顿,等待前一条报文处理完成后再接着处理下一条报文。这样的停顿会降低流水线的处理速率,减小流水线报文吞吐率。

为了最大限度减少流水线的停顿,常需要对送入流水线的报文进行交叉调度,使得经过调度送入流水线的报文队列地址更加分散,减少流水线停顿的频率和时长。现有技术一将不同种类报文按照地址分为n类,将分类后的报文缓存在n个存储器中,比较缓存的报文地址和流水线中报文的地址种类是否相同,将地址种类不同的报文交叉调度送入流水线。

例如专利申请号为“cn201510608450.3”的专利公开文献“一种对协议处理流水线报文地址进行预处理的方法及装置”。该技术存在以下问题:

1)当地址分类的数目n比较小时,容易出现流水线中报文地址和缓存中可用的报文地址种类相同的情况,分散报文地址的效果不明显。

2)当地址分类的数目n比较大时,对存储空间的浪费比较大,n个缓存中只要有一个满就必须停止报文接收。并且报文地址比较位数和n正相关,比较位数增加会导致组合逻辑延时加大,可能成为系统瓶颈。



技术实现要素:

本发明的技术任务是提供一种减少协议处理流水线停顿的方法及系统。

本发明的技术任务是按以下方式实现的,该减少协议处理流水线停顿的方法,包括,

创建一个接收表,接收表中共m项,每一项有单独的rbid,每个表项中对应缓存一条报文;

创建一个地址映射表,地址映射表中共t项,每项有n行,每行对应一个种类的报文;

接收待处理报文时,通过报文的l位地址判断应该将对应的rbid存入所述的地址映射表的哪一项;

分两级调度将报文送入协议处理流水线。

所述的创建一个接收表,包括:

所述的创建的接收表是对应送入流水线进行处理的n种报文中的一种报文。

所述的地址映射表中共t项,包括:

地址映射表中的t项表示将报文的地址空间划分为t类。

所述的l位地址为分类因子,是报文的某一地址字段,所述的地址字段决定了将该条报文划分到哪一类地址分类当中。

所述的l位地址与地址映射表中的t项之间的关系为t=2l

所述的分两级调度将报文送入协议处理流水线,包括:

第一级调度,从地址映射表中选择一项,前提为该项中缓存着有效报文;

第二级调度,从所述的第一级调度选中的项中选择一行,选取该行中最早送入的所述的rbid,查找所述的rbid对应的接收表,将所述的rbid对应的报文送入协议处理流水线,释放对应的rbid。

一种减少协议处理流水线停顿的系统,包括:

接收模块,用来创建一个接收表,接收表中共m项,每一项有单独的rbid,每个表项中对应缓存一条报文;

地址映射模块,用来创建一个地址映射表,地址映射表中共t项,每项有n行,每行对应一个种类的报文;

判断模块,在接收待处理报文时,通过报文的l位地址用来判断应该将对应的rbid存入所述的地址映射表的哪一项;

调度模块,用来分两级调度将报文送入协议处理流水线。

所述的接收模块,用来创建一个接收表,所述的创建的接收表是对应送入流水线进行处理的n种报文中的一种报文。

所述的判断模块通过报文的l位地址判断应该将对应的rbid存入所述的地址映射表的哪一项;

所述的l位地址为分类因子,所述的l位地址与地址映射表中的t项之间的关系为t=2l

所述的调度模块包括第一级调度模块和第二级调度模块;

所述的第一级调度模块,从地址映射表中选择一项,前提为该项中缓存着有效报文;

所述的第二级调度模块,从所述的第一级调度模块选中的项中选择一行,选取该行中最早送入的所述的rbid,查找所述的rbid对应的接收表,将所述的rbid对应的报文送入协议处理流水线,释放对应的rbid。

本发明的一种减少协议处理流水线停顿的方法及系统和现有技术相比,具有以下有益效果:

1)通过将报文按地址分类进行交叉调度,降低了流水线出现同地址报文冲突的频率;

2)可以扩大t值的选择范围,在不需要同流水线已有报文地址相比较的情况下就能取得很好的分散地址效果;

3)冗余存储部分主要在地址映射表而非报文存储空间,由于rbid位宽远小于报文位宽,所以能有效提升存储空间利用率;

4)省去了存储报文地址和流水线已有报文地址的比较逻辑,相应地减少了该部分组合逻辑带来的延时。

附图说明

附图1为实施例2的流程示意图。

附图2为接收表的结构示意图。

附图3为地址映射表的结构示意图。

具体实施方式

实施例1:

创建系统

减少协议处理流水线停顿的系统,包括:

接收模块,用来创建一个接收表,接收表中共m项,每一项有单独的rbid,每个表项中对应缓存一条报文;所述的创建的接收表是对应送入流水线进行处理的n种报文中的一种报文。

地址映射模块,用来创建一个地址映射表,地址映射表中共t项,每项有n行,每行对应一个种类的报文;

判断模块,在接收待处理报文时,通过报文的l位地址用来判断应该将对应的rbid存入所述的地址映射表的哪一项;所述的l位地址为分类因子,所述的l位地址与地址映射表中的t项之间的关系为t=2l

调度模块,用来分两级调度将报文送入协议处理流水线。

所述的调度模块包括第一级调度模块和第二级调度模块;

所述的第一级调度模块,从地址映射表中选择一项,前提为该项中缓存着有效报文;

所述的第二级调度模块,从所述的第一级调度模块选中的项中选择一行,选取该行中最早送入的所述的rbid,查找所述的rbid对应的接收表,将所述的rbid对应的报文送入协议处理流水线,释放对应的rbid。

操作方法:

该减少协议处理流水线停顿的方法,包括,

创建一个接收表,接收表中共m项,每一项有单独的rbid,每个表项中对应缓存一条报文;所述的创建的接收表是对应送入流水线进行处理的n种报文中的一种报文。

创建一个地址映射表,地址映射表中共t项,每项有n行,每行对应一个种类的报文;地址映射表中的t项表示将报文的地址空间划分为t类。

接收待处理报文时,通过报文的l位地址判断应该将对应的rbid存入所述的地址映射表的哪一项;所述的l位地址为分类因子,是报文的某一地址字段,所述的地址字段决定了将该条报文划分到哪一类地址分类当中。所述的l位地址与地址映射表中的t项之间的关系为t=2l

分两级调度将报文送入协议处理流水线。

所述的分两级调度将报文送入协议处理流水线,包括:

第一级调度,从地址映射表中选择一项,前提为该项中缓存着有效报文;

第二级调度,从所述的第一级调度选中的项中选择一行,选取该行中最早送入的所述的rbid,查找所述的rbid对应的接收表,将所述的rbid对应的报文送入协议处理流水线,释放对应的rbid。

实施例2:

假设当前流水线有四种待处理报文,对应上文描述,n=4。假设接收表共16项,对应上文描述,m=16。相应的只需要16个rbid,故rbid最少为4bit。实现一个rbid分配和释放逻辑,每次接收报文时分配一个rbid,该报文被调度后释放该rbid。接收表可以用ram实现,将报文存入ram中,报文的rbid即为ram读写地址。

结合前述假设,接收表最多能够缓存n*m=64条报文。考虑空间利用率和地址分类数量的折中,将t设为64,则l=log264=6。假设报文低地址位变化最为频繁,选取报文地址低6位作为分类因子。地址映射表的项用可预读的先入先出队列即fifo实现。每个表项有四个fifo。当接收到一个报文后,首先分配rbid,然后根据该报文的种类和分类因子决定将报文的rbid写入到哪个fifo。

在进行第一级调度时以轮询的方式查询当前地址映射表的表项中是否有有效报文,有效信号通过fifo空满来判断,四个fifo中任何一个非空即为有效。如果流水线给出暂停某类报文的信号则忽略该类报文。维护一个优先级表,每次调度时优先级最高的项被选中,并在下一时钟周期将该项的后一项优先级变为最高。第一级调度后会选中一项,将该项fifo中缓存的rbid作为地址送入接收ram并生成读信号。对ram送出的报文进行二级调度,从至多四个报文中选择一个送入后续的协议处理流水线进行处理。二级调度亦可采用类似一级调度的轮询方法。二级调度会产生一个读使能,由于fifo是可预读的,此前一级调度并未真正产生读操作,二级调度的结果将会反馈给fifo读走一个rbid,同时反馈给rbid产生和释放逻辑,释放相应的rbid。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1