CN104520823B - 用于混合存储器管理的方法、系统和设备 - Google Patents
用于混合存储器管理的方法、系统和设备 Download PDFInfo
- Publication number
- CN104520823B CN104520823B CN201380041635.XA CN201380041635A CN104520823B CN 104520823 B CN104520823 B CN 104520823B CN 201380041635 A CN201380041635 A CN 201380041635A CN 104520823 B CN104520823 B CN 104520823B
- Authority
- CN
- China
- Prior art keywords
- memory
- physical address
- mixing
- characteristic
- computing equipment
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Power Sources (AREA)
- Memory System (AREA)
- Information Transfer Between Computers (AREA)
Abstract
在各个方面,可以使用虚拟化技术来提高具有混合存储器的计算系统上的性能,并且减少由将虚拟存储地址转换成物理地址所消耗的功率的量。在存储器转换的第一阶段(712),操作系统将虚拟地址转换成中间物理地址。在存储器转换的第二阶段(714),芯片或者虚拟化软件基于物理存储器(702)的特性和与该物理存储器相关联的进程的特性,将该中间物理地址转换成物理地址。
Description
背景技术
蜂窝和无线通信技术在过去的若干年里经历了爆炸性的增长。无线服务提供商现在提供各种各样的特征和服务,并且向它们的用户提供信息、资源和通信的空前水平的接入。为了跟上这些服务增强,移动电子设备(例如,蜂窝电话、平板设备、膝上型计算机等等)与过去相比变得具有更加丰富和复杂的特性,并且现在通常包括多个处理器、片上系统(SoC)、多个存储器和其它资源(例如,电源轨),这些部件使移动设备用户能在他们的移动设备上执行复杂和功率密集的软件应用(例如,视频流媒体、多媒体处理等等)。随着移动设备和相关技术持续普及并得到使用,对于移动设备设计人员来说,期望将提高移动设备的性能能力和功耗特性变成重要的和挑战性的设计标准。
发明内容
各个方面包括对具有存储器的计算系统上的存储器进行管理的方法,该方法可以包括:通过在监控代理或者监控代理进程中,将中间物理地址转换成物理地址来分配计算系统上的存储空间。在一个方面,所述监控代理可以基于存储器的特性和计算系统的一个或多个进程的特性来分配所述物理地址。在一个方面,基于存储器的特性来分配所述物理地理可以包括:基于混合存储器的特性来分配所述物理地址。在一个方面,分配计算系统上的存储空间还可以包括:在操作系统中,将虚拟地址转换成中间物理地址。
在另外的方面,分配计算系统上的存储空间可以包括:为软件进程分配存储空间。在另外的方面,分配计算系统上的存储空间可以包括:为硬件加速器分配存储空间。在另外的方面,分配计算系统上的存储空间可以包括:为软件进程和硬件加速器的组合分配存储空间。
在另外的方面,基于混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括基于以下各项中的一项或多项来分配所述物理地址:所述混合存储器的性能特性、所述混合存储器的功耗特性、以及所述混合存储器的时延特性。在另外的方面,基于混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:基于所述一个或多个进程的性能特性来分配所述物理地址。在另外的方面,所述混合存储器可以包括两种或更多种类型的存储器技术,并且基于混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:基于所述混合存储器中包括的存储器技术的类型,来分配所述物理地址。
在一个方面,该方法可以包括:确定所述一个或多个进程是否包括苛求进程。在另外的方面,确定所述一个或多个进程是否包括苛求进程可以包括确定所述一个或多个进程是否包括与以下各项中的一项或多项相关联的进程:多媒体应用、视频播放器应用、流式视频应用、虚拟现实应用、增强现实应用、游戏应用、计算机视觉应用、视频会议应用、手势识别应用和语音识别应用。
在另外的方面,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。在另外的方面,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与另外的进程相关联的硬件加速器分配所述混合存储器的慢速部分。
在另外的方面,该方法可以包括:确定所述苛求进程的存储器速度要求,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:响应于确定所述苛求进程的存储器速度要求高,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
在另外的方面,该方法可以包括:确定所述苛求进程的存储器速度要求,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与一个或多个其它进程相关联的一个或多个硬件加速器分配所述混合存储器的慢速部分。
在另外的方面,该方法可以包括:确定是否可以向所述苛求进程分配节能存储器,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:响应于确定能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的节能部分,以及响应于确定不能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的较不节能部分。
在另外的方面,该方法可以包括:确定所述计算系统何时进入低性能状态,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:响应于确定所述计算系统可能进入低性能状态,将所述混合存储器的节能部分分配给在所述计算系统上运行的任何软件应用。
在另外的方面,该方法可以包括:确定所述计算系统何时退出所述低性能状态,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址可以包括:响应于确定不能向请求存储器的应用分配节能存储器,以及所述计算系统可能退出所述低性能状态,向在所述计算系统上运行的任何软件应用重新分配所述混合存储器的较不节能部分。
在另外的方面,在监控代理中将中间物理地址转换成物理地址可以包括:在管理程序中,将所述中间物理地址转换成所述物理地址。在另外的方面,在监控代理中将中间物理地址转换成物理地址可以包括:在所述操作系统之外的监控软件中,将所述中间物理地址转换成所述物理地址。在另外的方面,在监控代理中将中间物理地址转换成物理地址可以包括:在硬件层组件中,将所述中间物理地址转换成物理地址。在另外的方面,在监控代理中将中间物理地址转换成物理地址可以包括:在运行作为设备驱动器的一部分的软件监控器中,将所述中间物理地址转换成物理地址。
另外的方面可以包括具有处理器的计算设备,该处理器配置有处理器可执行指令,所述指令用于执行与上面所讨论的方法相对应的各种操作。
另外的方面可以包括具有硬件层组件的计算设备,该硬件层组件被配置为执行与上面所讨论的方法相对应的各种操作。
另外的方面可以包括具有各种单元的计算设备,所述各种单元用于执行与上面所讨论的方法操作相对应的功能。
另外的方面可以包括非临时性处理器可读存储介质,其具有存储于其上的处理器可执行指令,所述指令被配置为使得处理器执行与上面所讨论的方法操作相对应的各种操作。
附图说明
被并入本文并且构成本说明书的一部分的附图,示出了本发明的示例性实施例,并且连同上面给出的概括描述以及下面给出的详细描述来一起用于解释本发明的特征。
图1是示出了适于实现各个方面的计算设备的硬件组件的系统框图。
图2是示出了适于实现各个方面的计算系统中的逻辑组件和接口的分层计算机架构图。
图3和图4是示出了适于实现各个方面的虚拟机中的逻辑组件的分层计算机架构图。
图5是示出了在用于实现系统虚拟机的计算设备上,与以两个阶段来分配存储器相关联的逻辑组件和数据流的构成流程图。
图6A是示出了以说明混合存储器的不同部分的特性的方式,用两个阶段来分配存储器的方面方法的处理流程图。
图6B是示出了用于基于应用程序的存储器要求和混合存储器的不同部分的存储器访问速度,来分配物理地址的方面方法的处理流程图。
图6C是示出了用于基于应用程序的存储器要求和混合存储器的不同部分的能量消耗特性,来分配物理地址的方面方法的处理流程图。
图7是根据一个方面,示出了在用于实现系统虚拟机的计算设备上,与以两个阶段来分配存储器相关联的数据流的存储器架构和消息流图。
图8A是示出了重新分配混合存储器的不同部分之间的存储器的方面方法的处理流程图。
图8B是示出了与重新安排混合存储器的不同部分之间的存储器相关联的转换的存储器地址示图。
图9是示出了适于实现各个方面的移动设备的组件框图。
图10是示出了适于实现各个方面的另一种移动设备的组件框图。
具体实施方式
现在参照附图来详细地描述各个方面。在可能的地方,将贯穿附图使用相同的附图标记来指代相同或者类似的部件。对具体例子和实现的引用是出于说明的目的,而不是旨在限制本发明或者权利要求的保护范围。
本文中所使用的“示例性的”一词意味着“用作例子、实例或说明”。本文中描述为“示例性”的任何实现不必解释为比其它实现更优选或更具优势。
本文中互换地使用术语“移动设备”和“计算设备”,来指代下面中的任何一种或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、掌上型计算机、无线电子邮件接收机、具备多媒体互联网能力的蜂窝电话、无线游戏控制器、以及包括可编程处理器和存储器并在电池供电情形下进行操作,使得省电方法有益的类似的个人电子设备。虽然各个实施例在移动设备(例如,具有有限的处理功率和电池容量的蜂窝电话)中是特别有用的,但这些方面通常在可以从改进的处理器性能和减少的能量消耗来获益的任何计算设备中也是有用的。
本文中通常使用术语“监控代理”来指代支持虚拟化技术和/或实现计算资源的抽象(或虚拟化)的任何硬件组件或软件,其包括下面各项中的任何一项或全部:硬件监控器、在芯片上制造的专用硬件、管理程序、虚拟机监控器、在高级操作系统(HLOS)之外运行的监控软件、以及运行作为设备驱动器的一部分的软件监控器,所述软件监控器可以位于HLOS、其存储器管理系统和/或其分配器功能之外。
本文中通常使用术语“硬件加速器”来指代被配置为执行通用中央处理单元(CPU)的一个或多个专用功能的任何硬件组件,或者这些功能传统上或者历史上由CPU来执行。硬件加速器的例子包括:图形处理单元(GPU)、图形加速器(例如,比特-块转换单元、视频或图形卡等)、浮点加速器(例如,数学协处理器等)、正则表达式加速器、数字信号处理器(DSP)、调制解调器处理器、矢量协处理器、数据控制器、存储器控制器、系统控制器、定时器、以及用于支持CPU或者运行在计算设备上的客户端软件应用的其它类似硬件组件。
各个方面还可以用于支持在计算设备上运行的任何苛求的(demanding)、处理密集型、数据密集型或者功率密集型软件应用或进程(其统一称为“苛求进程(demandingprocess)”)。苛求进程的例子包括产生视频输出的软件应用,并且因此必须对存储器之内和之外的大量视频数据(例如,视频播放器应用、流式视频应用、多媒体应用、虚拟现实应用和增强现实应用、游戏应用、计算机视觉应用、视频会议应用、手势识别应用、语音识别应用等等)进行处理。苛求进程还可以包括针对其没有专用硬件、并因此在中央处理单元(CPU)中完成处理的任何处理器密集型和/或数据密集型处理。苛求进程还可以包括要求来自外围设备(例如,硬件加速器)的处理的任何进程。
现代移动计算设备可以包括多个不相连(disjointed)的存储器部分和/或不同类型的存储器。这些不同的存储器类型/部分中的每一个,可能具有与写速度(例如,将数据写入该存储器所要求的时间)、时延、访问时间(例如,读取访问时间)、安全性、可靠性、功耗等等有关的不同性能特性。这些特性可能在执行速度和功耗方面显著地影响移动设备性能。本文中将异构存储器系统和/或具有多个部分或组件(其具有不同的性能特性)的存储器系统称为“混合存储器”。
存储器交织是一种通过允许处理单元(例如,移动设备CPU)同时地访问多个组块的存储器,来增加存储器带宽的先进的存储器组织技术。一种存储器交织方案可以将系统存储器划分成多个块,使得可以经由不同的控制线或信道来访问存储器的每一个块。每一个控制线/信道可以与其它的控制线/信道在相同的时间传输数据。因此,实现存储器交织方案的移动计算设备的处理单元,可以同时地在第一信道上发出对存储器的第一块的第一读或写操作,并且在第二信道上发出对存储器的另一个块的第二读或写操作。由于处理单元在执行第二操作之前,不必等待第一操作的完成,因此与非交织的存储器相比,处理单元可以更快速地访问交织的存储器。
混合存储器可以包括交织的存储器和非交织的存储器二者。在一个方面,交织的存储器部件/部分可以是快速存储器部分,而非交织的存储器部件/部分可以慢速存储器部分。在一个方面,交织的存储器部分可以是高性能存储器部分。在一个方面,非交织的存储器部分可以是节能存储器部分。
混合存储器和/或存储器部件/部分还可以包括任意数量的不同类型的存储器技术,其包括相变存储器(PCM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性随机存取存储器(NVRAM)、伪静态随机存取存储器(PSRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、以及本领域已知的其它随机存取存储器(RAM)和只读存储器(ROM)技术。在一个方面,混合存储器可以包括PCM存储器部分和DRAM存储器部分。在一个方面,PCM存储器部分可以是高时延和/或低功率存储器部分。在一个方面,DRAM存储器部分可以是低时延和/或高功率存储器部分。
近年来,移动计算设备架构在复杂度方面已经增加,并且现在其可能包括多个处理器和混合存储器。在复杂度增加的情况下,要求新的存储器管理解决方案,以优化计算设备性能和功耗。例如,当向混合存储器中的不同单元分配数据时,现有的存储器管理系统不能高效地考虑混合存储器的各个存储器部分的特定特性。因此,现有的存储器管理系统不能充分利用混合存储器特性来提高计算设备的性能和/或减少设备的功耗。
各个方面提供了改进的计算设备存储器管理系统,该系统使操作系统能够以统一的方式来使用混合存储器,提高存储器访问时间和处理器性能和/或减少由该计算设备所消耗的功率的量。各个方面使操作系统能够以统一的方式来使用不相连的混合存储器,而无需操作系统知道在每次存储器访问中发生的操作的细节。具体而言,各个方面可以使用两阶段的地址转换过程,其中第二阶段的地址转换在用于安排存储器分配的硬件层或者管理程序层中执行,使得针对给定的混合存储器配置来动态地平衡和优化数据负载。各个方面可以在计算设备的管理程序层和/或芯片层中实现,使得对现有的操作系统、外围设备(例如,硬件加速器等)或应用程序进行改动不是必需的。
各个方面可以在各种各样的单处理器和多处理器计算机架构上实现,其例子的图1中示出。计算设备100可以包括数个异构处理器,例如,所示出的数字信号处理器(DSP)102、调制解调器处理器104、图形处理器106和应用处理器108。计算设备100还可以包括连接到处理器102-108中的一个或多个的一个或多个矢量协处理器110。各个处理器102-110可以包括一个或多个内核,并且每一个处理器/内核可以独立于其它处理器/内核来执行操作。各个处理器102-110还可以包括存储器(没有示出)和/或存储器管理系统控制器。在一个方面,计算设备100组件可以位于单个基板上,和/或一起紧密耦合成片上系统(SOC)125。
计算设备100可以包括模拟电路和定制电路114,用于管理传感器数据、模数转换、无线数据传输、以及执行其它专用操作(例如,对用于游戏和电影的编码音频信号进行处理)。计算设备100还可以包括系统组件和资源116,例如,电压调节器、振荡器、锁相环、外围桥接器、数据控制器、存储器控制器、系统控制器、接入端口、定时器、以及用于支持处理器、存储器和在计算设备上运行的客户端的其它类似组件。系统组件/资源116中的每一个还可以包括存储器(没有示出)和/或存储器管理系统控制器。
在各个方面,应用处理器108可以是中央处理单元(CPU)、CPU的组件、耦合到CPU的处理单元。在一个方面,CPU可以被配置为从处理器102-110、系统组件/资源116和/或外围设备的各种存储器读取信息以及向其写入信息,这可以经由处理器102-110、资源116和/或外围设备的各自的存储器管理系统控制器来实现。
计算设备100还可以包括用于组件和资源(例如,时钟118和电压调节器120)之间的通信的输入/输出模块(没有示出)。处理器102-110可以经由互连/总线模块122而互连到一个或多个存储器单元112、资源116、定制电路114和各种其它系统组件。
如上所述,计算设备100可以包括连接到处理器102-108中的一个或多个的一个或多个矢量协处理器110。对要求快速和并行执行的应用(例如,多媒体和视频流应用)进行处理来说,这种矢量协处理器110可能特别有用。在一个方面,矢量协处理器110可以实现单指令多数据(SIMD)指令集架构(ISA),该架构包括独立的硬件寄存器、存储器和/或执行硬件。SIMD矢量协处理器可以是计算设备100的主处理器(例如,应用处理器108、CPU等等)的一部分,或者紧耦合到计算设备100的主处理器。
图2示出了一种处理器的分层架构,其示出了适于实现各个方面的典型计算机系统中的逻辑组件和接口。所示出的计算机系统架构200包括硬件组件222和软件组件220。软件组件220可以包括操作系统202、库模块204、以及一个或多个应用程序(A0-An)204。硬件组件222可以包括外围设备208(例如,硬件加速器、输入/输出设备等等)、中央处理单元(CPU)210、中央处理单元存储器管理单元(CPUMMU)216、一个或多个系统存储器管理单元(本文中称为“系统MMU”或“SMMU”)212和一个或多个存储器214。
可以将针对移动计算设备所编写的应用软件编译成可执行代码,其通常称为“应用”、“小应用程序”或者应用程序206。每一个应用程序206可以是单一进程或者线程,或者可以包括多个进程或者线程。
应用程序206可以经由应用程序接口(API)来发出针对库模块204的高级语言(HLL)库调用。库模块204可以经由应用程序二进制接口(API)来启用(invoke)操作系统202上的服务(例如,经由操作系统调用)。操作系统202可以使用特定的指令集架构(ISA)来与硬件组件通信,其中ISA是由硬件222实现的特定操作码(opcode)和本地命令的列表。以此方式,ISA规定了如由操作系统202所观测的硬件222。
操作系统202可以负责协调和控制各种存储器214在应用程序206之间的分配和使用,其可以包括跨越多个应用程序(A0-An)206对物理存储器进行划分。在一个方面,操作系统202可以包括一个或多个存储器管理系统(例如,虚拟存储器管理器等等),以便管理由各个应用程序(A0-An)206对系统存储器的分配和使用。存储器管理系统可以用于确保由一个进程使用的存储器不干扰已经由另外的进程所使用的存储器。
在一个方面,操作系统202可以包括被配置为执行“虚拟寻址”操作的虚拟存储器管理器(OSVMM),这种操作使操作系统202能够将特定的物理地址呈现成另一种地址(即,虚拟地址)。这种虚拟寻址操作可以包括:向应用程序(A0-An)206分配虚拟存储器地址。在操作系统202中包括虚拟存储器管理器,可以简化多个进程或者应用程序(A0-An)206之间的系统存储器的协调和控制。
除了上面所讨论的基于软件的存储器管理系统(例如,OSVMM等等)之外,该系统还可以包括一个或多个基于硬件的存储器管理系统,例如,图2中所示出的中央处理单元(CPU)存储器管理单元(MMU)216和系统MMU212。CPUMMU216和系统MMU212中的每一个可以包括负责执行各种与存储器有关的操作(例如,虚拟地址向物理地址的转换、高速缓存控制、总线仲裁和存储器保护)的一个或多个硬件组件。在一个方面,CPUMMU216可以负责向主CPU210提供地址转换服务和保护功能,并且系统MMU212可以负责向其它硬件组件(例如,数字信号处理器、调制解调器处理器、图形处理器等等)提供地址转换服务和保护功能。
在各个方面,存储器管理系统中的一个或多个(例如,系统MMU212、CPUMMU216等等)可以包括后援转换缓冲器(translationlook-asidebuffer,TLB),TLB是可以用于存储器地址转换(例如,将虚拟地址转换成物理地址等等)的高速缓存存储器。在一个方面,后援转换缓冲器(TLB)可以是内容寻址存储器(CAM),CAM可以是在其中所存储的信息被组织成键-值格式(例如,哈希表)的硬件关联阵列存储器。这些键可以是虚拟地址,而这些值可以是物理地址。在各个方面,TLB可以是硬件管理的TLB、软件管理的TLB或者其任意组合。在硬件管理的TLB的情况下,TLB条目的格式是软件不可见的,并且因此,对于不同类型的CPU来说,其可以是不同的。
通常,作为存储器地址转换进程的一部分,存储器管理系统(例如,OSVMM、系统MMU212、CPUMMU216等等)可以执行CAM搜索以便通过向TLB发送作为键值的虚拟地址,来从TLB请求物理地址。如果虚拟地址键值在TLB中具有相应的物理地址值(即,发生了TLB“命中”),则CAM搜索可以获取和返回相应的物理地址。如果请求的地址没有处于TLB中(即,发生了TLB“失败”),则该存储器地址转换进程可以通过读取多个存储器位置的内容和计算物理地址,来执行页遍历(pagewalk)(例如,软件页遍历、硬件页遍历等等)。在通过页遍历来确定物理地址之后,可以将虚拟地址至物理地址的映射存储在TLB中。
在包括软件管理的TLB的方面,TLB失败可能使得操作系统来遍历页表,并且以软件方式来执行该转换。在包括硬件管理的TLB的方面,存储器管理系统可以执行硬件页遍历,来确定针对指定的虚拟地址键,是否存在有效的页表条目。
在各个方面,存储器108可以是具有多个不相连部分的混合存储器,每一个部分可以具有不同的性能、速度、时延、访问时间、安全性、可靠性和/或功耗特性。由于混合存储器中的多种类型的存储器之间的性能的差异,因此选择适当的存储器部件/部分来保存特定类型的应用数据(例如,视频数据对比(VS)文本数据),可以提供显著的性能利益。同样,由于不同的存储器的功耗特性的差异,因此基于应用程序(例如,多媒体对比文本编辑等等)和/或设备状态(例如,休眠、低功率模式、高性能模式等等)来选择适当的存储器,可以显著地提高计算设备的功耗特性。提高功耗特性对于移动设备(例如,智能电话和平板计算机)来说是特别重要的。但是,应用程序通常不会察觉存储器结构(这是由于典型地将这些应用程序编写成能在多种多样的设备和/或操作系统上运行),因此不能够利用混合存储器的这些性能特性。
当前操作系统并不考虑被分配作为它们的存储器分配实现的一部分的、存储器的性能或功率成本,并且不能够高效地管理混合存储器。因此,操作系统不能够使各种类型的应用来为了应用的利益而充分利用混合存储器的性能特性。存在类似于非统一存储访问(NUMA)的软件技术,其将成本关联到每一种类型的存储器,并且基于策略集来选择存储器;但是,在移动设备(例如,智能电话)上,当前种类的OS内核不允许针对混合存储器配置的特殊操作。另外,现有的解决方案简单地实现了静态成本策略,在很大程度上不知悉特定混合存储器的性能特性,并且对静态策略的改变通常要求对操作系统进行重新编译、重新启动或者重新初始化。由于这些原因和其它原因,现有的存储器管理解决方案不能围绕性能和/或功率效率,针对各种类型的应用来高效地使用混合存储器的不同部分的不同特性,以提高移动计算设备性能。
各个方面提供了一种存储器管理系统,该存储器管理系统利用虚拟化技术,使操作系统能够以统一的方式来使用不相连的混合存储器。虚拟化技术实现计算资源的抽象化(或者虚拟化),这可以通过在操作系统和硬件之间设置控制程序(例如,虚拟机监控器“VMM”或管理程序)来实现。虚拟化技术通常在虚拟机(VM)中实现,VM可以是像物理硬件机器一样执行应用程序的软件应用。虚拟机提供应用程序和执行硬件之间的接口,允许与特定的ISA有联系的应用程序在用于实现不同的ISA的硬件上执行。
图3和图4示出了用于实现虚拟机的典型计算机系统中的逻辑组件。可以将虚拟机分类成两种基本的类型:系统虚拟机;以及进程虚拟机。系统虚拟机允许在不同的进程或者应用之间共享底层的物理硬件。另一方面,进程虚拟机支持单一进程或者应用。
图3是示出了用于实现进程虚拟机310的计算设备300中的逻辑层的分层架构图。计算机系统300可以包括硬件308、和软件组件,所述软件组件包括应用进程模块302、虚拟化模块304和操作系统306。
如上面参照图2所讨论的,由于硬件组件仅通过操作系统202才对应用程序206看来说是可见的,则ABI和API有效地规定了可用于应用程序206的硬件特征。虚拟化软件模块304可以在ABI/API层执行逻辑操作,和/或仿真操作系统调用或库调用,使得应用进程302按照其将与硬件组件通信的相同方式(即,经由系统调用/库调用)来与虚拟化软件模块304通信。以此方式,应用进程302将虚拟化模块304、操作系统306和硬件308视为单个机器(例如,图3中所示出的进程虚拟机310)。由于应用软件不需要(need)关注将于其上最终执行该应用的计算设备的实际架构,因此这简化了应用开发人员的工作。
进程虚拟机310的存在仅仅是为了支持单个应用进程302,因此其随着进程302而产生,并当进程302完成执行时终止。在虚拟机310上运行的进程302被称为“客户”,而底层平台被称为“主机”。典型地,将实现进程虚拟机的虚拟化软件304称为运行时软件(或者简单的“运行时”)。
图4是示出了用于实现系统虚拟机410的计算设备400中的逻辑层的分层架构图。该计算机系统可以包括硬件组件(例如,执行硬件、存储器、I/O设备等等)408和软件组件,该软件组件包括应用程序模块402、操作系统404和虚拟化模块406。在虚拟化模块406之上运行的软件被称为“客户”软件,支而持该虚拟化模块的底层平台被称为“主机”硬件。
与进程虚拟机不同,系统虚拟机410提供多个操作系统(被称为“客户机操作系统”)于其上能够共存的完整环境。同样,主机硬件平台可以被配置为同时支持多个、隔离的客户机操作系统环境。同时执行的操作系统之间的这种隔离,为系统增加了安全等级。例如,如果一个客户机操作系统上的安全性被破坏,或者如果一个客户机操作系统遭受失败,则在其它客户系统上运行的软件不会受到这种破坏/失败的影响。由于应用软件不需要关注于其上最终执行该应用的计算设备的实际架构,因此这种主机硬件平台还简化了应用开发人员的工作。
虚拟化软件模块406可以逻辑地位于主机硬件和客户软件之间。虚拟化软件可以运行在实际硬件(本机)之上,或者运行在(所托管的)操作系统的顶部,并且虚拟化软件典型地被称为“管理程序”或者虚拟机监控器(VMM)。在本机配置中,虚拟化软件以可用的最高特权模式运行在实际硬件上,而客户机操作系统以减少的特权来运行,使得该虚拟化软件可以拦截和仿真所有客户机操作系统动作,该客户机操作系统动作通常将对硬件资源进行访问或者操作。在托管的配置中,虚拟化软件运行在现有的主机操作系统的顶部,并且可以依赖于主机操作系统来提供设备驱动器和其它低层的服务。在任一情况下,客户机操作系统(例如,操作系统404)中的每一个按照它们将与物理硬件408通信的相同方式来与虚拟化软件模块406通信,将虚拟化模块406和硬件408的组合视作为单一的虚拟机410。这允许每一个客户机操作系统(例如,操作系统404)在具有独占访问处理器、外围设备、I/O、MMU和硬件408中的存储器的错觉情况下进行操作。
如上面参照图2所讨论的,操作系统可以负责跨越多个进程对物理存储器进行划分。这可以经由存储器地址空间转换进程来实现。在存储器地址空间转换进程中,操作系统向每一个应用程序分配虚拟地址(VA),并且随后,在该程序的执行之前,基于该虚拟地址(VA)来分配物理存储器地址(PA)。但是,在包括客户机操作系统(其运行在虚拟机的顶部)的系统中,由该客户机操作系统所分配的存储器地址不是真实的物理地址(PA),而是中间物理地址(IPA)。在这种系统中,物理存储器的实际分配基本由管理程序来执行,其中,要求管理程序来维持虚拟地址(VA)、中间物理地址(IPA)和物理地址(PA)之间的关系。
大部分处理器系统仅支持单一阶段的存储器地址转换过程,并且要求管理程序来管理虚拟地址(VA)、中间物理地址(IPA)和物理地址(PA)之间的关系。这通常由管理程序维持其自身的转换表(被称为阴影转换表)来实现,该转换表可以通过解读每一个客户机操作系统的转换表来导出。在这种系统上,管理程序必须确保在阴影结构中反映对客户机操作系统的转换表的所有改变,以及实施保护和将访问故障重定向到适当的阶段。这些操作增加了管理程序的复杂度,并且增加了执行、维持和/或管理该管理程序的开销。在移动设备上,这些附加的复杂度和开销对于性能来说可能具有显著的影响。
不同于上面所讨论的单阶段处理器,一些处理器系统(例如,ARMv7-A)提供针对两个阶段的存储转换的硬件辅助。例如,ARM处理器可以包括虚拟化扩展,该虚拟化扩展使客户机操作系统在第一阶段中将虚拟地址(VA)转换成中间物理地址(IPA),以便硬件在第二阶段中将该中间物理地址(IPA)转换成物理地址(PA)。这种虚拟化扩展减少了与执行、维持和/或管理该管理程序相关联的开销,并且提高了计算设备性能。
图5示出了在用于实现系统虚拟机的计算设备500上,与以两个阶段来分配存储器相关联的示例性逻辑组件和地址转换。客户机操作系统510的存储器管理系统可以向应用程序/进程(A0,An)中的每一个分配虚拟地址空间502、504。例如,虚拟地址空间502、504可以由虚拟存储器管理器(例如,客户机OSVMM)来分配。可以向每一个应用程序/进程(A0,An)分配其自身的虚拟地址空间502、504,并且每一个虚拟地址空间502、504可以包括一个或多个虚拟地址VA0、VAn。
在图5所示出的例子中,以两个阶段来转换存储地址。在第一转换阶段512中,客户机操作系统的虚拟存储器管理器(客户机OSVMM)可以将虚拟地址VA0、VAn映射到中间物理地址空间506中的中间物理地址IPA0、IPAn。在第二转换阶段514中,管理程序和/或虚拟化扩展可以将中间物理地址IPA0、IPAn映射到物理地址空间508中的物理地址PA0、PAn。第一转换阶段512可以独立于第二转换阶段514来执行,并且在现有系统中,用于执行第二阶段转换514的组件并不基于存储器的特性来分配物理地址。
如上所述,虚拟化扩展可以实现将每一个存储器地址转换两次(例如,经由用于将VA转换成IPA的一个基表(basetable)和用于将IPA转换成PA的第二基表)。各个实施例可以使用这些两阶段的转换技术/特征,以允许操作系统以统一的方式来使用混合存储器或者不相连的存储器。在这样做时,各个实施例可以通过向存储器的类型分配最适合其需要的数据来优化存储器使用,而无需操作系统知道在每一次存储器访问中发生的操作的细节。
图6A示出了基于混合存储器的各个存储器部分的具体特性,以两个阶段来分配存储器的方面方法600。在方框602中,应用程序可以从操作系统请求存储空间的分配,该操作系统可以是在管理程序上运行的客户机操作系统。在方框604中,操作系统可以响应于该请求,向该应用程序分配虚拟存储器地址。在方框606中,操作系统(其可能不了解在硬件平台下的不同存储器配置)可以通过将虚拟存储器地址(VA)转换成中间物理地址(IPA)来执行第一阶段的地址转换处理。在方框608中,芯片或虚拟化软件可以通过以说明该应用程序和/或混合存储器的各个部分的不同特性的方式,将中间物理地址(IPA)转换成物理地址(PA),来执行第二阶段的地址转换。在一个方面,作为方框608的一部分,芯片或虚拟化软件可以安排物理存储器页,使得针对给定的混合存储器配置,对数据负载进行平衡和优化。
图6B示出了基于应用程序的存储器要求和混合存储器的访问速度特性来分配物理地址的方面方法620。在方框622中,芯片或虚拟化软件可以识别和定位混合存储器的快速部分。在方框624中,芯片或虚拟化软件可以识别和定位该混合存储器的慢速部分。用于识别混合存储器中的快速和慢速存储器段或部分的操作可以在任何时间来完成,例如,作为初始配置建立过程的一部分、作为在上电时执行的启动过程的一部分,或者作为装载一个应用的一部分。在方框626中,芯片或虚拟化软件可以确定该应用程序的存储器要求。例如,芯片或虚拟化软件可以确定该应用程序是否涉及视频流媒体/处理,或者涉及对系统提供或者处理数据具有高要求(ahighdemand)的其它技术,并因此将通过使用快速的存储器段来获益。替代地,芯片或虚拟化软件可以确定该应用程序是否是以非时间敏感的方式来使用数据,并且因此可以在不影响该应用的性能的情况下,向其分配慢速存储器。
在确定框628中,芯片或虚拟化软件可以确定该应用程序是否满足被分配该混合存储器的快速部分的要求(例如,与视频流媒体/处理有关等等)。如果确定该应用程序不满足被分配该混合存储器的快速部分的要求(即,确定框628=“否”),则在方框630中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的慢速部分中的物理地址(PA)。如果确定该应用程序满足用于被分配该混合存储器的快速部分的要求(即,确定框628=“是”),则在方框632中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的快速部分中的物理地址(PA)。
各个方面可以用于支持在计算设备上运行的任何苛求的、复杂的或者功率密集型应用,这种应用将通过访问快速存储器来获益。一些例子包括产生视频输出的应用,因此必须对存储器之内和之外的大量视频数据(例如,视频播放器应用、流式视频应用、多媒体应用、虚拟现实应用和增强现实应用、游戏应用、计算机视觉应用、视频会议应用、手势识别应用、语音识别应用等等)进行处理。各个方面还可以一般用于没有专用硬件来使用、并且因此在中央处理单元(CPU)中完成处理的任何处理密集型和/或数据密集型处理。再举一个例子,各个方面还可以用于向各种外围设备分配存储器(这些外围设备提供或者使用大量的数据),并因此能够通过优选地访问快速存储器段来获益。
图6C示出了基于应用程序的存储器要求和混合存储器的能量消耗特性,来分配物理地址的方面方法640。在方框642中,芯片或虚拟化软件可以识别和定位混合存储器的节能部分。在方框644中,芯片或虚拟化软件可以识别和定位该混合存储器的较不节能部分。类似于上面所描述的方法620,用于识别混合存储器中的节能存储器段或部分和较不节能存储器段或部分的操作,可以在任何时间完成,例如,作为初始配置建立过程的一部分、作为在上电时执行的启动过程的一部分,或者作为装载应用的一部分。在方框646中,芯片或虚拟化软件可以以与存储器的能量消耗特性有关的方式,来确定该应用程序的存储器要求。例如,芯片或虚拟化软件可以确定如果将数据存储在节能存储器中,而不是存储在混合存储器的其它部分(如果存储在所述其它部分时,可以更快速地写入或访问,但消耗更多的功率)时,该应用程序是否以没有被影响的方式来使用数据。
在确定框648中,芯片或虚拟化软件可以确定该应用程序能够根据通过更高效的存储器段的存储器分配来支持,还是要求混合存储器的较不节能部分(例如,与视频流媒体/处理有关等等)来支持。如果确定可以向该应用程序分配该混合存储器的更加节能部分(即,确定框648=“是”),则在方框650中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的更加节能部分中的物理地址(PA)。如果确定该应用程序不能使用更加节能部分,或者要求混合存储器的较不节能部分的分配(即,确定框648=“否”),则在方框652中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的较不节能部分中的物理地址(PA)。
各个方面还可以用于允许计算系统在进入降低的功率状态时(例如,如在一段时间的不活动之后可以实现的空闲模式或者低功率模式)节省功率。由于在计算系统上运行的应用在这种空闲状态或者低功率状态期间,不太可能要求高性能存储器,因此用户可以不会注意到由于使用更加节能但慢速的存储器来支持这些应用而可能发生的性能降低。因此,当芯片或虚拟化软件检测到(或者由操作系统通知)该计算系统进入低性能状态(例如,空闲模式、低功率模式或者休眠模式)时,可以确定能向所有应用程序分配混合存储器的更加节能部分(即,对于所有应用来说,确定框648=“是”),并且在方法640的方框650中,芯片或虚拟化软件可以将与所有应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的更加节能部分中的物理地址(PA)。相反地,当芯片或虚拟化软件检测到(或者由操作系统通知)该计算系统返回到性能状态(例如,退出空闲模式或者低功率模式)时,可以返回到方法640的方框646,以确定活动程序的应用程序存储器要求,并在方框648中确定当进入低功率状态时所做出的任何存储器分配是否需要改变,以便在不经历性能损失的情况下,针对不能使用节能存储器的应用程序,将中间物理地址(IPA)转换成所识别的混合存储器的较不节能部分中的物理地址(PA)。
图7示出了示例性计算系统700中的示例性逻辑组件和转换,该示例性计算系统700被配置为根据各个方面,基于混合存储器的各个存储器部分的特定特性来执行两个阶段的地址转换过程。在图7所示出的例子中,计算系统700包括具有快速存储器部分和慢速存储器部分的物理存储器702。计算系统700的操作系统(例如,客户机操作系统),可以向具有相对较低优先级、复杂度和/或存储器要求的第一应用程序(A0)(例如,文本编辑器应用)分配第一虚拟地址(VA0)。该操作系统可以向具有相对较高优先级、复杂度和/或存储器要求的第二应用程序(An)(例如,视频处理应用)分配第二虚拟地址(VAn)。
在第一转换阶段712,操作系统可以将虚拟地址VA0、VAn转换成中间物理地址IPA0、IPAn。在第二转换阶段714,虚拟化软件或芯片可以智能地将中间物理地址IPA0、IPAn转换成物理地址,使得向应用程序(A0)分配存储器704的慢速块(或者更加节能存储器),而向应用程序(An)分配存储器706的快速块。可以经由在芯片或虚拟化软件中实现的知晓分离(segregation-aware)的第二阶段转换器(其被配置为以智能方式来分发、分配和/或指派存储器),来实现中间物理地址的智能转换。
在一个方面,可以由芯片或虚拟化软件基于混合存储器的当前性能/能量消耗特性来动态地分配物理存储器,基于访问性能(例如,访问速度)和/或能量消耗模型,来执行中间物理地址的智能转换。
所述性能和/或能量消耗模型可以包括:存储用于监控各个应用程序、代码单元、内核/处理器、存储器部分的信息的数据结构(例如,列表、阵列、表、映射等等),以及用于针对各个应用程序/代码单元、针对具体的内核/处理器和/或存储器部分来执行存储器读/写操作所必需的时间/功率量。所述能量消耗模型还可以存储:用于识别针对每一个应用程序的替代的、更加高效的存储器或存储器部分的信息。在各个方面,所述能量消耗模型可以由虚拟化软件开发者、芯片设计者、应用程序的开发者或者存储器制造商来提供。
在一个方面,当使用机器学习过程来操作时(即,在运行时),可以由虚拟软件或芯片来构造或调整所述能量消耗模型。随着计算设备执行目标代码和/或访问存储器以监控写入和访问时间和/或用于写入、维持和访问数据以生成存储器性能数据的功率要求,可以实现这种机器学习过程。根据这种存储器性能数据,机器学习过程可以生成新的性能和/或能量消耗模型,或者更新由设备/硬件制造商或软件供应商先前所生成或者提供的性能和/或能量消耗模型。例如,该虚拟软件可以被配置为:通过使用机器学习技术,基于从先前的存储器读/写操作所收集到的读/写时间和/或功耗信息,来构造能量消耗模型。
各种各样的反馈和机器学习技术可以用于生成和修改存储器性能和能量消耗模型。例如,当所测量的结果与该模型预测发生偏离时,可以对优化规则进行改变或者调整。再举一个例子,可以由该虚拟软件来执行机械扰动和测试方法实验。机械扰动和测试方法实验可以涉及:对优化规则进行改变,将该优化规则发生改变之前和之后所测量的存储器访问的功耗进行比较,以及如果改变后的优化规则提供最佳的结果,则选择改变后的优化规则进行使用。在一个方面,可以将不同长度的存储器的功率性能彼此之间进行比较,以识别能够使得发生更佳的优化的模式。
使用反馈和学习机制来生成和/或调整存储器性能和能量消耗模型呈现了数种优点。例如,在设计了所述模型之后,反馈和学习机制可以使计算系统能够适应在设置了初始设计方案之后所发生的硬件性能的改变(例如,增加了新的存储器、更换了处理器等等)。当从一个以上的供应商购买了存储器时,当向系统增加新的硬件时,这种改变可能发生于来自同一供应商的批次-到-批次(lot-to-lot)的存储器芯片,并且由于系统性能的改变而造成的随时间变化。因此,反馈和学习机制可以使各个方面更好地说明存储器访问速度和功耗特性的批次-到-批次可变性(variability)以及线间(line-to-line)可变性。
在另外的方面,芯片或虚拟化软件可以被配置为:在混合存储器的不同部分之中对存储器进行重新安排或者重新分配。就速度和/或功耗而言,这种能力可以实现进一步的应用性能提升,而无需应用程序或者操作系统的知识或者参与。
图8A示出了在混合存储器的不同部分之中对存储器进行重新分配的方面方法800。在方框802,计算设备的芯片或虚拟化软件可以处于空闲状态。在方框804中,例如,可以响应于来自物理存储器的读/写请求,来激活该芯片或虚拟化软件。在方框806中,该芯片或虚拟化软件或虚拟化软件可以扫描混合存储器的各个部分,以识别和定位具有不同的特性的不同存储器部分。例如,芯片或虚拟化软件可以对存储器进行扫描,以识别快速存储器部分、更加节能部分、具有较高时延的部分等等。在方框808中,芯片或虚拟化软件可以对混合存储器进行整理(defragment),使得快速部分(或者更加节能部分等等)、对快速部分的引用、或者在快速部分中存储的信息彼此之间紧邻。在方框810中,芯片或虚拟化软件可以执行两阶段的地址转换过程的第二阶段。
图8B示出了计算系统850中的逻辑组件和转换,该计算系统850被配置为在混合存储器的不同部分之间对存储器进行重新安排或者重新分配。如上所述,在芯片或虚拟化软件中实现的知晓分离的第二阶段转换器,可以被配置为以智能方式来分发、分配和/或指派存储器。图8B示出了当知晓分离的第二阶段转换器处于空闲状态852时,混合存储器856的快速和慢速部分可能是遍布整个存储器856扰乱的。当知晓分离的第二阶段转换器处于活动状态854时,其可以在混合存储器858的不同部分之间对存储器进行重新安排或者重新分配,使得快速存储器部分彼此之间更加紧邻。
在包括一个或多个存储器管理单元(例如,系统MMU或SMMU)的计算系统上(其中,这些存储器管理单元被配置为提供地址转换服务),各个方面可以跟踪映射到任何外围MMU实例的存储器,以及防止这些存储器变成用于回收的候选。
适于与各个方面一起使用的典型移动设备900,将共有图9中所示出的组件。例如,示例性移动设备900可以包括处理器902,其耦合到内部存储器901、显示器904和扬声器964。另外,该移动设备可以具有天线924,其用于发送和接收耦合到处理器902的电磁辐射。在一些方面,移动设备900可以包括一个或多个专用或通用处理器905、924,这些处理器可以包括片上系统。典型地,移动设备还包括用于接收用户输入的键盘或微型键盘和菜单选择按键或者摇臂开关
其它形式的计算设备(例如,图10中所示出的膝上型计算机1000)也可以实现各个方面,并从这些方面中获益。类似于膝上型计算机1000的计算设备典型地包括耦合到内部存储器1001和显示器1009的处理器1002。另外,计算设备可以具有用于发送和接收信息的通信端口1005。计算设备1008还可以包括用于接收用户输入的键盘1008和选择按键1007。
实现各个方面的计算设备中所使用的处理器902、905、924、1002可以是任何可编程微处理器、微计算机或者多处理器芯片或芯片,它们可以通过处理器可执行软件指令(应用)来配置以执行各种功能(包括本文中所描述的各个方面的功能)。典型地,在访问软件应用和处理器可执行指令并将其装载到处理器902、905、924、1002之前,这些软件应用和处理器可执行指令可以存储在内部存储器901、1001中。在一些移动设备中,处理器902、905、924、1002可以包括足够用于存储应用软件指令的内部存储器。在一些移动设备中,安全存储器可以是耦合到处理器902、905、924、1002的单独存储器芯片。在很多移动设备中,内部存储器901、1001可以是易失性存储器或非易失性存储器(例如,闪存)或者二者的混合。出于描述的目的,对于存储器的一般引用,通常指的是处理器902、905、924、1002可以访问的所有存储器,其包括内部存储器、插入到移动设备之中的可移动存储器、以及处理器中的存储器。
上述的方法描述和处理流程图仅是被提供作为说明性例子,而不旨在要求或者隐含着必须以所呈现的顺序来执行各个方面的步骤。如本领域技术人员将理解的,可以以任何顺序来执行上述的方面中的步骤顺序。诸如“其后”、“随后”、“接着”等等之类的词语,并不旨在限制这些步骤的顺序;这些词语仅是用于引导读者遍历该方法的描述。此外,对权利要求要素的任何单数引用(例如,使用冠词“一(a)”、“一个(an)”或者“所述(the)”),不应被解释为将该要素限制为单数。
结合本文所公开的方面来描述的各种示例性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件之间的这种可交换性,上面对各种示例性的组件、框、模块、电路和步骤均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于具体的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个具体应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致背离本发明的保护范围。
可以利用被设计为执行本文中所描述功能的通用处理器、数字信号处理器(DSP)、在多媒体广播接收器芯片内的DSP、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,来实现或执行结合本文中所公开的方面所来描述的各种示例性的逻辑、逻辑框、模块和电路。通用处理器可以是微处理器,或者,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。替代地,一些步骤或方法可以由特定于给定的功能的电路来执行。
在一个或多个示例性方面,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将这些功能存储为非临时性计算机可读介质或非临时性处理器可读介质上的一个或多个指令或代码。本文中所公开的方法或者算法的步骤可以体现在处理器可执行软件模块中,该处理器可执行模块可以位于非临时性计算机可读介质或非临时性处理器可读介质上。非临时性计算机可读介质或非临时性处理器可读介质可以是计算机或处理器能够存取的任何存储介质。通过示例的方式而不是限制的方式,这种非临时性计算机可读介质或非临时性处理器可读介质可以包括RAM、ROM、EEPROM、闪存(FLASH)CD-ROM或其它光盘存储器、磁盘存储器或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质。如本文中所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在非临时性计算机可读介质和处理器可读介质的保护范围之内。另外,方法或算法的操作可以作为位于非临时性处理器可读介质和/或计算机可读介质上的代码和/或指令的一个组合或任意组合或者集合,该非临时性处理器可读介质和/或计算机可读介质可以并入到计算机程序产品中。
为使本领域任何技术人员能够实现或者使用本发明,提供了对所公开的实施例的之前描述。对于本领域技术人员来说,对这些实施例的各种修改将是显而易见的,并且,本文中定义的总体原理也可以在不脱离本发明的精神或保护范围的情况下适用于其它实施例。因此,本发明并不旨在限于本文中所示出的实施例,而是要符合与接下来的权利要求以及本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (78)
1.一种对具有混合存储器的计算系统上的存储器进行管理的方法,所述方法包括:
收集所述混合存储器中每种存储器的存储器性能数据;
使用所收集的存储器性能数据,来生成所述混合存储器中每种存储器的能量消耗模型和存储器性能模型;以及
分配所述计算系统上的存储空间,其包括:
在监控代理中,基于所述能量消耗模型和存储器性能模型来将中间物理地址转换成物理地址,所述监控代理基于所述混合存储器中每种存储器的特性和所述计算系统的一个或多个进程的特性来分配所述物理地址,
其中所述混合存储器包括两种或更多种类型的存储器技术。
2.根据权利要求1所述的方法,其中,分配所述计算系统上的存储空间包括:
为软件进程分配存储空间。
3.根据权利要求1所述的方法,其中,分配所述计算系统上的存储空间包括:
为硬件加速器分配存储空间。
4.根据权利要求1所述的方法,其中,分配所述计算系统上的存储空间包括:
为软件进程和硬件加速器的组合分配存储空间。
5.根据权利要求1所述的方法,其中,在监控代理中,将中间物理地址转换成物理地址包括:
在管理程序中,将所述中间物理地址转换成所述物理地址。
6.根据权利要求1所述的方法,其中,在监控代理中,将中间物理地址转换成物理地址包括:
在所述计算系统的操作系统之外的监控软件中,将所述中间物理地址转换成所述物理地址。
7.根据权利要求1所述的方法,其中,在监控代理中,将中间物理地址转换成物理地址包括:
在硬件层组件中,将所述中间物理地址转换成所述物理地址。
8.根据权利要求1所述的方法,其中,在监控代理中,将中间物理地址转换成物理地址包括:
在运行作为设备驱动器的一部分的软件监控器中,将所述中间物理地址转换成所述物理地址。
9.根据权利要求1所述的方法,其中,分配所述计算系统上的存储空间还包括:
在操作系统中,将虚拟地址转换成所述中间物理地址。
10.根据权利要求1所述的方法,其中,基于所述混合存储器的特性和一个或多个进程的所述特性来分配所述物理地址包括基于以下各项中的一项或多项来分配所述物理地址:
所述混合存储器的性能特性,
所述混合存储器的功耗特性,以及
所述混合存储器的时延特性。
11.根据权利要求1所述的方法,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述一个或多个进程的性能特性来分配所述物理地址。
12.根据权利要求1所述的方法,其中:
基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述混合存储器中包括的存储器技术的所述类型来分配所述物理地址。
13.根据权利要求1所述的方法,还包括:
确定所述计算系统何时进入低性能状态,
其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述计算系统进入低性能状态,将所述混合存储器的节能部分分配给在所述计算系统上运行的任何软件应用。
14.根据权利要求13所述的方法,还包括:
确定所述计算系统何时退出所述低性能状态,
其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定不能向请求存储器的软件应用分配节能存储器,以及所述计算系统退出所述低性能状态,向所述应用重新分配所述混合存储器的较不节能部分。
15.根据权利要求1所述的方法,还包括:
确定所述一个或多个进程是否包括苛求进程。
16.根据权利要求15所述的方法,其中,确定所述一个或多个进程是否包括苛求进程包括确定所述一个或多个进程是否包括与以下各项中的一项或多项相关联的进程:
多媒体应用;
视频播放器应用;
流式视频应用;
虚拟现实应用;
增强现实应用;
游戏应用;
计算机视觉应用;
视频会议应用;
手势识别应用;以及
语音识别应用。
17.根据权利要求15所述的方法,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
18.根据权利要求15所述的方法,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与另外的进程相关联的硬件加速器分配所述混合存储器的慢速部分。
19.根据权利要求15所述的方法,还包括:
确定所述苛求进程的存储器速度要求,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述苛求进程的所述存储器速度要求高,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,并且向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
20.根据权利要求15所述的方法,还包括:
确定所述苛求进程的存储器速度要求,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分;以及
向与一个或多个其它进程相关联的一个或多个硬件加速器分配所述混合存储器的慢速部分。
21.根据权利要求15所述的方法,还包括:
确定是否能向所述苛求进程分配节能存储器,其中,基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的节能部分;以及
响应于确定不能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的较不节能部分。
22.一种计算设备,包括:
混合存储器,包括两种或更多种类型的存储器技术;以及
处理器,其耦合到所述混合存储器,其中,所述处理器被配置为执行包括以下各项的操作:
收集所述混合存储器中每种存储器的存储器性能数据;
使用所收集的存储器性能数据,来生成所述混合存储器中每种存储器的能量消耗模型和存储器性能模型;以及
分配所述计算设备上的存储空间,其包括:
在监控代理进程中,基于所述能量消耗模型和存储器性能模型来将中间物理地址转换成物理地址,所述监控代理进程基于所述混合存储器中每种存储器的特性和所述计算设备上运行的一个或多个进程的特性来分配所述物理地址。
23.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为软件进程分配存储空间。
24.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为硬件加速器分配存储空间。
25.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为软件进程和硬件加速器的组合分配存储空间。
26.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得将中间物理地址转换成物理地址包括:
管理程序将所述中间物理地址转换成所述物理地址。
27.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得将中间物理地址转换成物理地址包括:
在操作系统之外运行的监控软件将所述中间物理地址转换成所述物理地址。
28.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得将中间物理地址转换成物理地址包括:
设备驱动器将所述中间物理地址转换成所述物理地址。
29.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间还包括:
在操作系统进程中,将虚拟地址转换成所述中间物理地址。
30.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于以下各项中的一项或多项来分配所述物理地址:
所述混合存储器的性能特性,
所述混合存储器的功耗特性,以及
所述混合存储器的时延特性。
31.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述一个或多个进程的性能特性来分配所述物理地址。
32.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述混合存储器中包括的存储器技术的所述类型来分配所述物理地址。
33.根据权利要求22所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述计算设备何时进入低性能状态的操作,并且
所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述计算设备进入低性能状态,将所述混合存储器的节能部分分配给软件应用。
34.根据权利要求33所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述计算系统何时退出所述低性能状态的操作,并且
所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定不能向请求存储器的软件应用分配节能存储器,以及所述计算设备退出所述低性能状态,向所述应用重新分配所述混合存储器的较不节能部分。
35.根据权利要求22所述的计算设备,其中,所述处理器被配置为执行还包括以下的操作:
确定所述一个或多个进程是否包括苛求进程。
36.根据权利要求35所述的计算设备,其中,所述处理器被配置为执行操作,使得确定所述一个或多个进程是否包括苛求进程包括:
确定所述一个或多个进程是否包括与以下各项中的一项或多项相关联的进程:
多媒体应用;
视频播放器应用;
流式视频应用;
虚拟现实应用;
增强现实应用;
游戏应用;
计算机视觉应用;
视频会议应用;
手势识别应用;以及
语音识别应用。
37.根据权利要求35所述的计算设备,其中,所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的个进程相关联的应用程序分配所述混合存储器的慢速部分。
38.根据权利要求35所述的计算设备,其中,所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与另外的进程相关联的硬件加速器分配所述混合存储器的慢速部分。
39.根据权利要求35所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述苛求进程的存储器速度要求的操作,并且
所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述苛求进程的所述存储器速度要求高,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
40.根据权利要求35所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述苛求进程的存储器速度要求的操作,并且
所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分;以及
向与一个或多个其它进程相关联的一个或多个硬件加速器分配所述混合存储器的慢速部分。
41.根据权利要求35所述的计算设备,其中:
所述处理器被配置为执行还包括确定是否能向所述苛求进程分配节能存储器的操作,并且
所述处理器被配置为执行操作,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的节能部分;以及
响应于确定不能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的较不节能部分。
42.一种计算设备,包括:
混合存储器,包括两种或更多种类型的存储器技术;
硬件层组件;
处理器,其耦合到所述混合存储器和所述硬件层组件,
其中,所述处理器被配置为执行包括以下操作的操作:
收集所述混合存储器中每种存储器的存储器性能数据;
使用所收集的存储器性能数据,来生成所述混合存储器中每种存储器的能量消耗模型和存储器性能模型;以及
分配所述计算设备上的存储空间;
其中,所述硬件层组件被配置为:
通过基于所述混合存储器中每种存储器的特性和所述计算设备上运行的一个或多个进程的特性来分配物理地址,基于所述能量消耗模型和存储器性能模型来将中间物理地址转换成所述物理地址。
43.根据权利要求42所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为软件进程分配存储空间。
44.根据权利要求42所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为硬件加速器分配存储空间。
45.根据权利要求42所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
为软件进程和硬件加速器的组合分配存储空间。
46.根据权利要求42所述的计算设备,其中,所述处理器被配置为执行操作,使得分配所述计算设备上的存储空间包括:
通过在操作系统中将虚拟地址转换成所述中间物理地址,来分配所述计算设备上的存储空间。
47.根据权利要求42所述的计算设备,其中,对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括基于以下各项中的一项或多项来分配所述物理地址:
所述混合存储器的性能特性,
所述混合存储器的功耗特性,以及
所述混合存储器的时延特性。
48.根据权利要求42所述的计算设备,其中,对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述一个或多个进程的性能特性,来分配所述物理地址。
49.根据权利要求42所述的计算设备,其中,对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
基于所述混合存储器中包括的存储器技术的所述类型,来分配所述物理地址。
50.根据权利要求42所述的计算设备,其中:
所述处理器被配置为执行包括确定所述计算设备何时进入低性能状态的操作,并且
对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述计算设备进入低性能状态,将所述混合存储器的节能部分分配给软件应用。
51.根据权利要求50所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述计算设备何时退出所述低性能状态的操作,并且
对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定不能向请求存储器的软件应用分配节能存储器,以及所述计算设备退出所述低性能状态,向所述应用重新分配所述混合存储器的较不节能部分。
52.根据权利要求42所述的计算设备,其中,所述处理器被配置为执行还包括以下操作的操作:
确定所述一个或多个进程是否包括苛求进程。
53.根据权利要求52所述的计算设备,其中,所述处理器被配置为执行操作,使得确定所述一个或多个进程是否包括苛求进程包括:
确定所述一个或多个进程是否包括与以下各项中的一项或多项相关联的进程:
多媒体应用;
视频播放器应用;
流式视频应用;
虚拟现实应用;
增强现实应用;
游戏应用;
计算机视觉应用;
视频会议应用;
手势识别应用;以及
语音识别应用。
54.根据权利要求52所述的计算设备,其中,对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
55.根据权利要求52所述的计算设备,其中,对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与另外的进程相关联的硬件加速器分配所述混合存储器的慢速部分。
56.根据权利要求52所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述苛求进程的存储器速度要求的操作,并且
对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定所述苛求进程的所述存储器速度要求高,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分。
57.根据权利要求52所述的计算设备,其中:
所述处理器被配置为执行还包括确定所述苛求进程的存储器速度要求的操作,并且
对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分;以及
向与一个或多个其它进程相关联的一个或多个硬件加速器分配所述混合存储器的慢速部分。
58.根据权利要求52所述的计算设备,其中:
所述处理器被配置为执行还包括确定是否能向所述苛求进程分配节能存储器的操作,并且
对所述硬件层组件进行配置,使得基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址包括:
响应于确定能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的节能部分;以及
响应于确定不能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的较不节能部分。
59.一种具有混合存储器的计算设备,包括:
用于收集所述混合存储器中每种存储器的存储器性能数据的单元;
用于使用所收集的存储器性能数据,来生成所述混合存储器中每种存储器的能量消耗模型和存储器性能模型的单元;以及
用于分配所述计算设备上的存储空间的单元,其包括:
用于在监控代理中,基于所述能量消耗模型和存储器性能模型来将中间物理地址转换成物理地址的单元,所述监控代理基于所述混合存储器中每种存储器的特性和所述计算设备上运行的一个或多个进程的特性来分配所述物理地址,
其中所述混合存储器包括两种或更多种类型的存储器技术。
60.根据权利要求59所述的计算设备,其中,用于分配所述计算设备上的存储空间的单元包括:
用于为软件进程分配存储空间的单元。
61.根据权利要求59所述的计算设备,其中,用于分配所述计算设备上的存储空间的单元包括:
用于为硬件加速器分配存储空间的单元。
62.根据权利要求59所述的计算设备,其中,用于分配所述计算设备上的存储空间的单元包括:
用于为软件进程和硬件加速器的组合分配存储空间的单元。
63.根据权利要求59所述的计算设备,其中,用于在监控代理中,将所述中间物理地址转换成物理地址的单元包括:
用于在管理程序中,将所述中间物理地址转换成所述物理地址的单元。
64.根据权利要求59所述的计算设备,其中,用于在监控代理中将所述中间物理地址转换成物理地址的单元包括:
用于在所述计算设备的操作系统之外的监控软件中,将所述中间物理地址转换成所述物理地址的单元。
65.根据权利要求59所述的计算设备,其中,用于在监控代理中将所述中间物理地址转换成物理地址的单元包括:
用于在硬件层组件中,将所述中间物理地址转换成所述物理地址的单元。
66.根据权利要求59所述的计算设备,其中,用于在监控代理中将所述中间物理地址转换成物理地址的单元包括:
用于在运行作为设备驱动器的一部分的软件监控器中,将所述中间物理地址转换成所述物理地址的单元。
67.根据权利要求59所述的计算设备,其中,用于分配所述计算设备上的存储空间的单元还包括:
用于在操作系统中,将虚拟地址转换成所述中间物理地址的单元。
68.根据权利要求59所述的计算设备,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于基于以下各项中的一项或多项来分配所述物理地址的单元:
所述混合存储器的性能特性,
所述混合存储器的功耗特性,以及
所述混合存储器的时延特性。
69.根据权利要求59所述的计算设备,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于基于所述一个或多个进程的性能特性,来分配所述物理地址的单元。
70.根据权利要求59所述的计算设备,还包括:
用于确定所述计算设备何时进入低性能状态的单元,
其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于响应于确定所述计算设备进入低性能状态,将所述混合存储器的节能部分分配给软件应用的单元。
71.根据权利要求70所述的计算设备,还包括:
用于确定所述计算设备何时退出所述低性能状态的单元,
其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于响应于确定不能向请求存储器的软件应用分配节能存储器,以及所述计算设备退出所述低性能状态,向所述应用重新分配所述混合存储器的较不节能部分的单元。
72.根据权利要求59所述的计算设备,还包括:
用于确定所述一个或多个进程是否包括苛求进程的单元。
73.根据权利要求72所述的计算设备,其中,用于确定所述一个或多个进程是否包括苛求进程的单元包括:
用于确定所述一个或多个进程是否包括与以下各项中的一项或多项相关联的进程的单元:
多媒体应用;
视频播放器应用;
流式视频应用;
虚拟现实应用;
增强现实应用;
游戏应用;
计算机视觉应用;
视频会议应用;
手势识别应用;以及
语音识别应用。
74.根据权利要求72所述的计算设备,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分的单元。
75.根据权利要求72所述的计算设备,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于当确定所述一个或多个进程包括苛求进程时,向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分,以及向与另外的进程相关联的硬件加速器分配所述混合存储器的慢速部分的单元。
76.根据权利要求72所述的计算设备,还包括:
用于确定所述苛求进程的存储器速度要求的单元,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于响应于确定所述苛求进程的存储器速度要求高,向与所述苛求进程相关联的应用程序分配所述混合存储器的快速部分,以及向与另外的进程相关联的应用程序分配所述混合存储器的慢速部分的单元。
77.根据权利要求72所述的计算设备,还包括:
用于确定所述苛求进程的存储器速度要求的单元,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于向与所述苛求进程相关联的硬件加速器分配所述混合存储器的快速部分的单元;以及
用于向与一个或多个其它进程相关联的一个或多个硬件加速器分配所述混合存储器的慢速部分的单元。
78.根据权利要求72所述的计算设备,还包括:
用于确定是否能向所述苛求进程分配节能存储器的单元,其中,用于基于所述混合存储器的特性和一个或多个进程的特性来分配所述物理地址的单元包括:
用于响应于确定能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的节能部分的单元;以及
用于响应于确定不能向所述苛求进程分配节能存储器,向与所述苛求进程相关联的应用程序分配所述混合存储器的较不节能部分的单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/568,523 US9047090B2 (en) | 2012-08-07 | 2012-08-07 | Methods, systems and devices for hybrid memory management |
US13/568,523 | 2012-08-07 | ||
PCT/US2013/045685 WO2014025454A1 (en) | 2012-08-07 | 2013-06-13 | Methods, systems and devices for hybrid memory management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104520823A CN104520823A (zh) | 2015-04-15 |
CN104520823B true CN104520823B (zh) | 2016-05-04 |
Family
ID=48747725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380041635.XA Expired - Fee Related CN104520823B (zh) | 2012-08-07 | 2013-06-13 | 用于混合存储器管理的方法、系统和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9047090B2 (zh) |
EP (1) | EP2883146A1 (zh) |
JP (1) | JP5916955B2 (zh) |
CN (1) | CN104520823B (zh) |
IN (1) | IN2015MN00051A (zh) |
WO (1) | WO2014025454A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11791326B2 (en) | 2021-05-10 | 2023-10-17 | International Business Machines Corporation | Memory and logic chip stack with a translator chip |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
GB2495959A (en) | 2011-10-26 | 2013-05-01 | Imagination Tech Ltd | Multi-threaded memory access processor |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US9740624B2 (en) | 2012-10-08 | 2017-08-22 | International Business Machines Corporation | Selectable address translation mechanisms within a partition |
US9280488B2 (en) | 2012-10-08 | 2016-03-08 | International Business Machines Corporation | Asymmetric co-existent address translation structure formats |
US9600419B2 (en) * | 2012-10-08 | 2017-03-21 | International Business Machines Corporation | Selectable address translation mechanisms |
US9355040B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Adjunct component to provide full virtualization using paravirtualized hypervisors |
US9355032B2 (en) | 2012-10-08 | 2016-05-31 | International Business Machines Corporation | Supporting multiple types of guests by a hypervisor |
US9348757B2 (en) | 2012-10-08 | 2016-05-24 | International Business Machines Corporation | System supporting multiple partitions with differing translation formats |
US9448612B2 (en) * | 2012-11-12 | 2016-09-20 | International Business Machines Corporation | Management to reduce power consumption in virtual memory provided by plurality of different types of memory devices |
US10210096B2 (en) * | 2013-10-01 | 2019-02-19 | Ampere Computing Llc | Multi-stage address translation for a computing device |
US10437479B2 (en) | 2014-08-19 | 2019-10-08 | Samsung Electronics Co., Ltd. | Unified addressing and hierarchical heterogeneous storage and memory |
US10282100B2 (en) | 2014-08-19 | 2019-05-07 | Samsung Electronics Co., Ltd. | Data management scheme in virtualized hyperscale environments |
GB2536201B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Handling address translation requests |
US9547361B2 (en) * | 2015-04-29 | 2017-01-17 | Qualcomm Incorporated | Methods and apparatuses for memory power reduction |
US10157008B2 (en) | 2015-04-29 | 2018-12-18 | Qualcomm Incorporated | Systems and methods for optimizing memory power consumption in a heterogeneous system memory |
US9977730B2 (en) * | 2015-05-08 | 2018-05-22 | Dell Products, Lp | System and method for optimizing system memory and input/output operations memory |
US10007435B2 (en) | 2015-05-21 | 2018-06-26 | Micron Technology, Inc. | Translation lookaside buffer in memory |
JP6212073B2 (ja) * | 2015-06-29 | 2017-10-11 | ファナック株式会社 | プログラムの内容に応じて格納先を自動選択する機能を備えた数値制御装置 |
US9690494B2 (en) | 2015-07-21 | 2017-06-27 | Qualcomm Incorporated | Managing concurrent access to multiple storage bank domains by multiple interfaces |
US10003529B2 (en) * | 2015-08-04 | 2018-06-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for memory allocation in a software-defined networking (SDN) system |
US9740438B2 (en) * | 2015-08-20 | 2017-08-22 | Sap Se | Allocating memory on multiple types of main memory technologies from software application layer |
US20170108911A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for page-by-page memory channel interleaving |
US20170108914A1 (en) * | 2015-10-16 | 2017-04-20 | Qualcomm Incorporated | System and method for memory channel interleaving using a sliding threshold address |
GB2545170B (en) * | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
US11762764B1 (en) * | 2015-12-02 | 2023-09-19 | Pure Storage, Inc. | Writing data in a storage system that includes a first type of storage device and a second type of storage device |
US20170168541A1 (en) | 2015-12-15 | 2017-06-15 | Intel Corporation | Processor core energy management |
US20170185292A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Memory Management of High-Performance Memory |
CN105676727B (zh) * | 2016-01-11 | 2018-03-02 | 西北工业大学 | 一种发动机燃油供应系统控制时序存储和读取方法 |
US10140216B2 (en) * | 2016-01-21 | 2018-11-27 | Arm Limited | Measuring address translation latency |
US9830086B2 (en) * | 2016-03-03 | 2017-11-28 | Samsung Electronics Co., Ltd. | Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group |
US20170262367A1 (en) * | 2016-03-11 | 2017-09-14 | Qualcomm Incorporated | Multi-rank collision reduction in a hybrid parallel-serial memory system |
CN106657718B (zh) * | 2016-11-07 | 2019-12-06 | 金陵科技学院 | 实现虚拟现实的数据传送系统及其方法 |
US10866912B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Integrated heterogeneous solid state storage drive |
CN107102824B (zh) * | 2017-05-26 | 2019-08-30 | 华中科技大学 | 一种基于存储和加速优化的Hadoop异构方法和系统 |
US11049009B2 (en) | 2017-06-12 | 2021-06-29 | Western Digital Technologies, Inc. | Identifying memory block write endurance using machine learning |
US10445009B2 (en) * | 2017-06-30 | 2019-10-15 | Intel Corporation | Systems and methods of controlling memory footprint |
US10783252B2 (en) | 2017-08-23 | 2020-09-22 | Qualcomm Incorporated | System and method for booting within a heterogeneous memory environment |
US10691805B2 (en) * | 2018-02-14 | 2020-06-23 | GM Global Technology Operations LLC | Resident manufacturing test software based system for mitigating risks associated with vehicle control modules |
US20190370009A1 (en) * | 2018-06-03 | 2019-12-05 | Apple Inc. | Intelligent swap for fatigable storage mediums |
CN110928737B (zh) * | 2018-09-19 | 2021-05-18 | 华为技术有限公司 | 监控样本进程的内存访问行为的方法和装置 |
US11176493B2 (en) | 2019-04-29 | 2021-11-16 | Google Llc | Virtualizing external memory as local to a machine learning accelerator |
CN112016693B (zh) * | 2019-05-30 | 2021-06-04 | 中兴通讯股份有限公司 | 机器学习引擎实现方法及装置、终端设备、存储介质 |
CN110265029A (zh) * | 2019-06-21 | 2019-09-20 | 百度在线网络技术(北京)有限公司 | 语音芯片和电子设备 |
US11099758B2 (en) * | 2019-07-16 | 2021-08-24 | Facebook Technologies, Llc | Memory management of computing devices |
US10996975B2 (en) | 2019-08-22 | 2021-05-04 | Micron Technology, Inc. | Hierarchical memory systems |
US11494311B2 (en) | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11650742B2 (en) * | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
JP2021051420A (ja) | 2019-09-24 | 2021-04-01 | 株式会社東芝 | 仮想化支援デバイス及び仮想化支援デバイスの制御方法 |
US11733763B2 (en) * | 2020-08-06 | 2023-08-22 | Micron Technology, Inc. | Intelligent low power modes for deep learning accelerator and random access memory |
WO2022118322A1 (en) * | 2020-12-02 | 2022-06-09 | Unifabrix Ltd. | System and method for multimodal computer address space provisioning |
US20240168535A1 (en) * | 2022-11-22 | 2024-05-23 | Gopro, Inc. | Dynamic power allocation for memory using multiple interleaving patterns |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662886A (zh) * | 2002-04-18 | 2005-08-31 | 英特尔公司 | 存储信息的方法和系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04230508A (ja) * | 1990-10-29 | 1992-08-19 | Internatl Business Mach Corp <Ibm> | 低電力消費メモリ装置 |
JPH11242629A (ja) * | 1997-10-09 | 1999-09-07 | Matsushita Electric Ind Co Ltd | メモリシステム |
JP2004310580A (ja) * | 2003-04-09 | 2004-11-04 | Mitsubishi Electric Corp | メモリマップ最適化方式及びメモリマップ最適化方法 |
WO2008055272A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Integrating data from symmetric and asymmetric memory |
WO2009052525A1 (en) | 2007-10-19 | 2009-04-23 | Virident Systems, Inc. | Managing memory systems containing components with asymmetric characteristics |
GB2460393B (en) | 2008-02-29 | 2012-03-28 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry |
JP2011022933A (ja) * | 2009-07-17 | 2011-02-03 | Toshiba Corp | メモリ管理装置を含む情報処理装置及びメモリ管理方法 |
US9280466B2 (en) | 2008-09-09 | 2016-03-08 | Kabushiki Kaisha Toshiba | Information processing device including memory management device managing access from processor to memory and memory management method |
GB2474666B (en) | 2009-10-21 | 2015-07-15 | Advanced Risc Mach Ltd | Hardware resource management within a data processing system |
US8589650B2 (en) * | 2010-05-17 | 2013-11-19 | Texas Instruments Incorporated | Dynamically configurable memory system |
GB2483907A (en) | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Privilege level switching for data processing circuitry when in a debug mode |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US8239620B2 (en) | 2010-09-27 | 2012-08-07 | Mips Technologies, Inc. | Microprocessor with dual-level address translation |
US8990538B2 (en) | 2010-11-05 | 2015-03-24 | Microsoft Corporation | Managing memory with limited write cycles in heterogeneous memory systems |
-
2012
- 2012-08-07 US US13/568,523 patent/US9047090B2/en active Active
-
2013
- 2013-06-13 WO PCT/US2013/045685 patent/WO2014025454A1/en active Application Filing
- 2013-06-13 CN CN201380041635.XA patent/CN104520823B/zh not_active Expired - Fee Related
- 2013-06-13 EP EP13734550.0A patent/EP2883146A1/en not_active Withdrawn
- 2013-06-13 JP JP2015526533A patent/JP5916955B2/ja not_active Expired - Fee Related
- 2013-06-13 IN IN51MUN2015 patent/IN2015MN00051A/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1662886A (zh) * | 2002-04-18 | 2005-08-31 | 英特尔公司 | 存储信息的方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11791326B2 (en) | 2021-05-10 | 2023-10-17 | International Business Machines Corporation | Memory and logic chip stack with a translator chip |
Also Published As
Publication number | Publication date |
---|---|
US20140047251A1 (en) | 2014-02-13 |
JP2015528597A (ja) | 2015-09-28 |
IN2015MN00051A (zh) | 2015-10-16 |
WO2014025454A1 (en) | 2014-02-13 |
US9047090B2 (en) | 2015-06-02 |
EP2883146A1 (en) | 2015-06-17 |
CN104520823A (zh) | 2015-04-15 |
JP5916955B2 (ja) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104520823B (zh) | 用于混合存储器管理的方法、系统和设备 | |
US20190065242A1 (en) | Systems, methods and devices for work placement on processor cores | |
CN109522087B (zh) | 基于国产申威处理器的虚拟机构建方法和系统 | |
US8645733B2 (en) | Virtualized application power budgeting | |
CN104115093B (zh) | 包括多个处理元件之间的功率和性能平衡的用于能效和节能的方法、装置和系统 | |
CN103597449B (zh) | 操作系统解耦的异构计算 | |
US7496494B2 (en) | Method and system for multiprocessor emulation on a multiprocessor host system | |
Singh et al. | Energy-efficient run-time mapping and thread partitioning of concurrent OpenCL applications on CPU-GPU MPSoCs | |
CN101322106B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US20120054409A1 (en) | Application triggered state migration via hypervisor | |
Cuesta et al. | Adaptive task migration policies for thermal control in mpsocs | |
US20140281610A1 (en) | Exploiting process variation in a multicore processor | |
CN104380256A (zh) | 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段 | |
Shaheen et al. | Towards energy saving in computational clouds: taxonomy, review, and open challenges | |
US12020065B2 (en) | Hierarchical processor selection | |
Chen et al. | Cache partitioning and scheduling for energy optimization of real-time MPSoCs | |
Liu et al. | Scratchpad memory architectures and allocation algorithms for hard real-time multicore processors | |
Hu et al. | A novel design of software system on chip for embedded system | |
Quan et al. | A system-level simulation framework for evaluating task migration in MPSoCs | |
Petrongonas et al. | ParalOS: A scheduling & memory management framework for heterogeneous VPUs | |
Sundari et al. | Improved memory performance through the development of an energy efficient distributed memory Management System | |
Anagnostopoulos et al. | Power-aware dynamic memory management on many-core platforms utilizing DVFS | |
Boyer | Improving Resource Utilization in Heterogeneous CPU-GPU Systems | |
Shah et al. | TokenSmart: Distributed, scalable power management in the many-core era | |
US20230098742A1 (en) | Processor Power Management Utilizing Dedicated DMA Engines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160504 Termination date: 20210613 |
|
CF01 | Termination of patent right due to non-payment of annual fee |