存储器地址变换管理的制作方法

文档序号:15285821发布日期:2018-08-29 00:04阅读:147来源:国知局
本公开涉及数据处理系统领域。更具体而言,本公开涉及在数据处理系统内管理从虚拟地址到物理地址的变换。
背景技术
::已知提供了这样的数据处理系统,该数据处理系统提供由超管理程序管理的虚拟机执行环境并将由虚拟机程序所生成的虚拟地址变换为存储器的物理地址。技术实现要素:本公开的至少一些实施例提供了用于处理数据的装置,该装置包括:处理电路,用以执行超管理程序以提供虚拟机执行环境并使用所述虚拟机执行环境来执行虚拟机程序;以及存储器管理电路,用以管理使用第一阶段变换数据及第二阶段变换数据来将由所述虚拟机程序所生成的虚拟地址变换为存储器的物理地址的处理,该第一阶段变换数据指定从所述虚拟地址到中间物理地址的变换,该第二阶段变换数据指定从所述中间物理地址到所述物理地址的变换;其中所述存储器管理电路控制对于所述存储器的存取,以在所述存储器内提供一个或多个虚拟机专用区域,该一个或多个虚拟机专用区域可由所述虚拟机程序存取且至少被标示为不可由所述超管理程序存取;所述第一阶段变换数据包括用以将所述存储器的各个区域标示为一个或多个设备区域中的一者或标示为一个或多个非设备区域中的一者的属性数据;并且在由所述虚拟机程序做出的存储器存取请求针对所述存储器的既是虚拟机专用区域又是设备区域的目标区域时,所述存储器管理电路更改对于根据所述第二阶段变换数据执行的所述变换的管理,以提供专用设备区域管理。本公开的至少一些实施例提供了用于处理数据的装置,该装置包括:处理部件,用于执行超管理程序以提供虚拟机执行环境并用于使用所述虚拟机执行环境来执行虚拟机程序;以及存储器管理部件,用于管理使用第一阶段变换数据及第二阶段变换数据来将由所述虚拟机程序所生成的虚拟地址变换为存储器的物理地址的处理,该第一阶段变换数据指定从所述虚拟地址到中间物理地址的变换,该第二阶段变换数据指定从所述中间物理地址到所述物理地址的变换;其中所述存储器管理部件控制对于所述存储器的存取,以在所述存储器内提供一个或多个虚拟机专用区域,该一个或多个虚拟机专用区域可由所述虚拟机程序存取且至少被标示为不可由所述超管理程序存取;所述第一阶段变换数据包括用以将所述存储器的各个区域标示为一个或多个设备区域中的一者或标示为一个或多个非设备区域中的一者的属性数据;并且在由所述虚拟机程序做出的存储器存取请求针对所述存储器的既是虚拟机专用区域又是设备区域的目标区域时,所述存储器管理部件更改对于根据所述第二阶段变换数据执行的所述变换的管理,以提供专用设备区域管理。本公开的至少一些实施例提供了处理数据的方法,包括:执行超管理程序以提供虚拟机执行环境;使用所述虚拟机执行环境来执行虚拟机程序;管理使用第一阶段变换数据及第二阶段变换数据来将由所述虚拟机程序所生成的虚拟地址变换为存储器的物理地址的处理,该第一阶段变换数据指定从所述虚拟地址到中间物理地址的变换,该第二阶段变换数据指定从所述中间物理地址到所述物理地址的变换;以及控制对于所述存储器的存取,以在所述存储器内提供一个或多个虚拟机专用区域,该一个或多个虚拟机专用区域可由所述虚拟机程序存取且至少被标示为不可由所述超管理程序存取;其中所述第一阶段变换数据包括用以将所述存储器的各个区域标示为一个或多个设备区域中的一者或标示为一个或多个非设备区域中的一者的属性数据;并且在由所述虚拟机程序做出的存储器存取请求针对所述存储器的既是虚拟机专用区域又是设备区域的目标区域时,更改对于根据所述第二阶段变换数据执行的所述变换的管理,以提供专用设备区域管理。附图说明现在将参考附图,仅通过示例的方式描述示例实施例,在附图中:图1示意性地示出了支持执行超管理程序的数据处理系统,该超管理程序向虚拟机程序提供虚拟机执行环境;图2示意性地示出了存储器管理电路,其用以管理使用第一阶段变换数据及第二阶段变换数据来将虚拟地址变换为物理地址的处理;图3示意性地示出了第一阶段变换数据项;图4示意性地示出了向在各个虚拟机执行环境中执行的多个程序提供这些虚拟机执行环境的超管理程序;以及图5为示意性地示出图2的存储器管理电路的操作的流程图。具体实施方式图1示意性地示出了包括处理器核4及存储器6的数据处理系统2。处理器核4包括用于执行来自指令管线12的、由译码器10译码的程序指令的处理电路8,这些程序指令由提取单元14提取到指令管线中。处理电路8执行超管理程序以提供一个或多个虚拟机执行环境,各虚拟机执行环境用于执行利用这些虚拟机执行环境的一个或多个相应程序(以下称为虚拟机程序)。加载/存储单元16对由处理电路8执行的程序指令所指定的存储器6执行存储器存取操作。存储器管理电路18用以对由加载/存储单元16所执行的存储器存取操作执行存储器管理操作。由存储器管理电路18所执行的存储器管理操作包括管理由虚拟机程序所生成的虚拟地址(va)与用以对存储器6内的存储地址进行寻址的物理地址(pa)之间的变换。存储器管理电路18还可使用定义例如,存储器6内的存储器地址空间的特定区域(分页)为只读的、只写的、读/写的、可高速缓存的、还是可缓存的等特征的属性来管理存取。存储器6提供包括通用存储器区域30及设备存储器区域3的存储器地址空间。通用存储器区域20一般用于存储程序及数据,例如,超管理程序、虚拟机程序(例如,运行于由超管理程序所提供的虚拟机执行环境中的操作系统及应用程序)、用于操控的数据、及存储器管理数据(例如,第一阶段变换数据22及第二阶段变换数据24)。在图1的实施例中,通用存储器区域20的不同部分被提供作为虚拟机专用区域26、共享区域28、或超管理器区域30。设备存储器区域23包括为存储器映射的硬件设备(例如,实时时钟设备、随机数生成器、系统安全状态缓存器(register,也称为寄存器)、及各种存储器映射的输入/输出设备(例如,uart))专用的存储器地址。存储器管理电路18使用第一阶段变换数据22及第二阶段变换数据24来管理对于存储器6的存储器地址空间内的各种区域的存取,使得超管理器区域30可由超管理程序存取但一般不可由具有较低等级的权限(较低的例外等级状态)的程序存取。虚拟机专用区域26由存储器管理电路18使用第一阶段变换数据22及第二阶段变换数据24来管理,该虚拟机专用区域可由相应的虚拟机程序存取但不可由超管理程序存取,即使超管理程序具有较高等级的权限(一般,期望较高例外等级具有由较低等级权限的程序所使用的存储器区域上的存取许可权)。共享区域28由存储器管理电路18使用第一阶段变换数据22及第二阶段变换数据24来管理,该共享区域可由超管理程序及虚拟机程序二者存取。针对存储器映射的硬件设备提供设备存储器区域23。对于设备存储器区域23中的至少某些部分的存取由第一阶段变换数据22及第二阶段变换数据24所控制,以作为虚拟机专用区域。据此,存储器6的存储器地址空间内的给定的存储器映射的设备可对应于既是设备存储器区域又是虚拟机专用区域的存储器地址空间内的地址。虚拟机专用区域内的存储器映射的设备可存取该虚拟机专用区域,该存取由存储器管理电路18在第一阶变换数据及第二阶变换数据24的控制下所管理,使得向相对应的虚拟机程序提供存取,但不向其他程序(例如,超管理程序)提供存取。为了有助于对由超管理程序所提供的虚拟化的支持,存储器管理电路18响应于第一阶段变换数据22将由虚拟机程序所生成的虚拟地址(va)变换为中间物理地址ipa,该中间物理地址对应于虚拟机程序关于该虚拟机程序所生成的虚拟地址的物理地址应为何者的观点(至少在操作系统层级)。存储器管理电路18使用第二阶变换数据24来执行中间物理地址ipa到将由加载/存储单元16应用于存储器6的物理地址pa的第二阶段变换。这样,超管理程序能够将由虚拟机程序所生成的中间物理地址ipa重映射到将应用于存储器6的物理地址pa,并且这些物理地址可与中间物理地址ipa不同。第二阶段变换数据24被存储在超管理存储器区域30内,该超管理存储器区域可由超管理程序存取但不可由虚拟机程序存取。第一阶段变换数据22被存储在虚拟机专用区域26内,该虚拟机专用区域可由虚拟机程序存取但不可由超管理程序存取。尽管容许第二阶段变换数据24将中间物理地址ipa变换为通用存储器20的不同的物理地址pa可能是期望的且能够促进操作改良,但这对于设备存储器23而言可能不是真的。具体而言,在虚拟机专用区域26可由虚拟机程序存取但不可由超管理程序存取的系统的背景下,容许第二阶段变换数据24(在超管理程序的控制下)将由虚拟机程序所生成的中间物理地址ipa改变成以下的不同物理地址pa可能是不理想的,这些不同物理地址pa可能不对应于虚拟机程序所要的存储器映射的硬件设备。为了帮助管理将由虚拟机程序所生成的虚拟地址va适当地变换为对应于存储器地址空间内的虚拟机专用区域及设备区域的地址的处理,存储器管理电路18可用以识别此类存取并对这种存取进行专用设备区域管理,该专用设备区域管理与非专用设备区域管理不同(在存储器的包含目标地址的目标区域既不是虚拟机专用区域又不是设备区域时应用非专用设备区域管理)。专用设备区域管理可采取各种不同形式,且可包括确定第二阶段变换数据是否用以将要进行存储器存取的中间物理地址ipa变换为不(直接或间接)匹配中间物理地址ipa的物理地址ipa。可由存储器管理电路18针对既是虚拟机专用区域又是设备区域的目标区域所使用的专用设备区域管理所执行的匹配的形式是,中间物理地址ipa应与物理地址pa相同,即,第二阶段变换数据24不会将中间物理地址变换成不同的形式。如果存储器管理电路18在应用专用设备区域管理时识别出所生成的物理地址pa不与中间物理地址ipa匹配,则存储器管理单元向虚拟机程序返回错误指示(例如,变换错误指示)。因此,可警告虚拟机程序用以重定向其对存储器映射的设备的虚拟地址va与中间物理地址ipa之间的映射的不适当的尝试。虚拟机程序可例如,通过关闭不适当的映射尝试的执行来响应此类不适当的映射尝试,使其安全性不被折衷。在一些实施例中,存储器管理电路18也可用以在其针对虚拟机专用区域及设备区域两者内的地址变换,检测到中间物理地址ipa与物理地址pa不匹配时向超管理程序返回错误指示(例如,变换错误)(即,该地址变换由存储器管理电路18进行专用设备区域管理)。可在根据专用设备区域管理进行地址管理期间引起的另一问题是,在第二阶段变换数据内不存在用以将中间物理地址ipa变换为物理地址pa的变换数据(即,不存在针对既是虚拟机专用区域又是设备区域的存储器区域提供中间物理地址ipa与物理地址pa的一对一映射的数据)。在此情况下,专用设备区域管理可用以向超管理程序及虚拟机程序两者发送错误(例如,变换错误)。超管理程序可通过提供适当的第二阶段变换数据24来响应错误,如果虚拟机程序重新尝试进行变换(该虚拟机程序可能被设置为至少重试一次导致向虚拟机程序返回变换错误的变换),则该第二阶段变换数据将返回一对一映射。如上所述,由存储器管理电路18执行的专用设备区域管理用以防止利用第一阶段地址变换将由虚拟机程序所生成的中间物理地址ipa重新映射到不同的物理地址pa。相反,由存储器管理电路18针对既不是虚拟机专用区域又不是设备区域的存储器区域所提供的非专用设备管理容许第二阶段变换数据24将中间物理地址ipa变换为与中间物理地址ipa不同的物理地址pa。如果第二阶段变换数据24不包含在存储器管理电路18应用非专用设备管理时将中间物理地址ipa映射到物理地址pa的项,则存储器管理电路18可在不向虚拟机程序发送错误指示的情况下向超管理程序返回变换错误,以使能超管理程序尝试矫正在第二阶段变换数据24内不存在中间物理地址ipa到物理地址pa的变换数据的情况,例如,通过重新映射设备以提供阶段二变换数据或利用设备本身的软件捕捉及模仿设备并将结果提供回虚拟机来矫正。存储在虚拟机专用区域26内的第一阶段变换数据22容许区域被标示为虚拟机专用区域。在第一阶段变换数据22被存储在虚拟机专用区域26内时,其可由虚拟机程序所存取(而不可由其他程序存取),因此在虚拟机程序将某区域标示为虚拟机专用区域的情况下,另一程序不能不同地标示该区域且因此超覆由虚拟机程序所实现的专用本质。如果数据处理系统2正在执行支持多个虚拟机执行环境的超管理程序,则这些虚拟机程序中的每个虚拟机程序可具有一个或多个相应的虚拟机专用区域,这些虚拟机专用区域不可由超管理程序及正在执行的任何不同的其他虚拟机程序存取,即,虚拟机专用区域是个别虚拟机执行环境专用的且不与其他虚拟机执行环境或超管理程序共享。图2示意性地示出了存储器管理电路18的一部分的更详细的内容。具体而言,存储器管理电路18包括变换查找缓存器(translationlookasidebuffer)32、第一阶段页表移动状态机(pagetablewalkstatemachine)34、第二阶段页表移动状态机36、及专用设备区域检查电路38。与将要执行的存储器存取及数据处理系统2的当前状态相关联的属性和虚拟地址va被一起输入至变换查找缓存器32,在该变换查找缓存器中,确定变换查找缓存器32是否已经存储(高速缓存)有用以将虚拟地址va变换为物理地址pa的适当变换数据及相关属性。存储在变换查找缓存器32内的变换数据表示已参考第一阶段变换数据22及第二阶段变换数据24针对所考虑的区域做出的前一变换。第一阶段变换数据22用以将虚拟地址va变换为中间物理地址ipa。第二阶段变换数据24用以将中间物理地址ipa变换为物理地址pa。在存储器的同一区域随后被存取且变换数据仍被保持在变换查找缓存器32内时,变换查找缓存器32直接将虚拟地址va变换为物理地址pa。由变换查找缓存器32所生成的物理地址pa也可伴随着将与使用物理地址pa的存储器存取相关联的属性,即,例如,对应数据为不可高速缓存的、不可重新排序的、不可收集的(即,不与相邻的存取合并)、不进行早期确认的等属性。在应用于变换查找缓存器32的虚拟地址va产生未命中(miss)时,第一阶段页表移动状态机34用以执行通过第一阶段变换数据22的页表移动,以返回将虚拟地址va变换为中间物理地址ipa的变换数据。用于所恢复的虚拟地址的第一阶段变换数据项还包括指示包含该虚拟地址的区域是否为虚拟机专用区域及包含该虚拟地址的区域是否为设备区域的属性。如果由第一阶段页表移动状态机34所执行的第一阶段页表移动并未在第一阶段变换数据22内找到变换,或所找到的变换数据指示属性对应于容许错误,则第一阶段页表移动状态机34生成虚拟机变换错误或虚拟机属性错误中的适当的一者,该错误被返回至虚拟机程序。中间物理地址ipa被从第一阶段页表移动状态机34传递至第二阶段页表移动状态机36,该第二阶段页表移动状态机接着执行通过第二阶段变换数据24的页表移动以生成被返回并被存储在变换查找缓存器32中的物理地址pa,以供在存储(高速缓存)在变换查找缓存器32内的变换数据32被从该变换查找缓存器迁出之前再次存取相同区域(存储器6内的存储器地址空间的分页)时使用。如果第二阶段变换数据24并不包含适当的变换,或与存储器存取相关联的属性指示容许错误,则第二阶段页表移动状态机36生成超管理器变换错误或属性变换错误,该错误被返回至超管理程序。在第一阶段页表移动状态机34指示存储器地址空间内的某区域既是虚拟机专用区域又是设备区域时,触发专用设备区域检查电路38额外执行对应于存储器管理电路18执行的专用设备区域管理的检查。在由第一阶段页表移动状态机34所存取的区域既不是虚拟机专用区域又不是设备区域时,专用设备区域检查电路38不执行这些额外的检查,且此类操作对应于由存储器管理电路18指行的非专用设备区域管理。由专用设备区域检查电路38所执行的额外检查为,由第一阶段页表移动状态机34所生成的中间物理地址ipa不被第二阶段页表移动状态机36变更且形成物理地址pa。此检查可在专用设备区域检查电路38的控制下在第二阶段页表移动状态机36内执行,而不需要物理地址pa及中间物理地址ipa被提供给专用设备区域检查电路38本身。例如,可在执行专用-设备区域管理时由第二阶段页表移动状态机36逐位将由第二阶段页表移动所返回的物理地址pa与中间物理地址ipa比较,以确保一对一匹配。如果不存在一对一匹配,则第二阶段页表移动状态机36向专用设备区域检查电路38返回指示此状况的信号,该专用设备区域检查电路随后生成虚拟机变换错误,并可选地生成超管理器变换错误。如果针对为存储器的既是虚拟机专用区域又是设备区域的区域存在中间物理地址ipa与物理地址pa之间的一对一匹配,则允许在无错误的情况下继续进行存取,且适当的项被存储在变换查找缓存器32内。这样,仅在新项被存储在变换查找缓存器32内时需要由专用设备区域检查电路38执行额外检查,因此减少了与此额外检查相关联的开销,且通过变换查找缓存器32从对于存储器存取而言的关键路径移除了此额外检查。图3示意性地示出了第一阶段变换数据内的项。具体而言,此项(其可由从页表移动程序期间执行的多次查找组装的数据形成)至少在区域(分页)粒度(例如,对应于地址位[63:12]的4kb分页)的层级提供了虚拟地址va与中间物理地址之间的变换。第一阶段变换数据项还包括与该区域(分页)相关联的属性数据,该属性数据例如,指示所考虑的区域已由虚拟机程序指定为虚拟机专用区域、可重新排序的区域、可收集的区域、进行早期存取完成确认的区域等。区域可不被明确标示为设备区域,这可由被标示为指示区域为不进行重新排序、收集或早期确认中的任何一者或多者的区域来推断。在其他实施例中,可能将区域明确地标示为设备区域。设备区域一般用于存储器映射的硬件设备,例如,实时时钟、随机数生成器、存储器映射的输入/输出设备、和/或系统安全状态缓存器。图4示意性地示出了可由数据处理系统2执行的程序的体系。此体系包括提供多个虚拟机执行环境42、44、46的超管理程序40。虚拟机执行环境42为专用虚拟机执行环境,在该环境内,其使用的存储器地址空间内的至少一些存储器区域被标示为虚拟机专用区域(即,可由虚拟机执行环境42存取但不可由超管理程序40或其他虚拟机执行环境44、46存取)。图4中还示出了与被执行的不同程序相关联的各个例外等级(权限等级)。超管理程序40以最高例外等级el2(最高权限等级)执行。操作系统程序48、50、52及一个或多个应用程序54、56、58、60、62、64包括虚拟机程序。操作系统程序48、50、52以例外等级el1执行,该例外等级相较于超管理程序40具有较少的权限,但相较于以例外等级el0执行的应用程序54、56、58、60、62、64具有较多权限。图5为示意性地示出存储器管理电路18的操作的流程图。在步骤66,处理等待直到接收到存储器存取请求为止。在步骤68,存储器管理电路18确定在变换查找缓存器32内是否存在针对将变换的虚拟地址的命中(hit)。若存在命中,则处理继续至步骤70,在步骤70,针对存储器地址空间的包含所变换的虚拟地址的区域,作出关于在给定存储在变换查找缓存器32内的属性限制条件的情况下与所接收的虚拟地址相关联的属性是否指示属性错误的判定。如果不存在属性错误,则处理继续至步骤72,在步骤72,使用由变换生成的物理地址及其相关属性执行存储器存取。处理随后终止。如果步骤70的判定是存在属性错误,则处理继续至步骤74,在步骤74,虚拟机和/或超管理器属性错误中的一者或两者被生成,且向源虚拟机程序或超管理程序中适当的一者指示错误。此后处理终止。如果步骤68的判定是在变换查找缓存器32内不存在命中,则需要进行页表移动操作。步骤76使用与在步骤66接收到的存储器存取请求相关联的虚拟地址作为进入第一阶段变换数据22的索引。步骤78确定在第一阶段页表数据内是否存在未命中。如果存在未命中,则步骤80生成虚拟机变换错误且处理随后终止。如果不存在未命中,则存在适当的第一阶段页表数据且处理继续至步骤82,在步骤82,作出关于是否存在属性失效的判定(即,与步骤66的存储器存取请求相关联的属性并不匹配与由第一阶段页表移动所恢复的数据相关联的属性,例如,试图写入被定义为只读的区域的存储器存取)。如果存在属性失效,则步骤84生成返回至虚拟机程序的虚拟机属性错误,且处理随后终止。如果在步骤82不存在属性失效,则步骤86用以将在步骤78由第一阶段页表移动所生成的中间物理地址用作为进入作为第二阶段页表移动的部分的第二阶段变换数据24的索引。步骤88判定在第二阶段页表移动内是否存在未命中。如果存在未命中,则步骤90生成超管理器变换错误。步骤92接着确定第一阶段属性是否指示将存取的区域既是虚拟机专用区域又是设备区域。如果试图存取的区域既是虚拟机专用区域又是设备区域,则处理继续至步骤94,在步骤94,虚拟机变换错误被生称且被返回至虚拟机程序。若步骤92处的判定是第一阶段属性指示试图存取的区域既不是虚拟机专用区域又不是设备区域,则步骤94被跳过。此后,在步骤88处造成未命中的存储器存取请求的处理被终止。如果步骤88的检查指示第二阶段页表移动内不存在未命中,则处理继续至步骤96,在步骤96,作出关于由第二阶段页表移动返回的属性数据在与步骤66接收到的存储器存取请求相关联的属性比较时是否指示属性失效的判定。如果存在属性失效,则处理继续至步骤98,在步骤98超管理器属性错误被生成且被返回至超管理程序。步骤101接着确定第一阶段属性是否指示试图存取的区域既是虚拟机专用区域又是设备区域。如果步骤101的判定为是,则步骤103用以生成被返回至虚拟机的虚拟机属性错误。处理随后终止。如果步骤101的判定为否,则步骤103被跳过,且处理终止。如果在步骤96没有检测到属性失效,则处理继续至步骤100,在步骤100处,作出关于由步骤76执行的第一阶段页表移动返回的属性是否指示要存取的区域既是虚拟机专用区域又是设备区域的判定。如果要存取的区域既是虚拟机专用区域又是设备区域,则步骤102用以检查由第一阶段页表移动所生成的中间物理地址是否与由第二阶段页表移动所生成的物理地址相同(即,应用专用设备区域管理)。若中间物理地址ipa与物理地址pa相同,则指示所执行的地址变换是被容许的,且处理继续至步骤104,于该步骤处,物理地址及与变换相关联的属性被存储在变换查找缓存器32内供后续使用。步骤72随后使用物理地址pa及相关属性来执行存储器存取。如果步骤100的判定是第一阶段属性指示区域既不是虚拟机专用区域也不是设备区域,则步骤102被跳过(对应于非专用设备区域管理),且处理直接从步骤100进行至步骤104。如果步骤102的判定是中间物理地址ipa并不匹配物理地址pa(例如,不相同),则处理继续至步骤106,在步骤106,虚拟机变换错误被生成且被返回至虚拟机程序(且可选地,超管理程序变换错误被生成且被返回至超管理程序)。处理随后终止。尽管已于本文中参照附图详细描述了说明性实施例,但应该理解的是,权利要求不限于这些准确的实施例,且本领域普通技术人员可将各种改变、添加、及更改用于这些实施例而不脱离所附权利要求的范围及精神。例如,可以将独立权利要求的特征与从属权利要求的特征进行各种组合。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1