CN114761934A - 在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB) - Google Patents

在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB) Download PDF

Info

Publication number
CN114761934A
CN114761934A CN202080079264.4A CN202080079264A CN114761934A CN 114761934 A CN114761934 A CN 114761934A CN 202080079264 A CN202080079264 A CN 202080079264A CN 114761934 A CN114761934 A CN 114761934A
Authority
CN
China
Prior art keywords
memory
page table
tlb
entry
mmu
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.)
Pending
Application number
CN202080079264.4A
Other languages
English (en)
Inventor
M·T·文卡塔拉曼
T·P·施派尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing 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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114761934A publication Critical patent/CN114761934A/zh
Pending legal-status Critical Current

Links

Images

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/1009Address translation using page tables, e.g. page table structures
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

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

公开了在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储器转换后备缓冲器(TLB)(mTLB)。在所公开的示例中,在系统存储器中支持针对每个进程专用的存内TLB,以使得一个进程的高速缓存页表条目不会取代另一个进程的高速缓存页表条目。当进程被调度以在中央处理单元(CPU)中执行时,为该进程所存储的存内TLB地址可以被CPU MMU中的页表遍历器电路用来访问专用的存内TLB,以用于在MMU TLB发生TLB未命中时执行用于执行VA到PA转换的进程。如果存内TLB发生TLB未命中,则页表遍历器电路可以遍历MMU中的页表。

Description

在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为 物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储 器中转换后备缓冲器(TLB)(mTLB)
技术领域
本公开的技术涉及采用中央处理单元(CPU)(也称为“处理器”) 的基于处理器的系统,并且更具体地涉及被访问以提供虚拟地址 (VA)到物理地址(PA)的转换的包括转换后备缓冲器(TLB)和页表的处理器中的存储器管理单元(MMU)。
背景技术
微处理器,也被称为“处理器”,执行各种各样的应用的计算任务。传统的微处理器包括一个或多个中央处理单元(CPU),也称为处理器核心。处理器在包括存储器系统的基于处理器的系统中被实现,存储器系统被访问以检索由处理器执行以执行任务的计算机指令。还访问存储系统以检索用于执行计算机指令的数据。所执行的计算机指令的结果可以作为数据而被存储在存储系统中。存储器系统包括主存储器或系统存储器,其位于处理器的片上或片外并且被配置为检索和存储与物理存储器地址相关联的数据,该物理存储器地址也被称为由处理器提供的物理地址(PA)。存储器系统还可以包括高速缓存存储器系统,其包括一个或多个级别的高速缓存存储器(其是比系统存储器更快的存储器)并且被配置为存储针对由处理器更频繁地访问的数据的PA子集的数据,以用于提高存储器访问性能。
在处理器上执行进程的操作系统可以被配置为使用虚拟存储器作为虚拟存储器系统。在虚拟存储器系统中,每个进程被赋予这样的印象:有比存储器系统中的PA更多的存储器地址可用于检索和存储数据。例如,对于给定进程,处理器中的每个CPU可能具有必须被映射到存储器系统中的较小PA空间0x00000000-0x00FFFFFF的 0x00000000-0x7FFFFFFF的较大VA空间。当一个进程请求访问存储器中的数据时,该进程提供一个存储器地址,它是基于较大PA空间的虚拟地址(VA)。VA必须被映射到存储或检索数据的存储系统中的实际PA。就这方面,处理器中的每个CPU都可以包含存储器管理单元(MMU),其被采用来将VA转换为PA。大多数处理器架构都支持用于将VA映射到PA的被称为“页表”的存储器中表格。页表是每个存储器页包含一个页表条目(PTE)以将VA映射到PA 的数据结构。大多数页表都有多个级别,这取决于基本页面大小、在每个级别的页表条目数以及所支持的VA空间的位数。图1图示了多分级页表100的示例,该多分级页表100包括三(3)级的分级页表102(2)-102(0),其被配置为被访问以将VA 104变换为PA。分级页表102(2)-102(0)被组织以提供4千字节(KB)的基础页面大小,其中每个页表级别的PTE数量是512(即,可通过9位寻址),支持39位VA空间。顶级(第二分级)页表102(2)位于第二分级,并由VA 104的第38-30位中的第二分级索引来进行索引。第二分级页表102(2)的页表条目(条目0-条目511)指向“X”个第一分级页表102(1)(0)-102(1)(X)之一,其然后由位29-21 中的第一分级索引来进行索引。第一分级页表102(1)中的页表条目指向“Y”个第0分级页表102(0)(0)-102(0)(Y)之一,其然后由VA104的位20-12中的第0级索引来进行索引。在此示例中,跨页表100中的分级页表102(2)-102(0)访问的页表条目识别物理存储器中的4KB页面的PA。在此示例中,VA 104的PA的偏移位是位11-0中的VA 104中的偏移。
MMU通常提供硬件页表遍历器架构以将VA转换为PA。对于给定的VA,页表遍历器从顶部遍历页表并向下遍历页表级别,直到找到包含针对该VA的PA的叶PTE。页表遍历涉及在每个页表级别的存储器引用,这可能非常耗时。为了解决这种页表遍历效率低下的问题,MMU通常包括一个被称为转换后备缓冲器(TLB)的高速缓存存储器,用于高速缓存最新的VA到PA转换。响应于需要VA 到PA转换的存储器地址请求,MMU首先基于存储器访问请求的 VA访问TLB。如果TLB中不存在VA到PA的转换,则发生TLB 未命中,并且MMU遍历页表,直到找到VA到PA的转换,然后将其加载到TLB中以供将来访问。如果TLB中存在VA到PA的转换,则这是TLB命中,并且避免了对页表的页表遍历。因此,TLB的命中率是基于处理器的系统中的存储器系统的存储器访问性能的关键部分。
在CPU上执行工作负载时,多个进程和操作系统内核竞争MMU 中的TLB的条目。MMU可以使用最近最少使用(LRU)算法来逐出TLB中较旧的条目,因为作为TLB未命中和页表遍历的结果导致新条目被插入到TLB中。随着存储器上的工作负载压力的增加,TLB 可能开始抖动,这意味着TLB未命中以及由此导致的逐出和插入频繁发生,从而降低了性能。在MMU硬件级别,有两种方法可以解决此问题。一种解决方案是增加TLB的大小以使较不频繁发生TLB 未命中。第二种解决方案是在MMU中提供中间页表指针的高速缓存。在这种场景中,当发生TLB未命中时,页表遍历器会在这个中间页表指针高速缓存中查找匹配的中间页表。在高速缓存命中时,页表遍历器不是从顶分级页表而是从匹配的中间页表开始页表遍历,以缩短遍历页表的时间。然而,这些解决方案中的每一个都增加了MMU硬件的成本和复杂性。此外,这些解决方案最终可能只会延迟最终的TLB抖动。这个问题在虚拟环境中也进一步加剧。当客户虚拟机在主机计算机上运行时,客户虚拟机有它自己的页表,用于将客户VA转换为客户PA。主机计算机也有它自己的页表,用于将客户PA转换为主机PA。由于存储器只能由CPU使用主机PA 来访问,因此每个客户PA都必须由CPU转换为其主机PA。当页表遍历器遍历客户页表时,它需要在客户页表的每一级别将客户PA转换为主机PA,以便访问在该级别的客户中间页表。对于在嵌套的管理程序上运行的客户来说,转换开销可能更大。
发明内容
本文公开的各方面包括在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU) TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB)。基于处理器的系统包括具有一个或多个中央处理单元(CPU)的处理器,每个中央处理单元(CPU)被配置为执行用于进程的计算机软件指令。基于处理器的系统还包括存储器系统,该存储器系统包括能够通过PA寻址的主物理存储器。处理器是虚拟存储器系统,它采用虚拟寻址来使存储器空间的可用存储器大于基于处理器的系统的主系统存储器中的物理存储器空间的数量。在某些示例中,为每个 CPU提供共享或专用MMU以用于将VA转换为PA。MMU与系统存内TLB(“MMU TLB”)和页表(其是存储器电路)相关联。系统存储器是可完全由基于处理器的系统的PA空间寻址的存储器。 MMU TLB是与MMU相关联的高速缓存存储器,并且被配置为高速缓存页表中的页表条目,以避免在MMU TLB中包含用于VA到PA 转换的页表中的页表条目时完全遍历页表的需要。
在本文公开的示例性方面中,为了增强MMU TLB以便减少必须遍历页表或执行完整页表遍历以将VA转换为PA,基于处理器的系统还支持在系统存储器中被分配的存内TLB。就这方面,响应于针对VA到PA转换的MMU TLB未命中,访问存内TLB以确定用于VA到PA转换的页表条目是否被包含在存内TLB中。如果用于 VA到PA转换的页表条目被包含在存内TLB中,则存内TLB中的页表条目被用来执行VA到PA转换。以这种方式,可以高速缓存用于VA到PA转换的附加的页表条目,而无需扩展MMU TLB的大小。如果期望的话,可以调整存内TLB的大小以提供更高的命中率。如果用于VA到PA转换的页表条目未被包含在存内TLB中,则MMU遍历其页表以执行VA到PA转换。
在本文公开的示例中,专用的存内TLB在系统存储器中被支持用于处理器中的每个进程并且不会跨进程共享,因此一个进程的高速缓存页表条目不会取代另一个进程的高速缓存页表条目。就这方面,处理器中的每个CPU都支持存储指向系统存储器中的存内TLB的指针地址,以使得CPU中的MMU可以访问对应于特定进程的专用的存内TLB。在本文公开的示例中,专用的存内TLB也可以被支持用于监督在主机CPU上执行的客户进程的虚拟化的操作系统内核和/或管理程序。当进程被调度以在CPU中执行时,为该进程所存储的存内TLB地址可以被加载到CPU中的存内TLB寄存器中。这允许MMU的页表遍历器电路访问专用的存内TLB,以用于在MMU TLB发生TLB未命中时执行VA到PA转换的执行进程。如果存内 TLB发生TLB未命中,则MMU的页表遍历器电路可以遍历页表。支持每个进程的专用的存内TLB还允许为不同的进程被分配不同大小的存内TLB,如果期望的话,例如可以具有不同大小的存内TLB,这可能基于它们的存储器访问模式和共享存内TLB的进程线程的数量。在另一个示例中,在系统存储器中的存内TLB被直接存储器映射到存储器地址,这也可以简化高速缓存页表条目替换策略。
在其他示例中,存内TLB可以被配置为将页表中的不同级别的页表条目高速缓存到MMU TLB中。在另一个示例中,存内TLB可以被配置为仅将页表中的某些级别的分级页表高速缓存到MMU TLB中。例如,与给定MMU相关联的存内TLB可以被配置为高速缓存来自比在MMU TLB中高速缓存的页表条目更高级别的页表的页表条目,以增强性能。因此,如果在MMUTLB中的任何高速缓存的非叶页表条目上发生TLB命中,则页表遍历器电路为了将VA 转换为PA将只需要遍历较低分级页表。如果在MMU TLB中发生 TLB未命中,则为了将VA转换为PA的匹配页表条目,页表遍历器电路可以查询存内TLB。
就这方面,在一个示例性方面,提供了一种基于处理器的系统的处理器中的CPU中的存储器管理系统。存储器管理系统包括:基于处理器的系统的系统存储器中的页表,该页表包括至少一个分级页表,每个页表包括多个页表条目,每个页表条目能够通过VA寻址并且被配置为存储与VA相关联的PA;包括多个MMU TLB条目的MMU TLB,每个MMU TLB条目被配置为在页表中存储高速缓存的页表条目;系统存储器中的存内TLB,存内TLB包括多个存内TLB 条目,每个存内TLB条目被配置为在页表中存储高速缓存的页表条目;页表遍历器电路,被配置为基于VA访问页表中的至少一个分级页表中的多个页表条目;以及MMU电路。MMU电路被配置为:基于为CPU中的进程执行的计算机软件指令来接收包括VA的存储器访问请求,并确定MMU TLB中的MMU TLB条目是否包含页表条目,该页表条目包括与VA相对应的PA。响应于确定MMU TLB 不包含包含直接与VA相对应的页表条目的MMU TLB条目,MMU 电路还被配置为:确定与在被分配给基于处理器的系统中的系统存储器中的进程的存内TLB中的VA相对应的存内TLB条目中存储的 VA是否与存储器访问请求的VA匹配,并且响应于确定存储在存内 TLB条目中的VA与存储器访问请求的VA匹配,基于于VA相对应的存内TLB条目中被访问的页表条目将VA转换为PA。
在另一个示例性方面,提供了一种在基于处理器的系统的处理器中的CPU中将VA转换为PA的方法。该方法包括:基于为CPU 中的进程执行的计算机软件指令来接收包括VA的存储器访问请求,并且确定包括多个MMU TLB条目的MMU TLB中的MMU转换后备缓冲器(TLB)条目是否包含页表条目,该页表条目包括与VA相对应的PA,该多个MMU TLB条目中的每个都被配置为在页表中存储高速缓存的页表条目。页表条目被包含在包括至少一个分级页表的页表中,每个分级页表包括多个页表条目,每个页表条目能够通过VA寻址并被配置为存储与VA相关联的PA。响应于确定MMU TLB不包含包含与VA相对应的页表条目的MMU TLB条目,该方法还包括:确定与被分配给在基于处理器的系统中的系统存储器中的进程的基于处理器的系统中的系统存储器中的存内TLB中的VA 相对应的存内TLB条目中存储的VA是否与存储器访问请求的VA 匹配。响应于确定存储在存内TLB条目中的VA与存储器访问请求的VA匹配,该方法还包括基于与VA相对应的存内TLB条目中被访问的页表条目将VA转换为PA。
在另一个示例性方面,提供了基于处理器的系统。基于处理器的系统包括系统存储器和处理器,处理器包括一个或多个CPU,每个CPU被配置为执行操作系统软件程序中的计算机指令和一个或多个进程。一个或多个CPU之中的每个CPU包括存储器管理系统,包括:系统存储器中的页表,该页表包括多个分级页表,每个分级页表包括多个页表条目,每个页表条目能够通过VA寻址并配置为存储与VA相关联的PA;包括多个MMU TLB条目的MMU TLB,每个MMU TLB条目被配置为在页表中存储高速缓存的页表条目;系统存储器中的存内TLB,存内TLB包括多个存内TLB条目,每个存内TLB条目被配置为在页表中存储高速缓存的页表条目;页表遍历器电路,被配置为基于VA来访问页表中的至少一个分级页表中的页表条目;以及MMU电路。MMU电路被配置为:基于对一个或多个CPU之中的CPU中的一个或多个进程中的进程执行的计算机软件指令来接收包括VA的存储器访问请求,并确定MMU TLB中的 MMUTLB条目是否包含页表条目,该页表条目包含与VA相对应的 PA。响应于确定MMU TLB不包含包含与VA相对应的页表条目的 MMU TLB条目,MMU电路还被配置为:确定与被分配给在基于处理器的系统中的系统存储器中的进程的存内TLB中的VA相对应的存内TLB条目中存储的VA是否与存储器访问请求的VA匹配。响应于确定存储在存内TLB条目中的VA与存储器访问请求的VA匹配,MMU电路还被配置为基于存内TLB条目中被访问的页表条目对应于VA,将VA转换为PA。
在阅读以下结合附图对优选实施例的详细描述后,本领域技术人员将了解本公开的范围并实现其附加方面。
附图说明
被并入并形成本说明书一部分的附图图示了本公开的若干方面,并且与说明书一起用于解释本公开的原理。
图1是包括在处理器的存储器管理单元(MMU)中的用于将虚拟地址(VA)转换为存储器中的物理地址(PA)的多分级页表的示例;
图2是示例性基于处理器的系统的示意图,其包括具有多个中央处理单元(CPU)的处理器,每个中央处理单元(CPU)被配置为处理从存储器提取的指令,这些指令包括从存储器提取数据并将数据存储到存储器的指令;
图3是示例性存储器管理系统的示意图,其包括在CPU中提供的至少一个MMU和包括用于将VA转换为PA的MMU转换后备缓冲器(TLB)和页表的系统存储器,并且其中存储器管理系统还被配置为在系统存储器中包括进程专用的存内TLB,其被配置为在页表中存储高速缓存的页表条目,用于在MMU TLB未命中的情况下将 VA转换为PA;
图4A图示了示例性VA的示例性位格式,其可以被图2中的处理器中的CPU用于寻址存储器系统;
图4B图示了可以在图3中的MMU中提供的示例性页表,其中页表包括多个分级页表,每个分级页表包含能够通过VA寻址的页表条目;
图5A图示了示例性存内TLB寄存器,其包含被配置为存储指向系统存储器中的存内TLB的存储器地址的存储器地址字段;
图5B图示了系统存储器中的存储器内TLB中的示例性存储器内TLB条目;
图6是图示图3中的处理器中的存储器管理系统中的MMU将 VA转换为PA并访问系统存储器中的进程专用的存内TLB以将VA 转换为PA的示例性过程的流程图;
图7A和图7B是包含叶页表条目并且可以被包括在图3中的存储器管理系统中的系统存储器中用于将VA转换为PA的其他多分级页表的示意图;
图8是对来自多分级页表的条目进行高速缓存的示例性存内 TLB的示意图;
图9是示例性基于处理器的系统的框图,其包括具有一个或多个CPU的处理器并且包括存储器管理系统,该存储器管理系统包括在CPU中提供的至少一个MMU和包括用于将VA转换为PA的 MMU TLB和页表的存储器管理系统,并且其中存储器管理系统还被配置为在系统存储器中包括进程专用的存内TLB,系统存储器被配置为在MMU TLB未命中的情况下将高速缓存的页表条目存储在用于将VA转换为PA的页表中,包括但不限于图2中的处理器和图3中的存储器管理系统。
具体实施方式
本文公开的各方面包括在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU) TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB)。基于处理器的系统包括具有一个或多个中央处理单元(CPU)的处理器,每个中央处理单元(CPU)被配置为执行用于进程的计算机软件指令。基于处理器的系统还包括存储器系统,该存储器系统包括能够通过PA寻址的主物理存储器。处理器是虚拟存储器系统,它采用虚拟寻址来使存储器空间的可用存储器大于基于处理器的系统的主系统存储器中的物理存储器空间的数量。在某些示例中,为每个 CPU提供共享或专用MMU以用于将VA转换为PA。MMU与系统存内TLB(“MMU TLB”)和页表(其是存储器电路)相关联。系统存储器是可完全由基于处理器的系统的PA空间寻址的存储器。 MMU TLB是与MMU相关联的高速缓存存储器,并且被配置为高速缓存页表中的页表条目,以避免在MMU TLB中包含用于VA到PA 转换的页表中的页表条目时完全遍历页表的需要。
在本文公开的示例性方面中,为了增强MMU TLB以便减少必须遍历页表或执行完整页表遍历以将VA转换为PA,基于处理器的系统还支持在系统存储器中被分配的存内TLB。就这方面,响应于针对VA到PA转换的MMU TLB未命中,访问存内TLB以确定用于VA到PA转换的页表条目是否被包含在存内TLB中。如果用于 VA到PA转换的页表条目被包含在存内TLB中,则存内TLB中的页表条目被用来执行VA到PA转换。以这种方式,可以高速缓存用于VA到PA转换的附加的页表条目,而无需扩展MMU TLB的大小。如果期望的话,可以调整存内TLB的大小以提供更高的命中率。如果用于VA到PA转换的页表条目未被包含在存内TLB中,则MMU遍历其页表以执行VA到PA转换。
在本文公开的示例中,专用的存内TLB在系统存储器中被支持用于处理器中的每个进程并且不跨进程共享,因此一个进程的高速缓存页表条目不会取代另一个进程的高速缓存页表条目。就这方面,处理器中的每个CPU都支持存储指向系统存储器中的存内TLB的指针地址,以使得CPU中的MMU可以访问对应于特定进程的专用的存内TLB。在本文公开的示例中,专用的存内TLB也可以被支持用于监督在主机CPU上执行的客户进程的虚拟化的操作系统内核和/ 或管理程序。当进程被调度以在CPU中执行时,为该进程所存储的存内TLB地址可以被加载到CPU中的存内TLB寄存器中。这允许 MMU的页表遍历器电路访问专用的存内TLB,以用于在MMU TLB 发生TLB未命中时执行VA到PA转换的执行进程。如果存内TLB 发生TLB未命中,则MMU的页表遍历器电路可以遍历页表。支持每个进程的专用的存内TLB还允许为不同的进程被分配不同大小的存内TLB,如果期望的话,例如可以具有不同大小的存内TLB,这可能基于它们的存储器访问模式和共享存内TLB的进程线程的数量。在另一个示例中,在系统存储器中的存内TLB被直接存储器映射到存储器地址,这也可以简化高速缓存页表条目替换策略。
在其他示例中,存内TLB可以被配置为将页表中的不同级别的页表条目高速缓存到MMU TLB中。在另一个示例中,存内TLB可以被配置为仅将页表中的某些级别的分级页表高速缓存到MMU TLB中。例如,与给定MMU相关联的存内TLB可以被配置为高速缓存来自比在MMU TLB中高速缓存的页表条目更高级别的页表的页表条目,以增强性能。因此,如果在MMUTLB中的任何高速缓存的非叶页表条目上发生TLB命中,则页表遍历器电路为了将VA 转换为PA将只需要遍历较低级别页表。如果在MMU TLB中发生 TLB未命中,则为了将VA转换为PA的匹配页表条目,页表遍历器电路可以查询存内TLB。
在讨论在基于处理器的系统中用于增强用于将VA转换为PA的 MMU TLB的进程专用的mTLB的示例之前,首先关于图2讨论包括具有一个或多个CPU的处理器的示例性基于处理器的系统。
就这方面,图2是包括处理器202的示例性基于处理器的系统 200的图,该处理器202被配置为向包括高速缓存存储器206和系统存储器208的存储器系统204发出存储器请求(即,数据读取和数据写请求)。系统存储器208是能够通过基于处理器的系统200的 PA空间完全寻址的存储器。例如,系统存储器208可以是在单独的 DRAM芯片中提供的动态随机存取存储器(DRAM)。处理器202 包括一个或多个相应的CPU 210(0)-210(N),其中“N”是正整数,表示处理器202中包括的CPU的数量。处理器202可以被封装在集成电路(IC)芯片212中。高速缓存存储器系统206包括一个或多个高速缓存存储器214(1)-214(X),它们可以在基于处理器的系统200中的不同层级处并且逻辑上位于CPU 210(0)-210(N)和系统存储器208 之间,其中“X”是正整数,表示处理器202中包括的CPU的数量。存储器控制器216控制对系统存储器208的访问。例如,CPU 210(0)-210(N)作为请求设备可以发出数据请求218以响应于处理加载指令来读取数据。数据请求218包括要从存储器中读取的数据的目标地址。使用CPU 210(0)为例,如果被请求数据不在私有高速缓存存储器214(1)中(即未命中高速缓存存储器214(1)),该私有高速缓存存储器214(1)可被视为第一分级(L1)高速缓存存储器,在此示例中,私有高速缓存存储器214(1)通过互连总线220将数据请求218 发送到与所有CPU 210(0)-210(N)共享的共享高速缓存存储器 214(X),共享高速缓存存储器214(X)可以是第(3)级高速缓存存储器。数据请求218中的被请求数据最终要么在高速缓存存储器 214(1)-214(X)中被完成,要么在系统存储器208中被完成——如果未被包含在任何高速缓存存储器214(1)-214(X)中的话。
图2中的基于处理器的系统200被配置为支持虚拟寻址。就这方面,在处理器202上执行进程的操作系统可以通过在存储器访问请求中发出VA来将虚拟存储器用作虚拟存储器系统。在虚拟存储器系统中,每个进程被赋予这样的印象:与系统存储器208中的PA 相比,在存储器系统204中有更多的存储器地址(即,VA)可用于检索和存储数据。当进程请求访问存储器系统204中的数据时,该进程提供一个存储器地址,它是一个VA。然后必须将VA映射到存储器系统204中要存储或检索数据的实际PA。就这方面,图2中的处理器202中的每个CPU 210(0)-210(N)可以包含或具有被采用来将 VA转换为PA的关联的MMU 222(0)-220(N)。
图3是示例性存储器管理系统300的示意图,该存储器管理系统300包括与图2中的处理器202中的CPU 210(0)-210(N)相关联的 MMU电路302,其针对由关联的相应CPU 210(0)-210(N)发出的存储器访问请求而将VA转换为PA。存储器管理系统300包括系统存储器208中的页表304和MMU TLB 306,MMU电路302访问它们以将VA转换为PA。页表304是包括多个页表条目308(0)-308(E)的存储器电路,页表条目308(0)-308(E)基于VA是可索引的,以提供用于从PA转换到VA的信息。响应于TLB未命中和存内TLB未命中 (下文讨论),响应于由相应的CPU 210(0)-210(N)执行以确定是否存在包含将VA转换为PA的信息的页表条目308(0)-308(E)的计算机软件指令,基于传入VA,由MMU电路302中的页表遍历器电路309 访问或“遍历”页表304。如果是,则由页表304发出“页表命中”310,并且MMU电路302将针对存储器访问请求的PA提供给MMU TLB 306。转换后的PA也被作为“TLB写”312而被写到MMU TLB306。如果页表304中的页表条目308(0)-308(E)不包含将VA转换为 PA的信息,则页表304发出“页表未命中”314,并且存储器管理故障和陷阱发生或者将异常传送给操作系统以供处理。页表304可以包括必须由页表遍历器电路309“遍历”以将传入VA转换为PA 的多个页表级别。
为了提高将VA转换为PA的性能,通过访问页表304转换的 VA和由发出的“页表命中”310产生的PA信息也被高速缓存(即,写)在MMU TLB 306中。MMU TLB 306是高速缓存存储器,在此示例中它是比页表304更快的存储器。MMU TLB 306具有多个MMU TLB条目318(0)-318(T),每个条目被配置为存储与给定VA相关联的PA。存储在MMU TLB条目318(0)-318(T)中的VA是标签,其可以在访问页表304之前与接收到的存储器访问请求中的传入VA进行比较,以确定MMU TLB 306中是否存在具有转换后的PA的任何 MMU TLB条目318(0)-318(T)。如果是,则由MMU TLB 306发出“TLB命中”320,而不必遍历页表304,并且MMU电路302针对存储器访问请求提供在命中的MMU TLB条目318(0)-318(T)中的 PA。如果接收到的存储器访问请求中的传入VA不存在于MMU TLB 306中的任何MMU TLB条目318(0)-318(T)中,则发出“TLB未命中”322,并且VA可以被用来遍历页表304将传入VA转换为PA,如上所述。
当工作负载在图2中的处理器202中的CPU 210(0)-210(N)上执行时,多个进程和操作系统内核竞争对MMU TLB 306的访问。随着存储器系统204上的工作负载压力的增加,MMU TLB 306可能开始抖动,这意味着TLB未命中以及由此导致的逐出和插入频繁发生,这会降低性能。在本文公开的示例性方面中,为了增强MMU TLB 306以减少将VA转换为PA的页表304遍历次数,图3中的存储器管理系统300还支持在系统存储器208中被分配的存内TLB324(0)-324(I)。响应于针对VA到PA转换的对MMU TLB 306的TLB 未命中,可以访问存内TLB324(0)-324(I)以确定被访问的存内TLB 324(0)-324(I)中的存内TLB条目中的页表条目是否存在以将VA转换为其PA。每个存内TLB 324(0)-324(I)包含多个存内TLB条目 326(0)(0)-326(I)(B),其每一个都被配置为在页表304中高速缓存页表条目308(0)-308(E)。如果用于VA到PA转换的页表条目308(0)-308(E)被包含在被访问的存内TLB 324(0)-324(I)中的存内 TLB条目326(0)(0)-326(I)(B),则在被访问的存内TLB 324(0)-324中 (I)的这样的页表条目308(0)-308(E)被用来执行VA到PA转换。以这种方式,可以高速缓存用于VA到PA转换的附加的页表条目,而无需扩展MMU TLB 306的大小。对于给定的存储器大小来说,更丰富和更便宜的系统存储器208被被分配给存内TLB 324(0)-324(I)。如果用于VA到PA转换的页表条目未被包含在部访问的存内TLB 324(0)-324(I)中,则MMU电路302使页表遍历器电路309像先前在上面讨论的那样遍历页表304以执行VA到PA转换。
如下文将更详细讨论的,图3中的存储器管理系统300被配置为支持被分配系统存储器208中的专用于在CPU 210(0)-210(N)中执行的特定进程并且因此不在不同进程之间共享的每个存内TLB 324(0)-324(I)。例如,存内TLB 324(0)专用于在CPU 210(0)-210(N)中执行的一个进程,而存内TLB 324(X)被分派给在CPU 210(0)-210(N)中执行的不同进程。就这方面,图2中的处理器202 中的每个CPU 210(00-210(N)都支持将存内TLB 324(0)-324(I)的地址存储在被分配给相应进程的系统存储器208中,以使得例如高速缓存在存内TLB324(0)中的存内TLB条目326(0)(0)-326(0)(B)中的页表条目不会取代存内TLB 324(I)中的存内TLB条目 326(0)(0)-326(0)(B)中的页表条目。以这种方式,存内TLB 324(0)-324(I)不会跨进程共享。存内TLB 324(0)-324(I)可以在多个 CPU 210(0)-210(N)之间被共享,因为多个CPU 210(0)-210(N)可以执行相同的进程。作为示例,专用的存内TLB还可以被支持用于监督在主机CPU 210(0)-210(N)上执行的客户进程的虚拟化的处理器202 中的操作系统内核和/或管理程序。
当进程被调度以在CPU 210(0)-210(N)中执行时,为该进程所存储的存内TLB地址可以被加载到与CPU 210(0)-210(N)相关联的 MMU电路302中。这允许MMU电路302访问专用的存内TLB 324(0)-324(I),以用于在MMU TLB 306的TLB未命中和存内TLB 324(0)-324(I)的TLB命中的情况下执行用于执行VA到PA转换的进程,这可以避免页表遍历器电路309必须遍历页表304。如果对于被执行的进程,对存内TLB 324(0)-324(I)发生未命中,则页表遍历器电路309可以遍历页表304,如先前所讨论的。如果期望的话,支持进程专用的存内TLB324(0)-324(I)的存储器管理系统300还可以允许为不同进程被分配不同大小的存内TLB324(0)-324(I)。作为示例,基于相应进程它们的存储器访问模式和共享存内TLB 324(0)-324(I) 的进程线程的数量来提供不同大小的存内TLB 324(0)-324(I))可能是所期望的。在另一个示例中,位于系统存储器208中的存内TLB 324(0)-324(I)允许存内TLB 324(0)-324(I)被直接存储器映射到存储器地址,这还可以简化高速缓存页表条目替换策略。下面讨论的示例更详细地解释了像图3中的MMU电路302这样的MMU电路的操作,该操作针对在CPU 210(0)中执行的给定进程而访问其存内TLB 324(0)-324(I)-210(N)以将作为执行该进程的结果发出的存储器访问请求中的VA转换为PA。
在这个非限制性示例中,由图2中的基于处理器的系统200所支持的VA存储器地址的位大小是64位。就这方面,图4A图示了由基于处理器的系统200所支持的示例性VA 400的示例性位格式,其示出了位63-0的位分派。位63-48是空闲位,其未被使用或可保留用于附加功能性。VA 400的地址空间是48位,跨越位47-0,用于支持基于处理器的系统中的248个虚拟存储器位置。VA 400的位可以被用来对页表进行索引,该页表可以被用作图3中的存储器管理系统300中的页表304。图4B图示了可以在图3中的MMU电路302中提供的示例性页表402,其中页表402包括四个(4个)级别的分级页表404(3)-404(0),每个级别包含可由VA400寻址的页表条目。分级页表404(3)-404(0)中的每个页表条目是叶页表条目或非叶页表条目,叶页表条目不被用来进一步访问另一个页表条目并且可以与系统存储器208中的物理存储器中的存储器页面直接关联,而非叶页表条目被用来进一步访问另一个页表条目以获得系统存储器208 中的存储器页的PA并且在此示例中可以被高速缓存。
继续参考图4B,页表402中的分级页表404(3)-404(0)被组织以提供4千字节(KB)的基本页面大小,其中在每个分级页表 404(3)-404(0)中的页表条目的数量是512(即,可通过9位寻址),支持39位VA 400地址空间。在此示例中,分级页表404(3)包含页表条目408(3)(0)-408(3)(511),并被设计为不被高速缓存在图3的存内TLB 324(0)-324(I)中。第二分级页表404(2)在页表402中处于第二分级,并由VA 400的第38-30位中的第二分级索引406(2)来进行索引。第二分级页表404(2)的页表条目(512或29个条目) 408(2)(0)-408(2)(511)每个都指向“X”个第一分级页表 404(1)(0)-404(X)之一,其然后由VA 400的位29-21中的第一分级索引406(1)来进行索引。在每个第一分级页表404(1)(0)-404(1)(X)中的第一分级页表的页表条目(512或29个条目)408(1)(0)(0)-408(1)(X)(511)(即,在级别(1)处的分级页表,第一分级页表的0-X个数,以及每个分级页表的0-511个条目)指向“Y”个第0分级页表404(0)(0)-404(0)(Y)之一,其然后由VA 400的位 20-12中的第0级索引406(0)来进行索引。在此示例中,跨页表402 中的分级页表404(2)、404(1)(0)-404(1)(X)、404(0)(0)-404(0)(Y)访问的页表条目408识别图2中的基于处理器的系统200中的系统存储器208中的4KB页面PA。VA 104的PA的偏移位是VA 400中的偏移,在此示例中是在VA 400的位11-0中。
作为示例,如下面将更详细讨论的,图3中的存储器管理系统 300可以被配置为在不同的存储器结构中高速缓存不同级别的分级页表404(2)、404(1)(0)-404(1)(X)、404(0)(0)-404(0)(Y)。例如,第二分级页表404(2)的页表条目408(2)(0)-408(2)(511)可以被高速缓存在存内TLB 324(0)-324(I)中,而第一分级页表404(1)(0)-404(1)(X)中的页表条目408(1)(0)(0)-408(1)(X)(511)可以被高速缓存在图3中的 MMU电路302中的MMU TLB 306中。第0分级页表404(0)中的页表条目408(0)(0)(0)-408(0)(Y)(511)(0)-404(0)(Y)是叶页表条目,可以被高速缓存在MMU TLB 306中。
如上面所讨论的,可以为在图2中的处理器202中的CPU 210(0)-210(N)中执行的每个进程提供图3中的存储器管理系统300 中的专用的存内TLB 324(0)-324(I)。因此,在示例中,当进程的线程被调度以在处理器202中的CPU 210(0)-210(N)上执行时,提供了一种机制来指示特定存内TLB 324(0)-324(I)在系统存储器208中被被分配给该进程,以使得MMU电路302可以知道在系统存储器208 中的什么位置访问针对该进程专用的存内TLB 324(0)-324(I)。就这方面,CPU 210(0)-210(N)3可以包括存内TLB寄存器,其包含存储器地址字段324(0)-324(I),该字段被配置为将指向系统存储器208 中的PA的存储器地址存储到与要在CPU 210(0)-210(N)中执行的当前进程相对应的存内TLB。这种存内TLB寄存器500的示例在图5A 中被图示。如图5A中所示,存内TLB寄存器500包括存储器地址字段502,该存储器地址字段502被配置为存储指向与要在CPU 210(0)-210(N)中执行的当前进程相对应的存内TLB 324(0)-324(I)的物理地址。对于直接在CPU 210(0)-210(N)上运行的主机,诸如主机管理程序,存储器地址字段502可以是主机PA。对于直接在CPU 210(0)-210(N)上运行的客户,存储器地址字段502可以是客户PA。同样在此示例中,存内TLB寄存器500包括TLB条目数量字段504,该字段被配置为存储所包含的存内TLB 324(0)-324(I)中的存内TLB 条目326(0)(0)-324(I)(B)的数量。这样使得存内TLB 324(0)-324(I)将知道由存储器地址字段502中的存储器地址所识别的存内TLB 324(0)-324(I)中所被分配的存内TLB条目326(0)(0)-324(I)(B)的数量大小。在此示例中,存内TLB寄存器500还包括页表中高速缓存级别字段506,该字段被配置为存储一个数字,该数字指示在存储器地址字段502中识别的存内TLB324(0)-324(I)中高速缓存图4中的页表402的分级页表404中的哪些级别。也在此示例中,存内TLB寄存器500包括MMU TLB中高速缓存级别字段508,该字段被配置为存储一个数字,该数字指示在MMU TLB 306中高速缓存页表402 的分级页表404中的哪些级别。
图5B图示了示例性存内TLB条目326,作为示例,其表示图3 中的存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B) 的架构。如其中所示,存内TLB条目326包括叶或非叶页表条目高速缓存字段510,该字段被配置为在存内TLB条目326中存储叶或非叶页表条目。存内TLB条目326还包括锁定指示符512,其被配置为在存内TLB条目326处于锁定状态或解锁状态时存储锁定状态。例如,“0”位可以表示解锁状态,而“1”可以表示锁定状态。如下面所讨论的,锁定指示符512可以由MMU电路302编辑以指示在存内TLB 324(0)-324(I)中的给定存内TLB条目326是否正在被使用,以防有两个页表遍历器被配置为相互竞争访问读取或写存内 TLB 324(0)-324(I)中的相同存内TLB条目326。存内TLB条目326 还包括VA标签字段514,该字段被配置为存储与存内TLB条目326 相对应的VA,MMU电路302可以使用该VA与要被转换为PA的传入VA进行比较,以确定存内TLB条目326是否可要被用来将VA转换为其PA。在此示例中,存内TLB条目326还包括被配置为存储世代号(generationnumber)的世代号字段516。如将在下文更详细讨论的,存储在世代号字段516中的世代号可要被用来确定存内 TLB条目326是否有效并提供使存内TLB条目326失效的方法。
图6是图示了图3中的存储器管理系统300中的MMU电路302 的示例性过程600的流程图,该过程将VA转换为PA并访问系统存储器208中的进程专用的存内TLB 324(0)-324(I)以将VA转换为PA。结合图3中的存储器管理系统300和图4B中的页表402来讨论图6 中的过程600。就这方面,MMU电路302基于为CPU 210(0)-210(N) 中的进程所执行的计算机软件指令来接收包括VA 400的存储器访问请求(块602)。MMU电路302确定MMU TLB 306是否包含MMU TLB条目318(0)-318(T),该MMU TLB条目318(0)-318(T)包含与VA 400相对应的页表条目(块604)。如果MMU TLB 306包含一个MMU TLB条目318(0)-318(T),该MMU TLB条目318(0)-318(T)包含与VA 400相对应的页表条目(块604),则这是一个MMU TLB命中,并且 MMU电路302使用存储在与VA 400相对应的MMU TLB条目 318(0)-318(T)中的PA,以将VA 400转换成它的PA(块606),并且过程结束(块616)。然而,如果MMU TLB 306不包含包含与VA 400相对应的页表条目的MMU TLB条目318(0)-318(T)(块604),则这是 MMU TLB未命中,并且MMU电路302然后确定存储在被分配给该进程的存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0))-324(I)(B) 中的VA标签字段514中的VA 400是否与存储器访问请求的VA 400匹配(块608)。如上面所讨论的,MMU电路302可以使用存储在存内TLB寄存器500的存储器地址字段502中的存储器地址来访问针对该进程的对应的存内TLB 324(0)-324(I)。
如果存储在被分配给该进程的存内TLB 324(0)-324(I)中的存内 TLB条目326(0)(0)-326(I)(B)中的VA标签字段514中的VA与存储器访问请求的VA 400匹配,则MMU电路302使用匹配的存内TLB 条目326(0)(0)-326(I)(B)的内容(块608)。这是存内TLB命中。如果存内TLB条目326(0)(0)-326(I)(B)包含叶页表条目,则MMU电路302 基于存内TLB条目326(0)(0)-326(I)(B)中的被访问的页表条目具有与 VA 400匹配的在VA标签字段514中的VA,来将VA 400转换为 PA(块610)。如果存内TLB条目326(0)(0)-326(I)(B)包含非叶页表条目,则页表遍历器电路309使用非叶页表条目来遍历该页表304。否则,对于存内TLB未命中,如果存储在被分配给该进程的存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-324(I)(B)中的VA标签字段514中的VA与存储器访问请求的VA 400不匹配(块608),这是存内TLB未命中,并且MMU电路302实施页表遍历。MMU电路 302使页表遍历器电路309访问由存储器访问请求的VA 400所索引的页表402中的分级页表404(3)-404(0)(块612)并将VA 400转换为与VA 400相对应的分级页表404(3)-404(0)中的页表条目中包含的 PA(块614),并且过程结束(块616)。
作为示例,假设可以从图4B中的页表402中确定的基本页面大小是4KB,并且每个中间分级页表404(3)-404(0)具有512个条目。还假设图5A中讨论的用于存内TLB 324(0)-324(I)的存内TLB寄存器500在其存储器地址字段502中具有其PA在系统存储器208中的存储器地址,在TLB条目数量字段504中的256TLB条目,在高速缓存页表级别字段506中高速缓存的级别中具有为第2分级的高速缓存在存内TLB 324(0)-324(I)中的级别(位图被表示为“100”),以及在高速缓存页表级别字段508中高速缓存的级别中具有为第1分级的高速缓存在MMU TLB 306中的级别(位图表示为“010”)。在此示例中,第0分级页表404(0)(0)-404(0)(Y)中的第0级叶页表条目 408(0)(0)(0)-408(0)(Y)(511)指向4KB存储器页面。第1分级页表 404(1)(0)-404(1)(X)中的第1分级叶页表条目 408(1)(0)(0)-408(1)(0)(511)指向2MB存储器页面。第2分级页表 404(2)(0)-404(2)(511)中的第2分级叶页表条目 408(2)(0)(0)-408(2)(0)(511)指向1千兆字节(GB)存储器页面。第1 分级页表404(1)(0)-404(1)(X)中的第1分级非叶页表条目 408(1)(0)(0)-408(1)(0)(511)指向0分级页表404(0)(0)-404(0)(Y)。第2 分级页表404(2)(0)-404(2)(511)中的第2分级非叶页表条目 408(2)(0)-408(2)(511)指向第1分级页表404(1)(0)-404(1)(X)。在此示例中,叶页表条目始终可以被高速缓存在MMU TLB 306中,非叶页表条目408(1)(0)(0)-408(1)(0)(511)可以被高速缓存在MMU TLB 306 中,并且叶和非叶第2分级页表条目408(2)(0)-408(2)(511)可以被高速缓存在存内TLB 324(0)-324(I)中。
在该示例中,单个存内TLB条目326(0)(0)-326(I)(B)的跨度为1 GB。对于要转换为PA的给定传入VA 400,MMU电路302如下为VA 400的当前进程计算到存内TLB 324(0)-324(I)中的索引。该索引是(VA/1GB)%256。如果发生存内TLB未命中(例如,图6中的块 608),则MMU电路302使页表遍历器电路309从顶级开始遍历页表 402并找到针对VA 400的叶页表条目408。然后将叶页表条目408 写到MMU TLB 306中。如果与VA 400相对应的叶页表条目408高于第2分级页表404(2),则不进行进一步高速缓存。如果与VA 400 相对应的叶页表条目408位于第2分级页表404(2),则将其高速缓存在存内TLB 324(0)-324(I)和MMU TLB 306中。如果与VA 400相对应的叶页表条目408在第1分级或第0分级页表404(1)、404(0),则第2分级页表404(2)中的非叶页表条目408被高速缓存在存内TLB 324(0)-324(I)和MMU TLB306中。当页表条目408作为存内TLB条目326(0)(0)-326(I)(B)被高速缓存到存内TLB 324(0)-324(I)中时,VA 400的VA位被截断到1GB边界以被存储在存内TLB条目 326(0)(0)-326(I)(B)的VA标签字段514中。下面更详细讨论的当前世代号被存储在存内TLB条目326(0)(0)-326(I)(B)的世代号字段516 中。以这种方式,可以精确地控制哪些页表级别针对当前进程被高速缓存到MMU TLB 306中并被高速缓存在存内TLB条目 326(0)(0)-326(I)(B)中。
如上面所讨论的,当MMU TLB命中发生时(例如,在图6中的块606中),这意味着在MMU TLB 306中找到了针对VA 400的叶页表条目408,并且不需要对页表402的页表遍历。如果叶页表条目 408已从MMU TLB 306中被逐出,但是MMU TLB 306中仍然存在第1分级页表条目,则页表遍历器电路309可以从第1分级页表条目408开始遍历页表402。如果在MMU TLB306中没有找到第1分级页表条目,则MMU电路302针对当前进程查询存内TLB 324(0)-324(I)。如果发生存内TLB命中,则MMU电路302从存储在存内TLB 324(0)-324(I)中的第2分级页表条目开始遍历。
将VA 400转换为PA的MMU电路302的图6中的过程600的附加功能和变型可以被执行。例如,响应于MMU TLB未命中(例如,图6中的块604),MMU电路302可以被配置为读取被访问的存内 TLB 324(0)-324(I)的存内TLB条目326(0)(0)-324(I)(B)中的VA标签字段514中的VA。如果存内TLB条目326(0)(0)-324(I)(B)中的锁定指示符512指示锁定状态,这意味着另一个进程正在使用同一存内 TLB条目326(0)(0)-324(I)(B),并且这被认为是存内TLB未命中以执行页表402遍历(例如,图6中的块612、614)。然而,如果存内TLB 条目326(0)(0)-324(I)(B)中的锁定指示符512指示解锁状态,则MMU 电路302可以将锁定指示符512设置为锁定状态。例如,可以对被访问的存内TLB条目326(0)(0)-324(I)(B)中的VA标签字段514执行比较和交换(CAS)指令,以将其锁定指示符512设置为锁定状态。如果CAS指令失败,这被认为是存内TLB未命中以执行页表402遍历 (例如,图6中的块612、614)。
MMU电路302然后可以检查在锁定状态的被访问的存内TLB 条目326(0)(0)-324(I)(B)的VA标签字段514中的VA(例如,在图6 中的块608中),以确定VA标签字段514中的VA是否与存储器访问请求的VA 400匹配。如果不匹配(例如,来自图6中的块608的否路径),则这被认为是存内TLB未命中,前往块612以执行页表 402遍历(例如,图6中的块612、614)。被访问的存内TLB条目 326(0)(0)-324(I)(B)的锁定指示符512被设置为解锁状态。然而,如果锁定状态的被访问的存内TLB条目326(0)(0)-324(I)(B)的VA标签字段514中的VA与存储器访问请求的VA 400匹配(例如,来自图6 中的块608的是路径),则MMU电路302可以检查存内TLB条目 326(0)(0)-324(I)(B)中的世代号字段516中的世代号,以确定是否世代号已陈旧。如下文将更详细讨论的,一种使陈旧的存内TLB条目 326(0)(0)-324(I)(B)失效的方法,诸如如果VA到PA的映射在操作系统中没有改变,更新存内TLB条目326(0)(0)-326(I)(B)的世代号字段 516中的世代号以使其失效,使得它们的世代号不是当前的。陈旧的存内TLB条目326(0)(0)-326(I)(B)被视为存内TLB未命中。然而,如果在块608中的锁定状态的被访问的存内TLB条目 326(0)(0)-326(I)(B)的VA标签字段514中的VA匹配存储器访问请求的VA 400,并且被访问的存内TLB条目326(0)(0)-326(I)(B)的世代号字段516中的世代号不是陈旧的,则存内TLB条目 326(0)(0)-326(I)(B)可以被读取并被用来将VA 400转换为来自第二分级页表404(2)的PA,然后将其用作开始PA以遍历页表304(例如,图6中的块610)。PA也被写回到MMU TLB 306中的MMU TLB条目318(0)-318(T)中,并且过程结束(例如,图6中的块616)。
如果发生MMU TLB未命中和存内TLB未命中(例如,来自图6 中块604和608的否路径),则页表遍历器电路309遍历页表402,如先前所讨论的(例如,图6中的块612、614)。如果针对VA 400在页表402上找到的页表条目408不需要被高速缓存在存内TLB项 326(0)(0)-326(I)(B)中,则过程结束(例如,图6中的块616)。否则,除非已经处于锁定状态,否则设置存内TLB条目326(0)(0)-326(I)(B) 中的锁定指示符512。如果尚未处于锁定状态,则将可用存内TLB 条目326(0)(0)-326(I)(B)的VA标签字段514中的VA设置为来自正被执行的指令的新VA值(其包括从页表402的遍历中找到的存储器访问)并且通过在VA标签字段514上执行CAS指令将锁定指示符 512设置为锁定状态。如果CAS指令失败,则过程结束(例如,图6中的块616)。否则,将当前世代号写到存内TLB条目 326(0)(0)-326(I)(B)的世代号字段516中,并且从页表402的遍历中找到的页表条目408被写到存内TLB条目326(0)(0)-326(I)(B)中。然后锁定指示器512被重置为解锁状态。在这些步骤中可能需要存储器屏障以确保以正确的顺序查看更新。
如果存内TLB条目326(0)(0)-326(I)(B)中的锁定指示符512指示锁定状态,这意味着另一个进程正在编辑同一存内TLB条目 326(0)(0)-326(I)(B),并且这被认为是存内TLB未命中以执行页表402 遍历(例如,图6中的块612、614)。该过程结束(块616),因为此时页表304的页表遍历已经完成。
页表的其他组织可以被用作图3中的MMU电路302中的页表 304。例如,图7A图示了多分级页表700的另一个示例,其可以作为页表304而被包括在图3中的MMU电路302中以将VA 400转换为指向2MB物理存储器页面。例如,提供了3级的分级页表 702(3)-702(1)。可以采用以下高速缓存方案。第一分级页表702(1) 中的页表条目704(1)(0)-704(1)(511)可以是总是被高速缓存在MMU TLB 306中的叶页表条目。第二分级页表702(2)中的页表条目704(2)(0)-704(2)(511)被高速缓存在存内TLB 324(0)-324(I)中。第3 分级页表702(3)中的页表条目704(3)(0)-704(3)(511)高于被高速缓存在存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B)中的页表条目的级别,并且因此页表条目704(3)(0)-704(3)(511)不被高速缓存。
图7B图示了多分级页表705的另一个示例,其可以作为页表304 而被包括在图3中的MMU电路302中以将VA 400转换为指向1GB 物理存储器页面。例如,提供了两(2)级的分级页表706(3)-706(2)。可以采用以下高速缓存方案。第二分级页表706(2)中的叶页表条目708(2)(0)-708(2)(511)总是被高速缓存在MMU TLB 306中。第二分级页表706(2)中的叶页表条目708(2)(0)-708(2)(511)被高速缓存在存内TLB 324(0)-324(I)中。第3分级页表706(3)中的页表条目 708(3)(0)-708(3)(511)高于高速缓存在存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B)中的页表条目的级别,因此页表条目 708(3)(0)-708(3)(511)不被高速缓存。
如果图5中的存内TLB寄存器500中的高速缓存页表级别字段 506指定多于一个页面级别应该被高速缓存在所识别的存内TLB 324(0)-324(I)中,存内TLB 324(0)-324(I)可以在图2中的基于处理器的系统200中的系统存储器208中被拆分或划分为多个部分,以使得VA被映射到拆分的存内TLB条目326(0)(0)-326(I)(B)。当存内 TLB 324(0)-324(I)被拆分为多个级别时,MMU电路302需要在存内 TLB 324(0)-324(I)的每个级别中从最低开始到最高或平行地进行搜索。这在图8中通过示例示出。如图8中所示,一个512个条目的存内TLB324可以被拆分为相应的顶部和底部存内TLB 324(T)、 324(B),它们各自具有相应的256存内TLB条目326(0)-326(255)、 326(256)-326(511)。例如,第一分级页表条目可以被高速缓存在顶部存内TLB 324(T)中,而第二分级页表条目可以被高速缓存在底部存内TLB 324(B)中。在对MMU TLB 306的MMU TLB未命中时,MMU 电路302将首先在顶部存内TLB 324(T)中的存内TLB条目 326(0)-326(255)中搜索匹配的第一分级页表条目。如果未命中,则 MMU电路302然后将在底部存内TLB 324(B)中的存内TLB条目 326(256)-326(511)中搜索匹配的第二分级页表条目。
还可能需要或期望提供一种机制以使MMU TLB 306中的MMU TLB条目318(0)-318(T)和存内TLB 324(0)-324(I)中的存内TLB条目 326(0)(0)-326(I)(B)失效(当其不再有效时),以使得不正确的VA 到PA转换不被执行。例如,当在图2中的处理器202中的CPU 210(0)-210(N)中执行的操作系统内核执行改变VA到系统存储器208 中的PA的VA到PA映射的操作时,VA到PA映射可能改变。例如,操作系统内核可以执行改变VA到PA映射的功能,诸如取消映射操作、重新映射操作、权限改变、保护改变和其他杂项改变。本质上,当VA到PA映射的属性改变时,可能需要使MMU TLB 306中的 MMU TLB条目318(0)-318(T)和/或存内TLB324(0)-324(I)中的存内 TLB条目326(0)(0)-326(I)(B)失效。存内TLB 324(0)-324(I)是MMU TLB 306的扩展,并且因此任何MMU TLB条目318(0)-318(T)的失效也将需要在MMU TLB306中的存内TLB条目326(0)(0)-326(I)(B) 上被执行。
例如,图3中的MMU电路302可以接收针对执行进程和/或作为示例来自操作系统内核的失效指示符以请求TLB条目的失效。这是一个内部失效请求,因为失效请求是从具有MMU电路302的CPU 210(0)-210(N)的进程和/或操作系统内核发起的。响应于接收到针对进程的失效指示符,MMU电路302可以被配置为基于任何VA到PA的重新映射冲刷被分配给该进程的存内TLB 324(0)-324(I)中的一个或多个存内TLB条目326(0)(0)-326(I)(B)。
作为另一个示例,以图2中的处理器202中的CPU 210(0)-210(N) 中的操作系统内核上执行进程的情形为例。该进程具有分派的存内 TLB 324(0)-324(I),如先前所讨论的。指向系统存储器208中的存内 TLB 324(0)-324(I)的存储器地址的指针被存储在图5A中的存内TLB 寄存器500中,如先前所讨论的。当进程的线程被上下文切换到CPU 210(0)-210(N)上时,系统存储器208中的存内TLB 324(0)-324(I)的存储器地址被加载到存内TLB寄存器500,以使得MMU电路302及其页表遍历器电路309可以访问存内TLB 324(0)-324(I),以用于在对MMU TLB 306的TLB未命中的情况下执行VA到PA转换。对于这个示例,假设操作系统内核从由该进程寻址的存储器地址空间中取消映射存储器地址范围。这意味着存储在存内TLB 324(0)-324(I) 中的存内TLB条目326(0)(0)-326(I)(B)中的取消映射的地址范围中的页表条目现在可能失效。可能存在几种场景。例如,如果这些受到取消映射影响的页表条目被高速缓存在针对该进程的MMU TLB条目318(0)-318(T)中,是叶或非叶页表条目,则可以冲刷MMU TLB 306中的MMU TLB条目318(0)-318(T)而不冲刷存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B)。但是,如果这些受到取消映射影响的页表条目被高速缓存在针对进程的存内TLB 条目326(0)(0)-326(I)(B)中,则冲刷存内TLB 324(0)-324(I)中的存内 TLB条目326(0)(0)-326(I)(B)中的这些页表条目以使其失效。失效可能涉及简单地在存内TLB条目326(0)(0)-326(I)(B)中写“0”以使其失效的进程。此外,存内TLB条目326(0)(0)-326(I)(B)中的VA标签字段514可以被写0,作为使存内TLB条目326(0)(0)-326(I)(B)中的页表条目失效的一种方式。如果取消映射的页表条目的级别高于高速缓存在针对该进程的存内TLB 324(0)-324(I)中的页表条目的分级页表,这意味着可能存在从由受影响的页表条目所覆盖的存内TLB 324(0)-324(I)中的较低表电路级别高速缓存的页表条目。在这种情况下,存内TLB 324(0)-324(I)中的所有这些页表条目都将失效。作为一种选项,操作系统内核可以通过直接写对存内TLB 324(0)-324(I) 中的存内TLB条目326(0)(0)-326(I)(B)中的页表条目来执行失效而无需MMU电路302执行这个任务。作为另一种选项,操作系统内核可以为MMU电路302调度任务以执行失效。例如通过对进程结构中的存储器地址字段中的存储器地址进行擦除或清零,操作系统内核可以使针对进程的整个存内TLB 324(0)-324(I)失效。然后,操作系统内核可以对运行该进程的当前CPU 210(0)-210(N)中的存内TLB 寄存器500中的存储器地址字段502中的存储器地址进行擦除或清零。操作系统内核可以发出交叉调用命令,以将运行同一进程的各线程的其他CPU 210(0)-210(N)上的存内TLB寄存器进行清零。调度的任务还可以通过对例如存内TLB寄存器500中的存储器地址字段 502中的存储器地址进行擦除或清零来使针对进程的整个存内TLB 324(0)-324(I)失效。对于正在运行的线程,操作系统内核可以向其他 CPU 210(0)-210(N)发出交叉调用命令,以使这些其他CPU 210(0)-210(N)擦除指向已重新映射地址空间的对应于该进程的存内 TLB 324(0)-324(I)的、在每个CPU 210(0)-210(N)中的存内TLB寄存器500中的存储器地址字段502中的存储器地址。一旦操作系统内核已采取措施确保不使用要失效的存内TLB 324(0)-324(I),操作系统内核就可以通过后台任务来调度失效存内TLB 324(0)-324(I)——如果期望的话。
作为示例,可以由操作系统内核执行以使存内TLB 324(0)-324(I) 中的存内TLB条目326(0)(0)-326(I)(B)失效的一个进程如下。第一步可以使页表304中的页表条目失效。下一步可以使存内TLB 324(0)-324(I)的存内TLB条目326(0)(0)-326(I)(B)失效,以使得该失效在处理器202中是全局可见的。这防止将来的遍历加载存内TLB 条目326(0)(0)-326(I)(B)中的加载使用已失效的页表条目。读取要失效的存内TLB条目326(0)(0)-326(I)(B)的页表条目中的VA标签字段 514并且读取锁定指示符512以确定存内TLB条目326(0)(0)-326(I)(B) 是否正被另一个MMU或进程访问。一旦锁定指示符512处于解锁状态,就使用CAS指令将锁定指示符512设置为锁定状态。页表条目高速缓存字段510中的页表条目被失效。VA标签字段514中的 VA也可以被失效,诸如通过将全部为0存储在VA标签字段514中。锁定指示符512然后被重置为解锁状态。
还可能需要执行一种机制以在外部使MMU TLB 306中的MMU TLB条目318(0)-318(T)和存内TLB 324(0)-324(I)中的存内TLB条目 326(0)(0)-326(I)(B)失效(当其不再有效时),以使得不正确的VA到 PA转换不被执行。例如,在图2中的处理器202中执行的主机管理程序可以选择捕获客户存储器访问。它可以通过删除将客户进程PA 转换为主机进程PA的主机页表中的访问权限来做到这一点。在这种情形中,对主机页表的页条目进行高速缓存的MMU TLB 306中的 MMU TLB条目318(0)-318(T)和存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B)中的所有客户页表条目可能需要被失效。然而,在客户进程和客户操作系统中可能有许多存内TLB 324(0)-324(I)。如先前所讨论的,可以通过使用世代号来执行外部失效机制。例如,主机管理程序可以维护一组世代号,每个客户操作系统一个世代号。如先前所讨论的,存内TLB条目326(0)(0)-326(I)(B) 具有世代号字段516。因此,当MMU电路302在存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-326(I)(B)中高速缓存页表条目时,当前客户世代号的副本被存储在高速缓存的存内TLB条目 326(0)(0)-326(I)(B)的世代号字段516中。因此,当MMU电路302 针对要被转换的给定VA 400而匹配存内TLB 324(0)-324(I)中的存内 TLB条目326(0)(0)-326(I)(B)时,存储在匹配的存内TLB条目 326(0)(0)-326(I)(B)的世代号字段516中的世代号被检查以查看它是否是当前的。如果不是当前的,则匹配的存内TLB条目 326(0)(0)-326(I)(B)中的页表条目不被MMU电路302使用,这实际上意味着它是失效的。当主机管理程序希望使针对客户操作系统的存内TLB 324(0)-324(I)中的所有存内TLB条目326(0)(0)-326(I)(B) 失效时,主机管理程序可以简单地递增存储在所有存内TLB条目 326(0)(0)-326(I)(B)的世代号字段516中的世代号,以使失效。
还可能期望能够动态地改变存内TLB 324(0)-324(I)的大小以改进针对特定进程的VA到PA转换的性能。例如,可能需要提供一种机制以允许操作系统内核在针对进程的存储器访问请求没有达到所期望的访问时间性能的情况下动态地改变针对进程的存内TLB324(0)-324(I)的大小。然而,同一进程的多个线程可以同时访问同一存内TLB 324(0)-324(I)。因此,作为示例,操作系统内核可以被配置为通过首先针对要被调整大小的存内TLB324(0)-324(I)的当前 CPU 210(0)-210(N)上并且在进程中使存储器地址字段502中的存储器地址失效(例如,清零)来调整存内TLB 324(0)-324(I)的大小。对于正在运行的线程,操作系统内核可以被配置为向其他CPU 210(0)-210(N)发送交叉调用命令,这将导致其他CPU 210(0)-210(N) 使在针对存内TLB 324(0)-324(I)的进程中的存内TLB寄存器500中的存储器地址字段502失效,从而有效地防止CPU 210(0)-210(N)中的MMU电路302使用要被调整大小的存内TLB 324(0)-324(I)来进行 VA到PA转换。既然操作系统内核可以确定要被调整大小的进程的存内TLB 324(0)-324(I)将不被该进程的线程使用,操作系统内核可以被分配系统存储器208中的针对该进程的新的存内TLB 324(0)-324(I),并发起存内TLB条目326(0)(0)-324(I)(B)并设置对应于调整大小后的存内TLB 324(0)-324(I)的存内TLB寄存器500,以允许MMU电路302使用调整大小后的存内TLB 324(0)-324(I)进行 VA到PA转换。恶意客户也可能能够伪造存内TLB 324(0)-324(I)中的存内TLB条目326(0)(0)-324(I)(B)。在特殊情况下,当主机管理程序需要客户进程遍历完整页表时,主机管理程序可以禁用与客户进程相对应的存内TLB 324(0)-324(I)。在稍后的正常操作期间,可以重新启用存内TLB 324(0)-324(I)。如果伪造是在客户主机正常操作的情况下进行的,则它只会影响客户进程,而不会影响其他客户进程或主机进程。
图9是包括处理器902的示例性基于处理器的系统900的框图,处理器902可以包括具有专用mTLB 906的存储器管理系统904以用于增强用于将VA转换为PA的MMU TLB,包括但不限于图3中的存储器管理系统300及其图4A-图5B和图7A-图8中的示例性组件。基于处理器的系统900可以是包括在诸如印刷电路板(PCB) 之类的电子板卡、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA)、计算板、移动设备或任何其他设备中的一个或多个电路,并且可以表示例如服务器或用户的计算机。在此示例中,基于处理器的系统900包括处理器902。处理器902表示一个或多个通用处理电路,诸如微处理器、中央处理单元等。更具体地,处理器902可以是EDGE指令集微处理器,或实现支持显式消费者命名的指令集的其他处理器,以用于传达由生产者指令的执行所产生的生产值。处理器902被配置为执行指令中的处理逻辑,以用于执行本文所讨论的操作和步骤。在此示例中,处理器902包括指令高速缓存908,用于存储器管理系统904可访问的指令的临时、快速访问存储器存储。通过系统总线912从诸如系统存储器910 的存储器中提取或预取的指令被存储在指令高速缓存908中。存储器管理系统904被配置为处理提取到指令高速缓存908中的指令并处理指令以供执行。
处理器902和系统存储器910耦合到系统总线912并且可以互连包括在基于处理器的系统900中的外围设备。众所周知,处理器 902通过系统总线912通过交换地址、控制和数据信息来与这些其他设备通信。例如,处理器902可以将总线事务请求传送到系统存储器910中的存储器控制器914(作为从设备的示例)。尽管在图9 中未图示,但是可以提供多个系统总线912,其中每个系统总线构成不同的结构。在该示例中,存储器控制器914被配置为向系统存储器910中的存储器阵列916提供存储器访问请求。存储器阵列916 包括用于存储数据的存储位单元阵列。作为非限制性示例,系统存储器910可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)等)以及静态存储器(例如,闪存、静态随机存取存储器(SRAM)等)。
其他设备可以连接到系统总线912。如图9中所图示,作为示例,这些设备可以包括系统存储器910、作为可以包括较低级别高速缓存存储器的高速缓存存储器系统918的一部分的外部高速缓存存储器 917(所有这些都可由处理器902访问)、一个或多个输入设备918、一个或多个输出设备920、调制解调器922和一个或多个显示控制器 924。(多个)输入设备918可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备920可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。调制解调器922可以是被配置为允许到和从网络926交换数据的任何设备。网络926可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网 (WLAN)、广域网(WAN)、BLUETOOTHTM网络和互联网。调制解调器922可以被配置为支持所期望的任何类型的通信协议。处理器902还可以被配置为通过系统总线912访问(多个)显示控制器924以控制发送到一个或多个显示器928的信息。(多个)显示器928可以包括任何类型的显示器,包括但不限于阴极射线管 (CRT)、液晶显示器(LCD)、等离子显示器等。
图9中的基于处理器的系统900可以包括一组指令930,这些指令将由处理器902针对根据指令所期望的任何应用来执行。指令930 可以被存储在系统存储器910、处理器902和/或指令高速缓存908 中,作为非暂时性计算机可读介质932的示例。指令930也可以完全或至少部分地驻留在系统存储器储器910内和/或在它们执行期间在处理器902内。指令930还可以经由调制解调器922在网络926 上传输或接收,以使得网络926包括计算机可读介质932。
虽然计算机可读介质932在示例性实施例中被示为单个介质,但是术语“计算机可读介质”应理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库、和/或关联的高速缓存和服务器)。术语“计算机可读介质”还应被理解为包括能够存储、编码或携带一组指令以供处理设备执行并且使处理设备执行本文公开的实施例的任何一个或多个方法的任何介质。因此,术语“计算机可读介质”应包括但不限于固态存储器、光介质和磁介质。
本文所公开的实施例包括各种步骤。本文所公开的实施例的步骤可以由硬件组件形成,或者可以被体现在机器可执行指令中,机器可执行指令可以被用来使编程有指令的通用或专用处理器执行这些步骤。替代地,可以通过硬件和软件的组合来执行这些步骤。
本文所公开的实施例可以作为计算机程序产品或软件而被提供,其可以包括在其上存储有指令的机器可读介质(或计算机可读介质),该指令可以被用来对计算机系统(或其他电子设备)进行编程以执行根据本文所公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等);等等。
除非另有明确说明并且从前面的讨论中显而易见,否则应当了解,在整个描述中,利用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,它操纵被表示为计算机系统寄存器内的物理(电子)量的数据和存储器,并将其变换为类似地被表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。
本文所提出的算法和显示与任何特定的计算机或其他装置没有内在联系。根据本文的教导,各种系统可以与程序一起使用,或者可以证明构造更专业的装置来执行所期望的方法步骤是方便的。各种这些系统所需的结构将从上面的描述中出现。此外,本文描述的实施例没有参考任何特定的编程语言来描述。应当了解,可以使用多种编程语言来实现本文描述的实施例的教导。
本领域技术人员将进一步了解,结合本文所公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其他处理设备执行的的指令、或两者的组合。作为示例,本文所描述的分布式天线系统的组件可以被用于任何电路、硬件组件、集成电路(IC) 或IC芯片中。本文所公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储所期望的任何类型的信息。为了清楚地说明这种可互换性,各种说明性组件、块、模块、电路和步骤已在上面大体上根据它们的功能性进行了描述。如何实现这种功能性取决于特定应用、设计选择和/或施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实现所描述的功能性,但是这样的实现决策不应被解释为导致背离本实施例的范围。
结合本文所公开的实施例描述的各种说明性逻辑块、模块和电路可以用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或被设计来执行本文所述功能其任何组合来实现或执行。此外,控制器可以是处理器。处理器可以是微处理器,但是在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,DSP 和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核结合、或者任何其他这样的配置)。
本文所公开的实施例可以被体现在硬件中和存储在硬件中的指令中,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM (EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质耦合到处理器,以使得处理器可以从存储介质中读取信息和将信息写到存储介质。在替代方案中,存储介质可以被集成到处理器中。处理器和存储介质可以驻留在ASIC中。 ASIC可以驻留在远程站中。在替代方案中,处理器和存储介质可以作为分立组件驻留在远程站、基站或服务器中。
还应注意,在本文中的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以除了所图示的顺序之外的许多不同的顺序来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中被执行。此外,在示例性实施例中讨论的一个或多个操作步骤可以被组合。本领域技术人员还将理解,可以使用多种技术和科技中的任何一种来表示信息和信号。例如,在整个以上描述中可以参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。
除非另有明确说明,否则本文阐述的任何方法决不旨在被解释为要求其步骤以特定顺序来执行。因此,如果方法权利要求实际上并未叙述其步骤所遵循的顺序,或者在权利要求或说明书中没有另外具体说明这些步骤将被限制为特定顺序,则绝不意味着推断任何特定的顺序。
对于本领域的技术人员来说显而易见的是,在不背离本发明的精神或范围的情况下,可以做出各种修改和变型。由于本领域技术人员可以想到结合本发明的精神和实质的所公开的实施例的修改、组合、子组合和变型,因此本发明应被解释为包括在所附权利要求及其等价物的范围内的所有内容。

Claims (15)

1.一种中央处理单元(CPU)中的存储器管理系统,所述CPU在基于处理器的系统的处理器中,包括:
页表,在所述基于处理器的系统的系统存储器中,所述页表包括至少一个分级页表,每个分级页表包括多个页表条目,每个页表条目能够通过虚拟地址(VA)而被寻址并且被配置为存储与所述VA相关联的物理地址(PA);
存储器管理单元(MMU)转换后备缓冲器(TLB),所述MMU TLB包括多个MMU TLB条目,每个MMU TLB条目被配置为存储所述页表中的高速缓存的页表条目;
存内TLB,在所述系统存储器中,所述存内TLB包括多个存内TLB条目,每个存内TLB条目被配置为存储所述页表中的高速缓存的页表条目;
页表遍历器电路,被配置为基于所述VA来访问所述页表中的所述至少一个分级页表中的所述多个页表条目;以及
MMU电路,被配置为:
基于针对所述CPU中的进程而被执行的计算机软件指令来接收包括VA的存储器访问请求;
确定所述MMU TLB中的MMU TLB条目是否包含如下页表条目,所述页表条目包括与所述VA相对应的PA;以及
响应于确定所述MMU TLB不包含如下MMU TLB条目,所述MMU TLB条目包含与所述VA直接相对应的页表条目:
确定与在被分配给所述基于处理器的系统中的所述系统存储器中的所述进程的存内TLB中的所述VA相对应的存内TLB条目中所存储的VA,是否与所述存储器访问请求的所述VA匹配;以及
响应于确定在所述存内TLB条目中所存储的所述VA与所述存储器访问请求的所述VA匹配,基于与所述VA相对应的所述存内TLB条目中的被访问的所述页表条目,将所述VA转换为PA。
2.根据权利要求1所述的存储器管理系统,其中所述MMU电路还被配置为,响应于确定在所述存内TLB条目中所存储的所述VA与所述存储器访问请求的所述VA匹配:
将所述存内TLB条目中的所述页表条目写到所述MMU TLB中与所述VA相对应的MMU TLB条目。
3.根据权利要求1所述的存储器管理系统,其中所述MMU电路还被配置为,响应于确定所述MMU TLB包含如下MMU TLB条目,所述MMU TLB条目包含与所述VA相对应的页表条目:
将所述VA转换为被包含在与所述VA相对应的所述MMU TLB条目中的所述PA。
4.根据权利要求1所述的存储器管理系统,其中所述MMU电路还被配置为,响应于确定在被分配给所述进程的所访问的所述存内TLB中所存储的所述VA与所述存储器访问请求的所述VA不匹配:
使所述页表遍历器电路:
访问所述页表中与所述存储器访问请求的所述VA相对应的至少一个分级页表;以及
将所述VA转换为在与所述VA相对应的所述至少一个分级页表中的页表条目中所包含的所述PA。
5.根据权利要求1所述的存储器管理系统,其中:
所述存内TLB中的每个存内TLB条目还包括锁定指示符字段,所述锁定指示符字段被配置为存储指示锁定状态的锁定指示符;
所述MMU电路还被配置为,响应于确定所述TLB MMU不包含如下MMU TLB条目,所述MMUTLB条目包含与所述VA相对应的页表条目:
确定与被分配给所述进程的所述存内TLB中的所述VA相对应的所述存内TLB条目中的所述锁定字段中的锁定指示符是否与所述存储器访问请求的所述VA匹配;以及
响应于所述锁定指示符指示针对与所述VA相对应的所述存内TLB条目的锁定状态,不基于所述存内TLB条目中的被访问的所述页表条目将所述VA转换为PA。
6.根据权利要求1所述的存储器管理系统,其中所述MMU电路还被配置为:
接收针对所述进程的失效指示符;以及
响应于接收到针对所述进程的所述失效指示符,响应于所述存内TLB条目包含页表条目来冲刷被分配给所述进程的所述存内TLB中的存内TLB条目。
7.根据权利要求1所述的存储器管理系统,其中:
所述存内TLB中的每个存内TLB条目还包括被配置为存储世代号的世代号字段;以及
所述MMU电路被配置为,响应于确定在被分配给所述进程的所述存内TLB中的被访问的所述页表条目中所存储的所述VA与所述存储器访问请求的所述VA不匹配:
将与所述存储器访问请求的所述VA相对应的所述页表中的所述至少一个级别表中的所述页表条目和当前世代号写到与所述存内TLB中的所述VA相对应的存内TLB条目。
8.根据权利要求1所述的存储器管理系统,还包括:
所述存内TLB;以及
其中:
所述页表包括:
叶分级页表,包括多个叶页表条目,每个叶页表条目能够通过所述VA的叶级而被寻址并且被配置为存储与所述VA相关联的PA;
第一分级页表,包括多个第一分级页表条目,每个第一分级页表条目能够通过所述VA的第一分级而被寻址并且被配置为存储所述叶分级页表中的叶页表条目的地址;以及
第二分级页表,包括多个第二分级页表条目,每个第二分级页表条目能够通过所述VA的第二分级而被寻址并且被配置为存储所述第一分级页表中的第一分级页表条目的地址;
所述存内TLB包括所述多个存内TLB条目,每个存内TLB条目被配置为存储来自所述第二分级页表的第二分级页表条目;以及
所述MMU TLB包括所述多个MMU TLB条目,每个MMU TLB条目被配置为存储来自所述第一分级页表的第一分级页表条目。
9.根据权利要求1所述的存储器管理系统,还包括:
所述存内TLB;以及
其中:
所述页表包括:
叶分级页表,包括多个叶页表条目,每个叶页表条目能够通过所述VA的叶级而被寻址并且被配置为存储与所述VA相关联的PA;以及
第一分级页表,包括多个第一分级页表条目,每个第一分级页表条目能够通过所述VA的第一分级而被寻址并且被配置为存储所述叶分级页表中的叶页表条目的地址;以及
所述存内TLB包括所述多个存内TLB条目,每个存内TLB条目被配置为存储来自所述第一分级页表的第一分级页表条目;以及
所述MMU TLB包括所述多个MMU TLB条目,每个MMU TLB条目被配置为存储来自所述第一分级页表的第一分级页表条目。
10.根据权利要求1所述的存储器管理系统,还包括:
所述存内TLB;以及
其中:
所述页表包括:
叶分级页表,包括多个叶页表条目,每个叶页表条目能够通过所述VA的叶级而被寻址并且被配置为存储与所述VA相关联的PA;以及
第一分级页表,包括多个第一分级页表条目,每个第一分级页表条目能够通过所述VA的第一分级而被寻址并且被配置为存储所述叶分级页表中的叶页表条目的地址;以及
所述存内TLB包括:
第一存内TLB,包括第一多个存内TLB条目,所述第一多个存内TLB条目中的每个存内TLB条目被配置为存储来自所述第一分级页表的第一分级页表条目;以及
第二存内TLB,包括第二多个存内TLB条目,所述第二多个存内TLB条目中的每个存内TLB条目被配置为存储来自所述第二分级页表的第二分级页表条目。
11.一种在基于处理器的系统的处理器中的中央处理单元(CPU)中将虚拟地址(VA)转换为物理地址(PA)的方法,包括:
基于针对所述CPU中的进程而被执行的计算机软件指令来接收包括VA的存储器访问请求;
确定包括多个存储器管理单元(MMU)转换后备缓冲器(TLB)条目的MMU TLB中的MMUTLB条目是否包含如下页表条目,所述页表条目包括与所述VA相对应的PA,所述多个MMUTLB条目中的每个MMU TLB条目都被配置为在所述页表中存储高速缓存的页表条目,
其中所述页表条目被包含在所述页表中,所述页表包括至少一个分级页表,每个分级页表包括多个页表条目,每个页表条目能够通过VA而被寻址并且被配置为存储与所述VA相关联的PA;以及
响应于确定所述MMU TLB不包含如下MMU TLB条目,所述MMU TLB条目包含与所述VA相对应的页表条目:
确定与被分配给所述基于处理器的系统中的系统存储器中的进程的所述基于处理器的系统中的所述系统存储器中的存内TLB中的所述VA相对应的存内TLB条目中存储的VA是否与所述存储器访问请求的所述VA匹配;以及
响应于确定所述存内TLB条目中存储的所述VA与所述存储器访问请求的所述VA匹配,基于与所述VA相对应的所述存内TLB条目中被访问的所述页表条目,将所述VA转换为PA。
12.根据权利要求11所述的方法,还包括,响应于确定在被分配给所述进程的被访问的所述存内TLB中所存储的所述VA与所述存储器访问请求的所述VA不匹配:
访问与所述存储器访问请求的所述VA相对应的所述页表电路中的所述至少一个分级页表;以及
将所述VA转换为在与所述VA相对应的所述至少一个分级页表中的页表条目中所包含的所述PA。
13.一种基于处理器的系统,包括:
系统存储器;
包括一个或多个中央处理单元(CPU)的处理器,每个中央处理单元被配置为执行操作系统软件程序中的计算机指令和一个或多个进程;
所述一个或多个CPU中的每个CPU包括存储器管理系统,所述存储器管理系统包括:
页表,在系统存储器中,所述页表包括多个分级页表,每个分级页表包括多个页表条目,每个页表条目能够通过虚拟地址(VA)而被寻址并且被配置为存储与所述VA相关联的物理地址(PA);
存储器管理单元(MMU)转换后备缓冲器(TLB),所述MMU TLB包括多个MMU TLB条目,每个MMU TLB条目被配置为存储所述页表中的高速缓存的页表条目;
存内TLB,在所述系统存储器中,所述存内TLB包括多个存内TLB条目,每个存内TLB条目被配置为存储在所述页表中的高速缓存的页表条目;
页表遍历器电路,所述页表遍历器电路被配置为基于所述VA来访问所述页表中的所述至少一个分级页表中的页表条目;以及
MMU电路,被配置为:
基于针对所述一个或多个CPU中的CPU中的所述一个或多个进程中的进程而执行的计算机软件指令来接收包括VA的存储器访问请求;
确定所述MMU TLB中的MMU TLB条目是否包含如下页表条目,所述页表条目包含与所述VA相对应的PA;以及
响应于确定所述MMU TLB不包含如下MMU TLB条目,所述MMU TLB条目包含与所述VA相对应的页表条目:
确定在与被分配给所述基于处理器的系统中的所述系统存储器中的所述进程的存内TLB中的所述VA相对应的存内TLB条目中所存储的VA是否与所述存储器访问请求的所述VA匹配;以及
响应于确定在所述存内TLB条目中所存储的所述VA与所述存储器访问请求的所述VA匹配,基于与所述VA相对应的所述存内TLB条目中的被访问的所述页表条目,将所述VA转换为PA。
14.根据权利要求13所述的基于处理器的系统,其中CPU被配置为执行所述操作系统软件以:
确定所述系统存储器的VA到PA映射已经针对已执行进程发生改变,所述VA到PA映射包括映射到一个或多个PA的一个或多个VA;
响应于确定系统存储器的VA到PA映射已经针对所述已执行进程发生改变:
确定与针对所述进程的所述VA到PA映射中的所述VA相对应的所述页表中的所述页表条目是否仅由叶页表条目组成;
响应于确定与针对所述进程的所述VA到PA映射中的所述VA相对应的所述页表中的所述页表条目不仅由叶页表条目组成:
确定与针对所述进程的所述VA到PA映射中的所述VA相对应的所述页表中的所述页表条目是否被包含在与针对所述已执行进程的所述VA到PA映射中的所述VA相对应的所述存内TLB中的所述存内TLB条目中;以及
响应于确定针对所述进程的所述VA到PA映射相对应的所述页表中的所述页表条目被包含在与针对所述已执行进程的所述VA相对应的所述存内TLB中的所述存内TLB条目中:
冲刷与针对所述已执行进程的所述VA到PA映射中的所述VA相对应的所述存内TLB中的所述存内TLB条目。
15.根据权利要求14所述的基于处理器的系统,其中所述CPU还被配置为响应于确定与针对所述进程的所述VA到PA映射中的所述VA相对应的所述页表中的所述页表条目仅由叶页表条目组成,执行所述操作系统软件程序以:
冲刷与所述MMU TLB中的所述VA到PA映射中的所述VA相对应的所述MMU TLB条目。
CN202080079264.4A 2019-11-15 2020-10-28 在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB) Pending CN114761934A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/685,320 US11232042B2 (en) 2019-11-15 2019-11-15 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
US16/685,320 2019-11-15
PCT/US2020/057585 WO2021096678A1 (en) 2019-11-15 2020-10-28 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

Publications (1)

Publication Number Publication Date
CN114761934A true CN114761934A (zh) 2022-07-15

Family

ID=73544288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080079264.4A Pending CN114761934A (zh) 2019-11-15 2020-10-28 在基于处理器的系统中用于增强用于将虚拟地址(VA)转换为物理地址(PA)的存储器管理单元(MMU)TLB的进程专用的存储器中转换后备缓冲器(TLB)(mTLB)

Country Status (4)

Country Link
US (3) US11232042B2 (zh)
EP (1) EP4058894B1 (zh)
CN (1) CN114761934A (zh)
WO (1) WO2021096678A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP7537135B2 (ja) * 2020-06-15 2024-08-21 富士通株式会社 半導体装置
US20220382478A1 (en) * 2021-06-01 2022-12-01 Samsung Electronics Co., Ltd. Systems, methods, and apparatus for page migration in memory systems
WO2023288192A1 (en) * 2021-07-14 2023-01-19 Nuvia, Inc. Level-aware cache replacement
EP4283476B1 (en) * 2022-05-24 2024-06-19 Samsung Electronics Co., Ltd. Input output memory management unit and electronic device having the same
KR20230163881A (ko) * 2022-05-24 2023-12-01 삼성전자주식회사 입출력 메모리 관리 유닛과 이를 포함하는 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4774653A (en) * 1985-08-07 1988-09-27 Hewlett-Packard Company Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers
US6356915B1 (en) * 1999-02-22 2002-03-12 Starbase Corp. Installable file system having virtual file system drive, virtual device driver, and virtual disks
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US20060224815A1 (en) 2005-03-30 2006-10-05 Koichi Yamada Virtualizing memory management unit resources
US7937556B2 (en) * 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
US20130326143A1 (en) * 2012-06-01 2013-12-05 Broadcom Corporation Caching Frequently Used Addresses of a Page Table Walk
US9135183B2 (en) * 2013-03-13 2015-09-15 Samsung Electronics Co., Ltd. Multi-threaded memory management
US9639476B2 (en) 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
US9690714B1 (en) * 2014-04-07 2017-06-27 Google Inc. Multiple page-size translation lookaside buffer
US9405702B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Caching TLB translations using a unified page table walker cache
US9886393B2 (en) * 2016-04-13 2018-02-06 At&T Mobility Ii Llc Translation lookaside buffer switch bank
US10372618B2 (en) * 2016-10-14 2019-08-06 Arm Limited Apparatus and method for maintaining address translation data within an address translation cache
US10754790B2 (en) 2018-04-26 2020-08-25 Qualcomm Incorporated Translation of virtual addresses to physical addresses using translation lookaside buffer information
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

Also Published As

Publication number Publication date
US20240028522A1 (en) 2024-01-25
US11803482B2 (en) 2023-10-31
EP4058894A1 (en) 2022-09-21
US20220147463A1 (en) 2022-05-12
US11232042B2 (en) 2022-01-25
US20210149818A1 (en) 2021-05-20
US12093186B2 (en) 2024-09-17
EP4058894B1 (en) 2024-10-16
WO2021096678A1 (en) 2021-05-20

Similar Documents

Publication Publication Date Title
EP4058894B1 (en) 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
CN110998549B (zh) 地址转换缓存
US9405702B2 (en) Caching TLB translations using a unified page table walker cache
US7447869B2 (en) Method and apparatus for fragment processing in a virtual memory system
US20160140042A1 (en) Instruction cache translation management
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
US20130326143A1 (en) Caching Frequently Used Addresses of a Page Table Walk
US20040117588A1 (en) Access request for a data processing system having no system memory
JP6478843B2 (ja) 半導体装置及びキャッシュメモリ制御方法
JP2018511120A (ja) キャッシュ保守命令
US9697137B2 (en) Filtering translation lookaside buffer invalidations
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
US20240303202A1 (en) Method and apparatus for solving cache address alias
US9507729B2 (en) Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
US20040117590A1 (en) Aliasing support for a data processing system having no system memory
US20220318139A1 (en) Processor supporting translation lookaside buffer (tlb) modification instruction for updating hardware-managed tlb and related methods
US11868269B2 (en) Tracking memory block access frequency in processor-based devices
EP4026007B1 (en) Facilitating page table entry (pte) maintenance in processor-based devices
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor
Rao et al. Implementation of Efficient Cache Architecture for Performance Improvement in Communication based Systems
US20040117583A1 (en) Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination