CN111279324A - 用于定位元数据的方法 - Google Patents
用于定位元数据的方法 Download PDFInfo
- Publication number
- CN111279324A CN111279324A CN201880069004.1A CN201880069004A CN111279324A CN 111279324 A CN111279324 A CN 111279324A CN 201880069004 A CN201880069004 A CN 201880069004A CN 111279324 A CN111279324 A CN 111279324A
- Authority
- CN
- China
- Prior art keywords
- page table
- address
- metadata
- entries
- pointer
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013519 translation Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000014616 translation Effects 0.000 description 34
- 238000005516 engineering process Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
Images
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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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
- G06F2212/651—Multi-level translation tables
-
- 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
- G06F2212/657—Virtual 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种用于定位与第一地址相关联的元数据的方法。方法包括:访问页表结构,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据;在页表结构中提取(906)至少两个页表项的部分;从所述部分确定(906)指向元数据表的指针;以及使用(908)指针从元数据表中定位与第一地址相关联的目标元数据。
Description
技术领域
本技术涉及数据处理。更具体地,本技术涉及定位与地址相关联的元数据。
背景技术
位置可以通过地址来标识。可以将与位置相对应的一些地址从第一地址转换为第二地址。对于软件提供商而言,可能希望将元数据与地址相关联。
发明内容
至少一些示例提供了一种用于定位与第一地址相关联的元数据的方法,所述方法包括:访问页表结构,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据;在所述页表结构中提取至少两个页表项的部分;从至少两个页表项的所述部分确定指向元数据表的指针;以及使用所述指针从所述元数据表中定位与所述第一地址相关联的目标元数据。
至少一些示例提供了一种用于将元数据与第一地址相关联的方法,所述方法包括:将所述元数据存储在元数据表中;确定指向所述元数据表的指针,所述指针包括两个或更多个部分;以及将所述两个或更多个部分中的每个部分存储在页表结构的第一组两个或更多个页表项的相应一个页表项中,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据。
至少一些示例提供了一种计算机程序,包括指令,该指令在被执行时使得数据处理装置执行上述方法中的任一个。
附图说明
将参考如附图中所示的本发明的实施例,仅以说明的方式来进一步描述本发明,在附图中:
图1示意性地示出了数据处理装置的一个示例;
图2示出了页表结构的一个示例,该页表结构包括具有相关联的元数据表的页表;
图3示出了为了从虚拟地址获得物理地址而执行的页表走查(page table walk)的示例;
图4示出了页表项(page table entry)的格式的一个示例;
图5示出了如何从页表项中提取指向元数据表的指针;
图6示出了如何从页表项的多个块之一中提取指针的示例;
图7示出了如何从第一地址定位存储有指针的部分的页表项的示例;
图8示出了增加与页表相关联的元数据的容量的示例;
图9示出了用于提取指向元数据表的指针的流程图;
图10示出了用于在页表中存储指向元数据表的指针的流程图。
具体实施方式
下面将讨论一些特定示例。将理解的是,本技术不限于这些特定示例。
可能需要将元数据与地址相关联。例如,元数据可以包括例如与特定地址的访问有关的统计数据(例如,访问量、访问频率、或访问延迟),并且可以存储在元数据存储结构中。元数据的另一示例可以是软件注释的缓存提示,以帮助进行缓存决策。例如,可以以每页为基础来记录元数据。
一种用于在元数据存储结构中定位与特定地址相关联的元数据的方法可以是用于执行针对元数据树结构的走查,使得可以找到在元数据存储结构中存储有针对特定地址的元数据的位置。元数据树结构可以独立于用于地址转换的页表,并且可以基于特定地址以与页表走查类似的方式进行遍历。然而,以这种方式维持用于定位元数据的独立树结构是繁重的,并且在执行树的遍历时可能引起显著的延迟。
本技术认识到,在包括地址转换的示例中,用于地址转换的现有页表结构还可以用于在元数据存储结构中针对给定地址来定位地址相关联的元数据,即使页表项中可用于额外信息(该额外信息不直接用于地址转换)的备用比特不足以存储元数据本身或指向存储有元数据的其他位置的地址指针。
页表结构可以在页表项中存储地址转换数据。当要转换给定地址时,可以访问与给定地址相对应的页表项,以获得针对该地址的地址转换数据。然后使用地址转换数据将给定地址转换为另一地址。在某些情况下,地址转换数据可以被存储在按层次结构组织的几个页表中,每个页表包括多个页表项。在这种情况下,当要转换给定地址时,可以执行针对层次结构的页表走查,其中按顺序访问每个页表的页表项,以获取指向层次结构的下一级别处的后续页表的指针。重复该过程,直到到达层次结构的最后一个级别,在该最后一个级别中,页表项存储了用于转换给定地址的转换数据。
在一个示例中,本技术提供了一种用于定位与第一地址相关联的元数据的方法,所述方法包括:访问页表结构,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据;在所述页表结构中提取至少两个页表项的部分;从所述部分确定指向元数据表的指针;以及使用所述指针从所述元数据表中定位与所述第一地址相关联的目标元数据。
为了利用页表结构的属性以提供用于定位元数据的更有效的方法,本技术提取页表结构的至少两个页表项的部分,并且从所述部分中确定用于定位元数据表的指针。例如,可以通过组合至少两个页表项的部分或通过连接至少两个页表项的部分来确定指针。从页表结构中引用元数据表可能比构造独立的元数据树更为有效,因为通常在将第一地址转换为第二地址时,可能需要与第一地址相关联的元数据,并且因此用于定位页表结构的相关页表项所需的一些存储器/缓存访问可能针对处理地址转换本身已经发生,而不是需要与转换访问无关的大量存储器访问来遍历元数据树结构,并且还因为所需项被存储在缓存中的可能性,使得可以更快地提取它们。此外,由于现有页表结构被用于从第一地址定位指向元数据表的指针,因此本技术还减少了存储器需求,因为不需要为单独的元数据树结构的上层分配存储器空间(虽然元数据树的叶节点可以仍然使用指针从页表结构提供和引用,但是元数据树的非叶节点变得多余,因为现有页表结构可以用于提供标识针对给定地址区域的元数据表的位置的指针)。
通过合并从多个页表项中提取的部分以形成元数据表指针,这允许从页表结构引用元数据表,即使每个页表项中的可用备用比特空间很少。这种方法是不寻常的,因为通常每个页表项提供与存储在页表中其他页表项中的数据无关的数据,而不是将单个数据值(指针)分成多个部分并存储在多个页表项中。虽然这可能需要访问与除第一地址之外的其他地址相对应的一些页表项(对于第一地址本身的地址转换,并不需要这些其他地址),但是开销可能仍然小于遍历独立的元数据树。
在一些示例中,使用步骤还包括从所述指针和所述第一地址确定所述元数据表内的存储所述目标元数据的目标元数据位置。例如,确定步骤可以包括:从所述指针确定所述元数据表的基位置(base location);以及从所述第一地址确定目标元数据索引,该目标元数据索引用于索引到所述元数据表中以访问所述目标元数据位置。在一些示例中,页表结构包括处于多个级别的多个页表,并且所述目标元数据索引是基于处于给定级别的给定页表内的与第一地址相对应的目标页表项的目标页表索引来确定的。在这种布置中,在由第一地址提供的索引与元数据表中等效位置处的元数据之间存在自然关联。因此,可以进一步简化处理,因为不需要两个独立的索引过程来索引到页表和元数据表中。
在一些示例中,所述目标元数据位置相对于所述元数据表的偏移被确定为所述目标页表索引的部分的倍数。例如,偏移可以是目标页表索引的最低有效部分的倍数。由于可以增加索引之间的物理存储器空间,这增加了能够与给定页表项相关联地存储的元数据的容量,同时还维持了元数据表和页表的索引之间的一对一映射。
在一些示例中,所述至少两个页表项对应于与所述第一地址相对应的第一地址空间的连续区域。这有助于减少定位包含指针的部分的至少两个页表所需的存储器访问次数,并且提高缓存效率。例如,缓存行可能很大,并且包括多个页表项,因此当要从存储器中检索单个页表项并且将其存储在缓存或TLB中时,还会自动检索并缓存许多周围的页表项,即使可能没有明确指示。因此,当至少两个页表项对应于地址空间的连续区域时,更有可能在其中一个页表项被缓存时,其他的页表项也将被缓存。即使不执行缓存,在使用连续页表项存储指针的各个部分时,存储器访问次数仍然可能会减少。
在一些示例中,所述页表结构包括多个页表,所述至少两个页表项和与第一地址相对应的目标页表项在页表结构的相同页表内。在许多情况下,在执行对目标页表项的访问的同时或大约同时,将需要与目标页表项相关联的元数据。因此,将至少两个页表项和目标项存储在相同页表中,减少了访问转换数据和相关联的元数据所需的对不同页表的访问次数。在一些情况下,目标页表项本身可以是为获取指针而被访问的至少两个页表项之一,但是针对所有第一地址可能无法保证都是这样。
在一些示例中,不管目标页表项在给定页表内的相对位置如何,都选择相同的项作为所述至少两个页表项。这简化了处理,因为无论何时要定位元数据表,可以默认访问相同的至少两个页表项。
在一些其他示例中,取决于目标页表项在给定页表内的相对位置,选择不同组的至少两个项作为所述至少两个页表项。因此,在页表中可以包括多组至少两个页表项(并且因此包括元数据表指针的多个实例)。在页表中的多个不同位置中存储指针增加了能够从缓存的页表项中确定指针的可能性,从而减少了需要附加存储器访问的机会。在一些情况下,不同组的至少两个页表项可以都指向相同的元数据存储结构,其中冗余实现提高的可缓存性。替代地,每组至少两个页表项可以各自指向不同的元数据存储结构,从而允许将任意大小的整个元数据存储区域与任意数量的页表项相关联。
在一些示例中,给定页表包括连续页表项的多个块,并且至少两个项是从与目标页表项相同的块中选择的。因此,至少两个项和目标项将在地址空间中靠得更近,这提高了缓存效率,因为更有可能在相对较近的时间点访问至少两个项和目标项,这种连锁效应使至少两个项和目标项都更有可能一起被缓存。
在一些示例中,方法还包括:从所述第一地址确定指示目标页表项在所述页表结构的给定页表中的位置的索引;以及从所述索引确定所述至少两个页表项在所述给定页表中的位置。这提供了从第一地址的单个索引定位目标页表项以及至少两个页表项的一种简单且有效的方法。
在一些示例中,所述索引在索引的中间比特位置处被舍入,以标识所述至少两个页表项在所述给定页表中的位置。假定由不同地址提供的索引将对应于页表的不同块,那么在中间比特位置处对索引进行舍入将提供与页表的块之一相对应的经舍入的索引。然后,至少两个页表项可以是块的最低有效端处的那些项。这样,可以在表中提供多组指针位置(每个块一个),使得可以在每个块中提供同一指针的冗余版本以提高可缓存性,或者可以为每个块提供多个独立的指针以增加元数据存储装置的容量。
在一些示例中,所述页表结构包括按级别组织的多个页表,所述至少两个页表项包括所述页表结构的最后一级页表的页表项,所述最后一级页表提供用于标识与所述第一地址相对应的所述第二地址的地址映射信息。在这样的布置中,较高级页表项提供指向后续页表的指针,直到到达最后一级页表,在该最后一级页表中将提供指向存储器中的页的指针。因此,较高级页表与存储器中的多个页相关联,并且将基于如何索引后续页表来确定与给定地址相对应的特定页。然而,最后一级页表的页表项与存储器中的页具有一对一的对应关系。因此,通过从最后一级页表中定位指针,可以假定在第一地址与后续访问的元数据之间存在每页关联。
元数据可以存储在页表结构的页表项中。然而,在典型的页表项格式中,只有很少的备用比特可用于该目的。因此,用于以这种方式存储元数据的容量相当有限。在一些示例中,所述部分是从所述至少两个页表项的保留软件字段中提取的,因此,当页表项的软件字段针对元数据提供不足的容量时,本技术标识出至少两个页表项的这些比特可以被用于存储指向元数据表的指针的部分。
在另一示例中,本技术提供了一种用于将元数据与第一地址相关联的方法,所述方法包括:将所述元数据存储在元数据表中;确定指向所述元数据表的指针,所述指针包括两个或更多个部分;以及将所述两个或更多个部分中的每个部分存储在页表结构的第一组两个或更多个页表项的相应一个页表项中,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据。以这种方式将元数据与页表项相关联避免了构建专用于定位与页表项相关联的元数据的唯一树或表的附加开销(相对于构建页表结构本身)。此外,在这种情况下,本技术允许与目标页表项相关联的元数据被更快地访问,并且具有较少的存储器访问(与实现并行结构所需要的存储器访问相比)。
在一些示例中,该方法还包括:将所述两个或更多个部分中的每个部分存储在所述页表结构的第二组两个或更多个页表项中的相应一个页表项中。将指针存储在第一组和第二组两个或更多个页表项中改善了缓存,因为当需要指针项时,更可能的是,将至少有一组已经被缓存。
在一些示例中,该方法还包括:确定指向第二元数据表的第二指针,所述第二指针包括另外两个或更多个部分;以及将所述另外两个或更多个部分中的每个部分存储在所述页表结构的第二组两个或更多个页表项中的相应一个页表项中。这样,其他元数据可以与页表结构的页表项相关联,并且元数据的容量受到的约束较少。
在一些示例中,一种计算机程序包括指令,该指令在被执行时使得数据处理装置执行以上讨论的本技术的方法中的任一个。
在一些示例中,一种计算机可读存储介质,存储有计算机程序。该计算机可读存储介质可以是非暂态存储介质。
现在将参考附图描述一些特定实施例。
图1示出了装置100的一个示例。例如,装置100包括处理逻辑102,用于执行数据处理操作,例如,算术或浮点运算。处理逻辑102被耦合到通用寄存器104以及加载/存储单元106,该通用寄存器104被布置为存储由处理逻辑102在执行数据处理操作时将使用的数据和指令,并且该加载/存储单元106用于从存储器110检索数据/向存储器110发送数据。数据缓存108耦合在加载/存储单元106与存储器110之间,以缓存预期由处理逻辑102在不久的将来所需要的数据。与存储器110相比,数据缓存108可以被更快地访问。指令解码器112解码指令以生成用于控制装置100的其他元件(例如,处理逻辑102或加载/存储单元106)的控制信号。指令解码器112被耦合到指令缓存114,该指令缓存114存储指令以供指令解码器112更快地访问。
装置100还被配置为实现虚拟寻址方案,其中虚拟地址空间可以被分配给处理逻辑可能正在执行的各种程序。每个虚拟地址空间都包括一系列虚拟寻址的页面,这些页面可以重新映射到物理存储器,使得虚拟地址空间中的连续页面不需要在物理地址空间中是连续的。对于该实现方式,装置100还包括存储器管理单元(MMU)116,其被配置为处理由程序引用的虚拟地址与表示存储器110中的物理位置的物理地址之间的转换。MMU可以将一些虚拟地址与其相应物理地址之间的映射本地存储在转换后备缓冲器(TLB)118中,在这种情况下,可以相对快速地返回物理地址。当所需映射没有存储在TLB 118中时,页表走查单元120被配置为执行页表走查来引用存储在存储器110中的页表以获得所需转换数据。
在一些示例中,地址转换过程可以包括多个阶段,其中首先使用来自阶段1页表的地址转换数据将虚拟地址转换为中间物理地址,随后使用来自阶段2页表的地址转换数据将中间物理地址转换为相应物理地址。这种安排适用于使用虚拟化的系统,其中阶段1页表可以由虚拟机或客户机操作系统控制,而阶段2页表由管理程序控制。虽然为了便于说明,在后续实施例示出的示例中,页表结构提供的转换数据用于将虚拟地址转换为物理地址,但是更一般地,可以在将第一地址转换为第二地址的任何页表结构中提供元数据指针。
图2示出了页表结构200的一个示例。可以看出,页表结构200包括多个级别Level0、Level1和Level2。在要转换给定虚拟地址并且所需地址转换数据不在TLB 118中时,执行针对页表结构的各个级别的页表走查。从Level0表开始,使用虚拟地址来确定要引用后续级别的哪个页表,直到到达存储有将虚拟地址转换为相应虚拟地址所需的物理地址数据的Level2表为止。Level2页表和Level1页表中的每一个均与相应元数据表相关联。然而,将意识到,这种布置是特定于实现方式的,并且在其他示例中,或多或少的页表将与相应元数据表相关联。
图3提供了可以如何执行页表走查以从页表结构200中检索地址转换映射(例如,提供物理地址数据)的更详细图示。在图3的示例中,虚拟地址302包括:四个索引,Index0、Index1、Index2和Index3,其用于索引到页表的各个级别中,以找到由索引部分标识的目标页面的地址映射;以及偏移,其用于标识目标页面内的特定地址。虽然在图3示出的示例中,索引部分被原样使用以索引到页表级别中,但是还可以将散列应用于地址的索引部分以找到相应页表索引。当要转换虚拟地址302并且所需地址转换数据尚未缓存在TLB中时,MMU引用Level0基地址寄存器来确定Level0页表的基位置,并且虚拟地址302的Index0被用来确定距离基地址的偏移,其中下一级指针被存储在页表304的页表项中。指针可以被用来确定针对该特定虚拟地址302的下一转换阶段应当访问哪个Level1页表。在该示例中,指针指向Level1表306。然后通过基于虚拟地址的索引1索引到Level1表中,可以获得指向Level2页表之一的基地址的另一指针。然后,以与Level0和Level1表相同的方式对Level2和Level3表进行索引。然而,替代包括指向后续阶段的页表的指针,Level3表的索引页表项存储能够用于访问与虚拟地址302相对应的物理地址的物理地址数据。可以将物理地址数据与虚拟地址的偏移进行组合以形成针对该虚拟地址要访问的相应物理地址。
图4示出了一个示例页表项格式。从图4可以看出,OUT字段包括:指针,该指针定义在针对给定地址的页表走查期间要访问的下一级页表的基地址;或转换地址数据(在页表项在最后一级页表中时),该转换地址数据定义了与虚拟地址相对应的地址映射。还包括读取/写入许可指示符,其指示是否可以改写或读取特定页表项。被访问/脏(accessed/dirty)指示符分别指示页表项是否已被访问,或页表项是否已变脏并且需要使之无效。这些比特的另一子集被保留用于软件,并且可以由程序员或编译器按需使用。
本技术认识到,虽然页表项的保留软件比特可以用于直接存储与页表项相关联的元数据,但是这可能并不总是提供足够的存储。此外,本技术认识到,保留软件比特可以代替地用于提供指向补充元数据存储表的指针,从而不仅提供用于存储元数据的更大容量,而且还以能够进行有效地访问的方式提供元数据存储表。例如,一组页表项的软件比特可以用于存储指向与给定页表相关联的元数据表的指针。这允许实现如图2所示的布置,其中元数据表与页表相关联,其中只需要页表项的备用比特来定位相关联的元数据表。
图5示出了可以如何使用一组页表项的软件比特来存储指向与页表相关联的元数据表的指针的一个示例。根据从上一级的页表项中读取的指针来定位4kB最后一级页表502的基地址。在定位该表时,软件确定存在与该页表项相关联的元数据表,并且存在指向该元数据表的指针,该指针分别嵌入在页表项P[0]-P[8]的比特部分B0-B8中(其中每个比特部分Bx对应于相应页表项P[x]的软件保留字段,其可以包括多个比特)。由于比特部分B0-B8是针对软件保留的字段,因此该示例的实现方式不需要对装置的硬件进行任何修改。从页表项P[0]-P[8]中提取B0-B8,并且连接B0-B8以形成指针Q 504,该指针可以用于定位与页表502相关联的4KB元数据表506的基地址。应当理解,使用连接的比特部分B来形成完整的指针所需的页表项的确切数量将取决于指针的大小和每个页表项可用的备用软件保留比特的数量(例如,在该示例中,如果指针具有36比特并且软件保留字段具有4比特,则需要9个页表项)。
在一些示例中,本技术在以下假设下进行操作:存储在元数据表506中的任意元数据总体上与对应于一个页表502的4kB地址块相关联,其中关联是基于指针Q 504确定的。
然而,在其他示例中,元数据可以更具体地与页表502的各个页表项相关联。例如,当元数据元素Q[x]具体地与页表项P[x]相关联时,可以基于与P[x]相对于页表502的基地址的偏移相对应的偏移从元数据表506进行存储和访问。例如,在图5中,P[x]基于虚拟地址的Index2位于页表502中,并且因此Index2还可以用于在元数据表506中定位与P[x]相关联的元数据(即Q[x])。以这种方式组织和访问元数据允许将元数据元素具体地与各个页表项相关联,而不需要实施除了用于在页表502中定位P[x]的技术之外的任何其他索引或查找技术。
同样如图5所示,还可以访问P[x]以获得虚拟地址的物理地址数据,从而完成转换过程。然而,将理解,在获得与目标页表项相关联的元数据时,不需要访问目标页表项。例如,在其他情况下,可以在不访问P[x]的情况下获得Q[x]。
虽然从图5中可以看出,除了访问目标页表项P[x]本身之外,还需要一些附加存储器访问来访问获得元数据指针的所有部分所需的页表项(PTE),但是实际上,因为指针部分B0-B8被存储在连续PTE(该连续PTE被存储在地址空间的连续区域中并且与存储器地址空间的连续区域相对应)中,所以附加存储器访问的次数可以是有限的。在许多实现方式中,缓存行的大小对应于能够从存储器中加载并且存储在缓存中的数据的固定大小,该大小可以大于一个页表项的大小。因此,当针对给定的页表项向存储器发出请求时,一些其他页表项也可以从存储器加载并且也可以被缓存(例如,缓存在TLB 118或数据缓存108中)。通过使用连续PTE来存储指针,这减少了所需的存储器访问的次数。同样,因为指针与目标页表项存储在相同页表中,并且对存储器的访问模式倾向于本地化,所以存在合理的机会使得指针所需的附加PTE也缓存在数据缓存中108,以便可以相对高效地提取指针。
图6示出了本技术如何能够利用缓存位置属性来进一步提高效率的示例。指针Q的多个实例(例如,4个实例)可以被嵌入在不同指针组的页表项中。例如,对于包括512个8字节PTE的4kB页表,指针组可以以128个项的间隔来分开。即,指针组的每个页表项:P[0]-P[9]、P[128]-P[136]、P[256]-P[264]和P[384]-P[392]将Q的部分存储在它们的保留软件比特中,使得可以从任意组来重构Q。因此,可以选择最接近于与目标地址相对应的目标PTE的一组存储有指针的PTE以获得元数据指针,以便在目标页表项位于缓存中时,存在最大的机会使得最接近的一组存储有指针的PTE也将位于缓存中,因为在需要目标页表项时,具有地址空间中位于目标页表项附近的地址的页表项通常也被缓存。例如,在访问P[278]时,更可能缓存P[256]-P[264](例如,与P[0]-P[8]相比)。
针对目标页表项定位相关指针组相对简单。例如,如图7所示,页表702可以分为两个块C0和C1,其中每个块存储页表项704、706的指针组。因此,要用于索引到页表702中以定位目标页表项(未示出)的索引可以向下舍入为2K的最接近倍数,以定位指针组的基地址。指针组的指针项然后可以通过以下方式来定位:从基地址开始增加与该组中指针项的数量相等的数量,在这种情况下为8,因为有9个页表项包括指针的部分。类似地,在更多的块包括指针组时(例如,页表708的情况),索引被舍入为较小的基数。例如,页表708被分为16个块C0-C1,每个块存储指针组。因此,索引被向下舍入为256字节的最接近倍数,以定位指针组的基地址。
图8示出了在页表中嵌入多个指针组可以如何增加要与页表项相关联的元数据的容量的另一示例。与图6中的示例一样,图8的页表702包括四个指针组,每个指针组包括9个页表项。然而,每个指针组中都嵌入了不同的指针。例如,项P[0]-P[8]的比特部分B0-B8可以被连接以形成指向元数据表0 710的指针Q0,而项P[128]-P[136]的比特部分C0-C8可以被连接以形成指向元数据表l 708的指针Q1。以此方式,页表702中的128个项块中的每一个都可以与其自己的4KB元数据表相关联,从而显著增加了要与页表702的页表项相关联的元数据的容量。此外,可以通过简单方式将目标页表项的索引的部分乘以常数来实现定位特定于具体页表项的元数据。在图8的示例中,存储元数据的容量是存储页表项的四倍。因此,对应于128个项B的偏移可以乘以4以偏移到元数据表0中。对于项块:C、D和E,指示偏移的索引的最高比特部分必须被忽略,使得项块的基地址对应于相应元数据表的基地址,其中剩余最低有效比特被乘以4,以便索引到相关元数据表。
图9示出了一种用于定位与地址相关联的元数据的方法。首先,在步骤904中,页表结构中存储有指向元数据表的指针的部分的指针项被标识。例如,这可以通过将参考图7描述的舍入技术应用于地址的索引部分(其被用于页表结构中相应级别的页表)来实现。在步骤906中,提取并且连接指针项的部分以确定指针,并且在步骤908中,基于指针来定位存储有相关联的元数据的元数据表。在其他示例中,可以通过以连接以外的方式组合指针项的部分来形成指针(例如,在经组装的指针中的提取部分之间可以插入一些附加比特)。此外,为了标识与地址具体相关联的元数据,在步骤910中,由地址提供的目标页表项的索引被用于生成到元数据表中的索引以定位相关联的元数据(例如,元数据索引可以与目标页表索引相同,或者可以通过将目标页表索引的最低有效部分乘以乘数来得出元数据,该乘数对应于与页表结构中的一个页表相对应的单独元数据页的数量)。
图10示出了一种用于将元数据与地址相关联的方法。首先在步骤1004中,以与图9的步骤910相对应的方式,将元数据存储在元数据表中基于地址索引的位置处。在步骤1006中,确定指向元数据的基地址的指针,并在步骤1008中将其划分为多个部分。在步骤1010中,将这些部分存储在当转换相应地址时将访问的页表的项中。
在本申请中,词语“被配置为...”或“被布置为”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,该装置可以具有提供所定义的操作的专用硬件,或者可被编程为执行功能的处理器或其他处理设备。“被配置为”或“被布置为”并不意味着需要以任何方式改变装置元件以提供所定义的操作。
尽管本文已经参考附图详细描述了说明性实施例,但应理解,本发明不限于那些精确的实施例,并且本领域技术人员可以在其中进行各种改变、增加和修改,而不脱离由所附权利要求限定的本发明的范围。例如,在不脱离本发明的范围的情况下,可以将从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (19)
1.一种用于定位与第一地址相关联的元数据的方法,所述方法包括:
访问页表结构,所述页表结构的页表项提供用于在地址转换过程中使用以将所述第一地址转换为第二地址的地址转换数据;
在所述页表结构中提取至少两个页表项的部分;
从所述至少两个页表项的所述部分确定指向元数据表的指针;以及
使用所述指针从所述元数据表中定位与所述第一地址相关联的目标元数据。
2.根据权利要求1所述的方法,其中,所述使用步骤还包括:
从所述指针和所述第一地址确定所述元数据表内的存储所述目标元数据的目标元数据位置。
3.根据权利要求2所述的方法,其中,所述确定步骤包括:
从所述指针确定所述元数据表的基位置;以及
从所述第一地址确定目标元数据索引,所述目标元数据索引用于索引到所述元数据表中以访问所述目标元数据位置。
4.根据权利要求3所述的方法,其中,所述页表结构包括处于多个级别的多个页表,并且所述目标元数据索引是基于给定级别的给定页表内的与所述第一地址相对应的目标页表项的目标页表索引来确定的。
5.根据权利要求4所述的方法,其中,所述目标元数据位置相对于所述元数据表的所述基位置的偏移被确定为所述目标页表索引的部分的倍数。
6.根据前述权利要求中任一项所述的方法,其中,所述至少两个页表项对应于与所述第一地址相对应的第一地址空间的连续区域。
7.根据前述权利要求中任一项所述的方法,其中,所述页表结构包括多个页表,并且所述至少两个页表项和与所述第一地址相对应的目标页表项在所述页表结构的相同页表内。
8.根据权利要求7所述的方法,其中,不管所述目标页表项在给定页表内的相对位置如何,都选择相同的项作为所述至少两个页表项。
9.根据权利要求7所述的方法,其中,取决于所述目标页表项在给定页表内的相对位置,选择不同组的至少两个项作为所述至少两个页表项。
10.根据权利要求9所述的方法,其中,所述给定页表包括连续页表项的多个块,并且所述至少两个页表项是从与所述目标页表项相同的块中选择的。
11.根据权利要求1至7中任一项所述的方法,包括:
从所述第一地址确定以下索引:所述索引指示与所述第一地址相对应的目标页表项在所述页表结构的给定页表中的位置;以及
从所述索引确定所述至少两个页表项在所述给定页表中的位置。
12.根据权利要求11所述的方法,其中,所述索引在所述索引的中间比特位置处被舍入,以标识所述至少两个页表项在所述给定页表中的位置。
13.根据前述权利要求中任一项所述的方法,其中,所述页表结构包括按级别组织的多个页表,并且所述至少两个页表项包括所述页表结构的最后一级页表的页表项,所述最后一级页表提供地址映射信息用于标识与所述第一地址相对应的所述第二地址。
14.根据前述权利要求中任一项所述的方法,其中,所述部分是从所述至少两个页表项的保留软件字段中提取的。
15.一种用于将元数据与第一地址相关联的方法,所述方法包括:
将所述元数据存储在元数据表中;
确定指向所述元数据表的指针,所述指针包括两个或更多个部分;以及
将所述两个或更多个部分中的每个部分存储在页表结构的第一组两个或更多个页表项的相应一个页表项中,所述页表结构的页表项提供用于在地址转换过程中使用的地址转换数据,所述地址转换过程用于将所述第一地址转换为第二地址。
16.根据权利要求15所述的方法,包括:将所述两个或更多个部分中的每个部分存储在所述页表结构的第二组两个或更多个页表项中的相应一个页表项中。
17.根据权利要求15所述的方法,还包括:
确定指向第二元数据表的第二指针,所述第二指针包括另外两个或更多个部分;以及
将所述另外两个或更多个部分中的每个部分存储在所述页表结构的第二组两个或更多个页表项中的相应一个页表项中。
18.一种计算机程序,包括指令,所述指令在被执行时使得数据处理装置执行根据前述权利要求中任一项所述的方法。
19.一种计算机可读存储介质,存储有根据权利要求18所述的计算机程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1718174.4A GB2568059B (en) | 2017-11-02 | 2017-11-02 | Method for locating metadata |
GB1718174.4 | 2017-11-02 | ||
PCT/GB2018/052916 WO2019086831A1 (en) | 2017-11-02 | 2018-10-11 | Method for locating metadata |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111279324A true CN111279324A (zh) | 2020-06-12 |
Family
ID=60664676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880069004.1A Pending CN111279324A (zh) | 2017-11-02 | 2018-10-11 | 用于定位元数据的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11334499B2 (zh) |
CN (1) | CN111279324A (zh) |
GB (1) | GB2568059B (zh) |
WO (1) | WO2019086831A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117670649A (zh) * | 2024-01-30 | 2024-03-08 | 南京砺算科技有限公司 | 元数据写入及读取方法、图形处理单元 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10997083B2 (en) * | 2018-09-04 | 2021-05-04 | Arm Limited | Parallel page table entry access when performing address translations |
EP3881190A1 (en) * | 2018-11-12 | 2021-09-22 | Dover Microsystems, Inc. | Systems and methods for metadata encoding |
US11853227B2 (en) * | 2021-04-28 | 2023-12-26 | Arm Limited | Data processing apparatus and method for performing address translation |
GB2625550A (en) * | 2022-12-20 | 2024-06-26 | Advanced Risc Mach Ltd | Apparatus, method and computer program, for performing translation table entry load/store operation |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088780A (en) * | 1997-03-31 | 2000-07-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address |
CN105283855A (zh) * | 2014-04-25 | 2016-01-27 | 华为技术有限公司 | 一种寻址方法及装置 |
US20170083450A1 (en) * | 2015-09-23 | 2017-03-23 | Intel Corporation | Supporting Data Conversion and Meta-Data in a Paging System |
US9710514B1 (en) * | 2013-06-25 | 2017-07-18 | Marvell International Ltd. | Systems and methods for efficient storage access using metadata |
US20170277639A1 (en) * | 2016-03-25 | 2017-09-28 | Advanced Micro Devices, Inc. | Adaptive Extension of Leases for Entries in a Translation Lookaside Buffer |
US20180349286A1 (en) * | 2017-05-30 | 2018-12-06 | Ati Technologies Ulc | Page table management for differing virtual and physical address page alignment |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078827B2 (en) * | 2007-07-05 | 2011-12-13 | International Business Machines Corporation | Method and apparatus for caching of page translations for virtual machines |
US8806101B2 (en) * | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
BRPI0925055A2 (pt) * | 2009-06-26 | 2015-07-28 | Intel Corp | "otimizações para um sistema de memória transacional ilimitada (utm)" |
CN107615252A (zh) * | 2015-01-05 | 2018-01-19 | 邦存科技有限公司 | 横向扩展存储系统中的元数据管理 |
US9934148B2 (en) * | 2015-06-23 | 2018-04-03 | Advanced Micro Devices, Inc. | Memory module with embedded access metadata |
US10095630B2 (en) * | 2015-12-30 | 2018-10-09 | AVAST Software s.r.o. | Sequential access to page metadata stored in a multi-level page table |
US10599582B2 (en) * | 2016-09-26 | 2020-03-24 | Intel Corporation | Using a virtual to virtual address table for memory compression |
US11119939B2 (en) * | 2017-08-21 | 2021-09-14 | Alibaba Group Holding Limited | Methods and systems for memory management of kernel and user spaces |
-
2017
- 2017-11-02 GB GB1718174.4A patent/GB2568059B/en active Active
-
2018
- 2018-10-11 CN CN201880069004.1A patent/CN111279324A/zh active Pending
- 2018-10-11 US US16/756,288 patent/US11334499B2/en active Active
- 2018-10-11 WO PCT/GB2018/052916 patent/WO2019086831A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6088780A (en) * | 1997-03-31 | 2000-07-11 | Institute For The Development Of Emerging Architecture, L.L.C. | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address |
US9710514B1 (en) * | 2013-06-25 | 2017-07-18 | Marvell International Ltd. | Systems and methods for efficient storage access using metadata |
CN105283855A (zh) * | 2014-04-25 | 2016-01-27 | 华为技术有限公司 | 一种寻址方法及装置 |
US20170083450A1 (en) * | 2015-09-23 | 2017-03-23 | Intel Corporation | Supporting Data Conversion and Meta-Data in a Paging System |
US20170277639A1 (en) * | 2016-03-25 | 2017-09-28 | Advanced Micro Devices, Inc. | Adaptive Extension of Leases for Entries in a Translation Lookaside Buffer |
US20180349286A1 (en) * | 2017-05-30 | 2018-12-06 | Ati Technologies Ulc | Page table management for differing virtual and physical address page alignment |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117670649A (zh) * | 2024-01-30 | 2024-03-08 | 南京砺算科技有限公司 | 元数据写入及读取方法、图形处理单元 |
Also Published As
Publication number | Publication date |
---|---|
WO2019086831A1 (en) | 2019-05-09 |
GB2568059A (en) | 2019-05-08 |
US11334499B2 (en) | 2022-05-17 |
GB2568059B (en) | 2020-04-08 |
GB201718174D0 (en) | 2017-12-20 |
US20200242047A1 (en) | 2020-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11334499B2 (en) | Method for locating metadata | |
KR101729503B1 (ko) | 계층 변환 테이블 제어 | |
US10956340B2 (en) | Hardware-based pre-page walk virtual address transformation independent of page size utilizing bit shifting based on page size | |
CN110998549B (zh) | 地址转换缓存 | |
KR101587361B1 (ko) | 다수의 순차적 어드레스 변환들을 위한 통합된 tlb 구조 | |
KR101598353B1 (ko) | 다중-스테이지 어드레스 변환에서의 변환 바이패스 | |
US9058268B1 (en) | Apparatus, system and method for memory management | |
US6088780A (en) | Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address | |
US8151085B2 (en) | Method for address translation in virtual machines | |
JP3666689B2 (ja) | 仮想アドレス変換方法 | |
US20110231630A1 (en) | Address mapping in virtualized processing system | |
KR101694591B1 (ko) | 보다 적은 비트들로 프로세서 콘텍스트를 나타내기 위한 방법 및 장치 | |
JP2014078248A (ja) | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ | |
CN102754086A (zh) | 页面大小可变的虚拟内存系统 | |
JPH04320553A (ja) | アドレス変換機構 | |
CN110209603B (zh) | 地址转换方法、装置、设备及计算机可读存储介质 | |
JP2009512943A (ja) | 多階層の変換索引緩衝機構(TLBs)フィールドの更新 | |
KR20210144656A (ko) | 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법 | |
EP3690660B1 (en) | Cache address mapping method and related device | |
US9483412B2 (en) | Method and apparatus for reformatting page table entries for cache storage | |
CN110362509B (zh) | 统一地址转换方法与统一地址空间 | |
US10120813B2 (en) | Address translation | |
KR100343940B1 (ko) | 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지 | |
MX2008005091A (en) | Caching memory attribute indicators with cached memory data |
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 |