一种现场可编程门阵列fpga及数据存储方法_2

文档序号:9399131阅读:来源:国知局
当前流级统计值;
[0051]将所述第二当前流级统计值和所述第一更新流级统计值之和,作为所述第二更新流级统计值;
[0052]所述第二流级统计模块将所述第二更新流级统计值存储至第二缓存中时,具体为:
[0053]将所述第二更新流级统计值替换所述第二缓存中存储的第二当前流级统计值。
[0054]结合第二方面,或者第二方面的第一种至第二种可能的实现方式,在第四种可能的实现方式中,所述第二流级统计模块根据所述第一更新流级统计值计算第二更新流级统计值时,具体为:
[0055]在确定不存在与所述数据流所对应的第二缓存时,将所述第一更新流级统计值作为所述第二更新流级统计值;
[0056]所述第二流级统计模块将所述第二更新流级统计值存储至第二缓存中时,具体为:
[0057]添加与所述数据流对应的第二缓存,将所述第二更新流级统计值存储到所述第二缓存中。
[0058]结合第二方面,或者第二方面的第一种至第四种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:
[0059]控制器在确定满足预设条件时,针对所述数据流,将所述第一缓存和所述第二缓存中针对所述数据流的所有流级统计值之和,作为针对所述数据流的流级总统计值;
[0060]刷新模块根据所述流级总统计值对动态随机存取存储器RAM中存储的针对所述数据流的流级统计值进行更新。
[0061]结合第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述刷新模块根据所述流级总统计值对动态随机存取存储器RAM中存储的针对所述数据流的流级统计值进行更新,具体为:
[0062]确定所述动态RAM中针对所述数据流的第三当前流级统计值;
[0063]计算所述流级总统计值和所述第三当前流级统计值之和;
[0064]将所述动态RAM中存储的针对所述数据流的所述第三当前流级统计值用所述流级总统计值和所述第三当前流级统计值之和替换。
[0065]结合第二方面的第五种或者第六种可能的实现方式,在第七种可能的实现方式中,所述方法还包括:
[0066]所述控制器在得到流级总统计值之后,将所述第一缓存和所述第二缓存的数值设置为O。
[0067]结合第二方面,或者第二方面的第一种至第四种可能的实现方式,在第八种可能的实现方式中,所述方法还包括:
[0068]随机存取存储器RAM读写调度模块在确定满足预设条件时,从动态RAM中连续读取针对至少两个数据流分别对应的当前流级统计值;
[0069]流水线累加模块针对所述至少两个当前流级统计值中的任意一当前流级统计值,确定包括所述第一缓存的一级缓存中与所述任意一当前流级统计值对应相同数据流的第一流级统计值,及包括所述第二缓存的二级缓存中与所述任意一当前流级统计值对应相同数据流的第二流级统计值,基于所述任意一当前流级统计值、所述第一流级统计值和所述第二流级次数之和,对所述任意一当前流级统计值进行更新;
[0070]所述RAM读写调度模块将所有更新后的流级统计值连续写入所述动态RAM。
[0071]结合第二方面的第八种可能的实现方式,在第九种可能的实现方式中,所述方法还包括:
[0072]所述RAM读写调度模块在将所有更新后的流级统计值连续写入所述动态RAM之后,将所述一级缓存中存储与所述任意一当前流级统计值对应相同数据流的第一流级统计值的缓存,及所述二级缓存中存储与所述任意一当前流级统计值对应相同数据流的第二流级统计值的缓存的数值均设置为O。
[0073]结合第二方面的第五种至第九种可能的实现方式,在第十种可能的实现方式中,所述预设条件包括下述条件中的至少一个:
[0074]到达更新周期时间点、与所述第二流级统计模块对应的任意一缓存的位宽达到预设门限值、与所述与第一流级统计模块对应的所有缓存的数量达到预设门限值。
[0075]本发明实施例中,FPGA中包括两级缓存,第一缓存和第二缓存,第一缓存溢出时,存储至第二缓存,提高了存储的用户数量,同时,由于FPGA的处理速度高于外部存储介质的处理速率,提高了流级统计速率,因此,本发明实施例提供的FPGA可以有效平衡流级用户数和流级速率,解决了现有技术中存在的流级统计过程中支持的流级用户数和流级速率之间无法平衡的缺陷。
【附图说明】
[0076]图1为现有技术中流量流级统计的示意图;
[0077]图2A为本发明实施例中FPGA的一种示意图;
[0078]图2B为本发明实施例中FPGA的另一种示意图;
[0079]图2C为本发明实施例中FPGA的另一种示意图;
[0080]图3为本发明实施例中数据存储的流程图。
【具体实施方式】
[0081]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0082]下面结合说明书附图对本发明优选的实施方式进行详细说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0083]下面结合附图对本发明实施例进行详细说明。
[0084]本发明实施例提供一种FPGA,参阅图2A所示,包括第一流级统计模块1、溢出判断模块2和第二流级统计模块3,其中:
[0085]第一流级统计模块1,用于在属于一级缓存的第一缓存中查找接收到的数据报文所属数据流的第一当前流级统计值,并根据第一当前流级统计值计算数据流的第一更新流级统计值;
[0086]溢出判断模块2,用于判断将第一更新流级统计值存储到第一缓存中时是否溢出,并在判断结果为否时,将第一更新流级统计值替换第一缓存中存储的第一当前流级统计值;
[0087]第二流级统计模块3,用于在溢出判断模块2的判断结果为是时,根据第一更新流级统计值计算第二更新流级统计值,并将第二更新流级统计值存储至属于二级缓存的第二缓存中;
[0088]第一缓存的位宽小于第二缓存的位宽。
[0089]在本发明实施例中,由于针对每一个数据流的流级统计值是先存储在FPGA的第一缓存中,当第一缓存溢出时,再存储至第二缓存中,当第二缓存溢出时,再存储至动态RAM中,不是直接缓存至动态RAM中,而FPGA的处理速度远远高于动态RAM的处理速度,因此,针对高速率的以太网端口,本发明实施例提出的FPGA可以解决现有技术中存在的流级统计过程中不能同时支持较多的流级用户数和较高的流级统计速率的问题。
[0090]例如,第一缓存的位宽为8bit,第二缓存的位宽为16bit,接收到一个数据报文后,确定针对该数据报文所属数据流的第一更新流级统计值,如果第一更新流级统计值为280,第一缓存的位宽为8bit,已经无法表示280这个十进制的数值,此时,确定第一缓存存储280时会溢出,而第二缓存的位宽为16bit,表示280这个十进制的数值,因此,可以将第二缓存中针对该数据流的当前流级统计值用280替换。如果第一缓存中针对该数据流的第一当前流级统计值为179,第一更新流级统计值为180,由于第一缓存的位宽为8bit,可以表示180这个十进制的数值,此时,确定第一缓存存储180时会不溢出,因此,可以用180代替179作为第一缓存中针对该数据流的流级统计值进行存储。
[0091]本发明实施例中,第一流级统计模块I根据第一当前流级统计值计算数据流的第一更新流级统计值时,具体可以采用如下方式:
[0092]将第一当前流级统计值加I之和,作为第一更新流级统计值。
[0093]例如:针对数据流1,假设之前还没有接收到接收到针对数据流I的数据报文,来了数据报文I后,计算一次第一更新流级统计值,计算得出的第一更新流级统计值为1,来了数据报文2后,再重新计算第一更新流级统计值,计算得出的第一更新流级统计值为2,来了数据报文3后,再重新计算第一更新流级统计值,计算得出的第一更新流级统计值为3,依次类推,来了数据报文10后,再重新计算第一更新流级统计值,计算得出的第一更新流级统计值为10,也就是说,针对数据流1,来了一个数据报文后,都要进行第一更新流级统计值的计算。
[0094]本发明实施例中,第一流级统计模块I在根据第一当前流级统计值计算数据流的第一更新流级统计值时,针对任意一数据流,接收到针对该任意一数据流的每一个数据报文后,都要计算针对该任意一数据流的第一更新流级统计值,这样在实际应用中,会存在流级统计效率较低的缺陷,因此,为了更进一步提高流级统计的效率,本发明实施例中,针对任意一数据流,在接收到针对该任意一数据流的一定数目的数据报文后,再计算针对该任意一数据流的第一更新流级统计值。
[0095]因此,本发明实施例中,第一流级统计模块I根据第一当前流级统计值计算数据流的第一更新流级统计值时,也可以采用如下方式:
[0096]确定属于数据流的未统计的数据报文的数量,
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1