计算机存储管理方法和装置、电子设备和存储介质转让专利

申请号 : CN201911361233.3

文献号 : CN110750363B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 不公告发明人

申请人 : 中科寒武纪科技股份有限公司

摘要 :

本申请提供了一种计算机存储管理方法和装置、电子设备以及非瞬时性计算机可读存储介质;其中,电子设备包括处理器和存储器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行计算机存储管理方法。本申请提供的计算机存储管理方法和装置可基于深度强化学习的思想,采用深度估值网络,对系统在处于某种状态下,进行数据存储管理,即为数据存储请求分配存储资源。这种方式尤其适用于在运算过程中的数据缓存管理。

权利要求 :

1.一种计算机存储管理方法,其特征在于,所述方法包括:步骤A:确认当前状态信息,所述当前状态信息包括当前可用的存储资源信息和当前待处理的存储请求集合;

步骤B:通过深度估值网络,从预设的动作集中选取与所述当前状态信息相对应的符合预设条件的动作,并执行所选取的动作,其中,所述预设的深度估值网络为在强化学习算法中用于表示估值函数的深度神经网络;其中所述深度神经网络使用经验回演的方法,采样和训练分离,使用off-policy的策略训练,每次采样的结果放回经验池,训练时从经验池中抽取样本进行训练,样本能够重复利用;

步骤C:在执行所选取的动作之后,当当前待处理的存储请求集合已分配完成,根据分配后的可用存储资源信息以及下一个待处理的存储请求集合,更新所述当前状态信息;以及重复执行上述步骤A至步骤C,直至为待处理的存储请求集合序列中的所有待处理的存储请求集合分配完成,其中,所述预设的动作集包括存储资源分配、层级内的存储资源整理以及跨层级的存储数据迁移;

其中,所述存储资源包括至少一个层级的存储块,所述存储块是大小可变的。

2.根据权利要求1所述的方法,其特征在于,所述在执行所选取的动作之后,当当前待处理的存储请求集合未分配完成时,则更新所述当前状态信息并重复执行上述步骤B,直至当前待处理的存储请求集合分配完成。

3.根据权利要求2所述的方法,其特征在于,通过所述深度估值网络,从预设的动作集中选取与所述当前状态信息相对应的符合预设条件的动作,包括:确定所述预设的动作集中的动作相对于所述当前状态信息的分值;以及选取与所述当前状态信息相对应的分值最高的动作。

4.根据权利要求3所述的方法,其特征在于,所述预设的动作集中的动作相对于所述当前状态信息的分值包括以下至少一项:每分配成功一个存储块所获得的与所述存储块大小正相关的奖励;

每分配完成一个待处理的存储请求集合所获得的第一预设奖励;

分配完成所有待处理的存储请求集合所获得的第二预设奖励;

每次进行层级内的存储资源整理时所受到的与所整理的存储块的大小正相关的惩罚;

每次进行跨层级的存储数据迁移时所受到的与所迁移的数据大小正相关的惩罚。

5.根据权利要求1所述的方法,其特征在于,所述存储块的层级包括以下至少一种:位于处理器中的内核上的核内存储块;

位于所述处理器中多个内核之间的共享存储块;

位于所述处理器中的公共存储块;

位于所述处理器外的片外存储块。

6.根据权利要求1-4中任一项所述的方法,其特征在于,所述待处理的存储请求集合序列中的任意相邻的两个待处理的存储请求集合的交集不为空集。

7.根据权利要求1-4中任一项所述的方法,其特征在于,所述深度估值网络根据深度强化学习训练得到。

8.一种电子设备,其特征在于,包括:

处理器;存储器,存储有计算机程序,

其中,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-7中任一项所述的方法。

9.一种非瞬时性计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行根据权利要求1-7中任一项所述的方法。

说明书 :

计算机存储管理方法和装置、电子设备和存储介质

技术领域

[0001] 本申请涉及计算机领域,具体涉及一种计算机存储管理方法和装置、电子设备和非瞬时性计算机可读存储介质。

背景技术

[0002] 存储管理是计算机系统中常见的问题。随着计算机技术的发展,在数据处理的过程中,有大量的数据需要进行存储或缓存。
[0003] 在现有技术中,在编译器中的寄存器分配场景下,具有一种常规的存储管理方式。该存储管理方式将大量的程序变量分配到有限的寄存器中,使程序执行过程中尽量少的对内存进行读写,提高程序运行效率。寄存器分配策略有很多种,可以基于函数中的基本程序块做局部的寄存器分配,也可以在整个函数中做全局的寄存器分配,甚至可以基于整个程序的函数调用图做函数间交互的寄存器分配,但所有策略的目的是统一的,就是为了减少数据在寄存器和内存间的换入和换出。寄存器分配同样有多种算法,如图着色(graph coloring)算法,线性扫描(linear-scan)算法等等。良好的寄存器分配策略可以大大减少程序的访存次数,从而提高程序运行效率。
[0004] 然而,这种存储管理方式处理的存储单位是固定大小的,即一个寄存器粒度的管理,无法适用于可变大小存储块的分配和释放。而且,图着色问题是一个困难的计算问题,因此图着色的寄存器分配技术时间复杂度较高,无法适用于对于响应速度敏感的存储管理场景。
[0005] 在计算机操作系统内存分配管理场景下,具有另一种常规的存储管理方式。对于操作系统中的每一个进程的连续的动态内存分配请求(malloc)和内存释放请求(free),操作系统会在计算机的内存空间中分配和释放对应大小的空间。每块空间的大小是不固定的,依赖于请求所需的存储空间大小。存储管理系统需要尽可能的减少分配过程中内存碎片和浪费的出现,以保证后续的分配。对于单进程环境下的内存管理算法,常见的有首次适应、循环首次适应、最佳适应、最差适应等等。例如Linux内存管理中伙伴系统使用以2^i页为单位的最佳适应分配算法。对于多进程环境下的内存管理有固定分配局部置换、可变分配全局置换、可变分配局部置换等策略。
[0006] 然而,这种存储管理方式处理的是即时的内存分配和释放请求,无法针对已知的存储块的申请和释放序列进行存储分配的优化。而且,该存储管理方式对存储块的管理都是粗粒度的,无法适用于片上存储资源稀少,需要进行细粒度的分配,释放以及使用优化的场景。此外,该存储管理方式无法处理多层级的存储管理。

发明内容

[0007] 基于此,本申请提供了一种计算机存储管理方法,包括:
[0008] 步骤A:确认当前状态信息,所述当前状态信息包括当前可用的存储资源信息和当前待处理的存储请求集合;
[0009] 步骤B:根据所述当前状态信息,利用预设的深度估值网络,为当前待处理的存储请求集合分配存储资源,其中所述预设的深度估值网络为在强化学习算法中用于表示估值函数的深度神经网络;
[0010] 步骤C:根据分配后的可用存储资源信息以及下一个待处理的存储请求集合,更新所述当前状态信息;以及
[0011] 重复执行上述步骤A至步骤C,直至为待处理的存储请求集合序列中的所有待处理的存储请求集合分配完成。
[0012] 根据本申请的另一方面,提供了一种计算机存储管理装置,包括:
[0013] 状态确认单元,确认当前状态信息,所述当前状态信息包括当前可用的存储资源信息和当前待处理的存储请求集合;
[0014] 资源分配单元,根据所述当前状态信息,利用预设的深度估值网络,为当前待处理的存储请求集合分配存储资源;
[0015] 状态更新单元,根据分配后的可用存储资源信息以及下一个待处理的存储请求集合,更新所述当前状态信息;以及
[0016] 控制单元,控制所述状态确认单元、所述资源分配单元、所述状态更新单元重复处理,直至为待处理的存储请求集合序列中的所有待处理的存储请求集合分配完成。
[0017] 根据本申请的另一方面,提供了一种电子设备,包括:
[0018] 处理器;
[0019] 存储器,存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述的方法。
[0020] 根据本申请的另一方面,提供了一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当所述指令被处理器执行时,使得所述处理器执行如上所述的方法。
[0021] 本申请提供的计算机存储管理方法和装置可基于深度强化学习的思想,采用深度估值网络,对系统在处于某种状态下,进行数据存储管理,即为数据存储请求分配存储资源。由于系统的可用存储资源是实时发生变化的,数据存储请求也实时发生变化,而这种深度估值网络正适于处理这种大小可变的存储块的分配和释放。而且,这种方式能够针对已知的存储资源和存储请求给出存储分配的全局优化,而不是只针对处理的当前请求和剩余内存空间排布进行固定策略的局部优化。这种方式尤其适用于在运算过程中的数据缓存管理。

附图说明

[0022] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1示出了根据本申请一个实施方式的计算机存储管理方法的流程图;
[0024] 图2示出了强化学习的基本模型原理图;
[0025] 图3示出了根据本申请一个实施方式为当前待处理的存储请求集合分配存储资源的流程图;
[0026] 图4示出了根据本申请一个实施方式的不同层级存储块的示意图;
[0027] 图5示出了根据本申请一个实施方式的计算机存储管理装置的示意图;
[0028] 图6示出了根据本申请一个实施方式的电子设备的示意图。

具体实施方式

[0029] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0030] 应当理解,本申请的权利要求、说明书及附图中的术语 “第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本申请的说明书和权利要求书中使用的术语“包括”和 “包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0031] 还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。如在本申请说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0032] 在本申请中,所述处理器,包括专用处理器,是针对特定应用或者领域的处理器。例如,图形处理器(Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的专用处理器。又例如,神经网络处理器(Neural Processing Unit,缩写NPU),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
[0033] 在本申请中所述的深度强化学习(Deep Reinforcement Learning),指的是将深度学习(Deep Learning)的感知能力和强化学习(Reinforcement Learning)的决策能力相结合,是一种更接近人类思维方式的方法。
[0034] 图1示出了根据本申请一个实施方式的计算机存储管理方法的流程图。如图1所示,该方法100可包括步骤S110、S120、S130、S140。
[0035] 在步骤S110中,确认计算机系统的当前状态信息s(state)。该当前状态信息s可包括当前可用的存储资源信息S(Source)和当前待处理的存储请求集合D(Demand)。对于计算机系统,当前可用的存储资源信息S可表示该系统内当前未被占用的存储资源的信息,即可用于分配给数据存储请求以存储数据的存储资源的信息。在某一时刻,可将当前可用的存储资源信息S表示为集合的形式S={S1, S2, …, Sn},在该集合S中,S1, S2, …, Sn分别表示不同的空闲资源块。其中,每个资源块Si包括用于存储数据的一段物理存储空间,例如,在某个存储器上从地址XXX至地址YYY的一段存储空间。当前待处理的存储请求集合D可包含该系统内当前所有数据存储请求,可将当前待处理的存储请求集合D表示为D={d1, d2, …, dm},在该集合D中,d1, d2, …, dm分别表示不同的数据存储请求。那么,S和D应满足S ≥ D,也就是说,所有可用存储资源之和应大于或等于所有数据存储请求之和。
[0036] 在步骤S120中,根据当前状态信息s,利用深度估值网络,为当前待处理的存储请求集合D分配存储资源。可选地,该深度估值网络是通过深度强化学习训练得到的。对于深度强化学习算法,其是将深度学习与强化学习相结合的算法。
[0037] 图2示出了强化学习的基本模型原理图。如图2所示,Q-Learning(QL)是强化学习算法中基于估值(value-based)的算法,其中的Q即为Q(s, a),就是在某一时刻的s状态s下,采取动作a能够获得收益的期望,环境(Environment)会根据操作主体(agent)的动作(action)反馈相应的回报(reward),所以该算法的主要思想就是将状态state与动作action构建成一张表Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。Deep Q-Learning(DQN)技术是Q-Learning的变体,是深度强化学习的一种算法。DQN与QL的区别在于,在QL算法中是学习一个确定的二维表,每个表项对应某个状态下某个动作的估计的奖励值。但对于DQN来说,其一方面的核心思想是将这个二维表转化为一个估值函数,该函数的输入就是某个状态和某个动作,输出就是一个值,也就是所估计的奖励值(如果该值为负,则亦可称为惩罚值),相当于QL中某个表项的值。另一方面的核心思想是使用深度神经网络(Deep Neural Network,即DNN)来表示这个估值函数,即深度估值网络。该网络的输入就是某个状态和某个动作,输出就是奖励值的估计。
[0038] DQN采用深度估值网络的好处主要是,深度学习表达能力强,训练方法完善,可以很好的学习到估值函数,比QL算法的Q-table强大得多。另一方面的好处是,由于系统的当前状态信息s是可变长度的,因此使用DQN替代QL才能够实现该存储管理方法,即使用深度神经网络(例如,lstm网络和gru网络等循环神经网络)来学习估值函数,并且可以使用随机的初始资源集合和存储请求集合,或者从真实的软件行为中抓取初始资源集合和存储请求集合进行训练。而且可使用循环神经网络作为深度神经网络,这样可以很好的规避状态和动作空间很大,Q-table难以表示的问题。传统的QL的训练要重复采样很多遍,时间复杂度很高,而DQN的训练方法,是使用经验回演的方法,即采样和训练分离,使用off-policy的策略训练,每次采样的结果可以放回经验池,训练时从经验池中抽取样本进行训练,样本可以重复利用,这样大大提高了训练的效率。而且,抽取的样本可以减少训练使用的样本间的相关性,也使得神经网络参数的更新更有效率。另一方面,DQN在训练时除了估值网络(即模拟估值函数的DNN)外,引入了结构相同而参数不同的目标网络,目标网络的参数延迟更新,用目标网络来单独处理时间差分算法中偏差,这样可以打破训练的相关性。
[0039] 基于以上描述,在某一时刻,系统处于某个当前状态时(即,某种可用存储资源和某些数据存储请求构成集合),可利用基于深度强化学习算法预设的深度估值网络(该网络是预先训练好的),确定当前要做出的动作,从而为当前待处理的存储请求集合D分配存储资源。
[0040] 在步骤S130中,根据经历了上述分配后的可用存储资源信息S’以及下一个待处理的存储请求集合D’,将当前状态信息更新为s’。当在步骤S120中为集合D中的所有数据存储请求分配了存储资源后,则系统的可用存储资源发生变化,即从S变为S’,而在下一个时间片段中,所有数据存储请求会构成下一个待处理的存储请求集合D’。因此,可基于此,将系统的当前状态信息更新为s’。为了避免混淆,在此需要说明的是,在本申请中,s表示计算机系统的当前状态信息,S表示当前可用的存储资源信息,D表示当前待处理的存储请求集合,其中s包含S和D。
[0041] 在步骤S140中,判断系统中在时序上待处理的存储请求集合序列中的所有待处理的存储请求集合是否均已分配完成。在时序上,不同的时间片段中,系统中会出现不同的数据存储请求,它们会构成不同的存储请求集合。如果已分配完成,则结束此存储管理过程。如果否,则返回至步骤S110,重复执行步骤S110至S130,直至将所有待处理的存储请求集合分配完成。
[0042] 由此,可基于深度强化学习的思想,采用深度估值网络,对系统在处于某种状态下,进行数据存储管理,即为数据存储请求分配存储资源。由于系统的可用存储资源是实时发生变化的,数据存储请求也实时发生变化,而这种深度估值网络正适于处理这种大小可变的存储块的分配和释放。而且,这种方式能够针对已知的存储资源和存储请求给出存储分配的全局优化,而不是只针对处理的当前请求和剩余内存空间排布进行固定策略的局部优化。这种方式尤其适用于在运算过程中的数据缓存管理。
[0043] 而且,现有技术的方案是对存储资源即时地分配和释放,指的是来一个请求处理一个请求,即只针对处理的当前请求和剩余内存空间排布进行固定策略的局部优化,这样具有很大的局限性。然而,如果系统已知所有存储块的申请和释放的序列,则可以实现全局的优化。
[0044] 图3示出了根据本申请一个实施方式为当前待处理的存储请求集合分配存储资源的流程图。如图3所示,上述步骤S120可包括子步骤S121、S122、S123。在子步骤S121中,通过深度估值网络,从预设的动作集A中选取与当前状态信息s相对应的符合预设条件的动作(例如,所述符合预设条件的动作是分值最高的动作a),并执行所选取的动作。如上所述,深度估值网络的输入就是某个状态和某个动作,输出就是奖励值的估计。因此,对于系统的当前状态,可以通过深度估值网络获知相应的分值最高的动作,并执行该动作。那么,该子步骤S121可包括:确定预设的动作集A中的动作相对于当前状态信息的分值,并且选取与当前状态信息相对应的分值最高的动作。对于预设的动作集A,将在下文中进行详细描述。
[0045] 随后,在子步骤S122中,确认当前待处理的存储请求集合D是否已分配完成。如果经历了上述子步骤S121中执行的动作后,已对存储请求集合D中的所有数据存储请求分配完成,则结束该步骤S120。否则,如果未分配完成,则进入子步骤S123。
[0046] 在子步骤S123中,更新系统的当前状态信息。如果当前待处理的存储请求集合D未分配完成,则系统有可能执行了诸如存储资源整理的动作,那么该动作有可能引起当前可用的存储资源S的变化,因此需要更新当前状态信息,并随后回到子步骤S121,重复执行该过程,直至对存储请求集合中的所有数据存储请求分配完成。
[0047] 由此,利用深度强化学习算法的深度估值网络,可以对系统的任意当前状态,从预设的动作集中给出一个相应分值最高的动作,该动作是全局优化的结果,而不是局部优化,因此更加有利于系统的存储管理优化。
[0048] 根据本申请一个实施方式,系统的存储资源可包括至少一个层级的存储块。例如,存储块的层级由高至低可包括:位于处理器中的内核上的核内存储块、位于处理器中多个内核之间的共享存储块、位于处理器中的公共存储块、位于处理器外的片外存储块。根据一个实施例,此处所述的处理器可以是多核处理器、人工智能处理器等,其可具有多个内核,并具有核内存储块、核间存储块、公共存储块和片外存储块中的一种或多种。
[0049] 图4示出了根据本申请一个实施方式的不同层级存储块的示意图。如图4所示,在数据运算处理的过程中,处理器200中每个内核(core)201上的核内存储块202(例如,RAM)具有最快的存取速度,因此该核内存储块202具有最高层级。其次,在处理器200的一个聚类(cluster)210中会设置有由多个内核共享的存储块212,该共享存储块212也具有较高的存取速度,仅此于核内存储块202,因此其层级也仅次于核内存储块202。再次,在整个处理器200内还可具有多个聚类210的公共内存220,该公共内存220中的存储块的存取速度和层级都会再低一些。此外,在处理器200外部,还可设置有片外存储器300(例如,DDR存储器),由于片外存储器300的存取速度都相对较低,因此其上的存储块的层级更低。上述存储块从高层级至低层级,其存储空间逐级变大,单位存储成本降低,但存取速度逐级变慢。本申请可解决多级存储管理的问题,即可对多层级的存储资源进行统一存储管理。
[0050] 根据本申请一个实施方式,存储资源信息S可包括存储块位置以及存储块的起始地址和结束地址。如上所述,系统中的存储资源可位于不同层级,那么存储资源信息可包括每个存储块的位置(例如,位于核内存储、核间共享存储、片内公共存储还是片外存储)以及每个存储块的起始地址和结束地址。
[0051] 根据本申请一个实施方式,上述预设的动作集可包括以下至少一个动作:存储资源分配、层级内的存储资源整理以及跨层级的存储数据迁移。也就是说,当系统处于某个状态时,可执行上述动作集中的其中一个动作。
[0052] 一、存储资源分配:即直接将可用的存储资源S分配给存储请求集合D中的各数据存储请求。具体的分配过程可通过从存储请求到存储资源的映射来实现,即将D={d1, d2, …, dm}映射到S={S1, S2, …, Sn}上,具体的分配或映射方法可采用任何已知的适当方法。经历过一次分配之后,系统的可用存储资源将变为S’,其中有些存储资源的空闲空间将会变小或分裂。例如,一个存储块的起始地址为0,结束地址为100,在分配时如果将数据分配在0-20,则该存储块变小;如果将数据分配在20-40,则该存储块将分裂为0-20和40-100的两个存储块。在时序上的下一个时间片段,将具有新的存储请求集合D’。根据S’和D’,可更新系统的当前状态。
[0053] 二、层级内的存储资源整理:在系统的某些状态下,需要对同一层级内的存储资源进行整理,即将存储在存储块中的数据,转移至同一层级内的其他存储资源上,这样做是为了通过对数据在同一存储层级内的搬运来减少存储碎片。经历该动作后,系统的可用存储资源将变为S’,但由于没有进行存储资源的分配,因此待处理的存储请求集合D仍保持不变。
[0054] 三、跨层级的存储数据迁移:在系统的某些状态下,可将存储在较高层级的存储资源上的数据换出至较低层级的存储资源上,或者将存储在较低层级的存储资源上的数据换出至较高层级的存储资源上。当较高层级的存储资源不够用时,可将部分数据换出到较低层级也更大的空间上,或者有时较高层级存储资源闲置时,可将较低层级存储资源中的数据换入到较高层级存储资源上。经历该动作后,系统的可用存储资源将变为S’,但由于没有进行存储资源的分配,因此待处理的存储请求集合D仍保持不变。
[0055] 根据本申请一个实施方式,上述预设的动作集中的动作相对于当前状态信息的分值可包括以下奖励和/或惩罚(奖励即reward > 0,惩罚即reward < 0):
[0056] 一、每分配成功一个存储块所获得的与该存储块大小正相关的奖励:对于成功分配一个存储块,即可获得与大小相应的奖励,从而能够促进更快地将请求的数据存储至空闲存储资源中;
[0057] 二、每分配完成一个待处理的存储请求集合所获得的第一预设奖励:对于分配完成一个存储请求集合,即可获得预设的奖励,从而能够促进进入时序中的下一个时间片段上的存储请求集合,提高存储管理的效率;
[0058] 三、分配完成所有待处理的存储请求集合所获得的第二预设奖励:对于分配完成所有存储请求集合,即可获得预设的奖励,从而能够促进整个存储请求集合序列中所有存储请求集合尽快完成;
[0059] 四、每次进行层级内的存储资源整理时所受到的、与所整理的存储块的大小正相关的惩罚:对于层级内的存储资源整理,系统并不鼓励在不必要时进行整理,因此会受到惩罚,只有在不得不整理时(例如该层级内的存储碎片过多),或是为了在下一步或下几步中获得更高的奖励时,才会选择执行该动作,从而实现全局优化,而不是局部优化;
[0060] 五、每次进行跨层级的存储数据迁移时所受到的、与所迁移的数据大小正相关的惩罚:对于跨层级的存储数据迁移,系统并不鼓励在不必要时进行迁移,因此会受到惩罚,只有在不得不迁移时(例如该层级内的存储资源不够用或者更高层级的存储资源过多地闲置),或是为了在下一步或下几步中获得更高的奖励时,才会选择执行该动作,从而实现全局优化,而不是局部优化。
[0061] 根据本申请一个实施方式,在待处理的存储请求集合序列中,任意相邻的两个待处理的存储请求集合的交集不为空集。例如,在待处理的存储请求集合序列中,相邻的两个存储请求集合指的是在相邻时间片上的请求集合Di和Di+1。请求集合Di+1相比于Di会增加一些新出现的存储请求,也会释放一些存储请求,但二者的交集不能为空集。如果二者交集为空,则表明两个请求集合Di和Di+1是完全不相干的,那么对它们的存储管理也完全不相干,可将其视为并不是同一个序列中的请求集合。
[0062] 图5示出了根据本申请一个实施方式的计算机存储管理装置的示意图。如图5所示,该装置400可包括状态确认单元410、资源分配单元420、状态更新单元430、控制单元440。状态确认单元410确认当前状态信息,所述当前状态信息包括当前可用的存储资源信息和当前待处理的存储请求集合。资源分配单元420根据所述当前状态信息,利用预设的深度估值网络,为当前待处理的存储请求集合分配存储资源。状态更新单元430根据分配后的可用存储资源信息以及下一个待处理的存储请求集合,更新所述当前状态信息。控制单元
440控制所述状态确认单元、所述资源分配单元、所述状态更新单元重复处理,直至为待处理的存储请求集合序列中的所有待处理的存储请求集合分配完成。
[0063] 根据本申请一个实施方式,资源分配单元420具体地可用于:通过所述深度估值网络,从预设的动作集中选取与所述当前状态信息相对应的分值最高的动作,并执行所选取的动作;在执行所选取的动作之后,确认当前待处理的存储请求集合是否已分配完成;以及如未分配完成,则更新所述当前状态信息并重复执行上述步骤,直至当前待处理的存储请求集合分配完成。
[0064] 根据本申请一个实施方式,上述存储资源可包括至少一个层级的存储块。例如,存储块的层级由高至低可包括:位于处理器中的内核上的核内存储块、位于所述处理器中多个内核之间的共享存储块、位于所述处理器中的公共存储块、和/或位于所述处理器外的片外存储块。
[0065] 根据本申请一个实施方式,上述存储资源信息可包括存储块位置以及存储块的起始地址和结束地址。
[0066] 根据本申请一个实施方式,预设的动作集可包括以下至少一个动作:存储资源分配;层级内的存储资源整理;以及跨层级的存储数据迁移。
[0067] 根据本申请一个实施方式,通过所述深度估值网络,从预设的动作集中选取与所述当前状态信息相对应的符合预设条件的动作,包括:确定所述预设的动作集中的动作相对于所述当前状态信息的分值;以及选取与所述当前状态信息相对应的分值最高的动作。
[0068] 根据本申请一个实施方式,上述预设的动作集中的动作相对于当前状态信息的分值可包括:每分配成功一个存储块所获得的与所述存储块大小正相关的奖励、每分配完成一个待处理的存储请求集合所获得的第一预设奖励、分配完成所有待处理的存储请求集合所获得的第二预设奖励、每次进行层级内的存储资源整理时所受到的与所整理的存储块大小正相关的惩罚、和/或每次进行跨层级的存储数据迁移时所受到的与所迁移的数据大小正相关的惩罚。
[0069] 根据本申请一个实施方式,待处理的存储请求集合序列中的任意相邻的两个待处理的存储请求集合的交集不为空集。
[0070] 根据本申请一个实施方式,深度估值网络根据深度强化学习训练得到。
[0071] 图6示出了根据本申请一个实施方式的电子设备的示意图。如图6所示,该电子设备500可包括处理器510和存储器530。存储器530存储有计算机程序。当存储在存储器530中的计算机程序被处理器510执行时,能够使得处理器510执行如以上任一个实施方式所述的计算机存储管理方法。
[0072] 根据本申请的另一方面,提供了一种非瞬时性计算机可读存储介质,其上存储有计算机可读指令,当该指令被处理器执行时,能够使得该处理器执行如以上任一个实施方式所述的基于深度强化学习算法的计算机存储管理方法。
[0073] 应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
[0074] 所述作为分离部件说明的单元或模块可以是物理上分开的,也可以不是物理上分开的。作为单元或模块说明的部件可以是物理单元,也可以不是物理单元,即可以位于一个装置中,或者也可以分布到多个装置上。本申请中实施例的方案可以根据实际的需要选择其中的部分或者全部单元来实现。
[0075] 另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0076] 所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、 高带宽内存HBM(High-Bandwidth Memory)、混合存储立方 HMC(Hybrid Memory Cube)等等。
[0077] 所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0078] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0079] 以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本申请的方法及其核心思想。同时,本领域技术人员依据本申请的思想,基于本申请的具体实施方式及应用范围上做出的改变或变形之处,都属于本申请保护的范围。综上所述,本说明书内容不应理解为对本申请的限制。