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

一种内存分配方法、存储介质及嵌入设备与流程

2021-12-17 22:23:00 来源:中国专利 TAG:


1.本发明涉及嵌入设备技术领域,特别涉及一种内存分配方法、存储介质及嵌入设备。


背景技术:

2.随着嵌入式设备的发展,嵌入系统的性能也在不断提高。然而,随着嵌入系统的性能的提高,嵌入系统对硬件设备的要求也越来越高,这就使得硬件设备的成本越来越高,特别是内存成本。对于内存成本,目前普遍是通过减少嵌入式设备的内存控制器的方式来实现。然而,在减少内存控制器,会因内存位宽减小而影响功能模块的读写性能的问题。


技术实现要素:

3.本发明要解决的技术问题在于,针对现有技术的不足,提供一种内存分配方法、存储介质及嵌入设备。
4.为了解决上述技术问题,本发明所采用的技术方案如下:
5.一种内存分配方法,其中,所述方法包括:
6.当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间,其中,所述第一功能模块为预设的第二内存分区对应的功能模块,所述第一内存分区对应的位宽大于第二内存分区对应的位宽;
7.若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块;
8.将目标功能模块对应的内存数据转存于预设的第三内存分区;
9.将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。
10.所述内存分配方法,其中,所述第三内存分区对应的位宽等于第一内存分区对应的位宽。
11.所述内存分配方法,其中,所述第一内存分区和所述第二内存分区均预先分配若干预设功能模块,其中,所述第一内存分区对应的预设功能模块的优先级高于第二内存分区对应的预设功能模块的优先级。
12.所述内存分配方法,其中,所述第三内存分区的内存地址区间的下限值等于所述第一内存分区的内存地址区间的上限值;所述第三内存分区的内存地址区间的上限值等于所述第二内存分区的内存地址区间的下限值。
13.所述内存分配方法,其中,所述第一内存分区中处于停止状态的功能模块包括若干功能模块;所述获取第一内存分区中处于停止状态的目标功能模块具体包括:
14.获取第一内存分区中处于停止状态的各参考功能模块,并确认获取到的各参考功能模块各自对应的驻留时间;
15.根据所述驻留时间在各参考功能模块中选取若干参考功能模块,并将选取到若干
参考功能模块作为目标功能模块,其中,目标功能模块对应的内存空间与所述空闲内存空间的和大于或等于所述所需内存空间。
16.所述内存分配方法,其中,所述将所述目标功能模块对应的内存空间分配给所述第一功能模块之后,所述还方法包括:
17.将所述第三内存分区中的内存数据存储于第二内存分区,并清空所述第三内存分区。
18.所述内存分配方法,其中,所述还方法包括:
19.若读取到的空闲内存空间大于或等于所述第一功能模块的所需内存空间,将所述空闲内存空间分配给所述第一功能模块。
20.所述内存分配方法,其中,所述还方法包括:
21.将所述空闲内存空间对应的预设功能模块作为第二内存分区对应的预设功能模块。
22.一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的内存分配方法中的步骤。
23.一种嵌入设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
24.所述通信总线实现处理器和存储器之间的连接通信;
25.所述处理器执行所述计算机可读程序时实现如上任一所述的内存分配方法中的步骤。
26.有益效果:与现有技术相比,本发明提供了一种内存分配方法、存储介质以及嵌入设备,所述方法当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间;若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块;将目标功能模块对应的内存数据转存于预设的第三内存分区;将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。本发明通过第三内存分区将第一内存分区的数据动态转存到第二内存分区,当第二内存分区对应的功能模块需要读取带宽高于预设读写带宽阈值时,可以将该功能模块分配至第一内存分区,可以提高内存响应该功能模块的速度,进而提高了系统性能。
附图说明
27.图1为本发明提供的多通道对称内存与多通道分对称内存的对照图。
28.图2为本发明提供的内存分配方法的流程图。
29.图3为本发明提供的内存分配方法中多通道内存组合地址示意图。
30.图4为本发明提供的内存分配方法中多通道内存组合空间示意。
31.图5为本发明提供的嵌入设备的结构原理图。
具体实施方式
32.本发明提供一种内存分配方法、存储介质及嵌入设备,为使本发明的目的、技术方
案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
33.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
34.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
35.经发明人研究发现,目前为了减少嵌入设备的内存成本,普遍采用的减少嵌入式设备的内存控制器的方式。然而,在减少内存控制器,会内存的位宽减少而影响功能模块的读写性能。例如,嵌入式设备采用如图1所示的包括四个256m*16内存颗粒的多通道对称内存,减少内存控制器不会影响功能模块的读写能力。然而,对于两个256m*16内存颗粒和两个512m*8的内存颗粒的设备的多通道非对称内存;而在减少内存控制器后,内存位宽由64bit降低为48bit,其中,两个256m*16的内存颗粒的位宽保持不变,两个512m*8的内存颗粒共用16bit的通道;那么512m*8的内存颗粒的前256m的地址空间与两个256m*16内存颗粒组成48bit的通道,而后256m的地址空间的内存位宽为16bit,这样一方面两个512m*8的内存颗粒中后256m的地址空间的读写性能,另一方面被两个512m*8的内存颗粒中后256m的地址空间中的功能模块始终处于低读写性能状态,这样会系统使用或者访问该地址空间中的功能模块时,会造成响应速度慢,而影响了系统性能。
36.为了解决上述问题,本实施例预设将内存划分为第一内存分区、第二内存分区以及第三内存分区;当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间;若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块;将目标功能模块对应的内存数据转存于预设的第三内存分区;将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。这样通过第三内存分区将第一内存分区的内存数据转存至第二内存分区,将第二内存分区对应功能模块分配至第一内存分区,可以提高该功能模块的速度。同时,本实施例实现了内存动态分配,避免第二内存分区对应的功能模块始终处于低读写带宽状态,进而可以提高系统的整体性能。
37.举例说明,本发明实施例可以应用场景可以为嵌入式设备。在该场景中,首先,嵌入式设备的内存预设划分为第一内存分区、第二内存分区以及第三内存分区;所述第一内存分区和第二内存分区均用于存储嵌入式设备装载的功能模块的内存数据;所述第三内存分区用于将第一内存分区中的内存数据转存至第二内存分区。嵌入设备接收到内存数据存储于第二内存分区的第一功能模块时,将该第一功能模块的请求读写带宽与预设读写带宽
阈值进行比较;当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间;若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块;将目标功能模块对应的内存数据转存于预设的第三内存分区;将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。
38.需要注意的是,上述应用场景仅是为了便于理解本发明而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
39.下面结合附图,通过对实施例的描述,对发明内容作进一步说明。
40.本实施提供了一种内存分配方法,如图2所示,所述方法可以包括以下步骤:
41.s10、当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间,其中,所述第一功能模块为预设的第二内存分区对应的功能模块。
42.具体地,所述第一内存分区和第二内存分区为系统内存预先划分的两个分区,所述第一内存分区和第二内存分区均用于存储系统装载的功能模块的内存数据,其中,所述第一内存分区对应的位宽大于第二内存分区对应的位宽。第一内存分区的读写性能高于第二内存分区的读写性能,第一内存分区中存储的功能模块对读写性能的要求高于第二内存分区中存储的功能模块对读写性能的要求。此外,所述位宽是显存/内存在一个时钟周期内所能传送数据的位数,用于反映内存的读写性能。而且,在内存频率不变的情况下,位宽越大,内存的带宽越大,相应的内存读写性能越高;反之,位宽越小,内存的带宽越小,相应的内存读写性能越低。例如,在内存频率为500mhz的128位和256位内存,128位对应的带宽为500mhz*128/8=8gib/s,256位对应的带宽为500mhz*256/8=16gib/s,其中,256位宽的内存的对应的带宽为128位对应的带宽的2倍。
43.进一步,所述系统内存包括若干内存单元,若干内存单元中存在至少一个内存单元,该内存单元的空间容量与其它内存单元的空间容量不同,由此,系统内存中存在内存单元,该内存单元对应的内存地址长度与其它内存单元对应的内存地址长度不同。由此,系统内存在内存地址方向存在第一内存区域,该第一内存区域的位宽与第二内存区域的位宽不同,从而将第一内存区域和第二内存区域中位宽大的作为第一内存分区,将第一内存区域和第二内存区域中位宽小的作为第二内存分区。这样可以使得第一内存分区对应的读写性能高于第二内存分区,在后续可以根据读写性能为第一内存分区和第二内存分区进行功能模块配置时,使得需要高读写性能的功能模块可以配置于读写性能高的第一内存分区,需要低读写性能的功能模块配置于读写性能低的第二内存分区,提高内存分区的读写性能与功能模块的读写性能的匹配性,保证内存对功能模块的响应速度。
44.此外,所述系统内存采用双倍速率同步动态随机存储器,并且所述双倍速率同步动态随机存储器的控制器为多通道控制器;例如,如图2所示,系统内存包括两个256m*16内存颗粒以及两个512m*8内存颗粒,双倍速率同步动态随机存储器的控制器包括3个16bit通道,并且两个256m*16内存的空间容量与两个512m*8内存的空间容量不同,从而可以将两个256m*16以及512m*8的前256m*8作为第一内存分区,将后256m*8作为第二内存分区。
45.进一步,在实施例的一个实现方式中,所述第一内存分区和第二内存分区可以按照系统内存中的各内存单元对应的内存地址来划分的,例如,将各内存单元对应的内存地
址的上限值中的最小上限值作为划分阈值;将内存地址小于或等于划分阈值的内存地址区间内存划分为参考内存分区,将内存地址大于划分阈值的内存地址区间对应的内存划分为第二内存分区。例如,系统内存包括两个256m*16内存颗粒以及两个512m*8内存颗粒,双倍速率同步动态随机存储器的控制器包括3个16bit通道;将两个256m*16内存颗粒以及两个512m*8内存颗粒中内存地址小于或等于256m的内存划分为参考内存分区,将两个512m内存颗粒中内存地址大于256m的内存划分为第二内存分区。
46.所述预设读写带宽阈值可以为预先设置的,用于衡量第二内存分区对应的各功能模块是否需要转分配至第一内存分区的标准。其中,所述预设读写带宽阈值可以根据第二内存分区的位宽计算得到。在本实施例的一个实现方式中,所述预设读写带宽阈值第二内存分区的位宽与内存控制器的特效频率乘积除以8得到,例如,第二内存分区的位宽为16bit,内存控制器为ddr3-2133,那么所述预设读写带宽阈值=2133*16bit/8=4266bit。此外,在第一功能模块请求读写带宽小于或等于预设读写带宽阈值,则将由第二内存分区为该第一功能模块分配内存。所述空闲内存空间为所述第一内存分区中未处于使用状态的内存空间,空闲内存空间对应的预设功能模块处于未启动状态。可以理解的是,所述第一内存分区对应的预设功能模块中存在未启动的功能模块,所有未启动的功能模块对应的预分配内存空间构成所述空闲内存空间。
47.进一步,在划分得到第一内存分区后,将所述第一内存分区中划分出部分内存区域,将划分处理的部分内存区域作为第三内存分区,将划分后的第一内存分区作为第一内存分区。其中所述第三内存分区用于将第一内存分区中的内存数据转存到第二内存分区,可以理解的是,当存储于第一内存分区中的第一内存数据需要转存到第二内存分区时,首先将第一内存数据转存入第三内存分区中,然后再将第一内存数据转存入第二内存分区。这样在第一内存数据转存至第三内存分区后,第一内存分区存在空闲内存区域,以使得第二内存分区中需要转存到第一内存分区的第二内存数据可以存入第一内存分区,并且在第二内存数据转存入第一内存分区后,第二内存分区存在空闲内存分区,此时第三内存分区中的第一内存数据可以存入第二内存分区。
48.此外,在将第一内存分区划分出第三内存分区时,可以在第一内存分区中随机选取一内存区域作为第三内存分区,将其余区域作为第一内存分区;也可以将第一内存分区中内存地址与第二内存分区的内存地址相邻的一内存区域作为第三内存分区,将其余区域作为第一内存分区。在本实施例的一个实现方式中,第三内存分区的内存地址区间位于划分后的第一内存分区的内存地址区间与第二内存分区的内存地址区间之间,也就是说,所述第三内存分区的内存地址区间的下限值大于所述第一内存分区的内存地址区间的上限值;所述第三内存分区的内存地址区间的上限值小于所述第二内存分区的内存地址区间的下限值,这样第一内存分区对应的内存地址为连续地址,从而保证了第一内存分区的内存地址的连续性。在本实施例的一个可能实现方式中,为了避免内存浪费,所述所述第三内存分区的内存地址区间的下限值与所述第一内存分区的内存地址区间的上限值的差值为1;所述第二内存分区的内存地址区间的下限值与所述所述第三内存分区的内存地址区间的上限值的差值为1。
49.举例说明:如图3所示,系统包括三个内存控制器、两个256m*16的内存颗粒以及两个512m*8的内存颗粒,其中,两个256m*16的内存颗粒以及两个512m*8的内存颗粒的前256m
的地址空间构成多通道空间,两个512m*8的内存颗粒的后256m的地址空间构成单通道空间。那么,将两个256m*16的内存颗粒以及两个512m*8的内存颗粒的前256m的地址空间构成多通道空间作为参考内存分区,将后256m的地址空间构成单通道空间最为第二内存分区。此外,如图3所示,在参考内存分区与第二内存分区相邻区域选取内存分区s,将内存分区s作为第三内存分区,并参考内存分区的其余内存分区作为第一内存分区。例如,如图4所示,将两个256m*16的内存颗粒的前215m的地址空间以及两个512m*8的内存颗粒的前215m的地址空间作为第一分区,将两个256m*16的内存颗粒的216m-256m的地址空间以及两个512m*8的内存颗粒的216m-256m的地址空间作为第三内存分区。
50.进一步,在本实施的一个实现方式中,所述第一分区对应的位宽可以与第二分区对应的位宽不同,并且第一内存分区对应的位宽大于第二内存分区对应的位宽(例如,所述第一内存分区的位宽为48bit,第二内存分区的位宽为16bit等),使得第一内存分区的最大读写带宽大于第二内存分区的最大读写带宽。这样系统可以根据第一内存分区对应的最大读写带宽与第二内存分区对应的最大读写带宽分配功能模块,使得不同读写带宽需求的功能模块有不同的内存分区响应,保证了各功能模块的响应速度。
51.此外,所述第三内存分区的位宽可以与第一内存分区的位宽相同,也可以与第二内存分区的位宽相同。在本实施例的一个实现方式中,所述第三内存分区的位宽与第一内存分区的位宽相同,这样可以系统内的功能模块启动时,通过第一内存分区和第三内存分区完成调整功能模块对应的内存分区,可以提高调整速度,进而保证功能模块的启动速度。例如,所述第一内存分区的位宽为48bit,第二内存分区的位宽为16bit,那么第三内存分区的位宽为48bit。
52.进一步,在将系统内存划分为第一内存分区、第二内存分区以及第三内存分区后,为第一内存分区和第二内存分区配置预设功能模块,也就是说,为系统内的每个功能模块设定预分配内存空间,其中,所述预设功能模块为系统装载的各功能模块,通过运行各功能模块实现系统功能,例如,编解码模块,通过运行编解码模块可以实现编码功能等。此外,由于第一内存分区的位宽大于第二内存分区的位宽,从而第一内存分区对应的预设功能模块的读写性能要求优先级高于第二内存分区对应的预设功能模块的优先级,其中,所述优先级表示预设功能模块的读写性能要求,并且优先级越高,预设功能模块的读写性能要求越高,反之,优先级越低,预设功能模块的读写性能要求越低。例如,所述预设功能模块a的优先级为第一优先级,预设功能模块b的优先级为第八优先级,那么预设功能模块a的读写性能要求高于预设功能模块b的读写性能要求。此外,所述第三内存分区未配置预设功能模块,也就是说,第三内存分区不用于响应功能模块,其仅当存在第一内存分区内的内存数据转存到第二内存分区时,用于临时存储该需要转存的内存数据。
53.在本实施例的一个实现方式中,第三内存分区的分区大小为预先设置,其可以根据实际需求来确定。在确定第三内存分区的设定空间后,可以对预分配至第一内存分区的第一预设功能模块、以及预分配至第二内存分区的第二预设功能模块进行设置。其中,对于第一内存分区内的每个第一预设功能模块,确定该第一预设功能模块的优先级,若该优先级高于预设优先级阈值,则将该第一预设功能模块设置为第一内存分区的固定功能模块,其中,所述第一内存分区中的固定功能模块的内存数据固定于第一内存分区中,当需要将第一内存分区中存储的内存数据转存至第二内存分区时,固定功能模块的内存数据不能移
动至第二内存分区。此外,若该优先级小于或者等于预设优先级阈值,获取该第一预设功能模块所需的第一计划内存空间,其中,所述第一计划内存空间为系统预先为第一预设功能模块配置的默认内存空间;若该第一计划内存空间大于该设定空间,则将第一预设功能模块设定为第二内存分区的固定功能模块。其中,所述固定功能模块为内存数据固定存储于第二内存分区中的功能模块,可以理解的是,当固定功能模块的请求读写带宽大于预设读写带宽阈值时,固定功能模块对应的内存数据依然存储于第二内存分区中,并不执行读取预设的第一内存分区对应的空闲内存空间的步骤。
54.此外,对于第二内存分区内的每个第二预设功能模块,获取该第二预设功能模块所需的计划内存空间,若该计划内存空间大于该设定空间,则将第二预设功能模块设定为第二内存分区的固定功能模块。这样一方面可以避免在将第一内存分区内的内存数据转存至第三内存分区时,出现因超过第三内存分区的内存空间而转存失败的问题,另一方面可以避免将重要程度高的功能模块转存到第二内存分区,而影响该功能模块的响应速度,进而影响系统的性能。
55.举例说明:系统内存包括两个256m*16的内存颗粒与两个512m*8的内存颗粒,第三内存分区对应的内存空间为两个256m*16的内存颗粒的225m-256m的地址空间以及两个512m*8的内存颗粒的225m-256m地址空间;预设优先级阈值为2;第一内存分区的第一预设功能模块a的优先级为1,计划内存空间为40m,第一预设功能模块b的优先级为4,计划内存空间为500m,第一预设功能模块b的优先级为3,计划内存空间为50m;第二内存分区的第二预设功能模块a,计划内存空间为300m;那么,第一预设功能模块a的优先级小于优先级阈值,第一预设功能模块a为第一内存分区的固定功能模块;第一预设功能模块b的计划内存空间大于第三内存分区的内存空间,第一预设功能模块b为第一内存分区的固定功能模块;,第一预设功能模块c的优先级大于优先级阈值,且第一预设功能模块c的计划内存空间小于第三内存分区的内存空间,第一预设功能模块c为第一内存分区的非固定功能模块;第二预设功能模块a的计划内存空间大于第三内存分区的内存空间,第二预设功能模块a为第二内存分区的固定功能模块。
56.基于此,在本实施例的一个实现方式中,当第一功能模块的请求读写带宽大于预设读写带宽阈值时,可以判断所述第一功能模块是否为第二内存分区的固定功能模块;若为固定功能模块,则将第二内存分区中该第一功能模块对应的内存空间分配给第一功能模块;若为非固定功能模块,则执行读取预设的第一内存分区对应的空闲内存空间的操作。其中,判断所述第一功能模块是否为第二内存分区的固定功能模块可以通过将第一功能模块对应的计划内存空间与第三内分区的内存空间进行比较,若计划内存空间大于第三内存分区的内存空间,则为固定功能模块;若计划内存空间小于或等于第三内存分区的内存空间,则为非固定功能模块。当然,在实际应用中,为了提高内存分配速度,在为第二内存分区分配第二预设功能模块时,可以设置各第二预设功能模块的模块类型,其中,模块类型包括固定功能模块和非固定功能模块;当第一功能模块的请求读写带宽大于预设读写带宽阈值时,可以直接跟第一功能模块的模块类型确定其为固定功能模块,还是非固定功能模块。此外,值得说明的是,各第二预设功能模块的模块类型是根据各第二预设功能模块与的计划内存空间与第三内分区的内存空间进行比较,若计划内存空间大于第三内存分区的内存空间,则为固定功能模块;若计划内存空间小于或等于第三内存分区的内存空间,则为非固定
功能模块。
57.s20、若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块。
58.具体地,所述处于停止状态的目标功能模块指的是系统中处于后台运行的功能模块;所述目标功能模块可以为一个,也可以为多个。可以理解的是,系统中可以存在一个第一预设功能模块处于停止状态,也可以存在多个第一预设功能处于停止状态,其中,所述第一预设功能模块为第一内存分区对应的预设功能模块。可以理解的是,目标功能模块对应的内存空间包含于第一内存分区。
59.在本实施例的一个实现方式中,所述第一内存分区中处于停止状态的功能模块为多个;所述获取第一内存分区中处于停止状态的目标功能模块具体包括:
60.获取第一内存分区中处于停止状态的各参考功能模块,以及各参考功能模块各自对应的驻留时间;
61.根据所述驻留时间在各参考功能模块中选取若干参考功能模块,并将选取到若干参考功能模块作为目标功能模块,其中,目标功能模块对应的内存空间与所述空闲内存空间的和大于或等于所述所需内存空间。
62.具体地,所述驻留时间指的是参考功能模块处于停止状态的时长,每个参考功能模块均对应有驻留时间。在获取到各参考功能模块后,可以将各参考功能模块的驻留时间进行比较,并且按照驻留时间从长到短的顺序从参考功能模块中选取目标功能模块,直至选取到所有目标功能模块对应的内存空间与所述空闲内存空间的和大于或等于所述所需内存空间。其中,当按照驻留时间从长到短的顺序从参考功能模块中选取目标功能模块时,若存在若干参考功能模块的驻留时间相同时,可以将若干参考功能模块的优先级,并按照优先级由高到低的顺序选取目标功能模块。当然,在实际应用中,还可以根据驻留时间按照其他方式确定目标功能模块,例如,获取各参考功能模块的优先级,在参考功能模块中选取优先级大于预设阈值的参考功能模块,之后选取到的参考功能模块中按照驻留时间从长到短的顺序从参考功能模块中选取目标功能模块。其中,预设阈值根据实际需求确定,例如,4等。
63.举例说明:第一功能模块的所需内存空间为100m,第一内分区中功能模块a对应的内存空间为空闲内存空间,空间容量为50m;由于50m<100m,从而在第一内存分区内搜索处于停止状态的功能模块,并在搜索到的所有处于停止状态的功能模块中选取驻留时间最长的功能模块b,功能模块b对应的内存空间为60m;那么功能模块b的内存空间与功能模块a的内存空间的和大于第一功能模块的所需内存空间,在功能模块b为获取到目标功能模块。当然,若功能模块b的内存空间与功能模块a的内存空间的和小于第一功能模块的所需内存空间,则继续执行在第一内存分区内搜索处于停止状态的功能模块的步骤,直至功能模块b的内存空间与功能模块a的内存空间的和大于第一功能模块的所需内存空间。当然,值得说明的是,当再次执行在第一内存分区内搜索处于停止状态的功能模块的步骤时,将确定为目标功能模块的功能模块b去除。
64.进一步,在本实施例的一个实现方式中,当第一内存分区设置固定功能模块后,在获取到参考功能模块后,需要检查参考功能模块中是否存在第一内存分区的固定功能模块;若存在第一内存分区的固定功能模块,则将第一内存分区的固定功能模块除参考功能
模块中删除,并从剩余后的参考功能模块中选取目标参数功能模块,这样可以避免将配置预设要求的功能模块转分配至第二内存分区,而影响该功能模型的处理速度。例如,优先级大于预设优先级阈值的功能模块,或者计划内存空间大于第三内存分区的功能模块等。
65.s30、将目标功能模块对应的内存数据转存于预设的第三内存分区。
66.具体地,所述第三内存分区为系统内存预先划分的,将第一内存分区的内存数据转存至第二内存分区。可以理解的是,所述第三内存分区未分配预设功能模块,系统的各功能模块的内存不会被分配至第三内存分区。当不需要将第二内存分区的功能模块转分配至第一内存分区时,所述第三内存分区为空状态,即未存储任何数据;当需要将第二内存分区的功能模块转分配至第一内存分区时,第一内存分区中需要转存到第二内存分区的内存数据临时存储于第三内存分区,以使得第一内存分区中具有可以存储第二内存分区需要转分配至第一内存分区的功能模块对应的内存数据。可以理解的是,将目标功能模块对应的内存数据临时存储于第三内存分区,并将第一内存分区中目标功能模块对应的内存数据删除,以增大第一内存分区中的可用内存空间。
67.s40、将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。
68.具体地,所述将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块指的是将第一功能模块对应的内存空间的地址空间修改为目标功能模块对应的内存空间的地址空间以及空闲内存空间的地址空间。所述内存空间的地址空间用于表示内存空间在系统内存中的存储位置信息。例如,假设内存空间的存储容量为256m,以1m为单元将内存空间划分为256个存储单元,256个存储单元为0-1m,1m-2m,...im-i 1m,...,255m-256m,i为正整数,那么im-i 1m表示内存空间的地址空间,当内存数据对应的地址空间为im-i 1m时,表示内存数据存储于内存空间的第i个存储单元。如,地址空间为125m-130m时,表示内存数据存储于第125个存储单元到第130个存储单元。
69.举例说明,假设目标功能模块对应的地址空间为512m*8内存颗粒中的125m-130m,空闲内存空间的地址空间为256m*16内存颗粒中的125m-130m,那么第一功能模块对应的内存空间的地址空间则修改为512m*8内存颗粒中的125m-130m以及256m*16内存颗粒中的125m-130m。当然,在实际应用中,空闲内存空间可以为0,那么就将目标功能模块对应的内存空间分配给第一功能模块。
70.进一步,所述第一功能模块为第二内存分区对应的功能模块,其中,所述第一功能模块为内存数据已存储在第二内存分区中的功能模块,也可以是首次启动且为第二内存分区对应的预设功能模块。由此,当第一功能模块为内存数据已存储在第二内存分区中的功能模块时,将所述目标功能模块对应的内存空间以及空闲内存空间分配给所述第一功能模块,并将第一功能模块存储于第二内存分区中的内存数据转存至目标功能模块对应的内存空间以及空闲内存空间;当第一功能模块为首次启动且为第二内存分区对应的预设功能模块,将所述目标功能模块对应的内存空间以及空闲内存空间指定给第一功能模块,这样当第一功能模块运行时,内存数据可以直接存储于将所述目标功能模块对应的内存空间以及空闲内存空间内。
71.进一步,在本实施例的一个实现方式中,当第一功能模块对应的内存数据转存至第一内存分区,或者将第二功能模块对应的内存地址指向第一内分区后,将所述第三内存
分区中的内存数据存储于第二内存分区,并清空所述第三内存分区,这样实现了内存的动态分配,并且第三内存分区可以用于执行下一次第二内存分区对应的功能模块的内存转分配。
72.综上所述,本实施例提供了一种内存分配方法,所述方法当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间;若读取到的空闲内存空间小于所述第一功能模块的所需内存空间,获取第一内存分区中处于停止状态的目标功能模块;将目标功能模块对应的内存数据转存于预设的第三内存分区;将所述目标功能模块对应的内存空间以及空闲内存空间,分配给所述第一功能模块。本发明通过第三内存分区将第一内存分区的数据动态转存到第二内存分区,当第二内存分区对应的功能模块需要读取带宽高于预设读写带宽阈值时,可以将该功能模块分配至第一内存分区,可以提高内存响应该功能模块的速度,进而提高了系统性能。
73.进一步,在本实施例的一个实现方式中,在当第一功能模块的请求读写带宽大于预设读写带宽阈值时,读取预设的第一内存分区对应的空闲内存空间之后,所述方法包括:
74.s50、若读取到的空闲内存空间大于或等于所述第一功能模块的所需内存空间,将所述空闲内存空间分配给所述第一功能模块。
75.具体地,当读取到的空闲内存空间大于或等于所述第一功能模块的所需内存空间时,说明空闲内存空间可以存储第一功能模块对应的内存数据,此时可以直接将所述空闲内存空间分配给所述第一功能模块。当然,在将空闲内存空间分配给第一功能模块时,可以确定第一功能模块为已存储在第二内存分区中的功能模块,还是首次启动且为第二内存分区对应的预设功能模块。其中,当第一功能模块为内存数据已存储在第二内存分区中的功能模块时,将空闲内存空间分配给所述第一功能模块,并将第一功能模块存储于第二内存分区中的内存数据转存至空闲内存空间;当第一功能模块为首次启动且为第二内存分区对应的预设功能模块,将所述空闲内存空间指定给第一功能模块,这样当第一功能模块运行时,内存数据可以直接存储于将所述空闲内存空间内。此外,在将空闲内存空间分配给第一功能模块后,将空闲内存空间对应的功能模块作为第二内存分区对应的预设功能模块,这样当空闲内存空间对应的功能模块运行时,空闲内存空间对应的功能模块的内存数据存储于第二内存分区内。
76.基于上述内存分配方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的内存分配方法中的步骤。
77.基于上述内存分配方法,本发明还提供了一种嵌入设备,如图5所示,所述嵌入设备包括处理器、内存控制器以及系统内存,所述处理器(例如,cpu等)、内存控制器以及系统内存(例如,ddr组合等),其中,所述系统内存划分为设划分为第一内存分区、第二内存分区以及第三内存分区;所述第一内存分区和第二内存分区均用于存储嵌入式设备装载的功能模块的内存数据;所述第三内存分区用于将第一内存分区中的内存数据转存至第二内存分区。所述处理器用于执行上述实施例中的方法。在实际应用中,上述实施例中方法作为功能模块,例如,内存管理模块,所述内存管理模块配置于嵌入设备内,并与所述处理器通信以实现上述实施例所述的方法。
78.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管
参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

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

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

相关文献