CN111183411A - 用于虚拟机的动态地址转换 - Google Patents
用于虚拟机的动态地址转换 Download PDFInfo
- Publication number
- CN111183411A CN111183411A CN201880065143.7A CN201880065143A CN111183411A CN 111183411 A CN111183411 A CN 111183411A CN 201880065143 A CN201880065143 A CN 201880065143A CN 111183411 A CN111183411 A CN 111183411A
- Authority
- CN
- China
- Prior art keywords
- address translation
- translation table
- dynamic address
- guest
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
Abstract
公开了用于虚拟机的动态地址转换的方法、系统和计算机程序产品。该方法包括响应于用于建立影子动态地址转换表的请求,从存储空间获得存储部分,其中存储空间被分配给至少一个访客操作系统,并且其中影子动态地址转换表包括至少一个访客逻辑存储器地址与至少一个主机物理存储器地址之间的映射。该方法还包括建立影子动态地址转换表并将影子动态地址转换表存储在存储部分中。
Description
背景技术
本公开的实施例一般地涉及计算机技术,尤其涉及用于虚拟机的动态地址转换。
虚拟机技术广泛用于计算机系统,特别是企业级服务器。在这样的系统中,多个虚拟机(即,访客操作/操作系统)可以在管理程序的管理下在相同的硬件结构上独立地和同时地运行,管理程序可以是主机操作系统中的应用程序或主机操作系统本身。如果虚拟机中的应用请求对系统存储器的一部分的访问,则将需要从访客逻辑存储器地址到主机物理存储器地址的动态地址转换。
发明内容
本发明实施例的第一方面提供一种用于动态地址转换的方法。该方法包括响应于用于建立影子动态地址转换表的请求,从存储空间获得存储部分,其中存储空间被分配给至少一个访客操作系统,并且其中影子动态地址转换表包括至少一个访客逻辑存储器地址与至少一个主机物理存储器地址之间的映射。该方法还包括建立影子动态地址转换表并将影子动态地址转换表存储在存储部分中。
本公开的实施例的第二方面提供了一种用于动态地址转换的计算机系统。该计算机系统包括:至少一个处理器、用于动态地址转换的辅助控制器、以及耦合到所述至少一个处理器和所述辅助控制器的存储器。一组计算机程序指令存储在存储器中并由至少一个处理器和辅助控制器执行,以便执行一种方法。该方法包括由至少一个处理器响应于用于建立影子动态地址转换表的请求而从存储空间获得存储部分,其中存储空间被分配给至少一个访客操作系统,并且其中影子动态地址转换表包括至少一个访客逻辑存储器地址与至少一个主机物理存储器地址之间的映射。该方法还包括由辅助控制器建立阴影动态地址转换表并且由辅助控制器将阴影动态地址转换表存储在存储部分中。
本公开的实施例的第三方面提供了一种用于动态地址转换的计算机程序产品。该计算机产品包括具有程序指令的计算机可读存储介质。计算机可读存储介质不是瞬时信号本身。程序指令可由辅助控制器执行以执行方法。该方法包括响应于用于建立影子动态地址转换表的请求,从存储空间获得存储部分,其中存储空间被分配给至少一个访客操作系统,并且其中影子动态地址转换表包括至少一个访客逻辑存储器地址与至少一个主机物理存储器地址之间的映射。该方法还包括建立影子动态地址转换表并将影子动态地址转换表存储在存储部分中。
附图说明
通过在附图中对本公开的一些实施例的更详细的描述,本公开的上述和其他目的、特征和优点将变得更加明显,其中相同的附图标记通常指代本公开的实施例中的相同的部件。
图1是示出了可应用于实现本公开的实施例的示例性计算机系统的框图。
图2是示出根据本公开的一个实施例的可在如图1中的计算机系统中执行的虚拟机系统的基本结构的框图。
图3是示出根据本公开的一个实施例的虚拟机中的应用如何访问硬件平台中的物理存储器的示例性示意图。
图4是示出根据本公开的一个实施例的用于虚拟机的动态地址转换的方法的流程图。
图5是示出根据本公开的一个实施例的在图4的步骤S401中分配的多个存储帧的链的示意图。
图6是示出根据本公开的一个实施例的从链获得空闲存储帧的示意图。
图7是根据本公开的一个实施例的建立影子动态地址转换表的过程的流程图。
图8是示出根据本公开的实施例的当建立影子动态地址转换表时的数据传输的示意图。
图9是示出根据本公开的一个实施例的可应用于实现本公开的一些实施例的另一示例性计算机系统的框图。
图10是示出根据本公开的一个实施例的CPU与辅助控制器之间的协作的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的一些优选实施方式,在附图中显示了本公开的优选实施方式。然而应该理解,可以以各种形式实现本公开而不应被这里公开的实施方式所限制。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1同样也适于示例性描述适于用来实现本发明实施方式的一种移动电子装置(例如通讯装置)。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
图2是显示根据本公开的一个实施例的可在如图1所示的计算机系统中执行的虚拟机系统的基本结构的框图。如图2所示,多个虚拟机202、203、204在管理程序201的管理下在计算机系统/服务器12的同一硬件平台上独立地同时运行。
计算机系统/服务器12中的硬件资源、诸如处理器、存储器或存储盘可以被动态或者静态地分配给不同的虚拟机。通常,至少在特定操作期间,分配给一个虚拟机、例如虚拟机202的硬件资源是独立的,对这些分配的硬件资源的访问不会受到其他虚拟机、例如虚拟机203的影响。也就是说,虚拟机202的用户不会受到虚拟机203的用户的影响。这样,可以极大地提升计算机系统、特别是大的计算机系统、例如企业级服务器中的硬件资源的利用率。通过分别将不同的授权分配给虚拟机,还可以精确地实现用户的安全管理。
图3是显示根据本公开的一个实施例的虚拟机上的应用程序如何访问硬件平台中的物理存储器的示意图。如图3所示,用户的应用程序301以访客逻辑存储器地址304请求访问存储器。响应于该请求,访客操作系统302将访客逻辑存储器地址304转换成访客物理存储器地址305。该转换通过检索访客动态地址转换表来实现,其中该访客动态地址转换表包括访客逻辑存储器地址与访客物理存储器地址之间的映射。将访客物理存储器地址305发送给管理程序201。管理程序201例如可以是运行在主机操作系统下的一个管理应用程序,也可以是主机操作系统本身。管理程序201基于访客物理存储器地址305获得主机逻辑存储器地址306。例如,访客物理存储器地址305可以是主机逻辑存储器地址306本身。即,访客物理存储器地址305可以直接用作主机逻辑存储器地址306。管理程序201检索包括主机逻辑存储器地址306与主机物理存储器地址307之间的映射的主机动态地址转换表,从而将主机逻辑存储器地址306转换成主机物理存储器地址307。主机物理存储器地址307可用于访问计算机系统/服务器12的存储器28中的主机物理存储器303。然后,可以由管理程序201获得包括数据或访问结果的反馈、例如308、309、310,并依次返回给访客操作系统302和用户的应用程序301。
在存储器地址的转换期间,CPU不得不在运行访客操作系统的访客状态和运行主机操作系统的主机/核心状态之间中断和改变。CPU的中断是非常耗时的。并且,由于应用程序通常在短时间内提供多个请求,上述过程周期性地重复,导致CPU的负担更重。
在具有大量数据交换的I/O操作中,用户的应用程序可以为了DMA(直接存储器访问)目的请求一个I/O缓存器。可以建立一个包括该I/O缓存器的访客逻辑存储器地址304与相应的主机物理存储器地址307之间的映射的影子动态地址转换表,并发送给DMA控制器。DMA控制器可以利用该影子动态地址转换表直接访问主机物理存储器,从而将中央处理单元(CPU)、例如处理单元16中的处理器解放出来。
在该解决方案中,在进行I/O操作前,用户的应用程序301可以请求CPU建立影子动态地址转换表。进一步地,可以固定住要访问的系统存储器的一部分,从而避免将其从存储器交换到硬盘上。这样,在I/O操作期间,DMA控制器可以访问主机物理存储器。在完成I/O操作之后,用户的应用程序301可以请求CPU销毁/注销该影子动态地址转换表。从多个访客逻辑存储器地址到多个主机物理存储器地址的转换可以由CPU在一次完成。这样,在I/O操作期间,CPU不需要被拦截。
然而,在每次用户的应用程序请求建立/注册、销毁/注销或修改/更新影子动态地址转换表时,CPU会被拦截,以便从访客状态切换到主机/核心状态。这种状态及其相关联的上下文的变换仍然需要很多CPU周期,尤其是当处于访客操作系统中的用户的应用程序在每次I/O操作后频繁请求更新影子动态地址转换表时。
图4是显示根据本公开的一个实施例的用于虚拟机的动态地址转换的方法的流程图。如图4所示,在步骤S401,为至少一个访客操作系统分配一个存储空间。在步骤S402,响应于建立影子动态地址转换表的请求,从存储空间获得一个存储部分。这可以在不切换到主机状态的情况下完成。影子动态地址转换表包括在至少一个访客逻辑存储器地址和至少一个主机物理存储器地址之间的映射。在步骤S403,建立影子动态地址转换表。在步骤S404,将影子动态地址转换表存储在存储部分中。所分配的存储空间可以由CPU之外的任何处理器或控制器、例如辅助控制器访问,用以在不切换到主机状态的情况下建立或访问影子动态地址转换表。这样,不需要中断CPU来建立或访问影子动态地址转换表,可以进一步减轻CPU的负担。
用于虚拟机的动态地址转换的方法可以进一步包括步骤S405。在步骤S405,响应于销毁影子动态地址转换表的请求,将影子动态地址转换表占据的存储部分返回给存储空间。将占据的存储部分返回给存储空间可以提高存储空间的利用率。
在例示的计算机系统中,为了便于管理,将主机物理存储器303分成具有固定尺寸的许多个存储帧。因此,在本公开的实施例中,存储空间可以包括多个存储帧组成的链。在步骤S402,在从存储空间获得存储部分时,从该链中获得至少一个存储帧。该多个存储帧组成的链可以提高CPU之外的处理器或控制器访问的便利性。
图5是显示根据本公开的一个实施例的在图4中的步骤S401所分配的多个存储帧组成的链的示意图。如图5所示,在步骤S401,CPU可以分配多个存储帧来生成一个链50。该链的初始尺寸可以是预设的。
在本公开的一个实施例中,可以将指向链50的头帧501的链指针601存储在主机物理存储器303的一个预先安排的位置、例如CPU前缀页中,以便于访问。在该链的两个相邻存储帧中,一个存储帧包括指向另一个存储帧的指针。即,除了尾帧504,链50中的每个存储帧都包括指向链50中的下一个存储帧的指针,如头帧501帧中的指针5011,中间帧502中的指针5021,中间帧503中的指针5031。指向链的或者在链中的指针可以与架构相关,从而进一步便于提高链的访问速度。
进一步地,CPU还可以在存储帧表61中标注链50中的多个存储帧,从而保留这些存储帧,使其不被用于其他目的。
图6是显示根据本公开的一个实施例的从链获得空闲的存储帧的示意图。在图4的步骤S402中,响应于建立影子动态地址转换表的请求,辅助控制器可以从该链获得一个存储帧。例如,该请求可以来自于一个用户的应用程序,其需要大量数据交换的I/O操作。如图5所示,链中的存储帧501和503之间的存储帧502被取出。指针5021的值可以复制到存储帧502的前一帧、存储帧501。这样,存储帧501中的指针将指向存储帧502的后一帧、存储帧503。应该理解的是,链中的任何存储帧、包括头帧、尾帧都可以被取出。
根据本公开的一个实施例,在满足预定条件时,可以分配更多的存储空间。在一些实例中,链可能为空。在这种情况下,CPU可以分配更多的存储空间,即,分配新的存储帧并将其添加到链50中。可以重复该过程,直到链50中的存储帧的个数到达一个预设值,或者刚好符合要建立的影子动态地址转换表的尺寸。
如果辅助控制器执行步骤S402来从链50获取存储帧时,发现链50为空,辅助控制器可以请求CPU分配并添加一个新的存储帧到链50中。可以中断CPU来及时地处理该请求。可替换地,或者额外地,CPU还可以主动在空闲操作周期中周期性地检查链50是否为空,以便减少被中断的次数。
图7是根据本公开的一个实施例建立影子动态地址转换表的过程的流程图。图4中的步骤S403也可以由辅助控制器执行。如图7所示,步骤S403可以包括步骤S701-S707。在步骤S701,从建立影子动态地址转换表的请求,获得要转换的访客逻辑存储器地址。在步骤S702,从访客操作系统获得包括访客逻辑存储器地址和访客物理存储器地址之间的映射的访客动态地址转换表。在步骤S703,利用访客逻辑存储器地址,搜索访客动态地址转换表,以获得访客物理存储器地址。在步骤S704,根据访客物理存储器地址,获取主机逻辑存储器地址。在步骤S705,从主机操作系统获取包括主机逻辑存储器地址和主机物理存储器地址之间的映射的主机动态地址转换表。在步骤S706,利用主机逻辑存储器地址,搜索主机动态地址转换表,以获得主机物理存储器地址。在步骤S707,将访客逻辑存储器地址和主机物理存储器地址之间的映射保存在影子动态地址转换表中。例如,将访客逻辑存储器地址和主机物理存储器地址都保存在影子动态地址转换表中的相应位置处。
图8是显示根据本公开的一个实施例在建立影子动态地址转换表时的数据传输的示意图。如图8所示,与来自用户的应用程序的建立影子动态地址转换表的请求一起,还传送分配给该请求的访客逻辑存储器地址的列表801。
在步骤S701,例如,由辅助控制器从访客逻辑存储器地址的列表801获得要转换的访客逻辑存储器地址A1。图8中的列表801用于更好地阐述该过程。在本公开的另一个例示性实施例中,可以省略列表801。由于所有需要的访客逻辑存储器地址已经存储在访客动态地址转换表802中,辅助控制器直接从访客动态地址转换表802获得访客逻辑存储器地址。
在步骤S702,辅助控制器获得访客动态地址转换表802。例如,为了便于辅助控制器的获得,访客操作系统可以将访客动态地址转换表802重新保存到辅助控制器可以访问的存储器中,或者仅仅向辅助控制器发送存储有访客动态地址转换表802的存储器的对应指针/地址。
在步骤S703,辅助控制器搜索访客动态地址转换表802,尤其是访客逻辑存储器地址列8021,以便从访客物理存储器地址列8022中获得对应的访客物理存储器地址B2。图8中的访客动态地址转换表802还显示了一个通常情况,即访客逻辑存储器地址8021是连续的,而访客物理存储器地址8022是动态分配的,并且是不连续的。访客动态地址转换表802中所示的映射关系也是例示性的,因为其通常是动态的、不可预测的。
在步骤S704,辅助控制器获得主机逻辑存储器地址B2,其是访客物理存储器地址B2本身。在图8中,可以存储主机逻辑存储器地址的一个例示列表803,其中,访客物理存储器地址8031的值与主机逻辑存储器地址8032相同。
在步骤S705,辅助控制器获得主机动态地址转换表804。由主机操作系统管理的主机动态地址转换表804的结构与由访客操作系统管理的访客动态地址转换表802类似。主机逻辑存储器地址8041是连续的,而主机物理存储器地址8042是不连续地分配的。
同样地,主机操作系统可以将主机动态地址转换表804重新保存到辅助控制器可以访问的存储器中,或者仅仅向辅助控制器发送存储有主机动态地址转换表804的存储器的对应指针/地址。重新保存或发送可以由主机操作系统预先完成,这样,辅助控制器可以容易地获得主机动态地址转换表804,而不必切换到主机状态。
在步骤S706,辅助控制器以主机逻辑存储器地址B2搜索主机动态地址转换表804,以获得主机物理存储器地址C5。
在步骤S707,辅助控制器将访客逻辑存储器地址A1和主机物理存储器地址C5保存在影子动态地址转换表805中。
最后,可以将访客逻辑存储器地址8051和主机物理存储器地址8052包含在影子动态地址转换表805中。
进一步地,还可以将访客逻辑存储器地址和访客物理存储器地址的映射保存在影子动态地址转换表805中。例如,访客物理存储器地址B2也可以保存在影子动态地址转换表805中。其结果是,对应的访客物理存储器地址8053也可以包含在影子动态地址转换表805中。因此,可以追踪由访客操作系统对于在访客逻辑存储器地址和访客物理存储器地址之间的映射所做的改变,并在需要时可以反映在影子动态地址转换表805中。
影子动态地址转换表805可以存储在一个或多个存储帧中,例如图7所示的存储帧502。任何有权限的设备或应用、例如DMA控制器可以对其进行访问。同时,可以将主机物理存储器中对应于主机物理存储器地址8052的部分标注为固定,从而避免不期望的操作,尤其避免在交换过程中从存储器交换到硬盘上。
在一些实例中,如果主机物理存储器地址C5是无效的,则会发生错误,该过程会暂停。辅助控制器可以产生一个由CPU处理的中断。
图8仅仅是例示性的示意图,其中所有的数字、例如A1、B2、C5都是例示性的,为了更好地阐述实施例,而不构成对实施例的限制。例如,由于访客逻辑存储器地址在传输期间不改变,可以不将其值传送并存储在影子动态地址转换表805中,只要维护其条目号的顺序即可,例如0、1、…、n。进一步地,考虑到存储器管理的安全性和/或原理,诸如C5的数字也可以是条目号,其仍然需要被转换来进行对硬件的直接存取。在这种情况下,如果C5是一个有效的条目号,但转换后的地址无效,也会发生错误,该过程也会暂停。
进一步地,在步骤S405,响应于销毁影子动态地址转换表805的请求(该请求通常发生在影子动态地址转换表805的使用之后),辅助控制器将由影子动态地址转换表占据的存储帧502返还给链50。存储帧502可以被添加到链50的任何位置、例如尾部。
在本公开的实施例中,预先分配包括多个存储帧的链50,用于存储影子动态地址转换表,该影子动态地址转换表包含目前被固定的主机物理存储器的地址。这样,可以统一地管理这些被固定的主机物理存储器,包括那些用作用于DMA的I/O缓冲器的主机物理存储器,以便于硬件资源的管理,例如进行存储器的统计分析。进一步地,管理程序201可以基于该统计分析调整对虚拟机的资源分配策略。
图9是显示可用于实现本公开的一些实施例的另一个例示性计算机系统的框图。如图9所示,计算机系统/服务器12进一步包括辅助控制器161。对应于程序/实用工具40中包含的程序模块42的一组计算机程序指令存储在存储器28中,由至少一个处理器、例如处理单元16中的CPU 160以及辅助控制器161执行,以便执行一些操作。在这些操作中,由至少一个处理器分配存储空间。响应于建立影子动态地址转换表的请求,由辅助控制器从存储空间获得存储部分。影子动态地址转换表包括至少一个访客逻辑存储器地址和至少一个主机物理存储器地址之间的映射。由辅助控制器建立影子动态地址转换表。由辅助控制器将影子动态地址转换表存储在存储部分中。响应于销毁影子动态地址转换表的请求,由辅助控制器将影子动态地址转换表所占据的存储部分返还给存储空间。简言之,该至少一个处理器可以是带有高级别授权并执行大部分程序指令的CPU 160。CPU 160在计算机系统/服务器12中运行主机操作系统和访客操作系统。辅助控制器161可以是也可以不是处理单元16中的一个处理器,其自动建立、更新和销毁影子动态地址转换表。可以将新的硬件用于辅助控制器,或者可以分配已有硬件并重新编程来用作辅助控制器161。
图10是显示根据本公开的一个实施例的CPU和辅助控制器之间的协作的示意图。如图10所示,在没有辅助控制器161的情况下,CPU1001不得不经常在运行主机操作系统的主机/核心状态1021与运行访客操作系统的访客状态1022之间改变。例如,在CPU 1001运行访客操作系统的S4010期间,只要接收到一个建立或更新影子动态地址转换表的请求,CPU1001就会被中断。S402被执行,CPU 1001进入到主机/核心状态1021,建立或更新影子动态地址转换表。同样地,在CPU 1001运行访客操作系统的S4030期间,只要接收到一个销毁影子动态地址转换表的请求,CPU 1001就会被中断,再次进入到主机/核心状态1021。状态改变及其相关联的上下文切换非常耗时,尤其是在每次I/O操作之后访客操作系统频繁更新影子动态地址转换表以及CPU 1001被反复地中断的时候。
利用辅助控制器161,CPU 160可以在S402、S403、S404不被中断地持续执行任务。仅仅在很少的一些情况下,响应于来自辅助控制器161的请求,CPU 160可能会在S402期间处理空链中断1013,或在S704期间处理无效地址中断1014。辅助控制器161的操作周期1023覆盖了S402、S403、S404,也即,辅助控制器161可以自动地建立、更新、销毁影子动态地址转换表,从而减少由CPU处理中断所产生的时间成本,因而可以提高计算机系统/服务器的整体性能。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种计算机实现的方法,包括:
响应于用于建立影子动态地址转换表的请求,从存储空间获得存储部分,其中所述存储空间被分配用于至少一个访客操作系统,并且其中所述影子动态地址转换表包括至少一个访客逻辑存储器地址与至少一个主机物理存储器地址之间的映射;
建立影子动态地址转换表;以及
将所述影子动态地址转换表存储在所述存储部分中。
2.根据权利要求1所述的计算机实现的方法,还包括:
响应于用于销毁所述影子动态地址转换表的请求,将由所述影子动态地址转换表占据的存储部分返回到所述存储空间。
3.根据权利要求1所述的计算机实现的方法,
其中所述存储空间包括多个存储帧的链;
其中,在所述链中的两个相邻的存储帧中,一个存储帧包括指向相邻的存储帧的指针;以及
其中从所述存储空间获得所述存储部分包括从所述多个存储帧的所述链获得至少一个存储帧。
4.根据权利要求3所述的计算机实现的方法,还包括:
将所述指针存储到所述多个存储帧的所述链的标头。
5.如权利要求1所述的计算机实现的方法,其中建立所述影子动态地址转换表包括:
从建立所述影子动态地址转换表的请求中获取待转换的访客逻辑存储器地址;
从访客操作系统获得访客动态地址转换表,所述访客动态地址转换表包括一个或多个访客逻辑存储器地址与一个或多个访客物理存储器地址之间的一个或多个映射;
利用所述访客逻辑存储器地址查找所述访客动态地址转换表,得到访客物理存储器地址;
基于所述访客物理存储器地址获得主机逻辑存储器地址;
从主机操作系统获得主机动态地址转换表,所述主机动态地址转换表包括一个或多个主机逻辑存储器地址与一个或多个主机物理存储器地址之间的一个或多个映射;
利用主机逻辑存储器地址查找主机动态地址转换表,得到主机物理存储器地址;以及
将所述访客逻辑存储器地址与所述主机物理存储器地址之间的映射保存到所述影子动态地址转换表。
6.根据权利要求5所述的计算机实现的方法,还包括:
锁定由所述主机物理存储器地址指向的主机物理存储器的一部分。
7.如权利要求5所述的计算机实现的方法,其中建立所述影子动态地址转换表还包括:
将所述访客逻辑存储器地址与所述访客物理存储器地址之间的映射保存到所述影子动态地址转换表。
8.根据权利要求1所述的计算机实现的方法,其中,在满足预定准则时分配附加的存储空间。
9.一种系统,包括适于执行根据任一前述方法权利要求所述的方法的所有步骤的装置。
10.一种计算机程序,包括当所述计算机程序在计算机系统上执行时、用于执行根据任一前述方法权利要求所述的方法的所有步骤的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/824,110 | 2017-11-28 | ||
US15/824,110 US10387325B2 (en) | 2017-11-28 | 2017-11-28 | Dynamic address translation for a virtual machine |
PCT/IB2018/059176 WO2019106491A1 (en) | 2017-11-28 | 2018-11-21 | Dynamic address translation for a virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111183411A true CN111183411A (zh) | 2020-05-19 |
CN111183411B CN111183411B (zh) | 2023-10-13 |
Family
ID=66633195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880065143.7A Active CN111183411B (zh) | 2017-11-28 | 2018-11-21 | 用于虚拟机的动态地址转换 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10387325B2 (zh) |
JP (1) | JP7089333B2 (zh) |
CN (1) | CN111183411B (zh) |
DE (1) | DE112018006068T5 (zh) |
GB (1) | GB2581113B (zh) |
WO (1) | WO2019106491A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387325B2 (en) | 2017-11-28 | 2019-08-20 | International Business Machines Corporation | Dynamic address translation for a virtual machine |
US10891238B1 (en) | 2019-06-28 | 2021-01-12 | International Business Machines Corporation | Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context |
US11074195B2 (en) * | 2019-06-28 | 2021-07-27 | International Business Machines Corporation | Access to dynamic address translation across multiple spaces for operational context subspaces |
US11176056B2 (en) | 2019-06-28 | 2021-11-16 | International Business Machines Corporation | Private space control within a common address space |
US11281483B2 (en) | 2019-10-16 | 2022-03-22 | International Business Machines Corporation | Preserving transient address translation information across a firmware assisted dump procedure |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005447A1 (en) * | 2006-06-30 | 2008-01-03 | Sebastian Schoenberg | Dynamic mapping of guest addresses by a virtual machine monitor |
US20100191888A1 (en) * | 2009-01-26 | 2010-07-29 | Serebrin Benjamin C | Guest Interrupt Manager to Aid Interrupt Virtualization |
CN103793260A (zh) * | 2013-10-09 | 2014-05-14 | 中国电子设备系统工程公司研究所 | 一种平台虚拟化系统 |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
CN104750623A (zh) * | 2013-12-31 | 2015-07-01 | 华为技术有限公司 | 一种内存虚拟化的方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001051900A (ja) * | 1999-08-17 | 2001-02-23 | Hitachi Ltd | 仮想計算機方式の情報処理装置及びプロセッサ |
US7310721B2 (en) | 2003-10-30 | 2007-12-18 | Microsoft Corporation | Shadow page tables for address translation control |
US7363463B2 (en) * | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
US7996628B2 (en) | 2008-02-14 | 2011-08-09 | International Business Machines Corporation | Cross adapter shared address translation tables |
US8095773B2 (en) * | 2008-02-26 | 2012-01-10 | International Business Machines Corporation | Dynamic address translation with translation exception qualifier |
US8060722B2 (en) | 2009-03-27 | 2011-11-15 | Vmware, Inc. | Hardware assistance for shadow page table coherence with guest page mappings |
US8799879B2 (en) * | 2009-06-30 | 2014-08-05 | Oracle America, Inc. | Method and apparatus for protecting translated code in a virtual machine |
US8650337B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
EP2691857B1 (en) * | 2011-03-31 | 2016-11-30 | Intel Corporation | Memory mirroring and redundancy generation for high availability |
US9384024B2 (en) * | 2012-12-18 | 2016-07-05 | Dynavisor, Inc. | Dynamic device virtualization |
EP3049921A4 (en) * | 2013-09-26 | 2017-05-17 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
US10387325B2 (en) | 2017-11-28 | 2019-08-20 | International Business Machines Corporation | Dynamic address translation for a virtual machine |
-
2017
- 2017-11-28 US US15/824,110 patent/US10387325B2/en active Active
-
2018
- 2018-11-21 JP JP2020528157A patent/JP7089333B2/ja active Active
- 2018-11-21 WO PCT/IB2018/059176 patent/WO2019106491A1/en active Application Filing
- 2018-11-21 CN CN201880065143.7A patent/CN111183411B/zh active Active
- 2018-11-21 GB GB2008612.0A patent/GB2581113B/en active Active
- 2018-11-21 DE DE112018006068.3T patent/DE112018006068T5/de active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005447A1 (en) * | 2006-06-30 | 2008-01-03 | Sebastian Schoenberg | Dynamic mapping of guest addresses by a virtual machine monitor |
US20100191888A1 (en) * | 2009-01-26 | 2010-07-29 | Serebrin Benjamin C | Guest Interrupt Manager to Aid Interrupt Virtualization |
CN104239227A (zh) * | 2013-06-20 | 2014-12-24 | 杭州华三通信技术有限公司 | 一种虚拟化存储管理装置、本地虚拟存储管理装置及方法 |
CN103793260A (zh) * | 2013-10-09 | 2014-05-14 | 中国电子设备系统工程公司研究所 | 一种平台虚拟化系统 |
CN104750623A (zh) * | 2013-12-31 | 2015-07-01 | 华为技术有限公司 | 一种内存虚拟化的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10387325B2 (en) | 2019-08-20 |
WO2019106491A1 (en) | 2019-06-06 |
US20190163643A1 (en) | 2019-05-30 |
GB2581113A (en) | 2020-08-05 |
GB202008612D0 (en) | 2020-07-22 |
DE112018006068T5 (de) | 2020-08-13 |
JP2021504804A (ja) | 2021-02-15 |
CN111183411B (zh) | 2023-10-13 |
GB2581113B (en) | 2020-12-23 |
JP7089333B2 (ja) | 2022-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111183411B (zh) | 用于虚拟机的动态地址转换 | |
US9671970B2 (en) | Sharing an accelerator context across multiple processes | |
US10713083B2 (en) | Efficient virtual I/O address translation | |
US10310974B2 (en) | Systems and methods for input/output computing resource control | |
US11194735B2 (en) | Technologies for flexible virtual function queue assignment | |
US9529618B2 (en) | Migrating processes between source host and destination host using a shared virtual file system | |
US10169247B2 (en) | Direct memory access between an accelerator and a processor using a coherency adapter | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
US11068418B2 (en) | Determining memory access categories for tasks coded in a computer program | |
US10430246B2 (en) | Virtualized and synchronous access to hardware accelerators | |
US10310759B2 (en) | Use efficiency of platform memory resources through firmware managed I/O translation table paging | |
US10204060B2 (en) | Determining memory access categories to use to assign tasks to processor cores to execute | |
US11055813B2 (en) | Method, electronic device and computer program product for expanding memory of GPU | |
US20220237126A1 (en) | Page table manager | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |