内存管理方法,装置,系统及计算机可读存储介质与流程

专利2022-05-09  104



1.本申请涉及内存管理技术领域,具体地,涉及一种内存管理方法,装置,系统及计算机可读存储介质。


背景技术:

2.通常来说,计算设备具有至少一个可编程处理元件,通常称为中央处理器(cpu);除此之外,计算设备通常还具有其他用于各种类型的专业化处理的可编程处理器,诸如用于图形处理操作的图形处理器(gpu,graphic processing unit)。gpu通常包括被设计为基于cpu所提供的指令和数据在并行数据流上执行相同指令的多个核或处理元件,从而使得gpu能够在并行地进行大数据块处理的算法中比cpu更有效。
3.桌面系统一般指桌面操作系统。cpu和gpu共享内存的方式常见于集成显卡的操作系统。操作系统在启动过程中固定分配一段内存给gpu,该段内存叫显存。显存固定不变,在播放图形时存在显存不足,在不需要播放图形时又存在内存空置浪费的问题。
4.因此,传统的内存管理中显存固定不变,在图形绘图时存在显存不足的问题,是本领域技术人员急需要解决的技术问题。
5.在背景技术中公开的上述信息仅用于加强对本申请的背景的理解,因此其可能包含没有形成为本领域普通技术人员所知晓的现有技术的信息。


技术实现要素:

6.本申请实施例提供了一种内存管理方法,装置,系统及计算机可读存储介质,以解决传统的内存管理中显存固定不变,在图形绘制时存在显存不足的问题,是本领域技术人员急需要解决的技术问题。
7.本申请实施例提供了一种内存管理方法,包括如下步骤:
8.接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;
9.控制gpu驱动程序将图形数据写入第一段分配内存;
10.通知gpu第一段分配内存的物理地址。
11.本申请实施例还提供一种内存管理装置,包括:
12.第一段分配内存分配模块,用于接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;
13.控制写入模块,用于控制gpu驱动程序将图形数据写入第一段分配内存;
14.物理地址通知模块,用于通知gpu第一段分配内存的物理地址。
15.本申请实施例还提供一种内存管理系统,包括:
16.一个或多个处理器;
17.存储装置,用于存储一个或多个程序;
18.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处
理器实现上述方法。
19.本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序;所述计算机程序被处理器执行以实现上述的方法。
20.本申请实施例由于采用以上技术方案,具有以下技术效果:
21.首先,接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存,之后,控制gpu驱动程序将图形数据写入第一段分配内存,即将图形数据写入了cpu内存中的一段;然后,再通知gpu第一段分配内存的物理地址。这样,就实现了将第一段分配内存存储gpu驱动程序写入的图形数据,即第一段分配内存被用作显存使用。本申请实施例的内存管理方法,实现了在绘图时,将cpu内存中的一段转化为显存使用,对图形数据的处理速度较快。
附图说明
22.此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
23.图1为本申请实施例的一种内存管理方法的流程图;
24.图2为本申请实施例的内存管理方法的时序流程图;
25.图3为本申请实施例的内存管理装置的示意图。
26.附图标记说明:
27.100第一段分配内存分配模块,200控制写入模块,300物理地址通知模块。
具体实施方式
28.为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
29.实施例一
30.图1为本申请实施例的一种内存管理方法的流程图;图2为本申请实施例的内存管理方法的时序流程图。
31.如图1所示,本申请实施例的内存管理方法,包括如下步骤:
32.步骤s100:接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;
33.步骤s200:控制gpu驱动程序将图形数据写入第一段分配内存;
34.步骤s300:通知gpu第一段分配内存的物理地址。
35.本申请实施例的内存管理方法,首先,接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存,之后,控制gpu驱动程序将图形数据写入第一段分配内存,即将图形数据写入了cpu内存中的一段;然后,再通知gpu第一段分配内存的物理地址。这样,就实现了将第一段分配内存存储gpu驱动程序写入的图形数据,即第一段分配内存被用作显存使用。本申请实施例的内存管理方法,实现了在绘图时,将cpu内存中的一段转化为显存使用,对图形数据的处理速度较快。
36.cpu内存中作为显存使用的部分的分配,不是操作系统主动进行的,而是操作系统被动根据gpu驱动程序发送的申请内存的请求进行分配。
37.实施中,步骤s100之前,还包括如下步骤:
38.将内存分配为专用固定显存和cpu内存。
39.gpu能够使用的内存是两部分,专用固定显存和根据gpu驱动程序申请内存的请求,将cpu内存的一段分配作为第一段分配内存的部分。
40.具体的,所述专用固定显存用于满足gpu自身运行及运算所需;作为一个实现方式,所述专用固定显存的大小是用于满足gpu自身运行及运算所需的最小值。
41.这样,专用固定显存的大小最小,又能实现gpu自身运行及运算;而gpu处理图形数据所需的内存由cpu内存中作为显存使用的部分提供。即cpu内存中作为显存使用的部分的大小是和图形数据的大小相配合的,内存的使用率较高。
42.实施中,所述专用固定显存小于所述cpu内存。这样,cpu内存中的部分作为显存使用时,对cpu实现其自身功能影响较小。
43.作为一种实现方式,所述专用固定显存所占比例为所述内存的预设比例。如专用固定显存所占比例为整个内存的1%。
44.不同计算机,因功能上侧重不同,可能导致专用固定显存所占比例有所差异。
45.实施中,步骤s100中,gpu驱动程序向操作系统发送申请内存的请求,操作系统接收gpu驱动程序申请内存的请求。gpu驱动程序向操作系统发送申请内存的请求的情形具体为,某个图形应用程序需要传输数据给gpu时,gpu驱动程序向操作系统发送申请内存的请求。
46.实施中,控制gpu驱动程序将图形数据写入第一段分配内存的步骤之后还包括以下步骤:同时进行清除缓存的操作以保证图形数据写入第一段分配内存的物理内存。
47.实施中,步骤s300,具体包括:
48.接收cpu发送的通知第一段分配内存的物理地址的通知;
49.向gpu发送通知第一段分配内存的物理地址的通知。
50.具体的,向gpu发送通知第一段分配内存的物理地址的通知的具体实现的方式为发送地址配置命令的方式。
51.图形数据流向是:gpu驱动程序将图形数据写入第一段分配内存;操作系统通知gpu第一段分配内存的物理地址后,gpu就能直接从第一段分配内存内提取图形数据。即实现了图形数据写入cpu内存,该部分cpu内存转化成显存,之后,gpu就能直接从作为显存的第一段分配内存内提取图形数据,cpu和gpu之间的数据交互较快。
52.以上,实现了将cpu内存中的一段作为显存使用。
53.下面将对作为显存的第一段分配内存的后续处理进行说明。
54.实施中,在步骤s300之后,还包括如下步骤:
55.步骤s400:获知gpu完成绘图。
56.至此,gpu完成了绘图,后续需要对显存的第一段分配内存进行处理。
57.实施中,在步骤s400之后,还包括如下步骤:
58.步骤s510:接收gpu驱动程序发送的释放临时显存的请求,回收第一段分配内存作为cpu内存;
59.其中,所述释放临时显存的请求由gpu驱动程序在图形应用程序的绘图状态为结束状态时发送。
60.具体的,步骤s510按时间顺序的步骤如下:
61.gpu驱动程序在图形应用程序的绘图状态为结束状态时,gpu驱动程序向操作系统发送释放临时显存的请求;
62.操作系统在收到释放临时显存的请求后,回收第一段分配内存作为cpu内存。
63.步骤s400和步骤s510限定了回收第一段分配内存的条件,回收第一段分配内存的条件是操作系统获知gpu完成绘图,和gpu驱动程序在图形应用程序的绘图状态为结束状态时,即是处理的图形数据是最后一帧,图形应用程序的绘图状态为结束状态时,gpu驱动程序向操作系统发送释放临时显存的请求。
64.实现了第一段分配内存作为显存使用;在使用后,再将第一段分配内存回收继续作为cpu内存。这样,在处理图形时,将cpu内存中的一段转化为显存使用,图形的绘图速度较高;在绘图结束后,回收一段分配内存作为cpu内存,内存的使用率较高,降低内存的空置。
65.实施中,在步骤s400之后,还包括如下步骤:
66.步骤s520:获知gpu驱动程序在图形应用程序的状态为绘图状态时,将第一段分配内存标记为可回收的第一段分配内存。
67.绘图不是最后一帧,图形应用程序的状态为绘图状态时,操作系统将第一段分配内存作为可回收的第一段分配内存。
68.实施中,步骤s520按时间顺序的步骤如下:
69.gpu驱动程序在图形应用程序的状态为绘图状态;
70.操作系统获知gpu驱动程序在图形应用程序的状态为绘图状态,
71.操作系统将第一段分配内存作为可回收的第一段分配内存。
72.下面,针对可回收的第一段分配内存回收的时机进行说明。
73.实施中,接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存的步骤之前,还包括如下步骤:
74.判断是否有可回收的第一段分配内存:
75.在有可回收的第一段分配内存情况下,回收可回收的第一段分配内存作为cpu内存。
76.在无可回收的第一段分配内存的情况下,进行接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存的步骤。
77.即实现了将上一帧图形数据使用尚未回收的可回收的第一段分配内存进行回收。这样,所有的第一段分配内存都有被回收的步骤,实现了cpu内存中的一段转化为显存,再转化为cpu内存的闭环。
78.图2为本申请实施例的一种内存管理方法的时序流程图。
79.如图2所示,本申请实施例的内存管理方法使用的流程如下:
80.步骤s11:判断是否有可回收的第一段分配内存;
81.在有可回收的第一段分配内存情况下,执行步骤s12,再执行步骤s13;步骤s12:回收可回收的第一段分配内存作为cpu内存;
82.在无可回收的第一段分配内存情况下,执行步骤s13:
83.步骤s13:gpu发送申请内存的请求;
84.操作系统对应的步骤为,操作系统接收到gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;
85.步骤s14:gpu驱动程序将图形数据写入第一段分配内存;
86.操作系统对应的步骤为,操作系统控制gpu驱动程序将图形数据写入第一段分配内存;
87.步骤s15:操作系统通知gpu第一段分配内存的物理地址,同时进行清除缓存的操作以保证图形数据写入第一段分配内存的物理内存;
88.要实现步骤,需要cpu向操作系统发送第一段分配内存的物理地址的通知,操作系统向gpu发送通知第一段分配内存的物理地址的通知;
89.步骤s16:gpu完成绘图通知cpu;
90.该步骤的实现的具体方式是gpu在绘图完成后中断通知cpu,即cpu在预设时间内没有收到gpu绘图通知;或者接收到cpu发送的绘图完成通知;其中,绘图完成通知由cpu主动查询获知;之后,cpu通知操作系统gpu完成绘图;
91.步骤s17:操作系统通过判断是否接收到gpu驱动程序发送的释放临时显存的请求,决定是否回收第一段分配内存:
92.接收gpu驱动程序发送的释放临时显存的请求,执行步骤s18:回收第一段分配内存作为cpu内存;其中,所述释放临时显存的请求由gpu驱动程序在图形应用程序的绘图状态为结束状态时发送;
93.在未接收gpu驱动程序发送的释放临时显存的请求,且获知gpu驱动程序在图形应用程序的状态为绘图状态时,将第一段分配内存标记可回收的第一段分配内存。
94.具体的,获知gpu完成绘图的方式,具体为:
95.在预设时间内没有收到gpu绘图通知;或者接收到cpu发送的绘图完成通知;其中,绘图完成通知由cpu主动查询获知。
96.内存管理方法的一个具体的实施例,如下:
97.在一个嵌入式系统中,cpu和gpu共享1g内存。
98.操作系统在启动过程中分配64m给gpu作为专用固定显存,剩余960m作为cpu内存。
99.如图2所示,步骤s11:判断是否有可回收的可回收的第一段分配内存;
100.在有可回收的第一段分配内存情况下,执行步骤s12,再执行步骤s13;步骤s12:回收可回收的第一段分配内存作为cpu内存;
101.在无可回收的第一段分配内存情况下,执行步骤s13:
102.步骤s13:gpu驱动程序申请内存的请求,操作系统将cpu内存的一段分配作为第一段分配内存;具体的情形为某个图形应用程序需要传输128m图形数据给gpu,即cpu需要将图形数据128m传给gpu的情况下,gpu驱动程序向操作系统发送申请内存的请求,请求的内容为128m内存。
103.步骤s14:gpu驱动程序将图形数据写入第一段分配内存,同时进行清除缓存的操作以保证图形数据写入第一段分配内存的物理内存;
104.步骤s15:操作系统通知gpu第一段分配内存的物理地址;此时,
105.操作系统将第一段分配内存作为显存供gpu使用,作为128m的显存,此时,cpu内存剩余为832m,gpu显存为专用固定显存64m和作为显存的第一段分配内存128m之和192m。
106.在作为显存的第一段分配内存被回收后,恢复为64m的专用固定显存和960m的cpu内存。
107.实施例二
108.图3为本申请实施例的内存管理装置的示意图。如图3所示,本申请实施例的内存管理装置,包括:
109.第一段分配内存分配模块100,用于接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;
110.控制写入模块200,用于控制gpu驱动程序将图形数据写入第一段分配内存;
111.物理地址通知模块300,用于通知gpu第一段分配内存的物理地址。
112.本申请实施例的内存管理装置是与实施例一的内存管理方法对应的装置,本申请实施例的内存管理装置所解决的技术问题,达到的技术效果与实施例一相对应。
113.实施中,装置还包括:
114.内存分配模块,用于将内存分配为专用固定显存和cpu内存。
115.实施中,所述专用固定显存用于满足gpu自身运行及运算所需;
116.或者所述专用固定显存所占比例为所述内存的预设比例。
117.实施中,所述专用固定显存小于所述cpu内存。
118.实施中,装置还包括:
119.获知模块,用于获知gpu完成绘图。
120.实施中,装置还包括:
121.一级回收模块,用于接收gpu驱动程序发送的释放临时显存的请求,回收第一段分配内存作为cpu内存;
122.其中,所述释放临时显存的请求由gpu驱动程序在图形应用程序的绘图状态为结束状态时发送。
123.实施中,装置还包括:
124.标记模块,用于在获知gpu驱动程序在图形应用程序的状态为绘图状态时,将第一段分配内存标记为可回收的第一段分配内存。
125.实施中,装置还包括:
126.二级回收模块,用于在有可回收的第一段分配内存情况下,回收可回收的第一段分配内存作为cpu内存。
127.实施例三
128.本申请实施例的内存管理系统,包括:
129.一个或多个处理器;
130.存储装置,用于存储一个或多个程序;
131.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如实施例一所述的方法。
132.实施例四
133.本申请实施例的一种计算机可读存储介质,其上存储有计算机程序;所述计算机程序被处理器执行以实现实施例一所述的方法。
134.在本申请及其实施例的描述中,需要理解的是,术语“顶”、“底”、“高度”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
135.在本申请及其实施例中,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
136.在本申请及其实施例中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度小于第二特征。
137.上文的公开提供了许多不同的实施方式或例子用来实现本申请的不同结构。为了简化本申请的公开,上文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本申请提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
138.尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
139.显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术特征:
1.一种内存管理方法,其特征在于,包括如下步骤:接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;控制gpu驱动程序将图形数据写入第一段分配内存;通知gpu第一段分配内存的物理地址。2.根据权利要求1所述的内存管理方法,其特征在于,接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存的步骤之前,还包括如下步骤:将内存分配为专用固定显存和cpu内存。3.根据权利要求2所述的内存管理方法,其特征在于,所述专用固定显存用于满足gpu自身运行及运算所需;或者所述专用固定显存所占比例为所述内存的预设比例。4.根据权利要求2所述的内存管理方法,其特征在于,所述专用固定显存小于所述cpu内存。5.根据权利要求1所述的内存管理方法,其特征在于,通知gpu第一段分配内存的物理地址的步骤之后,还包括如下步骤:获知gpu完成绘图。6.根据权利要求5所述的内存管理方法,其特征在于,获知gpu完成绘图的步骤之后,还包括如下步骤:接收gpu驱动程序发送的释放临时显存的请求,回收第一段分配内存作为cpu内存;其中,所述释放临时显存的请求由gpu驱动程序在图形应用程序的绘图状态为结束状态时发送。7.根据权利要求6所述的内存管理方法,其特征在于,获知gpu完成绘图的步骤之后,还包括如下步骤:获知gpu驱动程序在图形应用程序的状态为绘图状态时,将第一段分配内存标记为可回收的第一段分配内存。8.根据权利要求7所述的内存管理方法,其特征在于,接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存的步骤之前,还包括如下步骤:判断是否有可回收的第一段分配内存:在有可回收的第一段分配内存情况下,回收可回收的第一段分配内存作为cpu内存。9.根据权利要求8所述的内存管理方法,其特征在于,判断是否有可回收的第一段分配内存的步骤之后,还包括如下步骤:在无可回收的第一段分配内存的情况下,进行接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存的步骤。10.根据权利要求5所述的内存管理方法,其特征在于,获知gpu完成绘图的方式,具体为:在预设时间内没有收到gpu绘图通知;或者接收到cpu发送的绘图完成通知;其中,绘图完成通知由cpu主动查询获知。11.根据权利要求1所述的内存管理方法,其特征在于,通知gpu第一段分配内存的物理地址的步骤,具体包括:
接收cpu发送的第一段分配内存的物理地址的通知;向gpu发送通知第一段分配内存的物理地址的通知。12.一种内存管理装置,其特征在于,包括:第一段分配内存分配模块,用于接收gpu申请内存的请求,将cpu内存的一段分配作为第一段分配内存;其中,gpu申请内存的请求由gpu驱动程序根据当前绘图的操作发出;控制写入模块,用于控制gpu驱动程序将图形数据写入第一段分配内存;物理地址通知模块,用于通知gpu第一段分配内存的物理地址。13.根据权利要求12所述的装置,其特征在于,还包括:内存分配模块,用于将内存分配为专用固定显存和cpu内存。14.根据权利要求13所述的装置,其特征在于,所述专用固定显存用于满足gpu自身运行及运算所需;或者所述专用固定显存所占比例为所述内存的预设比例。15.根据权利要求13所述的装置,其特征在于,所述专用固定显存小于所述cpu内存。16.根据权利要求12所述的装置,其特征在于,还包括:获知模块,用于获知gpu完成绘图。17.根据权利要求16所述的装置,其特征在于,还包括:一级回收模块,用于接收gpu驱动程序发送的释放临时显存的请求,回收第一段分配内存作为cpu内存;其中,所述释放临时显存的请求由gpu驱动程序在图形应用程序的绘图状态为结束状态时发送。18.根据权利要求17所述的装置,其特征在于,还包括:标记模块,用于在获知gpu驱动程序在图形应用程序的状态为绘图状态时,将第一段分配内存标记为可回收的第一段分配内存。19.根据权利要求18所述的装置,其特征在于,还包括:二级回收模块,用于在有可回收的第一段分配内存情况下,回收可回收的第一段分配内存作为cpu内存。20.一种内存管理系统,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至11任一所述的方法。21.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;所述计算机程序被处理器执行以实现如权利要求1至11任一所述的方法。
技术总结
本申请实施例提供了一种内存管理方法,装置,系统及计算机可读存储介质。方法包括如下步骤:接收GPU申请内存的请求,将CPU内存的一段分配作为第一段分配内存;其中,GPU申请内存的请求由GPU驱动程序根据当前绘图的操作发出;控制GPU驱动程序将图形数据写入第一段分配内存;通知GPU第一段分配内存的物理地址。装置和系统能够实现上述方法。计算机可读存储介质,其上存储有计算机程序;所述计算机程序被处理器执行以实现上述的方法。本申请实施例解决了传统的内存管理中显存固定不变,在绘制图形时存在显存不足的问题。形时存在显存不足的问题。形时存在显存不足的问题。


技术研发人员:黄嵘
受保护的技术使用者:长沙景美集成电路设计有限公司
技术研发日:2021.03.02
技术公布日:2021/6/29

转载请注明原文地址:https://doc.8miu.com/read-2232.html

最新回复(0)