CN101551736B - 基于地址指针链表的缓存管理装置和方法 - Google Patents

基于地址指针链表的缓存管理装置和方法 Download PDF

Info

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
Application number
CN2009100841330A
Other languages
English (en)
Other versions
CN101551736A (zh
Inventor
王彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2009100841330A priority Critical patent/CN101551736B/zh
Publication of CN101551736A publication Critical patent/CN101551736A/zh
Priority to US12/782,823 priority patent/US8499105B2/en
Application granted granted Critical
Publication of CN101551736B publication Critical patent/CN101551736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked 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的信号端口还包括:
丢弃信号,在其被置为有效时,写地址指针从包尾写地址返回至对应的包头写地址处,在其被置为无效时,写地址指针停留在当前位置;
复制信号,在其被置为有效时,则读地址指针从包尾读地址返回至对应的包头读地址处,在其被置为无效时,读地址指针仍停留在当前位置。
CN2009100841330A 2009-05-20 2009-05-20 基于地址指针链表的缓存管理装置和方法 Active CN101551736B (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106843753A (zh) * 2016-12-30 2017-06-13 郑州云海信息技术有限公司 一种分布式存储中协议使用缓存的方法及装置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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