CN117193669B - 一种报文描述符离散存储方法、装置、设备及存储介质 - Google Patents
一种报文描述符离散存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117193669B CN117193669B CN202311461355.6A CN202311461355A CN117193669B CN 117193669 B CN117193669 B CN 117193669B CN 202311461355 A CN202311461355 A CN 202311461355A CN 117193669 B CN117193669 B CN 117193669B
- Authority
- CN
- China
- Prior art keywords
- bank
- index
- message
- address
- identifier
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 239000011159 matrix material Substances 0.000 claims abstract description 111
- 238000004891 communication Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004064 recycling Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 13
- 239000006185 dispersion Substances 0.000 description 11
- 230000000694 effects Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004308 accommodation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Abstract
本发明实施例提供了一种报文描述符离散存储方法、装置、设备及存储介质,涉及数据处理技术领域,上述方法包括:获取报文描述符在index中的逻辑地址;根据逻辑地址、每一index中能够存储报文描述符的可容纳数量、DRAM bank的bank总数,确定逻辑地址在索引矩阵中对应的行坐标;根据逻辑地址与可容纳数量,确定逻辑地址在索引矩阵中对应的列坐标;获取索引矩阵中;根据逻辑地址、可容纳数量以及bank总数,确定报文描述符在bank中的bank地址;将报文描述符存储于目标bank标识对应的bank内的bank地址处。应用本发明实施例提供的方案能够实现报文描述符的离散存储。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种报文描述符离散存储方法、装置、设备及存储介质。
背景技术
随着网络技术的不断发展,网络设备的报文转发率需求不断提升。然而当前的技术条件下,DRAM bank(Dynamic Random Access Memory bank,动态随机存取存储器逻辑单元)的读写带宽相对较低,这导致了DRAM bank读写带宽和报文转发率之间的不匹配。即在DRAM bank中读写DRAM bank的速度无法满足报文转发的速度需求,导致DRAM bank读写过慢影响报文转发。
为了解决这种矛盾,可以使用多个DRAM bank来增加带宽。并且,为了进一步提高报文转发速度,需要尽可能将不同报文的报文描述符离散存储至不同的DRAM bank中,从而避免大量报文的报文描述符均写入同一DRAM bank内,造成在短时间内针对同一DRAM bank进行大量读写操作,超出DRAM bank的可承受范围,进而影响报文转发。
发明内容
本发明实施例的目的在于提供一种报文描述符离散存储方法、装置、设备及存储介质,以实现报文描述符的离散存储。具体技术方案如下:
第一方面,本发明实施例提供了一种报文描述符离散存储方法,所述方法包括:
获取报文描述符在地址组index中的逻辑地址;其中,按照报文在队列中的顺序,报文对应的报文描述符在所述index中连续存储;
根据所述逻辑地址、每一index中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元DRAM bank的逻辑单元bank总数,确定所述逻辑地址在索引矩阵中对应的行坐标;其中,所述索引矩阵用于存储bank标识,所述索引矩阵的行数为所述bank总数,列数为所述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在所述索引矩阵中每一bank标识存储所述可容纳数量个;
根据所述逻辑地址与所述可容纳数量,确定所述逻辑地址在所述索引矩阵中对应的列坐标;
获取所述索引矩阵中,所述行坐标与所述列坐标对应的位置处存储的目标bank标识;
根据所述逻辑地址、所述可容纳数量以及所述bank总数,确定所述报文描述符在bank中的bank地址;
将所述报文描述符存储于所述目标bank标识对应的bank内的bank地址处。
本发明的一个实施例中,所述方法还包括:
通过以下方式向所述index中存储报文描述符:
在报文存储至队列后,确定该队列对应的index尾部是否存在空闲空间;
若存在,则将报文描述符存储于所述空闲空间中的起始位置处;
若不存在,则从index资源池中申请新index作为该队列对应的index,并将所述报文描述符存储于所述新index的起始位置处。
本发明的一个实施例中,所述方法还包括:
在从队列中读取报文后,确定该报文的报文描述符在index中的逻辑地址;
从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在index中的末位地址;
若是,则将该index回收至index资源池。
本发明的一个实施例中,通过以下方式向索引矩阵中存储bank标识:
针对所述索引矩阵中第一列,通过以下方式向该列中的各元素中写入bank标识;
向目标元素中写入第一bank标识,所述第一bank标识的初始值小于预设阈值,所述预设阈值基于所述bank总数设置,所述目标元素为第一列中的任一元素;
在所述第一bank标识的基础上增加第一预设步长,得到更新后的第一bank标识,若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去所述预设阈值;
将更新后的第一bank标识写入至未写入bank标识的元素中,并返回执行所述在所述第一bank标识的基础上增加第一预设步长至所述将更新后的第一bank标识写入下一元素中的步骤,直至第一列的各个元素中均写入bank标识;
针对第一列之外的每一元素,向该元素中写入第二bank标识,其中,所述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及所述bank总数计算得到的。
本发明的一个实施例中,所述第一预设步长和/或所述第二预设步长为质数。
第二方面,本发明实施例提供了一种报文描述符离散存储装置,所述装置包括:
逻辑地址获取模块,用于获取报文描述符在地址组index中的逻辑地址;其中,按照报文在队列中的顺序,报文对应的报文描述符在所述index中连续存储;
行坐标确定模块,用于根据所述逻辑地址、每一index中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元DRAM bank的逻辑单元bank总数,确定所述逻辑地址在索引矩阵中对应的行坐标;其中,所述索引矩阵用于存储bank标识,所述索引矩阵的行数为所述bank总数,列数为所述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在所述索引矩阵中每一bank标识存储所述可容纳数量个;
列坐标确定模块,用于根据所述逻辑地址与所述可容纳数量,确定所述逻辑地址在所述索引矩阵中对应的列坐标;
逻辑单元标识获取模块,用于获取所述索引矩阵中,所述行坐标与所述列坐标对应的位置处存储的目标bank标识;
逻辑单元地址获取模块,用于根据所述逻辑地址、所述可容纳数量以及所述bank总数,确定所述报文描述符在bank中的bank地址;
报文描述符存储模块,用于将所述报文描述符存储于所述目标bank标识对应的bank内的bank地址处。
本发明的一个实施例中,所述装置还包括:
通过以下模块向所述index中存储报文描述符:
空闲空间确定模块,用于在报文存储至队列后,确定该队列对应的index尾部是否存在空闲空间;
第一存储模块,用于若所述空闲空间确定模块确定存在空闲空间,则将报文描述符存储于所述空闲空间中的起始位置处;
第二存储模块,用于若不存在,则若所述空闲空间确定模块确定不存在空闲空间,则从index资源池中申请新index作为该队列对应的index,并将所述报文描述符存储于所述新index的起始位置处。
本发明的一个实施例中,所述装置还包括:
逻辑地址确定模块,用于在从队列中读取报文后,确定该报文的报文描述符在index中的逻辑地址;
地址判断模块,用于从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在index中的末位地址;
Index回收模块,用于在所述地址判断模块判断所确定的逻辑地址是所在index中的末位地址,则将该index回收至index资源池。
本发明的一个实施例中,通过以下模块向索引矩阵中存储bank标识:
针对所述索引矩阵中第一列,通过以下模块向该列中的各元素中写入bank标识;
第一标识写入模块,用于向目标元素中写入第一bank标识,所述第一bank标识的初始值小于预设阈值,所述预设阈值基于所述bank总数设置,所述目标元素为第一列中的任一元素;
标识更新模块,用于在所述第一bank标识的基础上增加第一预设步长,得到更新后的第一bank标识,若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去所述预设阈值;
第二标识写入模块,用于将更新后的第一bank标识写入至未写入bank标识的元素中,并返回触发执行所述第一标识写入模块至所述第二标识写入模块,直至第一列的各个元素中均写入bank标识;
第三标识写入模块,用于针对第一列之外的每一元素,向该元素中写入第二bank标识,其中,所述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及所述bank总数计算得到的。
本发明的一个实施例中,所述第一预设步长和/或所述第二预设步长为质数。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第五方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法步骤。
本发明实施例有益效果:
本发明实施例中预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种报文描述符离散存储方法的流程示意图;
图2为本发明实施例提供的第一种报文描述符存储方式的流程示意图;
图3为本发明实施例提供的第二种报文描述符存储方式的流程示意图;
图4为本发明实施例提供的第三种报文描述符存储方式的流程示意图;
图5为本发明实施例提供了一种索引矩阵生成方式的流程示意图;
图6为本发明实施例提供的一种报文描述符离散存储装置的结构示意图;
图7为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
由于相关技术中存在大量报文的报文描述符均写入同一DRAM bank内,造成在短时间内针对同一DRAM bank进行大量读写操作,超出DRAM bank的可承受范围,进而影响报文转发,导致报文转发率较低的问题,为了解决上述问题,本发明实施例提供了一种报文描述符离散存储方法、装置、设备及存储介质。
参见图1,为本发明实施例提供的一种报文描述符离散存储方法的流程示意图,包括以下步骤S101-S106。
S101:获取报文描述符在地址组中的逻辑地址。
其中,按照报文在队列中的顺序,报文对应的报文描述符在index(地址组)中连续存储。
具体的,网络转发的过程中,报文被发送至网络设备后,网络设备将其存储至队列中,报文所归属的队列具有随机性,网络设备需要申请用于存储报文对应的报文描述符的地址。
本发明实施例中,在index的存储空间允许的情况下,同一队列中报文对应的报文描述符在index中按照所对应的报文的存储顺序连续存储。在index的存储空间不足的情况下,同一队列中报文的描述符可以分散与多个index中连续存储,但每一index中的报文描述符依旧是按照所对应的报文的存储顺序连续存储的。
此外,每个index中包含多个地址能够存储多个报文描述符,上述地址为逻辑地址,为了便于硬件实现,本发明实施例中每一index中的地址数量可以为2的次方,且为连续地址。再者,各个index中包含的地址个数,即能够存储报文描述符的可容纳数量相同,不同index间的逻辑地址是有规律的离散地址,离散的间隔一般与上述可容纳数量相同。上述可容纳数量可以以index_size(地址组尺寸)表示。
S102:根据逻辑地址、每一地址组中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元的逻辑单元总数,确定逻辑地址在索引矩阵中对应的行坐标。
其中,上述索引矩阵用于存储bank标识,上述索引矩阵的行数为上述bank总数,列数为上述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在上述索引矩阵中每一bank标识存储上述可容纳数量个。
具体的,上述bank标识可以以数字、字符、字符串等形式表示,不同bank的bank标识不同,以采用bank标识区别不同的bank。
上述bank总数可以以bank_num(逻辑单元数量)表示,上述索引矩阵为二维数组,可以以@sca(m,n)表示,m为索引矩阵的行数,等于bank_num,n为索引矩阵的列数,等于index_size。
本发明的一个实施例中,可以基于以下公式计算逻辑地址在索引矩阵中对应的行坐标:
m'=(addr/index_size)%bank_num
其中,m'为计算得到的行坐标,addr表示上述逻辑地址、index_size为可容纳数量,bank_num为bank总数。
本发明的另一个实施例中,可以根据报文描述符的逻辑地址、报文描述符所在的index的起始地址以及上述可容纳数量,确定该报文描述符在index中的次序,计算上述次序与bank总数之间的商值,预先设置商值的不同取值范围与行坐标之间的对应关系,从而可以根据计算得到的商值确定所对应的行坐标。
S103:根据逻辑地址与可容纳数量,确定逻辑地址在索引矩阵中对应的列坐标。
本发明的一个实施例中,可以基于以下公式计算逻辑地址在索引矩阵中对应的列坐标:
n'=addr% index_size
其中,n'为计算得到的列坐标,addr表示上述逻辑地址、index_size为可容纳数量。
本发明的另一个实施例中,可以计算逻辑地址与可容纳数量之间的商值,预先设置商值的不同取值范围与列坐标之间的对应关系,从而可以根据计算得到的商值确定所对应的列坐标。
S104:获取索引矩阵中,上述行坐标与上述列坐标对应的位置处存储的目标逻辑单元标识。
其中,上述目标逻辑单元标识即为目标bank标识。
S105:根据逻辑地址、可容纳数量以及逻辑单元总数,确定报文描述符在逻辑单元中的逻辑单元地址。
其中,上述逻辑单元地址即为bank地址。
本发明的一个实施例中,可以基于以下公式计算bank地址:
Bank_addr = {(addr/ index_size/ bank_num) , addr %index_size}
其中,Bank_addr为计算得到的bank地址,addr为上述逻辑地址,index_size为可容纳数量,bank_num为bank总数。
本发明的另一个实施例中,也可以确定bank中的空闲地址,将空闲地址中位于首位的地址作为bank地址。
S106:将报文描述符存储于目标逻辑单元标识对应的逻辑单元内的逻辑单元地址处。
由以上可见,本发明实施例中预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
采用本发明实施例提供的方案能够使得单队列中报文的报文描述符尽可能分散到不同的bank上,也能使不同队列中报文的报文描述符尽可能分散到不同的bank上,从而充分利用bank的带宽,满足整体报文转发率和队列报文转发率的双重需求,即无论采用整体报文转发还是队列报文转发的方式均能够达到较好的转发效果。
参见图2,为本发明实施例提供的第一种报文描述符存储方式的流程示意图,针对每一报文描述符均采用以下步骤S201-S203向index中插入报文描述符。
S201:在报文存储至队列后,确定该队列对应的地址组尾部是否存在空闲空间。
在存在空闲空间的情况下,执行步骤S202,在不存在空闲空间的情况下,执行步骤S203。
其中,队列对应的index是从index资源池中申请的,用于存储该队列中报文的报文描述符的index。不同队列对应的index不同。
队列中存储的报文数量越多,报文的报文描述符越多,在报文描述符较多的情况下,一个index可能无法完全存储一个队列中所有报文的报文描述符,在此情况下,一个队列中报文的报文描述符可能需要存储在多个不同的index中,因此一个队列可能对应一个或多个index。
本发明的一个实施例中,可以为每一index设置可用地址数量的标签,上述可用地址数量是当前index尾部剩余的空闲空间能够容纳的报文描述符的数量。可以用index_num表示,在未插入报文描述符的情况下,index_num等于index_size,每向index中插入一个报文描述符,该index对应的index_num减1。在更新后的index_num为0的情况下,表示该index的尾部不存在空闲空间,可执行步骤S203,在更新后的index_num不为0的情况下,表示该index的尾部存在空闲空间,则执行步骤S202。
本发明的另一个实施例中,也可以遍历队列对应的index,从而确定该index中是否存在空闲空间。
S202:将报文描述符存储于空闲空间中的起始位置处。
在存在前文所示的index_num的情况下,在向index的空闲空间中的起始位置处插入报文描述符后,将该index对应的index_num减1。
由于每次向index中存储报文描述符时均是将报文描述符存储至空闲空间中的起始位置处,因此存储至index中的报文描述符的排列顺序与报文描述符对应的报文存储至队列中的先后顺序相同,又由于队列存储遵循先存储的数据在队列中位置靠前的原则,因此报文存储至队列中的先后顺序与报文在队列中的存储顺序相同,也就是报文在队列中的存储顺序与报文对应的报文描述符在index中的存储顺序相同。
S203:从地址组资源池中申请新地址组作为该队列对应的地址组,并将报文描述符存储于新地址组的起始位置处。
在不存在空闲空间的情况下,说明该index中已经无法再进一步容纳报文描述符,因此可以从index资源池中申请新index作为该队列对应的index,index资源池中的index均为未存储任何数据的index。
在存在index_num的情况下,新index对应的index_num等于index_size,在将报文描述符存储于新index的起始位置处之后,index_num减1。
由以上可见,本发明实施例中为队列配置相对应的index,将存储至该队列中的报文的报文描述符存储至队列对应的index中,可以使得同一队列中报文的报文描述符在index中尽可能地连续存储。并且,报文描述符优先存储至队列对应的index中空闲位置的起始位置处,使得报文在队列中的存储顺序与报文对应的报文描述符在index中的存储顺序相同,两者保持一致。
参见图3,为本发明实施例提供的第二种报文描述符存储方式的流程示意图,与前述图2所示的实施例相比,本发明实施例还包括以下步骤S204-S206。
S204:在从队列中读取报文后,确定该报文的报文描述符在地址组中的逻辑地址。
从队列中读取报文意味着网络设备将转发该报文,此时需要从index中取出该报文的报文描述符进行报文转发,则需要确定报文的报文描述符在index中的逻辑地址。
具体的,在存储报文的报文的报文描述符时可以记录报文描述符的逻辑地址,从而在需要读取报文后可以快速读取报文的报文描述符。
另外,由于在图2所示的实施例中报文的存储顺序与报文描述符的存储顺序相同,在转发报文时,报文从队列中读出的顺序是由前到后的顺序,也就是前端的报文会被优先读取,那么前端的报文对应的报文描述符也会被优先读取出index,所以理论上,当前从队列中读取的报文应当是队列中当前位于最前端的报文,该报文的报文描述符也应当是index中当前位于最前端的报文描述符,所以可以直接将该队列对应的index中当前位于最前端的报文描述符确定为所读取的报文的报文描述符,则最前端的报文描述符的逻辑地址即为所读取的报文的报文描述符的逻辑地址。
S205:从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在地址组中的末位地址。
若是所在index中的末位地址,则执行步骤S206,否则,结束流程,进行后续处理。
若所确定的逻辑地址是末位地址,则说明读取该报文描述符之后,该index中不再存在报文描述符,因此可以执行步骤S206。
S206:将该地址组回收至地址组资源池。
由于index中已经不存在报文描述符,因此可以将index回收至index资源池,等待后续用于存储其他队列中报文的报文描述符。
由以上可见,本发明实施例中存在index资源回收机制,在从队列中读取报文之后,可以从index中读取报文描述符,在index中的报文描述符全部被读取之后,可以将已经不再存储任何报文描述符的index回收至index资源池,用于后续其他队列中报文的报文描述符的存储。
参见图4,为本发明实施例提供的第三种报文描述符存储方式的流程示意图,包括以下步骤S401-S413。
S401:开始流程。
S402:判断地址组资源池是否初始化。
若是则说明能够从index资源池中请求index,则执行步骤S403,否则需要初始化index资源池,执行步骤S410。
S403:判断存在报文入队或出队。
若存在报文入队,则说明需要向index中存储该报文的报文描述符,执行步骤S404,若存在报文出队,需要从index中读取该报文的报文描述符,则执行步骤S411。
S404:读取队列信息,确定队列对应的地址组以及剩余的空闲空间能够容纳的报文描述符的数量。
上述剩余的空闲空间能够容纳的报文描述符的数量即为index_num。
S405:根据剩余的空闲空间能够容纳的报文描述符的数量,判断所确定的地址组中是否存在剩余地址组地址可用。
上述地址组地址即为index地址。
若存在剩余index地址可用,则可以将报文描述符存储至该index中,执行步骤S406-S407。否则,无法将报文描述符存储至该index中,则执行步骤S408-S409。
S406:将报文描述符存储至地址组中的剩余空间。
S407:更新队列信息,将剩余的空闲空间能够容纳的报文描述符的数量减1。
执行S407之后即完成了一次报文描述符的存储,则可结束流程。
S408:从地址组资源池中申请一个新地址组。
上述地址组资源池即为index资源池。
S409:将报文描述符存储至新地址组的初始位置,更新队列信息,新地址组的剩余的空闲空间能够容纳的报文描述符的数量减1。
执行S409之后即完成了一次报文描述符的存储,则可结束流程。
S410:根据双倍速率同步动态随机存储器中可用地址数据,初始化地址组资源池中地址组的数量。
上述双倍速率同步动态随机存储器为DDR(Double Data Rate)。
执行S410之后即完成了地址组资源池的初始化,则可结束流程。
S411:读取队列信息,确定待读取的报文描述符的逻辑地址。
S412:读取所确定位置处的报文描述符,并判断所确定的逻辑地址是否是所在地址组的末位地址。
若是所在index的末位地址,则说明该index中的报文描述符已经被读取完毕,则执行步骤S413,否则,则完成了一次报文描述符的读取,则可结束流程。
S413:回收地址组至地址组资源池中。
完成回收过程中,可结束流程。
参见图5,本发明实施例提供了一种索引矩阵生成方式的流程示意图,具体的,本发明实施例中在生成行数为bank总数,列数为可容纳数量的索引矩阵后,通过以下方式向索引矩阵中写入bank标识,此实施例中的bank标识以数字的形式表示,与计算机常用的计数方式相吻合,bank标识可以为自然数,当然也可以是其他数字,本实施例对此不进行限定。
向索引矩阵中写入bank标识的过程分为两个阶段,首先通过步骤S501-S503向索引矩阵中的第一列写入bank标识,再通过步骤S504向第一列之外的其他元素中写入bank标识。
S501:向目标元素中写入第一逻辑单元标识。
其中,上述首位元素为第一列中的首位元素,即索引矩阵中位于第一列第一行的元素,第一bank标识的初始值小于预设阈值,上述预设阈值基于bank总数设置,具体的,为(bank总数-1)与bank标识的最小值之和,例如,若上述bank标识的最小值为0,则预设阈值为bank总数-1。
上述目标元素为第一列中的任一元素,具体的,与计算机的存储规律相符合,目标元素可以为第一列中位于首位的元素。
S502:在第一逻辑单元标识的基础上增加第一预设步长,得到更新后的第一逻辑单元标识,若更新后的第一逻辑单元标识大于预设阈值,则在更新后的第一逻辑单元标识的基础上减去预设阈值。
其中,上述第一预设步长可以为任意值,但不易选择过大,否则容易频繁出现更新后的第一bank标识大于预设阈值的情况,另外,上述第一预设步长可以选择为3、11等质数,使得生成索引矩阵后可以达到报文描述符较好的离散效果。
若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去预设阈值,使得减去预设阈值后的第一bank标识小于预设阈值,即使得第一bank标识始终小于预设阈值。需要说明的是,若减去预设阈值之后第一bank标识依旧大于预设阈值,则在第一bank标识的基础上继续减去预设阈值,直至最终第一bank标识小于预设阈值。
S503:将更新后的第一逻辑单元标识写入至未写入逻辑单元标识的元素中。
返回执行所述步骤S501-S503,直至第一列中的各个元素中均写入bank标识。
本发明的一个实施例中可以选择向任一未写入bank标识的元素中写入第一bank标识。
优选的,与计算机的读取方式相适应,可以按照元素在第一列中从上到下的顺序,依次向第一元素中的各个元素内写入bank标识。
下面,通过示例(一)描述向第一列中各个元素内写入bank标识的过程。
示例(一),上述bank总数为5,可容纳数量为2,则索引矩阵为5行×2列的矩阵,索引矩阵以@sca(5,2)表示,上述第一bank标识的初始值与最小值均为0,预设阈值为bank总数-1+0=4,第一预设步长为3,目标元素为第一列中位于首位的元素。
则@sca[0,0]中写入的第一bank标识为0,在第一bank标识的基础上加3,得到更新后的第一bank标识为3,小于预设阈值。则继续向下一元素中写入第一bank标识,写入后@sca[1,0]=3。
在第一bank标识的基础上继续加3,得到更新后的第一bank标识为6,大于预设阈值,则在第一bank标识的基础上减预设阈值4,得到第一bank标识为2。则继续向下一元素中写入第一bank标识,写入后@sca[2,0]=2。
在第一bank标识的基础上继续加3,得到更新后的第一bank标识为5,大于预设阈值,则在第一bank标识的基础上减预设阈值4,得到第一bank标识为1。则继续向下一元素中写入第一bank标识,写入后@sca[3,0]=1。
在第一bank标识的基础上继续加3,得到更新后的第一bank标识为4,不大于预设阈值,则继续向下一元素中写入第一bank标识,写入后@sca[4,0]=4。
至此,完成索引矩阵中第一列中各元素的写入,写入后第一列中各元素中记录的bank标识依次为0、3、2、1、4,第一列中记录的各bank标识均不相同,满足索引矩阵的需求。
继续执行步骤S504,向索引矩阵中第一列之外的其他元素中写入bank标识。
S504:针对第一列之外的每一元素,向该元素中写入第二逻辑单元标识。
其中,上述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及上述bank总数计算得到的。
具体的,上述第二预设步长可以为任意值,另外,上述第二预设步长可以选择为3、11等质数,使得生成索引矩阵后可以达到报文描述符较好的离散效果。并且,上述第二预设步长与第一预设步长可以相同也可以不同。
本发明的一个实施例中,可以基于以下公式计算第二bank标识:
@scan[l,c]=(@scan[l,0]+c×k1)%bank_num
其中,@scan[l,c]为位于第l行第c列的元素中待写入的第二bank标识,c≠0,@scan[l,0]为该元素所在行中第一列中元素中当前存储的bank标识,k1为第二预设步长,bank_num为bank总数。
在前述示例(一)的基础上,若上述第二预设步长也为3,则基于上述公式计算得到的第二列第一行的元素为(0+1×3)%5=3;
第二列第二行的元素为(3+1×3)%5=1;
第二列第三行的元素为(2+1×3)%5=0;
第二列第四行的元素为(1+1×3)%5=4;
第二列第五行的元素为(4+1×3)%5=2。
则最终计算得到的第二列中各元素中记录的bank标识依次为3、1、0、4、2。可见,第二列中各元素中记录的bank标识也各不相同,符合索引矩阵的要求。
最终得到的索引矩阵为:
;
可见,最终生成的索引矩阵中同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在索引矩阵中每一bank标识存储所述可容纳数量个,即2个,也就是基于上述方式生成的索引矩阵能够满足索引矩阵的要求。
需要说明的是,示例(一)中各参数的取值仅为本发明实施例中参数的一种取值形式,本发明实施例对参数的具体取值不进行限定,任何能够基于上述方式生成满足要求的索引矩阵的参数取值均是可行的。上述参数包括预设阈值、第一bank标识的初始值、第一预设步长、第二预设步长。
由以上可见,本发明实施例中通过上述方式可以生成满足需求的索引矩阵用于后续报文描述符的存储,并且此过程中用户仅需要设置各参数的取值,便能够基于上述参数的取值生成索引矩阵,生成索引矩阵的过程较为简单,与用户手动生成满足复杂条件的索引矩阵相比,通过本发明实施例提供的方案能够节省生成索引矩阵所需的时间与人力成本。
与前述报文描述符离散存储方法相对应,本发明实施例还提供了一种报文描述符离散存储装置。
参见图6,为本发明实施例提供的一种报文描述符离散存储装置的结构示意图,所述装置包括:
逻辑地址获取模块601,用于获取报文描述符在地址组index中的逻辑地址;其中,按照报文在队列中的顺序,报文对应的报文描述符在所述index中连续存储;
行坐标确定模块602,用于根据所述逻辑地址、每一index中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元DRAM bank的逻辑单元bank总数,确定所述逻辑地址在索引矩阵中对应的行坐标;其中,所述索引矩阵用于存储bank标识,所述索引矩阵的行数为所述bank总数,列数为所述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在所述索引矩阵中每一bank标识存储所述可容纳数量个;
列坐标确定模块603,用于根据所述逻辑地址与所述可容纳数量,确定所述逻辑地址在所述索引矩阵中对应的列坐标;
逻辑单元标识获取模块604,用于获取所述索引矩阵中,所述行坐标与所述列坐标对应的位置处存储的目标bank标识;
逻辑单元地址获取模块605,用于根据所述逻辑地址、所述可容纳数量以及所述bank总数,确定所述报文描述符在bank中的bank地址;
报文描述符存储模块606,用于将所述报文描述符存储于所述目标bank标识对应的bank内的bank地址处。
由以上可见,本发明实施例中预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
本发明的一个实施例中,所述装置还包括:
通过以下模块向所述index中存储报文描述符:
空闲空间确定模块,用于在报文存储至队列后,确定该队列对应的index尾部是否存在空闲空间;
第一存储模块,用于若所述空闲空间确定模块确定存在空闲空间,则将报文描述符存储于所述空闲空间中的起始位置处;
第二存储模块,用于若不存在,则若所述空闲空间确定模块确定不存在空闲空间,则从index资源池中申请新index作为该队列对应的index,并将所述报文描述符存储于所述新index的起始位置处。
由以上可见,本发明实施例中为队列配置相对应的index,将存储至该队列中的报文的报文描述符存储至队列对应的index中,可以使得同一队列中报文的报文描述符在index中尽可能地连续存储。并且,报文描述符优先存储至队列对应的index中空闲位置的起始位置处,使得报文在队列中的存储顺序与报文对应的报文描述符在index中的存储顺序相同,两者保持一致。
本发明的一个实施例中,所述装置还包括:
逻辑地址确定模块,用于在从队列中读取报文后,确定该报文的报文描述符在index中的逻辑地址;
地址判断模块,用于从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在index中的末位地址;
Index回收模块,用于在所述地址判断模块判断所确定的逻辑地址是所在index中的末位地址,则将该index回收至index资源池。
由以上可见,本发明实施例中存在index资源回收机制,在从队列中读取报文之后,可以从index中读取报文描述符,在index中的报文描述符全部被读取之后,可以将已经不再存储任何报文描述符的index回收至index资源池,用于后续其他队列中报文的报文描述符的存储。
本发明的一个实施例中,通过以下模块向索引矩阵中存储bank标识:
针对所述索引矩阵中第一列,通过以下模块向该列中的各元素中写入bank标识;
第一标识写入模块,用于向目标元素中写入第一bank标识,所述第一bank标识的初始值小于预设阈值,所述预设阈值基于所述bank总数设置,所述目标元素为第一列中的任一元素;
标识更新模块,用于在所述第一bank标识的基础上增加第一预设步长,得到更新后的第一bank标识,若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去所述预设阈值;
第二标识写入模块,用于将更新后的第一bank标识写入至未写入bank标识的元素中,并返回触发执行所述第一标识写入模块至所述第二标识写入模块,直至第一列的各个元素中均写入bank标识;
第三标识写入模块,用于针对第一列之外的每一元素,向该元素中写入第二bank标识,其中,所述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及所述bank总数计算得到的。
由以上可见,本发明实施例中通过上述方式可以生成满足需求的索引矩阵用于后续报文描述符的存储,并且此过程中用户仅需要设置各参数的取值,便能够基于上述参数的取值生成索引矩阵,生成索引矩阵的过程较为简单,与用户手动生成满足复杂条件的索引矩阵相比,通过本发明实施例提供的方案能够节省生成索引矩阵所需的时间与人力成本。
本发明的一个实施例中,所述第一预设步长和/或所述第二预设步长为质数。
由以上可见,上述第一预设步长和/或第二预设步长可以为质数,使得生成索引矩阵后可以达到报文描述符较好的离散效果。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现上述报文描述符离散存储方法任一的方法步骤。
本发明实施例中的电子设备进行报文描述符离散存储时,预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一报文描述符离散存储方法的步骤。
本发明实施例中的计算机存储介质中存储的计算机程序进行报文描述符离散存储时,预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一报文描述符离散存储方法。
本发明实施例中的计算机程序产品进行报文描述符离散存储时,预先配置了索引矩阵,索引矩阵中同一列中各bank标识不同,同一列中各bank标识也不同,且每一bank标识存储可容纳数量个,可见索引矩阵中的bank标识的离散程度较高。因此,即使报文描述符的逻辑地址相近,在索引矩阵中映射的元素的位置相近,但由于位置相近的元素对应的bank标识差别较大,因此相近的逻辑地址对应的bank标识不同,进而使得相近的报文描述符能够映射至不同的bank中,使得报文描述符在bank中的离散程度较高。
在此基础上,在从bank中读取报文描述符的情况下,无论采用整体报文转发的方式,随机性得从bank中读取逻辑地址之间相差较大的报文描述符,还是采用队列报文转发的方式,集中读取同一队列中逻辑地址相近的报文描述符,由于报文描述符在bank中的离散程度较高,因此连续读取的报文描述符大概率位于不同的bank中,从而可以避免短时间内在相同的bank中大量读取报文描述符,超过bank的可承受范围,进而影响报文转发的问题。也就是,本发明实施例提供的方案既适用于整体报文转发,又适用于队列报文转发,能够满足不同情况下报文转发率的要求。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种报文描述符离散存储方法,其特征在于,所述方法包括:
获取报文描述符在地址组index中的逻辑地址;其中,按照报文在队列中的顺序,报文对应的报文描述符在所述index中连续存储;
根据所述逻辑地址、每一index中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元DRAM bank的逻辑单元bank总数,确定所述逻辑地址在索引矩阵中对应的行坐标;其中,所述索引矩阵用于存储bank标识,所述索引矩阵的行数为所述bank总数,列数为所述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在所述索引矩阵中每一bank标识存储所述可容纳数量个;通过以下方式向索引矩阵中存储bank标识:针对所述索引矩阵中第一列,通过以下方式向该列中的各元素中写入bank标识;向目标元素中写入第一bank标识,所述第一bank标识的初始值小于预设阈值,所述预设阈值基于所述bank总数设置,所述目标元素为第一列中的任一元素;在所述第一bank标识的基础上增加第一预设步长,得到更新后的第一bank标识,若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去所述预设阈值;将更新后的第一bank标识写入至未写入bank标识的元素中,并返回执行所述在所述第一bank标识的基础上增加第一预设步长至所述将更新后的第一bank标识写入下一元素中的步骤,直至第一列的各个元素中均写入bank标识;针对第一列之外的每一元素,向该元素中写入第二bank标识,其中,所述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及所述bank总数计算得到的;
根据所述逻辑地址与所述可容纳数量,确定所述逻辑地址在所述索引矩阵中对应的列坐标;
获取所述索引矩阵中,所述行坐标与所述列坐标对应的位置处存储的目标bank标识;
根据所述逻辑地址、所述可容纳数量以及所述bank总数,确定所述报文描述符在bank中的bank地址;
将所述报文描述符存储于所述目标bank标识对应的bank内的bank地址处。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过以下方式向所述index中存储报文描述符:
在报文存储至队列后,确定该队列对应的index尾部是否存在空闲空间;
若存在,则将报文描述符存储于所述空闲空间中的起始位置处;
若不存在,则从index资源池中申请新index作为该队列对应的index,并将所述报文描述符存储于所述新index的起始位置处。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在从队列中读取报文后,确定该报文的报文描述符在index中的逻辑地址;
从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在index中的末位地址;
若是,则将该index回收至index资源池。
4.根据权利要求1所述的方法,其特征在于,所述第一预设步长和/或所述第二预设步长为质数。
5.一种报文描述符离散存储装置,其特征在于,所述装置包括:
逻辑地址获取模块,用于获取报文描述符在地址组index中的逻辑地址;其中,按照报文在队列中的顺序,报文对应的报文描述符在所述index中连续存储;
行坐标确定模块,用于根据所述逻辑地址、每一index中能够存储报文描述符的可容纳数量、动态随机存取存储器逻辑单元DRAM bank的逻辑单元bank总数,确定所述逻辑地址在索引矩阵中对应的行坐标;其中,所述索引矩阵用于存储bank标识,所述索引矩阵的行数为所述bank总数,列数为所述可容纳数量,同一列中各bank标识不同,同一行中各bank标识不同,且每一bank标识在同一行中至多存储一次,在所述索引矩阵中每一bank标识存储所述可容纳数量个;通过以下模块向索引矩阵中存储bank标识:针对所述索引矩阵中第一列,通过以下模块向该列中的各元素中写入bank标识;第一标识写入模块,用于向目标元素中写入第一bank标识,所述第一bank标识的初始值小于预设阈值,所述预设阈值基于所述bank总数设置,所述目标元素为第一列中的任一元素;标识更新模块,用于在所述第一bank标识的基础上增加第一预设步长,得到更新后的第一bank标识,若更新后的第一bank标识大于预设阈值,则在更新后的第一bank标识的基础上减去所述预设阈值;第二标识写入模块,用于将更新后的第一bank标识写入至未写入bank标识的元素中,并返回触发执行所述第一标识写入模块至所述第二标识写入模块,直至第一列的各个元素中均写入bank标识;第三标识写入模块,用于针对第一列之外的每一元素,向该元素中写入第二bank标识,其中,所述第二bank标识是基于该元素所在行中第一列元素中存储的bank标识、第二预设步长以及所述bank总数计算得到的;
列坐标确定模块,用于根据所述逻辑地址与所述可容纳数量,确定所述逻辑地址在所述索引矩阵中对应的列坐标;
逻辑单元标识获取模块,用于获取所述索引矩阵中,所述行坐标与所述列坐标对应的位置处存储的目标bank标识;
逻辑单元地址获取模块,用于根据所述逻辑地址、所述可容纳数量以及所述bank总数,确定所述报文描述符在bank中的bank地址;
报文描述符存储模块,用于将所述报文描述符存储于所述目标bank标识对应的bank内的bank地址处。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
通过以下模块向所述index中存储报文描述符:
空闲空间确定模块,用于在报文存储至队列后,确定该队列对应的index尾部是否存在空闲空间;
第一存储模块,用于若所述空闲空间确定模块确定存在空闲空间,则将报文描述符存储于所述空闲空间中的起始位置处;
第二存储模块,用于若不存在,则若所述空闲空间确定模块确定不存在空闲空间,则从index资源池中申请新index作为该队列对应的index,并将所述报文描述符存储于所述新index的起始位置处。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
逻辑地址确定模块,用于在从队列中读取报文后,确定该报文的报文描述符在index中的逻辑地址;
地址判断模块,用于从所确定的逻辑地址处读取报文描述符,并判断所确定的逻辑地址是否为所在index中的末位地址;
Index回收模块,用于在所述地址判断模块判断所确定的逻辑地址是所在index中的末位地址,则将该index回收至index资源池。
8.根据权利要求5所述的装置,其特征在于,所述第一预设步长和/或所述第二预设步长为质数。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311461355.6A CN117193669B (zh) | 2023-11-06 | 2023-11-06 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311461355.6A CN117193669B (zh) | 2023-11-06 | 2023-11-06 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117193669A CN117193669A (zh) | 2023-12-08 |
CN117193669B true CN117193669B (zh) | 2024-02-06 |
Family
ID=88990917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311461355.6A Active CN117193669B (zh) | 2023-11-06 | 2023-11-06 | 一种报文描述符离散存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117193669B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206912A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
CN108234348A (zh) * | 2016-12-13 | 2018-06-29 | 深圳市中兴微电子技术有限公司 | 一种队列操作中的处理方法及装置 |
CN108595269A (zh) * | 2018-04-26 | 2018-09-28 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN109240938A (zh) * | 2017-07-11 | 2019-01-18 | 东芝存储器株式会社 | 存储系统以及控制非易失性存储器的控制方法 |
CN111863111A (zh) * | 2020-07-10 | 2020-10-30 | 深圳佰维存储科技股份有限公司 | Dram的测试方法、装置、计算机可读存储介质及电子设备 |
CN114385089A (zh) * | 2022-03-22 | 2022-04-22 | 北京清微智能信息技术有限公司 | 一种基于交叉编址的动态bank存储方法、装置及电子设备 |
CN115270033A (zh) * | 2021-04-14 | 2022-11-01 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
CN115509972A (zh) * | 2022-10-12 | 2022-12-23 | 苏州盛科通信股份有限公司 | 实现dma高效收发报文的方法及应用 |
CN115914130A (zh) * | 2022-11-14 | 2023-04-04 | 天翼云科技有限公司 | 智能网卡的数据流量处理方法及装置 |
CN116032861A (zh) * | 2023-01-09 | 2023-04-28 | 苏州盛科通信股份有限公司 | 一种报文处理方法及装置 |
WO2023197526A1 (zh) * | 2022-04-13 | 2023-10-19 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN116955247A (zh) * | 2023-09-18 | 2023-10-27 | 北京云豹创芯智能科技有限公司 | 一种缓存描述符管理装置及其方法、介质、芯片 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230305845A1 (en) * | 2022-03-22 | 2023-09-28 | Nvidia Corporation | Techniques to selectively store data |
-
2023
- 2023-11-06 CN CN202311461355.6A patent/CN117193669B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101206912A (zh) * | 2006-12-22 | 2008-06-25 | 富士通株式会社 | 存储器设备、存储器控制器和存储器系统 |
CN108234348A (zh) * | 2016-12-13 | 2018-06-29 | 深圳市中兴微电子技术有限公司 | 一种队列操作中的处理方法及装置 |
CN109240938A (zh) * | 2017-07-11 | 2019-01-18 | 东芝存储器株式会社 | 存储系统以及控制非易失性存储器的控制方法 |
CN108595269A (zh) * | 2018-04-26 | 2018-09-28 | 北京腾凌科技有限公司 | 一种数据处理方法、指令生成装置和数据读写装置 |
CN111863111A (zh) * | 2020-07-10 | 2020-10-30 | 深圳佰维存储科技股份有限公司 | Dram的测试方法、装置、计算机可读存储介质及电子设备 |
CN115270033A (zh) * | 2021-04-14 | 2022-11-01 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
CN114385089A (zh) * | 2022-03-22 | 2022-04-22 | 北京清微智能信息技术有限公司 | 一种基于交叉编址的动态bank存储方法、装置及电子设备 |
WO2023197526A1 (zh) * | 2022-04-13 | 2023-10-19 | 苏州浪潮智能科技有限公司 | 数据处理方法、装置、电子设备及可读存储介质 |
CN115509972A (zh) * | 2022-10-12 | 2022-12-23 | 苏州盛科通信股份有限公司 | 实现dma高效收发报文的方法及应用 |
CN115914130A (zh) * | 2022-11-14 | 2023-04-04 | 天翼云科技有限公司 | 智能网卡的数据流量处理方法及装置 |
CN116032861A (zh) * | 2023-01-09 | 2023-04-28 | 苏州盛科通信股份有限公司 | 一种报文处理方法及装置 |
CN116955247A (zh) * | 2023-09-18 | 2023-10-27 | 北京云豹创芯智能科技有限公司 | 一种缓存描述符管理装置及其方法、介质、芯片 |
Non-Patent Citations (1)
Title |
---|
用户级通信中基于网络接口的虚实地址变换技术;刘路;谢旻;张磊;傅清朝;;计算机工程与科学(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117193669A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806986A (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
CN114780537A (zh) | 流表存储及报文转发方法、装置、计算设备及介质 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
CN108733324B (zh) | 一种固态硬盘的数据读写方法、装置、设备及存储介质 | |
US10168951B2 (en) | Methods for accessing data in a circular block mode and apparatuses using the same | |
US20190171773A1 (en) | Multi-index method and apparatus, cloud system and computer-readable storage medium | |
KR20210003946A (ko) | 논리적-물리적 데이터 구조 | |
CN104598161B (zh) | 数据读取、写入方法和装置及数据存储结构 | |
CN112559386A (zh) | 提升ssd性能的方法、装置、计算机设备及存储介质 | |
US20200133855A1 (en) | Accessing queue data | |
CN117193669B (zh) | 一种报文描述符离散存储方法、装置、设备及存储介质 | |
CN111241090B (zh) | 存储系统中管理数据索引的方法和装置 | |
CN106802811B (zh) | 程序写入方法和装置 | |
CN112000589A (zh) | 一种数据写入方法、数据读取方法、装置及电子设备 | |
CN111026762A (zh) | 红黑树索引生成方法、装置、电子设备及存储介质 | |
CN113626432B (zh) | 一种支持任意Key值的自适应基数树的改进方法 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN111061429A (zh) | 一种数据访问方法、装置、设备、介质 | |
CN115729955A (zh) | 一种热数据读取方法及相关装置 | |
CN110825521B (zh) | 一种内存使用管理方法、装置及存储介质 | |
CN105518790B (zh) | 数据写入的方法及装置 | |
CN114936010A (zh) | 数据处理方法、装置、设备及介质 | |
CN112380147B (zh) | 计算装置以及用于加载或更新数据的方法 | |
CN114489481A (zh) | 硬盘存储数据并访问的方法及系统 | |
WO2017151138A1 (en) | Atomic memory operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
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 |