CN101551736B - 基于地址指针链表的缓存管理装置和方法 - Google Patents
基于地址指针链表的缓存管理装置和方法 Download PDFInfo
- Publication number
- CN101551736B CN101551736B CN2009100841330A CN200910084133A CN101551736B CN 101551736 B CN101551736 B CN 101551736B CN 2009100841330 A CN2009100841330 A CN 2009100841330A CN 200910084133 A CN200910084133 A CN 200910084133A CN 101551736 B CN101551736 B CN 101551736B
- Authority
- CN
- China
- Prior art keywords
- address pointer
- address
- pointer
- group
- write
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/064—Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种基于地址指针链表的缓存管理装置及方法。本发明将BUFFER中的所有缓存块的地址指针被划分为若干组,并以同一组内地址指针的低位来记录每一组内各地址指针之间的链表,还通过仅记录每组中的一个预定地址指针所指向的其他组内的地址指针来建立组与组之间的链表,从而无需现有技术中所需的宽度为指针深度、深度为BUFFER中所有缓存块总数的RAM即可实现地址链表的存储,进而可大大降低所需硬件资源。
Description
技术领域
本发明涉及缓存管理技术,特别涉及一种基于地址指针链表的缓存管理装置和方法。
背景技术
图1为现有缓存管理***的结构示意图。如图1所示,该***包括缓存空间(BUFFER)、包接收模块(INPUT)、包发送模块(OUTPUT)、以及缓存管理装置(BUFFER MANAGER)。
缓存空间被划分成多个缓存块。
包接收模块向缓存管理装置为每一个接收数据包申请空闲缓存块的地址指针,并在解析该接收数据包成功后,依据申请到的地址指针将该接收数据包以块为单位存入至对应的各缓存块。
包发送模块向缓存管理装置申请查询待发送数据包对应的各缓存块的地址指针,并依据查询到的地址指针依次从对应缓存块中读出完整的数据包并发送。
由于分别存储同一数据包内各连续数据的缓存块之间并不是连续的,因此,缓存管理装置中还需要维护一地址指针链表,用以记录每一个已申请地址指针所指向的下一个地址指针,这样,缓存管理装置才能够连续查询到同一数据包内的连续数据并供包发送模块读取和发送。
此外,缓存管理装置不仅负责申请地址指针、查询地址指针,还在包发送模块发送完整数据包之后、以及包接收模块对接收数据包解析错误之后,释放该数据包所对应的各缓存块的地址指针。
图2为现有缓存管理装置的内部逻辑结构图。如图2所示,该缓存管理装置包括:
空闲指针单元、图2中示为空闲指针存储队列PTRQ,其为一宽度为地址指针深度、深度为BUFFER中所有缓存块总数的先进先出存储器(FIFO),PTRQ内部记录BUFFER中空闲缓存块的空闲地址指针,图3中示出了PTRQ所记录的空闲地址指针队列的一实例。初始化时,BUFFER中所有缓存块均为空闲,相应地,所有地址指针均作为空闲地址指针记录于PTRQ中。
地址申请单元(Request),在包接收模块开始解析接收数据包时,从PTRQ记录的空闲地址指针中依次为接收数据包中的每一块连续数据申请对应缓存块的地址指针,以供包接收模块可将解析成功的数据包存入至BUFFER中对应缓存块。
第一地址释放信息存储单元、图2中示为包接收模块地址释放信息队列RLSQ1,其为一宽度为地址指针深度的FIFO,包接收模块在解析接收数据包时,只有解析至包尾才可获知该接收数据包是否错误,如果错误,则由于该接收数据包中的所有连续数据块均已被申请了对应缓存块的地址指针,因此,包接收模块将解析错误的接收包数据已申请的地址信息记录在RLSQ1中,该地址信息包括解析错误的接收数据包包头的地址指针、以及该接收数据包所占用的缓存块数量。
链表信息单元,其由一宽度为指针深度、深度为BUFFER中所有缓存块总数的随机存储器(RAM),图2中将该RAM示为ADD_LINK_RAM,记录已申请地址指针的下一个地址指针,图4中按照如图3中所示的地址指针排列顺序,示出了ADD_LINK_RAM所记录的已申请地址指针的下一个地址指针的一实例。
链表建立单元(UpBuild),将当前申请的地址指针写入至上一个申请的地址指针在ADD_LINK_RAM中对应的位置,用以表示当前申请的地址指针,为上一个申请的地址指针所指向的下一个地址指针。
链表查询单元(Lookup),在包发送模块从BUFFER中读取同一数据包中每一连续数据块之前,依次查找ADD_LINK_RAM中对应的已申请地址指针的下一个地址指针、以供包发送模块可从BUFFER中对应缓存块读取数据包。
第二地址释放信息存储单元、图2中示为包发送模块地址释放信息队列RLSQ0,其为一宽度为地址指针深度的FIFO,包发送模块在读取并发送完整数据包后,将该发送数据包的地址信息记录在RLSQ0中,该地址信息包括该发送数据包包头的地址指针、以及该发送数据包所占用的缓存块数量。
地址释放单元(Release),将RLSQ1、RLSQ0中记录的地址信息所表示的地址指针均释放至PTRQ中。但由于RLSQ1、RLSQ0中记录的地址信息中,仅记录有包头的地址指针、以及数据包所占用的缓存块数量,因此,除了数据包包头的地址指针可直接释放之外,其余数据块对应的缓存块的地址指针均需要通过链表查询单元在ADD_LINK_RAM中依次查找。
如上可见,现有如图2所示的缓存管理装置中,PTRQ为宽度为地址指针深度、深度为BUFFER中所有缓存块总数的FIFO,其占用了极大的硬件资源。假设其宽度为20比特、深度为220,则总共需要20M比特的存储资源才能够实现该FIFO,而缓存管理装置通常是由在现场可编程门阵列(FPGA)来实现的,但FPGA却难以提供如此大容量的资源。与PTRQ同理,ADD_LINK_RAM也需要极大的存储资源,因而也难以由FPGA来实现。
而且,现有如图2所示的缓存管理装置不但在包发送模块读取数据包时需要查询ADD_LINK_RAM,而且,由于包接收模块和包发送模块所提供的需释放的地址信息中,仅记录有包头的地址指针、以及数据包所占用的缓存块数量,因而在释放地址指针时仍需要再次查询ADD_LINK_RAM,导致地址指针的释放效率低、进而还可能导致异常丢包。
发明内容
有鉴于此,本发明提供了一种基于地址指针链表的缓存管理装置和方法,能够节省硬件资源。
本发明提供的一种基于地址指针链表的缓存管理装置,包括:
空闲指针单元,记录BUFFER中空闲缓存块的空闲地址指针;
地址申请单元,从空闲地址指针中为接收数据包申请地址指针;
链表信息单元,记录已申请地址指针的下一个地址指针;
链表查询单元,查找已申请地址指针的下一个地址指针;
第一FIFO,记录解析错误的接收数据包的地址信息;
第二FIFO,记录发送数据包的地址信息;
地址释放单元,将地址信息表示的地址指针释放至空闲指针单元;
其中,BUFFER中所有缓存块的地址指针被划分为若干组,每一组内各地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针;
所述链表信息单元中分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位;
且,所述地址申请单元从标志位为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。
所述链表信息单元包括:
宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的RAM,记录每一组中已申请地址指针所指向的同组地址指针的低位;
宽度为地址指针深度、深度为所述组的总数的RAM,记录每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
所述链表信息单元为宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,深度为所述组的总数的RAM。
所述空闲指针单元具有与BUFFER中每一缓存块的地址指针一一对应的空闲指针指示位,每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲;
地址申请单元将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效,以实现所述申请;
地址释放单元将第一FIFO、第二FIFO中记录的地址指针对应的空闲指针指示位置为有效,以实现所述释放。
所述空闲指针单元为宽度为1、深度为BUFFER中缓存块总数的RAM。
第一FIFO,记录解析错误的接收数据包对应的每一缓存块的地址指针;
第二FIFO,记录发送数据包对应的每一缓存块的地址指针;
地址释放单元直接将第一FIFO、第二FIFO中记录的地址指针释放至空闲指针单元。
所述第一FIFO为包级FIFO,该包级FIFO至少具有如下控制信号:
写地址指针,指示接收数据包对应的每一缓存块的地址指针在包级FIFO中的当前写地址;
首地址指针,指示当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的包头写地址;
尾地址指针,指示当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的包尾写地址;
丢弃信号,可在当前接收数据包解析成功后被置为有效、并将写地址指针从包尾写地址返回至对应的包头写地址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖擦除;在当前接收数据报解析失败后被置为无效、并保持写地址指针停留在当前位置、以使得解析错误的接收数据包对应的每一缓存块的地址指针可记录于包级FIFO。
本发明提供的一种基于地址指针链表的缓存管理方法,包括:
记录BUFFER中空闲缓存块的空闲地址指针;
从空闲地址指针中为接收数据包申请地址指针;
记录已申请地址指针的下一个地址指针;
查找已申请地址指针的下一个地址指针;
记录解析错误的接收数据包的地址信息、以及发送数据包的地址信息;
释放地址信息表示的地址指针;
其中,将BUFFER中所有缓存块的地址指针被划分为若干组,每一组内各地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针;
所述记录已申请地址指针的下一个地址指针包括:分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位;
所述申请地址指针包括:从标志位为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。
设置宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的RAM,用以记录每一组中已申请地址指针所指向的同组内地址指针的组内的低位;
设置宽度为地址指针深度加1、深度为所述组总数的RAM,用以每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
设置宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,深度为所述组的总数的RAM,用以分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
所述记录BUFFER中空闲缓存块的空闲地址指针包括:设置与BUFFER中每一缓存块的地址指针一一对应的空闲指针指示位,并利用每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲;
所述申请包括:将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效;
所述释放包括:将对应的空闲指针指示位置为有效。
设置宽度为1、深度为BUFFER中缓存块总数的RAM用以记录所述空闲指针指示位。
所述记录解析错误的接收数据包的地址信息、以及发送数据包的地址信息包括:记录解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针;
所述释放地址信息表示的地址指针包括:直接将所述记录解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针释放。
所述实时记录解析错误的接收数据包对应的每一缓存块的地址指针包括:
设置一具有写地址指针、首地址指针、尾地址指针、以及丢弃信号的包级FIFO;
依据包级FIFO的写地址指针所指示的当前写地址,依次将当前接收数据包对应的每一缓存块的地址指针作为当前写数据写入至包级FIFO;
且,利用包级FIFO的首地址指针所指示的包头写地址,记录当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的写地址;利用包级FIFO的尾地址指针所指示的包尾写地址,记录当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的写地址;
在当前接收数据包解析成功后将包级FIFO的丢弃信号置为有效、并将写地址指针从包尾写地址返回至对应的包头写地址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖;在当前接收数据报解析失败后将包级FIFO的丢弃信号置为无效、并保持写地址指针停留在当前位置、以使得解析错误的接收数据包对应的每一缓存块的地址指针可记录于包级FIFO。
由上述技术方案可见,本发明将BUFFER中的所有缓存块的地址指针被划分为若干组,并以同一组内地址指针的低位来记录每一组内各地址指针之间的链表,还通过仅记录每组中的一个预定地址指针所指向的其他组内的地址指针来建立组与组之间的链表,从而无需现有技术中所需的宽度为指针深度、深度为BUFFER中所有缓存块总数的RAM即可实现地址链表的存储,进而可大大降低所需硬件资源。
可选地,利用宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的一个RAM,以及宽度为地址指针深度加1、深度为所述组的总数的另一个RAM构成二级链接RAM,用以替换现有宽度为指针深度、深度为BUFFER中所有缓存块总数的RAM;或者,利用宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,深度为所述组的总数的一片RAM来替换现有宽度为指针深度、深度为BUFFER中所有缓存块总数的RAM。
进一步地,本发明还利用宽度为1、深度为BUFFER中缓存块总数的RAM来实现空闲指针单元,用以替换现有宽度为地址指针深度、深度为BUFFER中所有缓存块总数的FIFO,从而能够大大降低所需硬件资源。
再进一步地,本发明中的第一、第二FIFO中分别记录了解析错误的接收数据包、发送数据包中所有数据块对应的缓存块的地址指针,而非现有技术中仅记录包头的地址指针和缓存块数量,因而使得地址释放单元无需通过链表查询单元进行查找,即可直接将第一、第二FIFO中记录的地址指针依次释放至空闲指针单元中,从而能够提高地址释放的效率、进而还可避免异常丢包。
可选地,本发明可利用一具有丢包功能的包级FIFO来实现第一FIFO,这样,包接收模块可以在开始解析接收数据包的过程中,先将已申请的该接收数据包中各数据块对应的缓存块的地址指针均存入至包级FIFO、并标记包头的地址指针存储位置,如果在解析完当前接收数据包的包尾时发现该接收数据包正确,则调整包级FIFO的下一次写位置为已标记的包头的地址指针存储位置,以保证解析正确的接收数据包的各地址指针会被后续写操作覆盖而不会保存在包级FIFO中;如果在解析完当前接收数据包的包尾时发现该接收数据包错误,则仍保持包级FIFO的下一次写位置为包尾的地址指针的下一个存储位置,从而将解析错误的接收数据包的各地址指针保存在包级FIFO中。如此一来,虽然包接收模块只有在解析完接收数据包的包尾时才可获知该接收数据包是否错误,但利用丢包功能的包级FIFO即可避免在解析完成之前记录所有数据块对应的缓存块的地址指针。
附图说明
图1为现有缓存管理***的结构示意图;
图2为现有缓存管理装置的内部逻辑结构图;
图3为现有空闲指针单元所记录的空闲地址指针队列的一实例示意图;
图4为现有链表信息单元所记录的地址指针的一实例示意图;
图5为本发明实施例中缓存管理装置的内部逻辑结构图;
图6为本发明实施例中空闲指针单元所记录的空闲地址指针队列的一实例示意图;
图7为本发明实施例中空闲指针单元所记录的空闲地址指针队列的另一实例示意图;
图8为本发明实施例中数据包实际占用地址指针的排列顺序的一实例示意图;
图9为本发明实施例中链表信息单元所记录的地址指针的一实例示意图;
图10为本发明实施例中链表信息单元所记录的地址指针的另一实例示意图;
图11a~图11b为本发明实施例中所使用的一种包级FIFO的内部逻辑变化示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图5为本发明实施例中缓存管理装置的内部逻辑结构图。如图5所示,本实施例中的缓存管理装置包括:
空闲指针单元、在图5中示为PTR_VALID,记录BUFFER中空闲缓存块的空闲地址指针;初始化时,BUFFER中所有缓存块均为空闲,相应地,所有地址指针均作为空闲地址指针记录于空闲指针单元中。
本实施例中,为了减少空闲指针单元所需的硬件资源,图5中所示的PTR_VALID与图2中所示的PTRQ略有不同。具体来说,PTR_VALID可以只具有与BUFFER中每一缓存块的地址指针一一对应的1比特、或较少的多比特空闲指针指示位,每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲,初始化时,PTR_VALID中所有空闲指针指示位均被置为表示未使用的有效、即空闲。图6中示出了PTR_VALID所记录的空闲地址指的一实例,1表示已使用、即已申请,0表示未使用、即空闲。
这样,假设PTRQ的宽度为m、深度为2n,而PTR_VALID的宽度为i、深度为2n,m为大于1的整整数,i、n为大于等于1的正整数,i小于m。则PTRQ总共需要m×2n比特的存储资源,PTR_VALID总共需要i×2n比特的存储资源。可见,PTR_VALID相比于现有宽度为地址指针深度、深度为BUFFER中所有缓存块总数的PTRQ,可以大大减少空闲指针单元所需的硬件资源。较佳地,本实施例利用宽度为1、深度为BUFFER中缓存块总数的RAM来实现PTR_VALID。当然,如果有足够的硬件资源,空闲指针单元可以为现有如图2所示的PTRQ。
对于上述PTR_VALID,地址申请单元将表示空闲的有效空闲指针指示位对应的地址指针选定为已申请的地址指针通知给包接收模块、然后将该空闲指针指示位置为表示已申请的无效,以实现地址指针的申请。并且,地址释放单元则将RLSQ1、RLSQ2中记录的地址信息所表示的待释放地址指针对应的空闲指针指示位,置为表示空闲的有效,以实现地址指针的释放。
链表信息单元,记录已申请地址指针的下一个地址指针。本实施例为了减少链表信息单元所需的硬件资源,对链表信息单元进行了部分改进。具体至图5中,改进后的链表信息单元包括由ADD_LINK_RAM和RE_LINK_RAM构成的二级链接RAM,且图5中示出的ADD_LINK_RAM相比于现有如图2所示的ADD_LINK_RAM也略有不同。
具体来说,为了配合由ADD_LINK_RAM和RE_LINK_RAM构成的二级链接RAM,首先需要将BUFFER中的所有缓存块的地址指针被划分为若干组,以每组8个地址指针为例,图7中示出了PTR_VALID所记录的以组划分的另一实例,1表示已使用、即已申请,0表示未使用、即空闲。
较佳地,每组中各缓存块的地址指针可以为:各缓存块的预设组内编号与该组内缓存块总数乘以该组编号之积的和,这样,可以保证同一组中各地址指针的高位相同、低位不同,不同的低位即可表示各地址指针在的预设组内编号。且,每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针。
在申请地址指针时,地址申请单元优先从同一组内申请。相应地,ADD_LINK_RAM作为组内记录子单元,仅记录每一组中已申请地址指针所指向的同组内下一个地址指针的组内的低位。
当同一组内的地址指针全部被申请,则需要从其他组内继续申请,但ADD_LINK_RAM仅记录组内预设编号,此时就需要由RE_LINK_RAM作为组间记录子单元,记录每一组中的一个预定地址指针所指向的下一个不同组内的地址指针、以及表示该已申请的预定地址指针被占用的对应标志位,每一组中可指向其他组的地址指针通常可设置为该组的最后一个地址指针。
这样,ADD_LINK_RAM就可由宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的RAM来实现,其中,深度为缓存块总数减所述组总数,是因为每组中均有一个指向其他组的地址指针不会在ADD_LINK_RAM中记录;RE_LINK_RAM则可由宽度为地址指针深度、深度为所述组的总数的RAM来实现。相比于现有技术中宽度为指针深度、深度为BUFFER中所有缓存块总数的一片RAM所占用的m×2n比特的存储资源,本实施例中实现链表信息单元的两片RAM总共也只需要m’×(2n-p)+(m+1)×p的存储资源,m’表示地址指针的低位、m’小于m,p表示组数、p小于等于2n-1,可降低链表信息单元所需的硬件资源。
仍以每组8个地址指针为例,图9中按照如图8所示的数据包实际占用地址指针的排列顺序,示出了ADD_LINK_RAM所记录的同组内下一个地址指针的低3位、以及RE_LINK_RAM所记录的每组中预定地址指针所指向的不同组内的完整地址指针的一实例。其中,00004~00007表示第1组内的地址指针、84000~84007表示第1050组内的地址指针。
或者,也可以将ADD_LINK_RAM与RE_LINK_RAM合并为同一片RAM,设置该RAM的宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,即m’×(每组地址指针总数-1)+m+1,深度为所述组的总数p。那么该RAM总共只需要[m’×(每组地址指针总数-1)+m+1]×p的存储资源,因而相比于现有技术中所需的m×2n,仍可降低链表信息单元所需的硬件资源。
同样以每组8个地址指针为例,图10中按照如图8所示的数据包实际占用地址指针的排列顺序,示出了一片RAM所记录的同组内下一个地址指针的低3位、以及预定地址指针所指向的不同组内的完整位地址指针的一实例。其中,00004~00007表示第1组内的地址指针、84000~84007表示第1050组内的地址指针。
需要说明的是,由于每一组中仅有一个地址指针指向不同组、而除该预定地址指针之外的组内其他地址指针均指向本组,因此,为了保证跨组的地址指针之间的链接,如果每一组中指向不同组的预定地址指针的标志位表示被占用,则即便该组内的其他地址指针空闲也不能被申请。
相应地,链表建立单元在表示被占用的标志位所对应的已申请的预定地址指针被释放后,将该预定地址指针的标志位置为表示未占用;而地址申请单元,则仅从标志位置为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请;且,与包发送模块相连的链表查找单元,则可按照上述规则查找可供包发送模块从BUFFER中读取发送数据包的地址指针。
此外,本实施例中如图5所示的包接收模块地址释放信息队列RLSQ1、以及包发送模块地址释放信息队列RLSQ0可以与如图2所示的相同。但为了提高释放地址指针的效率,本实施例对RLSQ1、RLSQ0、以及地址释放单元的工作原理也进行了部分改进:
RLSQ1,其为一宽度为地址指针深度的FIFO,但该FIFO中记录解析错误的接收数据包对应的每一缓存块的地址指针,而非如现有技术那样仅记录解析错误的接收数据包包头的地址指针、以及该接收数据包所占用的缓存块数量。
RLSQ0,其为一宽度为地址指针深度的FIFO,但该FIFO中记录发送数据包对应的每一缓存块的地址指针,而非如现有技术那样仅记录发送数据包包头的地址指针、以及该发送数据包所占用的缓存块数量。
如此一来,地址释放单元无需通过链表查询单元,即可直接将RLSQ1、RLSQ0中记录的地址指针释放至空闲指针单元。也就是说,如图5所示的缓存管理装置仅在包发送模块读取数据包时才需要通过链表查询单元来查询链表信息单元,而在释放地址指针时则无需再次查询链表信息单元,从而就可提高地址释放的效率、进而还可避免异常丢包。
另外,需要补充说明的是,对于RLSQ0,包发送模块可在依次读取并发送完整数据包中的每一个数据块的过程中,实时将每一个已读取并发送的数据块对应的缓存块的地址指针依次存入至RLSQ0,而不是像现有技术那样在一个完整数据包发送之后才向RLSQ0中存入待释放的地址信息;但对于RLSQ1,由于包接收模块只有在解析完接收数据包的包尾时才可获知该接收数据包是否错误,因而包接收模块只有等待接收数据包的解析完成之后,才可决定该接收数据包中所有数据块对应的缓存块的地址指针是否需要存入至RLSQ1中以待释放,如此一来,如果利用现有的FIFO来实现RLSQ1,就需要额外记录当前解析的接收数据包中所有数据块对应的缓存块的地址指针。
为了避免在解析完成之前记录所有数据块对应的缓存块的地址指针,本实施例提供了一种具有丢包功能的包级FIFO来实现RLSQ1。具有丢包功能的包级FIFO是由现有包级FIFO改进而来。
现有包级FIFO除了具有存储队列之外,还具有下述信号端口:指示当前写地址的写地址指针、指示当前读地址的读地址指针、指示包头的首地址指针、指示包尾的尾地址指针,现有包级FIFO还具有可统计已存储的所有数据的计数器,用以判断该包级FIFO是否已满。
本实施例为了使现有包级FIFO具备丢包功能,还为现有包级FIFO额外增加了信号端口,即丢弃信号和复制信号,如果该丢弃信号被置为有效,则写地址指针就从包尾写地址返回至对应的包头写地址处,否则,写地址指针仍停留在其当前位置;如果复制信号被置为有效,则读地址指针就从包尾读地址返回至对应的包头读地址处,否则,读地址指针仍停留在其当前位置。
假设以一数据包为读写数据,如果写地址指针从包尾写地址返回至对应的包头写地址处,则只要后续进行任何写操作,均可将已写入的该数据包删除、即丢包;如果读地址指针从包尾读地址返回至对应的包头读地址处,则可继续读取该数据包,以实现数据包的复制。
对于本实施例来说,并不需要复制功能,因而仅保留上述包级FIFO的丢包功能,并以当前解析的接收数据包中所有数据块对应的缓存块的地址指针作为写数据。
如此一来,本实施例中用于实现RLSQ1的丢级FIFO具有与包接收模块相连的如下信号端口:
写地址指针,指示当前写地址,以供包接收模块依次将当前接收数据包对应的每一缓存块的地址指针作为当前写数据写入至包级FIFO;
首地址指针,指示包头写地址,该包头写地址表示当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的写地址;
尾地址指针,指示包尾写地址,该包尾写地址表示当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的写地址;
丢弃信号,可在当前接收数据包解析成功后被包接收模块置为有效、并将写地址指针从包尾写地址返回至对应的包头写址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖、保证包级FIFO中仅记录解析错误的接收数据包对应的每一缓存块的地址指针。
这样,包接收模块可以在开始解析接收数据包的过程中,先将已申请的该接收数据包中各数据块对应的缓存块的地址指针均存入至包级FIFO、并标记包头的地址指针存储位置,参见图11a,如果在解析完当前接收数据包的包尾时发现该接收数据包正确,则将丢弃信号置为有效、调整包级FIFO的下一次写位置为已标记的包头的地址指针存储位置,参见图11b,以保证解析正确的接收数据包的各地址指针会被后续写操作覆盖而不会保存在包级FIFO中;如果在解析完当前接收数据包的包尾时发现该接收数据包错误,则将丢弃信号置为无效、仍保持如图11a所示的包级FIFO的下一次写位置为包尾的地址指针的下一个存储位置,从而将解析错误的接收数据包的各地址指针保存在包级FIFO中。
以上,是对本实施例中缓存管理装置的详细说明,由于该装置可以由承载于FPGA中的计算机程序来实现,因而本实施例还提供了体现该计算机程序流程的缓存管理方法,该方法可用于将接收数据包解析成功后存入至BUFFER、以及从BUFFER读取并发送数据包,且该缓存管理方法包括:
a、记录BUFFER中空闲缓存块的空闲地址指针;
b、从空闲地址指针中为接收数据包申请地址指针,以供包接收模块可将解析成功的数据包存入至BUFFER中对应缓存块;
c、记录已申请地址指针的下一个地址指针;
d、查找已申请地址指针的下一个地址指针、以供包发送模块可从BUFFER中对应缓存块读取数据包;
e、记录解析错误的接收数据包的地址信息、以及发送数据包的地址信息,并释放所述地址信息表示的地址指针。
需要说明的是,上述步骤a~e之间不具有固定的先后执行顺序,且可以是各步骤同时执行。
而且,为了减少记录地址指针链表所需的硬件资源,可以先将BUFFER中的所有缓存块的地址指针被划分为若干组,例如按照同一组中的地址指针高位相同划分组,且,所述组内预设编号为同一组中地址指针的低位,且,在步骤c中分别记录每一组内的地址指针链表、以及组间的地址指针链表。
此时,步骤c可具体包括:记录每一组中已申请地址指针所指向的同组内下一个地址指针的组内预设编号,并记录每一组中已申请地址指针所指向的不同组内下一个地址指针、以及表示该已申请地址指针被占用的对应标志位。具体实现时,可设置宽度为地址指针的低位、深度为BUFFER中缓存块总数的RAM,用以记录每一组中已申请地址指针所指向的同组内下一个地址指针的组内预设编号;设置宽度为地址指针深度加1、深度为所述组的总数的RAM,用以记录每一组中已申请地址指针所指向的不同组内下一个地址指针、以及表示该已申请地址指针被占用的对应标志位。
相应地,在步骤e释放表示被占用的标志位所对应的已申请地址指针后,还需要进一步将该标志位置为表示未占用;而在申请地址指针时,则应从标志位置为表示未占用的地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。
同样为了减少记录空闲地址指针所占用的硬件资源,步骤a之前可以设置与BUFFER中每一缓存块的地址指针一一对应的空闲指针指示位,例如设置宽度为1、深度为BUFFER中缓存块总数的RAM用以记录空闲指针指示位;且,在步骤a中利用每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲。
相应地,在步骤b中,需要将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效;在步骤e执行释放时,需要将对应的空闲指针指示位置为有效。
此外,为了提高地址释放效率,步骤e中可实时记录解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针,并将解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针释放至空闲指针单元。
进一步地,在步骤e中实时记录解析错误的接收数据包对应的每一缓存块的地址指针时,可利用预先设置的一具有写地址指针、首地址指针、尾地址指针、以及丢弃信号的包级FIFO来执行,且对于当前解析的每一个接收数据包执行的具体步骤包括:
e1、依据包级FIFO的写地址指针所指示的当前写地址,依次将当前接收数据包对应的每一缓存块的地址指针作为当前写数据写入至包级FIFO;
e2、利用包级FIFO的首地址指针所指示的包头写地址,记录当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的写地址,并利用包级FIFO的尾地址指针所指示的包尾写地址,记录当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的写地址;
e3、在当前接收数据包解析成功后将包级FIFO的丢弃信号置为有效、并将写地址指针从包尾写地址返回至对应的包头写地址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖、保证包级FIFO中仅记录解析错误的接收数据包对应的每一缓存块的地址指针。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种基于地址指针链表的缓存管理装置,包括:
空闲指针单元,记录BUFFER中空闲缓存块的空闲地址指针;
地址申请单元,从空闲地址指针中为接收数据包申请地址指针;
链表信息单元,记录已申请地址指针的下一个地址指针;
链表查询单元,查找已申请地址指针的下一个地址指针;
第一FIFO,记录解析错误的接收数据包的地址信息;
第二FIFO,记录发送数据包的地址信息;
地址释放单元,将地址信息表示的地址指针释放至空闲指针单元;
其特征在于,BUFFER中所有缓存块的地址指针被划分为若干组,每一组内各地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针;
所述链表信息单元中分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位;
且,所述地址申请单元从标志位为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。
2.如权利要求1所述的缓存管理装置,其特征在于,所述链表信息单元包括:
宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的RAM,记录每一组中已申请地址指针所指向的同组地址指针的低位;
宽度为地址指针深度、深度为所述组的总数的RAM,记录每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
3.如权利要求1所述的缓存管理装置,其特征在于,所述链表信息单元为宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,深度为所述组的总数的RAM。
4.如权利要求1至3中任一项所述的缓存管理装置,其特征在于,所述空闲指针单元具有与BUFFER中每一缓存块的地址指针一一对应的空闲指针指示位,每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲;
地址申请单元将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效,以实现所述申请;
地址释放单元将第一FIFO、第二FIFO中记录的地址指针对应的空闲指针指示位置为有效,以实现所述释放。
5.如权利要求4所述的缓存管理装置,其特征在于,所述空闲指针单元为宽度为1、深度为BUFFER中缓存块总数的RAM。
6.如权利要求1至3中任一项所述的缓存管理装置,其特征在于,
第一FIFO,记录解析错误的接收数据包对应的每一缓存块的地址指针;
第二FIFO,记录发送数据包对应的每一缓存块的地址指针;
地址释放单元直接将第一FIFO、第二FIFO中记录的地址指针释放至空闲指针单元。
7.如权利要求6所述的缓存管理装置,其特征在于,所述第一FIFO为包级FIFO,该包级FIFO至少具有如下控制信号:
写地址指针,指示接收数据包对应的每一缓存块的地址指针在包级FIFO中的当前写地址;
首地址指针,指示当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的包头写地址;
尾地址指针,指示当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的包尾写地址;
丢弃信号,可在当前接收数据包解析成功后被置为有效、并将写地址指针从包尾写地址返回至对应的包头写地址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖擦除;在当前接收数据包解析失败后被置为无效、并保持写地址指针停留在当前位置、以使得解析错误的接收数据包对应的每一缓存块的地址指针可记录于包级FIFO。
8.一种基于地址指针链表的缓存管理方法,包括:
记录BUFFER中空闲缓存块的空闲地址指针;
从空闲地址指针中为接收数据包申请地址指针;
记录已申请地址指针的下一个地址指针;
查找已申请地址指针的下一个地址指针;
记录解析错误的接收数据包的地址信息、以及发送数据包的地址信息;
释放地址信息表示的地址指针;
其特征在于,BUFFER中所有缓存块的地址指针被划分为若干组,每一组内各地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针;
所述记录已申请地址指针的下一个地址指针包括:分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位;
所述申请地址指针包括:从标志位为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。
9.如权利要求8所述的缓存管理方法,其特征在于,
设置宽度为地址指针的低位、深度为BUFFER中缓存块总数与所述组总数之差的RAM,用以记录每一组中已申请地址指针所指向的同组内地址指针的组内的低位;
设置宽度为地址指针深度加1、深度为所述组总数的RAM,用以每一组中预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
10.如权利要求8所述的缓存管理方法,其特征在于,设置宽度为每组中指向组内的各地址指针低位总和、与一个地址指针深度加1的总比特数,深度为所述组的总数的RAM,用以分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位。
11.如权利要求8至10中任一项所述的缓存管理方法,其特征在于,所述记录BUFFER中空闲缓存块的空闲地址指针包括:设置与BUFFER中每一缓存块的地址指针一一对应的空闲指针指示位,并利用每一空闲指针指示位用以表示对应缓存块的地址指针是否空闲;
所述申请包括:将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效;
所述释放包括:将对应的空闲指针指示位置为有效。
12.如权利要求11所述的缓存管理方法,其特征在于,设置宽度为1、深度为BUFFER中缓存块总数的RAM用以记录所述空闲指针指示位。
13.如权利要求8至10中任一项所述的缓存管理方法,其特征在于,
所述记录解析错误的接收数据包的地址信息、以及发送数据包的地址信息包括:记录解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针;
所述释放地址信息表示的地址指针包括:直接将所述记录解析错误的接收数据包对应的每一缓存块的地址指针、以及发送数据包对应的每一缓存块的地址指针释放。
14.如权利要求13所述的缓存管理方法,其特征在于,所述实时记录解析错误的接收数据包对应的每一缓存块的地址指针包括:
设置一具有写地址指针、首地址指针、尾地址指针、以及丢弃信号的包级FIFO;
依据包级FIFO的写地址指针所指示的当前写地址,依次将当前接收数据包对应的每一缓存块的地址指针作为当前写数据写入至包级FIFO;
且,利用包级FIFO的首地址指针所指示的包头写地址,记录当前接收数据包包头所对应的缓存块的地址指针在包级FIFO中的写地址;利用包级FIFO的尾地址指针所指示的包尾写地址,记录当前接收数据包包尾所对应的缓存块的地址指针在包级FIFO中的写地址;
在当前接收数据包解析成功后将包级FIFO的丢弃信号置为有效、并将写地址指针从包尾写地址返回至对应的包头写地址处,以供解析成功的接收数据包对应的每一缓存块的地址指针被后续写操作覆盖;在当前接收数据包解析失败后将包级FIFO的丢弃信号置为无效、并保持写地址指针停留在当前位置、以使得解析错误的接收数据包对应的每一缓存块的地址指针可记录于包级FIFO。
15.一种应用于如权利要求8所述方法的包级FIFO,其具有一存储队列,以及如下信号端口:指示当前写地址的写地址指针、指示当前读地址的读地址指针、指示包头的首地址指针、指示包尾的尾地址指针;
且,该包级FIFO还具有可统计已存储的所有数据的计数器,用以判断该包级FIFO是否已满;
其特征在于,该包级FIFO的信号端口还包括:
丢弃信号,在其被置为有效时,写地址指针从包尾写地址返回至对应的包头写地址处,在其被置为无效时,写地址指针停留在当前位置;
复制信号,在其被置为有效时,则读地址指针从包尾读地址返回至对应的包头读地址处,在其被置为无效时,读地址指针仍停留在当前位置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100841330A CN101551736B (zh) | 2009-05-20 | 2009-05-20 | 基于地址指针链表的缓存管理装置和方法 |
US12/782,823 US8499105B2 (en) | 2009-05-20 | 2010-05-19 | Buffer manager and buffer management method based on address pointer linked list |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100841330A CN101551736B (zh) | 2009-05-20 | 2009-05-20 | 基于地址指针链表的缓存管理装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101551736A CN101551736A (zh) | 2009-10-07 |
CN101551736B true CN101551736B (zh) | 2010-11-03 |
Family
ID=41155994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100841330A Active CN101551736B (zh) | 2009-05-20 | 2009-05-20 | 基于地址指针链表的缓存管理装置和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8499105B2 (zh) |
CN (1) | CN101551736B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843753A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式存储中协议使用缓存的方法及装置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8117347B2 (en) | 2008-02-14 | 2012-02-14 | International Business Machines Corporation | Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system |
US8312189B2 (en) * | 2008-02-14 | 2012-11-13 | International Business Machines Corporation | Processing of data to monitor input/output operations |
US8478915B2 (en) | 2008-02-14 | 2013-07-02 | International Business Machines Corporation | Determining extended capability of a channel path |
US7941570B2 (en) | 2008-02-14 | 2011-05-10 | International Business Machines Corporation | Bi-directional data transfer within a single I/O operation |
US9052837B2 (en) | 2008-02-14 | 2015-06-09 | International Business Machines Corporation | Processing communication data in a ships passing condition |
US7890668B2 (en) | 2008-02-14 | 2011-02-15 | International Business Machines Corporation | Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous |
CN101635682B (zh) * | 2009-08-05 | 2011-12-07 | 中兴通讯股份有限公司 | 一种存储管理的方法和*** |
US8332542B2 (en) | 2009-11-12 | 2012-12-11 | International Business Machines Corporation | Communication with input/output system devices |
KR20120064576A (ko) * | 2010-12-09 | 2012-06-19 | 한국전자통신연구원 | 비대칭 스토리지 시스템에서 연속적인 읽기/쓰기를 제공하기 위한 장치 및 그 방법 |
CN102156631B (zh) * | 2011-04-27 | 2015-04-15 | Tcl集团股份有限公司 | 程序设计语言中管理指针的方法及*** |
WO2012119420A1 (zh) * | 2011-08-26 | 2012-09-13 | 华为技术有限公司 | 一种数据包的并发处理方法及设备 |
CN103856445B (zh) * | 2012-11-30 | 2018-10-16 | 北京北广科技股份有限公司 | 基于udp的语音数据业务的数据传输方法、装置和*** |
CN103902471B (zh) * | 2012-12-28 | 2017-08-25 | 华为技术有限公司 | 数据缓存处理方法和装置 |
US8990439B2 (en) | 2013-05-29 | 2015-03-24 | International Business Machines Corporation | Transport mode data transfer between a channel subsystem and input/output devices |
US9471508B1 (en) | 2015-04-09 | 2016-10-18 | International Business Machines Corporation | Maintaining command order of address translation cache misses and subsequent hits |
CN105550976B (zh) * | 2015-12-15 | 2019-03-15 | 上海华力创通半导体有限公司 | 用于总线带宽偶发性不足的图像数据实时接收容错方法 |
CN110011924B (zh) * | 2018-01-04 | 2023-03-10 | 深圳市中兴微电子技术有限公司 | 一种清除缓存拥塞的方法与装置 |
CN110806986B (zh) * | 2019-11-04 | 2022-02-15 | 苏州盛科通信股份有限公司 | 提高网络芯片报文存储效率的方法、设备及存储介质 |
CN111124355B (zh) * | 2019-12-12 | 2023-04-07 | 东软集团股份有限公司 | 信息处理方法、装置、可读存储介质及电子设备 |
CN112269747B (zh) * | 2020-10-19 | 2022-04-15 | 天津光电通信技术有限公司 | 一种时分复用缓存实现时隙数据包重组的方法 |
CN113141288B (zh) * | 2021-04-23 | 2022-08-23 | 北京航天发射技术研究所 | 一种can总线控制器的邮箱报文收发方法和装置 |
CN113343045B (zh) * | 2021-07-29 | 2021-11-05 | 阿里云计算有限公司 | 一种数据缓存方法及网络设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835944A (en) * | 1996-03-08 | 1998-11-10 | Vlsi Technology, Inc. | Method for storing, transferring decompressing and reconstructing wave table audio sample |
CN1522011A (zh) * | 2003-01-28 | 2004-08-18 | 华为技术有限公司 | 动态缓存管理的atm交换装置及其交换方法 |
CN1780254A (zh) * | 2004-11-17 | 2006-05-31 | 华为技术有限公司 | 网络处理器中使用缓冲区的方法 |
CN1819544A (zh) * | 2005-01-05 | 2006-08-16 | 华为技术有限公司 | 一种基于bitmap表的缓存管理方法 |
CN101094183A (zh) * | 2007-07-25 | 2007-12-26 | 杭州华三通信技术有限公司 | 一种缓存管理方法及装置 |
CN101122886A (zh) * | 2007-09-03 | 2008-02-13 | 杭州华三通信技术有限公司 | 分配缓存空间的方法和装置以及缓存控制器 |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4267568A (en) * | 1975-12-03 | 1981-05-12 | System Development Corporation | Information storage and retrieval system |
US4084231A (en) * | 1975-12-18 | 1978-04-11 | International Business Machines Corporation | System for facilitating the copying back of data in disc and tape units of a memory hierarchial system |
GB2035014B (en) * | 1978-11-06 | 1982-09-29 | British Broadcasting Corp | Cyclic redundancy data check encoding method and apparatus |
US4417321A (en) * | 1981-05-18 | 1983-11-22 | International Business Machines Corp. | Qualifying and sorting file record data |
US4641274A (en) * | 1982-12-03 | 1987-02-03 | International Business Machines Corporation | Method for communicating changes made to text form a text processor to a remote host |
WO1984002409A1 (en) * | 1982-12-09 | 1984-06-21 | Sequoia Systems Inc | Memory backup system |
US4686620A (en) * | 1984-07-26 | 1987-08-11 | American Telephone And Telegraph Company, At&T Bell Laboratories | Database backup method |
US5193154A (en) * | 1987-07-10 | 1993-03-09 | Hitachi, Ltd. | Buffered peripheral system and method for backing up and retrieving data to and from backup memory device |
US5005122A (en) * | 1987-09-08 | 1991-04-02 | Digital Equipment Corporation | Arrangement with cooperating management server node and network service node |
JPH0743676B2 (ja) * | 1988-03-11 | 1995-05-15 | 株式会社日立製作所 | バツクアツプデータダンプ制御方法及び装置 |
US4912637A (en) * | 1988-04-26 | 1990-03-27 | Tandem Computers Incorporated | Version management tool |
US4995035A (en) * | 1988-10-31 | 1991-02-19 | International Business Machines Corporation | Centralized management in a computer network |
US5093912A (en) * | 1989-06-26 | 1992-03-03 | International Business Machines Corporation | Dynamic resource pool expansion and contraction in multiprocessing environments |
US5454099A (en) * | 1989-07-25 | 1995-09-26 | International Business Machines Corporation | CPU implemented method for backing up modified data sets in non-volatile store for recovery in the event of CPU failure |
US5133065A (en) * | 1989-07-27 | 1992-07-21 | Personal Computer Peripherals Corporation | Backup computer program for networks |
US5321816A (en) * | 1989-10-10 | 1994-06-14 | Unisys Corporation | Local-remote apparatus with specialized image storage modules |
US5276867A (en) * | 1989-12-19 | 1994-01-04 | Epoch Systems, Inc. | Digital data storage system with improved data migration |
US5276860A (en) * | 1989-12-19 | 1994-01-04 | Epoch Systems, Inc. | Digital data processor with improved backup storage |
JPH0410041A (ja) * | 1990-04-27 | 1992-01-14 | Toshiba Corp | データ退避方式 |
US5239647A (en) * | 1990-09-07 | 1993-08-24 | International Business Machines Corporation | Data storage hierarchy with shared storage level |
US5301286A (en) * | 1991-01-02 | 1994-04-05 | At&T Bell Laboratories | Memory archiving indexing arrangement |
US5212772A (en) * | 1991-02-11 | 1993-05-18 | Gigatrend Incorporated | System for storing data in backup tape device |
US5287500A (en) * | 1991-06-03 | 1994-02-15 | Digital Equipment Corporation | System for allocating storage spaces based upon required and optional service attributes having assigned piorities |
US5347653A (en) * | 1991-06-28 | 1994-09-13 | Digital Equipment Corporation | System for reconstructing prior versions of indexes using records indicating changes between successive versions of the indexes |
DE69130392T2 (de) * | 1991-07-10 | 1999-06-02 | International Business Machines Corp., Armonk, N.Y. | Hochgeschwindigkeitspufferverwaltung |
US5410700A (en) * | 1991-09-04 | 1995-04-25 | International Business Machines Corporation | Computer system which supports asynchronous commitment of data |
EP0541281B1 (en) * | 1991-11-04 | 1998-04-29 | Commvault Systems, Inc. | Incremental-computer-file backup using signatures |
US5241668A (en) * | 1992-04-20 | 1993-08-31 | International Business Machines Corporation | Method and system for automated termination and resumption in a time zero backup copy process |
US5241670A (en) * | 1992-04-20 | 1993-08-31 | International Business Machines Corporation | Method and system for automated backup copy ordering in a time zero backup copy session |
US5642496A (en) * | 1993-09-23 | 1997-06-24 | Kanfi; Arnon | Method of making a backup copy of a memory over a plurality of copying sessions |
US6049802A (en) * | 1994-06-27 | 2000-04-11 | Lockheed Martin Corporation | System and method for generating a linked list in a computer memory |
US6233244B1 (en) * | 1997-02-14 | 2001-05-15 | Advanced Micro Devices, Inc. | Method and apparatus for reclaiming buffers |
US6418478B1 (en) * | 1997-10-30 | 2002-07-09 | Commvault Systems, Inc. | Pipelined high speed data transfer mechanism |
US7581077B2 (en) * | 1997-10-30 | 2009-08-25 | Commvault Systems, Inc. | Method and system for transferring data in a storage operation |
US7209972B1 (en) * | 1997-10-30 | 2007-04-24 | Commvault Systems, Inc. | High speed data transfer mechanism |
US6714553B1 (en) * | 1998-04-15 | 2004-03-30 | Top Layer Networks, Inc. | System and process for flexible queuing of data packets in network switching |
JP3765931B2 (ja) * | 1998-10-15 | 2006-04-12 | 富士通株式会社 | バッファ制御方法及びバッファ制御装置 |
US7035880B1 (en) * | 1999-07-14 | 2006-04-25 | Commvault Systems, Inc. | Modular backup and retrieval system used in conjunction with a storage area network |
US7395282B1 (en) * | 1999-07-15 | 2008-07-01 | Commvault Systems, Inc. | Hierarchical backup and retrieval system |
US7389311B1 (en) * | 1999-07-15 | 2008-06-17 | Commvault Systems, Inc. | Modular backup and retrieval system |
US7003641B2 (en) * | 2000-01-31 | 2006-02-21 | Commvault Systems, Inc. | Logical view with granular access to exchange data managed by a modular data and storage management system |
US6760723B2 (en) * | 2000-01-31 | 2004-07-06 | Commvault Systems Inc. | Storage management across multiple time zones |
US6721767B2 (en) * | 2000-01-31 | 2004-04-13 | Commvault Systems, Inc. | Application specific rollback in a computer system |
US6542972B2 (en) * | 2000-01-31 | 2003-04-01 | Commvault Systems, Inc. | Logical view and access to physical storage in modular data and storage management system |
US6658436B2 (en) * | 2000-01-31 | 2003-12-02 | Commvault Systems, Inc. | Logical view and access to data managed by a modular data and storage management system |
US7000641B2 (en) * | 2000-11-02 | 2006-02-21 | Crane Limited | Inflatable stopping bags |
JP2002281080A (ja) * | 2001-03-19 | 2002-09-27 | Fujitsu Ltd | パケットスイッチ装置およびマルチキャスト送出方法 |
US6668311B2 (en) * | 2001-07-30 | 2003-12-23 | Intel Corporation | Method for memory allocation and management using push/pop apparatus |
US7031331B2 (en) * | 2001-08-15 | 2006-04-18 | Riverstone Networks, Inc. | Method and system for managing packets in a shared memory buffer that serves multiple output links |
US7417986B1 (en) * | 2001-09-04 | 2008-08-26 | Cisco Technology, Inc. | Shared buffer switch interface |
TW580619B (en) * | 2002-04-03 | 2004-03-21 | Via Tech Inc | Buffer control device and the management method |
AU2003270482A1 (en) * | 2002-09-09 | 2004-03-29 | Commvault Systems, Inc. | Dynamic storage device pooling in a computer system |
AU2003272457A1 (en) * | 2002-09-16 | 2004-04-30 | Commvault Systems, Inc. | System and method for blind media support |
CA2520498C (en) * | 2003-04-03 | 2012-09-25 | Commvault Systems, Inc. | System and method for dynamically performing storage operations in a computer network |
US7454569B2 (en) * | 2003-06-25 | 2008-11-18 | Commvault Systems, Inc. | Hierarchical system and method for performing storage operations in a computer network |
US7440982B2 (en) * | 2003-11-13 | 2008-10-21 | Commvault Systems, Inc. | System and method for stored data archive verification |
US7546324B2 (en) * | 2003-11-13 | 2009-06-09 | Commvault Systems, Inc. | Systems and methods for performing storage operations using network attached storage |
WO2005065084A2 (en) * | 2003-11-13 | 2005-07-21 | Commvault Systems, Inc. | System and method for providing encryption in pipelined storage operations in a storage network |
US7613748B2 (en) * | 2003-11-13 | 2009-11-03 | Commvault Systems, Inc. | Stored data reverification management system and method |
US20060224846A1 (en) * | 2004-11-05 | 2006-10-05 | Amarendran Arun P | System and method to support single instance storage operations |
US7536291B1 (en) * | 2004-11-08 | 2009-05-19 | Commvault Systems, Inc. | System and method to support simulated storage operations |
US7725671B2 (en) * | 2005-11-28 | 2010-05-25 | Comm Vault Systems, Inc. | System and method for providing redundant access to metadata over a network |
US7636743B2 (en) * | 2005-12-19 | 2009-12-22 | Commvault Systems, Inc. | Pathname translation in a data replication system |
US7617262B2 (en) * | 2005-12-19 | 2009-11-10 | Commvault Systems, Inc. | Systems and methods for monitoring application data in a data replication system |
US7543125B2 (en) * | 2005-12-19 | 2009-06-02 | Commvault Systems, Inc. | System and method for performing time-flexible calendric storage operations |
US7651593B2 (en) * | 2005-12-19 | 2010-01-26 | Commvault Systems, Inc. | Systems and methods for performing data replication |
CA2632935C (en) * | 2005-12-19 | 2014-02-04 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US7606844B2 (en) * | 2005-12-19 | 2009-10-20 | Commvault Systems, Inc. | System and method for performing replication copy storage operations |
US7620710B2 (en) * | 2005-12-19 | 2009-11-17 | Commvault Systems, Inc. | System and method for performing multi-path storage operations |
US7617253B2 (en) * | 2005-12-19 | 2009-11-10 | Commvault Systems, Inc. | Destination systems and methods for performing data replication |
US20080028148A1 (en) * | 2006-07-31 | 2008-01-31 | Paul Wallner | Integrated memory device and method of operating a memory device |
-
2009
- 2009-05-20 CN CN2009100841330A patent/CN101551736B/zh active Active
-
2010
- 2010-05-19 US US12/782,823 patent/US8499105B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835944A (en) * | 1996-03-08 | 1998-11-10 | Vlsi Technology, Inc. | Method for storing, transferring decompressing and reconstructing wave table audio sample |
CN1522011A (zh) * | 2003-01-28 | 2004-08-18 | 华为技术有限公司 | 动态缓存管理的atm交换装置及其交换方法 |
CN1780254A (zh) * | 2004-11-17 | 2006-05-31 | 华为技术有限公司 | 网络处理器中使用缓冲区的方法 |
CN1819544A (zh) * | 2005-01-05 | 2006-08-16 | 华为技术有限公司 | 一种基于bitmap表的缓存管理方法 |
CN101094183A (zh) * | 2007-07-25 | 2007-12-26 | 杭州华三通信技术有限公司 | 一种缓存管理方法及装置 |
CN101122886A (zh) * | 2007-09-03 | 2008-02-13 | 杭州华三通信技术有限公司 | 分配缓存空间的方法和装置以及缓存控制器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843753A (zh) * | 2016-12-30 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种分布式存储中协议使用缓存的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101551736A (zh) | 2009-10-07 |
US20100299460A1 (en) | 2010-11-25 |
US8499105B2 (en) | 2013-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551736B (zh) | 基于地址指针链表的缓存管理装置和方法 | |
WO2021088466A1 (zh) | 提高网络芯片报文存储效率的方法、设备及存储介质 | |
US5826262A (en) | Parallel bottom-up construction of radix trees | |
CN1253784C (zh) | 在处理线程之间使用共享存储器的方法、***以及堆栈模块 | |
US5706461A (en) | Method and apparatus for implementing virtual memory having multiple selected page sizes | |
US7733892B2 (en) | Buffer management method based on a bitmap table | |
CN109213772A (zh) | 数据存储方法及NVMe存储*** | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
US6006323A (en) | Intelligent multiple stack management unit | |
CN100541453C (zh) | 大容量缓存实现方法及存储*** | |
CN101094183A (zh) | 一种缓存管理方法及装置 | |
US20030121030A1 (en) | Method for implementing dual link list structure to enable fast link-list pointer updates | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存***及方法 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
CN103425435B (zh) | 磁盘存储方法及磁盘存储*** | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN115080455B (zh) | 一种计算机芯片、计算机板卡、存储空间分配方法及装置 | |
US6366996B1 (en) | Page memory management in non time critical data buffering applications | |
US7035988B1 (en) | Hardware implementation of an N-way dynamic linked list | |
CN101610197A (zh) | 一种缓冲区管理方法及其*** | |
CN107506139B (zh) | 一种面向相变存储器的写请求优化装置 | |
CN116595015B (zh) | 数据处理方法、装置、设备及存储介质 | |
US8363653B2 (en) | Packet forwarding method and device | |
CN110968538B (zh) | 一种数据缓冲方法和装置 | |
US6401171B1 (en) | Method and device for storing an IP header in a cache memory of a network node |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |