用于混合存储器管理的方法、系统和设备的制造方法_2

文档序号:8207708阅读:来源:国知局
的性能和/或减少设备的功耗。
[0041]各个方面提供了改进的计算设备存储器管理系统,该系统使操作系统能够以统一的方式来使用混合存储器,提高存储器访问时间和处理器性能和/或减少由该计算设备所消耗的功率的量。各个方面使操作系统能够以统一的方式来使用不相连的混合存储器,而无需操作系统知道在每次存储器访问中发生的操作的细节。具体而言,各个方面可以使用两阶段的地址转换过程,其中第二阶段的地址转换在用于安排存储器分配的硬件层或者管理程序层中执行,使得针对给定的混合存储器配置来动态地平衡和优化数据负载。各个方面可以在计算设备的管理程序层和/或芯片层中实现,使得对现有的操作系统、外围设备(例如,硬件加速器等)或应用程序进行改动不是必需的。
[0042]各个方面可以在各种各样的单处理器和多处理器计算机架构上实现,其例子的图1中示出。计算设备100可以包括数个异构处理器,例如,所示出的数字信号处理器(DSP) 102、调制解调器处理器104、图形处理器106和应用处理器108。计算设备100还可以包括连接到处理器102-108中的一个或多个的一个或多个矢量协处理器110。各个处理器102-110可以包括一个或多个内核,并且每一个处理器/内核可以独立于其它处理器/内核来执行操作。各个处理器102-110还可以包括存储器(没有示出)和/或存储器管理系统控制器。在一个方面,计算设备100组件可以位于单个基板上,和/或一起紧密耦合成片上系统(SOC) 125。
[0043]计算设备100可以包括模拟电路和定制电路114,用于管理传感器数据、模数转换、无线数据传输、以及执行其它专用操作(例如,对用于游戏和电影的编码音频信号进行处理)。计算设备100还可以包括系统组件和资源116,例如,电压调节器、振荡器、锁相环、外围桥接器、数据控制器、存储器控制器、系统控制器、接入端口、定时器、以及用于支持处理器、存储器和在计算设备上运行的客户端的其它类似组件。系统组件/资源116中的每一个还可以包括存储器(没有示出)和/或存储器管理系统控制器。
[0044]在各个方面,应用处理器108可以是中央处理单元(CPU)、CPU的组件、耦合到CPU的处理单元。在一个方面,CPU可以被配置为从处理器102-110、系统组件/资源116和/或外围设备的各种存储器读取信息以及向其写入信息,这可以经由处理器102-110、资源116和/或外围设备的各自的存储器管理系统控制器来实现。
[0045]计算设备100还可以包括用于组件和资源(例如,时钟118和电压调节器120)之间的通信的输入/输出模块(没有示出)。处理器102-110可以经由互连/总线模块122而互连到一个或多个存储器单元112、资源116、定制电路114和各种其它系统组件。
[0046]如上所述,计算设备100可以包括连接到处理器102-108中的一个或多个的一个或多个矢量协处理器110。对需要快速和并行执行的应用(例如,多媒体和视频流应用)进行处理来说,这种矢量协处理器110可能特别有用。在一个方面,矢量协处理器110可以实现单指令多数据(SMD)指令集架构(ISA),该架构包括独立的硬件寄存器、存储器和/或执行硬件。SMD矢量协处理器可以是计算设备100的主处理器(例如,应用处理器108、CPU等等)的一部分,或者紧耦合到计算设备100的主处理器。
[0047]图2示出了一种处理器的分层架构,其示出了适于实现各个方面的典型计算机系统中的逻辑组件和接口。所示出的计算机系统架构200包括硬件组件222和软件组件220。软件组件220可以包括操作系统202、库模块204、以及一个或多个应用程序(AO-An) 204。硬件组件222可以包括外围设备208 (例如,硬件加速器、输入/输出设备等等)、中央处理单元(CPU) 210、中央处理单元存储器管理单元(CPU MMU) 216、一个或多个系统存储器管理单元(本文中称为“系统MMU”或“ SMMU”)212和一个或多个存储器214。
[0048]可以将针对移动计算设备所编写的应用软件编译成可执行代码,其通常称为“应用”、“小应用程序”或者应用程序206。每一个应用程序206可以是单一进程或者线程,或者可以包括多个进程或者线程。
[0049]应用程序206可以经由应用程序接口(API)来发出针对库模块204的高级语言(HLL)库调用。库模块204可以经由应用程序二进制接口(API)来启用(invoke)操作系统202上的服务(例如,经由操作系统调用)。操作系统202可以使用特定的指令集架构(ISA)来与硬件组件通信,其中ISA是由硬件222实现的特定操作码(opcode)和本地命令的列表。以此方式,ISA规定了如由操作系统202所观测的硬件222。
[0050]操作系统202可以负责协调和控制各种存储器214在应用程序206之间的分配和使用,其可以包括跨越多个应用程序(AO-An) 206对物理存储器进行划分。在一个方面,操作系统202可以包括一个或多个存储器管理系统(例如,虚拟存储器管理器等等),以便管理由各个应用程序(AO-An) 206对系统存储器的分配和使用。存储器管理系统可以用于确保由一个进程使用的存储器不干扰已经由另外的进程所使用的存储器。
[0051]在一个方面,操作系统202可以包括被配置为执行“虚拟寻址”操作的虚拟存储器管理器(OS VMM),这种操作使操作系统202能够将特定的物理地址呈现成另一种地址(即,虚拟地址)。这种虚拟寻址操作可以包括:向应用程序(AO-An) 206分配虚拟存储器地址。在操作系统202中包括虚拟存储器管理器,可以简化多个进程或者应用程序(AO-An) 206之间的系统存储器的协调和控制。
[0052]除了上面所讨论的基于软件的存储器管理系统(例如,OS VMM等等)之外,该系统还可以包括一个或多个基于硬件的存储器管理系统,例如,图2中所示出的中央处理单元(CPU)存储器管理单元(MMU) 216和系统MMU 212。CPU MMU 216和系统MMU 212中的每一个可以包括负责执行各种与存储器有关的操作(例如,虚拟地址向物理地址的转换、高速缓存控制、总线仲裁和存储器保护)的一个或多个硬件组件。在一个方面,CPU MMU 216可以负责向主CPU 210提供地址转换服务和保护功能,并且系统MMU 212可以负责向其它硬件组件(例如,数字信号处理器、调制解调器处理器、图形处理器等等)提供地址转换服务和保护功能。
[0053]在各个方面,存储器管理系统中的一个或多个(例如,系统MMU 212,CPU MMU 216等等)可以包括后援转换缓冲器(translat1n look-aside buffer,TLB),TLB是可以用于存储器地址转换(例如,将虚拟地址转换成物理地址等等)的高速缓存存储器。在一个方面,后援转换缓冲器(TLB)可以是内容寻址存储器(CAM),CAM可以是在其中所存储的信息被组织成键-值格式(例如,哈希表)的硬件关联阵列存储器。这些键可以是虚拟地址,而这些值可以是物理地址。在各个方面,TLB可以是硬件管理的TLB、软件管理的TLB或者其任意组合。在硬件管理的TLB的情况下,TLB条目的格式是软件不可见的,并且因此,对于不同类型的CPU来说,其可以是不同的。
[0054]通常,作为存储器地址转换进程的一部分,存储器管理系统(例如,OS VMM、系统MMU 212,CPU MMU 216等等)可以执行CAM搜索以便通过向TLB发送作为键值的虚拟地址,来从TLB请求物理地址。如果虚拟地址键值在TLB中具有相应的物理地址值(即,发生了TLB “命中”),则CAM搜索可以获取和返回相应的物理地址。如果请求的地址没有处于TLB中(即,发生了 TLB “失败”),则该存储器地址转换进程可以通过读取多个存储器位置的内容和计算物理地址,来执行页遍历(page walk)(例如,软件页遍历、硬件页遍历等等)。在通过页遍历来确定物理地址之后,可以将虚拟地址至物理地址的映射存储在TLB中。
[0055]在包括软件管理的TLB的方面,TLB失败可能使得操作系统来遍历页表,并且以软件方式来执行该转换。在包括硬件管理的TLB的方面,存储器管理系统可以执行硬件页遍历,来确定针对指定的虚拟地址键,是否存在有效的页表条目。
[0056]在各个方面,存储器108可以是具有多个不相连部分的混合存储器,每一个部分可以具有不同的性能、速度、时延、访问时间、安全性、可靠性和/或功耗特性。由于混合存储器中的多种类型的存储器之间的性能的差异,因此选择适当的存储器部件/部分来保存特定类型的应用数据(例如,视频数据对比(VS)文本数据),可以提供显著的性能利益。同样,由于不同的存储器的功耗特性的差异,因此基于应用程序(例如,多媒体对比文本编辑等等)和/或设备状态(例如,休眠、低功率模式、高性能模式等等)来选择适当的存储器,可以显著地提高计算设备的功耗特性。提高功耗特性对于移动设备(例如,智能电话和平板计算机)来说是特别重要的。但是,应用程序通常不会察觉存储器结构(这是由于典型地将这些应用程序编写成能在多种多样的设备和/或操作系统上运行),因此不能够利用混合存储器的这些性能特性。
[0057]当前操作系统并不考虑被分配作为它们的存储器分配实现的一部分的、存储器的性能或功率成本,并且不能够高效地管理混合存储器。因此,操作系统不能够使各种类型的应用来为了应用的利益而充分利用混合存储器的性能特性。存在类似于非统一存储访问(NUMA)的软件技术,其将成本关联到每一种类型的存储器,并且基于策略集来选择存储器;但是,在移动设备(例如,智能电话)上,当前种类的OS内核不允许针对混合存储器配置的特殊操作。另外,现有的解决方案简单地实现了静态成本策略,在很大程度上不知悉特定混合存储器的性能特性,并且对静态策略的改变通常需要对操作系统进行重新编译、重新启动或者重新初始化。由于这些原因和其它原因,现有的存储器管理解决方案不能围绕性能和/或功率效率,针对各种类型的应用来高效地使用混合存储器的不同部分的不同特性,以提尚移动计算设备性能。
[0058]各个方面提供了一种存储器管理系统,该存储器管理系统利用虚拟化技术,使操作系统能够以统一的方式来使用不相连的混合存储器。虚拟化技术实现计算资源的抽象化(或者虚拟化),这可以通过在操作系统和硬件之间设置控制程序(例如,虚拟机监控器“VMM”或管理程序)来实现。虚拟化技术通常在虚拟机(VM)中实现,VM可以是像物理硬件机器一样执行应用程序的软件应用。虚拟机提供应用程序和执行硬件之间的接口,允许与特定的ISA有联系的应用程序在用于实现不同的ISA的硬件上执行。
[0059]图3和图4示出了用于实现虚拟机的典型计算机系统中的逻辑组件。可以将虚拟机分类成两种基本的类型:系统虚拟机;以及进程虚拟机。系统虚拟机允许在不同的进程或者应用之间共享底层的物理硬件。另一方面,进程虚拟机支持单一进程或者应用。
[0060]图3是示出了用于实现进程虚拟机310的计算设备300中的逻辑层的分层架构图。计算机系统300可以包括硬件308、和软件组件,所述软件组件包括应用进程模块302、虚拟化模块304和操作系统306。
[0061]如上面参照图2所讨论的,由于硬件组件仅通过操作系统202才对应用程序206看来说是可见的,则ABI和API有效地规定了可用于应用程序206的硬件特征。虚拟化软件模块304可以在ABI/API层执行逻辑操作,和/或仿真操作系统调用或库调用,使得应用进程302按照其将与硬件组件通信的相同方式(即,经由系统调用/库调用)来与虚拟化软件模块304通信。以此方式,应用进程302将虚拟化模块304、操作系统306和硬件308视为单个机器(例如,图3中所示出的进程虚拟机310)。由于应用软件不需要关注将于其上最终执行该应用的计算设备的实际架构,因此这简化了应用开发人员的工作。
[0062]进程虚拟机310的存在仅仅是为了支持单个应用进程302,因此其随着进程302而产生,并当进程302完成执行时终止。在虚拟机310上运行的进程302被称为“客户”,而底层平台被称为“主机”。典型地,将实现进程虚拟机的虚拟化软件304称为运行时软件(或者简单的“运行时”)。
[0063]图4是示出了用于实现系统虚拟机410的计算设备400中的逻辑层的分层架构图。该计算机系统可以包括硬件组件(例如,执行硬件、存储器、I/o设备等等)408和软件组件,该软件组件包括应用程序模块402、操作系统404和虚拟化模块406。在虚拟化模块406之上运行的软件被称为“客户”软件,支而持该虚拟化模块的底层平台被称为“主机”硬件。
[0064]与进程虚拟机不同,系统虚拟机410提供多个操作系统(被称为“客户机操作系统”)于其上能够共存的完整环境。同样,主机硬件平台可以被配置为同时支持多个、隔离的客户机操作系统环境。同时执行的操作系统之间的这种隔离,为系统增加了安全等级。例如,如果一个客户机操作系统上的安全性被破坏,或者如果一个客户机操作系统遭受失败,则在其它客户系统上运行的软件不会受到这种破坏/失败的影响。由于应用软件不需要关注于其上最终执行该应用的计算设备的实际架构,因此这种主机硬件平台还简化了应用开发人员的工作。
[0065]虚拟化软件模块406可以逻辑地位于主机硬件和客户软件之间。虚拟化软件可以运行在实际硬件(本机)之上,或者运行在(所托管的)操作系统的顶部,并且虚拟化软件典型地被称为“管理程序”或者虚拟机监控器(VMM)。在本机配置中,虚拟化软件以可用的最高特权模式运行在实际硬件上,而客户机操作系统以减少的特权来运行,使得该虚拟化软件可以拦截和仿真所有客户机操作系统动作,该客户机操作系统动作通常将对硬件资源进行访问或者操作。在托管的配置中,虚拟化软件运行在现有的主机操作系统的顶部,并且可以依赖于主机操作系统来提供设备驱动器和其它低层的服务。在任一情况下,客户机操作系统(例如,操作系统404)中的每一个按照它们将与物理硬件408通信的相同方式来与虚拟化软件模块406通信,将虚拟化模块406和硬件408的组合视作为单一的虚拟
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1