CN110858181A - 用于执行地址转换的装置和方法 - Google Patents
用于执行地址转换的装置和方法 Download PDFInfo
- Publication number
- CN110858181A CN110858181A CN201910739140.3A CN201910739140A CN110858181A CN 110858181 A CN110858181 A CN 110858181A CN 201910739140 A CN201910739140 A CN 201910739140A CN 110858181 A CN110858181 A CN 110858181A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- circuitry
- translation
- address translation
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000008569 process Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 2
- 230000014616 translation Effects 0.000 description 108
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000010792 warming Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/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/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/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- 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/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- 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/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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]
-
- 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/681—Multi-level TLB, e.g. microTLB and main TLB
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
技术领域
本技术涉及处理装置中的地址转换的领域。
背景技术
许多数据处理装置包括高速缓存存储器,从该高速缓存存储器可以比从主存储器更快地访问数据。例如,最近访问的数据可以存储在高速缓存中,期望在不久的将来可能再次需要它。一些这样的装置包括预取电路,其用于预测关于由处理电路所执行的处理操作将需要的数据,以及在该预测数据被处理电路需要之前将其预取到高速缓存。由此提高了处理速度,因为在处理电路实际请求预测数据时不需要等待从主存储器中取回预测数据。
如果预取过程太慢,则处理流程可以“赶上”预取,导致到数据处理操作需要预测数据的时候预测数据不在高速缓存中。这使数据处理变慢,因为处理电路必须等待从主存储器中取回数据。因此期望提高预取过程的速度和效率,以便提高整体处理性能。
发明内容
在一个示例配置中,提供了一种装置,其包括:
处理电路,用于执行数据处理操作;
存储电路,用于存储数据以供处理电路访问;
地址转换电路,用于维护用于将虚拟存储器地址转换为对应的物理存储器地址的地址转换数据;以及
预取电路,用于:
在执行数据处理操作需要第一数据的预期下,将第一数据预取到存储电路中,其中,预取包括:
基于预测方案,预测与第一数据相关联的第一虚拟存储器地址;
访问地址转换电路以确定与第一虚拟存储器地址相对应的第一物理存储器地址;并且
基于与第一虚拟存储器地址相对应的第一物理存储器地址来取回第一数据,
基于预测方案,在第二数据被预取的预期下而预测与第二数据相关联的第二虚拟存储器地址;并且
将所预测的第二虚拟存储器地址提供给地址转换电路,以使地址转换电路能够获得第二虚拟存储器地址的地址转换数据。
在另一示例配置中,提供了一种方法,其包括:
在执行数据处理操作需要第一数据的预期下将第一数据预取到存储器中,其中,预取包括:
基于预测方案,预测与第一数据相关联的第一虚拟存储器地址;
从地址转换电路获得第一虚拟存储器地址的地址转换数据,该地址转换数据定义从第一虚拟存储器地址到物理存储器地址的转换;和
基于物理存储器地址来取回第一数据,
基于预测方案,在第二数据被预取的预期下预测与第二数据相关联的第二虚拟存储器地址;并且
将所预测的第二虚拟存储器地址提供给地址转换电路,以使地址转换电路能够获得第二虚拟存储器地址的地址转换数据。
在另一示例配置中,提供了一种装置,其包括:
处理装置,用于执行数据处理操作;
存储装置,用于存储数据以供处理装置访问;
地址转换装置,用于维护用于将虚拟存储器地址转换为对应的物理存储器地址的地址转换数据;以及
预取装置,用于:
在执行数据处理操作需要第一数据的预期下,将第一数据预取到存储装置中,其中,预取包括:
基于预测方案,预测与第一数据相关联的第一虚拟存储器地址;
从地址转换装置获得第一虚拟存储器地址的地址转换数据;和
基于与第一虚拟存储器地址相对应的物理存储器地址来取回第一数据,
基于预测方案,在第二数据被预取的预期下而预测与第二数据相关联的第二虚拟存储器地址;并且
将所预测的第二虚拟存储器地址提供给地址转换装置,以使地址转换电路能够获得第二虚拟存储器地址的地址转换数据。
附图说明
参考如在附图中示出的本技术的示例,将仅通过说明的方式进一步描述本技术,在附图中:
图1示意性地示出了根据本公开的一个示例的装置;
图2示意性地示出了根据本公开的另一示例的装置;
图3示意性地示出了可以在本公开的一些示例中使用的布置;
图4示意性地示出了由来自处理电路的请求标识的一系列存储器位置;
图5示意性地示出了在不同时间的一系列存储器位置;
图6示出了转换后备缓冲区中的条目的示例;并且
图7示意性地示出了根据本公开的示例的方法。
具体实施方式
如上所述,在处理电路需要第一数据来执行数据处理操作的预期下,一些数据处理装置采用预取电路来将第一数据预取到诸如高速缓存存储器之类的存储电路中。处理电路可以通过指定虚拟存储器地址来请求数据。给定的虚拟存储器地址被转换为物理存储器地址,以便访问数据所被存储于的物理存储器位置。预取电路接收所请求的虚拟存储器地址,并基于此来预测要预取的数据。例如,预取电路可以检测所请求的虚拟存储器地址的模式并将该模式外推到将来。这样的模式的一个示例是数据处理电路已按照一系列规则间隔的虚拟地址来请求数据。
为了预取预测数据,必须将每个所预测的虚拟存储器地址转换成对应的物理地址。将虚拟存储器地址转换成对应的物理存储器地址的过程可以涉及执行“页面寻访(pagewalk)”以通过在存储器中的一个或多个页表中执行查找操作来得到虚拟地址的地址转换数据。执行页面寻访通常是耗时的,所以本公开的示例包括用于缓冲通过针对存储器的特定页面的页面寻访过程而获得的地址转换数据的地址转换电路,以使得能够在可能的情况下使用缓冲的地址转换数据将随后标识的虚拟存储器地址转换成对应的物理存储器地址,从而减少所需的页面寻访的数量。
在示例布置中,地址转换电路包括缓冲存储器,其用于存储虚拟地址的子集的地址转换数据。当针对给定虚拟地址请求转换数据,并且该给定虚拟地址的转换数据存储在缓冲存储器中时,地址转换电路被布置为从缓冲存储器中取回该给定虚拟地址的地址转换数据。相反,当针对给定虚拟地址请求转换数据,并且该给定虚拟地址的转换数据未存储在缓冲存储器中时,地址转换电路被布置为启动页表寻访过程以获得用于存储在缓冲存储器中的转换数据。
例如,地址转换电路可以实现转换后备缓冲器以存储最近的虚拟到物理地址转换。因此可以在不执行页面寻访的情况下取回最近的地址转换,从而提高执行数据处理操作的速度。
在一个示例布置中,预取过程包括:基于预测方案来预测与第一数据相关联的第一虚拟存储器地址。例如,预测方案可包括:对处理电路的先前的数据访问模式进行外推。预取电路然后访问地址转换电路,以确定与第一虚拟存储器地址相对应的第一物理存储器地址,并基于其来取回第一数据。
基于预测方案,在第二数据被预取的预期下,预取电路预测与第二数据相关联的第二虚拟存储器地址。在示例中,预取电路比第一虚拟地址的预测更进一步地对上述先前数据访问模式进行外推。例如,第一虚拟存储器地址的预测可包括:将所述先前数据访问模式外推比当前数据处理操作领先的第一数量的数据处理操作。然后,第二虚拟存储器地址的预测可包括:将所述先前数据访问模式外推比当前数据处理操作领先的第二数量的数据处理操作,第二数量高于第一数量。换句话说,与对于第一地址的预测相比,对于第二地址的预测,模式被外推到更远的将来。
预取电路然后将所预测的第二虚拟存储器地址提供给地址转换电路,以使地址转换电路能够获得第二虚拟存储器地址的地址转换数据。转换电路从而可以利用预取电路的预测逻辑,以便在预取电路实际预取第二数据之前用转换数据进行填充。该提前填充可被称为地址转换电路的“预热”。如上所述,如果当预取电路请求给定转换数据时未在转换电路中保持该转换数据,则会执行耗时的页面寻访操作以便参考页表来获取转换数据。本公开的示例允许在预取电路请求转换之前执行该耗时的页面寻访,从而避免等待执行页面寻访所将造成的延迟。因此提高了预取过程的速度,从而降低了数据处理操作将“赶上”预取的可能性并因此提高了整体处理速度和效率。
在一些示例中,第一和第二数据是可以对其执行数据处理操作的数据项。在其他示例中,第一和第二数据是使处理电路执行至少一个数据处理操作的指令。因此,本公开的示例可以涉及预取数据的数据预取器和/或预取指令的指令预取器。
在一些示例中,预取电路被布置为响应于确定所预测的第二虚拟存储器地址在存储器页面的末端的预热距离内而将第二虚拟存储器地址提供给地址转换电路。这在其中地址转换电路被配置为存储全部存储器页面的转换数据的示例中是有利的。在这样的示例中,可以通过不将第二预测存储器地址提供给转换电路(除非第二预测存储器地址位于存储器页面的末端附近)以使得很可能很快需要将新的存储器页面存储在转换电路中来提高效率。具体而言,在达到该点之前,地址转换电路很可能将已经具有第二虚拟存储器地址的所需地址转换数据,因为它和与第一虚拟存储器地址相同的存储器页面有关。
在一些示例中,装置包括附加的转换请求源电路,其用于引用地址转换电路来确定虚拟存储器地址的物理存储器地址。附加的转换请求电路例如可包括与另外的存储电路相关联的另外的预取电路。因此可以在多个转换请求源(诸如预取器)之间共享地址转换电路。在这样的情况下,上述技术允许利用预取器中的预测逻辑,以寻求用可能需要的地址转换数据来给地址转换电路预热,而不必在地址转换电路中实现复杂的预测逻辑。从而,相对于不实现本文描述的预热的比较系统,以及相对于其中转换电路自身执行所预测的比较系统(在这样的系统中,转换电路必须要么实现复杂的预测方案以寻求在考虑到多个不同的转换请求源的情况下处理预测,要么它必须实现简化的(因此效率较低的)预测逻辑),大大地提高了地址转换电路的操作的速度和效率。本公开允许转换电路有效地利用每个预取器的预测逻辑,从而提高处理性能。
在一些示例中,预取电路与一级高速缓存相关联,并且另外的预取电路与二级高速缓存相关联。这可以扩展到其他高速缓存级别。换句话说,多级高速缓存层次结构的多个级别可以共享相同的地址转换电路。
可替代地或另外地,预取电路可被布置为预取可以对其执行数据处理操作的数据,并且另外的预取电路可被布置为预取使处理电路执行数据处理操作的指令。因此,数据预取器和指令预取器可以共享相同的地址转换电路。
在一些示例中,地址转换电路被布置为设置预热标志以标识存储在其中的给定的地址转换数据项何时是在数据被预取的预期下获得的。因此,可以确定每个地址转换数据项是通过预热操作而存储在地址转换电路中还是通过非预热操作(例如标准地址转换请求)而存储在地址转换电路中。
在一些这样的示例中,地址转换电路实现针对所维护的地址转换数据的替换策略。替换策略定义应从转换电路中丢弃哪个转换数据项,以便允许存储新的转换数据项。在一个这样的示例中,替换策略使得地址转换电路优先替换对其设置预热标志的地址转换数据。因此,相对于通过非预热操作存储的转换数据,优先替换通过预热操作存储的地址转换数据。这降低了替换将实际需要的转换数据的可能性,因为和与实际已被预取的数据相对应的转换数据相比较少可能需要预热的转换数据(部分因为其在转换电路中的存在通常是预测更远将来的数据访问模式的结果)。
现在将参考附图描述本公开的示例。
图1示意性地示出了根据本公开的示例的装置100。装置100可以由通用组件实现,或者由专用电路实现。例如,装置100的至少一些组件可以形成诸如中央处理单元或图形处理单元之类的处理装置的一部分。
装置100包括用于执行数据处理操作的处理电路105。例如,处理电路105可以实现处理流水线,经由该处理流水线提取、解码和执行处理指令。指令可例如定义对数据执行的操作。
装置100包括主存储器110。主存储器存储上述指令和数据。主存储器可例如在动态随机存取存储器中实现。
装置100包括具有比主存储器110更低的访问等待时间的高速缓存存储器115。例如,高速缓存存储器115可以在静态随机存取存储器中实现。高速缓存存储器115临时存储在主存储器110中存储的数据的子集的副本,使得可以更快地执行处理电路105对高速缓存数据的访问。根据数据高速缓存描述本示例,但是系统100可以类似地实现指令高速缓存以存储供处理电路105执行的指令。
处理电路105通过虚拟存储器地址(VA)来引用给定的数据项。给定的虚拟地址可以被转换成物理存储器地址(PA)以便访问主(物理)存储器110中的位置。为此,装置100包括转换后备缓冲器(TLB)120,TLB120被配置为接收指定虚拟地址的请求并被配置为获得用于将它们转换成对应物理地址的地址转换数据。TLB 120维护针对最近请求获得的地址转换数据,使得如果关于已经将其地址转换数据存储在TLB 120中的虚拟地址请求转换,则可以迅速提供对应的物理地址。然而,如果关于不具有未存储在TLB 120中的所需地址转换数据的虚拟地址请求转换,则参考在主存储器中存储的一个或多个页表125来执行页表寻访130。如在上面说明,执行页表寻访比提供在TLB 120中存储的转换明显更耗时。
处理电路105利用给定的虚拟地址向高速缓存115请求数据。如果该数据存储在高速缓存115中,则其被提供给处理电路105。如果该数据未存储在高速缓存115中,则高速缓存115基于与所请求的虚拟地址相对应的物理地址来请求该数据。在一些示例中,实现单个高速缓存级别,并且直接从高速缓存115向主存储器发出请求。在其他示例中,装置100包括在最高级高速缓存115下面的附加高速缓存层次结构级别135。这些高速缓存级别可以例如在尺寸上大于最高级高速缓存115但是具有更高的访问等待时间。在这样的示例中,最高级高速缓存115向次低的高速缓存级别请求数据。如果该数据存储在该高速缓存级别中,则其被返回到最高级高速缓存115,并从那里到处理电路105。如果该数据未存储在该高速缓存级别中,则向下面的高速缓存级别发出请求。根据需要重复该模式,其中最低高速缓存级别被配置为在必要时向主存储器110请求数据。
装置100包括预取电路140。预取电路接收在由处理电路105向高速缓存115发出的请求中指定的虚拟地址。然后,预取电路140基于预测方案来预测在不久的将来很可能是请求的主题的虚拟地址。例如,预取电路140可以检测到处理电路105已经做出与规则间隔的虚拟地址(例如按8的增量增加)有关的请求,并且基于该模式将继续的假设来外推该模式。预取电路140将所预测的虚拟地址提供给TLB 120并接收对应的物理地址。这些物理地址然后被提供给高速缓存115。如果预测数据已经存储在高速缓存中,则进一步的预取动作不被执行。如果预测数据尚未存储在高速缓存中,则高速缓存115以与上面针对请求数据描述类似的方式取回预测数据。因此,如果预测证明是正确的并且处理电路105确实请求预测数据,则可以以与预测数据未被预取的比较情况相比减少的等待时间将预测数据提供给处理电路105。
除了上述预取之外,预取电路140还使用预测方案来预测将来可能要预取的数据的另外虚拟地址。例如,上述数据访问模式可被外推到更远的将来。这些另外的预测地址被提供给TLB 120,使得如果对应的地址转换数据当前未存储在TLB 120中,则对应的页表寻访可以被执行以获得转换。这可以被称为TLB 120的“预热”。如果该进一步预测证明是正确的并且与预热地址相对应的数据随后被预取,则相关地址转换数据将已经存储在TLB 120中,因此预取操作将不会因为执行页表寻访而被延迟。
因此,预取电路140执行预热和预取操作。在这样的系统中,相对于不执行这种预热的比较系统,提高了预取的速度和效率。从而降低了处理电路105的处理流程“赶上”预取的风险,并避免了数据处理的相应减慢。
图2示意性地示出了根据本公开的另一示例的装置200。装置200在某些方面表示装置100的扩展。
装置200包括:处理电路105,存储一个或多个页表125的主存储器110,以及TLB120,其以与装置100的等效组件基本相同的方式操作。
装置200包括以与上面关于装置100的高速缓存115和预取电路140描述基本相同的方式结合一级(L1)预取电路140a进行操作的L1高速缓存115a。
装置200还包括二级(L2)高速缓存115b。如在上面关于装置100的可选的其他高速缓存135所述,L2高速缓存115b被配置为从L1高速缓存115a接收所请求的物理地址。如果对应的数据存储在L2高速缓存115b中,则它被返回到L1高速缓存115a。如果对应的数据当前未存储在L2高速缓存115b中,则它被从主存储器110中取回,然后被返回到L1高速缓存115a。
L2预取电路140b与L2高速缓存115b相关联。当L1高速缓存115a关于物理地址向L2高速缓存115b发出请求时,它还向L2预取电路140b提供对应的虚拟地址。L2预取电路使用预测方案来预测与L1高速缓存115a可能在不久的将来向L2高速缓存115b请求的数据相对应的虚拟地址。该预测方案可以以与由L1预取电路140a实现的预测方案相同的方式操作。可替代地或另外地,L2预取电路140b可以应用不同的预测方案。以与L1预取电路140a和高速缓存115a的操作类似的方式,L2预取电路向TLB 120提供虚拟地址并接收对应的物理地址,对应的物理地址然后被提供给L2高速缓存115b以便取回数据。
在替换示例中,L1高速缓存115a向L2预取电路140b提供物理地址,并且L2预取电路140b基于物理地址来应用预测方案。
类似于L1预取电路140a,L2预取电路140b执行预热操作,预热操作包括预测在不久的将来可能被预取的其他虚拟地址,并将这些地址提供给TLB 120。
因此,L1预取电路140a和L2预取电路140b共享相同的TLB 120。从而,TLB 120可以利用L1预取电路140a和L2预取电路140b两者的预测逻辑来执行预热,而不需要其自身的任何复杂预测逻辑。这可以扩展到更大数量的地址转换请求源,例如与另外的高速缓存级别相对应的另外的预取电路。
图3示意性地示出了根据本公开的一个示例的装置300。装置300包括以与上述装置100和200中相同的方式操作的处理电路105。
装置300包括预取电路305。预取电路305以与装置100和200中类似的方式接收处理电路105向高速缓存(未示出)请求的虚拟地址。预取电路包括预测电路310,预测电路310用于基于所接收的虚拟地址来预测在不久的将来可能请求的虚拟地址。
装置300具有存储器管理单元(MMU)315,其包括装置300的主TLB 120。
预取电路305包括其自己的微TLB 320。这专用于缓冲由预测电路310请求的最近的虚拟到物理地址转换,并且为此具有比主TLB 120更低的等待时间但也更低的容量。预测电路310向微TLB 320发出转换请求。如果微TLB 320当前存储了所请求的转换,则将对应的物理地址返回到预测电路。如果微TLB 320当前未存储所请求的转换,则将请求传递到主TLB 120,主TLB 120确定并返回转换,如在上面更详细描述的。从而进一步减少了用于访问虚拟到物理地址转换的等待时间。
MMU 315类似地包括其自己的微TLB 325,微TLB 325用于直接从处理电路105接收转换请求。该微TLB 325满足关于其当前存储的转换的转换请求,并将其他转换传递到主TLB 120。
现在将参考图4和5描述预取和预热操作之间的相互关系。
图4示意性地示出了在给定时间点的一系列存储器位置405-440,按照它们被诸如电路105之类的处理电路请求的顺序。这些可以是或可以不是规则间隔的一系列存储器位置。如将在下面更详细说明的,位置405和410(实线)对应于所请求的地址,位置415-430(虚线)对应于预取地址,位置435和440(虚线)对应于预热地址。
处理电路在前一处理操作中曾请求存储器位置405。
处理电路在当前处理操作中请求存储器位置410。
在先前处理操作中由处理电路发出的数据请求之后,预取电路曾预取存储器位置415-425。
预取电路基于当前请求的位置410来预取存储器位置430。例如,可以通过将通向当前请求的位置410的数据访问模式外推将来的四次访问来预测对存储器位置430的即将发生的请求。在本示例中,因此可以说预取可以预测将来的四个处理操作。
在先前处理操作中由处理电路发出的数据请求之后,预取电路曾预热存储器位置435。
预取电路基于当前请求的位置410来预热存储器位置440。例如,上述数据访问模式可被外推更远的将来的两次访问。因此可以说本示例的预热可以预测比预取更远的将来的两个处理操作。
图5示意性地示出了在不同时间Tn、Tn+1(即Tn之后的一个处理操作)、Tn+2和Tn+6的一系列存储器位置。
处理电路以步长S的规则间隔请求存储器位置。例如,如果处理电路请求每第8个存储器地址,则步长S=8。
与来自处理电路的请求相对应的存储器位置是有点的。与预取请求相对应的存储器位置是对角阴影线的。与预热请求相对应的存储器位置是水平阴影线的。
在时间Tn,存储器位置505对应于来自处理电路的请求。存储器位置510对应于预取请求。存在五个这样的存储器位置,这意味着预取电路正在操作将来的五个处理操作,所以预取电路预取比处理电路当前请求的地址领先五个操作的地址。这可被称为预取距离。存储器位置515对应于预热请求。存在两个这样的存储器位置,这意味着预热电路预热比当前预取的地址领先两个处理操作的地址。因此,可以说预热距离是5+2=7。
在时间Tn+1,处理流程向其移动了一个地址。先前曾是预取地址的存储器地址520已被处理电路请求。类似地,先前曾被预热的存储器地址525已被预取。存储器地址530已被预热。
假设处理电路保持相同的数据访问模式,该进展继续。在时间Tn+6,处理电路请求存储器地址535。该地址曾在时间Tn被预热并在时间Tn+2被预取。通过预热提高了预取的速度。通过预取,类似地提高了当被请求时向处理电路提供数据的速度。
图6示出了TLB 120中的条目的示例。布局为了便于说明而是示意性的,并且实际上可以是不同的。对于每个条目,对照对应物理地址(PA)的比特来存储虚拟地址(VA)的比特。存储的比特可以是完整的地址或其部分。
对于每个条目,存储“PREHEATED(已预热)?”标志。当作为预热操作的一部分将给定条目添加到表中时,设置该标志。然后,当关于映射到该给定条目的虚拟地址接收到预取请求,并因此可以使用该条目中的地址转换数据为其确定对应的物理地址时,取消设置该标志。可以基于该标志来管理TLB 120。例如,当确定从TLB 120中移除哪个条目以便为新条目腾出空间时,TLB 120可以优先移除为其设置标志的条目。这减少了移除可能更快需要的条目的可能性,因为已被预热但未被预取的条目对应于比已被预取的条目更远将来的预测。
图7示意性地示出了根据本公开的示例的方法700。方法700可以例如由上面描述的预取电路实现。
在块705,例如基于对处理电路的数据访问模式进行外推来预测第一虚拟地址。
在块710,获得第一虚拟地址的转换数据(诸如物理地址,或基于其可以确定物理地址的数据)。
在块715,例如参考对应于第一虚拟地址的物理地址,取回对应于第一虚拟地址的数据。
在块720,例如通过比对于第一虚拟地址将数据访问模式外推到更远的将来来预测第二虚拟地址。
在块725,将第二虚拟地址提供给TLB以进行预热,由此将第二虚拟地址的转换数据存储在TLB中。
虽然在图7中按顺序示出了各块,但是该方法的实现可以改变顺序或者并行地执行一些步骤。例如,可以在块705-715中的任何块之前执行块720和725,或者与块705-715中的任何块并行执行块720和725。
通过使用上述技术,将会认识到,通过实现TLB的预热可以提高预取的速度和效率。
本文描述的方法可以以硬件和/或软件来执行。这样的硬件可以是通用处理器,或者更特定的单元,诸如专用集成电路或现场可编程门阵列。
在本申请中,词语“配置为...”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,装置可具有提供所定义的操作的专用硬件,或者处理器或其他处理设备可被编程为执行该功能。“配置为”并非暗示需要以任何方式改变装置元件以便提供所定义的操作。
尽管本文中已经参考附图详细描述了本发明的说明性示例,但是将会明白,本发明不限于那些精确的示例,并且本领域技术人员在不脱离由所附权利要求限定的本发明的范围和精神的情况下可以在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,可以进行从属权利要求的特征与独立权利要求的特征的各种组合。
Claims (19)
1.一种装置,包括:
处理电路,用于执行数据处理操作;
存储电路,用于存储数据以供所述处理电路访问;
地址转换电路,用于维护用于将虚拟存储器地址转换为对应的物理存储器地址的地址转换数据;以及
预取电路,用于:
在执行所述数据处理操作需要第一数据的预期下,将所述第一数据预取到所述存储电路中,其中,所述预取包括:
基于预测方案,预测与所述第一数据相关联的第一虚拟存储器地址;
访问所述地址转换电路以确定与所述第一虚拟存储器地址相对应的第一物理存储器地址;并且
基于与所述第一虚拟存储器地址相对应的所述第一物理存储器地址来取回所述第一数据,
基于所述预测方案,在第二数据被预取的预期下而预测与所述第二数据相关联的第二虚拟存储器地址;并且
将所预测的所述第二虚拟存储器地址提供给所述地址转换电路,
以使所述地址转换电路能够获得所述第二虚拟存储器地址的地址转换数据。
2.根据权利要求1所述的装置,其中,所述预测方案包括:对所述处理电路的先前的数据访问模式进行外推。
3.根据权利要求2所述的装置,其中,预测所述第二虚拟存储器地址包括:比预测所述第一虚拟存储器地址更进一步地对所述先前数据访问模式进行外推。
4.根据权利要求3所述的装置,其中:
所述第一虚拟存储器地址的预测包括:将所述先前数据访问模式外推比当前数据处理操作领先第一数量个数据处理操作;并且
所述第二虚拟存储器地址的预测包括:将所述先前数据访问模式外推比当前数据处理操作领先第二数量个数据处理操作,所述第二数量高于所述第一数量。
5.根据任何前述权利要求所述的装置,其中,所述预取电路被布置为响应于确定所预测的所述第二虚拟存储器地址在存储器页面的末端的预热距离内而将所述第二虚拟存储器地址提供给所述地址转换电路。
6.根据任何前述权利要求所述的装置,包括:附加转换请求源电路,所述附加转换请求源电路用于引用所述地址转换电路以确定虚拟存储器地址的物理存储器地址。
7.根据权利要求6所述的装置,其中,所述附加转换请求源电路包括:与另外的存储电路相关联的另外的预取电路。
8.根据权利要求7所述的装置,其中:
所述预取电路与一级高速缓存相关联;并且
所述另外的预取电路与二级高速缓存相关联。
9.根据权利要求7所述的装置,其中:
所述预取电路被布置为预取能够对其执行所述数据处理操作的数据;并且
所述另外的预取电路被布置为预取使所述处理电路执行所述数据处理操作的指令。
10.根据任何前述权利要求所述的装置,其中,所述地址转换电路被布置为设置预热标志,以标识存储在其中的给定的地址转换数据项是何时在数据被预取的预期下获得的。
11.根据权利要求10所述的装置,其中:
所述地址转换电路实现针对所维护的地址转换数据的替换策略;并且
所述替换策略使得所述地址转换电路优先替换对其设置了所述预热标志的地址转换数据。
12.根据任何前述权利要求所述的装置,其中,所述存储电路是与所述处理电路相关联的高速缓存存储器。
13.根据任何前述权利要求所述的装置,其中,所述第一数据和所述第二数据中的每一个是能够对其执行所述数据处理操作的数据项。
14.根据任何前述权利要求所述的装置,其中,所述第一数据和所述第二数据中的每一个是使所述处理电路执行所述数据处理操作中的至少一个数据处理操作的指令。
15.根据任何前述权利要求所述的装置,其中:
所述地址转换电路包括:缓冲存储器,所述缓冲存储器用于存储虚拟地址的子集的地址转换数据;并且
当针对给定虚拟地址请求转换数据,并且所述给定虚拟地址的转换数据被存储在所述缓冲存储器中时,所述地址转换电路被布置为从所述缓冲存储器中取回所述给定虚拟地址的地址转换数据。
16.根据权利要求15所述的装置,其中,当针对给定虚拟地址请求转换数据,并且所述给定虚拟地址的转换数据未被存储在所述缓冲存储器中时,所述地址转换电路被布置为启动页表寻访过程以获得用于存储在所述缓冲存储器中的转换数据。
17.根据任何前述权利要求所述的装置,其中,所述地址转换电路实现转换后备缓冲器。
18.一种方法,包括:
在执行数据处理操作需要第一数据的预期下,将所述第一数据预取到存储器中,其中,所述预取包括:
基于预测方案,预测与所述第一数据相关联的第一虚拟存储器地址;
从地址转换电路获得所述第一虚拟存储器地址的地址转换数据,
所述地址转换数据定义从所述第一虚拟存储器地址到物理存储器地址的转换;并且
基于所述物理存储器地址取回所述第一数据,
基于所述预测方案,在第二数据被预取的预期下而预测与所述第二数据相关联的第二虚拟存储器地址;并且
将所预测的所述第二虚拟存储器地址提供给所述地址转换电路,以使所述地址转换电路能够获得所述第二虚拟存储器地址的地址转换数据。
19.一种装置,包括:
处理装置,用于执行数据处理操作;
存储装置,用于存储数据以供所述处理装置访问;
地址转换装置,用于维护用于将虚拟存储器地址转换为对应的物理存储器地址的地址转换数据;以及
预取装置,用于:
在执行所述数据处理操作需要第一数据的预期下,将所述第一数据预取到所述存储装置中,其中,所述预取包括:
基于预测方案,预测与所述第一数据相关联的第一虚拟存储器地址;
从所述地址转换装置获得所述第一虚拟存储器地址的地址转换数据;并且
基于与所述第一虚拟存储器地址相对应的物理存储器地址来取回所述第一数据,
基于所述预测方案,在第二数据被预取的预期下而预测与所述第二数据相关联的第二虚拟存储器地址;并且
将所预测的所述第二虚拟存储器地址提供给所述地址转换装置,
以使所述地址转换装置能够获得所述第二虚拟存储器地址的地址转换数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1813667.1 | 2018-08-22 | ||
GB1813667.1A GB2576528B (en) | 2018-08-22 | 2018-08-22 | Performing address translation on predicted virtual memory address |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110858181A true CN110858181A (zh) | 2020-03-03 |
Family
ID=63668063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910739140.3A Pending CN110858181A (zh) | 2018-08-22 | 2019-08-12 | 用于执行地址转换的装置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11163691B2 (zh) |
CN (1) | CN110858181A (zh) |
GB (1) | GB2576528B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546488A (zh) * | 2022-04-25 | 2022-05-27 | 超验信息科技(长沙)有限公司 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200116372A (ko) * | 2019-04-01 | 2020-10-12 | 에스케이하이닉스 주식회사 | 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법 |
GB2593484B (en) * | 2020-03-24 | 2022-09-28 | Advanced Risc Mach Ltd | Memory management |
CN111552653B (zh) * | 2020-05-14 | 2021-01-29 | 上海燧原科技有限公司 | 页表的读取方法、装置、设备及计算机存储介质 |
CN112416436B (zh) * | 2020-12-02 | 2023-05-09 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
GB2602035B (en) * | 2020-12-15 | 2022-12-14 | Advanced Risc Mach Ltd | Memory access |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
US20140149679A1 (en) * | 2012-11-27 | 2014-05-29 | Nvidia Corporation | Page crossing prefetches |
US20140149632A1 (en) * | 2012-11-29 | 2014-05-29 | Apple Inc. | Prefetching across page boundaries in hierarchically cached processors |
US20140258622A1 (en) * | 2013-03-07 | 2014-09-11 | Arm Limited | Prefetching of data and instructions in a data processing apparatus |
US20140281352A1 (en) * | 2013-03-15 | 2014-09-18 | Girish Venkatsubramanian | Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems |
US20170344482A1 (en) * | 2016-05-24 | 2017-11-30 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6954840B2 (en) * | 2001-11-30 | 2005-10-11 | Intel Corporation | Method and apparatus for content-aware prefetching |
-
2018
- 2018-08-22 GB GB1813667.1A patent/GB2576528B/en active Active
-
2019
- 2019-06-25 US US16/451,384 patent/US11163691B2/en active Active
- 2019-08-12 CN CN201910739140.3A patent/CN110858181A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520753A (zh) * | 2008-02-29 | 2009-09-02 | Arm有限公司 | 数据处理设备和控制虚拟机对安全存储器的访问的方法 |
US20140149679A1 (en) * | 2012-11-27 | 2014-05-29 | Nvidia Corporation | Page crossing prefetches |
US20140149632A1 (en) * | 2012-11-29 | 2014-05-29 | Apple Inc. | Prefetching across page boundaries in hierarchically cached processors |
US20140258622A1 (en) * | 2013-03-07 | 2014-09-11 | Arm Limited | Prefetching of data and instructions in a data processing apparatus |
US20140281352A1 (en) * | 2013-03-15 | 2014-09-18 | Girish Venkatsubramanian | Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems |
US20170344482A1 (en) * | 2016-05-24 | 2017-11-30 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546488A (zh) * | 2022-04-25 | 2022-05-27 | 超验信息科技(长沙)有限公司 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20200065257A1 (en) | 2020-02-27 |
US11163691B2 (en) | 2021-11-02 |
GB2576528B (en) | 2021-06-23 |
GB2576528A (en) | 2020-02-26 |
GB201813667D0 (en) | 2018-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858181A (zh) | 用于执行地址转换的装置和方法 | |
US8433853B2 (en) | Prefetching of next physically sequential cache line after cache line that includes loaded page table entry | |
TWI684099B (zh) | 剖析快取替代 | |
KR102470184B1 (ko) | 캐시 테스트 영역을 기반으로 하는 프리페치를 위한 캐시 에이징 정책 선택 | |
US8122216B2 (en) | Systems and methods for masking latency of memory reorganization work in a compressed memory system | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
US6578111B1 (en) | Cache memory system and method for managing streaming-data | |
US9582282B2 (en) | Prefetching using a prefetch lookup table identifying previously accessed cache lines | |
KR101485651B1 (ko) | 메모리 액세스를 정확하게 예측하기 위한 영역 기반 기술 | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
JP6916782B2 (ja) | 仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、コンピューティング・システム、およびコンピュータ・プログラム | |
JPH0364893B2 (zh) | ||
KR930002945A (ko) | 프리페치버퍼 및 프리페치버퍼를 적용한 정보처리장치 | |
JP7443344B2 (ja) | 外部メモリベースのトランスレーションルックアサイドバッファ | |
US10740248B2 (en) | Methods and systems for predicting virtual address | |
KR102482516B1 (ko) | 메모리 어드레스 변환 | |
US8661169B2 (en) | Copying data to a cache using direct memory access | |
US6598124B1 (en) | System and method for identifying streaming-data | |
CN113448879A (zh) | 存储器管理 | |
US11494300B2 (en) | Page table walker with page table entry (PTE) physical address prediction | |
WO2002027498A2 (en) | System and method for identifying and managing streaming-data | |
CN114450668B (zh) | 电路和方法 | |
US9459998B2 (en) | Operations interlock under dynamic relocation of storage | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
JP7311959B2 (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 |