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

文档序号:8207708阅读:来源:国知局
机410。这允许每一个客户机操作系统(例如,操作系统404)在具有独占访问处理器、外围设备、I/O、MMU和硬件408中的存储器的错觉情况下进行操作。
[0066]如上面参照图2所讨论的,操作系统可以负责跨越多个进程对物理存储器进行划分。这可以经由存储器地址空间转换进程来实现。在存储器地址空间转换进程中,操作系统向每一个应用程序分配虚拟地址(VA),并且随后,在该程序的执行之前,基于该虚拟地址(VA)来分配物理存储器地址(PA)。但是,在包括客户机操作系统(其运行在虚拟机的顶部)的系统中,由该客户机操作系统所分配的存储器地址不是真实的物理地址(PA),而是中间物理地址(IPA)。在这种系统中,物理存储器的实际分配基本由管理程序来执行,其中,需要管理程序来维持虚拟地址(VA)、中间物理地址(IPA)和物理地址(PA)之间的关系。
[0067]大部分处理器系统仅支持单一阶段的存储器地址转换过程,并且需要管理程序来管理虚拟地址(VA)、中间物理地址(IPA)和物理地址(PA)之间的关系。这通常由管理程序维持其自身的转换表(被称为阴影转换表)来实现,该转换表可以通过解读每一个客户机操作系统的转换表来导出。在这种系统上,管理程序必须确保在阴影结构中反映对客户机操作系统的转换表的所有改变,以及实施保护和将访问故障重定向到适当的阶段。这些操作增加了管理程序的复杂度,并且增加了执行、维持和/或管理该管理程序的开销。在移动设备上,这些附加的复杂度和开销对于性能来说可能具有显著的影响。
[0068]不同于上面所讨论的单阶段处理器,一些处理器系统(例如,ARMv7-A)提供针对两个阶段的存储转换的硬件辅助。例如,ARM处理器可以包括虚拟化扩展,该虚拟化扩展使客户机操作系统在第一阶段中将虚拟地址(VA)转换成中间物理地址(IPA),以便硬件在第二阶段中将该中间物理地址(IPA)转换成物理地址(PA)。这种虚拟化扩展减少了与执行、维持和/或管理该管理程序相关联的开销,并且提高了计算设备性能。
[0069]图5示出了在用于实现系统虚拟机的计算设备500上,与以两个阶段来分配存储器相关联的示例性逻辑组件和地址转换。客户机操作系统510的存储器管理系统可以向应用程序/进程(A0,An)中的每一个分配虚拟地址空间502、504。例如,虚拟地址空间502、504可以由虚拟存储器管理器(例如,客户机OS VMM)来分配。可以向每一个应用程序/进程(A0,An)分配其自身的虚拟地址空间502、504,并且每一个虚拟地址空间502、504可以包括一个或多个虚拟地址VAO、VAn。
[0070]在图5所示出的例子中,以两个阶段来转换存储地址。在第一转换阶段512中,客户机操作系统的虚拟存储器管理器(客户机OS VMM)可以将虚拟地址VAO、VAn映射到中间物理地址空间506中的中间物理地址ΙΡΑ0、ΙΡΑη。在第二转换阶段514中,管理程序和/或虚拟化扩展可以将中间物理地址IPAO、IPAn映射到物理地址空间508中的物理地址ΡΑ0、PAn。第一转换阶段512可以独立于第二转换阶段514来执行,并且在现有系统中,用于执行第二阶段转换514的组件并不基于存储器的特性来分配物理地址。
[0071]如上所述,虚拟化扩展可以实现将每一个存储器地址转换两次(例如,经由用于将VA转换成IPA的一个基表(base table)和用于将IPA转换成PA的第二基表)。各个实施例可以使用这些两阶段的转换技术/特征,以允许操作系统以统一的方式来使用混合存储器或者不相连的存储器。在这样做时,各个实施例可以通过向存储器的类型分配最适合其需求的数据来优化存储器使用,而无需操作系统知道在每一次存储器访问中发生的操作的细节。
[0072]图6A示出了基于混合存储器的各个存储器部分的具体特性,以两个阶段来分配存储器的方面方法600。在方框602中,应用程序可以从操作系统请求存储空间的分配,该操作系统可以是在管理程序上运行的客户机操作系统。在方框604中,操作系统可以响应于该请求,向该应用程序分配虚拟存储器地址。在方框606中,操作系统(其可能不了解在硬件平台下的不同存储器配置)可以通过将虚拟存储器地址(VA)转换成中间物理地址(IPA)来执行第一阶段的地址转换处理。在方框608中,芯片或虚拟化软件可以通过以说明该应用程序和/或混合存储器的各个部分的不同特性的方式,将中间物理地址(IPA)转换成物理地址(PA),来执行第二阶段的地址转换。在一个方面,作为方框608的一部分,芯片或虚拟化软件可以安排物理存储器页,使得针对给定的混合存储器配置,对数据负载进行平衡和优化。
[0073]图6B示出了基于应用程序的存储器要求和混合存储器的访问速度特性来分配物理地址的方面方法620。在方框622中,芯片或虚拟化软件可以识别和定位混合存储器的快速部分。在方框624中,芯片或虚拟化软件可以识别和定位该混合存储器的慢速部分。用于识别混合存储器中的快速和慢速存储器段或部分的操作可以在任何时间来完成,例如,作为初始配置建立过程的一部分、作为在上电时执行的启动过程的一部分,或者作为装载一个应用的一部分。在方框626中,芯片或虚拟化软件可以确定该应用程序的存储器需求。例如,芯片或虚拟化软件可以确定该应用程序是否涉及视频流媒体/处理,或者涉及对系统提供或者处理数据具有较高要求的其它技术,并因此将通过使用快速的存储器段来获益。替代地,芯片或虚拟化软件可以确定该应用程序是否是以非时间敏感的方式来使用数据,并且因此可以在不影响该应用的性能的情况下,向其分配慢速存储器。
[0074]在确定框628中,芯片或虚拟化软件可以确定该应用程序是否满足被分配该混合存储器的快速部分的要求(例如,与视频流媒体/处理有关等等)。如果确定该应用程序不满足被分配该混合存储器的快速部分的要求(即,确定框628 = “否”),则在方框630中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的慢速部分中的物理地址(PA)。如果确定该应用程序满足用于被分配该混合存储器的快速部分的要求(即,确定框628 = “是”),则在方框632中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的快速部分中的物理地址(PA)。
[0075]各个方面可以用于支持在计算设备上运行的任何要求苛刻的、复杂的或者功率密集型应用,这种应用将通过访问快速存储器来获益。一些例子包括产生视频输出的应用,因此必须对存储器之内和之外的大量视频数据(例如,视频播放器应用、流式视频应用、多媒体应用、虚拟现实应用和增强现实应用、游戏应用、计算机视觉应用、视频会议应用、手势识别应用、语音识别应用等等)进行处理。各个方面还可以一般用于没有专用硬件来使用、并且因此在中央处理单元(CPU)中完成处理的任何处理密集型和/或数据密集型处理。再举一个例子,各个方面还可以用于向各种外围设备分配存储器(这些外围设备提供或者使用大量的数据),并因此能够通过优选地访问快速存储器段来获益。
[0076]图6C示出了基于应用程序的存储器要求和混合存储器的能量消耗特性,来分配物理地址的方面方法640。在方框642中,芯片或虚拟化软件可以识别和定位混合存储器的节能部分。在方框644中,芯片或虚拟化软件可以识别和定位该混合存储器的较不节能部分。类似于上面所描述的方法620,用于识别混合存储器中的节能存储器段或部分和较不节能存储器段或部分的操作,可以在任何时间完成,例如,作为初始配置建立过程的一部分、作为在上电时执行的启动过程的一部分,或者作为装载应用的一部分。在方框646中,芯片或虚拟化软件可以以与存储器的能量消耗特性有关的方式,来确定该应用程序的存储器需求。例如,芯片或虚拟化软件可以确定如果将数据存储在节能存储器中,而不是存储在混合存储器的其它部分(如果存储在所述其它部分时,可以更快速地写入或访问,但消耗更多的功率)时,该应用程序是否以没有被影响的方式来使用数据。
[0077]在确定框648中,芯片或虚拟化软件可以确定该应用程序能够根据通过更高效的存储器段的存储器分配来支持,还是需要混合存储器的较不节能部分(例如,与视频流媒体/处理有关等等)来支持。如果确定可以向该应用程序分配该混合存储器的更加节能部分(即,确定框648 =“是”),则在方框650中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的更加节能部分中的物理地址(PA)。如果确定该应用程序不能使用更加节能部分,或者需要混合存储器的较不节能部分的分配(即,确定框648 =“否”),则在方框652中,芯片或虚拟化软件可以将与该应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的较不节能部分中的物理地址(PA)。
[0078]各个方面还可以用于允许计算系统在进入降低的功率状态时(例如,如在一段时间的不活动之后可以实现的空闲模式或者低功率模式)节省功率。由于在计算系统上运行的应用在这种空闲状态或者低功率状态期间,不太可能需要高性能存储器,因此用户可以不会注意到由于使用更加节能但慢速的存储器来支持这些应用而可能发生的性能降低。因此,当芯片或虚拟化软件检测到(或者由操作系统通知)该计算系统进入低性能状态(例如,空闲模式、低功率模式或者休眠模式)时,可以确定能向所有应用程序分配混合存储器的更加节能部分(即,对于所有应用来说,确定框648 =“是”),并且在方法640的方框650中,芯片或虚拟化软件可以将与所有应用程序相关联的中间物理地址(IPA)转换成所识别的混合存储器的更加节能部分中的物理地址(PA)。相反地,当芯片或虚拟化软件检测到(或者由操作系统通知)该计算系统返回到性能状态(例如,退出空闲模式或者低功率模式)时,可以返回到方法640的方框646,以确定活动程序的应用程序存储器要求,并在方框648中确定当进入低功率状态时所做出的任何存储器分配是否需要改变,以便在不经历性能损失的情况下,针对不能使用节能存储器的应用程序,将中间物理地址(IPA)转换成所识别的混合存储器的较不节能部分中的物理地址(PA)。
[0079]图7示出了示例性计算系统700中的示例性逻辑组件和转换,该示例性计算系统700被配置为根据各个方面,基于混合存储器的各个存储器部分的特定特性来执行两个阶段的地址转换过程。在图7所示出的例子中,计算系统700包括具有快速存储器部分和慢速存储器部分的物理存储器702。计算系统700的操作系统(例如,客户机操作系统),可以向具有相对较低优先级、复杂度和/或存储器要求的第一应用程序(AO)(例如,文本编辑器应用)分配第一虚拟地址(VAO)。该操作系统可以向具有相对较高优先级、复杂度和/或存储器要求的第二应用程序(An)(例如,视频处理应用)分配第二虚拟地址(VAn)。
[0080]在第一转换阶段712,操作系统可以将虚拟地址VAO、VAn转换成中间物理地址IPAO, IPAn。在第二转换阶段714,虚拟化软件或芯片可以智能地将中间物理地址ΙΡΑ0、IPAn转换成物理地址,使得向应用程序(AO)分配存储器704的慢速块(或者更加节能存储器),而向应用程序(An)分配存储器706的快速块。可以经由在芯片或虚拟化软件中实现的知晓分离(segregat1n-aware)的第二阶段转换器(其被配置为以智能方式来分发、分配和/或指派存储器),来实现中间物理地址的智能转换。
[0081]在一个方面,可以由芯片或虚拟化软件基于混合存储器的当前性能/能量消耗特性来动态地分配物理存储器,基于访问性能(例如,访问速度)和/或能量消耗模型,来执行中间物理地址的智能转换。
[0082]所述性能和/或能量消耗模型可以包括:存储用于监控各个应用程序、代码单元、内核/处理器、存储器部分的信息的数据结构(例如,列表、阵列、表、映射等等),以及用于针对各个应用程序/代码单元、针对具体的内核/处理器和/或存储器部分来执行存储器读/写操作所必需的时间/功率量。所述能量消耗模型还可以存储:用于识别针对每一个应用程序的替代的、更加高效的存储器或存储器部分的信息。在各个方面,所述能量消耗模型可以由虚拟化软件开发者、芯片设计者、应用程序的开发者或者存储器制造商来提供。
[0083]在一个方面,当使用机器学习过程来操作时(即,在运行时),可以由虚拟软件或芯片来构造或调整所述能量消耗模型。随着计算设备执行目标代码和/或访问存储器以监控写入和访问时间和/或用于写入、维持和访问数据以生成存储器性能数据的功率需求,可以实现这种机器学习过程。根据这种存储器性能数据,机器学习过程可以生成新的性能和/或能量消耗模型,或者更新由设备/硬件制造商或软件供应商先前所生成或者提供的性能和/或能量消耗模型。例如,该虚拟软件可以被配置为:通过使用机器学习技术,基于从先前的存储器读/写操作所收集到的读/写时间和/或功耗信息,来构造能量消耗模型。
[0084]各种各样的反馈和机器学习技术可以用于生成和修改存储器性能和能量消耗模型。例如,当所测量的结果与该模型预测发生偏离时,可以对优化规则进行改变或者调整。再举一个例子,可以由该虚拟软件来执行机械扰动和测试方法实验。机械扰动和测试方法实验可以涉及:对优化规则进行改变,将该优化规则发生改变之前和之后所测量的存储器访问的功耗进行比较,以及如果改变后的优化规则提供最佳的结果,则选择改变后的优化规则进行使用。在一个方面,可以将不同长度的存储器的功率性能彼此之间进行比较,以识别能够使得发生更佳的优化的模式。
[0085]使用反馈和学习机制来生成和/或调整存储器性能和能量消耗模型呈现了数种优点。例如,在设计了所述模型之后,反馈和学习机制可以使计算系统能够适应在设置了初始设计方案之后所发生的硬件性能的改变(例如,增加了新的存储器、更换了处理器等等)。当从一个以上的供应商购买了存储器时,当向系统增加新的硬件时,这种改变可能发生于来自同一供应商的批次-到-批次(lot-to-lot)的存储器芯片,并且由于系统性能的改变而造成的随时间变化。因此,反馈和学习机制可以使各个方面更好地说明存储器访问速度和功耗特性的批次-到-批次可变性(variability)以及线间(line
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1