针对查找树的缓存着色内存分配方法和装置与流程

文档序号:13934253阅读:248来源:国知局
针对查找树的缓存着色内存分配方法和装置与流程

本发明实施例涉及存储技术领域,尤其涉及一种针对查找树的缓存着色内存分配方法和装置。



背景技术:

在现代计算机层次化的存储结构中,cache是位于主存和cpu寄存器之间的一层缓存。cache通常由容量较小、速度较快的sram构成,通过缓存cpu所需要的热点数据,减少cpu对于主存的访问,提高访存的效率、弥补cpu计算速度和主存访问速度之间的差距,有利于提升计算机系统的整体性能。为了减少主存与cache之间数据交换的开销,并且充分利用计算机程序的空间局部性(spatiallocality),cache和主存之间数据交换的单位通常是多个连续的字节组成的cache行(cacheline),比如64字节、128字节等等,所以从cache的视角考虑,可以认为cacheline是cache和主存的基本组成单位。cache中存放的数据是主存数据的一份拷贝,所以需要一种机制来标识cache中存放的数据与主存数据的对应关系,即cache与主存的映射关系。由于cache的容量往往远小于主存,所以不能将主存中所有的数据同时缓存在cache中,当主存中有新的cacheline需要缓存到cache中,而所有能缓存该cacheline的位置全被占用时,就需要将某一个位置的cacheline替换出去,留出空闲的位置来缓存新的cacheline;因此,使得数据查找性能下降。



技术实现要素:

本发明实施例提供一种针对查找树的缓存着色内存分配方法和装置,用于提高查找性能。

第一方面,本发明实施例提供一种针对查找树的缓存着色内存分配方法,包括:

构造第一查找树;

确定所述第一查找树具有n层结点,所述n为大于或等于1的整数;

获取所述n层结点中每层中具有的结点的个数;

根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色;所述n层结点分配对应的颜色的种类数之和为内存的着色颜色的种类数之和;各层结点所分配的对应的颜色各不相同;

根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。

可选地,每层结点分配的对应的颜色的种类数为至少一种,其中,所述至少一种颜色在所述内存的着色颜色中是连续的。

可选地,相邻各层分配的对应的颜色在所述内存的着色颜色中是连续的。

可选地,所述根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色,包括:

获取所述n层结点中的结点的个数之和为x;

根据第k层结点中的结点的个数为xk,确定为第k层结点分配的颜色的种类数为yk,所述yk=(xk/x)×y,其中,所述y为内存的着色颜色的种类数之和;所述k为大于等于1且小于等于所述n的整数;

从所述内存的着色颜色中获取连续的yk种颜色为所述第k层结点分配的对应的颜色。

可选地,所述第k层结点中每个结点对应的在所述内存中的物理地址为ak;

其中,

ij为第j层结点分配的对应的颜色的种类数,h为操作系统页大小。

第二方面,本发明实施例提供一种针对查找树的缓存着色内存分配装置,包括:

构造模块,用于构造第一查找树;

确定模块,用于确定所述第一查找树具有n层结点,所述n为大于或等于1的整数;

获取模块,用于获取所述n层结点中每层中具有的结点的个数;

分配模块,用于根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色;所述n层结点分配对应的颜色的种类数之和为内存的着色颜色的种类数之和;各层结点所分配的对应的颜色各不相同;

生成模块,用于根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。

可选地,每层结点分配的对应的颜色的种类数为至少一种,其中,所述至少一种颜色在所述内存的着色颜色中是连续的。

可选地,相邻各层分配的对应的颜色在所述内存的着色颜色中是连续的。

可选地,所述分配模块,具体用于:获取所述n层结点中的结点的个数之和为x;根据第k层结点中的结点的个数为xk,确定为第k层结点分配的颜色的种类数为yk,所述yk=(xk/x)×y,其中,所述y为内存的着色颜色的种类数之和;所述k为大于等于1且小于等于所述n的整数;从所述内存的着色颜色中获取连续的yk种颜色为所述第k层结点分配的对应的颜色。

可选地,所述第k层结点中每个结点对应的在所述内存中的物理地址为ak;

其中,

ij为第j层结点分配的对应的颜色的种类数,操作系统页大小。

本实施例提供的针对查找树的缓存着色内存分配方法和装置,通过构造第一查找树,确定所述第一查找树具有n层结点,获取所述n层结点中每层中具有的结点的个数,根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色,根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。根据第二查找树中每层结点对应的颜色在为每层结点的结点分配内存时,只分配会被映射到对应着色颜色的内存,由于内存与cache之间存在映射关系,可以保证不同层结点的结点之间不会相互竞争cache,从而提高了查找性能

附图说明

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

图1为本发明针对查找树的缓存着色内存分配方法实施例一的流程图;

图2为本发明针对查找树的缓存着色内存分配装置实施例一的结构示意图;

图3为本发明针对查找树的缓存着色内存分配装置实施例二的结构示意图。

具体实施方式

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

本发明各实施例可以应用于使用组相连和线性映射cache的内存系统。

图1为本发明针对查找树的缓存着色内存分配方法实施例一的流程图,如图1所示,本实施例的方法可以包括:

s101、构造第一查找树。

本实施例可以采用现有技术的内存分配方法构建查找树,该查找树称为第一查找树。

s102、确定所述第一查找树具有n层结点。

所述n为大于或等于1的整数。

本实施例可以根据第一查找树的深度,将第一查找树按深度均分为n层结点,从而可以确定第一查找树具有n层结点。

s103、获取所述n层结点中每层中具有的结点的个数。

本实施例可以统计获取上述n层结点中每层结点中具有的结点的个数,即获取第一层结点具有的结点的个数、获取第二层结点具有的结点的个数、……、获取第n层结点具有的结点的个数。

s104、根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色。

所述n层结点分配对应的颜色的种类数之和为内存的着色颜色的种类数之和;各层结点所分配的对应的颜色各不相同。

本实施例中,在获取n层结点中每层结点中具有的结点的个数,从内存的着色颜色中为每层结点分配对应的颜色,其中,每层结点分配的对应的颜色的种类为至少一种,每层结点分配的对应的颜色组成一个颜色组,则为n层结点分配了n组颜色组,这n组颜色组中两两颜色组之间并不存在相同的颜色;而且n组颜色组中的颜色种类之和等于内存的着色颜色的种类数之和。将内存按照着色颜色进行分组,分组后每组对应于一层结点,且每组的颜色种类数等于对应的一层结点的颜色种类数,每组颜色均不相交。

其中,cache的颜色种类数是在选择好对哪一级cache(如l3cache)进行缓存着色之后根据缓存着色的原理静态确定的。可以申请若干内存(比如可以通过linux自身提供的大页面机制获得2mb或者1gb的物理地址连续的内存),并通过一定手段(比如通过/proc文件系统)获取上述申请的内存的物理地址,根据缓存着色的原理和上述确定的cache的颜色种类数,只要知道上述申请的内存中各个页面的物理地址,就可以确定各个页面的颜色,即内存中哪些物理地址对应的着色颜色,内存的着色颜色种类数即为上述确下的cache的颜色种类数。

可选地,为每层结点分配的对应的颜色的种类数为至少一种,并且,对于每层结点而言,从内存的着色颜色中为该层结点分配的该至少一种颜色在该内存的着色颜色中是连续的。

可选地,相邻各层分配的对应的颜色在内存的着色颜色中是连续的。

其中,上述s104的一种可能的实现方式包括:

s1041、获取所述n层结点中的结点的个数之和为x。

s1042、根据第k层结点中的结点的个数为xk,确定为第k层结点分配的颜色的种类数为yk,所述yk=(xk/x)×y,其中,所述y为内存的着色颜色的种类数之和;所述k为大于等于1且小于等于所述n的整数。

s1043、从所述内存的着色颜色中获取连续的yk种颜色为所述第k层结点分配的对应的颜色。

本实施例中,可以将内存的着色颜色的种类数(也就是cache的颜色种类数,按照各层的结点个数比例进行划分,得到各层对应的颜色种类数;然后根据各层的颜色种类数,将内存(的页面)按照颜色分成n组,n组颜色与n层结点一一对应,即每组颜色对应查找树中的一层结点。

例如:所选的cache只有8个颜色,也就是内存的着色颜色的种类数为8,而且第一查找树包括3层结点,即第一层结点的结点个数为2,第二层结点的结点个数为4,第三层结点的结点个数为2,因此,各层结点的比例是1:2:1,所以颜色分配的结果为2(8*1/4),4(8*1/2),2(8*1/4),各层的颜色种类数之和为8。假设上述8种颜色依次为1-8号色,则为第一层结点分配的颜色为1号色和2号色,为第二层结点分配的颜色为3-6号色,为第三层结点分配的颜色为7号色和8号色。

s105、根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。

本实施例中,根据n层结点中每层结点对应的颜色和该颜色对应的内存,生成查找树,该查找树称为第二查找树。也就是根据第二查找树中的各个结点的颜色,为将各个结点分配该颜色对应的内存。其中,为所述第二查找树中的每个结点分配的内存的颜色与所述每个结点对应的颜色相同。

其中,在生成第二查找树的过程中,构造第一查找树的每个结点之前可以得到每个结点的深度信息,从而根据第一查找树的分层关系获得每个结点所属的层次(即属于哪一层结点);在为各个结点分配内存时,可以根据各个结点所属的层次,从该层结点对应的颜色的内存中为该结点分配内存;可以认为每层结点分配的内存的着色颜色与该层结点对应的颜色属于同一颜色组。第二查找树就是一颗按照层次进行缓存着色的查找树。

其中,所述第k层结点中每个结点对应的在所述内存中的物理地址为ak;

其中,

ij为第j层结点分配的对应的颜色的种类数,h为操作系统页大小。

上述h可以为4k(4096byte),即一个颜色表示cache中的4k/cache_line个组。上述h也可以为8k、16k,本实施例对h不做限定。需要说明的是,h的取值区间最大不能超过(cache的大小/(组相连个数*64)),最小不能超过(cache_line(一般取值为64b)*组相连个数)),其中,组相连个数、cacheline大小均为cache系统的规格,可以通过操作系统或者查找cpu参数获得。

本实施例提供的针对查找树的缓存着色内存分配方法,通过构造第一查找树,确定所述第一查找树具有n层结点,获取所述n层结点中每层中具有的结点的个数,根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色,根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。根据第二查找树中每层结点对应的颜色在为每层结点的结点分配内存时,只分配会被映射到对应着色颜色的内存,由于内存与cache之间存在映射关系,可以保证不同层结点的结点之间不会相互竞争cache,从而提高了查找性能,降低cache中的数据被替换的概率。

需要说明的是,关于缓存着色的实现原理与现有技术类似,此处不再赘述。

以本发明实施例应用于一具体例子进行说明,本发明实施例可以针对treebitmap算法进行加速,treebitmap算法是cisco的专利ip查找算法,其本质是对一颗多比特树通过比特位图的方式进行压缩。运行平台为intel(r)xeon(r)cpue5-4603,其l2cache为256kb、8路组相联,因此一共有512个sets,按照4k每页计算,一共8个cache页颜色。

在本实施例中,首先按照treebitmap算法对fib构建treebitmap树,本实现中单个节点为24字节大,使用核心路由表共计350k条前缀路由,共使用5.16mb内存。本实施例中,将树结构分为三层。第1层到第3层内存占用分别为1.81mb,3.25mb和0.1mb。

本实施例中将8个cache页划分为2:5:1的比例,即第一层的使用2个颜色,第二层使用5个颜色,第三层使用1个颜色。

由于本实施例中,一共有8个颜色,对应8*4k=32k的内存空间。生成第二查找树以后,第一层的任意内存的物理地址a1都满足a1%32k∈[0,8k-1],第二层任意内存的物理地址a2都满足a2%32k∈[8k,28k-1],第三层任意内存的物理地址a3都满足a3%32k∈[28k,32k-1]。采用本实施例的方案后的查找性能提升了50%。

图2为本发明针对查找树的缓存着色内存分配装置实施例一的结构示意图,如图2所示,本实施例的装置可以包括:构造模块11、确定模块12、获取模块13、分配模块14和生成模块15。

构造模块11,用于构造第一查找树;

确定模块12,用于确定所述第一查找树具有n层结点,所述n为大于或等于1的整数;

获取模块13,用于获取所述n层结点中每层中具有的结点的个数;

分配模块14,用于根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色;所述n层结点分配对应的颜色的种类数之和为内存的着色颜色的种类数之和;各层结点所分配的对应的颜色各不相同;

生成模块15,用于根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。

可选地,每层结点分配的对应的颜色的种类数为至少一种,其中,所述至少一种颜色在所述内存的着色颜色中是连续的。

可选地,相邻各层分配的对应的颜色在所述内存的着色颜色中是连续的。

可选地,所述分配模块14,具体用于:获取所述n层结点中的结点的个数之和为x;根据第k层结点中的结点的个数为xk,确定为第k层结点分配的颜色的种类数为yk,所述yk=(xk/x)×y,其中,所述y为内存的着色颜色的种类数之和;所述k为大于等于1且小于等于所述n的整数;从所述内存的着色颜色中获取连续的yk种颜色为所述第k层结点分配的对应的颜色。

可选地,所述第k层结点中每个结点对应的在所述内存中的物理地址为ak;

其中,

ij为第j层结点分配的对应的颜色的种类数,操作系统页大小。

本实施例的装置,可以用于执行本发明上述各方法实施例的技术方案,其实现原理类似,此处不再赘述。

本实施例提供的针对查找树的缓存着色内存分配装置,通过构造第一查找树,确定所述第一查找树具有n层结点,获取所述n层结点中每层中具有的结点的个数,根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色,根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。根据第二查找树中每层结点对应的颜色在为每层结点的结点分配内存时,只分配会被映射到对应着色颜色的内存,由于内存与cache之间存在映射关系,可以保证不同层结点的结点之间不会相互竞争cache,从而提高了查找性能。

图3为本发明针对查找树的缓存着色内存分配装置实施例二的结构示意图,如图3所示,本实施例的装置可以包括:存储器21和处理器22,其中,存储器21用于存储执行上述方法的代码,处理器22用于调用所述代码执行:

构造第一查找树;

确定所述第一查找树具有n层结点,所述n为大于或等于1的整数;

获取所述n层结点中每层中具有的结点的个数;

根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色;所述n层结点分配对应的颜色的种类数之和为内存的着色颜色的种类数之和;各层结点所分配的对应的颜色各不相同;

根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。

可选地,每层结点分配的对应的颜色的种类数为至少一种,其中,所述至少一种颜色在所述内存的着色颜色中是连续的。

可选地,相邻各层分配的对应的颜色在所述内存的着色颜色中是连续的。

可选地,所述处理器22在根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色时,具体用于:

获取所述n层结点中的结点的个数之和为x;

根据第k层结点中的结点的个数为xk,确定为第k层结点分配的颜色的种类数为yk,所述yk=(xk/x)×y,其中,所述y为内存的着色颜色的种类数之和;所述k为大于等于1且小于等于所述n的整数;

从所述内存的着色颜色中获取连续的yk种颜色为所述第k层结点分配的对应的颜色。

可选地,所述第k层结点中每个结点对应的在所述内存中的物理地址为ak;

其中,

ij为第j层结点分配的对应的颜色的种类数,h为操作系统页大小。

本实施例的装置,可以用于执行本发明上述各方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本实施例提供的针对查找树的缓存着色内存分配装置,通过构造第一查找树,确定所述第一查找树具有n层结点,获取所述n层结点中每层中具有的结点的个数,根据所述n层结点中每层中具有的结点的个数,从内存的着色颜色中为所述每层结点分配对应的颜色,根据所述每层结点对应的颜色和所述颜色对应的内存,生成缓存着色后的第二查找树。根据第二查找树中每层结点对应的颜色在为每层结点的结点分配内存时,只分配会被映射到对应着色颜色的内存,由于内存与cache之间存在映射关系,可以保证不同层结点的结点之间不会相互竞争cache,从而提高了查找性能。

在上述实施例中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读内存(英文:read-onlymemory,简称:rom)、随机存取存储器(英文:randomaccessmemory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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