CN115964309A - 预取 - Google Patents

预取 Download PDF

Info

Publication number
CN115964309A
CN115964309A CN202211199523.4A CN202211199523A CN115964309A CN 115964309 A CN115964309 A CN 115964309A CN 202211199523 A CN202211199523 A CN 202211199523A CN 115964309 A CN115964309 A CN 115964309A
Authority
CN
China
Prior art keywords
dependency information
data items
prefetch
data
storage structure
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
Application number
CN202211199523.4A
Other languages
English (en)
Inventor
约瑟夫·迈克尔·普斯德斯
雅各布·马丁·德加斯佩里斯
亚历山大·科尔·舒利亚克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN115964309A publication Critical patent/CN115964309A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种用于预取数据项的技术。本发明涉及一种装置,该装置具有存储结构,该存储结构具有用于存储数据项的多个条目。该存储结构响应于来自处理电路的访问请求以提供对该数据项的访问。该装置具有用于预取数据的预取电路和用于存储针对多个数据项的相关性信息的相关性信息存储装置。该相关性信息针对该多个数据项中的每个数据项标识一个或多个相关数据项。该预取电路被配置为监测来自该处理电路的该访问请求。响应于检测到该相关性信息存储装置中针对特定访问请求的命中,该特定访问请求标识该相关性信息存储装置针对其存储相关性信息的请求数据项,该预取电路被配置为预取由该相关性信息针对该请求数据项标识的该一个或多个相关数据项。

Description

预取
背景技术
本技术涉及数据处理领域。更具体地,本技术涉及预取。
预取是这样一种技术,通过该技术期望从存储结构访问的数据被预先提取到该存储结构中,使得该数据在被请求时可用。这可以改进对存储结构访问的进行,因为通过预期将寻求访问的数据,可以在实际请求访问之前用该数据填充存储结构。这可以减少在访问请求之后将数据提取到存储结构中的潜在延迟。在由处理电路访问来自较高级别的高速缓存(进一步来自处理电路)的数据之前,可以例如在高速缓存分级结构内使用预取,以将该数据预取到较低级别的高速缓存(更靠近处理电路)中。因此,当针对该数据提出访问请求时,该数据被存储在更靠近处理电路的高速缓存中,并且因此可以被更快地访问。
发明内容
在一个示例性布置中,提供了一种装置,该装置包括:存储结构,该存储结构包括用于存储数据项的多个条目,其中该存储结构响应于来自处理电路的访问请求以提供对该数据项的访问;预取电路,该预取电路用于预取数据;以及相关性信息存储装置,该相关性信息存储装置用于存储针对多个数据项的相关性信息,该相关性信息针对该多个数据项中的每个数据项标识一个或多个相关数据项;其中该预取电路被配置为:监测来自该处理电路的该访问请求;以及响应于检测到该相关性信息存储装置中针对特定访问请求的命中,该特定访问请求标识该相关性信息存储装置针对其存储相关性信息的请求数据项,预取由该相关性信息针对该请求数据项标识的该一个或多个相关数据项。
在另一示例性布置中,提供了一种管理存储结构的方法:将数据项存储在该存储结构中,该存储结构包括多个条目;响应于来自处理电路的访问请求,提供对该数据项的访问;存储针对多个数据项的相关性信息,该相关性信息针对该多个数据项中的每个数据项标识一个或多个相关数据项;监测来自该处理电路的该访问请求;响应于检测到该相关性信息存储装置中针对特定访问请求的命中,该特定访问请求标识该相关性信息存储装置针对其存储相关性信息的请求数据项,预取由该相关性信息针对该请求数据项标识的该一个或多个相关数据项。
在又另一个示例性布置中,提供了一种非暂态计算机可读介质,该非暂态计算机可读介质用于存储用于制造装置的计算机可读代码,该装置包括:存储结构,该存储结构包括用于存储数据项的多个条目,其中该存储结构响应于来自处理电路的访问请求以提供对该数据项的访问;预取电路,该预取电路用于预取数据;以及相关性信息存储装置,该相关性信息存储装置用于存储针对多个数据项的相关性信息,该相关性信息针对该多个数据项中的每个数据项标识一个或多个相关数据项;其中该预取电路被配置为:监测来自该处理电路的该访问请求;以及响应于检测到该相关性信息存储装置中针对特定访问请求的命中,该特定访问请求标识该相关性信息存储装置针对其存储相关性信息的请求数据项,预取由该相关性信息针对该请求数据项标识的该一个或多个相关数据项。
附图说明
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
图1是其中可采用本文所述的技术的系统的框图;
图2是示出预取电路和相关性信息存储装置中的示例性相关性信息的框图;
图3A示出了数据的示例性布置;
图3B至图3C示出了用于提取图3A的数据的示例性时间线;
图4A至图4C示出了其中相关性信息与条目的特定数据项相关联的工作示例;
图5示出了其中相关性信息与特定程序计数器值相关联的工作示例;
图6示出了其中将新相关性条目添加到相关性信息存储装置中的工作示例;
图7示出了地址的压缩的示例;
图8示出了本技术的示例性分析;并且
图9A至图9B是示出由存储结构、预取电路和相关性信息存储装置执行的方法的流程图。
具体实施方式
在参考附图讨论实施方案之前,提供了对实施方案的以下描述。
可使用各种技术来执行预取。一种此类技术是步长预取,其中预取器被配置为将访问请求标识到具有与彼此的固定偏置的存储器地址。基于存储器访问将继续遵循相差恒定偏置的相同模式的假设,基于标识具有此偏置的存储器访问,预取器可开始预取相差该偏置的另外的地址。其它形式的预取类似地监测访问模式,并且如果观察到的存储器地址的模式继续,则基于该模式预测将寻求哪些存储器地址访问。
然而,此类预取技术不适用于某些形式的工作负载,并且将不能准确地预取寻求访问的数据。这种工作负载的一个示例涉及遍历链接表。在链接表中,每个节点包括列表中的下一节点的地址以及与该节点相关联的任何数据。一般来讲,不需要链接表的节点相继定位在存储器中或节点具有恒定偏置。因此,依赖于观察访问模式并预测该模式将继续的预取器在预取此类工作负载时通常表现不佳。
然而,另一种形式的预取—时间预取更擅长预测工作负载的访问模式,例如遍历链接表。利用时间预取,维持相关性信息(也称为元数据)以记录观察到的访问模式。相关性信息指示先前观察到的存储器访问序列,并且因此,响应于检测到该序列的存储器访问,时间预取器可预取该序列的其余部分。因此,时间预取涉及相关性信息的收集和维持,并设法预取这样的工作负载,对于该工作负载而言,无法仅仅从先前访问的模式预测即将到来的访问。因此,对于链接表的示例而言,在对链接表进行第一次遍历时,将存储这样的相关性信息,该相关性信息标识与链接表的节点相对应的存储器访问序列。然后,在对针对链接表的节点中的一个节点的存储器请求进行检测时,可通过预取器和预取的链接表的后续节点来标识针对该系列访问的相关性信息。应当理解,链接表是时间预取器特别适合的工作负载的示例,并且时间预取器可用于其它形式的工作负载,特别是没有在存储器地址空间上的空间模式,而是具有不规则但重复的访问模式的那些形式的工作负载。
根据本文所述的技术,提供了一种时间预取器,该时间预取器响应于直接从处理电路接收到的访问请求进行操作。该预取器监测从处理电路本身向存储结构发出的访问请求。这与其中预取器检测来自高速缓存的请求的技术相反。考虑到可由处理电路产生的访问请求的数量,通常预取器仅监测由于高速缓存未命中而产生的访问请求。以此方式,高速缓存采取行动以过滤需要由预取器监测的访问请求,因为高速缓存已经针对其存储数据项的任何访问请求都不会导致高速缓存未命中,并且因此不会产生针对预取器要处理的较高级别的高速缓存/主存储器的请求。
然而,通过响应于来自处理电路本身的访问请求进行操作,本技术能够提供这样的时间预取,该时间预取用于与从其产生访问请求的处理电路直接耦合的存储结构(例如,1级(L1)高速缓存)。考虑到此类存储结构与处理电路接近,准确预取到此类存储结构中可显著改善处理存储器访问的进行。此外,预取器具有对来自处理电路的所有访问请求的可视性,并且因此可基于访问请求主动地预取(即使该访问请求导致存储结构中的命中),而不是需要在预取器可预取下一数据项之前等待未命中。
另外,通过监测来自处理电路的访问请求,可为预取器呈现更多信息,从该更多信息作出关于是否应进行预取的确定。例如,在存储结构的每个条目存储多于一个的数据项(例如,高速缓存行中的多个数据项)的情况下,预取器可以能够监测该访问指向该条目中的哪个数据项,并且在预取中利用此信息,而仅看到由于存储结构中的未命中而出现的源自存储结构的请求的预取器将仅看到条目(例如,高速缓存行)而不是被请求的数据项本身,导致该条目被请求。因此,可执行更准确的预取,从而降低这样的可能性:条目将被错误地预取,从而导致存储结构中的现有数据项的位移。
根据本文所述的技术,提供了一种包括存储结构的装置。该存储结构包括用于存储数据项的多个条目。在一些示例中,该存储结构是高速缓存,诸如用于存储供处理电路使用的数据的高速缓存版本的数据高速缓存或用于存储待由处理电路执行的指令的高速缓存版本的指令高速缓存。该存储结构还可以是转换后备缓冲器(TLB)、分支预测器存储装置或实际上是用于预取器的元数据存储结构。该存储结构响应于从处理电路接收到的访问请求。该访问请求可例如通过负载指令的执行来触发,并且可以是将特定数据项加载到处理电路的寄存器中的请求,或者可例如由存储指令触发,并且可以是将特定数据项存储在存储结构中的请求。该访问请求也可采取其它形式,并且不需要通过指令的执行被直接触发。
该装置还包括用于预取数据的预取电路。该预取电路结合存储有针对多个数据项的相关性信息的相关性信息存储装置进行操作。因为当由处理电路产生访问请求时可能频繁地(例如,每个时钟周期若干次)标引相关性信息存储装置,所以相关性信息存储装置可靠近预取电路和处理电路在芯片上实现。例如,可提供专用存储装置以存储相关性信息,或者可将相关性存储在存储结构本身中,其中存储结构的条目重新用于存储此相关性信息。
该相关性信息存储装置存储针对多个数据项的相关性信息,然而,并非存储在存储结构中或更一般地对于处理电路而言可访问(例如,存储在较高级别的高速缓存/主存储器中)的所有数据项都可能具有相关性信息存储装置中的相关性信息。相反,当分配新相关性信息时,相关性信息存储装置可例如通过实现替换策略,以选择将最不相关的(例如,最近最少使用的)相关性信息从相关性信息存储装置移除,来仅维持被感知为最相关的相关性信息。
对于针对其存储相关性信息的该多个数据项中的每个数据项而言,相关性信息存储装置标识一个或多个相关数据项。当遇到与它们相关联的数据项(也称为触发数据项)时,这些相关数据项表示待预取的数据项。以此方式,相关性信息针对触发数据项指示在访问触发数据项之后期望访问的一个或多个相关数据项。
因此,当监测来自处理电路的访问请求时,如果预取电路检测到相关性存储装置中的命中,其中命中表示标识请求数据项的访问请求与相关性信息中的条目的触发数据项相匹配,则预取该一个或多个相关数据项。因此,表示相关数据项的知识的相关性信息(例如,由于先前观察到的访问序列)可用于告知哪些数据项被预取。如果从处理电路接收到的后续访问请求遵循由触发数据项及其相关联的一个或多个相关数据项所表示的序列,则那些数据项将已经被预取,并且因此可比尚未执行此预取操作时更快速地可用于处理电路。因此,以此方式预取数据项可减少处理来自处理电路的访问请求所花费的时间,从而改善存储结构的进行和/或该存储结构位于其中的存储结构分级结构。
如上所述,相关性信息针对该多个数据项中的每个触发数据项标识一个或多个相关数据项。因此,在一些示例中,相关性信息存储装置被配置为存储包括多个(即,两个或更多个)相关数据项的相关性信息。因此,通过预取该多个相关数据项,预取电路甚至可比限于预取仅单个项的系统更有效地预取数据项,因为单次访问可触发一系列数据项的预取,从而避免响应于即使当序列被正确预测时所遇到的每一个其它数据项而处理触发的开销。
在一些示例中,关于来自处理电路的访问请求是否在相关性信息存储装置中命中的确定是基于确定由访问请求指定的地址与触发数据项的地址相对应。该多个数据项中的每个数据项具有相关联的触发地址,使得当在基于该触发地址和由特定访问请求指定的地址的比较中检测到匹配时,检测到命中并预取由相关性信息针对该地址标识的相关数据项。该比较本身可以是访问请求的指定地址与触发地址之间的直接比较,或者可以是诸如最高有效位等地址中的每个地址的一部分之间的比较。例如,即使在地址本身可标识访问所寻求的该条目内的特定数据项的情况下,也可将对存储结构中的条目进行标识的地址的位进行比较。在一些示例中,可首先针对地址或其部分计算散列,然后在该比较中对散列进行比较。因此,虽然在罕见情况下,当两个不同的地址共享相同的散列时可能检测到错误的匹配,但可减少将触发地址存储在相关性信息存储装置中所需的空间量和/或减少执行该比较所需的时间。
预取电路可被配置为针对观察到的来自处理电路的每一个访问请求标引相关性信息存储装置。然而,在一些示例中,首先应用过滤器以降低必须标引相关性信息存储装置的速率。此过滤技术可考虑检测到命中的预期可能性,使得不太可能具有为其存储的相关性信息的访问被优先过滤掉并且因此不被监测。
相关性信息存储装置可被直接映射,使得相关性信息的项目被存储的位置可仅仅从地址来确定。因此,在确定是否针对特定访问请求存储相关性信息时,仅需检查相关性信息存储装置中的一个位置。然而,在一些示例中,组相联结构用于存储相关性信息。对于这种组相联结构而言,由访问请求指定的地址的索引部分用于标识相关性信息存储装置中的多个组中的哪一组对应于该地址。该组可包含多个相关性信息项。然后将指定地址的标签部分和与所标识的组中的相关性信息的项相关联的标签进行比较。如果在指定地址的标签部分和相关性信息的标签的比较(其可基于散列或地址本身)中检测到匹配,则检测到命中并存在针对指定地址存储的相关性信息。然而,如果在此比较中未检测到匹配,则未检测到命中,并且预取电路不具有预取所基于的相关性信息。
该存储结构可被布置成将两个或更多个数据项存储在存储结构的条目中。这可能是这样的情况,其中存储结构是高速缓存,并且条目是包含多于一个的数据项的高速缓存行。例如,可使用64字节高速缓存行,其包含两个32字节的字。因此,存储结构可响应于访问请求,该访问请求指定访问请求所指向的条目的特定数据项。也就是说,处理电路在访问请求中指定使用触发地址请求条目的数据项中的哪个数据项。与监测不包含此信息的访问请求(例如来自高速缓存的访问请求,该访问请求可能涉及整个高速缓存行并且不指定该高速缓存行的特定数据项)的方法相比,此方法允许对访问指向的数据项的更大可视性。
为了利用此信息并提供更准确的预取,相关性信息存储装置存储具体地与条目的数据项有关的相关性信息。因此,此相关性信息可不同于针对存储结构的相同条目,但针对该条目中的不同数据项存储在相关性信息存储装置中的单独的相关性信息。预取电路被配置为响应于对以下的确定而检测到命中:由访问请求标识的特定数据项对应于相关性信息存储装置针对其存储相关性信息的数据项。这可通过比较由访问请求指定的整个地址(或执行基于由访问请求指定的整个地址的比较)来完成。与其中仅比较地址的最显著部分的方法相比,通过使该比较(其可涉及比较散列而不是地址本身)基于整个地址,可区分涉及相同的条目(例如,高速缓存行)但不同的数据项的访问模式。返回到链接表的示例,因此,这允许在相同的高速缓存行中具有不同的节点的两个链接表以不同的方式被预取,对应于该特定链接表,而不是到达共享的高速缓存行中的节点并预取错误的链接表的后续节点。应当理解,这些技术不仅适用于链接表,还可与其它在时间上(或以其它方式)相关的访问一起使用。
可用于确定是否要将相关性信息的项目用作预取的基础的另一个因素是基于程序计数器值的比较。处理电路可维持程序计数器以标识待执行的下一指令。因此,当执行指令时,程序计数器的值指示程序流中的当前位置。本发明人认识到,存储器访问的相关模式通常与代码的循环相关联,并且因此相同指令的执行将导致相关性信息的访问模式可被存储并用于执行预取。因此,即使当另一不同的指令访问相同的数据项时,也可能不期望该访问之后的访问模式与第一指令的访问模式相同。因此,为了考虑触发访问请求的指令,相关性信息存储装置被布置成存储由程序计数器值标记的相关性信息。利用被存储并用于对相关性信息存储装置中的相关性信息的项目进行标识的程序计数器值(或其散列),由预取电路检测到命中还经历在比较中检测到匹配,该比较基于针对触发特定访问请求的指令的程序计数器的值和数据项的相关性信息的程序计数器值。此比较可以是程序计数器值或程序计数器值的部分之间的直接比较,或者可以是从程序计数器值导出的值(例如,基于程序计数器值计算的散列)的比较。
与涉及通过监测来自处理电路本身的访问来监测来自存储结构本身的访问请求的方法相比,该访问请求可仅指定针对存储结构请求的条目(例如,高速缓存行),处理电路的程序计数器值可由预取电路观察,并且既可用于生成包括该程序计数器值的相关性信息,又可用于比较以确定是否存储了与特定访问请求有关的相关性信息,并因此确定是否应该执行预取。监测程序计数器值可能是不合适的,或者在不监测直接来自处理电路的访问的系统中甚至是不可能的。这首先是因为可能无法确定传播到存储结构分级结构的较高级别的访问的程序计数器值。另外,通过仅监测来自较低级别的存储结构的访问,观察到的访问仅仅是导致存储结构中的未命中的访问。因此,如果来自处理电路的两个不同的访问对存储结构中的相同条目进行访问,则可能的是,这些访问中的仅一个访问将导致高速缓存未命中并因此被观察到。
在一些示例中,基于如上所述的程序计数器值的此比较与基于访问请求指向的特定数据项的比较结合执行。这些比较可组合,使得在地址和程序计数器值的散列之间发生单个比较。在此类示例中,地址(其可包括地址的所有位)和程序计数器值的散列用于标识相关性信息存储装置中的相关性信息。响应于来自处理电路的访问请求,计算由访问请求指定的地址的散列和与该请求相关联的处理电路的程序计数器值,并且标引相关性信息存储装置,以确定是否针对该地址和程序计数器值存储相关性信息。这可通过以下方式来提供特别准确的预取方法:区分涉及存储结构中相同条目内的不同数据项和触发访问的不同指令的访问模式。这在这样的情况下可能是有用的,其中认识到,即使其涉及存储结构的相同条目,此类不同的访问模式也不被期望是相关的。
在一些示例中,预取电路被配置为将数据预取到存储结构本身中,并且因此预取该一个或多个相关数据项包括将该一个或多个相关数据项预取到存储结构中。这可能是这样的情况,其中存储结构是L1高速缓存,并且因此监测针对存储结构的访问请求以便控制到该L1高速缓存中的预取。然而,在一些示例中,该装置包括第二存储结构,数据被预取到该第二存储结构中,并且因此预取该一个或多个相关数据项包括将该一个或多个相关数据项预取到第二存储结构中。在此类示例中,存储结构可以是分级结构中处于不同级别的存储结构,例如高速缓存分级结构中的2级(L2)高速缓存。然而,监测从L1高速缓存到L2高速缓存的访问请求可意味着,通过预取电路仅可观察到与来自L1高速缓存的缓存未命中相对应的访问请求。类似地,如果预取电路将仅监测针对L2高速缓存的请求,则无法观察到程序计数器值和访问指向的特定数据项(而不是整个高速缓存行)。因此,该装置可基于观察到的从处理电路到存储结构(例如,L1高速缓存)的访问来提供到第二存储结构(例如L2高速缓存)中的预取。
如上所述,预取电路可将由相关性信息标识的相关数据项预取到存储结构本身中,或者在一些情况下可将数据项预取到不同的存储结构中。在一些示例中,除了将其预取到存储结构或第二存储结构中的此预取之外,预取电路还被配置为触发将用于执行针对相关数据项执行地址转换的一个或多个转换条目预取到转换后备缓冲器(TLB)中。也就是说,在包括用于存储地址转换数据的TLB的装置中,处理电路可生成指定所请求的数据项的虚拟地址的访问请求。为了将此虚拟地址转换为供存储结构使用以标识数据项的地址,可标引转换数据。TLB存储此转换数据的高速缓存版本,使得不需要针对每次转换标引存储转换数据的主存储器中的页表。然而,在TLB中不存在相关转换可能导致数据项访问的延迟,因为可能需要从较高级别的TLB或从主存储器获得转换数据,然后才能实施转换并处理访问请求。因为用于寻找转换数据的页表遍历(page table walk)可能会花费显著量的时间,所以主动提取被预期需要进入TLB中的转换数据可改善处理访问请求的进行。因此,当在相关性信息存储装置中检测到针对特定访问请求的命中,并且因此相关性信息指示期望的即将到来的访问时,预取电路不仅可触发将数据项本身预取到TLB中,还可触发将针对该一个或多个相关数据项的转换条目预取到TLB中。
可以多种方式填充相关性信息存储装置,然而,在一些示例中,响应于存储结构中的访问请求未命中,将相关性条目添加到相关性信息存储装置中。也就是说,当由访问请求指定的数据项在存储结构中不存在,并且因此数据项未由预取电路预取时,预取电路可被布置成将相关性条目添加到相关性信息,使得在该数据项之后观察到的访问模式可在下次遇到该数据项时被预取。也就是说,针对由未命中访问请求(其可标识请求的地址和程序计数器值)指定的数据项添加相关性条目,该相关性条目将在未命中访问请求之后访问的一个或多个后续数据项标识为该一个或多个相关数据项。以此方式,该装置能够从遇到的数据访问的模式进行学习,使得预取电路可在下次遇到所访问的数据项的序列时预取该序列。
因为相关性信息存储装置中的空间可能有限,所以可施加替换策略,以便当将新相关性信息分配到相关性信息存储装置中时确定应该去除哪些相关性信息,从而为新相关性信息留出空间。可使用多个可能的替换策略,但是在一些情况下,维持对最近最少使用的相关性信息片(在特定组中,其中相关性信息存储装置是组相联的;或总体的,其中相关性信息存储装置是全相联的)的指示,并且将最近最少使用的相关性信息片(对于组相联的相关性信息存储装置而言在新相关性信息所属的组中)替换为新相关性信息。在其它示例中,为了实现替换策略,针对相关性信息存储装置中的每个条目维持计数器,以计算到给定条目的尝试分配的数量。在一定值处,该计数器饱和,其用于指示易于被替换的条目。在尝试分配到对于其而言计数器未饱和的条目时,分配被丢弃,条目中的现有内容被维持,并且计数器递增。然而,在尝试分配到对于其而言计数器饱和的条目时,内容被替换并且计数器重置为0。这可例如用于被直接映射的结构中(每个相关性片仅具有其中可对其进行分配的一个条目)。
在一些示例中,该装置设置有针对不同类型的预取受到调控的若干预取机制。例如,除了实现如所讨论的时间预取器的预取电路之外,该装置还可设置有步长预取器和/或流缓冲器预取器,以预取与观察到的访问请求的地址之后的后续存储器地址相对应的数据块。
因为可限制可用于存储相关性信息的空间量,特别是在相关性信息存储在芯片上的情况下(这可能特别是这种情况,因为频繁地标引相关性信息),所以预取电路可被配置为抑制向相关性信息存储装置添加新相关性信息,其中确定其它预取机制中的一个或多个预取机制能够预取该一个或多个后续数据项。也就是说,如果预取电路标识时间预取器可用于预取特定工作负载,但该工作负载也可由该装置的另一预取机制预取,则针对该工作负载的相关性信息可能不会被存储并且预取留给其他预取机制,以便节省相关性信息存储装置中这样的空间,该空间用于与其它预取机制不适合的工作负载有关的相关性信息。
在一些示例中,为了改善对相关性信息存储装置中的可用空间的使用,压缩对该一个或多个相关数据项的指示,从而使得与未使用压缩时相比,可存储与更多触发数据项有关的相关性信息。
存在可实现压缩的多种方式。然而,在一些示例中,通过存储基地址以及针对每个相关数据项存储该基地址与相关数据项的地址之间的增量,压缩相关数据项。在一些示例中,基地址包括相关数据项之间的公共位,并且当公共位被去除时,该增量包括来自相关数据项的地址的其余位。可通过将该增量与公共位连接来解压缩地址。作为另选方案,该增量可以是与基地址的偏置(例如,经由减法实现),其中前导零(或一)被去除。然而,此类示例可为相关性信息的单个项目提供可变数量的增量。在一些示例中,可使用二元运算符(例如XOR)并且又通过去除前导零(或一)来计算偏置。其它选项将是技术人员已知的。
该相关性信息存储装置可以多种方式来实现。例如,相关性信息可被存储在芯片外并且在需要时进行访问,然而,考虑到标引来自处理电路的每一个访问请求所需的对相关性信息的访问的潜在频率,片上存储可能是优选的。这种片上存储可涉及利用存储结构本身,其中存储装置中的存储条目重新用于存储相关性信息。因此,存储结构可适于将存储结构中的该多个条目中的一个或多个条目视为相关性存储条目以存储相关性信息。虽然此方法避免了另外提供专用相关性信息存储结构的需要,但是存储结构本身可能需要适于以不同于存储结构中的其它信息的方式处理相关性信息,例如,通过利用针对相关性信息的单独替换策略。
然而,在一些示例中,专用相关性信息存储电路被提供为该装置的一部分,其中此相关性信息存储电路实现相关性信息存储。通过以此方式提供专用电路作为该装置的一部分,相关性信息存储电路可被定位为使得可响应于来自处理电路的访问请求快速访问相关性信息,并且不需要修改存储结构本身来处理存储在其中的相关性信息。
本文所描述的概念可体现于用于制造体现所描述概念的装置的计算机可读代码中。例如,计算机可读代码可在半导体设计和制造过程的一个或多个阶段(包括电子设计自动化(EDA)阶段)使用,以制造包括体现这些概念的装置的集成电路。以上计算机可读代码可另外地或另选地使得能够对体现本文所描述概念的装置进行定义、建模、模拟、验证和/或测试。
例如,用于制造体现本文所描述概念的装置的计算机可读代码可体现在定义这些概念的硬件描述语言(HDL)表示的代码中。例如,代码可定义用于定义体现这些概念的装置的一个或多个逻辑电路的寄存器传送级(RTL)抽象。代码可用Verilog、SystemVerilog、Chisel或VHDL(超高速集成电路硬件描述语言)以及诸如FIRRTL的中间表示来定义体现装置的一个或多个逻辑电路的HDL表示。计算机可读代码可提供使用系统级建模语言诸如SystemC和SystemVerilog体现概念的定义或概念的其他行为表示,这些行为表示可由计算机解译以使得能够对概念进行模拟、功能和/或形式验证和测试。
另外地或另选地,计算机可读代码可定义体现本文所描述概念的集成电路部件的低级描述,诸如一个或多个网表或集成电路布局定义,包括诸如GDSII的表示。一个或多个网表或集成电路部件的其他计算机可读表示可通过将一个或多个逻辑合成过程应用于RTL表示以生成用于制造体现本发明的装置的定义来生成。另选地或另外地,一个或多个逻辑合成过程可从计算机可读代码生成待加载到现场可编程门阵列(FPGA)中以将FPGA配置为体现所描述概念的位流。FPGA可出于在制造集成电路之前验证和测试概念的目的被部署,或者FPGA可直接部署在产品中。
计算机可读代码可包括用于制造装置的代码表示的混合,例如包括RTL表示、网表表示或在半导体设计和制造过程中用于制造体现本发明的装置的另一计算机可读定义中的一者或多者的混合。另选地或另外地,概念可在半导体设计和制造过程中用于制造装置的计算机可读定义和定义一旦制造就将由所定义装置执行的指令的计算机可读代码的组合中定义。
此类计算机可读代码可设置在任何已知的暂态计算机可读介质(诸如通过网络进行的有线或无线代码传输)或非暂态计算机可读介质诸如半导体、磁盘或光盘中。使用计算机可读代码制造的集成电路可包括诸如以下中的一者或多者的部件:中央处理单元、图形处理单元、神经处理单元、数字信号处理器或单独或共同体现概念的其他部件。
现在将参考附图描述特定示例。
图1是其中可采用本文所述的技术的装置2的框图。图1描绘了被提供用于执行指令的处理电路10。处理电路10经由包括多个级别的高速缓存22、24、26的高速缓存分级结构耦合到主存储器。在该示例中,提供了单独的L1数据高速缓存22和L1指令高速缓存24,该两者均耦合到共享的L2高速缓存26。处理电路10可发出请求,该请求指定处理电路10所需的内容的地址。该内容可包括待由处理电路10执行的指令和/或当执行那些指令时待由处理电路10操纵的数据值。处理电路10具有提取级12,该提取级寻求从将需要由处理电路10执行的存储器指令进行提取。提取级12具有对呈分支预测器50的形式的分支预测电路的访问权限,以预测通过计算机程序的指令流,并且因此预测接下来应提取哪些指令。分支预测器50利用分支预测存储装置28来存储用于预测分支信息中的数据,诸如是否将采取/不采取分支,以及那些分支的目标地址。提取级12通常将参考提取请求中的地址输出一次提取指令块,并且将向L1指令高速缓存24发出那些提取请求。
类似地,处理电路10的执行级18将向L1数据高速缓存22发出指定地址的访问请求,例如以请求将数据从寄存器70写入存储器,或请求将数据加载到寄存器70中。当从处理电路10发出指定地址的请求时,在L1数据高速缓存22内执行查找操作,以确定该地址是否与存储在L1数据高速缓存22内的数据项的地址相匹配,并且如果匹配,则该数据项可被返回到处理电路10。
在L1数据高速缓存22内的未命中的情况下,则L1数据高速缓存22可将请求传播到共享的L2高速缓存26上,导致在L2高速缓存26内执行查找操作以确定其中是否存在所需数据。如果存在,则由请求地址所标识的数据可被返回到L1数据高速缓存22,以便向前传播回处理电路10。除了传播回处理电路10之外,来自L2高速缓存26的那些检索数据通常将被分配到L1高速缓存22中的高速缓存行中。
类似地,如果基于请求在L2高速缓存26内未检测到命中,则请求可传播到高速缓存分级结构中任何其它另外的级别的高速缓存上,并且在不存在于任何此类级别的高速缓存中检测到的命中的情况下,则请求可传播到主存储器上,以便从主存储器检索请求的数据。然后可通过高速缓存分级结构传播回指令以提供到处理电路10。
尽管已经详细讨论了响应于针对来自执行级18的数据的请求而操作的L1数据高速缓存22的操作,但应理解,可由响应于针对来自处理电路10的提取级12的指令的请求而操作的L1指令高速缓存24应用类似的技术。
预取电路42、44、46与高速缓存22、24、26相关联地提供,以监测来自处理电路10的请求,并且应用预测机制来寻求预测将在未来的某个点处请求哪些内容。因此,预取电路42、44监测由相关联的高速缓存42、44接收到的访问请求,然而,对于与L2高速缓存26相关联的预取电路46而言,根据本文所述的技术,预取电路46监测由处理电路10发出的访问请求,并且因此这可能不直接对应于由L2高速缓存26接收到的访问。然而,在一些情况下,用于L2高速缓存26的预取电路46也可检测来自L1高速缓存22、24的针对高速缓存26的请求。预取电路42、44、46利用相关性信息存储装置82、84、86将代表观察到的模式的数据存储在与一系列请求相关联的地址中,并且被标引以预测将要请求的内容的地址。
与每个高速缓存相关联的预取电路可监测来自处理电路10的访问请求,以便寻求预测未来的需求访问,并且然后寻求在发出此类需求访问之前将内容预取到相关联的高速缓存中,从而增加相关联的高速缓存的情况下的命中率。将关于后续附图更详细地讨论预取电路42、44、46的操作。
然后,通过提取级12提取的指令传递到解码级14,在该解码级处,该指令被解码以便产生经解码指令(有时也称为宏操作),然后将该经解码指令存储在发出级16内。一旦源操作数可用于那些经解码指令,则那些经解码指令可传递到执行级18以执行。当执行指令时,可从寄存器库检索所需的源操作数值,并可将通过执行那些指令产生的结果存储回寄存器库的指定寄存器中。可执行加载指令和存储指令,以便将数据值从存储器加载到寄存器库70中,或者将数据值从寄存器库70存储回存储器系统中。如图1所示,处理电路10维持程序计数器寄存器72存储指示待执行的下一指令的程序计数器值。
如图1所示,当执行加载指令或存储指令时,执行级将与L1数据高速缓存22交互,并且从其到一个或多个较低级别的高速缓存/主存储器。
在图1所示的示例中,假设在分级结构的1级高速缓存级处,存在单独的L1指令高速缓存24和单独的L1数据高速缓存22。虽然也可在一个或多个其它级别处使用单独的高速缓存,但是在一个示例性布置中,包括L2高速缓存26在内的所有其它级别的高速缓存都可以是存储指令和数据两者的统一的高速缓存。然而,应当理解,可使用其它高速缓存分级结构,甚至更多或更少或以不同方式布置的高速缓存。
处理电路10可被布置成使用虚拟地址来指代存储器位置,其中这些虚拟地址不同于用于指代主存储器中的实际位置的物理地址。因此,装置2可设置有存储器管理单元(MMU)60,以执行从由处理电路10的执行级18指定的虚拟地址到物理地址的地址转换,该物理地址可在针对访问数据的请求中提供给L1数据高速缓存22。存储用于在虚拟地址与物理地址之间转换的转换数据的页表存储在主存储器中。然而,为了避免在每次需要执行转换时必须标引主存储器并执行耗费时间的页表遍历以标识地址转换数据的正确项目,MMU 60被布置成标引转换后备缓冲器(TLB)30,该TLB高速缓存地址转换数据的子组。尽管图1中未示出,但也可与指令提取路径相关联地提供MMU和相关联的TLB结构,以将由提取级发出的虚拟地址转换为物理地址。
分支预测器50、MMU 60和预取电路42、44、46的存储结构28、30、82、84、86也可分别设置有它们自己的预取电路(未示出),以使用本文所述的技术将数据预取到那些存储结构中。
图2是示出相关性信息存储装置42中的预取电路22和示例性相关性信息的框图。本讨论将集中于L1数据高速缓存22,然而,应当理解,本技术可应用于图1的其它高速缓存24、26,并且实际上可应用于装置2中的其它存储结构28、30、82、84、86。
如上所述,L1数据高速缓存22响应于从处理电路10接收到的访问请求进行操作。该访问请求标识访问所寻求的数据项,并且如果高速缓存22存储有访问所请求的数据项,则高速缓存22提供对该数据项的访问。另一方面,如果高速缓存22未存储所请求的数据项,则高速缓存22向L2高速缓存26(其本身提供数据或从较低级别的高速缓存/主存储器请求数据)发出针对该数据项的请求。为了避免从较低级别的高速缓存请求数据的延迟,与L1数据高速缓存22相关联地提供预取电路42,以基于预测访问将要寻求的数据项的地址来主动地且推测地将数据提取到高速缓存22中。
预取电路42实现时间预取器,如图所示,针对该时间预取器将相关性信息存储在相关性信息存储装置82中。在该示例中,提供专用相关性信息存储电路以存储相关性信息。
相关性信息包括触发数据项,如在相关性信息存储装置的左侧所示,并且针对每个触发数据项存储了对应的相关数据项。如图2所示,对于触发数据项A而言,标识了相关数据项B、C和D。因此,如果监测来自处理电路10的访问请求的预取电路42检测到针对数据项A的访问请求,则预取电路42将触发从L2高速缓存26对数据项B、C和D的预取,于是L2高速缓存26本身可向L1数据高速缓存22提供数据项,或者可能需要从较低级别的高速缓存/主存储器提取那些数据项。因此,当处理电路10请求数据项B、C和D时,它们将已经存在于L1数据高速缓存22中,并且因此与当数据项被请求时必须单独地提取数据项中的每个数据项相比,可减少针对待由处理电路10提供的访问所耗费的时间。
如图2中进一步所示,相关性信息针对触发数据项p存储相关数据项*p、**p和***p。将参考图3A至图3C讨论在预取中利用这些相关数据项的装置操作。
图3A示出了多个高速缓存行302、304、306、308的示例。这些高速缓存行中的每个高速缓存行包含指针p、*p、**p、***p。指针布置在“链接表”中,使得第一指针p指向存储第二指针*p的存储器地址。第二指针*p指向存储第三指针**p的存储器地址。第三指针**p指向存储第四值***p的存储器地址。在该示例中,第四值是数据值而不是对另一存储器位置的标引。这种场景可能出现在编程语言(例如C)中,其中允许“指针”的类型,该指针是这样的数据值,该数据值指代存储有另一数据值(可能是另一指针)的存储器中的位置。如该示例中所示,数据值中的每个数据值占据其自身的高速缓存行302、304、306、308。这可能由于使用虚拟存储器而产生。特别地,即使虚拟存储器位置位于特别靠近的范围内,也不能保证那些虚拟地址与其有关的物理地址在空间上彼此靠近。因此,即使虚拟地址可能紧靠在一起,物理地址中的每个物理地址也可能位于不同的高速缓存行中。
图3B是示出针对数据值p、*p、**p、***p中的每个数据值所耗费的时间的时间线,这些值有待在这些值中的每个值最初都存储在主存储器中的情况下被处理。例如,在针对这些值的预取已经失败(例如,第一次遇到链接表)的情况下,可能出现这种情况。最初,从存储器提取包含第一指针p的第一高速缓存行302。一旦检索到此,就会发生高速缓存填充操作。然后分析值p,并且确定值p是指向第二高速缓存行304中的第二数据值的指针。因为第二数据值*p尚未被预取,所以必须再次从存储器对其进行提取。这又耗费一段时间,并且对检索到的数据值*p进行第二填充操作。再次对其进行分析并确定其为另一指针。因此,必须进行从存储器的另一检索,之后必须对数据填充**p进行第三填充操作。最后,分析此数据值并确定其为另一指针。因此必须从存储器检索指向的地址,并且必须对数据值***p进行第四填充操作。作为此动作序列的结果,出现长存储器等待时间。特别地,为了经由其指针序列访问潜在的数据值,有必要执行多个解标引(dereferencing)操作,其中每个操作都需要访问主存储器。如果没有数据值存储在存储器分级结构中,则这需要多个访问操作,其因此是耗时的。应当理解,因为高速缓存行302、304、306、308可能都不在空间上靠近,并且因为尚未预取第一值p,所以可能不存在通过其已经预取任何其它值的机制。因此,在诸如链接表等的某些情况下,可能需要长时间来遍历列表。
图3C是示出针对数据值p、*p、**p、***p中的每个数据值所耗费的时间的时间线,这些数据值有待在预取电路42包含图2所示的相关性信息的情况下被处理。具体地,相关性信息存储装置82包含条目,对于该条目而言,p是触发数据项,并且*p、**p、***p被标识为相关数据项。在图3B所示的情况之后可能会出现这种情况,其中发生了高速缓存未命中,并且因此预取电路42将与触发数据项p相关联的相关数据项*p、**p、***p作为新条目添加到关联信息存储装置82。因此,当对数据项p进行访问时,会发生针对p的数据填充(假设p尚未存在于高速缓存22中)。除了填充p之外,预取电路42还标识针对p的访问请求与相关性信息存储装置82中的触发数据项p相匹配。因此,预取电路42预取相关数据项*p、**p、***p,预期这些数据项将由处理电路10提出请求。因此,一旦指针p已被分析且被标识为指针,则请求*p。在这种情况下,*p已经存在于L1数据高速缓存22中,并且因此可满足此请求,而不必从高速缓存分级结构的较低级别请求数据。类似地,当由处理电路提出请求时,可直接提供**p和***p,而不必首先从分级结构的较低级别获得。因此,利用如所描述操作的预取电路42,减少了遍历链接表所耗费的时间,从而改善了处理电路10的进行。
图4A至图4C示出了其中相关性信息与条目的特定数据项相关联的工作示例。图4示出了包含两个数据字p1和p2的高速缓存行402的内容。p1和p2表示可被独立寻址和访问的单独的数据片。
图4B示出了这样的示例,其中L1高速缓存22与维持相关性信息的预取电路42结合操作,该相关性信息不在高速缓存行的哪个数据项被访问之间进行区分。因此,响应于图4B所示的一系列访问(以从底部到顶部然后从左到右的序列发生),通过存储对在p2之后访问的相关数据项进行标识的相关性信息,预取电路初始地对作为针对p2的访问请求的结果而发生的高速缓存未命中作出反应。因此,预取电路42存储p作为触发数据项,并存储Y和Z作为相关数据项。
然而,此相关性信息响应于序列A1、p1、C2、D1而被覆盖,因为预取电路42不在访问p1和p2之间进行区分。因此,基于观察到序列p1、C2、D1,相关性信息存储装置被作为触发数据项的p覆盖,并被作为相关数据项的C和D覆盖。
因此,当之后再次遇到初始序列p2、Y1、Z2时,在检测到访问p2作为对高速缓存行P的访问(但不区分正在访问高速缓存行的哪个数据项)时,预取电路42触发对数据项C和D的预取,如图4B的底部所示。然而,这些不是随后由处理电路10请求的数据项。相反,重复涉及p2的序列,并且因此所请求的后续数据项是Y1和Z2。这些数据项未被预取,因为标识这些数据项的相关性信息被覆盖。因此,自此引入了提供对Y1和Z2的访问的延迟,虽然这些数据项是从分级结构中的较低级别提取的。
图4C示出了针对L1高速缓存22的相同的访问请求序列,然而,在这种情况下,预取电路42维持相关性信息,该相关性信息标识触发数据项与其有关的高速缓存行的数据项。因此,一观察到访问序列p2、Y1、Z2,响应于应当提取相关数据项Y和Z中的哪个,预取电路42就立即将条目添加到相关性信息,该相关性信息将数据项p1具体地标识为触发数据项。当接着观察到涉及p1、C2和D1的序列时,为相关性信息中的单独条目添加作为触发数据项的p1以及作为相关数据项的C和D。
因此,当再次遇到序列p2、Y1、Z2时,一检测到针对p2的访问请求,就立即由预取电路42在相关性信息中标识正确的序列,并利用预取的那些高速缓存行正确预测对高速缓存行Y和Z的随后访问。因此,当再次遇到此序列时,高速缓存行Y和Z可被预取到高速缓存22中,从而减少满足针对Y1和Z2的访问请求的等待时间。因此,可以看出,通过标识相关性信息中的触发信息数据项与其有关的高速缓存行的数据项,可使预取电路42更准确地操作,并由此减少针对满足访问请求所耗费的时间。
图5示出了其中相关性信息与特定程序计数器值相关联的工作示例。如图4的示例那样,示出了从处理电路10到L1高速缓存22的访问请求序列,并且示出了从L2高速缓存26的对应的提取和预取。如图5所示,也在访问请求中指定了这样的程序计数器值,该程序计数器值表示存储在程序计数器寄存器72中的程序计数器的值。
预取电路42具有对指定触发数据项(其在这种情况下对于相关性信息的两个项目而言为A)的地址和相关联的程序计数器值(分别为0×01和0×04)两者的相关性信息的访问权限。此相关性信息可基于先前观察到的访问模式,其中观察到,取决于导致访问请求的指令是具有0×01还是0×04的程序计数器值,触发项A之后的访问序列不同。
因此,响应于检测到由与程序计数器值0×01相关联的指令触发的针对数据项A的访问请求,除了提取高速缓存22中未命中的数据项A之外,预取电路42还被配置为:标引相关性信息存储装置,标识针对数据项A和程序计数器值0×01的组合存储了相关性信息,并且因此触发对相关数据项B、C和D的预取。具有相同程序计数器值0×01的接下来的访问请求是针对B和C的,并且因此预取电路42已经正确地预取了此序列中的接下来的数据项。此序列可对应于循环,并且因此将预期相同的指令可能导致访问请求通过此方式的序列进行,并且因此程序计数器值将与该特定序列相关。
然而,一遇到针对相同数据项A但由具有不同的程序计数器值0×04的指令触发的访问请求,就预取不同组的数据项X、Y和Z。因此,基于不同的程序计数器值识别和预取不同的访问序列。因此,通过另外地将待预取的数据项基于触发预取的访问请求的程序计数器值,可进一步提高预取的准确性。
图6示出了其中将新相关性条目添加到相关性信息存储装置中的工作示例。如图所示,对L1高速缓存22进行一系列访问。预取电路42最初具有对这样的相关性信息的访问权限,该相关性信息具有带触发数据项A和两个相关数据项B和C的条目。因此,响应于访问请求标识数据项A,预取电路42预取数据B和C,如图6所示。
然而,最初没有针对数据项D、E和F中的任一个数据项的相关性信息。因此,当遇到指向D、E和F的访问请求并且这些数据项不存在于L1高速缓存22中时,必须针对每个访问请求执行单独的填充操作。基于检测到高速缓存中的未命中,预取电路42被配置为将另外的相关性信息条目添加到该相关性信息。相关性信息条目将D标识为触发数据项,并将E和F标识为在遇到D时要预取的相关数据项。因此,可基于所遇到的访问请求来更新相关性信息,从而提高对重复访问序列的预取的准确性。
如图6所示,还提供了另外的预取机制602,例如步长预取器或流缓冲器预取器。为了避免用用于预取工作负载的相关性信息填充相关性信息存储装置,该工作负载可由不需要存储相关性信息的另一个预取机制正确预取,预取电路42被布置成确定该另外的预取机制602,或者所提供的多个另外的预取机制中的任何一个另外的预取机制,是否可用于正确预取由预取电路42标识的工作负载。如果是这种情况,那么如果再次遇到该序列,则预取电路42抑制新相关性信息的添加,而不依赖于该另外的预取机制602以预取该序列中的数据项。
图7示出了可如何使用压缩以便压缩存储在相关性信息存储装置中的相关数据项的示例。在该示例中,提供了多个输入地址。输入地址中的每个输入地址都包含多个前置公共位。在该示例中,公共位为“0×0a8”。因此,通过提取这些位并通过将它们表达为基地址,可将剩余的地址表达为一系列增量值。在该示例中,可通过只是将基地址与该增量中的每个增量连接来进行解压缩。
在其它实施方案中,可通过在基地址与目标地址之间执行减法而从目标地址导出增量。然后可通过执行将增量加到基地址来进行解压缩。其它技术将是技术人员已知的。
在一些实施方案中,相关性信息存储装置中的每个条目都可指定所提供的压缩程度。特别地,可提供指示构成基地址的位的数量的多个不同的压缩级。例如,一级压缩可对应于用于构成基地址的两个位。二级压缩可用于指示用于基地址的四个位,三级具有六个位,并且四级具有八个位。压缩级将被设定为对于一组相关地址而言可能的最高级。例如,如果所有相关地址仅具有六个常见的前置位,则压缩级将被设定为三级(六个位)。类似地,如果所有输入地址共同具有七个位,则四级压缩将不是适当的,因为这将包括基地址中的非公共位。因此,级别将被设定为三级。以此方式,相关性信息存储装置中的每个条目可根据需要使用不同级别的压缩。这允许在一些情况下进行最大压缩,同时还允许高度不同(或远离彼此)的地址形成相同相关性的部分,并且由此存储在相同的相关性信息存储装置中。
图8示出了图表,并且示出了本技术的示例性分析,特别是对不同高速缓存大小的L1高速缓存的等待时间的分析。特别地,该图表显示,直到约64kB的高速缓存大小,本技术的等待时间大致反映了先前提出的示例的等待时间。然而,尽管在先前的技术中,超过64kB的高速缓存大小的增加导致了等待时间的急剧增加,但本技术继续提供较低的等待时间。对于约192kB的高速缓存大小而言,该分析均适用于以下两种情况:本技术仅适用于L1高速缓存的情况,以及本技术适用于L1高速缓存和预取电路两者的情况,该预取电路用于触发将转换条目预取到TLB中,如上文更详细描述的。然而,超过192kB的高速缓存大小时,存在与将转换条目预取到TLB中以及将数据预取到L1高速缓存中相关联的附加的等待时间改善。
显然,技术人员将理解,图8示出了在一个示例性具体实施中实现的改善,并且其它具体实施中的改善例如可更大。
图9A是示出根据示例的由存储结构执行的方法的流程图。存储结构例如可以是高速缓存,诸如高速缓存22、24、26,或者可以是分支预测器存储装置28、转换后备缓冲器30或相关性信息存储装置82、84、84。在步骤902处,数据存储在存储结构中,该存储结构具有用于存储数据的多个条目。应认识到,所存储的数据的类型将取决于存储结构的形式。响应于访问请求,如由步骤904所指示的,在步骤906处提供对存储结构中的数据项的访问。这例如可涉及将数据提供给处理电路10,或将数据从处理电路10写入存储结构。
图9B是示出由预取电路42、44、46和相关性信息存储装置82、84、86执行的方法的流程图。在步骤912处,描绘了针对多个数据项的相关性信息存储在相关性信息存储装置中,该相关性信息针对数据项标识一个或多个相关数据项。响应于如在步骤914处所描绘的来自处理电路10的访问请求,预取电路标引相关性信息存储装置,以确定是否在步骤916处存储对应于该访问请求的相关性信息。此确定可涉及基于访问请求的地址和/或与触发访问请求的指令相关联的程序计数器值的比较。如果在相关性信息存储装置中检测到命中,则在步骤918处,预取电路预取与由访问请求标识的请求数据项相关联的相关数据项。因此,这些数据在存储结构中可用,以用于通过指定预取数据项的后续访问请求进行访问。
在本申请中,字词“被配置为…”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化和修改。

Claims (20)

1.一种装置,所述装置包括:
存储结构,所述存储结构包括用于存储数据项的多个条目,其中所述存储结构响应于来自处理电路的访问请求以提供对所述数据项的访问;
预取电路,所述预取电路用于预取数据;以及
相关性信息存储装置,所述相关性信息存储装置用于存储针对多个数据项的相关性信息,所述相关性信息针对所述多个数据项中的每个数据项标识一个或多个相关数据项;
其中所述预取电路被配置为:
监测来自所述处理电路的所述访问请求;以及
响应于检测到所述相关性信息存储装置中针对特定访问请求的命中,所述特定访问请求标识所述相关性信息存储装置针对其存储相关性信息的请求数据项,预取由所述相关性信息针对所述请求数据项标识的所述一个或多个相关数据项。
2.根据权利要求1所述的装置,其中:
所述相关性信息存储装置被配置为存储针对所述多个数据项中与触发地址相关联的每个数据项的所述相关性信息;并且
所述预取电路被配置为响应于在比较中检测到匹配而检测到命中,所述比较基于由所述特定访问请求指定的地址和针对数据项的相关性信息的所述触发地址。
3.根据权利要求2所述的装置,其中:
所述存储结构被布置成将两个或更多个数据项存储在条目中,并且所述存储结构响应于指定地址的访问请求,所述地址指示所述访问请求指向的条目的特定数据项;
所述触发地址标识与所述触发地址相关联的所述相关性信息与条目的哪个数据项有关;并且
所述预取电路被配置为响应于以下项而检测到命中:确定由所述特定访问请求标识的所述特定数据项对应于所述相关性信息存储装置针对其存储相关性信息的数据项。
4.根据权利要求3所述的装置,其中:
所述相关性信息存储装置被布置成存储由程序计数器值标记的相关性信息;并且
所述预取电路被配置为响应于以下项而检测到命中:确定所述特定数据项对应于所述相关性信息针对其存储相关性信息的所述数据项,以及在比较中检测到匹配,所述比较基于针对触发所述特定访问请求的指令的所述程序计数器的值和针对数据项的相关性信息的所述程序计数器值。
5.根据权利要求1所述的装置,其中:
所述相关性信息存储装置被布置成存储由程序计数器值标记的相关性信息;并且
所述预取电路被配置为响应于在比较中检测到匹配而检测到命中,所述比较基于针对触发所述特定访问请求的指令的所述程序计数器的值和针对数据项的相关性信息的所述程序计数器值。
6.根据权利要求1所述的装置,其中:
所述预取电路被配置为将所述数据预取到所述存储结构中;并且
预取所述一个或多个相关数据项包括将所述一个或多个相关数据项预取到所述存储结构中。
7.根据权利要求1所述的装置,其中:
所述装置包括第二存储结构;
所述预取电路被配置为将所述数据预取到所述第二存储结构中;并且
预取所述一个或多个相关数据项包括将所述一个或多个相关数据项预取到所述第二存储结构中。
8.根据权利要求7所述的装置,其中:
所述存储结构是响应于直接从所述处理电路接收到的访问请求的1级(L1)高速缓存;并且
所述第二存储结构是响应于从所述L1高速缓存接收到的访问请求的2级(L2)高速缓存。
9.根据权利要求1所述的装置,其中:
所述装置还包括转换后备缓冲器(TLB),所述TLB用于存储地址转换数据;
所述存储结构响应于指定所述数据的虚拟地址的访问请求;
响应于检测到所述相关性信息存储装置中的命中,所述预取电路被配置为:将所述一个或多个相关数据项预取到所述存储结构中并将用于执行针对所述一个或多个相关数据项的地址转换的一个或多个转换条目预取到所述TLB中。
10.根据权利要求1所述的装置,其中:
所述存储结构是响应于直接从所述处理电路接收到的访问请求的1级(L1)高速缓存;
所述多个条目中的每个条目是高速缓存行;并且
所述预取电路被配置为:响应于检测到所述相关性信息存储装置中的所述命中,将由所述相关性信息针对所述请求数据项标识的一个或多个高速缓存行预取到所述存储结构中。
11.根据权利要求1所述的装置,其中:
所述相关性信息存储装置被布置成存储针对所述多个数据项中的每个数据项标识多个相关数据项的相关性信息;并且
所述预取电路被配置为:响应于检测到所述相关性信息存储装置中的所述命中,将所述多个数据项预取到所述存储结构中。
12.根据权利要求1所述的装置,其中:
所述预取电路被配置为:将过滤器应用于来自所述处理电路的所述访问请求,并且仅监测通过所述过滤器的所述访问请求。
13.根据权利要求1所述的装置,其中:
响应于未命中访问请求,对于所述未命中访问请求而言指定数据项在所述存储结构中不存在,所述预取电路将新相关性条目添加到所述相关性信息,所述新相关性条目与所述未命中访问请求相关联,并将在所述未命中访问请求之后访问的一个或多个后续数据项标识为相关数据项。
14.根据权利要求13所述的装置,其中:
所述预取电路包括一个或多个附加预取机制;并且
所述预取电路被配置为:响应于确定所述一个或多个附加预取机制能够预取所述一个或多个后续数据项,抑制向所述相关性信息添加所述新相关性条目。
15.根据权利要求13所述的装置,其中:
所述预取电路被配置为:在将所述新相关性条目添加到所述相关性信息之前,压缩对所述相关数据项的指示。
16.根据权利要求14所述的装置,其中:
所述预取电路被配置为:通过存储基地址以及针对每个相关数据项存储所述基地址与所述相关数据项的地址之间的增量,压缩对所述相关数据项的所述指示。
17.根据权利要求1所述的装置,其中:
所述装置包括相关性信息存储电路,所述相关性信息存储电路用于实现所述相关性信息存储装置。
18.根据权利要求1所述的装置,其中:
所述存储结构适于将所述存储结构的所述多个条目中的一个或多个条目视为用于存储所述相关性信息的相关性存储条目。
19.一种管理存储结构的方法:
将数据项存储在所述存储结构中,所述存储结构包括多个条目;
响应于来自处理电路的访问请求,提供对所述数据项的访问;
存储针对多个数据项的相关性信息,所述相关性信息针对所述多个数据项中的每个数据项标识一个或多个相关数据项;
监测来自所述处理电路的所述访问请求;
响应于检测到所述相关性信息存储装置中针对特定访问请求的命中,所述特定访问请求标识所述相关性信息存储装置针对其存储相关性信息的请求数据项,预取由所述相关性信息针对所述请求数据项标识的所述一个或多个相关数据项。
20.一种非暂态计算机可读介质,所述非暂态计算机可读介质用于存储用于制造装置的计算机可读代码,所述装置包括:
存储结构,所述存储结构包括用于存储数据项的多个条目,其中所述存储结构响应于来自处理电路的访问请求以提供对所述数据项的访问;
预取电路,所述预取电路用于预取数据;以及
相关性信息存储装置,所述相关性信息存储装置用于存储针对多个数据项的相关性信息,所述相关性信息针对所述多个数据项中的每个数据项标识一个或多个相关数据项;
其中所述预取电路被配置为:
监测来自所述处理电路的所述访问请求;以及
响应于检测到所述相关性信息存储装置中针对特定访问请求的命中,所述特定访问请求标识所述相关性信息存储装置针对其存储相关性信息的请求数据项,预取由所述相关性信息针对所述请求数据项标识的所述一个或多个相关数据项。
CN202211199523.4A 2021-10-13 2022-09-29 预取 Pending CN115964309A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/500,309 2021-10-13
US17/500,309 US11663132B2 (en) 2021-10-13 2021-10-13 Prefetching

Publications (1)

Publication Number Publication Date
CN115964309A true CN115964309A (zh) 2023-04-14

Family

ID=85798660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211199523.4A Pending CN115964309A (zh) 2021-10-13 2022-09-29 预取

Country Status (3)

Country Link
US (1) US11663132B2 (zh)
KR (1) KR20230052821A (zh)
CN (1) CN115964309A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117075969A (zh) * 2023-08-28 2023-11-17 中国科学院软件研究所 面向risc-v处理器特权指令集一致性的形式验证方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US9582282B2 (en) * 2014-07-17 2017-02-28 Arm Limited Prefetching using a prefetch lookup table identifying previously accessed cache lines
US11263138B2 (en) * 2018-10-31 2022-03-01 Arm Limited Correlated addresses and prefetching

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117075969A (zh) * 2023-08-28 2023-11-17 中国科学院软件研究所 面向risc-v处理器特权指令集一致性的形式验证方法及装置

Also Published As

Publication number Publication date
KR20230052821A (ko) 2023-04-20
US11663132B2 (en) 2023-05-30
US20230110541A1 (en) 2023-04-13

Similar Documents

Publication Publication Date Title
US10671535B2 (en) Stride prefetching across memory pages
TWI519955B (zh) 預取單元、資料預取方法以及電腦程式產品
EP3298493B1 (en) Method and apparatus for cache tag compression
EP3454219B1 (en) An apparatus and method for efficient utilisation of an address translation cache
US20210182214A1 (en) Prefetch level demotion
US20210406184A1 (en) Managing prefetch requests based on stream information for previously recognized streams
US11782845B2 (en) Faulting address prediction for prefetch target address
CN115964309A (zh) 预取
US20170046278A1 (en) Method and apparatus for updating replacement policy information for a fully associative buffer cache
US11853220B2 (en) Prefetcher training
US20140115257A1 (en) Prefetching using branch information from an instruction cache
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags
CN114450668A (zh) 电路和方法
US11675702B1 (en) Replacement policy information for training table used by prefetch circuitry
US11775440B2 (en) Producer prefetch filter
US11907722B2 (en) Methods and apparatus for storing prefetch metadata
US11907130B1 (en) Determining whether to perform an additional lookup of tracking circuitry
US12099447B2 (en) Setting cache policy information for prefetched cache entry
US20240126458A1 (en) Controlling data allocation to storage circuitry
CN117743210A (zh) 选择性控制流预测器插入

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination