用于设备的内存管理方法、内存管理设备和计算系统转让专利

申请号 : CN202111502847.6

文献号 : CN113900829B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 艾国杨作兴房汝明向志宏

申请人 : 深圳比特微电子科技有限公司

摘要 :

本公开涉及一种用于设备的内存管理方法、内存管理设备和计算系统。内存管理方法包括:确定所述设备的多个应用场景;根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应硬件单元的系统内存块,系统内存包括物理内存以及与物理内存对应的扩展内存;其中,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块分别映射到不同的物理内存块;或者在被分配给分别在不同应用场景下运行的至少两个硬件单元的各个系统内存块中,所述不同应用场景中至少一个应用场景的系统内存块与另一应用场景的系统内存块映射到相同的物理内存块。

权利要求 :

1.一种用于设备的内存管理方法,其特征在于,所述设备包括多个硬件单元,所述内存管理方法包括:

确定所述设备的多个应用场景;

根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应硬件单元的系统内存块,所述系统内存包括物理内存以及与该物理内存块对应的扩展内存;

其中,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块分别映射到不同的物理内存块;或者在被分配给分别在不同应用场景下运行的至少两个硬件单元的各个系统内存块中,所述不同应用场景中至少一个应用场景的系统内存块与另一应用场景的系统内存块映射到相同的物理内存块;

其中,所述多个硬件单元包括第一硬件单元和第二硬件单元,所述第一硬件单元和所述第二硬件单元分别在不同的应用场景下运行,所述系统内存包括被分配给所述第一硬件单元的第一系统内存块组和被分配给所述第二硬件单元的第二系统内存块组,且所述第一系统内存块组中的至少一部分第一系统内存块和所述第二系统内存块组中的至少一部分第二系统内存块映射到物理内存中的相同的物理内存块;或者所述多个硬件单元包括第一硬件单元和第六硬件单元,所述第一硬件单元和所述第六硬件单元在所述多个应用场景中的至少一个应用场景下共同运行,所述系统内存包括被分配给所述第一硬件单元的第一系统内存块组和被分配给所述第六硬件单元的第六系统内存块组,且所述第一系统内存块组和所述第六系统内存块组分别映射到所述物理内存中的不同的物理内存块。

2.根据权利要求1所述的内存管理方法,其特征在于,确定分配给相应硬件单元的系统内存块,包括:

所述系统内存块被分配为使得在为所述多个硬件单元中的至少一个硬件单元分配的所有系统内存块映射到所述物理内存中的连续分布的物理内存块。

3.根据权利要求2所述的内存管理方法,其特征在于,所述系统内存被分配为使得与所述物理内存中的连续分布的物理内存块对应的至少一个硬件单元为需要最大的系统内存块数目的硬件单元。

4.根据权利要求2所述的内存管理方法,其特征在于,所述系统内存被分配为使得在所述多个硬件单元中,与所述物理内存中的连续分布的物理内存块对应的硬件单元的数目最多。

5.根据权利要求1所述的内存管理方法,其特征在于,所述物理内存的大小大于或等于所述多个应用场景中的需要最多的系统内存块数目的应用场景所需的系统内存的大小。

6.根据权利要求1所述的内存管理方法,其特征在于,所述系统内存块中的第(i+n*Np)个扩展内存块分别映射到所述物理内存中的第i个物理内存块,其中,i为大于零的整数,n为大于或等于零的整数,Np为所述物理内存中的物理内存块的总数目。

7.根据权利要求1所述的内存管理方法,其特征在于,所述系统内存的大小为所述物理内存的大小的倍数,所述倍数为大于1的数。

8.根据权利要求7所述的内存管理方法,其特征在于,所述系统内存的大小与所述物理内存的大小的倍数根据所述多个应用场景的场景数目确定。

9.一种内存管理设备,其特征在于,所述内存管理设备包括存储器、处理器以及存储在所述存储器上的指令,当所述指令被所述处理器执行时,实现根据权利要求1至8中任一项所述的内存管理方法的步骤。

10.一种计算系统,其特征在于,所述计算系统包括计算设备,所述计算设备包括根据权利要求9所述的内存管理设备。

11.根据权利要求10所述的计算系统,其特征在于,所述计算设备包括人工智能物联网设备;和/或

所述计算设备被包括在片上系统中。

12.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现根据权利要求1至8中任一项所述的内存管理方法的步骤。

说明书 :

用于设备的内存管理方法、内存管理设备和计算系统

技术领域

[0001] 本公开涉及存储技术领域,具体而言,涉及一种用于设备的内存管理方法、内存管理设备和计算系统。

背景技术

[0002] 随着技术的发展,设备的功能日益强大,在实现各种功能的同时所需的内存也相应增多。然而,目前的内存管理方式仍然存在许多问题,例如内存的利用率不高等。因此,存
在对于新的内存管理方式的需求。

发明内容

[0003] 本公开的目的之一在于提供一种用于设备的内存管理方法、内存管理设备和计算系统。
[0004] 根据本公开的第一方面,提供了一种用于设备的内存管理方法,所述设备包括多个硬件单元,所述内存管理方法包括:
[0005] 确定所述设备的多个应用场景;
[0006] 根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应硬件
单元的系统内存块,系统内存包括物理内存以及与物理内存对应的扩展内存;
[0007] 其中,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块分别映射到不同的物理内存块;或者,
[0008] 在被分配给分别在不同应用场景下运行的至少两个硬件单元的各个系统内存块中,所述不同应用场景中至少一个应用场景的系统内存块与另一应用场景的系统内存块映
射到相同的物理内存块。
[0009] 根据本公开的第二方面,提供了一种内存管理设备,所述内存管理设备包括存储器、处理器以及存储在所述存储器上的指令,当所述指令被所述处理器执行时,实现如上所
述的内存管理方法的步骤。
[0010] 根据本公开的第三方面,提供了一种计算系统,所述计算系统包括计算设备和如上所述的内存管理设备,其中,所述计算设备包括多个硬件单元;或者所述系数系统包括计
算设备,在所述计算设备上设置有如上所述的内存管理设备。
[0011] 根据本公开的第四方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现如上所述的内存管理
方法的步骤。
[0012] 根据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被处理器执行时,实现如上所述的内存管理方法的步骤。
[0013] 通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得清楚。

附图说明

[0014] 构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
[0015] 参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
[0016] 图1示出了根据本公开的一示例性实施例的用于设备的内存管理方法的流程示意图;
[0017] 图2示出了根据本公开的第一具体示例的内存分配示意图;
[0018] 图3示出了根据本公开的第二具体示例的内存分配示意图;
[0019] 图4示出了根据本公开的第三具体示例的内存分配示意图;
[0020] 图5示出了根据本公开的第四具体示例的内存分配示意图;
[0021] 图6示出了根据本公开的第五具体示例的内存分配示意图;
[0022] 图7示出了根据本公开的第六具体示例的内存分配示意图;
[0023] 图8示出了根据本公开的一示例性实施例的内存管理设备的示意图;
[0024] 图9示出了根据本公开的一示例性实施例的计算设备的示意图;
[0025] 图10示出了根据本公开的另一示例性实施例的计算设备的示意图。
[0026] 注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标
号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对
其进行进一步讨论。
[0027] 为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。
此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。

具体实施方式

[0028] 现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本
公开的范围。
[0029] 以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的用于设备的内存管理方法、内存管理设备
和计算系统等是以示例性的方式示出,来说明本公开中的电路或方法的不同实施例,而并
非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本发明的示例性方
式,而不是穷尽的方式。
[0030] 对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
[0031] 随着芯片工艺的发展,设备的集成度和计算能力也不断提升。然而,随着设备的功能越来越复杂,其对内存的需求也越来越大。为了满足内存需求,可以为设备提供更大的物
理内存,但这通常意味着硬件成本的增加。此外,也可以采用软件动态申请内存的方式来提
高内存的利用率,具体而言,在设备的运行过程中,当某个硬件单元需要使用内存时,由软
件为该硬件单元申请并分配内存,而当该硬件单元不需要使用内存时,可以释放并回收内
存,以供下一次使用。但是,内存的频繁分配和释放通常会导致软件开销的大幅增加,此外
还容易形成大量的内存碎片,导致内存的利用率下降。
[0032] 为了解决上述至少一个问题,本公开提出了一种用于设备的内存管理方法和相应的计算系统,其中计算系统可以包括计算设备。在本公开的内存管理方法中,通过使设备中
的至少部分硬件单元在不同的应用场景之间共享物理内存,从而实现内存的充分利用。如
图9和图10所示,在本公开的示例性实施例中,计算设备800可以包括多个硬件单元,例如硬
件单元H1和硬件单元H2等,这些硬件单元可以连接在计算设备800的总线上,以实现数据的
交换。如图1所示,内存管理方法可以包括:
[0033] 步骤S100,确定设备的多个应用场景。
[0034] 其中,为了便于在后续步骤中为硬件单元分配内存,多个应用场景中至少包括两个应用场景都不同时进行的情况。这样,分别在不同的应用场景下运行的硬件单元就有可
能共享同一部分物理内存。此外,为了处理的方便,在一些实施例中,可以仅考虑应用场景
的运行时间问题,而在同一应用场景中所运行的具体操作可以是相关或者是不相关的。例
如,如果设备为智能网络摄像机,那么智能网络摄像机的所有可能的应用场景可以包括不
会同时运行的录像应用场景和回放应用场景。可以理解的是,当设备是其他类型的设备时,
可以针对设备的运行特点来确定相应的多个应用场景,在此不作限制。
[0035] 返回图1,内存管理方法还可以包括:
[0036] 步骤S200,根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给
相应硬件单元的系统内存块。
[0037] 系统内存是系统临时存储程序指令和数据的主要区域,其可以包括相同大小的多个系统内存块。系统内存可以包括物理内存和与物理内存对应的扩展内存。换句话说,系统
内存中的第一类系统内存块即为真实的物理内存块,当第一类系统内存块被调用时,即调
用实际的物理内存块;而第二类系统内存块是扩展而来的,它们与物理内存块之间的映射
关系可以根据需求来确定,当第二类系统内存块被调用时,实际上是基于相应的系统内存
块到物理内存块的映射关系来调用相应的物理内存块。通过扩展得到扩展内存,可以使硬
件单元“看到”大于实际的物理内存的系统内存。一个系统内存块或若干个系统内存块所形
成的组可以是在分配系统内存时的最小可分配单元,其中,每个系统内存块的大小可以为
32 KB、64 KB或128 KB等。为了标识系统内存中的各个系统内存块,可以为它们分配一一对
应的内存地址。如图2至图7所示,系统内存中的内存地址可以被表示为00、01、02、……、31
等,在后文中,为了区分系统内存块和物理内存块,将在内存地址前加上字母“s”来表示相
应的系统内存块,例如,系统内存块s00、s01、s02和s31分别表示内存地址为00、01、02和31
的系统内存块。此外,在本文中,以连续内存块组中的首个内存块和末个内存块来表示相应
的连续内存块组,例如,从系统内存块s00到系统内存块s15的系统内存块组可以被表示为
(s01,s15),其中包括系统内存块s01、s02、s03、s04、s05、s06、s07、s08、s09、s10、s11、s12、
s13、s14和s15。
[0038] 在设备的运行过程中,当某一组系统内存块被调用时,实际上被调用的可以是物理内存中的与这组系统内存块相对应的一组物理内存块。也就是说,系统内存块与物理内
存块之间可以存在一定的对应关系,即后文中将详细描述的系统内存块与物理内存块之间
的映射关系。类似地,为了标识物理内存中的各个物理内存块,也可以为它们分配一一对应
的内存地址。如图2至图7所示,物理内存中的内存地址可以被表示为00、01、02、……、15等,
并在内存地址前加上字母“p”来表示相应的物理内存块,例如,物理内存块p00、p01、p02和
p15分别表示内存地址为00、01、02和15的物理内存块。每个物理内存块的大小可以与对应
的系统内存块的大小相同,例如为32 KB、64 KB或128 KB等。
[0039] 通过确定在每个应用场景下每个硬件单元所需的系统内存块数目,可以为后续的内存分配做好准备。在本公开中,为了使得至少部分硬件单元能够共享至少一部分物理内
存,应当满足在多个应用场景中至少存在两个应用场景,其中仅需要多个硬件单元中的一
部分硬件单元运行,而另一部分硬件单元不用运行。
[0040] 此外,在确定了每个应用场景下每个硬件单元所需的系统内存块数目之后,还可以按照所需的系统内存块数目等对硬件单元进行分组和/或排序,以方便在后续步骤中更
科学地分配内存,提高内存的利用率。
[0041] 其中,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块分别映射到不同的物理内存块。具体而言,在分配系统内存时,考虑到同一应用场景下的操作可能
是同时进行的,并需要同时调用相应的系统内存(或者说相应的物理内存),因此在同一应
用场景下运行的所有硬件单元的各个系统内存块应该分别映射到物理内存中的不同的物
理内存块,而不能共享,以避免可能被同时调用的系统内存块映射到相同的物理内存块而
引起冲突,进而保障该应用场景的正常运行。
[0042] 可以理解的是,物理内存的大小至少应该为多个应用场景中的需要最多的系统内存块数目的应用场景所需的系统内存的大小,以保证每个应用场景都能够正常运行。例如
在一具体示例中,假设所确定的某一设备的所有应用场景包括应用场景A1、A2和A3,在应用
场景A1中,相应的硬件单元需要调用的系统内存的大小共为82 MB,在应用场景A2中,相应
的硬件单元需要调用的系统内存的大小共为240 MB,以及在应用场景A3中,相应的硬件单
元需要调用的系统内存的大小共为25 MB,那么,为了保证每个应用场景都能正常地运行,
物理内存的大小应大于或等于其中需要的最大的系统内存240 MB,例如物理内存可以为
256 MB。
[0043] 此外,在被分配给在不同应用场景下运行的至少两个硬件单元的各个系统内存块中,不同应用场景中至少一个应用场景的系统内存块与另一应用场景的系统内存块映射到
相同的物理内存块。具体而言,由于不同的应用场景并不会同时进行,因此在某一个应用场
景下被某一个硬件单元调用的物理内存块也可以在另一个应用场景下被另一个硬件单元
调用,且不会引起冲突。这样,系统内存中的分别被分配给在不同应用场景下运行的硬件单
元的系统内存块组中,一个系统内存块组中的至少一部分系统内存块和另一个系统内存块
组中的至少一部分系统内存块可以映射到物理内存中的相同的物理内存块,从而使得同一
物理内存块可以在多个应用场景下被重复使用,以充分地利用物理内存,避免硬件成本的
升高。
[0044] 在分配内存的过程中,还可以根据每个硬件单元可能与其他硬件单元共享的内存大小等因素进行排序,以统一规划每个硬件单元的内存分配,实现物理内存的充分利用。在
完成内存的分配之后,每个硬件单元将具有与其对应的系统内存块组,且系统内存块组映
射到物理内存中的相应的物理内存块。这样,基于硬件单元、系统内存块组和物理内存块之
间的对应或映射关系,当硬件单元在相应的应用场景下运行的过程中,可以调用相应的物
理内存块。
[0045] 为了清楚地建立硬件单元与系统内存块之间的对应关系,可以限制系统内存中的每个系统内存块至多被分配给多个硬件单元中的一个硬件单元。也就是说,同一个系统内
存块不能被两个或更多个硬件单元共享,以免造成内存分配的混乱。
[0046] 此外,由于在系统内存中,可以有两个或更多个系统内存块映射到同一物理内存块,因此系统内存的大小通常大于物理内存的大小。系统内存中的大于物理内存的部分可
以被称为扩展内存(例如,图2和图6中的系统内存块组(s08,s15)、图3和图4中的系统内存
块组(s08,s23)、图5中的系统内存块组(s16,s23)以及图7中的系统内存块组(s16,s31)分
别为相应的图中的系统内存的扩展内存的部分)。在设备的运行过程中,当调用了扩展内存
时,实际上是根据这部分系统内存块与物理内存中的物理内存块的映射关系,在调用相应
的物理内存块。系统内存的大小可以是物理内存的大小的倍数,且倍数为大于1的数。一般
而言,系统内存的大小可以是物理内存的大小的1.5 5倍。例如,在图2、图6和图7所示的实
~
施例中,系统内存的大小是物理内存的大小的2倍;在图3和图4所示的实施例中,系统内存
的大小是物理内存的大小的3倍;在图5所示的实施例中,系统内存的大小是物理内存的大
小的1.5倍,后文中还将详细描述系统内存块与物理内存块之间的映射关系。
[0047] 进一步地,在一些实施例中,系统内存的大小可以是物理内存的大小的整数倍(例如在图2至图4和图6至图7的具体示例中所示的)。而且,系统内存的大小与物理内存的大小
的倍数可以根据多个应用场景的场景数目确定。例如,当设备中存在不会同时发生的共两
个应用场景时,系统内存的大小可以是物理内存的大小的两倍。或者,当设备中存在不会同
时发生的共三个或四个应用场景时,系统内存的大小可以分别是物理内存的大小的三倍或
四倍。
[0048] 此外,当系统内存的大小是物理内存的大小的整数倍时,可以将系统内存划分为多组系统子内存。其中,每组系统子内存的大小与物理内存的大小相等,并建立每组系统子
内存中的系统内存块与物理内存中的物理内存块之间的固定的一一映射关系,这样,每个
系统内存块可能映射到的物理内存块将是固定的。例如,在每组系统子内存中,使得第i个
系统内存块始终对应于物理内存中的第i个物理内存块,即在每组系统子内存中,第1个系
统内存块对应于物理内存中的第1个物理内存块,第2个系统内存块对应于物理内存中的第
2个物理内存块,依此类推。类似地,系统内存块中的第(i+n*Np)个扩展内存块可以分别映
射到物理内存中的第i个物理内存块,其中,i为大于零的整数,n为大于或等于零的整数,Np
为物理内存中的物理内存块的总数目。在为硬件单元分配系统内存时,如果将某一系统内
存分配给该硬件单元时,则这一硬件单元所占用的系统内存块的占用状态可以被标记为
“1”,否则置为“0”。进一步地,对于每个硬件单元,可以根据相应的系统内存块的内存地址
及其占用状态形成相应的内存分配映射表,在该硬件单元运行时,可以根据内存分配映射
表来调用相应的系统内存块,进而调用相应的物理内存块。例如,在图7的具体示例中,硬件
单元Ha的内存分配映射表可以被表示为:
[0049]
[0050] 硬件单元Hd的内存分配映射表可以被表示为:
[0051]
[0052] 其中,“1”表示使用的,“0”表示没有使用的。实际物理内存是p0,p1,p2,p3,p9和p10。
[0053] 另外,在一些实施例中,还可以将分配给同一个硬件单元的系统内存块限制在同一组系统子内存中,以方便管理硬件单元、系统内存块与物理内存块之间的对应或映射关
系。
[0054] 在一些实施例中,为了避免内存反复被申请和释放所带来的软件开销,并且尽可能避免内存碎片的产生,可以在多个应用场景中的任意一个应用场景的运行之前,或者说
在设备的启动之前,确定相应的系统内存块组中的系统内存块与物理内存中的物理内存块
的映射关系,以确定系统内存中的分配给相应的硬件单元的系统内存块组。也就是说,可以
在设备被投入使用之前,预先确定好系统内存块到物理内存块的映射关系,从而预先为其
中的所有硬件单元分配相应的系统内存块。或者,可以在多个应用场景中的每一应用场景
被启动前,确定系统内存块到物理内存块的映射关系,从而为相应的硬件单元分配相应的
系统内存块。
[0055] 进一步地,在多个应用场景中的任意一个应用场景的运行过程中,或者说在设备启动后或在设备的运行过程中,多个硬件单元中的每个硬件单元与该硬件单元相应的系统
内存块组的对应关系可以不变,且每个系统内存块组中的系统内存块与物理内存中的物理
内存块的映射关系可以不变,即被分配给硬件单元的系统内存块以及系统内存块与物理内
存块之间的整体的映射关系可以不再变化。这样,在设备的运行过程中,可以不再进行内存
的动态申请和释放,从而大幅减少了软件开销,有助于提高设备的运行效率,也避免了产生
大量的内存碎片。
[0056] 此外,在一些实施例中,内存管理方法还可以包括:
[0057] 当包括多个应用场景的应用场景集合发生变化时,返回执行确定设备的多个应用场景的步骤。
[0058] 具体而言,在一些实施例中,设备的使用场景可能发生根本的变化。例如,某一设备可能是从其他计算系统中回收而得到的,而不同的计算系统可能用于处理完全不同的任
务,相应地,该设备的应用场景集合将与原先的完全不同,而针对原来的计算系统所确定的
多个应用场景以及对应的内存分配关系可能不再适用。因此,当设备的应用场景集合发生
变化时,可以重新为设备中的多个硬件单元分配内存。具体而言,可以重新确定设备的多个
应用场景,然后根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已
建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应
硬件单元的系统内存块,系统内存包括物理内存以及与物理内存对应的扩展内存。在一些
情况下,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块组分别映射到
物理内存中的不同的物理内存块。替代地或附加地,在被分配给分别在不同应用场景下运
行的至少两个硬件单元的各个系统内存块中,不同应用场景中至少一个应用场景的系统内
存块与另一应用场景的系统内存块映射到相同的物理内存块,以实现设备的高效和灵活的
利用。
[0059] 进一步地,为了避免内存碎片化,在一些实施例中,系统内存可以被分配为使得在多个硬件单元中的至少一个硬件单元中,与该硬件单元相应的系统内存块组中的所有系统
内存块映射到物理内存中的连续分布的物理内存块。这可以在确定了每个应用场景下每个
硬件单元所需的系统内存块数目之后,对系统内存的分配进行整体规划来实现。
[0060] 在一些实施例中,系统内存还可以被分配为使得与物理内存中的连续分布的物理内存块对应的至少一个硬件单元为需要最大的系统内存块数目的硬件单元。例如,可以将
硬件单元在多个应用场景中的每个应用场景下可能需要的最大的系统内存块数目确定为
将要分配给该硬件单元的系统内存块数目,并将多个硬件单元中的被分配有最大的系统内
存块数目的硬件单元挑选出来。在分配过程中,可以优先为这个硬件单元分配系统内存块
组,将相应的系统内存块组映射到物理内存中的连续分布的物理内存块。
[0061] 在另一些实施例中,系统内存也可以被分配为使得在多个硬件单元中,与物理内存中的连续分布的物理内存块对应的硬件单元的数目最多。例如,可以将硬件单元在多个
应用场景中的每个应用场景下可能需要的最大的系统内存块数目确定为将要分配给该硬
件单元的系统内存块数目,并尽可能使得较多的硬件单元分配到连续分布的物理内存块。
[0062] 在本公开的第一具体示例中,如图2所示,多个硬件单元可以包括第一硬件单元H1和第二硬件单元H2,第一硬件单元H1和第二硬件单元H2可以分别在不同的应用场景下运
行,这样,第一硬件单元H1和第二硬件单元H2可以共享至少部分物理内存,而不会引起冲
突。系统内存610可以包括被分配给第一硬件单元H1的第一系统内存块组(s00,s05)和被分
配给第二硬件单元H2的第二系统内存块组(s08,s11),且第一系统内存块组(s00,s05)中的
至少一部分第一系统内存块和第二系统内存块组(s08,s11)中的至少一部分第二系统内存
块可以映射到物理内存620中的相同的物理内存块。在图2所示的具体示例中,第一系统内
存块s00和第二系统内存块s08映射到同一个物理内存块p00,第一系统内存块s01和第二系
统内存块s09映射到同一个物理内存块p01,第一系统内存块s02和第二系统内存块s10映射
到同一个物理内存块p02,且第一系统内存块s03和第二系统内存块s11映射到同一个物理
内存块p03。
[0063] 在本公开的第二具体示例中,如图3所示,多个硬件单元还可以包括第三硬件单元H3,第一硬件单元H1、第二硬件单元H2和第三硬件单元H3分别在不同的应用场景下运行,这
样,第一硬件单元H1、第二硬件单元H2和第三硬件单元H3可以共享至少部分物理内存,而不
会引起冲突。系统内存610还可以包括被分配给第三硬件单元H3的第三系统内存块组(s16,
s23),且第一系统内存块组(s00,s05)中的至少一部分第一系统内存块、第二系统内存块组
(s08,s11)中的至少一部分第二系统内存块和第三系统内存块组(s16,s23)中的至少一部
分第三系统内存块映射到物理内存中的相同的物理内存块。在图3所示的具体示例中,第一
系统内存块s00、第二系统内存块s08和第三系统内存块s16映射到同一个物理内存块p00,
第一系统内存块s01、第二系统内存块s09和第三系统内存块s17映射到同一个物理内存块
p01,第一系统内存块s02、第二系统内存块s10和第三系统内存块s18映射到同一个物理内
存块p02,第一系统内存块s03、第二系统内存块s11和第三系统内存块s19映射到同一个物
理内存块p03,第一系统内存块s04和第三系统内存块s20映射到同一个物理内存块p04,第
一系统内存块s05和第三系统内存块s21映射到同一个物理内存块p05,且第三系统内存块
s22和s23分别映射到物理内存块p06和p07。
[0064] 在本公开的第三具体示例中,如图4所示,多个硬件单元还可以包括第四硬件单元H4,第四硬件单元H4和第一硬件单元H1分别在不同的应用场景下运行,且第四硬件单元H4
和第二硬件单元H2在多个应用场景中的至少一个应用场景下共同运行,这样,第一硬件单
元H1和第四硬件单元H4有可能共享至少部分物理内存,但是第二硬件单元H2和第四硬件单
元H4不能共享物理内存。系统内存610还可以包括被分配给第四硬件单元H4的第四系统内
存块组(s20,s23),且第一系统内存块组(s00,s05)中的至少另一部分第一系统内存块和第
四系统内存块组(s20,s23)中的至少一部分系统第四内存块映射到物理内存中的相同的物
理内存块,第二系统内存块组(s08,s11)和第四系统内存块组(s20,s23)分别映射到物理内
存中的不同的物理内存块。在图4所示的具体示例中,由于第一系统内存块s00和第二系统
内存块s08映射到同一个物理内存块p00,第一系统内存块s01和第二系统内存块s09映射到
同一个物理内存块p01,第一系统内存块s02和第二系统内存块s10映射到同一个物理内存
块p02,以及第一系统内存块s03和第二系统内存块s11映射到同一个物理内存块p03,因此
第四系统内存块组(s20,s23)不能映射到已被第二系统内存块组(s08,s11)映射到的物理
内存块组(p01,p03)。在每组系统子内存中的系统内存块与物理内存中的物理内存块的一
一映射关系固定的情况下,第四硬件单元H4将不能占用系统子内存(s16,s23)中的前四个
系统内存块(s16,s19),以免与第二硬件单元H2发生冲突,而仅能够占用后四个系统内存块
(s20,s23)。也就是说,第四系统内存块s20可以与第一系统内存块s04映射到同一个物理内
存块p04,第四系统内存块s21可以与第一系统内存块s05映射到同一个物理内存块p05,而
其他的第四系统内存块s22和s23可以分别映射到物理内存块p06和p07。
[0065] 在本公开的第四具体示例中,如图5所示,多个硬件单元还可以包括第五硬件单元H5,第五硬件单元H5和第一硬件单元H1在多个应用场景中的至少一个应用场景下共同运
行,且第五硬件单元H5和第二硬件单元H2在多个应用场景中的至少另一个应用场景下共同
运行,这样,第五硬件单元H5将不能与第一硬件单元H1和第二硬件单元H2中的任何一者共
享物理内存。相应地,系统内存610可以包括被分配给第五硬件单元H5的第五系统内存块组
(s16,s23),且第一系统内存块组(s00,s05)和第五系统内存块组(s16,s23)分别映射到物
理内存中的不同的物理内存块,第二系统内存块组(s08,s11)和第五系统内存块组(s16,
s23)分别映射到物理内存中的不同的物理内存块。在图5所示的具体示例中,第五系统内存
块组(s16,s23)可以被映射到物理内存中的未被第一硬件单元H1或第二硬件单元H2占用的
物理内存块组(p06,p13)。或者,在其他具体示例中,第五系统内存块组(s16,s23)可以被映
射到物理内存中的未被第一硬件单元H1或第二硬件单元H2占用的物理内存块组(p08,
p15),这样,可以确保每个系统子内存中的第i个系统内存块可以被映射到相应的物理子内
存中的第i个物理内存块,以更方便内存的管理。在图5所示的实施例中,系统内存的大小可
以为物理内存的大小的1.5倍。
[0066] 在图6所示的第五具体示例中,当第五硬件单元H5所需的第五系统内存块组(s06,s07)足够小时,第五系统内存块组(s06,s07)可以和第一系统内存块组(s00,s05)处于同一
个系统子内存中,并一一映射到物理内存中的相应的物理内存块,且其中第二系统内存块
组(s08,s11)可以与第一系统内存块组(s00,s05)共享一部分物理内存块。
[0067] 在本公开的第六具体示例中,如图7所示,假设设备为上文所述的智能网络摄像机,其中具有录像应用场景和回放应用场景共两个应用场景。硬件单元Ha和Hc仅在录像应
用场景中被使用,硬件单元Hd和He仅在回放应用场景中被使用,而硬件单元Hb在录像应用
场景和回放应用场景中都将被使用到,那么,可以如下为智能网络摄像机分配内存。在录像
应用场景下,硬件单元Ha、Hb和Hc被使用,因此系统内存块组(s00,s03)可以分配给硬件单
元Ha,并映射到物理内存块组(p00,p03);系统内存块组(s04,s08)可以分配给硬件单元Hb,
并映射到物理内存块组(p04,p08);系统内存块组(s09,s13)可以分配给硬件单元Hc,并映
射到物理内存块组(p09,p13)。而在回放应用场景下,硬件单元Hb、Hd和He被使用,其中硬件
单元Hd可以与硬件单元Ha和/或Hc共享物理内存,且硬件单元He可以与硬件单元Ha和/或Hc
共享物理内存,但硬件单元Hd和He均不能与硬件单元Hb共享物理内存。在分配时,可以将系
统内存块组(s16,s26)分配给硬件单元Hd,其中(s16,s19)分别映射到物理内存块组(p00,
p03),而由于系统内存块组(s20,s24)映射到的物理内存块组(p04,p08)被硬件单元Hb占
用,因此,系统内存块组(s20,s24)不能被分配给硬件单元Hd,即系统内存块组(s20,s24)被
空置,不被分配给任何硬件单元,以避免冲突,但后面的系统内存块组(s25,s26)可以被分
配给硬件单元Hd,并分别映射到物理内存块组(p09,p10),且与硬件单元Hc实现了共享。也
就是说,在硬件单元Hd的运行过程中,其实际被分配的系统内存块为(s16,s19)和(s25,
s26)。进一步地,可以为硬件单元He分配系统内存块组(s27,s31),并分别映射到物理内存
块(p11,p15),其中物理内存块(p11,p13)被硬件单元Hc和硬件单元He共享。
[0068] 本公开的内存管理方法提出了系统内存和物理内存之间的映射关系和算法,通过扩大系统内存,使得设备中的硬件单元可以看到更多的系统内存,而无需增大实际的物理
内存,提高了物理内存的利用率。在系统启动或者在相应的应用场景启动时,根据已建立的
系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应的硬件
单元的系统内存块,这样的预先规划有利于提高系统的稳定性和可靠性,且当出现问题时,
对设备进行调试也将变得十分方便。
[0069] 本公开的内存管理方法尤其适用于当设备的应用场景较简单,且其中的内存使用与应用场景的关联性较强、在不同的应用场景下至少部分内存不会被同时使用的情况。这
样的设备或者计算设备例如可以包括能够用于人工智能物联网(AIoT)技术的人工智能物
联网(AIot)设备。AIoT技术融合了人工智能(AI)技术和物联网(IoT)技术,在AIot技术中,
可以通过物联网产生、收集来自不同维度的、海量的数据,并通过大数据分析、人工智能等
技术实现万物数据化、万物智联化,从而形成智能化生态体系,实现不同智能终端设备之
间、不同系统平台之间、不同应用场景之间的互融互通。随着设备的性能的提升,它可以用
作作为边缘端设备或移动端设备的AIot设备,并执行过去通常需要由云端设备来执行的任
务,以就近提供服务,帮助实现更快的服务响应和更好的隐私保护。可以理解的是,设备也
可以用在其他应用中,并实现相应的功能,在此不作限制。
[0070] 在一些实施例中,本公开的设备或者计算设备可以被包括在片上系统(SoC)中。SoC可以具有小体积、高速度、低能耗和丰富的系统功能,且具有相对较低的成本。在一些实
施例中,如图9所示,物理内存620可以被包括在计算设备800中。或者,如图10所示,物理内
存620也可以与计算设备800分开设置,例如物理内存620和计算设备800可以分别是SoC上
的不同部件,并通过总线等进行数据的交换。所述计算设备包括多个硬件单元。
[0071] 本公开还提出了一种内存管理设备900,如图8所示,该内存管理设备900可以包括存储器910、处理器920以及存储在存储器910上的指令,当指令被处理器920执行时,实现如
上所述的内存管理方法的步骤。如图9所示,内存管理设备900可以被包括在计算设备800
中。或者,如图10所示,计算设备800可以与内存管理设备900分开设置。
[0072] 其中,处理器920可以根据存储在存储器910中的指令执行各种动作和处理。具体地,处理器920可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处
理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可
编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施
例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以
是任何常规的处理器等,可以是X810架构或者是ARM架构等。
[0073] 存储器910存储有可执行指令,该指令在被处理器920执行上文所述的内存管理方法。存储器910可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器
两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程
只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随
机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM
可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存
储器(SDRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、增强型同步动态随机存
取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储
器(DR RAM)。应注意,本文描述的方法的存储器旨在包括但不限于这些和任意其他适合类
型的存储器。
[0074] 本公开还提出了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有指令,当指令被处理器执行时,实现如上所述的内存管理方法的步骤。
[0075] 类似地,本公开实施例中的非暂态计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的计算机可读存
储介质旨在包括但不限于这些和任意其他适合类型的存储器。
[0076] 本公开还提供了一种计算机程序产品,该计算机程序产品可以包括指令,当指令被处理器执行时,实现如上所述的内存管理方法的步骤。
[0077] 指令可以是将由一个或多个处理器直接地执行的任何指令集,诸如机器代码,或者间接地执行的任何指令集,诸如脚本。本文中的术语“指令”、“应用”、“过程”、“步骤”和
“程序”在本文中可以互换使用。指令可以存储为目标代码格式以便由一个或多个处理器直
接处理,或者存储为任何其他计算机语言,包括按需解释或提前编译的独立源代码模块的
脚本或集合。指令可以包括引起诸如一个或多个处理器来充当本文中的各神经网络的指
令。本文其他部分更加详细地解释了指令的功能、方法和例程。
[0078] 另外,本公开的实施方式还可以包括以下示例:
[0079] 1. 一种用于设备的内存管理方法,所述设备包括多个硬件单元,所述内存管理方法包括:
[0080] 确定所述设备的多个应用场景;
[0081] 根据在每个应用场景下每个硬件单元所需的物理内存块数目,以及,根据已建立的系统内存中的系统内存块与物理内存中的物理内存块的映射关系,确定分配给相应硬件
单元的系统内存块,所述系统内存包括物理内存以及与该物理内存块对应的扩展内存;
[0082] 其中,被分配给在同一应用场景下运行的所有硬件单元的各个系统内存块分别映射到不同的物理内存块;或者,
[0083] 在被分配给分别在不同应用场景下运行的至少两个硬件单元的各个系统内存块中,所述不同应用场景中至少一个应用场景的系统内存块与另一应用场景的系统内存块映
射到相同的物理内存块。
[0084] 2. 根据1所述的内存管理方法,确定分配给相应硬件单元的系统内存块,包括:
[0085] 所述系统内存块被分配为使得在为所述多个硬件单元中的至少一个硬件单元分配的所有系统内存块映射到所述物理内存中的连续分布的物理内存块。
[0086] 3. 根据2所述的内存管理方法,所述系统内存被分配为使得与所述物理内存中的连续分布的物理内存块对应的至少一个硬件单元为需要最大的系统内存块数目的硬件单
元。
[0087] 4. 根据2所述的内存管理方法,所述系统内存被分配为使得在所述多个硬件单元中,与所述物理内存中的连续分布的物理内存块对应的硬件单元的数目最多。
[0088] 5. 根据1所述的内存管理方法,所述物理内存的大小大于或等于所述多个应用场景中的需要最多的系统内存块数目的应用场景所需的系统内存的大小。
[0089] 6. 根据1所述的内存管理方法,所述系统内存块中的第(i+n*Np)个扩展内存块分别映射到所述物理内存中的第i个物理内存块,其中,i为大于零的整数,n为大于或等于零
的整数,Np为所述物理内存中的物理内存块的总数目。
[0090] 7. 根据1所述的内存管理方法,所述系统内存的大小为所述物理内存的大小的倍数,所述倍数为大于1的数。
[0091] 8. 根据7所述的内存管理方法,所述系统内存的大小与所述物理内存的大小的倍数根据所述多个应用场景的场景数目确定。
[0092] 9. 根据1所述的内存管理方法,所述多个硬件单元包括第一硬件单元和第二硬件单元,所述第一硬件单元和所述第二硬件单元分别在不同的应用场景下运行,所述系统内
存包括被分配给所述第一硬件单元的第一系统内存块组和被分配给所述第二硬件单元的
第二系统内存块组,且所述第一系统内存块组中的至少一部分第一系统内存块和所述第二
系统内存块组中的至少一部分第二系统内存块映射到物理内存中的相同的物理内存块。
[0093] 10. 根据9所述的内存管理方法,所述多个硬件单元还包括第四硬件单元,所述第四硬件单元和所述第一硬件单元分别在不同的应用场景下运行,且所述第四硬件单元和所
述第二硬件单元在所述多个应用场景中的至少一个应用场景下共同运行,所述系统内存还
包括被分配给所述第四硬件单元的第四系统内存块组,且所述第一系统内存块组中的至少
另一部分第一系统内存块和所述第四系统内存块组中的至少一部分第四系统内存块映射
到所述物理内存中的相同的物理内存块,所述第二系统内存块组和所述第四系统内存块组
分别映射到所述物理内存中的不同的物理内存块。
[0094] 11. 根据9所述的内存管理方法,所述多个硬件单元还包括第五硬件单元,所述第五硬件单元和所述第一硬件单元在所述多个应用场景中的至少一个应用场景下共同运行,
且所述第五硬件单元和所述第二硬件单元在所述多个应用场景中的至少另一个应用场景
下共同运行,所述系统内存还包括被分配给所述第五硬件单元的第五系统内存块组,且所
述第一系统内存块组和所述第五系统内存块组分别映射到所述物理内存中的不同的物理
内存块,所述第二系统内存块组和所述第五系统内存块组分别映射到所述物理内存中的不
同的物理内存块。
[0095] 12. 一种内存管理设备,所述内存管理设备包括存储器、处理器以及存储在所述存储器上的指令,当所述指令被所述处理器执行时,实现根据1至11中任一项所述的内存管
理方法的步骤。
[0096] 13. 一种计算系统,所述计算系统包括:
[0097] 计算设备和根据12所述的内存管理设备,其中,所述计算设备包括多个硬件单元;或者,
[0098] 计算设备,在所述计算设备上设置有根据12所述的内存管理设备。
[0099] 14. 根据13所述的计算系统,所述计算设备还包括物理内存。
[0100] 15. 根据13所述的计算系统,所述计算设备包括人工智能物联网设备;和/或,
[0101] 所述计算设备被包括在片上系统中。
[0102] 16. 一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质上存储有指令,当所述指令被处理器执行时,实现根据1至11中任一项所述的内存管理方法的步骤。
[0103] 17. 一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被处理器执行时,实现根据1至11中任一项所述的内存管理方法的步骤。
[0104] 在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其他示例可以具有不同的值。
[0105] 在说明书及权利要求中的词语“前”、“后”、“顶”、“底”、“之上”、“之下”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词
语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所
示出的或另外描述的那些取向不同的其他取向上操作。
[0106] 如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其他实现方式
优选的或有利的。而且,本公开不受在上述技术领域、背景技术、发明内容或具体实施方式
中所给出的任何所表述的或所暗示的理论所限定。
[0107] 如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其他因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪
音以及可能存在于实际的实现方式中的其他实际考虑因素所致的与完美的或理想的情形
之间的差异。
[0108] 上述描述可以指示被“连接”或“耦合”在一起的元件或节点或特征。如在此所使用的,除非另外明确说明,“连接”意指一个元件/节点/特征与另一种元件/节点/特征在电学
上、机械上、逻辑上或以其他方式直接地连接(或者直接通信)。类似地,除非另外明确说明,
“耦合”意指一个元件/节点/特征可以与另一元件/节点/特征以直接的或间接的方式在机
械上、电学上、逻辑上或以其他方式连结以允许相互作用,即使这两个特征可能并没有直接
连接也是如此。也就是说,“耦合”意图包含元件或其他特征的直接连结和间接连结,包括利
用一个或多个中间元件的连接。
[0109] 还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其他特征、整体、步骤、操
作、单元和/或组件以及/或者它们的组合。
[0110] 本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部
分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其他各种实施例
中可以改变操作顺序。但是,其他的修改、变化和替换同样是可能的。因此,本说明书和附图
应当被看作是说明性的,而非限制性的。
[0111] 虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的
各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以
对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限
定。