基于地址指针链表的缓存管理装置和方法制造方法及图纸

技术编号:3847652 阅读:203 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于地址指针链表的缓存管理装置及方法。本发明专利技术将BUFFER中的所有缓存块的地址指针被划分为若干组,并以同一组内地址指针的低位来记录每一组内各地址指针之间的链表,还通过仅记录每组中的一个预定地址指针所指向的其他组内的地址指针来建立组与组之间的链表,从而无需现有技术中所需的宽度为指针深度、深度为BUFFER中所有缓存块总数的RAM即可实现地址链表的存储,进而可大大降低所需硬件资源。

【技术实现步骤摘要】

本专利技术涉及緩存管理技术,特别涉及一种基于地址指针链表的緩存管理 装置和方法。
技术介绍
图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,包接收模块在解析接收数据 包时,只有解析至包尾才可获知该接收数据包是否错误,如果错误,则由于 该接收数据包中的所有连续数据块均已被申请了对应緩存块的地址指针,因 此,包接收模块将解析错误的接收包数据已申请的地址信息记录在RLSQl 中,该地址信息包括解析错误的接收数据包包头的地址指针、以及该接收数 据包所占用的緩存块数量。链表信息单元,其由一宽度为指针深度、深度为BUFFER中所有緩存 块总数的随机存储器(RAM),图2中将该RAM示为ADD_LINK—RAM, 记录已申请地址指针的下一个地址指针,图4中按照如图3中所示的地址指 针排列顺序,示出了 ADD—LINK_RAM所记录的已申请地址指针的下一个 地址指针的一实例。链表建立单元(UpBuild),将当前申请的地址指针写入至上一个申请 的地址指针在ADD—LINK—RAM中对应的位置,用以表示当前申请的地址 指针,为上一个申请的地址指针所指向的下一个地址指针。链表查询单元(Lookup),在包发送模块从BUFFER中读取同一l丈据 包中每一连续数据块之前,依次查找ADD—LINK_RAM中对应的已申i青地8址指针的下一个地址指针、以供包发送冲莫块可从BUFFER中对应緩存块读 取数据包。第二地址释放信息存储单元、图2中示为包发送模块地址释放信息队列 RLSQ0,其为一宽度为地址指针深度的FIFO,包发送模块在读取并发送完 整数据包后,将该发送数据包的地址信息记录在RLSQ0中,该地址信息包 括该发送数据包包头的地址指针、以及该发送数据包所占用的緩存块数量。地址释放单元(Release),将RLSQ1、 RLSQ0中记录的地址信息所表 示的地址指针均释放至PTRQ中。但由于RLSQ1、 RLSQ0中记录的地址信 息中,仅记录有包头的地址指针、以及数据包所占用的缓存块数量,因此, 除了数据包包头的地址指针可直接释放之外,其余数据块对应的緩存块的地 址指针均需要通过链表查询单元在ADD—LINK—RAM中依次查找。如上可见,现有如图2所示的緩存管理装置中,PTRQ为宽度为地址指 针深度、深度为BUFFER中所有缓存块总数的FIFO,其占用了极大的硬件 资源。假设其宽度为20比特、深度为22G,则总共需要20M比特的存储资 源才能够实现该FIFO,而緩存管理装置通常是由在现场可编程门阵列 (FPGA )来实现的,但FPGA却难以提供如此大容量的资源。与PTRQ同 理,ADD—LINK—RAM也需要极大的存储资源,因而也难以由FPGA来实现。而且,现有如图2所示的緩存管理装置不但在包发送模块读取数据包时 需要查询ADD—LINK—RAM,而且,由于包接收模块和包发送模块所提供的 需释放的地址信息中,仅记录有包头的地址指针、以及数据包所占用的緩存 块数量,因而在释放地址指针时仍需要再次查询ADD—LINK—RAM,导致地 址指针的释放效率低、进而还可能导致异常丢包。
技术实现思路
有鉴于此,本专利技术提供了一种基于地址指针链表的緩存管理装置和方 法,能够节省硬件资源。本专利技术提供的一种基于地址指针链表的緩存管理装置,包括空闲指针单元,记录BUFFER中空闲緩存块的空闲地址指针; 地址申请单元,从空闲地址指针中为接收数据包申请地址指针; 链表信息单元,记录已申请地址指针的下 一个地址指针; 链表查询单元,查找已申请地址指针的下 一个地址指针; 第一 FIFO,记录解析错误的接收数据包的地址信息; 第二 FIFO,记录发送数据包的地址信息;地址释放单元,将所述地址信息表示的地址指针释放至空闲指针单元;其中,BUFFER中所有緩存块的地址指针被划分为若干组,每一组内各 地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地 址指针之外,其余地址指针均指向同组内的地址指针;所述链表信息单元中分别记录每一组中已申请地址指针所指向的同组 地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指 针、以及表示该预定地址指针是否被占用的对应标志位;且,所述地址申请单元从标志位置为表示未占用的预定地址指针所在组 内为接收数据包申请地址指针、并优先从同 一组内执行所述申请。所述链表信息单元包括宽度为地址指针的低位、深度为BUFFER中緩存块总数的RAM与所述 組总数之差,记录链表建立单元写入的每一组中已申请地址指针所指向的同 组地址指针的低位;宽度为地址指针深度、深度为所述组的总数的RAM,记录每一组中已 申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是 否^f皮占用的对应标志位。所述链表信息单元为宽度为每组中指向组内的各地址指针低位总和、与 一个地址指针深度加1的总比特数,深度为所述组的总数的RAM。所述空闲指针单元具有与BUFFER中每一緩存块的地址指针——对应 的空闲指针指示位,每一空闲指针指示位用以表示对应緩存块的地址指针是 否空闲;10地址申请单元将有效的空闲指针指示位对应的地址指针选定为已申请的地址指针、并将该空闲指针指示位置为无效,以实现所述申请本文档来自技高网
...

【技术保护点】
一种基于地址指针链表的缓存管理装置,包括: 空闲指针单元,记录BUFFER中空闲缓存块的空闲地址指针; 地址申请单元,从空闲地址指针中为接收数据包申请地址指针; 链表信息单元,记录已申请地址指针的下一个地址指针; 链表查询单元,查找已申请地址指针的下一个地址指针; 第一FIFO,记录解析错误的接收数据包的地址信息; 第二FIFO,记录发送数据包的地址信息; 地址释放单元,将所述地址信息表示的地址指针释放至空闲指针单元; 其特征在于,BUFFER中所有缓存块的地址指针被划分为若干组,每一组内各地址指针的高位相同、低位不同,且每一组内除一个可指向其他组的预定地址指针之外,其余地址指针均指向同组内的地址指针; 所述链表信息单元中分别记录每一组中已申请地址指针所指向的同组地址指针的低位、每一组中已申请的预定地址指针所指向的不同组地址指针、以及表示该预定地址指针是否被占用的对应标志位; 且,所述地址申请单元从标志位置为表示未占用的预定地址指针所在组内为接收数据包申请地址指针、并优先从同一组内执行所述申请。

【技术特征摘要】

【专利技术属性】
技术研发人员:王彬
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1