1.本发明涉及移动终端设备的内存管理领域,具体是涉及一种动态内存融合与预取技术。
背景技术:2.随着目前以智能手机为主导的移动终端设备的快速普及。一方面:终端软件生态也日益丰富,涵盖人们生活的各类app应用不断出现。另一方面:移动终端随着硬件(尤其是cpu)的不断进步,使其具备的算力也越来越强大。最终导致用户在真实的使用情况下,不断切换的各种应用的需求也逐渐增加,因此对app后台驻留的能力要求越来越苛刻。
3.对于解决上述问题,多年来各大设备生产商通过增加物理内存(ram)的方式解决以上问题,这是最直接也是最根本的方式。但是调查发现,物理内存(ram)的增大远远跟不上用户需求:原因有二:1、各类app和操作系统运行所占内存不断增加,许多应用还需要长期占用内存(如:即时交互软件)。2、人们日常切换app个数的需求也不断增长。
4.为了进一步解决内存紧张的问题,各大厂商开始研发使用linux的内存压缩技术:以oppo、vivo、中兴为代表的zram技术和以华为为代表的zram+swap技术。两者都是以“time”换取“space”但是对于zram来说所能换取的空间是非常有限的。而华为最新使用的zram+swap改善了前者的局限性,但是在写入与读取rom(外部存储器)的swap时,会造成系性能的严重损耗。原因如下:1、cpu的处理速度远高于ram读取操作。2、ram(内存)与io设备(闪存)的速度差异也是巨大的:以目前最高商用科技的硬件技术举例,ddr5与ufs3.1不断进行io操作也会大大滞留系统的性能,导致用户切换后台app卡顿等一系列不友好的交互体验。
技术实现要素:5.本发明的目的是为了解决现有移动终端内存不足导致app消杀;内存融合算法导致使用rom(eeprom)中swap空间时造成系统性能下降、用户交互卡顿、资源调度停滞等缺点,而提出了一种动态内存融合与预取技术,改变原有的需要时交换内存的策略,通过预取从而降低io操作的时间消耗,大大提高了系统的性能,操作的稳定,交互的流畅。
6.动态内存融合与预取技术包括二个模块:内存融合模块、融合预取模块。
7.内存融合模块,用于动态压缩ram内存以及融合rom存储作为内存,解决系统内存不足的问题。
8.融合预取模块,用于动态预取rom存储的数据,提前交换至ram,大大提高cache命中率,缩小磁盘和cpu之间由于速度差异所带来的延迟开销。
9.动态内存融合与预取技术包括存储和读取两方面。
10.移动终端的存储步骤。
11.步骤1、系统将数据存储到ram的主存区域。
12.步骤2、当ram主存达到存储阈值时,将数据按照lru策略压缩至ram的swap区域。
13.步骤3、当整个ram的存储全部达到存储阈值,按照lru策略将ram的swap区域数据转移至rom的swap区域。
14.步骤4、当整套内存系统(ram主存,ram的swap,rom的swap)的存储达到存储阈值时,且系统需要空闲存储区域,根据lru策略将rom的swap区域进行进程的消杀,直到产生满足系统请求的空闲存储区域。
15.移动终端的读取步骤。
16.步骤1、系统请求数据,若数据在ram主存,直接返回数据。
17.步骤2、若请求数据在ram的swap区域,通过lru策略,交换主存与请求数据。
18.步骤3、若请求数据在rom的swap区域,通过lru策略,将ram的swap数据转移至rom的swap。
19.步骤4、再通过lru策略,将ram主存数据压缩至ram的swap区域。
20.步骤5、最后将系统请求数据从rom转移至ram主存。
21.步骤6、通过预取表判断是否存在需要预存数据,如果存在,重复步骤3,4,最后转移预取数据至ram的swap区域。
22.与现有技术相比,本发明的有益效果是:独创了内存融合的数据预取技术,利用cpu的过剩算力,在调度空闲期将rom数据提前预取至ram,提高cache命中率,缩小磁盘io操作和cpu之间由于速度差异所带来的延迟开销。本发明能够明显提升系统稳定性,提高系统性能,降低用户交互卡顿,访问时延的感知。
附图说明
23.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
24.图1为本发明的动态内存融合与预取技术的移动终端数据交互结构图。
25.图2为请求数据在ram主存的程序流程图。
26.图3为请求数据在ram的swap区域的程序流程图。
27.图4为请求数据在rom的swap区域的程序流程图。
28.图5为本发明核心的融合预取算法流程图。
具体实施方式
29.为使本发明实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施方法,对本发明的具体实施方法做进一步详细和完整的描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。以下实施例或者附图用于说明本发明,但不用来限制本发明的范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.需要特别说明:本文中涉及的“rom”是指eeprom(电子抹除式可复写只读内存)的简称,即目前主流的闪存(flash memory)技术。
31.请参阅图1,图1为本发明动态内存融合与预取技术的基本硬件架构与数据流图。
本发明应用于基本的图1移动终端硬件架构,该架构包括:cpu(central processing unit)11、ram(random access memory)12、rom(eeprom简称)15。本发明将ram分为主存13和swap压缩区域14。将rom取一定的空间作为swap16。
32.图1中,当cpu发出数据请求指令后,会寻址后依次从ram和rom进行资源的请求调度。图中箭头代表了详细的数据流执行策略。分存储策略与读取策略来进行详细的阐述。
33.本发明的存储数据流如下:当cpu11进行资源调度时,先将数据加载至ram主存区域13,随着资源请求的增加,当移动终端设备的ram主存13达到存储阈值后,cpu11使用最近最少使用(lru)准则来确定回收页面的次序。
34.根据页面回收策略,将需要回收的资源按照压缩率压缩转储到ram的swap压缩区域14。当ram的swap14达到存储阈值后,根据最近最少使用准则来确定回收的次序。
35.根据页面回收策略,将需要回收的资源转储至rom的swap16。
36.本发明的动态内存融合与预取技术对资源读取调度数据流如下:以细化后的图2、图3、图4、图5程序流程图来进行详细阐述。
37.请参阅图2,本实施例包括如下步骤。
38.20、cpu发出数据加载请求。
39.21、查找进程页表,根据请求的数据的线性地址查找真实的物理地址。
40.22、23、根据物理地址访问ram主存,判断目标数据是否存储在ram主存之上,如果没有发生缺页。
41.24、将请求的目标数据返回至cpu。
42.25、数据请求cache命中成功,更新维护lru表。
43.图3中30、如果cpu请求数据不再ram主存,参阅图3做出以下步骤。
[0044] 31、判断目标数据是否在ram的swap压缩区域。
[0045]
如果31命题为真,则执行步骤32。
[0046]
具体的,如果根据公式1: x-y》=q(其中x为ram主存目前剩余空间;y为请求目标数据大小;q为ram存储剩余阈值)成立,则将目标数据直接从ram的swap压缩区域解压缩至ram主存。反之,若公式不成立,根据最近最少使用(lru)准则筛选回收页,将回收页压缩至ram的swap区域,并再次判断公式1,循环操作至公式1成立时,将ram的swap区域的目标数据解压缩至ram主存32。若循环操作过程中,ram的swap区域达到存储阈值,需要在循环执行前先将ram的swap区域数据按照lru准则转移至rom的swap区域,再执行循环操作。
[0047]
图4中40、如果cpu请求数据不再ram主存,也不在ram的swap区域,参阅图4做出以下步骤。
[0048]
41、判断目标数据是否在rom的swap区域。
[0049]
如果41命题成立,则执行42、43、44。
[0050]
具体的,根据最近最少使用(lru)准则筛选的ram主存回收页m,m需满足公式2:m+x-y》q(其中x为ram主存目前剩余空间;y为请求目标数据大小;q为ram存储剩余阈值)。根据最近最少使用(lru)准则筛选ram的swap的回收页n,n需满足公式3:n+l-m*k》p(其中l为ram的swap空闲容量;p为ram的swap区域存储剩余阈值;k为压缩率)。依次将n从ram的swap区域转移至rom的swap,将m从ram的主存压缩至ram的swap,将目标数据从rom的swap转移至ram的主存。
[0051]
需要说明,本发明的所有数据的存储过程是进行实时动态调优机制的。即当用户主动回收或杀死进程时,该进程所处存储空间产生空闲时,优先级别较低的存储空间的数据会转移至此。存储空间优先级ram主》ram的swap》rom的swap。
[0052]
具体的,情况1、当ram的主存进程被杀死而产生空闲存储空间时,如果ram的swap有暂存数据,将会自动根据mru策略(最近最常使用策略)转移至ram的主存,至此ram的swap产生空闲空间,如果rom的swap区域有暂存数据,根据mru策略转移至ram的swap。情况2、当ram的swap进程数据被杀死,导致ram的swap产生空闲存储空间,若rom的swap区域有暂存数据,根据mru策略转移至ram的swap。情况3、当rom的swap的进程被杀死,则其他数据暂时不移动。
[0053]
需要说明,本发明的所有存储进程进行实时的内存释放机制,最大程度上降低app消杀所带来的用户交互体验的不友好感。
[0054]
具体的,情况1、当用户主动消杀进程时,将消杀后的空闲内存,根据权利要求2,各模块进行实时内存融合。情况2、在用户非主动消杀进程时,整套内存系统(ram主存,ram的swap,rom的swap)的存储达到存储阈值时,且系统需要空闲存储区域,根据lru策略将rom的swap区域进行进程的消杀,直到产生满足系统请求的空闲存储区域。
[0055]
图5为本发明的核心融合预取流程。
[0056]
100、通过时间流将物理地址连续化来生成预取表。
[0057]
具体的,移动终端所运行的app数据,其物理地址是无规则的,但是用户的使用习惯是有关联的。时间流是连续的,为此用时间流来结构化数据的预取地址。预取表是物理地址到预取地址的映射,根据时间流(每个物理地址第一次出现的时间)将预取物理地址排序后,产生连续的预取地址,预取地址间隔为1,随时间流增大。
[0058]
具体预取表维护算法如表例1:若时间流为:a,s,d,f,g,h,a,s,g,f,d,h,l,则生成如下预取表。
[0059]
200当cpu请求数据在rom的swap时,获取目标数据后,根据预取表,对目标数据的结构地址+1,得到预取数据的结构地址,通过结构地址映射物理地址,400判断该物理地址是否在rom的swap;500、若在则对预取数据进行预取到ram的swap区域,若不在则不预取。
[0060]
通过预取操作,将移动终端的空闲时性能进行利用;预取后大大提高cache命中率,用cpu的强大算力,以压缩代替对磁盘的io操作,缩小磁盘io操作和cpu之间由于速度差
异所带来的延迟开销。
[0061]
特别说明,对预取数据操作时的资源调度方式等同于目标数据。
[0062]
总的来说,通过动态内存融合与预取技术,明显提高了移动终端的内存可用性,增强了后台app的存活性能;独有的动态预取技术也明显的降低了用户使用的延迟性与顿挫感,使移动终端的性能最大限度的释放。
[0063]
本领域的普通技术人员可以理解:实现本发明所述的全过程或部分步骤可以通过程序指令集和相关硬件共同完成。程序指令集存储在移动终端可读取的存储介质(ram、rom等等各类可以存储程序代码的介质)中,指令集在执行时,执行的是本发明说描述的各个步骤。
[0064]
本领域的普通技术人员将明白,以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术工作人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。