CN109426624B - 用于高效利用地址转换缓存的装置和方法 - Google Patents
用于高效利用地址转换缓存的装置和方法 Download PDFInfo
- Publication number
- CN109426624B CN109426624B CN201810935298.3A CN201810935298A CN109426624B CN 109426624 B CN109426624 B CN 109426624B CN 201810935298 A CN201810935298 A CN 201810935298A CN 109426624 B CN109426624 B CN 109426624B
- Authority
- CN
- China
- Prior art keywords
- address translation
- hit
- merged
- translation data
- entry
- 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 332
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000013598 vector Substances 0.000 claims description 117
- 230000004044 response Effects 0.000 claims description 12
- 230000009467 reduction Effects 0.000 claims description 7
- 239000000872 buffer Substances 0.000 claims description 4
- 238000005201 scrubbing Methods 0.000 claims description 2
- 230000036962 time dependent Effects 0.000 claims 1
- 230000014616 translation Effects 0.000 description 259
- 230000008569 process Effects 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 16
- 238000001514 detection method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000002699 waste material Substances 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/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing 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]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/1021—Hit rate 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/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本公开涉及用于高效利用地址转换缓存的装置和方法。提供了一种用于高效使用地址转换缓存的装置和方法。该装置具有地址转换缓存,其具有多个条目,其中,每个条目存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据。每个条目标识存储在其中的地址转换数据是合并地址转换数据还是非合并地址转换数据,并还标识存储器系统内与地址转换数据相关联的页面的页面大小。控制电路响应于虚拟地址来在地址转换缓存内执行查找操作以针对地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中。
Description
技术领域
本公开涉及高效利用地址转换缓存。
背景技术
已知提供结合诸如转换后备缓冲器(TLB)之类的地址转换缓存以存储与虚拟地址到物理地址的转换有关的地址转换数据的数据处理系统。地址转换数据还可以提供关于正在进行的存储器访问的属性数据,例如,许可数据和存储器属性。尽管提供地址转换缓存对于通过减少所需的慢页面表遍历(page table walk)的数量来提高性能是有用的,但是地址转换缓存本身消耗电路资源。
已知在其中多个相邻描述符满足页面对齐标准的情况下创建合并TLB条目。然而,尽管创建合并条目可以允许实现对地址转换缓存资源的更高效的使用,但仍期望高效地管理对这种合并条目进行的处理,以便试图减少可能由于将合并地址转换数据分配到地址转换缓存中而引起的任何性能影响。
发明内容
在一个示例配置中,提供了一种装置,包括:地址转换缓存,具有多个条目,每个条目存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据,每个条目被布置为标识存储在其中的地址转换数据是合并地址转换数据还是非合并地址转换数据,并标识存储器系统内与地址转换数据相关联的页面的页面大小;以及控制电路,响应于虚拟地址来在地址转换缓存内执行查找操作以针对地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中;该控制电路被布置为至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,该合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置;该控制电路还被布置为在查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下参考合并多命中指示以确定该多个命中是否产生自地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。
在另一示例配置中,提供了一种管理地址转换缓存内的地址转换数据的方法,该地址转换缓存具有多个条目,每个条目存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据,并且每个条目标识存储在其中的地址转换数据是合并地址转换数据还是非合并地址转换数据,并标识存储器系统内与地址转换数据相关联的页面的页面大小,该方法包括:响应于虚拟地址来在地址转换缓存内执行查找操作以针对地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中;至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,该合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置;并且在查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下参考合并多命中指示以确定该多个命中是否产生自地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。
在又一示例配置中,提供了一种装置,包括:地址转换装置,用于提供多个条目,每个条目用于存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据,每个条目用于标识存储在其中的地址转换数据是合并地址转换数据还是非合并地址转换数据,并用于标识存储器系统内与地址转换数据相关联的页面的页面大小;以及控制装置,用于响应于虚拟地址来在地址转换装置内执行查找操作以针对地址转换装置所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中;该控制装置用于至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,该合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置;该控制装置还用于在查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下参考合并多命中指示以确定该多个命中是否产生自地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。
附图说明
将参考附图中所示的实施例仅通过示例的方式进一步描述本技术,在附图中:
图1示出了根据一个实施例的包含地址转换缓存的数据处理系统;
图2是示意性地示出虚拟到物理地址转换过程的图示;
图3示意性地示出了包括单级地址转换过程的多级页面表遍历;
图4是根据一个实施例的更详细地示出图1的地址转换电路的框图;
图5示出了根据一个实施例的可以在图4所示的1级TLB的每个条目内提供的字段;
图6是示出根据一个实施例的将地址转换数据分配到1级TLB的条目中所采取的步骤的流程图;
图7是示意性地示出根据一个实施例的参考1级TLB在从处理器核心接收到虚拟地址时所执行的操作的图示;
图8示意性地示出了在一个实施例中可以如何使用合并多命中指示来认定多命中信号以区分软件引发的多次命中和由于使用合并地址转换数据而导致的硬件引发的多次命中;
图9A和图9B是示出根据一个实施例的关于1级TLB在从处理器核心接收到虚拟地址时所执行的步骤的流程图;以及
图10是示出根据一个实施例的可以采用的清理和重试功能的流程图。
具体实施方式
在参考附图讨论实施例之前,提供实施例的以下描述。
在一个实施例中,提供了一种装置,包括具有多个条目的地址转换缓存,其中,每个条目可以用于存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据。地址转换数据可以根据在页面表遍历过程期间从页面表取回的描述符来确定。描述符将与存储器中的特定页面大小有关,并且因此根据该描述符确定的地址转换数据将与存储器中的特定页面大小有关。
通过考虑页面表内的多个相邻描述符,可以检测是否满足页面对齐标准,这些页面对齐标准将允许根据这些描述符来生成合并地址转换数据。通过适当地选择多个相邻描述符,由这些描述符标识的虚拟页面编号可以与对齐到较大页面大小的连续页面相关。然后可以确定被分配给那些连续虚拟页面(由描述符标识)的物理页面是否也是连续的,并且如果是连续的,则然后可以根据该多个相邻描述符来创建合并地址转换数据,该合并地址转换数据然后与较大页面大小有关。例如,如果来自四个相邻描述符的信息可以以这种方式组合,则合并地址转换数据可以与大于可根据仅单个描述符生成的地址转换数据四倍的物理页面大小有关。这可以提供效率节省,因为地址转换缓存中的一个条目可以用于存储合并地址转换数据,而不需要使用多个条目来存储单独的非合并地址转换数据。
根据所描述的实施例,地址转换缓存中的每个条目可以被布置为标识存储在其中的地址转换数据是合并地址转换数据还是非合并地址转换数据,并标识存储器系统内与地址转换数据相关联的页面的页面大小。
该装置然后提供控制电路,该控制电路响应于虚拟地址来在地址转换缓存内执行查找操作以针对地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中。通常,针对任何所提供的虚拟地址,预期最多将只有单个条目会在地址转换缓存中命中,因为多个命中的存在将指示由于包括重叠页面的错误映射转换而导致的软件引发的多个命中。然而,在决定将合并地址转换数据分配到地址转换缓存中时,地址转换缓存可能已经存储了与已经被合并的一个或多个页面相关的地址转换数据的非合并版本。尽管在分配时可以执行额外的查找以检测这种情况并移除任何这样的非合并版本,但这可能导致显著的性能影响,因为在为了该目的而执行查找的同时,不能执行针对由相关联的处理电路提供的新虚拟地址进行的查找。此外,这种方法可能涉及向地址转换缓存添加新的查找端口,这可能显著增加功耗(兼静态和动态)。
因此,在本文描述的实施例中,允许地址转换缓存将合并地址转换数据分配到其条目中的一者中,而在该时刻,不执行任何检查以确定是否存在存储针对已经被合并的一个或多个页面的非合并地址转换数据的任何条目。结果是,在检测到多个命中的情况下,尽管这可能仍然是由于软件引发的问题,但也可能是由于合并地址转换数据的合法使用所导致的。在所描述的实施例中,提供了一种用于高效且可靠地区分多个命中的这两种不同来源的机制。
具体地,控制电路被布置为至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,该合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置。在许多情况下,已经发现可以生成该合并多命中指示而无需等待查找操作完成。与设置状态相关联的逻辑值可以根据实施例而变化,但在一个实施例中是逻辑值1。
控制电路然后还被布置为在查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下参考合并多命中指示以确定该多个命中是否产生自地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。这使得能够在检测到多个命中时调整所采取的动作,以考虑多个命中的原因是可能软件引发的问题(这种情况例如要求采取例外),还是由于使用合并地址转换数据而导致的硬件引发的多命中情况(可以被容易解决这种情况而不需要采取例外)。
在一个实施例中,地址转换缓存支持的页面大小包括不能与合并地址转换数据相关联的一个或多个页面大小,并且控制电路可以被布置为根据命中指示的子集来确定合并多命中指示,而无需等待在查找操作期间生成所述子集之外的至少一个其余的命中指示,其中,每个其余的命中指示与不能与合并地址转换数据相关联的页面大小有关。具体地,通常用于执行查找操作以便针对每个可能的页面大小生成命中指示的机制使得各个命中指示变为可用的时间是取决于页面大小的。由于控制电路仅需要使用命中指示的子集来生成合并多命中指示,因此控制电路可以发起该合并多命中指示的生成而无需等待由查找操作生成的所有命中指示变为可用。在许多实施例中,已经发现这使得在查找操作完成时合并多命中指示是可用的,并且因此,如果控制电路确实确定在查找操作完成之后已经发生了多个命中,该合并多命中指示则立即可用于控制电路。
由控制电路用于生成合并多命中指示的命中指示的子集可以根据实施例而变化,但在一个实施例中,命中指示的该子集包括针对能够与合并地址转换数据相关联的页面大小的每个命中指示,以及针对小于能够与合并地址转换数据相关联的任何页面大小的页面大小的至少一个命中指示。具体地,至少地址转换缓存所支持的最小页面大小通常可以是不能与合并地址转换数据相关联的页面大小,因为与合并地址转换数据相关联的最小页面大小将是该支持的较小页面大小的倍数。在这种情况下,小于与合并地址转换数据相关联的页面大小、但与可以通过生成合并地址转换数据而被合并到较大页面大小中的页面大小有关的任何这种页面大小,在一个实施例中将由控制电路在生成合并多命中指示时进行检查。
在一个实施例中,其余的命中指示与大于能够与合并地址转换数据相关联的任何页面大小的页面大小有关。在执行查找操作时,针对较大页面大小生成的命中指示可能比针对较小页面大小生成的命中指示花费更长的时间来生成,并且因此在该场景中,当所支持的页面大小包括大于可以与合并地址转换数据相关联的任何页面大小的一个或多个页面大小时,这使得控制电路能够发起生成合并多命中指示,而无需等待在查找操作期间生成针对那些较大页面大小的命中指示。
存在可以由控制电路用来执行查找操作的许多技术,但在一个实施例中,控制电路包括用于执行查找操作的求和-寻址-比较(Sum-Addressed-Compare)电路,以使得每个命中指示在取决于与该命中指示相关联的页面大小的时刻变为可用。通常通过将两个源值相加来计算所计算的虚拟地址。但是,不是将这两个源值相加以生成虚拟地址并然后将所计算的虚拟地址与地址转换缓存的每个条目中的相应虚拟地址进行比较,求和-寻址-比较方法提供匹配虚拟地址的更快检测,而无需将两个源值相加以生成虚拟地址的加法器的完全进位传播。相反,假设所计算的虚拟地址与存储在地址转换缓存的条目中的虚拟地址相同,然后如果比较是正确的,则可以确定关于每个位所需的进位输入(carry-in)和进位输出(carry-out)值的信息。然后,仅需要将一个位的进位输入与下面的该位的进位输出进行比较以便检测是否存在匹配。适当的求和-寻址-比较机制的更多细节在J.Cortadella等人的文章“Evaluation of A+B=K Conditions Without Carry Propagation(无进位传播的A+B=K条件的评估)”,IEEE Transactions on Computers,第41卷,第11期,1992年11月,第1484至1488页中进行了描述。
在采用求和-寻址-比较机制来执行查找操作时,针对较小页面大小的命中指示可以比针对较大页面大小的命中指示更早地生成,并且因此,当存在大于能够与合并地址转换数据相关联的任何页面大小的至少一个页面大小时,这表示控制电路可以在查找操作完成之前发起生成合并多命中指示。
命中指示可以采用多种形式,但在一个实施例中,每个命中指示包括命中向量,该命中向量在逐个条目的基础上标识是否已经针对相关联页面大小的地址转换数据检测到了命中。
在一个这样的实施例中,控制电路可以被布置为通过籍由逻辑地组合针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量来生成由标识哪些条目包含合并地址转换数据的信息进行认定的合并命中向量,并且通过逻辑地组合针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量来生成由标识哪些条目包含非合并地址转换数据的信息进行认定的非合并命中向量,以便生成从其导出非合并命中向量的输出向量,来确定合并多命中指示。然后对合并命中向量和非合并命中向量执行归约和组合运算以生成合并多命中指示。
这种方法提供了用于检测由于硬件合并而导致的重复条目的精确机制,使得能够清楚地划分硬件合并引发的多个命中和由于包括重叠页面的错误映射转换而导致的软件引发的多个命中。通过这种方法,两个或更多个非合并页面中的任何多个命中将不会导致设置合并多命中指示。类似地,如果存在两个或多个合并页面中的多个命中,则这将不会导致设置合并多命中指示。在一个实施例中,这是所要求的行为,因为合并地址转换数据被限制为根据非合并地址转换数据来生成。因此,禁止多级合并,并且因此,两个合并条目之间的任何多个命中将指示软件引发的问题。
根据输出向量来生成非合并命中向量的方式可以根据实施例而变化,但在一个实施例中,控制电路被配置为通过逻辑地组合输出向量和与小于能够与合并地址转换数据相关联的任何页面大小的页面大小相关联的至少一个命中指示的命中向量来生成非合并命中向量。
存在可以提供标识哪些条目包含合并地址转换数据的信息的许多方法。然而,在一个实施例中,该信息包括在逐个条目的基础上标识该条目是否存储合并地址转换数据的合并条目向量。
在一个这样的实施例中,控制电路可以被布置为通过使用针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量作为输入执行OR运算来生成合并命中向量,以便生成部分结果向量,并然后使用部分结果向量和合并条目向量作为输入执行AND运算,以便生成合并命中向量。这提供了用于生成合并命中向量的简单且高效的机制。
类似地,在一个实施例中,控制电路可以被布置为通过使用针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量作为输入执行OR运算来生成非合并命中向量,以便生成部分结果向量,并然后使用部分结果向量和合并条目向量的反相版本作为输入执行AND运算,以便生成从其导出非合并命中向量的输出向量。同样,这提供了用于生成非合并命中向量的简单且高效的机制。
存在其中可以执行归约和组合运算的多种方式。然而,在一个实施例中,控制电路被布置为通过OR归约合并命中向量以生成第一中间结果、OR归约非合并命中向量以生成第二中间结果、并然后使用第一和第二中间结果作为输入执行AND运算来执行归约和组合运算,以便生成合并多命中指示。这提供了用于生成合并多命中指示的特别简单和高效的机制。
如前所述,一旦已经生成了合并多命中指示,如果控制电路在查找操作完成之后确定已经检测到多个命中,则控制电路可以参考该合并多命中指示。具体地,在一个实施例中,控制电路被布置为在确定已经通过查找操作检测到多个命中并且未设置合并多命中指示时发布指示发生软件引发的多命中事件的信号。具体地,如果未设置合并多命中指示,则这指示多个命中的任何发生不是由于硬件合并导致的,因此应当被视为软件引发的问题。在这种情况下由控制电路发布的信号可以采用多种形式,但在一个实施例中是中止信号。在这样的实施例中,当驱动中止信号时,处理器核心将刷新流水线的内容并将执行重定向到中止处理程序(abort handler)。中止处理程序是由程序员(例如,操作系统开发者)编写的软件,其被布置为采取必要的步骤来纠正导致中止的条件。在当前情况下,这些步骤将涉及校正存储器中的页面表,以使得将来不会发生多重命中。
相反,在一个实施例中,控制电路可以被布置为在确定已经通过查找操作检测到多个命中并且设置了合并多命中指示时,向提供虚拟地址的源发布重试请求,并发起清理操作以无效地址转换缓存中的至少一个条目,以使得当源重新发布虚拟地址时,然后仅会在地址转换缓存的一个条目中检测到命中。在一个示例中,源将是发布虚拟地址以触发执行查找操作的相关联处理器核心。在存在由于使用合并地址转换数据而检测到硬件引发的多个命中的情况下,控制电路可以被布置为拒绝来自源的请求而不是生成任何命中指示,以便使得源重试请求。通常发现,当源重试请求时,可以完成所需的清理操作,以便在重新发布请求时,仅会在地址转换缓存的一个条目中检测到命中。因此,这可以提供显著更高性能和能量高效的解决方案,而不是在将合并地址转换数据分配到地址转换缓存中时寻求解决硬件引发的多个命中的可能性。
清理操作可以采用各种形式,但在一个实施例中,使得至少存储在查找操作期间导致命中的非合并地址转换数据的条目无效。
在替代方法中,清理操作包括使在查找操作期间导致命中的每个条目无效,并向存储器管理单元发布请求以使得合并地址转换数据被提供以分配到地址转换缓存的条目中。在一些实施例中,仅无效导致命中的每个条目而不是检测哪个条目与非合并地址转换数据相关并仅无效该条目可以更简单。此外,已经发现存储器管理单元通常可以通过在一个时间段内提供所需的合并地址转换数据来响应请求,该时间段使得能够在源就绪以重试访问请求之前将数据分配到地址转换缓存的条目中,从而使其成为高性能解决方案。
可以以各种方式生成要分配到地址转换缓存中的合并地址转换数据。然而,在一个实施例中,该装置包括合并电路,用于根据多个页面表描述符生成用于存储在地址转换缓存中的所述合并地址转换数据,该合并地址转换数据与页面大小有关,该页面大小是与每个页面表描述符相关联的页面大小的倍数并且是地址转换缓存所支持的页面大小之一。
地址转换缓存可以采用各种形式。例如,它可以是存储部分地址转换数据而不是从虚拟地址计算物理地址所需的完整转换数据的遍历缓存。然而,在一个实施例中,地址转换缓存是转换后备缓冲器(TLB),用于存储完整地址转换数据以使虚拟地址能够被转换成相应的物理地址。
此外,可以以各种方式来组织地址转换缓存。例如,在一个实施例中,它可以被组织为组关联结构。然而,在一个特定实施例中,地址转换缓存是完全关联缓存。在这样的实施例中,在查找操作期间生成的命中向量可以包括针对完全关联缓存中的每个条目的命中/未命中指示。
现在将参考附图描述特定实施例。
图1示意性地示出了数据处理系统,包括处理器核心10,用于使用虚拟地址VA执行程序指令和执行数据访问(指令提取和对要被操纵的数据的访问两者)。这些虚拟地址由地址转换电路20进行地址转换从而转换为物理地址PA。物理地址被用来控制对存储器系统15中的指令和数据的访问。存储器系统15可以包括存储器层级,例如,多级缓存存储器和主存储器或其他非易失性存储装置。
如图1所示,地址转换电路20包括地址转换缓存30,其在一个示例中可以采取转换后备缓冲器(TLB)的形式。地址转换缓存30具有多个条目,其中每个条目存储在将虚拟地址转变成存储器系统的相应物理地址时所使用的地址转换数据。地址转换数据是通过对存储在存储器系统15中的页面表35执行页面表遍历操作来确定的。如稍后将参考图3所讨论的,可以使用多级页面表遍历过程从而参考最终级别描述符来获得使得虚拟地址能够被转变为物理地址的完整地址转换数据,并且该完整地址转换数据可以被存储在地址转换缓存30内。考虑地址转换缓存是TLB的示例,TLB通常用来存储这种完整地址转换数据。在一个实施例中,本文描述的技术允许生成指定参考多个这种最终级别描述符获得的完整地址转换数据的合并地址转换数据,并且该合并地址转换数据随后被存储在TLB的条目中。
如图1示意性示出的,在核心10向地址转换电路20发布虚拟地址时,控制电路可以在地址转换缓存30内执行查找操作,以确定在地址转换缓存的一个条目内是否检测到命中。如果地址转换缓存是以完全关联的方式进行布置的,则在查找操作期间可以考虑所有的条目。然而,如果地址转换缓存具有组关联结构,则虚拟地址的某些位将被用作到地址转换缓存的索引以便标识一个组,并且该组中的条目将被检查以便确定是否检测到命中。如果检测到命中,则表遍历响应可以被直接返回到处理器核心10,这包括存储在地址转换缓存内的命中条目内的物理地址位和相关联属性。基于该信息,核心然后可以生成物理地址以输出到存储器系统15,以便访问所需的指令或要操纵的数据。如果在地址转换缓存内未检测到命中,则地址转换电路20将发起页面表遍历过程以便访问存储器系统内的相关页面表35,从而遍历描述符序列直到获得最终级别描述符,此时能够确定完整地址转换数据,并且随后可以将适当的转换响应返回给核心。在该过程中,地址转换缓存30内的一个或多个条目可以被分配用于存储从所访问的描述符导出的地址转换数据。这有可能使得之后再发布的虚拟地址能够导致在地址转换缓存内的命中,从而减少访问时间。
图2是示意性地示出地址转换过程的图示。可以认为虚拟地址50包括标识虚拟页面编号的多个位55以及标识页面偏移的一些其他位60。形成虚拟页面编号的位的数量和形成页面偏移的位的数量将取决于页面大小。由地址转换电路20执行的地址转换操作由图2中示出的元素65示意性地示出,并且该地址转换操作用于获得足以使得虚拟页面编号位55能够被转换成物理地址80的标识物理页面编号的等同位70的地址转换信息。页面偏移位未改变,因此页面偏移位75根据虚拟地址中的页面偏移位60被直接确定。
图3是示意性地示出假设使用单级地址转换机制的情况下的页面表遍历操作的图示。在该示例中,假设虚拟地址是48位(标记为位0至47),并且因此虚拟地址100具有与不同级别的页面表遍历过程相关联的一系列9位部分,其中12个最低有效位表示页面偏移。
在页面表遍历过程开始时,基址寄存器被访问以标识用于标识页面表115的基地址110。与零级页面表遍历过程相关联的9位105用于标识到该页面表115的索引,并因此标识中间级别描述符117。该中间级别描述符117提供用于标识另一页面表130的基地址120,其中一级虚拟地址位125用于标识到该表的索引。这标识了中间级别描述符132,该中间级别描述符提供标识页面表145的另一基地址135。2级虚拟地址位140然后用于提供到该表145的索引从而标识中间级别描述符147,该中间级别描述符然后提供标识最终页面表160的基地址150。3级虚拟地址位155然后提供到该表160的索引,标识最终级别描述符162(也称为页面描述符)。利用由页面描述符提供的信息,然后可以生成用于存储在TLB 30的条目中的一者中的、使得虚拟页面编号55能够被转换为物理页面编号70的地址转换数据,由此允许标识存储器中的所需页面。这然后使得能够通过核心10向存储器系统15发布所需的物理地址来访问对应于虚拟地址的数据(或指令)的特定条目。
应注意的是,在一些实施例中,最终级别描述符可以在页面表遍历过程中的较早级别处被指定。例如,描述符147可以具有块字段,该块字段在被设置时指示该描述符是块描述符,该块描述符是一种最终级别描述符,而不是中间级别描述符。因此,描述符147内的信息可以被用来生成完整地址转换数据。
图4是根据一个实施例的更详细地示出在图1的地址转换电路20内提供的组件的框图。在该实施例中,地址转换缓存30采用1级TLB的形式。具体地,在一个实施例中,该1级TLB是用于提供在将要从存储器提取的数据值的虚拟地址转换为相应的物理地址时所使用的地址转换数据的数据TLB。在一个实施例中,可以提供单独的1级指令TLB,其用于存储在将指令的虚拟地址转换为相应物理地址(其标识存储器中从其取回该指令的位置)时所使用的地址转换数据。为了便于说明,图4中未示出单独的1级指令TLB。
在该实施例中,图1所示的控制电路25实际上包括与1级TLB 30相关联的访问控制电路180,以及存储器管理单元182。访问控制电路180被布置为接收虚拟地址信息,并在1级TLB内执行查找操作以确定所指定的虚拟地址是否命中TLB中的任何条目。访问控制电路180还被布置为当MMU 182提供新地址转换数据时,执行将新地址转换数据分配到TLB的条目中。必要时,访问控制电路180还可以执行逐出过程以便标识1级TLB 30内的要被分配由MMU提供的新地址转换数据的牺牲者条目(victim entry)。在一个实施例中,当条目的内容被新地址转换数据覆盖时,实际上将不需要逐出该条目的当前内容,因为该数据总是可以由MMU重新创建。
如图4所示,MMU 182可以包括2级TLB 190(其通常大于1级TLB 30)以存储已经通过由MMU 182执行的页面表遍历获得的地址转换数据。这使得地址转换数据在需要时可以容易地提供给1级TLB。如前所述,TLB通常存储完整地址转换数据,但从图3的较早讨论将显而易见的是,部分地址转换数据也可通过页表遍历过程的一个或多个较早级别来获得。在一个实施例中,这种部分地址转换数据可以被存储在MMU 182内的遍历缓存195内。
还如图4所示,MMU 182可以包括合并电路185,其被布置为检测其中从页面表中的多个相邻描述符获得的数据可以被合并以创建针对更大页面的合并地址转换数据的情况。具体地,观察到许多操作系统存储器分配机制自然地将连续的物理页面分配给连续的虚拟页面。在某些情况下合并电路185可以被布置为分析来自页面表的、被选为与连续虚拟页面相关联的描述符的多个相邻描述符,其中,与描述符相关联的相应虚拟页面与更大页面大小对齐。这些描述符因此与可以具有被分配给它们的相应连续物理页面的候选者连续的虚拟页面相关联。合并电路185然后可以确定在那些描述符中的每一个描述符中提供的物理地址信息是否指示相应物理页面确实是连续物理页面,并且在该情况下,合并电路185可以被布置为生成合并地址转换数据以表示由那些连续的物理页面形成的有效的、更大的物理页面。当创建这样的合并地址转换数据时,可以向访问控制电路180发送请求以使得该合并地址转换数据被分配到1级TLB 30的条目中。此外,如果需要,则该合并地址转换数据也可以被存储在2级TLB 190的条目内。尽管原则上这样的合并技术也可以应用于例如可以存储在遍历缓存195中的部分地址转换数据,但为了以下描述的目的,将假设这样的合并仅针对参考页面表内的多个相邻最终级别描述符而获得的完整地址转换数据来执行。
图5是示意性地示出根据一个实施例的可以在地址转换缓存30的每个条目内提供的字段的图示。如图所示,条目200可以包括包含一定数量的虚拟地址位的虚拟地址部分205。存储在该字段中的位数将取决于实施例,但假设图3的较早示例,其中,48位虚拟地址的最高有效36位在多级页面表遍历过程期间被使用,位47到12可以被存储在虚拟地址字段205中。相应的物理地址字段210用于存储相应的物理地址位。
在一个实施例中,提供页面大小字段215以指示存储器系统内与存储在该条目中的地址转换数据相关联的页面的页面大小。字段220用于存储与地址转换数据相关联的其他属性数据。这些属性可以采用各种形式,并且可以例如包括访问许可和存储器类型信息,例如,关联页面是否与存储器的写回区域、非可缓存区域等有关。另外的字段222可以用于存储有效位以标识条目是否存储有效信息。在一个实施例中,还提供合并条目标志字段225以标识条目中的地址转换数据是合并地址转换数据还是非合并地址转换数据。如稍后将参考图7更详细地讨论的,当在地址转换缓存30内执行查找操作时,可以输出用于地址转换缓存内的各种条目的合并条目标志字段225中的信息以生成合并条目向量,该合并条目向量在逐个条目的基础上标识哪些条目存储合并地址转换数据以及哪些条目不存储合并地址转换数据。
图6是示出当从MMU 182提供新地址转换数据时由访问控制电路180执行的分配过程的流程图。在步骤300处,确定是否存在要分配的新地址转换数据,并且在存在时,在步骤305处,访问控制电路180应用牺牲者选择策略以选择其内容将被新地址转换数据覆盖的牺牲者条目。此后,步骤310,其中新地址转换数据被分配到牺牲者条目中,并且内容被标记为有效。此外,在步骤315处,如果地址转换数据是合并地址转换数据,则设置该条目的合并条目标志(例如,设置为逻辑1值),相反,如果地址转换数据是非合并地址转换数据,则被清除(例如,清除为逻辑0值)。然后完成分配过程。具体地,应注意的是,不进行检查以确定地址转换缓存30内的任何其他其余条目是否包含针对物理页面中的已在合并地址转换数据内表示的一者的地址转换数据。这意味着当针对某些虚拟地址执行查找操作时,稍后可能会检测到多个命中。
通常,任何这样的多个命中都会被视为由于包括重叠页面的错误映射转换而导致的软件引发的问题,并且可能例如导致发布中止信号。然而,根据本文描述的实施例,在查找过程期间可以将这种软件引发的多个命中问题与由于将合并地址转换数据分配到地址转换缓存中而导致的合法的、硬件引发的多个命中区分开。
此外,已经提供了用于区分这两个关于多个命中的不同原因的可靠机制,然后可以以高效的方式解决硬件引发的多个命中问题,并且具体地,以比试图在合并地址转换数据被分配到TLB中时确定在TLB内是否存在任何相关的非合并条目显著更高效的方式来解决该问题。具体地,如果每次将合并地址转换数据分配到地址转换缓存中时都在TLB内查找冲突条目,则当核心在与合并地址转换数据到TLB中的分配相一致的时间查找新虚拟地址的情况下,这可能导致有用的指令流查找周期的浪费。此外,为了提供这种冲突条目查找,可能需要向TLB添加新的查找端口,这可能导致静态和动态功率二者的显著增加。通过本文描述的技术避免了这些问题。
作为在使用合并时在地址转换缓存中重复转换条目是任何出现的的示例,考虑以下示例。假设三个相邻的4KB页面已由在处理器核心上执行的指令流访问,这些访问导致TLB 30中的三个条目被分配以存储相关联的地址转换数据。然后,假设第四相邻的4KB页面访问未命中1级TLB,导致向MMU 182发布针对地址转换数据的请求。MMU可能决定可以将四个4KB页面合并成一个合并16KB页面,并且该合并地址转换数据被发送回1级TLB 30以作为合并16KB页面进行分配。因此,当使用图6的过程将该16KB页面安装到1级TLB 30中时,可能仍存在三组重复条目,其中,每一组包括原始的三个4KB页面中的一者和合并16KB页面。尽管处理器核心继续发布与第四4KB页面相关的虚拟地址,但不会检测到多个命中,但如果发布与前三个4KB页面中的任何一个页面相关的虚拟地址,这则将导致检测到多个命中。以下附图描述了如何根据所描述的实施例来区分这样的多个命中与软件引发的多个命中,以及响应于检测到这样的多个命中条件而采取哪些步骤。
图7是示意性地示出了在从处理器核心接收到新虚拟地址时由访问控制电路180执行的各种处理的图示,并且具体地示出了各种处理的相对时序。如图7所示,执行查找操作350,以便针对地址转换缓存支持的每个页面大小生成命中向量,该命中向量在逐个条目的基础上指示是否已经针对所关联的页面大小的地址转换数据检测到命中。在图7所示的示例中,假设地址转换缓存支持6个页面大小,即4KB、16KB、64KB、256KB、2MB和512MB。应当理解,需要与TLB条目中的相应虚拟地址位进行比较的虚拟地址位的数目将根据关于页面大小做出的假设而不同。例如,假设虚拟地址是如例如前面参考图3所讨论的48位虚拟地址(并假设位被标记为位0到47),则:如果页面大小为4KB,则需要比较位47到12(包括位47到12);如果页面大小为16KB,则需要比较位47到14(包括位47到14);如果页面大小为64KB,则需要比较位47到16(包括位47到16);如果页面大小为256KB,则需要比较位47到18(包括位47到18);如果页面大小为2MB,则需要比较位47到21(包括位47到21);并且如果页面大小为512MB,则需要比较位47到29(包括位47到29)。
存在可以执行以实现查找操作许多不同的机制,但由于比较位的数目不同,通常命中向量将在不同的时间点变为可用,如图7所示。在一个特定实施例中,使用求和-寻址-比较机制,如前所述,其使得能够以非常高效的方式执行虚拟地址比较。具体地,通常通过将两个源值相加来计算虚拟地址,并且求和-寻址-比较机制允许对这两个值求和的结果是否将与地址转换缓存的条目内的虚拟地址的相关部分相匹配做出判定,而不需要进行完整进位传播。
具体地,对于每个TLB条目,需要检查所存储的virtual_address(K)是否与所计算的虚拟地址(A+B)(其中A和B是加在一起以形成虚拟地址的两个源值)相同。这通常通过生成VA=A+B并比较VA==K来完成。然而,这很缓慢,由于加法器的完整进位传播。相反,根据求和-寻址-比较技术,假设所计算的VA与所存储的TLB_VA(K)相同。如果是这种情况,则对于每个位i:
Ai^Bi^CINi==Ki[其中,^指示XOR运算]
由于Ai、Bi、和Ki是瞬时(out of a flop)已知的,因此我们可以针对每个位确定所需的CINi中的进位:
CINi_required=Ki^Ai^Bi
如果存在任何位的carry_in不匹配上述CINi_required,则该TLB条目不匹配。
类似地,可以确定,如果条目匹配,则每个位的进位输出必须是:
COUTi_required=(Ai&Bi)|(CINi_required&(Ai|Bi))[其中,&表示AND运算并且|表示OR运算]
COUTi_required=(Ai&Bi)|((Ki^Ai^Bi)&(Ai|Bi))
COUTi_required=(Ai&Bi)|((Ai^Bi)&~Ki)
使用标准生成/传播术语,其中:
Pi=Ai^Bi;(确定位i是否将进位输入传播到进位输出)
Gi=Ai&Bi;(确定位i是否将会生成1的进位输出)
以上内容可以被改写为:
CINi_required=Ki^Pi;
COUTi_required=Gi|(Pi&~Ki);
因此,如果比较将是正确的,则能够了解到每个位的进位输入和进位输出肯定是什么。所需要的仅是比较一个位的进位输入和下面的位的进位输出以查看是否存在匹配。
在使用这种方法时,针对较小页面大小的命中向量将比针对较大页面大小的命中向量更早地生成,如图7示意性示出的,其中,命中向量通过路径352、354、356、358、360和362被输出。
在示例实施例中,还假设合被限于某些页面大小。具体地,在一个实施例中,被映射到相邻的4KB物理页面的四个相邻的4KB虚拟页面可以被合并为一个16KB页面。类似地,被映射到相邻的16KB物理页面的四个相邻的16KB虚拟页面可以被合并为一个64KB页面,并且被映射到相邻的64KB物理页面的四个相邻的64KB虚拟页面可以被合并为一个256KB页面。然而,在所描述的实施例中,假设可以不针对任何其他页面大小执行合并,并且仅允许一级合并,即合并地址转换数据本身不能被进一步合并到更大页面中。
根据这样的实施例,访问控制电路180可以被布置为使用针对可以与合并地址转换数据相关联的页面大小的命中向量354、356、358,以及与本身不能与合并地址值数据相关联、但可以与能够进行合并的非合并地址转换数据相关的较小页面大小有关的命中向量352来确定合并多命中指示。
生成合并多命中指示涉及执行图7中所示的操作370、375、380、382和384。具体地,使用三个命中向量354、356、358,以及如前面参考图5所讨论的、可以从与TLB中的每个条目相关联的合并条目标志字段225获得的合并条目向量372作为输入来执行合并命中向量生成步骤370。具体地,合并命中向量生成器370可以被布置为执行以下逻辑计算:
coalesced_hit_vector[TLB_SIZE-1:0]=(16KB_hit_vector[TLB_SIZE-1:0]
|64KB_hit_vector[TLB_SIZE-1:0]
|256KB_hit_vector[TLB_SIZE-1:0]
)&coalesced_entry[TLB_SIZE-1:0]
因此,该操作对三个命中向量执行逻辑OR以便生成中间向量,其然后与合并条目向量进行逻辑AND。因此,将理解,合并命中向量将标识与16KB、64KB或256KB页面大小相关的合并条目在查找操作期间何时导致过命中。
类似地,可以再次使用三个命中向量354、356、358,但还使用与4KB页面大小相关联的命中向量352来执行非合并命中向量生成操作375。此外,非合并命中向量生成操作375通过路径377被提供有合并条目向量的反相版本。在一个实施例中,非合并命中向量生成操作执行以下逻辑计算:
|64KB_hit_vector[TLB_SIZE-1:0]
|256KB_hit_vector[TLB_SIZE-1:0]
)&~coalesced_entry[TLB_SIZE-1:0]
)|4KB_hit_vector[TLB_SIZE-1:0]
因此,与可以与合并地址转换数据相关联的页面大小相关联的三个命中向量进行逻辑OR以生成中间结果,在这种情况下,该中间结果然后与合并条目向量的反相版本进行AND,从而标识其中条目中与16KB页面大小、64KB页面大小或256KB页面大小相关联的一者已经导致过针对非合并地址转换数据检测到命中的情况。该输出然后与针对4KB页面大小的命中向量352进行逻辑OR以生成非合并命中向量。通过这种方式,非合并命中向量将标识在针对4KB、16KB、64KB或256KB页面大小的非合并条目中何时存在过命中。
如步骤380、382所示,合并命中向量和非合并命中向量二者都进行OR归约运算以便将向量归约为单个位值。在所示实施例中,如果向量中的任何位都被设置为高,则这些单个位值将被设置为高。来自两个OR归约步骤380、382的输出然后在步骤384处进行逻辑AND以生成合并多命中信号。结果是,可以看出步骤380、382和384共同执行以下逻辑计算:
coalesced_multi_hit=|coalesced_hit_vector[TLB_SIZE-1:0]
&|non_coalesced_hit_vector[TLB_SIZE-1:0].[其中,|指示OR归约]
结果是,将理解,上述机制提供了检测由于硬件合并而导致的重复条目的精确方式,使得能够清楚地划分硬件合并引发的多命中和由于包括重叠页面的错误映射转换而导致的软件引发的多命中。此外,如图7所示,无需等待在查找过程期间输出针对较大页面大小的命中向量(在这种情况下,为与2MB和512MB页面大小相关联的命中向量360、362)便可发起该过程。
一旦已经完成查找操作350,则可以执行多命中检测步骤390以确定是否存在多个命中。可以通过逻辑OR所有命中向量352、354、356、358、360和362并检测其中结果包含多于一个设置位的情况来执行该过程。
如果多命中检测步骤的输出指示实际上没有命中,则可以向MMU发布未命中请求以便取回所需的地址转换数据。该步骤未在图7中示出。然而,假设由多命中检测步骤390输出的结果向量具有至少一个设置位,则在步骤392处确定是否仅存在单个命中。如果仅存在单个命中,则可以以一般的方式来处理该命中以便从命中条目取回地址转换数据,并将该信息作为转换响应返回到核心10。
然而,如果确定存在多命中情况,则可以执行合并多命中分析操作395,其中,来自多命中检测级390的多命中通过合并多命中指示进行认定。具体地,如果未设置合并多命中指示,则这指示多命中是由于软件引发的问题而导致的,并且在这种情况下,在一个实施例中发布TLB冲突中止信号以标记这种情况。
然而,如果设置了合并多命中信号,则这指示多命中是由于硬件合并而导致的。在这种情况下,在一个实施例中,然后在TLB内发起清理操作,并且并行地向核心发布重试请求。清理操作用于更新TLB内容以移除重复条目,以便在清理操作完成时,仅存在合并条目,并且之前引起多命中的非合并条目已经失效。已经发现,可以在充足的时间内执行该清理操作,使得在核心重试请求时,清理已经完成,因此当重试请求时,仅会检测到单个命中。在一个特定示例布置中,在重试请求的核心中存在五个周期延迟,并且清理操作可以在这五个周期内完成,因此仅造成五个周期的周转延迟,使得该方法成为高效的解决方案。
图8是示出在一个实施例中可以如何使用合并多命中指示来认定来自多命中检测操作390的多命中信号的图示。具体地,当多命中检测级的输出中的多个位被设置时设置多命中信号,该多命中信号被提供给AND门397。合并多命中信号的反相版本(由反相器396反相)然后作为另一输入被提供给AND门。因此,应当理解,如果AND门输出逻辑1值,则这可以用于断言TLB冲突中止,因为在该情况下,合并多命中指示将处于逻辑0值,指示多个命中不是由于硬件合并导致的。相反,如果合并多命中指示被设置为高,则指示多个命中是由于硬件合并导致的,来自AND门的输出将处于逻辑0值,并且这可以用于发起清理操作,并向核心发布重试请求。
图9A和图9B是示出在从核心接收到新虚拟地址时由图4的访问控制电路180执行的完整事件序列的流程图。在步骤400处,等待新虚拟地址,并且当从核心接收到新虚拟地址时,在步骤405处发起查找操作。如从之前对图7的讨论将显而易见的,查找操作需要一段时间来完成,并且针对特定页面大小的命中向量在不同时间被生成。
在步骤410处,确定合并多命中信号生成所需的命中向量是否可用。一旦这些命中向量可用,则在步骤415处,使用所需的命中向量和合并条目向量来生成合并命中向量和非合并命中向量。例如,这可以使用之前描述的图7的操作370、375来执行。
在步骤420处,针对合并命中向量和非合并命中向量二者执行OR归约运算,并且这些输出被逻辑AND以生成合并多命中信号。例如,这可以通过图7所示的操作380、382、384来执行。
在步骤425处,确定查找操作是否完成,并且一旦查找操作完成,则在步骤430处,检查所有命中向量,例如,通过使用之前参考图7所讨论的多命中检测操作390对这些命中向量进行逻辑OR。
此后,在步骤435处,确定是否存在至少一个命中。如果不存在命中,则在步骤440处,可以向MMU发布未命中请求以便取回所需的地址转换数据。通常,一旦从MMU返回该地址转换数据,它就被用于向核心提供转换响应,并且还将新地址转换数据分配到TLB 30。通过在此时分配地址转换数据,然后确保如果核心发布与同一页面有关的后续虚拟地址,则将在TLB 30中检测到命中。
如果在步骤435处确定存在至少一个命中,则在步骤445处,确定是否实际存在多个命中。如果否,则过程前进到步骤450,其中,标识命中条目,并且使用来自命中条目的地址转换数据将转换响应返回到核心。
如果在步骤445处检测到多个命中,则在步骤445处,确定是否设置了合并多命中信号。如果是,则这表示硬件引发的多命中情况,因此该过程前进到步骤460,其中,针对TLB发起清除操作,并且向核心发布重试请求。
然而,如果未设置合并多命中信号,则过程前进到步骤465,其中,发布TLB冲突中止信号以标记已经发生软件引发的多命中条件。
在一个实施例中,清理操作可以涉及标识多个命中条目中的哪个条目包含非合并地址转换数据,并然后使该条目无效。然而,在另一实施例中,已经发现仅使所有命中条目无效并向MMU发布未命中请求更简单,并且已经发现这不会导致任何时间损失,因为可以在从核心接收到重试请求之前获得MMU响应并使TLB重新填充。该过程在图10中示出。在步骤500处,使所有命中条目无效,并然后在步骤505处,向MMU发布未命中请求。未命中请求然后将使得MMU获得合并地址转换数据(通常这可以仅从2级TLB 190取回),然后该合并地址转换数据可以被返回到访问控制电路180以允许它被分配到1级TLB 30中。
因此,在步骤510处,来自MMU的合并地址转换数据将被分配到TLB的牺牲者条目中。此后,在步骤515处,当核心重试请求时,执行查找操作,并且此时将生成单个命中,使得所需的转换响应被返回到核心。
应当理解,所描述的实施例提供了用于检测由于硬件合并而导致的TLB中的重复条目的精确且高效的机制,使得能够清楚地区分软件引发的多个命中和硬件合并引发的多个命中。具体地,产生自两个或更多个非合并页面的任何多个命中将不会导致合并多命中命中指示被设置。类似地,两个合并条目之间的任何多命中也不会导致合并多命中指示被设置,因此将被解释为软件引发的多个命中。这是正确的行为,因为所描述的实施例的MMU不使用合并条目进行进一步合并,因此从来不应存在由于所采用的硬件合并技术而导致的两个合并条目之间的多个命中。还应注意,在所讨论的特定示例中,MMU仅合并最多256KB的页面大小,具有512MB或2MB页面的合并条目的任何多个命中应始终被视为软件引发的多个命中。这在实施例中讨论的实现方式中自动发生,因为针对2MB和512MB页面大小的命中向量被排除在用于生成合并多命中指示的操作之外。因此,当在合并条目和与两个较大页面大小中的一者相关联的条目中都存在命中时将不设置合并多重命中指示,并且同时,该多个命中将由多命中检测级390在查找操作完成之后检测到,这将导致由于合并多命中指示被清除而触发TLB冲突中止,因此触发期望的行为。
在所描述的实施例中,在查找操作完成之后生成多命中信号,当其指示存在多个命中时,可以通过合并多命中指示的NOT进行认定,从而生成TLB冲突中止以处理软件引发的多个命中的情况。已经发现,在TLB查找操作期间有充足的时间来生成合并多重命中指示,因此使其成为非时序关键实现方式。此外,结果是,如果确定多个命中情况是由与硬件合并导致的,则可以在查找操作之后的周期中及时抑制生成回到核心的任何命中,以便拒绝操作并使得核心随后重新发布该请求,同时可以向MMU发布未命中请求。已经发现,在核心准备好重新发布请求时,由于在MMU的TLB中检测到命中,因此可以使得MMU响应可用于1级TLB,因此允许更新TLB以便避免在重试请求时检测到多个命中。
在本申请中,词语“被配置为......”用于表示装置的元件具有能够执行所定义的操作的配置。在这种情况下,“配置”是指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可以被编程为执行功能。“配置为”并不意味着装置元件需要进行任何方式的改变以提供所定义的操作。
虽然已经参考附图详细描述了本发明的说明性实施例,但是应该理解,本发明不限于这些精确的实施例,并且可以由本领域的技术人员在不偏离由所附权利要求限定的本发明的范围和精神的情况下,进行各种改变、添加和修改。例如,在不偏离本发明的范围的情况下,从属权利要求的特征可以与独立权利要求的特征进行各种组合。
Claims (20)
1.一种管理地址转换缓存内的地址转换数据的装置,包括:
所述地址转换缓存,具有多个条目,每个条目存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据,每个条目被布置为标识存储在其中的所述地址转换数据是合并地址转换数据还是非合并地址转换数据,并标识所述存储器系统内与所述地址转换数据相关联的页面的页面大小;以及
控制电路,响应于虚拟地址来在所述地址转换缓存内执行查找操作以针对所述地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中;
所述控制电路被布置为至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,所述合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置;
所述控制电路还被布置为在所述查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下,参考所述合并多命中指示以确定所述多个命中是否产生自所述地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。
2.根据权利要求1所述的装置,其中:
所述地址转换缓存所支持的页面大小包括不能与合并地址转换数据相关联的一个或多个页面大小;并且
所述控制电路被布置为根据所述命中指示的子集来确定所述合并多命中指示,而无需等待在所述查找操作期间生成所述子集之外的至少一个其余的命中指示,每个其余的命中指示与不能与合并地址转换数据相关联的页面大小有关。
3.根据权利要求2所述的装置,其中,命中指示的所述子集包括针对能够与合并地址转换数据相关联的页面大小的每个命中指示,以及针对以下页面大小的至少一个命中指示:该页面大小小于能够与合并地址转换数据相关联的任何页面大小。
4.根据权利要求2所述的装置,其中,所述其余的命中指示与以下页面大小有关:这些页面大小大于能够与合并地址转换数据相关联的任何页面大小。
5.根据权利要求1所述的装置,其中,所述控制电路包括用于执行所述查找操作的求和-寻址-比较电路,以使得每个命中指示在取决于与该命中指示相关联的页面大小的时刻变为可用。
6.根据权利要求1所述的装置,其中,每个命中指示包括命中向量,所述命中向量在逐个条目的基础上标识是否已经针对相关联页面大小的地址转换数据检测到命中。
7.根据权利要求6所述的装置,其中,所述控制电路被布置为通过以下操作来确定所述合并多命中指示:
通过逻辑组合针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量来生成由标识哪些条目包含合并地址转换数据的信息进行认定的合并命中向量;
通过逻辑组合针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量来生成由标识哪些条目包含非合并地址转换数据的信息进行认定的非合并命中向量,以便生成从其导出所述非合并命中向量的输出向量;以及
对所述合并命中向量和非合并命中向量执行归约和组合运算以生成所述合并多命中指示。
8.根据权利要求7所述的装置,其中,所述控制电路被布置为通过逻辑组合所述输出向量和与以下页面大小相关联的至少一个命中指示的命中向量来生成所述非合并命中向量:该页面大小小于能够与合并地址转换数据相关联的任何页面大小。
9.根据权利要求7所述的装置,其中:
标识哪些条目包含合并地址转换数据的所述信息包括在逐个条目的基础上标识该条目是否存储合并地址转换数据的合并条目向量。
10.根据权利要求9所述的装置,其中:
所述控制电路被布置为通过使用针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量作为输入执行OR运算来生成所述合并命中向量,以便生成部分结果向量,并然后使用所述部分结果向量和所述合并条目向量作为输入执行AND运算,以便生成所述合并命中向量。
11.根据权利要求9所述的装置,其中:
所述控制电路被布置为通过使用针对能够与合并地址转换数据相关联的页面大小的每个命中指示的命中向量作为输入执行OR运算来生成所述非合并命中向量,以便生成部分结果向量,并然后使用所述部分结果向量和所述合并条目向量的反相版本作为输入执行AND运算,以便生成从其导出所述非合并命中向量的输出向量。
12.根据权利要求7所述的装置,其中,所述控制电路被布置为通过OR归约所述合并命中向量以生成第一中间结果、OR归约所述非合并命中向量以生成第二中间结果、并然后使用所述第一和第二中间结果作为输入执行AND运算来执行所述归约和组合运算,以便生成所述合并多命中指示。
13.根据权利要求1所述的装置,其中,所述控制电路被布置为在确定已经通过所述查找操作检测到多个命中并且未设置所述合并多命中指示时发布指示发生软件引发的多命中事件的信号。
14.根据权利要求1所述的装置,其中,所述控制电路被布置为在确定已经通过所述查找操作检测到多个命中并且设置了所述合并多命中指示时,向提供了所述虚拟地址的源发布重试请求,并发起清理操作以无效所述地址转换缓存中的至少一个条目,以使得当所述源重新发布所述虚拟地址时,仅会在所述地址转换缓存的一个条目中检测到命中。
15.根据权利要求14所述的装置,其中,所述清理操作使得至少存储在所述查找操作期间导致命中的非合并地址转换数据的条目无效。
16.根据权利要求14所述的装置,其中,所述清理操作包括使在所述查找操作期间导致命中的每个条目无效,并向存储器管理单元发布请求以使得合并地址转换数据被提供以分配到所述地址转换缓存的条目中。
17.根据权利要求1所述的装置,还包括:
合并电路,用于根据多个页面表描述符生成用于存储在所述地址转换缓存中的所述合并地址转换数据,所述合并地址转换数据与页面大小有关,该页面大小是与每个所述页面表描述符相关联的页面大小的倍数并且是所述地址转换缓存所支持的页面大小之一。
18.根据权利要求1所述的装置,其中,所述地址转换缓存是转换后备缓冲器TLB,用于存储完整地址转换数据以使得虚拟地址能够被转换成相应的物理地址。
19.根据权利要求1所述的装置,其中,所述地址转换缓存是全关联缓存。
20.一种管理地址转换缓存内的地址转换数据的方法,所述地址转换缓存具有多个条目,每个条目存储在将虚拟地址转换为存储器系统的相应物理地址时所使用的地址转换数据,并且每个条目标识存储在其中的所述地址转换数据是合并地址转换数据还是非合并地址转换数据,并标识所述存储器系统内与所述地址转换数据相关联的页面的页面大小,所述方法包括:
响应于虚拟地址来在所述地址转换缓存内执行查找操作以针对所述地址转换缓存所支持的每个页面大小生成命中指示,以指示是否已经针对存储相关联页面大小的地址转换数据的条目检测到命中;
至少根据针对能够与合并地址转换数据相关联的页面大小的每个命中指示来确定合并多命中指示,所述合并多命中指示在针对包含合并地址转换数据的条目和包含非合并地址转换数据的条目二者都检测到命中时被设置;以及
在所述查找操作已经完成时确定是否已经检测到多个命中,并且在该情况下,参考所述合并多命中指示以确定所述多个命中是否产生自所述地址转换缓存中的合并地址转换数据和非合并地址转换数据二者。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/685,186 US10528480B2 (en) | 2017-08-24 | 2017-08-24 | Apparatus and method for efficient utilisation of an address translation cache |
US15/685,186 | 2017-08-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109426624A CN109426624A (zh) | 2019-03-05 |
CN109426624B true CN109426624B (zh) | 2023-11-28 |
Family
ID=62975868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810935298.3A Active CN109426624B (zh) | 2017-08-24 | 2018-08-16 | 用于高效利用地址转换缓存的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10528480B2 (zh) |
EP (1) | EP3454219B1 (zh) |
KR (1) | KR20190022334A (zh) |
CN (1) | CN109426624B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11176091B2 (en) * | 2017-09-29 | 2021-11-16 | Intel Corporation | Techniques for dynamic multi-storage format database access |
KR20200116375A (ko) * | 2019-04-01 | 2020-10-12 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
CN111338989B (zh) * | 2020-02-12 | 2021-01-12 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法与存储系统 |
CN112560086B (zh) * | 2020-12-11 | 2022-11-08 | 海光信息技术股份有限公司 | 一种用于密码协处理器的配置方法、装置、cpu及电子设备 |
US20230153249A1 (en) * | 2021-11-18 | 2023-05-18 | Ati Technologies Ulc | Hardware translation request retry mechanism |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
CN106537362A (zh) * | 2014-07-29 | 2017-03-22 | Arm 有限公司 | 数据处理装置和在数据处理装置中处理地址转换的方法 |
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8635428B2 (en) | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8738860B1 (en) | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US9323691B2 (en) * | 2012-03-08 | 2016-04-26 | Freescale Semiconductor, Inc. | Multiple page size memory management unit |
US10540290B2 (en) * | 2016-04-27 | 2020-01-21 | Ati Technologies Ulc | Method and apparatus for translation lookaside buffer with multiple compressed encodings |
-
2017
- 2017-08-24 US US15/685,186 patent/US10528480B2/en active Active
-
2018
- 2018-07-13 EP EP18183528.1A patent/EP3454219B1/en active Active
- 2018-08-13 KR KR1020180094134A patent/KR20190022334A/ko not_active Application Discontinuation
- 2018-08-16 CN CN201810935298.3A patent/CN109426624B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104272279A (zh) * | 2012-05-10 | 2015-01-07 | Arm有限公司 | 具有缓存和转换后备缓冲器的数据处理装置 |
CN106537362A (zh) * | 2014-07-29 | 2017-03-22 | Arm 有限公司 | 数据处理装置和在数据处理装置中处理地址转换的方法 |
CN107066396A (zh) * | 2015-10-15 | 2017-08-18 | Arm 有限公司 | 用于操作虚拟索引的物理标记的缓存的装置及方法 |
Non-Patent Citations (2)
Title |
---|
J. Cortadella et al.Evaluation of A+B=K Conditions Without Carry Propagation.IEEE Transactions on Computers.1992,全文. * |
肖建青 ; 李红桥 ; 张洵颖 ; 龚龙庆 ; .SPARC V8处理器中存储管理单元的设计.科学技术与工程.2010,(第31期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
KR20190022334A (ko) | 2019-03-06 |
EP3454219B1 (en) | 2021-07-07 |
US20190065400A1 (en) | 2019-02-28 |
CN109426624A (zh) | 2019-03-05 |
US10528480B2 (en) | 2020-01-07 |
EP3454219A1 (en) | 2019-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426624B (zh) | 用于高效利用地址转换缓存的装置和方法 | |
US7506105B2 (en) | Prefetching using hashed program counter | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
US7073044B2 (en) | Method and apparatus for sharing TLB entries | |
US7739477B2 (en) | Multiple page size address translation incorporating page size prediction | |
US7827381B2 (en) | Hybrid techniques for memory virtualization in a computer system | |
JP2618175B2 (ja) | キャッシュ・アクセスのための仮想アドレス変換予測の履歴テーブル | |
US9043559B2 (en) | Block memory engine with memory corruption detection | |
US10191853B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
US7472253B1 (en) | System and method for managing table lookaside buffer performance | |
US10083126B2 (en) | Apparatus and method for avoiding conflicting entries in a storage structure | |
US20060248279A1 (en) | Prefetching across a page boundary | |
US8190652B2 (en) | Achieving coherence between dynamically optimized code and original code | |
US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
US10831675B2 (en) | Adaptive tablewalk translation storage buffer predictor | |
CN111552654A (zh) | 对页表遍历的冗余进行检测的处理器 | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
JP7062695B2 (ja) | 論理ディレクトリを使用したキャッシュ構造 | |
US7549035B1 (en) | System and method for reference and modification tracking | |
KR100308675B1 (ko) | 캐쉬어드레스발생방법 | |
WO2013084314A1 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20050027960A1 (en) | Translation look-aside buffer sharing among logical partitions | |
US7546439B1 (en) | System and method for managing copy-on-write faults and change-protection | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
JPWO2013084314A1 (ja) | 演算処理装置及び演算処理装置の制御方法 |
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 |