用于管理转换旁视缓冲的方法和装置制造方法

文档序号:6504586阅读:219来源:国知局
用于管理转换旁视缓冲的方法和装置制造方法【专利摘要】本发明涉及用于管理转换旁视缓冲的方法和装置。根据本发明的实施例,TLB未命中所引起的一系列操作不再需要管理器的干预。相反,当发生TLB未命中时,硬件直接向虚拟机发出中断。以此方式,可以借助于硬件级别的辅助转换表来高效地管理TLB。这样,可以极大地降低系统开销,提高系统性能。公开了分别与支持虚拟化的系统中的硬件、管理器和虚拟机相关联的方法和装置。【专利说明】用于管理转换旁视缓冲的方法和装置【
技术领域
】[0001]本发明的实施例总体上涉及计算机体系结构,更具体地,涉及用于管理转换旁视缓冲(TLB)的方法和装置。【
背景技术
】[0002]地址映射机制被广泛使用于现代计算机体系结构中。在系统中,上层应用所使用的存储器地址是虚拟地址(VirtualAddress,VA)。操作系统(OperatingSystem,OS)负责将应用所指定的VA映射到存储器的物理地址(PhysicalAddress,PA),以便执行对存储器资源的真实访问。随着虚拟化(virtualizat1n)等技术的发展,地址映射可能需要执行多次地址转换。具体而言,虚拟化允许多个OS在单个物理机器上并发地运行,并且由此引入了一个称为管理器或超级管理程序(hypervisor)的软件层,用于控制客户(gUest)0S对系统的物理资源的访问。此时,地址映射包括两次地址转换。首先,客户OS将客户应用所指定的客户虚拟地址(GuestVirtualAddress,GVA)转换为客户物理地址(GuestPhysicalAddress,GPA)。接下来,管理器将GPA转换为主机物理地址(HostPhysicalAddress,ΗΡΑ),它是实际的存储器物理地址。[0003]为了加速地址转换,绝大多数现代计算机处理器配备有转换旁视缓冲(Translat1nLookasideBuffer,TLB)。TLB是页表的高速缓存,用于存储页表中的部分条目。在进行地址转换时,TLB首先被访问。如果包含所请求虚拟地址的页表条目存在于TLB中(称为TLB命中),则可以实现快速的地址转换。反之,如果包含所请求虚拟地址的页表条目不在TLB中(TLB未命中),则需要在页表中查询对应的条目,并且将该条目写入TLB中。[0004]一般而言,存在两种TLB管理机制,即,硬件管理机制和软件管理机制。相对于传统的硬件管理机制而言,软件管理的TLB可以实现较大的灵活性,因此已得到越来越多的应用。然而,在传统的软件管理TLB中,由于客户OS无法访问存储于硬件中的TLB,因此管理器必须维护一个影子(shadoW)TLB。而且,由TLB未命中所引起的各种操作都需要由管理器来处理。在此期间,可能需要在用户模式和特权模式之间执行一次或多次切换。这种软件管理机制将会导致显著的开销,严重地影响系统的总体性能。[0005]因此,本领域中需要一种以更为高效和有效的方式来实现TLB软件管理的方法和>J-Uρ?α装直。【
发明内容】[0006]鉴于现有技术中存在的上述问题以及其他潜在问题,本发明提供在支持虚拟化的系统中管理TLB的方法和装置。[0007]在本发明的第一方面,提供一种在支持虚拟化的系统中管理转换旁视缓冲TLB的方法。该方法包括:利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,所述存储器访问指令接收自运行于所述系统中的虚拟机;响应于在所述TLB中未命中所述客户虚拟地址,向所述虚拟机发出中断以使所述虚拟机处理所述未命中;以及根据所述虚拟机对所述未命中的所述处理的结果,利用辅助转换表来管理所述TLB,所述辅助转换表的条目将客户物理地址映射为所述系统中的主机物理地址。[0008]在本发明的第二方面,提供一种在支持虚拟化的系统中管理转换旁视缓冲TLB的方法。该方法包括:接收来自所述系统的硬件的中断,所述中断由在辅助转换表中未命中客户物理地址而引起,所述客户物理地址根据运行于所述系统中的虚拟机所发出的存储器访问指令而被确定;确定与所述客户物理地址相对应的所述系统中的主机物理地址;以及响应于所述存储器访问指令涉及针对存储器空间的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目。[0009]在本发明的第三方面,提供一种在支持虚拟化的系统中管理转换旁视缓冲TLB的由硬件实现的装置。该装置包括=TLB查询单元,被配置为利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,所述存储器访问指令接收自运行于所述系统中的虚拟机;第一中断发出单元,被配置为响应于在所述TLB中未命中所述客户虚拟地址,向所述虚拟机发出中断以使所述虚拟机处理所述未命中;以及TLB管理单元,被配置为根据所述虚拟机对所述未命中的所述处理的结果,利用辅助转换表来管理所述TLB,所述辅助转换表的条目将客户物理地址映射为所述系统中的主机物理地址。[0010]在本发明的第四方面,提供一种在支持虚拟化的系统中管理转换旁视缓冲TLB的装置。该装置包括:中断接收单元,被配置为接收来自所述系统的硬件的中断,所述中断由在辅助转换表中未命中客户物理地址而引起,所述客户物理地址根据运行于所述系统中的虚拟机所发出的存储器访问指令而被确定;地址转换单元,被配置为确定与所述客户物理地址相对应的所述系统中的主机物理地址;以及转换表写入单元,被配置为响应于所述存储器访问指令涉及针对存储器空间的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目。[0011]通过下文描述将会理解,根据本发明的实施例,TLB未命中所引起的一系列操作不再需要管理器的干预。相反,当发生TLB未命中时,硬件直接向虚拟机(更具体地,虚拟机的操作系统)发出中断。以此方式,可以借助于硬件级别的辅助转换表来高效地管理TLB。这样,可以极大地降低系统开销,提高系统性能。【专利附图】【附图说明】[0012]通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显其中:[0013]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的示意性框图;[0014]图2示出了根据支持虚拟化的系统200的示意性框图;[0015]图3示出了根据本发明示例性实施例的辅助转换表的工作原理的框图;[0016]图4示出了根据本发明示例性实施例的用于管理TLB的方法400的示意性流程图;[0017]图5示出了根据本发明示例性实施例的用于管理TLB的方法500的示意性流程图;[0018]图6示出了根据本发明示例性实施例的用于管理TLB的方法600的示意性流程图;[0019]图1示出了根据本发明示例性实施例的用于管理TLB的装置700的示意性框图;[0020]图8示出了根据本发明示例性实施例的用于管理TLB的装置800的示意性框图;以及[0021]图9示出了根据本发明示例性实施例的用于管理TLB的装置900的示意性框图。[0022]贯穿所有附图,相同或相似的标号被用来表示相同或相似的元素。【具体实施方式】[0023]下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。[0024]所属【
技术领域
】的技术人员知道,本发明可以实现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。[0025]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是-但不限于-电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0026]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括-但不限于-电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0027]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括-但不限于-无线、电线、光缆、RF等等,或者上述的任意合适的组合。[0028]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。[0029]下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。[0030]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruct1nmeans)的制造品(manufacture)。[0031]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。[0032]下面参考附图详细描述根据本发明的示例性实施例。图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。[0033]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。[0034]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。[0035]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。[0036]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。[0037]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括-但不限于-操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。[0038]计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管未在图中示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。[0039]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0040]下面参考图2,其示出了一个支持虚拟化的系统200的示意性框图。如图所示,支持虚拟化的系统200允许运行多个虚拟机(VirtualMachine,VM)201。在每个虚拟机201上,可以运行有多个客户应用202。客户应用202由虚拟机201的客户操作系统203托管,客户0S203亦可称为监督器(supervisor)。系统100还包括管理器204,它是一个软件层,负责管理虚拟机201对系统200的物理硬件205的访问。虚拟机201上的应用202和客户0S203均无权直接访问硬件205。换言之,虚拟机201对硬件205的所有访问必须经由管理器204来实现。[0041]在传统的软件管理TLB中,TLB被维护在硬件205中(称为“硬件TLB”)。硬件TLB中的每个条目将VM201中的客户虚拟地址(GVA)映射为系统中的主机物理地址(ΗΡΑ)。VM201无权直接访问TLB。另外,每个VM201的客户0S203具有自己的TLB,该TLB由管理器204维护,称为“影子TLB”。影子TLB存储有客户0S203可见的所有TLB条目,每个条目将GVA映射为特定于虚拟机的客户物理地址(GPA)。[0042]根据传统的软件TLB管理机制,当客户应用203执行存储器访问指令时,硬件205根据客户应用203所指定的GVA查询硬件TLB。如果发生硬件TLB未命中,则硬件205向管理器204发出一个中断,例如陷入(trap)消息。作为响应,管理器204首先在影子TLB中执行查询。如果在影子TLB中找到了对应的有效TLB条目,则从客户0S203的角度看并没有发生TLB未命中。此时,管理器204根据影子TLB中的相应条目确定与GVA对应的GPA,并且继而确定与GPA对应的ΗΡΑ。最后,向TLB写入将GVA映射为HPA的条目。[0043]另一方面,如果管理器204在影子TLB中没有找到相应的条目,则从客户0S203的角度看,发生了TLB未命中。此时,管理器204向VM201的客户0S203发出中断,并且将控制交给客户0S203。作为响应,客户0S203查询页表以确定与GVA对应的GPA。此后,客户0S203发出TLB写指令(例如,“tlbwe”指令)以用于向TLB写入将GVA映射为GPA的条目。由于客户0S203无权访问物理层205,因此硬件205再次向管理器204发出中断,使得管理器204向影子TLB写入将GVA映射为GPA的条目以供将来使用。从客户0S203的角度看,TLB写入被成功地执行。[0044]根据上述传统管理机制,TLB访问、特别是TLB未命中所导致的一系列操作需要管理器204的干预。而且,控制在管理器204与客户0S203之间的转移将会引起特权模式与用户模式的切换。这些都将带来可观的系统开销,严重影响系统的性能和效率。定量地说,管理器204响应于TLB未命中而执行的开销占系统总开销的比例可以多达70%。[0045]不同于上述传统TLB软件管理机制,根据本发明的实施例,提供一种辅助转换表,例如可以称为“逻辑向实际地址转换”(LogicaltoRealAddressTranslat1n,LRAT)表。LRAT表中的每个条目将GPA映射为ΗΡΑ。根据本发明的实施例,辅助转换表可以存储在硬件205中。根据本发明的实施例,存储于硬件205中的辅助转换表的每个条目可以特定于一个VM201。例如,每个辅助转换表条目可以具有一个字段用于存储VM201的标识信息。另一方面,一个客户0S203可以对应于辅助转换表中的一个或多个条目。另外,根据本发明的实施例,辅助转换表可以由管理器204来维护和管理。例如,管理器204可以具有一个专用的模块来管理辅助转换表。相应地,管理器204不再需要维护传统软件管理机制中的影子TLB。[0046]应当理解,本发明的范围并不限于利用表(table)的形式来实现辅助性地址转换。相反,在此所称的“辅助转换表”可以被实现为图、树等各种其他数据结构。而且在实现中,辅助转换表可被实现为各种形式,例如包括但不限于以下一个或多个:纯文本、结构化文本、数据库文件,等等。[0047]根据本发明的实施例,硬件205可以被配置为如下操作。首先,硬件205可以利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,该存储器访问指令接收自运行于所述系统中的虚拟机201。继而,响应于在TLB中未命中该客户虚拟地址,硬件205向虚拟机201发出中断以使虚拟机201处理所述未命中。接下来,硬件205可以根据虚拟机201对未命中的处理结果,利用辅助转换表来管理TLB。如上所述,TLB中的每个条目将GPA映射为ΗΡΑ。[0048]现在将详细描述本发明的若干实施例。继续参考图2,在操作中,当客户应用202执行存储器访问指令时,硬件205利用客户应用202所指定的GVA来查询TLB。如果找到相应的有效条目(TLB命中),则可以继续执行指令。如果在TLB中没找相应的有效条目(TLB未命中),则硬件205直接向客户应用202所驻留的VM201发出中断。该中断例如可以由VM201的客户0S203接收。注意,不同于传统的软件管理TLB,硬件205在发生TLB未命中时没有向管理器204发出任何中断或者异常。[0049]响应于来自硬件205的中断,VM201的客户0S203可以查询页表以确定与GVA相对应的GPA。此后,客户0S203发出TLB写入指令,以尝试向TLB写入将GVA映射为GPA的条目。然而,如上所述,TLB中所保存的是将GVA映射为HPA的条目。因此,硬件205不会直接向TLB写入来自客户0S203的将GVA映射为GPA的条目。相反,根据本发明的实施例,硬件205可以利用GPA和VM201的标识查询辅助转换表。如果在辅助转换表中找到了与该VM201的GPA相关联的条目,则硬件205根据辅助转换表中的条目确定与GPA对应的ΗΡΑ。由此,硬件205可以生成将GVA映射为HPA的条目并且将其写入TLB。[0050]另一方面,如果硬件205在辅助转换表中没有找到与GPA相关联的条目(由于辅助转换的容量可以非常大,因此这种情况很少发生),则硬件205向管理器204发出中断。作为响应,管理器204确定客户0S203所指定的GPA对应的ΗΡΑ。因为管理器204控制整个系统的运行,因此这是可以做到的。继而,管理器204生成将GPA映射为HPA的条目,并且将所生成的条目写入辅助转换表。此后,VM201的TLB写入指令继续执行。这时,由于辅助转换表已被管理器204更新,因此硬件205可以通过对辅助转换表表的查询而确定与GPA相对应的ΗΡΑ。由此,硬件205可以生成将GVA映射为HPA的条目,并且将所生成的条目写入TLB。[0051]下面参考图3描述一个具体示例。在图3所示的示例中,辅助转换表301可以包括如下字段:有效位、大小、客户物理地址GPA(例如,可以表示为客户物理页号GPN)、逻辑分区标识LPID(S卩,VM标识符)以及主机物理地址HPA(例如,可以被表示为主机物理页号HPN)。注意,图3所示的辅助转换表的格式仅仅是示例性的,并非意在限制本发明的范围。根据本发明的实施例,辅助转换表可以包括任何备选的或附加的字段。[0052]在操作中,当VM201的客户0S203尝试向TLB写入将GVA映射为GPA的条目时,硬件205利用GPA和该VM201的标识符(LPID)查询辅助转换表301。响应于在辅助转换表中查询到了相应的条目,硬件205自动地生成将GVA映射为HPA的条目302(在此例中,该条目还包括虚拟机标识LPID),并且将条目302写入TLB303。上述过程对于VM201及其客户0S203而言是透明的,而且无需管理器204的干预。[0053]可以看到,根据本发明的实施例,无需再由管理器维护一个专门的影子TLB。而且,在TLB未命中发生时,硬件直接向VM201的客户0S203发出中断,以便确定与GVA对应的GPA。接下来,响应于来自客户OS的TLB写入请求,硬件205自动地利用GPA查询辅助转换表。在辅助转换表命中的情况下,TLB未命中的处理完全无需管理器的任何干预。管理器所需完成的工作仅仅是维护辅助转换表。由此,可以显著降低系统开销,提高系统的总体性能。实验表明:与传统的软件TLB管理机制相比,根据本发明的实施例可以将系统性能提升200%以上。[0054]另外,本发明的实施例还支持虚拟化系统中的输入/输出(I/O)设备访问。如已知的,在支持虚拟化的系统中,可以通过存储器映射I/O(MemoryMappingI/O,MM1)来实现虚拟机对I/O设备的访问。I/O设备的地址被放置在存储器空间中。当客户应用试图访问I/O设备时,它可以像访问存储器一样发出存储器访问指令。在针对I/O设备访问的存储器访问指令中,所指定的GVA不是存储器空间中的有效地址,而是代表所要访问的I/O设备的地址。[0055]当客户应用访问I/O设备时,硬件将利用GVA来查询硬件TLB。如已知的,与I/O设备相关联的地址永远不会被写入TLB中。因此,此时必然发生TLB未命中。在传统的软件管理TLB中,如上所述,硬件将会向管理器发出中断。管理器可以根据GVA判断出客户应用的访问目标不是访问存储器而是I/o设备,并且相应地启动I/O处理过程。然而,根据本发明的实施例,当发生TLB未命中时硬件无需再向管理器发出中断,因而也就无法触发管理器来处理针对I/O设备的访问。[0056]根据本发明的实施例,存在多种可行的方式来解决这一问题。例如,在某些实施例中,管理器204可以仍然保留影子TLB。在发生TLB未命中时,硬件205可以判断该TLB未命中属于指令TLB未命中还是数据TLB未命中。由于I/0访问所引起的TLB未命中全部属于数据TLB未命中,因此当发生数据TLB未命中时,管理器204可以按照传统方式借助于影子TLB来进行处理。另一方面,如果发生的是指令TLB未命中,则可以按照上文描述的实施例借助于辅助转换表来进行处理而无需影子TLB。[0057]为了进一步提高系统性能,根据某些备选实施例,当发生TLB未命中时,硬件205向VM201而不是管理器204发出中断。如上所述,VM201的客户0S203查询页表以确定与GVA对应的GPA,并且尝试执行TLB写入指令。该操作将导致硬件205对辅助转换表的查询。根据本发明的实施例,与I/O设备相关联的GPA始终不会被写入辅助转换表。因此,将会发生辅助转换表未命中。在这种情况下,硬件205向管理器204发出中断。相应地,管理器204可以确定与GPA对应的ΗΡΑ。而且,管理器204还可以根据目标地址来确定当前存储器访问命令是涉及针对存储器空间的访问还是针对I/O设备的访问。如果管理器204确定当前存储器访问指令确实涉及针对存储器空间的访问,则管理器204按照上文描述的方式向TLB写入将GVA映射为HPA的条目。[0058]如果管理器204确定当前存储器访问指令涉及针对I/O设备而不是存储器空间的访问,则管理器204向TLB写入经过修改的条目。具体而言,将GVA映射为HPA的条目被写入TLB,但是针对所写入条目的所有访问均被禁止。例如,这可以通过将针对该条目的所有访问权限设置为“无”来实现。此后,管理器204返回并且TLB写入指令继续执行。此时,硬件205将确定TLB中存在包含0S203所指定的GVA的条目,但是该条目被禁止访问。在这种情况下,根据本发明的实施例,硬件205向控制器204发出中断以指示数据存储异常(datastorageexcept1n)。响应于该中断,管理器204接收到了客户0S203所指定的地址,并且可以据此确定实际的访问目标是I/O设备。相应地,管理器204可以执行所需I/O处理。[0059]备选地,根据某些其他实施例,可以利用硬件级别的寄存器映射机制来支持ΜΜΙ0。如已知的,当数据TLB未命中发生时,硬件在产生中断的同时将引起未命中的存储器访问指令的上下文记录在一个硬件寄存器中,例如数据异常地址寄存器(DataExcept1nAddressRegister,DEAR)或其他任何适当的寄存器。这里所说的“上下文”例如包括导致异常的地址。根据本发明的实施例,可以在硬件中建立一个存储上下文的复本寄存器。该复本寄存器特定于VM201或者客户0S203。当发生TLB未命中时,相关联的上下文被存储在相关的寄存器(例如,DEAR)中并且被拷贝到复本寄存器中。[0060]根据这些实施例,当由于I/O访问而导致TLB未命中发生时,硬件205向VM201发出中断,并且该TLB未命中的上下文被拷贝在复本寄存器中。此后,当VM201尝试执行TLB写入时,将会导致辅助转换表未命中,从而将控制转移给管理器204。此时,管理器204可以访问特定于客户0S203的复本寄存器,以获得存储器指令的上下文。注意,尽管此时主寄存器(例如,DEAR)的内容可能随着系统的运行而发生变化,但是特定于0S203的复本寄存器所保存的内容仍然是由I/O访问引起的TLB未命中的上下文。以此方式,管理器204可以基于获取的上下文来调用的有关过程来执行I/o处理。[0061]下面参考图4,其示出了根据本发明示例性实施例的用于TLB管理的方法400的流程图。可以理解,方法400可由支持虚拟化的系统中的底层硬件设备来执行,例如上文参考图2所描述的硬件205。[0062]如图所示,方法400开始之后,在步骤S401,接收来自运行于系统中的虚拟机的存储器访问指令。接下来,在步骤S402,利用由该存储器访问指令所指定的客户虚拟地址(GVA)查询TLB。如果在TLB中命中该GVA,则方法400进行到步骤S403,在此向虚拟机发出中断以使虚拟机处理未命中。可选地,还可以将该存储器访问指令的上下文存储在特定于虚拟机的寄存器中,以用于潜在的MM1处理。[0063]此后,在步骤S404-S408,硬件根据虚拟机的未命中处理的结果而利用辅助转换表来管理TLB。如上所述,虚拟机对未命中的处理可以包括查询页表以确定与所述客户虚拟地址对应的客户物理地址;以及发出用于向所述TLB写入将所述客户虚拟地址映射为所述客户物理地址的条目的TLB写入指令。相应地,根据某些实施例,在步骤S404处接收来自虚拟机的TLB写入指令,该TLB写入指令用于向TLB写入将GVA映射为GPA的条目。接下来,在步骤S405,利用GPA查询辅助转换表。如果命中,则在步骤S406确定与GPA对应的HPA,并且在步骤S407向TLB写入将GVA映射为HPA的条目。如果在步骤S405确定在辅助转换表中未命中GPA,则在步骤S408向系统的管理器发出中断,以使管理器更新如上文所述那样更新辅助转换表。当辅助转换表由管理器更新之后,硬件返回步骤S404继续执行来自虚拟机的TLB写入指令。[0064]另一方面,如果在步骤S402确定TLB命中,则可以可选地确定TLB中包含该GVA的条目是否被禁止访问(未示出)。如果该条目被禁止访问(表明当前的存储器访问指令实际上涉及针对I/o设备的访问),则可以向系统的管理器发出指示数据存储异常的中断,以便管理器执行相应的I/o处理。[0065]接下来参考图5,其示出了根据本发明示例性实施例的用于TLB管理的方法500的流程图。可以理解,方法500可由支持虚拟化的系统中的管理器来执行,例如上文参考图2所描述的管理器204。[0066]如图5所示,在步骤S501,接收来自系统的硬件的中断。如上所述,该中断是由于在辅助转换表未命中一个GPA而引起的,该GPA根据虚拟机所发出的存储器访问指令而被确定(与该指令所指定的GVA相对应)。响应于接收到中断,在步骤S502,确定与GPA相对应的ΗΡΑ。可以理解,管理器控制整个系统的运行,因此知道GPA与HPA之间的对应关系。方法500继而进行到步骤S503,在此,对于涉及存储器空间访问的存储器访问指令,向辅助转换表写入将GPA映射为HPA的条目从而更新辅助性转换表。[0067]另一方面,在支持MM1的系统中,如果管理器确定存储器访问指令涉及针对I/O设备的访问,则方法503可以进行到可选的步骤S504,在此处理针对I/O设备的访问。根据某些实施例,步骤S504的处理包括:向辅助转换表写入将GPA映射为HPA的条目,并且禁止对所写入的所述条目的访问。备选地,可以访问特定于虚拟机的寄存器(例如,上文描述的复本寄存器GDEAR),以获得存储器访问指令的上下文。而后,可以基于所获取的上下文来执行针对I/O设备的访问。[0068]参考图6,其示出了根据本发明示例性实施例的用于TLB管理的方法600的流程图。可以理解,方法600可由支持虚拟化的系统中的虚拟机来执行。更具体地,方法600可以由虚拟机的客户OS执行,例如上文参考图2所描述的客户0S203。[0069]方法600开始之后,在步骤S601,发出存储器访问指令。该存储器访问指令可以指定特定于VM的GVA。接下来,在步骤S602,从硬件接收由于在TLB中未命中GVA而引起的中断。响应于该中断,在步骤S603,响应于中断而处理TLB未命中。特别地,根据本发明的实施例,步骤S603处的处理可以包括:通过查询页表来确定与GVA对应的HPA,并且发出TLB写入指令,该TLB写入指令用于向TLB写入将GVA映射为GPA的条目。可以理解,硬件不会实际将这样的条目写入,而是借助于辅助地址转换表生成将GVA映射为HPA的条目,并且将其写入TLB。[0070]下面参考图7,其示出了根据本发明示例性实施例的用于TLB管理的装置700的框图。装置700例如由被实现为驻留于系统中的硬件,并且可被配置为执行上文描述的方法400。特别地,根据某些实施例,装置700可以被实现为专用集成电路、通用集成电路、现场可编程门阵列或者其他任何适当的由硬件实现的装置。下文将要描述的装置700所包括的各个单元可以被实现为相应的硬件模块。[0071]如图7所示,根据本发明的实施例,装置700包括:TLB查询单元701,被配置为利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,该虚拟机访问指令接收自系统中的虚拟机;第一中断发出单元702,被配置为响应于在所述TLB中未命中所述客户虚拟地址,向所述虚拟机发出中断以使所述虚拟机处理所述未命中;以及TLB管理单元703,被配置为根据所述虚拟机对所述未命中的所述处理的结果,利用辅助转换表来管理所述TLB,所述辅助转换表的条目将客户物理地址映射为所述系统中的主机物理地址。[0072]根据某些实施例,装置700还可以包括:TLB写入指令接收单元,被配置为接收来自所述虚拟机的TLB写入指令,所述TLB写入指令用于向所述TLB写入将所述客户虚拟地址映射为客户物理地址的条目;转换表查询单元,被配置为利用所述客户物理地址查询辅助转换表;地址转换单元,被配置为响应于在所述辅助转换表中命中所述客户物理地址,确定与所述客户物理地址对应的主机物理地址;以及TLB写入单元,被配置为向所述TLB写入将所述客户虚拟地址映射为所述主机物理地址的条目。[0073]根据某些实施例,装置700还可以包括:第二中断发出单元,被配置为响应于在所述辅助转换表中未命中所述客户物理地址,向所述系统的管理器发出中断以使所述管理器更新所述辅助转换表。[0074]根据某些实施例,装置700还可以包括:第三中断发出单元,被配置为响应于在所述TLB中命中所述客户虚拟地址并且包含所述客户虚拟地址的条目被禁止访问,向所述系统的管理器发出指示数据存储异常的中断。[0075]根据某些实施例,装置700还可以包括:上下文存储单元,被配置为响应于在所述TLB中未命中所述客户虚拟地址,将所述存储器访问指令的上下文存储在特定于所述虚拟机的寄存器中。[0076]现在参考图8,其示出了根据本发明示例性实施例的用于TLB管理的装置800的框图。装置800例如驻留于系统中的管理器,并且可被配置为执行上文描述的方法500。如图所示,根据本发明的实施例,装置800包括:中断接收单元801,被配置为接收来自所述系统的硬件的中断,所述中断由在辅助转换表中未命中客户物理地址而引起,所述客户物理地址根据运行于所述系统中的虚拟机所发出的存储器访问指令而被确定;地址转换单元802,被配置为确定与所述客户物理地址相对应的所述系统中的主机物理地址;以及转换表写入单元803,被配置为响应于所述存储器访问指令涉及针对存储器空间的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目。[0077]根据某些实施例,装置800还可以包括:被配置为响应于所述存储器访问指令涉及针对输入/输出设备的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目的单元;以及被配置为禁止对所写入的所述条目的访问的单元。[0078]根据某些实施例,装置800还可以包括:被配置为响应于所述存储器访问指令涉及针对输入/输出设备的访问,访问特定于所述虚拟机的寄存器以获得所述存储器访问指令的上下文的单元;以及被配置为基于获取的所述上下文来执行针对所述输入/输出设备的所述访问的单元。[0079]参考图9,其示出了根据本发明示例性实施例的用于TLB管理的装置900的框图。装置900例如驻留于系统中的虚拟机,并且可被配置为执行上文描述的方法600。如图所示,根据本发明的实施例,装置900包括:指令发出单元901,被配置为发出存储器访问指令,所述存储器访问指令指定客户虚拟地址;中断接收单元902,被配置为接收来自所述系统的硬件的中断,所述中断由在所述TLB中未命中所述客户虚拟地址而引起;以及TLB未命中处理单元903,被配置为响应于所述中断,处理所述TLB的所述未命中。[0080]根据某些实施例,TLB未命中处理单元903可以包括:页表查询单元,被配置为查询页表以确定与所述客户虚拟地址对应的客户物理地址;以及TLB写入指令发出单元,被配置为发出用于向所述TLB写入将所述客户虚拟地址映射为所述客户物理地址的条目的TLB写入指令。[0081]为清晰起见,图7到图9中没有示出装置所包含的可选单元或者子单元。然而应当理解,上文所描述的所有特征和操作分别适用于装置700到900,故在此不再赘述。而且,各装置中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。而且,上文描述的装置800和900中所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。[0082]上文已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【
技术领域
】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本【
技术领域
】的其它普通技术人员能理解本文公开的各实施例。【权利要求】1.一种在支持虚拟化的系统中的硬件处管理转换旁视缓冲TLB的方法,所述方法包括:利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,所述存储器访问指令接收自运行于所述系统中的虚拟机;响应于在所述TLB中未命中所述客户虚拟地址,向所述虚拟机发出中断以使所述虚拟机处理所述未命中;以及根据所述虚拟机对所述未命中的所述处理的结果,利用辅助转换表来管理所述TLB,所述辅助转换表的条目将客户物理地址映射为所述系统中的主机物理地址。2.根据权利要求1所述的方法,其中利用辅助转换表来管理所述TLB包括:接收来自所述虚拟机的TLB写入指令,所述TLB写入指令用于向所述TLB写入将所述客户虚拟地址映射为客户物理地址的条目;利用所述客户物理地址查询辅助转换表;响应于在所述辅助转换表中命中所述客户物理地址,确定与所述客户物理地址对应的主机物理地址;以及向所述TLB写入将所述客户虚拟地址映射为所述主机物理地址的条目。3.根据权利要求2所述的方法,其中利用辅助转换表来管理所述TLB还包括:响应于在所述辅助转换表中未命中所述客户物理地址,向所述系统的管理器发出中断以使所述管理器更新所述辅助转换表。4.根据权利要求1到3任一项所述的方法,还包括:响应于在所述TLB中命中所述客户虚拟地址并且包含所述客户虚拟地址的条目被禁止访问,向所述系统的管理器发出指示数据存储异常的中断。5.根据权利要求1到3任一项所述的方法,还包括:响应于在所述TLB中未命中所述客户虚拟地址,将所述存储器访问指令的上下文存储在特定于所述虚拟机的寄存器中。6.根据权利要求1到3任一项所述的方法,其中所述虚拟机对所述未命中的所述处理的所述结果包括来自所述虚拟机的TLB写入指令,所述TLB写入指令用于向所述TLB写入将所述客户虚拟地址映射为客户物理地址的条目,所述客户物理地址是所述虚拟机通过查询页表确定的。7.—种在支持虚拟化的系统中的管理器处管理转换旁视缓冲TLB的方法,所述方法包括:接收来自所述系统的硬件的中断,所述中断由在辅助转换表中未命中客户物理地址而引起,所述客户物理地址根据运行于所述系统中的虚拟机所发出的存储器访问指令而被确定;确定与所述客户物理地址相对应的所述系统中的主机物理地址;以及响应于所述存储器访问指令涉及针对存储器空间的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目。8.根据权利要求7所述的方法,还包括:响应于所述存储器访问指令涉及针对输入/输出设备的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目;以及禁止对所写入的所述条目的访问。9.根据权利要求7所述的方法,还包括:响应于所述存储器访问指令涉及针对输入/输出设备的访问,访问特定于所述虚拟机的寄存器,以获得所述存储器访问指令的上下文;以及基于获取的所述上下文来执行针对所述输入/输出设备的所述访问。10.一种在支持虚拟化的系统中的硬件处管理转换旁视缓冲TLB的装置,所述装置由硬件实现并且包括:TLB查询单元,被配置为利用存储器访问指令所指定的客户虚拟地址来查询所述TLB,所述存储器访问指令接收自运行于所述系统中的虚拟机;第一中断发出单元,被配置为响应于在所述TLB中未命中所述客户虚拟地址,向所述虚拟机发出中断以使所述虚拟机处理所述未命中;以及TLB管理单元,被配置为根据所述虚拟机对所述未命中的所述处理的结果,利用辅助转换表来管理所述TLB,所述辅助转换表的条目将客户物理地址映射为所述系统中的主机物理地址。11.根据权利要求10所述的装置,还包括:TLB写入指令接收单元,被配置为接收来自所述虚拟机的TLB写入指令,所述TLB写入指令用于向所述TLB写入将所述客户虚拟地址映射为客户物理地址的条目;转换表查询单元,被配置为利用所述客户物理地址查询辅助转换表;地址转换单元,被配置为响应于在所述辅助转换表中命中所述客户物理地址,确定与所述客户物理地址对应的主机物理地址;以及TLB写入单元,被配置为向所述TLB写入将所述客户虚拟地址映射为所述主机物理地址的条目。12.根据权利要求11所述的装置,还包括:第二中断发出单元,被配置为响应于在所述辅助转换表中未命中所述客户物理地址,向所述系统的管理器发出中断以使所述管理器更新所述辅助转换表。13.根据权利要求10到12任一项所述的装置,还包括:第三中断发出单元,被配置为响应于在所述TLB中命中所述客户虚拟地址并且包含所述客户虚拟地址的条目被禁止访问,向所述系统的管理器发出指示数据存储异常的中断。14.根据权利要求10到12任一项所述的装置,还包括:上下文存储单元,被配置为响应于在所述TLB中未命中所述客户虚拟地址,将所述存储器访问指令的上下文存储在特定于所述虚拟机的寄存器中。15.根据权利要求10到12任一项所述的装置,其中所述虚拟机对所述未命中的所述处理的所述结果包括来自所述虚拟机的TLB写入指令,所述TLB写入指令用于向所述TLB写入将所述客户虚拟地址映射为客户物理地址的条目,所述客户物理地址是所述虚拟机通过查询页表确定的。16.一种在支持虚拟化的系统中的管理器处管理转换旁视缓冲TLB的装置,所述装置包括:中断接收单元,被配置为接收来自所述系统的硬件的中断,所述中断由在辅助转换表中未命中客户物理地址而引起,所述客户物理地址根据运行于所述系统中的虚拟机所发出的存储器访问指令而被确定;地址转换单元,被配置为确定与所述客户物理地址相对应的所述系统中的主机物理地址;以及转换表写入单元,被配置为响应于所述存储器访问指令涉及针对存储器空间的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目。17.根据权利要求16所述的装置,还包括:被配置为响应于所述存储器访问指令涉及针对输入/输出设备的访问,向所述辅助转换表写入将所述客户物理地址映射为所述主机物理地址的条目的单元;以及被配置为禁止对所写入的所述条目的访问的单元。18.根据权利要求16所述的装置,还包括:被配置为响应于所述存储器访问指令涉及针对输入/输出设备的访问,访问特定于所述虚拟机的寄存器以获得所述存储器访问指令的上下文的单元;以及被配置为基于获取的所述上下文来执行针对所述输入/输出设备的所述访问的单元。【文档编号】G06F12/10GK104239238SQ201310250683【公开日】2014年12月24日申请日期:2013年6月21日优先权日:2013年6月21日【发明者】常晓涛,戈弋,H·弗兰克,王鲲申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1