CN108366111A - 一种用于交换设备的数据包低时延缓存装置与方法 - Google Patents
一种用于交换设备的数据包低时延缓存装置与方法 Download PDFInfo
- Publication number
- CN108366111A CN108366111A CN201810117265.8A CN201810117265A CN108366111A CN 108366111 A CN108366111 A CN 108366111A CN 201810117265 A CN201810117265 A CN 201810117265A CN 108366111 A CN108366111 A CN 108366111A
- Authority
- CN
- China
- Prior art keywords
- memory block
- block
- module
- memory
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种用于交换设备的数据包低时延缓存装置与方法,装置包括数据包聚合模块、调度器模块、数据接收模块、缓存区模块、动态内存分配模块、数据发送模块、内存块状态表模块、空闲内存块先入先出队列模块。方法包括:聚合模块将数据包聚合成固定大小的聚合数据块,调度器模块为聚合数据块分配缓存地址。动态内存块管理模块维护内存块使用信息,数据接收模块将聚合数据块搬移到相应的DRAM缓存单元中。输出端口向调度器模块发送读取申请,经冲突检测后,数据发送模块将数据包从缓存区输出至外部。本发明降低了缓存器的时延,提高了交换设备处理速度。
Description
技术领域
本发明属于通信技术领域,更进一步涉及通信网络技术领域中的一种用于交换设备的数据包低时延缓存装置与方法。本发明可用于交换设备实现数据包快速低时延缓存,有效提升交换设备的性能。
背景技术
随着通信技术的日益发展,人们对数据传输速率要求越来越高。传输速率的大幅度提升,给以太网交换机或者路由器线卡中缓存器的读写速率和容量带来了更大的挑战。一方面,随着链路速率以及交换网络速率的提高,要求分组进入和离开线卡上缓存器的速率越来越快。通常情况下存储器读和写的数据总线是共享的,一个分组到达后先要写入缓存,数据包到达缓存以及离开缓存的过程要求缓存总线的速率是链路速率的两倍。另一方面,为减小丢失率,线卡容量至少为链路速率R与端到端往返时延RRT的乘积,使得所需的内存容量在10G字节左右。因此需要大容量、高带宽并能够快速访存的缓冲存储单元来吸收网络中的数据波动。
缓存器通常使用容量有限而时延小的静态随机存取存储器SRAM和容量大而读写时延大的动态随机存取存储器DRAM组成的层次化存储器结构,SRAM暂时存储输入输出链路与DRAM之间需要传送的分组以及为需要入队出队的分组划分队列,解决变长分组多队列存储的问题;DRAM作为缓存实体,提供大容量存储空间,两者相互配合可以同时满足速度和容量要求。缓存器的具体功能包括聚合模块将每个数据流传入的数据包进行分段并将其聚合成固定大小的聚合数据块,调度器模块为聚合数据块分配缓存地址。动态内存块管理模块维护队列信息,并允许队列的尾部与头部动态共享内存块信息。数据接收模块检测到队列状态非空时,将此聚合数据块搬移到相应的DRAM缓存单元中。
深圳市邦彦信息技术有限公司在其申请的专利文献“一种以太网数据包缓存方法和装置”(申请号:201210128718.X公开号:CN 102629914 A)中提出的以太网数据包缓存方法和装置。所述装置包括仲裁模块、先入先出队列FIFO模块、内存回收模块、内存块状态表、位宽转换模块和地址映射模块,位宽转换模块用于将以太网数据包位宽转换为和动态随机存取存储器控制器的位宽一致,地址映射模块用于根据仲裁模块的指令输出以太网数据包地址到动态随机存取存储器的内存块,仲裁模块用于控制向内存块读/写以太网数据包,内存回收模块用于回收失效的内存块,先入先出队列FIFO模块用于存储被回收的内存块信息,内存块状态表用于存储内存块的地址信息。该装置存在的不足之处为,缺乏请求端口向与动态内存分配模块的传输机制,请求端口向内存块写入数据时需要先申请内存块地址,再进行数据传输降低了处理速度,在高速交换机内,此方式会产生拥塞甚至丢包。
该专利所公开的方法的步骤为,第一,将DRAM划分为多个内存块,且满足数据包存储不跨页;第二,请求端口向仲裁模块发出写请求指令,仲裁模块从空闲队列中读出空闲内存块编号,作为内存块的地址;第三,仲裁模块发出响应请求的信号,可以向内存块写入数据,写入内存块状态表中,同时写入生存时间加1,请求端口记录下内存块编号;第四,当有端口请求从内存块读取数据,仲裁模块进行权衡选择,当该端口获取到仲裁,利用写入时反馈的内存块编号进行数据读出,完成读取后则将内存块表中对应的生存时间减1;第五,生存时间为0时,内存回收模块将此内存块回收,将此内存的地址放回到FIFO模块。该方法以较低的处理延时缓存以太网数据包,达到存取速度快,存储容量大和实施成本低的目的。该方法存在的不足之处为,为每个长度不定的数据包静态划分存储区,当数据包的长度小于内存块,形成存储器内部的碎片,而这些碎片也不能被其他队列利用,造成存储空间浪费。
中兴通讯股份有限公司在其申请的专利文献“数据包缓存管理方法和设备”(申请号:201010591757.4,公开号:CN 102025634 A)该装置包括指令接收单元、缓存方式确定单元和数据包处理单元、外部缓存装置和内部缓存装置;其中所述指令处理装置包括。其中,指令接收单元,用于接收写指令,并获取所述写指令中的数据包的信息及预置的缓存策略确定所述数据包的缓存方式,所属的缓存方式有两种,一种为外部缓存方式,一种为外部缓存和内部缓存结合的内外结合缓存方式;数据包读写单元,用于根据确定的缓存方式,缓存所述数据包;所述外部缓存装置和内部缓存装置用于缓存所述数据包。该装置存在的不足之处为,缺少动态内存分配模块,同一时刻只能处理出队或者入队的操作,不能做到并行处理,限制了处理速率,另一方面当数据包到达速率提高时,该方式会造成写入操作时数据包等待,导致拥塞发生甚至丢包。
该专利所公开的方法的步骤为,第一步,通信设备接收写指令,获取数据包信息;第二步,通信设备根据所述数据包信息及预置的缓存策略确定所述数据包的缓存方式;第三步,通信设备根据确定的缓存方式,缓存所述数据包至外部缓存装置,或外部缓存装置和内部缓存装置。该方法存在的不足之处为,通信设备获取数据包以后,先根据数据包信息判断缓存方式,再进行数据传输,降低了处理速度,增加了实现复杂度,在高速交换机内,此方式会产生拥塞甚至丢包。
发明内容
本发明的目的在于针对上述现有技术存在的不足,提出一种用于交换设备的数据包低时延缓存装置与方法,将数据包进行聚合,缓存到存储器的整个行存储区内,对内存块实行动态分配,降低外部缓存器的时延,实现高速数据包的低时延缓存。
本发明目的的思路是,缓存器的具体功能包括聚合模块将每个数据流传入的数据包进行分段并将其聚合成固定大小的聚合数据块,调度器模块为聚合数据块分配缓存地址。动态内存块管理模块维护队列信息,并允许队列的尾部与头部动态共享内存块信息。数据接收模块检测到队列状态非空时,将此聚合数据块搬移到相应的DRAM缓存单元中。读取单元向调度器模块发送读取申请,经过冲突检测模块检测没有写入冲突后,数据发送模块将数据包从缓存区读出,并输出至外部,完成本次转发。
本发明的装置包括调度器模块、空闲内存块先入先出队列模块、内存块状态表模块、数据接收模块、缓存区模块、数据发送模块;其特征在于,该装置还包括数据包聚合模块、动态内存分配模块;所述的调度器模块通过控制总线分别与数据包聚合模块、动态内存分配模块相连,所述的动态内存分配模块通过控制总线分别与内存块状态表模块、空闲内存块先入先出队列模块相连,所述的数据包聚合模块通过数据总线与数据接收模块相连;所述调度器模块通过控制总线分别与数据接收模块、数据发送模块相连;所述数据接收模块与数据发送模块通过数据总线与缓存区模块接口相连;其中:
所述数据包聚合模块,用于初始化时,将聚合计数器置零;接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、有效长度;使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中;聚合数据包时,将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值;将数据包缓存装置的***带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值;包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中;合并模块使用字节数计算方法,获取聚合块存储器中的字节数;判断聚合块存储器中的字节数是否达到聚合上限值,若是,则申请缓存空间;否则,;判断聚合块存储器中的字节数是否达到聚合上限值,若是,则申请缓存空间;否则,继续向聚合块存储器写入数据包;判断聚合计数器的计数值是否大于聚合计数器上限值,若是,则申请缓存空间;否则,将聚合计数器的计数值加1后,直到计数值达到上限值后申请缓存空间;合并模块停止向聚合块存储器写入数据包,将聚合计数器置零;将聚合块信息先入先出队列的编号字段中的数值加1;将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中;向调度器模块发出写请求申请;
所述调度器模块,用于读取聚合块信息先入先出队列的聚合块信息;将聚合块队列号与编号作为读地址,从空闲队列块先入先出队列读取对应的内存块起始地址;将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段;接收数据包聚合模块发来的写请求,从空闲内存块先进先出队列表模块获取内存块地址,为聚合完成的数据包分配缓存地址;读取请求缓存器的内存块起始地址,将内存块起始地址发送给动态内存分配模块;
所述动态内存分配模块,用于初始化时,设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号;将内存块状态表项地址与行存储区字节数的乘积值的十六进制数值序列,作为缓存区域的内存块起始地址序列;将每个缓存区域内存块起始地址序列依次写入空闲内存块先入先出队列模块;收到更改内存块状态表的申请后,将聚合块的有效长度写到内存块状态表的聚合块有效长度字段中;将内存块起始地址写入到内存状态表的缓存地址字段;将内存状态表的内存块生存时间字段加1;将内存状态表的内存块回收状态字段设置为0;将内存状态表的写入完成字段设置为0;用于更改内存块状态表;若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。用于使用内存块起始地址作为读地址,从内存块状态表中读取内存块的信息;若内存块状态表的写入完成字段为0时,将内存块起始地址发送给数据发送模块;
所述内存块状态表模块,用于存储DRAM内存块的占用情况、有效字节、是否空闲、生存空间等信息;将动态内存状态表的内存块生存时间字段减1;将动态内存状态表的内存块回收状态字段设置为1;
所述空闲内存块先入先出队列模块,用于存储未被使用的内存块起始地址;
所述数据接收模块,用于从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度;将动态内存状态表的写入完成字段设置为1;数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中;向动态内存分配模块发送更改动态内存状态表的申请;
所述数据发送模块,用于读取请求缓存器的内存块起始地址;数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部;向动态内存分配模块发送更新空闲缓存地址申请;
所述缓存区模块,用于存储数据包。
本发明方法的具体步骤包括如下:
(1)初始化:
(1a)缓存区模块将本模块存储区的全部地址空间置零;
(1b)将数据包聚合器中的聚合计数器置零;
(2)划分内存块:
(2a)动态内存分配模块设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号;
(2b)动态内存分配模块用内存块状态表项地址与行存储区字节数的乘积值的二进制数值序列,作为缓存区域的内存块起始地址序列;
(2c)将每个缓存区域内存块起始地址序列,依次写入空闲内存块先入先出队列模块;
(3)读取数据包信息:
(3a)包聚合模块接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、数据包的有效长度;
(3b)使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中;
(4)聚合数据包:
(4a)将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值;
(4b)将缓存装置的带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值;
(4c)包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中;
(4d)合并模块使用字节数计算方法,获取聚合块存储器中的字节数;
(4e)判断聚合块存储器中的字节数是否达到聚合上限值,若是,则执行步骤(5);否则,执行步骤(4f);
(4f)判断聚合计数器的计数值是否大于聚合计数器上限值,若是,则执行步骤(5);否则,执行步骤(4g);
(4g)将聚合计数器的计数值加1后执行步骤(4f);
(5)申请缓存空间:
(5a)合并模块停止向聚合块存储器写入数据包,将聚合计数器置零;
(5b)将聚合块信息先入先出队列的编号字段中的数值加1;
(5c)将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中;
(5d)包聚合模块向调度器模块发出写请求申请;
(6)分配缓存地址:
(6a)调度器模块读取聚合块信息先入先出队列的聚合块信息;
(6b)将聚合块队列号与编号作为读地址,从空闲内存块先入先出队列读取对应的内存块起始地址;
(6c)将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段;
(7)搬移数据包:
(7a)数据接收模块从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度;
(7b)数据接收模块将内存块状态表的写入完成字段设置为1;
(7c)数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中;
(7d)向动态内存分配模块发送更改动态内存状态表的申请;
(8)更新内存块状态信息:
(8a)动态内存分配模块收到更改内存块状态表的申请后,将聚合块的有效长度写到内存块状态表的聚合块有效长度字段中;
(8b)将内存块起始地址写入到内存块状态表的缓存地址字段;
(8c)将内存块状态表的内存块生存时间字段设置为1;
(8d)将内存块状态表的内存块空闲状态字段设置为0;
(8e)将内存块状态表中的写入完成字段设置为0;
(9)响应读取请求:
(9a)输出端口向调度器发送读取数据的请求;
(9b)输出端口将拟读出的内存块地址写入请求缓存器中;
(10)检测冲突:
(10a)调度器读取请求缓存器的内存块起始地址,将内存块起始地址发送给冲动态内存分配模块;
(10b)动态内存分配模块以内存块起始地址作为读地址,从内存块状态表中读取内存块的信息;
(10c)若内存块状态表的写入完成字段为0时,动态内存分配模块将内存块起始地址发送给数据发送模块;
(11)读取数据块:
(11a)数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部;
(11b)向动态内存分配模块发送更新空闲缓存地址申请;
(12)更新空闲缓存地址:
(12a)动态内存分配模块更改内存块状态表;
(12b)若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。
本发明与现有技术相比,具有以下优点:
第一,由于本发明装置在动态内存分配模块初始化后,在聚合数据块写入处理过程中,为聚合数据块分配空闲内存块地址,使用完后更新空闲内存块先入先出队列,克服了现有技术中请求端口向内存块写入数据时,需要先申请内存块地址,再进行数据传输,导致处理速度受限的问题,使得本发明具有数据处理速率高的优点,可以应用于更高速率交换***中。
第二,由于本发明装置中的动态内存分配模块在数据输出时具有检测数据传输是否冲突的功能,同一时刻可以进行处理写入或者读出的操作,提高了处理速率克服了现有技术中缺少动态内存分配模块,同一时刻只能处理出队或者入队的操作,不能做到并行处理,限制了处理速率,使得本发明具有无冲突数据处理的优点,可以减少拥塞。
第三,由于本发明方法中的数据包聚合模块,可将长度不确定的数据包合并为与内存块大小相同的聚合块,写入和读取时不会产生碎片,克服了现有技术将动态随机存取存储器DRAM划分为固定长度的内存块,由于数据包的长度不确定导致存储器内部碎片的问题,使得本发明装置具有存储利用率高的优点。
第四,由于本发明方法中的动态内存分配模块,可以采用层次化的存储方式在SRAM中存储队列的头部和尾部等信息,在DRAM中存储数据包,无需增加判断数据包的缓存方式的硬件逻辑,克服了现有技术中通信设备获取数据包以后,先根据数据包信息判断缓存方式,再进行数据传输降低了处理速度的问题,降低本发明的实现复杂度。
附图说明
图1为本发明装置的方框图;
图2为本发明方法的流程图;
图3为本发明方法中聚合数据包步骤的流程图。
图4为本发明方法中动态内存分配模块更改内存块状态表步骤的流程图
具体实施方式
下面结合附图对本发明做进一步的描述。
参照附图1,对本发明的装置做进一步的描述。
本发明的装置包括空闲内存块先入先出队列模块、内存块状态表模块、数据接收模块、缓存区模块、数据发送模块、调度器模块该装置还包括数据包聚合模块、动态内存分配模块;所述的调度器模块通过控制总线分别与数据包聚合模块、动态内存分配模块相连,所述的动态内存分配模块通过控制总线分别与空闲内存块先入先出队列模块、内存块状态表模块相连,所述的数据包聚合模块通过数据总线与数据接收模块相连;所述调度器模块通过控制总线分别与数据接收模块、数据发送模块相连;所述缓存区模块接口通过数据总线分别与数据接收模块、数据发送模块相连。
所述数据包聚合模块,用于初始化时,将聚合计数器置零;接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、有效长度;使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中;聚合数据包时,将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值;将数据包缓存装置的***带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值;包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中合并模块使用字节数计算方法,获取聚合块存储器中的字节数;判断聚合块存储器中的字节数是否达到聚合上限值,若是,则申请缓存空间;否则,继续向聚合块存储器写入数据包;判断聚合计数器的计数值是否大于聚合计数器上限值,若是,则申请缓存空间;否则,将聚合计数器的计数值加1后,直到计数值达到上限值后申请缓存空间;合并模块停止向聚合块存储器写入数据包,将聚合计数器置零;将聚合块信息先入先出队列的编号字段中的数值加1;将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中;向调度器模块发出写请求申请。
所述调度器模块用于读取聚合块信息先入先出队列的聚合块信息;将聚合块队列号与编号作为读地址,从空闲队列块先入先出队列读取对应的内存块起始地址;将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段;接收数据包聚合模块发来的写请求,从空闲内存块先进先出队列表模块获取内存块地址,为聚合完成的数据包分配缓存地址;读取请求缓存器的内存块起始地址,将内存块起始地址发送给动态内存分配模块。
所述动态内存分配模块用于初始化时,设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号;将内存块状态表项地址与行存储区字节数的乘积值的十六进制数值序列,作为缓存区域的内存块起始地址序列;将每个缓存区域内存块起始地址序列依次写入空闲内存块先入先出队列模块;收到更改内存块状态表的申请后,将聚合块的有效长度写到内存块状态表的聚合块有效长度字段中;将内存块起始地址写入到内存状态表的缓存地址字段;将内存状态表的内存块生存时间字段加1;将内存状态表的内存块回收状态字段设置为0;将内存状态表的写入完成字段设置为0;用于更改内存块状态表;若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。用于使用内存块起始地址作为读地址,从内存块状态表中读取内存块的信息;若内存块状态表的写入完成字段为0时,将内存块起始地址发送给数据发送模块。
所述内存块状态表模块,用于存储DRAM内存块的占用情况、有效字节、是否空闲、生存空间等信息;将动态内存状态表的内存块生存时间字段减1;将动态内存状态表的内存块回收状态字段设置为1。
所述数据接收模块,用于从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度;将动态内存状态表的写入完成字段设置为1;数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中;向动态内存分配模块发送更改动态内存状态表的申请。
所述空闲内存块先入先出队列模块,用于存储未被使用的内存块起始地址;
所述数据发送模块,用于读取请求缓存器的内存块起始地址;数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部;向动态内存分配模块发送更新空闲缓存地址申请。
所述缓存区模块,用于存储数据包。
参照附图2,对本发明的方法的做进一步的描述。
步骤1,初始化。
缓存区模块将本模块存储区的全部地址空间置零。
将数据包聚合器中的聚合计数器置零。
步骤2,划分内存块。
动态内存分配模块设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号。
动态内存分配模块用内存块状态表项地址与行存储区字节数的乘积值的二进制数值序列,作为缓存区域的内存块起始地址序列。
将每个缓存区域内存块起始地址序列依次写入空闲内存块先入先出队列模块。
步骤3,读取数据包信息。
包聚合模块接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、数据包的有效长度。
所述数据包的写入申请包括数据包输入端口字段、目的端口字段、缓存有效长度字段。
使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中。
步骤4,聚合数据包。
下面参照附图3,对本步骤做进一步详细描述。
(4.1)将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值。
(4.2)将缓存装置的带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值。
(4.3)包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中。
(4.4)合并模块使用字节数计算方法,获取聚合块存储器中的字节数。
所述字节数计算方法的步骤如下:
第1步,将长度寄存器清零。
第2步,将当前接收的数据包长度值寄存到长度寄存器中。
第3步,将提取长度寄存器中的长度值又与当前接收的数据包长度值相加,将相加结果寄存到长度寄存器中,将长度寄存器中的数值作为聚合数据包的字节数。
(4.5)判断聚合块存储器中的字节数是否达到聚合上限值,若是,则执行步骤5,否则,执行步骤(4.6)。
(4.6)判断聚合计数器的计数值是否大于聚合计数器上限值,若是,将计数值置零后执行步骤5,否则,继续增加聚合计数器的计数值,执行步骤(4.7)。
(4.7)将聚合计数器的计数值加1后执行(4.6)。
步骤5,申请缓存空间。
合并模块停止向聚合块存储器写入数据包,将聚合计数器重置零后,聚合块信息先入先出队列的编号字段中的数值加1。
将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中。
包聚合模块向调度器模块发出写请求申请。
步骤6,分配缓存地址。
调度器模块读取聚合块信息先入先出队列的聚合块信息。
所述的聚合块信息包括聚合块队列号、聚合块编号、有效长度、内存块起始地址。
将聚合块队列号与编号作为读地址,从空闲内存块先入先出队列读取对应的内存块起始地址。
将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段。
步骤7,搬移数据包。
数据接收模块从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度。
数据接收模块将内存块状态表的写入完成字段设置为1。
数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中。
向动态内存分配模块发送更改动态内存状态表申请。
步骤8,更新内存块状态信息。
动态内存分配模块收到更改动态内存状态表申请后,读取更改动态内存状态表的信息。
将内存块起始地址写入到动态内存状态表的缓存地址字段。
所述内存块状态表包括缓存地址字段、生存时间字段、空闲状态字段、写入完成信号字段。
将动态内存状态表的内存块生存时间字段设置为1。
将动态内存状态表的内存块空闲状态字段设置为0。
将动态内存状态表的写入完成信号字段设置为0。
步骤9,响应读取请求。
输出端口向调度器发送读取数据的请求。
输出端口将要读出的内存块地址写入请求缓存器中。
步骤10,冲突检测。
调度器读取请求缓存器的内存块起始地址,将内存块起始地址发送给动态内存分配模块。
动态内存分配模块以内存块起始地址作为读地址,从内存块状态表中读取内存块的信息。
若内存块状态表的写入完成字段为0时,动态内存分配模块将内存块起始地址发送给数据发送模块。
步骤11,读取数据块。
数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部。
向动态内存分配模块发送更新空闲缓存地址申请。
步骤12,更新空闲缓存地址。
下面参照附图4,对本步骤做进一步详细描述。
动态内存分配模块更改内存块状态表。
所述动态内存分配模块更改内存块状态表的方法,步骤如下:
第1步,动态内存分配模块收到更新空闲缓存地址申请后,将内存块状态表的内存块生存时间字段减1。
第2步,判断内存块状态表的生存时间字段的数值是否为0,若是,执行第三步,否则,执行第四步。
第3步,设置内存块状态表的内存块回收字段为0,表示已经回收。
第4步,设置内存块状态表的内存块回收字段为1,表示没有回收。
若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。
Claims (7)
1.一种用于交换设备的数据包低时延缓存装置,包括调度器模块、空闲内存块先入先出队列模块、内存块状态表模块、数据接收模块、缓存区模块、数据发送模块;其特征在于,该装置还包括数据包聚合模块、动态内存分配模块;所述的调度器模块通过控制总线分别与数据包聚合模块、动态内存分配模块相连,所述的动态内存分配模块通过控制总线分别与内存块状态表模块、空闲内存块先入先出队列模块相连,所述的数据包聚合模块通过数据总线与数据接收模块相连;所述调度器模块通过控制总线分别与数据接收模块、数据发送模块相连;所述数据接收模块与数据发送模块通过数据总线与缓存区模块接口相连;其中:
所述数据包聚合模块,用于初始化时,将聚合计数器置零;接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、有效长度;使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中;聚合数据包时,将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值;将数据包缓存装置的***带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值;包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中;合并模块使用字节数计算方法,获取聚合块存储器中的字节数;判断聚合块存储器中的字节数是否达到聚合上限值,若是,则申请缓存空间;否则,继续向聚合块存储器写入数据包;判断聚合计数器的计数值是否大于聚合计数器上限值,若是,则申请缓存空间;否则,将聚合计数器的计数值加1后,直到计数值达到上限值后申请缓存空间;合并模块停止向聚合块存储器写入数据包,将聚合计数器置零;将聚合块信息先入先出队列的编号字段中的数值加1;将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中;向调度器模块发出写请求申请;
所述调度器模块,用于读取聚合块信息先入先出队列的聚合块信息;将聚合块队列号与编号作为读地址,从空闲队列块先入先出队列读取对应的内存块起始地址;将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段;接收数据包聚合模块发来的写请求,从空闲内存块先进先出队列表模块获取内存块地址,为聚合完成的数据包分配缓存地址;读取请求缓存器的内存块起始地址,将内存块起始地址发送给动态内存分配模块;
所述动态内存分配模块,用于初始化时,设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号;将内存块状态表项地址与行存储区字节数的乘积值的十六进制数值序列,作为缓存区域的内存块起始地址序列;将每个缓存区域内存块起始地址序列依次写入空闲内存块先入先出队列模块;收到更改内存块状态表的申请后,将聚合块的有效长度写到内存块状态表的聚合块有效长度字段中;将内存块起始地址写入到内存状态表的缓存地址字段;将内存状态表的内存块生存时间字段加1;将内存状态表的内存块回收状态字段设置为0;将内存状态表的写入完成字段设置为0;用于更改内存块状态表;若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。用于使用内存块起始地址作为读地址,从内存块状态表中读取内存块的信息;若内存块状态表的写入完成字段为0时,将内存块起始地址发送给数据发送模块;
所述内存块状态表模块,用于存储DRAM内存块的占用情况、有效字节、是否空闲、生存空间等信息;将动态内存状态表的内存块生存时间字段减1;将动态内存状态表的内存块回收状态字段设置为1;
所述空闲内存块先入先出队列模块,用于存储未被使用的内存块起始地址;
所述数据接收模块,用于从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度;将动态内存状态表的写入完成字段设置为1;数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中;向动态内存分配模块发送更改动态内存状态表的申请;
所述数据发送模块,用于读取请求缓存器的内存块起始地址;数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部;向动态内存分配模块发送更新空闲缓存地址申请;
所述缓存区模块,用于存储数据包。
2.一种用于交换设备的数据包低时延缓存方法,其特征在于,使用数据包低时延缓存的装置,将数据包进行聚合,缓存到存储器的整个行存储区内,对内存块实行动态分配,该方法的具体步骤包括以下:
(1)初始化:
(1a)缓存区模块将本模块存储区的全部地址空间置零;
(1b)将数据包聚合器中的聚合计数器置零;
(2)划分内存块:
(2a)动态内存分配模块设置内存块状态表项地址,该地址的高位表示队列号,该地址的低位表示内存块标号;
(2b)动态内存分配模块用内存块状态表项地址与行存储区字节数的乘积值的二进制数值序列,作为缓存区域的内存块起始地址序列;
(2c)将每个缓存区域内存块起始地址序列,依次写入空闲内存块先入先出队列模块;
(3)读取数据包信息:
(3a)包聚合模块接收数据包的写入申请,从写入申请中分别提取数据包的目的端口号、数据包的有效长度;
(3b)使用目的端口号的二进制数值序列,对数据包的队列号序列进行编号,将编号后的队列号序列写入到聚合块信息先入先出队列的队列号字段中;
(4)聚合数据包:
(4a)将动态随机存取存储器DRAM的行存储空间占用字节数的二进制数值,作为聚合上限值;
(4b)将缓存装置的带宽与行存储空间字节数的商值的二进制数值,作为聚合计数器的计数上限值;
(4c)包聚合模块中的合并模块读取由输入端口输入的数据包,写入到聚合块存储器中;
(4d)合并模块使用字节数计算方法,获取聚合块存储器中的字节数;
(4e)判断聚合块存储器中的字节数是否达到聚合上限值,若是,则执行步骤(5);否则,执行步骤(4f);
(4f)判断聚合计数器的计数值是否大于聚合计数器上限值,若是,则执行步骤(5);否则,执行步骤(4g);
(4g)将聚合计数器的计数值加1后执行步骤(4f);
(5)申请缓存空间:
(5a)合并模块停止向聚合块存储器写入数据包,将聚合计数器置零;
(5b)将聚合块信息先入先出队列的编号字段中的数值加1;
(5c)将聚合块存储器中的字节数,写入聚合块信息先入先出队列的有效长度字段中;
(5d)包聚合模块向调度器模块发出写请求申请;
(6)分配缓存地址:
(6a)调度器模块读取聚合块信息先入先出队列的聚合块信息;
(6b)将聚合块队列号与编号作为读地址,从空闲内存块先入先出队列读取对应的内存块起始地址;
(6c)将内存块起始地址写入到聚合块信息先入先出队列的缓存地址字段;
(7)搬移数据包:
(7a)数据接收模块从聚合块信息先入先出队列中读取内存块起始地址、缓存有效长度;
(7b)数据接收模块将内存块状态表的写入完成字段设置为1;
(7c)数据接收模块通过数据总线,将聚合块输出到内存块起始地址对应的缓存区中;
(7d)向动态内存分配模块发送更改动态内存状态表的申请;
(8)更新内存块状态信息:
(8a)动态内存分配模块收到更改内存块状态表的申请后,将聚合块的有效长度写到内存块状态表的聚合块有效长度字段中;
(8b)将内存块起始地址写入到内存块状态表的缓存地址字段;
(8c)将内存块状态表的内存块生存时间字段设置为1;
(8d)将内存块状态表的内存块空闲状态字段设置为0;
(8e)将内存块状态表中的写入完成字段设置为0;
(9)响应读取请求:
(9a)输出端口向调度器发送读取数据的请求;
(9b)输出端口将拟读出的内存块地址写入请求缓存器中;
(10)检测冲突:
(10a)调度器读取请求缓存器的内存块起始地址,将内存块起始地址发送给冲动态内存分配模块;
(10b)动态内存分配模块以内存块起始地址作为读地址,从内存块状态表中读取内存块的信息;
(10c)若内存块状态表的写入完成字段为0时,动态内存分配模块将内存块起始地址发送给数据发送模块;
(11)读取数据块:
(11a)数据发送模块通过数据总线,将聚合块从内存块起始地址对应的缓存区输出到缓存装置外部;
(11b)向动态内存分配模块发送更新空闲缓存地址申请;
(12)更新空闲缓存地址:
(12a)动态内存分配模块更改内存块状态表;
(12b)若内存块状态表的内存块回收字段的数值为1后,将内存块起始地址写入到空闲内存块先入先出队列。
3.根据权利要求2所述的一种用于交换设备的数据包低时延缓存方法,其特征在于,步骤(3a)中所述数据包的写入申请包括数据包输入端口字段、目的端口字段、缓存有效长度字段。
4.根据权利要求2所述的一种用于交换设备的数据包低时延缓存方法,其特征在于,步骤(4d)中所述字节数计算方法的步骤如下:
第一步,将长度寄存器清零;
第二步,将当前接收的数据包长度值寄存到长度寄存器中;
第三步,将提取长度寄存器中的长度值又与当前接收的数据包长度值相加,将相加结果寄存到长度寄存器中,将长度寄存器中的数值作为聚合数据包的字节数。
5.根据权利要求2所述的一种用于交换设备的数据包低时延缓存方法,其特征在于,步骤(6a)中所述的聚合块信息包括聚合块队列号、聚合块编号、有效长度、内存块起始地址。
6.根据权利要求2所述的一种用于交换设备的数据包低时延缓存方法,其特征在于,步骤(8a)中所述内存块状态表包括缓存地址字段、聚合块有效长度字段、生存时间字段、空闲状态字段、写入完成字段。
7.根据权利要求2所述的一种用于交换设备的数据包低时延缓存方法,其特征在于,步骤(12a)中所述动态内存分配模块更改内存块状态表的方法,步骤如下:
第一步,动态内存分配模块收到更新空闲缓存地址申请后,将内存块状态表的内存块生存时间字段减1;
第二步,判断内存块状态表的生存时间字段的数值是否为0,若是,执行第三步;否则,执行第四步;
第三步,设置内存块状态表的内存块回收字段为0,表示已经回收;
第四步,设置内存块状态表的内存块回收字段为1,表示没有回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810117265.8A CN108366111B (zh) | 2018-02-06 | 2018-02-06 | 一种用于交换设备的数据包低时延缓存装置与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810117265.8A CN108366111B (zh) | 2018-02-06 | 2018-02-06 | 一种用于交换设备的数据包低时延缓存装置与方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108366111A true CN108366111A (zh) | 2018-08-03 |
CN108366111B CN108366111B (zh) | 2020-04-07 |
Family
ID=63004743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810117265.8A Active CN108366111B (zh) | 2018-02-06 | 2018-02-06 | 一种用于交换设备的数据包低时延缓存装置与方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108366111B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857573A (zh) * | 2018-12-29 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及*** |
CN110149660A (zh) * | 2019-05-24 | 2019-08-20 | 重庆邮电大学 | 基于目标导向的多数据包聚合选择方法 |
CN111090601A (zh) * | 2019-12-07 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 基于bmc芯片的多功能usb控制方法、***、终端及存储介质 |
CN111813717A (zh) * | 2020-06-10 | 2020-10-23 | 烽火通信科技股份有限公司 | 一种数据帧存储切换的装置及方法 |
CN111813759A (zh) * | 2020-07-13 | 2020-10-23 | 北京九维数安科技有限公司 | 小包数据并行处理装置和方法 |
CN112084136A (zh) * | 2020-07-23 | 2020-12-15 | 西安电子科技大学 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
CN112862111A (zh) * | 2021-04-26 | 2021-05-28 | 之江实验室 | 一种加速分布式机器学习梯度汇聚的方法和装置 |
CN113438097A (zh) * | 2021-05-21 | 2021-09-24 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629914A (zh) * | 2012-04-27 | 2012-08-08 | 深圳市邦彦信息技术有限公司 | 一种以太网数据包缓存方法和装置 |
CN103647807A (zh) * | 2013-11-27 | 2014-03-19 | 华为技术有限公司 | 一种信息缓存方法、装置和通信设备 |
CN104301066A (zh) * | 2013-07-19 | 2015-01-21 | 华为技术有限公司 | 数据包传输方法及装置 |
US20160170886A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof |
CN106130930A (zh) * | 2016-06-24 | 2016-11-16 | 西安电子科技大学 | 一种数据帧预入队处理的装置及方法 |
CN106533982A (zh) * | 2016-11-14 | 2017-03-22 | 西安电子科技大学 | 基于带宽借用的动态队列调度装置及方法 |
CN107426180A (zh) * | 2017-06-15 | 2017-12-01 | 西安微电子技术研究所 | 一种对以太网数据帧覆盖性的监测装置 |
-
2018
- 2018-02-06 CN CN201810117265.8A patent/CN108366111B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629914A (zh) * | 2012-04-27 | 2012-08-08 | 深圳市邦彦信息技术有限公司 | 一种以太网数据包缓存方法和装置 |
CN104301066A (zh) * | 2013-07-19 | 2015-01-21 | 华为技术有限公司 | 数据包传输方法及装置 |
CN103647807A (zh) * | 2013-11-27 | 2014-03-19 | 华为技术有限公司 | 一种信息缓存方法、装置和通信设备 |
US20160170886A1 (en) * | 2014-12-10 | 2016-06-16 | Alibaba Group Holding Limited | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof |
CN106130930A (zh) * | 2016-06-24 | 2016-11-16 | 西安电子科技大学 | 一种数据帧预入队处理的装置及方法 |
CN106533982A (zh) * | 2016-11-14 | 2017-03-22 | 西安电子科技大学 | 基于带宽借用的动态队列调度装置及方法 |
CN107426180A (zh) * | 2017-06-15 | 2017-12-01 | 西安微电子技术研究所 | 一种对以太网数据帧覆盖性的监测装置 |
Non-Patent Citations (2)
Title |
---|
JORGE GARCI´A-VIDAL 等: "A DRAM/SRAM Memory Scheme for Fast Packet Buffers", 《IEEE TRANSACTIONS ON COMPUTERS》 * |
陈琨: "基于层次化存储的高性能数据包缓存机制的研究与实现", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857573A (zh) * | 2018-12-29 | 2019-06-07 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及*** |
CN110149660A (zh) * | 2019-05-24 | 2019-08-20 | 重庆邮电大学 | 基于目标导向的多数据包聚合选择方法 |
CN110149660B (zh) * | 2019-05-24 | 2022-05-06 | 重庆邮电大学 | 基于目标导向的多数据包聚合选择方法 |
CN111090601A (zh) * | 2019-12-07 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 基于bmc芯片的多功能usb控制方法、***、终端及存储介质 |
CN111813717A (zh) * | 2020-06-10 | 2020-10-23 | 烽火通信科技股份有限公司 | 一种数据帧存储切换的装置及方法 |
CN111813759A (zh) * | 2020-07-13 | 2020-10-23 | 北京九维数安科技有限公司 | 小包数据并行处理装置和方法 |
CN112084136A (zh) * | 2020-07-23 | 2020-12-15 | 西安电子科技大学 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
CN112084136B (zh) * | 2020-07-23 | 2022-06-21 | 西安电子科技大学 | 队列缓存管理方法、***、存储介质、计算机设备及应用 |
CN112862111A (zh) * | 2021-04-26 | 2021-05-28 | 之江实验室 | 一种加速分布式机器学习梯度汇聚的方法和装置 |
CN113438097A (zh) * | 2021-05-21 | 2021-09-24 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
CN113438097B (zh) * | 2021-05-21 | 2022-08-23 | 翱捷科技股份有限公司 | 一种网络加速的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108366111B (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108366111A (zh) | 一种用于交换设备的数据包低时延缓存装置与方法 | |
CN100571195C (zh) | 多端口以太网交换装置及数据传输方法 | |
CN100445975C (zh) | 数据传输控制装置、图像处理装置和数据传输控制方法 | |
US6414961B1 (en) | ATM switching with virtual circuit FIFO buffers | |
CN102065569B (zh) | 一种适用于wlan的以太网mac子层控制器 | |
CN105376129B (zh) | 一种1394总线事务层-链路层数据包发送电路及方法 | |
CN101499956B (zh) | 分级缓冲区管理***及方法 | |
CN101267361A (zh) | 一种基于零拷贝技术的高速网络数据包捕获方法 | |
CN101150485A (zh) | 一种零拷贝缓冲区队列网络数据发送的管理方法 | |
CN108234337A (zh) | 一种支持主机接口的SpaceWire总线路由器 | |
CN101150486A (zh) | 一种零拷贝缓冲区队列网络数据接收的管理方法 | |
CN101707565A (zh) | 零拷贝网络报文发送、接收方法和装置 | |
CN108092908A (zh) | 控制流量的方法和发送端设备 | |
CN104731757B (zh) | 用于基于已删除命令确定命令速率的***和方法 | |
CN101877666A (zh) | 基于零拷贝方式的多应用程序报文接收方法和装置 | |
CN102750245B (zh) | 报文接收方法、报文接收模块、装置及*** | |
CN103617132B (zh) | 一种基于共享存储的以太网终端发送实现方法及终端装置 | |
CN104468156B (zh) | 一种利用时隙仲裁节省资源开销的方法和设备 | |
CN105335323A (zh) | 一种数据突发的缓存装置和方法 | |
CN100539538C (zh) | 具有链表处理器的存储器管理*** | |
CN109714128A (zh) | 数据传输方法、设备及计算机存储介质 | |
CN103442091B (zh) | 一种数据传输方法及装置 | |
CN101854259A (zh) | 一种数据包的计数方法及*** | |
US20160232125A1 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
CN103384225B (zh) | 基于输入交叉点缓存快速分组交换网络的流量控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |