CN102792286B - 虚拟化处理***中的地址映射 - Google Patents
虚拟化处理***中的地址映射 Download PDFInfo
- Publication number
- CN102792286B CN102792286B CN201180012866.9A CN201180012866A CN102792286B CN 102792286 B CN102792286 B CN 102792286B CN 201180012866 A CN201180012866 A CN 201180012866A CN 102792286 B CN102792286 B CN 102792286B
- Authority
- CN
- China
- Prior art keywords
- identifier
- search key
- entry
- virtual
- operating system
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 53
- 230000008569 process Effects 0.000 title claims description 45
- 238000013507 mapping Methods 0.000 title description 8
- 238000003860 storage Methods 0.000 claims description 26
- 238000013519 translation Methods 0.000 claims description 24
- 239000000872 buffer Substances 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims 8
- 230000003139 buffering effect Effects 0.000 claims 2
- 230000007704 transition Effects 0.000 abstract description 6
- 230000015654 memory Effects 0.000 description 36
- 230000008878 coupling Effects 0.000 description 15
- 238000010168 coupling process Methods 0.000 description 15
- 238000005859 coupling reaction Methods 0.000 description 15
- 230000014616 translation Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
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]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/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]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/1016—Performance improvement
- G06F2212/1021—Hit rate 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/10—Providing a specific technical effect
- G06F2212/1052—Security 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种处理***实现由管理程序管理的多个虚拟机。每个虚拟机提供用于执行一个或多个相应的客户机操作***(OS)的环境。每个客户机OS以及管理程序本身具有使用相应的“WorldID”来标识的相关的地址空间。此外,每个虚拟机和管理程序可管理使用相应的“ASID”来标识的多个较低级的地址空间。处理***的地址转换逻辑将当前地址空间上下文的WorldID和ASID转换成具有比原始标识符少的位的相应的WorldID和ASID搜索关键字。产生的WorldID和ASID搜索关键字用于执行一个或多个TLB查找以获得与由WorldID/ASID组合所代表的特定地址空间有关的地址映射信息。
Description
技术领域
本公开通常涉及存储器管理,尤其是涉及虚拟到物理存储器地址转换。
背景技术
处理***一般利用虚拟处理方案,使得在相应的虚拟地址空间中的虚拟地址通过使用页表和转换后备缓冲区(TLB)来映射到存储器位置和输入/输出(IO)接口的物理地址。由于可在处理***内实现的不同虚拟地址的数量和由于在所实现的虚拟机当中提供有效隔离的需要,处理器虚拟化的出现复杂化了这个虚拟到物理地址映射。处理***可使用代表相应的虚拟地址空间的标识符来支持TLB标记。这些标识符常常具有数十位,且处理这个规模的搜索所需的TLB命中逻辑实现起来惊人地复杂。常规虚拟化处理***因此常常以在软件控制下维持和实现这些地址映射所需的相当大的开销为代价而利用基于软件的地址映射。
附图说明
通过参考附图,本公开可被更好地理解,且其很多特征和优点对本领域技术人员来说变得明显。在不同图中相同的参考符号的使用指示相似或相同的部件。
图1是示出根据本公开的至少一个实施方案的具有基于硬件的存储器映射的虚拟化处理***的图示。
图2是示出根据本公开的至少一个实施方案的用于从相队长的地址空间标识符产生相对短的搜索关键字的搜索关键字表的示例性实现的图示。
图3是示出根据本公开的至少一个实施方案的用于在虚拟化处理***中的地址转换的示例性方法的流程图。
图4是示出根据本公开的至少一个实施方案的使用基于地址空间标识符的搜索关键字的示例性TLB查找的图示。
具体实施方式
图1-4示出用于在虚拟化处理环境中的虚拟到物理地址转换的示例性技术。在至少一个实施方案中,处理***具有一个或多个处理器,其实现由管理程序(也称为虚拟机管理器或VMM)管理的多个虚拟机。每个虚拟机为一个或多个虚拟处理器提供安全和隔离的硬件-仿真环境,其中每个虚拟处理器执行相应的客户机操作***(OS)。每个客户机OS/虚拟处理器以及管理程序本身具有相关的地址空间。此外,每个虚拟机和管理程序可管理多个较低级的地址空间,例如与在虚拟机的客户机OS的控制下执行的特定软件应用相关的地址空间。每个客户机OS通常使用在本文称为“WorldID”的特定标识符来识别,且由客户机OS管理的较低级的地址空间使用在本文称为“地址空间标识符”或“ASID”的特定标识符来识别。一般,WorldID和ASID在长度上是数十位,且因此可能太大而不能直接由TLB命中逻辑使用。因此,在至少一个实施方案中,在下面描述的处理***的地址转换逻辑将与处理***的当前虚拟地址空间上下文相关的WorldID和ASID转换成具有比原始标识符更少的位且因此需要较不复杂的TLB命中逻辑的相应的WorldID和ASID搜索关键字。因而产生的WorldID搜索关键字和ASID搜索关键字被缓存并用于执行一个或多个TLB查找,以获得与WorldID/ASID组合所代表的特定地址空间有关的地址映射信息。地址映射信息接着用于将与存储器访问请求相关的虚拟地址转换成相应的物理地址。
图1示出根据本公开的至少一个实施方案的实现基于硬件的虚拟到物理地址映射的虚拟化处理***100。在所示实施例中,处理***100包括一个或多个处理器102和存储器子***104。处理器102包括一个或多个处理器核心106、高速缓冲存储器子***108和存储器管理单元(MMU)110。存储器子***104经由一个或多个总线、纵横开关或其组合连接到处理器核心106和高速缓冲存储器子***108。存储器子***104可包括***存储器、外部高速缓冲存储器、输入/输出(I/O)设备、以及在处理***100的总地址空间内被分配了一个或多个物理地址的其它部件。在一个实施方案中,可基于定义处理器102的功能的一组寄存器传输级(RTL)或Verilog指令来设计处理器102的一些或所有部件,这些指令被合成以产生处理设备的电气和电子设计。
处理***100配置成支持虚拟化,以便通过执行虚拟化软件或虚拟化固件来实现一个或多个基于软件的虚拟机,该虚拟化软件或虚拟化固件实现控制多个客户机操作***(OS)的实现的管理程序112(也称为虚拟机管理器或VMM)。管理程序112通过拦截或模拟某些操作例如页表的改变来给每个客户机OS提供对处理器***100的处理硬件114的完全控制的外观,以便确保每个客户机OS的操作和有关应用的安全分离。因此,客户机OS和由客户机OS控制的任何相应的应用的执行被称为“虚拟机”。图1示出一个实施例,其中管理程序112管理四个虚拟机:虚拟机116、117、118和119(也分别称为VM1、VM2、VM3和VM4)。为了说明的容易,每个虚拟机116被描绘为支持单个OS。虚拟机116使用应用122和123(AS1和AS2)执行客户机OS121,虚拟机117使用应用125(AS3)执行客户机OS124,虚拟机118执行客户机OS126,以及虚拟机119使用应用128和129(AS4和AS5)执行客户机OS127。在其它实现中,每个虚拟机可支持多个客户机操作***。
虚拟化的共同目标是允许单个处理设备运行多个操作***,同时维持在操作***和其相关的软件应用之间的安全的、资源保证的隔离。为了实现这个隔离,不同的虚拟地址空间用于不同的客户机操作***/虚拟机,以便控制客户机OS被允许访问的特定存储器位置。每个客户机OS相对于存储器子***104在其自己的“世界”中操作,因此每个客户机OS被分配了在本文称为“WorldID”的唯一的标识符。此外,隔离在给定OS环境内的应用常常是有利的,且因此每个客户机OS可将不同的虚拟地址空间分配给由客户机OS支持的特定功能,例如客户机OS的某些核心操作或由客户机OS支持的软件应用。为了说明,应用122和123每个可在由客户机OS121分配的分开的地址空间中操作;或客户机OS121可对应用122和123实现相同的地址空间。处理***100使在本文称为“地址空间标识符”或“ASID”的唯一标识符与客户机OS所管理的每个虚拟地址空间相关。因此,特定WorldID和特定ASID的组合识别相应的页表或页表集,其用于将与特定的WorldID和ASID相关的应用或OS所产生的虚拟地址转换成相应的物理地址。
为了说明的容易,描述了一种实施方案,其中MMU110被配置成提供这个虚拟到物理地址转换,并以其它方式便于在不同的虚拟机116-119内发起的存储器访问请求。然而,在其它实施方案中,本文所述的地址转换技术可由处理***100的其它部件实现。例如,所公开的地址转换技术可由高速缓冲存储器子***108的TLB逻辑111或由指令高速缓冲存储器(未示出)的TLB逻辑实现。
在一个实施方案中,MMU110包括一个或多个页表130、转换后备缓冲区(TLB)132、一组搜索关键字表134和136以及硬件控制器138。每个页表130存储表示在特定的虚拟地址空间的虚拟地址和相应的物理地址之间的映射的信息。TLB132缓存最近由处理***100使用的虚拟到物理地址映射。搜索关键字表134和136用于从在虚拟机116-119中使用的WorldID和ASID产生对TLB132的TLB命中逻辑的搜索关键字。
硬件控制器138操作来管理对存储器子***104的访问。当虚拟机试图访问存储器映射的位置时,管理程序112发起用于由MMU110处理的存储器访问请求140,以便制定所请求的存储器访问操作142。存储器访问请求140一般包括在讨论中的存储器位置的虚拟地址,并包括发起存储器访问的虚拟机的WorldID或与所述WorldID相关。此外,存储器访问请求140还包括ASID或与ASID相关,ASID与发起存储器访问的应用或功能相关。在一个实施方案中,在基于x86的结构中存在的控制寄存器CR3用于存储给定的处理器核心的当前ASID,且因此ASID可包括例如存储在控制寄存器CR3中的位的一部分或全部。WorldID或WorldID和ASID的组合识别与使用存储器访问请求140提供的虚拟地址相关的特定虚拟地址空间。因此,硬件控制器138使用WorldID和ASID来识别特定的虚拟到物理地址转换,以用于将虚拟地址转换到相应的物理地址。硬件控制器138执行所指示的地址转换,并接着将因而产生的物理地址提交到存储器子***104作为存储器访问操作142的部分,以便指示存储器子***104访问所指示的存储器位置。
如所提到的,每个页表130相应于特定的虚拟地址空间,以便提供在虚拟地址空间的虚拟地址和相应的物理地址之间的特定映射。因为在直接访问页表130时有相对高的时延,硬件控制器138利用TLB132来缓存最近使用的虚拟到物理映射。在对存储器访问请求140执行虚拟到物理地址转换中,硬件控制器138首先检查TLB132以确定TLB132是否已经包含存储器访问请求140所需的特定的虚拟到物理映射。在一个实施方案中,硬件控制器138使用TLB标记和TLB命中逻辑来识别相应的虚拟地址空间的映射信息是否在TLB132的条目内。如所提到的,使用存储器访问请求140提交的WorldID和ASID识别与虚拟地址相关的唯一虚拟地址空间,该虚拟地址转换成相应的物理地址。然而,这些值常常是数十位长,且因此如果被直接用作TLB132的标记阵列的搜索关键字则将需要相当复杂的TLB命中逻辑。因此,在至少一个实施方案中,硬件控制器138使用搜索关键字表134和136来将使用存储器访问请求140提交的WorldID和ASID转换成可接着由TLB132的TLB命中逻辑使用的较小的搜索关键字。在一个示例性实现中,通过使用搜索关键字表134和136,WorldID可从16位值转换成2位WorldID搜索关键字,且ASID可从36位值转换成3位ASID搜索关键字。
在最初将WorldID和ASID分别转换成相应的WorldID搜索关键字和ASID搜索关键字之后,硬件控制器138缓存因而产生的WorldID和ASID搜索关键字,并继续使用这些缓存的搜索关键字用于TLB查找,直到由于上下文变化而存在对WorldID或ASID中的一个或两个的更新,例如当在管理程序112的执行和客户机OS的执行之间切换时,或例如当客户机OS在一个应用的执行到另一应用的执行之间切换时通过更新控制寄存器CR3中的ASID来切换应用级地址空间时。因此,由硬件控制器138利用来将WorldID和ASID转换到WorldID和ASID搜索关键字的映射逻辑仅需要在对WorldID或ASID的每次更新时运行一次。
图2示出搜索关键字表134和136的示例性实现。搜索关键字表134(在本文称为“WorldID表134”)包括全相联高速缓冲存储器或具有2X个条目的其它数据结构,其中X是在因而产生的WorldID搜索关键字201中的位的数量。在所示实施例中,WorldID表134具有4(22)个条目,从而导致2位WorldID搜索关键字201的产生。WorldID表134的每个条目与相应的进程(例如,在图2的实施例中的0-3)相关,且每个条目包括配置成存储相应的WorldID的WorldID字段202。每个条目还可包括各种状态字段,例如存储指示相应的条目是否是有效条目的有效位的有效字段203,以及存储至少最近使用最少(LRU)或最近使用最多(MRU)的信息的字段,等等。
搜索关键字表136(在本文称为“ASID表136”)包括组相联高速缓冲存储器或具有X个索引的其它数据结构,每个索引与WorldID表134的相应进程相关,且每个索引包括一组2Y个条目,其中Y是在因而产生的ASID搜索关键字211中的位的数量。在所述实施例中,ASID表136具有8(23)个条目,因此导致3位ASID搜索关键字211的产生。ASID表136的每个条目与相应的进程(例如,图2的实施例1的0-7)相关,且每个条目包括配置成存储相应的ASID的ASID字段204。每个条目还可包括各种状态字段,例如存储指示相应的条目是否是有效条目的有效位的有效字段205,以及存储LRU或MRU信息的字段,等等。
在一个实施方案中,WorldID搜索关键字201和ASID搜索关键字211的确定包括两步骤过程。为了确定相应于WorldID的WorldID搜索关键字201,硬件控制器138搜索WorldID表134以确定是否存在存储WorldID的匹配条目。如果这样的条目在WorldID表134中找到,则WorldID搜索关键字201被设置到找到的条目的进程。为了说明,如果WorldID表134的第三个条目(进程=2)存储匹配的WorldID,则WorldID搜索关键字201将被设置到第三个条目的进程;即,10b(2)。在识别出WorldID搜索关键字201之后,硬件控制器138通过使用WorldID表134中的匹配条目的进程来确定相应于ASID的ASID搜索关键字211,以识别将被搜索的ASID表的相应索引。使用前面的实施例,WorldID表134的匹配条目的进程是索引=2,因此硬件控制器138将搜索ASID表136的(索引0-3中的)索引2,以确定索引2中的条目0-7中的任一个是否存储与存储器访问请求相关的ASID。如果这样的条目在ASID表136的所指示的索引中找到,则ASID搜索关键字211被设置到条目的进程。为了说明,如果ASID表136的第四个条目(进程=3)存储匹配的ASID,则ASID搜索关键字211将被设置到011b(3)。
图3示出根据本公开的至少一个实施方案的用于使用图2的WorldID表134和ASID表136来确定WorldID和ASID搜索关键字的硬件控制器138的操作的示例性方法300。方法300在块302响应于对地址空间上下文的更新而开始。该更新可包括在当前ASID、当前WorldID或两者中的变化。为了说明,当上下文切换出现在管理程序112和客户机OS之间或客户机OS之间时,WorldID和ASID被更新以反映新的地址空间。类似地,在当前执行的客户机OS切换地址空间时(例如,当在应用之间切换时),ASID被更新。在基于x86的处理器结构中,控制寄存器CR3常常用作指向与当前的虚拟地址空间相关的特定页表的页目录基址寄存器(PDBR),且因此存储在控制寄存器CR3中的位的某个部分或全部可用作ASID。因此,对在使用中的当前ASID的更新可被探测为对存储在控制寄存器CR3中的值的更新。
在块304,硬件控制器138使用命中逻辑来搜索WorldID表134以找到存储WorldID的条目。在没有找到存储同一WorldID的条目的情况下,在块306,硬件控制器138为与存储器访问请求相关的WorldID分配在WorldID表134中的条目。条目的分配可包括分配未使用的条目或收回当前使用的条目。待收回的条目可被选择为例如最近使用最少的条目。在WorldID表134中所分配的条目接着被填充有在块302接收的WorldID,且适当的状态标记被设置。在块308,WorldID搜索关键字被设置到在块306分配的在WorldID表134中的条目的进程。在块310,相应于WorldID表134的所分配的条目的ASID表136的索引的条目被刷新,且索引的条目被选择并填充有在块302接收的ASID。
返回到块304,在WorldID表134的匹配条目被找到的情况下,在块312,硬件控制器138将WorldID关键字201设置到匹配条目的进程。在块314,硬件控制器138选择与WorldID表134的匹配条目相关的ASID表136的索引,且在块316,硬件控制器138搜索ASID表136的选定索引的条目集合以找到存储在块302接收的ASID的匹配条目。
在没有找到选定进程的匹配条目的情况下,在块318,硬件控制器138通过选择未使用的条目或通过收回在使用中的条目来分配ASID表136的选定索引的条目以存储ASID。在块320,硬件控制器138将ASID搜索关键字设置到在块318分配的条目的进程。在块322,硬件控制器138刷新TLB表132的匹配通过块302-322的过程确定的WorldID和ASID搜索关键字的任何条目。返回到块316,在找到选定进程的匹配条目的情况下,在块324,硬件控制器138将ASID搜索关键字211设置到匹配条目的进程。
在设置了当前的WorldID和ASID搜索关键字之后,在块326,硬件控制器138可利用WorldID和ASID搜索关键字来通过页穿行用页转换信息填充TLB132的相应条目,并执行针对虚拟到物理存储器地址转换的TLB查找,直到下一地址空间上下文变化,此时对更新的WorldID/ASID开始方法300的下一重复。
图4示出根据本公开的至少一个实施方案的使用WorldID搜索关键字201和ASID搜索关键字211的TLB查找的示例性实现。在所示实施例中,TLB132包括表或包含多个条目的其它数据结构,每个条目具有配置成存储相应的虚拟页编号的虚拟页编号(VPN)字段401和物理页编号(PPN)字段402。每个条目进一步与配置成存储相应的WorldID搜索关键字的WorldID标记字段403、配置成存储相应的ASID搜索关键字的ASID标记字段404、以及配置成存储全局位的全局地址字段405相关,当全局位被设置时指示相关的映射对相应的虚拟机是全局的(也就是说,对虚拟机内的所有地址空间是全局的)。为了执行TLB查找,硬件控制器138使用TLB命中逻辑来搜索TLB132的条目以找到匹配WorldID搜索关键字201和正被处理并匹配ASID搜索关键字或具有全局位设置的存储器访问请求的虚拟存储器地址的VPN的条目。如果TLB132中的条目满足这些搜索条件(即:匹配的WorldID搜索关键字AND匹配的VPN和(匹配的ASID搜索关键字OR全局位设置)的每个,硬件控制器138使用存储在条目的PPN字段402中的物理页编号(PPN_X)来将存储器访问请求的虚拟地址转换成相应的物理地址。该转换一般通过将物理页编号连接到从虚拟地址的某个部分或全部确定的页偏移来实现,以便产生物理地址。
本公开的另一方面包括存储代表一组指令的数据的计算机可读存储器,当所述指令被执行时适合于便于硬件的设计以实现上面描述的虚拟到物理地址转换技术。因此,实现上述技术的设备可体现在例如布置在配置成存储软件(例如,计算机可读程序代码)的计算机可用(例如,可读)介质中的软件中。程序代码导致本公开的实施方案的实现,包括本文公开的***和方法的制造。例如,这可通过使用通用编程语言(例如C或C++)、硬件描述语言(HDL)(包括Verilog、Verilog-A、HDL、VHDL、AlteraHDL(AHDL))等、或其它可用的编程和/或语义捕获工具(例如电路捕获工具)来完成。程序代码可以布置在任何已知的计算机可用介质(包括半导体、磁盘、光盘(例如CD-ROM、DVD-ROM))中。应理解,由上述***和技术完成的功能和/或提供的结构可以被表示在核心(例如GPU核心)中,该核心体现在程序代码中并可转换成硬件作为集成电路的生产的部分。
从本文公开的本公开的说明书和实践的考虑中,本公开的其它实施方案、使用和优点将对本领域技术人员是明显的。说明书和附图应被认为是仅仅是示例性的,且本公开的范围相应地被规定为仅由下面的权利要求及其等效形式限制。
Claims (18)
1.在包括实现多个虚拟机的一个或多个处理器的***中,一种处理方法包括:
使用第一搜索关键字和第二搜索关键字来执行转换后备缓冲区查找,所述第一搜索关键字代表操作***的第一标识符,所述操作***与所述多个虚拟机中的相应虚拟机联合而被执行,所述第一搜索关键字具有比所述第一标识符少的位,并且所述第二搜索关键字代表由所述操作***管理的虚拟地址空间的第二标识符,所述第二搜索关键字具有比所述第二标识符少的位。
2.如权利要求1所述的处理方法,还包括:
基于所述第一标识符来访问第一表,所述第一表包括多个条目,每个条目与相应的进程相关并配置成存储由虚拟机执行的操作***的标识符;以及
基于存储所述第一标识符的所述第一表的选定条目的第一进程来确定所述第一搜索关键字。
3.如权利要求2所述的处理方法,还包括:
基于所述第一进程来确定第二表的多个索引的选定索引,并基于所述第二标识符来访问所述选定索引,所述第二表的每个条目具有相应的进程并配置成存储由相应的操作***管理的虚拟地址空间的标识符;以及
基于存储第二标识符的所述选定索引的选定条目的第二进程来确定所述第二搜索关键字。
4.如权利要求3所述的处理方法,其中所述第一搜索关键字由所述第一进程确定,而所述第二搜索关键字由所述第二进程确定。
5.如权利要求3所述的处理方法,还包括:
将所述第一标识符存储到所述第一表的所述选定条目;以及
刷新所述第二表的所述选定索引的条目,并将所述第二标识符存储到所述选定索引的所述选定条目。
6.如权利要求1所述的处理方法,其中执行所述转换后备缓冲区查找包括:
访问转换后备缓冲区以识别具有所述第一搜索关键字和具有所述第二标识符或组全局位中的至少一个的转换后备缓冲区的选定条目;以及
基于存储在所述转换后备缓冲区的所述选定条目中的页编号来产生物理地址。
7.在包括实现多个虚拟机的一个或多个处理器的***中,一种处理***包括:
装置,用于使用第一搜索关键字和第二搜索关键字来执行转换后备缓冲区查找,所述第一搜索关键字代表操作***的第一标识符,所述操作***与所述多个虚拟机中的相应虚拟机联合而被执行,所述第一搜索关键字具有比所述第一标识符少的位,并且所述第二搜索关键字代表由所述操作***管理的虚拟地址空间的第二标识符,所述第二搜索关键字具有比所述第二标识符少的位。
8.在包括实现多个虚拟机的一个或多个处理器的***中,一种处理方法包括:
确定与所述多个虚拟机中的选定虚拟机联合而被执行的操作***的第一标识符,并确定由所述操作***管理的虚拟地址空间的第二标识符;
基于所述第一标识符来访问第一表,所述第一表包括多个条目,每个条目具有相应的进程并配置成存储与所述***的相应虚拟机联合的操作***的标识符;
基于存储所述第一标识符的所述第一表的选定条目的第一进程来确定第一搜索关键字;
基于所述第一进程来确定第二表的多个索引的选定索引,并基于所述第二标识符来访问所述选定索引,所述第二表的每个条目具有相应的进程并配置成存储由相应的虚拟机的操作***管理的虚拟地址空间的标识符;以及
基于存储所述第二标识符的所述选定索引的选定条目的第二进程来确定第二搜索关键字。
9.如权利要求8所述的处理方法,还包括:
使用所述第一搜索关键字和所述第二搜索关键字来执行转换后备缓冲区查找,以确定页偏移;以及
基于所述页偏移和所述虚拟地址来产生物理地址。
10.如权利要求9所述的处理方法,其中执行转换后备缓冲区查找包括:
访问所述转换后备缓冲区以识别具有所述第一搜索关键字和具有所述第二标识符或组全局位中的至少一个的转换后备缓冲区的选定条目。
11.如权利要求8所述的处理方法,其中所述第一搜索关键字具有比所述第一标识符少的位,而所述第二搜索关键字具有比所述第二标识符少的位。
12.在包括实现多个虚拟机的一个或多个处理器的***中,一种处理***包括:
装置,用于确定与所述多个虚拟机中的选定虚拟机联合而被执行的操作***的第一标识符,并确定由所述操作***管理的虚拟地址空间的第二标识符;
装置,用于基于所述第一标识符来访问第一表,所述第一表包括多个条目,每个条目具有相应的进程并配置成存储与所述***的相应虚拟机联合的操作***的标识符;
装置,用于基于存储所述第一标识符的所述第一表的选定条目的第一进程来确定第一搜索关键字;
装置,用于基于所述第一进程来确定第二表的多个索引的选定索引,并基于所述第二标识符来访问所述选定索引,所述第二表的每个条目具有相应的进程并配置成存储由相应的虚拟机的操作***管理的虚拟地址空间的标识符;以及
装置,用于基于存储所述第二标识符的所述选定索引的选定条目的第二进程来确定第二搜索关键字。
13.一种处理***,包括:
转换后备缓冲区;以及
硬件控制器,其使用第一搜索关键字和第二搜索关键字来执行转换后备缓冲区查找,所述第一搜索关键字代表操作***的第一标识符,所述操作***与用所述处理***实现的多个虚拟机中的虚拟机联合而被执行,所述第一搜索关键字具有比所述第一标识符少的位,并且所述第二搜索关键字代表由所述操作***管理的虚拟地址空间的第二标识,所述第二搜索关键字具有比所述第二标识符少的位。
14.如权利要求13所述的处理***,还包括:
包括多个条目的第一表,每个条目具有相应的进程并配置成存储由相应的虚拟机执行的操作***的标识符;以及
其中所述硬件控制器基于存储所述第一标识符的所述第一表的选定条目的第一进程来确定所述第一搜索关键字。
15.如权利要求14所述的处理***,还包括:
包括多个索引的第二表,每个索引与所述第一表的相应条目相关,且每个索引包括多个条目,所述第二表的每个条目具有相应的进程并配置成存储由相应的虚拟机的操作***管理的虚拟地址空间的标识符;以及
其中所述硬件控制器基于所述第一进程来确定所述多个索引中的选定索引并且基于存储所述第二标识符的所述选定索引的选定条目的第二进程来确定所述第二搜索关键字。
16.如权利要求15所述的处理***,其中所述第一搜索关键字是所述第一进程,而所述第二搜索关键字是所述第二进程。
17.如权利要求15所述的处理***,其中所述硬件控制器还:
将所述第一标识符存储到所述第一表的所述选定条目;
刷新所述选定索引的条目;以及
将所述第二标识符存储到所述选定索引的所述选定条目。
18.如权利要求13所述的处理***,其中所述硬件控制器通过访问转换后备缓冲区以识别具有所述第一搜索关键字和具有所述第二标识符或组全局位中的至少一个的转换后备缓冲区的选定条目来执行所述转换后备缓冲区查找,且所述硬件控制器还基于存储在所述转换后备缓冲区的所述选定条目中的页编号来产生物理地址。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/724,912 US8386749B2 (en) | 2010-03-16 | 2010-03-16 | Address mapping in virtualized processing system |
US12/724,912 | 2010-03-16 | ||
PCT/US2011/028636 WO2011116070A1 (en) | 2010-03-16 | 2011-03-16 | Address mapping in virtualized processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102792286A CN102792286A (zh) | 2012-11-21 |
CN102792286B true CN102792286B (zh) | 2016-05-11 |
Family
ID=44260789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180012866.9A Active CN102792286B (zh) | 2010-03-16 | 2011-03-16 | 虚拟化处理***中的地址映射 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8386749B2 (zh) |
EP (1) | EP2548124B1 (zh) |
JP (1) | JP5680179B2 (zh) |
KR (1) | KR101746734B1 (zh) |
CN (1) | CN102792286B (zh) |
WO (1) | WO2011116070A1 (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8839275B1 (en) | 2011-06-06 | 2014-09-16 | Proximal Data, Inc. | Method for intercepting input/output requests and responses |
KR20130050156A (ko) * | 2011-11-07 | 2013-05-15 | 한국전자통신연구원 | 가상 주소 공간 전환 장치 |
WO2013091185A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Gpu accelerated address translation for graphics virtualization |
CN102662869B (zh) * | 2012-04-01 | 2015-08-26 | 龙芯中科技术有限公司 | 虚拟机中的内存访问方法和装置及查找器 |
US9442859B1 (en) | 2012-06-17 | 2016-09-13 | Samsung Electronics Co., Ltd. | Method for asynchronous population of data caches used with mass storage devices |
US9104552B1 (en) | 2012-06-23 | 2015-08-11 | Samsung Electronics Co., Ltd. | Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices |
US8504757B1 (en) | 2012-09-16 | 2013-08-06 | Proximal Data, Inc. | Method for translating virtual storage device addresses to physical storage device addresses in a proprietary virtualization hypervisor |
US10037228B2 (en) * | 2012-10-25 | 2018-07-31 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10169091B2 (en) | 2012-10-25 | 2019-01-01 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US10310973B2 (en) | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US9075789B2 (en) | 2012-12-11 | 2015-07-07 | General Dynamics C4 Systems, Inc. | Methods and apparatus for interleaving priorities of a plurality of virtual processors |
US20140168227A1 (en) * | 2012-12-13 | 2014-06-19 | Nvidia Corporation | System and method for versioning buffer states and graphics processing unit incorporating the same |
US9459877B2 (en) | 2012-12-21 | 2016-10-04 | Advanced Micro Devices, Inc. | Nested speculative regions for a synchronization facility |
US9727345B2 (en) | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
CN104239238B (zh) * | 2013-06-21 | 2018-01-19 | 格芯公司 | 用于管理转换旁视缓冲的方法和装置 |
US9208103B2 (en) * | 2013-09-26 | 2015-12-08 | Cavium, Inc. | Translation bypass in multi-stage address translation |
KR102168169B1 (ko) | 2014-01-07 | 2020-10-20 | 삼성전자주식회사 | 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템 |
CN103778018B (zh) * | 2014-01-16 | 2018-05-04 | 深圳艾迪宝智能***有限公司 | 一种用于pcie虚拟化管理的方法 |
US9075945B1 (en) * | 2014-06-27 | 2015-07-07 | Google Inc. | Method for implementing efficient entropy decoder by using high level synthesis |
US10089238B2 (en) | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
US9612970B2 (en) | 2014-07-17 | 2017-04-04 | Qualcomm Incorporated | Method and apparatus for flexible cache partitioning by sets and ways into component caches |
EP2997478B1 (en) * | 2014-07-21 | 2019-03-13 | VIA Alliance Semiconductor Co., Ltd. | Efficient address translation caching in processor that supports large number of different address spaces |
US10180908B2 (en) | 2015-05-13 | 2019-01-15 | Qualcomm Incorporated | Method and apparatus for virtualized control of a shared system cache |
US10007435B2 (en) | 2015-05-21 | 2018-06-26 | Micron Technology, Inc. | Translation lookaside buffer in memory |
KR102473665B1 (ko) | 2015-07-28 | 2022-12-02 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 가상화 시스템 |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
US11379385B2 (en) | 2016-04-16 | 2022-07-05 | Vmware, Inc. | Techniques for protecting memory pages of a virtual computing instance |
US10592267B2 (en) | 2016-05-17 | 2020-03-17 | Vmware, Inc. | Tree structure for storing monitored memory page data |
US10430223B2 (en) * | 2016-05-17 | 2019-10-01 | Vmware, Inc. | Selective monitoring of writes to protected memory pages through page table switching |
CN107463425B (zh) * | 2016-06-03 | 2021-03-05 | 阿里巴巴集团控股有限公司 | 获取Java虚拟机的运行状态的方法和装置 |
CN107783913B (zh) | 2016-08-31 | 2021-12-03 | 华为技术有限公司 | 一种应用于计算机的资源访问方法和计算机 |
KR102511451B1 (ko) * | 2016-11-09 | 2023-03-17 | 삼성전자주식회사 | 리치 실행 환경에서 보안 어플리케이션을 안전하게 실행하는 컴퓨팅 시스템 |
US11106596B2 (en) * | 2016-12-23 | 2021-08-31 | Advanced Micro Devices, Inc. | Configurable skewed associativity in a translation lookaside buffer |
KR102439466B1 (ko) * | 2017-03-27 | 2022-09-02 | 엘지전자 주식회사 | 단말기 및 그 제어 방법 |
CN108664523B (zh) * | 2017-03-31 | 2021-08-13 | 华为技术有限公司 | 一种虚拟磁盘文件格式转换方法和装置 |
US10754790B2 (en) * | 2018-04-26 | 2020-08-25 | Qualcomm Incorporated | Translation of virtual addresses to physical addresses using translation lookaside buffer information |
US11113422B2 (en) | 2018-08-03 | 2021-09-07 | Micron Technology, Inc. | Data protection in computer processors |
US20200073822A1 (en) * | 2018-08-30 | 2020-03-05 | Micron Technology, Inc. | Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space |
US11074198B2 (en) * | 2018-09-18 | 2021-07-27 | Micron Technology, Inc. | Key management in computer processors |
US10761996B2 (en) | 2018-09-28 | 2020-09-01 | Intel Corporation | Apparatus and method for secure memory access using trust domains |
US10691592B2 (en) * | 2018-10-30 | 2020-06-23 | Micron Technology, Inc. | Error-checking in namespaces on storage devices using a namespace table and metadata |
US10846239B2 (en) * | 2018-11-29 | 2020-11-24 | Marvell Asia Pte, Ltd. | Managing translation lookaside buffer entries based on associativity and page size |
WO2020154223A1 (en) | 2019-01-21 | 2020-07-30 | John Rankin | Systems and methods for processing network traffic using dynamic memory |
WO2020214757A1 (en) * | 2019-04-17 | 2020-10-22 | John Rankin | Virtual memory pool within a network which is accessible from multiple platforms |
US11372773B2 (en) | 2019-05-28 | 2022-06-28 | Rankin Labs, Llc | Supporting a virtual memory area at a remote computing machine |
US11729184B2 (en) | 2019-05-28 | 2023-08-15 | Rankin Labs, Llc | Detecting covertly stored payloads of data within a network |
US11055166B2 (en) | 2019-05-28 | 2021-07-06 | Rankin Labs, Llc | Covertly storing a payload of data within a network |
US11516048B2 (en) | 2019-12-18 | 2022-11-29 | Rankin Labs, Llc | Distribution of data over a network with interconnected rings |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129071A (en) * | 1988-04-06 | 1992-07-07 | Hitachi, Ltd. | Address translation apparatus in virtual machine system using a space identifier field for discriminating datoff (dynamic address translation off) virtual machines |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6057449A (ja) * | 1983-09-09 | 1985-04-03 | Hitachi Ltd | 仮想計算機システムのアドレス変換方式 |
US20040117587A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Hardware managed virtual-to-physical address translation mechanism |
JP2009146344A (ja) * | 2007-12-18 | 2009-07-02 | Hitachi Ltd | 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム |
-
2010
- 2010-03-16 US US12/724,912 patent/US8386749B2/en active Active
-
2011
- 2011-03-16 CN CN201180012866.9A patent/CN102792286B/zh active Active
- 2011-03-16 JP JP2013500172A patent/JP5680179B2/ja active Active
- 2011-03-16 WO PCT/US2011/028636 patent/WO2011116070A1/en active Application Filing
- 2011-03-16 KR KR1020127020208A patent/KR101746734B1/ko active IP Right Grant
- 2011-03-16 EP EP11712094.9A patent/EP2548124B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129071A (en) * | 1988-04-06 | 1992-07-07 | Hitachi, Ltd. | Address translation apparatus in virtual machine system using a space identifier field for discriminating datoff (dynamic address translation off) virtual machines |
CN101667958A (zh) * | 2008-09-01 | 2010-03-10 | 华为技术有限公司 | 选择哈希函数的方法、存储及查找路由表的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2011116070A1 (en) | 2011-09-22 |
JP2013522775A (ja) | 2013-06-13 |
EP2548124B1 (en) | 2020-02-12 |
JP5680179B2 (ja) | 2015-03-04 |
KR101746734B1 (ko) | 2017-06-13 |
US8386749B2 (en) | 2013-02-26 |
EP2548124A1 (en) | 2013-01-23 |
CN102792286A (zh) | 2012-11-21 |
US20110231630A1 (en) | 2011-09-22 |
KR20130048191A (ko) | 2013-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102792286B (zh) | 虚拟化处理***中的地址映射 | |
CN102473139B (zh) | 包括用于i/o和计算卸载的多层次地址转换的i/o存储器管理单元 | |
US9842055B2 (en) | Address translation cache that supports simultaneous invalidation of common context entries | |
CN105760312B (zh) | 用于实现微页表的装置、方法和*** | |
CN104346294B (zh) | 基于多级缓存的数据读/写方法、装置和计算机*** | |
CN104516830B (zh) | 多阶段地址转换中的转换旁路 | |
KR101729503B1 (ko) | 계층 변환 테이블 제어 | |
CN111552654B (zh) | 对页表遍历的冗余进行检测的处理器 | |
CN105814548B (zh) | 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器*** | |
US11422944B2 (en) | Address translation technologies | |
KR20160124792A (ko) | 기억된 어드레스 변환의 무효화 | |
US20090187731A1 (en) | Method for Address Translation in Virtual Machines | |
US20180101480A1 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
JP2009512943A (ja) | 多階層の変換索引緩衝機構(TLBs)フィールドの更新 | |
TW201003396A (en) | Microprocessor, method and computer program product that perform speculative tablewalks | |
CN108463810A (zh) | 存储器地址变换管理 | |
WO2023064609A1 (en) | Translation tagging for address translation caching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |