多通道报文汇聚共享内存管理方法及系统与流程

文档序号:17375325发布日期:2019-04-12 23:14阅读:185来源:国知局
多通道报文汇聚共享内存管理方法及系统与流程

本发明涉及交换机报文处理技术领域,特别是涉及一种多通道报文汇聚共享内存管理方法及系统。



背景技术:

随着网络的蓬勃发展,交换芯片的带宽需求也越来越大,利用多数据通道传输报文以达到更大交换带宽容量,目前已成为一个主流方向。要实现多通道报文存储的要求,首先报文存储管理一定要满足多通道的读写带宽要求。

现有技术中常用的方法是用多读写ram实现。如果需要满足8个入口、2个出口报文通道的数据缓存请求,那么需要2r8wdataram(2读8写的静态存储器),同时从芯片物理实现上考虑也没有2r8w的物理ram,而是通过多块1r1wdataram(1读1写的静态存储器)搭出来,从物理实现上很耗资源,可行性差。

传统的ram都是1r1w,如果芯片利用多读写的ram,那么这个ram的面积也将会是1r1w的多倍。高带宽交换芯片存储报文的缓存容量都是在m字节数量级,所以不适合利用多读写ram来存储报文数据。

因此,针对上述技术问题,有必要提供一种多通道报文汇聚共享内存管理方法及系统。



技术实现要素:

有鉴于此,本发明的目的在于提供一种多通道报文汇聚共享内存管理方法及系统。

为了实现上述目的,本发明一实施例提供的技术方案如下:

一种多通道报文汇聚共享内存管理方法,所述方法包括:

采用n个1r1wdataram及n个1r1wptrram构建n个入口、m个出口的报文通道,建立存储报文数据的dataram与存储指针的ptrram的映射关系;

对各个ptrram中剩余指针数目ptrramcnt按从多到少进行排序;

入口报文通道进行报文写入,入口报文通道获取指针ptr请求,按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr,将对应报文写入对应的dataram中;

出口报文通道进行报文读取,出口报文通道从dataram中读取报文,读取报文后将指针ptr释放至对应的ptrram中。

作为本发明的进一步改进,所述方法还包括:

通过ptrramindex索引标记获取的指针ptr与ptrram之间的对应关系。

作为本发明的进一步改进,“按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr”具体为:

从ptrram取出指针ptr并放进对应的先入先出队列ptrfifo中;

当先入先出队列ptrfifo深度大于或等于将空阈值时,从所有的先入先出队列ptrfifo中取出指针ptr,当先入先出队列ptrfifo深度小于将空阈值时,从ptrram中取出指针ptr;

按照剩余指针数目ptrramcnt从多到少的排序后,依据入口报文通道的请求状态,获取一个或多个指针ptr;

未被使用的指针ptr根据ptrramindex索引重新放进对应的先入先出队列ptrfifo或ptrram中。

作为本发明的进一步改进,入口报文通道进行报文写入过程中,同一时钟周期内不同的入口报文通道从不同的ptrram中取到指针ptr。

作为本发明的进一步改进,出口报文通道进行报文读取过程中,同一时钟周期内不同的出口报文通道从不同的dataram中读取报文。

作为本发明的进一步改进,所述ptrram中的剩余指针数目ptrramcnt为实时排序。

作为本发明的进一步改进,所述入口报文通道数n和出口报文通道数m均大于1。

作为本发明的进一步改进,n个所述dataram的缓存深度相同。

本发明另一实施例提供的技术方案如下:

一种多通道报文汇聚共享内存管理系统,所述系统包括:

由n个1r1wdataram及n个1r1wptrram构建的n个入口、m个出口的报文通道,存储报文数据的dataram与存储指针的ptrram为一一映射关系;

排序模块,用于对各个ptrram中的指针按剩余指针数目ptrramcnt从多到少进行排序;

当入口报文通道进行报文写入时,入口报文通道获取指针ptr请求,按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr,将对应报文写入对应的dataram中;

当出口报文通道进行报文读取时,出口报文通道从dataram中读取报文,读取报文后将指针ptr释放至对应的ptrram中。

作为本发明的进一步改进,所述系统还包括:

ptrramindex索引模块,用于通过ptrramindex索引标记获取的指针ptr与ptrram之间的对应关系。

本发明具有以下有益效果:

本发明利用n块dataram来缓存存储报文数据,同时利用n块ptrram来维护dataram的可用指针,并利用排序算法,使n块ptrram的指针利用率相对公平,从而使得n块dataram利用率相对均衡;

极大的节省了ram的资源消耗,同时节省了芯片ram面积,可满足多通道报文同时缓存的需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明中多通道报文汇聚共享内存管理方法的流程示意图;

图2为本发明一具体实施例中dataram与ptrram的映射关系图;

图3为本发明一具体实施例中指针ptr获取及释放的示例图;

图4为本发明一具体实施例中多通道报文汇聚共享内存管理系统的模块图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

参图1所示,本发明公开了一种多通道报文汇聚共享内存管理方法,包括:

采用n个1r1wdataram及n个1r1wptrram构建n个入口、m个出口的报文通道,建立存储报文数据的dataram与存储指针的ptrram的映射关系;

对各个ptrram中剩余指针数目ptrramcnt按从多到少进行排序;

入口报文通道进行报文写入,入口报文通道获取指针ptr请求,按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr,将对应报文写入对应的dataram中;

出口报文通道进行报文读取,出口报文通道从dataram中读取报文,读取报文后将指针ptr释放至对应的ptrram中。

优选地,本发明中的入口报文通道数n和出口报文通道数m均大于1,n个dataram的缓存深度相同。

对于m读n写存储器的设计实现(n>1,m>1),本发明利用n块1r1wdataram(1读1写的静态存储器)来缓存存储报文数据,同时需要n块1r1wptrram(存放指针的静态存储器)来维护数据1r1wdataram可用指针ptr;利用排序算法,使n块ptrram利用率相对公平,从而使得n块dataram利用率相对均衡。

进一步地,本发明通过ptrramindex索引标记获取的指针ptr与ptrram之间的对应关系。

优选地,本发明中“按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr”具体为:

从ptrram取出指针ptr并放进对应的先入先出队列ptrfifo中;

当先入先出队列ptrfifo深度大于或等于将空阈值时,从所有的先入先出队列ptrfifo中取出指针ptr,当先入先出队列ptrfifo深度小于将空阈值时,从ptrram中取出指针ptr;

按照剩余指针数目ptrramcnt从多到少的排序后,依据入口报文通道的请求状态,获取一个或多个指针ptr;

未被使用的指针ptr根据ptrramindex索引重新放进对应的先入先出队列ptrfifo或ptrram中。

为了避免dataram的写冲突,报文通道不能在同一时钟周期内对同一块dataram产生写请求,这就要求报文通道必须从不同的ptrram中取到指针。即入口报文通道进行报文写入过程中,同一时钟周期内不同的入口报文通道从不同的ptrram中取到指针ptr。

同样地,读取数据dataram时,多个出口通道不能读取同一块dataram。即出口报文通道进行报文读取过程中,同一时钟周期内不同的出口报文通道从不同的dataram中读取报文。

本发明中ptrram中的剩余指针数目ptrramcnt为实时排序,只要剩余统计是实时的,排序也是实时变化,通过每次依次从指针剩余最多ptrram的中取,就可以保证多个ram中的指针消耗相对公平。

参图4所示,本发明还公开了一种多通道报文汇聚共享内存管理系统,包括:

由n个dataram及n个ptrram构建的n个入口、m个出口的报文通道,存储报文数据的dataram与存储指针的ptrram为一一映射关系;

排序模块,用于对各个ptrram中的指针按剩余指针数目ptrramcnt从多到少进行排序。

当入口报文通道进行报文写入时,入口报文通道获取指针ptr请求,按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr,将对应报文写入对应的dataram中;

当出口报文通道进行报文读取时,出口报文通道从dataram中读取报文,读取报文后将指针ptr释放至对应的ptrram中。

进一步地,该系统还包括:

ptrramindex索引模块,用于通过ptrramindex索引标记获取的指针ptr与ptrram之间的对应关系。

以下结合具体实施例对本发明作进一步说明。

本实施例中的多通道报文汇聚共享内存管理方法,包括:

采用8个1r1wdataram及8个1r1wptrram构建8个入口、2个出口的报文通道,建立存储报文数据的dataram与存储指针的ptrram的映射关系;

对各个ptrram中剩余指针数目ptrramcnt按从多到少进行排序;

入口报文通道进行报文写入,入口报文通道获取指针ptr请求,按剩余指针数目ptrramcnt从多到少的排序从ptrram中获取指针ptr,将对应报文写入对应的dataram中;

出口报文通道进行报文读取,出口报文通道从dataram中读取报文,读取报文后将指针ptr释放至对应的ptrram中。

以总缓存深度64k,8个入口、2个出口报文通道传输为例,即n=8、m=2,将总缓存64k的ram切割成8块8k深度1r1wdataram,同时需要8块ptrram来维护存放对应1r1wdataram的可用指针。

当某个入口报文通道需要缓存报文时,首先从某个ptrram中取一个指针,再根据指针将报文数据写进对应的dataram。参图2所示,1r1wdataram与1r1wptrram为一一映射关系,ptrram0对应dataram0的可用指针,ptrram1对应dataram1的可用指针,以此类推,8块ptrram与dataram一一对应。

8个入口报文通道是彼此独立的,每个报文通道每次均不固定的会产生请求指针,最多8个入口报文通道可能同时产生请求。为了避免dataram的写冲突,报文通道不能在同一时钟周期内对同一块dataram产生写请求,这就要求报文通道必须从不同的ptrram中取到指针。另外,考虑到8个入口报文通道写完报文数据以后,等待出口通道读取报文后才能释放指针,但是这个时间行为是很不确定的。如果拿取指针时没有考虑每个ptrram的剩余指针,极可能造成某块ptrram耗尽所有指针,而其他ptrram还有很多指针的情况。

因此,本发明用8块1r1w的dataram代替2r8w的ram来降低资源的同时,还使用排序方法来公平拿取每个ptrram的剩余指针。解决的方法是使用ptrramcnt来统计每块ptrram剩余个数,通过排序模块将8个ptrramcnt依次从多到少排序。由于8个入口报文通道每次均不固定的会产生请求,只要从实现上保证每次有请求的报文通道依次从ptrramcnt最多的ptrram中取,就可以整体保证每个ptrram的消耗指针差不多。

参图3所示,以ptr0举例说明,ptr0是从ptrramcnt最多的ptrram中获得的一个指针,为了标记与ptrram对应关系,通过ptr0ramindex来指示ptr0是从ptrram0…7中哪一个ptrram获取的。入口报文通道获得指针后,可根据该指针的ptrramindex写到相对应的dataram中。同时,8个入口报文通道缓存数据后,每个入口报文通道会各自维护已缓存数据的ptr和ptrramindex。每次报文出口通道会从8个入口通道中挑选其中的2个通道的指针作为读取dataram的地址。

同样读取数据dataram时,2个出口通道不能读取同一块dataram,这可以通过挑选2个通道时保证ptrramindex不相同即可,接下来出口报文通道根据ptr和ptrramindex读取相对应的dataram后,释放该指针,留给后续入口报文通道重新获取。

参图4所示为本发明的系统模块图,左边会有8个入口报文通道ptrget0…7请求(报文通道申请指针请求),相应的ptr0...7为取到的指针,ptr0...7ramindex为相应指针所在的ptrramindex。右边每次会有出口报文通道释放的ptr重新写回ptrram,释放指针时会根据ptrramindex索引重新放进ptrram0…7中。

ptrramcnt是整体考虑指针消耗和指针释放的最终剩余结果,排序模块会利用n个时钟周期将8块ptrram的ptrramcnt从大到小依次排序。当某个先入先出队列ptrfifo的使用量(即深度)小于设定的将空阈值时,会从相对应的ptrramcnt中获取ptr放进先入先出队列ptrfifo。只要ptrget0...7有请求,8个ptrfifo会同时取出ptr,根据各自ptrramcnt的排序结果,将8个ptr重新排序依次映射至ptr0…7。即指针所属ptrramcnt最多的映射至ptr0,指针所属ptrramcnt次最大映射至ptr1;依次类推,映射至ptr7的指针是从ptrramcnt最少的ptrram而来的。

当ptrget0...7有请求时,依次从标记统计最多的ptr0开始取,接着ptr1…7,只要剩余统计是实时的,排序也是实时变化,通过每次依次从指针剩余最多ptrram的中取,就可以保证了8块ram中的指针消耗相对公平。

值得说明的是,本发明中只要ptrget0...7有1个请求,那么8个ptr0…7中都会取出来,不同的是一部分被真实的取走,剩余未使用的指针需要再次放进ptrfifo0…7中。

例如,某一时刻8个入口报文通道有通道1、通道3、通道6有指针请求,那么通道1获得ptr0,通道3获得ptr1,通道6获得ptr2,剩余ptr3、ptr4、ptr5、ptr6、ptr7未实际使用,会根据各自ptrramindex重新放进ptrfifo中。

应当理解的是,本实施例中以8个入口报文通道、2个出口报文通道为例进行说明,在其他实施例中,入口报文通道和出口报文通道的数量可扩展为其他数量,此处不再一一举例进行说明。

由以上技术方案可以看出,本发明具有以下优点:

本发明利用n块dataram来缓存存储报文数据,同时利用n块ptrram来维护dataram的可用指针,并利用排序算法,使n块ptrram的指针利用率相对公平,从而使得n块dataram利用率相对均衡;

极大的节省了ram的资源消耗,同时节省了芯片ram面积,可满足多通道报文同时缓存的需求。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。

为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书一个或多个实施例的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1