一种基于fpga的网络节点内数据缓冲的组织方法

文档序号:9750770阅读:230来源:国知局
一种基于fpga的网络节点内数据缓冲的组织方法
【技术领域】
[0001]本发明涉及一种网络节点内数据缓冲的组织方法,特别涉及一种基于FPGA的网络节点内数据缓冲的组织方法。
【背景技术】
[0002]在网络通信领域,由于数据传输速度和数据处理速度不匹配,在网络节点中总是需要在处理与传输间对收发数据进行缓冲,为了使用方便,通常情况下将单个数据缓冲的大小固定为不小于单包数据长度的最小的2的整数幂,若单包数据长度或多包数据长度能够与FPGA中单个存储资源(称为BRAM)的大小匹配,则能够很成功的仅浪费很少的存储资源换来使用上的便利,若不能匹配,因为BRAM大小固定且每次至少使用I个,则会造成BRAM的浪费,当差距较大时,将会浪费很多存储资源,增加器件功耗。

【发明内容】

[0003]本发明的目的是提供一种基于FPGA的网络节点内数据缓冲的组织方法,通过组合使用存储资源来匹配任意大小的数据缓冲,从而达到减少存储资源浪费和降低器件功耗的目的。
[0004]本发明的技术方案如下:
[0005]—种基于FPGA的网络节点内数据缓冲的组织方法,其特殊之处在于:包括以下步骤:
[0006]I)将数据缓冲单元划分为第一缓冲和第二缓冲两部分,第一缓冲的大小为al,al等于能被B整除且不大于A的2的整数幂;
[0007]其中,B为单个BRAM的大小,A为需求数据缓冲单元的大小;
[0008]2)确定单个BRAM能够实现的第一缓冲的个数b;
[0009]3)确定用于实现第一缓冲的BRAMl的数量M;
[0010]4)确定用于实现第二缓冲的BRAM2的数量N;
[0011]5)确定第二缓冲的大小a2;a2等于N乘以B后再除以K;
[0012]6)译码单元将外部访问地址分解为数据缓冲单元序号和数据缓冲单元地址,数据缓冲单元序号表示该次访问命中第几个数据缓冲单元,数据缓冲单元地址表示命中数据缓冲单元中的哪个地址;
[0013]7)译码单元根据数据缓冲单元地址判断访问的是第一缓冲还是第二缓冲,若数据缓冲单元地址小于al,则访问第一缓冲,否则访问第二缓冲;
[0014]8)若访问第一缓冲,译码单元将数据缓冲单元序号除以b、并对结果进行下取整,确定出命中的BRAMl序号,并向该BRAMl产生相应的读使能或写使能信号;
[0015]确定新数据缓冲单元序号和新数据缓冲单元地址
[0016]新数据缓冲单元序号等于数据缓冲单元序号减去b乘以命中的BRAMl序号;新数据缓冲单元地址等于数据缓冲单元地址的低X位,X等于以2为底的al的对数;
[0017]若访问第二缓冲,译码单元将数据缓冲单元序号除以c、并对结果进行下取整,确定出命中的BRAM2序号,并向该BRAM2产生相应的读使能或写使能信号;其中,c为单个BRAM2包含的第二缓冲数量,c等于B除以a2;
[0018]确定新数据缓冲单元序号和新数据缓冲单元地址
[0019]新数据缓冲单元序号等于数据缓冲单元序号减去a2乘以命中的BRAM2序号,新数据缓冲地址等于数据缓冲单元地址减去al后的值的低Y位,Y等于以2为底的a3的对数;
[0020]9)将确定的新数据缓冲单元序号和新数据缓冲单元地址组成内部访问地址,并将该内部访问地址送入命中的BRAMl或BRAM2 ;
[0021]1)将外部的数据信号与命中的BRAMl或BRAM2的数据信号连接。
[0022]步骤2)中的b等于B除以al。
[0023]步骤3)中的M等于K除以b,K为需求数据缓冲单元的数量。
[0024]步骤4)中的N等于[(a2 X K) /B ]上取整的值。
[0025]本发明的有益效果是:
[0026]I)提高片上存储器利用率。可以根据不同的实际应用环境和条件,灵活分配BRAM,有效减少存储资源的浪费,提尚利用率。
[0027]2)降低器件功耗。由于该方法提高了 BRAM的利用率,在实现相同功能的情况下仅使用相对较少的BRAM,因此器件的功耗得以降低。
【附图说明】
[0028]图1是本发明的技术方案示意图。
【具体实施方式】
[0029]本专利提出了一种基于FPGA的网络节点内数据缓冲的组织方法,通过将单个数据缓冲分割为两部分,一部分完全利用BRAM,不浪费存储资源,而另一部分通过组合后,可以将存储资源的浪费降到最低,相比于每个缓冲单独使用BRAM,该方法不仅可以保持使用的便利性,而且可以减少存储资源的浪费,降低功耗,尤其在缓冲数量较多时效果非常明显。
[0030]如图1所示,本发明包括M个BRAMl、N个BRAM2和译码单元。其特征在于:M个BRAMl用于实现所有的第一缓冲,N个BRAM2用于实现所有的第二缓冲,而第一缓较第二缓冲大。
[0031 ]下面结合附图及具体实例对本发明做进一步的详细说明。
[0032]如图1所示,一种基于FPGA的网络节点内数据缓冲的组织方法,包括
[0033]UBRAMl
[0034]M个BRAMl用于实现第一缓冲。当需要构造16个大小为2248KB的缓冲区时,若单个BRAM的大小为4096KB,则M值的确定方式为:
[0035]a)将单个数据缓冲单元划分为第一缓冲和第二缓冲两部分,第一缓冲的大小al等于2048KB;
[0036]b)单个BRAM能够实现的第一缓冲的个数b就等于8;
[0037]c)用于实现第一缓冲的BRAMl的数量M就等于8。
[0038]2、BRAM2
[0039 ] N个BRAM2用于实现第二缓冲。利用确定M时的结果,N值的确定方式为:
[0040]a)用于实现第二缓冲的BRAM2的数量N就等于I;
[0041 ] b)为了便于管理,实现的第二缓冲的大小a2等于256KB。
[0042]3、译码单元
[0043]译码单元根据外部访问地址选择出命中的BRAM,并产生对应的内部访问地址,完成数据访问,当外部访问地址为0x2464时:
[0044]a)外部访问地址可分解为数据缓冲单元序号和数据缓冲单元地址两部分,数据缓冲单元序号表示该次访问命中第4个缓冲单元,数据缓冲单元地址表示命中数据缓冲单元的地址为0x100;
[0045]b)根据数据缓冲单元地址可以判断访问的是第一缓冲还是第二缓冲,因为数据缓冲单元地址小于al,所以访问第一缓冲;
[0046]c)根据数据缓冲单元序号和单个BRAMl包含的第一缓冲数量计算出命中的BRAMl序号为2,并向该BRAMl产生相应的读或写使能信号;
[0047]d)命中第一缓冲,则新数据缓冲单元序号等于0,新数据缓冲单元地址等于0x100;
[0048]e)将由新数据缓冲单元序号和新数据缓冲单元地址组成的内部访问地址送入命中的BRAMl;
[0049 ] f)将外部的数据信号与命中的BRAMl的数据信号连接。
【主权项】
1.一种基于FPGA的网络节点内数据缓冲的组织方法,其特征在于:包括以下步骤: 1)将数据缓冲单元划分为第一缓冲和第二缓冲两部分,第一缓冲的大小为al,al等于能被B整除且不大于A的2的整数幂; 其中,B为单个BRAM的大小,A为需求数据缓冲单元的大小; 2)确定单个BRAM能够实现的第一缓冲的个数b; 3)确定用于实现第一缓冲的BRAMl的数量M; 4)确定用于实现第二缓冲的BRAM2的数量N; 5)确定第二缓冲的大小a2;a2等于N乘以B后再除以K,K为需求数据缓冲单元的数量; 6)译码单元将外部访问地址分解为数据缓冲单元序号和数据缓冲单元地址,数据缓冲单元序号表示该次访问命中第几个数据缓冲单元,数据缓冲单元地址表示命中数据缓冲单元中的哪个地址; 7)译码单元根据数据缓冲单元地址判断访问的是第一缓冲还是第二缓冲,若数据缓冲单元地址小于al,则访问第一缓冲,否则访问第二缓冲; 8)若访问第一缓冲,译码单元将数据缓冲单元序号除以b、并对结果进行下取整,确定出命中的BRAMl序号,并向该BRAMl产生相应的读使能或写使能信号; 确定新数据缓冲单元序号和新数据缓冲单元地址 新数据缓冲单元序号等于数据缓冲单元序号减去b乘以命中的BRAMl序号;新数据缓冲单元地址等于数据缓冲单元地址的低X位,X等于以2为底的al的对数; 若访问第二缓冲,译码单元将数据缓冲单元序号除以C、并对结果进行下取整,确定出命中的BRAM2序号,并向该BRAM2产生相应的读使能或写使能信号;其中,c为单个BRAM2包含的第二缓冲数量,c等于B除以a2; 确定新数据缓冲单元序号和新数据缓冲单元地址 新数据缓冲单元序号等于数据缓冲单元序号减去a2乘以命中的BRAM2序号,新数据缓冲地址等于数据缓冲单元地址减去al后的值的低Y位,Y等于以2为底的a3的对数; 9)将确定的新数据缓冲单元序号和新数据缓冲单元地址组成内部访问地址,并将该内部访问地址送入命中的BRAMl或BRAM2 ; 10)将外部的数据信号与命中的BRAMl或BRAM2的数据信号连接。2.如权利要求1所述的基于FPGA的网络节点内数据缓冲的组织方法,其特征在于:步骤2)中的b等于B除以al。3.如权利要求1所述的基于FPGA的网络节点内数据缓冲的组织方法,其特征在于:步骤3)中的M等于K除以b。4.如权利要求1所述的基于FPGA的网络节点内数据缓冲的组织方法,其特征在于:步骤4)中的N等于[(a2XK)/B]上取整的值。
【专利摘要】本发明提出了基于FPGA的网络节点内数据缓冲的组织方法,通过将单个数据缓冲分割为两部分,一部分完全利用BRAM,不浪费存储资源,而另一部分通过组合后,可以将存储资源的浪费降到最低,相比于每个缓冲单独使用BRAM,该方法不仅可以保持使用的便利性,而且可以减少存储资源的浪费,降低功耗,尤其在缓冲数量较多时效果非常明显,通过组合使用存储资源来匹配任意大小的数据缓冲,从而达到减少存储资源浪费和降低器件功耗的目的。
【IPC分类】G06F15/78
【公开号】CN105512090
【申请号】CN201510887894
【发明人】蒲恺, 李大鹏, 李玉发, 田园, 季雷, 武华
【申请人】中国航空工业集团公司西安航空计算技术研究所
【公开日】2016年4月20日
【申请日】2015年12月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1