一种快速检测离散资源的方法、装置、存储介质及设备与流程

文档序号:33000860发布日期:2023-01-18 01:12阅读:61来源:国知局
一种快速检测离散资源的方法、装置、存储介质及设备与流程

1.本公开涉及数据处理领域,具体地涉及一种快速检测离散资源的方法、装置、存储介质及设备。


背景技术:

2.为了高效的处理任务,处理器需要对硬件资源进行调度,通常资源分为许多组,每组有多个格组成,一个或多个连续的格被定义为孔(hole),如图1所示。传统上,用最大孔的大小(max_hole_size)代表该组资源的容量。
3.由于每次任务执行时长不同,经多次分配/释放后,资源的使用数组呈现随机状态。容量检测要判断随机数组是否存在n个大小为s的孔,是一个困难问题。现有技术为解决这个问题,将其简化为单次请求的所有孔必须连续分配,等价于是否存在一个大小为n*s的孔,即比较n*s与max_hole_size即可。然而,很多本可立即分配的情况,被判为失败,损害了整体资源调度的能力。
4.例如,假设资源请求是2个孔,每个孔大小为2格。传统方案需要找到一个大小为2*2 = 4格的孔,这在图1中无法找到,因此会被判决为容量检测失败。但实际上,图1中有2个孔,一个大小为2,另一个大小为3,完全能满足该请求。因此,如何提供一种高效的资源调度方法,成为亟待解决的问题。


技术实现要素:

5.本公开的目的在于,针对现有技术中存在的问题,提供一种快速检测离散资源的方法、装置、存储介质及设备,提高快速检测离散资源的效率。
6.根据本公开的一个方面,提出一种快速检测离散资源的方法,包括如下步骤:容量检测,检测是否存在满足本次请求的资源组,若是,在所述资源组中分配本次请求的资源,更新所述资源组分配后的使用状态,计算更新后该组的容量;若否,则继续检测;其中,所述容量是指每个资源组的可用资源数量,数组max_hole_num(i)为资源组的特征,其中i = 1~n,表示该组资源最多存在mi=max_hole_num(i)个大小为i的孔,其中孔表示一个或多个连续的格,其中格为资源调度的最小单元,n表示该组资源的总格数;所述检测是否存在满足本次请求的资源组,具体为对于每个资源组,若本次请求为n个大小为i的孔,当max_hole_num(i) 》= n时,则表示该组满足本次请求,否则表示该组不满足本次请求,其中,n表示单次请求的孔的个数,单次可请求1个或多个孔,若单次请求多个孔,则每个孔的大小相同。
7.在一些实施例中,快速检测离散资源的方法还包括,其特征在于,其中资源组的资
源使用状态用比特数组idle(i)表示,i的取值范围为[0,n-1]表示共有n格,若idle(i)=1则表示该格可分配,若idle(i)=0则表示该格已被占用不可分配。
[0008]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,新分配的孔紧邻已被占的区域。
[0009]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,所述资源调度还包括资源的释放,相应的更新资源组释放后的使用状态,并计算更新后该组的容量。
[0010]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,所述更新所述资源组分配后的使用状态具体为,对于一个时钟周期内分配1个新孔情况的资源状态计算如下:分配前,该组资源分为三段,高位段和低位段不受本次分配影响,中间段为受本次分配影响的孔大小为x1,经本次分配后,剩余大小为p1,设本次分配孔大小为hole_size,则有;设该组分配前特征值为max_hole_num(i),分配后该组特征值为max_hole_num(i)’,则以下公式成立:其中,表示数组rom_hole_num(i,j)的值,其中rom_hole_num(i,j)的值表示,若请求的孔大小为j,则对于每个大小为i的孔可分配大小为j的孔数的最大值,其中,计算p1的过程具体为:设待检测资源组为idle[n-1:0],设数组sample_p1[k]与所述待检测资源组大小相同,其中k的取值范围为[0,n-1],表示sample_p1[k]中有k个需要关心的位置且该位置的值为0;sample_p1[k]与idle[n-1:0]做逻辑或运算得到result_p1[k],并将result_p1[k]所有元素值做逻辑与运算得到exist_p1[k],并按k的取值从大到小顺序检测exist_p1[k]的值,按所述顺序所述exist_p1[k]值最先为1时对应的k值即为p1的值。
[0011]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,所述更新所述资源组分配后的使用状态具体为,对于一个时钟周期内释放1个孔的资源情况的资源状态计算如:分配前,该组资源分为三段,高位段q1和低位段q2不受本次释放影响,释放的孔位于中间段,设释放的孔大小为hole_size1,令y1= q1 + q2 + hole_size1,释放时的公式为:其中,计算q1、q2的过程与计算所述p1的过程相同;其中,若释放的中间段为整组资源最后被占的部分,则max_hole_num(i) = rom_hole_num(n,i)。
[0012]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,所述更新所述资
源组分配后的使用状态具体为,对于一个时钟周期内分配1个孔的资源和释放1个孔的资源同时存在的情况的资源状态计算如下:分配1个孔资源和释放1个孔资源可以分别计算,公式为:。
[0013]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,所述资源组为环形数组。
[0014]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,一次资源请求的容量检测在1个时钟周期内完成,每个时钟周期处理1个孔的资源分配,并可同时处理1个孔的资源释放。
[0015]
在一些实施例中,快速检测离散资源的方法还包括,其特征在于,若有多个资源组满足请求,根据优先级、负载、轮换次序仲裁出本次被分配的资源组。
[0016]
根据本公开的另一个方面,提出一种快速检测离散资源的装置;包括:容量检测单元,用于检测是否存在满足本次请求的资源组,分配单元,用于检测结果若是,在所述资源组中分配本次请求的资源,检测结果若否,则继续检测,第一更新单元,用于更新所述资源组分配后的使用状态,计算单元,用于计算更新后该组的容量,其中,所述容量是指每个资源组的可用资源数量,数组max_hole_num(i)为资源组的特征,其中i = 1~n,表示该组资源最多存在mi=max_hole_num(i)个大小为i的孔,其中孔表示一个或多个连续的格,其中格为资源调度的最小单元,n表示该组资源的总格数;所述检测是否存在满足本次请求的资源组,具体为对于每个资源组,若本次请求为n个大小为i的孔,当max_hole_num(i) 》= n时,则表示该组满足本次请求,否则表示该组不满足本次请求,其中,n表示单次请求的孔的个数,单次可请求1个或多个孔,若单次请求多个孔,则每个孔的大小相同。
[0017]
本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的快速检测离散资源的方法中的步骤。
[0018]
本技术实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的快速检测离散资源的方法中的步骤。
[0019]
本公开提供一种快速检测离散资源的方法、装置、存储介质及电子设备,重新定义资源组特征,针对请求的孔的大小计算资源组中各个孔可以分配该请求的孔的最大孔数,并于请求的孔数进行比较得出容量检测是否成功;本公开充分利用所有离散的资源,准确判断对于任意合法的请求,容量检测是否通过,提高了计算调度的效率。
附图说明
[0020]
下面结合附图,通过对本公开的具体实施方式详细描述,将使本公开的技术方案及其它有益效果显而易见。
[0021]
图1为资源组中孔的定义示意图。
[0022]
图2为本技术实施例提供的快速检测离散资源方法流程示意图。
[0023]
图3为本技术实施例提供的分配1个孔的资源状态示意图。
[0024]
图4为本技术实施例提供的分配1个孔后的计算新孔过程示意图。
[0025]
图5为本技术实施例提供的分配1个孔后的计算新孔过程的另一示意图。
[0026]
图6为本技术实施例提供的释放1个孔的资源状态示意图。
[0027]
图7为本技术实施例提供的释放1个孔后计算新孔过程的示意图。
[0028]
图8为本技术实施例提供的同时存在分配1个孔和释放1个孔情况下处理时序示意图。
[0029]
图9为本技术实施例提供的快速检测离散资源装置示意图。
[0030]
图10本技术实施例提供的电子设备的一种结构示意图。
具体实施方式
[0031]
在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的
“ꢀ
一种”、
“ꢀ
所述”和
“ꢀ
该”也旨在包括多数形式,除非上下文清楚地表示其他含义。本公开的说明书和权利要求书以及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排它的包含。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0032]
以下将分别对本技术实施例提供的一种快速检测离散资源的方法、装置、存储介质及电子设备进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
[0033]
实施例一:本公开实现了一种快速检测离散资源的方法。具体地,请参阅图2。
[0034]
s0、容量检测,检测是否存在满足本次请求的资源组。
[0035]
在指令执行期间,硬件资源总是有限的,合理的调度能提高硬件资源的利用效率,能让硬件尽量发挥100%的能力。在不同的时钟周期,硬件资源是可以复用的,不同的任务执行时所需资源也不一样,每次分配资源时,处理器需要检测可用资源的容量,以判断是否可以满足该次请求,是否接收该任务。
[0036]
在一些实施例中,为了不影响流水线的整体吞吐,容量检测需要在一个时钟周期内完成,越快越好。
[0037]
在一些实施例中,资源调度中,资源被分为许多组,某组资源的使用状态用比特数组:idle(i)表达,一组资源一共有n格(slot),即i的取值范围为[0,n-1]。若某格值为1则代表该资源可用,为0则代表该资源已被占。连续为1的一个或多个格 ,被定义为孔(hole)。如
图1所示,图中所示的一组资源有slot0、slot1、slot2、slot3、slot4、slot5、slot6及slot7共8个格,其中slot0-slot2的值均为1、slot5-slot6的值也均为1,即该组资源有两个孔。
[0038]
在一些实施例中,每组资源的特征值不再是最大孔大小,而是一个数组:max_hole_num(i), i = 1~n,代表对大小为i的孔,该组资源最多存在max_hole_num(i)个。实施例中,根据每个时钟周期的资源分配/释放,不断更新该数组。
[0039]
在一些实施例中,为快速更新max_hole_num,需事先准备一个二维常数数组rom_hole_num(i,j),i和j取值范围为[1,n]。数学含义是对于1个大小为i的孔,若请求的孔大小为j,则存在的孔数最大为rom_hole_num(i,j);数学上,其值为floor(i/j)。
[0040]
所述检测是否存在满足本次请求的资源组,具体为对于每个资源组,若本次请求为n个大小为i的孔,当max_hole_num(i) 》= n时,则表示该组满足本次请求,否则表示该组不满足本次请求,其中,n表示单次请求的孔的个数,单次可请求1个或多个孔,若单次请求多个孔,则每个孔的大小相同。
[0041]
根据定义可得,初始化后,max_hole_num(i) = rom_hole_num(n,i)。此后,每个时钟周期若有操作,则需更新max_hole_num。每个时钟周期的操作有3种可能情况,分别是:1)只需分配1个孔2)只需释放1个孔3)同时需分配1个孔,及释放另1个孔(2孔必定互不重叠)为避免分配后浪费资源(产生气泡),新分配的孔必须紧贴已被占的区域,顶或底贴住均可,以下均以底贴住被占区域为例。
[0042]
对于上述第1)种可能情况,如图3所示,图3为分配1个孔的资源状态。分配这个动作,把资源组分为了三段,其中高位段和低位段均为未触及,不受本次分配影响。只需考虑中间这段,发生了什么变化,如图3所示中间段为一个大孔,大小为x1,经本次分配后,剩余大小为p1。设本次分配孔大小为hole_size,则有x1 = p1 + hole_size。
[0043]
因为三段资源中,两段未触及,故max_hole_num的变化只能由中间段引起。中间段分配前后的变化是,少了一个大小为x1的孔,多了一个大小为p1的孔。设分配前特征值为max_hole_num(i),分配后特征值为max_hole_num(i)’,则以下公式成立:max_hole_num(i)
’ꢀ
= max_hole_num(i)
ꢀ‑ꢀ
rom_hole_num(x1,i)+ rom_hole_num(p1,i)因hole_size已知,只需求得 p1即可得x1。图4为求p1的过程。p1的可能范围是[0,n-1],图4中每1行尝试的p1值分别为1,2,

n-1,每一行代表了一个可能的新的孔的大小,需要找出最大的那个。在执行时,处理器可以并行执行各行操作,其中sample_p1数组中需要关注的位置,该位置对应的值为0,其余位置值为1,idle[n-1:0]为待检测资源组,idle[n-1:0]与sample_p1大小相同,如图4所示,sample_p1[k]与idle[n-1:0]做逻辑或运算得到result_p1[k]。
[0044]
如图5所示,将result_p1[k]所有元素值做逻辑与运算(图5中“&”表示逻辑与运算的符号)得到exist_p1[k],并按k的取值从大到小顺序检测exist_p1[k]的值,按所述顺序所述exist_p1[k]值最先为1时对应的k值即为p1的值。
[0045]
对于上述第2)种可能情况,如图6所示为释放1个孔的资源状态。同样本组资源分为三段,高位段和低位段均为未触及,不受影响。中间段在释放前,高分段是一大小为q1的
孔,低分段是一大小为q2的孔,释放的孔为中分段,将3个分段连为大小为y1的大孔。
[0046]
求解高分段q1大小的过程,与上述情况1)类似,在此不再赘述。求解q2大小的过程,如图7所示。
[0047]
类似地,普通情况下,y1 = q1 + q2 + hole_size,释放时的公式为:max_hole_num(i)
’ꢀ
= max_hole_num(i)
ꢀ‑ꢀ
rom_hole_num(q1,i)
‑ꢀ
rom_hole_num(q2,i)+ rom_hole_num(y1,i)对释放1个孔的情况,有一特殊情况,即所释放的中分段,为整组资源最后被占的部分,释放后整组资源回到初始状态,此时q1和q2重合,上式不成立(y1甚至大于n)。对于这种特殊情况,则直接有max_hole_num(i) = rom_hole_num(n,i)。
[0048]
对于上述第3)种可能情况,当分配和释放同时存在时,因在同一周期内,分配和释放的孔必定互不重叠,因此可分别独立计算,最终公式为:max_hole_num(i)
’ꢀ
= max_hole_num(i)
ꢀ‑ꢀ
rom_hole_num(x1,i)+ rom_hole_num(p1,i)
‑ꢀ
rom_hole_num(q1,i)
‑ꢀ
rom_hole_num(q2,i)+ rom_hole_num(y1,i)因为此时有分配,故资源不可能在该周期后为全部可用,也无需考虑上述情况2)中的特殊情形。
[0049]
分配和释放同时计算的时序并不紧张,可以将过程视为先分配后释放,但释放的计算无需等待的最终结果,只需将资源数组idle(t)的被分配孔用与操作设为0(变为idle(t’)),之后便可扫描释放后的q1,q2。时序如图8所示,可见分配和释放的扫描在时序上几乎是重叠的。
[0050]
上述实施例支持资源回卷(wrap,即资源组可首尾相接形成一个环)的情况,如果资源不支持回卷,对于上述实施例,只需在扫描时剔除回卷的行即可。
[0051]
s1、若是,在所述资源组中分配本次请求的资源,若否,则继续检测。
[0052]
在一些实施例中,若有多个资源组满足请求,根据优先级、负载、轮换次序等多个因素仲裁出本次被分配的组。
[0053]
s2、更新所述资源组分配后的使用状态。
[0054]
s3、计算更新后该组的容量。
[0055]
在一些实施例中,所述资源调度还包括资源的释放,相应的更新资源组释放后的使用状态,并计算更新后该组的容量。
[0056]
在一些实施例中,一次资源请求的容量检测在1个时钟周期内完成,每个时钟周期处理1个孔的资源分配,并可同时处理1个孔的资源释放。
[0057]
实施例二请参阅图9,图9为本技术实施例提供的用于快速检测离散资源的装置的结构示意图。该装置可以包括容量检测单元901,分配单元902,第一更新单元903,计算单元904。
[0058]
容量检测单元901,用于检测是否存在满足本次请求的资源组,分配单元902,用于检测结果若是,在所述资源组中分配本次请求的资源,检测结
果若否,则继续检测,第一更新单元903,用于更新所述资源组分配后的使用状态,计算单元904,用于计算更新后该组的容量,其中,所述容量是指每个资源组的可用资源数量,数组max_hole_num(i)为资源组的特征,其中i = 1~n,表示该组资源最多存在mi=max_hole_num(i)个大小为i的孔,其中孔表示一个或多个连续的格,其中格为资源调度的最小单元,n表示该组资源的总格数;所述检测是否存在满足本次请求的资源组,具体为对于每个资源组,若本次请求为n个大小为i的孔,当max_hole_num(i) 》= n时,则表示该组满足本次请求,否则表示该组不满足本次请求,其中,n表示单次请求的孔的个数,单次可请求1个或多个孔,若单次请求多个孔,则每个孔的大小相同。
[0059]
实施例三相应的,本技术实施例还提供一种电子设备,该电子设备可以为终端或者服务器。如图10所示,图10为本技术实施例提供的电子设备的结构示意图。
[0060]
该电子设备1000包括有一个或者一个以上处理核心的处理器1001、有一个或一个以上计算机可读存储介质的存储器1002及存储在存储器1002上并可在处理器上运行的计算机程序。其中,处理器1001与存储器1002电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0061]
处理器1001是电子设备1000的控制中心,利用各种接口和线路连接整个电子设备1000的各个部分,通过运行或加载存储在存储器1002内的软件程序(计算机程序)和/或单元,以及调用存储在存储器1002内的数据,执行电子设备1000的各种功能和处理数据,从而对电子设备1000进行整体监控。
[0062]
在本技术实施例中,电子设备1000中的处理器1001会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器1002中,并由处理器1001来运行存储在存储器1002中的应用程序,从而实现各种功能。
[0063]
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0064]
可选的,如图10所示,电子设备1000还包括:快速检测离散资源模块1003、通信模块1004、输入单元1005以及电源1006。其中,处理器1001分别与快速检测离散资源模块1003、通信模块1004、输入单元1005以及电源1006电性连接。本领域技术人员可以理解,图10中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0065]
快速检测离散资源模块1003可用于实现对计算资源的调度。
[0066]
通信模块1004可用于与其他设备通信。
[0067]
输入单元1005可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0068]
电源1006用于给电子设备1000的各个部件供电。可选的,电源1006可以通过电源管理系统与处理器1001逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管
理等功能。电源1006还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0069]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0070]
实施例四本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于计算机可读存储介质中,并由处理器进行加载和执行。
[0071]
为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的快速检测离散资源方法中的步骤。例如,该计算机程序可以执行上述实施例的方法步骤,以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0072]
其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
[0073]
由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种快速检测离散资源方法中的步骤,因此,可以实现本技术实施例所提供的任一种快速检测离散资源方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0074]
以上对本技术实施例所提供的一种快速检测离散资源方法、装置、计算机可读存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1