CN101002178B - 用于对存储器的各种访问类型进行预测的预取器 - Google Patents

用于对存储器的各种访问类型进行预测的预取器 Download PDF

Info

Publication number
CN101002178B
CN101002178B CN2005800270828A CN200580027082A CN101002178B CN 101002178 B CN101002178 B CN 101002178B CN 2005800270828 A CN2005800270828 A CN 2005800270828A CN 200580027082 A CN200580027082 A CN 200580027082A CN 101002178 B CN101002178 B CN 101002178B
Authority
CN
China
Prior art keywords
address
prediction
cache memory
sequential
triggering
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.)
Expired - Fee Related
Application number
CN2005800270828A
Other languages
English (en)
Other versions
CN101002178A (zh
Inventor
济亚德·S·哈库拉
拉多斯拉夫·丹尼拉克
布拉德·W·西梅拉尔
布赖恩·基思·朗根多夫
斯特凡诺·A·佩斯卡多尔
德米特里·维舍特斯凯
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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
Priority claimed from US10/920,682 external-priority patent/US7461211B2/en
Priority claimed from US10/921,026 external-priority patent/US7206902B2/en
Priority claimed from US10/920,995 external-priority patent/US7260686B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Priority claimed from PCT/US2005/029135 external-priority patent/WO2006038991A2/en
Publication of CN101002178A publication Critical patent/CN101002178A/zh
Application granted granted Critical
Publication of CN101002178B publication Critical patent/CN101002178B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06F9/3832Value prediction for operands; operand history buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

用于对存储器的各种访问类型进行预测的预取器
技术领域
本发明大体上涉及计算系统,且更明确地说涉及(例如)通过产生可配置的数量的预测以及通过抑制和过滤对(例如)预测库存(prediction inventory)和/或多级高速缓冲存储器的预测来预测对存储器的顺序存取和非顺序存取。
背景技术
预取器用于获取程序指令和程序数据,使得处理器可在需要时容易地利用检索到的信息。预取器预测处理器在未来可能使用哪些指令和数据,使得处理器无需等待将从通常以比处理器更慢的速率操作的系统存储器存取的指令或数据。通过在处理器与系统存储器之间构建的预取器,处理器在其等待来自存储器的请求的数据时不太可能保持闲置。因此,预取器通常改进了处理器性能。
大体来说,预取器产生的预测越多,预取器越可能可配置以使必要的指令和数据可供处理器使用,从而减少了处理器的等待时间。但常规的预取器通常缺乏对预测过程的足够的管理。在没有这种管理的情况下,这些预取器倾向于在预测地址的数量超过预取器可处理的数量时使存储器资源过载。因此,为防止资源过载,传统的预取器在产生预测时趋向于保守,以便不产生可能使预取器或存储器资源过载的预测量。另外,常规的预取器通常在不考虑实施这些预测过程的耗费的情况下产生预测,从而不能实现使预测过程成流线型的益处和对其进行支持所必需的资源量。明确的说,传统类型的预取器主要依靠标准技术来产生本质上为顺序的预测,且不会以节约资源(无论是计算资源还是其它方面的)的方式来存储预测。而且,常规预取器通常缺乏对预测过程的足够的管理,且因此倾向于在预测地址的数量超过预取器可处理的数量时使计算和存储资源过载。因此为防止资源过载,这些预取器在产生预测时趋向于保守,以便不产生可能使预取器过载的预测量。另外,许多常规预取器缺乏在产生预测之后和在处理器请求所述预测之前对预测进行管理的能力。这些预取器通常将预取数据存储在单个高速缓冲存储器中,所述高速缓冲存储器通常缺乏对相对于已存储在高速缓冲存储器中的预测来说为过剩的预测进行限制的功能性。传统预取器中使用的高速缓冲存储器仅用于存储数据,且没有经充分设计以用于有效管理其中存储的预测地址。
根据以上所述,希望提供一种用于有效预测对存储器的存取的系统、装置和方法。理想情况下,示范性系统、装置或方法将最小化或消除至少上述的缺点。
发明内容
本发明揭示一种用于预测对存储器的存取的系统、装置和方法。在一个实施例中,一示范性装置包含:一处理器,其经配置以执行程序指令和处理程序数据;一存储器,其包括程序指令和程序数据;和一存储器处理器。所述存储器处理器可包括一推测器,所述推测器经配置以接收一含有程序指令或程序数据的地址。所述推测器可包含一顺序预测器,用于产生可配置数目的顺序地址。所述推测器也可包括一非顺序预测器,其经配置以将一地址子集关联于所述地址。所述非顺序预测器也可经配置以基于所述子集的至少一个地址来预测一组地址,其中所述子集的至少一个地址对所述地址是不可型式化的。在一个实施例中,示范性非顺序预测器预期对存储器的存取。所述非顺序预测器包括一预测产生器,其经配置以从地址产生索引和标签。而且,所述非顺序预测器包括一耦合到所述预测产生器的目标高速缓冲存储器。所述目标高速缓冲存储器包括若干存储器部分,每一部分均具有用于存储触发-目标关联的存储位置。存储在第一存储器部分中的触发-目标关联与比存储在第二存储器部分中的另一触发-目标关联更高的优先权相关联。
在本发明的实施例中,所述装置包括一预测库存,所述预测库存包括各自经配置以保持一组项目的队列。所述项目群组通常包括对应于所述项目群组的一触发地址。群组的每一项目具有一种预测类型。而且,所述装置包括一库存过滤器,其经配置以将所述若干预测同与所述若干预测具有相同预测类型的队列中的至少一者进行比较。在某些情况下,所述库存过滤器经配置以将所述若干预测与具有不同预测类型的队列中的至少另一者进行比较。举例来说,可对后向队列或类似队列过滤若干前向顺序预测。在至少一个实施例中,一装置包括一数据返回高速缓冲存储器,其用以管理对存储器的预测存取。所述数据返回高速缓冲存储器可包括:一短期高速缓冲存储器,其经配置以存储具有(例如)小于一阈值的存在时间的预测;和一长期高速缓冲存储器,其经配置以存储具有(例如)大于或等于所述阈值的存在时间的预测。所述长期高速缓冲存储器通常具有大于所述短期高速缓冲存储器的存储容量。所述预取器也可包括一接口,所述接口经配置以(例如)在一个操作周期期间或两个周期中并行地检测多个预测是存储在短期高速缓冲存储器中还是存储在长期高速缓冲存储器中,还是存储在两者中,其中所述接口在检查短期高速缓冲存储器和长期高速缓冲存储器时使用所述多个预测中每一预测的至少两个表示。
附图说明
结合以下结合附图做出的详细描述可更完全地了解本发明,其中:
图1是说明根据本发明特定实施例的与存储器处理器一起构建的示范性推测器的方框图;
图2描绘根据本发明一个实施例的示范性推测器;
图3A描绘根据本发明特定实施例的示范性前向顺序预测器;
图3B描绘根据本发明特定实施例的示范性封闭后向(blind back)顺序预测器;
图3C描绘根据本发明特定实施例的示范性后段顺序预测器;
图3D描绘根据本发明特定实施例的示范性反向顺序预测器的行为;
图4说明根据本发明一个实施例的示范性非顺序预测器;
图5说明根据本发明一个实施例的抑制针对交错的顺序地址流的非顺序预测的示范性技术;
图6说明根据本发明一个实施例的抑制针对多个线程上交错的顺序地址的非顺序预测的示范性技术;
图7说明根据本发明特定实施例的基于基地址和非顺序地址的到达时间来抑制非顺序预测的另一技术;
图8描绘根据本发明特定实施例的督导预测产生的示范性技术;
图9展示根据本发明一个实施例的包括预测过滤器的另一示范性推测器;
图10是说明根据本发明特定实施例的构建示范性非顺序预测器的预取器的方框图;
图11描绘根据本发明一个实施例的示范性非顺序预测器;
图12说明根据本发明实施例的示范性预测产生器;
图13说明根据本发明特定实施例的示范性优先权调节器;
图14描绘根据本发明特定实施例的用于在形成非顺序预测时操作非顺序预测器产生器的示范性流水线;
图15描绘根据本发明特定实施例的用于操作一优先权调节器以将非顺序预测列入优先的示范性流水线;
图16是说明根据本发明特定实施例的在存储器处理器中的示范性预测库存的方框图;
图17描绘根据本发明一个实施例的示范性预测库存;
图18说明根据本发明特定实施例的库存过滤器的实例;
图19A和19B是说明根据本发明特定实施例的过滤掉冗余的示范性技术的图;
图20展示根据本发明一个实施例的安置在预取器中的另一示范性预测库存;
图21是说明根据本发明特定实施例的包括示范性高速缓冲存储器的预取器的方框图;
图22说明根据本发明一个实施例的示范性多级高速缓冲存储器;
图23A说明根据本发明特定实施例的用于第一地址存储的示范性第一查询接口;
图23B展示可使用图23A的第一查询接口来并行检查的任意数目的输入地址;
图24说明根据本发明特定实施例的用于第二地址存储的示范性第二查询接口;
图25A描绘根据本发明一个实施例的存储在第二地址存储中的示范性地址(或其表示)的可能配置;
图25B描绘根据本发明实施例的基于无序地址和有序有效位而产生结果的示范性命中产生器;
图26是根据本发明实施例的用于产生图25B的命中产生器的一个结果R的组件的示意性表示;
图27描绘根据本发明特定实施例的命中产生器的一个实例;和
图28描绘根据本发明另一实施例的命中产生器的另一实例。
类似的参考标号在附图的几张图中始终指代相应的部分。
具体实施方式
本发明提供一种系统、装置和方法,其用于有效预测对存储器的存取以便检索处理器可能预期需要的程序指令和程序数据。通过有效预测对存储器的存取,将必要的数据提供到一个或一个以上处理器的等待时间可最小化。根据本发明的特定实施例,一种装置包括经配置以预测存储器存取的推测器。示范性推测器可经配置以产生可配置的数量的预测来改变预测产生速率。在另一实施例中,推测器可抑制某些预测的产生,以限制预取器原本可能需要管理的不必要的预测(例如,冗余的预测)的数量。在特定实施例中,推测器也可通过探测含有预测的高速缓冲存储器或库存是否包括更合适的预测以呈现给处理器,来过滤不必要的预测。在一个实施例中,高速缓冲存储器将预测存储在短期高速缓冲存储器和长期高速缓冲存储器中,所述两种存储器经并行检查以过滤出冗余的预测。
用于产生顺序预测和非顺序预测的预取器和推测器的示范性实施例
图1是说明根据本发明特定实施例的示范性推测器的方框图。在这个实例中,推测器108图示为驻留在预取器106内。另外,预取器106图示为驻留在存储器处理器104中,其设计为通过一个或一个以上处理器来至少控制存储器存取。预取器106操作以在需要之前从存储器112“获取”程序指令与程序数据,并接着在处理器102请求时将获取的程序指令和程序数据提供到处理器102。通过在使用之前获取程序指令和程序数据(即,“预取”),处理器闲置时间(例如,处理器102缺乏数据的时间)最小化。预取器106还包括高速缓冲存储器110,其用于存储和管理预取的数据对处理器102的呈现。高速缓冲存储器110用作用于加速指令执行和数据检索的数据存储器。应注意,高速缓冲存储器110驻留在预取器106中,并操作以补充其它存储器高速缓冲存储器,例如“L1”和“L2”高速缓冲存储器,其通常用于减少除存储器控制器104之外的一些等待时间。
在操作中,推测器108监视系统总线103以监视处理器102存取存储器112的请求(“读请求”)。明确地说,在处理器102执行程序指令时,推测器108检测针对含有仍将由处理器102使用的程序指令和程序数据的地址的读请求。出于讨论的目的,“地址”与通常在存储器112与高速缓冲存储器110之间传递的高速缓冲存储器行或存储器的单元相关联。高速缓冲存储器行的“地址”可指存储位置,且高速缓冲存储器行可含有来自存储器112的一个以上地址的数据。术语“数据”指可预取的信息单元,而术语“程序指令”和“程序数据”分别指处理器102在处理中使用的指令和数据。因此,数据(例如,任意数目个位)可代表组成程序指令和/或程序数据的预测信息。同样,术语“预测”可与“预测地址”互换使用。当预测地址用于存取存储器112时,通常获取含有所述预测地址以及其它地址(预测的或另外的)的一个或一个以上高速缓冲存储器行。
基于检测到的读请求,推测器108可产生很可能随后由处理器102请求的可配置数目的预测地址。推测器108通过使用根据本发明至少一个实施例的一个或一个以上推测技术来完成此操作。推测器108将这些推测技术实施为预测器,下文描述其实施方案。而且,推测器108抑制某些预测的产生和过滤其它预测。通过抑制或过滤某些预测,或通过这两种方法,冗余的预测的数目减少,从而节约了资源。节约的资源的实例包括存储器资源,例如高速缓冲存储器110,和总线资源(例如,带宽方面),例如存储器总线111。
在推测器108的预测经历可选过滤之后,存储器处理器104经由存储器总线111将留存的预测(即,未被过滤掉)传输到存储器112。作为响应,存储器112返回具有预测地址的预取数据。高速缓冲存储器110临时存储返回的数据,直到存储器处理器104将所述数据发送给处理器102的时间为止。在适当的时间点,存储器处理器104经由系统总线103将预取的数据传输到处理器102以尤其确保等待时间最小化。
图2描绘根据本发明一个实施例的示范性推测器。推测器108经配置以接收读请求201,推测器108根据读请求201产生预测203。如图示,推测器108包括预测控制器202,其经配置以将控制信息和地址信息提供给顺序预测器(“SEQ.Predictor”)206和非顺序预测器(“NONSEQ.Predictor”)216,所述两个预测器均产生预测203。预测控制器202全部或部分用于以提供最佳数量和类型的预测的方式支配预测产生过程。举例来说,预测控制器202可改变读请求201中规定的、针对特定高速缓冲存储器行或高速缓冲存储器行群组产生的预测的数目和类型。作为另一实例,预测控制器202包括抑制器204,其用以抑制某些预测的产生以便节约资源(例如目标高速缓冲存储器218中的可用存储器),或将由于冗余预测的地址而带来的对存储器112的不必要的存取最小化。预测控制器202可视需要包括督导器205,其用以加速非顺序预测的产生。督导器208如图8中描述而操作以在检测到直接处在非顺序预测所关联的非线性地址流之前的地址之前触发非顺序预测的产生。在以下顺序预测器206和非顺序预测器216的描述之后将对预测控制器202进行更详细的论述。
顺序预测器206经配置以产生具有一定程度的预期的预测(即,预测地址)。也就是说,顺序预测器206随着时间的过去而产生可能预期遵从规则读请求201的一个或一个以上型式的预测。这些型式起因于存储器引用本身具有空间局部性的事实。举例来说,在处理器102执行程序指令时,读请求201的流在穿过系统总线103时本质上可为顺序的。为预测遵从顺序型式的地址,下文描述为“前向顺序预测”的一类推测技术可预测顺序地址。接着描述此类推测技术。
前向顺序预测器208经配置以产生上升次序的若干顺序地址。因此,如果处理器102将包括上升地址流的一系列读请求201传输到系统总线103上,那么前向顺序预测器208将产生若干预测以用于预取额外的上升地址。在图3A中描述前向顺序预测器(“FSP”)208的实例。如图3A中所示,FSP 208接收地址(例如地址A0),并从A0地址以前向(即,上升)顺序产生一个或一个以上地址。符号A0确定基地址(即,A+0),从所述基地址形成一个或一个以上预测。因此,符号A1、A2、A3等代表地址A+1、A+2、A+3等,而符号A(-1)、A(-2)、A(-3)等代表地址A-1、A-2、A-3等。尽管这些符号代表上升或下降一个地址的一系列地址,但任何可型式化的地址集合可称为顺序的。如全文所使用,顺序地址可由单个字母表示和作为单个字母而提及。举例来说,“A”表示A0、A1、A2、A3等,且“B”表示B0、B1、B2、B3等。由此,“A”和“B”各自表示顺序地址流,但“B”的地址流对“A”的地址流为非顺序的。
进一步参看图3A,FSP 208图示为接收至少启用信号和分批信号,所述信号均由预测控制器202提供。启用信号控制是否产生前向顺序预测,且如果产生,那么分批信号控制FSP 208产生的顺序地址的数目。在这个实例中,分批信号指示将预测超过基地址的“七个”地址。且由此,FSP 208产生前向顺序的地址A1到A7。因此,当推测器108接收作为读请求201的一部分的地址(例如A0)时,顺序预测器206可提供地址A1、A2、A3、...、Ab作为预测203的一部分,其中b是“分批”的数目。
图2的封闭后向顺序预测器210经配置以产生一个顺序地址,但次序上是从基地址下降的。图3B中描绘封闭后向顺序预测器(“blind back”)210的实例,其展示封闭后向顺序预测器210接收一个或一个以上地址(例如地址A0),并从A0地址以后向(即,下降)顺序仅产生一个预测,例如地址A(-1)。与FSP 208的情况一样,封闭后向顺序预测器210还接收一启用信号以控制其是否产生后向预测。
图2的后段顺序预测器214经配置以在其从系统总线103检测到另一特定高速缓冲存储器行之后产生特定的高速缓冲存储器行作为预测。明确地说,如果后段顺序预测器214检测到某一读请求201是针对高次高速缓冲存储器行的,那么产生关联的低次高速缓冲存储器行作为预测。高次高速缓冲存储器行可称为包括奇地址的上部(“前”)段,而低次高速缓冲存储器行可称为包括偶地址的下部(“后”)段。为了说明,考虑高速缓冲存储器行含有128个字节,且包含64个字节的高次高速缓冲存储器行(即,128个字节的上半部)和64个字节的低次高速缓冲存储器行(即,128个字节的下半部)。
图3C中描绘后段顺序预测器214的实例,其展示后段顺序预测器(“后段”)214接收一个或一个以上地址。一旦接收到针对高速缓冲存储器行的上部或前段(例如地址AU)的读请求201,那么后段顺序预测器214产生仅一个预测:地址AL。这类推测技术利用了处理器102通常在请求高速缓冲存储器行的上部或前段之后会在某个时间请求下部或后段的现象。同样,后段顺序预测器214接收启用信号以控制其是否产生后段预测。
图2的反向顺序预测器212经配置以产生下降次序的若干顺序地址。因此,如果处理器102将包括下降地址流的一系列读请求传输到系统总线103上,那么反向顺序预测器212将产生若干预测以用于额外的下降地址。在图3D中描绘反向顺序预测器(“RSP”)212的实例。如图3D中所示,RSP 212检测地址流(例如地址A0、A(-1)和A(-2)),并作为响应从基地址A0以反向(即,下降)顺序产生一个或一个以上地址。图3D还展示RSP 212接收至少启用信号、分批信号和置信水平(“Conf.”)信号,所述信号全部由预测控制器202提供。尽管启用信号和分批信号以类似与FSP 208一起使用的方式操作,但置信水平(“Conf.”)信号控制一界定何时触发反向顺序预测产生的阈值。
图3D进一步展示图表310,其描绘根据本发明特定实施例的示范性RSP 212的行为。这里,置信水平“二”设定触发级312,且分批信号指示将预测超过触发地址的“五个”地址。触发地址是导致预测器产生预测的地址。考虑在间隔I1期间检测到A(0)之后,RSP212还在随后的间隔I2期间检测到地址A(-1)。接着,一旦在间隔I3期间检测到地址A(-2),达到检测到的流是一系列下降地址的某一置信水平。当超过触发级312时达到这个置信水平,这导致RSP 212产生反向顺序的地址A(-3)到A(-7)。因此,当推测器108接收到作为一系列读请求201的某一数目的地址(例如A0、A(-1)和A(-2))时,顺序预测器206可提供地址A(-3)、A(-4)、A(-5)、...、Ab作为预测203的一部分,其中b是“分批”数目。应注意在某些实施例中,RSP 212不使用置信水平,而是产生在基地址之后开始的预测。在本发明的其它实施例中,置信水平的概念用于本文描述的其它预测器。下文进一步讨论顺序预测器206的RSP 212和其它组成预测器的控制,接着描述图2的非顺序预测器216。
非顺序预测器216经配置以产生在由推测器108检测到的一地址之后的一个或一个以上预测(即,预测地址),即使所述地址在读请求201的非线性流内。通常,当没有可藉以预测下一地址的请求地址的可观察到的型式时,仅基于先前地址的预测是困难的。但根据本发明的实施例,非顺序预测器216产生非顺序预测,其包括不能从一个或一个以上先前地址型式化的预测地址。“不可型式化的”预测是不能用先前地址型式化或对于先前地址无规则的预测。一类不可型式化的预测是非顺序预测。非顺序预测所基于的先前地址可为直接地址或配置成触发地址的任何地址。应注意,读请求201的流中的两个或两个以上地址的一个或一个以上型式的缺乏表明处理器102在从存储位置的各个空间位置获取指令和数据方面是以略微散乱的方式执行程序指令的。
非顺序预测器216包括目标高速缓冲存储器218,其作为存储库以用于存储一先前地址对可适合充当非顺序预测的一个或一个以上可能的非顺序地址的关联。目标高速缓冲存储器218设计为容易将其内容与传入的检测到的地址进行比较,用于以适时的方式产生非顺序预测。藉以产生非顺序预测的检测到的地址称为“触发”地址,且所得的预测是两者之间的不可型式化的关联的“目标”。接着描述示范性非顺序预测器216。
图4说明根据本发明一个实施例的示范性非顺序预测器216。非顺序预测器216包括非顺序预测引擎(“NonSeq.Prediction Engine”)420,其在操作上耦合到一存储库(目标高速缓冲存储器422)。目标高速缓冲存储器422维持每一触发地址与一个或一个以上相应目标地址之间的关联。应注意,图4展示用以关联非顺序地址的许多方法中的一种。这里,树结构将一特定触发地址关联于其相应的目标地址。在这个实例中,目标高速缓冲存储器422包括作为触发地址的地址“A”,由地址“A”形成对可能的非顺序预测的地址(例如地址“B”、“X”和“L”)的关联。这三个目标地址也是针对个别地址“C”及“G”、“Y”和“M”的触发地址。下文更详细地讨论目标高速缓冲存储器422的形成和操作。应注意,地址“A”也可为针对图4中未展示的触发地址的目标地址。另外,在未展示的地址之间许多其它关联也是可能的。
非顺序预测引擎420经配置以接收至少四个信号和任意数目的地址402。为控制非顺序预测引擎420的操作,预测控制器202提供“分批”信号和“启用”信号,所述信号两者本质上类似于先前描述的信号。预测控制器202还提供另外两个信号:宽度(“W”)信号和深度(“D”)信号。这些信号控制目标高速缓冲存储器422的形成;宽度信号W设定可藉以预测触发地址的可能的目标的数目,且深度信号D设定与触发地址相关联的级的数目。后者的实例是D指示深度为“四”的情况。这意味着地址A处在第一级,地址B处在第二级,地址C和G处在第三级,且地址D处在第四级。前者的实例是当W设定为“二”的情况。这意味着三个地址“B”、“X”和“L”中仅两个用于非顺序预测。
图4还展示非顺序预测引擎420,其经配置以从预测控制器202接收示范性地址402,例如在非顺序地址流404、406、408、410和412中概念性描述的地址,所述地址流每一者均包括对先前检测到的地址为不可型式化的地址。举例来说,流404包括地址“A”,随后是地址“B”,随后又是地址“C”。与非顺序地址的情况一样,在仅仅监视来自处理器102的读请求201的情况下,检测一型式以根据“A”预测“B”和根据“B”预测“C”是个难题。因此,非顺序预测器216形成目标高速缓冲存储器422以实现特定触发地址与其目标地址之间的不可型式化的关联的预测。一旦非顺序预测引擎420形成非顺序预测,其便根据相关联的目标地址产生一组预测。因此,如果触发地址“A”导致地址“B”的非顺序预测(即,B0作为基地址),那么预测地址将包括B0、B1、B2、...、Bb,其中b是由分批信号设定的数。
在本发明的一个实施例中,非顺序预测引擎420在其存储每一地址402对随后地址的关联时形成目标高速缓冲存储器422。举例来说,一旦检测到流404的地址A,那么非顺序预测引擎420便用关联来填充目标高速缓冲存储器422,所述关联例如为A对B的关联、B对C的关联、C对D的关联等。非顺序预测引擎420在其检测到其它流406、408等的地址时进行相同操作。
根据特定实施例,目标高速缓冲存储器422以表格形式存储这些关联,例如表430、440和450。这些表包括触发列426和目标列428,用于分别存储触发地址与目标地址之间的关联。接着考虑全部流的地址402均存储在目标高速缓冲存储器422的表430、440和450中。如表430所示,触发-目标关联432、434和436分别描述A对B的关联、B对C的关联和G对Q的关联。其它触发-目标关联438包括C对D的关联等。同样,表440包括触发-目标关联442以描述A对X的关联,且表450包括触发-目标关联452以描述A对L的关联。
图4展示表430、440、450分别标示为“路径0”、“路径1”和“路径2”,其描述针对同一触发地址的多个触发-目标关联的相对优先权。在这个情况下,路径0与最高优先权相关联,路径1与第二高优先权相关联,等等。在这个实例中,表430的触发-目标关联432指示A对B的关联比作为表440的触发-目标关联442的A到X的关联具有更高的优先权。因此,在目标高速缓冲存储器422包括这些关联之后,下一次非顺序预测引擎420检测地址A(只要预测控制器202启用非顺序预测引擎420以操作),那么由于表的相对优先权,地址B将被预测为最高优先权,随后是地址X具有第二高优先权等。
根据本发明的一个实施例,以至少两个方法确定相对优先权。第一,触发-目标关联在被首先检测到并置于目标高速缓冲存储器422内时被指派为具有最高优先权。第二,触发-目标关联在非顺序预测引擎420确定所述触发-目标关联为成功(例如,存在一个由基于所述特定关联的非顺序预测引起的最近高速缓冲存储器命中)时被指派为具有最高优先权。“最近”高速缓冲存储器命中是与特定触发地址相关联的目标地址中至少一者的新近高速缓冲存储器命中。另外,先前“最高优先权”(也指定为leg 0)通过将相应的关联移动到路径1表而转换到第二高优先权(也指定为leg 1)。例如,考虑A对X的关联被引入目标高速缓冲存储器422作为第一触发-目标关联的第一时间点。作为结果,其将通过被置于表430(即,路径0)中而被指派最高优先权(即,初始处于leg 0处)。在某个稍后的时间点,目标高速缓冲存储器422将A对B的关联插入表430(最高优先权、leg 0)。同样,将A对X的关联移动到表440(第二高优先权、leg 1)。在本发明的特定实施例中,触发-目标关联存储到哪个表格视组成一索引的地址位的一部分而定。
再次参看图2,预测控制器202经配置以控制顺序预测器206和非顺序预测器216。预测控制器202控制顺序预测器206或非顺序预测器216或两者产生的预测的数量以及类型。同样,预测控制器202抑制原本不必要的预测203(例如冗余的或重复的预测)的产生。因为预测器208、210、212、214和216每一者可同时操作,所以应管理预测203的数目以便不会使预取器资源过载。预测控制器202使用抑制器204来执行这个操作和其它类似操作。
在本发明的一个实施例中,抑制器204控制产生的预测的数量。其通过首先确定读请求201的某些属性来进行此操作。明确地说,抑制器204确定读请求201是关于程序指令(即,“代码”)还是程序数据(即,“非代码”)。通常用于检索代码而不是程序数据的读请求201趋于本质上更可能为顺序的,或至少为可型式化的。这是因为处理器102通常用比其对程序数据的请求更线性的方式执行指令。由此,抑制器204可指示顺序预测器206或非顺序预测器216在读请求201涉及程序数据时抑制预测产生。这有助于防止产生虚假预测。
抑制器204也可通过确定读请求201是非预取“要求”还是预取来调节顺序预测器206和非顺序预测器216产生的预测的数量。处理器102通常将在绝对必要的某些情况下要求(作为非预取要求)从存储器112检索程序指令或程序数据,而处理器102可能仅请求预取程序指令或程序数据以预期稍后的需要。由于对于服务来说,绝对需要可能比预期需要更重要,因此抑制器204可指示特定预测器抑制基于预取读请求201的预测而支持基于要求读请求201的预测。
表I说明用于抑制产生的预测的数目的示范性技术。也就是说,在读请求201关于代码与要求两者时,抑制器204的抑制性最小。也就是说,预测控制器202将“分批”设定为大大小,其表示为表I中的批大小(4)。在特定实例中,批大小(4)可设定为七。但如果出于上文给出的原因,当读请求201涉及程序数据(即,非代码)与处理器产生的预取两者时,抑制器204的抑制性最大。由此,预测控制器202将“分批”设定为小大小,其表示为表I中的批大小(1)。例如,批大小(1)可设定为一。在其它情况下,预测控制器202可通过使用其它批大小(例如批大小(2)和批大小(3))来改变预测抑制的等级。尽管根据本发明一个实施例的抑制器经配置以通过在处理器请求是针对数据或预取请求或两者的情况下减少“分批”数量来抑制至少一个预测地址的产生,但表I不是限制性的。举例来说,针对代码或指令的处理器请求可减小“分批”大小而不是使其增加。作为另一实例,针对要求的请求也可减小“分批”大小而不是使其增加。所属领域的技术人员应了解许多变化在本发明的范围内。
Figure GSB00000888370400121
读请求类型
表I
抑制器204也可调节顺序预测器206和非顺序预测器216产生的预测的类型。首先,考虑预测控制器202可同时启用前向顺序预测器208和反向顺序预测器212。由此,抑制器204指示预测控制器202在反向顺序预测器212触发(即,超过置信水平)时禁用至少前向顺序预测器208,以便在处理器102请求读取下降次序的地址时将对上升次序的地址的预测最小化。
其次,考虑当预测控制器202启用顺序预测(即,前向顺序预测器208或反向顺序预测器212)以操作时,某一地址触发后向预测(即,封闭后向顺序预测器210或后段顺序预测器214)。在这个情况下,抑制器204抑制分批使其从其针对前向顺序预测器208或反向顺序预测器212的初始数量减少一。也就是说,如果“分批”初始设定为七,那么一旦触发或激活封闭后向顺序预测器210或后段顺序预测器214,“分批”将减少一。举例来说,如果针对前向顺序预测器208的分批设定为产生地址A0、A1、A2、...、A7,且如果封闭后向顺序预测器210经启用以用于一个或一个以上读请求201,那么前向顺序预测器208仅产生预测A1、A2、...、A6。最终结果是针对所述读请求201的一组预测A(-1)、A(0)、A1、A2、...、A6,其中后向预测提供预测A(-1)。
第三,预测控制器202可视需要而禁用封闭后向顺序预测器210或后段顺序预测器214以抑制其在来自处理器的地址201的顺序流中首先产生的预测之后的预测。这是因为在序列的基地址建立之后,随后的前向或反向顺序预测也预测后向型推测(虽然落后一个地址)。举例来说,前向顺序预测A2、A3和A4也覆盖后向型预测A1、A2和A3,A1、A2和A3全部已经预测(如果基地址为A0)。抑制器204可经配置以抑制其它类型的预测,以下为其实例。
图5说明根据本发明一个实施例的抑制非顺序预测的示范性技术。根据这个技术,抑制器204检测原本可能被视为非顺序的交错顺序流,其需要将触发-目标关联存储在目标高速缓冲存储器422中。为节约资源,尤其是目标高速缓冲存储器422中的可使用的存储器,抑制器204分析例如流502中的非顺序地址,并将所述非顺序地址模型化为交错的顺序流。如图示,流502包含地址A0、B0、C0、A1、B1、C1、A2、B2和C2,其每一者在个别的间隔I1、I2、I3、I4、I5、I6、I7、I8和I9期间检测到。抑制器204包括例如表504的数据结构以将非顺序地址模型化为顺序的。表504可含有任意数目的流跟踪器以用于解构流502。明确地说,流跟踪器520、522和524经设计以分别模型化顺序流B0、B1和B2,A0、A1和A2,以及C0和C1。将从流502稍后检测到的读地址(例如A7(未图示))与这些流进行比较,以察看对于正被跟踪的那些流是否仍可抑制非顺序预测。
在操作中,抑制器204通过存储基地址510(例如序列的第一地址)来跟踪顺序流。随后,抑制器204保持最后检测到的地址514。对于每一新的最后检测到的地址(例如,流跟踪器520的B2),前一个最后检测到的地址(例如,流跟踪器520的B1)通过被置于列512(可选的列)而作废(“无效”)。通过这个示范性技术,抑制器204在其它类型的预测可使用时抑制不必要的非顺序预测的产生。因此对于图5所示的实例,前向顺序预测器208可足够针对流502产生预测。
图6说明根据本发明一个实施例的抑制非顺序预测的另一示范性技术。根据这个技术,抑制器204类似于图5中描述的过程将非顺序地址模型化为交错顺序流。但图6的技术实施多个数据结构,其每一者用于检测任意数目的线程上的顺序流。在这个实例中,表604、606和608分别包括针对线程(0)(“T”)、线程(1)(“T′”)和线程(2)(“T″”)的流跟踪器。因此通过这个技术,流602的非顺序地址可模型化为多个线程上的多个顺序流,以便抑制非顺序预测。应注意,这个技术可应用于反向顺序流或其它类型的预测。
图7说明根据本发明特定实施例的抑制非顺序预测的另一技术。对于地址流702,地址A4与B0之间存在非顺序性。但在某些情况下,如果这些请求的读地址之间的时间差太短,那么将没有足够的时间使用非顺序预测。抑制器204的匹配器706操作以比较地址A4与B0之间的时间差d。如果d等于或大于一阈值TH,那么匹配器706发信号以启用(即,“不抑制”)非顺序预测器216以操作。但如果d小于TH,那么匹配器706发信号以禁用非顺序预测器216,从而抑制预测。
可由抑制器204实施的另一抑制机制如下。在处理器102进行针对后段地址的请求之前,在请求前段地址之后,通常会经过有限的时间量。如果所述时间量足够长,那么后段地址读请求可能表现为不规则性(即,对前段来说不可型式化)。为防止这种情况,抑制器204经配置以保持处理器102的前段读取的列表。在检测到前段地址之后,将地址与所述前段地址进行比较。当相应的后段到达时,其将被如此认识。因此,另外的非顺序性以及其预测可被抑制。
图8描绘根据本发明特定实施例的督导预测产生的示范性技术。具体来说,督导器205(图2)操作以根据这种技术来加速非顺序预测的产生。在这个实例中,流802包括两个对接的顺序流A0到A4和B0到B3。非顺序预测器216通常将地址A4指定为触发地址808,将地址B0指定为目标地址810。但为减少产生非顺序预测的时间,可将触发地址80g改变成新的触发地址804(即,A0)。因此通过针对目标地址的新的触发地址的指定,在下一次处理器102请求流802的地址时,非顺序预测器216一旦检测到较前的地址而不是较后的地址便可立即产生其预测(即,当检测到A0为“新的”触发地址而不是A4时产生预测)。这确保在最适宜的时间产生非顺序预测。
图9展示根据本发明一个实施例的另一示范性推测器。在这个实例中,预取器900包括具有过滤器914的推测器908,过滤器914用于过滤冗余的地址以便将不必要的预测产生保持为最少。图9的预取器900还包括多级高速缓冲存储器920和预测库存916。这里,多级高速缓冲存储器920包含第一级数据返回高速缓冲存储器(“DRC1”)922和第二级数据返回高速缓冲存储器(“DRC2”)924。第一级数据返回高速缓冲存储器922可一般性描述为短期数据存储且第二级数据返回高速缓冲存储器924可一般性描述为长期数据存储。多级高速缓冲存储器920存储来自存储器112的预取的程序指令和程序数据,直到处理器102需要所述程序指令和程序数据为止。类似地,预测库存916为产生的预测提供临时存储,直到所述预测被仲裁器918选中以存取存储器112为止。仲裁器918经配置以根据仲裁规则来确定将发出哪些产生的预测以用于存取存储器112以预取指令和数据。
过滤器914包括至少两个过滤器:高速缓冲存储器过滤器910和库存过滤器912。高速缓冲存储器过滤器910经配置以将新产生的预测与那些预取已存储在多级高速缓冲存储器920中的指令和数据的先前的预测进行比较。因此如果一个或一个以上新产生的预测对关于多级高速缓冲存储器920的任何先前产生的预测是冗余的,那么就使那些冗余的预测作废以便使预测的数目最小化。另外,库存过滤器912经配置以将新产生的预测与已产生并存储在预测库存916中的那些预测进行比较。因此,如果一个或一个以上新产生的预测对先前存储在预测库存916中的预测是冗余的,那么可使任何冗余的预测作废以便使预测的数目最小化,从而释放预取器资源。
非顺序预测器的示范性实施例
图10是说明根据本发明特定实施例的示范性非顺序(“NONSEQ”)预测器1010的方框图。在这个实例中,非顺序预测器1010图示为驻留在推测器1008内,推测器1008还包括用于产生顺序预测的顺序预测器1012。包括推测器1008的预取器1006操作以在需要之前从存储器(未图示)“获取”程序指令与程序数据,并接着在处理器(未图示)请求时将获取的程序指令和程序数据提供到所述处理器。通过在使用之前获取程序指令和程序数据(即,“预取”),处理器闲置时间(例如,处理器缺乏数据的时间)最小化。非顺序预测器1010包括用于产生预测的非顺序预测引擎(“预测引擎”)1020和用于存储预测和将预测列入优先的目标高速缓冲存储器1030。
预取器1006还包括过滤器1014、可选预测库存1016、可选仲裁器1018和多级高速缓冲存储器1040。这里,过滤器1014包括一高速缓冲存储器过滤器(未图示),其经配置以将新产生的预测与导致程序指令和程序数据已经预取到多级高速缓冲存储器1040中的那些先前预测进行比较。因此,如果任何新产生的预测对存储在多级高速缓冲存储器1040中的任何先前产生的预测是冗余的,那么使所述冗余的预测作废以便使预测的数目最小化,从而释放预取器资源。预测库存1016提供用于存储产生的预测的临时存储,直到由仲裁器1018选择以存取存储器为止。仲裁器1018经配置以确定将发出哪些产生的预测以用于存取存储器以预取指令和数据。
多级高速缓冲存储器1040包含第一级数据返回高速缓冲存储器(“DRC1”)1042和第二级数据返回高速缓冲存储器(“DRC2”)1044。第一级数据返回高速缓冲存储器1042可一般性描述为短期数据存储且第二级数据返回高速缓冲存储器1044可一般性描述为长期数据存储。根据本发明的实施例,第一级数据返回高速缓冲存储器1042或第二级数据返回高速缓冲存储器1044或两者可存储基于预测地址(即,目标地址)而预取的预取程序指令和程序数据。如图示,将存储在多级高速缓冲存储器1040中的预取预测信息表示为data(TRT1)和data(TRT2)。这个符号意味着目标地址TRT1和TRT2有助于预取表示预测信息的数据。如图示,且如下文将讨论,data(TRT1)和data(TRT2)存储在多级高速缓冲存储器1040中且分别具有预测识别符(“PID”)1和2。当处理器请求data(TRT1)或data(TRT2)时,相应的目标地址(例如,TRT1)和预测识别符将被传递到非顺序预测器1010。
在操作中,推测器1008在处理器请求对存储器的存取(“读请求”)时监视系统总线。在处理器执行程序指令时,推测器1008检测针对含有仍将由处理器使用的程序指令和程序数据的地址的读请求。出于讨论的目的,“地址”与高速缓冲存储器行或存储器的单元相关联,其通常在存储器与高速缓冲存储器(例如多级高速缓冲存储器1040)之间传递。应注意,高速缓冲存储器是目标高速缓冲存储器1030外部的库存的实例。
基于检测到的读请求,非顺序预测器1010可产生很可能随后由处理器请求的可配置数目的预测地址。明确地说,非顺序预测器1010经配置以在其检测到一地址之后产生一个或一个以上预测(即,预测地址),即使所述地址在读请求的非线性流内。通常,当没有可藉以预测下一地址的请求地址的可观察型式时,仅基于先前地址的预测是困难的。但根据本发明的实施例,非顺序预测引擎1020产生非顺序预测,其包括不能从一个或一个以上先前地址型式化的预测地址。“不可型式化的”预测是不能用先前地址型式化或对先前地址无规则的预测。一类不可型式化的预测是非顺序预测。非顺序预测所基于的先前地址可为直接地址或配置成触发地址的任何地址。应注意,读请求的流中的两个或两个以上地址的一个或一个以上型式的缺乏表明处理器在从存储位置的各种空间位置获取指令和数据方面是以略微散乱的方式执行程序指令。
非顺序预测器1010包括目标高速缓冲存储器1030作为存储库,用于存储一先前地址对可各自充当非顺序预测的一个或一个以上可能的非顺序地址的关联。目标高速缓冲存储器1030设计为将其内容与传入的检测到的地址进行比较,用于以快速的方式产生非顺序预测。另外,目标高速缓冲存储器1030经配置以响应于(例如)高速缓冲存储器中的命中而将所述非顺序预测列入优先。或者,非顺序预测器1010可将在新的非顺序预测与特定的触发地址之间建立关联的第一实例列入优先。“触发”地址是非顺序预测器1010藉以产生非顺序预测的检测到的地址,其中所得的预测称为两者之间的不可型式化的关联的“目标”。应注意,根据本发明的至少一个实施例,目标高速缓冲存储器1030可为单端口存储器以节约原本将由多端口存储器使用的资源。
在预取器1006发出来自非顺序预测器1010的预测之后,非顺序预测用于存取存储器。作为响应,存储器返回具有涉及预测地址的引用的预取的数据,其中所述引用可包括预测识别符(“PID”)和相应的目标地址。随后,多级高速缓冲存储器1040临时存储返回的数据,直到处理器请求所述数据为止。如下文描述,当处理器请求预取数据(即,预测信息)时,将一引用发送到非顺序预测器1010以用于在必要时重新调节非顺序预测的优先权。
图11说明根据本发明一个实施例的示范性非顺序预测器1010。非顺序预测器1010包括非顺序预测引擎(“NonSeq.Prediction Engine”)1120,其可操作地耦合到一存储库,如目标高速缓冲存储器1130例示。另外,非顺序预测引擎1120包括预测产生器1122和优先权调节器1124。预测产生器1122产生预测并管理存储在目标高速缓冲存储器1130中的触发-目标关联。优先权调节器1324操作以将(例如)从最新近的成功的目标地址到最久远的或成功的目标地址的触发-目标关联列入优先。在图12和13中分别更彻底地描述预测产生器1122和优先权调节器1124。
目标高速缓冲存储器1130维持每一触发地址(“TGR”)与一个或一个以上相应目标地址(“TRT”)之间的关联。应注意,图11展示用以关联非顺序地址的许多方法中的一种。这里,树结构将一特定触发地址关联于其相应的目标地址。在这个实例中,目标高速缓冲存储器1130包括作为藉以形成对可能的非顺序预测的地址(例如地址“B”、“X”和“L”)的关联的触发地址的地址“A”。这三个目标地址也是针对个别地址“C”及“G”、“Y”和“M”的触发地址。下文更详细地讨论目标高速缓冲存储器1130的形成和操作,尤其是在预测产生器1122发现一新的触发-目标关联并将所述关联插入目标高速缓冲存储器1130中时。应注意,地址“A”也可为针对图11中未展示的触发地址的目标地址。另外,在未展示的地址之间许多其它关联也是可能的。
如图示,根据本发明的一个实施例,可(例如)由非顺序预测引擎1120根据至少三个变量:宽度(“w”)、深度(“d”)和高度(“h”)来构造目标高速缓冲存储器。宽度w设定可藉以预测触发地址的可能的目标的数目,且深度d设定与触发地址相关联的级的数目。高度h设定用于产生非顺序预测的连续触发地址的数目。例如考虑d指示深度“四”。这意味着地址A处在第一级,地址B处在第二级,地址C和G处在第三级,且地址D处在第四级。作为另一实例,考虑w设定为“二”。这意味着三个地址“B”、“X”和“L”中仅两个用于非顺序预测作为leg 0和leg 1,全部三个地址均为第二级。在特定实施例中,变量h将级的数目设定为超过恰好第一级以完成多级预测产生。
考虑h设定为2,如图11所示。这意味着存在两个级的触发地址——第一级中的触发地址(例如,地址A)和第二级中的连续触发地址(例如,地址B)。因此,通过将h设定为2,响应于触发地址A而形成第一分组的预测。也就是说,第二级的所述目标地址中的任意目标地址可产生一组或一组以上非连续地址。举例来说,地址“B”、“X”和“L”中的任一者可为产生非顺序预测的基础,其中由非顺序预测引擎1120所界定的有效leg(例如,leg 0到leg 2)的数目来选择这些地址的数目。但根据多级预测产生(且h设定为2),地址“B”、“X”和“L”可各自为用于基于向下的下一级的目标地址而产生第二分组的预测的连续触发地址。因此,第三级的目标地址C和G可用于基于连续触发地址B而产生额外的非顺序预测。类似地,目标地址Y和M也可用于分别基于连续触发地址X和L而产生非顺序预测。所属领域的技术人员应了解,通过改变上述三个变量中的一个或一个以上而存在许多可能的实施方案。
非顺序预测引擎1120经配置以接收读请求的示范性地址1101。图11概念性描绘非顺序地址流1102、1104、1106、1108和1110,所述地址流每一者均包括对先前检测到的地址为不可型式化的地址。举例来说,流1102包括地址“A”,随后是地址“B”,随后又是地址“C”。根据非顺序地址的情况,在仅仅监视读请求1101的情况下,检测一型式以根据“A”预测“B”和根据“B”预测“C”是个难题。因此,预测产生器1122建立目标高速缓冲存储器1130的内容以实现特定触发地址与其目标地址之间的不可型式化的关联的预测。举例来说,一旦检测到流1102的地址A(以及随后的地址),那么预测产生器1122便使目标高速缓冲存储器1130中充满关联,所述关联例如为A对B的关联、B对C的关联、C对D的关联等。非顺序预测引擎1120在其检测到其它流1104、1106等的地址时进行相同操作。
根据特定实施例,目标高速缓冲存储器1130以表格形式存储这些关联,例如表1140、1150和1160。这些表包括触发列(“TGR”)和目标列(“TGT”),用于分别存储触发地址和目标地址。接着考虑全部流的地址1101均存储在表1140、1150和1160中。如表1140所示,触发-目标关联1142、1144和1146分别描述A对B的关联、B对C的关联和G对Q的关联。其它触发-目标关联1148包括C对D的关联等。同样,表1150包括触发-目标关联1152以描述A对X的关联,且表1160包括触发-目标关联1162以描述A对L的关联。
图11展示表1140、1150和1160分别标示为“路径0”、“路径1”和“路径2”,其描述目标高速缓冲存储器1130中的针对同一触发地址的多个触发-目标关联的相对位置。优先权调节器1124通常通过使存储位置与优先权相关联来将优先权分配给触发-目标关联,且因此分配给预测。在这个情况下,路径0与最高优先权相关联,路径1与第二高优先权相关联,等等。在这个实例中,表1140的触发-目标关联1142指示A对B的关联比作为表1150的触发-目标关联1152的A到X的关联具有更高的优先权。因此,在目标高速缓冲存储器1130包括这些关联之后,下一次非顺序预测引擎1120检测到地址A,那么非顺序预测引擎1120可提供一个或一个以上预测。通常,非顺序预测引擎1120产生以优先权次序产生的非顺序预测。具体来说,非顺序预测引擎1120先产生具有最高优先权的预测再产生具有较低优先权的预测。因此,非顺序预测引擎1120可基于优先权而产生可配置数目的预测。举例来说,非顺序预测引擎1120可将预测的数目限制为二:leg 0和leg 1(即,最前两个触发-目标关联)。这意味着在某些情况下,非顺序预测引擎1120由于表的相对优先权而较为倾向于提供地址B而不是地址X。应注意,触发-目标关联之间的相对优先权仅仅是相对的。这意味着目标高速缓冲存储器1130可将针对特定触发地址的最高优先权关联定位在(例如)路径4,并将第二高优先权关联定位在路径9。但应注意,目标高速缓冲存储器1130可包括从一个地址超过仅有leg 0和leg 1的任何任意数量的“leg”。
图12说明根据本发明实施例的示范性预测产生器1222。在这个实例中,预测产生器1222耦合到目标高速缓冲存储器1230以产生预测以及管理存储在其中的触发-目标关联。预测产生器1222包括索引产生器1204、标签产生器1206、目标确定器1208和组合器1210。同样,预测产生器1222包括插入器1202,其用于将发现的触发-目标关联插入目标高速缓冲存储器1230。
当产生预测时,索引产生器1204和标签产生器1206分别操作以产生索引和标签以用于表示第一地址“addr_1”,其可为在其它地址之前的地址。索引产生器1204从addr_1形成索引“index(addr_1)”以存取目标高速缓冲存储器1230中的存储位置的子集。通常,index(addr_1)的值选择每一选择的路径的每一相应存储位置。另外,标签产生器1206形成标签“tag(addr_1)”使得预测产生器1222可存取目标高速缓冲存储器1230中的与addr_1相关联的特定触发-目标关联。
举例来说,考虑addr_1为“G”。通过这个地址,预测产生器1222产生index(G)以选择与所述索引相关联的存储位置。在这个实例中,index(G)具有值“I”,其为三(即,I=3)。这意味着index(G)可用于针对路径(“路径0”)1240、路径(“路径1”)1250到路径(“路径N”)1260而选择由I=3标示的每个存储位置,其中N是表示目标高速缓冲存储器1230中可用的路径的数目的可配置数目。对于同一地址G,标签产生器1206将产生地址G的标签作为tag(G)以识别与G相关联的特定存储位置。因此,给定索引index(G)和标签tag(G),目标地址Q和P(或其替代表示)可从路径1240和路径1250中的个别存储位置检索或存储在所述存储位置,如图12所示。在特定实施例中,每一地址由36位组成。位28:18可表示一地址的标签,且位19-9、18:8、17:7或位16:6的任何群组均可表示所述地址的可配置索引。在一个实施例中,地址的一部分替代地表示目标地址。举例来说,36位目标地址的位30:6保持在目标高速缓冲存储器1230的TRT列中。通过目标地址与触发地址的减少的表示,需要较少的硬件,从而减少材料、资源等方面的成本。
目标确定器1208确定针对一特定触发是否存在触发-目标关联,且如果存在,那么其确定针对所述触发的每一目标地址。继续前一个实例,目标确定器1208响应于与index(G)处的表示其它触发地址的标签相匹配的tag(G)而检索目标地址Q和P。所属领域的技术人员应了解,众所周知的比较器电路(未图示)适合于实施在预测产生器1222或目标高速缓冲存储器1230中以识别匹配的标签。当找到一个或一个以上目标地址时,将所述地址传递到组合器1210。组合器1210将每一目标地址1214关联于预测识别符(“PID”)1212,其包含触发地址的索引和标签。PID 1212识别导致目标地址Q和P被预测的触发地址。因此,如果PID 1212可表示为[index(G),tag(G)],那么预测产生器1222产生的非顺序预测将具有[index(G),tag(G),Q]的形式作为引用。应注意,作为预测的Q在[index(G),tag(G)]与其相关联时被视为“引用的预测”。因此,预取到高速缓冲存储器中的预测信息可表示为data(Q)+[index(G),tag(G),Q]。
组合器1210可经配置以接收“分批”信号1226以用于产生对触发地址非顺序的若干额外预测。举例来说,考虑分批信号1226指示组合器1210以产生“n”个预测作为一组预测,其具有包括匹配的目标地址的范围。因此,如果触发地址“G”产生地址“Q”的非顺序预测(即,Q0作为基地址),那么预测地址可包括Q0、Q1、Q2、...、Qb,其中b是由分批信号设定的数目。应注意在后段或封闭后向顺序预测同时产生的某些情况下,分批b可设定为b-1。因此,预测地址的群组将包括Q(-1)、Q0、Q1、Q2、...、Q(b-1)。应注意预测地址的群组中的每一者也可与PID 1212相关联。在特定实施例中,目标地址1214继承触发地址的属性,其中这些属性指示触发地址是否与代码或程序数据相关联,和触发地址是否为处理器要求地址。在另一特定实施例中,比群组中预测地址数目少的预测地址也可与PID 1212相关联。在一个实例中,仅目标地址Q0与PID 1212相关联,而群组的其它地址的一者或一者以上(例如,Q(-1)、Q2、Q3等)无需与PID 1212相关联。因此,当遇到触发地址G,随后是目标地址Q0时,PID 1212报告到非顺序预测器。稍后,当遇到Q2或群组的任何其它地址时,PID 1212不报告。这减少了目标高速缓冲存储器中的冗余条目的数目。因此,作为对所述预测命中的结果,仅关联“G->Q0”被存储并重新列入优先。当在地址流中检测到地址Q1时,非顺序预测器将不需要插入关联“G->Q1”。
接着,考虑目标确定器1208没有检测到针对addr 1的地址。目标确定器1208接着通知插入器1202不存在针对addr_1的触发-目标关联。作为响应,插入器1202形成针对addr_1的触发-目标关联,并将所述关联插入目标高速缓冲存储器1230。为进行此操作,插入器1202首先使用index(addr_1)识别一存储位置,其用以存储tag(addr_1)。插入器1202还经配置以接收随后的地址“addr_2”以存储作为对触发地址addr_1的目标地址。因为在新形成的触发-目标关联之前不存在触发-目标关联,所以插入器1202将tag(addr_1)和addr_2分别存储在路径1240的TRG列和TGT列中,路径1240为最高优先权路径(即,路径0)。举例来说,考虑对于图11的地址流1104,这个流展示第一实例,其中“Z”跟随“Y”。在确定不存在“tag(Y)对Z”触发-目标关联之后,图12的插入器1202接着将新的触发-目标关联存储在index(Y)。因此,“tag(Y)对Z”存储为路径1240中的触发-目标关联1242。在特定实施例中,插入器1202从优先权调节器1324接收插入信号(“INS”)1224,接着描述优先权调节器1324。
图13说明根据本发明实施例的示范性优先权调节器1324。大体来说,优先权调节器1324操作以将从最新近的成功的目标地址到最久远的或成功的目标地址的触发-目标关联列入优先。举例来说,当对于一特定目标来说不存在前一个目标时,触发-目标关联将被分配最高优先权(即,存储在路径0中)。另外,当预测的目标地址证实为成功(例如,存在处理器的数据读取,其中基于非顺序预测预取所述数据)时,触发-目标关联可被分配最高优先权。在这个实例中,优先权调节器1324耦合到目标高速缓冲存储器1230以尤其将存储在其中的触发-目标关联列入优先。优先权调节器1324包括寄存器1302、索引解码器1308、标签解码器1310、目标确定器1318、匹配器1314和重新优先器1316。
大体来说,优先权调节器1324接收非顺序预测器1010外部的信息,所述信息指示一特定地址在提供处理器请求的数据时是成功的。所述信息可由高速缓冲存储器产生,例如图10中描述的多级高速缓冲存储器1040。优先权调节器1324将这个信息接收到寄存器1302中作为“Hit Info”。Hit Info是至少包括数据(例如,处理器实际请求的程序指令和/或程序数据)的地址1304的引用。将地址1304标记为addr_2。所述引用还包括与地址1304相关联的PID 1306。
索引解码器1308和标签解码器1310分别从PID 1306提取index(addr_1)和tag(addr_1)以确定addr_2是否具有适当的优先权级。为进行此操作,优先权调节器1324识别addr_2是否为目标高速缓冲存储器1230中的现有触发-目标关联的目标地址。在优先权调节器1324将tag(addr_1)和index(addr_1)应用于目标高速缓冲存储器1230之后,目标高速缓冲存储器1230的TRG列中的任何匹配的触发地址将由目标确定器1318接收。一旦检测到关联于addr_1的一个或一个以上目标地址,那么目标确定器1318将所述目标地址提供到匹配器1314。
但如果目标确定器1318确定触发-目标关联中不存在目标地址(即,不存在与地址addr_1相关联的任何addr_2),那么其将插入信号(“INS”)1224传递到图12的插入器1202以插入新的触发-目标关联。插入信号1224通常包括地址信息,例如addr_1和addr_2。通常在针对Hit Info的PID 1306不存在匹配的目标地址的情形中意味着处理器命中了先前发出的非顺序预测。但目标高速缓冲存储器1230已清除为所述先前发出的非顺序预测形成基础的触发-目标关联。因此,非顺序预测引擎1010将插入或重新插入一触发-目标关联,其可再次用于预测由处理器成功使用的非顺序地址。
当目标确定器1318检测到一个或一个以上目标地址时,其将检测到的目标地址提供给匹配器1314。匹配器1314将每一检测到的目标地址与addr_2(即,地址1304)进行比较以确定针对addr_1存在多少相关联的目标地址,和针对每一现有的目标地址,确定相应的触发-目标关联驻留于其中的路径。匹配器1314将其比较的结果提供到重新优先器1316以在必要时修改优先权。
首先,考虑一个情况,其中一个或一个以上目标地址已检测为与PID 1306相关联(即,addr_1),其将addr_1表示为触发地址,但不存在包括addr_2的触发-目标关联。因此,重新优先器1316将新的触发-目标关联插入表示最高优先权的位置(例如,路径0),并将使同一触发的现有的触发-目标关联的优先权降级。举例来说,考虑如图12所示,“tag(A)对X”触发-目标关联处在表示最高优先权的存储位置,而“tag(A)对L”关联具有较低的优先权。接着,假定PID 1306将地址A表示为addr_1,且addr_2为地址B。重新优先器1316将操作将“tag(A)对B”关联存储(如图13所示)在路径0中,其它先前的关联存储在其它路径中,其具有较低的优先权。
其次,考虑一个情况,其中两个目标地址已检测为与PID 1306相关联(即,addr_1),但两个触发-目标关联的优先权已不适当地交换。在这个情况下,重新优先器1316将最高优先权触发-目标关联插入表示最高优先权的位置(例如,路径0),并将先前的最高优先权触发-目标关联插入表示第二高优先权的另一位置(例如,路径1)。举例来说,考虑如图12所示,“tag(B)对G”触发-目标关联处在表示最高优先权的存储位置,而“tag(B)对C”关联具有较低的优先权。接着,假定PID 1306将地址B表示为addr_1,且地址C为addr_2。重新优先器1316将操作以将“tag(B)对C”关联存储(如图13所示)在路径0中,其它关联存储在路径1中,其具有较低的优先权。应注意,如果至少两个最靠前的优先权保持为“leg 0”和“leg 1”分别作为最高和第二高优先权,那么这种列入优先的技术是有用的。
接着,考虑一个情况,其中两个目标地址已检测为与PID 1306相关联(即,addr_1),且两个触发-目标关联的优先权已适当分配。在这个情况下,因为相应的触发-目标关联是正确的,所以重新优先器1316不会动作。
图14描绘根据本发明特定实施例的用于操作预测器产生器以形成非顺序预测的示范性流水线1400。在图14中,实线方框表示各阶段期间或之间的存储,且虚线方框表示非顺序预测器执行的动作。在阶段0期间,读请求的addr 1由组合标签与索引产生器1402解码,1402为图13的索引解码器1308和标签解码器1310的混合物。在一个实施例中,组合标签与索引产生器1402是一多路复用器,其经配置以将addr_1分离为地址的第一部分和地址的第二部分。第一部分在1406处保持为tag(addr_1),且第二部分在1408处保持为index(addr_1)。同样在此阶段,将index(addr_1)应用于1410处的目标高速缓冲存储器以检索描述触发-目标关联的数据。根据需要,在目标高速缓冲存储器正被写入时,读请求的addr_1可临时存储在缓冲器1404中。
在阶段1期间,tag(addr_1)和index(addr_1)分别保持在1412和1414处。在1416处,从目标高速缓冲存储器读取目标地址。在阶段2期间,非顺序预测引擎通过首先在1418处将tag(addr_1)匹配于与index(addr_1)相关联的标签以选择合适的非顺序预测。在1420处,非顺序预测引擎配置多路复用器(例如)以将最高优先权目标地址传输(即,从存储最高优先权触发-目标关联的路径)到1422处的leg 0预测队列中,和将第二高优先权目标地址传输(即,从存储第二高优先权触发-目标关联的路径)到1424处的leg 1预测队列中。在阶段3期间,将这两个非顺序预测在1430处输出到(例如)组合器。应注意,尽管图14在四个阶段中产生非顺序预测,但其它实施例的其它非顺序预测流水线可具有更多或更少的阶段。
图15描绘根据本发明特定实施例的用于操作一优先权调节器以将非顺序预测优先列入优先的示范性流水线1500。实线方框表示各阶段期间或之间的存储,且虚线方框表示可由优先权调节器执行的动作。流水线1500描述将触发-目标关联插入目标高速缓冲存储器并将目标高速缓冲存储器关联重新列入优先的示范性方法。阶段-1确定优先权调节器是将进行插入还是列入优先。如果优先权调节器将执行插入,那么在此阶段期间将1502处的读请求的地址addr_1存储在1506处。这个地址可能成为针对目标地址的触发地址。如果优先权调节器将执行列入优先,那么在此阶段期间在1504处优先权调节器从外部源(例如,高速缓冲存储器)接收表示addr_1地址的PID 1508,且还在1510处接收地址addr_2。
应注意,图14和15使用一个预测级来例示非顺序预测。为实施多级预测产生,可修改示范性流水线1400和1500以将个别流水线1400和1500结束处所产生的预测反馈到流水线1400和1500内作为输入地址。接着将这些预测排队以用于另一级的预测产生。举例来说,如果检测到A,那么目标高速缓冲存储器1130产生目标地址B和X(例如,作为两个最高优先权的路径)。接着,将作为连续触发地址的地址B输入回到流水线的顶部中,藉此目标高速缓冲存储器1130产生地址C和G。简单来说,可将反馈回路添加到示范性流水线1400和1500以构建一个以上预测级。
首先考虑在阶段0期间,优先权调节器执行触发-目标关联插入。在这个情况下,addr_1由组合标签与索引产生器1514解码,且addr_2通过多路复用器1516而选自1512。组合标签与索引产生器1514执行索引产生器和标签产生器的集合功能。在一个实施例中,组合标签与索引产生器1514是多路复用器,其经配置以从1506或1508选择地址。在这个情况下,组合标签与索引产生器1514形成第一地址部分,其保持为1520处的tag(addr_1),且形成第二部分,其保持为1522处的index(addr_1)。同样在此阶段期间,将index(addr_1)经由多路复用器1518而应用于1524处的目标高速缓冲存储器以检索描述触发-目标关联的数据。接着考虑在阶段0期间优先权调节器执行目标高速缓冲存储器的列入优先。在这个情况下,addr_1(或其替代表示)从1508接收,且addr_2通过多路复用器1516而选自1510。组合标签与索引产生器1514接着从PID 1508形成第一和第二部分。接着将从PID 1508形成的index(addr_1)经由多路复用器1518应用于1524处的目标高速缓冲存储器以检索描述触发-目标关联的数据。从阶段1到阶段3,无论优先权调节器是执行插入还是列入优先,流水线1500均有类似的表现。
在阶段1期间,tag(addr_1)和index(addr_1)分别保持在1530处和1532处。在1534处,从目标高速缓冲存储器读取目标地址。在阶段2期间,优先权调节器首先将tag(addr_1)与标签进行匹配。如果在1540处没有标签匹配,那么多路复用器在1542处经配置以准备插入触发-目标关联。但如果来自目标高速缓冲存储器的路径的至少一个标签在1544处匹配,且如果最高优先权的触发-目标关联没有驻留在对应于最高优先权的路径中,那么在1554处将触发-目标关联重新列入优先。为进行此操作,在1552处选择多路复用器以重新列入优先或插入一新的触发-目标关联。在阶段3期间,完全连接的重新列入优先多路复用器经配置以存储来自1556的addr_2。这个地址在阶段0期间将作为目标地址而写在路径0处,如1550处保持的index(addr_1)所确定。如图示,由1560处的完全连接的重新优先多路复用器确定的其它触发-目标关联通过使用1550处保持的index(addr_1)、作为高速缓冲存储器写入数据也被写入1524处的目标高速缓冲存储器。在流水线1500返回到阶段0之后,优先权调节器因而继续操作。
从库存发出预测的示范性实施例
图16是说明根据本发明特定实施例的示范性预测库存1620的方框图。在这个实例中,预测库存1620图示为驻留在预取器1606内。另外,预取器1606图示为在存储器处理器1604内操作,所述存储器处理器1604设计为至少控制一个或一个以上处理器的存储器存取。预取器1606操作以在需要之前从存储器1612“获取”程序指令与程序数据,并接着在处理器1602请求时将获取的程序指令和程序数据提供到所述处理器1602。通过在使用之前获取程序指令和程序数据(即,“预取”),处理器闲置时间(例如,处理器1602缺乏数据的时间)最小化。预取器1606还包括用于产生预测的推测器1608和用于去除不必要的预测的过滤器1622。
过滤器1622代表库存过滤器或后库存过滤器(post-inventory filter)或两者。通过去除不必要的预测,预取器1606可节约原本将用于不必要地管理重复预测的计算和存储资源。库存过滤器(作为预库存过滤器)操作以在插入到预测库存1620之前去除不必要的预测,而后库存过滤器在发出到存储器1612之前去除不必要的预测。在图20中描述后库存过滤器的实例。接着,以下讨论预取器1606的操作及其组件。
在操作中,推测器1608监视系统总线1603以监视处理器1602存取存储器1612的请求(“读请求”)。在处理器1602执行程序指令时,推测器1608检测针对含有仍将由处理器1602使用的程序指令和程序数据的地址的读请求。出于讨论的目的,“地址”与高速缓冲存储器行或存储器的单元相关联,其通常在存储器1612与高速缓冲存储器(未图示)之间传递。高速缓冲存储器是预测库存外部的预测的存储库的实例。高速缓冲存储器行的“地址”可指存储位置,且高速缓冲存储器行可含有来自存储器1612的一个以上地址的数据。术语“数据”指可预取的信息单元,而术语“程序指令”和“程序数据”分别指处理器1602在处理中使用的指令和数据。因此,数据(例如,任意数目个位)可代表组成程序指令和/或程序数据的预测信息。
基于检测到的读请求,推测器1608可产生许多预测以改进其准确预测处理器1602对存储器1612的存取的机会,所述许多预测可能包括冗余的预测。所述预测的实例包括前向顺序预测、反向顺序预测、后向封闭顺序预测、后段顺序预测、非顺序预测,和类似预测。为去除这些冗余,库存过滤器1622过滤掉重复的预测以产生留存的预测,这些留存的预测随后被存储在预测库存1620中。为去除冗余,在将产生的预测插入预测库存1620之前,库存过滤器1622将所述预测与高速缓冲存储器(未图示)的内容进行比较。如果在一预测与驻留在预测库存1620中的一个预测之间发现匹配,那么库存过滤器1622使所述预测作废。但如果没有发现匹配,那么库存过滤器1622将留存的预测插入预测库存1620。应注意,情况可能是新的一组预测(即,由一个事件或同一触发地址产生的预测)内的某些预测匹配于高速缓冲存储器的内容,而其它预测不匹配。在这个情况下,库存过滤器1622使匹配于高速缓冲存储器中的预测的个别预测作废,并将不匹配的那些预测(例如,没有标记为“无效”)插入预测库存1620。
一旦驻留在预测库存1620中,那么预测保持为库存的“项目”。术语“项目”指存储在预测库存1620中的“预测”或“触发地址”(其产生预测)。可出于过滤目的而将这些项目与稍后产生的预测进行比较。预取器1606管理库存中的这些项目,同时以变化的速率将其发出到存储器1612。发出的速率视预测的类型(例如,前向顺序预测、非顺序预测等)、每一类型预测的优先权和下文描述的其它因素而定。
预测可变为冗余的一个方式是处理器1602发出针对一特定地址的实际读请求,且针对所述地址的预测已经存在于预测库存1620中的情况。在这个情况下,所述预测被过滤掉(即,使其作废),且处理器1602的实际读请求被保持。对于例如顺序型和后向型预测的预测尤其这样。而且,某些预测在预测库存1620接收所述预测直到预取器1606将其发出到存储器1612的时间之间变为冗余,预取器1606也可在发出一项目之前过滤掉预测。这再次减少了在一重复的但稍后产生的预测被插入预测库存1620的时间期间出现的冗余预测的数目。且随着冗余预测的数目减少,因此节约更多的资源。
在预取器1606从预测库存1620发出预测之后,存储器处理器1604将剩余的预测(即,没有被至少一后库存过滤器过滤掉)经由存储器总线1611传输到存储器1612。作为响应,存储器1612返回关于预测地址的预取数据。可驻留在预取器1606内部或外部的高速缓冲存储器(未图示)临时存储返回的数据,直到存储器处理器1604将所述数据发送到处理器1602的时间为止。在适当的时间点,存储器处理器1604将预取的数据经由系统总线1603传输到处理器1602以尤其确保等待时间最小化。
图17描绘根据本发明一个实施例的示范性预测库存1620。预测库存1620含有用于存储预测的若干队列1710、1712、1714和1716,其中队列可为用于存储预测直到每一者均被发出或过滤掉为止的缓冲器或任何类似组件。预测库存1620还包括库存管理器1704和一个或一个以上队列属性1706,藉此库存管理器1704根据相应的队列属性1706来配置每一队列的结构和/或操作。
个别队列维持预测作为项目,所述预测通常全部是同一特定类型的预测,例如前向顺序预测。如图示,预测库存1620包括四个队列:顺序队列(“S队列”)1710,后向队列(“B队列”)1712,非顺序零队列(“NS0队列”)1714,和非顺序一队列(“NS1队列”)1716。顺序队列1710可经配置以含有前向顺序预测或反向顺序预测,而后向队列1712可含有封闭后向顺序预测或后段顺序预测。出于讨论的目的,应注意,前向顺序预测、反向顺序预测和类似预测可统称为“系列型”预测,而封闭后向顺序预测、后段顺序预测和类似预测可统称为“后向型”预测。
预测库存1620包括“第0”非顺序队列和“第1”非顺序队列。非顺序(“零”)队列1714和非顺序(“一”)队列1716分别含有具有“最高”和“第二高”优先权的非顺序预测。明确地说,非顺序零队列1714保持非顺序预测,其包括可由相应触发地址产生的(任意数目的目标地址中的)最高优先权目标地址。“触发”地址是推测器1608藉以产生预测的检测到的地址。所述预测(即,预测地址)是“目标”地址,其不能用产生目标的触发来型式化(例如,非顺序的)。类似地,非顺序一队列1716保持非顺序预测,但变为包括可由相应触发地址产生的第二高优先权目标地址。
每一队列可包含任意数目的群组1720,例如群组0、1、2和3。每一群组1720包括可配置数目的项目,例如触发地址和触发地址产生的相应预测。举例来说,顺序队列1710的群组1720每一者可包括一触发地址和七个顺序预测,而后向队列1712的群组1720每一者可包括一触发地址和一个后向型预测(或在某些情况下,这些队列仅含有作为项目的预测)。另外,非顺序零队列1714或非顺序一队列1716或两者的群组1720可含有一触发地址和一组四个非顺序预测(或在某些情况下,其仅含有作为项目的预测)。在特定实施例中,推测器1608通过设定其“分批”数目来确定存储在预测库存1620中的每个群组1720的项目数目,以产生特定数目的预测。通过将预测存储在预测库存1620中作为分组项目,群组1720减少了通常用于个别地管理每一预测的信息的量,这又便利了发出预测时的仲裁。
库存管理器1704经配置以管理每一队列中项目的库存,以及控制队列的结构和/或操作。为管理预测库存1620,库存管理器1704全部或部分使用一个或一个以上队列属性1706来进行此操作。队列属性的第一实例是队列类型。举例来说,队列1710到1716中的任一者可配置成先入先出(“FIFO”)缓冲器、后入先出(“LIFO”)缓冲器或任何其它类型的缓冲器。队列的类型(例如FIFO或LIFO)影响插入和去除与队列有关的项目的方式。在一个实施例中,顺序队列1710配置成LIFO,且非顺序零队列1714和非顺序一队列1716每一者均配置成FIFO。
队列属性的第二实例是可分配给队列、群组或项目的到期时间或寿命。这个属性控制预测陈旧的程度。随着任何群组1720或队列中的预测老化或变陈旧,其将逐渐不能反映准确的预测。因此为了最少化老化的项目,库存管理器1704启用一群组以保持其当前库存直到某一到期时间为止,所述到期时间之后库存管理器1704清除整个老化的群组或仍待发出的任何剩余项目。在本发明的一个实施例中,可配置队列、群组或项目的寿命以便使其无限期地保留。也就是说,可将其设定为“永存的”,这意味着永存的预测将驻留在队列中,直到被发出或永存性被撤销为止。在特定实施例中,当群组被插入队列时,到期时间与所述群组关联。随后,定时器从所述到期时间倒数,使得当其到达零时,所述群组的任何剩余项目无效。在另一实施例中,将非顺序零队列1714或非顺序一队列1716的群组1720的到期时间设定为比顺序队列1710的群组1720的到期时间更长,以增加非顺序预测将被发出且因此在数据高速缓冲存储器中命中的可能性。
队列属性的第三实例是与队列相关联的插入指示符,用以指示当队列已满时,库存管理器1704如何将预测插入所述队列。在一个情况下,插入指示符指示库存管理器1704是放弃插入新产生的预测,还是重写驻留在特定队列中的老的项目。如果插入指示符是“放弃”,那么库存管理器1704将丢弃原本将被插入的任何新的预测。但如果插入指示符是“重写”,那么视所述特定队列所对应的队列类型而定,库存管理器1704采取两个动作过程中的一个。如果队列配置成LIFO,那么库存管理器1704就将新预测推进LIFO作为堆栈,这有效地从LIFO的底部推出最老的项目和/或群组。但如果队列配置成FIFO,那么新预测就重写FIFO中的最老的项目。
队列属性的第四实例是与每一队列相关联的优先权,其用以确定下一项目将从其发出的特定队列。在一个实施例中,相对于队列1710、1712、1714和1716中的每一者而设定优先权次序,以用于在所述队列之间进行仲裁以选择下一预测。在系列型预测较大量产生的应用中,服务顺序队列1710是重要的。因此,这个队列通常与相对高的优先权相关联。这意味着(例如)非顺序零队列(“NS0队列”)1714和非顺序一队列(“NS1队列”)1716最可能设定为相对于顺序队列1710的较低的优先权。队列属性的另一实例是与每一队列相关联的队列大小,其用以确定多少预测可临时存储在其中。举例来说,顺序队列可具有两个群组的大小或深度,后向队列可具有一个群组的深度,且非顺序队列可具有四个群组的深度。应注意,队列大小可通过控制分配给不同类型预测的库存存储器的多少来控制预取器1606发出的预测的数目。
根据本发明的一个实施例,可将后向队列1712的优先权动态地提高或修改成高于顺序队列1710的优先权。这个特征存在于在推测器1608检测到一上部或“前”段之后从存储器1612检索预测信息时。这是因为处理器1602很可能在请求高速缓冲存储器行的上部或前段之后立即请求下部或“后”段。因此通过提升后向队列1712的优先权,尤其是在其保持后段顺序预测时,预取器1606将适当的后段顺序预测发出到存储器1612的可能性增加。在特定实施例中,后向队列计数器(未图示)对从不同于后向队列1712的队列发出的项目的数目进行计数。当这个计数器到达一阈值时,后向队列1712被提高到至少高于顺序队列1710的一优先权。接着,可从后向队列1712发出一项目(例如,后段项目)。在其发出至少一个后向型项目或者后向队列1712变为空(例如,通过老化或通过发出全部项目)之后,后向队列1712的优先权返回(或恢复)到其初始优先权,且后向队列计数器复位。
通常对于非顺序预测群组的任一群组1720,可存在系列型与后向型预测的混合作为非顺序预测的目标地址。明确地说,非顺序地址的群组可仅包括系列型(即,前向或反向)预测。但所述群组也可包括与后向型预测混合的若干系列型预测。作为前者的实例,考虑推测器1608确定触发地址“A”与目标地址“B”和另一目标地址“C”相关联。如果目标地址“B”具有高于C的优先权,那么B与对触发地址A为非顺序的一组预测一起保持在非顺序零队列1714中。接着,所述群组可包括预测B0(即,地址B)、B1、B2和B3,所述预测对地址A全部为非顺序的但全部是前向系列型。作为后者的实例,群组1720可包括非顺序预测B(-1)(即,地址B-1)、B0、B1和B2,其中预测B(-1)是与其它系列型预测混合的后向型预测。或者,群组1720可包括本文未具体描述的任何其它的预测配置。由于C具有高于B的第二高优先权,因此C与具有类似的一组非顺序预测一起保持在非顺序一队列1716中。因此,预测B0、B1、B2和B3可插入作为非顺序零队列1714的群组3,且预测C0、C1、C2和C3可插入作为非顺序一队列1716的群组3。
图17还展示在一个实施例中,预测库存1620经配置以经由库存过滤器1702接收预测1701,其中留存的预测通过所述库存过滤器1702。如上所述,留存的预测接着被插入适当的队列中并由库存管理器1704管理。接着描述示范性库存过滤器1702。
图18说明根据本发明特定实施例的库存过滤器1702的实例。尽管这个实例应用于对顺序队列(例如图17的顺序队列1710)过滤前向顺序预测,但库存过滤器1702可与任何队列协作使用以过滤任何类型的预测。也就是说,库存过滤器1702可经配置以将任何预测类型的任何数目的预测与含有不同预测类型的预测的至少一个其它队列进行比较。举例来说,可对后向队列或类似队列过滤若干前向顺序预测。库存过滤器1702至少包括匹配器1804以将群组1806中的项目与若干预测1802进行匹配。群组1806包括项目A1到A7,所述项目全部与项目A0相关联。A0是先前产生标示为项目A1到A7的预测的触发地址。同样,群组1806可驻留作为顺序队列1710中的任一群组1720。关于所述若干预测1802,其包括作为触发地址的“TA”和预测B1到B7,所述预测全部由推测器1608在检测到地址TA时产生。应注意,尽管图18展示仅一个群组(即,群组1806),但可用相同方式且同时过滤同一队列的其它群组1720。
在特定实施例中,匹配器1804包含标示为CMP0、CMP1、CMP2、...、CMPM的若干比较器(未图示)。比较器CMP0经配置以将TA与群组1806中的N个项目进行比较,且比较器CMP1、CMP2、...、CMPM每一者将一来自预测1802的预测与群组1806中的若干N个项目进行比较,其中M设定为适应最大数目的产生的预测。例如考虑M为七,因而需要七个比较器,且N为三,以使得每一比较器将1802中的一个元素与1806中的三个项目进行比较。另外考虑预测1802的每一元素匹配于具有相同位置的相应项目(例如,第一对第一、第二对第二等)。由此,CMP0将比较TA与A0、项目A1和项目A2,CMP1将预测B1与项目A1、A2和A3进行比较,等等。数目N可设定以便将比较器硬件的数量最小化,但足以过滤掉连续流和可能由系统总线1603上检测到的地址流中的小的跳跃(即,不大于N)产生的那些预测。
在一个实施例中,队列存储页面地址以表示A0和各自表示项目A1、项目A2等的偏移量。为确定在这个情况下是否存在匹配,将地址TA的页面地址和来自预测1802的特定预测的偏移量分别与A0的页面地址和相应的偏移量进行比较。在本发明的特定实施例中,库存过滤器1702不会对非顺序预测过滤顺序预测,且因此不会与非顺序零队列1714或非顺序一队列1716协作。这是因为非顺序推测可能较不可能具有与顺序预测中存在的冗余一样多的冗余。
图19A和19B是说明根据本发明特定实施例的过滤掉冗余的示范性技术的图。一旦匹配器1804确定一匹配,那么新产生的预测(即,新项目K)或先前产生的项目(即,老项目K)无效。图19A展示是新项目K还是老项目K被过滤掉或无效。在这个情况下,队列1902是FIFO。由此,新项目K将无效,从而保持老项目K。相比之下,图19B展示当队列1904为LIFO时,老项目K将无效,从而保持新项目K。大体来说,最早发出的新项目K或老项目K将被保持,而最迟发出的一者将无效。所属领域的技术人员应了解,在不脱离本发明的范围和精神的情况下,库存过滤器1702可使用其它技术。
图20展示根据本发明一个实施例的安置在预取器中的另一示范性预测库存。在这个实例中,预取器2000包括推测器1608和过滤器2014。图20的预取器2000还包括多级高速缓冲存储器2020和预测库存1620。这里,多级高速缓冲存储器2020包含第一级数据返回高速缓冲存储器(“DRC1”)2022和第二级数据返回高速缓冲存储器(“DRC2”)2024。第一级数据返回高速缓冲存储器2022可一般性描述为短期数据存储且第二级数据返回高速缓冲存储器2024可一般性描述为长期数据存储。多级高速缓冲存储器2020存储来自存储器1612的预取的程序指令和程序数据,直到处理器1602需要所述程序指令和程序数据为止。多级高速缓冲存储器2020的高速缓冲存储器还存储对产生预取预测信息的预测的引用,使得可对多级高速缓冲存储器2020过滤新产生的预测。举例来说,DRC12022和DRC22024除了针对高速缓冲存储器行或存储器单元的数据之外还存储两类信息作为引用:(1)用于对新预测进行过滤的存储的高速缓冲存储器行的地址,和(2)在高速缓冲存储器行由于预测而被带入高速缓冲存储器的情况下的触发地址。明确地说,触发地址用于移动推测器1608中非顺序预测的优先权。
预测库存1620提供用于产生的预测的临时存储,直到由仲裁器2018选中为止。预测库存1620中的存储的预测用于过滤掉原本将被发出的冗余。仲裁器2018经配置以根据仲裁规则来确定将发出哪些产生的预测以预取指令和数据。大体来说,所述仲裁规则提供了藉以选择特定队列以便发出预测的基础。举例来说,仲裁器2018部分或全部基于队列和/或群组之间的相对优先权来选择和发出预测。
过滤器2014包括至少两个过滤器:高速缓冲存储器过滤器2002和库存过滤器1702。高速缓冲存储器过滤器2002经配置以将新产生的预测与导致预取的指令和数据已变为存储在多级高速缓冲存储器2020中的那些先前的预测进行比较。因此如果新产生的预测中的一个或一个以上对关于多级高速缓冲存储器2020的任何先前产生的预测是冗余的,那么就使冗余的预测作废以便将需要处理的预测的数目最小化。应注意,冗余的预测(即,额外的不必要的预测)可为新产生的预测。库存过滤器1702经配置以将新产生的预测与已产生并存储在预测库存1620中的那些预测进行比较。在一个实施例中,库存过滤器1702在结构和/或功能性上类似于图18所示的库存过滤器。同样,如果一个或一个以上新产生的预测对先前存储在预测库存1620中的预测是冗余的,那么可使任何冗余的预测作废以便释放预取器资源。
为进一步减少冗余预测的数目,在预取器2000中包括后库存过滤器2016。在预取器1606从预测库存1620发出预测之后或恰好在此之前,后库存过滤器2016过滤掉在预测库存1620首先接收到所述预测的时间直到仲裁器2018选择一预测以发出的时间之间出现的冗余预测。这些冗余通常出现的原因是表示预测库存中一项目的相同预测地址的预测可能已从预测库存1620发出到存储器,但可能仍未返回任何预测信息到高速缓冲存储器2020(即,在高速缓冲存储器2020内没有对其进行过滤的引用)。在一个实施例中,后库存过滤器2016在结构和/或功能性上可类似于图18所示的库存过滤器1702或高速缓冲存储器过滤器2002。
在一个实施例中,后库存过滤器2016保持预测库存1620中每一群组1720的每一项目的发出信息。明确地说,这个发出信息指示特定群组的哪一个项目已发出。但后库存过滤器2016不会从预测库存1620去除发出的项目。相反,其保留以使得在过滤掉传入的冗余预测时可对其作比较。在所述特定群组中的每一项目发出时,发出信息经更新以反映这种情况。一旦全部项目发出,那么清除所述群组并释放队列以获得额外项目。
在一个实施例中,仲裁器2018可控制预测库存1620的涉及发出预测的某些方面。明确地说,仲裁器2018可修改队列、群组或项目之间的相对优先权,以便发出最有利的预测。在特定实施例中,仲裁器2018经配置以有效地修改相对优先权以扼制使存储器过度负担(即,存储器过度利用)的大量预测的产生,所述存储器例如为存储器1612、高速缓冲存储器2020或存储器子系统的其它组件。举例来说,仲裁器2018可将可配置的负载阈值分配给每一队列。这个阈值指示一特定队列可发出预测的最大速率。将这个负载阈值与工作负载累加器(未图示)的内容进行比较,所述工作负载累加器含有从存储器1612请求的工作的累加单元。工作单元是存储器1612请求的任何动作,例如读、写等。在存储器1612请求额外的工作单元时,工作负载累加器中的值增加。但随着时间的过去(例如,对于每一确定数目的时钟周期),所述值减小。在操作中,仲裁器2018将每一队列的负载阈值与工作负载累加器的值进行比较。如果负载阈值被工作负载值超过,那么仲裁器2018执行两个示范性动作中的一个。仲裁器2018可指示预测库存1620停止针对所述特定队列的预测,使得其中的项目将被发出或老化。或者,仲裁器2018可通过重写项目而使项目退出队列。一旦仲裁器2018检测到工作负载值落到负载阈值的值以下,那么队列将再次可用以发出预测。
对高速缓冲存储器中的预测信息执行超前查找(look-ahead lookup)的示范性实施例
图21是说明根据本发明特定实施例的包括示范性多级高速缓冲存储器2120的预取器2100的方框图。在这个实例中,多级高速缓冲存储器2120包括高速缓冲存储器过滤器2110、第一级数据返回高速缓冲存储器(“DRC1”)2122和第二级数据返回高速缓冲存储器(“DRC2”)2124。高速缓冲存储器过滤器2110经配置以对第一级DRC 2122与第二级DRC 2124两者迅速检查或执行“超前查找”,以检测所述高速缓冲存储器中存在还是不存在一输入地址(例如预测地址)。超前查找是对高速缓冲存储器进行检查以并行地确定(例如)多级高速缓冲存储器2120中是否已存在若干预测。
视一预测是存在还是不存在,多级高速缓冲存储器2120根据高速缓冲存储策略来管理第一级DRC 2122与第二级DRC 2124两者的内容,下文描述所述高速缓冲存储策略的实例。第一级DRC 2122可一般性描述为短期数据存储且第二级DRC 2124可一般性描述为长期数据存储,藉此当处理器不请求第一级DRC 2122中的预测时,所述预测最终转移到第二级DRC 2124。根据本发明的实施例,第一级DRC 2122或第二级DRC 2124或两者可基于预测地址以及处理器请求的地址来存储预取的程序指令和程序数据。同样,高速缓冲存储器过滤器2110、第一级DRC 2122和第二级DRC 2124协作以(例如)通过减少冗余预测以及通过加速预测信息的预取(例如,通过预期页面打开操作)来减少提供预取的程序指令和程序数据的等待时间。应注意,尽管以下讨论涉及多级高速缓冲存储器(即,多个高速缓冲存储器),但以下示范性实施例的任一者可包括单个高速缓冲存储器。
高速缓冲存储器过滤器2110经配置以并行地将一定范围的输入地址与若干多个高速缓冲存储器中的每一者进行比较,其中所述多个高速缓冲存储器本质上是分级的。举例来说,第一高速缓冲存储器在大小上可较小且适合于将预测存储相对短的时期,而第二高速缓冲存储器在大小上可较大且适合于将预测存储的持续时间比第一高速缓冲存储器的持续时间长。另外,根据本发明的一个实施例,第二高速缓冲存储器仅从第一高速缓冲存储器接收其预测地址和相应的预测数据。为并行地检查两个高速缓冲存储器,尤其是在第二高速缓冲存储器大于第一高速缓冲存储器的情况下,高速缓冲存储器过滤器产生在高速缓冲存储器中“查找”或检查的每一地址的两个表示。通过将一个表示用于第一高速缓冲存储器且将第二表示用于第二高速缓冲存储器,可同时检查两个高速缓冲存储器。这种情况的一个原因可以是在较大的高速缓冲存储器中比在较小的高速缓冲存储器中存在更多的需要检查的地址和条目。因此如果一次检查两者,那么较大高速缓冲存储器的地址比较小高速缓冲存储器的地址需要更有效的检查技术。下文讨论的查询接口执行这些功能。
预取器2100还包括用于产生预测的推测器2108。具体来说,推测器2108包括顺序预测器(“SEQ.Predictor”)2102以产生顺序预测,例如前向顺序预测、反向顺序预测、后向封闭顺序预测、后段顺序预测和类似预测。同样,推测器2108包括非顺序预测器(“NONSEQ.Predictor”)2104以用于形成非顺序预测。预取器2100使用这些预测以在处理器(未图示)需要指令或数据之前从存储器(未图示)“获取”程序指令与程序数据,并接着将获取的程序指令和程序数据存储在多级高速缓冲存储器2120中。通过在使用之前获取程序指令和程序数据(即,“预取”),处理器闲置时间(例如,处理器缺乏数据的时间)最小化。
非顺序预测器2104包括一目标高速缓冲存储器(未图示)作为存储库,用于存储一先前地址对可各自充当非顺序预测的一个或一个以上可能的非顺序地址的关联。所述目标高速缓冲存储器设计为将其内容与传入的检测到的地址进行比较,用于以迅速的方式产生非顺序预测,藉此所述目标高速缓冲存储器经配置以响应于(例如)多级高速缓冲存储器2120中的命中而将其存储的非顺序预测列入优先。具体来说,当多级高速缓冲存储器2120在处理器请求时将预测地址提供到所述处理器时,所述地址所属于的存储的触发-目标关联的优先权提升。“触发”地址是非顺序预测器2104藉以产生非顺序预测的检测到的地址,其中所得的预测称为两者之间形成的不可型式化的关联的“目标”。应注意,触发地址也可指引起顺序预测的地址,所述顺序预测也可称为目标地址。
预取器2100还包括过滤器2114、可选预测库存2116、可选后库存过滤器2117和可选仲裁器2118。这里,过滤器2114可经配置以包括一库存过滤器(未图示),其用于将产生的预测与驻留在预测库存2116中的先前产生的预测进行比较。预测库存2116提供用于存储产生的预测的临时存储,直到仲裁器2118选择一预测以存取存储器为止。仲裁器2118经配置以确定将发出产生的预测中的哪一个预测以用于在预取指令和数据时存取存储器。在某些实施例中,过滤器2114可包括高速缓冲存储器过滤器2110,其可经配置以将产生的预测与导致程序指令和程序数据已“预取”到多级高速缓冲存储器2120中的那些先前产生的预测进行比较。因此如果产生的预测中的任一者对存储在多级高速缓冲存储器2120中的任何先前产生的预测是冗余的,那么可使所述冗余预测作废(或无效)以便将需要管理的预测的数目最小化,从而释放预取器资源。
在操作中,推测器2108在处理器请求存取存储器(“读请求”)时监视系统总线。在处理器执行程序指令时,推测器2108检测针对含有仍将由处理器使用的程序指令和程序数据的地址的读请求。出于讨论的目的,“地址”与高速缓冲存储器行或存储器的单元相关联,其通常在存储器与高速缓冲存储器(例如多级高速缓冲存储器2120)之间传递。高速缓冲存储器行的“地址”可指存储位置,且高速缓冲存储器行可含有来自存储器的一个以上地址的数据。术语“数据”指可预取的信息单元,且术语“程序指令”和“程序数据”分别指处理器在处理中使用的指令和数据。因此,数据(例如,任意数目个位)可代表“预测信息”,其指组成程序指令或程序数据或两者的信息。同样,术语“预测”可与术语“预测地址”互换使用。当预测地址用于存取存储器时,通常获取含有所述预测地址以及其它地址(预测的或另外的)的一个或一个以上高速缓冲存储器行。
当预取器2100发出预测时,其可将引用附加或关联到每一预测。在预测是非顺序预测的情况下,与其关联的引用可包括预测识别符(“PID”)和相应的目标地址。PID(未图示)识别导致预测相应目标地址的触发地址(或其表示)。所述引用在存储器返回预取数据时由多级高速缓冲存储器2120接收。随后,多级高速缓冲存储器2120临时存储返回的数据直到处理器请求所述数据的时间为止。在多级高速缓冲存储器2120存储预取数据的时间期间,其管理所述数据以便对产生的预测进行过滤,以便确保存储在其中的数据的一致性,以便将其数据分类为短期或较长期数据,和类似目的。但当处理器请求预取数据(即,预测信息)时,所述数据被发送到处理器。如果置于多级高速缓冲存储器2120中的数据是非顺序预测的结果,那么可将引用发送到非顺序预测器2104以用于在必要时重新调节存储在目标高速缓冲存储器中的非顺序预测的优先权。
图22说明根据本发明一个实施例的示范性多级高速缓冲存储器2220。多级高速缓冲存储器2220包括高速缓冲存储器过滤器2210、第一级数据返回高速缓冲存储器(“DRC1”)2222和第二级数据返回高速缓冲存储器(“DRC2”)2224。高速缓冲存储器过滤器2210包括DRC1查询接口2204和DRC2查询接口2214,分别用于介接第一级DRC 2222和第二级DRC 2124与预取器2100的组件以及其它组件,例如存储器处理器(未图示)的组件。一种这种存储器处理器组件是图21的回写高速缓冲存储器2290,其根据众所周知的高速缓冲存储方法来操作,藉此,对高速缓冲存储器中的数据的修改直到必要时才被拷贝到高速缓冲存储器源(例如,系统存储器)。由于回写高速缓冲存储器2290在结构和功能性上类似于此项技术中众所周知的回写高速缓冲存储器,因此无需对其详细讨论。另外,DRC1查询接口2204含有DRC1匹配器2206和DRC1操纵器2208,且DRC2查询接口2214含有DRC2匹配器2216和DRC2操纵器2218。
第一级DRC 2222包括用于存储地址(例如,预测地址)的DRC1地址存储2230,其中DRC1地址存储2230耦合到DRC1数据存储2232,其存储数据(即,预测信息)和PID。举例来说,由预测地址(“PA”)产生的预取数据可被存储作为与PID 2232b相关联的data(PA)2232a。这个符号表示预测地址PA有助于预取表示预测信息的数据。当处理器请求data(PA)2232a时,相应的预测地址PA和预测识别符PID 2232b将被传递到非顺序预测器2104以在必要时修改预测地址的优先权。预测识别符PID 2232b通常含有指示使PA产生的触发地址的信息。应注意,由非顺序预测器2104产生的PA也可称为目标地址,因为处理器请求的地址(和相关数据)也可存储在多级高速缓冲存储器2220中。另外应注意,data(PA)2232a不一定伴随有PID 2232b。
另外,DRC1地址存储2230和DRC1数据存储2232以通信方式耦合到管理其功能性和/或结构的DRC1管理器2234。第二级DRC 2224包括耦合到DRC2数据存储2242的DRC2地址存储2240,所述DRC2数据存储2242以类似于数据2232a和PID 2232b形式的形式存储数据。DRC2地址存储2240与DRC2数据存储2242两者以通信方式耦合到管理其功能性和/或结构的DRC2管理器2246。
在本发明的特定实施例中,第二级DRC 2224还包括“有效位”存储库2224,用于保持有效位2244与DRC2地址存储2240相分离,每一有效位指示存储的预测是有效的(且可用于服务处理器对数据的请求)还是无效的(且不可用)。具有无效预测的条目可视为空条目。通过保持有效位2224的位与地址分离,重新设定或设定一个或一个以上有效位比DRC2地址存储2240将有效位与相应地址一起存储的情况计算量较不繁重且更快速。应注意在多数情况下,DRC1的地址的有效位通常与所述地址一起存储或存储为所述地址的一部分。
在操作中,DRC1查询接口2204和DRC2查询接口2214经配置以分别检查第一级DRC 2222和第二级DRC 2224的内容,以确定其是否包括应用为“输入地址”的一个或一个以上地址中的任一者。输入地址可源自推测器2108作为产生的预测,源自回写高速缓冲存储器作为写地址,或源自多级高速缓冲存储器2220外部的另一元件。大体上说,本文所述的输入地址是与多级高速缓冲存储器2220的内容进行比较以过滤掉冗余的预测。但有时输入地址是识别数据写入或将被写入的存储位置的写地址。在这个情况下,检查多级高速缓冲存储器2220以确定是否需要一动作以维持存储器、DRC1数据存储2222和DRC2数据存储2224之间的一致性。
DRC1匹配器2206和DRC2匹配器2216经配置以确定输入/输出端口(“I/O”)2250上的一个或一个以上输入地址是否分别驻留在DRC1地址存储2230和DRC2地址存储2240中。当DRC1匹配器2206或DRC2匹配器2216检测到一输入地址匹配于第一级DRC 2222和第二级DRC 2224中的一个地址,那么例如DRC1操纵器2208或DRC2操纵器2218的相关操纵器操作以过滤掉冗余预测或确保多级高速缓冲存储器2220中的数据与存储器一致。应注意,DRC1匹配器2206和DRC2匹配器2216可经配置以并行地(即,同时或几乎同时,例如在一个或两个操作周期(例如,时钟周期)中,或其它最小数目的周期,视多级高速缓冲存储器2220的结构而定)将一定范围的输入地址与第一级DRC 2222和第二级DRC 2224的内容进行比较。可对高速缓冲存储器并行地比较的一定范围的输入地址的实例是地址A0(触发地址)和预测地址A1、A2、A3、A4、A5、A6和A7,后七个地址可能由顺序预测器2102产生。
当被同时检查时,执行所述比较的匹配器2206、2216称为执行“超前查找”。在某些实施例中,当处理器闲置时或当没有从预取器2100请求数据时执行超前查找。同样应注意,尽管在功能性上类似,但DRC1匹配器2206和DRC2匹配器2216的个别结构分别适合于与DRC1地址存储2230和DRC2地址存储2240一起操作,且因此不必具有类似结构。下文根据本发明的至少一个特定实施例,分别结合图23A和图24来讨论DRC1匹配器2206和DRC匹配器2216的实例。
接着,考虑查询接口2204、2214执行过滤操作时的情形。通过将若干输入地址与多级高速缓冲存储器2220的内容进行比较,和通过检测不匹配的输入地址,操纵器2208、2218可采取适当动作以过滤掉匹配的预测(即,冗余预测),同时允许不匹配的输入地址继续进行作为产生的预测,以比未执行过滤的情况更快地获取预测信息。由此,多级高速缓冲存储器2220及其高速缓冲存储器过滤器2210通过更快地确定哪一个高速缓冲存储器行开始获取来减少等待时间。这又使得其更可能减少处理器经历的等待时间,因为第一级DRC 2222和第二级DRC 2224高速缓冲存储器通常更可能比预测没有被并行地比较或没有被过滤掉或两者的情况更快地含有预取的预测信息。
DRC1地址存储2230和DRC2地址存储2240各自分别存储与存储在DRC1数据存储2232和DRC2数据存储2242中的预取数据相关联的地址。地址存储2230和2240中的每一者存储地址或地址的替代表示。根据本发明的一个实施例,示范性DRC1地址存储2230是完全关联的,且经配置以存储完全唯一的地址。举例来说,每一地址的位35:6存储在DRC1中以唯一地识别所述地址。应注意,存储在DRC1地址存储2230中的地址可视为包括共同部分(例如,标签)和增量部分(例如,索引),其两者根据至少一个实施例用于在对DRC1的超前查找期间表示地址。另外,DRC1地址存储2230和DRC1数据存储2232经配置以分别存储32个地址条目和每个数据地址条目64字节的高速缓冲存储器行。尽管预取数据通常源自存储器,例如动态随机存取存储器(“DRAM”),但如果DRC1数据存储2232中的数据需要更新,那么其可源自回写高速缓冲存储器。
相比之下,示范性DRC2地址存储2240可包含四路组关联条目,且可经配置以存储基本部分(例如,标签)以表示地址。另外,DRC2地址存储2240和DRC2数据存储2242经配置以分别存储1024个地址条目和每个数据地址条目64字节的高速缓冲存储器行。DRC2数据存储2242存储源自DRC1数据存储2232的预取数据,且在某些实施方案中可包含任意数目的存储库(例如,四个库:0、1、2和3)。
尽管从其中预取预测信息的存储器通常是DRAM存储器(例如,配置在双列直插存储器模块(“DIMM”)中),但所述存储器可为任何其它已知存储器技术。通常,将存储器细分为多个“页面”,其为特定行地址内可用的存储器段。当存取或“打开”特定页面时,其它页面关闭,其中打开和关闭页面的过程需要时间来完成。因此,当处理器就从DRAM存储器的各个存储位置获取指令和数据而言是以略微散乱的方式执行程序指令时,对存储器的存取是非顺序的。由此,读请求的流可延伸超越页面边界。如果下一页面中的下一地址不可用,那么处理器通常必须直接从存储器获取程序指令和程序数据。这增加了检索这些指令和数据的等待时间。因此根据本发明,通过预取和存储跨越多级高速缓冲存储器2220中多个页面的预测信息,减少了涉及打开页面的等待时间。且因为正被预取的数据来自高速缓冲存储器,所以在被存取的页面保持打开时处理器经历的或关于处理器的等待时间减少。
举例来说,考虑非顺序预测器2104正确地预测将在处理器读取地址“00100”之后存取地址“00200”。因此,非顺序预测器2104导致在处理器实际存取地址“00200”之前获取开始于地址“00200”(以及地址00201、00202、00203和00204,如果分批为四)的一定范围的行(例如,一个目标地址和四个预测地址,产生预测的数目可配置且由分批“b”界定)。当处理器实际执行对地址“00200”的读取时,多级高速缓冲存储器2220的超前查找快速确定地址“00200”之后的特定范围内哪些高速缓冲存储器行已经被预取。因为读地址流中的非顺序转变可通过DRAM页面打开操作完成,所以超前查找允许预取器2100在读请求的流中快速超前查找,并确定需要获取哪一个地址或高速缓冲存储器行。通过快速开始获取,预取器2100经常可隐藏DRAM页面打开操作的等待时间,并随后提供高速缓冲存储器行的顺序流(尽管关于形成目标地址的基础的触发地址为非顺序的)而不会导致处理器的等待时间的代价。
图22将DRC1管理器2234和DRC2管理器2246描绘成分离的实体,但其不需要如此。也就是说,DRC1管理器2234和DRC2管理器2246可组合成单个管理实体,或可安置在多级高速缓冲存储器2220外部,或两种情况皆可。由于第一级DRC 2222和第二级DRC 2224结构上和/或功能上不同于驻留在处理器中的常规L1和L2高速缓冲存储器,因此使用管理存储在多级高速缓冲存储器2220内的预测信息的独特策略。这些策略的实例包括用于分配每一数据返回高速缓冲存储器中存储器的策略、用于将信息从短期数据存储拷贝到长期数据存储的策略和用于维持多级高速缓冲存储器2220与另一实体(例如,回写高速缓冲存储器)之间的一致性的策略。
首先,考虑一拷贝策略,其用于管理预测信息从第一级DRC 2222到第二级DRC 2224的拷贝,因为所述信息从短期信息老化为长期信息。当数据已在第一级DRC 2222中存在直到某一时间阈值时,DRC1管理器2234与DRC2管理器2246协作以将所述数据从DRC1数据存储2232传输到DRC2数据存储2242。应注意,所述阈值可为常数或另外可在操作期间另外变化。通常,老化的数据可经配置以进行传输,只要DRC1中存在少于N个无效的条目(即,可用),其中N是可编程的。在操作中,一旦将数据从短期存储装置拷贝到长期存储装置,那么就擦除第一级DRC 2222中的条目(即,使其无效)。
其次,考虑用于将预测信息插入第一级DRC 2222和第二级DRC 2224中的分配策略。在将预测信息插入第一级DRC 2222时,DRC1管理器2234选择DRC1数据存储2232中的任何无效的条目,不包括作为候选的锁定条目。如果DRC1管理器2234没有检测到可存储预测信息的任何无效的条目,那么最老的条目可用于分配用于条目的空间。关于分配DRC2数据存储2242中的条目,DRC2管理器2246可使用若干路径中的任一个(例如,四个路径中的一个)以用于接收从第一级DRC 2222拷贝到第二级DRC 2224的数据。举例来说,预测地址的索引可含有其中将存储数据的四个条目。起初,DRC2数据存储2242分配未在使用的(即,无效的)若干路径中的任一个。但如果全部路径已被指派,那么第一个进入的就是第一个退出的(即,最老的被重写)。但如果最老的条目具有相同的存在时间且有效,那么DRC2管理器2246分配未锁定的条目。最后,如果路径集合中的全部条目均被锁定,那么DRC2管理器2246抑制从第一级DRC 2222到第二级DRC2224的写入,同时保持第一级DRC 2222中的条目为有效。同样应注意,通常第二级DRC2224仅从第一级DRC 2222接收数据以供存储。
DRC1管理器2234和DRC2管理器2246可遵守的另一策略涉及保持一致性。DRC1管理器2234通过更新具有与数据将被写入的写地址相匹配的地址的任何条目的数据来保持第一级DRC 2222一致性。通常,回写高速缓冲存储器2290(图21)暂时存储写地址(和相应数据)直到其发送所述写地址以写入到存储器(例如,DRAM)为止。应注意在存在与回写高速缓冲存储器2290中的写地址相匹配的读请求地址的某些情况下,多级高速缓冲存储器2220在将数据转发到第一级DRC 2222之前将写地址的数据与存储器的数据合并。DRC2管理器2246通过使在被载入回写高速缓冲存储器2290中时地址与一写地址相匹配的任何条目无效来保持第二级DRC 2224一致性。由于第二级DRC 2224仅从DRC1接收数据,且因为第一级DRC 2222保持与存储器和回写高速缓冲存储器2290的一致性,所以第二级DRC 2224通常将不含陈旧的数据。另外,可首先针对回写高速缓冲存储器(“WBC”)2290核查将从DRC1拷贝到DRC2的任一地址。如果在WBC 2290中找到匹配,那么就取消拷贝操作。否则,进行所述地址从DRC1到DRC2的拷贝。这个额外的核查进一步有助于保持一致性。
图23A说明根据特定实施例的用于第一地址存储2305的示范性DRC1查询接口2323。在这个实例中,触发地址(“A0”)2300(例如,处理器请求的地址)作为输入地址包含共同地址部分2302a和增量地址部分2302b。应注意,地址2300也可在某些情况下为预测地址,或在其它情况下(当保持一致性时)为写地址。当地址2300为产生一组预测地址的触发地址时,这个群组2307可包括例如从地址(“A1”)2301到地址(“Am”)2303而识别的地址,其中“m”表示可用于执行根据本发明至少一个实施例的“超前查找”的任意数目的预测。在某些情况下,将“m”设定为等于分批大小“b”。
DRC1地址存储2305的条目2306每一者包括第一条目部分2306a(例如,标签)和第二条目部分2306b(例如,索引)。在特定实施例中,第一条目部分2306a和第二条目部分2306b分别类似于共同地址部分2302a和增量地址部分2302b。第二条目部分2306b指示从触发地址(“A0”)2300到所述特定条目2306的地址移位。因此,当DRC1匹配器2312比较一输入地址(例如触发地址(“A0”)2300)与条目2306时,共同部分2302a可用于表示群组2307的地址的共同部分。另外,由于地址2300的共同部分2302a通常类似于地址(“A1”)2301到(“Am”)2303的共同部分,因此仅共同部分2302a需要用于与条目2306的一个或一个以上第一条目部分2306a进行比较。同样,地址(“A1”)2301到(“Am”)2303的增量部分2302b可匹配于条目2306的多个第二条目部分2306b。
在一个实施例中,DRC1匹配器2312包括共同比较器2308,其用以将共同地址部分与第一条目部分进行匹配,还包括增量比较器2310,其用以将增量地址部分与第二条目部分进行匹配。具体来说,将共同部分2302a与条目0到第n个条目的第一部分2306a同时比较,将增量部分2306b与相同条目的第二部分2306b同时比较。在某些实施例中,共同比较器2308是用于比较高阶位(例如,36位地址的位35:12)的“宽”比较器,且增量比较器2310是用于比较低阶位(例如,36位地址的位11:6)的“窄”比较器。应注意,尽管图23A描绘每个增量部分2302b对应一个增量比较器,但在某些情况下,增量比较器2310的数目等于m*n(未图示),其中每一增量比较器将接收一个增量部分2302b和一个第二条目部分2306b作为输入。比较器大小限制了执行这些比较所需的物理资源的数量,且由此,并行查找的地址经配置以处于同一存储器页面中(例如,存储器页面大小通常为4K字节)。尽管这抑制了超前查找的地址越过页面边界,但这些配置减少了执行超前查找在物理资源方面的耗费。同样应注意,共同部分2302a和增量部分2302b各自与条目2306同时进行比较,或几乎同时进行比较。
共同比较器2308和增量比较器2310的输出分别是Hbase(0)、Hbase(1)、...、Hbase(m)和H0、H1、H2、...、HN,其中每一者均为零(例如,指示没有匹配)或一(例如,指示匹配)。视进行过滤还是保持一致性而定,所述结果形成被发送到DRC1操纵器2314以采取行动的零和一的命中向量。命中列表产生器2313产生命中的列表(“命中列表”),其指示范围“r”(即,群组2307)中哪些地址驻留在DRC1地址存储2305中。如果一地址是匹配的(即,预测存储在其中),那么所述地址包括在所述命中列表中,而不匹配的地址(即,预测没有被存储)从命中列表中排除。这个命中列表用于产生预测或管理DRC1地址存储2305内的一致性。
图23B描绘根据特定实施例的可使用图23A的DRC1查询接口2323来并行检查的若干示范性输入地址2352。这里,DRC1查询接口2350可接受任何范围的地址2352以匹配于DRC1地址存储2305。将图23A的匹配器2313复制必需的次数以对若干输入地址执行并行超前查找。例如对于前向顺序预测,分批大小“b”设定为27,DRC1查询接口2350将需要匹配器将A0作为基地址(或触发地址)与预测地址A1到A7并行匹配以作为群组2307。对于封闭后向预测,除了群组2307的基地址A0之外,仅A(-1)需要匹配,但对于反向顺序预测,地址A(-1)到A(-7)需要匹配。应注意,可将一定范围的地址2352并行地同时应用于DRC1与DRC2查询接口两者。
图24说明根据特定实施例的用于DRC2地址存储2404的示范性DRC2查询接口2403。DRC2查询接口2403经配置以接收输入地址2402,以便将所述地址与DRC2地址存储2404的内容进行比较。在这个实例中,输入地址2402是一地址的基部分(例如,标签),例如tag(A0)。另外对于这个实例,DRC2地址存储2404包含四个存储器的库2406:库0、1、2和3,每一个库都包括条目2410。应注意在这个情况下,可将条目2410置于四个路径(W0、W1、W2和W3)中的任一个中。
DRC2匹配器2430包括若干比较器以比较tag(A0)与条目2410。大体上说,DRC2地址存储2404中的任何匹配地址均共享同一tag(A0),但关于另一组位可不同(例如,索引不同)。在本发明的特定实施例中,对一标签是否匹配于DRC2地址存储2404内的任何条目的确定通常如下执行。首先,对于每一库2406,选择所述库中索引中的一者以查找潜在的匹配地址。这可在每个库之间变化,如图25A所示,因为将查找的选定的库视一特定地址(例如,图25的A0)驻留在库中的哪一个库而定,因为可通过特定地址(例如,A0)的某些索引位来识别库。其次,针对每一库2406而选择的索引的全部四个路径被存取。接着,将关于四个路径(例如,W0到W3)而存储的标签与tag(A0)比较,tag(A0)在这个实例中是基地址2402。大体来说,比较tag(A0)而不比较其它标签(例如tag(A1))是足够的。这是因为通常将这些标签假定为相同的(例如,tag(A0)=tag(A1)=tag(A2))。应注意,对预测的同时查找通常限于处于同一页面(例如,4k字节页面)中的预测,这导致标签是相同的。第三,一旦由DRC2匹配器2430进行一地址匹配,那么命中向量形式的结果和有效位用于获得类似于结合图27和28所描述的最终命中向量。
DRC2查询接口2403的命中产生器2442从DRC2匹配器2430接收标签比较结果(“TCR”)2422,并进一步比较所述结果与相应的有效位2450以产生一组有序的预测(“有序预测”)。这里,将来自库1、2、3和4的标签比较结果分别标记为TCR(a)、TCR(b)、TCR(c)和TCR(d),其每一者包括表示标签是否匹配于一个或一个以上条目2410的一个或一个以上位。有序预测可为匹配于(或不匹配)输入地址2402的一组有序的预测。或者,有序预测可为一若干位的向量,所述位每一者均指示一输入地址是否具有一存在于DRC2地址存储2404中的地址。应注意,如果包括额外的DRC2匹配器2430,那么可将任意数目的输入地址2402类似地匹配于DRC2查询接口2403。图25A到28描述根据本发明某些实施例的示范性命中产生器。
图25A描绘根据本发明一个实施例的存储在DRC2地址存储2404中的地址(或其表示)的可能配置。应注意,未展示路径W0、W1、W2和W3以便简化以下描述。输入地址A0、A1、A2和A3存储在DRC2地址存储2404中。举例来说,顺序预测器2102(未图示)可基于触发地址A0(例如,在四个路径中的任一个中)产生顺序预测A1、A2和A3。第一配置2502通过将A0存储在库0中产生。同样,第二配置2504、第三配置2506和第四配置2508各自分别通过将地址A0存储在库1、2和3中而产生,其中随后的地址串列地存储在触发地址之后。由此,这些地址(或其部分,例如以标签的形式)通常不按特定次序从DRC2地址存储2404输出。
图25B描绘根据本发明实施例的基于无序地址和相应有效位而产生结果的示范性命中产生器2430。在这个实例中,顺序预测器2102基于触发地址A0产生顺序预测A1、A2、A3、A4、A5、A6和A7,所述预测全部存储在图示的特定配置中(即,触发地址A0存储在库1中,其它的跟随其后)。命中产生器2430接收无序的地址A2、A6、A1、A5、A0、A4、A3、A7和有序的有效位VB0到VB7,对其进行排序,对其进行比较并接着产生结果R0到R7,结果R0到R7可为命中向量或地址列表(匹配的地址或不匹配的地址)。应注意,指示预测无效的有效位防止存储的无效预测被匹配。这是将有效位匹配于地址存储的内容的一个原因。根据本发明的特定实施例,同时考虑四个地址而不是八个,例如地址A2、A1、A0和A3或A6、A5、A4和A7。由此,不需要将地址A0到A7表示为可以“包围”方式连续存取的,如图25B所示。然而,为同时考虑图25B的地址A0到A7,可将DRC2配置成双端口随机存取存储器(“RAM”)以对同一RAM(或同一DRC2)执行两个独立的且同时的存取。
图26是用于图24的命中产生器2442的命中产生器2600的示意性表示。命中产生器2600通过多路复用来自路径0到3的地址和/或每一输入地址的有效位来产生结果R0到R7中的一者或一者以上,其中通过比较地址或有效位的多路复用的位来确定结果R。如果有效位指示由相应标签比较结果(“TCR”)指示的标签有效,那么将所述标签输出作为结果R。应注意,TCR可为地址的标签或其可为具有“1”(即,DRC2中有命中)或“0”(即,DRC2中没有命中)值的位。如下文结合图27和28描述,地址的标签(例如,tag(A1))通常表示所述标签的单个TCR位。
图27描绘根据本发明一个实施例的命中产生器2442的一个实例。命中产生器2442包括排序器2702,其经配置以对分别来自库0、1、2和3的路径的地址A3、A0、A1和A2的无序标签进行排序。但应注意,地址A3、A0、A1和A2的标签各自表示表示每一标签的TCR的单个位。接着针对来自有效位2244的有效位VB0-VB3测试有序的TCR(图示为地址A0、A1、A2和A3的有序标签)。“与”算子(“AND”)2706将测试执行为逻辑“与”功能。因此,如果有效位为真且单个位TCR为真,那么存在命中且结果R反映这个命中。也就是说,结果R0、R1、R2和R3形成有序的预测结果,所述结果又可为表示匹配/不匹配的位,或可为地址的匹配的标签或不匹配的标签。应注意在标签本身用作TCR(例如,Tag(A3)作为TCR(a))的情况下,如果相应的有效位为零,那么“与”算子2706操作以屏蔽所述位(例如,如果其相应有效位为零,那么结果R所包含的全部为零)。
图28描绘根据本发明另一实施例的命中产生器2442的另一实例。命中产生器2442包括有效位(“VB”)排序器2802,其经配置以将来自有效位2224的有序有效位VB0-VB3打乱次序。也就是说,有效位排序器2802将有效位从具有VB0、VB1、VB2和VB3的次序重新排序成VB3、VB0、VB1和VB2的次序,其匹配于由地址A3、A0、A1和A2的标签表示的TCR的次序。接着由“与”算子(“AND”)2806针对类似排序的有效位而测试地址的无序标签(即,所述标签的无序TCR)。无序的结果R3、R0、R1和R2通过结果排序器2810以获得R0、R1、R2和R3作为有序的预测结果,这是预取器2100及其执行过滤、一致性等的元件可使用的形式。通过对有效位和结果(可仅为结果位)重新排序,与对每一者包含若干位的地址重新排序相比,所必需的硬件较少。应注意排序器2702和结果排序器2810的排序是示范性的,且对位进行排序和重新排序的其它映射在本发明的范围内。
在本发明的特定实施例中,包括非顺序预测器2104和多级高速缓冲存储器2120的图21的预取器2100安置在北桥-南桥(Northbridge-Southbridge)芯片组结构内,例如安置在具有南桥芯片的至少某些相同功能性的存储器处理器内。存储器处理器经设计以至少控制一个或一个以上处理器(例如CPU、图形处理器单元(“GPU”)等)的存储器存取。在北桥实施方案中,预取器2100也可经由AGP/PCI Express接口耦合到GPU。而且,前侧总线(“FSB”)可用作处理器与存储器之间的系统总线。同样,存储器可为系统存储器。或者,多级高速缓冲存储器2120可用在用以控制例如存储器处理器对存储器的存取的任何其它结构、电路、装置等中。另外,多级高速缓冲存储器2120及其元件以及预取器2100的其它组件可包含硬件或软件模块或包含两者,且进一步可用任意方式分布或组合。
出于解释的目的,上述描述使用特定术语来提供对本发明的彻底理解。然而,所属领域的技术人员将明了,为实践本发明,不需要特定的细节。因此,出于说明和描述的目的而提出本发明的特定实施例的上述描述。希望其不是彻底的或将本发明限于所揭示的精确形式,显然,根据上述教示,许多修改和变化是可能的。实际上,不应将此描述理解成将本发明的任一特征或方面限于任一实施例,而是可将一个实施例的特征和方面容易地与其它实施例互换。为最好地解释本发明的原理及其实践应用而选择和描述所述实施例,因而其使所属领域的技术人员能最好地将本发明和各种实施例与适于预期特定用途的各种修改一起使用。希望所附权利要求书及其等效物界定本发明的范围。

Claims (25)

1.一种用于预测对一存储器的存取的预取器,其包含:
一第一地址预测器,其经配置以:
将一地址子集关联于一地址,和
基于所述子集中的至少一个地址来预测一地址群组,其中所述子集中的所述至少一个地址对所述地址是不可型式化的;
其中所述第一地址预测器进一步包含:
一非顺序预测器,以在检测到所述地址时产生所述地址群组作为非顺序预测,其中所述非顺序预测器进一步包含:
一存储库,其用于以使所述地址子集中的每一者相对于其它者优先的方式存储所述地址子集对所述地址的关联,其中所述地址存储为一触发地址,且所述地址子集存储为目标地址;和
一非顺序预测引擎,其经配置以检测一地址流中的所述地址,且经配置以进一步基于所述至少一个地址的优先权为一最高优先权来选择所述至少一个地址作为一非顺序预测,其中所述最高优先权至少指示一处理器已相对于所述地址子集中的其它者最近请求所述至少一个地址;
一抑制器,所述抑制器经配置以抑制产生至少一个预测地址;以及
一督导器,用以指定一顺序地址流的一第一地址作为所述至少一个地址的一新的触发地址于当所述触发地址在所述顺序地址流中且在时间上更早地用所述新的触发地址而不是用所述触发地址来产生所述非顺序预测。
2.根据权利要求1所述的预取器,其中所述第一地址预测器经配置以从地址产生索引和标签,且所述存储库包括若干路径,所述路径各自具有用于存储触发-目标关联的存储位置,其中存储在一第一路径中的一触发-目标关联与一比存储在一第二路径中的另一触发-目标关联高的优先权相关联。
3.根据权利要求2所述的预取器,其中所述触发-目标关联中的每一者均包括一标签和一目标地址的至少一部分,其中所述标签表示一触发地址,且所述标签的大小和所述目标地址的所述部分经配置以将对一存储位置的大小要求最小化。
4.根据权利要求2所述的预取器,其中所述第一地址预测器经配置以将一第一地址标签与所述索引中的一个或一个以上索引所识别的每一标签进行比较,以检测包括所述第一地址标签的任何触发-目标关联,其中所述第一地址预测器使用来自至少一个触发-目标关联的一目标地址来形成一非顺序预测,或使用一连续的触发地址来基于一个或一个以上其它触发-目标关联而形成额外的非顺序预测,或两种情况皆可,其中所述一个或一个以上其它触发-目标关联中的每一者在目标高速缓冲存储器中涉及比所述触发-目标关联或所述另一触发-目标关联低的级。
5.根据权利要求2所述的预取器,其进一步包含一优先权调节器,所述优先权调节器经配置以修改所述触发-目标关联中包括一匹配于一第二地址的目标地址的一触发-目标关联的一优先权,所述目标地址由包含所述索引中的一个或一个以上索引和一第一地址标签的一触发地址来识别。
6.根据权利要求1所述的预取器,其中所述抑制器经配置以在所述地址涉及一数据请求或一预取请求或涉及两者的情况下减少所述地址群组的地址的一分批数量,从而抑制所述至少一个预测地址的产生。
7.根据权利要求1所述的预取器,其中所述抑制器进一步经配置以在从检测到所述地址作为所述触发地址到产生所述地址群组作为非顺序预测的一时间间隔小于一阈值的情况下抑制产生所述地址群组作为非顺序预测,其中所述阈值由对所述触发地址的一第一处理器请求与对所述至少一个地址的一第二处理器请求之间的至少一时间量来界定,所述时间量小于从存储器预取所述地址群组中的至少一者所必需的时间。
8.根据权利要求1所述的预取器,其中所述抑制器进一步经配置以跟踪复数个交错的顺序流中每一者的一基地址和一最后检测到的地址,和确定另一地址是否在从所述复数个交错的顺序流中任一者的所述基地址到所述最后检测到的地址的一地址流中,且如果是在其中,那么就基于所述另一地址而抑制产生所述至少一个预测地址。
9.根据权利要求8所述的预取器,其中复数个交错的顺序流中的每一者是若干线程中一个线程的一部分。
10.根据权利要求1所述的预取器,其进一步包含一包括一顺序预测器的第二地址预测器,用于基于至少一个其它地址来产生若干额外的预测地址。
11.根据权利要求10所述的预取器,其中所述若干额外的预测地址包括:
第一若干地址,其从所述至少一个其它地址以一上升次序排序,或
第二若干地址,其从所述至少一个其它地址以一下降次序排序,
或所述第一若干地址与所述第二若干地址,
其中所述抑制器进一步经配置以
检测所述至少一个其它地址是上升次序的一第一地址流的一部分,和抑制所述若干额外的预测地址中基于以所述下降次序排序的所述第二若干地址的那些预测地址,和
检测所述至少一个其它地址是下降次序的一第二地址流的一部分,和抑制所述若干额外的预测地址中基于以所述上升次序排序的所述第一若干地址的那些预测地址。
12.根据权利要求10所述的预取器,其中所述若干额外的预测地址包括:
一后向地址,其从所述至少一个其它地址以一下降次序排序一个地址,或
所述至少一个其它地址的一后段地址,或包括两者,
其中所述抑制器进一步经配置以在所述若干额外的预测地址包括所述后向地址或所述后段地址的情况下将所述地址群组的地址的分批数量减少一。
13.根据权利要求10所述的预取器,其进一步包含:
一预测库存,其包含若干队列,每一队列经配置以保持同一预测类型的预测直到被发出或过滤掉为止;和
一库存过滤器,其用以产生一经过滤地址子集,所述库存过滤器经配置以过滤所述预测库存或所述地址群组和所述若干额外的预测地址中的一冗余地址,
其中所述预取器经配置以提供所述经过滤地址子集中的至少一个地址。
14.根据权利要求13所述的预取器,所述若干队列进一步包含至少一个队列,所述至少一个队列保持一与所述若干队列中其它队列中所保持的预测不同类型的预测。
15.根据权利要求13所述的预取器,其进一步包含一库存管理器,所述库存管理器经配置以根据以下各项中的一个或一个以上队列属性来控制所述若干队列中的每一者:
一队列类型,
一到期时间,
一队列大小,
一插入指示符,其指示一将一传入的预测插入一完整队列中的方式,和
一优先权,其用以选择下一预测。
16.根据权利要求15所述的预取器,其中所述若干队列进一步包含:
一顺序队列,所述顺序队列具有一顺序队列优先权;
一后向队列,所述后向队列具有一可配置以指示一超过所述顺序队列优先权的优先的后向队列优先权;和
一个或一个以上非顺序队列,其每一者均具有一相对于其它队列的优先权的唯一优先权。
17.根据权利要求15所述的预取器,其中所述库存管理器通过项目群组管理预测,每一项目群组包括一触发地址和至少一个项目,其中所述若干队列中的每一者经配置以在发出时被搜寻,以便将所述库存管理器管理的预测与所述若干队列外部的其它预测进行匹配。
18.根据权利要求17所述的预取器,其进一步包含一仲裁器,所述仲裁器经配置以发出所述至少一个项目作为一发出的项目以用于存取一存储器,其中基于一发出队列的优先权来选择所述发出的项目,所述仲裁器一旦检测到所述发出队列有助于一存储器过度利用便可修改所述优先权。
19.根据权利要求18所述的预取器,其进一步包含:
一高速缓冲存储器,其含有预测信息和引用;和
一后库存过滤器,其经配置以将所述发出的项目与所述引用进行比较,以便将所述发出的项目作为一冗余预测而过滤掉。
20.根据权利要求10所述的预取器,其进一步包含一用于管理对一存储器的预测存取的高速缓冲存储器,所述高速缓冲存储器包含:
一短期高速缓冲存储器,其经配置以存储具有一小于一阈值的存在时间的预测;
一长期高速缓冲存储器,其经配置以存储具有一大于或等于所述阈值的存在时间的预测,所述长期高速缓冲存储器具有大于所述短期高速缓冲存储器的存储容量;和
一接口,其经配置以并行地检测多个预测是存储在所述短期高速缓冲存储器中还是存储在所述长期高速缓冲存储器中,还是存储在两者中,
其中所述接口在检查所述短期高速缓冲存储器和所述长期高速缓冲存储器时使用所述多个预测中每一预测的至少两个表示。
21.根据权利要求20所述的预取器,其进一步包含一数据返回高速缓冲存储器管理器,所述数据返回高速缓冲存储器管理器经配置以在一个存储的预测存在时间超过所述阈值时将所述一个存储的预测作为一拷贝的预测从所述短期高速缓冲存储器拷贝到所述长期高速缓冲存储器中,所述短期高速缓冲存储器是所述长期高速缓冲存储器的仅有的数据源。
22.根据权利要求21所述的预取器,其中所述数据返回高速缓冲存储器管理器进一步经配置以:
将所述拷贝的预测存储在所述长期高速缓冲存储器的一条目中,所述条目在可用的若干路径中的一者中,或
如果所述若干路径中任一者都不可用,那么就将所述拷贝的预测存储在所述长期高速缓冲存储器的所述条目中,所述条目含有一最老的存储的预测。
23.根据权利要求21所述的预取器,其中所述数据返回高速缓冲存储器管理器进一步经配置以:
将一预测存储在所述短期高速缓冲存储器的一条目中,所述条目含有一无效预测,或
将所述预测存储在所述短期高速缓冲存储器的另一条目中,所述另一条目含有一最老的预测。
24.根据权利要求21所述的预取器,其中所述数据返回高速缓冲存储器管理器进一步经配置以
将一写地址与下一存储的预测进行匹配以形成一匹配的预测,
如果所述下一存储的预测存储在所述短期高速缓冲存储器中,那么就将所述写地址的至少一部分数据与所述匹配的预测的一部分预测信息合并,和
如果所述下一存储的预测存储在所述长期高速缓冲存储器中,那么就使所述下一预测无效。
25.根据权利要求20所述的预取器,其中所述短期高速缓冲存储器和所述长期高速缓冲存储器经配置以通过存储非顺序预测作为一预测范围的一子集来减少由于打开一存储器的页面而导致的关于一处理器的等待时间,所述子集包括处在两个或两个以上存储器页面中的预测,其中所述第一地址预测器响应于一触发地址而产生所述预测范围,所述触发地址处在一与含有所述预测范围的任一页面不同的存储器页面中,其中所述短期高速缓冲存储器和所述长期高速缓冲存储器经配置以存储一与所述存储的预测的每一条目相关联的预测识别符,和将所述预测识别符传输到所述第一地址预测器,所述长期高速缓冲存储器经配置以与经配置以存储预测的每一条目分离地存储有效位。
CN2005800270828A 2004-08-17 2005-08-16 用于对存储器的各种访问类型进行预测的预取器 Expired - Fee Related CN101002178B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US10/920,682 2004-08-17
US10/920,682 US7461211B2 (en) 2004-08-17 2004-08-17 System, apparatus and method for generating nonsequential predictions to access a memory
US10/921,026 2004-08-17
US10/920,995 2004-08-17
US10/920,610 2004-08-17
US10/920,610 US7441087B2 (en) 2004-08-17 2004-08-17 System, apparatus and method for issuing predictions from an inventory to access a memory
US10/921,026 US7206902B2 (en) 2004-08-17 2004-08-17 System, apparatus and method for predicting accesses to a memory
US10/920,995 US7260686B2 (en) 2004-08-17 2004-08-17 System, apparatus and method for performing look-ahead lookup on predictive information in a cache memory
PCT/US2005/029135 WO2006038991A2 (en) 2004-08-17 2005-08-16 System, apparatus and method for managing predictions of various access types to a memory associated with cache

Publications (2)

Publication Number Publication Date
CN101002178A CN101002178A (zh) 2007-07-18
CN101002178B true CN101002178B (zh) 2013-02-06

Family

ID=36263483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800270828A Expired - Fee Related CN101002178B (zh) 2004-08-17 2005-08-16 用于对存储器的各种访问类型进行预测的预取器

Country Status (2)

Country Link
US (1) US7441087B2 (zh)
CN (1) CN101002178B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9891916B2 (en) 2014-10-20 2018-02-13 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7600058B1 (en) * 2003-06-26 2009-10-06 Nvidia Corporation Bypass method for efficient DMA disk I/O
US8683132B1 (en) 2003-09-29 2014-03-25 Nvidia Corporation Memory controller for sequentially prefetching data for a processor of a computer system
US8356142B1 (en) 2003-11-12 2013-01-15 Nvidia Corporation Memory controller for non-sequentially prefetching data for a processor of a computer system
US8700808B2 (en) * 2003-12-01 2014-04-15 Nvidia Corporation Hardware support system for accelerated disk I/O
US9274586B2 (en) * 2004-09-08 2016-03-01 Cisco Technology, Inc. Intelligent memory interface
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US7966468B1 (en) * 2004-12-13 2011-06-21 Nvidia Corporation Apparatus, system, and method for fast read request transfer through clock domains
US7350029B2 (en) * 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US7380066B2 (en) * 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US8732368B1 (en) * 2005-02-17 2014-05-20 Hewlett-Packard Development Company, L.P. Control system for resource selection between or among conjoined-cores
US8174830B2 (en) * 2008-05-06 2012-05-08 Rockwell Collins, Inc. System and method for a substrate with internal pumped liquid metal for thermal spreading and cooling
US8166645B2 (en) * 2006-08-23 2012-05-01 Rockwell Collins, Inc. Method for providing near-hermetically coated, thermally protected integrated circuit assemblies
US8617913B2 (en) 2006-08-23 2013-12-31 Rockwell Collins, Inc. Alkali silicate glass based coating and method for applying
US8581108B1 (en) 2006-08-23 2013-11-12 Rockwell Collins, Inc. Method for providing near-hermetically coated integrated circuit assemblies
US7915527B1 (en) 2006-08-23 2011-03-29 Rockwell Collins, Inc. Hermetic seal and hermetic connector reinforcement and repair with low temperature glass coatings
US8076185B1 (en) 2006-08-23 2011-12-13 Rockwell Collins, Inc. Integrated circuit protection and ruggedization coatings and methods
US8084855B2 (en) * 2006-08-23 2011-12-27 Rockwell Collins, Inc. Integrated circuit tampering protection and reverse engineering prevention coatings and methods
US8637980B1 (en) 2007-12-18 2014-01-28 Rockwell Collins, Inc. Adhesive applications using alkali silicate glass for electronics
US7937532B2 (en) * 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
US7949812B1 (en) * 2007-09-07 2011-05-24 Marvell International Ltd. Priority arbitration of coexisting wireless topologies
US8363189B2 (en) * 2007-12-18 2013-01-29 Rockwell Collins, Inc. Alkali silicate glass for displays
US7958316B2 (en) * 2008-02-01 2011-06-07 International Business Machines Corporation Dynamic adjustment of prefetch stream priority
US8255631B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Priority-based prefetch requests scheduling and throttling
US8616266B2 (en) * 2008-09-12 2013-12-31 Rockwell Collins, Inc. Mechanically compliant thermal spreader with an embedded cooling loop for containing and circulating electrically-conductive liquid
US8205337B2 (en) * 2008-09-12 2012-06-26 Rockwell Collins, Inc. Fabrication process for a flexible, thin thermal spreader
US8650886B2 (en) * 2008-09-12 2014-02-18 Rockwell Collins, Inc. Thermal spreader assembly with flexible liquid cooling loop having rigid tubing sections and flexible tubing sections
US8356128B2 (en) * 2008-09-16 2013-01-15 Nvidia Corporation Method and system of reducing latencies associated with resource allocation by using multiple arbiters
US8119040B2 (en) * 2008-09-29 2012-02-21 Rockwell Collins, Inc. Glass thick film embedded passive material
US8370552B2 (en) * 2008-10-14 2013-02-05 Nvidia Corporation Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions
US8698823B2 (en) 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
CN101763292B (zh) * 2010-01-18 2012-07-04 龙芯中科技术有限公司 基于地址窗口的处理器推测访问过滤装置及其过滤方法
US20120144123A1 (en) 2010-12-01 2012-06-07 International Business Machines Corporation Read-ahead processing in networked client-server architecture
GB2493191A (en) 2011-07-28 2013-01-30 St Microelectronics Res & Dev Cache arrangement with data pre-fetching requests having different quality of services
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9435915B1 (en) 2012-09-28 2016-09-06 Rockwell Collins, Inc. Antiglare treatment for glass
US9733847B2 (en) * 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
CN105354010B (zh) * 2014-10-20 2018-10-30 威盛电子股份有限公司 处理器及由处理器执行硬件数据的方法
US9426627B1 (en) 2015-04-21 2016-08-23 Twin Harbor Labs, LLC Queue information and prediction system
US20160350002A1 (en) * 2015-05-29 2016-12-01 Intel Corporation Memory device specific self refresh entry and exit
US10078514B2 (en) * 2016-05-11 2018-09-18 International Business Machines Corporation Techniques for dynamic sequential instruction prefetching
CN109150755B (zh) * 2018-09-25 2022-03-04 西安空间无线电技术研究所 一种天基数据链星载消息调度方法及装置
US20220004337A1 (en) * 2020-07-06 2022-01-06 Micron Technology, Inc. Command prioritization in a command queue

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US5809566A (en) * 1996-08-14 1998-09-15 International Business Machines Corporation Automatic cache prefetch timing with dynamic trigger migration
WO2004025457A2 (en) * 2002-09-16 2004-03-25 Intel Corporation Prefetching data in computer system

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484239B1 (en) * 1997-12-29 2002-11-19 Intel Corporation Prefetch queue
US6101568A (en) * 1998-08-25 2000-08-08 Stmicroelectronics, Inc. Bus interface unit having dual purpose transaction buffer
US6233645B1 (en) * 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6499090B1 (en) * 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US20030158883A1 (en) * 2002-02-04 2003-08-21 Drudis Antoni N. Message processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305389A (en) * 1991-08-30 1994-04-19 Digital Equipment Corporation Predictive cache system
US5809566A (en) * 1996-08-14 1998-09-15 International Business Machines Corporation Automatic cache prefetch timing with dynamic trigger migration
WO2004025457A2 (en) * 2002-09-16 2004-03-25 Intel Corporation Prefetching data in computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9891916B2 (en) 2014-10-20 2018-02-13 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system

Also Published As

Publication number Publication date
US7441087B2 (en) 2008-10-21
CN101002178A (zh) 2007-07-18
US20060095677A1 (en) 2006-05-04

Similar Documents

Publication Publication Date Title
CN101002178B (zh) 用于对存储器的各种访问类型进行预测的预取器
US6611910B2 (en) Method for processing branch operations
EP0966710B1 (en) Penalty-based cache storage and replacement techniques
EP0106667B1 (en) Central processing unit
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
US4597044A (en) Apparatus and method for providing a composite descriptor in a data processing system
US7831817B2 (en) Two-level branch prediction apparatus
US7856533B2 (en) Probabilistic method for performing memory prefetching
US10019381B2 (en) Cache control to reduce transaction roll back
KR100287628B1 (ko) 우선 선취 예측적 주석을 이용하여 고속으로 명령을 선취 및 지명하는 방법 및 장치
JP5059609B2 (ja) メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US6920530B2 (en) Scheme for reordering instructions via an instruction caching mechanism
US20030208665A1 (en) Reducing data speculation penalty with early cache hit/miss prediction
CN103513957A (zh) 高性能缓存系统和方法
EP1815343A2 (en) Cache with prefetch
US11442727B2 (en) Controlling prediction functional blocks used by a branch predictor in a processor
CN112585580A (zh) 处理器的被过滤的分支预测结构
CN103513958A (zh) 高性能指令缓存系统和方法
US20160117118A1 (en) System and methods for processor-based memory scheduling
US20070162895A1 (en) Mechanism and method for two level adaptive trace prediction
EP0833247A2 (en) Method for maximising cache hit ratio of a computer program
US6931490B2 (en) Set address correlation address predictors for long memory latencies
US7130990B2 (en) Efficient instruction scheduling with lossy tracking of scheduling information
US7434004B1 (en) Prefetch prediction
US20060041721A1 (en) System, apparatus and method for generating nonsequential predictions to access a memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130206