CN109313555A - 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器 - Google Patents

使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器 Download PDF

Info

Publication number
CN109313555A
CN109313555A CN201780034825.7A CN201780034825A CN109313555A CN 109313555 A CN109313555 A CN 109313555A CN 201780034825 A CN201780034825 A CN 201780034825A CN 109313555 A CN109313555 A CN 109313555A
Authority
CN
China
Prior art keywords
preextraction
memory
next line
address
forecast confidence
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
CN201780034825.7A
Other languages
English (en)
Inventor
B·德威尔
R·M·阿勒谢赫
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN109313555A publication Critical patent/CN109313555A/zh
Pending legal-status Critical Current

Links

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/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
    • 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/3802Instruction 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
    • G06F2212/1021Hit rate 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/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/602Details relating to cache prefetching

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

本发明揭示使用初始高预提取预测置信度状态以用于节制基于处理器的系统中的下一行预提取的下一行预提取器。下一行预提取器响应于读取操作将下一存储器行预提取到高速缓冲存储器中。为减少预提取误预测,节制下一行预提取器以在预提取预测置信度状态变成指示数个不正确预测的非下一行预提取状态之后中止预提取。代替将初始预提取预测置信度状态设置为在执行下一行预提取之前响应于正确预测建立的非下一行预提取状态,将初始预提取预测置信度状态设置为下一行预提取状态以允许下一行预提取。因此,下一行预提取器在要求在预提取预测置信度状态中“建立”正确预测之前开始预提取下一行。可增加CPU性能,这是因为预提取更早开始,而非等到发生正确预测。

Description

使用初始高预提取预测置信度状态以节制基于处理器的系统 中的下一行预提取的下一行预提取器
优先权申请
本申请案主张2016年6月24日申请的标题为“使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器(NEXT LINE PREFETCHERSEMPLOYING INITIAL HIGH PREFETCH PREDICTION CONFIDENCE STATES FOR THROTTLINGNEXT LINE PREFETCHES IN A PROCESSOR-BASED SYSTEM)”的美国专利申请案第15/192,416号的优先权,所述美国专利申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及提供于计算机系统中的高速缓冲存储器,且更具体地说,涉及将数据预提取到高速缓冲存储器中以减少高速缓存未命中。
背景技术
中央处理单元(CPU)也被称作微处理器,其执行多个应用程序中的计算任务。典型CPU包含各自被配置成执行软件指令的一或多个处理器核心。软件指令可指示处理器核心提取来自存储器中的位置的数据作为存储器读取操作的部分,使用提取的数据执行一或多个CPU操作,并且产生结果。所述结果接着可存储回到存储器中,此为存储器写入操作。因此,CPU的工作负载性能依赖于在存储器读取操作中从存储器存取数据的等待时间。一种改进CPU工作负载性能的方式是采用高速缓冲存储器。高速缓冲存储器(cache memory)也可简单地称为“高速缓存(cache)”,其为对存储在主存储器或更高层级高速缓冲存储器中的频繁存取的存储器地址处的数据的副本进行存储以减小存储器存取延时的较小、较快速存储器。因此,CPU可使用高速缓存减少存储器存取次数。举例来说,高速缓存可用以存储CPU所提取的指令以用于较快速指令执行。作为另一实例,高速缓存可用以存储待由CPU提取的数据以用于较快速数据存取。高速缓冲存储器可包含CPU本地的高速缓存、CPU块中的CPU当中的共享本地高速缓存和/或多个CPU块当中的共享高速缓存。
当待存取的数据不存在于高速缓存中时发生的高速缓存未命中是在多种计算机系统上运行的多个应用程序的性能降级的显著来源。为减少高速缓存未命中的数目,计算机系统可采用预提取。预提取是其中提供预提取器(也被称作预提取引擎)以对在近期将被存取以用于存储器读取操作的存储器地址做出预测的技术。预提取器可被配置成检测计算机系统中的存储器存取模式以预测未来存储器存取。使用这些预测,预提取器将向较高层级存储器做出请求以依推测方式将高速缓存行预加载到高速缓存中。存储在这些存储器地址处的高速缓存行在实际上被需要之前引入到高速缓存中。当需要这些高速缓存行时,这些高速缓存行已经存在于高速缓存中,且因此不会引发高速缓存未命中损失。因此,预提取器对存储器地址的正确预测可减少加载暂停以等待数据的循环的数目。
尽管许多应用程序得益于预提取,但是一些应用程序具有难以预测的存储器存取模式。因此,启用针对这些应用程序的预提取可显著地降低性能。在这些情况下,预提取器可请求在高速缓存中填充可能从不会被应用程序使用的高速缓存行。另外,为了给高速缓存中的所预提取的高速缓存行让出空间,接着可置换掉有用的高速缓存行。如果随后未在存取先前置换的高速缓存行之前存取所预提取的高速缓存行,那么产生针对存取先前置换的高速缓存行的高速缓存未命中。在此情境下,高速缓存未命中实际上是由预提取操作导致。用未引用的预提取高速缓存行置换随后存取的高速缓存行的过程被称为“高速缓存污染”。高速缓存污染可增加高速缓存未命中率,降低性能。
存在可被预提取器用以尝试限制由于将高速缓存行预提取到高速缓存中引起的高速缓存污染的各种高速缓存数据替换策略(被称为“预提取策略”)。预提取器的一个实例是流预提取器。流预提取器检测对顺序存储器地址的存取流。另一实例是识别和记录地址或跨距模式的全局历史预提取器,并且当所述模式在将来开始重复时做出预测。这两种类型的预提取器的共同特征是其在做出预测之前使用历史构建置信度。举例来说,流预提取器可一直等到在发出预测之前确认三个或更多个不间断的存取。此特征通过在预提取预测之前要求将超过的置信度阈值来本质上增加预测的准确度,因此减小高速缓存污染。然而,可在预提取器“可信”到足以对将数据预提取到高速缓存中做出预测之前需要数个存取。
不要求对做出预测的置信度的预提取器的实例是下一行预提取器。下一行预提取器具有不在其可信到足以做出预测之前要求数个存取的优点。下一行预提取器在高速缓存中的未命中之后预提取下一顺序行。下一行预提取器不依赖于历史来做出预测,而是替代地假设存在空间局部性,且将在稍后存取邻近地址。因此,下一行预提取器具有较低开销,这是因为不需要电路跟踪存取历史,进而消耗面积和额外功率。下一行预提取器还适用于针对存储器内的多个对象起作用的工作负荷,并且所述对象跨越多个高速缓存行。当在这些对象上迭代时,存取目标的第一高速缓存行将触发对下一行的预提取,所述下一行含有所述目标的剩余部分。下一行预提取器可从目标的第二高速缓存行开始预提取。然而,如果仅每目标存取一个高速缓存行或如果目标仅跨越一个高速缓存行,那么在下一行预提取器中缺少置信度会致使误预测的地址。此外,下一行预提取器可导致增加的高速缓存污染、结构危险,以及当预提取没用的高速缓存行时具有较小功率效率的性能损失。
发明内容
本文中所揭示的方面包含使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器。在这点上,在本文中所揭示的示范性方面中,提供于基于处理器的系统中的一或多个高速缓冲存储器系统包含下一行预提取器。下一行预提取器被配置成响应于存储器加载指令基于预提取预测置信度状态将下一存储器行(例如,下一连续存储器行)预提取到高速缓冲存储器中。预提取预测置信度状态变成下一行预提取状态,因此允许响应于正确预测进行下一行预提取。预提取预测置信度状态响应于不正确预测变成非下一行预提取状态。下一行预提取器优于其它预提取器的优点为不要求存储器结构存储先前存取的地址来跟踪存储器地址模式,因此要求较小面积和功率消耗。然而,为减少可增加高速缓存污染的预提取误预测(即,替换为预提取的数据的高速缓存行较早发生存取),下一行预提取器被配置成被节制以在预提取预测置信度状态超过指示数个不正确预测的经定义预提取置信度状态之后中止预提取。代替需要(例如,通过下一行预提取预测置信度计数器)响应于允许下一行预提取的正确预测,从非下一行预提取状态到下一行预提取状态建立初始预提取预测置信度状态,将初始预提取预测置信度状态设置为下一行预提取状态。因此,下一行预提取器在第一次要求在预提取预测置信度状态中“建立”正确预测之前开始预提取下一行。因此可增加中央处理单元(CPU)工作负载性能,这是因为预提取较早开始,而非等到发生数个正确预测。然而,如果预提取预测置信度状态由于误预测变成非下一行预提取状态,那么节制下一行预提取器以中止预提取。一旦预提取预测置信度状态基于正确预测变成下一行预提取状态,便不节制下一行预提取器进行的下一行预提取。
作为非限制性实例,可使用存储在下一行预提取预测置信度计数器中的预提取预测置信度计数跟踪预提取预测置信度状态。可基于面积、功率消耗和准确度当中的设计和性能考虑因素配置下一行预提取预测置信度计数器的数目。举例来说,较高预测准确度可起因于提供被特别指配给存储器加载指令的指令地址并且用以预测下一行预提取的独立下一行预提取预测置信度计数器。然而,这需要比例如提供指配给整个高速缓存并且用以预测下一行预提取的单个全局下一行预提取预测置信度计数器更大数目个下一行预提取预测置信度计数器。然而,使用较少下一行预提取预测置信度计数器可引起下一行预提取的预测准确度减小。设计和性能考虑因素可用以确定用于存取和更新下一行预提取预测置信度计数器的下一行预提取预测置信度计数器和电路的数目对预测准确度之间的所要权衡。
在这点上,在一个方面中,提供一种高速缓冲存储器系统。所述高速缓冲存储器系统包括较低层级高速缓冲存储器。所述高速缓冲存储器系统还包括下一行预提取电路。所述下一行预提取电路被配置成将预提取预测置信度状态重新设置为预提取预测置信度存储电路中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且被配置成存储指示下一行预提取状态或非下一行预提取状态的预提取预测置信度状态。所述下一行预提取电路还被配置成接收包括存储器读取地址的存储器加载指令。所述下一行预提取电路还被配置成接收指示存储器的所述存储器读取地址的读取数据是否包含在所述较低层级高速缓冲存储器中的高速缓存命中/未命中指示符。响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,所述下一行预提取电路还被配置成存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述一或多个下一行预提取预测置信度指示符的下一行预提取预测置信度指示符中的预提取预测置信度状态。响应于所述存取的预提取预测置信度状态指示下一行预提取状态,所述下一行预提取电路还被配置成将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器。
在另一方面中,提供一种高速缓冲存储器系统。所述高速缓冲存储器系统包括用于存储较低层级高速缓存数据的装置。所述高速缓冲存储器系统还包括用于将预提取预测置信度状态重新设置为用于存储下一行预提取预测置信度指示符的装置中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态的装置,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且包括用于存储指示下一行预提取状态或非下一行预提取状态的所述预提取预测置信度状态的装置。所述高速缓冲存储器系统还包括用于接收包括存储器读取地址的存储器加载指令的装置。所述高速缓冲存储器系统还包括用于接收指示存储器的所述存储器读取地址的读取数据是否包含在所述用于存储较低层级高速缓存数据的装置中的高速缓存命中/未命中指示符的装置。所述高速缓冲存储器系统还包括用于响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述用于存储较低层级高速缓存数据的装置中,存取与所述用于存储所述下一行预提取预测置信度指示符的装置中的所述存储器加载指令相关联的预提取预测置信度状态的装置。所述高速缓冲存储器系统还包括用于响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述用于存储所述较低层级高速缓存数据的装置的装置。
在另一方面中,提供一种节制基于处理器的系统中的下一行预提取的方法。所述方法包括将预提取预测置信度状态重新设置为预提取预测置信度存储电路中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且被配置成存储指示下一行预提取状态或非下一行预提取状态的预提取预测置信度状态。所述方法还包括接收包括存储器读取地址的存储器加载指令。所述方法还包括接收指示存储器的所述存储器读取地址的读取数据是否包含在较低层级高速缓冲存储器中的高速缓存命中/未命中指示符。所述方法还包括响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述一或多个下一行预提取预测置信度指示符当中的下一行预提取预测置信度指示符中的预提取预测置信度状态。所述方法还包括响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器。
在另一方面中,提供一种基于处理器的系统。所述基于处理器的系统包括较低层级高速缓冲存储器系统。所述较低层级高速缓冲存储器系统包括较低层级高速缓冲存储器和较低层级下一行预提取电路。所述较低层级下一行预提取电路被配置成接收包括存储器读取地址的存储器加载指令。所述较低层级下一行预提取电路还被配置成接收指示存储器的所述存储器读取地址的读取数据是否包含在所述较低层级高速缓冲存储器中的高速缓存命中/未命中指示符。响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,所述较低层级下一行预提取电路还被配置成存取预提取预测置信度存储电路中的下一行预提取预测置信度指示符中的预提取预测置信度状态,所述下一行预提取预测置信度指示符与所述预提取预测置信度存储电路中的所述存储器加载指令相关联。响应于所述存取的预提取预测置信度状态指示下一行预提取状态,所述较低层级下一行预提取电路还被配置成将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器。所述较低层级下一行预提取电路还被配置成从所述较高层级存储器系统接收下一行预提取反馈指示符,其指示所述较高层级存储器系统接收的下一存储器加载指令的下一存储器读取地址是否匹配所述下一预提取存储器读取地址。响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址,所述较低层级下一行预提取电路还被配置成将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
所述基于处理器的系统包括较高层级存储器系统。所述较高层级存储器系统包括较高层级高速缓冲存储器和较高层级下一行预提取电路。所述较高层级下一行预提取电路被配置成接收对所述下一预提取存储器读取地址的所述下一行预提取请求。所述较高层级下一行预提取电路还被配置成接收指示所述下一预提取存储器读取地址的读取数据是否包含在所述较高层级高速缓冲存储器中的高速缓存命中/未命中指示符高速缓冲存储器。响应于所述高速缓存命中/未命中指示符指示所述下一预提取存储器读取地址的所述读取数据不包含在所述较高层级高速缓冲存储器中,所述较高层级下一行预提取电路还被配置成请求到所述较高层级高速缓冲存储器的所述较高层级存储器系统中的所述下一预提取存储器读取地址处的下一读取数据,接收具有下一存储器读取地址的下一存储器加载指令,以及确定所述下一存储器读取地址是否匹配所述下一预提取存储器读取地址。响应于所述下一存储器读取地址匹配所述下一预提取存储器读取地址,所述较高层级下一行预提取电路还被配置成将来自所述较高层级存储器系统的所述下一预提取存储器读取地址处的所述下一读取数据存储在所述较高层级高速缓冲存储器中,以及发送指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址的所述下一行预提取反馈指示符。
附图说明
图1是示范性的基于处理器的系统的示意图,其包含高速缓冲存储器系统和下一行预提取电路,所述下一行预提取电路被配置成基于初始设置为高预提取预测置信度状态以致使预提取下一行的预提取预测置信度状态,节制下一行预提取;
图2说明示范性预提取预测置信度存储电路(例如,表),其被配置成被图1中的下一行预提取电路存取以存取呈一或多个下一行预提取预测置信度计数器形式的一或多个下一行预提取预测置信度指示符,其各自指示与存储器加载指令相关联的预提取预测置信度状态;
图3是说明图1中的下一行预提取电路基于初始设置为高预提取预测置信度状态以致使预提取下一行的下一行预提取预测置信度指示符,节制数据到较高层级存储器中的下一行预提取的示范性过程的流程图;
图4是说明图1中的较高层级存储器接收来自较低层级存储器的下一行预提取请求,并且将下一行预提取反馈指示符提供到下一行预提取电路以用以更新预测置信度水平指示符的示范性过程的流程图;
图5是说明图1中的下一行预提取电路基于预提取到较高层级存储器中的下一行是否匹配较高层级存储器中的下一经存取行,更新下一行预提取预测置信度指示符的示范性过程的流程图;
图6是包含高速缓冲存储器系统和下一行预提取电路的另一示范性的基于处理器的系统的示意图,所述下一行预提取电路被配置成基于初始设置为高预提取预测置信度状态以致使预提取下一行的预提取预测置信度状态节制下一行预提取,并且从较低层级存储器系统接收下一行预提取请求;
图7是说明图6中的下一行预提取电路接收来自较低层级存储器的下一行预提取请求,并在下一存取的行匹配预提取的行的情况下将来自库操作队列(BOQ)中的下一行的用于安装的预提取数据存储于高速缓存中的示范性过程的流程图;
图8说明提供于图6中的高速缓冲存储器系统中的加载路径历史(LPH)寄存器的实例,其中LPH寄存器经更新以供下一行预提取电路用以存取与存储器加载指令相关联的用于控制下一行预提取请求的发出的下一行预提取预测置信度指示符;
图9A和9B说明基于具有将执行的存储器加载指令的程序计数器的散列更新图6中的LPH寄存器的其它实例,其中LPH寄存器供下一行预提取电路用以存取用于控制下一行预提取请求的发出的下一行预提取预测置信度指示符;
图10说明基于一系列处理的存储器加载指令更新图6中的高速缓冲存储器系统中的LPH寄存器的实例;和
图11是可包含高速缓冲存储器系统的示范性的基于处理器的系统的框图,所述高速缓冲存储器系统包含下一行预提取电路,其被配置成基于初始设置为高预提取预测置信度状态的下一行预提取预测置信度指示符节制数据到较高层级存储器中的下一行预提取,包含图1和6中的高速缓冲存储器系统。
具体实施方式
现参考各图,描述本发明的数个示范性方面。词语“示范性”在本文中用于意指“充当实例、例子或说明”。本文中描述为“示范性”的任何方面不必解释为比其它方面优选或有利。
图1是包含处理器102的示范性的基于处理器的系统100的示意图。处理器102包含被配置成执行软件指令的一或多个中央处理单元(CPU)104(0)-104(N)(也被称作“处理器核心”)。如果处理器102包含多于一个CPU 104,那么处理器102被视为多CPU处理器。每一CPU 104(0)-104(N)包含相应高速缓冲存储器系统106(0)-106(N)。如将在下文更详细地论述,高速缓冲存储器系统106(0)-106(N)被配置成响应于作为对存储器加载指令的响应而对高速缓冲存储器的数据存取的高速缓存未命中发出下一行预提取请求。高速缓冲存储器系统106(0)-106(N)被配置成基于初始设置为高预提取预测置信度状态的预提取预测置信度状态节制下一行预提取。以此方式,下一行预提取在第一次要求“建立”正确预测之前开始。CPU 104(0)-104(N)的工作负载性能可因此增加,这是因为预提取较早开始,而非等到发生数个正确预测。然而,如果预提取预测置信度状态由于误预测而降低到超过定义的预提取预测置信度状态,那么节制下一行预提取以中止预提取。
在论述使用初始高预提取预测置信度状态节制下一行预提取的高速缓冲存储器系统106(0)-106(N)中的下一行预提取之前,下文首先论述高速缓冲存储器系统106(0)-106(N)的其它方面。仅出于简单目的,下文仅论述图1中所示出的CPU 104(0)中的高速缓冲存储器系统106(0)。然而,应注意,CPU 104(0)中的高速缓冲存储器系统106(0)的细节还适用于相应CPU 104(1)-104(N)中的高速缓冲存储器系统106(1)-106(N)。
在这点上,参考图1并且使用高速缓冲存储器系统106(0)作为实例,高速缓冲存储器系统106(0)包含高速缓冲存储器108。高速缓冲存储器108包含数据阵列110,其包含多个高速缓存条目112(0)-112(L)(还被称作“高速缓存行112(0)-112(L)”),其各自配置成存储高速缓存数据114。还在高速缓冲存储器系统106(0)中提供高速缓存控制器116。高速缓存控制器116被配置成直接或间接从CPU 104(0)接收存储器加载指令122。举例来说,高速缓冲存储器系统106(0)可为被CPU 104(0)直接存取的层级零(L0)高速缓存。作为另一替代实例,高速缓冲存储器系统106(0)可为被CPU 104(0)通过充当层级零(L0)高速缓存的较低层级高速缓冲存储器系统124间接存取的层级一(L1)高速缓存。存储器加载指令122包含待存取以检索用于存储器加载指令122的执行的数据的存储器读取地址。
响应于接收到存储器加载指令122,高速缓存控制器116使用存储器加载指令122中的存储器读取地址索引化高速缓冲存储器108中的标签阵列125。如果以标签阵列125中的存储器加载指令122的存储器读取地址作索引的标签匹配存储器加载指令122中的存储器读取地址,且标签有效,那么发生高速缓存命中。这意味着对应于存储器加载指令122的存储器读取地址的高速缓存数据112包含在与数据阵列110中的索引化标签相关联的高速缓存条目112(0)-112(N)中。作为响应,高速缓存控制器116产生指示高速缓存命中的高速缓存命中/未命中指示符128。对应于索引化标签的高速缓存数据114作为读取高速缓存数据114R直接或间接提供到CPU 104(0)。如果以标签阵列125中的存储器加载指令122的存储器读取地址作索引的标签不匹配存储器加载指令122中的存储器读取地址或如果标签无效,那么发生高速缓存未命中。作为响应,高速缓存控制器116产生指示高速缓存未命中的高速缓存命中/未命中指示符128。
高速缓存控制器116还被配置成响应于从CPU 104(0)的存储器写入操作将写入高速缓存数据114W作为高速缓存数据114填充到数据阵列110中。基于存储器写入操作的存储器读取地址,写入高速缓存数据114W存储在数据阵列110中的高速缓存条目112(0)-112(L)中。以此方式,相较于必须从较高层级存储器例如较高层级存储器系统120获得高速缓存数据114,CPU 104(0)稍后可响应于存储器加载指令122,存取存储在数据阵列110中的高速缓存数据114。因此,在此实例中的高速缓冲存储器108是较高层级存储器系统120的较低层级高速缓冲存储器。其它存储器系统例如较高层级存储器系统121也可以存在于较高层级存储器系统120的较高层级处。举例来说,较高层级存储器系统121可为另一高速缓冲存储器系统或主或系统存储器。高速缓存控制器116还被配置成将写入高速缓存数据114W写回到较高层级存储器系统120。
继续参考图1,高速缓冲存储器系统106(0)包含下一行预提取电路126。下一行预提取电路126被配置成响应于正被CPU 104(0)处理的存储器加载指令122发出下一行预提取。下一行预提取电路126被配置成预测跟在存储器加载指令122的存储器读取地址之后的下一存储器地址是否将在近期被存取以用于存储器读取操作。使用这些预测,下一行预提取电路126被配置成做出对较高层级存储器系统120将下一存储器地址处的高速缓存行112(0)-112(L)以推测方式预加载到较高层级存储器系统120中的下一行预提取请求。因此,存储在下一存储器地址处的数据在被实际上需要之前引入到较高层级存储器系统120中。因此,下一行预提取电路126对下一存储器地址的正确预测可减少CPU104(0)中的加载暂停一直等到执行存储器加载指令122所需的数据的循环的数目。
在这点上,下一行预提取电路126被配置成接收经CPU 104(0)处理的存储器加载指令122。存储器加载指令122包含待存取以检索用于存储器加载指令122的执行的数据的存储器读取地址。高速缓存控制器116确定存储器读取地址的有效数据是否作为读取高速缓存数据114R存储在高速缓冲存储器108中。高速缓存控制器116产生指示存储器读取地址的有效数据是否作为读取高速缓存数据114R存储在高速缓冲存储器108中的高速缓存命中/未命中指示符128。下一行预提取电路126被配置成从高速缓存控制器116接收指示存储器加载指令122的存储器读取地址的读取高速缓存数据114R是否包含在高速缓冲存储器108中的高速缓存命中/未命中指示符128。如果高速缓存命中/未命中指示符128指示高速缓存命中,那么下一行预提取电路126在此实例中不发出下一行预提取请求,这是因为下一行预提取请求130将替换高速缓冲存储器108中的高速缓存条目112(0)-112(L)中的可能比预提取的数据更有用的读取高速缓存数据114R。然而,如果高速缓存命中/未命中指示符128指示高速缓存未命中,那么在此实例中,下一行预提取电路126被配置成发出下一行预提取请求130。在此实例中,高速缓存控制器116将下一行预提取请求130转发到较高层级存储器系统120以预提取下一存储器地址处的数据。
在此实例中,下一行预提取请求130可为对较高层级存储器系统120预提取跟在存储器加载指令122的存储器读取地址之后的下一顺序存储器地址或行的数据的指令。替代地,下一行预提取请求130也可为对较高层级存储器系统120预提取跟在存储器加载指令122的存储器读取地址之后的另一下一或多个存储器读取地址或地址处的数据的指令。然而,下一行预提取电路126可被配置成将下一行预提取请求130发到较高层级存储器系统120而无需将此类请求提供给高速缓存控制器116。较高层级存储器系统120将处理下一行预提取请求130,如将在下文更详细地论述。
继续参考图1,在此实例中,在下一行预提取电路126响应于存储器加载指令122的高速缓存未命中而发出下一行预提取请求130之前,下一行预提取电路126被配置成预测下一行预提取请求130的有用性。有用性意指存在将比置换成下一行预提取的数据的被逐出高速缓存数据114更早或更频繁地存取下一或多个存储器地址处的预提取的数据以用于存储器加载操作的可能性。如果在近期不存取下一或多个存储器地址处的预提取的数据用于存储器加载操作,那么可逐出和置换高速缓冲存储器108中的其它高速缓存数据114,其原本可能已响应于存储器加载操作被存取。
在这点上,图1中的下一行预提取电路126被配置成存取预提取预测置信度存储电路132以获得与用于做出预提取预测的存储器加载指令122相关联的预提取预测置信度状态133。预提取预测置信度存储电路132含有可基于存储器加载指令122索引化的一或多个下一行预提取预测置信度指示符134(0)-134(P)。举例来说,可基于存储器加载指令122的程序计数器(PC)136的一部分索引化预提取预测置信度存储电路132。下一行预提取预测置信度指示符134(0)-134(P)各自被配置成存储指示下一行预提取状态或非下一行预提取状态的预提取预测置信度状态133(0)-133(P)。基于存取下一行预提取预测置信度指示符134(0)-134(P)的存储器加载指令122索引化预提取预测置信度存储电路132。如果索引化预提取预测置信度指示符134(0)-134(P)的相应预提取预测置信度状态133(0)-133(P)是下一行预提取状态,那么下一行预提取电路126响应于高速缓存未命中发出下一行预提取请求130。如果索引化预提取预测置信度指示符134(0)-134(P)的相应预提取预测置信度状态133(0)-133(P)为非下一行预提取状态,那么下一行预提取电路126不响应于高速缓存未命中发出下一行预提取请求130。
图2说明可被图1中的下一行预提取电路126存取和更新以用于做出下一行预提取预测的呈预提取预测置信度表200形式的一个示范性预提取预测置信度存储电路132。如其中所示,预提取预测置信度表200包含以下一行预提取预测置信度计数器202(0)-202(7)的形式提供的下一行预提取预测置信度指示符134(0)-134(7)。在此实例中,提供八(8)个下一行预提取预测置信度指示符134(0)-134(7)。下一行预提取预测置信度指示符134(0)-134(7)被配置成存储八(8)个呈预提取预测置信度计数204(0)-204(7)形式的相应预提取预测置信度状态133(0)-133(7)。预提取预测置信度计数204(0)-204(7)的计数值指示预测下一行预提取的有用性的预测置信度。在此实例中,预提取预测置信度计数204为零(0)表示最高预测置信度。
在此实例中,每一下一行预提取预测置信度计数器202(0)-202(7)初始化为零(0),使得将处于下一行预提取状态中的下一行预提取电路126响应于针对存储器加载指令122的高速缓存未命中发出下一行预提取请求130。如将在下文更详细地论述,在发生误预测时,下一行预提取电路126被配置成响应于下一行预提取误预测使通过存储器加载指令122关联或索引化的下一行预提取预测置信度计数器202(0)-202(7)递增。一旦预提取预测置信度计数204(0)-204(7)达到定义的预提取预测计数值,此类预提取预测置信度计数204(0)-204(7)就将被视为处于非下一行预提取状态中。在此实例中,正当非下一行预提取状态的定义的预提取预测计数值是在下一行预提取预测置信度计数器202(0)-202(7)饱和时。举例来说,如果下一行预提取预测置信度计数器202(0)-202(7)是四(4)位计数器,那么在二进制计数0x1111处发生饱和。
也如图2中所示,预提取预测置信度表200被配置成索引化为使特定下一行预提取预测置信度计数器202(0)-202(7)与特定存储器加载指令122相关联。在此实例中,下一行预提取电路126基于存储器加载指令122的PC 136索引化预提取预测置信度表200。这允许下一行预提取预测置信度计数器202(0)-202(7)在不同存储器加载指令122的不同PC上的分布作为提供存储器加载指令122和用于预测下一行预提取的下一行预提取预测置信度计数器202(0)-202(7)之间的某一历史的方法。如在图2中的一个实例中所示,如果存储器加载指令122的PC 136是0xABC(即,0x101010111100),那么下一行预提取电路126可被配置成取最低有效位3、4和5(即,0x111)用以索引化预提取预测置信度表200中的下一行预提取预测置信度计数器202(0)-202(7)以供用以预测下一行预提取。从PC 136所取的位数可基于预提取预测置信度表200的大小。举例来说,在此实例中,预提取预测置信度表200具有可用三(3)个位完全索引化的八(8)个下一行预提取预测置信度计数器202(0)-202(7)。其它索引化布置也是可能的。
还应注意,在图2中的实例中,0xD1C的(即,0x110100011100)的另一PC 136在此实例中提供相同索引0x111。换句话说,在此实例中,下一行预提取预测置信度计数器202(0)-202(7)针对不同PC 136被共享和存取,以避免为每个唯一性PC 136提供下一行预提取预测置信度计数器202(0)-202(7),不过这是可能的情况。
下一行预提取电路126优于其它类型的预提取电路的优点可为不要求存储器结构存储先前存取的地址以用于跟踪存储器地址模式,因此要求较小面积和功率消耗。然而,为减少由下一行预提取电路126进行的可增加高速缓冲存储器系统106(0)中的高速缓存污染的预提取误预测,图1中的下一行预提取电路126被配置成被节制以在与所接收的存储器加载指令122相关联的下一行预提取置信度指示符134(0)-134(P)的相应预提取预测置信度状态133(0)-133(P)是非下一行预提取状态之后中止预提取。下一行预提取电路126被配置成不被节制以在与所接收的存储器加载指令122相关联的下一行预提取置信度指示符134(0)-134(P)的相应预提取预测置信度状态133(0)-133(P)变成下一行预提取状态之后允许下一行预提取。在这点上,代替下一行预提取电路126被指配响应于正确预测“建立”(例如,在下一行预提取预测置信度计数器中)的初始非预提取预测置信度状态133(0)-133(P)以最终改变为预提取预测置信度状态133(0)-133(P)以预测下一行预提取,下一行预提取电路126被指配初始下一行预提取状态。因此,下一行预提取电路126在第一次要求对用于存储器加载指令122的数据请求“建立”正确预测之前,响应于存储器加载指令122开始发出下一行预提取请求130。CPU 104(0)工作负载性能可因此增加,这是因为预提取更早开始而非等到发生数个正确预测。一旦预提取预测置信度状态133(0)-133(P)由于误预测变成非下一行预提取状态,就节制下一行预提取电路126以中止预提取。一旦下一行预提取预测置信度指示符134(0)-134(P)中的相应预提取预测置信度状态133(0)-133(P)基于正确预测再次改变为下一行预提取状态,就再次不节制下一行预提取电路126进行的下一行预提取。
在此实例中,为致使下一行预提取电路126初始预测用于所接收的存储器加载指令122的下一行预提取,预提取预测置信度存储电路132中的下一行预提取预测置信度指示符134(1)-134(P)的预提取预测置信度状态133(0)-133(P)初始设置为下一行预提取状态。以此方式,下一行预提取电路126响应于存储器加载指令122在第一次要求对用于存储器加载指令122的数据请求“建立”正确预测之前,开始发出下一行预提取请求130。举例来说,下一行预提取预测置信度指示符134(1)-134(P)的预提取预测置信度状态133(0)-133(P)可响应于CPU 104(0)的功率循环重新设置为下一行预提取状态。在另一实例中,下一行预提取预测置信度指示符134(1)-134(P)的预提取预测置信度状态133(0)-133(P)可定期设置或重新设置为下一行预提取状态,以基于先前CPU 104(0)工作负荷移除失效预提取状态信息以避免累积。
图1中的高速缓冲存储器系统106(0)至此已被描述为发出下一行预提取请求130。然而,如果在CPU 104(0)和充当较高层级高速缓冲存储器系统的高速缓冲存储器系统106(0)之间提供另一较低层级高速缓冲存储器系统,例如图1中的较低层级高速缓冲存储器系统124,那么高速缓冲存储器系统106(0)还可以被配置成接收用于执行到高速缓冲存储器108中的下一行预提取的下一行预提取请求。在这点上,下一行预提取电路126可被配置成响应于从较低层级高速缓冲存储器系统124接收的下一行预提取请求130执行下一行预提取。在此实例中,较低层级高速缓冲存储器系统124将含有下一行预提取电路126以及上文描述的用于预测下一行预提取并且作为响应发出下一行预提取请求130的相同或类似支持组件。数据缓冲器136可提供于高速缓冲存储器系统106(0)中,以允许下一行预提取电路126预提取的下一行预提取数据138在可确定下一行预提取数据138是否有用之前被暂时存储。此信息可在下一行预提取反馈指示符140中提供到较低层级高速缓冲存储器系统124以用以更新下一行预提取置信度指示符134(0)-134(P)中的预提取预测置信度状态133(0)-133(P)。同样地,下一行预提取电路126可从较高层级存储器系统120接收下一行预提取反馈指示符142,以允许下一行预提取电路126响应于下一行预提取电路126发到较高层级存储器系统120的下一行预提取请求130,更新与存储器加载指令122相关联的下一行预提取置信度指示符134(0)-134(P)中的相应预提取预测置信度状态133(0)-133(P)。
现在已介绍和论述图1中的示范性的基于处理器的系统100中的高速缓冲存储器系统106(0)和其下一行预提取电路126以及相关组件,现参考图3-5中的流程图论述高速缓冲存储器系统106(0)中的示范性处理。
下文论述的图3是说明图1中的下一行预提取电路126存取预提取预测置信度存储电路132以用于针对存储器加载指令122做出下一行预测并且确定发到较高层级存储器系统120的下一行预提取请求130的节制的示范性过程300的流程图。下文论述的图4是说明图1中的较高层级存储器系统120从高速缓冲存储器系统106(0)接收下一行预提取请求130并且将下一行预提取反馈指示符142提供到下一行预提取电路126以供下一行预提取电路126用以更新预提取预测置信度存储电路132中的预测置信度水平指示符134(0)-134(P)的示范性过程400的流程图。图5是说明图1中的下一行预提取电路126基于来自较高层级存储器系统120的关于响应于从高速缓冲存储器系统106(0)接收到下一行预提取请求130进行的下一行预提取的有用性的下一行预提取反馈指示符142,更新预提取预测置信度存储电路132中的下一行预提取预测置信度指示符134(0)-134(P)的示范性过程500的流程图。
参考图3中的过程300,图1中的下一行预提取电路126可先前已将预提取预测置信度存储电路132中的下一行预提取预测置信度指示符134(0)-134(P)的预提取预测置信度状态133重新设置为如先前论述的初始下一行预提取状态(框302)。响应于在高速缓冲存储器系统106(0)中接收到存储器加载指令122,下一行预提取电路126预测下一行预提取的过程300开始(框304)。下一行预提取电路126接收包括存储器读取地址的存储器加载指令122(框306)。下一行预提取电路126还接收指示存储器读取地址的读取数据是否包含在高速缓冲存储器108中的高速缓存命中/未命中指示符128。下一行预提取电路126确定对高速缓冲存储器108的存取是否产生高速缓存命中或高速缓存未命中(框308)。响应于指示用于存储器加载指令122的读取数据的高速缓存命中/未命中指示符128不包含在高速缓冲存储器108中,意味着高速缓存未命中(框310),下一行预提取电路126存取与预提取预测置信度存储电路132中的存储器加载指令122相关联的下一行预提取预测置信度指示符134(0)-134(P)中的预提取预测置信度状态133(框312)。下一行预提取电路126接着确定存取的用于存储器加载指令122的预提取预测置信度状态133是否指示下一行预提取状态做出下一行预提取预测(框314)。举例来说,如果预提取预测置信度状态133是预提取预测置信度计数204,那么在预提取预测置信度计数204不饱和的情况下可存在下一行预提取状态,如上文所论述。如果预提取预测置信度状态133是作为下一行预提取预测的下一行预提取状态,那么下一行预提取电路126将对来自存储器加载指令122的存储器读取地址的下一预提取存储器读取地址的下一行预提取请求130发到较高层级存储器系统120(框316),且过程300结束(框318)。然而,如果预提取预测置信度状态133作为下一行预提取预测的非下一行预提取状态,那么过程300结束(框318),且无需下一行预提取电路126发出下一行预提取请求130。此外,在框310中,如果高速缓存命中/未命中指示符128指示用于存储器加载指令122的读取数据包含在高速缓冲存储器108中,意味着高速缓存命中,那么过程300结束(框318),且无需下一行预提取电路126发出下一行预提取请求130。
参考图4,当下一行预提取电路126响应于与下一行预提取状态预测相关联的存储器加载指令122,将下一行预提取请求130发到较高层级存储器系统120时,较高层级存储器系统120被配置成进行图4中的示范性过程400。此外,高速缓冲存储器系统106(0)和/或下一行预提取电路126也可响应于图1中的较低层级高速缓冲存储器系统124做出的下一行预提取请求130进行图4中的过程400,如上文所论述。
参考图4,过程400开始于较高层级存储器系统120从高速缓冲存储器系统106(0)接收对下一预提取存储器读取地址的下一行预提取请求130(框402)。举例来说,由于图3中的框316中的过程300发出此接收的下一行预提取请求130。较高层级存储器系统120还接收其自身的指示下一预提取存储器读取地址的读取数据是否包含在较高层级存储器系统120中的高速缓存命中/未命中指示符(框404)。较高层级存储器系统120确定所接收的高速缓存命中/未命中指示符是否指示下一预提取存储器读取地址的读取数据不包含在较高层级存储器系统120中(即,高速缓存命中)(框406)。如果确定的结果为否,那么较高层级存储器系统120发送下一行预提取反馈指示符140,其指示较高层级存储器系统120处理的下一存储器加载指令的下一存储器读取地址不匹配下一预提取存储器读取地址(框408),且过程400结束(框410)。换句话说,下一行预提取电路126发出的下一行预提取请求130被视为无用。
然而,如果较高层级存储器系统120确定所接收的高速缓存命中/未命中指示符是否指示下一预提取存储器读取地址的读取数据不包含在较高层级存储器系统120中(即,高速缓存未命中)(框406),那么较高层级存储器系统120请求较高层级存储器系统120中的下一预提取读取地址处的下一读取数据(框412)。较高层级存储器系统120接着接收下一存储器加载指令122以使下一存储器读取地址被处理(框414)。较高层级存储器系统120确定下一存储器加载指令122的下一读取地址是否匹配由所接收的下一行预提取请求130产生的下一预提取存储器读取地址(框416)。如果为否,那么较高层级存储器系统120发送下一行预提取反馈指示符140,其指示较高层级存储器系统120处理的下一存储器加载指令122的下一存储器读取地址不匹配下一预提取存储器读取地址(框408),且过程400结束(框410)。换句话说,下一行预提取电路126发出的下一行预提取请求130被视为无用的。然而,如果较高层级存储器系统120在框416中确定下一存储器加载指令122的下一读取地址匹配由所接收的下一行预提取请求130产生的预提取存储器读取地址,那么较高层级存储器系统120将下一读取数据存储在较高层级存储器系统120的高速缓冲存储器108中的下一预提取存储器读取地址处(框418)。较高层级存储器系统120接着发送下一行预提取反馈指示符140,其指示较高层级存储器系统120处理的下一存储器加载指令122的下一存储器读取地址匹配下一预提取存储器读取地址(框420),且过程400结束(框410)。在此情况下,下一行预提取电路126发出的下一行预提取请求130被视为有用的。
图5说明图1中的下一行预提取电路126在从图4中的较高层级存储器系统120接收下一行预提取反馈指示符140之后执行的示范性过程500。在这点上,下一行预提取电路126从较高层级存储器系统120接收下一行预提取反馈指示符140,其指示较高层级存储器系统120接收的下一存储器加载指令的下一存储器读取地址是否匹配下一预提取存储器读取地址(框502)。下一行预提取电路126确定下一行预提取反馈指示符140是否指示下一存储器加载指令122的下一存储器读取地址匹配下一预提取存储器读取地址(框504)。如果是,那么下一行预提取电路126将与存储器加载指令122相关联的下一行预提取预测置信度指示符134(0)-134(P)中的预提取预测置信度状态133重新设置为下一行预提取状态,所述下一行预提取状态致使下一行预提取请求130发到较高层级存储器系统120(框506),且过程500结束(框508)。然而,如果下一行预提取电路126确定下一行预提取反馈指示符140是否指示下一存储器加载指令122的下一存储器读取地址不匹配下一预提取存储器读取地址(框504),那么这意味着下一行预提取请求130被视为无用的。下一行预提取电路126确定预提取预测置信度状态133是否饱和(框510)。如果否,那么使预提取预测置信度状态133递增(框512)以跟踪误预测,使得预提取预测置信度状态133经更新以供下一行预提取电路126用于与预提取预测置信度状态133相关联的未来存储器加载指令122,且过程500结束(框508)。
图6是类似于图1中的基于处理器的系统100的另一示范性的基于处理器的系统600的示意图。用共同元件编号说明图6中的基于处理器的系统600和图1中的基于处理器的系统100之间的类似组件,且因此不重新描述。然而,在图6中的基于处理器的系统600中,提供额外的任选特征。举例来说,提供加载路径历史(LPH)寄存器602,其允许先前散列值例如PC 136被存储并且在下一行预提取电路126对存储器加载指令122的下一评估期间用以存取预提取预测置信度存储电路132。此外,库操作队列(BOQ)604经示出为包含用作数据缓冲器的多个BOQ条目606(1)-606(B),当高速缓冲存储器系统106(0)充当对来自较低层级高速缓冲存储器系统124的下一行预提取请求130作出响应的较高层级高速缓冲存储器系统时,所述数据缓冲器根据类似于图4中的过程400的过程存储预提取的数据以用于安装于高速缓冲存储器108中。在每一BOQ条目606(1)-606(B)的BOQ 604中提供指示相应BOQ条目606(1)-606(B)的有效性的有效指示符608(0)-608(B)。在这点上,图7说明图6中的较高层级存储器系统120从高速缓冲存储器系统106(0)接收下一行预提取请求130并且使用BOQ 604存储和匹配预提取的数据以将下一行预提取反馈指示符142提供到下一行预提取电路126以更新预提取预测置信度存储电路132中的预测置信度水平指示符134(0)-134(P)的示范性过程700。
在这点上,如图7中所示,当下一行预提取电路126响应于与下一行预提取状态预测相关联的存储器加载指令122,将下一行预提取请求130发到较高层级存储器系统120时,较高层级存储器系统120被配置成进行图7中的示范性过程700。过程700开始于较高层级存储器系统120从高速缓冲存储器系统106(0)接收下一预提取存储器读取地址的下一行预提取请求130(框702)。举例来说,由于图3中的框316中的过程300而发出此接收的下一行预提取请求130。较高层级存储器系统120还接收其自身的高速缓存命中/未命中指示符,其指示下一预提取存储器读取地址的读取数据是否包含在较高层级存储器系统120中(框704)。较高层级存储器系统120确定所接收的高速缓存命中/未命中指示符是否指示下一预提取存储器读取地址的读取数据不包含在较高层级存储器系统120中(即,高速缓存命中)(框706)。如果确定的结果为否,那么较高层级存储器系统120将预提取的数据移动到其高速缓冲存储器108中并且使对应BOQ 604中的存储器加载指令122的有效指示符608(0)-608(B)无效(框708)。较高层级存储器系统120发送下一行预提取反馈指示符140,其指示较高层级存储器系统120处理的下一存储器加载指令122的下一存储器读取地址不匹配下一预提取存储器读取地址(框710),且过程700结束(框712)。换句话说,下一行预提取电路126发出的下一行预提取请求130被视为无用的。
然而,如果较高层级存储器系统120确定所接收的高速缓存命中/未命中指示符是否指示下一预提取存储器读取地址的读取数据包含在较高层级存储器系统120中(即,高速缓存未命中)(框706),那么较高层级存储器系统120请求可用BOQ条目606(0)-606(B)中的较高层级存储器系统120中的下一预提取读取地址处的下一读取数据(框714)。较高层级存储器系统120接着接收使下一存储器读取地址被处理的下一存储器加载指令122(框716)。较高层级存储器系统120确定下一存储器加载指令122的下一存储器读取地址是否匹配由所接收的下一行预提取请求130产生的预提取存储器读取地址(框718)。如果是,那么较高层级存储器系统120将存储在对应BOQ条目606(0)-606(B)中的预提取的数据移动到高速缓冲存储器108中(框720),使对应BOQ条目606(0)-606(B)无效(框722),并且发送下一行预提取反馈指示符140,其指示较高层级存储器系统120处理的下一存储器加载指令122的下一存储器读取地址匹配下一预提取存储器读取地址(框724),且过程700结束(框712)。换句话说,下一行预提取电路126发出的下一行预提取请求130被视为有用的。
继续参考图7,然而,如果较高层级存储器系统120在框718中确定下一存储器加载指令122的下一读取地址不匹配由所接收的下一行预提取请求130产生的下一预提取存储器读取地址,那么下一行预提取电路126发出的下一行预提取请求130可能已经无用。在这点上,较高层级存储器系统120确定在BOQ 604中是否存在可用BOQ条目606(0)-606(B)(框726)。如果较高层级存储器系统120确定在BOQ 604中存在可用BOQ条目606(0)-606(B),那么过程700返回到在框716中接收对处理下一存储器读取地址的下一存储器加载指令122,且无需仍将下一行预提取电路126发出的下一行预提取请求130视为无用的。这是因为下一行预提取电路126发出的下一行预提取请求130不消耗将阻止其它下一行预提取请求130存储在BOQ 604中的BOQ条目606(0)-606(B)。因此,下一行预提取电路126发出的下一行预提取请求130仍不必在下一存储器加载指令122的后续下一存储器读取地址匹配由所接收的下一行预提取请求130产生的下一预提取存储器读取地址的情况下被视为无用的。
继续参考图7,如果在框726中,确定在BOQ 604中不存在可用BOQ条目606(0)-606(B),那么这意味着下一行预提取请求130正在消耗原本可用于另一下一行预提取请求130的BOQ条目606(0)-606(B)。在此情况下,较高层级存储器系统120确定预提取的存储器地址的预提取的数据是否存储在最旧BOQ条目606(0)-606(B)中(框728)。如果为否,那么下一预提取读取地址处的下一读取数据的BOQ条目606(0)-606(B)在BOQ 604中不是自由的,且过程700返回到框716。再次,下一行预提取电路126发出的下一行预提取请求130仍不被视为无用的。然而,如果较高层级存储器系统120确定预提取的存储器地址的预提取的数据存储在BOQ 604中的最旧BOQ条目606(0)-606(B)中,那么过程700继续到上文所论述的框708以使BOQ条目606(0)-606(B)失效并且使其可用于存储未来预提取的数据以用于安装在高速缓冲存储器108中。下一行预提取电路126发出的下一行预提取请求130现在被视为无用的,这是因为其下一存储器读取地址不匹配由所接收的下一行预提取请求130产生的下一预提取存储器读取地址,且不被保留用以确定其是否匹配后续下一存储器加载指令的存储器读取地址。
图8说明使用提供于图6中的高速缓冲存储器系统106(0)中的LPH寄存器602存取与存储器加载指令122相关联的用于控制下一行预提取请求130的发出的下一行预提取预测置信度指示符134(0)-134(P)的实例800。使用LPH提供预测下一行预提取的唯一情境。此历史提供为依据将存储器加载指令122的PC 136的一或多个指定位移位到存储在LPH寄存器602中的先前LPH值中。在这点上,LPH寄存器602的当前LPH值的实例可为如图8中所示的0x011010。PC 136可为0x101010111100。在PC 136中的在此实例中为指定第3位移位到LPH寄存器602中之后,LPH寄存器602的新LPH值是0x110101。LPH寄存器602中的新LPH值可用以索引化预提取预测置信度存储电路132中的下一行预提取预测置信度指示符134(0)-134(P)以执行下一行预提取预测。
其它方法也可用于更新LPH寄存器602以用以索引化用于执行下一行预提取预测的预提取预测置信度存储电路132中的下一行预提取预测置信度指示符134(0)-134(P)。在这点上,图9A和9B提供基于具有存储器加载指令122的PC 136的散列更新图6中的LPH寄存器602以形成散列LPH值的两个其它实例。在图9A中的实例900中,用图8中的PC 136的相同值对图8中的LPH寄存器602的相同的当前LPH值逐位进行异或运算,以产生存储在LPH寄存器602中的相同的新LPH值。逐位异或与移位运算相比可为执行的更有利操作。应注意,在图9B中的实例902中,具有PC 136的不同值的LPH寄存器620中的不同LPH值的散列仍可产生存储在LPH寄存器602中的相同的LPH值。换句话说,散列操作将针对于基于存储器加载指令122的PC 136和LPH寄存器602中的当前LPH值索引化预提取预测置信度存储电路132中的相同的下一行预提取预测置信度指示符134(0)-134(P)。
图10说明图6中的基于一系列经处理存储器加载指令122更新高速缓冲存储器系统106(0)中的LPH寄存器602的实例,其中更新LPH寄存器602可提供情境优点。举例来说,图10说明用存储器加载指令1002(1)-1002(4)的if-then指令构建1000的实例。如每一存储器加载指令1002(1)-1002(4)中所示,移位到LPH寄存器602中的LPH值针对如if-then指令构建1000的执行轨迹1004中所示的0x70的相同PC 136改变。因此,如果存储器加载指令1002(1)-1002(4)的执行实例趋于取决于执行的性质(例如,0x08)而针对相同存储器加载地址重复,那么可基于LPH寄存器602在预提取预测置信度存储电路132中存取不同的下一行预提取预测置信度指示符134(0)-134(P),从而还提供作为跟踪预测置信度的部分的情境历史。
根据本文中所揭示的各方面使用初始高预提取预测置信度状态以用于节制基于处理的系统中的下一行预提取的下一行预提取器可设置于任何基于处理器的装置中或集成到任何基于处理器的装置中。实例包含但不限于机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、智能电话、平板电脑、平板手机、服务器、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器、便携式数字视频播放器和机动车。
在这点上,图11说明包含一或多个CPU 1102(0)-1102(T)的基于处理器的系统1100的实例,所述CPU各自采用包含下一行预提取电路的高速缓冲存储器系统1104(0)-1104(T),所述下一行预提取电路被配置成基于初始设置为高预提取预测置信度状态的预提取预测置信度状态节制下一行预提取。这些高速缓冲存储器系统1104(0)-1104(T)可包含图1中的高速缓冲存储器系统106(0)。CPU 1104(0)-1104(T)也可耦合到共享高速缓冲存储器系统1106。CPU 1104(0)-1104(T)耦合到系统总线1108并且可互耦合包含在基于处理器的系统1100中的主装置和从属装置。如所熟知,CPU1104(0)-1104(T)通过在系统总线1108上交换地址、控制和数据信息与这些其它装置通信。举例来说,CPU 1104(0)-1104(T)可将总线事务请求传达到存储器控制器1110以用于存取作为从属装置的实例的存储器系统1114中的系统存储器1112。虽然图11中未示出,但可提供多个系统总线1108,其中每一系统总线1108构成不同网状架构。
其它主装置和从属装置可连接到系统总线1108。如图11中所说明,作为实例,这些装置可包含存储器系统1114、一或多个输入装置1116、一或多个输出装置1118、一或多个网络接口装置1120和一或多个显示控制器1122。输入装置1116可包含任何类型的输入装置,包含但不限于输入键、交换器、语音处理器等。输出装置1118可包含任何类型的输出装置,包含但不限于音频、视频、其它视觉指示符等。网络接口装置1120可为被配置成允许来往于网络1124的数据的交换的任何装置。网络1124可以是任何类型的网络,包含但不限于有线或无线网络、私用或公用网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和因特网。网络接口装置1120可被配置成支持所要的任何类型的通信协议。
CPU 1104(0)-1104(T)还可以被配置成在系统总线1108上存取显示控制器1122以控制发送到一或多个显示器1126的信息。显示控制器1122经由一或多个视频处理器1128将信息发送到显示器1126以供显示,所述处理器将待显示的信息处理成适用于显示器1126的格式。显示器1126可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器中或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。本文所揭示的存储器可为任何类型和大小的存储器,并且可被配置成存储所要的任何类型的信息。为清楚说明此可互换性,上文已大体上关于其功能性描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。所属领域的技术人员可针对每一具体应用以不同方式来实施所描述的功能性,但这样的实施决策不应被解释为会引起脱离本发明的范围。
结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文中所描述的功能的任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或多个微处理器与DSP核心结合,或任何其它此类配置。
本文中所揭示的各方面可以硬件和存储在硬件中的指令来体现,且可驻存于例如随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或所属领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体被耦合到处理器,使得处理器可以从存储媒体读取信息且将信息写入所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻留在远程站、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一个中所描述的操作步骤是为了提供实例和论述。可以用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,在单个操作步骤中描述的操作实际上可以在数个不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,所属领域的技术人员将易于显而易见,流程图中所说明的操作步骤可以经受众多不同修改。所属领域的技术人员还将了解,可使用多种不同技术和技法中的任一个来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的先前描述以使得所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将易于显而易见对本发明的各种修改,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本发明的精神或范围。因此,本发明并不希望限于本文中所描述的实例和设计,而应被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。

Claims (30)

1.一种高速缓冲存储器系统,其包括:
较低层级高速缓冲存储器;和
下一行预提取电路,其被配置成:
将预提取预测置信度状态重新设置为预提取预测置信度存储电路中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且被配置成存储指示下一行预提取状态或非下一行预提取状态的预提取预测置信度状态;和
接收包括存储器读取地址的存储器加载指令;
接收指示存储器的所述存储器读取地址的读取数据是否包含在所述较低层级高速缓冲存储器中的高速缓存命中/未命中指示符;和
响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述一或多个下一行预提取预测置信度指示符的下一行预提取预测置信度指示符中的预提取预测置信度状态;和
响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器。
2.根据权利要求1所述的高速缓冲存储器系统,其中响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据包含在所述较低层级高速缓冲存储器中,所述下一行预提取电路进一步被配置成不将下一行预提取请求发到所述较高层级存储器系统。
3.根据权利要求2所述的高速缓冲存储器系统,其中响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的读取数据读取数据包含在所述较低层级高速缓冲存储器中,所述下一行预提取电路进一步被配置成不存取所述预提取预测置信度存储电路。
4.根据权利要求1所述的高速缓冲存储器系统,其中所述下一行预提取电路进一步被配置成从所述较高层级存储器系统接收下一行预提取反馈指示符,其指示所述较高层级存储器系统接收的下一存储器加载指令的下一存储器读取地址是否匹配所述下一预提取存储器读取地址;
响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址,将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
5.根据权利要求4所述的高速缓冲存储器系统,其中所述下一行预提取电路进一步被配置成响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,不将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
6.根据权利要求1所述的高速缓冲存储器系统,其另外包括含有当前加载路径历史值的加载路径历史寄存器;
所述下一行预提取电路被配置成通过被配置成执行以下操作来存取所述预提取预测置信度状态:
将所述加载路径历史寄存器中的所述当前加载路径历史值移位到经移位加载路径历史值中;
将来自所述存储器加载指令的程序计数器的指定位移位到所述加载路径历史寄存器中的所述经移位加载路径历史值中;和
存取与所述预提取预测置信度存储电路中的所述经移位加载路径历史值相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态。
7.根据权利要求1所述的高速缓冲存储器系统,其另外包括含有加载路径历史值的加载路径历史寄存器;
所述下一行预提取电路被配置成通过被配置成执行以下操作来存取所述预提取预测置信度状态:
用所述存储器加载指令的程序计数器的位的至少一部分将所述加载路径历史值逐位异或运算为所述加载路径历史寄存器中的散列加载路径历史值;和
存取与所述预提取预测置信度存储电路中的所述散列加载路径历史值相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态。
8.根据权利要求1所述的高速缓冲存储器系统,其中所述下一行预提取电路被配置成:
重新设置包括预提取预测置信度计数的所述预提取预测置信度状态,所述预提取预测置信度计数指示包括一或多个下一行预提取预测置信度计数器的所述一或多个下一行预提取预测置信度指示符中的每一个中的所述下一行预提取状态;
响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述一或多个下一行预提取预测置信度计数器当中的下一行预提取预测置信度计数器中的所述预提取预测置信度计数;和
响应于所述存取的预提取预测置信度计数指示下一行预提取状态,将对来自所述存储器读取地址的所述下一预提取存储器读取地址的所述下一行预提取请求发到所述较高层级存储器系统。
9.根据权利要求8所述的高速缓冲存储器系统,其中所述下一行预提取电路被配置成:
将所述预提取预测置信度计数重新设置为零,这指示所述一或多个下一行预提取预测置信度计数器中的每一个中的所述下一行预提取状态;
响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述下一行预提取预测置信度计数器中的所述预提取预测置信度计数;和
响应于所述存取的预提取预测置信度计数不饱和,将对来自所述存储器读取地址的所述下一预提取存储器读取地址的所述下一行预提取请求发到所述较高层级存储器系统。
10.根据权利要求9所述的高速缓冲存储器系统,其中响应于所述存取的预提取预测置信度计数是饱和的,所述下一行预提取电路进一步被配置成不发出对所述下一预提取存储器读取地址的所述下一行预提取请求。
11.根据权利要求1所述的高速缓冲存储器系统,其中响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,所述下一行预提取电路被配置成存取与所述预提取预测置信度存储电路中的所述存储器加载指令的程序计数器相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态。
12.根据权利要求1所述的高速缓冲存储器系统,其中所述一或多个下一行预提取预测置信度指示符包括单个下一行预提取预测置信度指示符。
13.根据权利要求1所述的高速缓冲存储器系统,其另外包括所述预提取预测置信度存储电路。
14.根据权利要求1所述的高速缓冲存储器系统,其中响应于所述存取的预提取预测置信度状态指示下一行预提取状态,所述下一行预提取电路被配置成将对与到所述较高层级存储器系统的所述存储器读取地址序贯的所述下一预提取存储器读取地址的所述下一行预提取请求发到所述较低层级高速缓冲存储器。
15.根据权利要求1所述的高速缓冲存储器系统,其另外包括包括所述下一行预提取电路的高速缓存控制器,所述高速缓存控制器被配置成:
接收包括所述存储器读取地址的所述存储器加载指令;
存取所述较低层级高速缓冲存储器以确定所述存储器读取地址的所述读取数据是否包含在所述较低层级高速缓冲存储器中;和
产生指示所述存储器读取地址的所述读取数据是否包含在所述较低层级高速缓冲存储器中的所述高速缓存命中/未命中指示符。
16.根据权利要求1所述的高速缓冲存储器系统,其安置到集成电路IC中。
17.根据权利要求1所述的高速缓冲存储器系统,其集成到选自由以下组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能电话;平板计算机;平板手机;服务器;计算机;便携式计算机;台式计算机;个人数字助理PDA;监视器;计算机监视器;
电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;和机动车。
18.一种高速缓冲存储器系统,其包括:
用于存储较低层级高速缓存数据的装置;
用于将预提取预测置信度状态重新设置为用于存储下一行预提取预测置信度指示符的装置中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态的装置,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且包括用于存储指示下一行预提取状态或非下一行预提取状态的所述预提取预测置信度状态的装置;
用于接收包括存储器读取地址的存储器加载指令的装置;
用于接收指示存储器的所述存储器读取地址的读取数据是否包含在所述用于存储较低层级高速缓存数据的装置中的高速缓存命中/未命中指示符的装置;
用于响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述用于存储较低层级高速缓存数据的装置中,存取与所述用于存储所述下一行预提取预测置信度指示符的装置中的所述存储器加载指令相关联的预提取预测置信度状态的装置;和
用于响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述用于存储所述较低层级高速缓存数据的装置的装置。
19.一种节制基于处理器的系统中的下一行预提取的方法,其包括:
将预提取预测置信度状态重新设置为预提取预测置信度存储电路中的一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态,所述一或多个下一行预提取预测置信度指示符各自与一或多个存储器加载指令相关联并且被配置成存储指示下一行预提取状态或非下一行预提取状态的预提取预测置信度状态;
接收包括存储器读取地址的存储器加载指令;
接收指示存储器的所述存储器读取地址的读取数据是否包含在较低层级高速缓冲存储器中的高速缓存命中/未命中指示符;
响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取与所述预提取预测置信度存储电路中的所述存储器加载指令相关联的所述一或多个下一行预提取预测置信度指示符当中的下一行预提取预测置信度指示符中的预提取预测置信度状态;和
响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器。
20.根据权利要求19所述的方法,其另外包括响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据包含在所述较低层级高速缓冲存储器中,不将下一行预提取请求发到所述较高层级存储器系统。
21.根据权利要求19所述的方法,其另外包括:
从所述较高层级存储器系统接收下一行预提取反馈指示符,其指示所述较高层级存储器系统接收的下一存储器加载指令的下一存储器读取地址是否匹配所述下一预提取存储器读取地址;和
响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址,将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
22.根据权利要求21所述的方法,其另外包括响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,不将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
23.根据权利要求19所述的方法,其包括响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对与到所述较高层级存储器系统的所述存储器读取地址序贯的所述下一预提取存储器读取地址的所述下一行预提取请求发到所述较低层级高速缓冲存储器。
24.一种基于处理器的系统,其包括:
较低层级高速缓冲存储器系统,其包括:
较低层级高速缓冲存储器;和
较低层级下一行预提取电路,其被配置成:
接收包括存储器读取地址的存储器加载指令;
接收指示存储器的所述存储器读取地址的读取数据是否包含在所述较低层级高速缓冲存储器中的高速缓存命中/未命中指示符;
响应于所述高速缓存命中/未命中指示符指示所述存储器加载指令的所述读取数据不包含在所述较低层级高速缓冲存储器中,存取预提取预测置信度存储电路中的下一行预提取预测置信度指示符中的预提取预测置信度状态,所述下一行预提取预测置信度指示符与所述预提取预测置信度存储电路中的所述存储器加载指令相关联;
响应于所述存取的预提取预测置信度状态指示下一行预提取状态,将对来自到较高层级存储器系统的所述存储器读取地址的下一预提取存储器读取地址的下一行预提取请求发到所述较低层级高速缓冲存储器;
从所述较高层级存储器系统接收下一行预提取反馈指示符,其指示所述较高层级存储器系统接收的下一存储器加载指令的下一存储器读取地址是否匹配所述下一预提取存储器读取地址;和
响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址,将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态;和
较高层级存储器系统,其包括:
较高层级高速缓冲存储器;和
较高层级下一行预提取电路,其被配置成:
接收对所述下一预提取存储器读取地址的所述下一行预提取请求;
接收指示所述下一预提取存储器读取地址的读取数据是否包含在所述较高层级高速缓冲存储器中的高速缓存命中/未命中指示符;和
响应于所述高速缓存命中/未命中指示符指示所述下一预提取存储器读取地址的所述读取数据不包含在所述较高层级高速缓冲存储器中:
请求到所述较高层级高速缓冲存储器的所述较高层级存储器系统中的所述下一预提取存储器读取地址处的下一读取数据;
接收具有下一存储器读取地址的下一存储器加载指令;
确定所述下一存储器读取地址是否匹配所述下一预提取存储器读取地址;
响应于所述下一存储器读取地址匹配所述下一预提取存储器读取地址:
将来自所述较高层级存储器系统的所述下一预提取存储器读取地址处的所述下一读取数据存储在所述较高层级高速缓冲存储器中;和
发送指示所述下一存储器加载指令的所述下一存储器读取地址匹配所述下一预提取存储器读取地址的所述下一行预提取反馈指示符。
25.根据权利要求24所述的基于处理器的系统,其中响应于所述高速缓存命中/未命中指示符指示所述下一预提取存储器读取地址的所述读取数据不包含在所述较高层级高速缓冲存储器中,所述较高层级下一行预提取电路进一步被配置成将所述较高层级存储器系统中的所述下一预提取存储器读取地址处的所述下一读取数据存储在包括一或多个数据缓冲器条目的数据缓冲器中的数据缓冲器条目中。
26.根据权利要求25所述的基于处理器的系统,其中响应于所述下一存储器读取地址匹配所述下一预提取存储器读取地址,所述较高层级下一行预提取电路进一步被配置成使所述数据缓冲器中的所述数据缓冲器条目失效。
27.根据权利要求24所述的基于处理器的系统,其中,
响应于所述高速缓存命中/未命中指示符指示所述下一预提取存储器读取地址的所述读取数据包含在所述较高层级高速缓冲存储器中,所述较高层级下一行预提取电路进一步被配置成发送指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址的所述下一行预提取反馈指示符;和响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,所述较低层级下一行预提取电路进一步被配置成不将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
28.根据权利要求25所述的基于处理器的系统,其中:
响应于所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,所述较高层级下一行预提取电路被配置成发送指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址的所述下一行预提取反馈指示符;和
响应于所述下一行预提取反馈指示符指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,所述较低层级下一行预提取电路进一步被配置成不将与所述存储器加载指令相关联的所述下一行预提取预测置信度指示符中的所述预提取预测置信度状态重新设置为下一行预提取状态。
29.根据权利要求28所述的基于处理器的系统,其中响应于所述下一存储器读取地址不匹配所述下一预提取存储器读取地址,所述较高层级下一行预提取电路进一步被配置成:
确定所述一或多个数据缓冲器条目当中的所述数据缓冲器是否具有可用数据缓冲器条目;和
响应于确定所述数据缓冲器不具有可用数据缓冲器条目,发送指示所述下一存储器加载指令的所述下一存储器读取地址不匹配所述下一预提取存储器读取地址的所述下一行预提取反馈指示符。
30.根据权利要求24所述的基于处理器的系统,其包括响应于所述较低层级高速缓冲存储器系统的初始化,将所述预提取预测置信度状态初始化为一或多个下一行预提取预测置信度指示符中的每一个中的下一行预提取状态。
CN201780034825.7A 2016-06-24 2017-06-05 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器 Pending CN109313555A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/192,416 2016-06-24
US15/192,416 US10353819B2 (en) 2016-06-24 2016-06-24 Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
PCT/US2017/035908 WO2017222792A1 (en) 2016-06-24 2017-06-05 Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system

Publications (1)

Publication Number Publication Date
CN109313555A true CN109313555A (zh) 2019-02-05

Family

ID=59153284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780034825.7A Pending CN109313555A (zh) 2016-06-24 2017-06-05 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器

Country Status (4)

Country Link
US (1) US10353819B2 (zh)
EP (1) EP3475812A1 (zh)
CN (1) CN109313555A (zh)
WO (1) WO2017222792A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084122A (zh) * 2019-09-30 2020-12-15 海光信息技术股份有限公司 计算机存储器中对区域预取器的置信度和侵略性控制
CN114450668A (zh) * 2019-09-27 2022-05-06 安谋科技(中国)有限公司 电路和方法

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US11709679B2 (en) * 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10691460B2 (en) * 2016-12-13 2020-06-23 International Business Machines Corporation Pointer associated branch line jumps for accelerated line jumps
US10331567B1 (en) * 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US10346304B2 (en) * 2017-07-25 2019-07-09 Microsoft Technology Licensing, Llc Cache management for multi-node databases
US10303608B2 (en) * 2017-08-22 2019-05-28 Qualcomm Incorporated Intelligent data prefetching using address delta prediction
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US20190213130A1 (en) * 2018-01-05 2019-07-11 Intel Corporation Efficient sector prefetching for memory side sectored cache
US10884749B2 (en) * 2019-03-26 2021-01-05 International Business Machines Corporation Control of speculative demand loads
US11656992B2 (en) * 2019-05-03 2023-05-23 Western Digital Technologies, Inc. Distributed cache with in-network prefetch
US11204771B2 (en) * 2019-10-24 2021-12-21 Arm Limited Methods and apparatus for handling processor load instructions
US11194725B2 (en) * 2019-11-15 2021-12-07 Dell Products, L.P. Method and apparatus for adjusting cache prefetch policies based on predicted cache pollution from dynamically evolving workloads
US11429529B2 (en) * 2019-11-21 2022-08-30 Arm Limited Prefetching based on detection of interleaved constant stride sequences of addresses within a sequence of demand target addresses
US11176045B2 (en) * 2020-03-27 2021-11-16 Apple Inc. Secondary prefetch circuit that reports coverage to a primary prefetch circuit to limit prefetching by primary prefetch circuit
US11765250B2 (en) 2020-06-26 2023-09-19 Western Digital Technologies, Inc. Devices and methods for managing network traffic for a distributed cache
US11675706B2 (en) 2020-06-30 2023-06-13 Western Digital Technologies, Inc. Devices and methods for failure detection and recovery for a distributed cache
US11736417B2 (en) 2020-08-17 2023-08-22 Western Digital Technologies, Inc. Devices and methods for network message sequencing
US11556474B1 (en) * 2021-08-19 2023-01-17 International Business Machines Corporation Integrated semi-inclusive hierarchical metadata predictor
US11782919B2 (en) 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table
US20230176973A1 (en) * 2021-12-08 2023-06-08 Arm Limited Replacement control for candidate producer-consumer relationships trained for prefetch generation
US12013784B2 (en) * 2022-01-07 2024-06-18 Centaur Technology, Inc. Prefetch state cache (PSC)
US11994993B2 (en) 2022-03-15 2024-05-28 Nxp B.V. Adaptive prefetcher for shared system cache
US11960400B2 (en) * 2022-04-26 2024-04-16 Cadence Design Systems, Inc. Managing multiple cache memory circuit operations
US20240168885A1 (en) * 2022-11-23 2024-05-23 Microsoft Technology Licensing, Llc Providing location-based prefetching in processor-based devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1669011A (zh) * 2002-05-14 2005-09-14 微米技术有限公司 无序的动态随机存取存储器序列器
CN1690952A (zh) * 2004-04-22 2005-11-02 国际商业机器公司 根据多组高速缓存组预测来选择执行的指令的装置和方法
US20080276081A1 (en) * 2007-05-02 2008-11-06 International Business Machines Corporation Compact representation of instruction execution path history
CN101354641A (zh) * 2008-08-20 2009-01-28 炬力集成电路设计有限公司 一种外部存储器的访问控制方法及访问控制装置
CN101479700A (zh) * 2006-06-29 2009-07-08 高通股份有限公司 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备
US20120317364A1 (en) * 2011-06-13 2012-12-13 Loh Gabriel H Cache prefetching from non-uniform memories

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438673B1 (en) * 1999-12-30 2002-08-20 Intel Corporation Correlated address prediction
US6687794B2 (en) 2001-10-18 2004-02-03 International Business Machines Corporation Prefetching mechanism for data caches
US20060248280A1 (en) * 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetch address generation implementing multiple confidence levels
US8255631B2 (en) 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US9619390B2 (en) 2009-12-30 2017-04-11 International Business Machines Corporation Proactive prefetch throttling
US8880844B1 (en) * 2010-03-12 2014-11-04 Trustees Of Princeton University Inter-core cooperative TLB prefetchers
US9836304B2 (en) 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
US9690707B2 (en) * 2010-11-23 2017-06-27 Oracle International Corporation Correlation-based instruction prefetching
US9116815B2 (en) 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US20140108740A1 (en) 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US8909866B2 (en) * 2012-11-06 2014-12-09 Advanced Micro Devices, Inc. Prefetching to a cache based on buffer fullness
US9983878B2 (en) 2014-05-15 2018-05-29 International Business Machines Corporation Branch prediction using multiple versions of history data

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1669011A (zh) * 2002-05-14 2005-09-14 微米技术有限公司 无序的动态随机存取存储器序列器
CN1690952A (zh) * 2004-04-22 2005-11-02 国际商业机器公司 根据多组高速缓存组预测来选择执行的指令的装置和方法
CN101479700A (zh) * 2006-06-29 2009-07-08 高通股份有限公司 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备
US20080276081A1 (en) * 2007-05-02 2008-11-06 International Business Machines Corporation Compact representation of instruction execution path history
CN101354641A (zh) * 2008-08-20 2009-01-28 炬力集成电路设计有限公司 一种外部存储器的访问控制方法及访问控制装置
US20120317364A1 (en) * 2011-06-13 2012-12-13 Loh Gabriel H Cache prefetching from non-uniform memories

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114450668A (zh) * 2019-09-27 2022-05-06 安谋科技(中国)有限公司 电路和方法
CN114450668B (zh) * 2019-09-27 2023-10-31 安谋科技(中国)有限公司 电路和方法
CN112084122A (zh) * 2019-09-30 2020-12-15 海光信息技术股份有限公司 计算机存储器中对区域预取器的置信度和侵略性控制

Also Published As

Publication number Publication date
WO2017222792A1 (en) 2017-12-28
US10353819B2 (en) 2019-07-16
EP3475812A1 (en) 2019-05-01
US20170371790A1 (en) 2017-12-28

Similar Documents

Publication Publication Date Title
CN109313555A (zh) 使用初始高预提取预测置信度状态以节制基于处理器的系统中的下一行预提取的下一行预提取器
CN108780398B (zh) 在基于处理器系统中基于负载路径历史使用地址预测表以提供负载地址预测
CN112970006B (zh) 一种基于递归神经网络的内存访问预测方法和电路
US11687343B2 (en) Data processing apparatus and method for providing candidate prediction entries
CN102169429A (zh) 预取单元、数据预取方法以及微处理器
JP2017509998A (ja) キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング
US9395984B2 (en) Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods
EP4025998B1 (en) Swapping and restoring context-specific branch predictor states on context switches in a processor
EP4025996B1 (en) Deferring cache state updates in a non-speculative cache memory in a processor-based system in response to a speculative data request until the speculative data request becomes non-speculative
EP3221784B1 (en) Providing loop-invariant value prediction using a predicted values table, and related apparatuses, methods, and computer-readable media
US10235299B2 (en) Method and device for processing data
US11847053B2 (en) Apparatuses, methods, and systems for a duplication resistant on-die irregular data prefetcher
US11762660B2 (en) Virtual 3-way decoupled prediction and fetch
US20220197807A1 (en) Latency-aware prefetch buffer
US20230205699A1 (en) Region aware delta prefetcher
TW202420078A (zh) 用於在處理器中的獲取迴路中的預測控制指令的多個例項的分支資訊佇列項目的重用
EP4081899A1 (en) Controlling accesses to a branch prediction unit for sequences of fetch groups
US20160092232A1 (en) Propagating constant values using a computed constants table, and related apparatuses and methods

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190205

WD01 Invention patent application deemed withdrawn after publication