CN114258533A - 在基于处理器的设备中优化对页表条目的访问 - Google Patents

在基于处理器的设备中优化对页表条目的访问 Download PDF

Info

Publication number
CN114258533A
CN114258533A CN202080058258.0A CN202080058258A CN114258533A CN 114258533 A CN114258533 A CN 114258533A CN 202080058258 A CN202080058258 A CN 202080058258A CN 114258533 A CN114258533 A CN 114258533A
Authority
CN
China
Prior art keywords
page table
memory
memory address
memory access
processor
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
CN202080058258.0A
Other languages
English (en)
Inventor
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 CN114258533A publication Critical patent/CN114258533A/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

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

公开了在基于处理器的设备中优化对页表条目的访问。在该方面,基于处理器的设备的执行流水线的指令解码级接收包括虚拟存储器地址的存储器访问指令。基于处理器的设备的页表行走器电路基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。页表行走器接下来执行多级页表的T个页表行走级别的页表行走,并且标识与第T页表行走级别的页表条目相对应的物理存储器地址。然后,基于处理器的设备使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。

Description

在基于处理器的设备中优化对页表条目的访问
技术领域
本公开的技术涉及在基于处理器的设备中访问页表条目,并且更具体地涉及访问多级页表中的页表条目。
背景技术
页表是现代基于处理器的设备用来提供虚拟存储器功能的数据结构。页表提供页表条目,该页表条目存储虚拟存储器地址与对应物理存储器地址(即,系统存储器中的存储器位置的地址)之间的映射。当基于处理器的设备需要将虚拟存储器地址转换为物理存储器地址时,基于处理器的设备访问页表以定位与虚拟存储器地址相关联的页表条目,并且然后从页表条目中读取对应物理存储器地址。最近访问的映射还可以被基于处理器的设备高速缓存(cach)在转换旁路缓冲区(TLB)中,以供后续重用,而无需重复转换过程。通过使用页表来实现虚拟存储器功能,基于处理器的设备使得软件进程能够访问彼此隔离并且在概念上可能大于可用物理存储器的安全存储器空间。
多级页表是一种利用被组织成分层数据结构的多个页表的页表变体。为了使用多级页表转换虚拟存储器地址,由基于处理器的设备提供并且称为“页表行走器”的硬件元件执行“页表行走”。在页表行走的第一步中,页表行走器使用指向多级页表中的最高级别页表的基地址,并且应用虚拟存储器地址的最上面的位集作为索引来访问最高级别页表中的页表条目。该页表条目提供指向下一较低页表的指针,页表行走器结合虚拟存储器地址的下一较低位集使用该指针来访问下一较低页表中的页表条目。下一较低页表中的页表条目包含指向另一下一较低页表的指针,以此类推。多级页表的最底级别的页表提供指向物理存储器页的指针,该指针结合虚拟存储器地址的最底位集来确定与虚拟存储器地址相对应的物理存储器地址。
在一些场景中,可能需要使得软件进程能够修改页表本身的内容(例如,更新存储在页表的页表条目中的物理存储器地址,或修改对应存储器页的访问权限,作为非限制性示例)。为此,寻求修改页表条目的软件进程必须首先获取该页表条目在系统存储器内的物理存储器地址。一种获取页表条目的物理存储器地址的方法涉及多级页表的每个页表的递归映射,使得每个页表的最后的页表条目(即,具有与虚拟存储器地址相关联的最高索引的页表条目)存储指向该页表的指针。在软件进程对页表条目执行存储器访问操作之前,软件进程首先对虚拟存储器地址执行向右移位,并且用一(1)填充虚拟存储器地址的高位。页表行走器然后使用移位后的虚拟存储器地址执行常规页表行走。因为用作最高级别页表索引的虚拟存储器地址的最上面的位集都是一(1),所以页表行走器首先访问的页表条目是最高级别的页表中的最后的页表条目,该页表条目仅仅指回最高级别的页表。结果,页表行走器(通常被配置为在执行页表行走时遍历多级页表的指定数目的级别)将“提前”一个级别结束其页表行走,并且将返回最低级页表中的页表条目的物理存储器地址,而不是系统存储器中的物理存储器地址。
虽然递归映射确实提供了一种允许存储器访问指令访问页表条目本身的解决方案,但是这种方法确实具有缺点。特别地,递归映射需要在多级页表的每个页表中有专用页表条目,这减少了可用于地址转换的页表条目的数目。此外,虽然由页表行走器执行的递归页表访问可以被高速缓存在TLB中,但是被高速缓存的递归映射仅可用于后续递归映射,这会导致效率降低。
因此,需要一种用于获取多级页表中的页表条目的物理存储器地址的更高效的机制。
发明内容
本文中公开的示例性实施例包括基于处理器的设备中对页表条目的访问的优化。在这点上,在一个示例性实施例中,基于处理器的设备的执行流水线的指令解码级接收包括虚拟存储器地址的存储器访问指令(例如,存储器加载指令、存储器存储指令、或存储器读取/修改/写入指令,作为非限制性示例)。基于处理器的设备的页表行走器电路基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。在一些实施例中,存储器访问指令可以提供明确指定要遍历的页表行走级别的数目T的遍历指示符,而一些实施例可以规定,要遍历的页表行走级别的数目T可以基于由虚拟存储器地址指示的递归遍历的计数来确定。页表行走器接下来执行多级页表的T个页表行走级别的页表行走,并且标识与第T页表行走级别的页表条目相对应的物理存储器地址。然后,基于处理器的设备使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。
在另一示例性实施例中,提供了一种基于处理器的设备。该基于处理器的设备包括系统存储器,该系统存储器包括由多个页表组成的多级页表,每个页表包括多个页表条目。该基于处理器的设备还包括处理元件(PE),该PE包括执行流水线和页表行走器电路,该执行流水线包括指令解码级。PE被配置为使用指令解码级接收包括虚拟存储器地址的存储器访问指令。PE还被配置为使用页表行走器电路基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。PE还被配置为使用页表行走器电路基于虚拟存储器地址执行多级页表的T个页表行走级别的页表行走。PE还被配置为基于页表行走标识与第T页表行走级别的页表条目相对应的物理存储器地址。PE还被配置为使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。
在另一示例性实施例中,提供了一种用于优化对页表条目的访问的方法。该方法包括由基于处理器的设备的处理元件(PE)的执行流水线的指令解码级接收包括虚拟存储器地址的存储器访问指令。该方法还包括由PE的页表行走器电路基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。该方法还包括由PE的页表行走器电路基于虚拟存储器地址执行多级页表的T个页表行走级别的页表行走。该方法还包括基于页表行走标识与第T页表行走级别的页表条目相对应的物理存储器地址。该方法还包括使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。
在另一示例性实施例中,提供了一种非暂态计算机可读介质,该计算机可读介质上存储有计算机可执行指令,该计算机可执行指令在由处理器执行时引起处理器接收包括虚拟存储器地址的存储器访问指令。该计算机可执行指令还引起处理器基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。该计算机可执行指令还引起处理器基于虚拟存储器地址执行多级页表的T页表行走级别的页表行走。该计算机可执行指令还引起处理器基于页表行走标识与第T页表行走级别的页表条目相对应的物理存储器地址。该计算机可执行指令还引起处理器使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。
本领域技术人员在结合附图阅读以下优选实施例的详细描述之后将能够理解本公开的范围并且实现其附加实施例。
附图说明
包含在本说明书中并且构成本说明书的一部分的附图示出了本公开的若干实施例,并且与描述一起用于解释本公开的原理。
图1是包括处理元件(PE)的示例性的基于处理器的设备的示意图,该PE包括被配置为优化对页表条目的访问的页表行走器电路;
图2是示出用于优化对页表条目的访问的图1的多级页表及其组成页表的示例性遍历的框图;
图3A-图3C是分别示出与图1的存储器访问指令相对应的示例性存储器加载指令、示例性存储器存储指令和示例性存储器读取/修改/写入指令的框图;
图4A和图4B是示出用于优化对页表条目的访问的示例性操作的流程图;以及
图5是被配置为优化对页表条目的访问的示例性的基于处理器的设备(诸如图1的基于处理器的设备)的框图。
具体实施方式
本文中公开的示例性实施例包括基于处理器的设备中对页表条目的访问的优化。在一个示例性实施例中,基于处理器的设备的执行流水线的指令解码级接收包括虚拟存储器地址的存储器访问指令(例如,存储器加载指令、存储器存储指令、或存储器读取/修改/写入指令,作为非限制性示例)。基于处理器的设备的页表行走器电路基于存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址所需要的页表行走级别的数目。在一些实施例中,存储器访问指令可以提供明确指定要遍历的页表行走级别的数目T的遍历指示符,而一些实施例可以规定,要遍历的页表行走级别的数目T可以基于由虚拟存储器地址指示的递归遍历的计数来确定。页表行走器接下来执行多级页表的T个页表行走级别的页表行走,并且标识与第T页表行走级别的页表条目相对应的物理存储器地址。然后,基于处理器的设备使用物理存储器地址执行由存储器访问指令指示的存储器访问操作。
在这点上,图1示出了提供用于处理可执行指令的处理元件(PE)102的示例性的基于处理器的设备100。PE 102可以包括具有一个或多个处理器核的中央处理单元(CPU),或者可以包括具有逻辑执行单元以及相关联的高速缓存和功能单元的个体处理器核。图1的PE 102包括执行流水线104,执行流水线104被配置为执行包括计算机可执行指令的指令流。在图1的示例中,执行流水线104包括用于检索指令以供执行的指令取回级106、用于将所取回的指令转换为用于指令执行的控制信号的指令解码级108、以及用于实际执行指令执行的指令执行级110。应当理解,基于处理器的设备100的一些实施例可以包括多个PE102而不是图1的示例中所示的单个PE102,并且另外,与图1的示例中所示的相比,PE 102的一些实施例可以在执行流水线104中包括更少或更多的级。
图1的PE 102通信耦合到系统存储器112,系统存储器112存储多级页表114,多级页表114包括用于虚拟到物理地址转换的多个页表116(0)-116(P)。图1的PE 102还包括页表行走器电路118,页表行走器电路118体现用于在多级页表114上执行页表行走以将虚拟存储器地址转换为物理存储器地址的逻辑。PE 102的一些实施例还包括转换后备旁路缓冲区(TLB)120,TLB 120用于高速缓存虚拟存储器地址到物理存储器地址的最近转换以供后续重用。下面关于图2更详细地讨论用于执行虚拟到物理地址转换的多级页表114和页表行走器电路118的结构和功能。
图1的基于处理器的设备100及其组成元件可以包括已知数字逻辑元件、半导体电路、处理核和/或存储器结构、以及其他元件、或其组合中的任何一种。本文中描述的实施例不限于元件的任何特定布置,并且所公开的技术可以容易地扩展到半导体插座或封装上的各种结构和布局。应当理解,基于处理器的设备100的一些实施例可以包括除图1所示的元件之外的其他元件。例如,PE 102还可以包括一个或多个指令高速缓存、统一高速缓存、存储器控制器、互连总线、和/或另外的存储器设备、高速缓存和/或控制器电路。
如上所述,可能出现期望允许由PE 102执行的软件进程修改多级页表114的页表116(0)-116(P)的内容的情况。作为非限制性示例,软件进程可能需要更新存储在页表116(0)-116(P)中的一个的页表条目中的物理存储器地址,或者可能需要修改对对应存储器页的访问权限。为了修改页表条目,必须首先确定在系统存储器112内的页表条目本身的物理存储器地址。用于使得软件进程能够访问页表条目的现有解决方案可以涉及递归地映射多级页表114的页表116(0)-116(P)中的每个页表,使得页表116(0)-116(P)中的每个的最后的页表条目(即,与虚拟存储器地址相关联的具有最高索引的页表条目)存储指向该页表116(0)-116(P)的指针。然而,递归映射需要多级页表114的页表116(0)-116(P)中的每个页表中有专用页表条目,这减少了可用于地址转换的页表条目的数目。此外,虽然由页表行走器电路118执行的递归页表访问可以被缓存在TLB 120中,但是所缓存的递归映射仅可用于后续递归映射,这会导致效率降低。
在这点上,PE 102被配置为提供基于处理器的设备中对页表条目的访问的优化。在示例性实施例中,执行流水线104的指令解码级108接收存储器访问指令122。存储器访问指令122包括虚拟存储器地址124,并且在一些实施例中,存储器访问指令122可以是存储器加载指令、存储器存储指令、或存储器读取/修改/写入指令,作为非限制性示例。页表行走器电路118基于存储器访问指令122确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址124所需要的页表行走级别的数目。在一些实施例中,存储器访问指令122可以提供明确指定要遍历的页表行走级别的数目T的遍历指示符126。遍历指示符126可以包括立即值操作数,或者可以包括指示存储要遍历的页表行走级别的数目T的寄存器的寄存器操作数。根据一些实施例,要遍历的页表行走级别的数目T可以基于由虚拟存储器地址124指示的递归遍历的计数来自动确定。
页表行走器电路118然后执行多级页表114的T个页表行走级别的页表行走,并且标识与第T页表行走级别的页表条目相对应的物理存储器地址。PE 102使用由页表行走器电路118返回的物理存储器地址来执行由存储器访问指令122指示的存储器访问操作(例如,通过使用指令执行级110执行存储器访问指令122)。在其中存储器访问指令122是存储器加载指令或存储器读取/修改/写入指令的实施例中,执行存储器访问操作可以包括返回由物理存储器地址指示的存储器位置的内容。其中存储器访问指令122是存储器存储指令或存储器读取/修改/写入指令的实施例可以规定,执行存储器访问操作包括将存储数据写入由物理存储器地址指示的存储器位置。
其中要遍历的页表行走级别的数目T可以自动确定的PE 102的一些实施例还可以提供优化选择指示符128以使得能够选择性地激活本文中描述的优化后的页表访问特征。在这样的实施例中,在执行流水线104的指令解码级108接收到存储器访问指令122之后,PE102确定优化选择指示符128是否处于设置状态。如果是,则执行上述用于确定要遍历的页表行走级别的数目T的操作和用于执行多级页表114的T个页表行走级别的页表行走的操作。如果优化选择指示符128未处于设置状态,则页表行走器电路118以常规方式执行页表行走。
为了更详细地描述多级页表114在常规使用中和在提供对页表条目的优化访问时的结构和功能,提供图2。如图2所示,图1的虚拟存储器地址124用于遍历图1的多级页表114的页表116(0)-116(3)(即,页表116(0)-116(P),其中在该示例中P=3)。在图2的示例中,虚拟存储器地址124包括与虚拟存储器地址转换相关的48位。虚拟存储器地址124被划分为:四(4)个位集200、202、204和206,每个集合有九(9)个位;以及一(1)个位集208,位集208包括虚拟存储器地址124的最低12位。位集200、202、204和206中的每个用作对应页表116(0)-116(3)的索引,而位集208用作包含最终与虚拟存储器地址124相对应的存储器位置212的存储器页210中的偏移。
在常规操作中,页表行走器电路118执行遍历四(4)个页表行走级别以将虚拟存储器地址124转换为对应物理存储器地址的页表行走。首先,页表行走器电路118检索指示页表116(0)的物理存储器地址的基地址214。然后,基地址214与虚拟存储器地址124的位集200的值相加以生成页表116(0)的页表条目216的物理存储器地址。这被认为是由页表行走器电路118遍历的第一页表行走级别。
一旦确定了页表条目216的物理存储器地址,页表行走器电路118就访问存储在页表条目216中的物理存储器地址218,该物理存储器地址218指向多级页表114中的下一页表116(1)。然后,物理存储器地址218与虚拟存储器地址124的位集202的值相加以生成页表116(1)的页表条目220的物理存储器地址。这些操作构成由页表行走器电路118遍历的第二页表行走级别。页表行走以类似方式继续,其中第三页表行走级别使用存储在页表条目220中的物理存储器地址222和位集204来生成页表116(2)的页表条目224的物理存储器地址,并且第四页表行走级别使用存储在页表条目226中的物理存储器地址226和位集206来生成页表116(3)的页表条目228的物理存储器地址。最后,页表行走器电路118使用存储在页表条目228中的物理存储器地址230结合虚拟存储器地址124的位集208来生成表示虚拟存储器地址124的转换并且指向存储器页210中的存储器位置212的物理存储器地址。
在上述常规示例中,页表行走器电路118执行四(4)个页表行走级别的页表行走以将虚拟存储器地址124转换为存储器位置212的物理存储器地址。然而,用于优化对页表条目的访问的图1的PE102的实施例允许执行较少数目的页表行走级别,这使得软件进程能够获取用于执行虚拟存储器地址124的转换的多级页表114的页表116(0)-116(P)的页表条目的物理存储器地址。例如,为了获取页表116(1)的页表条目220的物理存储器地址,只需要遍历两(2)个页表行走级别:一个用于使用基地址214和位集200来确定页表116(0)的页表条目216的物理存储器地址,一个用于使用存储在页表条目216中的物理存储器地址218与位集202一起确定页表条目220的物理存储器地址。因此,执行图1的存储器访问指令122同时指定两(2)个页表行走级别(例如,显式地使用遍历指示符126,或隐式地通过虚拟存储器地址124指示递归遍历)产生用于存储器访问操作的页表条目220的物理存储器地址。
如上所述,作为非限制性示例,图1的存储器访问指令122可以是存储器加载指令、存储器存储指令、或存储器读取/修改/写入指令。在这点上,图3A-图3C分别示出了与图1的存储器访问指令122相对应的示例性存储器加载指令、示例性存储器存储指令和示例性读取/修改/写入指令。在图3A中,在一些实施例中,与图1的存储器访问指令122相对应的存储器加载指令300包括与图1的虚拟存储器地址124相对应的虚拟存储器地址302。在一些实施例中,存储器加载指令300还可以包括在功能上与图1的遍历指示符126相对应的遍历指示符304。
类似地,在图3B中,根据一些实施例可以与图1的存储器访问指令122相对应的存储器存储指令306提供分别与图1的虚拟存储器地址124和遍历指示符126相对应的虚拟存储器地址308和遍历指示符310。存储器存储指令306还包括存储数据312,存储数据312表示要写入由于上面关于图1和图2描述的多级页表114的T个页表行走级别的页表行走而产生的物理存储器地址所指示的存储器位置的数据。在一些实施例中,存储数据312可以包括要写入存储器位置的立即值,或者可以包括指示存储要写入存储器位置的数据的寄存器的寄存器操作数。
图3C示出了在一些实施例中可以与图1的存储器访问指令122相对应的存储器读取/修改/写入指令312。类似于存储器存储指令306,存储器读取/修改/写入指令312提供分别与图1的虚拟存储器地址124和遍历指示符126相对应的虚拟存储器地址314和遍历指示符316。修改/写入指令312还包括存储数据318,存储数据318表示要写入由于上面关于图1和图2描述的多级页表114的T个页表行走级别的页表行走而产生的物理存储器地址所指示的存储器位置的数据。根据一些实施例的存储数据318可以包括要写入存储器位置的立即值,或者可以包括指示存储要写入存储器位置的数据的寄存器的寄存器操作数。
应当理解,在一些实施例中,存储器加载指令300、存储器存储指令306和存储器读取/修改/写入指令312每个可以在PE 102内实现为具有由PE 102的指令集架构(ISA)提供的唯一操作码的专用指令。替代地或另外地,存储器加载指令300、存储器存储指令306和/或存储器读取/修改/写入指令312可以是常规存储器访问指令,附加操作数和/或操作码位与该常规存储器访问指令相加以完成本文中描述的功能。
图4A和图4B示出了用于优化图1的基于处理器的设备100对页表条目的访问的示例性操作400。为了清楚起见,在描述图4A和图4B时参考图1和图2的元素。根据一些实施例,图4A中的操作400开始于基于处理器的设备100的PE 102的执行流水线104的指令解码级108接收包括虚拟存储器地址124的存储器访问指令122(框402)。在其中PE 102提供优化选择指示符128的实施例中,页表行走器电路118可以确定PE 102的优化选择指示符128是否处于设置状态(框404)。如果不是,则页表行走器电路118执行常规页表行走(框406)。
然而,如果PE 102在判定框404确定优化选择指示符128处于设置状态,或者如果PE 102不提供优化选择指示符128,则PE 102的页表行走器电路118基于存储器访问指令122确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换虚拟存储器地址124所需要的页表行走级别的数目(框408)。在一些实施例中,用于确定要遍历的页表行走级别的数目T的框408的操作可以基于遍历指示符126(框410)。一些实施例可以规定,用于确定要遍历的页表行走级别的数目T的框408的操作可以基于由虚拟存储器地址124指示的一次或多次递归遍历的计数(框412)。然后,处理在图4B的框414处恢复。
现在参考图4B,PE 102的页表行走器电路118接下来基于虚拟存储器地址124执行多级页表114的T个页表行走级别的页表行走(框414)。根据一些实施例,TLB 120可以高速缓存多级页表114的T个页表行走级别的页表行走(框416)。在这样的实施例中,用于执行多级页表114的T个页表行走级别的页表行走的框414的操作可以涉及响应于对TLB 120的命中而访问TLB 120中先前被高速缓存的页表行走。页表行走器电路118然后基于页表行走标识与第T页表行走级别的页表条目(例如,图2的页表条目220)相对应的物理存储器地址(框418)。PE 102使用物理存储器地址执行由存储器访问指令122指示的存储器访问操作(框420)。在存储器访问指令122是图3A的存储器加载指令300、或图3C的存储器读取/修改/写入指令312的一些实施例中,用于执行存储器访问操作的框420的操作可以包括返回由物理存储器地址指示的存储器位置的内容(框422)。存储器访问指令122是图3B的存储器存储指令306或图3C的存储器读取/修改/写入指令312的一些实施例可以规定,用于执行存储器访问操作的框420的操作可以包括将存储数据312写入由物理存储器地址指示的存储器位置(框424)。
图5是提供对页表条目的优化访问的示例性的基于处理器的设备500(诸如图1的基于处理器的设备100)的框图。基于处理器的设备500可以是被包括在电子板卡中的一个或多个电路,诸如印刷电路板(PCB)、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA)、计算板、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在该示例中,基于处理器的设备500包括处理器502。处理器502表示一个或多个通用处理电路,诸如微处理器、中央处理单元等,并且可以对应于图1的PE102。处理器502被配置为执行指令中的处理逻辑以执行本文中讨论的操作和步骤。在该示例中,处理器502包括用于指令的临时快速访问存储器存储的指令高速缓存504、和指令处理电路510。从存储器(诸如通过系统总线506从系统存储器508)中取回或预取的指令存储在指令高速缓存504中。指令处理电路510被配置为处理取回指令高速缓存504中的指令并且处理指令以供执行。
处理器502和系统存储器508耦合到系统总线506并且可以相互耦合被包括在基于处理器的设备500中的外围设备。众所周知,处理器502通过经由系统总线506交换地址、控制和数据信息来与这些其他设备通信。例如,处理器502可以将总线事务请求传送到作为外围设备示例的系统存储器508中的存储器控制器512。尽管图5中未示出,但可以提供多个系统总线506,其中每个系统总线构成不同结构。在该示例中,存储器控制器512被配置为向系统存储器508中的存储器阵列514提供存储器访问请求。存储器阵列514包括用于存储数据的存储位单元阵列。系统存储器508可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如同步DRAM(SDRAM)等)、以及静态存储器(例如,闪存、静态随机存取存储器(SRAM)等),作为非限制性示例。
其他设备可以连接到系统总线506。如图5所示,例如,这些设备可以包括系统存储器508、一个或多个输入设备516、一个或多个输出设备518、调制解调器524和一个或多个显示控制器520。输入设备516可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。输出设备518可以包括任何类型的输出设备,包括但不限于不限于音频、视频、其他视觉指示器等。调制解调器524可以是被配置为允许与网络526交换数据的任何设备。网络526可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和互联网。调制解调器524可以被配置为支持期望的任何类型的通信协议。处理器502还可以被配置为通过系统总线506访问显示控制器520以控制发送到一个或多个显示器522的信息。显示器522可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
图5中的基于处理器的设备500可以包括指令集528,该指令集528可以用基于范围(reach-based)的显式消费者命名模型进行编码,以便由处理器502针对根据指令而期望的任何应用来执行。指令528可以存储在系统存储器508、处理器502和/或指令高速缓存504(作为非暂态计算机可读介质530的示例)中。指令528也可以在其执行期间完全或至少部分驻留在系统存储器内508和/或在处理器502内。指令528还可以经由调制解调器524通过网络526来传输或接收,使得网络526包括计算机可读介质530。
虽然计算机可读介质530在示例性实施例中被示出为单个介质,但是术语“计算机可读介质”应当被认为包括存储一个或多个指令集528的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“计算机可读介质”也应当被认为包括能够存储、编码或携带由处理设备执行的指令集并且引起处理设备执行本文中公开的实施例的任何一种或多种方法的任何介质。因此,术语“计算机可读介质”应当理解为包括但不限于固态存储器、光学介质和磁介质。
本文中公开的实施例包括各种步骤。本文中公开的实施例的步骤可以由硬件组件构成,也可以体现在机器可执行指令中,该机器可执行指令可以用于引起使用指令编程的通用或专用处理器执行这些步骤。替代地,这些步骤可以通过硬件和软件进程的组合来执行。
本文中公开的实施例可以被提供作为计算机程序产品或软件进程,该计算机程序产品或软件进程可以包括其上存储有指令的机器可读介质(或计算机可读介质),该指令可以用于将计算机系统(或其他电子设备)编程为执行根据本文中公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等)等。
除非另外特别说明并且从前面的讨论中很清楚,否则应当理解,在整个说明书中,使用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该动作和过程将在计算机系统的寄存器内表示为物理(电子)量的数据和存储器操纵和变换为在计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内类似地表示为物理量的其他数据。
本文中呈现的算法和显示与任何特定计算机或其他设备没有固有的相关性。各种系统可以根据本文中的教导与程序一起使用,或者可以证明构造更专门的装置来执行所需要的方法步骤是方便的。各种这些系统所需要的结构将从上面的描述中很清楚。此外,本文中描述的实施例没有参考任何特定编程语言来描述。应当理解,可以使用多种编程语言来实现本文中描述的实施例的教导。
本领域技术人员将进一步理解,结合本文中公开的实施例而描述的各种说明性逻辑块、模块、电路和算法可以被实现为电子硬件、存储在存储器或另一计算机可读介质中并且由处理器或其他处理设备执行的指令、或者这两者的组合。作为示例,本文中描述的分布式天线系统的组件可以在任何电路、硬件组件、集成电路(IC)或IC芯片中采用。本文中公开的存储器可以是任何类型和大小的存储器并且可以被配置为存储任何类型的期望信息。为了清楚地说明这种可互换性,各种说明性组件、块、模块、电路和步骤已经在上面大体上根据它们的功能进行了描述。如何实现这样的功能取决于特定应用、设计选择和/或强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决定不应当被解释为导致偏离本实施例的范围。
结合本文中公开的实施例描述的各种说明性逻辑块、模块和电路可以用被设计为执行本文中描述的功能的处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其任何组合来实现或执行。此外,控制器可以是处理器。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核结合、或任何其他这样的配置)。
本文中公开的实施例可以体现在硬件中和在存储在硬件中的指令中,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的计算机可读介质中。示例性存储介质耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。替代地,存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。在替代方案中,处理器和存储介质可以作为分立组件驻留在远程站、基站或服务器中。
还应当注意,在本文中的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可以以不同于所示出的序列的很多不同序列来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同步骤中执行。此外,在示例性实施例中讨论的一个或多个操作步骤可以组合。本领域技术人员还将理解,信息和信号可以使用多种工艺和技术中的任何一种来表示。例如,在以上描述中可以作为参考的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子、或其任何组合表示。
除非另有明确说明,否则绝不旨在将本文中阐述的任何方法解释为要求其步骤以特定顺序执行。因此,如果方法权利要求实际上没有叙述其步骤所遵循的顺序,或者在权利要求或说明书中没有另外具体说明这些步骤限于特定顺序,则绝不表示可以推断任何特定顺序。
对本领域技术人员很清楚,在不脱离本发明的精神或范围的情况下可以进行各种修改和变化。由于本领域技术人员可以想到包含本发明的精神和实质的所公开的实施例的修改、组合、子组合和变化,因此本发明应当被解释为包括在所附权利要求及其等同物的范围内的所有内容。

Claims (15)

1.一种基于处理器的设备,包括:
系统存储器,包括多级页表,所述多级页表包括多个页表,每个页表包括多个页表条目;以及
处理元件(PE),包括:
执行流水线,包括指令解码级;以及
页表行走器电路;
所述PE被配置为:
使用所述指令解码级接收包括虚拟存储器地址的存储器访问指令;
使用所述页表行走器电路基于所述存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换所述虚拟存储器地址所需要的页表行走级别的数目;
使用所述页表行走器电路基于所述虚拟存储器地址执行所述多级页表的T个页表行走级别的页表行走;
基于所述页表行走标识与第T页表行走级别的页表条目相对应的物理存储器地址;以及
使用所述物理存储器地址执行由所述存储器访问指令指示的存储器访问操作。
2.根据权利要求1所述的基于处理器的设备,其中:
所述存储器访问指令还包括遍历指示符,所述遍历指示符指示所述要遍历的页表行走级别的数目T;以及
所述PE被配置为基于所述遍历指示符确定所述要遍历的页表行走级别的数目T。
3.根据权利要求1所述的基于处理器的设备,其中:
所述多级页表被配置为支持递归遍历;
所述虚拟存储器地址指示所述多级页表的一次或多次递归遍历;以及
所述PE被配置为基于由所述虚拟存储器地址指示的所述一次或多次递归遍历的计数来确定所述要遍历的页表行走级别的数目T。
4.根据权利要求3所述的基于处理器的设备,其中:
所述PE还包括优化选择指示符;以及
所述PE被配置为响应于所述优化选择指示符处于设置状态而基于由所述虚拟存储器地址指示的所述一次或多次递归遍历的所述计数来确定所述要遍历的页表行走级别的数目T。
5.根据权利要求1所述的基于处理器的设备,其中所述PE还包括被配置为高速缓存所述多级页表的T个页表行走级别的所述页表行走的转换旁路缓冲区(TLB)。
6.根据权利要求1所述的基于处理器的设备,其中:
所述存储器访问指令包括存储器加载指令;以及
所述PE被配置为使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作,所述存储器访问操作被配置为返回由所述物理存储器地址指示的存储器位置的内容。
7.根据权利要求1所述的基于处理器的设备,其中:
所述存储器访问指令包括存储器存储指令;
所述存储器存储指令还包括存储数据;以及
所述PE被配置为使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作,所述存储器访问操作被配置为将所述存储数据写入由所述物理存储器地址指示的存储器位置。
8.根据权利要求1所述的基于处理器的设备,其中:
所述存储器访问指令包括存储器读取/修改/写入指令;
所述存储器读取/修改/写入指令还包括存储数据;以及
所述PE被配置为使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作,所述存储器访问操作被配置为:
返回由所述物理存储器地址指示的存储器位置的内容;以及
将所述存储数据写入由所述物理存储器地址指示的存储器位置。
9.一种用于优化对页表条目的访问的方法,包括:
由基于处理器的设备的处理元件(PE)的执行流水线的指令解码级接收包括虚拟存储器地址的存储器访问指令;
由所述PE的页表行走器电路基于所述存储器访问指令确定要遍历的页表行走级别的数目T,其中T大于零(0)并且小于或等于完全转换所述虚拟存储器地址所需要的页表行走级别的数目;
由所述PE的所述页表行走器电路基于所述虚拟存储器地址执行多级页表的T个页表行走级别的页表行走;
基于所述页表行走标识与第T页表行走级别的页表条目相对应的物理存储器地址;以及
使用所述物理存储器地址执行由所述存储器访问指令指示的存储器访问操作。
10.根据权利要求9所述的方法,其中:
所述存储器访问指令还包括遍历指示符,所述遍历指示符指示所述要遍历的页表行走级别的数目T;以及
确定所述要遍历的页表行走级别的数目T基于所述遍历指示符。
11.根据权利要求9所述的方法,其中:
所述多级页表被配置为支持递归遍历;
所述虚拟存储器地址指示所述多级页表的一次或多次递归遍历;以及
基于由所述虚拟存储器地址指示的所述一次或多次递归遍历的计数,确定所述要遍历的页表行走级别的数目T。
12.根据权利要求11所述的方法,其中响应于所述PE的优化选择指示符处于设置状态,基于由所述虚拟存储器地址指示的所述一次或多次递归遍历的所述计数来确定所述要遍历的页表行走级别的数目T。
13.根据权利要求9所述的方法,其中:
所述存储器访问指令包括存储器加载指令;以及
使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作包括返回由所述物理存储器地址指示的存储器位置的内容。
14.根据权利要求9所述的方法,其中:
所述存储器访问指令包括存储器存储指令;
所述存储器存储指令还包括存储数据;以及
使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作包括将所述存储数据写入由所述物理存储器地址指示的存储器位置。
15.根据权利要求9所述的方法,其中:
所述存储器访问指令包括存储器读取/修改/写入指令;
所述存储器读取/修改/写入指令还包括存储数据;以及
使用所述物理存储器地址执行由所述存储器访问指令指示的所述存储器访问操作包括:
返回由所述物理存储器地址指示的存储器位置的内容;以及
将所述存储数据写入由所述物理存储器地址指示的存储器位置。
CN202080058258.0A 2019-08-30 2020-06-15 在基于处理器的设备中优化对页表条目的访问 Pending CN114258533A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/556,282 2019-08-30
US16/556,282 US11061820B2 (en) 2019-08-30 2019-08-30 Optimizing access to page table entries in processor-based devices
PCT/US2020/037673 WO2021040853A1 (en) 2019-08-30 2020-06-15 Optimizing access to page table entries in processor-based devices

Publications (1)

Publication Number Publication Date
CN114258533A true CN114258533A (zh) 2022-03-29

Family

ID=71452762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080058258.0A Pending CN114258533A (zh) 2019-08-30 2020-06-15 在基于处理器的设备中优化对页表条目的访问

Country Status (5)

Country Link
US (1) US11061820B2 (zh)
EP (1) EP4022448A1 (zh)
KR (1) KR20220054389A (zh)
CN (1) CN114258533A (zh)
WO (1) WO2021040853A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023122194A1 (en) * 2021-12-22 2023-06-29 SiFive, Inc. Page table entry caches with multiple tag lengths

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196084A (ja) * 2001-12-25 2003-07-11 Toshiba Corp リードモディファイライトユニットを有するシステム
US9405702B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Caching TLB translations using a unified page table walker cache
US9910776B2 (en) * 2014-11-14 2018-03-06 Cavium, Inc. Instruction ordering for in-progress operations
US10402340B2 (en) * 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk

Also Published As

Publication number Publication date
WO2021040853A1 (en) 2021-03-04
US20210064537A1 (en) 2021-03-04
KR20220054389A (ko) 2022-05-02
EP4022448A1 (en) 2022-07-06
US11061820B2 (en) 2021-07-13

Similar Documents

Publication Publication Date Title
US9405703B2 (en) Translation lookaside buffer
US11474951B2 (en) Memory management unit, address translation method, and processor
US20210089470A1 (en) Address translation methods and systems
US10372635B2 (en) Dynamically determining memory attributes in processor-based systems
US20180173623A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations
JP2018512650A (ja) 非対称セットの結合キャッシュ
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
WO2021061446A1 (en) Storage management apparatus, storage management method, processor, and computer system
CN113722247B (zh) 物理内存保护单元、物理内存权限控制方法和处理器
US9460018B2 (en) Method and apparatus for tracking extra data permissions in an instruction cache
US9507729B2 (en) Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
US11061820B2 (en) Optimizing access to page table entries in processor-based devices
US10896135B1 (en) Facilitating page table entry (PTE) maintenance in processor-based devices
US20180217930A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US11755498B2 (en) Emulating scratchpad functionality using caches in processor-based devices
US11119770B2 (en) Performing atomic store-and-invalidate operations in processor-based devices
CN115080464B (zh) 数据处理方法和数据处理装置
US11126437B2 (en) Load instruction with final read indicator field to invalidate a buffer or cache entry storing the memory address holding load data
US20220318139A1 (en) Processor supporting translation lookaside buffer (tlb) modification instruction for updating hardware-managed tlb and related methods
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information
CN114430822A (zh) 用于处理具有宽立即操作数的指令的系统和方法

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