一种Cache异步淘汰的方法和装置的制作方法

文档序号:6462087阅读:179来源:国知局
专利名称:一种Cache异步淘汰的方法和装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种Cache异步淘汰的方法和装置。
背景技术
Cache (緩存) 一般是为了提高程序的性能而将一些的对象保存起来进行 重用的一种方法,具有如下特性多线程共享使用、具有一定的容量、容量 的局限引起Cache数据淘汰。
多线程共享使用决定了 Cache应该是线程安全的,同时只对一个线程提 供服务。容量的特性决定了 Cache需要根据一定的规则淘汰掉一些权重较低 的对象。对于一些应用场景,在淘汰一个对象并对对象进行资源释放的时候 往往需要消耗较多的计算机资源。
Cache中的对象关闭有两种情况。第一种是在Cache里的对象被淘汰掉的 时候,被淘汰掉的对象需要进行关闭以释放资源。在现有的技术方案下,为 了能让Cache正常工作,不产生并发性问题,往往要等待当前调用线程完成 对象的淘汰及资源释放后,Cache才会释放给其他线程使用。因此在进行对象 淘汰时,如果这个对象关闭及资源释放需要占用大量的CPU时间会导致其他 线程花很多的时间等待,不能充分利用CPU资源,整个程序的并发性会随之 下降,使用Cache来提高程序执行性能的目的不能有效实现。
第二种Cache中的对象关闭是在进行Cache刷新或者Cache关闭时发生 的,在现有的技术中,要完成Cache中对象的关闭及资源释放由单线程完成 的,在一些要求进行快速Cache刷新或关闭的场景中,单线程方式使Cache 里的对象关闭及资源释放都在串行的方式下完成,不能快速关闭对象。
发明人在实现本发明的过程中,发现现有技术至少存在以下问题
现有技术中, 一般淘汰对象是调用线程在添加对象到Cache中,同时发 现一个对象需要净皮淘汰时,由调用线程直接来完成对象的淘汰及资源释放工作。由于Cache的线程同步特性,使得一个线程在进行对象淘汰的时候,另 外一个线程只能等待,导致Cache的性能严重的下降,使Cache不能有效的 提供服务。

发明内容
本发明提供一种Cache异步淘汰的方法和装置,以有效的解决Cache在 关闭其中的对象及释放相关资源引起的性能损耗问题。
为解决上述问题,本发明提供一种Cache异步淘汰的方法,包括以下步

获取回收区中淘汰对象的占用空间情况; 比较所述淘汰对象的占用空间情况与预先设定的门限值; 所述淘汰对象的占用空间情况大于所述门限值时,关闭所述回收区中的 淘汰对象。
所述回收区具体为二级Cache,被;改入到所述回收区中的淘汰对象等待关 闭或重新净皮回收利用。
所述获取回收区中淘汰对象的占用空间情况的步骤前还包括 一级Cache 容量已满时,将淘汰对象放置到回收区中。
所述关闭所述回收区的淘汰对象步骤具体为调整关闭淘汰对象的线程 数目,从回收区中移除淘汰对象,并释放所述淘汰对象占用的资源。所述一 定数目的线程之间以并行的方式关闭淘汰对象。
所述关闭所述回收区中的淘汰对象步骤具体为按照淘汰对象放入回收 区中的顺序关闭淘汰顺序优先的对象。
所述调整关闭淘汰对象的线程具体为根据需要淘汰对象的数量在预先 设定线程数量的范围内调整线程的数量。
所述回收区中的空间未满时,由所述线程在后台以异步并行的方式关闭 淘汰对象,调用线程不参与淘汰对象的关闭。所述回收区中的空间已满时, 由调用线程直接关闭当前从一级Cache里淘汰的对象。
为达上述目的,本发明一种Cache异步淘汰的装置,包括
5获取模块,用于获取回收区中淘汰对象的占用空间情况; 比较模块,用于比较获取模块获取的淘汰对象占用空间情况与预先设定 的门限4直;
对象关闭模块,用于当获取模块获取到淘汰对象占用的空间情况大于预 先设定的门限值时,关闭所述回收区中的淘汰对象。 所述对象关闭模块进一步包括
对象顺序检测子模块,用于检测淘汰对象放入回收区中的顺序; 线程控制子模块,用于在预先设定的范围内调整关闭淘汰对象线程的数
量;
关闭子模块,用于利用所述线程控制子模块调整的线程并行异步的关闭 对象顺序检测子模块检测到的顺序优先的淘汰对象;在线程控制子获取模块 调整线程达到最大值获取到回收区中的空间已满时,由调用线程直接关闭当 前从一级Cache里淘汰的对象。
所述Cache异步淘汰的装置,还包括回收区具体为二级Cache,被放入 到所述回收区中的淘汰对象等待关闭或重新被回收利用。
与现有技术相比,本发明具有以下优点
本发明通过获取回收区中淘汰对象的占用空间情况并与预先设定的门限 值做比较,所述淘汰对象的占用空间情况大于所述门限值时,可以与调用线 程异步关闭回收区中的淘汰对象。以保证调用线程可以高效的并行工作,从 而在整体上提高系统的执行效率。


图l是本发明中Cache异步淘汰的结构示意图; 图2是本发明中Cache异步淘汰的流程图; 图3是本发明中向Cache放置对象时的流程图; 图4是本发明中向Cache取出对象的流程图; 图5是本发明中Cache的关闭流程图;图6是本发明中Cache异步淘汰的装置图。
具体实施例方式
本发明提供一种Cache异步淘汰的方法和装置,以有效的解决Cache在 关闭对象及释放相关资源引起的性能损耗问题。
虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅 取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及 存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。 若CPU工作速度较高,但内存存取速度相对较低,将会造成CPU等待,处理 速度降低,CPU的能力浪费。
为提高CPU的处理速度,现今的计算机都配有高速緩沖存储器(cache), 也称緩存,实际上是一种特殊的高速存储器。Cache的存取速度比内存要快, 所以提高了 CPU的处理速度。
Cache是一种特殊的存储器,它由Cache存储部件和Cache控制部件组成。 Cache存储部件一般采用与CPU同类型的半导体存储器件,存取速度比内存 快几倍甚至十几倍。而Cache控制器部件包括主存地址寄存器、Cache地址 寄存器,主存一Cache地址变换部件及替换控制部件等。
但是,仅依靠增加一级Cache的容量,并不能使CPU的性能随之成正比 例地提高,还需设置二级Cache。 一级Cache也叫主緩存,或内部緩存,直接 设计在CPU芯片内部。 一级緩存容量很小,通常在8KB 64KB之间。二级 Cache也叫外部緩存,不在CPU内部而是独立的SRAM芯片,其速度比一级 緩存稍慢,但容量较大,多在64KB ~ 2MB之间。
Cache分级结构的主要优势在于,对于一个典型的一级緩存系统的80% 的内存调用都发生在CPU内部,只有20 %的内存调用是与外部内存有关联。 而这20%的外部内存调用中的80%又与二级緩存有关联。因此,只有4%的 内存调用定向到DRAM中。
Cache分级结构的不足在于高速緩存组数目受限,需要占用线路板空间和 一些支持逻辑电路,会使成本增加。本发明实施例提供的对象关闭线程可以在不增加高速緩存组数目的情况 下,提高调用线程的处理速度。
如图1所示,在进行对象淘汰的时候,只是将淘汰对象放入回收区即二
级Cache中,对象并未真正释》丈,而是由对象关闭线程池进行异步释放,其 中对象关闭线程池里的线程数量范围可以预先进行设定,并可以根据实际的 关闭对象情况动态调整。通过这种方式,没有必要在淘汰对象上进行线程等 待,在淘汰时,只是简单的将要淘汰的对象放入到回收区即二级Cache中, 对象并不是真正的被关闭,而是将关闭的动作交给了对象关闭线程池的多个 线程来完成,这样使这些对象的关闭操作不占用调用线程的CPU资源,有效 的提高了并发性。对于放入回收区即二级Cache的对象,如果有其他线程需 要重新使用这个对象,可以进行回收,以避免对于同一资源进行多次调用而 产生错误。同理,当要求Cache关闭/刷新时,调用线程也只是简单的将对象 放入到回收区即二级Cache中,对象关闭线程池里的多个线程可以并发高效 的把对象关闭掉,提高Cache关闭/刷新的效率。
下面结合附图和具体实施例对本发明提供的Cache异步淘汰的方法和装 置进4于详细"i兌明。
如图2所示,为本发明中Cache异步淘汰流程图,包括以下步骤
步骤S201 、获取回收区中淘汰对象的占用空间情况。
具体的,所述回收区具体为二级Cache,被;改入到所述回收区中的淘汰对 象等待关闭或重新被回收利用。
在此步骤之前还包括以下步骤
当一级Cache容量已满时,将淘汰对象放置到回收区中 步骤S202、比较所述淘汰对象在回收区中的占用空间情况与预先设定的 门限值。
比较结果是淘汰对象在回收区中的占用空间情况小于或等于门限值时, 对回收区中的淘汰对象不做关闭动作。
比较结果是淘汰对象的占用空间情况大于所述门限值时,执行步骤S103。 具体的,当门限值为0时, 一对象放入回收区时即可被对象关闭线程池
8关闭。 一般情况下, 一级Cache向回收区中放入淘汰对象的速度与对象关闭 线程池关闭对象的速度相比较快,所以回收区中的淘汰对象数目会不断增力口 。 在回收区中未被对象关闭线程池关闭的淘汰对象还可以被调用线程重新启 用。
步骤S203、所述淘汰对象的占用空间情况大于所述门限值时,关闭所述 回收区中的淘汰对象。
具体的,调整关闭淘汰对象的线程的数目,从回收区中移除淘汰对象, 并释放所述淘汰对象占用的资源。
所述一定数目的线程之间以并行的方式关闭淘汰对象。
所述移除淘汰对象时按照淘汰对象放入回收区中的顺序关闭淘汰顺序优 先的对象。
所述调整关闭淘汰对象的线程数量具体为根据需要淘汰对象的数量在 预先设定线程数量的范围内调整线程的数量。
所述回收区中的空间未满时,由所述线程在后台以异步并行的方式关闭 淘汰对象,调用线程不参与淘汰对象的关闭。所述回收区中的空间已满时, 由调用线程直接关闭当前从一级Cache里淘汰的对象。
通过上述实施例提供的方法可以实现在多线程环境下线程同步的Cache 在淘汰对象时引起的性能损耗问题,通过Cache里的数据进行异步的淘汰方 式,使在淘汰对象时所占用的cpu资源独立于调用线程的cpu资源,以保证调 用线程可以高效的并行工作,从而在整体上提高系统的执行效率。
本发明又一实施例对本发明的具体情况进行详细的描述。 图3为向Cache^L置对象时的流程图,如图所示,包括以下步骤 步骤S301、调用线程向Cache放置对象时,Cache首先检查一级Cache 的容量。如果一级Cache的容量未满,执行步骤S302;如果一级Cache的容 量已满,取得一级Cache里应淘汰的对象,将其从一级Cache移除,并将新 对象放入一级Cache,继续执行步骤S303。步骤S302、 一级Cache的容量未满,直接将对象放到 一级Cache里,Cache 的调用返回,释放调用者占用的线程资源并结束。
步骤S303、如果一级Cache的容量已满,检测二级Cache的容量。如果 二级Cache的容量未满,执行步骤S304;如果二级Cache的容量已满,执行 步骤S305。
步骤S304、如果二级Cache容量未满,根据一级的算法设计,淘汰相应 的对象到二级Cache中,并将新的放入的对象放置在一级Cache中,淘汰到 二级Cache的对象等待对象关闭线程池进行关闭,调用线程返回,释放调用 者占用的线程资源并结束。
所述对象关闭线程池检测二级Cache中的对象占用的空间情况,如果对 象占用的空间情况大于预先设定的门限值时,从二级Cache里取出对象,同 时将取出的对象从二级Cache里移除,然后将对象占用的资源释放掉。对象 关闭线程池可以根据回收对象的繁忙程度,动态的在设定的线程数量范围内 调整线程的数量并按照对象放入二级Cache中的先后顺序关闭对象,并且对 象关闭线程池可以和调用线程同时异步的关闭淘汰对象,以便高效的进行资 源释放工作。
此时被淘汰的Cache对象并没有在调用时进行资源释放,完成淘汰对象 放入二级Cache并将新;故入的对象^:入一级Cache后调用线程返回。因此该 过程不占用对象资源回收时的时间。利用关闭线程池关闭对象可以使调用线 程尽快的释放资源,进而进行其他操作,以保证调用线程可以高效的并行工 作,从而在整体上提高系统的执行效率。
步骤S305、在向二级Cache放入对象时,所述二级Cache中的空间未满 时,由所述线程在后台以异步并行的方式关闭淘汰对象,调用线程不参与淘 汰对象的关闭。所述回收区中的空间已满时,由调用线程直接关闭当前从一 级Cache里淘汰的对象,
图4为向Cache取出对象的流程图,如图所示,包括以下步骤 步骤S401、从Cache里取出对象时,首先检查一级Cache里是否有调用
10要取的对象,如果有,则直接返回该对象;如果没有,继续执行以下步骤。
步骤S402、如果在一级Cache里没有找到相应的对象,^r查二级Cache 里有没有相应的对象存在。如果二级Cache里没有,则返回Cache里没有相 应的对象并结束。如果二级Cache里有所要调用的对象,则继续执行以下步骤。
步骤S403、如果在二级Cache找到相应的对象,检测对象关闭线程池是 否正在关闭此对象。如果所述对象未被关闭,执行步骤S304;如果所述对象 正在被关闭,执行步骤S405。
步骤S404、如果所述对象没有被关闭,则将对象从二级Cache里移除, 然后通知对象关闭线程池,该对象将要被重新使用,不能进行关闭操作。对 象放入一级Cache后,将此对象返回调用线程并结束。
步骤S405、如果回收的对象正在被对象关闭线程进行关闭操作,则调用 线程要等到关闭完成后才返回并结束,以保证Cache工作的正确性。
Cache完成职责后,需要对Cache进行关闭,以释放Cache里所占用的资 源,图5为Cache的关闭流程图,如图所示,具体包括以下步骤
步骤S501、请求进行关闭Cache时,首先进行一级Cache的关闭操作, 在一级Cache的关闭时,将一级Cache里的对象全部放置到二级Cache中。
步骤S502、才企测二级Cache的可用空间,空间未满时,对象关闭线程池 启动多个线程,并发的从二级Cache里取出相应的对象,进行资源的释放。
这时由于并发的进行资源的回收操作,将有效的提高了资源回收的速度, 从而缩减了 Cache关闭的效率。
步骤S503、在向二级Cache放入对象时,如果二级Cache的容量已满, Cache将采用调用线程与对象关闭线程池同时异步进行对象的关闭操作。
上述实施例从原理上对本发明进行了描述,下面以对Cache进行关闭为 例,通过具体实施例对本发明提供的Cache异步淘汰的方法进行说明。
(1)调用线程请求进行关闭Cache存储器中的所有对象时,对位于CPU芯片内部的一级Cache存储器中对象的进行关闭操作。
关闭一级Cache存储器中的对象时,Cache控制器将一级Cache存储器 里的对象全部放置到位于独立芯片的二级Cache存储器中。
(2)检测二级Cache的可用空间,空间未满时,位于独立芯片中的对象 关闭线程池启动多个线程,并发的从二级Cache存储器里取出相应的对象, 进行资源的释放。
这时由于并发的进行资源的回收操作,将有效的提高了资源回收的速度, 从而缩减了 Cache关闭的效率。
(3 ) Cache控制器将一级Cache存储器中的对象向二级Cache存储器中 放入对象时,如果二级Cache存储器的容量已满,Cache控制器将采用调用线 程与对象关闭线程池同时异步进行对象的关闭操作。
通过上述实施例提供的方法可以实现在多线程环境下线程同步的Cache 在淘汰对象时引起的性能损耗问题,通过Cache里的数据进行异步的淘汰方 式,使在淘汰对象时所占用的cpu资源独立于调用线程的cpu资源,以保证调 用线程可以高效的并行工作,从而在整体上提高系统的执行效率。
同时,本发明还提供了一种Cache异步淘汰的装置,用于实现本发明提
供的方法,如图6所示,具体包括
获取^^莫块10,用于获取回收区中淘汰对象的占用空间情况;
比较模块20,用于比较获取模块获取的淘汰对象占用空间情况与预先设
定的门限l直;
对象关闭模块30,用于当获取模块获取到淘汰对象占用的空间情况大于 预先设定的门限值时,关闭所述回收区中的淘汰对象。 所述对象关闭模块30进一步包括
对象顺序检测子模块31 ,用于检测淘汰对象放入回收区中的顺序; 线程控制子模块32,用于在预先设定的范围内调整关闭淘汰对象线程的 数量;关闭子模块33,用于利用所述线程控制子模块调整的线程并行的关闭对 象顺序检测子;f莫块^r测到的顺序优先的淘汰对象;在线程控制子获取模块调 整线程达到最大值获取到回收区中的空间已满时,由调用线程直接关闭当前 从一级Cache里淘汰的对象。
所述Cache异步淘汰的装置,还包括回收区具体为二级Cache,净皮放入 到所述回收区中的淘汰对象等待关闭或重新被回收利用。
本发明通过获取回收区中淘汰对象的占用空间情况并与预先设定的门限 值做比较,所述淘汰对象的占用空间情况大于所述门限值时关闭回收区中的 淘汰对象。以保证调用线程可以高效的并行工作,从而在整体上提高系统的 执行效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发
明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件, 但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案 本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来, 该获取机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端 设备执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此, 任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种Cache异步淘汰的方法,其特征在于,包括以下步骤获取回收区中淘汰对象的占用空间情况;比较所述淘汰对象的占用空间情况与预先设定的门限值;所述淘汰对象的占用空间情况大于所述门限值时,关闭所述回收区中的淘汰对象。
2、 如权利要求1所述Cache异步淘汰的方法,其特征在于,所述回收区 具体为二级Cache,被;故入到所述回收区中的淘汰对象等待关闭或重新被回收 利用。
3、 如权利要求1所述Cache异步淘汰的方法,其特征在于,所述获取回 收区中淘汰对象的占用空间情况的步骤前还包括一级Cache容量已满时,将淘汰对象放置到回收区中。
4、 如权利要求1所述Cache异步淘汰的方法,其特征在于,所述关闭所 述回收区的淘汰对象步骤具体为调整关闭淘汰对象的线程数目,从回收区中移除淘汰对象,并释放所述 淘汰对象占用的资源。所述一定数目的线程之间以并行的方式关闭淘汰对象。
5、 如权利要求1或4所述的Cache异步淘汰的方法,其特征在于,所述 关闭所述回收区中的淘汰对象步骤具体为按照淘汰对象放入回收区中的顺序关闭淘汰顺序优先的对象。
6、 如权利要求4所述的Cache异步淘汰的方法,其特征在于,所述调整 关闭淘汰对象的线程具体为根据需要淘汰对象的数量在预先设定线程数量的范围内调整线程的数量。
7、 如权利要求1所述的Cache异步淘汰的方法,其特征在于,所述回收 区中的空间未满时,由所述线程在后台以异步并行的方式关闭淘汰对象,调 用线程不参与淘汰对象的关闭。所述回收区中的空间已满时,由调用线程直 4妄关闭当前乂人一级Cache里淘汰的对象。
8、 一种Cache异步淘汰的装置,其特征在于,包括获取模块,用于获取回收区中淘汰对象的占用空间情况; 比较模块,用于比较获取模块获取的淘汰对象占用空间情况与预先设定 的门限<直;对象关闭模块,用于当获取模块获取到淘汰对象占用的空间情况大于预 先设定的门限值时,关闭所述回收区中的淘汰对象。
9、 如权利要求8所述Cache异步淘汰的装置,其特征在于,所述对象关 闭模块进一步包括对象顺序检测子模块,用于检测淘汰对象放入回收区中的顺序; 线程控制子模块,用于在预先设定的范围内调整关闭淘汰对象线程的数量;关闭子模块,用于利用所述线程控制子模块调整的线程并行的关闭对象 顺序检测子模块检测到的顺序优先的淘汰对象;在获取模块获取回收区中的 空间未满时,由所述线程在后台以异步并行的方式关闭淘汰对象,调用线程 不参与淘汰对象的关闭。回收区中的空间已满时,由调用线程直接关闭当前 从一级Cache里淘汰的对象。
10、 如权利要求8或9所述Cache异步淘汰的装置,其特征在于,还包括回收区具体为二级Cache,被放入到所述回收区中的淘汰对象等待关闭或 重新被回收利用。
全文摘要
本发明公开了一种Cache异步淘汰的方法和装置,该方法包括以下步骤获取回收区中淘汰对象的占用空间情况;比较所述淘汰对象的占用空间情况与预先设定的门限值;所述淘汰对象的占用空间情况大于所述门限值时,关闭所述回收区中的淘汰对象。本发明通过获取回收区中淘汰对象的占用空间情况并与预先设定的门限值做比较,所述淘汰对象的占用空间情况大于所述门限值时,可以与调用线程异步关闭回收区中的淘汰对象。以保证调用线程可以高效的并行工作,从而在整体上提高系统的执行效率。
文档编号G06F9/50GK101561783SQ200810089980
公开日2009年10月21日 申请日期2008年4月14日 优先权日2008年4月14日
发明者杨含飞 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1