CN105980994A - 已存地址转换的无效 - Google Patents
已存地址转换的无效 Download PDFInfo
- Publication number
- CN105980994A CN105980994A CN201580008605.8A CN201580008605A CN105980994A CN 105980994 A CN105980994 A CN 105980994A CN 201580008605 A CN201580008605 A CN 201580008605A CN 105980994 A CN105980994 A CN 105980994A
- Authority
- CN
- China
- Prior art keywords
- identifier
- address
- data processing
- address conversion
- circuit
- 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
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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
- 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/109—Address translation 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]
- 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]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
- 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
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据处理设备和一种处理数据的方法被公开,其中,在第一寻址***中使用的第一地址和在第二寻址***使用的第二地址间的地址转换被本地保存。每个已存地址转换都与对应的标识符一起保存。为响应对被选择的已存地址转换执行无效处理的无效命令,被选择的已存地址转换被无效,其中被选择的已存地址转换在无效命令中被指定的第一地址和指定标识符标识。无效过程被标识符分组信息进一步配置,其中的标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且无效过程可应用于与指定的第一地址匹配并且与指定标识符所属的标识符分组中的任何标识符匹配的所有已存地址转换。
Description
技术领域
本发明涉及数据处理领域,更具体地,本发明涉及在地址转换电路中使已存储地址转换无效的方法。
背景技术
在对存储于存储器中的数据值执行数据处理操作的数据处理设备中,提供地址转换电路是公知的,地址转换电路被配置为将第一寻址***的地址转变成第二寻址***的地址。例如,此种情形,其中:数据处理设备的数据处理电路(比如CPU)被配置为使用虚拟地址执行数据处理操作,同时,存储在存储器中的数据值被使用物理地址的存储器引用。因此,在此例中地址转换电路被配置为将虚拟地址转变为物理地址。考虑到一些地址转换可能会被重复执行,以下操作也是公知的:将一组地址转换缓存在与数据处理电路密切关联地提供的存储设备中,以用于辅助地址转换过程的执行,尤其用于避免与从存储器中检索地址转换定义相关的延迟。这种地址转换电路例如由转换后备缓冲器(TLB)提供。
由于特定的地址转换与存储器的特定部分相关联,因此特定的地址转换一般具有与存储器的特定部分关联的经定义的许可,使得对应的地址转换仅可被提供给被允许向指定的存储器地址做出所请求类型的访问的请求者,地址转换例如可以在上下文切换之后变成无效也是公知。在此状况下,处理这种状况的一种简单且粗暴的方法是刷新本地存储(缓存)的所有被存储的地址转换,使得任何在此之后被请求的地址转换必须要参照明确的参考源(比如存储在存储器中的页表)来确定,从而确保存储器访问许可被正确的遵守。然而,由于整个本地存储内容都被删除且因此必须在拥有本地存储的全部优势能被再次实现之前重新被写入,这种方法导致了本地地址转换存储设备(比如TLB)的相对低效使用。
因此,配置这种地址转换电路以对无效命令进行响应也是公知的,该无效命令指定特定的存储器地址,并且将使得数据处理设备中的任何地址转换电路对与该地址对应的已存地址转换进行无效。此外,为了允许数据处理电路在上下文之间高效地切换,或者例如托管多个虚拟机,将标识符(比如地址空间标识符和/或虚拟机标识符)与每个本地存储的地址转换相关联地存储也是公知的,使得任何给定的地址转换仅可用于提供匹配标识符的请求者。相应地,这种数据处理设备中的无效命令也具有对应的相关联的标识符,使得每个进程和/或虚拟机对自身的已存地址转换进行控制,而不对其他进程/虚拟机的已存地址转换进行控制。
附图说明
仅通过示例的方式,本发明将参考如附图中所示出的其实施例被进一步描述,其中:
图1示意性地示出一个实施例中的数据处理装置;
图2示意性地示出一个实施例中的TLB无效命令的广播;
图3示意性地示出一个实施例中从被CPU和GPU使用的一组客户机物理地址到被存储器使用的物理内存地址的映射;
图4A示出一个实施例中地址转换电路的示例内容;
图4B示出关于存储在图4A的地址转换电路中的无效通配符信息的定义的更多详细信息;
图5A-C示出一个实施例中通配符查找信息的使用;
图6示意性地示出一个实施例中由设备执行的一系列步骤;
图7A-C示意性地示出三种不同的MMU配置,这三种配置显示可以提供无效通配符信息的三种不同方式;
图8示意性地示出一个实施例中的数据处理电路,其中管理程序被配置为将无效通配符信息添加到虚拟机发出的无效命令;
图9示意性地示出在一个实施例中的地址转换电路;
图10示意性地示出一个实施例中可能采用的一系列步骤。
具体实施方式
概览
从第一方面来看,本发明提供一种用于数据处理设备,包括:数据处理电路,该数据处理电路被配置用来对保存在存储器中的数据值执行数据处理操作,其中,每个数据处理操作具有与之相关联的标识符;以及
地址转换电路,该地址转换电路被配置用来保存第一地址和第二地址之间的地址转换,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存,
其中,所述地址转换电路被配置用来响应对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效的无效命令,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识,
并且所述地址转换电路被进一步配置用来执行由标识符分组信息进一步配置的所述无效过程,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
本发明的发明者意识到,通过将地址转换电路配置为进一步依靠标识符分组信息来执行无效过程可以为地址转换电路中已存地址转换的无效提供有利的灵活性。该无效过程已经依靠无效命令中指定的地址和标识符。应注意的是,标识符可采用多种形式,例如,指定的标识符可以是诸如地址空间标识符(ASID)之类的进程标识符,在这种情况下,指定的标识符是ASID而指定的地址表示被ASID标识的进程正寻求访问的地址。又或者,标识符例如也可以与各种主机相对应,其中正在向指定地址寻求访问的进程正在主机上运行。这种情况的示例是:指定的标识符与由设备的数据处理电路托管的特定的虚拟机相对应,因而该虚拟机执行的进程正寻求对指定地址的访问。
设备的地址转换电路被配置为存储第一寻址***的地址和第二寻址***的地址间的地址转换。这种寻址***可有多种形式,例如,在适当的情况下从虚拟地址(比如CPU中使用的)、客户机物理地址(即中间物理地址)和物理地址(比如存储器中使用的)中选择。因此,地址转换电路可以被配置为提供虚拟地址和物理地址之间的地址转换,并且这种整体的地址转换本身可以由两阶段组成,即虚拟地址到客户机物理地址和客户机物理地址到物理地址。由于虚拟地址和物理地址都可与数据处理电路执行的数据处理操作对应,所以用在上述的第一寻址***中的第一地址在这些上述示例中可以与虚拟地址或者客户机物理地址相对应。第二地址是被存储器在第二寻址***中使用的那些地址(即,物理存储器地址)。
标识符分组信息的配设为本发明提供了灵活性。标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且地址转换电路被配置成响应无效命令,不仅使与无效命令本身给出的指定的第一地址和指定的标识符相匹配的已存地址转换无效,而且还进一步使与指定的第一地址匹配并且与所指定的标识符(无效命令查找中的)所属的标识符群组中的其他标识符匹配所属分组的任何其它已存地址转换无效。
因此以这种方式形成标识符群组具备其优势,即响应于单个无效命令时,不止一个保存在地址转换电路中的地址转换可以被无效。应注意的是,无效命令本身可以来自多个源,例如来自数据处理电路(作为从属地址转换电路的托管器件,分别与TLB和CPU一样)或者无效命令可以在地址转换电路内部被生成(即作为一种内部整理动作)。
标识符群组因此例如可以与一组地址空间标识符(比如ASID)相对应,或者,作为另一示例,可以与一组虚拟机标识符相对应。将地址转换电路配置为对与无效命令中指定的第一地址匹配并且与标识符群组中的任一标识符匹配的所有已存的地址转换执行无效过程意味着任何特定的标识符的始发源(originator)(比如是特定进程或者虚拟机)会引起针对特定地址(始发源具有对该地址的合法访问)的所有已存地址转换针对该标识符所属群组被无效。因此本发明介绍了特定标识符之间的关联,并且还有这些标识符的始发源(比如进程或虚拟机)之间的关联,其中,这些始发源之间的关联允许这些始发源相互以如下详细描述的有利方式相关联。
另外,地址转换电路的这种配置可以使多个已存地址转换被快速无效。这如与其他替代物相比较,比如,在地址转换被保存在内存管理单元(MMU)中的TLB的情况下,多个地址转换的无效要通过管理程序被与MMU通信的软件实现,其中管理程序负责维持对所有运行的虚拟机的总体控制,这种方法较慢。
如上所述,标识符可以采用多种形式,但在一个实施例中,数据处理电路被配置为托管用来执行数据处理操作的多个虚拟机,并且由地址转换电路与每个地址转换关联地保存的对应的标识符是虚拟机标识符。因此,在这个实施例中,标识符分组信息将不止一个虚拟机标识符关联在一起,使得无效处理应用于针对给定的第一地址以及相关的虚拟机标识符群组中的任一标识符的所有已存的地址转换。
标识符分组信息可以采用不同的方式被提供,每种方式与不同的优势相关联。例如,在一些实施例中,地址转换电路被配置为与每个已存地址转换相关联地存储标识符分组信息。这种方式可以使特定的标识符群组定义与每个已存地址转换直接关联,从而允许在配置这些关联时特定的灵活性(在逐条目的基础上)。
标识符分组信息本身可以采用各种形式,但是在一些实施例中,标识符分组信息指定无效命令中的指定的标识符的一部分,该部分在为无效过程匹配已存地址转换时被忽略。因此通过忽略指定标识符的一部分,通配符类型匹配过程被提供,使得存储在地址转换电路中的不止一个标识符可以与无效命令中的指定标识符匹配。这种布置进一步具有以下优势,即标识要被忽略的指定标识符的一部分只需要非常有限的信息量(比如标识要被忽略的指定标识符的非常有限数量的位),因此这种标识符分组信息可以被提供而不会有显著的负担,尤其是在标识符分组信息与每个已存地址转换相关联地保存的情况下(因此只需要地址转换电路的一小部分额外空间)。应该注意的是,在与已存地址转换匹配时指定指定标识符的要忽略的一部分可能在逻辑上和在与接收到的指定标识符匹配时指定每个已存标识符的要忽略的一部分是等效的,因此在这里每一个这种等效的定义都要被考虑。
标识符分组信息可以采取多种方式来指定指定标识符的要忽略的一部分,但在一些实施例中,标识符分组信息指定指定标识符的该部分是最高有效部分或者最低有效部分。因此,标识符分组信息例如可以指定要忽略的指定标识符的若干最高有效位或者相反地,可以指定要忽略的指定标识符的若干最低有效位。每种方式都有具体的优势,比如,忽略指定标识符最低有效部分使得标识符群组在标识符的编号方案中连续,这有助于它们的逻辑关系,但是在其他状况下,可能优选忽略指定标识符最高有效部分,从而关联在一起作为群组的标识符在用于标识符的编号***内隔开并且标识符的“镜像”群组可以得到支持。
在一些实施例中,标识符分组信息可配置成指定无广播标记,因而如果无效命令是作为广播无效命令被接收,则响应于无效命令,不对被标记有无广播标记的已存地址转换执行无效处理的无效过程。相应地,这种配置方式提供了有利的另一个特征,这种特征可以被以下布置支持,即特定的已存地址转换可以被“保护”以免受由广播无效命令导致的无效,比如由CPU发出并被具有自己的MMU/TLB的***器件接收的分布式虚拟内存无效广播。在这种情况下,***设备一般将配备有额外的接口,CPU可通过该接口对***设备进行编程,并且更一般地为了与***器件交互,这个额外接口可以用来使TLB中的条目无效。
相应的,在这种特定的配置下,标识符分组信息可用来标识地址转换电路中特定的已存地址转换应该被保护以免于地址转换电路响应于无效命令而寻求执行的广播无效过程。这为本发明提出的这种新配置提供了另一个层面的灵活性,同时,一般地,标识符分组信息被用于响应于特定的无效命令允许更多的地址转换被无效,这种特定的配置允许指定地址转换免于这种扩展的由广播无效命令触发无效过程。
然而,标识符分组信息可能不会与每个已存地址转换直接相关联地被保存,比如在一些实施例中,装置被配置为存储对地址转换电路可用的标识符分组信息,以应用于由地址转换电路执行的所有的地址无效处理。相应的,这种标识符分组信息可以以一种地址转电路一般可获取的方式(即它可以在地址转换电路本身内或者更一般地在数据处理设备内)被集中保存,从而对于由地址转换电路执行的任何无效处理都可参照这个一般的标识符分组信息。这降低了与保存这种标识符分组信息相关的存储空间。
在其他一些实施例中,地址转换电路被配置成识别无效命令中的标识符分组信息。因此,无效命令本身可以扩展为包含标识符分组信息,使得这种标识符分组信息在逐无效命令的基础上被提供。这种方式也节省地址转换电路中的存储空间并且进一步向无效命令的始发源提供定义如何为每一无效命令定义标识符分组信息的灵活性。
在一些这种实施例中,数据处理电路被配置为在两种数据处理模式中之一中操作,其中在第一数据处理模式中,数据处理电路被配置为发出没有标识符分组信息的无效命令,并且设备被配置为将标识符分组信息添加到无效命令中,而在第二数据处理模式中,数据处理电路被配置成发出无效命令并且由自己将标识符分组信息添加到无效命令中。
这两种数据处理模式可以采取多种形式,但可能尤其对应数据处理设备中不同权限级别的操作。照此,第一数据处理模式与一个较低的权限级别对应,此时无效命令由始发源(比如进程或者虚拟机)发出,该始发源没有足够的权限去定义标识符分组信息因而无效命令中标识符分组信息的添加由设备的其他部分负责(比如设备中其他有足够权限做这件事的部分)。例如,在虚拟机实施例的上下文中,发出无效命令的虚拟机没有足够的权限定义标识符分组信息,该标识符分组信息可以由有足够权限的管理程序添加。换言之,在此例中管理程序在第二数据处理模式中操作并且在发出无效命令时有足够权限自己向无效命令中添加标识符分组信息。
其中所述数据处理电路包括至少两个数据处理器件,其中针对每个标识符群组,所述地址转换电路被配置用于向所述至少两个数据处理器件中的第一数据处理器件提供针对该标识符群组的首标识符的地址转换,并向所述至少两个数据处理器件中的第二数据处理器件提供针对该群组的任何标识符的地址转换。
相应的,通过标识符分组信息将不止一个标识符关联在一起作为标识符群组可以为了有益于特定的(第二)数据处理器件被提供,而不为了有益于另一(第一)数据处理器件被提供。这种方法也提供了一种可以被数据处理设备中不同权限级别支持的机制,其中,只有第二数据处理器件可被提供标识符群组中所有标识符对应的地址转换,而第一数据处理器件对标识符群组中的特定的标识符与其他标识符之间关联的不可见。因此重要的是,这意味着第二数据处理器件可以与第一数据处理器件有效地共享首标识符,同时还可访问指定分组中第一数据处理器件无法访问的其他标识符。这例如可以由以下布置实施,在该布置中,只有第二数据处理器件可以发出包含标识符群组中全部标识符的无效命令,而第一数据处理器件被限制只能发送包含与之关联的首标识符的无效命令。
在一些实施例中,地址转换电路被配置成执行查找过程来确定是否已保存针对接收到的第一地址和接收到的标识符的地址转换,并且地址转换电路被配置成与每个已存地址转换相关联地保存查找匹配修饰符,并且其中,当查找匹配修饰符有第一值时,查找过程被配置为仅在接收到的标识符与已存标识符完全匹配时寻找的地址转换,当查找匹配修饰符有第二值时,查找过程被配置为在接收到的标识符与已存标识符所属的标识符群组中的任何标识符匹配时寻找地址转换,所述标识符群组由标识符分组信息针对已存标识符定义。
相应的,用来将无效过程扩展到标识符群组中不止一个标识符的标识符分组信息也可以用在由地址转换电路执行的查找过程中。因此这意味着在地址转换电路中保存的单个地址转换可以被用来响应与不止一个标识符(这些标识符来自同一群组)关联的查找请求,从而有利地节省了地址转换电路中存储设备的空间,因为指定的地址转换在地址转换电路中不需要针对群组内每一个单独的标识符被保存。查找匹配修饰符使得该特征能够针对给定的已存地址转换选择性地被启用或禁用。
在一些实施例中,地址转换电路被配置成:若查找过程的结果是没有找到地址转换,则发起检索过程来从存储器获取地址转换,并且,如果查找匹配修饰符有第一值,而且检索过程表明查找过程的结果没有找到地址转换是因为接收到的标识符不匹配,但接收到的标识符属于地址转换电路中匹配的已存标识符也属于的标识符群组,地址转换电路被进一步配置为将针对已存标识符的查找匹配修饰符修改成具有第二值。
相应地,在查找过程的结果是没有对应的地址转换(比如TLB“未命中”发生)的情况下,从存储器中获取地址转换的检索过程(比如页表遍历)可以被执行。如果接下来检索过程的结果是查找过程因为接收到的标识符不匹配未命中,但是在地址转换电路中有针对接收到的标识符所属的标识符群组中的另一个标识符保存的匹配的地址转换,则检索过程表明从存储器取回的地址转换以另一种方式与针对已存标识符保存的地址转换匹配,地址转换电路则将针对已存标识符的查找匹配修饰符修改为有第二值,使得不必在地址转换电路中针对发起查找过程的请求的地址转换建立新的条目,并且之后与该地址和接收到的标识符相关的进一步的地址转换请求可以使用之前存在的匹配条目。从而通过避免保存多个只有关联的标识符不同的地址转换的需求节省地址转换电路中的存储设备空间,其中的这些标识符属于标识符群组。
在一些实施例中,地址转换电路是传输后备缓冲器,被配置可以保存从第一寻址***的页表到第二寻址***的页表的地址转换。
在一些实施例中,数据处理电路包含至少两个数据处理器件,其中至少两个数据处理器件中的第一数据处理器件是通用中央处理单元,而至少两个数据处理器件中的第二数据处理器件是被配置成可以代表通用中央处理单元执行一些数据处理操作中的至少一些数据处理操作的从属器件。
从第二方面看,本发明提供了一种用于数据处理的方法,包括以下步骤:对保存在存储器中的数据值执行数据处理操作,其中,每个数据处理操作具有与之相关联的标识符;保存第一地址和第二地址之间的地址转换,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存;响应于无效命令对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识,执行由标识符分组信息进一步配置的所述无效过程,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
从第三方面来看,本发明提供了一种用于数据处理的设备,包括:用于对保存在存储器中的数据值执行数据处理操作的装置,其中,每个数据处理操作具有与之相关联的标识符;用于保存第一地址和第二地址之间的地址转换的装置,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存;用于响应于无效命令对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效的装置,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识,用于执行由标识符分组信息进一步配置的所述无效过程的装置,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
示例实施例
图1示意性地示出一个实施例中的数据处理设备10。数据处理设备包括CPU 11、CPU 12、GPU 13和加密引擎14,其对保存在存储器26中的数据值执行数据处理操作。这些数据处理单元通过***互联25访问存储器26中保存的数据值。事实上,多于如所示出的两个CPU 11和CPU 12(如它们之间的扩展点所示)的CPU可以被提供,但是为了清晰,图1只示出两个CPU。数据处理单元11-14中的每一者被配置为针对虚拟存储器地址执行数据处理操作,并且每个数据处理单元因此分别被提供参照保存在存储器26中的页表将相应的数据处理单元使用的虚拟存储器地址转换成被存储器26使用的物理存储器地址的存储器管理单元,(即,MMU 15和MMU 16对应CPU 11和CPU 12;输入输出MMU(IOMMU)17和IOMMU18对应GPU13及加密引擎14)。为了避免与从存储器26中检索页表相关的延迟,每个MMU被提供传输后备缓冲器(TLB)19-22,被配置来缓存一组最近被使用的地址转换。
数据处理设备10被配置为托管多个虚拟机,具体地这些虚拟机由CPU 11、CPU 12托管。如图1所示,特定的虚拟机可以与特定的CPU关联(例如,如所示的VM1与CPU 11,VM2与CPU 12),但是其他配置方式也有可能,比如多个CPU托管的一个虚拟机。CPU也可托管管理程序,在所示例子中管理程序被数据处理设备中的所有CPU托管,但这只能代表一种示例的配置方式,在其它示例中管理程序也可以被少于所提供的所有CPU的CPU托管。因此可知,CPU 11和CPU 12是通用的数据处理单元,而GPU 13和加密引擎14是代表CUP执行特定的数据处理任务的更专用的器件。例如,GPU 13可能用来执行特定的图形处理操作(比如视频编码和解码)而加密引擎可以执行数据的加密和解密操作。
一般来说,给定的TLB中的条目会被标记标识符VMID,该VMID可以标识与该TLB条目关联的虚拟机。这允许被数据处理设备托管的各种虚拟机的数据处理操作间的切换,并且还允许在无需刷新TLB的情况下被分配给这些虚拟机的页表间的切换。如果给定CPU希望使与其关联的TLB中的TLB条目无效,如图2所示,CPU 11可以广播TLB无效命令,该无效命令指定将被无效的页面的虚拟机标识符(VMID)、虚拟地址(VA)和地址空间标识符(ASID)。因此无效是特定于地址、ASID和VMID的,因此比如VMID 14中ASID 3的页面0x12000的无效不会使VMID 15中ASID 3的页面0x12000无效。
不是只有本地TLB 19中的这个TLB条目被无效,通过穿过***互联25的广播,***中的其他TLB(为简化图2只示出TLB 20与TLB 21)中的任何相关的TLB条目也会被无效,由此也反映了存储器***的分布式特性。应该注意的是,GPU 13也在图2中被示出为从CPU接收编程命令,这些编程指令与广播TLB无效命令相分离地被接收。因此这表示额外接口,CPU通过该额外接口给GPU烧写程序,这个额外接口然后可以被CPU用来使TLB中的条目无效。这种方式也可以在GPU TLB中的条目被标记为对广播无效命令“免疫”的情况下(更多细节接下来将参照图4B被描述)被使用。
图3示出了从客户机物理地址(中间物理地址)到物理存储器地址的转换的示意性概览,该转换针对CPU中的对特定的虚拟机标识符可见的地址空间和GPU中对应的虚拟机标识符和关联的虚拟机标识符(接下来会有详细的阐述)。图3的示出特别在如下所述的***的上下文中被理解:这种***中存在不同级别的权限并且相应地,存储器中保存的数据在***中需要被保护以免于被较低权限的器件访问。在图3所示示例中,GPU在***中是较高权限的器件,同时被CPU托管的虚拟机(具有标识符VMID4)在***中是一个较低权限的代理。也应该注意的是,图3暗示了客户机物理地址将由虚拟机地址(使用阶段1页表)的转换产生,虽然为了简便这一点没有直接示出。
当然在***中,管理程序也是一个较高权限的代理,并且用来作为对存储器中的被保护页面的中介访问。因此,管理程序可以接收来自虚拟机的用于将指定页面公开给GPU以执行与之相关的特定数据处理任务的请求。为了实现该操作,管理程序复制虚拟机的阶段2页表供GPU使用并且然后从虚拟机本身的阶段2页表中删除指定的页面。所以,这些页面然后可以被GPU访问(在它们的原始存储器地址)但不可以被始发虚拟机本身访问。虚拟机软件接下来可以通过指向这些被保护的页面内的缓冲区的指针对GPU进行编程,提交工作和执行除了GPU访问这些位置包含的数据之外的正常操作。
通常地,被分配给虚拟机的器件(比如GPU 13)可以共享阶段2的地址转换,使得器件和虚拟机看到相同的客户机物理地址空间。在这种情况下,当器件MMU共享了虚拟机的CPU阶段2页表时,MMU应该将相同的VMID与由页表创建的MMU的TLB条目关联。这意味着,来自CPU的分布式虚拟存储器(DVM)TLB无效命令将与器件MMU的TLB条目相匹配,这允许这些条目与许CPU本身的TLB中的条目同时被正确地无效。这点十分有利,因为与通过管理程序和器件MMU的软件通信相比,DVM广播TLB无效命令可以快许多。
但是,当较低权限的虚拟机控制被提供给GPU的被保护的缓冲区时,CPU的MMU和GPU的MMU必须使用不同的阶段2页表来允许GPU可以访问CPU可以访问的所有数据此外还能够访问被移除出CPU可见范围的被保护的缓冲区。
当虚拟机要求GPU同时处理两个不同数据块时将出现问题,其中一个数据块是如以上描述的被保护的(使用不同页表映射来保护缓冲区),另一个数据块是非保护的并且共享虚拟机的阶段2页表。与非保护缓冲区关联的数据处理将使虚拟机标识符(图3示例中的VMID 4)被分配给共享页表。然而,被保护的缓冲区不能与针对不同页表的相同的VMID相关联(允许访问被保护的缓冲区),因为这样做将引起一些MMU实现混淆来自两种不同的源的映射从而破坏保护。
相应地,为了确保这些必需的页表映射被正确的遵守,有必要通过不同的VMID来使这些被保护数据被访问。但是,根据现有的TLB无效技术,这需要以上提到的与额外的VMID相关联的条目的额外的手动软件无效,因为它不会与来自CPU的针对原始VMID的DVM广播TLB无效相匹配。这可能涉及管理程序陷阱(trap),降低了性能。
然而,本发明通过对MMU的修改来解决这个问题,这种修改允许单个DVM广播TLB无效被用来使与始发的(originating)虚拟机相匹配的VMID以及器件中的被分配给虚拟机的“次级”VMID(比如图3示例中的GPU)的条目无效,从而提高性能。
本发明提出的这种修改是“通配符”,它允许***管理程序分配与特定的始发虚拟机关联的相关VMID的区块。比如,“通配符”可以如图4A的示例中的配置中所示作为TLB条目的字段被保存。使用这些TLB条目的数据处理任务(即,在该TLB中针对指定的页面地址执行查找操作)将TLB条目与页面地址和VMID做精确的匹配,使得MMU可以加强对两种不同页表的保护。然而,传入的DVM无效命令可以使用通配符与TLB条目进行匹配,使得一个无效可以影响两个页表和不止一个VMID。另外应注意的是图4A中配置的TLB条目也可包含地址空间标识符ASID,并且所接收的无效命令可以被配置成特定于ASID或者针对要被忽略的ASID的值以达到无效的目的。
如图4A所示的TLB条目中的无效通配符字段以图4B中的方式被配置。因此,如可从图4B中看到的,无效通配符字段的高位指定该通配符应当应用于VMID值的(一个或多个)最高有效比特位(“顶部”)还是应用于VMID值的(一个或多个)最低有效比特位(“底部”)。无效通配符字段的低两位然后指定VMID值中应被忽略的位数。如图4B所示,当通配符值设置为“00”时,通配功能则被关闭,并且响应于无效命令需进行VMID值的精确匹配。分别指定通配数值为“10”和“01”可以使VMID值的一个或两个位被忽略。如果通配功能应用于VMID值的最低有效位,管理程序以连续配对的形式(比如图4A所示的VMID4和VMID5)分配关联的VMID,或者,如果通配符应用于VMID值最高有效位,则这使得管理程序能够分配分割成“镜像”分组的VMID空间。比如对于16位的VMID,虚拟机可以使用VMID 0x300并且它的保护的器件MMU数据处理流可以使用0x8300。还提供了通配符值为“11”的另一种配置方式,它可以使特定的TLB条目能够被保护而且免疫于广播无效命令。如以上所提,这例如可以用来“保护”***数据处理单元之一(图1的示例中的GPU 13或者加密引擎14)中的IOMMU中提供的TLB的特定内容,使得该特定内容只能被通过单独的接口从CPU接收的直接编程指令无效,而不响应广播无效命令。
因此这种配置方式允许管理程序为给定的虚拟机分配一组VMID,使得一个VMID可以被用于由虚拟机(直接来自CPU或者通过由虚拟机控制的器件)发起的“正常”事务处理,同时其他VMID则用于需要保护的相关的数据处理任务。通过这种方式被另外地设置的“被保护的”VMID的数目取决于被提供的通配符的大小而不同,但是在图4A和4B的示例中,可以看到一组四个VMID。参照图4A的TLB中所示出的示例条目,指定页面地址<A>和VMID4的传入DVM无效将使表中第一个条目无效,然而,指定页面地址<A>和VMID5的传入DVM无效也可以将其无效,这是由于与表的第一个条目关联的无效通配符字段指示VMID值的最低有效位应该被忽略,因此该无效命令与TLB表中的第一个条目匹配,无论无效命令指定的是VMID4还是VMID5。类似地,由于相同的无效通配符值(001),图4A所示TLB表的第三个条目也可以被指定页面地址<A>并且指定VMID4或VMID5的传入DVM无效命令无效。相反地,图4A所示TLB表的第二个条目只能被指定页面地址<B>和VMID5的DVM无效命令无效,因为无效通配符字段表明需要精确的匹配。
依据图4A和4B描述的实施例的变形现在被参照图5A到5C描述。通过比较图4A的示例TLB表的第一个和第三个条目可以看出,两个TLB条目为相同的页面地址被创建但具有不同的VMID,即第一和第三条目。本发明中,VMID标识符被分组,并且事实上存在只有一个TLB条目被需要的状况,因而对TLB容量的更有效运用可以被提供。图5A示出图4A所示TLB条目的简略版本,它只示出页面地址、VMID值的字段和通配符无效字段。在此变形中,TLB条目中额外的字节被添加,即“通配符查找”。当通配符查找值为零,则产生“正常”的完全匹配的TLB查找行为(即VMID值和页面地址被要求精确匹配)。相应地,在图5A的上半部分所示示例中,在TLB中对于传入地址<E>和VMID4的进行查找,这将不会在TLB中命中,因为VMID值不匹配。这会触发从存储器中的页表中检索所需要的转换页表遍历(walk)。因此可以确定,在该实施例中,被生成的条目与已经存在于TLB中的条目相同,而不是包含VMID4来代替VMID5,并且VMID4和VMID5属于被通配符无效字段定义的同一通配符分组。在这种情况下,通配符查找值被更新为1,这将放宽查找的VMID匹配操作。相应地,当对地址<E>和VMID4的进一步的查找被执行时,这也可以命中该条目。这种情况对应的地址空间视角在图5中被示意性地示出,这表明VMID4和VMID5都可以访问地址E。然而,应该注意的是,VMID5除此之外也可以访问地址F,而VMID4不可以访问。参考图5C,第一次对与VMID5关联的地址F进行查找操作会导致对于地址F和VMID5的所示TLB条目的生成,其中通配符无效值被设置为要求精确的匹配,因为这个地址严格地只属于VMID5并且与VMID4没有任何关联。相应地,如果之后的对地址F和VMID4的查找被执行,则不会对该条目进行任何更新(即,通配符查找值保持为零并且依据该条目的对地址F和VMID4的查找总是没结果)。
图6示意性地示出当广播无效查找被MMU接收时一个实施例中的方法所采用的一系列步骤。流程从步骤50处开始,在该处处理等待直到一个无效查找被接收。当这样的无效查找被接收,流程则进行到步骤51,在步骤51处确定通配符信息是否可用。换句话说,确定通配符信息是否可用于改变匹配VMID值(存储在TLB条目本身中作为全局定义值或者作为无效查找本身的一部分)的方式。如果不可以则流程进行到步骤52,在该步骤中产生TLB命中的结果需要VMID值的精确匹配。接下来在步骤53处,确定对于指定地址和VMID值的TLB命中是否确实已经发生。如果已经发生,则在步骤54处,TLB中被识别出的条目被无效。流程接下来则返回步骤50等待下一个无效查找被接收。然而,如果在步骤53中没有对指定地址和VMID值的TLB命中,则流程经过步骤55(该步骤中没有TLB无效被执行)前进到步骤50。
然而,如果在步骤51中确定通配符信息是可用的,则在步骤56处确定该通配符信息是否指定“00”,它表明事实上需要VMID的精确匹配,流程如上所描述的经由步骤52前进。然而,如果通配符信息不指定“00”,则在步骤57处确定通配符信息是否指定“11”,它表明针对该条目的广播TLB无效应该被忽略,流程经过步骤55前进并且没有任何TLB无效被执行。然而,如果通配符信息指定“01”或“10”,则流程经过步骤58前进,该步骤中,当确定TLB中是否发生匹配时,VMID值中指定的位被忽略(如图4B所定义的),流程继续进行到如上的步骤53。
图7A、7B和7C示意性地示出三种不同的MMU配置,这三种配置显示可以提供通配符信息的三种不同的方式。图7A所示的配置与参考图4A和图5A-5C所描述的相对应,其中,无效通配符信息被与每个TLB条目关联地单独保存。在本实施例中,MMU 100中的TLB 101的控制单元102标识什么时候无效命令已经被接收并且相应地控制地址匹配电路103,使得从TLB条目104检索的无效通配符信息应该被用来修改无效命令中接收到的VMID和保存在TLB条目中VMID的匹配。相反地,当在MMU 100中执行查找时,控制单元102控制地址匹配电路103来要求对接收到的VMID和保存在TLB条目104中的VMID的严格匹配。在图7B所示实施例中,MMU 110与图7A中的MMU 100配置方式非常相似,除了无效通配符信息并不与TLB 111中的TLB条目114中的每个单独的条目相关联地被保存,而是在全局可访问的注册表115中被定义用来供被MMU110接收的所有无效命令使用。相应地,在这个实施例中,当控制单元112标识无效命令已经被接收并且配置了地址匹配电路113来使用通配符信息时,地址匹配电路113从无效通配符注册表115接收该无效通配符信息,而不是与一个从TLB条目114读出的特定的TLB条目相关联地接收该无效通配符信息。应注意的是,虽然该全局可访问的无效通配符注册表115在图7B的实施例中被示出为是MMU 110的组成部分,但是它并不是必需的,比如无效通配符注册表115可以由数据处理设备提供在各种各样的其他位置,例如以使得它更一般地可被多个MMU访问。最后,图7C示意性地示出MMU 120,该MMU 120被配置成响应无效命令,该无效命令本身包含无效通配符信息作为其一部分。相应地,在该实施例中,TLB121的控制单元122被配置为标识无效命令已经被接收和从无效命令中获取无效通配符信息,以便相应地配置地址匹配电路123从而在确定TLB条目124中是否找到匹配条目时使用该无效通配符信息。
在这点上值得注意的是,如图7A-7C所示以及以上所描述的,确定匹配条目是否被找到(即TLB命中)的地址匹配是在VMID值的基础之上被执行的,但它也可以是在ASID值的基础之上被执行。事实上,也如上所提,在此明确描述的实施例的变形中,ASID值事实上也可以是被分组在一起的“标识符”,从而指定了ASID值的无效命令可以被本技术扩展为应用于具有不同ASID值的条目(但是其他方面相同)。
图8示意性地示出CPU 130,此CPU 130与具有关联的VMID值和通配符信息(比如图7C所示实施例中的MMU 120所接收的通配符信息)的TLB无效命令的产生相关。CPU 130托管虚拟机(VM)131和管理程序134。在该实施例中,虚拟机131了解应当与它产生的TLB无效命令关联的特定的地址空间标识符(ASID 132)和它意图无效的地址133,但是它本身并不向无效命令添加虚拟机标识符(VMID)或者通配符信息,因为该虚拟机是数据处理***中较低权限的部件,而这些信息的添加则留给有权限的管理程序134完成。管理程序持有虚拟机131不可访问的***注册表135中的VMID信息136和通配符信息137,并且当TLB无效命令被虚拟机131产生时,管理程序134被配置为“拦截”该无效命令并添加适当的VMID信息(来识别比如虚拟机131一样的始发源)和适当的通配符信息137。因此这种方式维持与VMID和通配符信息的配设相关联的较高级别的安全。
图9示意性地示出支持上文关于图5A-5C的实施例描述的功能的实施例中的TLB 140的配置。当TLB 140收到查找请求时,控制单元141被配置为开始对TLB 140中的TLB条目142进行查找。在这里,为了简便,仅直接映射的TLB示例被描述,但是本领域技术人员也熟悉组相联的TLB条目存储设备,其中,本技术可以同样很好地应用于该存储设备。然而,在该直接映射的实施例中,待处理的查找地址143被用来在TLB条目142中索引,然后被识别出的TLB条目被读出并暂时被保持在144处。然后,由控制单元141控制的条目匹配逻辑145确定被请求的查找(页面地址,VMID等)是否与读出的TLB条目144匹配。若匹配,此条目则简单的作为返回地址转换被返回。然而,如果要求的匹配没有被建立,则从存储器中的页表检索要求的地址转换的页表遍历过程146被触发。当页表遍历响应返回时,控制单元141控制条目匹配逻辑145去确定从页表遍历响应返回的条目是否确实与被读出的TLB条目144匹配,除了VMID值不同但仍然属于同一个VMID分组(即,在上述方式中依靠通配符信息关联的VMID值)。若是这种情况,以参考图5A所描述的方式,控制单元141被配置为更新在TLB条目142中与读出的TLB条目关联地保存的通配符查找值。然后被读出的TLB条目144作为返回的地址转换被返回。然而,如果页表遍历响应返回以其他方式不同的条目,则该条目替换在由待处理的查找地址143确定的索引处的TLB条目,并且这个从页表遍历响应返回的条目本身作为返回的地址转换被返回。
图10示意性地示出当查找被TLB接收时一个实施例的方法中采取的一系列步骤。流程从步骤150开始,该步骤本身循环直到查找被接收。然后流程前进到步骤151,步骤151中TLB中的查找被执行。接下来在步骤152处确定针对被识别的条目(或多个条目)的通配符查找标志(flag)是否已在TLB中被设置。如果已设置,流程通过步骤153前进,步骤153在为查找寻求匹配时将匹配电路配置为忽略VMID的指定位。接下来在步骤154处,由匹配电路确定是否已找到读出的TLB条目和被请求的查找之间的匹配。如果已找到,接下来在步骤155匹配的转换被返回并且流程返回至步骤150。
如果在步骤154中没有找到读出的TLB条目和被请求的查找的匹配,流程则前进到步骤156,在步骤156中,页表遍历过程被触发。然后,在步骤157处,当页表遍历响应被返回时确定其是否指示没有转换可用。若没有转换可用,则对应的“无转换”响应在步骤158处被返回并且流程返回至步骤150。如果对于被请求的查找存在转换,流程则前进至步骤159,在步骤159中确定页表遍历响应与读出的TLB条目的不同之处是否只是VMID值并且他们各自的VMID值是否与彼此相关联。如果不是,流程经过步骤160前进,在步骤160处由页表遍历响应生成的条目被用来创建新的TLB条目并且在步骤161处,它被作为请求的转换被返回,流程接下来返回至步骤150。然而,如果标识页表遍历响应与被识别的条目的不同之处只有VMID值并且VMID彼此相关联(即他们属于同一群组),接下来流程前进到步骤162,在步骤162中通配符查找标志针对对应的条目被设置,使得关于页表遍历响应的VMID值和被识别条目的VMID值中任一的VMID值的进一步的查找请求能够命中所保存的TLB条目。流程接下来经过步骤161前进,步骤161中这个条目作为地址转换被返回并且流程前进到步骤150。
总的来说,本技术提供一种数据处理设备和一种用于处理数据的方法,其中,在第一寻址***中使用的第一地址和在第二寻址***中使用的第二地址间的地址转换被本地保存。每一个已存地址转换都和相对应的标识符一起保存。响应于对被选择的已存地址转换执行无效处理的无效命令,被选择的已存地址转换被无效,其中被选择的已存地址转换在无效命令中被指定的第一地址和指定标识符确定。无效过程被标识符分组信息进一步配置,该标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且无效过程被应用于与指定的第一地址匹配并且与指定标识符所属的标识符群组中的任何标识符匹配的所有已存地址转换。
虽然这里已经描述了本发明特定的实施例,显然本发明不限于这些实施例,在本发明范围内可以做出许多修改和补充。比如,可以对接下来的独立权利要求的特征和从属权利要求的特征进行各种组合而不偏离本发明范围。
Claims (16)
1.一种用于数据处理的设备,包括:
数据处理电路,该数据处理电路被配置用来对保存在存储器中的数据值执行数据处理操作,其中,每个数据处理操作具有与之相关联的标识符;以及
地址转换电路,该地址转换电路被配置用来保存第一地址和第二地址之间的地址转换,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存,
其中,所述地址转换电路被配置用来响应对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效的无效命令,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识,
并且所述地址转换电路被进一步配置用来执行由标识符分组信息进一步配置的所述无效过程,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
2.如权利要求1所述的设备,其中所述数据处理电路被配置用来托管多个虚拟机来执行所述数据处理操作,并且由所述地址转换电路与每个地址转换关联地保存的所述相对应的标识符是虚拟机标识符。
3.如权利要求1或2所述的设备,其中所述地址转换电路被配置用来与每一个已存地址转换相关联地保存所述标识符分组信息。
4.如权利要求1至3中任一权利要求所述的设备,其中所述标识符分组信息指定在为所述无效过程匹配已存地址转换时所述无效命令中的所述指定标识符的要忽略的部分。
5.如权利要求4所述的设备,其中所述标识符分组信息指定所述指定标识符的所述部分是最高有效部分还是最低有效部分。
6.如权利要求3至5中任一权利要求所述的设备,其中所述标识符分组信息可配置用于指定无广播标记,使得如果所述无效命令作为广播无效命令被接收,响应于所述无效命令不针对被标记有所述无广播标记的已存地址转换执行所述无效过程。
7.如权利要求1至6中任一权利要求所述的设备,其中所述设备被配置用来保存应用于由所述地址转换电路执行的所有地址无效过程的可被所述地址转换电路访问的所述标识符分组信息。
8.如权利要求1至7中任一权利要求所述的设备,其中所述地址转换电路被配置用来在所述无效命令中标识所述标识符分组信息。
9.如权利要求8所述的设备,其中所述数据处理电路被配置用来在两种数据处理模式之一中操作,其中在第一数据处理模式中,所述数据处理电路被配置用于发出没有所述标识符分组信息的所述无效命令,并且所述设备被配置用于将所述标识符分组信息添加到所述无效命令中,并且其中在第二数据处理模式中,所述数据处理电路被配置用于发出所述无效命令并且由自己将所述标识符分组信息添加到所述无效命令中。
10.如权利要求1至9中任一权利要求所述的设备,其中所述数据处理电路包括至少两个数据处理器件,其中针对每个标识符群组,所述地址转换电路被配置用于向所述至少两个数据处理器件中的第一数据处理器件提供针对该标识符群组的首标识符的地址转换,并向所述至少两个数据处理器件中的第二数据处理器件提供针对该群组的任何标识符的地址转换。
11.如权利要求1至10中任一权利要求所述的设备,其中所述地址转换电路被配置成执行查找过程来确定是否保存有针对接收到的第一地址和接收到的标识符的地址转换,并且所述地址转换电路被配置成与每个已存地址转换相关联地保存查找匹配修饰符,其中,当所述查找匹配修饰符具有第一值时,所述查找过程被配置为仅在所述接收到的标识符与已存标识符完全匹配时查找所述地址转换,并且当所述查找匹配修饰符具有第二值时,所述查找过程被配置为在所述接收到的标识符与所述已存标识符所属的标识符群组中的任何标识符匹配时查找所述地址转换,其中所述标识符群组由标识符分组信息针对所述已存标识符定义。
12.如权利要求11所述的设备,其中所述地址转换电路被配置成:如果查找过程的结果是没有地址转换,则执行检索过程来从存储器获取所述地址转换,并且,如果所述查找匹配修饰符具有第一值,而且所述检索过程表明所述查找过程的结果没有地址转换是因为所述接收到的标识符不匹配,但所述接收到的标识符属于所述地址转换电路中匹配的已存标识符也属于的标识符群组,并且所述检索过程表明从存储器获取的所述地址转换以另一种方式与针对所述已存标识符保存的所述地址转换匹配,地址转换电路被进一步配置为将针对所述已存标识符的查找匹配修饰符修改成具有所述第二值。
13.如权利要求1至12中任一权利要求所述的设备,其中所述地址转换电路是传输后备缓冲器,该传输后备缓冲器被配置为保存从所述第一寻址***中的页表到所述第二寻址***中的页表的地址转换。
14.如权利要求1至13中任一权利要求所述的设备,其中所述数据处理电路包含至少两个数据处理器件,其中所述至少两个数据处理器件中的第一数据处理器件是通用中央处理单元,而所述至少两个数据处理器件中的第二数据处理器件是被配置成代表所述通用中央处理单元执行所述数据处理操作中的至少一些数据处理操作的从属器件。
15.一种用于数据处理的方法,包括以下步骤:
对保存在存储器中的数据值执行数据处理操作,其中,每个数据处理操作具有与之相关联的标识符;
保存第一地址和第二地址之间的地址转换,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存;
响应于无效命令对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识;以及
执行由标识符分组信息进一步配置的所述无效过程,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
16.一种用于数据处理的设备,包括:
用于对保存在存储器中的数据值执行数据处理操作的装置,其中,每个数据处理操作具有与之相关联的标识符;
用于保存第一地址和第二地址之间的地址转换的装置,其中所述第一地址用于与所述数据处理电路执行的所述数据处理操作对应的第一寻址***,所述第二地址用于由所述存储器使用的第二寻址***,其中每个已存地址转换与相对应的标识符一起保存;
用于响应于无效命令对被选择的已存地址转换执行无效过程以使所述被选择的已存地址转换无效的装置,其中所述被选择的已存地址转换在所述无效命令中由指定的第一地址和指定的标识符标识;以及
用于执行由标识符分组信息进一步配置的所述无效过程的装置,其中所述标识符分组信息将不止一个标识符关联在一起作为标识符群组,并且所述无效过程被应用于与所述指定的第一地址匹配并且与所述指定的标识符所属的所述标识符群组中的任何标识符匹配的所有已存地址转换。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/186,091 US9619387B2 (en) | 2014-02-21 | 2014-02-21 | Invalidating stored address translations |
US14/186,091 | 2014-02-21 | ||
PCT/GB2015/050282 WO2015124899A1 (en) | 2014-02-21 | 2015-02-03 | Invalidating stored address translations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105980994A true CN105980994A (zh) | 2016-09-28 |
CN105980994B CN105980994B (zh) | 2019-08-16 |
Family
ID=52484511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580008605.8A Active CN105980994B (zh) | 2014-02-21 | 2015-02-03 | 已存地址转换的无效 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9619387B2 (zh) |
EP (1) | EP3108372B1 (zh) |
JP (1) | JP6509241B2 (zh) |
KR (1) | KR102317332B1 (zh) |
CN (1) | CN105980994B (zh) |
IL (1) | IL246850B (zh) |
WO (1) | WO2015124899A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562514A (zh) * | 2017-08-03 | 2018-01-09 | 致象尔微电子科技(上海)有限公司 | 一种物理内存访问控制与隔离方法 |
CN110770709A (zh) * | 2017-06-28 | 2020-02-07 | Arm有限公司 | 地址转译数据无效化 |
CN110998549A (zh) * | 2017-07-31 | 2020-04-10 | Arm有限公司 | 地址转换缓存 |
CN111095227A (zh) * | 2017-09-19 | 2020-05-01 | 微软技术许可有限责任公司 | 管理程序存储器高速缓存失效 |
CN111338987A (zh) * | 2020-02-13 | 2020-06-26 | 江苏华创微***有限公司 | 快速无效组相联tlb的方法 |
WO2021053420A1 (en) * | 2019-09-17 | 2021-03-25 | International Business Machines Corporation | Identifying translation errors |
CN113841124A (zh) * | 2019-05-21 | 2021-12-24 | 国际商业机器公司 | 微处理器中的地址转换高速缓存无效 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9232959B2 (en) | 2007-01-02 | 2016-01-12 | Aquabeam, Llc | Multi fluid tissue resection methods and devices |
EP2259742B1 (en) | 2008-03-06 | 2020-01-01 | AquaBeam LLC | Tissue ablation and cautery with optical energy carried in fluid stream |
EP3351196A1 (en) | 2012-02-29 | 2018-07-25 | Procept Biorobotics Corporation | Automated image-guided tissue resection and treatment |
GB2529394A (en) * | 2014-08-14 | 2016-02-24 | Ibm | Multiprocessor computer system |
US9697137B2 (en) * | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US9898418B2 (en) * | 2015-05-21 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Processor including single invalidate page instruction |
GB2545170B (en) * | 2015-12-02 | 2020-01-08 | Imagination Tech Ltd | GPU virtualisation |
GB2579721B (en) * | 2015-12-02 | 2020-09-16 | Imagination Tech Ltd | GPU virtualisation |
US10042777B2 (en) * | 2016-03-30 | 2018-08-07 | Qualcomm Incorporated | Hardware-based translation lookaside buffer (TLB) invalidation |
US10386904B2 (en) * | 2016-03-31 | 2019-08-20 | Qualcomm Incorporated | Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks |
US9910799B2 (en) | 2016-04-04 | 2018-03-06 | Qualcomm Incorporated | Interconnect distributed virtual memory (DVM) message preemptive responding |
DK3255550T3 (da) * | 2016-06-08 | 2019-07-15 | Google Llc | TLB shootdowns til lave omkostninger |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10599569B2 (en) | 2016-06-23 | 2020-03-24 | International Business Machines Corporation | Maintaining consistency between address translations in a data processing system |
US10929308B2 (en) * | 2017-11-22 | 2021-02-23 | Arm Limited | Performing maintenance operations |
US10649907B2 (en) * | 2018-03-22 | 2020-05-12 | Arm Limited | Apparatus and method for handling page invalidate requests in an address translation cache |
US11249918B2 (en) | 2018-10-30 | 2022-02-15 | Hewlett Packard Enterprise Development Lp | Mapping entry invalidation |
US11836091B2 (en) * | 2018-10-31 | 2023-12-05 | Advanced Micro Devices, Inc. | Secure memory access in a virtualized computing environment |
US10915404B2 (en) | 2018-11-02 | 2021-02-09 | Arm Limited | Persistent memory cleaning |
US10942853B2 (en) * | 2018-12-20 | 2021-03-09 | International Business Machines Corporation | System and method including broadcasting an address translation invalidation instruction with a return marker to indentify the location of data in a computing system having mutiple processors |
US20210064528A1 (en) * | 2019-08-26 | 2021-03-04 | Arm Limited | Filtering invalidation requests |
CN112463657B (zh) * | 2019-09-09 | 2024-06-18 | 阿里巴巴集团控股有限公司 | 一种地址转换缓存清除指令的处理方法和处理装置 |
US11853225B2 (en) * | 2019-10-11 | 2023-12-26 | Texas Instruments Incorporated | Software-hardware memory management modes |
US11200175B2 (en) * | 2020-03-20 | 2021-12-14 | Arm Limited | Memory accessor invailidation |
US11288207B2 (en) * | 2020-03-30 | 2022-03-29 | Arm Limited | Apparatus and method for processing address translation and invalidation transactions |
US20210406195A1 (en) * | 2021-04-29 | 2021-12-30 | Rupin Vakharwala | Method and apparatus to enable a cache (devpic) to store process specific information inside devices that support address translation service (ats) |
US11507515B1 (en) * | 2021-06-29 | 2022-11-22 | Arm Limited | Memory management unit with address translation cache |
WO2023034662A1 (en) * | 2021-09-02 | 2023-03-09 | Nuvia, Inc. | System and methods for invalidating translation information in caches |
US20230064603A1 (en) * | 2021-09-02 | 2023-03-02 | Nuvia, Inc. | System and methods for invalidating translation information in caches |
CN114064517A (zh) | 2021-11-19 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指定密钥进行高速缓存写回且无效的计算机***及方法 |
CN114064518A (zh) | 2021-11-19 | 2022-02-18 | 上海兆芯集成电路有限公司 | 指定密钥辨识码进行转译后备缓冲区清除的处理器和方法 |
US11853228B1 (en) * | 2022-06-10 | 2023-12-26 | Arm Limited | Partial-address-translation-invalidation request |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1784663A (zh) * | 2003-05-12 | 2006-06-07 | 国际商业机器公司 | 无效存储器,清除缓冲区表项 |
CN1906581A (zh) * | 2004-09-29 | 2007-01-31 | 索尼株式会社 | 信息处理设备、处理控制方法、以及计算机程序 |
CN101027652A (zh) * | 2004-09-30 | 2007-08-29 | 英特尔公司 | 对于直接存储器存取地址转换的高速缓存支持 |
CN101165666A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 在数据处理***中建立地址转换的方法和装置 |
US20080301369A1 (en) * | 2004-10-19 | 2008-12-04 | Platform Solutions, Inc. | Processing of self-modifying code in multi-address-space and multi-processor systems |
US20090222626A1 (en) * | 2008-02-29 | 2009-09-03 | Qualcomm Incorporated | Systems and Methods for Cache Line Replacements |
CN102906719A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 输入/输出地址到存储器地址的转换 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61292761A (ja) * | 1985-06-20 | 1986-12-23 | Mitsubishi Electric Corp | アドレス変換方式 |
US4885680A (en) | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
JP2510605B2 (ja) | 1987-07-24 | 1996-06-26 | 株式会社日立製作所 | 仮想計算機システム |
JPH0784883A (ja) | 1993-09-17 | 1995-03-31 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファパージ方法 |
JPH07134658A (ja) * | 1993-11-09 | 1995-05-23 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファ制御方式 |
US6314492B1 (en) | 1998-05-27 | 2001-11-06 | International Business Machines Corporation | System and method for server control of client cache |
EP1182569B8 (en) * | 2000-08-21 | 2011-07-06 | Texas Instruments Incorporated | TLB lock and unlock operation |
US6854033B2 (en) | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US6826671B2 (en) * | 2001-10-09 | 2004-11-30 | Sun Microsystems, Inc. | Method and device for a context-based memory management system |
US7346757B2 (en) | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US7734892B1 (en) | 2005-03-31 | 2010-06-08 | Rozas Guillermo J | Memory protection and address translation hardware support for virtual machines |
US7447869B2 (en) | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US7676634B1 (en) * | 2005-09-28 | 2010-03-09 | Sun Microsystems, Inc. | Selective trace cache invalidation for self-modifying code via memory aging |
US7802055B2 (en) | 2006-04-19 | 2010-09-21 | Qualcomm Incorporated | Virtually-tagged instruction cache with physically-tagged behavior |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US8112174B2 (en) | 2008-02-25 | 2012-02-07 | International Business Machines Corporation | Processor, method and computer program product for fast selective invalidation of translation lookaside buffer |
US8166276B2 (en) * | 2009-02-27 | 2012-04-24 | Advanced Micro Devices, Inc. | Translate and verify instruction for a processor |
US9465748B2 (en) | 2011-12-30 | 2016-10-11 | Advanced Micro Devices, Inc. | Instruction fetch translation lookaside buffer management to support host and guest O/S translations |
US8964735B2 (en) * | 2012-05-18 | 2015-02-24 | Rackspace Us, Inc. | Translating media access control (MAC) addresses in a network hierarchy |
US9116793B2 (en) * | 2012-06-12 | 2015-08-25 | International Business Machines Corporation | Maintaining versions of data in solid state memory |
US20140006681A1 (en) * | 2012-06-29 | 2014-01-02 | Broadcom Corporation | Memory management in a virtualization environment |
-
2014
- 2014-02-21 US US14/186,091 patent/US9619387B2/en active Active
-
2015
- 2015-02-03 WO PCT/GB2015/050282 patent/WO2015124899A1/en active Application Filing
- 2015-02-03 KR KR1020167024444A patent/KR102317332B1/ko active IP Right Grant
- 2015-02-03 EP EP15705362.0A patent/EP3108372B1/en active Active
- 2015-02-03 CN CN201580008605.8A patent/CN105980994B/zh active Active
- 2015-02-03 JP JP2016551713A patent/JP6509241B2/ja active Active
-
2016
- 2016-07-20 IL IL246850A patent/IL246850B/en active IP Right Grant
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1784663A (zh) * | 2003-05-12 | 2006-06-07 | 国际商业机器公司 | 无效存储器,清除缓冲区表项 |
CN1906581A (zh) * | 2004-09-29 | 2007-01-31 | 索尼株式会社 | 信息处理设备、处理控制方法、以及计算机程序 |
CN101027652A (zh) * | 2004-09-30 | 2007-08-29 | 英特尔公司 | 对于直接存储器存取地址转换的高速缓存支持 |
US20080301369A1 (en) * | 2004-10-19 | 2008-12-04 | Platform Solutions, Inc. | Processing of self-modifying code in multi-address-space and multi-processor systems |
US7822924B2 (en) * | 2004-10-19 | 2010-10-26 | International Business Machines Corporation | Processing of self-modifying code in multi-address-space and multi-processor systems |
CN101165666A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 在数据处理***中建立地址转换的方法和装置 |
US20090222626A1 (en) * | 2008-02-29 | 2009-09-03 | Qualcomm Incorporated | Systems and Methods for Cache Line Replacements |
CN102906719A (zh) * | 2010-06-23 | 2013-01-30 | 国际商业机器公司 | 输入/输出地址到存储器地址的转换 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110770709A (zh) * | 2017-06-28 | 2020-02-07 | Arm有限公司 | 地址转译数据无效化 |
US11615032B2 (en) | 2017-06-28 | 2023-03-28 | Arm Limited | Address translation data invalidation |
CN110770709B (zh) * | 2017-06-28 | 2023-10-20 | Arm有限公司 | 地址转译数据无效化 |
CN110998549A (zh) * | 2017-07-31 | 2020-04-10 | Arm有限公司 | 地址转换缓存 |
CN110998549B (zh) * | 2017-07-31 | 2023-11-17 | Arm有限公司 | 地址转换缓存 |
CN107562514A (zh) * | 2017-08-03 | 2018-01-09 | 致象尔微电子科技(上海)有限公司 | 一种物理内存访问控制与隔离方法 |
CN111095227A (zh) * | 2017-09-19 | 2020-05-01 | 微软技术许可有限责任公司 | 管理程序存储器高速缓存失效 |
CN113841124A (zh) * | 2019-05-21 | 2021-12-24 | 国际商业机器公司 | 微处理器中的地址转换高速缓存无效 |
WO2021053420A1 (en) * | 2019-09-17 | 2021-03-25 | International Business Machines Corporation | Identifying translation errors |
US11243864B2 (en) | 2019-09-17 | 2022-02-08 | International Business Machines Corporation | Identifying translation errors |
CN111338987A (zh) * | 2020-02-13 | 2020-06-26 | 江苏华创微***有限公司 | 快速无效组相联tlb的方法 |
CN111338987B (zh) * | 2020-02-13 | 2023-12-12 | 江苏华创微***有限公司 | 快速无效组相联tlb的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3108372B1 (en) | 2018-07-11 |
US20150242319A1 (en) | 2015-08-27 |
US9619387B2 (en) | 2017-04-11 |
CN105980994B (zh) | 2019-08-16 |
WO2015124899A1 (en) | 2015-08-27 |
JP2017517040A (ja) | 2017-06-22 |
KR20160124792A (ko) | 2016-10-28 |
KR102317332B1 (ko) | 2021-10-26 |
EP3108372A1 (en) | 2016-12-28 |
IL246850B (en) | 2019-02-28 |
JP6509241B2 (ja) | 2019-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105980994A (zh) | 已存地址转换的无效 | |
US10042778B2 (en) | Collapsed address translation with multiple page sizes | |
US9639476B2 (en) | Merged TLB structure for multiple sequential address translations | |
US9208103B2 (en) | Translation bypass in multi-stage address translation | |
US9268694B2 (en) | Maintenance of cache and tags in a translation lookaside buffer | |
US10372618B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
JP2020529656A (ja) | アドレス変換キャッシュ | |
CN107278298A (zh) | 缓存器维护指令 | |
US20140223141A1 (en) | Sharing tlb mappings between contexts | |
CN104239237B (zh) | 一种tlb管理方法及装置 | |
CN110235101A (zh) | 可变转换后备缓冲器(tlb)编索引 | |
US11422946B2 (en) | Translation lookaside buffer striping for efficient invalidation operations | |
US11151034B2 (en) | Cache storage method and system configured to store shareable tag portion and individual tag portion | |
JP2000276405A (ja) | アドレス変換装置及びこのアドレス変換装置を有するコンピュータシステム | |
US11954026B1 (en) | Paging hierarchies for extended page tables and extended page attributes | |
US9672159B2 (en) | Translation buffer unit management | |
US11474953B2 (en) | Configuration cache for the ARM SMMUv3 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |