专利名称:一种以太网数据包缓存方法和装置的利记博彩app
技术领域:
本发明涉及以太网数据传输领域,具体涉及一种以太网数据包缓冲方法和装置。
背景技术:
以太网是目前比较流行的一种局域网技术,近年来慢慢应用到城域网或核心网高速传输。以太网速度经历了 10Mpbs,100Mpbs,lGMpbs, 到目前常见的IOG Mpbs。随着分组传输网络的推广,以太网的应用将会越来越广泛。传输速率的大幅度提升对传输介质,发射接收模块和交换设备等都提出了很高的要求。在二层交换设备中,以太网数据包进入设备再从设备输出,经过了路由交换过程,在这个过程中需要将数据包进行缓存,等待交换引擎处理结果再从缓冲区中读出数据包。随着传输速率的提高,交换设备的处理速率的要求也越来越高,一般的数据包缓冲方法逐渐成为处理速度进一步提升的瓶颈。
发明内容
为了解决现有技术的技术问题,本发明提供了一种以较低的延时实行以太网数据包存取的以太网数据包缓冲方法核装置。本发明解决技术问题的技术方案包括一种以太网数据包缓冲方法,包括提供动态随机存取存储器(DRAM)作为缓存实体,所述DRAM被划分成多个内存块;通过FPGA控制器控制所述DRAM,所述FPGA控制器包括和所述内存块起始地址映射对应的内存块状态表。本发明还提供一种以太网数据包缓冲装置,其包括FPGA控制器,所述FPGA控制器包括仲裁模块、FIFO模块、内存回收模块、内存块状态表、位宽转换模块和地址映射模块,所述位宽转换模块,和地址映射模块,连接到DRAM接口,并可读取和写入数据到DRAM,所述位宽转换模块用于将以太网数据包位宽转换为和DRAM控制器的位宽相一致,所述地址映射模块用于根据仲裁模块的指令输出以太网数据包地址到DRAM的内存块,所述仲裁模块用于控制向内存块读/写以太网数据包,所述内存回收模块用于回收失效的内存块,所述FIFO模块用于存储被回收的内存块信息,所述内存块状态表用于存储DRAM内存块的地址信息。相较于现有技术,本发明结合DRAM的特性和以太网数据包特点,将DRAM划分成多个内存块,且以太网数据包存储不跨页,以较低的处理延时缓存以太网数据包,具有存取速度快,存储容量大和实施成本低的优点。
图I是本发明一种以太网数据包缓冲方法的一个实施例的内存块划分示意图;图2是图I所述实施例的内存块状态表示意图;图3是图I所述实施例的内存块状态表与DRAM内存块起始地址映射示例;图4是本发明一种以太网数据包缓冲装置的一个实施例的示意图。
具体实施例方式下面结合附图和具体实施方式
对本发明做进一步详细说明。本发明的一种以太网数据缓冲方法的一个实施例中,将动态随机存取存储器(DRAM, Dynamic Random Access Memory)作为存储介质,所述DRAM被划分为N(N为自然数)个内存块,且每个内存块大小为2048个字节,每个内存块只能放一个以太网数据包。因为以太网数据包的最大包长是1518个字节,所以内存块总会有未填充的字节。DRAM位阵列上的每行被看作一页,为了减少行地址的写入次数,内存块划分不能跨页,这样每次写入或读取一个以太网数据包,只需要传送一次行地址,以降低读写DRAM的处理延时。 本发明所述实施例中使用FPGA来实现对DRAM的控制,包括对DRAM的读写控制和管理。其中,FPGA包括在内部RAM建立中的内存块状态表,通过对内存块状态表的管理实现对DRAM的数据块管理,由于FPGA读写内部RAM只需要一个时钟周期,所以能够避免直接操作DRAM带来的时间损失。请参阅图1,是本发明一个实施例的内存数据块的划分示意图。依照DRAM的位宽,可得知每个数据块的起始地址N,需要满足每个数据块为2048个字节(byte),每个字节长度8比特(bit), N满足下式DRAM 容量=NX 2048 X 8 (bits) (I)请参阅图2,是内存块状态表的示意图。表中的每一项参数对应着一个内存块的管理信息。位[10:0]表示内存块中的有限数据长度,也就是以太网数据包的长度。位[14:11]表示生存时间,当以太网数据包写入内存块中,则设定生存时间,每读一次内存块生存时间减1,当生存时间为0时,内存块中的数据将会被视为失效。位15表示内存块回收状态,当为I时表不已经被回收,0表不未被回收。请参阅图3,是内存块状态表与DRAM内存块起始地址映射示意图。内存块状态表的地址与DRAM内存块的起始地址存在着固定的映射关系,而具体映射关系则与DRAM的位
宽有关。如使用位宽为8位的DRAM,则由等式(I)可推得内存块起始地址=内存块状态表项地址X 2048 (2)如使使用位宽为16位的DRAM,则由等式(I)可推得内存块起始地址=内存块状态表项地址X 1024 (3)本发明中,已经失效的内存块需要被回收。当内存块状态表某一项中的生存时间为0,并且回收标志为0,则标识该内存块可被回收,由内存块状态表外部的内存回收模块读取该表项的地址,之后将回收标识改写为1,完成回收。参考图4,本发明一种以太网数据包缓冲装置的一个实施例的方框示意图,包括FPGA控制器,所述FPGA控制器包括仲裁模块10、先进先出(FIFO,First-In First-Out)模块20、内存回收模块30、内存块状态表40、位宽转换模块50和地址映射模块60。所述位宽转换模块50和地址映射模块60连接到DRAM接口,并读取和写入数据到DRAM。所述位宽转换模块50用于将以太网数据包位宽(8位)转换为和DRAM控制器的位宽相一致。所述地址映射模块60用于根据仲裁模块10的指令输出以太网数据包地址到DRAM的内存块。所述仲裁模块10用于控制向内存块读/写以太网数据包。所述内存回收模块30用于回收失效的内存块。所述FIFO模块20用于存储被回收的内存块信息,如被回收内存块在内存块状态表40中对应的地址。所述内存回收模块30轮询内存块状态表40,如发现有未使用的且未回收的内存块,则将所述未使用的且未回收的内存块在内存块状态表40中对应的地址输入所述FIFO模块,并将所述内存块的回收标志置I。所述内存块状态表40用于存储DRAM内存块的地址信息。例如,在本发明的一个实施例中,内存块状态表中地址0x9对应的内存块被回收,那么就将0x9写入FIFO,如果在此之前FIFO是空的,那么0x9就放在了FIFO的最前面。当有端口请求向内存 块写入数据,就需要经过仲裁模块10进行选择,当该端口向仲裁模块10发出写请求指令,仲裁模块10从FIFO中读出空闲内存块编号0x9 (也就是内存块状态表的地址)。仲裁模块将0x9反馈到请求端,并发出响应请求的信号,可以向内存块写入数据,请求端口需要记录下反馈的内存块编号,以便之后读取内存块的数据。之后将0x9映射为内存块的基地址,假设DRAM的位宽为16位,则依据式(3),计数出的基地址为0x2400。这时仲裁模块10开始接收端口的以太网数据包,并记录数据包的长度,写入内存块状态表中,同时写入生存时间。因为以太网数据包传输端口为8位,而DRAM控制器接口位宽由所选的DRAM而定,所以需要做位宽转换。当有端口请求从内存块读取数据,同样需要经过仲裁模块进行权衡选择,当该端口获取到仲裁,利用写入时反馈的内存块编号进行数据读出。如上述例子中获取的内存块编号为0x9,则将编号传入仲裁模块,再传输到地址映射模块,开始获取内存块的以太网数据包,完成读取后则将内存块表中对应的生存时间减I。如上所述,所述FPGA控制器就对DRAM完成了一次完整的写和读的操作了。在本发明上述实施例中,所述DRAM的类型可以是SDRAM,DDR SDRAM,DDR2 SDRAM或DDR3 SDRAM。相较于现有技术,本发明将DRAM划分为多个内存块,且满足数据包存储不跨页,以较低的处理延时缓存以太网数据包,达到存取速度快,存储容量大和实施成本低的目的。以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。
权利要求
1.一种以太网数据包缓冲方法,包括 提供动态随机存取存储器(DRAM)作为缓存实体,所述DRAM被划分成多个内存块; 通过FPGA控制器控制所述DRAM,所述FPGA控制器包括和所述内存块起始地址映射对应的内存块状态表。
2.根据权利要求I所述的以太网数据包缓冲方法,其特征在于,每个内存块大小为2048字节。
3.根据权利要求2所述的以太网数据包缓冲方法,其特征在于,所述每一个内存块用于存储一个以太网包。
4.根据权利要求3所述的以太网数据包缓冲方法,其特征在于,每次以太网数据包的存/取不跨页。
5.根据权利要求2所述的以太网数据包缓冲方法,其特征在于,所述FPGA控制器还包括内存回收模块,所述内存回收模块用于回收失效的内存块。
6.根据权利要求4所述的以太网数据包缓冲方法,其特征在于,内存块状态表某一项中的生存时间为0,并且回收标志为0,则标识该内存块可被回收,由内存块状态表外部的内存回收模块读取该表项的地址,之后将回收标识改写为1,完成回收。
7.根据权利要求4所述的以太网数据包缓冲方法,其特征在于,所述FPGA控制器还包括仲裁模块,所述仲裁模块用于控制向内存块读/写以太网数据包。
8.根据权利要求4所述的以太网数据包缓冲方法,其特征在于,所述DRAM每页的容量不低于2048个字节,所述DRAM的类型可以是SDRAM,DDR SDRAM, DDR2SDRAM或DDR3SDRAM。
9.一种以太网数据包缓冲装置,其特征在于,包括FPGA控制器,所述FPGA控制器包括仲裁模块、FIFO模块、内存回收模块、内存块状态表、位宽转换模块和地址映射模块,所述位宽转换模块,和地址映射模块,连接到DRAM接口,并可读取和写入数据到DRAM,所述位宽转换模块用于将以太网数据包位宽转换为和DRAM控制器的位宽相一致,所述地址映射模块用于根据仲裁模块的指令输出以太网数据包地址到DRAM的内存块,所述仲裁模块用于控制向内存块读/写以太网数据包,所述内存回收模块用于回收失效的内存块,所述FIFO模块用于存储被回收的内存块信息,所述内存块状态表用于存储DRAM内存块的地址信息。
全文摘要
本发明公开了一种以太网数据包缓冲方法,包括提供DRAM作为缓存实体,所述DRAM被划分成多个内存块;通过FPGA控制器控制所述DRAM,所述FPGA控制器包括和所述内存块起始地址映射对应的内存块状态表。本发明还公开了所述以太网数据包缓冲方法的装置。本发明将DRAM划分为多个内存块,且满足数据包存储不跨页,以较低的处理延时缓存以太网数据包,达到存取速度快,存储容量大和实施成本低的目的。
文档编号H04L12/56GK102629914SQ201210128718
公开日2012年8月8日 申请日期2012年4月27日 优先权日2012年4月27日
发明者封华明, 秦波, 高胜 申请人:深圳市邦彦信息技术有限公司