CN104516833B - 用于多个顺序地址转换的合并的tlb结构 - Google Patents

用于多个顺序地址转换的合并的tlb结构 Download PDF

Info

Publication number
CN104516833B
CN104516833B CN201410498401.4A CN201410498401A CN104516833B CN 104516833 B CN104516833 B CN 104516833B CN 201410498401 A CN201410498401 A CN 201410498401A CN 104516833 B CN104516833 B CN 104516833B
Authority
CN
China
Prior art keywords
address
entry
cache
tlb
logical gate
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
Application number
CN201410498401.4A
Other languages
English (en)
Other versions
CN104516833A (zh
Inventor
B·W·钦
S·S·穆克吉
W·P·斯尼德二世
M·S·伯通
R·E·凯斯勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of CN104516833A publication Critical patent/CN104516833A/zh
Application granted granted Critical
Publication of CN104516833B publication Critical patent/CN104516833B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

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

本发明的各实施方式总体上涉及用于多个顺序地址转换的合并的TLB结构。具体地,一种支持虚拟化的计算机系统可以维护多个地址空间。每个客户机操作系统使用多个客户机虚拟地址(GVA),这些客户机虚拟地址被转换成多个客户机物理地址(GPA)。一个管理一个或多个客户机操作系统的超管理器将多个GPA转换成多个根物理地址(RPA)。一个合并的转换旁视缓冲器(MTLB)高速缓存该多个地址域之间的多种转换,从而使能更快速的地址转换和存储器访问。该MTLB可以作为多个不同高速缓存逻辑可寻址,并且可以被重新配置成用于将不同的空间分配给每个逻辑高速缓存。

Description

用于多个顺序地址转换的合并的TLB结构
技术领域
本公开涉及计算机技术,更具体地涉及用于在虚拟化环境中高速缓存地址空间之间的转换的系统和方法。
背景技术
在计算机系统中,虚拟化是计算机系统(称为主机)通过其对计算资源(如硬件平台、操作系统、或存储器)进行模拟的过程。典型的主机运行超管理器,该超管理器是创建并运行虚拟机的软件或硬件,也称为客户机。通过硬件虚拟化,超管理器为每个客户机提供一个虚拟硬件操作平台。通过与虚拟操作系统接口连接,客户机访问主机的计算资源以执行其对应的操作。结果是,单个主机可以通过虚拟化同时支持多个操作系统或其他软件。
在典型的主机中,将虚拟操作平台作为“真实的”硬件平台呈现给客户机,意味着该硬件平台的虚拟性质对于客户机来说不应该是可辨别的。进一步地,主机应该避免访问计算资源时客户机之间的冲突。为了完成这些目标,主机可以在客户机软件和物理主机资源之间实施转换方案。关于存储器资源,例如,主机可以支持呈现给对应的客户机的虚拟地址空间。该虚拟地址空间对于客户机作为“真实”(物理)地址空间出现。然而,主机在虚拟地址空间和对应于主机的存储器的物理地址空间之间转换。结果是,主机可以管理多个客户机的存储器资源。
发明内容
本发明的示例实施例提供了用于在虚拟化环境中高速缓存地址空间之间的转换的系统和方法。一种电路可以包括一个被配置成用于存储地址域之间的转换的高速缓存,其中,该高速缓存作为一个第一逻辑部分和一个第二逻辑部分可寻址。该第一逻辑部分被配置成用于存储一个第一地址域和一个第二地址域之间的转换,并且该第二逻辑部分被配置成用于存储该第二地址域与一个第三地址域之间的转换。一个处理器被配置成用于使一个地址请求与该高速缓存匹配并输出一个相应的地址结果。进一步地,一个寄存器被配置成用于定义该第一和第二逻辑部分之间的边界。
在进一步的实施例中,该处理器可以使该第一地址域中的一个地址请求与该第一逻辑部分中的多个条目匹配,从而确定一个具有该第二地址域中的一个地址的相应的条目。该处理器还可以使该第一逻辑部分中所确定的条目与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。该处理器可以进一步使该第二地址域中的一个地址请求与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。
在仍进一步的实施例中,该高速缓存中的多个条目的至少一个子集可以包括一个索引标识符,并且可以包括一个解码器以基于该索引标识符定位该高速缓存中的一个条目。该地址请求可以包括该索引标识符的一个指示,并且该索引标识符可以被配置在一个索引标识符序列中,该序列的顺序取决于该地址请求的来源。
在又进一步的实施例中,该边界的位置可以根据一个存储于该寄存器中的值而变化,并且该第一和第二逻辑部分中的至少一个的大小根据该寄存器中所存储的该值而变化。该处理器可以响应于该第一和第二逻辑部分中的该至少一个的该大小被改变来更新该高速缓存中的多个条目。
该第一地址域可以是一个客户机虚拟地址域,该第二地址域可以是一个客户机物理地址域,并且该第三地址域可以是一个根物理地址域。该高速缓存中的每个条目可以包括一个指示该条目是该第一逻辑部分还是该第二逻辑部分的一个成员的位,并且该地址请求可以包括该位对应于所请求的条目的一个指示。
在仍进一步的实施例中,该处理器可以进一步被配置成用于在给定时间段内抑制多个匹配条目所导致的一次异常,该异常可以例如发生于在发送该地址请求的多个来源之间过渡时。该高速缓存中的每个条目可以包括一个指示与该条目相关联的一个来源的位。该处理器可以基于该地址请求的来源控制对该第一部分和该第二部分的访问。
在又进一步的实施例中,该高速缓存作为一个第三逻辑部分可寻址,该第三逻辑部分被配置成用于存储该第三地址域与一个第四地址域之间的转换。该寄存器可以定义该第二和第三逻辑部分之间的边界。该处理器可以基于该地址请求中的一个指示(如一个或多个位)来搜索这些逻辑部分中的所选择的一个或多个。
在进一步的实施例中,在针对该地址请求检测到该高速缓存中的一个丢失的条目时,该处理器可以输出一个对于对应于该丢失的条目的一种转换的请求。在接收到对应于该丢失的条目的转换时,该处理器可以在例如该高速缓存的一个随机确定的条目处将该转换输入至该高速缓存。该第一逻辑部分可以包括一个第一索引并且该第二逻辑部分可以包括一个第二索引,其中,该第二索引是该第一索引的一个求逆。
在仍进一步的实施例中,该电路可以包括一个被配置成用于存储多个地址域之间的转换的转换旁视缓冲器(TLB),该TLB作为客户机TLB和根TLB可寻址。该客户机TLB可以存储客户机虚拟地址(GVA)与客户机物理地址(GPA)域之间的转换,同时该根TLB可以存储该GPA域与一个根物理地址(RPA)域之间的转换。该根TLB还可以存储该RVA(根虚拟地址)域与该RPA之间的转换。该高速缓存中的每个条目可以包括一个指示该条目是该客户机TLB还是该根TLB的成员的位。该电路可以进一步包括一个处理器,该处理器被配置成用于使一个地址请求与该高速缓存匹配,并输出相应的地址结果;以及一个寄存器,该寄存器被配置成用于定义该客户机TLB与该根TLB之间的边界。
附图说明
根据本发明的示例性实施例的以下更具体的说明,上述内容将是明显的,如在这些附图中展示的,其中贯穿这些不同的视图的相同的参照字符是指相同的部分。附图不一定按比例,而是着重于展示本发明的实施例。
图1是在一个实施例中实施合并的转换旁视缓冲器(MTLB)的计算机系统的框图。
图2是MTLB的一种分区的框图。
图3是MTLB的框图。
图4是展示了在一个实施例中使用MTLB访问系统存储器的过程的流程图。
图5是MTLB中的一个条目的框图。
图6是实施MTLB和微转换旁视缓冲器(μTLB)的计算机系统的框图。
图7是μTLB中的一个条目的框图。
图8是展示了在一个实施例中使用μTLB访问系统存储器的过程的流程图。
图9A-C是展示了输入至μTLB的折叠转换的框图。
图10是展示了在一个进一步的实施例中的一组TLB和虚拟数据高速缓存的框图。
图11是示例数据高速缓存标签的框图。
图12是展示了跨多个高速缓存维护条目的过程的流程图。
图13是展示了一个进一步的实施例中地址转换的选择性旁路的框图。
图14是展示了选择性旁路地址转换的过程流程图。
具体实施方式
以下是对本发明的示例性实施例的说明。
一种支持虚拟化的计算机系统可以维护多个地址空间。每个客户机操作系统使用多个客户机虚拟地址(GVA),这些客户机虚拟地址被转换成多个客户机物理地址(GPA)。GPA空间是指分配给指定客户机的物理存储器的一个分区。然而,将该GVA空间(而不是GPA空间)呈现给每个客户机以便允许存储器分布的更大灵活性。例如,给定客户机的GVA空间可以比分配给它的物理存储器分区更大,并且当该存储器分区达到最大容量时可以将数据存储至硬盘。
管理一个或多个客户机操作系统的软件系统(如超管理器)将多个GPA转换成多个相应的根物理地址(GPA)。这些RPA(也称为物理系统地址或机器地址)指示主机的物理存储器的位置。因此,为了通过客户机完成存储器访问,发生两种转换:首先将GVA转换成GPA,并且然后将GPA转换成RPA。
最初通过读取(“行走”)存储相关的地址关系的页表在多个地址域之间(例如,虚拟地址到物理地址)转换地址。使用转换旁视缓冲器(TLB)高速缓存此类转换。一旦高速缓存了给定的转换,则在需要该给定转换的将来的存储器访问过程中访问该TLB,由此防止对进一步的页表行走的需要。在某些虚拟化的系统中,TLB可以高速缓存从GVA到RPA的转换。可替代地,可以使用两个物理TLB:存储GVA到GPA转换的第一TLB,和存储GPA到RPA转换的第二TLB。
图1是在一个实施例中实施合并的转换旁视缓冲器(MTLB)的计算机系统100的框图。所示的系统100可以是主机的通过虚拟化支持许多客户机的一部分。多个客户机(即,客户机)104a-n通过对应的客户机操作平台(未示出)运行,这些客户机操作平台是超管理器105所管理的虚拟硬件平台。这些客户机104a-n通过客户机操作平台所提供的客户机虚拟地址(GVA)空间直接访问物理系统存储器150。然而,通过根物理地址(RPA)空间对系统存储器150进行寻址。可以首先将GVA映射到客户机物理地址(GPA),进而将该客户机物理地址映射到为给定客户机104a-n分配的系统存储器150的一个分区处的RPA。因此,为了使能客户机104a-n进行存储器访问,可以将GVA转换成GPA,然后将该GPA转换成指示系统存储器150的一个条目的RPA。
可以包括客户机操作平台的硬件和软件部分的存储器控制器108与这些客户机104a-n接口连接以访问系统存储器150。为了访问系统存储器150,该存储器控制器首先访问合并的转换旁视缓冲器(MTLB)110。MTLB 110可以包括单个物理高速缓存、缓冲器、段寄存器、系统寄存器、或其他作为两个不同TLB逻辑可寻址的存储单元:客户机TLB(GTLB)120(“虚拟标签部分”)和根TLB(RTLB)130(“物理标签部分”)。GTLB 120存储GVA到GPA转换,并且RTLB 130存储GPA到RPA转换。因此,MTLB 110可以对于其他组件作为共享单个物理结构的两个不同逻辑TLB出现。
在客户机存储器访问的过程中,存储器控制器108可以从客户机104a-n接收一个GVA,然后其使该GVA与GTLB 120中的条目匹配,从而确定相应的GPA。如果发现了匹配,则该存储器控制器使已定位的GPA与RTLB 130中的条目匹配,从而确定相应的RPA。该存储器控制器用匹配RPA访问系统存储器150的所指示的条目以用于客户机104a-n的读或写操作。
最初可以由客户机104a-n添加GTLB 120中的条目,这些客户机访问存储于系统存储器150的页表140。页表140存储GVA、GPA和RPA空间之间的关系,并且可以“被行走”以确定那些地址空间之间的地址转换。因此,客户机140a-n可以行走页表140以确定GVA到GPA转换,并且然后通过GTLB索引访问GTLB 120以将该转换存储于GTLB 120。同样地,最初可以由超管理器105添加RTLB 120中的条目,该超管理器访问存储于系统存储器150的页表140。该超管理器可以行走页表140以确定GPA到RPA转换,并且然后通过RTLB索引访问RTLB 130以将该转换存储在RTLB 130。可以如上所述,响应于存储器控制器108在GTLB 120或RTLB 130处的转换查找中上报的“丢失(miss)”,可以向GTLB 120和RTLB 130中添加条目。
下文参照图2至图5进一步详细地描述了MTLB 110的配置,以及在存储器访问和填充MTLB 110的过程中系统100的操作。
图2是MTLB 110的高速缓存206的框图。高速缓存206可以是单个物理结构(例如,存储器或其他存储设备),该单个物理结构被逻辑划分成两个或更多个段。在本示例实施例中,高速缓存206被分成两个逻辑部分以容纳GTLB 120和RTLB 130。TLB分区212定义GTLB120和RTLB 130之间的划分。在可替代的实施例中,可以将高速缓存206分成多个附加段从而容纳多个附加缓冲器,如存储多个附加地址空间之间的转换的TLB。在这种实施例中,可以实施附加TLB分区以将高速缓存206分成这些附加段。
存储于MTLB 110或MTLB 110之外的可编程寄存器(未示出)定义了将GTLB 120和RTLB 130分开的TLB分区212的位置。相应地,所有具有比分区212更低的物理索引的条目包括RTLB 130,并且所有具有大于等于该分区的物理索引的条目包括GTLB 120。给定固定数量的总转换条目,GTLB 120和RTLB 130之间的灵活分区允许系统(例如,系统100)优化这些结构的大小。在运行时间可以改变TLB 120、130的大小。另外,如果在非虚拟化的环境中使用计算机系统,分区212可以被设置成使得根TLB占据整个MTLB高速缓存206。对于这种配置,可以保留一个值以代表GTLB 120中的0条目。
软件(如超管理器105和客户机104a-n(图1))可以将TLB 120、130视作两个逻辑上不同的TLB,将每个TLB的条目分别从0标引至对应于每个逻辑TLB 120、130的大小的“G-Config-1”和“R-Config-1”。例如,RTLB 130对于软件作为具有从0上至(是RTLB大小-1的)R-Config-1的条目出现。GTLB 120对于软件作为具有从0上至(是GTLB大小-1的)G-Config-1的条目出现。(GTLB大小+RTLB大小=MTLB大小)。如图2中所示,可以使高速缓存206中的条目序列在GTLB 120和RTLB 130之间反向,意味着GTLB 120自顶向下排序,并且RTLB 130自底向上排序。这种配置允许通过对TLB分区212重定位来更简单地调整TLB 120、130的大小,因为只可以改变每个TLB 120、130的末端条目或使其无效。在某些实施例中,RTLB 130可以具有位于1个条目和MTLB高速缓存206中的条目总数之间的大小。相比之下,GTLB 120可以具有1和小于MTLB高速缓存206中的条目数的数之间的大小,因为可以要求RTLB 130具有至少一个条目。
图3是MTLB 110的进一步细节的框图。可以如上文参照图1和图2所述对MTLB 110进行配置。MTLB 110与存储器控制器108接口连接以提供地址请求的匹配结果(例如,GVA到GPA或GPA到RPA转换),并进一步与客户机104a-n和超管理器105接口连接以添加和修改GTLB 120和RTLB 130内的条目。客户机104a-n或代表客户机的硬件可以行走页表(例如,页表140,图1)以确定GVA到GPA转换,并且然后通过GTLB索引访问GTLB 120以将该转换存储在GTLB 120。同样地,RTLB 120中的条目可以由超管理器105或代表该超管理器的硬件来添加并修改,该超管理器或代表该超管理器的硬件还访问页表以确定GPA到RPA转换。可以响应于存储器控制器108在GTLB 120或RTLB 130处的转换查找中上报的“丢失”,向GTLB 120和RTLB 130中添加条目或对其进行修改。
为了方便访问GTLB 120和RTLB 130,MTLB 110还可以包括解码器334,该解码器允许软件(例如,客户机104a-n或超管理器105)用索引访问MTLB 110的条目。可以为MTLB 110中的每个条目指定这样的索引,并且软件可以使用解码器334对一个具体条目进行读或写。解码逻辑可以使用物理索引来标识一个具体MTLB条目。可以将客户机104a-n限制为生成用于向GTLB 120写入的客户机逻辑索引。超管理器105(或其他具有根访问的软件)可以生成用于向GTLB 120或RTLB 130写入的或者客户机逻辑或者根逻辑索引。可以实施索引转换器332以将客户机索引变换成对应于GTLB 120的一个条目的物理索引。
在一个示例实施例中,可以如下配置指向GTLB 120和RTLB 130的逻辑索引。总MTLB大小可以是2的幂,并且根逻辑索引可以小于等于RTLB 130大小的所有根逻辑索引的物理索引(即,物理高速缓存的索引)。可以将客户机逻辑索引变换成小于GTLB 120大小的所有客户机逻辑索引的物理索引。基于软件的只读寄存器可以指示GTLB 120和RTLB 130的大小,并且在配置GTLB 120和RTLB 130之间的分区之后自动更新。
MTLB 110可以是全关联结构。如果MTLB 110被配置成具有关联匹配逻辑的一个物理TLB,MTLB 110中的搜索可能导致与或者GTLB 120条目或者RTLB 130条目的匹配。为了使得关联逻辑区分GTLB 120和RTLB 130条目,可以用一个位对每个条目加标签,称为Gt位。如果Gt位是1,则条目属于GTLB 120;如果Gt位是零,条目属于RTLB 130。因此,所有的RTLB130条目可以使Gt位处于零,同时所有GTLB 120条目可以使所有Gt位处于一。当需要在RTLB130上进行关联查找时,发送给MTLB 110的查找值(密钥)将Gt设置为零。类似地,当需要在GTLB 120上进行关联查找时,发送给MTLB 110的查找值将Gt设置为一。
通过使用“随机寄存器”,可以将随机替换用作处理MTLB查找“丢失”的算法的一部分。该随机寄存器可以在所选择的GTLB 120或RTLB 130的一部分中选择一个随机条目。参照图2,例如,可以将随机替换限制为“线”条目(即,“G线”、“R线”)与对应的TLB的末端条目之间的段。
再次参照图3(并参照图1),当超管理器105在客户机104a-n之间切换时,必须用进入客户机(例如,客户机104b)的客户机TLB条目替换属于外出客户机(例如,客户机104a)的客户机TLB条目。超管理器105可以管理MTLB 110引起这种改变。由于MTLB 110可以是全关联结构,系统应该避免提交可以匹配多个条目的待匹配值(密钥)。与多个条目匹配通常被认为是软件错误并且可能导致引起故障,如机器检查异常。在向TLB写入的过程中,可以针对潜在的冲突对所有条目进行检查。如果发现冲突,禁止写入,并且生成机器检查异常。在改变客户机操作系统的具体情况下,可以期待GTLB 120中的多个条目可以匹配,因为外出TLB条目被进入TLB条目替换。即,进入客户机映射可以与外出客户机映射具有相同或相似的客户机虚拟地址。因为一旦外出客户机条目已经完全被进入客户机条目所替换就可以解决这种暂时状况,可以提供软件控制(受例如超管理器105的管理)以抑制这种客户机操作系统切换过程中的机器检查异常。这种软件控制允许客户机TLB中的多个条目匹配一个虚拟地址,同时该软件正在将上下文相互改变。
返回参照图2,根软件(如超管理器105(图1))可以在运行时间而不是在系统配置过程中对定义分区212的位置的寄存器进行编程。对此寄存器的重新编程(例如,在运行时间)可以自动地更新架构可见的客户机和标识GTLB 120和RTLB 130的大小的根寄存器中的值。在其他实施方式中,可以直接由根软件执行此类更新。当RTLB 130的大小增大并且GTLB120的大小缩小时,过去属于GTLB 120的某些条目现在属于RTLB 130。软件可以使用TLB写索引指令用根映射写这些新条目,或者可以将这些条目写为无效。当执行这些TLB写索引指令时,可以将这些条目中的每个条目中的Gt位重置,因此将它们正确地标记为根条目。未能改变Gt位可能导致不可预测的行为。相反地,当RTLB 130的大小缩小并且GTLB 120的大小增大时,之前属于RTLB 130的某些条目现在属于GTLB 120。根软件可以使用TLB客户机写索引指令用非冲突性客户映射写这些条目,或者可以将该TLB条目写为无效。当执行TLB客户机写索引指令时,可以将此类条目的Gt位设置为使得这些条目现在被正确标记为客户机条目。在可替代的实施例中,当在GTLB和RTLB之间移动这些条目时,可以使用硬件代替软件来正确地配置Gt位。
超管理器105(或其他软件或硬件)可以被进一步配置成用于提供GTLB 120中条目的批量无效。通过将Gt位用作标识符,超管理器105可以快速地使所有的GTLB 120条目无效。可替代地,可以将电路或其他硬件配置成用于使所有具有设置为1的Gt位的条目无效。结果是,可以在不影响根TLB条目的情况下(如在客户机之间切换的过程中)从MTLB 110快速地擦除客户机上下文。在一个实施例中,由包含地址空间标识符(还称为虚拟机ID或VMID)的寄存器标识当前客户机上下文。当切换当前客户机上下文时超管理器105可以改变此值,并且当软件改变此值时硬件(如上所述)可以自动地使用Gt位使该客户机上下文无效。
在进一步的实施例中,可以将MTLB分区成三个或更多个逻辑TLB以容纳多个客户机TLB。可以静态地或动态地管理该多个客户机上下文。在静态配置中,可以创建多个TLB分区,而不是一个TLB分区(例如,图2的TLB分区212)。在这种实施例中,可以将TLB段作为如上所述的客户机TLB和根TLB管理,除了当在多个客户机之间切换时可能不需要替换客户机TLB中的条目的情况,前提是一个附加客户机TLB可供用于下一客户机。如果客户机的数量超过TLB中的客户机上下文,则可以根据需要擦除或用新的客户机上下文替代一个或多个客户机TLB。可以由一组预先定义的系统寄存器来定义TLB分区大小。可替代地,可以动态地管理该多个客户机上下文。例如,可以用适当的客户机上下文给每个TLB条目加标签,并且穿插着来自其他软件上下文的TLB条目。
图4是展示了在一个实施例中使用MTLB访问系统存储器的过程400的流程图。过程400包括成功的MTLB查找以及在查找“丢失”时对MTLB的更新两者的场景。参照图1,客户机104a将一个存储器访问请求(例如,读或写入系统存储器)与GVA一起发送至存储器控制器(405)。存储器控制器108接收该请求和该GVA(406),并访问MTLB 110以查找与该GVA匹配的转换(410)。如果找到相应的GPA的匹配,则该存储器控制器进一步匹配该GPA以定位相应的RPA,并返回该RPA(415)。然后,存储器控制器108使用RPA访问系统存储器的相应的条目(416),从而使得客户机104a能够执行对系统存储器150的读或写操作。
在未能与GPA和RPA之一或两者匹配(即,MTLB“丢失”)的情况下,更新MTLB 110(420)。为此,客户机104a和超管理器(或代表客户机104a或超管理器105的硬件)之一或两者访问系统存储器150的页表140。客户机104a和/或超管理器105行走页表140以确定所需要的GVA到GPA和/或GPA到RPA转换(425)。然后,客户机104a和/或超管理器105可以将(多种)转换写入MTLB 110(430)(例如,如上文参照图3所述)。一旦更新了MTLB 110,存储器控制器108可以再次执行GVA与MTLB 110的匹配并在返回相应的RPA(415)时提供存储器访问(416)。
图5是MTLB(如上文参照图1至图4所描述的MTLB)中的示例条目500的框图。该条目可以具有一个虚拟部分501和一个物理部分502,其中,虚拟部分501包含有待匹配的地址(506)以及其他信息,并且该物理部分包含所产生的已转换的地址(510)以及其他信息。上文所述的Gt位可以是客户机或根软件不可见的附加条目。该虚拟部分可以包括下列条目:
ASID[7:0](505):地址空间标识符(ASID)。如果Gt=1,则此字段保持客户机ASID以用于这种具体转换。如果Gt=0,此字段保持根ASID以用于这种具体转换。如果G=1,可以忽略此字段。
VPN(506):虚拟页号,指示GVA或GPA地址。
G(507):全局位。如果Gt=1,则此位代表对应于GVA的客户机TLB条目的G位。如果Gt=0,则此位代表对应于或者GPA或者RVA(根虚拟地址)的根TLB条目的G位。
该物理部分可以包括下列条目:
PFN(510):物理帧号,指示GPA或RPA地址的物理页号。如果Gt=1,则此字段代表GPA。如果Gt=0,则此字段代表RPA。
XI(511):执行抑制,指示映射包含数据并且不包含指令。如果XI=1,则这种页面转换不能用于指令并且仅可以用于数据转换。如果XI=0,则这种转换可以用于或者数据或者指令。
RI(512):读禁止。读禁止位可以用于防止读取具体页面。
C[2:0](513):一致性属性,可以存储在C字段中。这些属性可以用于确定存储器空间的性质(例如,可高速缓存的、未高速缓存的、一致的、非一致的、I/O空间等)。
D(514):页面重写标志位。该页面重写标志位指示是否之前已经向一个页面写入。
V(515):有效位。该有效位标识条目有效还是无效。
图6是实施MTLB 610和微转换旁视缓冲器(μTLB)615的计算机系统600的框图。可以类似于上文参照图1至图5所描述的系统100配置系统600,外加μTLB 615。外加μTLB 615可以通过高速缓存GVA空间和RPA空间之间的折叠转换提供更快的地址转换。
所示的系统600可以是主机的通过虚拟化支持许多客户机的一部分。多个客户机(即,客户机)604a-n通过对应的客户机操作平台(未示出)运行,这些客户机操作平台是超管理器605所管理的虚拟硬件平台。这些客户机604a-n通过客户机操作平台所提供的GVA空间间接访问物理系统存储器650。为了访问系统存储器650(通过RPA空间对该系统存储器进行寻址),可以首先将GVA映射至GPA,进而在为给定客户604a-n分配的系统存储器650的一个分区处将该GPA映射至RPA。因此,为了使能通过客户机604a-n进行存储器访问,可以将GVA转换成GPA,然后将该GPA转换成指示系统存储器650的一个条目的RPA。
可以如上文参照图1至图5的MTLB 110所述对MTLB 610进行配置。如此,MTLB 610可以包括单个物理高速缓存,该单个物理高速缓存作为两个不同的TLB逻辑上可寻址:客户机TLB(GTLB)620和根TLB(RTLB)630。GTLB 620存储GVA到GPA转换,并且RTLB 630存储GPA到RPA转换。因此,MTLB 610可以对于其他组件作为共享单个物理结构的两个不同逻辑TLB出现。最初可以由客户机604a-n添加GTLB 620中的条目,这些客户机访问存储于系统存储器650的页表640。页表640存储GVA、GPA和RPA空间之间的关系,并且可以“被行走”以确定那些地址空间之间的地址转换。因此,客户机604a-n(或代表客户机的硬件)可以行走页表640以确定GVA到GPA转换,并且然后通过GTLB索引访问GTLB620以将该转换存储在GTLB 620。同样地,最初可以由超管理器605(或代表该超管理器的硬件)添加RTLB 620中的条目,该超管理器访问存储于系统存储器650的页表640。该超管理器可以行走页表640以确定GPA到RPA转换,并且然后通过RTLB索引访问RTLB 630以将该转换存储在RTLB 630。可以如上所述响应于存储器控制器608在GTLB 620或RTLB 630处的转换查找中上报的“丢失”向GTLB 620和RTLB 630中添加条目。
可以包括客户机操作平台的硬件和软件部分的存储器控制器608与这些客户机604a-n接口连接以访问系统存储器650。为了访问系统存储器650,该存储器控制器首先访问μTLB 615。μTLB 615可以包括高速缓存、缓冲器、段寄存器、系统寄存器、或其他存储GVA到RPA的转换的存储单元。在客户机存储器访问的过程中,存储器控制器608可以从客户机604a-n接收一个GVA,然后使该GVA与μTLB 615中的条目匹配,从而确定相应的RPA。如果发现匹配,则存储器控制器608访问系统存储器650的所指示的条目以用于客户机604a-n的读或写操作。如果未发现匹配,则存储器控制器608可以访问MTLB以确定相应的GVA到GPA和GPA到RPA转换。该存储器控制器可以进一步将这两种转换折叠为单个GVA到RPA的转换,并且可以用折叠转换填充μTLB 615。
下文参照图7至图9进一步详细地描述了μTLB 615的配置,以及在存储器访问和填充μTLB 615的过程中系统600的操作。
图7是μTLB(如上文参照图6所描述的μTLB 615)中的示例条目700的框图。条目700可以包括下列段:
V(705):有效位。该有效位指示该条目有效还是无效。
Gt(706):该Gt位指示一个条目是属于客户机(Gt=1)还是根上下文(Gt=0)。如果Gt=0,VPN是GPA或RVA。如果Gt=1,VPN是GVA或GPA(用于未映射的客户机地址)。使用Gt位避免了用相应的虚拟机ID(VMID)对每个μTLB加标签的需要。
掩码(707):这些位向比较器指示在比较中应该考虑一个具体地址位还是将其忽略。
G(708):这是全局位。如果Gt=1,则此位代表对应于GVA的客户机TLB条目的G位。如果Gt=0,则此位代表对应于或者GPA或者RVA的根TLB条目的G位。
ASID(709):这是ASID字段。如果Gt=1,则此字段保留客户机ASID以用于这种具体转换。如果G=1,忽略此字段。如果Gt=0,此字段保留根ASID以用于这种具体转换。如果G=1,忽略此字段。
VP(710):虚拟页号(用于GVA、GPA、或RVA)。
ENTg[7:0](711):ENTg是客户机条目编号或另一个标识此转换的来源的唯一标识符。在MTLB写入时,此编号用于选择性地使可能不再代表有效转换的条目无效。如果Gt=0,不使用此字段。Entg[7:0]==0,处于根TLB中,指示客户机TLB(例如未映射的客户机地址)中不存在客户机转换。ENTg是MTLB的绝对条目编号(0-255)并且不是客户机已知的“索引”。
ENTr[8:0](712):ENTr是根条目编号或另一个标识此转换的来源的唯一标识符。注意:可以针对Gt=0和Gt=1两者设置此字段。将ENTr[8]设置成用于指示此μTLB条目不具有MTLB根条目。如果将未映射的根地址插入μTLB,可以发生这种情况。ENTr是MTLB的绝对条目编号(0-255)并且不是根已知的“索引”。
RP(713):根页号。此字段可以从或者根TLB条目Lo0或者条目Lo1复制,或者可以是(来自客户机TLB的)GPN和(来自根TLB的)RP的拼接。
GRI(714):客户机读禁止。GRI位反映客户机TLB条目RI位的值。当Gt=0时,忽视此字段。
RI(715):读禁止,该RI反映根.TLB RI位的值。如果Gt=0,此字段随意。
GD(716):客户机页面重写标志位。GD位反映客户机TLB中的D位的值。如果Gt=0,可以忽视此字段。
D(717):页面重写标志位。该D位反映根TLB中的D位的值。
C(718):一致性位。当Gt=1时,从客户机TLB条目取CCA。当Gt=0时,从根TLB条目取该CCA。
下文进一步详细地描述上述值。如果客户机=1(即,正在进行客户机查找),则在查找时仅考虑了Gt=1的条目。如果客户机=0(即,正在进行根查找),则在查找时仅考虑了Gt=0的条目。
返回参照图6,当需要地址转换时,存储器控制器608访问μTLB615并在“VP”字段搜索匹配。如果发现匹配,相应的RP包含根物理地址的页号部分。使用掩码位来确定VP字段的哪些位匹配,以及使用RP的哪些位形成根物理地址。当发生丢失时,硬件访问MTLB610,并取决于有待转换的地址的类型进行或者一种(GPA到RPA)或者两种(GVA到GPA、GPA到RPA)查找。
再次转向图7,每个μTLB条目700可以代表高达两个转换步骤的结果。μTLB必须保存来自这些步骤中的每个步骤的某些信息。由客户机页面大小和根页面大小中的更小者(即,对客户机物理物理页面大小虚拟的客户机或者对根物理页面大小物理的客户机)来确定掩码位707。
G位708代表“全局”位。全局地址是ASID被忽略处的地址。如果这是从GVA到RPA的映射,从客户机TLB复制G位(即,客户机转换)。如果该映射是从GPA或RVA到RPA,从根TLB复制G位(即,根转换)。
ASID字段709代表虚拟地址的地址空间标识符。ASID 709用于区分属于不同上下文的虚拟地址。如果这是从客户机虚拟地址到根物理地址的映射,从客户机TLB复制ASID字段709(即,客户机转换)。如果该映射用于从GPA到RPA,从根TLB复制ASID字段(即,根转换)。可以从正在被转换的虚拟地址形成虚拟页号(VP)710,并且可以取决于客户机和根转换的相对页面大小形成根页号(RP)字段713(下文参照图9A-C进一步详细地描述)。
读禁止(RI)715可以用于防止读取具体页面。因为读取权限取决于客户机和根转换两者对于这个位的值,在μTLB 615中捕捉客户机和根读禁止属性两者。可以从客户机TLB复制GRI(客户机读禁止)。如果该转换不是客户机虚拟地址转换,则可以忽视GRI位,并且从根TLB条目复制RI位715。类似地,D(页面重写标志)位717指示之前是否已经向一个页面写入。因为位717取决于相应的客户机和根转换两者对于这个位的值,在μTLB 615中捕捉客户机和根D位属性属性两者。
C位718可以涉及具体页的一致性策略。如果从GVA映射到RPA,可以从客户机TLB的相应条目复制CCA字段718。如果该映射用于GPA到RPA转换,则可以从根TLB的相应条目复制C字段718。
表1:μTLB条目的有效和无效值的对比。
表1呈现了μTLB条目的可能值,并指示了有效的值组合以及可以在μTLB查找过程中生成“异常”的值组合。在访问μTLB时,客户机中可能发生异常条件(例如,指令提取、加载或存储违规)。客户机软件对这些异常条件寻址之后,可以重新执行该指令。在重新执行时,可以通过客户机许可检查,但是可能存在根TLB保护违规。然后将异常通过信号发送到根上下文。μTLB异常可以被当做“丢失”,并如下文参照图8所述对其进行处理。
图8是展示在一个实施例中使用μTLB访问系统存储器的过程800的流程图。过程800包括成功的μTLB查找以及在查找“丢失”时对μTLB的更新两者的场景。参照图6,客户机604a将一个存储器访问请求(例如,读或写至系统存储器)与GVA一起发送至存储器控制器608(805)。存储器控制器608接收该请求和该GVA(806),并访问μTLB 615以查找与该GVA匹配的转换(810)。如果发现相应RPA的匹配,则返回RPA(815)。然后,存储器控制器608使用RPA访问系统存储器的相应的条目(816),从而使得客户机604a能够执行对系统存储器650的读或写操作。
在未能匹配GPA或RVA(即,μTLB“丢失”)的情况下,更新μTLB 615(820)。为此,存储器控制器608可以作为μTLB“丢失控制器”运行。(在可替代的实施例中,可以与存储器控制器608分离地配置μTLB丢失控制器)。存储器控制器608可以访问MTLB 610以检索相应的GVA到GPA和GPA到RPA转换(825)。(可替代地,如果给定的μTLB条目是GPA到RPA转换,存储器控制器608可以仅访问GPA到RPA转换。)使用来自MTLB 610的相应转换,存储器控制器生成GVA到RPA的有效转换,并将该转换写入μTLB 615(830)。一旦更新了μTLB 615,存储器控制器608可以再次执行GVA与μTLB 615的匹配并在返回相应的RPA(815)时提供存储器访问(816)。
为了创建μTLB条目(包括上文参照图7所述的字段),存储器控制器608可以从MTLB610的GTLB和RTLB两者中的条目的字段导入。参照图5和图7,可以如下所述填充μTLB条目的字段:
V:1(硬件有效位)
Gt:1(这是客户机映射)
掩码:(设定为最小化根掩码大小和客户机掩码大小)
G:从客户机.TLB复制
ASID:从客户机上下文复制
VP:GVA
RP:RP
GRI:从客户机.TLB复制
RI:从根.TLB复制
GD:从客户机.TLB复制
D:从根.TLB复制
GXI:从客户机.TLB复制
XI:从根.TLB复制
C:从客户机.TLB复制
ENTg[7:0]:设定为客户机.TLB条目的索引
ENTr[8:0]:设定为根.TLB条目的索引
图9A-C是展示了输入至μTLB的折叠转换的框图。如上文参照图7所述,在μTLB条目700中,可以从正在被转换的虚拟地址形成虚拟页号(VP)字段710,并且可以取决于客户机和根转换的相对页面大小形成根页号(RP)字段713。可以根据客户机和根TLB的相对页面掩码生成VP和RP。存在三种要考虑的情况:1)根和客户机条目具有相同的页面大小,2)根条目具有比客户机条目更小的页面大小,以及3)客户机条目具有比根条目更小的页面大小。
图9A展示了当转换中所使用的根和客户机条目具有相同的页面大小时折叠转换。在这种情况下,VP和RP的生成可以相对直接。掩码被设置为适当的页面大小,从GTLB的VPN字段(506)复制VP,并从根TLB的PFN字段(510)复制RP。
图9B展示了当根条目具有比客户机条目更小的页面大小时的折叠转换(即,GVA到GPA转换指定了一个比GPA到RPA转换的页面大小更大的页面大小)。在这种情况下,可以从GTLB的GVA和VPN字段(506)的组合生成VP。因此,VP被设置成具有根TLB的页面掩码的GVA。可以从根TLB的PFN字段(510)复制RP。
图9C展示了当客户机条目具有比根条目更小的页面大小时的折叠转换(即,GVA到GPA转换指定了一个比GPA到RPA转换的页面大小更小的页面大小)。在这种情况下,可以从客户机TLB的VPN字段(506)取得VP。RP可以是GTLB的PFN字段(510)和RTLB的PFN字段(510)的拼接。具体地,从根TLB的物理标签取得高PA位下至根页面大小。可以从客户机TLB的物理标签(GPA)取得低位下至客户机页面大小。
在进一步的实施例中,μTLB可以高速缓存多种类型的转换。例如,μTLB可以高速缓存从(如上所述的)GVA、以及从GPA或根虚拟地址(RVA)到RPA的转换,该根虚拟地址可以是超管理器所使用的虚拟存储器的地址。由于GVA和GPA之间可以存在别名(代表可能不同的根物理地址的类似地址),μTLB可以包括如上所述的Gt位。如果条目的Gt位是一,则该条目的VP代表客户机虚拟地址。类似地,如果条目的Gt位是零,则该条目的VP代表GPA或RVA。当在不干扰超管理器所拥有的映射(即,GPA到RPA转换)的情况下改变客户机时,Gt位还可以使硬件能够快速使客户机转换(即,GVA到GPA转换)无效。
在仍进一步的实施例中,μTLB可以高速缓存任何数量的地址域之间的转换。例如,某些虚拟化系统可以在GVA、GPA和RPA域之间实施附加的地址域,如可以在GPA和RPA域之间实施的“安全RPA”(SPA)。为了容纳这种寻址系统,MTLB可以包括三个或更多个逻辑部分以存储转换。在包括SPA域的特定示例中,MTLB可以包括存储GVA到GPA转换的第一逻辑部分、存储GPA到SPA的转换的第二逻辑部分、和存储SPA到RPA的转换的第三逻辑部分。相应地,μTLB可以被配置成用于高速缓存GVA域与RPA域之间的转换,由此折叠四个地址域之间的转换。
在仍进一步的实施例中,可以使转换保持在多层级转换存储体系的任何层级。每个存储层级可以保持直接转换(即,两个连续的地址域之间的转换)或折叠转换(即,被一个或多个中间地址域分开的两个地址域之间的转换)。在特定示例中,系统可以被配置成用于四个逻辑域和三个存储层级。第三存储层级三可以保持从一个第一地址域到一个最终地址域的折叠转换。第二层级可以保持从第一到第二逻辑域的直接转换和从第二到最终逻辑域的折叠转换。最后,第一层次可以保留从第一到第二、第二到第三、和第三到第四逻辑域的直接转换。
图10是展示了实施进一步实施例中的多个TLB和虚拟数据高速缓存的计算机系统1000的一部分的框图。可以分别参照图1和图6的计算机系统100和600如上所述对系统1000进行配置。具体地,可以类似于上述的那些组件对存储器控制器1008、MTLB 1010和μTLB1015进行配置。系统1000进一步包括一个虚拟数据高速缓存1035,该虚拟数据高速缓存可以是与MTLB 1010和μTLB 1015分开可寻址的两个不同的硬件高速缓存。数据高速缓存1035可以用于存储系统存储器(如系统存储器150、650)中所代表的值。通过标签将数据定位在数据高速缓存1035中。数据高速缓存1035可以被配置成用于存储与MTLB 1010和μTLB 1015处所存储的转换相关联的标签。存储于数据高速缓存1035的标签可以包含例如μTLB 1015的相关联条目的字段的一个子集。通过维护数据高速缓存1035中的此数据,硬件(如存储器控制器)可以从在存储器访问操作中的转换查找过程中对这些条目的更快速的访问受益。例如,数据高速缓存1035可以被配置成某些或所有转换查找的第一参考,系统从数据高速缓存检索数据以避免对其他结构(如μTLB 1015、MTLB 1010和系统存储器150或650)的参考。在可替代的实施例中,存储于数据高速缓存的标签可以包含MTLB 1010和μTLB 1015之一或两者中的相关联条目的字段的一个子集。
图11是示例数据高速缓存标签1100的框图,该示例数据高速缓存标签可以存储在上文参照图10所述的数据高速缓存1035中。在此示例数据高速缓存标签中,所有字段可以从μTLB(例如,μTLB 1015)的相关联条目的相应字段填充。从该μTLB填充的这些字段可以包括Gt位1106、G位1108、ASID字段1109、ENTg字段1111、和ENTr字段1112、D位1117、和VP位1119,上文参照图5和图7描述了它们中的每一个。下文参照图12描述了多个示例过程,通过这些示例过程填充数据高速缓存并在MTLB、μTLB和数据高速缓存之间维护条目。
当虚拟地址和根物理地址之间的映射改变时,在TLB中可以替换任何包含来自虚拟地址和根物理地址之间的前一映射的信息的TLB条目或使其无效。可以用或者硬件或者软件手段完成这种替换。当任一客户机虚拟地址到客户机物理地址的映射被软件改变时,可以更新客户机TLB。μTLB和数据高速缓存两者可能已经使用来自前一客户机TLB映射的信息分别用于高速缓存或者地址转换或者数据值。为了维持地址和数据一致性,可以使与现有映射相关联的任何μTLB条目或数据高速缓存条目无效。在一个实施例中,这种无效可以由硬件(如存储器控制器)完成。ENTg和ENTr值唯一地标识用于形成μTLB条目或数据高速缓存标签的TLB条目,并因此当标识匹配条目时可以被搜索。
图12是展示了跨多个高速缓存维护条目的过程120的流程图。参照图10,可以如上文参照图4所述向GTLB 1020、RTLB 1030填充和更新条目(1205、1210),并且可以如上文参照图8所述填充和更新μTLB 1015(1215)。进一步地,存储器控制器1008或其他硬件可以通过导出给定μTLB条目的字段的选定子集将标签写入数据高速缓存1035(1220)。通过填充MTLB、μTLB和数据高速缓存的条目,存储器控制器1008可以如上文参照图4和图8所述响应于存储器访问请求执行转换查找(1225)。
存储器控制器1008或其他硬件可以进一步监视MTLB 1010其中条目的变化,如一个条目与另一条目的替换、条目的删除、或条目的无效(1230)。如果检测到这种改变,则存储器控制器1008可以搜索μTLB 1015和数据高速缓存1035中的每一个以定位条目和对应于已改变的条目的标签(1235)。在定位此类条目和标签时,可以通过修改其对应的“有效”位使其无效(1240)。下文进一步详细地描述了维护跨MTLB 1010、μTLB 1015和数据高速缓存1035的条目的示例实施例。
当替换GTLB 1020时,可以要求任何包含源自此条目的信息的μTLB 1015或数据高速缓存1035条目无效。标签值如ENTg字段(上文所述)可以用于这种无效。另外,与GTLB条目相关联的唯一标识符可以用于寻找包含来自此GTLB条目的所有μTLB和数据高速缓存条目。在一个实施例中,唯一标识符可以是GTLB条目的物理索引。首先,可以对具有等于一的Gt的μTLB和数据高速缓存条目进行搜索。存储器控制器或其他硬件可以使其ENTg字段匹配的所有条目无效,其中,客户机TLB条目的物理索引被替换。这种搜索可以顺序地、相关联地、或其某种组合完成。使用ENTg字段可以通过消除与虚拟地址标签对比的需要来简化无效任务,可能必须调整这些虚拟地址标签以容纳不同的地址宽度(例如,高速缓存列大小VS页面大小)并找到相比的虚拟地址值。使用ENTg字段还可以通过最小化CAM所需的模具区使能使用虚拟高速缓存,以便无效或将无效减少至只是维持地址和数据一致性所需的标签的子集。在可替代的实施例中,可以执行批量无效,由此使Gt等于一的所有数据高速缓存和μTLB标签无效。在进一步的实施例中,可以执行批量无效,由此所有数据高速缓存和μTLB标签,不管其Gt位值。
当替换RTLB 1030时,可以要求任何包含源自此条目的信息的μTLB 1015或数据高速缓存1035条目无效。ENTr字段可以用于这种无效。进一步地,与RTLB条目相关联的唯一标识符可以用于寻找包含来自此RTLB条目的所有μTLB和数据高速缓存条目。在一个实施例中,唯一标识符是根TLB条目的物理索引。然后可以执行对μTLB和数据高速缓存条目的搜索。硬件使其ENTr字段匹配的所有条目无效,其中,根TLB条目的物理索引被替换。这种搜索可以顺序地或相关联地或两者的某种组合完成。与GTLB替换情况相反,可以认为Gt位的值不相关,因为客户机条目和根条目两者可以依赖根映射。
如果不实施ENTr字段以使条目无效,移除根TLB条目会需要某种其他形式的数据高速缓存和μTLB无效。作为一个替代方案,整个数据高速缓存和μTLB可以是无效的。在一个进一步的替代方案中,可以匹配一个虚拟标签以用于无效。然而,当移除根TLB条目时,使用GVA标签使客户机条目无效会提出进一步的挑战。具体地,在某些实施例中,根TLB的GPA与映射到它的可能多个GVA之间不存在反向映射。因此,在这种实施例中,需要一个进一步的组件以推断映射到与正在替换的根TLB匹配的GPA的GVA。
图13是展示了一个进一步实施例中的地址转换的选择性旁路的框图。在某些计算机架构中,虚拟地址有时可以旁路地址转换并经历从虚拟地址到物理地址的某种固定地址变换。另外,在某些情况下,可以转换虚拟地址,但是经历该转换的区域具有某种不同的属性,比如将地址分类为I/O地址的属性。例如,在无内锁流水线微处理器(MIPS)架构中,某些虚拟地址不具有相应的TLB条目。相反,对于虚拟地址的某些范围而言,通过利用掩码将该地址变换成物理地址,这样使得该虚拟地址的低数位变成物理地址。类似的固定功能的变换在其他架构中是可能的,虽然使用了基址和界限寄存器或类似的系统。
当引入通过多阶段地址转换系统的虚拟化时,任何阶段都可能存在未映射的地址或旁路虚拟地址的可能性。另外,在客户机转换过程中,可以为匹配的虚拟地址指定某些特殊属性。在一个具有二阶段转换方案的实施例中,未映射的地址可以作为呈现至GTLB的GVA或作为呈现给RTLB的GPA存在。
多阶段转换的一种后果是正常未映射的GVA可以导致由RTLB所映射的GPA。另外,具有某种与其相关的具体属性的GVA将被转换成GPA。客户机操作系统可以指定:地址应当未被客户机TLB映射但是可能对根TLB没有控制权。因此,未映射的GVA可以变成映射的GPA。通常,这将是合适的,因为RTLB受超管理器的控制,该超管理器对与GPA相关联的RPA具有最终控制权。然而,对于某些类型的事务而言,如果GVA是未映射的或具有某种具体属性,旁路后续的地址转换并允许RPA等于GPA可以是有益的。
相应地,示例实施例可以基于所接收到的地址中的指示提供选择性地旁路地址转换的至少一部分。图13展示了一个示例中的旁路控制,其可以由存储器控制器(例如图1的存储器控制器108)或由其他硬件和/或软件实施。GTLB转换1320可以提供对应于GVA输入的已转换的GPA,与上述GTLB查找可比较地运行。同样的,RTLB转换1330可以提供对应于GPA输入的已转换的RPA,与上述RTLB查找可比较地运行。
旁路控制可以基于地址的属性或其他指示提供在GTLB 1320和RTLB 1330转换之一或两者处选择性地旁路转换。如果使能旁路,可以由固定变换1365替代GTLB 1320和/或由固定变换1366替代RTLB 1330对该地址进行变换(例如,通过地址掩蔽)。在一个实施例中,在特许的软件控制下的旁路位集合1370用于旁路RTLB转换1330。旁路确定1360可以根据原始GVA和/或此GVA的属性和旁路位的状态。例如,在MIPS架构中,可以将一个位定义为使得KSEGO(未映射的虚拟地址段)中的所有GVA被变换成GPA(通过在固定变换1365处的地址掩蔽),并且GPA被变换成RPA(通过在固定变换1366处的地址掩蔽),由此旁路GTLB转换1330和RTLB转换1330两者。在这种配置中,应用地址掩码后,GPA可以等于GVA,并且应用进一步的地址掩码后RPA将等于GPA。在某些实施例中,在GPA和RPA之间可能不需要地址掩码,意味着GPA与RPA完全相同。在本示例中,客户机地址空间包含存储器空间和输入/输出(I/O)空间两者。可以将这些地址空间中的每一个分成多个不同的地址空间。
如果GVA包含在与相应的旁路位1370相关联的地址空间中,旁路确定可以使旁路RTLB转换1330。这些旁路位中的每一个可以与相关联的地址空间有关,意味着如果所接收的地址属于给定的地址空间并且该旁路位针对给定的地址空间被使能,可以旁路转换。如果将旁路位设置为“1”并且原始GVA存在于相应的地址空间,例如旁路位1370可以使RTLB转换1330被旁路。
图14是展示了选择性旁路地址转换的过程1400的流程图。在接收到GVA时,确定该GVA是否被映射到GPA,或指定未映射的地址空间(1410)。存储器控制器(或其他硬件或软件)取决于此确定将GVA转换或变换成GPA(1430)。如果未映射GVA,则引用旁路位(例如,图13的旁路位1370)来确定是否使能旁路(1415)。可以通过GVA所属的地址空间中的段来确定使用哪个旁路位。如果使能相应的旁路位,则可以引起RPA等于GPA(在用或不用地址掩码变换GPA的情况下)(1440)。如果GVA不是未映射的,或未使能旁路,则反而通过访问RTLB将GPA转换成RPA(1435)。
在仅旁路GTLB的情况下(即,继续访问RTLB),客户机操作系统可以确定旁路转换以直接访问物理存储器。然而,超管理器可以禁止这种直接访问,并因此继续使(GTLB旁路所产生的)GPA被转换成RPA。
如上所述的μTLB可以缓存从GVA到RPA的转换。因此,在旁路的情况下,可以或不可以将旁路的结果缓存在μTLB中。如果该结果未缓存在μTLB中,则在后续访问中会发生μTLB丢失,并且可以重复旁路确定和掩蔽。
虽然已经参考本发明的示例实施例具体地示出和描述了本发明,但本领域普通技术人员将会理解在不脱离由所附权利要求书限定的本发明范围的情况下可在形式和细节上做出不同的改变。

Claims (45)

1.一种将地址转换高速缓存在存储器架构中的电路,包括:
一个高速缓存,被配置成用于存储多个地址域之间的多种转换,该高速缓存作为一个第一逻辑部分和一个第二逻辑部分可寻址,该第一逻辑部分被配置成用于存储一个第一地址域和一个第二地址域之间的多种转换,该第二逻辑部分被配置成用于存储该第二地址域与一个第三地址域之间的多种转换;
一个处理器,被配置成用于使一个地址请求与该高速缓存匹配并输出一个相应的地址结果;以及
一个寄存器,被配置成用于定义该第一和第二逻辑部分之间的一个边界,所述边界指示所述高速缓存内的位置,所述位置由存储在所述寄存器中的值定义。
2.如权利要求1所述的电路,其中,该处理器被进一步配置成用于使该第一地址域中的一个地址请求与该第一逻辑部分中的多个条目匹配,从而确定一个具有该第二地址域中的一个地址的相应的条目。
3.如权利要求2所述的电路,其中,该处理器被进一步配置成用于使该第一逻辑部分中所确定的该条目与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。
4.如权利要求1所述的电路,其中,该处理器被进一步配置成用于使该第二地址域中的一个地址请求与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。
5.如权利要求1所述的电路,其中,该高速缓存中的多个条目的至少一个子集包括一个索引标识符,并且进一步包括一个解码器,该解码器被配置成用于基于该索引标识符定位该高速缓存中的一个条目。
6.如权利要求5所述的电路,其中,该地址请求包括该索引标识符的一个指示。
7.如权利要求6所述的电路,其中,该索引标识符被配置在一个索引标识符序列中,该序列的顺序取决于该地址请求的一个来源。
8.如权利要求1所述的电路,其中,该边界的位置根据一个存储于该寄存器的值而变化。
9.如权利要求8所述的电路,其中,该第一和该二逻辑部分中的至少一个的一个大小根据存储于该寄存器的该值而变化。
10.如权利要求9所述的电路,其中,该处理器被进一步配置成用于响应于该第一和第二逻辑部分中的该至少一个的该大小被改变来更新该高速缓存中的多个条目。
11.如权利要求1所述的电路,其中,该第一地址域是一个客户机虚拟地址域,该第二地址域是一个客户机物理地址域,并且该第三地址域是一个根物理地址域。
12.如权利要求1所述的电路,其中,该高速缓存中的每个条目包括一个指示该条目是该第一逻辑部分还是该第二逻辑部分的一个成员的位。
13.如权利要求12所述的电路,其中,该地址请求包括该位对应于所请求的一个条目的一个指示。
14.如权利要求1所述的电路,其中,该处理器被配置成用于在一个给定时间段内抑制多个匹配条目所导致的一次异常。
15.如权利要求14所述的电路,其中,该给定时间段包括多个发送该地址请求的来源之间的一种过渡。
16.如权利要求1所述的电路,其中,该高速缓存中的每个条目包括一个指示一个与该条目相关联的来源的位。
17.如权利要求1所述的电路,其中,该处理器被配置成用于基于该地址请求的一个来源控制对该第一逻辑部分和该第二逻辑部分的访问。
18.如权利要求1所述的电路,其中,一个高速缓存被进一步配置成作为一个第三逻辑部分可寻址,该第三逻辑部分被配置成用于存储该第三地址域与一个第四地址域之间的转换,并且其中,该寄存器被进一步配置成用于定义该第二和第三逻辑部分之间的一个边界。
19.如权利要求1所述的电路,其中,该处理器被进一步配置成用于基于该地址请求中的一个指示搜索该第一和第二逻辑部分中的所选择的一个或两者。
20.如权利要求1所述的电路,其中,该处理器被进一步配置成用于:在针对该地址请求检测该高速缓存中的一个丢失的条目时,输出一个对于对应于该丢失的条目的一种转换的请求。
21.如权利要求20所述的电路,其中,该处理器被进一步配置成用于:在接收到对应于该丢失的条目的该转换时,在该高速缓存的该第一和第二逻辑部分中的所选择的一个的一个随机确定的条目处将该转换输入至该高速缓存。
22.如权利要求1所述的电路,其中,该第一逻辑部分包括一个第一索引并且该第二逻辑部分包括一个第二索引,该第二索引是该第一索引的一个反向。
23.一种将地址转换高速缓存在存储器架构中的方法,包括:
将一个第一地址域与一个第二地址域之间的多种转换存储至一个高速缓存的一个第一逻辑部分;
将该第二地址域与一个第三地址域之间的多种转换存储至该高速缓存的一个第二逻辑部分;
借助一个寄存器值定义该第一和第二逻辑部分之间的一个边界,所述边界指示所述高速缓存内的位置,所述位置由存储在所述寄存器中的值定义;以及
使一个地址请求与该高速缓存匹配并输出一个相应的地址结果。
24.如权利要求23所述的方法,其中,使该地址请求匹配包括使该第一地址域中的一个地址请求与该第一逻辑部分中的多个条目匹配,从而确定一个具有该第二地址域中的一个地址的相应的条目。
25.如权利要求24所述的方法,进一步包括使该第一逻辑部分中所确定的该条目与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。
26.如权利要求23所述的方法,其中,匹配该地址请求包括使该第二地址域中的一个地址请求与该第二逻辑部分中的多个条目匹配,从而确定一个具有该第三地址域中的一个地址的相应的条目,该地址结果包括该第三地址域中的该地址。
27.如权利要求23所述的方法,其中,该高速缓存中的多个条目的至少一个子集包括一个索引标识符,并且进一步包括基于该索引标识符定位该高速缓存中的一个条目。
28.如权利要求27所述的方法,其中,该地址请求包括该索引标识符的一个指示。
29.如权利要求28所述的方法,其中,该索引标识符被配置在一个索引标识符序列中,该序列的顺序取决于该地址请求的一个来源。
30.如权利要求23所述的方法,进一步包括根据一个存储于该寄存器的值改变该边界的位置。
31.如权利要求30所述的方法,进一步包括根据存储于该寄存器的该值而改变该第一和该第二逻辑部分中的至少一个的一个大小。
32.如权利要求31所述的方法,进一步包括响应于该第一和第二逻辑部分中的该至少一个的该大小被改变来更新该高速缓存中的多个条目。
33.如权利要求23所述的方法,其中,该第一地址域是一个客户机虚拟地址域,该第二地址域是一个客户机物理地址域,并且该第三地址域是一个根物理地址域。
34.如权利要求23所述的方法,其中,该高速缓存中的每个条目包括一个指示该条目是该第一逻辑部分还是该第二逻辑部分的一个成员的位。
35.如权利要求34所述的方法,其中,该地址请求包括该位对应于所请求的一个条目的一个指示。
36.如权利要求23所述的方法,进一步包括在一个给定时间段内抑制多个匹配条目所导致的一次异常。
37.如权利要求36所述的方法,其中,该给定时间段包括多个发送该地址请求的来源之间的一种过渡。
38.如权利要求23所述的方法,其中,该高速缓存中的每个条目包括一个指示一个与该条目相关联的来源的位。
39.如权利要求23所述的方法,进一步包括基于该地址请求的一个来源控制对该第一逻辑部分和该第二逻辑部分的访问。
40.如权利要求23所述的方法,进一步包括:
存储该第三地址域与一个第四地址域之间的多种转换;以及
定义该第二和第三逻辑部分之间的一个边界。
41.如权利要求23所述的方法,进一步包括基于该地址请求中的一个指示搜索该第一和第二逻辑部分中的所选择的一个或两者。
42.如权利要求23所述的方法,进一步包括在针对该地址请求检测到该高速缓存中的一个丢失的条目时输出一个对于对应于该丢失的条目的一种转换的请求。
43.如权利要求42所述的方法,进一步包括在接收到对应于该丢失的条目的该转换时在该高速缓存的该第一和第二逻辑部分中的所选择的一个的一个随机确定的条目处将该转换输入至该高速缓存。
44.如权利要求23所述的方法,其中,该第一逻辑部分包括一个第一索引并且该第二逻辑部分包括一个第二索引,该第二索引是该第一索引的一个反向。
45.一种将地址转换高速缓存在存储器架构中的电路,包括:
一个被配置成用于存储多个地址域之间的多种转换的转换旁视缓冲器TLB,该TLB作为一个客户机TLB和一个根TLB可寻址,该客户机TLB被配置成用于存储一个客户机虚拟地址GVA域与一个客户机物理地址GPA域之间的多种转换,该根TLB被配置成用于存储该GPA域与一个根物理地址RPA域之间的多种转换,高速缓存中的每个条目包括一个指示该条目是该客户机TLB还是该根TLB的一个成员的位;
一个处理器,被配置成用于使一个地址请求与该高速缓存匹配并输出一个相应的地址结果;以及
一个寄存器,被配置成用于定义该客户机TLB和该根TLB之间的一个边界。
CN201410498401.4A 2013-09-26 2014-09-25 用于多个顺序地址转换的合并的tlb结构 Active CN104516833B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/038,156 2013-09-26
US14/038,156 US9639476B2 (en) 2013-09-26 2013-09-26 Merged TLB structure for multiple sequential address translations

Publications (2)

Publication Number Publication Date
CN104516833A CN104516833A (zh) 2015-04-15
CN104516833B true CN104516833B (zh) 2018-02-06

Family

ID=52692040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410498401.4A Active CN104516833B (zh) 2013-09-26 2014-09-25 用于多个顺序地址转换的合并的tlb结构

Country Status (4)

Country Link
US (1) US9639476B2 (zh)
KR (1) KR101587361B1 (zh)
CN (1) CN104516833B (zh)
HK (1) HK1207439A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208103B2 (en) 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9268694B2 (en) 2013-09-26 2016-02-23 Cavium, Inc. Maintenance of cache and tags in a translation lookaside buffer
US9645941B2 (en) 2013-09-26 2017-05-09 Cavium, Inc. Collapsed address translation with multiple page sizes
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9830275B2 (en) * 2015-05-18 2017-11-28 Imagination Technologies Limited Translation lookaside buffer
US10007435B2 (en) * 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
KR102473665B1 (ko) 2015-07-28 2022-12-02 삼성전자주식회사 스토리지 디바이스 및 스토리지 가상화 시스템
KR102329924B1 (ko) 2015-10-27 2021-11-23 삼성전자 주식회사 전자 장치 및 이의 메모리 관리 방법
US10534715B2 (en) 2016-04-22 2020-01-14 International Business Machines Corporation Operation of a multi-slice processor implementing a unified page walk cache
US10048881B2 (en) * 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10534719B2 (en) * 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10353826B2 (en) 2017-07-14 2019-07-16 Arm Limited Method and apparatus for fast context cloning in a data processing system
US10467159B2 (en) * 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10884850B2 (en) 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
US11232042B2 (en) 2019-11-15 2022-01-25 Microsoft Technology Licensing, Llc Process dedicated in-memory translation lookaside buffers (TLBs) (mTLBs) for augmenting memory management unit (MMU) TLB for translating virtual addresses (VAs) to physical addresses (PAs) in a processor-based system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940872A (en) * 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
CN1567362A (zh) * 2003-06-10 2005-01-19 大唐微电子技术有限公司 动态逻辑分区并控制访问权限的ic智能卡及其实现方法
CN101031893A (zh) * 2004-09-30 2007-09-05 英特尔公司 使用分层转换表对输入/输出设备的地址转换

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470437B1 (en) 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
US8356158B2 (en) 2003-07-15 2013-01-15 Broadcom Corporation Mini-translation lookaside buffer for use in memory translation
US20050080934A1 (en) 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
EP1736887A3 (fr) 2005-05-31 2009-04-22 Stmicroelectronics Sa Repertoire de pages memoire
US7788464B2 (en) * 2006-12-22 2010-08-31 Microsoft Corporation Scalability of virtual TLBs for multi-processor virtual machines
US8024547B2 (en) 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US7941631B2 (en) * 2007-12-28 2011-05-10 Intel Corporation Providing metadata in a translation lookaside buffer (TLB)
US8166249B2 (en) 2008-03-10 2012-04-24 International Business Machines Corporation Performing a least recently used (LRU) algorithm for a co-processor
US9239799B2 (en) 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
US8275971B2 (en) * 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US20120246381A1 (en) 2010-12-14 2012-09-27 Andy Kegel Input Output Memory Management Unit (IOMMU) Two-Layer Addressing
US8595464B2 (en) 2011-07-14 2013-11-26 Oracle International Corporation Dynamic sizing of translation lookaside buffer for power reduction
US9152572B2 (en) * 2011-12-30 2015-10-06 Intel Corporation Translation lookaside buffer for multiple context compute engine
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US20140006681A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Memory management in a virtualization environment
US9645941B2 (en) 2013-09-26 2017-05-09 Cavium, Inc. Collapsed address translation with multiple page sizes
US9208103B2 (en) 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9268694B2 (en) 2013-09-26 2016-02-23 Cavium, Inc. Maintenance of cache and tags in a translation lookaside buffer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940872A (en) * 1996-11-01 1999-08-17 Intel Corporation Software and hardware-managed translation lookaside buffer
CN1567362A (zh) * 2003-06-10 2005-01-19 大唐微电子技术有限公司 动态逻辑分区并控制访问权限的ic智能卡及其实现方法
CN101031893A (zh) * 2004-09-30 2007-09-05 英特尔公司 使用分层转换表对输入/输出设备的地址转换

Also Published As

Publication number Publication date
HK1207439A1 (zh) 2016-01-29
US9639476B2 (en) 2017-05-02
KR20150034662A (ko) 2015-04-03
CN104516833A (zh) 2015-04-15
US20150089116A1 (en) 2015-03-26
KR101587361B1 (ko) 2016-01-20

Similar Documents

Publication Publication Date Title
CN104516833B (zh) 用于多个顺序地址转换的合并的tlb结构
CN104516830B (zh) 多阶段地址转换中的转换旁路
US10042778B2 (en) Collapsed address translation with multiple page sizes
US9268694B2 (en) Maintenance of cache and tags in a translation lookaside buffer
US7426626B2 (en) TLB lock indicator
US5493660A (en) Software assisted hardware TLB miss handler
US4775955A (en) Cache coherence mechanism based on locking
US6772316B2 (en) Method and apparatus for updating and invalidating store data
US7461209B2 (en) Transient cache storage with discard function for disposable data
US20040064668A1 (en) Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
CN105814548B (zh) 具有使用不同编索引方案的主高速缓存器和溢出高速缓存器的高速缓存器系统
US11775445B2 (en) Translation support for a virtual cache
WO2018229700A1 (en) Sharing virtual and real translations in a virtual cache
KR20160148333A (ko) 메모리 관리 유닛 및 그 동작 방법
EP3881189B1 (en) An apparatus and method for controlling memory accesses
EP0220451B1 (en) A cache coherence mechanism based on locking
US11119945B1 (en) Context tracking for multiple virtualization layers in a virtually tagged cache
CN116830092A (zh) 用于跟踪存储器区域的内容的修改的技术
JPS6367662A (ja) 仮想空間管理方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1207439

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Cavium, Inc.

Address before: California, USA

Patentee before: Cavium, Inc.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20200422

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200422

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: California, USA

Patentee before: Cavium, Inc.

TR01 Transfer of patent right
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1207439

Country of ref document: HK