一种基于大颗粒度存储单元的队列管理器及方法技术

技术编号:21183542 阅读:21 留言:0更新日期:2019-05-22 14:38
本发明专利技术公开了一种基于大颗粒度存储单元的队列管理器及方法。该队列管理器包括自由指针管理模块、缓冲区接口模块、自由指针读取模块和自由指针归还模块,其中自由指针管理模块包括自由指针分发与回收电路和逻辑队列管理电路。方法为:针对大容量交换机中基于链表的队列管理器,以块为单位对队列管理器中大容量数据缓冲区进行划分并为之分配指针,块与块所对应的指针以链表的形式构建逻辑队列;本地信元采用指针与块内地址联合寻址的方式在块内进行连续存储或读取,单个块内存储多个信元;自由指针和逻辑队列存储在高速片内RAM中,本地信元存储至大容量数据缓冲区中。本发明专利技术实现了对交换机中大容量数据缓冲区的平滑可靠管理,降低了资源消耗。

A Queue Manager and Method Based on Large Granularity Storage Unit

The invention discloses a queue manager and a method based on a large granularity storage unit. The queue manager includes free pointer management module, buffer interface module, free pointer reading module and free pointer return module. The free pointer management module includes free pointer distribution and recovery circuit and logical queue management circuit. The method is as follows: for queue managers based on linked list in large capacity switches, large data buffers in queue managers are divided into blocks and pointers are allocated to them. Logical queues are constructed by pointers corresponding to blocks in the form of linked lists. Local cells are continuously stored or read in blocks by means of joint addressing of pointers and intra-block addresses, and single block memory is used. Store multiple cells; free pointers and logical queues are stored in high-speed on-chip RAM, and local cells are stored in large data buffers. The invention realizes smooth and reliable management of large capacity data buffer in switch, and reduces resource consumption.

【技术实现步骤摘要】
一种基于大颗粒度存储单元的队列管理器及方法
本专利技术涉及电子电路
,特别是一种基于大颗粒度存储单元的队列管理器及方法。
技术介绍
在大容量交换机中,队列管理器需要采用大容量存储器诸如DDR作为数据缓冲区,用于实现对大量业务流的缓冲管理。如果采用共享缓存输出排队的交换结构,DDR也可以直接用于交换结构的实现。队列管理器中的存储管理基于链表结构,用于在对存储容量充分利用的前提下有效地管理多个逻辑队列。传统的基于链表实现的队列管理器首先对变长的IP分组进行定长分割,然后为每一个分割后的单元加上包含转发映射位图和转发优先级等信息的本地头,构成本地信元,队列管理器为每一本地信元分配一个指针,该指针包含有对应本地信元在片外存储器的存储地址信息,随后队列管理器以指针为基本单位来构建不同的逻辑队列。这种方法的优点是队列管理器对信元的操作管理灵活,操作模式简单,存储管理颗粒度精细,但同时该方法需要消耗大量的资源来存储自由指针和逻辑队列。由于链表的存储和访问特点,通常需要使用高速静态RAM进行链表存储。在很多典型的应用中,如果数据缓冲区容量比较大,那么需要的指针缓冲区深度也会很大,此时使用芯片内部或者FPGA内部的存储器来实现会消耗大量的片内资源,通常需要使用片外高速存储器进行链表存储,但此时的存储访问速度会受到片外存储器访问速度的制约,使DDR等大容量数据缓冲区的读写速度优势不能得到充分发挥。
技术实现思路
本专利技术的目的在于提供一种资源消耗少、可靠高效、易于扩展以支持更大的数据缓冲区容量的基于大颗粒度存储单元的队列管理器及方法。实现本专利技术目的的技术解决方案为:一种基于大颗粒度存储单元的队列管理器,包括自由指针管理模块、缓冲区接口模块、自由指针读取模块和自由指针归还模块,其中:所述自由指针管理模块包括自由指针分发与回收电路和逻辑队列管理电路;所述自由指针分发与回收电路,接收来自自由指针读取模块的指针读取请求和来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理;所述逻辑队列管理电路,基于链表对多个逻辑队列进行管理,链表存储至片内RAM中;所述自由指针读取模块,对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理;所述自由指针归还模块,对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理;所述缓冲区接口模块,用于将信元写入到指针和块内地址所指向的存储区中,或者从指针和块内地址所指向的存储区中读出特定的信元。进一步地,所述的自由指针队列和逻辑队列存储在高速片内RAM中,所述的信元存储在大容量数据缓冲区中。进一步地,所述的高速片内RAM包括芯片内部或FPGA内部的存储器资源;所述的大容量数据缓冲区包括SDR、DDR或QDR大容量外部存储。一种基于大颗粒度存储单元的队列管理方法,包括以下步骤:步骤1、针对大容量交换机中队列管理器的数据缓冲区,以块为单位对其进行划分并为每一个块单独地分配一个指针,块与块所对应的指针以链表的形式构建逻辑队列;步骤2、自由指针读取模块对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针读取模块的指针读取请求,对自由指针队列进行动态管理,并将自由指针分发的结果同步更新至逻辑队列管理电路中;步骤3、自由指针归还模块对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理,并将自由指针回收的结果同步更新至逻辑队列电路中;步骤4、本地信元采用指针与块内地址联合寻址的方式在块内进行连续存储或读取。进一步地,步骤1所述的针对大容量交换机中队列管理器的数据缓冲区,以块为单位对其进行划分并为每一个块单独地分配一个指针,块与块所对应的指针以链表的形式构建逻辑队列,具体如下:大容量数据缓冲区中的每一个块对应一个指针,所有未被使用的指针构成自由指针队列,自由指针队列针对指针读取请求和指针归还请求对自由指针进行分发与回收,被分发出去的指针基于链表结构构成同一或不同逻辑队列。进一步地,步骤2所述的自由指针读取模块对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针读取模块的指针读取请求,对自由指针队列进行动态管理,并将自由指针分发的结果同步更新至逻辑队列管理电路中,具体如下:自由指针读取模块针对每一逻辑队列,记录当前链尾指针及该指针对应的块内剩余地址,对于每一待存入缓冲区内的特定逻辑队列的信元,按照块内地址顺序分配存储空间,待块内地址耗尽时,自由指针读取模块向自由指针管理模块发出申请,请求读取一个自由指针,并将该逻辑队列所对应的当前链尾指针值更新为新获取的自由指针值。进一步地,步骤3所述的自由指针归还模块对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理,并将自由指针回收的结果同步更新至逻辑队列电路中,具体如下:自由指针归还模块针对每一逻辑队列,记录当前链头指针及该指针所对应的块内地址位置,对于每一从特定逻辑队列读出的信元,释放对应的块内地址,待一个块内的所有块内地址都被释放后,自由指针归还模块将该指针返回给自由指针队列,并将该逻辑队列所对应的当前链头指针值更新为链表中的下一跳指针值。进一步地,步骤4所述的本地信元采用指针与块内地址联合寻址的方式在块内进行连续存储或读取,具体如下:本地信元寻址时,将指针与块内地址合并为一个地址,指针位于地址的高位,块内地址位于地址的低位,从而指向缓冲区中的特定位置。本专利技术与现有技术相比,其显著优点为:(1)对大容量缓冲区以块为单位进行划分并为之分配指针,减少了指针和逻辑队列的资源消耗;(2)自由指针及逻辑队列存储至片内RAM中,读写速度块,使得DDR等大容量数据缓冲区的读写速度优势得到充分发挥;(3)采用指针和块内地址相结合的寻址方式,降低了指针获取与归还的频率;(4)可根据缓冲区的容量合理地划分每个块的大小,以确保指针数量维持在一个合理水平;(5)可为每一逻辑队列分配固定的块资源,同时预留出适量的共享块资源,避免了某些队列因无法获得缓冲区而出现“饿死”现象的发生;(6)本地信元按照块内部地址进行连续存储或读取,块与块所对应的指针以链表的形式构建逻辑队列,提高了资源利用率。附图说明图1为本专利技术基于大颗粒度存储单元的队列管理器的电路结构框图。图2为本专利技术中自由指针及逻辑队列的组织结构图。图3为本专利技术中指针和块内地址进行联合寻址的示意图。具体实施方式一种基于大颗粒度存储单元的队列管理器,包括自由指针管理模块、缓冲区接口模块、自由指针读取模块和自由指针归还模块,其中:所述自由指针管理模块包括自由指针分发与回收电路和逻辑队列管理电路;所述自由指针分发与回收电路,接收来自自由指针读取模块的指针读取请求和来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理;所述逻辑队列管理电路,基于链表对多个逻辑队列进行管理,链表存储至片内RAM中;所述自由指针读取模块,对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理;所述自由指针归本文档来自技高网...

【技术保护点】
1.一种基于大颗粒度存储单元的队列管理器,其特征在于,包括自由指针管理模块、缓冲区接口模块、自由指针读取模块和自由指针归还模块,其中:所述自由指针管理模块包括自由指针分发与回收电路和逻辑队列管理电路;所述自由指针分发与回收电路,接收来自自由指针读取模块的指针读取请求和来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理;所述逻辑队列管理电路,基于链表对多个逻辑队列进行管理,链表存储至片内RAM中;所述自由指针读取模块,对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理;所述自由指针归还模块,对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理;所述缓冲区接口模块,用于将信元写入到指针和块内地址所指向的存储区中,或者从指针和块内地址所指向的存储区中读出特定的信元。

【技术特征摘要】
1.一种基于大颗粒度存储单元的队列管理器,其特征在于,包括自由指针管理模块、缓冲区接口模块、自由指针读取模块和自由指针归还模块,其中:所述自由指针管理模块包括自由指针分发与回收电路和逻辑队列管理电路;所述自由指针分发与回收电路,接收来自自由指针读取模块的指针读取请求和来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理;所述逻辑队列管理电路,基于链表对多个逻辑队列进行管理,链表存储至片内RAM中;所述自由指针读取模块,对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理;所述自由指针归还模块,对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理;所述缓冲区接口模块,用于将信元写入到指针和块内地址所指向的存储区中,或者从指针和块内地址所指向的存储区中读出特定的信元。2.根据权利要求1所述的基于大颗粒度存储单元的队列管理器,其特征在于,所述的自由指针队列和逻辑队列存储在高速片内RAM中,所述的信元存储在大容量数据缓冲区中。3.根据权利要求2所述的基于大颗粒度存储单元的队列管理器,其特征在于,所述的高速片内RAM包括芯片内部或FPGA内部的存储器资源;所述的大容量数据缓冲区包括SDR、DDR或QDR大容量外部存储。4.一种基于大颗粒度存储单元的队列管理方法,其特征在于,包括以下步骤:步骤1、针对大容量交换机中队列管理器的数据缓冲区,以块为单位对其进行划分并为每一个块单独地分配一个指针,块与块所对应的指针以链表的形式构建逻辑队列;步骤2、自由指针读取模块对每一逻辑队列的链尾指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针读取模块的指针读取请求,对自由指针队列进行动态管理,并将自由指针分发的结果同步更新至逻辑队列管理电路中;步骤3、自由指针归还模块对每一逻辑队列的链首指针和每一指针对应的当前块内地址进行存储与管理,自由指针分发与回收电路接收来自自由指针归还模块的指针归还请求,对自由指针队列进行动态管理,并将自由指针回收的结果同步更新至逻辑队列电路中;步骤4、本地信元采用指针与块内地址联合寻址的方式在块内进行连续存储或读取。5.根据权利要求4所述的基于大颗粒度存储单元的队列管...

【专利技术属性】
技术研发人员:乔庐峰陈庆华孙明乾杨健邹仕祥
申请(专利权)人:中国人民解放军陆军工程大学
类型:发明
国别省市:江苏,32

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

1