一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种缓存管理方法、系统、设备及介质与流程

2022-07-23 04:59:51 来源:中国专利 TAG:


1.本发明属于计算机领域,具体涉及一种缓存管理方法、系统、设备及介质。


背景技术:

2.由于大数据产业的发展,数据量呈现爆炸性增长态势,而随着摩尔定律的失效,大规模应用、尤其是ai应用在芯片层面都采用了多核乃至众核的并行计算方案。芯片缓存,指的是在芯片上集成的如sram的存储器件,区别于芯片的片外存储器件。最为人所知的缓存概念就是cpu的缓存了,芯片上可用于放置缓存的空间和能支持的功耗都有限,因此,相比于外接的存储器件,芯片缓存容量都非常小,但是速度要快很多。现有体系结构下的cpu,以及其它计算核心控制器,都采用多级的存储架构。以cpu为例,缓存位于顶端,cpu通过缓存与片外存储器进行数据通信,即当cpu要读取一个数据时,首先从cpu缓存中查找,找到就立即读取并送给cpu处理;没有找到,就从速率相对较慢的内存中读取并送给cpu处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。由于缓存的大小必然是远远小于片外存储的,片上核心访问到缓存中没有的数据时,必然需要从片外存储读取到缓存,如果此时缓存已经满了,就需要将缓存中的某些数据清除(数据无修改)或者写回给片外存储(数据被修改过),而者就是缓存替换。因为片上缓存资源有限,片上多个核心的协同工作,往往会有两类缓存,一类是各个核心私有的,只能自己访问的缓存资源,通常比较小,另一类是全局共享或者部分核心之间共享的缓存。共享的方式一方面能提高缓存资源的利用效率,
3.另一方面,不同核心之间通过对共享缓存上的同一数据的操作,也能提高协同效率。由于现代计算的瓶颈往往是数据存取,采用适合的缓存大小和缓存替换策略也成为了提高系统性能的关键。区别于私有缓存的配置可以高度定制化,共享缓存,尤其是包含多种不同类型核心的众核共享缓存,通常只能采用最简单的lru(least rescently used,最近最少使用)替换策略,即当需要替换时,选取最久未被访问的数据替换。而这一简单实现在ai多个并行计算中却难以满足缓存的高效调度问题。


技术实现要素:

4.为解决以上问题,本发明提出了一种缓存管理方法,包括:
5.统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
6.基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
7.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态包括:
8.周期性统计每个核心对缓存的访问次数与发起缓存替换次数;
9.响应于所述访问次数达到第一预定次数,且所述发起缓存替换次数等于所述访问
次数,将对应的核心的状态设定为异常。
10.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
11.响应于对应的核心的状态为异常,限制所述核心对新的缓存发起的缓存替换。
12.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
13.统计每个核心发起缓存替换后未被释放的缓存,并根据访问次数计算未被释放的缓存和访问次数的访问次数占用比;
14.判断所述访问次数占用比是否高于第一预定比例,响应于所述访问次数占用比高于第一预定比例,将对应的核心的状态设定为异常。
15.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
16.统计每个核心发起缓存替换后所占用的缓存空间,并计算每个核心所占用的缓存空间与总体缓存空间的比例,响应于所述比例高于第二预定比例,将对应的核心的状态设定为异常。
17.在本发明的一些实施方式中,方法还包括:
18.统计每个核心访问缓存并发起缓存替换的次数,响应于每个核心访问缓存并发起缓存替换的次数高于第二预定次数,将发起缓存替换次数最大的核心的状态设定为异常。
19.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
20.响应于所述核心所占用的缓存被全部释放,将所述核心的状态设定为正常。
21.本发明的另一方面还提出一种缓存管理系统,包括:
22.计算分析模块,所述计算分析模块配置用于统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
23.核心缓存管理模块,所述核心缓存管理模块配置用于
24.基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
25.本发明的又一方面还提出一种计算机设备,包括:
26.至少一个处理器;以及
27.存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现上述实施方式中任意一项所述方法的步骤。
28.本发明的再一方面一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述实施方式中任意一项所述方法的步骤。
29.本发明针对深度学习中多核并行计算对共享缓存的需求,在lru替换策略的基础上,增加对单个核心访问频次和模式的自动识别,并以此作为依据对共享缓存针对不同核心发起的缓存替换进行分别限制,从而实现共享缓存的动态分配。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
31.图1为本发明一实施例提供的一种缓存管理方法的流程图;
32.图2为本发明一实施例提供的一种缓存管理系统的结构示意图;
33.图3为本发明一实施例提供的一种计算机设备的结构示意图;
34.图4为本发明一实施例提供的一种计算机可读存储介质的结构示意图。
具体实施方式
35.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
36.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
37.在人工智能领域的ai并行计算领域,在ai处理器中的设计中,对共享缓存采用lru的替换策略,在以深度学习为代表的ai计算中,存在优化的空间。
38.首先,用于深度学习的ai多核并行计算中,同一时间段,各个核心之间会有明确的分工,分别进行各个层级的计算,对数据的需求差别很大,且往往是对同一组数据先后进行操作。在计算的大部分时间内,如果每个核心都拥有对整个共享缓存的使用权,很容易出现一组数据被反复读入又替换出的情况,降低缓存使用效率。
39.其次,ai计算使用的模型数据往往都很巨大,单组模型数据远远大于共享缓存大小。也就是说,当某个核心需要读取模型数据时,会不断地读取新数据,造成缓存替换,在这种情况下,它的频繁访问不但将占用大量的共享缓存资源,而且这样的占用不会带来效率的提升,反而影响其它核心对于缓存的使用,从而影响整体性能。
40.如图1所示,为解决上述问题,本发明提出一种缓存管理方法,包括:
41.步骤s1、统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
42.步骤s2、基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
43.在发明的实施例中,核心是指cpu或gpu或ai芯片等处理器的一个处理单元,核心对缓存的行为可以是核心向缓存发起的读写请,即包括读取数据,写入数据,读取数据又包括在缓存中不存在对应的数据时从内存或其他外部存储介质向缓存中写入数据的过程。可以理解为是核心对缓存的增剩改查等操作,根据不同的cpu存在不同的定义。
44.具体地,在步骤s1中,首先需要在共享缓存控制器中为每一个核心设置多个用于记录核心对缓存的行为的计数器,每个计数器对应一种行为。并通过对应的计数器统计核心对缓存的行为,同时根据每个核心对应的多个行为的计数器的值来表示核心对缓存的影响,是指核心对缓存的行为的累计所造成的可见地或可预见的影响,例如某个核心频繁的
向缓存写入数据占用大量的缓存空间。将会造成缓存对其他核心的数据服务能力降低。在其他核心需要数据时频繁地触发缓存数据的替换。导致缓存的有效利用率降低。也就是说所谓核心对缓存的行为并不是指核心对缓存的一次的行为,因为单次的行为除非触发缓存故障,否则几乎对缓存没有影响,因此在本实施例中所谓核心对缓存的行为给缓存的影响是指核心对缓存的行为在一定计量之后的影响,即是根据核心和缓存的常见操作行为对缓存的影响,以对应的计数器的数值叠加的方式表示。
45.进一步,通过共享缓存控制器为每一个核心设置的多个计数器,统计每一个核心对应的缓存行为,当一个计数器或多个计数器的值达到一定数值时,则与预设的阈值进行比较,如果超过设定的阈值,则认为该核心的状态出现异常。如果没有超过设定的阈值,则认为该核心处在调度机制的正常范围内。
46.在步骤s2中,基于上述步骤中确定的核心的状态对核心访问缓存的行为进行管理。具体地如果对应的核心的状态被认定为异常,则限制异常的核心对缓存的使用,包括:,禁止对应的核心对缓存替换行为,防止异常核心对缓存的过度占用。在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态包括:
47.周期性统计每个核心对缓存的访问次数与发起缓存替换次数;
48.响应于所述访问次数达到第一预定次数,且所述发起缓存替换次数等于所述访问次数,将对应的核心的状态设定为异常。
49.在本实施例中,核心对缓存的访问次数是指核心对缓存某个地址空间的数据的读取次数,即核心对缓存获取数据的次数。发起缓存替换的次数是指当缓存中不存在核心所要获取的数据时,从其他存储器读取新数据并将缓存中空闲的空间存储读取的新数据,或者是按照lru算法将缓存中有数据的存储空间中的数据擦除,将新数据保存到已经擦除后的空间。
50.进一步,通过共享缓存控制器周期性地统计每个核心对缓存的访问次数和发起缓存的替换次数。同时对每个核心访问缓存的访问次数与预设的预订次数进行比较,如果某个核心的访问次数超过预订次数,此时判断比较该核心的访问次数与发起缓存替换的次数是否相同,如果相同则将该核心的状态设定为异常。
51.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
52.响应于对应的核心的状态为异常,限制所述核心对新的缓存发起的缓存替换。
53.在本实施例中,如果对应的核心的状态被设定为异常,则通过共享缓存控制器对该核心再次发起的缓存替换请求进行屏蔽,拒绝该核心对缓存新的空间的使用。另外,缓存中的其他数据可以被该缓存正常访问,核心对缓存中某个存储空间的数据更改也被允许,即允许异常核心对缓存中的数据进行改写,但不允许核心再次占用新的存储空间。
54.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
55.统计每个核心发起缓存替换后未被释放的缓存,并根据访问次数计算未被释放的缓存和访问次数的访问次数占用比;
56.判断所述访问次数占用比是否高于第一预定比例,响应于所述访问次数占用比高
于第一预定比例,将对应的核心的状态设定为异常。
57.在本实施例中,通过共享缓存控制器对每一个核心对缓存中对应地址空间的操作进行关联。具体地,如果核心1向缓存发起缓存替换请求,并从内存中读取一定数据保存的到存储空间1中,则将发起存储空间1的缓存替换作为一个缓存替换行为与该核心进行关联绑定(不考虑存储空间1的大小),如果在当前周期内缓存空间1的数据未被释放(即未被lru算法释放),则该核心的未被释放的缓存对应的行为次数为1。具体地,如果在一个周期内,某个核心对缓存发起10次的缓存替换请求,且其缓存替换请求对应的数据未被释放,同时统计的该核心的访问次数为12,即命中2个缓存数据,但由10个需要从内存获取,则其访问次数占用比为10/12约为0.83,则说明该核心获取的数据大量的不存在与缓存中,若任其继续获取则将导致更多的缓存空间的数据被替换,将严重影响缓存对其他核心提供缓存功能的效率,即其他核心缓存的数据将会被该核心大量的缓存替换请求被顶掉,导致其他核心执行的程序无法及时获取到对应的数据,便再次发起缓存替换,导致恶性循环并使得缓存的有效性降低。
58.进一步,将访问次数占用比较高的核心设置为异常核心,并进一步禁止该核心发起新的缓存替换请求。另外由于统计时周期性进行,因此对于缓存数据需求较多的核心,在当前周期内其所发起的缓存替换请求被拒绝后,为保证其缓存数据的需求,将会在下一个统计周期满足其发起缓存替换请的缓存对应的数据,或者是其缓存的数据被该核心读取完释放或者是被其他核心的数据顶替而释放之后,其在当前周期仍然被允许发起缓存替换。这样可以有效避免某个核心疯狂发起缓存替换请求影响其他核心的缓存使用效率。在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
59.统计每个核心发起缓存替换后所占用的缓存空间,并计算每个核心所占用的缓存空间与总体缓存空间的比例,响应于所述比例高于第二预定比例,将对应的核心的状态设定为异常。
60.在本实施例中,由于核心发起缓存替换时向缓存写入的数据大小可能并不相同,因此需要以每个核心对缓存的占用的数据空间大小为依据对核心的状态进行判定。具体地,通过共享缓存控制器对每个核心对缓存中保存的数据的大小进行统计,并进一步计算(动态计算)每个核心所缓存的数据占用缓存的比例,如果某个核心的在缓存中缓存的数据的与总体空间大小的比例搞过预设值,则将该核心的状态设定为异常。
61.进一步,在一些实施例中,第二比例可以根据核心数量平均分配缓存空间。
62.在本发明的一些实施例中,用以判断核心状态的第二比例可以根据每个核心在一定时间内的占用缓存的大小进行动态设定,即当其他核心对缓存的使用(主要根据对应的其他核心在一定时间内的发起的缓存替换请求的比例)较低时,说明其他核心对缓存的使用较低,则可以动态的提高每个核心占用总体缓存的第二比例。
63.在本发明的一些实施方式中,方法还包括:
64.统计每个核心访问缓存并发起缓存替换的次数,响应于每个核心访问缓存并发起缓存替换的次数高于第二预定次数,将发起缓存替换次数最大的核心的状态设定为异常。
65.在本实施例中,周期性统计每个核心访问缓存并发起缓存替换的次数,并将发起缓存替换次数作为判断条件,当对应的核心发起缓存替换册数高于第二次数时,将发起缓
存替换次数最大的核心的状态设定成异常。即以单一的发起缓存替换次数作为核心状态的判断条件。
66.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
67.响应于所述核心所占用的缓存被全部释放,将所述核心的状态设定为正常。
68.在本实施例中,对于状态被设定为异常的核心,当其所发起的缓存替换请求并将成功将对应的数据写入缓存被全部释放时,才将其状态设定为正常。
69.在本发明的一些实施例中,对缓存异常的解除以核心对应的缓存全部释放为条件时,判定的时间范围可以跨越统计周期,也可以是在每个统计周期进行重新判定。
70.本发明针对深度学习中多核并行计算对共享缓存的需求,在lru替换策略的基础上,增加对单个核心访问频次和模式的自动识别,并以此作为依据对共享缓存针对不同核心发起的缓存替换进行分别限制,从而实现共享缓存的动态分配。
71.本发明的另一方面还提出一种缓存管理系统,包括:
72.计算分析模块1,所述计算分析模块1配置用于统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
73.核心缓存管理模块2,所述核心缓存管理模块2配置用于基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
74.本发明的又一方面还提出一种计算机设备,包括:
75.至少一个处理器21;以及
76.存储器22,所述存储器22存储有可在所述处理器21上运行的计算机指令23,所述指令23由所述处理器21执行时实现一种缓存管理方法,包括:
77.统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
78.基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
79.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态包括:
80.周期性统计每个核心对缓存的访问次数与发起缓存替换次数;
81.响应于所述访问次数达到第一预定次数,且所述发起缓存替换次数等于所述访问次数,将对应的核心的状态设定为异常。
82.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
83.响应于对应的核心的状态为异常,限制所述核心对新的缓存发起的缓存替换。
84.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
85.统计每个核心发起缓存替换后未被释放的缓存,并根据访问次数计算未被释放的缓存和访问次数的访问次数占用比;
86.判断所述访问次数占用比是否高于第一预定比例,响应于所述访问次数占用比高于第一预定比例,将对应的核心的状态设定为异常。
87.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
88.统计每个核心发起缓存替换后所占用的缓存空间,并计算每个核心所占用的缓存空间与总体缓存空间的比例,响应于比例高于第二预定比例,将对应的核心的状态设定为异常。
89.在本发明的一些实施方式中,方法还包括:
90.统计每个核心访问缓存并发起缓存替换的次数,响应于每个核心访问缓存并发起缓存替换的次数高于第二预定次数,将发起缓存替换次数最大的核心的状态设定为异常。
91.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
92.响应于所述核心所占用的缓存被全部释放,将所述核心的状态设定为正常。
93.本发明的再一方面一种计算机可读存储介质401,所述计算机可读存储介质401存储有计算机程序402,所述计算机程序被处理器执行时实现一种缓存管理方法,包括:
94.统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态;
95.基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制。
96.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态包括:
97.周期性统计每个核心对缓存的访问次数与发起缓存替换次数;
98.响应于所述访问次数达到第一预定次数,且所述发起缓存替换次数等于所述访问次数,将对应的核心的状态设定为异常。
99.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
100.响应于对应的核心的状态为异常,限制所述核心对新的缓存发起的缓存替换。
101.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
102.统计每个核心发起缓存替换后未被释放的缓存,并根据访问次数计算未被释放的缓存和访问次数的访问次数占用比;
103.判断所述访问次数占用比是否高于第一预定比例,响应于所述访问次数占用比高于第一预定比例,将对应的核心的状态设定为异常。
104.在本发明的一些实施方式中,统计每个核心对缓存的行为,并基于所述行为对缓存的影响为每个核心设定对应的状态还包括:
105.统计每个核心发起缓存替换后所占用的缓存空间,并计算每个核心所占用的缓存空间与总体缓存空间的比例,响应于所述比例高于第二预定比例,将对应的核心的状态设定为异常。
106.在本发明的一些实施方式中,方法还包括:
107.统计每个核心访问缓存并发起缓存替换的次数,响应于每个核心访问缓存并发起缓存替换的次数高于第二预定次数,将发起缓存替换次数最大的核心的状态设定为异常。
108.在本发明的一些实施方式中,基于所述核心的状态按照预设管理策略判断状态异常的核心,并对所述状态异常的核心访问缓存的操作进行限制包括:
109.响应于所述核心所占用的缓存被全部释放,将所述核心的状态设定为正常。
110.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
111.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
112.结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在ram存储器、快闪存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在asic中。asic可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
113.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
114.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
115.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献