CN110554837A - 易疲劳存储介质的智能交换 - Google Patents

易疲劳存储介质的智能交换 Download PDF

Info

Publication number
CN110554837A
CN110554837A CN201910465806.0A CN201910465806A CN110554837A CN 110554837 A CN110554837 A CN 110554837A CN 201910465806 A CN201910465806 A CN 201910465806A CN 110554837 A CN110554837 A CN 110554837A
Authority
CN
China
Prior art keywords
application
memory
state
fatigue
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910465806.0A
Other languages
English (en)
Inventor
K·R·温卡特瑞曼
A·博米克
L·D·德塞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of CN110554837A publication Critical patent/CN110554837A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Abstract

本发明题为“易疲劳存储介质的智能交换”。一个实施方案提供了一种方法,该方法包括:确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率,该组概率包括在一段时间内应用程序使用的概率;基于与该组应用程序相关联的一组概率来更新概率模型;基于来自概率模型的输出选择要交换到易疲劳存储设备的应用程序;以及将应用程序交换到易疲劳存储设备,其中交换该应用程序包括将应用程序的存储器地址空间和应用程序状态交换至易疲劳存储设备。

Description

易疲劳存储介质的智能交换
交叉引用
本申请要求于2019年4月30日提交的美国专利申请16/399,513的优先权,该美国专利申请要求于2018年6月3日提交的美国临时专利申请62/679,844的权益,其公开内容以引用方式并入本文。
技术领域
本文所述的实施方案涉及虚拟存储器系统,更具体地讲,涉及为易疲劳存储介质启用智能交换。
背景技术
已经开发了虚拟化技术,以使计算设备能够使用尺寸超过设备上的存储器的实际物理容量的虚拟存储器空间来执行程序。这尤其可用于移动和手持设备上,由于物理尺寸限制,移动和手持设备可能相对于较大外形的设备具有减少量的进程存储和数据存储容量。然而,常规虚拟存储器系统利用存储器交换技术,其中虚拟存储器的未使用区域可交换到耦接至存储器设备的存储设备以释放进程存储器的区域。常规来讲,移动设备和手持设备避免使用交换文件或交换分区,这是由于此类设备所使用的易疲劳存储介质(例如,NAND闪存)引起磨损。将易失性存储器频繁交换到此类存储设备可能加快磨损并减弱用于这种设备的功能。因此,移动设备或手持设备的制造商寻求传统虚拟存储器后备存储的替代方案。
发明内容
一个实施方案提供了一种方法,包括确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率,基于与该组应用程序相关联的一组概率来更新概率模型,该组概率包括应用程序使用的概率,基于来自概率模型的输出选择要交换到易疲劳存储设备的应用程序,以及将应用程序交换到易疲劳存储设备,其中交换应用程序包括将数据存储在用于应用程序和应用程序状态的存储器地址空间之内。
一个实施方案提供了一种电子设备,包括非易失性电可擦除半导体存储设备,与所述非易失性电可擦除半导体存储设备耦接的存储设备,以及一个或多个处理器以将指令从非易失性电可擦除半导体存储设备中加载到存储设备并且执行指令。在被执行时,指令使得所述一个或多个处理器确定与配置为在电子设备上执行的一组应用程序相关联的一组概率,所述一组概率包括应用程序使用的概率,基于所述一组概率更新概率模型,接收请求以终止该组应用程序中的应用程序的进程,所述应用程序具有至少部分地映射到存储设备的虚拟地址空间,查询所述概率模型以确定应用程序的存储器是否在进程将要终止之前交换到非易失性电可擦除半导体存储设备,并且基于查询的结果将应用程序的虚拟地址空间内的存储器存储在非易失性可电擦除半导体存储设备。
一个实施方案提供了一种非暂态机器可读存储介质,该介质存储指令使得电子设备的一个或多个处理器执行如下操作,包括:确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率,基于与该组应用程序相关联的一组概率来更新概率模型,该组概率包括应用程序使用的概率,基于来自概率模型的输出选择交换到易疲劳存储设备的应用程序,其中概率模型包括机器学习模型,以及将应用程序交换到易疲劳存储设备,其中交换应用程序包括将数据存储在用于应用程序和应用程序状态的存储器地址空间之内。
以上发明内容不包括本发明的实施方案的所有方面的详尽列表。预期本发明的实施方案包括可根据以上概述的各方面的所有合适组合来实践的所有系统和方法。此外,通过附图,本发明的其它特征将显而易见,下文提供对其的简短描述。
附图说明
本实施方案以举例的方式进行说明,并且不限于各个附图的图形,在附图中类似的附图标号指示类似的元件,并且其中:
图1是根据实施方案的示例性数据处理系统部件的框图,其包括实现虚拟存储器系统的硬件;
图2是示出根据实施方案的包括压缩虚拟存储器系统的数据处理系统的框图;
图3是示出根据实施方案的将应用程序地址空间交换到闪存存储设备的框图;
图4是示出根据实施方案的虚拟存储器的压缩和压实的框图;
图5是根据实施方案的支持同时执行多个应用程序的电子设备的图示;
图6是根据实施方案的用于存储器使用管理器的逻辑的流程图;
图7A-图7E示出了根据实施方案的基于时隙的应用程序交换概率计算;
图8是示出根据实施方案的存储器使用管理器进行智能交换确定的逻辑的流程图;
图9为示出根据实施方案的从非易失性虚拟存储器交换和恢复应用程序存储器和应用程序状态的逻辑的流程图;
图10为根据实施方案的多用户数据处理系统的系统软件架构的框图;
图11是根据实施方案的由数据处理系统使用的多层软件架构的框图;
图12为根据实施方案的数据处理系统硬件的框图;以及
图13是根据实施方案的额外数据处理系统的框图。
具体实施方式
一种用于电子设备的虚拟存储器系统的各种实施方案和方面,其中对诸如NAND闪存设备和/或其他可电擦除的半导体存储器的易疲劳存储设备实现了虚拟存储器到非易失性存储器的交换。通过使用智能交换管理器来限制对存储设备的磨损,智能交换管理器选择要交换到非易失性存储的最有效的应用程序。智能交换管理器可在时间段内收集应用程序受欢迎性统计信息(启动,激活等)并生成应用程序将在给定时间段内使用的一组概率。此类概率可与其他设备行为数据一起使用以生成概率模型的训练集。在一个实施方案中,应用程序使用统计信息的收集仅由系统的用户在收集此类统计信息时执行。
在一个实施方案中,该概率可用于生成交换预测向量,其中每个元素包括概率值,该概率值反映电子设备上的应用程序将是要交换的有效的应用程序的预测。在这种语境中,效率指示将应用程序交换到存储器将有效地利用可用于电子设备上的存储器管理系统的有限交换预算。随着应用程序使用模式随时间的推移而变化,可以使用新数据定期更新概率模型。概率模型生成的交换预测数据还可以考虑到交换预算随时间推移的潜在增加或减少。在一个实施方案中,概率模型包括机器学习模型。
在一个实施方案中,当选择要交换的应用程序时,设备上的存储器使用管理器可将应用程序、应用程序存储器和应用程序的运行时状态交换至非易失性存储器,而不是终止应用程序。在一个实施方案中,可在存储到非易失性存储设备之前压缩和压实应用程序存储器,以进一步降低设备上的磨损。当要重新激活所选择的应用程序时,被存储到非易失性存储器中的压缩虚拟存储器可被恢复到系统存储器。
本说明书包括受版权保护的材料,诸如图形用户界面图像的图示。版权所有人,包括本发明的受让人,特此在这些资料中保留其包括版权在内的权利。由于本专利文档或本专利公开内容出现在专利与商标局文件或记录中,因此版权所有人不反对任何人对本专利文档或本专利公开内容的拓制,但会以其他方式保留任何形式的所有版权权利。苹果公司版权所有2018。
在本说明书中对“一个实施方案”或“实施方案”的引用是指结合该实施方案描述的特定特征、结构或特性可以被包括在本发明的至少一个实施方案中。在本说明书中的各个位置出现短语“在一个实施方案中”不一定都是指同一个实施方案。
以下描述举例说明了本发明的各种实施方案,并且不应理解为限制性的。描述了众多的具体细节以提供对本发明多个实施方案的全面理解。然而,在某些实例中,众所周知或常规的细节并未被描述以便提供对本发明的实施例的简明论述。
图1是根据实施方案的示例性数据处理系统部件的框图,包括实现虚拟存储器系统的硬件。示例性系统包括具有一个或多个内核103A-N的处理器101、高速缓存105、存储器管理单元107(MMU)和转换后备缓冲器(TLB)106。该系统还包括物理系统存储器设备122和存储子系统130,该存储子系统包括耦接到一个或多个存储设备136的一个或多个控制器133。示例性虚拟存储器系统可被配置为将系统物理存储器设备122的不连续区域呈现为连续虚拟存储器地址空间,并且可被包括在移动或手持式数据处理系统中。
包括在处理器中的MMU 107可被配置为加速硬件中虚拟存储器到物理存储器地址的转换。MMU 107可被配置为具有存储在物理系统存储器设备122中的一个或多个页表109的地址。每个页表109为包含多个页表条目(例如,PTE 110)的数据结构,每个PTE包含存储器页面的物理地址。存储器页面的大小可以根据系统配置和处理器体系结构而有所不同。每个页表都由存储器页面的虚拟地址建立索引。来自页表109的数据可高速缓存在TLB 106中以进一步加快地址转换。
如果物理存储器地址存在于给定虚拟地址的物理系统存储器设备122中,则MMU107使用存储器中TLB 106或页表109中的数据来将给定输入虚拟地址转换为输出物理地址。虚拟存储器地址包含若干位,位的数量与虚拟地址空间的大小相对应。根据系统的虚拟存储器配置,位的一部分可对应于与存储器地址相关的虚拟页面,并且位的一部分可对应于页面内的存储器偏移。64位虚拟存储器系统可以使用多达64位的地址空间,从而允许超过18艾字节的可寻址空间。因此,虚拟存储器系统可使得计算设备的操作系统能够寻址比系统中物理包括的明显更多的存储器。
在常规虚拟存储器系统中,随着系统物理存储器设备122中的可用空间被消耗,存储器设备122上的虚拟存储器页面可被备份到存储子系统130。然而,被设计为仅使用易疲劳非易失性存储设备的一些计算系统,可简单地从系统存储器设备122移除并丢弃存储器设备122上的虚拟存储器页面(例如,与终止使用丢弃的虚拟存储器页面的任何应用程序相关联)。由于对可对此类设备执行的写入次数有限制,可省略此类系统中的非易失性备用存储的使用。例如,NAND闪存单元可在变得不可用之前仅维持有限数量的擦除周期。当闪存存储设备内的NAND闪存单元劣化时,存储设备的存储容量和性能可能降低。
在本文所述的实施方案中,提供了一种智能交换系统以允许具有易疲劳存储装置的移动和手持设备能够支持非易失性虚拟存储器备用存储。非易失性虚拟存储器备用存储可允许虚拟存储器页面交换到非易失性存储器以减少系统物理存储器内的存储器压力。通过采用统计分析和机器学习模型来选择将有资格被交换到存储器的特定应用程序,减少了对存储设备的交换引起的磨损。如果存储器管理逻辑确定应该释放存储器以降低存储器压力,那么存储器管理逻辑可以将符合条件的应用程序交换到存储器,而不是终止那些应用程序并丢弃其存储器页面。如果用户启动交换的应用程序,则可将应用程序和相关联的存储器恢复到存储器,而不是从初始化状态重新启动应用程序。在一个实施方案中,应用程序的执行状态可被保留,使得应用程序执行可被恢复到恰好要交换至存储器之前的状态。应用程序的执行状态可包括应用程序的图形界面状态,包括部分输入的文本或其他界面细节。
除了启用智能应用程序交换之外,还可以使用压缩虚拟存储器。虚拟存储器的压缩区域可由虚拟存储器系统启用并映射至易失性存储器中的地址区域。未压缩易失性存储器中的活动虚拟存储器页面可被压缩并复制到压缩区域虚拟存储器,而不是将应用程序的存储器空间交换至易疲劳非易失性存储器或作为其阻碍。在压缩虚拟存储器的一些具体实施中,以对利用虚拟存储器的应用程序不可知的方式管理虚拟存储器页面。在此类具体实施中,用于多个应用程序的压缩存储器可存储在压缩存储器的相同区域中。另外,可基于虚拟存储器页面的使用模式而不是单个应用程序的使用模式,将用于各种应用程序的虚拟存储器页面调进和移出压缩虚拟存储器。然而,本文所述的实施方案提供了以应用程序为中心的压缩虚拟存储器,该虚拟存储器使得所选择的应用程序的整个存储器空间能够被压缩并压实到非易失性存储器备用存储器中。
在一个实施方案中,将应用程序交换到非易失性存储器包括将应用程序的虚拟存储器地址映射至非易失性存储器中的地址区域,压缩任何未压缩的应用程序存储器,以及在将应用程序存储器存储到虚拟存储器中的地址区域之前压实压缩的应用程序存储器。可维持应用程序的虚拟存储器地址的映射,使得当应用程序随后被恢复或重新启动时,虚拟存储器页面故障可触发应用程序的存储的存储器被取消压实并且恢复到存储器。在恢复期间,可以解压缩先前未压缩的应用程序区域。
图2是示出根据实施方案的数据处理系统200的框图,该数据处理系统包括压缩的虚拟存储器系统以允许将应用程序数据压缩存储到非易失性虚拟存储器。在一个实施方案中,数据处理系统200包括数据处理系统200的存储器设备内的操作环境201。操作环境201可被存储在存储器设备诸如图1所示的系统存储器设备122中,或存储在支持指令的原地执行的任何随机存取存储器(RAM)设备中。数据处理系统200另外包括一个或多个海量存储设备221,其可包括固态驱动器(SSD)、闪存存储器或另一种形式的可电擦除非易失性存储器。操作环境201可通过接口模块219与海量存储设备221进行通信,该接口模块可包括能够与海量存储设备221进行通信的存储处理器或存储器控制器。接口模块219还可包括存储器控制器和能够与压缩存储器217的区域进行通信的程序逻辑。压缩存储器217的该区域可驻留在执行操作环境201的存储器存储设备的不同区域中。
操作环境201可包括与应用程序223和分页器层模块205通信的虚拟存储器管理器203。应用程序223可与虚拟存储器管理器203通信以分配和释放虚拟存储器。分页器层模块205可以管理非易失性存储器中的备用存储器中的非驻留虚拟存储器页面,并在请求这些页面时获取这些页面。在一个实施方案中,分页器层模块205可被配置为与压缩存储器管理模块207通信。压缩存储器管理模块207包括压实模块209和压缩器/解压缩器模块211。压缩存储器管理模块207可被配置为管理存储器设备中的压缩存储器217的池。在一个实施方案中,压缩存储器217的池为配置为存储压缩的存储器页面的存储器设备的地址区域。压缩存储器池的地址区域可被映射到虚拟存储器的地址区域,作为用于进程执行的来自未压缩处理器的独立区域。
在一些实施方案中,压缩存储器的区域可被映射或写入到一个或多个海量存储设备221上的地址,以例如在压缩存储器217中创建额外的空间。在一个实施方案中,压缩存储器217包括压缩存储器单元的阵列,其可为可变大小的压缩存储器单元。每个压缩存储器单元可对应于未压缩存储器中的一个或多个虚拟存储器页面。压缩存储器217中的多个可变大小的压缩存储器单元可由压实模块209压实成一个或多个固定大小的压实存储器段。压缩存储器段可包括例如与应用程序223相关联的压缩数据元素(例如,压缩虚拟存储器页面)。在一个实施方案中,压实存储器段的大小被设定成能够促进数据处理设备上的存储器设备,诸如托管操作环境201的存储器设备和一个或多个海量存储设备221之内或之间的有效I/O传输。示例性压实存储器区段大小包括128或256千字节。然而,压实存储器区段的具体大小可基于数据处理系统的I/O配置而变化。
在一个实施方案中,操作环境201包括存储器使用管理模块215以管理操作环境201的存储器使用。存储器使用管理模块215可执行各种操作以基于系统存储器使用的当前状态来增加可用于执行应用程序的物理存储器的量。各种操作可包括终止应用程序以回收存储器空间,并且根据本文所述的实施方案,将应用程序和应用程序存储器交换到海量存储设备221。在一个实施方案中,当应用程序被交换到海量存储设备时,应用程序的虚拟存储器被标记为受保护,使得地址不被虚拟存储器系统释放,尽管应用程序所使用的物理存储器可被重新分配用于其他目的。
在一个实施方案中,存储器使用管理器215遵从交换预算,该交换预算限制可在给定时间段内发生的交换次数。为了优化对有限数量的交换的使用,存储器使用管理器215可与智能交换管理器213通信以接收提供预测数据的向量,以指示如果交换到海量存储设备221,则一组活动应用程序中的哪一个会有效地利用交换空间。可基于多种算法来确定交换效率,包括基于应用程序使用时间或一段时间内的应用程序启动次数的应用程序普及性。交换效率还可受到指示某些应用程序的定期和周期性使用的用户例程的影响。智能交换管理器213可向存储器使用管理器215提供交换预测向量。存储器使用管理器215可使用交换预测向量来通知决策逻辑,该决策逻辑确定应用程序及其相关联的存储器是否应交换到非易失性存储器。并非所有应用程序都有资格在任何给定时间交换到存储器,并且存储器使用管理器215可确定,为了保持海量存储设备221的长期可行性,应用程序将被终止而不是被交换。另选地,可使用其他技术来增加系统中的可用存储器量,诸如将应用程序存储器压缩到压缩存储器217中以释放未压缩的存储器以供使用,或将压缩存储器217中的应用程序交换到海量存储设备221以释放压缩存储器217内的空间。
图3是示出根据实施方案的将应用程序地址空间304交换到闪存存储设备305的框图。例示了闪存存储器设备350,但本文所述的概念适用于任何易疲劳电可擦除半导体存储器。在一个实施方案中,应用程序(例如,图2的应用程序223)具有应用程序地址空间304,该应用程序地址空间包括存储在未压缩存储器中的第一虚拟存储器(VM)区域331和存储在压缩存储器中的第二VM区域332。存储器使用管理器(例如,图2的存储器使用管理器215)可确定应用程序应被交换至闪存存储器设备350。在一个实施方案中,当交换应用程序时,应用程序地址空间304被存储到非易失性存储器。第一VM区域331可由压缩器/解压缩器模块211压缩。然后,压缩存储器可由压实模块209压实。第二VM区域332中的任何应用程序存储器可由压实模块209压实。来自应用程序地址空间304的压缩和压实存储器可被存储到闪存存储器设备350上的压缩应用程序存储器352。
在一个实施方案中,第二VM区域332的压缩虚拟存储器包括由压实模块209填充到固定大小的压实存储器区段中的可变大小压缩数据元素。另外,存储在第一VM区域331中的未压缩虚拟存储器页面可由压缩器/解压缩器模块211压缩到压缩虚拟存储器页面中。新压缩的虚拟存储器页面可另外通过压实模块209压实成压缩和压实的虚拟存储器的相邻区段(例如,压实的虚拟存储器区段)。
在一个实施方案中,可进行与应用程序地址空间304相关联的虚拟存储器地址之间的映射,使得访问与应用程序相关联的虚拟存储器可触发页面故障,导致存储在压缩应用程序存储器352中的存储器被加载到存储器中。存储压缩数据元素的压实存储器区段能够以压缩形式被交换回第二VM区域332中。存储当应用程序处于活动状态时未压缩的压缩数据元素的压实存储器区段可经由压缩器/解压缩器模块211以未压缩形式交换到第一VM区域331中。
图4是示出根据实施方案的虚拟存储器的压缩和压实的框图。在一个实施方案中,与应用程序相关联的进程存储器包括未压缩的存储器单元402,诸如未压缩存储器421的某区域内的未压缩的虚拟存储器页面(例如,页面A、页面B、页面C)。存储器页面可为连续的或非连续的,并且可具有不同的大小。与执行应用程序相关联的虚拟存储器还可包括压缩存储器池423中的一个或多个先前压缩的存储器单元406a。先前压缩的存储器单元406a包括压缩数据元素,诸如先前已由压缩模块(例如,图2-图3的压缩器/解压缩器模块211)压缩的一个或多个虚拟存储器页面(例如,页面D、页面E、页面F、页面G)。
先前压缩的存储器单元406a可处于压缩存储池423内的不连续位置,直到在一个实施方案中,先前压缩的存储器单元406由压实模块(例如,图2-图3的压实模块209)收集和压实。压实模块可将先前压缩的存储器单元406a(例如,页面D-G)压实成一个或多个固定大小的压实存储器区段406b。在一个实施方案中,先前压缩的存储器单元406a可被压实而无需解压缩或重新压缩先前压缩的存储器的任何页面。
在此类实施方案中,与应用程序相关联的未压缩存储器单元402(例如,页面A-C)也可被压缩器/解压缩器模块压缩并且压实到压缩存储器池423中的一个或多个固定大小的压实存储器区段404中。在一个实施方案中,压实存储器区段的大小被设定成有利于在交换操作期间存储器设备内或存储器设备之间(例如,在系统存储器设备122和图1的存储子系统130内或之间)的有效I/O传输。
图5是根据实施方案的支持同时执行多个应用程序的电子设备500的图示。如图所示,电子设备500是平板计算设备,但本文所述的实施方案适用于其他类型的电子设备,诸如智能电话设备、膝上型计算机、台式计算机或本文所述的其他计算设备。电子设备500包括显示设备501,可在该显示设备上显示多个应用程序。应用程序包括至少一个后台应用程序504和一个或多个前台应用程序(例如,前台应用程序502、前台应用程序506、前台应用程序508)。每个前台应用程序可以是由电子设备500执行的一个或多个进程或线程。
电子设备500包括可用于执行应用程序的有限数量的物理存储器。当启动应用程序时,将为应用程序启动一个或多个进程,每个应用程序消耗一部分可用存储器。系统的存储器管理器可以动态地将部分存储器分配给应用程序,并在不再需要时释放存储器以供再次使用。由于执行存储器分配变得更加困难,因此系统的存储器压力增大。在一系列存储器压力阈值下,发生存储器压力事件。例如,当应用程序和其他系统资源可用的自由存储器百分比低于阈值水平时,会发生存储器压力事件,从而导致存储器页面回收进程开始。
图6是根据实施方案的用于存储器使用管理器的逻辑600的流程图。存储器使用管理器(例如,存储器使用管理器215)可与虚拟存储器管理器(例如,虚拟存储器管理器203)一起工作以回收存储器。
在一个实施方案中,逻辑600包括以确定设备上的可用物理存储器是否较低,如框605所示。在一个实施方案中,使用设备上的可用物理存储器与物理存储器总量的比率来确定可用物理存储器是否低。如果可用物理存储器低,则逻辑600可将存储器压力通知发送至所有应用程序,如框610所示。所通知的应用程序可使用应用程序专用方法抢先释放某些存储器。
如果可用存储器仍然低,如框615所确定的,逻辑600可压缩存储器用于空闲、暂停和/或后台应用程序,如框620处所示。空闲、暂停或后台应用程序可以将其应用程序进程空间压缩到压缩存储器池中。如果重新激活应用程序,那么可以解压缩并恢复应用程序存储器。
如果可用存储器仍然低,如框625所确定的,逻辑600可交换或终止空闲、暂停和/或后台应用程序,如框630处所示。已压缩到压缩存储器池中的空闲、暂停或后台应用程序可交换到非易失性存储器。未压缩存储器中的空闲应用程序可在被存储到非易失性存储器之前被压缩和压实。另选地,可终止应用程序,并且可回收应用程序的已分配存储器。在框630处执行交换或终止空闲、暂停和后台应用程序,以避免如果逻辑600在框635处确定可用的存储器保持低,则需要在框640处终止一个或多个活动前台应用程序。可以基于多种因素来确定是否交换或终止应用程序。在一个实施方案中,本文所述的智能交换管理器213可生成应用程序交换概率计算来确定将最充分利用可用的有限交换预算的一组应用程序。概率可被馈送至机器学习模型,该机器学习模型可基于计算出的概率和历史应用程序使用模式进行训练。然后,机器学习模型可用于生成可提供给存储器使用管理器的交换预测向量。存储器使用管理器可以使用所提供的信息以及其他因素来确定哪些应用程序可交换到非易失性存储器以减轻系统存储器压力。
图7A-图7E示出了根据实施方案的基于时隙的应用程序交换概率计算。在一些实施方案中执行基于时隙的应用程序交换概率计算,以允许在给定时间段期间跨多个时隙重新计算应用程序交换概率。
如图7A所示,在一个实施方案中,智能交换逻辑可生成给定时间段的时隙直方图710。在一个实施方案中,时隙直方图710可指示应用程序受欢迎度度量,诸如一组应用程序712在该时间段内的启动次数711。启动次数711可包括通过选择计算设备的用户界面上的应用程序启动图标来启动应用程序的次数。启动次数711还可包括应用程序正在使用计算设备的多任务特征选择的次数。例如,如果用户要在时隙期间启动应用程序1、应用程序2、应用程序3和应用程序4中的每一者,则针对每个应用程序指示一个启动。在一个实施方案中,如果用户从应用程序2切换到应用程序1,则该开关可被计数为应用程序1的附加启动。如果用户切换回应用程序2,则该开关可被计数为应用程序2的附加启动。可以为一天中的每个时隙生成新的时隙直方图710。可以修正给定日期内的时隙数量,以覆盖每个时隙的特定时间段。在一个实施方案中,给定日期内的时隙数量可基于应用设备的使用而变化。在一些实施方案中,可使用另选的应用程序普及性度量,诸如应用程序在最前和/或者计算设备上活动的时间。在一个实施方案中,可基于应用程序的启动和应用程序的最前/活动时间来生成总体应用程序普及性度量。在一个实施方案中,使用度量也可扩展到计算设备上的特定进程或服务。
如图7B所示,可利用一个或多个方程执行应用程序交换概率计算720。应用程序交换概率计算720可用于确定应用程序被交换之后的时间段内应用程序将被重新启动的可能性Papp722。如果应用程序被交换至后台状态,则系统可经历可导致应用程序终止的存储器压力事件,例如,在图6的框630处终止后台应用程序。如果在终止应用程序之前将后台应用程序存储器和执行状态交换到非易失性存储器,则用户体验得到改善,因为可通过恢复应用程序存储器和执行状态来立即继续应用程序的执行。否则,可能需要用户从初始化状态重新启动应用程序。
在一个实施方案中Papp722可基于以下公式(1)。
其中k是交换预算,即可在一段时间内执行的交换总数。直方图的L1被计算为如以下公式(2)所示。
Papp722能够被用于预测可能性724,对于给定的交换预算k,给定应用程序很可能在交换到非易失存储器之后重新启动。
如图7C所示,在一个实施方案中,智能交换管理器213包括机器学习模型732、训练数据缓冲器734、训练模块736和应用程序交换概率模块738。机器学习模块732可包括机器学习模型,该机器学习模型使用训练数据缓冲区734内的数据定期由训练模块736进行训练。训练数据缓冲区734可包括历史应用程序活动和存储器使用模式,以及由应用程序交换概率模块738生成的概率。训练数据缓冲区734中的数据可用于优化机器学习模块732,以使机器学习模块732能够更好地预测应用程序何时可能在给定时间段内被启动或重新启动。
如图7D所示,智能交换管理器213可在时间T-1和时间T之间的第一时间段期间收集应用程序统计信息(742A),其中T表示评估期的持续时间。在评估期结束时,智能交换管理器213可使用应用程序交换概率模块738来执行操作以评估交换概率(744A)。时间T之后,智能交换管理器213还可以在时间T+1处重新评估交换概率(744B)一次之前采集统计信息(742B)。在一个实施方案中,应用程序使用统计信息的收集仅由系统的用户在收集此类统计信息时执行。
在一个实施方案中,智能交换管理器213可实现图7E中所示的逻辑750。逻辑750可导致智能交换管理器213进入用于智能交换管理的新时间段,如框752所示。时间段的长度可在实施方案和具体实施之间变化。智能交换管理器213经由应用程序交换概率模块738可基于在电子设备上执行的应用程序的启动和/或使用度量来确定交换预测变量,如框754所示。使用的具体启动和/或使用度量可根据系统用户已提供同意的统计信息收集程度而变化。智能交换管理器213然后可基于交换预测变量和其他训练数据来更新机器学习模型,如框756所示。其他训练数据可包括可用于确定要交换至存储器的最佳一组应用程序的其他信息,包括由存储器使用管理器215提供的反馈。使用逻辑750,智能交换管理器然后就可以将交换预测向量提供给存储器使用管理器,如框758所示。
图8是示出根据实施方案的存储器使用管理器进行智能交换确定的逻辑800的流程图。在一个实施方案中,逻辑800可由如图2所示的存储器使用管理器215来实现。例如,存储器使用管理器215可确定基于系统内的存储器压力,存储器使用管理器215应交换或终止空闲、暂停和/或后台应用程序。存储器使用管理器215可交换被确定为有限交换预算的有效使用的应用程序并且终止未有效交换的其他应用程序。
如框802处所示,存储器使用管理器215可使用逻辑800来分析存储器使用空闲、暂停和/或者后台应用程序。然后,逻辑800可确定有资格被交换的一组应用程序,如框803所示。可使用多种技术来确定有资格交换的一组应用程序。例如,在一个实施方案中,存储器使用管理器215可分析空闲,暂停和/或后台应用中的每一者的存储器使用模式。然后,存储器使用管理器215可确定(例如)应用程序使用的专用存储器与共享存储器的比率。使用大量共享存储器的应用程序可能不是交换的良好候选者,因为其他应用程序或进程可能正在使用该存储器。如果应用程序交换到非易失性存储器,那么应用程序的共享存储器(如果由另一进程访问)必须恢复到存储器。恢复共享存储器可抵消因交换应用程序而导致的存储器压力的任何减少。但是,在很大程度上使用专用存储器的应用程序可能是要交换的良好候选者,因为专用存储器仅由一个应用程序使用。由于交换应用程序和应用程序的存储器空间而导致的存储器压力减小有可能持续到应用程序恢复到存储器为止。可以考虑其他因素以确定是否可以将应用程序添加到有资格进行交换的一组应用程序中。例如,如果系统正在使用交换文件来存储交换至非易失性存储器的应用程序,则存储器使用管理器215可确定是否存在足够的交换文件空间来存储应用程序的存储器和执行状态。在通过将应用程序存储器转换为虚拟存储器的压缩区域进行交换之前对应用程序存储器进行压缩的情况下,压缩池中应该存在足够的空间来压缩应用程序存储器空间。
在一个实施方案中,如果将应用程序添加至有资格交换的一组应用程序,则存储器使用管理器215将不交换应用程序,除非该应用程序可能在一段时间内再次被使用。再次使用的可能性可由智能交换管理器213和与智能交换管理器213相关联的机器学习模型来确定。在一个实施方案中,逻辑800使存储使用管理器215查询机器学习模型以确定应用程序是否应交换,如框804处所示。在一个实施方案中,逻辑800使得存储器使用管理器215针对有资格交换的该组应用程序中的每个应用程序来查询机器学习模型。在一个实施方案中,智能交换管理器213向存储器使用管理器215提供交换预测向量,该交换预测向量包括用于指示交换应用程序再次使用的可能性的每个活动应用程序的概率值。在一个实施方案中,交换预测向量的值考虑了应用程序是否可能被重新用作活动应用程序或最前应用程序,或者是否可能将应用程序作为后台应用程序来启动。
在框805处,逻辑800可使用多种度量,包括机器学习模型查询或交换预测矢量数据,以确定是否应将给定应用交换至易疲劳非易失性存储器。如果应用程序不被交换,则存储器使用管理器215的逻辑800可简单地终止应用程序808的一个或多个进程并回收应用程序所使用的物理存储器。如果在框805处,逻辑800确定应交换应用程序,则存储器使用管理器215可引导虚拟存储器系统的寻呼逻辑(例如,图2的寻呼机层模块205)将应用程序地址空间和执行状态交换至易疲劳非易失性存储器。如框806处所示,在存储器压缩处于适当位置的情况下,逻辑800可例如经由压缩机/解压缩机模块211压缩应用程序存储器空间。在一个实施方案中,压缩存储器可例如经由压实模块209压实。然后逻辑800可将压缩(并且任选压实)的应用程序存储器空间和应用程序状态(包括应用程序执行状态)写入到易疲劳非易失性存储设备。然后,逻辑800可终止一个或多个应用程序进程,如框808所示。然而,当应用程序进程被终止时,用户重新启动或重新激活该应用程序的尝试可导致应用程序存储器被恢复并且该应用程序可使用所保存的应用程序状态来继续执行。然而,如果应用程序未在阈值时间段内重新启动,则可丢弃存储的存储器和应用程序状态。阈值时间段可例如基于交换预算,所存储的存储器的大小和可用的存储空间而变化。
图9示出了根据实施方案的用于交换和恢复应用程序的进程900的框图。进程900可通过如图2所示的分页器层模块205来执行。如框902所示,过程900包括将应用程序、应用程序存储器和应用程序状态交换至易疲劳非易失性存储设备,诸如NAND闪存设备。交换应用程序、应用程序存储器和应用程序状态可使用本文所述的交换进程和逻辑来执行。
如框904所示,在一段时间之后,应用程序启动程序可接收用于启动交换的应用程序的指示。在接收到此类指示时,进程900包括将压缩的应用程序存储器和状态从非易失性存储器复制到系统存储器,如框906所示。进程900另外包括基于所存储的应用程序状态来继续应用程序的执行,如框908所示。
图10为根据实施方案的多用户数据处理系统的系统架构的框图。数据处理系统包括被配置为支持针对1至N个用户账户的多用户数据处理的各种软件1010和硬件1020部件(例如,用户1 1002-A、用户2 1002-B、用户N 1002-N)。在一个实施方案中,该系统的软件1010可用于实现图2的操作环境201的变型。硬件1020可被配置为具有部件以提供虚拟存储器系统,诸如图1所示的虚拟存储器系统。与每个用户帐户相关联的进程可通过操作系统(OS)1016提供的用户界面来访问应用软件1012。数据处理系统的硬件1020可包括一个或多个存储器设备1022、包括一个或多个处理器的处理系统1024,以及一个或多个存储设备1026。
虚拟存储器管理器VMM 1017可以提供存储器管理服务,诸如虚拟存储器映射和分页。根据本文所述的实施方案,操作系统1016可以配置VMM 1017将存储设备1026上的地址映射到存储器,例如以加载应用程序软件1012的二进制对象或系统库或框架1014,或向或从易疲劳非易失性存储设备存储或加载压缩或压实的存储器或者压缩和压实存储器。
图11是根据实施方案的由数据处理系统使用的多层软件架构的框图。软件部件通过用户空间和内核空间之间的划分来示出。尽管其他布置是可能的,但是用户应用程序(例如,用户应用程序1102)和一些操作系统部件(例如,操作系统用户界面层1106和核心操作系统层1110)在用户空间中执行。在内核空间中,操作系统内核和一组设备驱动程序在内核和设备驱动程序层1112中操作。内核和设备驱动程序层1112管理整个操作系统的基础功能,并为用户空间软件提供形式化和安全机制以访问数据处理系统硬件。
用户界面(UI)应用程序框架1104为用户应用程序1102提供机制以访问由操作系统(OS)UI层1106提供的UI服务。在核心操作系统层1110中执行与用户界面无关的基础操作系统功能。可使一个或多个数据管理框架(诸如核心应用程序框架1108)可用于用户应用程序以便于访问操作系统功能。
示例性用户应用程序1102可以是多个用户应用程序中的任何一个,诸如web浏览器、文档查看器、图片查看器、电影播放器、文字处理或文本编辑应用程序、电子邮件应用程序或本领域已知的其他应用程序。用户应用程序1102访问示例性UI应用程序框架1104中的指令,用于创建和绘制图形用户界面对象,诸如图标、按钮、窗口、对话框、控件、菜单和其他用户界面元素。UI应用程序框架1104还提供附加功能,包括菜单管理、窗口管理和文档管理,以及文件打开和保存对话框,拖放及复制和粘贴处理。
核心操作系统层1110包含实现包括应用程序安全性、系统配置、图形和媒体硬件加速以及目录服务和与其相关的特征的操作系统部件。多个应用程序框架(包括核心应用程序框架1108)提供一组API以使用户应用程序1102能够访问对应用程序必不可少的核心服务,但不直接与应用程序的用户界面相关。核心应用程序框架1108可便于应用程序对数据库服务、凭证和安全服务、备份服务、数据同步服务以及可能对应用程序有用的其他基础功能的访问。
核心应用程序框架1108或等效的应用程序框架可提供对基于远程服务器的存储的访问,以用于包括同步文档存储、键值存储和数据库服务的功能。键值存储允许用户应用程序1102跨多个客户端设备在用户应用程序1102的多个实例之间共享诸如用户偏好或书签的少量数据。用户应用程序1102还可经由核心应用程序框架1108访问基于服务器的多设备数据库解决方案。
本文所述的系统和方法可在各种不同的数据处理系统和设备中实现,所述数据处理系统和设备包括通用计算机系统、专用计算机系统,或者通用计算机系统和专用计算机系统的混合。可使用本文所述的方法中的任一种方法的示例性数据处理系统包括台式计算机、膝上型计算机、平板电脑、智能电话、蜂窝电话、个人数字助理(PDA)、嵌入式电子设备或消费电子设备。
图12是根据实施方案的用于移动或嵌入式设备的设备架构1200的框图。设备架构1200包括存储器接口1202、包括一个或多个数据处理器的处理系统1204、图像处理器和/或图形处理单元以及外围设备接口1206。各种部件可通过一条或多条通信总线或信号线耦接。各种部件可以是单独的逻辑部件或设备或可以集成在一个或多个集成电路,诸如片上系统集成电路。
存储器接口1202可以耦接至存储器1250,其可以包括高速随机存取存储器诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)和/或非易失性存储器,诸如但不限于闪存存储器(例如,NAND闪存、NOR闪存,等等)。
传感器、设备和子系统可耦接到外围设备接口1206以促成多个功能。例如,运动传感器1210、光传感器1212和接近传感器1214可耦接到外围设备接口1206以促进移动设备功能。还可存在一个或多个生物特征传感器1215,诸如用于指纹识别的指纹扫描器或用于面部识别的图像传感器。其他传感器1216也可连接至外围设备接口1206,诸如定位系统(例如,GPS接收器)、温度传感器、或其他感测设备以促进相关的功能。可利用相机子系统1220和光学传感器1222(如电荷耦合设备(CCD)或互补金属氧化物半导体(CMOS)光学传感器)来促进相机功能,例如拍摄照片和视频剪辑。
可通过一个或多个无线通信子系统1224来促进通信功能,这些无线通信子系统可包括射频接收器和发射器和/或光学(例如,红外)接收器和发射器。无线通信子系统1224的具体设计与实现可取决于移动设备打算通过其操作的通信网络。例如,包括示出的设备架构1200的移动设备可包括设计来通过GSM网络、CDMA网络、LTE网络、Wi-Fi网络、Bluetooth网络或任何其他无线网络操作的无线通信子系统1224。具体地,无线通信子系统1224可提供通信机构,在该通信机构中,媒体回放应用程序可从远程媒体服务器检索资源或从远程日历或事件服务器检索调度事件。
可将音频子系统1226耦接到扬声器1228和麦克风1230以促进支持语音的功能,诸如语音识别、语音复制、数字记录和电话功能。在本文描述的智能媒体设备中,音频子系统1226可以是包括支持虚拟环绕声的高质量音频系统。
I/O子系统1240可包括触摸屏控制器1242和/或其他输入控制器1245。对于包括显示设备的计算设备,触摸屏控制器1242可耦接至触敏显示器系统1246(例如,触摸屏)。触敏显示系统1246和触摸屏控制器1242可例如使用多种触摸和压力感测技术的任何一种检测接触和运动或压力,触摸和压力感测技术包括但不限于电容性、电阻性、红外和表面声波技术,以及用于确定与触敏显示系统1246接触的一个或多个点的其它接近传感器阵列或其它元件。触敏显示系统1246的显示输出可由显示控制器1243生成。在一个实施方案中,显示控制器1243可在可变帧速率下向触敏显示系统1246提供帧数据。
在一个实施方案中,包括传感器控制器1244以监测、控制,和/或处理从一个或多个运动传感器1210、光传感器1212、接近传感器1214,或其他传感器1216接收的数据。传感器控制器1244可包括逻辑来解释传感器数据以通过分析来自传感器的传感器数据来确定多个运动事件或活动中的一者的发生。
在一个实施方案中,I/O子系统1240包括其他输入控制器1245,可耦接到其他输入/控制设备1248,诸如一个或多个按钮、摇臂开关、拇指轮、红外线端口、USB端口和/或指针设备诸如触笔或控件/装置诸如扬声器1228和/或麦克风1230的音量控件的向上/向下按钮。
在一个实施方案中,耦接至存储器接口1202的存储器1250可存储操作系统1252的指令,包括便携式操作系统接口(POSIX)兼容和不兼容的操作系统或嵌入式操作系统。操作系统1252可包括用于处理基础系统服务以及用于执行硬件相关任务的指令。在一些具体实施中,操作系统1252可以是内核。
存储器1250还可以存储通信指令1254以促进与一个或多个附加设备、一个或多个计算机和/或一个或多个服务器的通信,例如从远程web服务器获取web资源。存储器1250还可包括用户界面指令1256,包括图形用户界面指令以有利于图形用户界面处理。
此外,存储器1250可存储传感器处理指令1258以促进传感器相关处理和功能;促进与电话相关的过程及功能的电话指令1260;促进与电子消息处理相关的过程及功能的即时消息指令1262;促进与网页浏览相关的过程及功能的网页浏览器指令1264;促进与媒体处理相关的过程和功能的媒体处理指令1266;位置服务指令包括GPS和/或导航指令1268和基于Wi-Fi的位置指令以促进基于位置的功能性;促进与相机相关的过程和功能的相机指令1270;和/或其他软件指令1272,以有利于其他过程和功能,例如安全过程和功能以及与系统相关的过程和功能。存储器1250还可以存储其它软件指令,诸如促进与web视频相关的过程和功能的web视频指令;和/或促进与网络购物相关的过程和功能的网络购物指令。在一些具体实施中,媒体处理指令1266分为音频处理指令和视频处理指令,分别用于促进与音频处理相关的过程和功能以及与视频处理相关的过程和功能。移动设备标识符,诸如国际移动设备身份(IMEI)1274或类似的硬件标识符也可存储在存储器1250中。
上面所识别的指令和应用程序中的每一者可对应于用于执行上述一个或多个功能的指令集。这些指令不需要作为独立的软件程序、进程或模块来实现。存储器1250可包括附加指令或更少的指令。此外,可在硬件和/或软件中,包括在一个或多个信号处理和/或专用集成电路中,执行各种功能。
图13为根据实施方案的计算系统1300的框图。示出的计算机系统1300旨在表示一系列计算系统(有线或无线的),包括例如台式计算机系统、膝上型计算机系统、平板电脑系统、蜂窝电话、包括支持蜂窝的PDA的个人数字助理(PDA)、机顶盒、娱乐系统或其他消费电子设备、智能电器设备、或者智能媒体回放设备的一个或多个具体实施。另选的计算系统可以包括更多、更少和/或不同的部件。计算系统1300可用于提供在计算设备和/或计算设备可能与之连接的服务器设备。
计算机系统1300包括总线1335或用于传递信息的其他通信设备,和与总线1335耦接的可处理信息的处理器1310。虽然计算系统1300被图示为具有单个处理器,但是计算系统1300可以包括多个处理器和/或协处理器。计算系统1300还可包括存储器1320,诸如耦接到总线1335的随机存取存储器(RAM)或其他动态存储设备。存储器1320可存储可由处理器1310执行的信息和指令。在由处理器1310执行指令期间,存储器1320还可用于存储临时变量或其他中间信息。
计算系统1300还可包括只读存储器(ROM)1330和/或耦接到总线1335的可存储用于处理器1310的信息和指令的其他数据存储设备1340。数据存储设备1340可以是或包括各种存储设备,例如闪存存储器设备、磁盘,或光盘并且可通过总线1335或通过远程外围设备接口耦接到计算系统1300。
计算系统1300还可经由总线1335耦接到显示设备1350以向用户显示信息。计算系统1300还可以包括数字字母混合输入设备1360,该设备包括数字字母键和其他键,其可以联接到总线1335以将信息和命令选项发送到处理器1310。另一种用户输入设备包括光标控件1370设备,诸如触控板、鼠标、轨迹球、或光标方向键,用于向处理器1310传递方向信息和命令选择以及在显示设备1350上控制光标移动。计算系统1300还可以经由一个或多个网络接口1380从通信地耦接的远程设备接收用户输入。
计算系统1300还可以包括一个或多个网络接口1380,以提供对诸如局域网之类的网络的访问。网络接口1380可以包括,例如具有天线1385的无线网络接口,所述天线可以表示一个或多个天线。计算系统1300可以包括多个无线网络接口,诸如Wi-Fi和近场通信(NFC)和/或蜂窝电话接口的组合。网络接口1380也可以包括例如有线网络接口,以经由网络电缆1387与远程设备通信,该电缆可以是例如,以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
在一个实施方案中,网络接口1380可以例如通过符合IEEE 802.11标准来提供对局域网的接入,并且/或者无线网络接口可以例如通过符合蓝牙标准提供对个人区域网络。其他无线网络接口和/或协议也可得到支持。除了经由无线LAN标准进行通信之外或代替经由无线LAN标准进行通信,网络接口1380可以使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议、长期演进(LTE)协议和/或任何其他类型的无线通信协议来提供无线通信。
计算系统1300还可包括一个或多个能量源1305和一个或多个能量测量系统1345。能量源1305可包括耦接到外部电源的AC/DC适配器、一个或多个电池、一个或多个电荷存储设备、USB充电器,或其他能量源。能量测量系统包括至少一个电压或电流测量设备,可测量计算系统1300在预先确定的时间段内消耗的能量。此外,可包括一个或多个能量测量系统测量,例如,显示设备,冷却子系统,Wi-Fi子系统,或其他常用的或高能量消费子系统所消耗的能量。
如上所述,本发明技术的一个方面包括采集和使用包括应用程序活动数据来改进交换到易疲劳存储设备的虚拟存储器系统的性能。本公开设想,在一些实例中,该所采集的数据可包括唯一地识别或可用于识别特定人员的个人信息数据。此类个人信息数据可包括人口统计数据、基于位置的数据、在线标识符、电话号码、电子邮件地址、家庭地址、与用户的健康或健身等级相关的数据或记录(例如,生命特征测量、药物信息、锻炼信息)、出生日期、或任何其他个人信息。虽然这一数据可由本文所述的计算系统采集,使用此类数据将收集计算机系统本地。
本公开认识到,在本发明技术中使用此类个人信息数据可用于增强计算设备,尤其是移动计算设备的用户的用户体验。本公开设想负责采集、分析、公开、传输、存储或其他使用此类个人信息数据的实体将遵守既定的隐私政策和/或隐私实践。具体而言,将期望此类实体实施和一贯地应用一般公认为满足或超过维护用户隐私的行业或政府所要求的隐私惯例。关于使用个人数据的此类信息应当被突出并能够被用户方便地访问,并应当随数据的采集和/或使用变化而被更新。用户的个人信息应被采集仅用于合法使用。另外,此类采集/共享应只发生在接收到用户同意或在适用法律中所规定的其他合法根据之后。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保其他有权访问个人信息数据的人遵守其隐私政策和流程。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和做法。此外,应针对便采集和/或访问的特定类型的个人信息数据调整政策和实践,并使其适用于适用法律和标准,包括可用于施加较高标准的辖区专有的具体考虑因素。例如,在美国,对某些健康数据的收集或获取可能受联邦和/或州法律的管辖,诸如健康保险转移和责任法案(HIPAA);而其他国家的健康数据可能受到其他法规和政策的约束并应相应处理。
不管前述情况如何,本公开还预期用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开预期可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据,诸如应用使用数据的访问。此外,本公开的目的是应管理和处理个人信息数据以最小化无意或未经授权访问或使用的风险。一旦不再需要数据,通过限制数据采集和删除数据可最小化风险。此外,并且当适用时,包括在某些健康相关应用程序中,数据去标识可用于保护用户的隐私。可在适当时通过移除标识符、控制所存储数据的量或特异性(例如,在城市级别而不是在地址级别采集位置数据)、控制数据如何被存储(例如,在用户间汇集数据)、和/或其他方法诸如差异化隐私来促进去标识。
因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,由于缺乏此类个人信息数据的全部或一部分,本技术的各种实施方案不会变得不可操作,因为可在不使用用户的个人信息的情况下执行至少一些应用程序预测和交换优化。
在前面的说明中,已经描述了本公开的示例性实施方案。显而易见的是,在不脱离本公开的更广泛的实质和范围的情况下,可对其进行各种修改。相应地,说明书和附图被视为是例示性意义而不是限定性意义。所提供的描述和示例中的具体细节可用于一个或多个实施方案中的任何地方。不同实施方案或示例的各种特征可与所包括的一些特征和排除的其他特征不同地组合,以适应多种不同的应用。示例可包括主题,诸如方法,用于执行该方法的行为的装置,包括指令的至少一种机器可读介质,所述指令在由机器执行时使得机器执行该方法的行为,或者根据本文所述的实施方案和示例执行装置或系统的动作。此外,本文描述的各种部件可为用于执行本文所描述的操作或功能的装置。
一种用于电子设备的虚拟存储器系统的各种实施方案和方面,其中对诸如NAND闪存设备和/或其他可电擦除的半导体存储器的易疲劳存储设备启用虚拟存储器到非易失性存储器的交换。通过使用智能交换管理器来限制对存储设备的磨损,智能交换管理器选择要交换到非易失性存储的最有效的应用程序。智能交换管理器可在时间段内收集应用程序受欢迎性统计信息(启动,激活等)并生成应用程序将在给定时间段内使用的一组概率。此类概率可与其他设备行为数据一起使用以生成概率模型的训练集。在一个实施方案中,应用程序使用统计信息的收集仅由系统的用户在收集此类统计信息时执行。
一个实施方案提供了一种方法,包括确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率,基于与该组应用程序相关联的一组概率来更新概率模型,该组概率包括应用程序使用的概率,基于来自概率模型的输出选择应用程序以交换到易疲劳存储设备,以及将应用程序交换到易疲劳存储设备,其中交换应用程序包括将数据存储在用于应用程序和应用程序状态的存储器地址空间之内。
一个实施方案提供了一种电子设备,包括非易失性电可擦除半导体存储设备,与所述非易失性电可擦除半导体存储设备耦接的存储设备,以及一个或多个处理器以将指令从非易失性电可擦除半导体存储设备中加载到存储设备并且执行指令。在被执行时,指令使得所述一个或多个处理器确定与配置为在电子设备上执行的一组应用程序相关联的一组概率,所述一组概率包括应用程序使用的概率,基于所述一组概率更新概率模型,接收请求以终止该组应用程序中的应用程序的进程,所述应用程序具有至少部分地映射到存储设备的虚拟地址空间,查询所述概率模型以确定应用程序的存储器是否在进程将要终止之前交换到非易失性电可擦除半导体存储设备,并且基于查询的结果将应用程序的虚拟地址空间内的存储器存储在非易失性可电擦除半导体存储设备。
一个实施方案提供了一种非暂态机器可读存储介质,该介质存储指令使得电子设备的一个或多个处理器执行如下操作,包括:确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率,基于与该组应用程序相关联的一组概率来更新概率模型,该组概率包括应用程序使用的概率,基于来自概率模型的输出选择交换到易疲劳存储设备的应用程序,其中概率模型包括机器学习模型,以及将应用程序交换到易疲劳存储设备,其中交换应用程序包括将数据存储在用于应用程序和应用程序状态的存储器地址空间之内。
除了本文所述的内容之外,在不脱离本文的范围的情况下,可对所公开的实施方案和具体实施进行各种修改。因此,本文的图示和实施例应当理解为示例性的而非限制性的。各种实施方案的范围和精神应当仅通过参考以下权利要求书来测量。

Claims (20)

1.一种方法,包括:
确定与被配置为在电子设备上执行的一组应用程序相关联的一组概率;
基于与所述一组应用程序相关联的所述一组概率来更新概率模型,所述一组概率包括应用程序使用的概率;
基于来自所述概率模型的输出来选择要交换到易疲劳存储设备的应用程序;以及
将所述应用程序交换到所述易疲劳存储设备,其中交换所述应用程序包括存储所述应用程序的存储器地址空间内的数据以及应用程序状态。
2.根据权利要求1所述的方法,还包括响应于存储器压力事件来将所述应用程序交换至所述易疲劳存储设备。
3.根据权利要求1所述的方法,其中存储所述应用程序的所述存储器地址空间包括压缩所述应用程序的所述存储器地址空间内的数据以及将所述数据存储到所述易疲劳存储设备。
4.根据权利要求1所述的方法,其中所述易疲劳存储设备是电可擦除的非易失性半导体存储器设备。
5.根据权利要求1-4中任一项所述的方法,还包括:
接收启动所述应用程序的消息;
将所述应用程序的存储器地址空间的存储的数据从所述易疲劳存储设备恢复到存储器;
从所述易疲劳存储设备读取针对所述应用程序的应用程序状态;以及
基于所述应用程序状态来启动所述应用程序。
6.根据权利要求5所述的方法,其中所述应用程序状态包括所述应用程序的执行状态,并且基于所述应用程序状态启动所述应用程序包括基于所述应用程序的所述执行状态来恢复所述应用程序的执行。
7.根据权利要求6所述的方法,其中所述应用程序状态还包括针对所述应用程序的用户界面状态。
8.根据权利要求1所述的方法,其中所述概率模型为机器学习模型。
9.一种电子设备,包括:
非易失性可电擦除半导体存储器设备;
存储器设备,所述存储器设备与所述非易失性可电擦除半导体存储器设备耦接;
一个或多个处理器,所述一个或多个处理器用于将指令从所述非易失性可电擦除半导体存储器设备加载到所述存储器设备中并执行所述指令,其中所述指令在被执行时使得所述一个或多个处理器:
确定与被配置为在所述电子设备上执行的一组应用程序相关联的一组概率,所述一组概率包括应用程序使用的概率;
基于所述一组概率更新概率模型;
接收终止所述一组应用程序中的应用程序的进程的请求,所述应用程序具有至少部分映射到所述存储器设备的虚拟地址空间;
在所述进程将被终止之前,查询所述概率模型以确定是否要将所述应用程序的存储器交换到所述非易失性可电擦除半导体存储器设备;以及
基于所述查询的结果将所述应用程序的所述虚拟地址空间内的存储器存储到所述非易失性可电擦除半导体存储器设备。
10.根据权利要求9所述的电子设备,其中所述概率模型是机器学习模型。
11.根据权利要求9所述的电子设备,所述一个或多个处理器还终止所述应用程序的所述进程,其中响应于存储器压力事件而发出终止所述应用程序的进程的所述请求。
12.根据权利要求9所述的电子设备,其中交换所述应用程序的所述虚拟地址空间内的存储器包括压缩所述存储器并将所述存储器存储到所述非易失性可电擦除半导体存储器设备。
13.根据权利要求9-12中任一项所述的电子设备,所述一个或多个处理器还将所述应用程序的所述进程的进程状态存储到所述非易失性可电擦除半导体存储器设备,所述进程状态包括用于所述应用程序的所述进程的执行状态和所述应用程序的用户界面状态。
14.根据权利要求13所述的电子设备,所述一个或多个处理器还:
接收启动所述应用程序的消息;
将所述应用程序的所述虚拟地址空间内的所述存储器从所述非易失性可电擦除半导体存储器设备交换到所述存储器设备;
恢复所述应用程序的所述进程的所述进程状态;
恢复所述应用程序的执行;以及
恢复所述应用程序的用户界面状态。
15.根据权利要求9所述的电子设备,所述一个或多个处理器还响应于确定所述应用程序在阈值时间段内尚未被启动而删除用于所述应用程序的所存储的存储器。
16.一种存储指令的非暂态机器可读介质,所述指令使电子设备的一个或多个处理器执行操作,所述操作包括:
确定与被配置为在所述电子设备上执行的一组应用程序相关联的一组概率;
基于与所述一组应用程序相关联的所述一组概率来更新概率模型,所述一组概率包括应用程序使用的概率;
基于来自所述概率模型的输出选择要交换到易疲劳存储设备的应用程序,其中所述概率模型包括机器学习模型;以及
将所述应用程序交换到所述易疲劳存储设备,其中交换所述应用程序包括存储所述应用程序的存储器地址空间内的数据和应用程序状态。
17.根据权利要求16所述的非暂态机器可读介质,所述操作还包括响应于存储器压力事件将所述应用程序交换到所述易疲劳存储设备。
18.根据权利要求16所述的非暂态机器可读介质,其中存储所述应用程序的所述存储器地址空间包括压缩所述应用程序的所述存储器地址空间内的数据以及将所述数据存储到所述易疲劳存储设备。
19.根据权利要求16所述的非暂态机器可读介质,其中所述易疲劳存储设备是电可擦除的非易失性半导体存储器设备。
20.根据权利要求16-19中任一项所述的非暂态机器可读介质,所述操作还包括:
接收启动所述应用程序的消息;
将所述应用程序的存储器地址空间的所存储的数据从所述易疲劳存储设备恢复到存储器;
从所述易疲劳存储设备读取所述应用程序的应用程序状态;以及
基于所述应用程序状态启动所述应用程序,其中所述应用程序状态包括所述应用程序的执行状态,基于所述应用程序状态启动所述应用程序包括基于所述应用程序的执行状态恢复所述应用程序的执行,所述应用程序状态还包括所述应用程序的用户界面状态,并且恢复所述应用程序的执行还包括恢复所述应用程序的用户界面状态。
CN201910465806.0A 2018-06-03 2019-05-31 易疲劳存储介质的智能交换 Pending CN110554837A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862679844P 2018-06-03 2018-06-03
US62/679,844 2018-06-03
US16/399,513 US20190370009A1 (en) 2018-06-03 2019-04-30 Intelligent swap for fatigable storage mediums
US16/399,513 2019-04-30

Publications (1)

Publication Number Publication Date
CN110554837A true CN110554837A (zh) 2019-12-10

Family

ID=68693782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910465806.0A Pending CN110554837A (zh) 2018-06-03 2019-05-31 易疲劳存储介质的智能交换

Country Status (2)

Country Link
US (1) US20190370009A1 (zh)
CN (1) CN110554837A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113138941A (zh) * 2020-01-20 2021-07-20 华为技术有限公司 内存交换的方法、装置
FR3107975B1 (fr) * 2020-03-05 2022-12-02 Idemia France Procédé mis en œuvre dans un module à circuit intégré, module à circuit intégré correspondant, système comportant un tel module et programme d’ordinateur associé
US11861395B2 (en) 2020-12-11 2024-01-02 Samsung Electronics Co., Ltd. Method and system for managing memory for applications in a computing system
US11650747B2 (en) * 2021-06-10 2023-05-16 Vmware, Inc. High throughput memory page reclamation
US11874731B2 (en) * 2021-10-28 2024-01-16 Hewlett Packard Enterprise Development Lp Predicting and mitigating memory leakage in a computer system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050257199A1 (en) * 2004-05-13 2005-11-17 Enrico Johansson Method of and system for performance analysis and software component installation
CN102226894A (zh) * 2011-05-23 2011-10-26 中兴通讯股份有限公司 一种移动设备内存管理方法及装置
US20150067238A1 (en) * 2013-08-29 2015-03-05 Sandisk Technologies Inc. Computing Device and Method for Predicting Low Memory Conditions
CN104520823A (zh) * 2012-08-07 2015-04-15 高通股份有限公司 用于混合存储器管理的方法、系统和设备
US20150373107A1 (en) * 2012-10-02 2015-12-24 Nextbit Systems, Inc. Managing applications on an electronic device
US20160154558A1 (en) * 2009-07-20 2016-06-02 Qualcomm Incorporated Selective hibernation of activities in an electronic device
CN107632697A (zh) * 2017-09-30 2018-01-26 广东欧珀移动通信有限公司 应用程序的处理方法、装置、存储介质及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050257199A1 (en) * 2004-05-13 2005-11-17 Enrico Johansson Method of and system for performance analysis and software component installation
US20160154558A1 (en) * 2009-07-20 2016-06-02 Qualcomm Incorporated Selective hibernation of activities in an electronic device
CN102226894A (zh) * 2011-05-23 2011-10-26 中兴通讯股份有限公司 一种移动设备内存管理方法及装置
CN104520823A (zh) * 2012-08-07 2015-04-15 高通股份有限公司 用于混合存储器管理的方法、系统和设备
US20150373107A1 (en) * 2012-10-02 2015-12-24 Nextbit Systems, Inc. Managing applications on an electronic device
US20150067238A1 (en) * 2013-08-29 2015-03-05 Sandisk Technologies Inc. Computing Device and Method for Predicting Low Memory Conditions
CN107632697A (zh) * 2017-09-30 2018-01-26 广东欧珀移动通信有限公司 应用程序的处理方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
US20190370009A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US11531625B2 (en) Memory management method and apparatus
CN110554837A (zh) 易疲劳存储介质的智能交换
KR102069940B1 (ko) 페이지 기반 압축 저장 관리
EP3108371B1 (en) Modified memory compression
US20170177497A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
US9792227B2 (en) Heterogeneous unified memory
KR102011135B1 (ko) 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US9201810B2 (en) Memory page eviction priority in mobile computing devices
US9058212B2 (en) Combining memory pages having identical content
CN105637470B (zh) 用于脏数据管理的方法和计算设备
US9886198B2 (en) Page compression strategy for improved page out process
KR20140006299A (ko) 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치
WO2019196878A1 (zh) 一种内存管理的方法以及相关设备
JPWO2017006674A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
KR102314138B1 (ko) 모바일 장치 및 모바일 장치의 데이터 관리 방법
WO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US9772776B2 (en) Per-memory group swap device
CN111597129B (zh) 缓存管理方法、装置、存储介质和固态非易失存储设备
CN115934002B (zh) 固态硬盘的访问方法、固态硬盘、存储系统及云服务器
EP2757481A1 (en) Caching method and caching system using dual disks
CN113138941A (zh) 内存交换的方法、装置
WO2021218502A1 (zh) 一种页交换的方法、存储系统和电子设备
US9990278B2 (en) Overlaid erase block mapping
US9025380B1 (en) Management of data storage in a non-volatile memory system
WO2022203532A1 (en) Method for virtual memory management in a computer

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191210