用于翻译虚拟机环境中客户物理地址的方法和装置的利记博彩app

文档序号:6404102阅读:305来源:国知局
专利名称:用于翻译虚拟机环境中客户物理地址的方法和装置的利记博彩app
技术领域
本发明一般地涉及计算机,更具体而言,本发明涉及计算机存储器地址翻译。
背景技术
计算机处理器访问系统存储器来获取系统存储器中的数据或将数据存储在其中。具体而言,处理器使用存储器中数据的物理地址来识别和访问数据。但是,存储器中存储数据的物理地址并不是处理器在内部操作期间用来索引数据的地址。相反,处理器根据程序指令而将虚拟地址赋给正在处理的数据。这样,存储器访问经常需要将虚拟地址翻译成物理地址。
许多处理器使用虚拟或请求分页(demand-paged)存储器方案,其中按需要将程序的执行环境的节映射到物理存储器。虚拟存储器方案允许使用比处理器的虚拟地址空间小得多的物理存储器,并且还提供了存储器保护的机制,以使得共享相同的物理存储器的多个程序不会不利地彼此干扰。
在虚拟存储器方案中,虚拟和物理地址空间被分成多个连续地址块,使得虚拟和物理地址至多属于一个块。块可以是大小不变的,或者可以按系统和/或程序执行要求的指示而大小可变。
如果这些块具有不变的或者固定的尺寸,则其通常被称为页。如果使用可变大小的块,那么这些块被称为段。这样,虚拟地址空间可以被分成段或页。典型的页的大小可以是约4千字节。


在附图的图形中作为示例而非限制地图示各个实施例,附图中类似的标号指示类似的元件。应该注意到在本公开中“实施例”、“一个实施例”或“各个实施例”并不一定指相同的实施例,这样的说法意味着至少一个实施例。
图1示出了在虚拟机环境中将第一地址翻译成第二地址的一种方法的流程图。
图2示出了各个实施例的匹配和组合功能如何相互作用来完成虚拟机翻译的逻辑图。
图3是具有位于中央处理单元中的虚拟机翻译(“VMTR”)单元的计算机系统的图。
图4示出了如何用掩码值和基值来完成实施例的按位匹配功能的逻辑图。
图5示出了如何用掩码值和偏移值来完成实施例的组合功能的逻辑图。
图6A和6B示出了一个实施例进行虚拟机翻译以得到翻译地址、该翻译地址的存储器类型以及该翻译的错误位所需要的逻辑。
图7示出了验证每一位都匹配并且合适的存储器类型范围寄存器是激活的实施例的逻辑图。
具体实施例方式
这里公开的各个实施例实现了一种有效的地址翻译方案,其产生翻译地址、翻译地址的存储器类型和翻译的错误位。在以下说明中,为了解释的目的而给出大量具体细节,以提供对各个实施例的透彻理解。但是,对本领域技术人员将很清楚,没有这些具体细节中的某些也可以实现实施例。例如,可以根据各个实施例的教导来修改各个信号、布局模式和逻辑电路。
以下说明和附图提供了用于举例说明目的的示例。但是,不应在限制的意义上理解这些示例,因为其并不欲提供所有可能实现的穷尽列表。在其他情况下,省略或简化了公知的结构和设备,以避免模糊各个实施例的细节。
现在参照图1,该图示出了在虚拟机环境中将第一地址翻译成第二地址的方法的流程图。在虚拟机环境中,在操作系统(这里称为客户操作系统,guest operating system)的控制下所产生的物理地址被称为客户物理地址(例如图1中的第一地址)。由虚拟机监控器根据被赋给与物理地址相关联的存储器范围的存储器类型的内容,而将这些客户物理地址翻译成主机物理地址(例如图1中的第二地址)。
存储器类型可以被存储成多种数据结构并按需要被访问。除了其他数据之外,存储器类型指示对于来自给定地址范围的物理地址是否应该发生翻译,以及对给定地址范围的访问是否会导致错误。在各个实施例中,存储器类型中的偏移位指示翻译是否应该发生。如果不应该发生翻译,则翻译地址与物理地址相同。如果允许翻译发生,则进行下面描述的匹配和组合功能。
在图1的框10处,从第一地址计算中间第一地址。第一地址与物理地址空间(例如存储器)的多个段中的一个相关联。优选地,这些段是分开的,这意味着这些段不重叠。
分开的段是所期望的,因为每个地址只属于一个段。这消除了冲突解决的需要,而当由属于两个重叠段的地址产生两个不同映射时冲突解决是必要的。
假定第一地址的存储器类型指示翻译应该发生,则在框12处从与第一地址相关联的基值来计算中间基值。在框14处比较中间第一地址和中间基值。在判断框16,确定第一地址是否应该被翻译。
在框16处的判断是基于中间第一地址和中间基值是否“匹配”,如在框14处所执行的比较所示。如果中间第一地址和中间基值匹配,则第一地址可以被翻译。执行匹配功能来验证对第一地址存在有效的翻译。
在各个实施例中,使用下面的等式来确定中间第一地址和中间基值是否匹配(地址&掩码)=(基值&掩码) 等式1等式的左侧表示中间第一地址,而等式的右侧表示中间基值。具体而言,与第一地址相关联的掩码值被分别应用(例如用逻辑“与”函数)到第一地址和基值两者。
保持由掩码指定的每一位的位置以用于比较。例如,如果掩码值是11110000,则第一地址(例如一旦应用掩码则为中间第一地址)的四个最高有效位将被保持来与中间基值(例如基值的四个最高有效位)进行比较。
如果等式各侧的值是相等的,则中间第一地址和中间基值匹配。如果不相等,则对第一地址没有有效的翻译。
值得注意的是可以使用其他匹配机制。例如,可以使用范围校验来确定第一地址是否可以被有效地翻译。
不考虑所使用的匹配机制,只要有匹配并且存储器类型指示应该应用偏移,则在框20处将第一地址与偏移值“组合”来得到第二地址(例如翻译地址)。如果没有匹配,则在框18处发出错误警告。将依次讨论在框20和框18处所做的各个动作。
如果出现匹配,则一个实施例中框20的组合功能是类似于上述匹配等式(例如等式1)的按位逻辑操作。具体而言,使用以下等式来翻译第一地址即地址1来得到第二地址即地址2地址2=(地址1&~掩码)|(偏移&掩码)等式2“&”表示逻辑“与”函数,而“|”表示逻辑“或”函数。“~”表示将紧接着的值取反。
这样,由掩码所指定的偏移位将代替被指定由~掩码所代替的地址1位。例如,如果地址1是AAAAAAAA,偏移是TTTTTTTT,并且掩码是11110000,那么地址2将为TTTTAAAA。这个结果是由于这样的事实,即掩码指定了偏移的四个最高有效位应该代替地址1的四个最高有效位,以及~掩码指定了地址1的四个最低有效位应该被保持。
在其他实施例中,通过将偏移值加到第一地址而得到第二地址,来完成框20的组合功能。
各个实施例还包括对翻译地址的存储器类型的确定。此确定过程或者与翻译并行进行,或者在翻译完成之后进行。在一个实施例中,将翻译地址的存储器类型与和物理地址匹配的基值相关联。
现在集中到框18,发出错误警告来指示对物理地址不存在映射。通常,如果客户操作系统尝试访问存储器中这样的区域,即其不具有应该响应于这样的访问尝试的设备或地址时,那么对于物理地址将不存在映射。
错误警告还可以带有已尝试过访问特定段(例如该物理地址所属的段)的通知。例如,可以在检测到是否已经为该特定段设置了错误位时发出这样的通知。取决于实施例,错误位可以被设置在一个或多个值中。在一个实施例中,错误位被设置在与匹配要被翻译的物理地址的基值相关联的存储器类型中。
图2示出了上述匹配和组合功能之间的相互作用的一个实施例的逻辑图。虽然示出了32位的地址,但是这里所描述的各个实施例可以适用于多于或少于32位。32位物理地址PA的每一位都被分析来确定是否有匹配。只要所有的位都匹配,那么将产生翻译地址TA。但是,如果没有完整的匹配,那么可以取决于系统配置发出错误通知。
例如,当物理地址位匹配时,如前所述,将匹配位与来自偏移值的恰当位组合以得到翻译位。将翻译位与所有其他正确匹配和翻译的位组合来形成翻译地址。
图3示出了计算机系统22的示例,该系统具有进行上述地址翻译的虚拟机翻译(“VMTR”)单元48。具体而言,计算机系统22包括中央处理单元(“CPU”)40、耦合到中央处理单元40的存储器42、位于中央处理单元40内的虚拟机翻译单元48、以及芯片组44。虽然图3示出了位于中央处理单元40内的虚拟机翻译单元48,但是可以预想到将虚拟机翻译单元48置于计算机系统22内的其他地方,或者甚至远离计算机系统22但仍然耦合到计算机系统22的布置。计算机系统22经由输入/输出总线46来与外部设备(例如键盘、鼠标、监视器等等)通信。
在实施例中,计算机系统22包括至少一部分被分成多个段的存储器42、耦合到存储器的比较逻辑电路系统、以及耦合到比较逻辑电路系统并耦合到存储器的组合逻辑电路系统。虽然在图3中没有示出,但比较逻辑电路系统和组合逻辑电路系统都布置在虚拟机翻译单元48内。
图4和7示出了比较逻辑电路系统的逻辑表示。具体而言,比较逻辑电路系统被设计来进行上面的等式1所给出的匹配操作。如图4所示,将中间第一地址用与门24来计算,并将中间基值用与门26来计算。门28是异或非门,这意味着门28确定来自门24的输出和来自门26的输出是否相等。如果相等,则匹配。如果不相等,则不匹配。
此匹配操作是在一位一位的基础上执行的,并且可以并行执行。一旦对每一位都执行了匹配操作(例如为i的所有值都确定了BitMatch[i]),那么就如图7所示地确定了全部匹配MatchN。具体而言,与门64验证物理地址的每一位都匹配。如果每一位都匹配,并且下面详细讨论的合适的存储器类型范围寄存器是激活的(例如由ActiveN信号标识),那么与门66就生成输出MatchN来指示翻译可以发生。或者,MatchN可以指示不应该发生翻译,使得最终的物理地址与输入物理地址相同。这可能由于物理地址不匹配或者存储器类型范围寄存器未激活而发生。
图5示出了组合逻辑电路系统的逻辑表示。具体而言,组合逻辑电路系统被设计来进行上面的等式2所给出的组合操作。与门30被用来确定物理地址PA中的哪些位要在翻译地址TA中保持。与门32被用来确定偏移值中的哪些位要代替将不在翻译地址中保持的物理地址位。
通过或门34来计算翻译地址。如果MatchN(来自图7)指示物理地址应该被翻译,那么通门(pass gate)36将只允许来自或门34的信号作为翻译地址通过。如图2所示,在各个实施例中在一位一位的基础上进行匹配功能(图4和7)和组合功能(图5)。
图6A和6B示出了对英特尔32位体系结构处理器的实施例的逻辑图,其中从输入的物理地址得到翻译地址和存储器类型(“MT”)。具体而言,翻译单元50包括固定范围存储器类型范围寄存器(“MTRR”)的表52。在所示的实施例中,这些固定范围MTRR提供了范围在零到1兆字节之间的地址的存储器类型。但是,此固定范围可以变化。这里,选择零到1兆字节是因为,历史上,此范围的存储器被分段最多。
翻译单元50还包括可变范围MTRR的表54。可变范围MTRR限定了许多可变大小范围的存储器类型。这些范围由基值和掩码值限定。每个范围还与有效位、存储器类型(其可以包括错误位和偏移位,该偏移位指示是否要翻译)以及偏移值相关联。如上所述,这些值被用来确定是否要翻译第一地址,并且如果需要则用来翻译第一地址。
错误检测逻辑56表示被耦合到比较逻辑电路系统(其逻辑表示在图4和7中示出)的错误检测电路系统。错误检测逻辑56被配置来基于用户偏好检测并发出错误警告。如上所述,如果不存在映射或者尝试访问特定段,则可以发出错误警告。
MTRRdefType寄存器58控制翻译单元50的操作。具体而言,MTRRdefType寄存器58具有控制固定和可变两种MTRR是否激活的使能字段(“E”)。MTRRdefType寄存器58的固定使能字段(“FE”)控制固定范围寄存器是否被使能。这样,当使能字段指示MTRR是激活的时,翻译可以发生。如果MTRR不是激活的,则使用由来自MTRRdefType寄存器58的类型字段所指定的存储器类型。
这样,翻译单元50取走输入物理地址(例如第一地址),并且如果需要还翻译地址,并输出最终的物理地址(例如第二地址)、最终物理地址的存储器类型、以及错误位。复用器60输出来自固定范围MTRR的表52、可变范围MTRR的表54、或者来自MTRRdefType寄存器58的存储器类型。
复用器62基于是否设置了偏移位而输出地址。如果偏移位指示不应该发生翻译,那么最终物理地址将和输入物理地址相同。如果偏移位指示地址应该被翻译,那么从可变范围MTRR的表54得到的翻译地址(例如经由上述的匹配和组合)将是最终物理地址。
应该理解到即使在以上说明中已给出了各个实施例的大量特征和优点,以及结构和功能的细节,但是本公开仅仅是说明性的。可以具体做出改变,尤其是对结构和部件管理的内容做出改变,而不偏离由所附权利要求的多个权项的广泛一般意义所表述的各个实施例的范围。
权利要求
1.一种方法,包括将物理地址空间划分成多个段;从来自所述物理地址空间的物理地址来计算中间第一地址;从与所述物理地址相关联的基值来计算中间基值;比较所述中间第一地址和所述中间基值,以确定是否可以有效地翻译所述物理地址来得到翻译地址;以及如果所述物理地址可以被有效地翻译,那么将所述物理地址与偏移值组合来得到所述翻译地址。
2.如权利要求1所述的方法,还包括确定所述翻译地址的存储器类型。
3.如权利要求2所述的方法,其中所述确定步骤包括从与所述物理地址相关联的所述基值读取所述存储器类型。
4.如权利要求1所述的方法,其中计算所述中间第一地址的步骤包括确定所述物理地址中的哪些位应该被保持在所述中间第一地址中,来与所述中间基值进行比较,并且其中计算所述中间基值的步骤包括确定基值中的哪些位应该被保持在所述中间基值中,来与所述中间第一地址进行比较。
5.如权利要求4所述的方法,其中确定所述物理地址中的哪些位以及所述基值中的哪些位应该被保持来进行比较的步骤包括向所述物理地址和所述基值中的每一个应用掩码值,所述掩码值与所述物理地址相关联。
6.如权利要求1所述的方法,其中所述组合步骤包括确定所述物理地址中的哪些位应该被保持在所述翻译地址中;以及用来自所述偏移值的那些位,代替所述物理地址中不会被保持在所述翻译地址中的那些位。
7.如权利要求6所述的方法,其中所述确定哪些位的步骤包括向所述物理地址应用掩码值,所述掩码值与所述物理地址相关联。
8.如权利要求1所述的方法,还包括发出错误警告。
9.如权利要求8所述的方法,其中发出所述错误警告的步骤包括发出对所述物理地址不存在映射的通知。
10.如权利要求8所述的方法,其中发出所述错误警告的步骤包括发出已尝试访问特定段的通知。
11.如权利要求10所述的方法,其中发出所述通知的步骤包括检测是否已经为所述特定段设置了错误位。
12.如权利要求1所述的方法,其中如果所述物理地址不能被有效地翻译,那么所述翻译地址就与所述物理地址相同。
13.一种装置,包括具有被划分成多个段的第一地址空间的存储器;比较逻辑电路系统,其被耦合到所述存储器,以从来自所述多个段之一的第一地址生成中间第一地址,生成中间基值,并比较所述中间第一地址和所述中间基值以确定所述第一地址是否属于可被有效翻译来得到第二地址的段;和组合逻辑电路系统,其被耦合到所述比较逻辑电路系统并被耦合到所述存储器,如果所述比较逻辑电路系统指示所述第一地址可以被有效地翻译,那么所述组合逻辑电路系统将所述第一地址与偏移值组合以得到所述第二地址。
14.如权利要求13所述的装置,其中所述比较逻辑电路系统包括掩码电路系统,用于向所述第一地址应用掩码值以得到所述中间第一地址,并用于向基值应用所述掩码值以得到所述中间基值,所述掩码值与所述第一地址相关联。
15.如权利要求13所述的装置,其中所述组合逻辑电路系统包括掩码电路系统,用于向所述第一地址应用掩码值,以确定所述第一地址中的哪些位应该被保持在所述第二地址中;和替换电路系统,用于用来自所述偏移值的那些位,代替所述第一地址中不会被保持在所述第二地址中的那些位。
16.如权利要求13所述的装置,还包括被耦合到所述比较逻辑电路系统的错误检测电路系统,所述错误检测电路系统用于检测并发出错误警告。
17.一种系统,包括处理器;被耦合到所述处理器的存储器,所述存储器具有被划分成多个段的第一地址空间;比较逻辑电路系统,其被耦合到所述存储器,以从来自所述多个段之一的第一地址生成中间第一地址,生成中间基值,并比较所述中间第一地址和所述中间基值以确定所述第一地址是否属于可被有效翻译来得到第二地址的段;和组合逻辑电路系统,其被耦合到所述比较逻辑电路系统并被耦合到所述存储器,如果所述比较逻辑电路系统指示所述第一地址可以被有效地翻译,那么所述组合逻辑电路系统将所述第一地址与偏移值组合以得到所述第二地址。
18.如权利要求17所述的系统,其中所述比较逻辑电路系统包括掩码电路系统,用于向所述第一地址应用掩码值以得到所述中间第一地址,并用于向基值应用所述掩码值以得到所述中间基值,所述掩码值与所述第一地址相关联。
19.如权利要求17所述的系统,其中所述组合逻辑电路系统包括掩码电路系统,用于向所述第一地址应用掩码值,以确定所述第一地址中的哪些位应该被保持在所述第二地址中;和替换电路系统,用于用来自所述偏移值的那些位,代替所述第一地址中不会被保持在所述第二地址中的那些位。
20.如权利要求17所述的系统,还包括被耦合到所述比较逻辑电路系统的错误检测电路系统,所述错误检测电路系统用于检测并发出错误警告。
全文摘要
一种方法和装置被用来有效地翻译存储器地址。该翻译方案生成翻译地址、该翻译地址的存储器类型、以及该翻译的错误位。
文档编号G06F12/10GK1639692SQ03804542
公开日2005年7月13日 申请日期2003年2月7日 优先权日2002年2月25日
发明者劳伦斯·史密斯三世, 吉尔伯特·奈格, 理查德·乌利希, 迈克尔·科祖克, 安德鲁·格洛伊, 埃里希·博林 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1