CN109074317B - 转换后备缓冲器中的条目的租约的自适应延期 - Google Patents
转换后备缓冲器中的条目的租约的自适应延期 Download PDFInfo
- Publication number
- CN109074317B CN109074317B CN201780019906.XA CN201780019906A CN109074317B CN 109074317 B CN109074317 B CN 109074317B CN 201780019906 A CN201780019906 A CN 201780019906A CN 109074317 B CN109074317 B CN 109074317B
- Authority
- CN
- China
- Prior art keywords
- tlb
- entry
- lease
- page table
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
所描述的实施方案包括具有两个或更多个转换后备缓冲器(TLB)的计算装置。在操作期间,所述计算装置基于来自页表条目的在页表寻访期间所获取的虚拟地址到物理地址转换和元数据来更新所述TLB中的条目。然后,所述计算装置基于租约长度表达式来计算所述TLB中的所述条目的租约长度。接下来,针对所述TLB中的所述条目,所述计算装置将租约值设置为所述租约长度,其中所述租约值表示直到所述TLB中的所述条目的租约到期时为止的时间,其中当相关联的租约已经到期时,所述TLB中的所述条目无效。然后,所述计算装置使用所述租约值来控制允许使用来自所述TLB中的所述条目的信息执行的操作。
Description
技术领域
所描述的实施方案涉及计算装置。更具体地,所描述的实施方案涉及转换后备缓冲器中条目的租约的自适应延期。
相关技术
许多现代计算装置使用虚拟存储器技术来处理由在计算装置中执行的程序(例如,应用程序、操作系统、装置驱动程序等)进行的数据访问。在这种计算装置中,当程序访问数据时,将包括数据的给定大小(例如,4kB)的存储器块(其被称为存储器的“页”)从大容量存储装置(例如,硬盘驱动器或半导体存储器)复制到计算装置中的主存储器中的可用物理位置,或者在存储器中新创建所述存储器块(例如,用于存储从计算操作生成的结果等)。为了避免程序需要跟踪存储器中页的物理位置,计算装置中的处理器替程序跟踪页的物理位置。在这种计算装置中,程序使用“虚拟地址空间”(其是特定于对应程序的本地地址空间)中的“虚拟地址”访问存储器,而不是使用基于页的物理位置的地址(或“物理地址”)访问存储器。从程序的角度来看,虚拟地址指示存储器中的页内存储数据的实际物理位置,并且因此程序使用虚拟地址进行存储器访问。然而,虚拟地址可能不直接映射到存储器中的页中存储数据的物理位置的物理地址。作为管理页的物理位置的一部分,处理器将存储器访问请求中由程序使用的虚拟地址转换为数据实际所在的物理地址。然后,处理器使用所述物理地址来替程序执行存储器访问。
为了能够实现上述虚拟地址到物理地址转换,计算装置包括“页表”。页表是存储在计算装置的存储器中的记录(或记录的层级),所述记录包括条目或“页表条目”,具有用于存储在主存储器中的数据页的虚拟地址到物理地址转换信息。在从程序接收到访问给定虚拟地址处的存储器的请求时,处理器通过执行“页表寻访”从页表获取对应的物理地址信息,在此期间可能逐个条目地在页表中搜索提供与虚拟地址关联的物理地址的页表条目。
由于上述页表寻访相对较慢,因此希望避免执行页表寻访。因此,计算装置包括转换后备缓冲器(“TLB”),其是每个处理器中的本地高速缓存,所述本地高速缓存由处理器用于存储基于在页表寻访期间获取的页表条目的有限数量的信息副本。在操作期间,处理器首先尝试从对应的TLB获取高速缓存的页表条目,以执行虚拟地址到物理地址转换。当TLB中不存在对应页表条目的副本时,即,当发生“TLB未命中”时,处理器执行页表寻访以获取期望的页表条目,并且然后可以将所获取的页表条目的副本高速缓存在TLB中。
在操作期间,上述计算装置中的处理器可以修改页表中的页表条目(例如,改变页表条目的虚拟地址到物理地址转换信息、改变页表条目的读取/写入属性等)。为了避免页表与计算装置中的其他处理器中的TLB中保存的页表条目的副本之间的不一致,发起页表条目修改的“发起处理器”可以执行称为“TLB击落”的操作。一般来说,在TLB击落期间,用于修改页表条目的处理器导致保存页表条目的高速缓存副本的其他处理器使高速缓存的副本无效,从而避免不一致。当执行TLB击落以使得能够修改页表条目时,发起处理器(例如,发起处理器中的存储器管理单元、在发起处理器上执行的操作系统等)修改页表条目。发起处理器还确定可以具有来自高速缓存在其TLB中的页表条目的信息的副本的其他处理器,并向每个其他处理器发送指示页表条目正被修改的进程间中断(IPI)。在接收到IPI时,如果在对应的TLB中存在所述页表条目,则每个其他处理器使包含这种条目的对应TLB中的条目无效。每个其他处理器还向发起处理器传回确认。发起处理器收集确认,并且当已经从每个其他处理器接收到确认时,继续进行后续操作。在这些操作期间,一些处理器在内核模式与用户模式之间切换一次或多次。
由于用于执行TLB击落的上述操作是长等待时间,因此执行TLB击落通常需要大量时间来完成(例如,处理器中的数万个时钟周期)。使这个问题更加复杂的是,这些操作的等待时间随着计算装置中处理器数量的增加而增加。例如,当中央处理单元(CPU)和图形处理单元(GPU)共享计算装置中的地址空间时,CPU和GPU两者都可能需要参与TLB击落。因此,等待TLB击落完成可能使处理器延迟,并且更一般地,使计算装置延迟执行其他操作。
附图说明
图1呈现示出根据一些实施方案的计算装置的框图。
图2呈现示出根据一些实施方案的页表的框图。
图3呈现示出根据一些实施方案的用于页表条目的元数据的框图。
图4呈现示出根据一些实施方案的TLB的框图。
图5呈现示出根据一些实施方案的用于TLB中条目的元数据的框图。
图6呈现示出根据一些实施方案的用于为TLB中的条目设置租约值以及为对应的页表条目设置最新租约值的过程的流程图。
图7呈现示出根据一些实施方案的用于使用TLB中的条目的租约值的过程的流程图。
图8呈现示出根据一些实施方案的用于使用页表中的页表条目的最新租约的过程的流程图。
图9呈现示出根据一些实施方案的用于使用页表中的页表条目的最新租约的过程的流程图。
图10呈现示出根据一些实施方案的用于动态地设置租约值的过程的流程图。
图11呈现根据一些实施方案的动态地设置租约值的伪代码示例。
图12呈现示出根据一些实施方案的使用多个表实现的页表的框图。
在整个附图和描述中,相同的附图标记指代相同的附图元件。
具体实施方式
呈现以下描述以使得本领域技术人员能够制造和使用所描述的实施方案,并且在特定应用及其要求的背景下提供以下描述。对所描述的实施方案的各种修改对于本领域技术人员来说将是显而易见的,并且在本文中定义的一般原理可以应用于其他实施方案和应用。因此,所描述的实施方案不限于示出的实施方案,而是与符合本文公开的原理和特征的最宽范围相一致。
概况
所描述的实施方案包括位于处理器中的两个或更多个处理器核心中的每一个中的单独的转换后备缓冲器(TLB)。每个TLB具有多个条目,每个条目被配置成用于存储(即,高速缓存)基于页表条目的信息(例如,虚拟地址到物理地址转换和对应的元数据)。在所描述的实施方案中,处理器可以在修改页表中的页表条目时执行上述TLB击落。然而,由于TLB击落相对较慢,因此所描述的实施方案使用租约值和最新租约值来在可能的情况下避免执行TLB击落。
在所描述的实施方案中,租约值与TLB中包含基于页表条目的信息的每个条目相关联。例如,租约值可以存储在与TLB中的条目相关联的元数据中或存储在单独的位置中。每个条目的租约值表示条目有效的时间。例如,租约值可以是特定的绝对或相对时间,在所述时间之前,TLB中的对应条目被认为是有效的。当租约“到期”时,对应的条目被认为是无效的,并且条目中的页表条目信息不能再用于指定的操作(例如,虚拟地址到物理地址转换等)。例如,当租约值是已经过去的特定时间时,条目被视为过期,并且因此无效且不能再用于指定的操作。
在所描述的实施方案中,处理器中的多个TLB可以保存基于具有不同租约值并且因此具有不同到期时间的相同页表条目的信息的高速缓存副本。为了跟踪最新/最后的租约到期时间,所描述的实施方案存储页表中的页表条目的最新租约值。例如,最新的租约值可以存储在与页表条目相关联的元数据中,或者存储在存储器中的单独位置中。每个页表条目的最新租约值包含这样一个值:其表示基于保存在TLB中的页表条目的信息的副本的最长租约值。例如,如果第一核心中的TLB保存基于页表条目的信息的副本,其租约值为时间X,并且第二核心中的TLB保存基于相同页表条目的信息的副本,其租约值为时间X+Z,其中X和Z是正值,则页表中的页表条目的最新租约值是时间X+Z。在一些实施方案中,当基于页表条目的信息的第一副本被存储在具有对应租约值的TLB中时,设置页表条目的最新租约值。当基于页表条目的信息的每个后续副本存储在具有对应租约值的TLB中时,如果对应的租约值比现有的最新租约值长,则可以更新页表条目的最新租约值。
所描述的实施方案使用页表中的最新租约值来在可能的情况下避免TLB击落。所描述的实施方案通过使用页表条目的最新租约值这样做,以确定TLB中是否存在基于页表条目的信息的任何有效的高速缓存副本。更具体地,在修改页表条目之前,处理器(例如,发起处理器中的存储器管理单元、在发起处理器上执行的操作系统等)检查与页表条目相关联的最新租约值。当最新的租约值已经过去(这指示基于TLB中保存的页表条目的信息的每个副本的租约已经到期)时,处理器可以修改页表条目而不执行TLB击落。换句话说,由于已知基于TLB中的页表条目的信息的每个副本的租约已经到期并且因此副本是无效的,因此还知道每个核心将触发页表寻访以便从页表条目中检索信息。因此,处理器可以修改页表条目而不使TLB中的页表条目的副本无效(如在TLB击落期间发生的那样)。相反,当最新的租约值尚未过去时,基于TLB中高速缓存的页表条目的信息的至少一个副本仍然有效(并且因此仍然可以由对应的核心使用)。在这种情况下,在修改页表条目之前,处理器可以:(a)执行TLB击落,或(b)等待直到最新租约值过去(即,等待直到基于TLB中的页表条目的信息的所有副本的租约都已经到期并且因此副本已经变得无效)。
在所描述的实施方案中,TLB条目的租约值可以动态地确定。换句话说,当在运行时为给定TLB条目设置租约值时,处理器可以基于一个或多个策略、规则、阈值等,根据时间(例如,毫秒、时间间隔等)来确定TLB条目的租约长度,并且相应地设置租约值。例如,在一些实施方案中,使用与给定TLB条目相关联的延期计数器来保持给定TLB条目的租约被延期(即,到期然后重新建立)的次数的记录。当确定租约长度时,处理器可以使用延期计数器,可能连同一个或多个其他值来计算租约长度,作为对应公式(例如,数学表达式和/或逻辑表达式等)的结果。
通过使用租约值和最新租约值来避免执行TLB击落,所描述的实施方案可以提高涉及修改页表条目的操作的速度和效率(例如,在延迟、通信带宽、功耗等方面)。改进这些操作反过来可以改进计算装置的整体操作。例如,代替执行TLB击落,计算装置可以执行其他操作。
计算装置
图1呈现示出根据一些实施方案的计算装置100的框图。如图1中可以看出,计算装置100包括处理器102、存储器106、大容量存储装置116以及直接存储器存取机构118(“DMA118”)。处理器102是在计算装置100中执行计算操作的装置。处理器102包括两个核心,即核心108和109,每个核心包括一个或多个计算机构,诸如中央处理单元(CPU)、图形处理单元(GPU)、嵌入式处理器、专用集成电路(ASIC)和/或其他计算机构。
处理器102还包括高速缓存存储器(或“高速缓存”),其用于在本地存储由核心108用来执行计算操作的数据和指令。如图1中可以看出,处理器102中的高速缓存包括核心108和109中的每一个中的一级(L1)高速缓存110和111(“L1 110”和“L1 111”),每个L1高速缓存包括诸如以下各项中的一个或多个的存储器电路:静态随机存取储存器(SRAM)、动态随机存取存储器(DRAM)、双倍数据速率同步DRAM(DDR SDRAM)和/或用于存储由对应的核心108和109使用的数据和指令的其他类型的存储器电路以及用于处理存储在存储器电路中的数据和指令的访问的控制电路。在一些实施方案中,L1高速缓存110和111是处理器102中的一组高速缓存中最小的(就存储器电路的容量而言),并且位于最靠近使用对应核心108中的数据和指令的功能块(例如,执行单元、指令获取单元等)的位置。
处理器102另外包括共享二级(L2)高速缓存112,其包括诸如以下各项中的一个或多个的存储器电路:SRAM、DRAM、DDRSDRAM和/或用于存储由两个核心108使用的数据和指令的其他类型的存储器电路以及用于处理存储在存储器电路中的数据和指令的访问的控制电路。在一些实施方案中,L2高速缓存112大于L1高速缓存110和111,并且位于比L1高速缓存110和111距使用数据和指令的功能块更远的位置。
处理器102还包括共享三级(L3)高速缓存104,其包括诸如以下各项中的一个或多个的存储器电路:SRAM、DRAM、DDR SDRAM和/或用于存储由两个核心108使用的数据和指令的其他类型的存储器电路以及用于处理存储在存储器电路中的数据和指令的访问的控制电路。在一些实施方案中,L3高速缓存104是处理器102中的高速缓存中最大的,并且位于(相对于L1高速缓存110和111以及L2高速缓存112)距使用数据和指令的功能块最远的位置。
处理器106是计算装置100的“主存储器”,并且包括诸如以下各项中的一个或多个的存储器电路:DRAM、DDR SDRAM、非易失性随机存取存储器(NVRAM)和/或用于存储由计算装置100中的功能块使用的数据和指令的其他类型的存储器电路以及用于处理存储在存储器电路中的数据和指令的访问的控制电路。在一些实施方案中,存储器106包括比计算装置100中的高速缓存显著更多的存储器电路(就存储器电路的容量而言),但是存取速度比高速缓存慢。
大容量存储装置116是存储用于在计算装置100中使用的数据和指令的大容量存储装置,诸如高容量半导体存储器(诸如闪存存储器、NVRAM等的非易失性半导体存储器)、磁盘驱动器(硬盘驱动器等)、光学驱动器等。在所描述的实施方案中,大容量存储装置116保存由存储器管理单元114检索的数据和指令,以便存储在存储器106中以供计算装置100中的功能块随后使用。例如,可以给定大小(例如,4kB、8kB等)的块从大容量存储装置116中检索数据和指令,所述块被称为“页”,并且页可以存储在存储器106中以准备用于处理器102中的核心108和109、高速缓存等进行的访问。此外,可以在存储器中可用的物理位置处新创建页(例如,当创建存储器块以用于存储计算结果时等)。
存储器管理单元114是处理器102中处理存储器访问请求的功能块。当处理器102中的功能块要访问数据或指令(即,由核心108或另一功能块读取、写入、检查/验证、删除、无效等)时,功能块向存储器管理单元114发送存储器访问请求。然后,存储器管理单元114向L2高速缓存112、L3高速缓存104和存储器106中的一个或多个发送对应的请求,以满足/解析存储器访问请求。例如,如果要基于存储器访问请求来检索数据,则存储器管理单元114可以从L2高速缓存112、L3高速缓存104或存储器106(或大容量存储装置116,条件是数据不存在于L2高速缓存112、L3高速缓存104或存储器106之一中)获取数据并将数据转发到请求功能块。
在所描述的实施方案中,计算装置100使用虚拟存储器来使软件程序(例如,由核心108和109执行)能够访问存储器而无需管理存储器106中的页的物理位置。如上所述,对于虚拟存储器,程序使用“虚拟地址空间”(其是特定于对应程序的本地地址空间)中的“虚拟地址”访问存储器,而不是使用基于页的物理位置的地址(或“物理地址”)访问存储器。在这些实施方案中,在从具有虚拟地址的程序接收到存储器访问请求时,存储器管理单元114执行用于将虚拟地址转换为存储器106中数据所在的页的物理地址的操作。
在一些实施方案中,存储器管理单元114使用两种机构来执行虚拟地址到物理地址转换。第一种机构是页表122,其是存储在存储器106中的数据结构(例如,表、数组、列表等)。在一些实施方案中,页表122存储存在于存储器106中的每个页的至少一种转换。因此,在这些实施方案中,如果已经将页从大容量存储装置116复制到存储器106或者在存储器106中新创建所述页并且所述页在存储器106中保持可用,则页表122中应当存在对应的虚拟地址到物理地址转换。在从具有虚拟地址的程序接收到存储器访问请求时,存储器管理单元114搜索页表122(或执行“页表寻访”)以获取针对虚拟地址的物理地址。下文更详细地描述页表122。
用于执行虚拟地址到物理地址转换的第二种机构是转换后备缓冲器120和121(“TLB 120”和“TLB 121”),它们是核心108和109中的每一个中的高速缓存,所述高速缓存被配置成存储/高速缓存在页表122的页表寻访期间获取的虚拟地址到物理地址转换信息。在可能的情况下,核心108和109从对应的TLB 120和121获取虚拟地址到物理地址转换信息,以避免执行页表寻访。下文更详细地描述TLB120和121。
直接存储器访问机构118是功能块,其被配置成执行从大容量存储装置116到存储器106的数据传输,并且反之亦然。一般来说,直接存储器访问机构118从处理器102卸载数据传输操作,这使得处理器102能够避免执行与执行存储器传输有关的一些计算工作。这反过来使得处理器102能够执行其他计算操作,代替由直接存储器访问机构118执行的存储器传输和/或与所述存储器传输并行执行。在一些实施方案中,如本文所述将数据页从大容量存储装置116复制到存储器106的操作由直接存储器访问机构118基于从存储器管理单元114接收的请求来执行。
在一些实施方案中,通信路径(其包括一个或多个总线、电线、引导件和/或其他连接)耦接在计算装置100中的各种功能块(处理器核心108和109、存储器管理单元114、存储器106等)之间,如元件之间的箭头线所示。通信路径用于在功能块之间传送命令、数据、控制信号和/或其他信息。
尽管利用特定的核心布置来描述实施方案,但是一些实施方案包括不同数量的核心和/或不同的核心布置。例如,一些实施方案仅具有一个核心,而其他实施方案具有两个、五个、八个或另一数量的核心。一般来说,所描述的实施方案可以使用能够执行本文所述操作的任何核心布置。
尽管利用特定的高速缓存布置来描述实施方案,但是一些实施方案包括不同数量的高速缓存和/或不同的高速缓存布置。例如,一些或所有高速缓存(例如,L1高速缓存110和111等)可以被划分为单独的指令和数据高速缓存。另外,L2高速缓存112可以不被共享,并且因此可以仅由单个核心使用(即,处理器102中可以存在两个L2高速缓存)。作为另一个示例,一些实施方案包括不同级别的高速缓存,从仅一级高速缓存到多级高速缓存,并且这些高速缓存可位于处理器102中和/或处理器102外部。一般来说,所描述的实施方案可以使用能够执行本文所述操作的任何高速缓存布置。
尽管描述了计算装置具有一个存储器管理单元114的实施方案,但是一些实施方案具有不同数量的存储器管理单元和/或不同的存储器管理单元布置。例如,在一些实施方案中,核心108和109中的每一个具有单独的存储器管理单元114。一般来说,所描述的实施方案包括足以执行本文所述操作的存储器管理单元。
尽管图1中示出特定的TLB布置,但是在一些实施方案中,在计算装置100使用不同的TLB布置。例如,在一些实施方案中,在计算装置100中使用单独的数据和指令TLB。作为另一个示例,在一些实施方案中,使用TLB的层级,所述层级包括具有对应访问时间和大小(即,条目数)的两个或更多个级别的TLB。一般来说,所描述的实施方案包括足以执行本文所述操作的TLB。
尽管计算装置100和处理器102在图1中出于说明目的而被简化,但是在一些实施方案中,计算装置100和/或处理器102包括用于执行本文描述的操作和其他操作的附加机构。例如,计算装置100和/或处理器102可以包括功率控制器、电池、媒体处理器、输入-输出机构、通信机构、联网机构、显示机构等。
计算装置100可以是执行计算操作的任何电子装置或者可以包括在所述电子装置中。例如,计算装置100可以是诸如以下各项的电子装置或者可以包括其中:台式计算机、膝上型计算机、可佩戴计算装置、平板计算机、智能电话、服务器、网络装置、玩具、视听装置、家用电器、控制器、车辆等和/或它们的组合。
页表
如上所述,计算装置100使用页表来执行虚拟地址到物理地址转换。图2呈现示出根据一些实施方案的页表122的框图。如图2中可以看出,页表122包括多个条目200(条目200在图2中使用虚线突出显示),每个条目被配置成存储虚拟地址(“VA”)到物理地址(“PA”)转换202以及对应的元数据204。
虚拟地址到物理地址转换202指示与一个或多个虚拟地址相关联的数据所处的存储器中的页(即,给定大小的数据块,诸如4kB、8kB等)的物理位置(例如,存储器106中的起始地址)。例如,在一些实施方案中,每个虚拟地址到物理地址转换202包括具有一个或多个虚拟地址中的一些或全部的第一字段,以及具有一个或多个虚拟地址所映射/匹配的物理地址中的一些或全部的第二字段。例如,在一些实施方案中,每个虚拟地址到物理地址转换202中的第一字段包括虚拟地址的位(例如,上部40、36等位)的子集,并且第二字段包括对应物理地址的位的子集。在一些实施方案中,当从大容量存储装置116检索页并将页存储在存储器106中或在存储器106中新创建页时,对应的条目200被添加到具有虚拟地址到物理地址转换202的页表122。因此,如果页已经从大容量存储装置116复制到存储器106或者在存储器106中新创建(并且在存储器106中保持可用),则对应的虚拟地址到物理地址转换202应当存在于页表122中。
元数据204包括与对应的虚拟地址到物理地址转换202相关联,表征、控制所述虚拟地址到物理地址转换和/或以其他方式与所述虚拟地址到物理地址转换相关的信息。当将虚拟地址到物理地址转换202添加到页表122时,获取、生成等元数据并将其添加到对应的条目200作为元数据204。图3呈现示出根据一些实施方案的元数据204的框图。如图3中可以看出,元数据204包括有效性300,其包括与对应的虚拟地址到物理地址转换202和/或存储器106中的对应页的有效性相关的一个或多个值。例如,有效性300可以包括指示存储器106中的对应页是否有效/可访问和/或条目200本身是否有效/可访问的一个或多个位。
元数据204还包括许可302,其包括与存储器106中的对应页的访问许可相关的一个或多个值。例如,元数据204可以包括一个或多个位,其指示存储器106中的对应页具有只读还是读写许可集、页是否仅以特定权限(管理员、用户、内核等)可访问和/或其他许可信息。
元数据204还包括控件304,其包括与存储器106中的条目200和/或对应页的使用相关的一个或多个值。例如,控件304可以包括页大小指示符、脏指示符(用于当存储器106中的对应页已经被修改并且因此与大容量存储装置116上的相关联存储器块不一致时)、被访问指示符(用于当存储器106中的页已经被访问一次或多次时)、直写指示符(用于当对存储器106中的页的修改将立即反映在大容量存储装置116上的相关联存储器块中时)和/或其他值。
元数据204还包括最新租约306,其包括表示保存在TLB(例如,TLB 120和/或121)中的虚拟地址到物理地址转换202的副本的最长现有租约到期(到期之前等)的绝对或相对时间的值(例如,一个或多个位)。例如,最新租约306可以包括描述从起始点开始的特定系统时间的值(例如,自指定开始时间以来的秒数等)、年-月-日-小时-分-秒值等。作为另一个示例,最新租约306可以包括缩减、压缩或简化的值,其表示缩略或缩短形式的时间,诸如仅保存较长形式时间值的几个相关位或字节、保存其输入是时间值的散列函数的输出等。例如,当TLB中保存的虚拟地址到物理地址转换的最长现有租约是500毫秒、1秒、5秒等时,可以将年-月-日-小时-分舍弃、丢弃、移除等,时间值通常将包括所有年-月-日-小时-分-秒-毫秒。作为又一个示例,在跟踪诸如历元的片段中的时间的系统中,最新租约306可以包括诸如历元计数器的片段计数器。作为又一个示例,在监视或跟踪事件(例如,周期性或异步事件、中断事件等)发生的系统中,最新租约306可以包括事件计数器、标识符等。一般来说,在所描述的实施方案中,最新租约306包括足以使计算装置100(例如,存储器管理单元114、对应的核心108或109等)能够确定对应的虚拟地址到物理地址转换202的所有现有租约是否已经到期的信息。例如,如果核心108和109两者都在对应的TLB 120和121中保存虚拟地址到物理地址转换的副本,核心108具有时间P的租约值并且核心109具有时间K的租约值,其中时间P发生在时间K之后,则对应的最新租约306将指示时间P,从而指示至少一个核心(即,在这个示例中的核心108)具有以到期时间P高速缓存的虚拟地址到物理地址转换。
在一些实施方案中,最新租约306包括除了表示最长现有租约到期的值之外的信息。例如,在一些实施方案中,最新租约306包括计数器值,其用于计算其中保存或最近保存(例如,在现有租约在现有最长租约的阈值时间内的情况下等保存)虚拟地址到物理地址转换202的副本的TLB的数量。作为另一个示例,在一些实施方案中,最新租约306包括一个或多个TLB的一个或多个标识符,所述TLB保存具有最长现有租约的虚拟地址到物理地址转换的副本。
元数据204还包括延期计数器(“EXT COUNTER”)308,其保存数字值或其他值,所述值表示与页表条目相关联的TLB条目的租约被“延期”的次数,即,租约延期次数。一般来说,在TLB条目的租约到期后重新建立或续订TLB条目时,租约延期。换句话说,当存储器管理单元114发现TLB条目的租约到期并且执行表寻访以便从对应的页表条目重新获取信息用于续订/更新TLB条目时,发生延期。每次发生延期时,存储器管理单元114使元数据中针对页表条目的计数器递增或以其他方式更新所述计数器。在一些实施方案中,使延期计数器递增仅在到期/延期足够近(例如,在最近的N毫秒内等)时发生。以这种方式,“延期”不考虑超过给定时间之前发生的到期。
如本文所述,在添加到页表122之后,可以对虚拟地址到物理地址转换202和元数据204中的一个或两个进行修改/改变、更新等。例如,当页从存储器106中的第一位置移动到第二位置时,可以更新对应条目200中的虚拟地址到物理地址转换202。作为另一个示例,在元数据204包括许可302(例如,读取/写入许可)的实施方案中,可以更新许可302以指示针对存储器106中的对应页的只读、读写等许可。为了执行修改,所描述的实施方案使用最新租约306来确定核心108和109中的任一个具有高速缓存在对应TLB中的虚拟地址到物理地址转换202的副本,如本文所述。
如上所述,当试图获取指定虚拟地址的物理地址信息时,存储器管理单元114(或计算装置100中的另一实体)可以执行页表寻访。在页表寻访期间,存储器管理单元114使用对应的搜索技术(诸如顺序或逐个条目检查)来搜索存储器106中的页表122,以找到保存对应的虚拟地址到物理地址转换202的条目200,如果存在这种条目200的话。在遇到这种条目200时,存储器管理单元114从条目200获取指定虚拟地址的物理地址(即,从虚拟地址到条目200中的物理地址转换202)。如果存储器管理单元114不能找到具有对应的虚拟地址到物理地址转换的条目200,则执行错误处理操作(例如,发出页错误并且随后进行处理等)。
尽管页表122被示出为具有特定数量的条目200,但是一些实施方案包括不同数量的条目200(如图2中的省略号所示)。此外,尽管条目200和元数据204被示出为具有特定的信息布置和特定类型的信息,但是在一些实施方案中,条目200和元数据204中的一个或两个包括不同的信息。例如,在一些实施方案中,元数据204中的至少一些存储在除了条目200中之外的位置中。例如,在一些实施方案中,使用单独的存储器内数据结构来存储最新租约值。在这些实施方案中的一些中,单独的存储器内数据结构可以是包括成对的页表条目标识符(地址或其部分等)和对应的租约信息的表、列表等,如上文针对元数据204所描述的。作为另一示例,在一些实施方案中,不使用延期计数器306(即,使用另一种技术来确定租约长度),并且因此元数据204中不包括延期计数器306。一般来说,页表122,并且更一般地,计算装置100,包括足以使计算装置100能够存储和检索虚拟地址到物理地址转换信息并处理如本文所述的页表条目修改的信息。
尽管页表122在图2中被示出为单个表,但是在一些实施方案中,使用多个表的布置或其他数据结构来实现页表122。图12呈现示出根据一些实施方案的使用多个表实现的页表的框图。如图12中可以看出,页表1200包括页映射4级表1206、页目录指针表(“PAGEDIRPTR TABLE”)1208、页目录表(“PAGE DIR TABLE”)1210、页表1212和存储器页1214。页映射4级表1206、页目录指针表1208、页目录表1210和页表1212是存储在存储器中的数据结构(例如,表、链接列表等)。页映射4级表1206、页目录指针表1208和页目录表1210各自包括关于要在表寻访的下一步骤期间搜索(或“寻访”)以找到对应于虚拟地址1202的物理地址的后续表的信息。例如,页映射4级表1206包括多个条目,每个条目包括将对应的地址位子集从虚拟地址1202映射到页目录指针表(诸如页目录指针表1208,如图3所示)的信息。页表1212包括指示与虚拟地址的对应部分相关联的特定存储页的物理地址。存储器页1214是存储器中由虚拟地址1202指示的数据所在的特定页。
在一些实施方案中,当在页表1200中执行表寻访以获取与虚拟地址1202相关联的物理地址时,表寻访器读取控制寄存器(“CR”)1204以确定与对应虚拟机相关联的页级别表(例如,页映射4级表1206)在存储器中的位置。然后,表寻访器使用来自虚拟地址1202的位的子集(例如,64位虚拟地址中的39-47位)在页映射4级表1206中搜索(或“寻访”)指示接下来要寻访的页目录指针表(例如,页目录指针表1208)的位置的条目(示出为“PML4E”)。表寻访器接下来继续搜索剩余的表,即,页目录指针表1208、页目录表(例如,页目录表1210)和页表(例如,页表1212),使用来自虚拟地址1202的位的对应子集来寻访每个表并在表中定位指示要寻访的下一个表的条目(示出为“PDPE”和“PDE”)。最后,使用从页表1212(页表条目或“PTE”)获取的物理地址,表寻访器到达特定的存储器页(例如,存储器页1214)。使用虚拟地址1202的位的对应部分(例如,64位虚拟地址中的0-11位),表寻访器确定存储器页1214中包括由虚拟地址1202指示的数据的条目(DATA)。如果表寻访器不能找到针对虚拟地址1202的地址转换,则执行错误处理操作(例如,发出页错误并随后进行处理等)。
如图12中可以看出,租约与页表1212中的页表条目分开示出,以表示最新租约306可以如何存储在页表1212中的其他地方。然而,如上所述,包括最新租约306的元数据可以与页表条目一起存储(例如,在连续的存储器块中)。
转换后备缓冲器
如上所述,计算装置100包括分别位于核心108和109中的TLB120和121。每个TLB是高速缓存,其被配置成存储在对页表122进行页表寻访期间获取的虚拟地址到物理地址转换信息,所述信息用于由对应的核心、存储器管理单元114等进行的访问。图4呈现示出根据一些实施方案的TLB 400的框图。在一些实施方案中,TLB 120和121中的一个或两个类似于TLB 400布置。
如图4所示,TLB 400包括控制机构404和多个条目402(条目402在图4中使用虚线突出显示),每个条目被配置成存储虚拟地址(“VA”)到物理地址(“PA”)转换406以及对应的元数据408。
虚拟地址到物理地址转换406指示存储器106中与一个或多个虚拟地址相关联的数据所在的页的物理位置(例如,存储器106中的起始地址)。例如,在一些实施方案中,每个虚拟地址到物理地址转换406包括具有一个或多个虚拟地址中的一些或全部的第一字段,以及具有存储器106中一个或多个虚拟地址所映射/匹配的物理地址中的一些或全部的第二字段。在一些实施方案中,当从页表122获取虚拟地址到物理地址转换202和对应的元数据204时(即,在页表寻访期间),至少部分地基于虚拟地址到物理地址转换202和/或对应的元数据204而在条目402中更新虚拟地址到物理地址转换406和元数据408。
在一些实施方案中,直接从对应的页表条目复制虚拟地址到物理地址转换信息,但是在其他实施方案中,在将来自页表条目的虚拟地址到物理地址转换信息存储在虚拟地址到物理地址转换406中之前执行一个或多个操作(例如,缩减、重新格式化、散列等)。例如,在一些实施方案中,TLB 400包括多级查找机构(未示出),其中存储虚拟地址到物理地址转换406,并且将来自页表122的虚拟地址到物理地址转换信息分成多个部分以便存储在多级查找机构的每个级别中。
在一些实施方案中,由于TLB 400中的条目402的数量是有限的,因此更新TLB 400中的条目402可能涉及覆盖条目402中的现有信息。例如,当TLB 400中的指定条目402(例如,全部、特定子集等)保存虚拟地址到物理地址转换时,要写入TLB 400的下一个虚拟地址到物理地址转换将覆盖条目402中的现有虚拟地址到物理地址转换。在这些实施方案中,可以使用诸如先入先出、最近最少使用、最常使用等的策略来确定要覆盖哪个条目402。此外,在一些实施方案中,使用特定类型的关联性来管理TLB 400中的条目,诸如直接映射、集合关联性、倾斜关联性等。换句话说,在一些实施方案中,作为高速缓存的TLB 400可以使用各种替换技术来管理。
元数据408包括与对应的虚拟地址到物理地址转换406相关联,表征、控制所述虚拟地址到物理地址转换和/或以其他方式与所述虚拟地址到物理地址转换相关的信息。在一些实施方案中,当在页表寻访期间获取虚拟地址到物理地址转换406时,获取、生成等元数据并将其添加到对应的条目402(或存储在TLB 400中的其他位置)。
图5呈现示出根据一些实施方案的元数据408的框图。如图5中可以看出,元数据408包括有效性500,其包括与对应的虚拟地址到物理地址转换406和/或存储器106中的对应页的有效性相关的一个或多个值。例如,有效性500可以包括指示存储器106中的对应页是否有效/可访问和/或条目402本身是否有效/可访问的一个或多个位。
元数据408还包括许可502,其包括与存储器106中的对应页的访问许可相关的一个或多个值。例如,许可502可以包括一个或多个位,其指示存储器106中的对应页具有只读还是读写许可集、页是否仅以特定权限(管理员、用户、内核等)可访问和/或其他许可信息。
元数据408还包括控件504,其包括与存储器106中的条目402和/或对应页的使用相关的一个或多个值。例如,控件504可以包括页大小指示符、脏指示符(用于当存储器106中的对应页已经被修改并且因此与大容量存储装置116上的相关联存储器块不一致时)、被访问指示符(用于当存储器106中的页已经被访问一次或多次时)、直写指示符(用于当对存储器106中的页的修改将立即反映在大容量存储装置116上的相关联存储器块中时)和/或其他值。
元数据408还包括租约值506,其包括表示虚拟地址到物理地址转换406的租约到期(到期之前等)的绝对或相对时间的值(例如,一个或多个位)。如本文所述,当虚拟地址到物理地址转换406的租约到期时,虚拟地址到物理地址转换406被认为是无效的并且可能不再用于指定的操作(例如,将虚拟地址转换为物理地址、确定针对存储器106中的对应页的许可等)。例如,租约值506可以包括描述从起始点开始的特定系统时间的值(例如,自指定开始时间以来的秒数等)、年-月-日-小时-分-秒-毫秒值等。作为另一个示例,租约值506可以包括缩减、压缩或简化的值,其表示缩略或缩短形式的时间,诸如仅保存较长形式时间值的几个相关位或字节、保存其输入是时间值的散列函数的输出等。例如,当对应的虚拟地址到物理地址转换406的最长现有租约是500毫秒、1秒、5秒等时,可以将年-月-日-小时-分从时间值舍弃、丢弃、移除等,所述时间值通常将包括所有的年-月-日-小时-分-秒-毫秒。作为又一个示例,在跟踪诸如历元的片段中的时间的系统中,租约值506可以包括诸如历元计数器的片段计数器。作为又一个示例,在监视或跟踪事件(例如,周期性或异步事件、中断事件等)发生的系统中,租约值506可以包括事件计数器、标识符等。一般来说,在所描述的实施方案中,租约值506包括足以使计算装置100(例如,存储器管理单元114、对应的核心等)能够确定对应的虚拟地址到物理地址转换406的租约是否已经到期的信息。例如,如果给定虚拟地址到物理地址转换406的租约值506是F,其中F是绝对或相对时间,并且系统时间当前是H,即超过F的时间值,则租约已经到期并且虚拟地址到物理地址转换406被认为是无效的。否则,如果H是未超过F的时间值(即,早于F),则租约尚未到期并且虚拟地址到物理地址转换406被认为是有效的(至少相对于租约值,虚拟地址到物理地址转换406可以出于其他原因被认为是无效的)。
返回到图4,控制机构404是功能块,其被配置成执行用于获取、使用和管理条目402中的信息的各种操作。例如,控制机构404可以将虚拟地址到物理地址转换信息存储在条目402中、使用条目402中的信息来执行虚拟地址到物理地址转换、确定租约值和/或其他元数据值、利用租约值和/或其他值更新元数据等。
在操作期间,当存储器管理单元114(和/或计算装置100中的另一硬件或软件实体)要将虚拟地址转换为物理地址时,存储器管理单元114将包括虚拟地址中的一些或全部的请求发送到TLB 400中的控制机构404。然后,控制机构404使用对应的搜索技术(诸如顺序或依次逐个条目检查、地址匹配等)以找到条目402,如果存在这种条目402的话,所述条目中保存对应的虚拟地址到物理地址转换406。例如,在一些实施方案中,TLB 120包括条目402所在的内容可寻址存储器,并且控制机构在内容可寻址存储器中搜索虚拟地址。作为另一个示例,在一些实施方案中,TLB 120包括条目402所在的表、目录和/或另一数据结构,并且控制机构在表、目录和/或其他数据结构中执行对应的搜索。在遇到具有对应的虚拟地址到物理地址转换406的条目402时,控制机构404从条目402获取指定虚拟地址的物理地址(即,从虚拟地址到物理地址转换406)并向存储器管理单元114传回物理地址转换。如果TLB400中不存在具有虚拟地址到物理地址转换的条目402,则对虚拟地址到物理地址转换的搜索在TLB 400中“未命中”,并且控制机构404向存储器管理单元114发送未命中信号。然后,存储器管理单元114开始页表寻访以获取虚拟地址到物理地址转换。
尽管TLB 400被示出为具有特定的功能块布置,但是在一些实施方案中,TLB 400被不同地布置。例如,在一些实施方案中,TLB 400被配置成具有功能元件(目录、一个或多个表等),以用于执行对虚拟地址到物理地址转换信息的多级搜索。一般来说,所描述的实施方案可以使用TLB 400的任何内部布置,其中上述租约值506与对应的虚拟地址到物理地址转换相关联。此外,尽管TLB 400被示出为具有特定数量的条目402,但是一些实施方案包括不同数量的条目402(如图4中的省略号所示)。另外,尽管条目402和元数据408被示出为具有特定的信息布置和特定类型的信息,但是在一些实施方案中,条目402和元数据408中的一个或两个包括更多或不同的信息。例如,元数据408中的一些或全部可以存储在TLB400中的另一个位置,诸如元数据记录数据结构(未示出)。一般来说,条目402和元数据408包括足以使计算装置100能够执行本文所述操作的信息。
设置租约值和最新租约值
图6呈现示出根据一些实施方案的用于为TLB中的条目设置租约值以及为对应的页表条目设置最新租约值的过程的流程图。应当注意,呈现图6所示的操作作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同的顺序执行的操作。另外,尽管使用特定的机构(例如,存储器管理单元114、核心108/TLB 120等)来描述操作,但是在一些实施方案中,其他机构可以执行操作。例如,核心109/TLB 121可以代替核心108/TLB 120执行操作。
图6开始于存储器管理单元114接收要转换成物理地址的虚拟地址时(步骤600)。例如,存储器管理单元114可以从核心108接收用于执行包括虚拟地址的存储器访问(诸如存储器写入)的请求。然后,存储器管理单元114从存储器访问请求中获取(例如,提取、确定等)虚拟地址。
存储器管理单元114接下来向TLB 120发送对与虚拟地址相关联的物理地址的请求(步骤602)。换句话说,存储器管理单元114请求TLB 120基于存储在TLB 120中的条目中的对应虚拟地址到物理地址转换(如果存在这种条目)来确定物理地址并传回物理地址。对于这个示例,假设TLB 120中的任何条目都不包括与虚拟地址相对应的虚拟地址到物理地址转换,并且因此请求在TLB 120中“未命中”。因此,存储器管理单元114从TLB 120接收在TLB 120中未命中的指示(步骤604)。
由于TLB 120中的查找导致未命中,因此存储器管理单元114执行页表寻访以便从页表122获取与虚拟地址相关联的物理地址(步骤606)。在页表寻访期间,存储器管理单元114在页表122中搜索具有与虚拟地址相关联的物理地址的页表条目(即,具有对应的虚拟地址到物理地址转换)。在一些实施方案中,使用以下技术执行页表寻访:诸如顺序或逐个条目搜索、分层搜索(例如,使用目录、散列方案等)和/或另一种技术。对于这个示例,假设页表122包括具有对应的虚拟地址到物理地址转换的页表条目。如果没有,则执行补救措施(例如,页错误)。
然后,存储器管理单元114利用所获取的虚拟地址到物理地址转换来更新TLB 120中的条目(步骤608)。如上所述,更新包括在条目中存储可以直接或间接用来基于已知的虚拟地址确定对应的物理地址的信息。例如,在一些实施方案中,每个条目包括具有一个或多个虚拟地址中的一些或全部(例如,一个或多个虚拟地址中的位集合的至少一部分)的第一字段,以及具有对应的物理地址中的一些或全部(例如,存储器页的起始地址、与已知地址的偏移等)的第二字段。
在一些实施方案中,使用替换算法管理TLB 120,并且根据替换算法的规则、策略等将虚拟地址到物理地址转换存储在条目中。例如,可以使用集合关联性来至少部分地管理TLB 120,并且可以从对应的集合中选择用于存储虚拟地址到物理地址转换的条目。
除了将虚拟地址到物理地址转换存储在条目中之外,存储器管理单元114(和/或另一个实体,诸如TLB 120、核心108等)更新与TLB 120中的条目相关联的元数据。当更新与条目相关联的元数据时,存储器管理单元114可以确定、生成或以其他方式获取要用于从各种源更新元数据的信息。例如,存储器管理单元114可以基于与从页表122获取的页表条目相关联的元数据(例如,元数据204)来获取或确定用于更新的至少一些信息。例如,存储器管理单元114可以获取页表122中的页表条目的元数据(其指示存储器106中的对应页的访问许可),并且可以更新TLB 120中的条目的元数据以指示访问许可。作为另一个示例,存储器管理单元114可以生成要用于更新元数据的信息、值等。例如,存储器管理单元114可以设置TLB 120中的条目的有效性信息,可以设置或更新与条目相关联的访问计数器等。作为又一个示例,存储器管理单元114可以从计算装置中的一个或多个其他功能块(例如,核心108和/或109、存储器106等)获取用于更新元数据的信息。一般来说,存储器管理单元114(和/或另一个实体)获取用于更新元数据的足够信息,如本文所述。
当更新与条目相关联的元数据时,存储器管理单元114更新TLB120中的条目的元数据中的租约值(步骤610)。一般来说,对于这种操作,存储器管理单元114首先确定要用于虚拟地址到物理地址转换的租约值,然后基于所确定的租约值在条目的元数据中设置租约值。回想一下,租约值是条目被认为有效(或之前)的时间并且因此允许在指定的操作(例如,虚拟地址到物理地址转换、访问条目的元数据等)期间使用。为避免低效操作,应当将租约值设置为这样一个值:所述值足够长以使条目的租约不会过早到期(这可能导致不必要的页表寻访)和/或所述值足够短以使租约不会太晚到期(这可能导致不必要的TLB击落或延迟)。在一些实施方案中,由于TLB击落可能需要比页表寻访更多时间来执行,因此存储器管理单元114优先将租约长度设置得更短而不是更长。这可能导致更多的页寻访,因为租约将会更快到期,但是可以帮助避免TLB击落。
当确定租约值时,存储器管理单元114通常确定TLB 120中的条目将到期的时间,所述时间可以是绝对/特定时间(例如,特定的小时、分、秒、毫秒等)或相对/偏移时间(例如,距时间Z的X秒等)。存储器管理单元114可以基于来自计算装置100中的一个或多个源的信息来确定租约值(即,时间)。例如,存储器管理单元114可以被配置成(例如,经由固件、从其他硬件或软件实体接收的输入、存储器管理单元114中的硬件预设装置等)具有要用于TLB 120中的所有条目的单个租约值。作为另一个示例,存储器管理单元114可以被配置成具有要用于TLB 120中的对应条目的一个或多个租约值。例如,存储器管理单元114可以包括用于针对存储器的对应区域中的物理地址(例如,物理地址的范围)的所有TLB 120条目的两个或更多个租约值。在一些实施方案中,单独的租约值用于各个TLB 120条目,即用于存储器中特定地址处的页的TLB 120条目。在这些实施方案中,可以使用算法或策略来确定每个TLB 120条目的租约值,所述租约值可以与其他TLB 120条目的租约值不同或相同。
在一些实施方案中,在计算装置100的运行时期间确定租约值,即“动态地”确定。在这些实施方案中,当计算装置100操作时,用于更新TLB 120中的新添加的条目的元数据的租约值可以随着时间改变(但是,一旦设置,给定条目中的租约值通常就保持不变,尽管这不是必要条件)。在这些实施方案中,计算装置100可以避免使用如上所述的太长或太短的租约值。
在一些实施方案中,存储器管理单元114(或计算装置100中的另一个硬件或软件实体)被配置成具有用于动态地确定租约值的一个或多个策略、规则、阈值等。例如,一个或多个租约值(即,租约持续时间)可以与对应的运行时条件阈值相关联,诸如TLB 120中的命中率或未命中率的阈值(包括由过期条目引起的未命中)、TLB 120中条目的访问次数、所执行的页表寻访次数(包括基于TLB中的过期条目的页表寻访)、存储器访问的次数、类型或位置、TLB 120和/或另一个实体(例如,存储器106、核心108等)的操作模式等。例如,当TLB120中的命中率或未命中率或者命中或未命中的次数低于阈值(例如,每Y微秒X次命中)时,可以使用第一租约值,而当TLB 120中的命中率或未命中率或者命中或未命中的次数等于或大于阈值时,使用第二租约值。作为另一个示例,当TLB 120中遇到过期条目的速率或次数低于阈值时,可以使用第一租约值,而当TLB120中遇到过期条目的速率或次数等于或大于阈值时,使用第二租约值。作为另一个示例,可以使用基于核心108或计算装置100的操作模式(例如,低功率、全功率、高性能等)的两个阈值来确定要使用三个租约值中的哪一个,使得在第一阈值以下(例如,在低功率模式下)使用第一租约值,在第一阈值与第二阈值之间(例如,在全功率模式下)使用第二租约值,并且在第二阈值以上(例如,在高性能模式下)使用第三租约值。
在一些实施方案中,可以基于尝试修改最新租约已经(或未)到期的页表条目的速率来动态地确定租约值。在这些实施方案中,当多次尝试修改其最新租约值未到期和/或大于阈值的页表条目时,可以递增地缩短租约值,直到发生一定数量的TLB击落。此外(或替代地),当由于过期的租约值而发生多个TLB未命中时,可以递增地延长租约值,直到发生指定数量的页表寻访。
在一些实施方案中,可以基于存储器106中页的属性和/或存储器106中页的属性的改变或预期改变来动态地确定租约值。例如,存储器管理单元114可以监视页、页访问、存储器访问等,以确定一个或多个页的一个或多个属性已经改变和/或可以被预测为要改变。作为另一个示例,计算装置100中的硬件或软件实体(例如,剖析实体)可以向存储器管理单元114发信号通知一个或多个页的一个或多个属性已经被预测为要改变和/或将改变。这些属性可以包括可用于动态地确定租约值的页的任何属性或与页相关联的任何属性,包括访问许可、页大小、存储器中的页位置、访问页的一个或多个程序的类型,访问页的一个或多个程序的操作阶段等。然后,存储器管理单元114可以相应地设置租约值,即用于避免使用太长或太短的租约值。
当设置租约值时,存储器管理单元114利用TLB 120中的条目将到期的时间的表示来更新TLB 120中的条目的元数据(例如,租约值506)。如上所述,租约值可以是能够被TLB120、存储器管理单元114等识别为到期时间的任何值。例如,时间可以是未来系统时钟时间、从开始时间的偏移、历元标识符/计数器/数字、事件标识符/计数器/数字、倒计时时间、对存储在另一位置中(例如,在TLB 120中、在存储器106中等的其他地方)的租约值的参考或指针和/或到期时间的另一种表示。时间可以各种形式中的任一种存储,包括众所周知的时间的多字节表示、位模式、字符串等。时间可以缩减、简化和/或压缩格式存储,诸如截断不相关或不需要的长格式时间表示的部分、一些或所有时间值的散列等。
除了更新TLB 120中的条目之外,存储器管理单元114还在页表122中基于租约值选择性地更新页表条目的元数据中的最新租约值(例如,最新租约306)(步骤612)。如这里所使用的,“选择性地”更新意味着在满足条件时更新最新租约值,所述条件是现有的最新租约值不是晚于租约值的时间。对于这种操作,存储器管理单元114将现有的最新租约值与TLB 120中的条目的租约值进行比较,以确定现有的最新租约值是否是时间上晚于条目的租约值(即,在其之后)的到期时间。当租约值晚于现有的最新租约值时,存储器管理单元114利用租约值(或利用代表租约值、与租约值成比例等的值)来覆盖现有的最新租约值。例如,当租约值是绝对/特定时间、相对/偏移时间、基于事件或基于历元的参考等时,存储器管理单元114利用(或以其他方式基于)租约值来覆盖最新租约值。否则,当租约值早于/快于最新租约值时,存储器管理单元114不更新最新租约值。以这种方式,在页表122中维持页表条目的最长/最新到期租约。这使得能够避免如图8-9所描述的TLB击落或延迟。
尽管步骤612被描述为好像已经存在用于页表条目的现有最新租约值,但是可能还不存在最新租约值。例如,如果TLB中未存储来自页表条目的虚拟地址到物理地址转换的其他副本,则可以将最新租约值设置为默认值(例如,应当已经到期的时间,诸如时间0)。在这种情况下,上述比较应当始终导致覆盖最新租约值,因为任何租约值都将晚于最新租约值。
使用TLB中的条目的租约值
图7呈现示出根据一些实施方案的用于使用TLB中的条目的租约值的过程的流程图。应当注意,呈现图7所示的操作作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同的顺序执行的操作。另外,尽管使用特定的机构(例如,存储器管理单元114、核心108/TLB 120等)来描述操作,但是在一些实施方案中,其他机构可以执行操作。例如,核心109/TLB121可以代替核心108/TLB 120执行操作。
图7所示的过程开始于TLB 120中的控制机构从存储器管理单元114接收对与虚拟地址相关联的物理地址的请求时(步骤700)。换句话说,TLB 120接收对虚拟地址的虚拟地址到物理地址转换的请求。
然后,控制机构在TLB 120中的条目中搜索虚拟地址到物理地址转换(即,搜索存储虚拟地址到物理地址转换的条目)(步骤702)。一般来说,在这种操作期间,TLB 120将虚拟地址中的一些或全部与存储在TLB 120中的条目中的一组虚拟地址到物理地址转换中的一些或全部的虚拟地址信息进行比较。例如,在一些实施方案中,TLB120包括存储虚拟地址到物理地址转换的内容可寻址存储器,并且控制机构在内容可寻址存储器中搜索虚拟地址。作为另一个示例,在一些实施方案中,TLB 120包括表、目录和/或另一数据结构,并且控制机构在表、目录和/或其他数据结构中执行对应的搜索。
在一些实施方案中,在执行搜索之前处理虚拟地址,诸如用于使用散列函数创建散列值、被截断或以其他方式缩减等。在这些实施方案中,将虚拟地址到物理地址转换存储在TLB 120中,具有以类似方式从对应的虚拟地址生成的标签、密钥、指针等。
当在TLB 120中未找到虚拟地址到物理地址转换时(步骤704),控制机构向存储器管理单元114传回在TLB 120中未命中的指示(步骤706)。基于接收到未命中的指示,存储器管理单元114执行页表寻访以获取虚拟地址到物理地址转换。
当在TLB 120中找到虚拟地址到物理地址转换时(步骤704),控制机构确定虚拟地址到物理地址转换的租约是否到期(步骤708)。一般来说,这种操作包括将租约要到期的时间(或其他值)与当前时间(或其他参考)进行比较以确定租约是否已经到期。例如,当租约值是绝对/特定时间(例如,小时、分、秒等)时,可以将绝对/特定时间与当前系统时间、参考计时器和/或另一个计数器或时钟进行比较。作为另一个示例,当租约值是相对/偏移时间时,可以将相对/偏移时间与基于偏移计时器或计数器的当前值、基准时间值加偏移等计算、确定等的时间值进行比较。作为又一个示例,当租约值是基于事件或基于历元的参考时,可以将基于事件或基于历元的参考与当前事件标识符或历元计数器进行比较。
在一些实施方案中,当当前的绝对/特定时间或相对/偏移时间超过租约值、当超过基于事件或基于历元的参考时等,确定租约已经到期。例如,当系统时间是P(其是晚于租约值K的值)时,租约到期。作为另一个示例,当系统中的历元计数器是M(其是高于最新租约值H的计数器)时,最新租约到期。
当租约尚未到期时,控制机构将与虚拟地址相关联的物理地址传回到存储器管理单元114(步骤710)。例如,当TLB 120包括内容可寻址存储器时,控制机构可以从内容可寻址存储器检索物理地址并将物理地址传回到存储器管理单元114。作为另一个示例,当TLB120包括目录、表或其他数据结构时,控制机构可以执行对应的检索操作以便基于虚拟地址检索物理地址并将物理地址传回到存储器管理单元114。
尽管租约值被描述为用于控制TLB 120中虚拟地址到物理地址转换的使用,但是可以类似地控制对条目的元数据的访问。例如,如果接收到获取给定虚拟地址的访问许可信息(读取/写入、只读等)的请求,则可以如上所述使用租约值来控制是否从条目的传回许可信息。一般来说,在一些实施方案中,如所描述的,可以使用租约值来控制对给定条目中的一些或所有信息的访问。
通过如所描述的传回(或不传回)来自TLB 120中的条目的信息(例如,虚拟地址到物理地址转换、元数据等),所描述的实施方案使用租约值来控制TLB 120中的条目的使用期。换句话说,TLB 120中的条目在它们到期之前具有有限的使用期限并且不能再用于指定的操作。如本文所述,这可以使计算装置100能够避免执行TLB击落。
使用页表条目的最新租约值
图8呈现示出根据一些实施方案的用于使用页表122中的页表条目的最新租约的过程的流程图。应当注意,呈现图8所示的操作作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同的顺序执行的操作。另外,尽管使用特定的机构(例如,存储器管理单元114、核心108/TLB 120等)来描述操作,但是在一些实施方案中,其他机构可以执行操作。例如,核心109/TLB 121可以代替核心108/TLB 120执行操作。
图8所示的过程开始于存储器管理单元114确定要修改页表条目(步骤800)。例如,存储器管理单元114可以从核心108接收修改页表条目中的虚拟地址到物理地址转换的请求,诸如当存储器页已经在存储器106中移动时、当虚拟地址已经改变时等。作为另一个示例,存储器管理单元114可以从核心108接收修改与页表条目相关联的元数据的请求,诸如当存储器106中的对应页的访问许可已经改变时、当访问计数器要改变时等。
然后,存储器管理单元114从页表中获取页表条目的最新租约值(步骤802)。通常,当获取最新租约值时,存储器管理单元114在页表122中找到页表条目(例如,通过如上所述的搜索或寻访页表)并且从与条目相关联的元数据(例如,元数据204)获取最新租约值。
然后,存储器管理单元114确定页表条目的最新租约是否到期(步骤804)。更具体地,存储器管理单元114基于最新租约值,确定基于保存在TLB中的页表条目的虚拟地址到物理地址转换的所有副本是否已经到期。一般来说,这种操作包括将最新租约要到期的时间(或其他值)与当前时间(或其他参考)进行比较以确定最新租约是否已经到期。例如,当最新租约是绝对/特定时间(例如,小时、分、秒等)时,可以将绝对/特定时间与当前系统时间、参考计时器和/或另一个计数器或时钟进行比较。作为另一个示例,当最新租约是相对/偏移时间时,可以将相对/偏移时间与基于偏移计时器或计数器的当前值、基准时间值加偏移等计算、确定等的时间值进行比较。作为又一个示例,当最新租约是基于事件或基于历元的参考时,可以将基于事件或基于历元的参考与当前事件标识符或历元计数器进行比较。
在一些实施方案中,当当前绝对/特定或相对/偏移时间超过最新租约值、当超过基于事件或基于历元的参考时等,确定最新租约已经到期。例如,当系统时间是P(其是晚于最新租约值K的值)时,最新租约到期。作为另一个示例,当系统中的历元计数器是M(其是高于最新租约值H的计数器)时,最新租约到期。
当最新租约尚未到期(步骤804),并且因此存在来自保存在TLB中的页表条目的虚拟地址到物理地址转换的至少一个有效(并且因此可用)副本时,存储器管理单元114不能在不导致页表条目与一个或多个副本之间不一致的情况下修改页表条目。因此,存储器管理单元114执行TLB击落以使TLB中的对应条目无效(步骤806)。如上所述,当执行TLB击落时,存储器管理单元114导致可以保存来自页表条目的虚拟地址到物理地址转换和元数据的副本的每个TLB使副本无效。
在执行TLB击落之后,存储器管理单元114修改页表条目(步骤808)。在这种操作期间,存储器管理单元114更新页表条目的虚拟地址到物理地址转换和/或元数据。
当最新租约已经到期(步骤804),并且因此没有来自页表条目的虚拟地址到物理地址转换的有效(并且因此可用)副本保持在TLB中时,存储器管理单元114能够修改页表条目而不会导致不一致。因此,存储器管理单元114修改页表条目(步骤808)。应当注意,这种修改是在不执行TLB击落的情况下进行的,因为最新租约值能够用于确认没有虚拟地址到物理地址转换的副本保持在TLB中。
图9呈现示出根据一些实施方案的用于使用页表122中的页表条目的最新租约的过程的流程图。应当注意,呈现图9所示的操作以作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了特定的机构(例如,存储器管理单元114、核心108/TLB120等),但是在一些实施方案中,其他机构可以执行所述操作。例如,核心109/TLB 121可以代替核心108/TLB 120来执行操作。
图9所示的过程开始于存储器管理单元114确定页表条目有待修改(步骤900)。例如,存储器管理单元114能够从核心108接收修改页表条目中的虚拟地址到物理地址转换的请求,诸如当存储器页已经在存储器106中移动时、当虚拟地址已经改变时等。作为另一个示例,存储器管理单元114能够从核心108接收修改与页表条目相关联的元数据的请求,诸如当存储器106中的对应页的访问许可已经改变时、当访问计数器待改变时等。
然后,存储器管理单元114从页表中获取页表条目的最新租约值(步骤902)。通常,当获取最新租约值时,存储器管理单元114在页表122中找到页表条目(例如,通过如上所述的搜索或寻访页表)并且从与条目相关联的元数据(例如,元数据204)获取最新租约值。
然后,存储器管理单元114确定页表条目的最新租约是否到期(步骤904)。更具体地,存储器管理单元114基于最新租约值来确定保持在TLB中的基于页表条目的虚拟地址到物理地址转换的所有副本是否已经到期。一般来说,这种操作包括将最新租约要到期的时间(或其他值)与当前时间(或其他参考)进行比较以确定最新租约是否已经到期。例如,当最新租约是绝对/特定时间(例如,小时、分、秒等)时,能够将所述绝对/特定时间与当前系统时间、参考计时器和/或另一个计数器或时钟进行比较。作为另一个示例,当最新租约是相对/偏移时间时,能够将所述相对/偏移时间与基于偏移计时器或计数器的当前值、基准时间值加偏移等计算、确定等的时间值进行比较。作为又一个示例,当最新租约是基于事件或基于历元的参考时,能够将基于事件或基于历元的参考与当前事件标识符或历元计数器进行比较。
在一些实施方案中,在当前绝对/特定或相对/偏移时间超过最新租约值时、当超过了基于事件或基于历元的参考时等,确定最新租约已经到期。例如,当系统时间是P(其是晚于最新租约值K的值)时,最新租约到期。作为另一个示例,当系统中的历元计数器是M(其是高于最新租约值H的计数器)时,最新租约到期。
当最新租约尚未到期(步骤904),并且因此有来自页表条目的虚拟地址到物理地址转换的至少一个有效(并且因此可用)副本保持在TLB中时,存储器管理单元114不能在不导致页表条目与一个或多个副本之间不一致的情况下修改页表条目。因此,存储器管理单元114等待,直到最新租约到期(步骤906)。在一些实施方案中,等待包括确定在最新租约到期时的剩余时间小于阈值时间,然后暂停对页表条目的修改,直到最新租约已经到期。在一些实施方案中,存储器管理单元114可以防止虚拟地址到物理地址转换的其他副本在等待时被存储在TLB中,以避免等待持续一个或多个后续/新获取的租约。
在等待直到最新租约到期之后,存储器管理单元114修改页表条目(步骤908)。在这种操作期间,存储器管理单元114更新页表条目的虚拟地址到物理地址转换和/或元数据。
当最新租约已经到期(步骤904),并且因此没有来自页表条目的虚拟地址到物理地址转换的有效(并且因此可用)副本保持在TLB中时,存储器管理单元114能够修改页表条目而不会导致不一致。因此,存储器管理单元114修改页表条目(步骤908)。应当注意,这种修改是在不执行TLB击落的情况下进行的,因为最新租约值能够用于确认没有虚拟地址到物理地址转换的副本保持在TLB中。
基于延期计数器来动态地设置租约值
如上所述,在一些实施方案中,针对TLB条目动态地设置租约值。在这些实施方案中的一些中,使用与页表条目相关联的延期计数器来动态地设置租约值。图10呈现示出根据一些实施方案的用于基于延期计数器来动态地设置租约值的过程的流程图。应当注意,呈现图10所示的操作以作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了特定的机构(例如,存储器管理单元114等),但是在一些实施方案中,其他机构可以执行所述操作。
图10所示的过程开始于存储器管理单元114在TLB中执行针对给定虚拟地址的虚拟地址到物理地址转换的查找时(步骤1000)。对于这个示例,假设TLB中存在对应的条目,但是租约到期(即,TLB条目的租约值早于当前时间/在当前时间之前)。因此,存储器管理单元114在将TLB中的对应条目的元数据中的租约值与当前时间进行比较后,确定租约到期(步骤1002)。然后,存储器管理单元114执行页表寻访以从对应的页表条目获取信息(即,虚拟地址到物理地址转换和元数据)(步骤1004)。当从对应的页表条目获取信息时,并且基于发现TLB条目过期的事实,存储器管理单元114递增或以其他方式更新用于对应页表条目的延期计数器(步骤1006)。
接下来,存储器管理单元114基于从页表条目获取的信息(即,虚拟地址到物理地址转换和元数据)来更新TLB中的对应条目(步骤1008)。另外,存储器管理单元114至少部分地基于延期计数器来设置TLB中的对应条目的租约值(步骤1010)。换句话说,存储器管理单元114使用延期计数器的值作为包括一个或多个数学运算、逻辑运算等的租约长度表达式的输入,所述表达式的结果是租约值(即,租约在时间方面的长度)。例如,延期计数器可以乘以先前/现有租约值、常数、默认值或基准租约值和/或另一个值以达到租约值。作为另一个示例,延期计数器能够用于数学表达式中,诸如用于指数表达式、线性表达式等中。一般来说,延期计数器能够用于随着租约延期次数的增加而将租约长度增加对应的量。
在一些实施方案中,在指定事件发生后,延期计数器减小和/或被设置为指定值。例如,当页在存储器中移动、分配等时,能够将延期计数器设置为初始值(例如,1或另一个值)。作为另一个示例,用于一个或多个页表条目的延期计数器能够随时间衰减,诸如通过以指定的时间间隔使延期计数器减小指定量。以这种方式,对应TLB条目的租约在相对较长的时间段内不会受到有限数量的局部过期/延期的影响(例如,由于涉及对应页的短暂活动间隔),例如,随着时间的推移、在某些事件之后等,租约返回到初始值或默认值。
在一些实施方案中,计算装置100中的一个或多个实体(例如,操作系统、硬件功能块等)能够设置延期计数器的值(例如,在不同于租约被延期时的时间)。例如,当给定页会使用较长时间段时,操作系统能够将对应页表条目中的延期计数器设置为较大值,从而避免TLB条目的租约很快到期。作为另一个示例,当给定页会使用较短时间段时,操作系统能够将延期计数器设置为较小值,从而使得TLB条目更快到期。
在一些实施方案中,除了设置租约值之外,延期计数器还能够用于其他操作。例如,在一些实施方案中,基于使用级别而在存储器中的不同类型和/或位置之间迁移页(例如,“热”或高使用率页被迁移到较快的存储器,而“冷”或低使用率页被迁移到较慢的存储器等)。在这些实施方案中,当确定要迁移页的一个或多个时间(例如,设置迁移间隔等)时,能够考虑用于一个或多个页表条目的延期计数器。例如,如果超过阈值数量的页表条目具有超过指定值的计数器,则可以调度页的迁移和/或可以更新迁移间隔。
动态地设置租约值的伪代码示例
图11呈现根据一些实施方案的动态地设置租约值的伪代码示例。针对图11中的示例,为与存储器中的地址“A”处的页相关联的TLB条目设置租约值。换句话说,在图11所示的操作期间,确定并设置在为地址A处的页的TLB条目设置租约时所使用的租约值。租约值随后可以用于设置与存储器中的地址A相关联的TLB条目的租约,如本文中所述。应当注意,呈现图11所示的操作以作为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作和/或以不同顺序执行的操作。另外,尽管在描述操作时使用了特定的机构(例如,存储器管理单元114等),但是在一些实施方案中,其他机构可以执行操作。
如图10至图11中可以看出,图11中的示例使用与图10所示的操作不同的操作来设置租约值。因此,图10至图11示出了不同的实施方案,并且不同的实施方案可以执行不同类型和布置的用于确定租约值的操作。一般来说,并且如上所述,所描述的实施方案执行用于将租约值设置为以下值的操作:所述值足够长以使得条目的租约不会过早到期和/或足够短以使得租约不会太晚到期。
伪代码包括两个区段,即区段1100和1102。区段1100示出了当页表条目被覆盖、更新或以其他方式改变时能够执行的操作。当页在存储器中从第一位置移动到第二位置等时,页表条目会变得无效。一般来说,在区段1100中,在租约尚未到期的页表条目无效之后,租约值减小/缩短。
如区段1100所示,当地址A处的页的页表条目变得无效时,存储器管理单元114检查与页表条目相关联的元数据中的最新租约,以确定页表条目的最新租约是否晚于当前时间,即最新租约是否未到期。如果未到期,则存储器管理单元114将租约值(“LEASE_A”)重新设置为指定值。例如,如图11所示,存储器管理单元114将租约值设置为:当前时间(“CURRENT TIME”)减去针对TLB中的缺失或过期条目(其可以是TLB中的任何条目,不一定是针对地址A的条目)的最后一次页表寻访的时间(“LAST_PTW_TIME_STAMP”),再除以常数值(C)。例如,常数的值可以是例如2、5的值,或者基于TLB击落率、页表寻访和/或计算装置100中的其他操作条件而设置的值。
区段1102示出当由于TLB条目到期而发生页寻访时可以执行的操作。当TLB中没有虚拟地址到物理地址转换信息时,必须执行页表寻访以获取此类信息。这包括当TLB条目的租约到期时,尽管条目可能仍在TLB中,条目不再被视为有效的。一般来说,在区段1102中,在由于缺失TLB条目而进行设定次数的页表寻访之后,租约值增加。
如区段1102所示,当由于到期而发生页表寻访时,存储器管理单元递增连续TLB未命中次数的计数器(“NUM_TLB_MISSES”)。当连续TLB未命中次数的计数器大于阈值(例如,16、20或另一个值)时,存储器管理单元114将租约值设置为以下各项的最大值:(1)当前时间(“CURRENT TIME”)减去对TLB中缺失条目(其可以是TLB中的任何条目,不一定是针对地址A的条目)的最后一次页表寻访的时间戳(“LAST_PTW_TIME_STAMP_ON_MISS”),加上常数(C′);或(2)租约值乘以常数(C″)。常数C′和C″的值是基于TLB击落率、页表寻访和/或计算装置100中的其他操作条件来设置的。然后将连续TLB未命中次数的计数器设置为0(即,清除以开始后续计数)。否则,如果连续TLB未命中次数的计数器小于阈值,则将对缺失条目的最后一次页表寻访的时间戳设置为当前时间。然后将对缺失条目的最后一次页表寻访的时间设置为当前时间。
基于租约值和最新租约值的附加操作
如上所述,所描述的实施方案可以使用租约值和最新租约值来避免TLB击落。此外,所描述的实施方案可以使用租约值进行其他操作。例如,在一些实施方案中,使用租约值来扩充用于选择TLB条目进行驱逐(即,为新TLB条目腾出空间)的替换策略。在这些实施方案中,扩充包括在替换策略下,使用过期的(或未过期的)租约作为用于TLB条目的替换决策的一部分。例如,可以优先选择具有过期租约的TLB条目进行驱逐和/或可以使用租约到期作为一个因素连同其他替换策略因素(例如,最近最少使用、最少使用等)一起来选择TLB条目进行驱逐。一般来说,所描述的实施方案可以在执行任何类型的对TLB条目和/或其到期感兴趣的操作时使用租约值和/或最新租约值。
在一些实施方案中,计算装置(例如,图1中的计算装置100和/或其某一部分)使用存储在非暂时性计算机可读存储介质上的代码和/或数据来执行本文所述的一些或全部操作。更具体地,计算装置从计算机可读存储介质读取代码和/或数据,并且在执行所描述的操作时执行代码和/或使用数据。
计算机可读存储介质可以是存储供计算装置使用的代码和/或数据的任何装置或介质或它们的组合。例如,计算机可读存储介质可以包括但不限于易失性存储器或非易失性存储器,包括闪存存储器、随机存取存储器(eDRAM、RAM、SRAM、DRAM、DDR、DDR2/DDR3/DDR4SDRAM等)、只读存储器(ROM)和/或磁性或光学存储介质(例如,磁盘驱动器、磁带、CD、DVD)。
在一些实施方案中,一个或多个硬件模块被配置成执行本文所述的操作。例如,硬件模块可以包括但不限于一个或多个处理器/核心/中央处理单元(CPU)、专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、高速缓存/高速缓存控制器、存储器管理单元、计算单元、嵌入式处理器、图形处理器(GPU)/图形核心、流水线、加速处理单元(APU)和/或其他可编程逻辑装置。当此类硬件模块被激活时,硬件模块执行所述操作中的一些或全部。在一些实施方案中,硬件模块包括通过执行指令(程序代码、固件等)被配置成执行操作的一个或多个通用电路。
在一些实施方案中,代表本文所描述的一些或所有结构和机构(例如,计算装置100和/或其某个部分)的数据结构存储在非暂时性计算机可读存储介质上,所述存储介质包括可以由计算装置读取以及直接或间接地用来制造包括所述结构和机构的硬件的数据库或其他数据结构。例如,数据结构可以是诸如Verilog或VHDL的高级设计语言(HDL)中的硬件功能的行为级描述或寄存器传输级(RTL)描述。描述可以由合成工具读取,所述合成工具可以将描述合成以产生网表,所述网表包括来自合成库的门/电路元件的列表,所述门/电路元件表示包括上述结构和机构的硬件的功能。然后可以放置和路由网表以产生描述要应用于掩模的几何形状的数据集。然后,掩模可以用于各种半导体制造步骤,以产生对应于上述结构和机构的一个或多个半导体电路。替代地,计算机可访问存储介质上的数据库可以是网表(具有或不具有合成库)或数据集(根据需要)或图形数据系统(GDS)II数据。
在本说明书中,在描述一些实施方案时可以参考功能块。一般来说,功能块包括执行所描述的操作的一个或多个相关电路。在一些实施方案中,功能块中的电路包括执行程序代码(例如,微代码、固件、应用程序等)以执行所描述的操作的电路。
仅出于说明和描述的目的呈现了对实施方案的前述描述。它们不旨在是穷举性的或将实施方案限于所公开的形式。因此,许多修改和变化对于本领域技术人员来说将是显而易见的。另外,以上公开内容并不旨在限制实施方案。实施方案的范围由所附权利要求限定。
Claims (20)
1.一种用于处理计算装置中的转换后备缓冲器(TLB)中的条目的方法,所述方法包括:
基于来自页表条目的在页表寻访期间所获取的虚拟地址到物理地址转换和元数据来更新所述TLB中的条目;
基于租约长度表达式来计算所述TLB中的所述条目的租约长度;
针对所述TLB中的所述条目,将租约值设置为所述租约长度,其中所述租约值表示直到所述TLB中的所述条目的租约到期时为止的时间,其中当相关联的租约已经到期时,所述TLB中的所述条目无效;
使用所述租约值来控制允许使用来自所述TLB中的所述条目的信息执行的操作;
保存用于所述TLB条目的延期计数器,所述延期计数器存储表示所述TLB中的所述条目的租约延期次数的值,其中当所述租约到期并且为所述TLB条目建立另一个租约时,租约被延期;
其中所述租约长度表达式是至少所述延期计数器的函数。
2.如权利要求1所述的方法,其中所述租约长度表达式包括所述延期计数器和基准租约值的乘法。
3.如权利要求1所述的方法,其中所述租约长度表达式包括所述延期计数器的指数函数或线性函数。
4.如权利要求1所述的方法,所述方法还包括:
从所述计算装置中的实体接收将所述延期计数器设置为指定值的请求;以及
将所述延期计数器设置为所述指定值,从而使得所述计算装置中的所述实体能够指定基于所述租约长度表达式计算出的所述租约长度。
5.如权利要求1所述的方法,其中保存所述延期计数器包括将所述延期计数器保存在页表中。
6.如权利要求1所述的方法,所述方法还包括:
基于一个或多个运行时条件来确定要计算所述租约长度,所述运行时条件包括租约长度长于或短于期望租约长度的一个或多个指示。
7.如权利要求6所述的方法,其中租约长度长于或短于期望租约长度的所述指示包括以下各项中的一个或多个:
由基于过期的TLB条目的TLB未命中导致的页表寻访的次数;以及
TLB击落的次数。
8.如权利要求1所述的方法,所述方法还包括:
确定要在所述页表中修改所述页表条目;
确定与所述页表条目相关联的TLB条目的所有租约都已经到期,并且因此与所述页表条目相关联的任何TLB条目都不再有效;以及
在不执行TLB击落的情况下修改所述页表中的所述页表条目,所述TLB击落包括导致所述计算装置中的一个或多个TLB使与所述页表条目相关联的对应TLB条目无效。
9.如权利要求1所述的方法,所述方法还包括:
确定要在所述页表中修改所述页表条目;
确定与所述页表条目相关联的TLB条目的至少一个租约尚未到期,并且因此至少一个TLB目前具有带有基于所述页表条目的信息的有效条目;
执行TLB击落,所述TLB击落包括导致所述计算装置中的一个或多个TLB使与所述页表条目相关联的对应TLB条目无效;以及
修改所述页表中的所述页表条目。
10.如权利要求1所述的方法,其中使用所述租约值来控制允许使用来自所述TLB中的所述条目的信息执行的所述操作包括:
获取要转换成物理地址的虚拟地址;
确定所述TLB中的所述条目包括对应的虚拟地址到物理地址转换;
检查所述TLB中的所述条目的所述租约值以确定所述条目的所述租约是否已经到期;
当所述租约已经到期时,执行页表寻访以获取所述虚拟地址到物理地址转换或所述元数据;以及
当所述租约尚未到期时,从所述TLB中的所述条目获取所述虚拟地址到物理地址转换或所述元数据。
11.一种计算装置,所述计算装置包括:
处理器,所述处理器包括核心;
存储器,所述存储器包括页表;以及
位于所述核心中的转换后备缓冲器(TLB);
其中所述处理器被配置成:
基于来自页表条目的在页表寻访期间所获取的虚拟地址到物理地址转换和元数据来更新所述TLB中的条目;
基于租约长度表达式来计算所述TLB中的所述条目的租约长度;
针对所述TLB中的所述条目,将租约值设置为所述租约长度,其中所述租约值表示直到所述TLB中的所述条目的租约到期时为止的时间,其中当相关联的租约已经到期时,所述TLB中的所述条目无效;
使用所述租约值来控制允许使用来自所述TLB中的所述条目的信息执行的操作;
保存用于所述TLB条目的延期计数器,所述延期计数器存储表示所述TLB中的所述条目的租约延期次数的值,其中当所述租约到期并且为所述TLB条目建立另一个租约时,租约被延期;
其中所述租约长度表达式是至少所述延期计数器的函数。
12.如权利要求11所述的计算装置,其中所述租约长度表达式包括所述延期计数器和基准租约值的乘法。
13.如权利要求11所述的计算装置,其中所述租约长度表达式包括所述延期计数器的指数函数或线性函数。
14.如权利要求11所述的计算装置,其中所述处理器还被配置成:
从所述计算装置中的实体接收将所述延期计数器设置为指定值的请求;并且
将所述延期计数器设置为所述指定值,从而使得所述计算装置中的所述实体能够指定基于所述租约长度表达式计算出的所述租约长度。
15.如权利要求11所述的计算装置,其中所述处理器还被配置成:
将所述延期计数器保存在页表中。
16.如权利要求11所述的计算装置,其中所述处理器还被配置成:
基于一个或多个运行时条件来确定要计算所述租约长度,所述运行时条件包括租约长度长于或短于期望租约长度的一个或多个指示。
17.如权利要求16所述的计算装置,其中租约长度长于或短于期望租约长度的所述指示包括以下各项中的一个或多个:
由基于过期的TLB条目的TLB未命中导致的页表寻访的次数;以及
TLB击落的次数。
18.如权利要求11所述的计算装置,其中所述处理器还被配置成:
确定要在所述页表中修改所述页表条目;
确定与所述页表条目相关联的TLB条目的所有租约都已经到期,并且因此与所述页表条目相关联的任何TLB条目都不再有效;并且
在不执行TLB击落的情况下修改所述页表中的所述页表条目,所述TLB击落包括导致所述计算装置中的一个或多个TLB使与所述页表条目相关联的对应TLB条目无效。
19.如权利要求11所述的计算装置,其中所述处理器还被配置成:
确定要在所述页表中修改所述页表条目;
确定与所述页表条目相关联的TLB条目的至少一个租约尚未到期,并且因此至少一个TLB目前具有带有基于所述页表条目的信息的有效条目;
执行TLB击落,所述TLB击落包括导致所述计算装置中的一个或多个TLB使与所述页表条目相关联的对应TLB条目无效;并且
修改所述页表中的所述页表条目。
20.如权利要求11所述的计算装置,其中当使用所述租约值来控制允许使用来自所述TLB中的所述条目的信息执行的操作时,所述处理器被配置成:
获取要转换成物理地址的虚拟地址;
确定所述TLB中的所述条目包括对应的虚拟地址到物理地址转换;
检查所述TLB中的所述条目的所述租约值以确定所述条目的所述租约是否已经到期;
当所述租约已经到期时,执行页表寻访以获取所述虚拟地址到物理地址转换或所述元数据;并且
当所述租约尚未到期时,从所述TLB中的所述条目获取所述虚拟地址到物理地址转换或所述元数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/081,379 US10078588B2 (en) | 2016-03-25 | 2016-03-25 | Using leases for entries in a translation lookaside buffer |
US15/081,379 | 2016-03-25 | ||
US15/361,335 | 2016-11-25 | ||
US15/361,335 US10261916B2 (en) | 2016-03-25 | 2016-11-25 | Adaptive extension of leases for entries in a translation lookaside buffer |
PCT/US2017/023592 WO2017165520A1 (en) | 2016-03-25 | 2017-03-22 | Adaptive extension of leases for entries in a translation lookaside buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109074317A CN109074317A (zh) | 2018-12-21 |
CN109074317B true CN109074317B (zh) | 2023-09-12 |
Family
ID=59896454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780019906.XA Active CN109074317B (zh) | 2016-03-25 | 2017-03-22 | 转换后备缓冲器中的条目的租约的自适应延期 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10261916B2 (zh) |
EP (1) | EP3433747B1 (zh) |
JP (1) | JP7176955B2 (zh) |
KR (1) | KR102407782B1 (zh) |
CN (1) | CN109074317B (zh) |
WO (1) | WO2017165520A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3054384B1 (en) * | 2015-02-04 | 2018-06-27 | Huawei Technologies Co., Ltd. | System and method for memory synchronization of a multi-core system |
US10540292B2 (en) | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10402355B2 (en) * | 2017-02-08 | 2019-09-03 | Texas Instruments Incorporated | Apparatus and mechanism to bypass PCIe address translation by using alternative routing |
GB2568059B (en) * | 2017-11-02 | 2020-04-08 | Advanced Risc Mach Ltd | Method for locating metadata |
US20190041950A1 (en) * | 2018-03-28 | 2019-02-07 | Intel Corporation | System, Apparatus And Method For Data Driven Low Power State Control Based On Performance Monitoring Information |
US11144473B2 (en) * | 2018-06-13 | 2021-10-12 | Advanced Micro Devices, Inc. | Quality of service for input/output memory management unit |
US10997083B2 (en) * | 2018-09-04 | 2021-05-04 | Arm Limited | Parallel page table entry access when performing address translations |
US11023397B2 (en) * | 2019-03-25 | 2021-06-01 | Alibaba Group Holding Limited | System and method for monitoring per virtual machine I/O |
KR102355374B1 (ko) | 2019-09-27 | 2022-01-25 | 에스케이하이닉스 주식회사 | 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법 |
US11429445B2 (en) * | 2019-11-25 | 2022-08-30 | Micron Technology, Inc. | User interface based page migration for performance enhancement |
US11693785B2 (en) | 2019-12-27 | 2023-07-04 | Intel Corporation | Memory tagging apparatus and method |
US11392503B2 (en) * | 2019-12-27 | 2022-07-19 | Intel Corporation | Memory tagging apparatus and method |
US11481330B2 (en) * | 2020-06-03 | 2022-10-25 | Micron Technology, Inc. | Cache architectures with address delay registers for memory devices |
US11500566B2 (en) * | 2020-08-25 | 2022-11-15 | Commvault Systems, Inc. | Cloud-based distributed data storage system using block-level deduplication based on backup frequencies of incoming backup copies |
KR20220147277A (ko) | 2021-04-27 | 2022-11-03 | 삼성전자주식회사 | 제어 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 페이지 테이블 엔트리 생성 및 탐색 방법 |
GB2611584B (en) * | 2021-10-11 | 2023-10-04 | Advanced Risc Mach Ltd | Address translation circuitry and methods for performing address translation |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0345589A2 (en) * | 1988-06-06 | 1989-12-13 | Digital Equipment Corporation | Page tables in virtual memory |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
JP2004062470A (ja) * | 2002-07-29 | 2004-02-26 | Nec Engineering Ltd | マルチプロセッサの切り替え方式 |
US6775703B1 (en) * | 2000-05-01 | 2004-08-10 | International Business Machines Corporation | Lease based safety protocol for distributed system with multiple networks |
CN102232221A (zh) * | 2008-06-16 | 2011-11-02 | 高通股份有限公司 | 用于检查安全代码的运行时完整性的方法和系统 |
CN104919417A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于在每线程的基础上跟踪tlb清除的装置和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370632B1 (en) * | 1997-11-18 | 2002-04-09 | Intrinsity, Inc. | Method and apparatus that enforces a regional memory model in hierarchical memory systems |
US20050080934A1 (en) * | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US7069389B2 (en) * | 2003-11-26 | 2006-06-27 | Microsoft Corporation | Lazy flushing of translation lookaside buffers |
US8516221B2 (en) * | 2008-10-31 | 2013-08-20 | Hewlett-Packard Development Company, L.P. | On-the fly TLB coalescing |
JP5208690B2 (ja) * | 2008-11-14 | 2013-06-12 | 株式会社東芝 | 主記憶データ書き換え装置及び方法 |
US8397049B2 (en) * | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US9015400B2 (en) * | 2013-03-05 | 2015-04-21 | Qualcomm Incorporated | Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW) |
US20140351151A1 (en) * | 2013-05-23 | 2014-11-27 | International Business Machines Corporation | Providing a lease period determination |
US9547603B2 (en) * | 2013-08-28 | 2017-01-17 | Wisconsin Alumni Research Foundation | I/O memory management unit providing self invalidated mapping |
US9342403B2 (en) * | 2014-03-28 | 2016-05-17 | Intel Corporation | Method and apparatus for managing a spin transfer torque memory |
US9405703B2 (en) * | 2014-06-04 | 2016-08-02 | Advanced Micro Devices, Inc. | Translation lookaside buffer |
US10275171B2 (en) * | 2014-09-16 | 2019-04-30 | Kove Ip, Llc | Paging of external memory |
US10031883B2 (en) * | 2015-10-16 | 2018-07-24 | International Business Machines Corporation | Cache management in RDMA distributed key/value stores based on atomic operations |
-
2016
- 2016-11-25 US US15/361,335 patent/US10261916B2/en active Active
-
2017
- 2017-03-22 WO PCT/US2017/023592 patent/WO2017165520A1/en active Application Filing
- 2017-03-22 EP EP17771059.7A patent/EP3433747B1/en active Active
- 2017-03-22 JP JP2018550433A patent/JP7176955B2/ja active Active
- 2017-03-22 CN CN201780019906.XA patent/CN109074317B/zh active Active
- 2017-03-22 KR KR1020187028367A patent/KR102407782B1/ko active IP Right Grant
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0345589A2 (en) * | 1988-06-06 | 1989-12-13 | Digital Equipment Corporation | Page tables in virtual memory |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
US6775703B1 (en) * | 2000-05-01 | 2004-08-10 | International Business Machines Corporation | Lease based safety protocol for distributed system with multiple networks |
JP2004062470A (ja) * | 2002-07-29 | 2004-02-26 | Nec Engineering Ltd | マルチプロセッサの切り替え方式 |
CN102232221A (zh) * | 2008-06-16 | 2011-11-02 | 高通股份有限公司 | 用于检查安全代码的运行时完整性的方法和系统 |
CN104919417A (zh) * | 2012-12-29 | 2015-09-16 | 英特尔公司 | 用于在每线程的基础上跟踪tlb清除的装置和方法 |
Non-Patent Citations (1)
Title |
---|
Efficient TLB-Based Detection of Private Pages in Chip Multiprocessor;Esteve Albert et al.;《the IEEE Computer Society》;20160212;第27卷(第3期);第748-761页 * |
Also Published As
Publication number | Publication date |
---|---|
KR20180120221A (ko) | 2018-11-05 |
US20170277639A1 (en) | 2017-09-28 |
EP3433747A1 (en) | 2019-01-30 |
EP3433747A4 (en) | 2019-11-06 |
US10261916B2 (en) | 2019-04-16 |
KR102407782B1 (ko) | 2022-06-10 |
CN109074317A (zh) | 2018-12-21 |
JP2019512815A (ja) | 2019-05-16 |
EP3433747B1 (en) | 2021-10-13 |
WO2017165520A1 (en) | 2017-09-28 |
JP7176955B2 (ja) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074317B (zh) | 转换后备缓冲器中的条目的租约的自适应延期 | |
US10078588B2 (en) | Using leases for entries in a translation lookaside buffer | |
US9501425B2 (en) | Translation lookaside buffer management | |
US10552339B2 (en) | Dynamically adapting mechanism for translation lookaside buffer shootdowns | |
US7472253B1 (en) | System and method for managing table lookaside buffer performance | |
US10019377B2 (en) | Managing cache coherence using information in a page table | |
US9405702B2 (en) | Caching TLB translations using a unified page table walker cache | |
CN109154907B (zh) | 在输入-输出存储器管理单元中使用多个存储器元件来执行虚拟地址到物理地址转译 | |
US20080235477A1 (en) | Coherent data mover | |
JP7337173B2 (ja) | トランスレーションルックアサイドバッファエビクションに基づくキャッシュ置換 | |
US9684606B2 (en) | Translation lookaside buffer invalidation suppression | |
US9405703B2 (en) | Translation lookaside buffer | |
US20160140042A1 (en) | Instruction cache translation management | |
US11392508B2 (en) | Lightweight address translation for page migration and duplication | |
JP2008502069A (ja) | メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法 | |
US9697137B2 (en) | Filtering translation lookaside buffer invalidations | |
US7549035B1 (en) | System and method for reference and modification tracking | |
JP2007048296A (ja) | 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム | |
JP2024503259A (ja) | 入出力デバイスによってアクセス可能なメモリのページの移行 | |
US7546439B1 (en) | System and method for managing copy-on-write faults and change-protection | |
TWI782754B (zh) | 微處理器和在微處理器中實現的方法 | |
KR102665339B1 (ko) | 변환 색인 버퍼 축출 기반 캐시 교체 | |
CN117093132A (zh) | 数据处理方法、装置、处理器及计算机系统 | |
CN114365102A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |