CN110998549B - 地址转换缓存 - Google Patents
地址转换缓存 Download PDFInfo
- Publication number
- CN110998549B CN110998549B CN201880049493.4A CN201880049493A CN110998549B CN 110998549 B CN110998549 B CN 110998549B CN 201880049493 A CN201880049493 A CN 201880049493A CN 110998549 B CN110998549 B CN 110998549B
- Authority
- CN
- China
- Prior art keywords
- address
- cache
- page table
- invalidation
- page
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 187
- 230000001419 dependent effect Effects 0.000 claims abstract description 13
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 4
- 230000007717 exclusion Effects 0.000 claims description 3
- 230000014616 translation Effects 0.000 description 155
- 238000013507 mapping Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 7
- 230000007704 transition Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 101100110009 Caenorhabditis elegans asd-2 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 108091032995 L1Base Proteins 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
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]
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/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/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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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
-
- 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
一种设备具有地址转换缓存(12、16),该地址转换缓存具有多个缓存条目(40),这些多个缓存条目用于存储依赖于页表的一个或多个页表条目的地址转换数据。控制电路(50)响应于指定地址信息的无效请求而执行无效查找操作以标识将要被无效的至少一个目标缓存条目。目标缓存条目是这样一种条目,其对应的地址转换数据依赖于与地址信息相对应的至少一个目标页表条目。控制电路(50)根据指示目标页表条目的页大小的页大小信息,来选择多个无效查找模式中用于进行无效查找操作的一者。不同的无效查找模式对应于基于地址信息来标识目标缓存条目的不同方式。
Description
技术领域
本技术涉及数据处理领域。更具体地,涉及对地址转换数据进行的缓存。
背景技术
数据处理系统可以具有至少一个地址转换缓存来缓存用于转换地址的地址转换数据,以进行存储器系统访问。缓存中的地址转换数据可以依赖于在存储器系统自身中存储的一个或多个页表中的页表条目。与每次需要进行地址转换时都必须从存储器中查找页表的情况相比,通过将地址转换数据缓存于地址转换缓存中,可以更快地转换地址。如果对页表进行了更改(例如,操作系统可能会更改用于给定软件进程或上下文的存储器映射),则会向地址转换缓存发送无效请求,以将地址转换缓存中提供依赖于被更改的页表条目的地址转换数据的至少一个目标缓存条目无效。
至少一些示例提供了一种设备,包括:
地址转换缓存,包括多个缓存条目,每个缓存条目用于存储地址转换数据,该地址转换数据依赖于在存储器系统中存储的一个或多个页表中的一个或多个页表条目;以及
控制电路,其响应于指定与至少一个目标页表条目对应的地址信息的无效请求,而执行无效查找操作,以便标识地址转换缓存中的至少一个目标缓存条目,这些目标缓存条目的地址转换数据是依赖于这些目标页表条目的,并且以便触发对在这些目标缓存条目中存储的地址转换数据的无效;
其中,控制电路被配置为:根据指示所述至少一个目标页表条目的页大小的页大小信息,来选择多个无效查找模式中的哪一者用于进行无效查找操作,这些无效查找模式对应于根据地址信息来标识所述至少一个目标缓存条目的不同方式。
至少一些示例提供了一种用于使来自包括多个缓存条目的地址转换缓存的地址转换数据无效的方法,每个缓存条目用于存储地址转换数据,该地址转换数据依赖于在存储器系统中存储的一个或多个页表中的一个或多个页表条目,该方法包括:
响应于指定与至少一个目标页表条目对应的地址信息的无效请求:
执行无效查找操作以标识标识所述地址转换缓存中的至少一个目标缓存条目,这些目标缓存条目的地址转换数据是依赖于所述至少一个目标页表条目的,其中,多个无效查找模式中的哪一者被用于进行无效查找操作是根据指示所述至少一个目标页表条目的页大小的页大小信息来选择的,这些无效查找模式对应于根据地址信息来标识所述至少一个目标缓存条目的不同方式;并且
触发对在所述至少一个目标条目中存储的地址转换数据的无效。
至少一些示例提供了一种设备,包括:
地址转换缓存,包括多个缓存条目,每个缓存条目用于存储地址转换数据,该地址转换数据依赖于在存储器系统中存储的一个或多个页表中的一个或多个页表条目,
其中,每个页表条目包括以下各项中的至少一者:
中间页表条目,其指定下一级页表条目的地址;以及
叶页表条目,其指定地址转换映射;并且
控制电路响应于标识指示地址的无效范围的范围信息的
叶页表条目和中间页表条目的排除式指定范围的无效请求,来触发对地址转换缓存中的至少一个目标缓存条目的无效,这些目标缓存条目的地址转换数据是依赖于至少一个目标页表条目的,所述至少一个目标页表条目包括给定页表的任何叶页表条目和所述给定页表中与完全在所述无效范围内的地址组相对应的任何中间页表条目。
至少一些示例提供了一种设备,包括:
地址转换缓存,包括多个缓存条目,每个缓存条目用于存储地址转换数据;以及
控制电路,其响应于指定单个地址和指示与对应于所述单个地址的页表条目相关联的页大小的页大小信息的无效请求,而执行无效查找操作以根据单个地址和页大小信息来标识所述地址转换缓存中的至少一个目标缓存条目,并触发对在所述至少一个目标缓存条目中存储的地址转换数据的无效。
附图说明
本技术的其他方面、特征和优点将从下面的示例描述中显而易见,这些示例描述将结合附图来阅读,在附图中:
图1示意性地图示了具有至少一个地址转换缓存的数据处理系统的示例。
图2示出了用于定位转换给定地址的地址映射的多级页表遍历操作的示例;
图3示出了两阶地址转换过程的示例;
图4示出了地址转换缓存的条目示例;
图5示出了使用虚拟地址的不同部分来做到地址转换缓存的示例索引;
图6示出了示出处理无效请求的方法的流程图;
图7示出了提供页大小信息的四个不同示例;
图8是示出基于页大小信息来选择无效查找模式的方法的流程图;
图9示出了基于页大小信息来选择无效查找模式的第二示例方法;并且
图10图示了用于选择指定范围的无效请求所针对的页表条目的不同选项。
具体实施方式
地址转换缓存可以具有多个缓存条目,并且每个缓存条目可以存储地址转换数据,该地址转换数据依赖于来自在存储器系统中存储的一个或多个页表中的一个或多个页表条目。在某些地址转换缓存中的每个条目可仅对应于存储器中页表中的一个页表条目。然而,可行的是,给定的缓存条目提供依赖于页表中两个或多个页表条目的地址转换数据。例如,这可能是因为一个缓存条目可以存储对应于地址转换的多个阶段的组合的地址转换。当那些缓存条目所依赖的对应页表条目已经改变时,无效请求可以用于从地址转换缓存中移除地址转换数据。无效请求可以指定对应于至少一个目标页表条目的地址信息,并且这可以触发地址转换缓存的控制电路执行无效查找操作以标识其中的地址转换数据依赖于该至少一个目标页表条目的至少一个目标缓存条目,并且使在该至少一个目标缓存条目中存储的地址转换数据无效。无效查找信息依赖于地址信息,但也可以依赖于可以随特定的实施方式而不同的其他信息。例如,缓存条目可以存储附加信息,例如对与该条目对应的地址块的大小的指示,和/或上下文标识符(例如虚拟机标识符或流标识符),这些附加信息可以用于确定响应无效请求,是否应使给定的缓存条目无效。
在某些地址转换缓存中,可能存在许多无效查找模式,这些模式对应于执行无效查找操作以定位要被无效的所需目标缓存条目的不同方式。在某些情况下,对于同一无效请求,可以执行两种或多种无效查找模式。在延迟和功耗方面,某些无效查找模式执行起来可能比其他方式昂贵。发明人认识到是否需要给定的无效查找模式可以取决于给定的无效请求所针对的页表条目的页大小。对于某些页大小,可能不需要所有的无效查找模式。因此,控制电路可以基于与无效请求相关联的页大小信息来选择多个无效查找模式中的哪一者用于进行无效查找操作,该页大小信息指示至少一个目标页表条目的页大小。通过考虑页大小信息,可以忽略不必要的无效查找模式,或者可以做出关于是使用更昂贵的还是更便宜的查找模式的更明智的决定。这可以提高从处理地址转换缓存中进行无效的性能。
在一示例中,无效查找模式可以包括缓存索引模式和缓存遍历模式。在缓存索引模式中,无效查找操作包括:索引地址转换缓存中基于地址信息选择的至少一个选定缓存条目;并且确定每个选定缓存条目是否为该至少一个目标缓存条目之一。在缓存遍历模式中,无效查找操作可以包括:访问地址转换缓存中独立于地址信息被选择的至少一个缓存条目子集;并且确定每个访问的缓存条目是否为该至少一个目标缓存条目之一。控制电路可以基于页大小信息来选择使用缓存索引模式和缓存遍历模式中的哪一者。
某些形式的无效请求可以指定通常期望映射到地址转换缓存的一个条目的单个目标地址,因此,响应无效查找,可以只希望命中一个。缓存索引模式可用于这样的无效请求,以访问基于地址信息所选择的一组一个或多个条目,并且确定每个选定的缓存条目是否为所需的目标缓存条目,而无需检查缓存中的每个条目。例如,至少一个选定的缓存条目可以对应于组关联的缓存实现中的一组多个条目,或者可以对应于直接映射的缓存结构中的一个条目。
然而,某些缓存可以支持依赖于同一页表条目的多个缓存条目(例如,如果来自地址转换不同阶段的条目结合到单个缓存条目中)。如果对于给定的无效请求,一个以上的条目可命中地址信息,则可以使用缓存遍历模式来逐步遍历缓存的一部分,并标识可能需要被无效的所有可能条目。在某些情况下,缓存遍历模式可以遍历整个缓存存储装置中的所有条目。然而,如果已知缓存的其他部分无法存储所需的数据,则缓存遍历模式也可以仅将缓存条目的子集作为目标。缓存遍历模式在性能和功耗方面可能比缓存索引模式昂贵,这是因为与基于指定地址信息索引特定条目不同,缓存的整个部分能够与地址无关地被访问,并且因此可能需要访问更多数目的缓存条目。通常,在支持多个缓存条目命中同一无效请求的缓存中,一旦存在任何这样的条目可能存在的风险,控制电路将切换到缓存遍历模式。然而,这可能意味着可以使用缓存遍历模式来处理所有无效请求,这可能非常慢,尤其是对于较大的地址转换缓存。
从下面的示例认识到是否实际上需要缓存遍历模式可能取决于无效请求所针对的页表条目的大小。例如,当页大小小于阈值大小时,可能不会存在多个条目映射到同一地址的风险,因此可以选择缓存索引模式,而当页大小信息指示页大小大于阈值大小时可以选择缓存遍历模式。在页大小等于阈值大小的情况下,可以根据设置阈值的特定级别来选择缓存索引模式还是缓存遍历模式。因此,通过基于页大小信息来选择缓存无效查找模式,可以避免不必要的完整缓存遍历。
一些系统可以提供地址转换的多个阶段,其中第1阶段为从第一地址转换到第二地址,第二阶段为从第二地址转换到第三地址。处理电路可以将第1阶段页表配置用于控制第一地址到第二地址的转换,并且可以将第2阶段页表配置用于控制第二地址到第三地址的转换。例如,第一地址可以是由处理电路执行的程序指令指定的虚拟地址,其可以在第1阶段页表的控制下映射到中间物理地址。第1阶段页表可以例如由操作系统来配置。然而,为了支持虚拟化,管理程序可以在第2阶段页表中提供进一步的地址转换,该址转换将中间物理地址映射到存储系统实际所使用的物理地址。
尽管某些实现可能分别为第1阶段和第2阶段提供单独的缓存条目(在共享缓存或单独的缓存中),但可以通过将组合的地址转换数据存储在缓存中以将第一地址(虚拟地址)直接(绕过第二地址)转换到第三地址(物理地址)来提高地址转换查找的性能。然而,在这种情况下,每个组合的条目可以依赖于至少一个第1阶段页表条目和至少一个第2阶段页表条目。第1阶段和第2阶段页表可以用不同的页大小定义,这可意味着多个缓存条目可以分别对应于同一第1阶段页表条目或第2阶段页表条目。这可意味着与较大大小的给定页表条目相对应的无效目标条目可能需要使每一个均与较小的地址块对应的多个缓存条目无效。
对于支持缓存组合的第1阶段/第2阶段地址转换数据的缓存,上面讨论的技术可能特别有用,因为不同于对于针对存储组合的第1阶段和第2阶段地址转换数据的缓存的所有无效请求,需要缓存遍历模式,当页表大小足够大时,有可能存在相应的目标页表条目分散在多个缓存条目中的风险,因此可以使用缓存遍历模式。当页大小小于较大的页开始跨多个缓存条目分散的阈值时,可以选择缓存索引模式。因此,可以通过避免不必要的完整缓存遍历来提高进行无效的性能。
可以使用多个缓存查找模式的另一示例可以是在地址转换缓存中,该地址转换缓存存储用于转换具有地址转换缓存所支持的多个不同块大小之一的地址块的地址转换数据。例如,某些页表可以用可变的页大小来定义,以便不同的页表条目可以对应于不同大小的地址块。而且,一些地址转换缓存可以缓存针对多级页表的多个级别的条目,在这种情况下,与不同级别相对应的条目可以对应于不同大小的地址块。如果不同的缓存条目可对应于不同大小的地址块,则缓存可以使用每个都对应于不同块大小的不同无效查找模式来针对同一无效请求执行多个无效查找操作。例如,不同的查找模式可以使用输入地址中不同数目的位来生成用于访问缓存的索引。在每个缓存条目中存储的大小信息可以用于确定给定缓存条目是否与给定的查找模式的目标地址匹配。
就性能和功耗而言,分别针对不同的块大小执行不同的无效查找模式可能会很昂贵,并且可能会延迟无效请求的处理。下面讨论的示例认识到,当页大小信息已知时,可以对无效请求所针对的页表条目的大小进行推断,然后将其用于限制哪些缓存索引模式实际被需要。例如,如果页大小信息小于给定阈值,则可能不需要提供与大于该页大小的块大小相关联的缓存索引模式。因此,响应于无效请求,控制电路可以基于页大小信息来选择缓存索引模式的子集,并且可以执行与缓存索引模式中所选择的子集相对应的一个或多个无效查找操作。通过避免不必要的无效查找模式,可以提高从地址转换缓存中进行无效的性能。
页大小信息可以以多种不同的方式来表示。通常,页大小信息可以由无效请求指定,例如通过在请求的编码中包括标识页大小信息的参数来指定。例如,页大小信息可以包括以下各项中的至少一项:对页大小的显式指示;页大小的上限;页大小的下限;对页大小是否小于阈值大小的指示;对页大小是否大于阈值大小的指示;由地址信息指定的地址转换范围的起始和结束地址;标识从多个页大小中选择的适用页大小的子集的信息;以及对与无效请求相关联的地址转换的多个阶段之一的指示。
因此,不必明确地标识页大小。能够不那么精确地标识页大小就足够了,例如,仅指示页大小是大于还是小于阈值大小,或提供页大小的上限或下限,而不明确指定实际页大小的信息。
同样,在某些情况下,页大小信息可以隐含在其他信息中。例如,一些无效请求可以指定地址范围,该地址范围用于触发对与地址至少部分落入该范围的一个或多个页相对应的缓存条目的无效。对于某些形式的基于范围的无效(例如,排除式指定范围的无效请求),页大小的上限可能会隐含在范围的大小中,因此无需单独指定页大小信息。
另一选项是无效请求指定位图,该位图具有为从所支持的多个页大小中选择的某个页大小子集设置的位。根据位图的哪些位被设置,控制电路可以确定可以应用哪些页大小并相应地对无效查找模式进行限制。例如,尽管通常可以用多个不同的页大小来定义页表,但是如果已知在任何页表中都没有使用给定的页大小,则可以将相应的位保留为被清除以指示在从地址转换缓存执行无效时,不必根据该页大小执行查找操作。
在另一示例中,页大小信息可以隐含在指定地址转换的哪个阶段与无效请求相关联的信息中。例如,在地址转换的多个阶段中,每个阶段都可以与固定的页大小相关联,并且因此,如果无效针对的是第1阶段,则这可以有效地指示相应的页大小,对于第2阶段也是类似的。即使给定阶段的页表支持可变的页大小,某些页大小可以仅由第1阶段和第2阶段之一所支持,因此指定要受无效影响的阶段可以除去某些可能的页大小。
上面讨论的技术可以用于许多不同类型的无效请求。在一个示例中,指定地址的无效请求可以指定单个地址以标识与要被无效的地址转换数据相对应的至少一个目标页表条目。对于单个指定地址的无效请求,通常可以预期到不需要标识任何页大小信息,因为对应于该地址的任何页表条目都将被隐式地无效,而与该页的大小无关(假设它还符合任何其他基于非地址的标准,例如匹配转换上下文标识符)。通常,地址可以简单地标识映射到页表中的单个页表条目的地址空间的对应页,并且这可以触发对地址转换缓存中的相关数据相应的无效。因此,技术人员将不会看到对指定正被无效的页的大小的需要。然而,发明人认识到,为单个指定地址的无效请求指定页大小信息使得能够更有效地执行缓存查找,例如通过排除对缓存遍历模式的使用或使得缓存索引模式的子集能够被忽略,如以上讨论。例如,页大小信息可以是对页大小的显式指示,也可以是根据多个选项之一来表示页大小的代码。但是,有效的编码可以简单地提供单个位标志,该位标志可以指示页大小是否大于或小于特定阈值大小(在页大小等于阈值大小的情况下,位标记取何值取决于实现选择)。简单地指示页大小是大于还是小于阈值大小可能足以实现如上所述的缓存遍历模式和缓存索引模式之间的选择。因此,页大小信息不需要显著扩展与无效请求关联的位数。
无效请求的另一种形式是指定范围的无效请求,其可以指定地址的无效范围,并且针对的是与至少部分位于无效范围内的地址组相对应的至少一个目标页表条目。指定范围的无效请求可以是指定范围的包括式范围无效请求,控制电路针对该请求触发对缓存条目的无效,这些缓存条目依赖于对应于地址组的至少一个目标页表条目,其中,该组地址中的任何地址均位于无效范围内。对于基于范围的包括式无效,即使页表条目仅部分映射到指定范围上,也会将其作为目标。
替代地,指定范围的无效请求可以是排除式指定范围的无效请求,控制电路针对该请求触发无效,使得所针对的缓存条目是那些依赖于与完全位于无效范围内的地址组相对应的页表条目的条目。因此,利用此选项,仅部分位于该范围内的页表条目不会受到影响。控制电路可以使用每个缓存条目中的标记信息来标识相应的条目是全部还是部分映射到所要求的范围上,例如,可以使用每个缓存条目中的地址标记和大小字段的组合。对于基于范围的无效,映射到范围上可能不是用于确定是否无效的唯一标准,例如,其他标准可能包括与发布无效请求的当前进程关联的上下文标识符匹配的上下文标识符,或无效请求可以指定页表结构的将受无效影响的某些级别,而其他级别则从无效中被排除。类似地,一些无效请求可能只针对与多阶段转换中的第1阶段或第2阶段相关联的条目。可以用不同的方式来标识与指定范围的无效请求相关联的范围,例如,通过显式起始和结束地址,或者通过指定无效范围大小的起始地址和大小字段。
一些无效请求可以针对多级页表结构中特定级别的页表条目。然而,通常可能需要将叶页表条目与中间页表条目(或非叶页表条目)区分开。叶页表条目可以指代页表的最终级别,该级别指定用于将一种类型的地址转换为另一种类型的地址的实际地址转换映射。根据页表是对应于第1阶段、第2阶段还是组合的第1阶段/第2阶段,叶页表条目可以提供从虚拟地址到中间物理地址、中间物理地址到物理地址、或虚拟地址直接到物理地址的映射。另一方面,中间页表条目可以不提供任何实际的地址映射,而可以简单地在页表结构中指定下一级页表条目的地址。通过仅以叶页表条目为目标,这可以使实际的最终地址映射无效,同时保留较高级别的页表结构(在不需要更改的情况下)。其他无效可能针对页表的所有级别,无论它们是中间页页还是叶页表条目。
然而,在一个示例中,无效请求可以是排除式指定范围的无效请求,该请求针对的是与完全位于无效范围内的一组地相对应的叶和中间页表条目两者。响应于叶和中间的排除式指定范围的无效请求,控制电路可以将依赖于完全位于无效范围的地址块的叶或中间页表条目的任何缓存条目检测为目标缓存条目。这种类型的无效请求对于使页表结构的整个分支能够在一个请求中无效,同时保持页表结构的其他分支完好无损的情况下非常有用。因此,对应于至少部分位于无效范围之外的地址组的至少一个中间页表条目可以从其地址转换数据从地址转换缓存被无效的至少一个目标页表条目中排除。该方法对于其中采用多级遍历缓存的系统存储器管理单元或地址转换缓存特别有用,其中地址转换缓存的不同条目可以对应于页表的不同级别。
图1示意性地图示了包括一个或多个地址转换缓存的数据处理设备2的示例。装置2包括多个主设备4、6,这些主设备在该示例中包括两个中央处理单元(CPU)4和用于控制来自/到外围设备的数据的输入或输出的输入/输出单元6。将领会,还可以提供许多其他类型的主设备,例如图形处理单元(GPU)、用于控制数据在监视器上的显示的显示控制器、用于控制对存储器的访问的直接存储器访问控制器等。至少一些主设备可以具有内部数据或指令缓存8来用于缓存设备本地的指令或数据。诸如输入/输出接口6之类的其他主机可以是非缓存型主机。各个缓存中的、并且由各个主机访问的数据之间的一致性可以由一致性互连10管理,该一致性互连跟踪用于访问来自给定地址的数据的请求,并在需要保持一致性时控制其他主机的缓存中数据的监听。应领会,在其他实施例中,可以在软件中管理这样的一致性操作,但是提供用于跟踪这样的一致性的硬件互连10的好处是:系统所执行的软件的程序员不需要考虑一致性。
如图1所示,一些主机可以包括存储器管理单元(MMU)12,该存储器管理单元可以包括至少一个地址转换缓存,以用于缓存用于将由软件指定的地址转换为指代存储器14中特定位置的物理地址的地址转换数据。还可以提供系统存储器管理单元(SMMU)16,该系统存储器管理单元不在给定的主设备中提供,而是作为特定主设备6和一致性互连10之间的附加组件提供的,以允许实现更简单的主设备(没有为使用地址转换功能所设计的内置MMU)。在其他示例中,SMMU 16可以被认为是互连10的一部分。
可以在存储器14内定义页表,用于存储跨越给定地址空间的地址块的地址转换映射。如图2所示,页表可以以多个级别的页表来实现,可以在页表遍历操作中遍历这些页表以标识特定目标地址的地址映射。如图2所示,给定的一组索引位L0I可以用于索引零级页表20,该表在存储器中的位置由零级(L0)基地址22标识。L0基地址22可以被存储在例如(S)MMU 12、16的寄存器中。L0表20的索引条目标识L1基地址,该L1基地址标识L1页表22在存储器中的位置。来自目标地址的不同子集索引位L1I选择L1页表22中的条目之一,该条目随后标识L2基地址,该L2基地址标识L2页表24的存储器位置。来自目标地址的另一子集索引位L2I索引L2页表24以标识L3基地址,该L3基地址标识L3页表26的位置。随后,目标地址的又一个子集位L3I选择L3页表26中的特定条目,该L3页表26提供用于将目标地址映射到诸如物理地址之类的转换地址的实际地址映射。因此,L3页表26是提供叶页表条目的最终页表,这些叶页表条目提供实际的地址映射信息,而较高级别的页表20、22、24提供中间条目,这些中间条目标识下一级页表的基地址。应领会,提供四个级别的页表仅仅是一个示例,而其他方案可以使用不同数目的页表。通过以这种方式将页表划分为不同的级别,可以减少存储整个页表结构所需的存储器存储总量,因为不必在区域或具有与被映射的地址大小相同的大小的存储器中定位用于转换给定大小的地址空间的地址映射,这利用了这样的事实:即地址空间中的大块通常不具有已由操作系统或设置地址转换数据的其他进程定义的任何映射。虽然图2示出了其中索引位L0I、L1I等直接用作选择相应页表条目的索引的示例,但索引也可以是应用于索引位的散列函数的结果。
在一些系统中,(S)MMU 12、16可以具有完全独立的地址转换缓存,用于转换来自页表的不同级别的条目。通常,缓存来自最终级别页表26的条目的缓存可以被称为转换后备缓冲区,而缓存来自页表20、22、24的更高级别的页表条目的缓存可以被称为遍历缓存。另一方面,其他实施例可以提供共享地址转换缓存,其可以缓存来自多个级别的页表的地址转换数据。两种方法都可以用于本技术。虽然下面描述了一个缓存,但是某些(S)MMU可以在缓存层级中包括多个级别的地址转换缓存,以牺牲访问延迟来换取容量(例如,为进行快速访问而在0级地址转换缓存中存储的条目数目较少,以及为了在0级地址转换缓存未命中的情况下进行慢速访问而在1级地址转换缓存中存储的条目数目较多)。
如图3所示,地址转换过程还可能涉及不同地址空间之间地址转换的多个阶段。例如,在第1阶段转换中,被用于通过由运行在CPU 4上的应用或操作系统执行的指令来标识存储器位置的虚拟地址(第一地址)可以被转换为中间物理地址(第二地址)。例如,用于控制第1阶段地址的配置数据可以通过操作系统来设置。从操作系统的角度来看,可以假定在第1阶段地址转换中生成的中间物理地址是要访问的实际存储器地址的物理地址。然而,为了支持虚拟化并防止同一设备上共存的不同操作系统使用的相同中间物理地址发生冲突,管理程序随后可以在中间物理地址(第二地址)和物理地址(第三地址)(实际上指代要在存储器14中读取或写入的存储器位置)之间提供进一步的第二阶段地址转换。因此,可以存在由管理程序定义的对应于第2阶段地址转换的第二组页表。
应注意,地址转换的两个阶段中的每一阶段都可以使用如图2所示的多级页表。因此,用于为由目标虚拟地址所标识的给定地址块而标识地址映射的完整页表遍历可能在访问第1阶段页表的相应级别之前,需要使在第1阶段地址转换中使用的页表的基地址中的每一个经过第2阶段地址转换。也就是说,完整的页表遍历过程可以包括按以下顺序访问页表的多个级别:
·将第1阶段级别0页表的基地址至物理地址的第2阶段转换(第1阶段级别0基地址通常是中间物理地址,因为第1阶段转换是由操作系统配置的)。第2阶段转换包括4个查找(第2阶段,级别0;第2阶段,级别1;第2阶段,第2级;第2阶段,第3级)。
·基于目标虚拟地址的级别0索引部分L0I进行第1阶段级别0查找,以标识第1阶段级别1基地址(中间物理地址)
·第1阶段级别1基地址至物理地址的第2阶段转换(同样包括4个查找)。
·基于目标虚拟地址的级别1索引部分L1I进行第1阶段级别1查找,以标识第1阶段第2级基地址(中间物理地址)
·第1阶段第2级基地址至物理地址的第2阶段转换(同样包括4个查找)
·基于目标虚拟地址的第2级索引部分L2I进行第1阶段第2级查找,以标识第1阶段第3级基地址(中间物理地址)
·第1阶段的第3级基地址至物理地址的第2阶段转换(同样包括4个查找)。
·基于目标虚拟地址的第3级索引部分L3I进行第1阶段第3级查找,以标识与目标虚拟地址对应的目标中间物理地址
·目标中间物理地址至目标物理地址的第2阶段转换(再次包括4个查找),该目标物理地址表示存储器中要访问的与原始目标虚拟地址对应的位置。
因此,在没有任何缓存的情况下,转换将总计包括24个查找。从上面的序列可以看出,执行整个页表遍历过程可能非常慢,因为对于地址转换的每个阶段,可能需要对存储器的大量访问才能逐步通过每个页表级别。这就是为什么常常期望不仅缓存最终级别的地址映射,而且还期望缓存(S)MMU 12、16中的第1阶段和第2阶段表的高级别页表中的条目。这至少可以允许绕过整个页表遍历的一些步骤,即使给定目标地址的最终级别地址映射当前并不在地址转换缓存中。
如图3所示,第1阶段和第2阶段的地址转换有可能提供映射到不同大小的地址块的页表条目。例如,第1阶段地址转换可以以2MB的块大小进行操作,而第2阶段地址转换可以以4kB的块大小进行操作(显然,特定大小4kB和2MB仅为示例,但是为了便于理解,我们将在下文参考这些大小-一般来说,在第1阶段和第2阶段的表中可以使用任何不同的页大小)。如果第1阶段和第2阶段的地址转换是使用单独的地址转换缓存或利用共享缓存中的单独的第1阶段和第2阶段条目实现的,则对于第1阶段和第2阶段皆可能存在页表条目于地址转换缓存条目之间的一对一的映射。然而,在将第1阶段和第2阶段的地址转换组合为单个组合的缓存条目以将虚拟地址直接转换为物理地址的系统中,第1阶段的页大小比第2阶段的页大小大意味着第2阶段的地址转换的每个4kB页将需要分配不同的缓存条目,但同一2MB块中的所有4kB页可能对应于同一第1阶段页表条目。因此,第1阶段转换的单个页可以在组合的第1阶段/第2阶段缓存的多个条目之间被分段。这意味着当对第1阶段页表条目进行更改时,相应的缓存无效可能需要使多个组合的第1阶段/第2阶段缓存条目无效,其中每个条目对应于2MB页内的不同4kB块。这意味着不能再使用缓存索引模式来执行无效,在该模式下,选定的一组条目基于目标地址以及该组条目中的标记与与目标地址相关联的标记进行比较来标识的,以便确定无效哪些条目。取而代之的是,当多个条目可能会命中目标地址,可能需要缓存遍历模式,在该模式下,至少一部分缓存中的所有条目被访问,而无论地址如何,然后将所访问的条目中的每个标记与目标地址的标记进行比较,以确定该条目是否应该无效。在延迟和功耗方面,这种缓存遍历模式可能比缓存索引模式更昂贵。
图4示出了支持组合的第1阶段/第2阶段地址转换的地址转换缓存的示例。缓存12、16包括用于存储地址转换数据的多个条目40。每个条目包括指定该条目是否包括有效地址转换数据的有效位42、指定虚拟地址中与地址转换数据适用的地址块对应的一部分的虚拟标记44、以及对应的物理地址46。对于非叶转换条目,物理地址46可以指定页表结构中下一级别页表条目的地址,而对于叶条目(例如第3级页表),物理地址可以标识虚拟页地址将被转换为的实际的转换地址。
在该示例中,缓存支持可变的页大小,因此转换大小字段48指定应用对应的地址转换映射的地址块的大小。另外,由于这是将虚拟地址直接映射到物理地址(不经过中间物理地址)的组合的第1阶段/第2阶段缓存,因此条目40还指定无效大小50,该无效大小表示这样的地址组的大小:如果无效目标地址落于该无效地址组内,则条目40中的相应地址转换数据应被无效,即使目标地址不在转换大小48指定的范围内。这例如可以实现:即使当地址在该条目的4KB范围之外时,组合的第1阶段/第2阶段条目也将无效,因为目标地址落在与第1阶段页表条目相关联的同一2MB页(从虚拟标记44到物理地址46的地址转换映射依赖于该页)内。同样,第1阶段和第2阶段页表都可以具有针对地址空间内的不同页可变的页大小。
如图4所示,提供了控制电路50,用于控制对地址转换缓存12、16的访问,并且还用于控制地址转换数据的无效。虚拟地址的一部分由控制电路50用于生成索引,用于选择要在缓存索引查找模式下访问的相应组缓存条目。虚拟地址的哪些位用于形成索引取决于所访问的页表条目的级别,如图5所示。此外,在支持多个不同转换块大小48的实施例中,用于访问给定级别的位的特定子集可以随块大小而不同,因此要访问给定地址的地址转换数据可能需要尝试多种查找模式,每种模式对应于不同的块大小,因此会从虚拟地址中选择不同的索引位。对于给定的查询模式,一旦已生成索引52并一个或多个缓存条目40中的相应集合被访问,控制电路50便会将存储在每个所访问的条目中的标记44与虚拟地址的标记部分(通常是虚拟地址中比用于索引的部分更重要的位)进行比较。如果标记不匹配,则条目40不存储当前目标地址的相对地址转换数据。所比较的标记的大小可以取决于用于地址转换查找的转换大小48和用于无效查找的无效大小50。尽管未在图4中示出,但地址查找也可能取决于存储在每个条目中的其他信息,例如上下文标识符,该上下文标识符标识与地址转换数据相关联的特定转换联系。仅当匹配的缓存条目中的上下文标识符与与地址查找或无效请求相关联的上下文标识符相同时,缓存查找才可以被视为命中。
图4的示例示出了虚拟地索引的、且带标记的地址转换缓存,该地址转换缓存直接进行到物理地址的转换。其他示例可以提供专用的第1阶段地址转换缓存,在这种情况下,转换后的地址字段46可以提供中间物理地址而不是物理地址,或者提供专用的第2阶段地址转换缓存,在这种情况下,缓存可以被索引并由中间物理地址而不是虚拟地址标记。
图6示出了图示响应于无效请求而对地址转换缓存执行无效查找的方法的流程图。在步骤70,控制电路50接收无效请求。例如,无效请求可以由CPU 4之一执行的无效指令来触发。无效请求指定与要被无效的至少一个目标页表条目对应的地址信息。例如,地址信息可以简单地指定要被无效的一个页的起始地址,或者可以对应于地址范围,从而使该范围内的若干页无效。无效请求还指定显式地或隐式地标识要被无效的每个页的大小的页大小信息。
图7示出了页大小信息可被如何表示的不同示例。在示例A中,无效请求指定了页表中要被无效的目标页的单个目标地址80,并且提供了页大小信息的大小提示标志82。大小提示标志指示目标页的页大小是否大于或小于给定阈值。例如,阈值可以是第1阶段或第2阶段页表中具有较大页大小的一者中的页的大小,例如在上面给出的示例中为2MB。例如,当页大小大于或等于阈值时,标志的大小可以为1,如果页大小小于阈值,则标志的大小为0。
图7的示例B示出了另一个示例,其中指定范围的无效请求指定了范围起始地址和范围结束地址,范围起始地址和范围结束地址标识了要使位于其中的页表条目无效的范围的起点和终点。对于排除式指定范围的无效请求(其所针对的是完全位于指定范围内的页),页大小信息可能是隐式的,因为可以确定可能的最大页大小小于或等于范围的大小。类似地,示例C示出了指定范围的无效请求,其中,代替结束地址,指定了范围大小,并且在这种情况下,页大小可被确定为小于或等于范围大小。
可选地,对于包含式指定范围的无效请求,该请求针对的是页表中这样的条目:该条目的对应地址组中存在与该范围重叠的任何部分,页大小可以不仅被隐含在范围大小中,在这种情况下,可以在示例B和C的指定范围的无效请求内附加类似于示例A所示的大小提示标记82,或使用另一种页大小表示形式。
图7的示例D示出了另一示例,其中无效请求指定了要被无效的页的单个目标地址80,并且还指定了无效是与第1阶段还是与第2阶段有关。在一些页大小仅由在第1阶段和第2阶段页表中的一者使用的实施例中,指定无效与第1阶段还是与第2阶段有关的简单的一位标志就足以限制可应用的页大小。应理解,即使对于图7中未示出第1阶段和第2阶段转换的示例A-C,这些请求仍可以指定哪个阶段是转换所涉及的,从而可以执行恰当的无效。
许多其他示例也可以用来表示页大小信息。例如,页大小可以被显式指定为标识页大小的实际数值,也可以被指定为表示用于页大小的多个选项之一的代码。还可以提供位图,其包括根据哪些页大小可被应用于给定的无效所置位或清除的一个或多个位。页大小可以用页大小的上限或下限来表示,因此不需要显式表示出实际页大小。这足以指定允许消除至少某些潜在页大小的某些信息。
返回图6,在步骤72,控制电路50基于页大小信息来选择用于无效请求的无效查找模式。图8示出了选择无效查找模式的一个示例。在步骤90,控制电路根据页大小信息确定页大小是否大于或等于给定阈值。例如,这可以基于以上讨论的大小提示标志82被设置为1还是0进行。如果页大小大于或等于阈值,则在步骤92处选择缓存遍历模式,在这种模式下,无论无效请求的当前目标地址信息如何,都选择给定的缓存条目子集(甚至所有缓存条目40)进行访问,每个选定条目被访问,并将条目40中的标记44或其他信息与无效请求的地址信息或其他参数进行比较,以确定该条目是否命中目标地址。当页大小大于组合的第1阶段/第2阶段地址转换缓存中的阈值时,则存在一个页表条目可能会分散在多个缓存条目中的风险,因此缓存索引模式可能不足以标识需要被无效所有条目。相反,当与无效请求关联的页大小小于阈值时,则这可能指示页大小足够小,使得没有目标页表条目分散在多个缓存条目中的风险,因此在步骤94,选择缓存索引模式。在缓存索引模式中,基于目标地址选择一组条目,并且仅访问所选组(基于索引52选择的)内的条目。如以下针对图9所讨论的,在某些情况下,在步骤94,针对不同块大小的多个缓存索引模式可以被选择。缓存索引模式通常比缓存遍历模式更有效。因此,即使在缓存4驻留有组合的第1阶段和第2阶段条目时,通过考虑页大小信息,也不必对组合的第1阶段/第2阶段转换缓存的所有无效使用缓存遍历模式92,并且当进行仅影响较小的页大小的无效时,可以使用缓存索引模式94。
图8的示例对于组合的第1阶段/第2阶段缓存很有用。没有必要对所有无效使用图8所示的方法。例如,控制电路15可以维护状态寄存器,该状态寄存器可以指定是否已经将任何组合的第1阶段/第2阶段条目分配给了缓存。当仅将单独的第1阶段和第2阶段条目分配给单独的缓存条目40时,可以总是使用缓存索引模式94。然而,一旦直接进行从虚拟地址到物理地址的映射的至少一个组合的第1阶段/第2阶段条目已经被分配给缓存,则控制电路50可以使用图8的方法来将缓存遍历模式的使用限制为:无效影响大于阈值的页大小的情况。
图9示出了选择无效查找模式的第二示例。该方法可以在图6的步骤72处执行(不执行图8的方法),或者可以是图8的步骤94中选择缓存索引模式的一部分。在步骤100,控制电路基于无效请求的页大小信息的确定一组适用块大小。例如,系统可以支持多个不同大小页的页表,例如,4kB、8kB、16kB、32kB等。控制电路可以根据页大小信息来确定缓存中某些块大小的条目是不可能的。例如,如果页大小信息标识出页大小小于2MB,则大于此大小的块大小可能会被忽视(discounted)。类似地,对于排除式指定范围的无效请求,在范围的大小隐含某些块大小是不可能的。通常,如果地址转换缓存同时包括多个大小的条目,则将对所有有效大小执行几次查找。使用页大小信息,可以排除其中的某些不必要的查找,以减少功耗和延迟。因此,在步骤102,选择与在步骤100确定的适用块大小相对应的缓存索引模式的子集来进行无效查找。
因此,返回图6,在步骤74,使用图8和图9中的任何一种方法,对在步骤72确定的(一个或多个)选定查找模式执行一个或多个无效查找操作。基于无效查找操作来标识至少一个目标条目,并且在步骤76,使至少目标条目中的地址转换数据无效。
对于指定范围的无效请求,许多选项可用于控制页表的哪些目标条目受无效影响,继而控制哪些缓存条目40被无效。图10示出了一个示例,该示例图示来自页表不同级别的页表条目与虚拟地址空间的不同区域是如何对应的。例如,与第0级条目所覆盖的范围内的多个第1级页表条目C、D相比,单个第0级页表条目A可以映射到更大的地址空间区域。为简明起见,图10仅示出了对应于第0级页表的一个条目的第1级页表的两个条目,但是应理解,实际上,一个第0级条目可以对应于更多数目的第1级条目。类似地,由一个第1级页表条目C表示的地址数据部分可以映射到多个第2级页表条目F、G,并且一个第2级页表条目F可以映射到多个第3级页表条目K、L、M。不必映射地址空间的所有部分。例如,存在如图10所示的没有定义任何地址映射的一些区域120。如果CPU 4或主机6尝试访问这些地址中的一者,则这可能会触发异常,从而导致操作系统或其他软件分配地址,然后重试该操作。图10中标有星号的条目是叶条目,它们提供实际地址转换映射。应注意,叶条目处于不同级别是可能的。例如,图10中的第2级页表条目G提供了某个地址块的实际地址映射,而第3级页表条目提供了地址空间中其他部分的叶条目。例如,如果地址空间中与第2级页大小相对应的某个块都需要相同的地址映射,则使用第2级条目提供叶条目而不是分配多个相同第3级条目可以更有效。其他未标记星号的条目是中间或非叶条目,它们不提供地址映射,而是提供下一级页表条目的地址。
如图10所示,不同的页表条目可以对应于不同大小的地址块。例如,第3级条目P对应于4kB,而第3级条目Q对应于16kB。这就是为什么如图4所示在缓存中指定转换大小可能有用,以及为什么可能要求具有使用与不同可能大小的转换范围(其可以映射到给定虚拟地址)相对应的不同大小的索引和标记部分的许多不同的无效查找模式的原因。
对于指定范围的无效,有许多选项可用于标识哪个条目应受范围影响。例如,图10示出了由指定范围非无效请求指定的特定无效范围的示例。不同类型的无效请求可以针对不同的页表条目组,例如:
·排除式指定范围的无效请求只能针对完全位于指定范围内的条目,而不能针对仅部分位于指定范围内的任何条目;
·包含式指定范围的无效请求可能会针对部分或全部位于该范围内的条目,因此,即使那些仅部分位于该范围内的条目仍会成为无效的目标;
·叶无效请求可能仅针对叶条目,而不会影响页表的中间条目;
·叶和中间无效可能影响叶和非叶(中间)条目两者。
可以定义这些选项的不同组合。例如,在图10中,排除所示范围内的叶无效将针对条目N、O、P、Q,它们是完全在指定范围内的叶条目,但条目R不会被无效,因为它仅部分位于该范围内,并且条目H也不会被无效,因为它是中间条目,而不是叶条目。而包含式范围无效会针对例如条目R。
可以提供的一种特定类型的无效是排除式叶和中间无效,其针对的是完全位于指定范围内的那些页表条目,并且可以是叶条目或非叶条目。例如,如果使用图10所示的范围来执行排除式叶和中间无效操作,则这将针对全部位于无效范围内的、并且是叶或非叶条目的条目H、N、O、P、Q。这样的无效对于使页表树的整个分支能够在一次操作中无效是非常有用的,同时完整地保留较高级别的树,因为它们至少部分地延伸到所指定的无效范围之外。
总而言之,上面讨论的技术使得对于从地址转换缓存(例如,转换后备缓冲区(TLB))执行的无效的性能得以提高。在组合的阶段1+2TLB中,第1阶段的转换可能大于第2阶段的转换,从而导致例如一个页分散在许多TLB位置中。通常希望通过虚拟地址执行单个无效指令来使单个TLB条目无效,但是在这种情况下,它需要使许多条目无效。当TLB中存在这样的条目时,缓存可以切换到这样的模式:其中每个无效操作都必须遍历整个TLB内容。这非常慢,尤其是对于大型TLB而言。如上所讨论的,软件可以指示将针对无效请求而被无效的页的大小,并且缓存硬件可以使用该信息来避免针对小条目而遍历完整的TLB,并且仅在大小至少为与TLB中分段条目的第1阶段块大小(例如,第1阶段中的块为2MB,但映射到第2阶段中的4KB页)一样大的情况下对TLB进行遍历,则只有2MB或更大的无效才会导致遍历完整的TLB;正常情况下,其他无效可以使用缓存索引查找模式而作为“快速”无效进行。
对页大小的知晓还使得在允许同时存储许多不同的块和页大小的实施方式中,可以优化TLB中的查找次数。如果TLB同时包括多个大小的条目,则它将执行几次查找。命中后正常查找可能会停止,而无效则需要对所有有效大小的查找。因此,减少搜索空间可加快无效的进行。
范围被指定后,可以智能地无效中间遍历缓存。范围无效可以被定义为“叶”或“非叶”,其中非叶无效必须使L0、L1和L2遍历缓存条目(若存在)无效,而叶只能针对最终级别L3条目。许多转换方案的碎片性质(尤其是被SMMU所看到的),导致实现了多级遍历缓存。因此,可以通过范围来指定无效操作,并且仅当范围足够大以包括该级别中的条目时,才可以使每个遍历缓存级别无效。
有时,某一范围的块将无效,例如页粒度为4KB的16个2MB块的范围。能够指定要无效的页范围(而不是发出一系列命令)以最小化与TLB的通信时间,这是很有用的。使用无效全部命令的过度无效是不被期望的,因为这会影响TLB或其他TLB的实时用户。按范围操作进行的无效被提供,该无效还具有最小页大小参数,以避免需要查看低于该大小的缓存条目。例如。在前面的示例中,可以查找16个2MB块条目,而不必查找所有可能的4KB条目,从而节省了TLB带宽和时间。
尽管本文已经参照附图详细描述了本发明的说明性实施例,但是应理解,本发明不限于那些精确的实施例,并且本领域的技术人员可以在其中进行各种改变和修改,而在不脱离由所附权利要求书限定的本发明的范围和精神。
Claims (17)
1.一种设备,包括:
地址转换缓存,其包括多个缓存条目,每个缓存条目用于存储地址转换数据,所述地址转换数据依赖于在存储器系统中存储的一个或多个页表的一个或多个页表条目;以及
控制电路,其响应于指定与至少一个目标页表条目相对应的地址信息的无效请求,来执行无效查找操作以标识所述地址转换缓存的至少一个目标缓存条目,并且触发对在所述至少一个目标缓存条目中存储的地址转换数据的无效,其中对于所述至少一个目标缓存条目,地址转换数据是依赖于所述至少一个目标页表条目的;
其中,所述控制电路被配置为:根据指示所述至少一个目标页表条目的页大小的页大小信息,来选择多个无效查找模式中的哪一者用于进行无效查找操作,所述多个无效查找模式对应于根据所述地址信息来标识所述至少一个目标缓存条目的不同方式。
2.根据权利要求1所述的设备,其中,所述无效查找模式包括:
缓存索引模式,对于所述缓存索引模式,无效查找操作包括:索引所述地址转换缓存中基于所述地址信息选择的至少一个选定缓存条目;并且确定每个选定缓存条目是否为所述至少一个目标缓存条目之一;以及
缓存遍历模式,对于所述缓存遍历模式,无效查找操作包括:访问所述地址转换缓存的缓存条目中独立于所述地址信息而选择的至少一个子集;并且确定每个访问的缓存条目是否为所述至少一个目标缓存条目之一。
3.根据权利要求2所述的设备,其中,所述控制电路被配置为:当所述页大小信息指示所述页大小小于阈值大小时,选择所述缓存索引模式;并且当所述页大小信息指示所述页大小大于所述阈值大小时,选择所述缓存遍历模式。
4.根据前述权利要求中任一项所述的设备,包括:处理电路,其配置第1阶段页表用于控制第一地址到第二地址的转换,并且配置第2阶段页表用于控制所述第二地址到第三地址的转换;
其中,所述地址转换缓存被配置为存储组合的地址转换数据,所述组合的地址转换数据用于控制所述第一地址直接到所述第三地址的转换。
5.根据前述权利要求中任一项所述的设备,其中,每个缓存条目被配置为存储地址转换数据,所述地址转换数据用于转换具有所述地址转换缓存所支持的多个不同块大小之一的地址块。
6.根据权利要求5所述的设备,其中,所述多个无效查找模式包括多个缓存索引模式,所述多个缓存索引模式用于根据由所述无效请求指定的所述地址信息来选择要访问的缓存条目,各个索引模式对应于不同块大小;
其中,响应于所述无效请求,所述控制电路被配置为:根据所述页大小信息来选择所述多个缓存索引模式的子集,并且触发与所述多个缓存索引模式的选定子集相对应的一个或多个无效查找操作。
7.根据前述权利要求中任一项所述的设备,其中,所述页大小信息包括以下各项中的至少一者:
对所述页大小的显式指示;
所述页大小的上限;
所述页大小的下限;
对所述页大小是否小于阈值大小的指示;
对所述页大小是否大于阈值大小的指示;
由所述地址信息指定的地址转换范围的起始和结束地址;
标识从多个页大小中选择的可适用页大小的子集的信息;以及
对地址转换的多个阶段中与所述无效请求相关联的一个阶段的指示。
8.根据前述权利要求中任一项所述的设备,其中,所述页大小信息是由所述无效请求指定的。
9.根据前述权利要求中任一项所述的设备,其中,所述无效请求包括指定地址的无效请求,对于所述指定地址的无效请求,地址信息指定了用于标识所述至少一个目标页表条目的单个地址。
10.根据权利要求1至8中任一项所述的设备,其中,所述无效请求包括指定范围的无效请求,对于所述指定范围的无效请求,地址信息指定了地址的无效范围,并且所述至少一个目标页表条目包括与至少部分地位于所述无效范围内的地址组相对应的至少一个页表条目。
11.根据权利要求10所述的设备,其中,响应于包含式指定范围的无效请求,所述至少一个目标页表条目包括与任何部分在所述无效范围内的地址组相对应的一个或多个页表条目。
12.根据权利要求10和11中任一项所述的设备,其中,响应于排除式指定范围的无效请求,所述至少一个目标页表条目包括与完全在所述无效范围内的地址组相对应的一个或多个页表条目。
13.根据任一前述权利要求所述的设备,其中,每个页表条目包括以下各项中的一者:
中间页表条目,其指定下一级页表条目的地址;以及
叶页表条目,其指定地址转换映射。
14.根据权利要求12所述的设备,其中,每个页表条目包括以下各项中的一者:
中间页表条目,其指定下一级页表条目的地址;以及
叶页表条目,其指定地址转换映射;并且
响应于叶页表条目和中间页表条目的排除式指定范围的无效请求,所述至少一个目标页表条目包括给定页表的任何叶页表条目和所述给定页表中与完全在所述无效范围内的地址组相对应的的任何中间页表条目。
15.根据权利要求14所述的设备,其中,响应于所述叶页表条目和中间页表条目的排除式指定范围的无效请求,所述至少一个目标页表条目排除所述给定页表中与至少部分在所述无效范围之外的地址组相对应的中间页表条目。
16.一种用于使来自包括多个缓存条目的地址转换缓存的地址转换数据无效的方法,每个缓存条目用于存储地址转换数据,所述地址转换数据依赖于在存储器系统中存储的一个或多个页表中的一个或多个页表条目,所述方法包括:
响应于指定与至少一个目标页表条目相对应的地址信息的无效请求:
执行无效查找操作以标识所述地址转换缓存的至少一个目标缓存条目,对于所述至少一个目标缓存条目,地址转换数据是依赖于所述至少一个目标页表条目的,其中,多个无效查找模式中的哪一者被用于进行无效查找操作是根据指示所述至少一个目标页表条目的页大小的页大小信息来选择的,所述多个无效查找模式对应于根据所述地址信息来标识所述至少一个目标缓存条目的不同方式;并且
触发对在所述至少一个目标条目中存储的地址转换数据的无效。
17.一种设备,包括:
地址转换缓存,其包括多个缓存条目,每个缓存条目用于存储地址转换数据,所述地址转换数据依赖于在存储器系统中存储的一个或多个页表的一个或多个页表条目,
其中,每个页表条目包括以下各项中的至少一者:
中间页表条目,其指定下一级页表条目的地址;以及
叶页表条目,其指定地址转换映射;以及
控制电路,响应于标识指示地址的无效范围的范围信息的叶页表条目和中间页表条目的排除式指定范围的无效请求,来触发对所述地址转换缓存的至少一个目标缓存条目的无效,对于所述至少一个目标缓存条目,地址转换数据是依赖于至少一个目标页表条目的,所述至少一个目标页表条目包括给定页表的任何叶页表条目和所述给定页表中与完全在所述无效范围内的地址组相对应的任何中间页表条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1712251.6 | 2017-07-31 | ||
GB1712251.6A GB2565069B (en) | 2017-07-31 | 2017-07-31 | Address translation cache |
PCT/GB2018/051314 WO2019025748A1 (en) | 2017-07-31 | 2018-05-15 | ADDRESS TRANSLATION CACHE |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110998549A CN110998549A (zh) | 2020-04-10 |
CN110998549B true CN110998549B (zh) | 2023-11-17 |
Family
ID=59778735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880049493.4A Active CN110998549B (zh) | 2017-07-31 | 2018-05-15 | 地址转换缓存 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11853226B2 (zh) |
EP (1) | EP3662378B1 (zh) |
JP (1) | JP7133615B2 (zh) |
KR (1) | KR102663356B1 (zh) |
CN (1) | CN110998549B (zh) |
GB (1) | GB2565069B (zh) |
WO (1) | WO2019025748A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11379592B2 (en) * | 2018-12-20 | 2022-07-05 | Intel Corporation | Write-back invalidate by key identifier |
KR20200116372A (ko) * | 2019-04-01 | 2020-10-12 | 에스케이하이닉스 주식회사 | 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법 |
US10817433B2 (en) * | 2019-06-28 | 2020-10-27 | Intel Corporation | Page tables for granular allocation of memory pages |
GB2586984B (en) * | 2019-09-10 | 2021-12-29 | Advanced Risc Mach Ltd | Translation lookaside buffer invalidation |
US11200175B2 (en) * | 2020-03-20 | 2021-12-14 | Arm Limited | Memory accessor invailidation |
US11675710B2 (en) * | 2020-09-09 | 2023-06-13 | Apple Inc. | Limiting translation lookaside buffer searches using active page size |
US11615033B2 (en) | 2020-09-09 | 2023-03-28 | Apple Inc. | Reducing translation lookaside buffer searches for splintered pages |
GB2603489B (en) * | 2021-02-04 | 2023-02-22 | Advanced Risc Mach Ltd | A data processing apparatus and method for address translation |
CN115237585A (zh) * | 2021-04-23 | 2022-10-25 | 超聚变数字技术有限公司 | 一种内存控制器、数据读取方法以及内存系统 |
CN113297105B (zh) * | 2021-05-08 | 2024-01-09 | 阿里巴巴新加坡控股有限公司 | 一种转换地址的缓存处理方法及装置 |
US11853231B2 (en) | 2021-06-24 | 2023-12-26 | Ati Technologies Ulc | Transmission of address translation type packets |
US20230169013A1 (en) * | 2021-12-01 | 2023-06-01 | Samsung Electronics Co., Ltd. | Address translation cache and system including the same |
US12066949B2 (en) | 2021-12-03 | 2024-08-20 | Micron Technology, Inc. | Address translation based on page identifier and queue identifier |
CN114281720B (zh) * | 2021-12-14 | 2022-09-02 | 海光信息技术股份有限公司 | 处理器、用于处理器的地址翻译方法、电子设备 |
US11853228B1 (en) * | 2022-06-10 | 2023-12-26 | Arm Limited | Partial-address-translation-invalidation request |
US20240143510A1 (en) * | 2022-11-01 | 2024-05-02 | Arm Limited | Apparatus and method for cache invalidation |
US20240193083A1 (en) * | 2022-12-09 | 2024-06-13 | Advanced Micro Devices, Inc. | Range-based cache flushing |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105980994A (zh) * | 2014-02-21 | 2016-09-28 | Arm 有限公司 | 已存地址转换的无效 |
US9594680B1 (en) * | 2015-12-02 | 2017-03-14 | International Business Machines Corporation | Identifying stale entries in address translation cache |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06139149A (ja) | 1992-10-29 | 1994-05-20 | Mitsubishi Electric Corp | 多重仮想空間制御装置 |
US5764944A (en) * | 1995-09-08 | 1998-06-09 | United Microelectronics Corp. | Method and apparatus for TLB invalidation mechanism for protective page fault |
US6493812B1 (en) * | 1999-12-17 | 2002-12-10 | Hewlett-Packard Company | Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache |
US9454490B2 (en) * | 2003-05-12 | 2016-09-27 | International Business Machines Corporation | Invalidating a range of two or more translation table entries and instruction therefore |
US20050080934A1 (en) | 2003-09-30 | 2005-04-14 | Cota-Robles Erik C. | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US7116569B2 (en) * | 2005-02-11 | 2006-10-03 | International Business Machines Corporation | Method and apparatus for selecting operating characteristics of a content addressable memory by using a compare mask |
US7389400B2 (en) * | 2005-12-15 | 2008-06-17 | International Business Machines Corporation | Apparatus and method for selectively invalidating entries in an address translation cache |
US10380030B2 (en) * | 2012-12-05 | 2019-08-13 | Arm Limited | Caching of virtual to physical address translations |
KR101502827B1 (ko) * | 2014-03-20 | 2015-03-17 | 주식회사 에이디칩스 | 컴퓨터 시스템에서의 캐시 무효화 방법 |
US20160140042A1 (en) * | 2014-11-14 | 2016-05-19 | Cavium, Inc. | Instruction cache translation management |
GB2536201B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Handling address translation requests |
US9836410B2 (en) | 2015-04-15 | 2017-12-05 | Qualcomm Incorporated | Burst translation look-aside buffer |
US9898418B2 (en) | 2015-05-21 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Processor including single invalidate page instruction |
US10599569B2 (en) * | 2016-06-23 | 2020-03-24 | International Business Machines Corporation | Maintaining consistency between address translations in a data processing system |
-
2017
- 2017-07-31 GB GB1712251.6A patent/GB2565069B/en active Active
-
2018
- 2018-05-15 US US16/624,430 patent/US11853226B2/en active Active
- 2018-05-15 CN CN201880049493.4A patent/CN110998549B/zh active Active
- 2018-05-15 EP EP18727368.5A patent/EP3662378B1/en active Active
- 2018-05-15 JP JP2020503733A patent/JP7133615B2/ja active Active
- 2018-05-15 WO PCT/GB2018/051314 patent/WO2019025748A1/en unknown
- 2018-05-15 KR KR1020207004944A patent/KR102663356B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105980994A (zh) * | 2014-02-21 | 2016-09-28 | Arm 有限公司 | 已存地址转换的无效 |
US9594680B1 (en) * | 2015-12-02 | 2017-03-14 | International Business Machines Corporation | Identifying stale entries in address translation cache |
Also Published As
Publication number | Publication date |
---|---|
KR20200035061A (ko) | 2020-04-01 |
WO2019025748A1 (en) | 2019-02-07 |
US11853226B2 (en) | 2023-12-26 |
EP3662378A1 (en) | 2020-06-10 |
JP7133615B2 (ja) | 2022-09-08 |
CN110998549A (zh) | 2020-04-10 |
KR102663356B1 (ko) | 2024-05-07 |
JP2020529656A (ja) | 2020-10-08 |
GB201712251D0 (en) | 2017-09-13 |
GB2565069A (en) | 2019-02-06 |
GB2565069B (en) | 2021-01-06 |
US20200218665A1 (en) | 2020-07-09 |
EP3662378B1 (en) | 2022-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998549B (zh) | 地址转换缓存 | |
US10042778B2 (en) | Collapsed address translation with multiple page sizes | |
US9208103B2 (en) | Translation bypass in multi-stage address translation | |
US9639476B2 (en) | Merged TLB structure for multiple sequential address translations | |
US10592424B2 (en) | Range-based memory system | |
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 | |
US8966219B2 (en) | Address translation through an intermediate address space | |
US6012132A (en) | Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table | |
US9268694B2 (en) | Maintenance of cache and tags in a translation lookaside buffer | |
CN108459975B (zh) | 用于有效使用地址转换缓存的技术 | |
US20160140042A1 (en) | Instruction cache translation management | |
EP4058894B1 (en) | Process dedicated in-memory translation lookaside buffers (tlbs) (mtlbs) for augmenting memory management unit (mmu) tlb for translating virtual addresses (vas) to physical addresses (pas) in a processor-based system | |
CN111858404A (zh) | 缓存数据定位系统 | |
CN114365102A (zh) | 转译后备缓冲器失效 | |
CN117349197A (zh) | 内存管理单元和内存访问方法 | |
WO2023064609A1 (en) | Translation tagging for address translation caching |
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 |