CN101689147B - 数据预取调节 - Google Patents

数据预取调节 Download PDF

Info

Publication number
CN101689147B
CN101689147B CN2008800240012A CN200880024001A CN101689147B CN 101689147 B CN101689147 B CN 101689147B CN 2008800240012 A CN2008800240012 A CN 2008800240012A CN 200880024001 A CN200880024001 A CN 200880024001A CN 101689147 B CN101689147 B CN 101689147B
Authority
CN
China
Prior art keywords
data
prefetch
hit
trail
caching
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
CN2008800240012A
Other languages
English (en)
Other versions
CN101689147A (zh
Inventor
迈克尔·威廉·莫罗
詹姆斯·诺里斯·迪芬德尔费尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN101689147A publication Critical patent/CN101689147A/zh
Application granted granted Critical
Publication of CN101689147B publication Critical patent/CN101689147B/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
    • 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

Landscapes

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

Abstract

本文中所教导的一种系统和方法通过追踪对数据高速缓冲存储器的预取命中和总体命中来控制对所述数据高速缓冲存储器的数据预取。基于对预取命中的所述追踪来停用对所述数据高速缓冲存储器的数据预取,且基于对总体命中的所述追踪来启用对所述数据高速缓冲存储器的数据预取。举例来说,在一个或一个以上实施例中,高速缓冲存储器控制器经配置以追踪预取命中率且在所述预取命中率落在界定阈值以下时停用数据预取,所述预取命中率反映涉及经预取数据线的对所述数据高速缓冲存储器的命中的百分数。所述高速缓冲存储器控制器还追踪总体命中率且在所述总体命中率落在界定阈值以下时启用数据预取,所述总体命中率反映数据高速缓冲存储器命中(对未命中)的总体百分数。

Description

数据预取调节
技术领域
本发明大体上涉及处理器的领域,且尤其涉及用于控制处理器中的数据预取的系统和方法。
背景技术
处理器使用高速缓存来减轻与存储器相关联的处理瓶颈。举例来说,通过使用较快存取存储器来保持存储于较慢存储器(例如,主存储器或较高级的高速缓存存储器)中的较大程序指令集的选定部分,指令高速缓存起作用。
因此,存取存在于高速缓冲存储器中的指令具有的延迟比存取较慢存储器所需的延迟低,且处理器通常使用某形式的基于硬件的指令预取来保持指令高速缓冲存储器填充有来自较慢存储器的所需指令线。预取在需要来自较慢存储器的指令线内的指令之前将那些指令线置于指令高速缓冲存储器中。
基于硬件的预取也可应用于数据。然而,成功地预取数据可能比成功地预取指令难。举例来说,数据值在存储器中可能比程序指令更分散或散开,使基于预测的预取更有挑战性。因而,数据预取可或可不改善性能,且数据预取的性能在处理器操作期间可显著改变。
因此,已知(例如)要“过滤”预取操作。预取过滤表示“污染”避免机制,其中数据高速缓冲存储器在含有从未使用的经预取数据线(即,经预取但最终在曾经被存取(命中)之前被替换的数据线)时被认为受到污染。因而,预取过滤暗示持续不断地进行数据预取,但选择性地跳过在缺少此类过滤的情况下将会进行的某些数据预取。
更详细地,可或可不依赖于所应用的过滤准则来执行个别数据预取。过滤标准可反映(例如)在某范围的程序执行内所形成的预取性能历史。然而,适当过滤的确定可要求非所要的硬件复杂性或资源消耗,确切地说以产生优于在无过滤的情况下进行数据预取的重大性能改善。
发明内容
根据一个或一个以上实施例,一种控制对数据高速缓冲存储器的数据预取的方法包含追踪数据高速缓冲存储器的预取命中和基于对预取命中的追踪停用对数据高速缓冲存储器的数据预取。所述方法进一步包括追踪对数据高速缓冲存储器的总体命中和基于对总体命中的追踪启用对数据高速缓冲存储器的数据预取。在这种情形下,停用数据预取包含停用对数据高速缓冲存储器的所有数据预取,但在需要时(例如,在数据高速缓冲存取器未命中时)仍将数据线获取到数据高速缓冲存储器中,这与是否启用数据预取无关。
在本文所教导的至少一个实施例中,一种处理器包括数据高速缓冲存储器,所述数据高速缓冲存储器包含高速缓存存储器和高速缓冲存储器控制器。高速缓冲存储器控制器基于追踪对数据高速缓冲存储器的预取命中来停用对数据高速缓冲存储器的数据预取和基于追踪对数据高速缓冲存储器的总体命中来启用对数据高速缓冲存储器的数据预取。在至少一个此类实施例中,高速缓冲存储器控制器通过追踪预取命中率来追踪预取命中和通过追踪总体命中率(或等效地,总体未命中率)来追踪总体命中。
谨记上述实例,如本文中所教导的数据预取控制在有条件的基础上提供数据预取的性能和功率优点(和其它优点),而在同时提供简单且有效的硬件实施。
附图说明
图1为处理器的一个实施例的功能框图。
图2为数据预取控制的实施例的状态图。
图3为可用于控制数据预取的计数和控制电路的一个实施例的功能框图。
图4为数据高速缓存存储器的一个实施例的功能框图,其包括用以表示经预取数据线的指示符。
图5为用以表示数据高速缓冲存储器中的经预取数据线的指示符的另一实施例的功能框图。
图6和图7为用于控制数据预取的处理逻辑的一个实施例的逻辑流程图。
具体实施方式
作为非限制性实例,图1说明处理器100的一个实施例,其包括指令执行管线120、状态/控制寄存器104,和数据高速缓冲存储器106,数据高速缓冲存储器106包括高速缓冲存储器控制器108和相关联的高速缓存存储器110。在操作中,数据高速缓冲存储器106高速缓存来自存储器112的一个或一个以上较高级的数据线,存储器112可包括较高级高速缓冲存储器和/或主(系统)存储器。在至少一个实施例中,数据高速缓冲存储器106包含1级(“L1”)数据高速缓冲存储器。
有利地,(数据)高速缓冲存储器控制器108经配置以根据以低硬件复杂性实施于数据高速缓冲存储器106中的逻辑控制机制动态地启用和停用数据高速缓冲存储器预取。图2为说明这种有利预取控制的一个实施例的状态图。
如图2所示,状态200表示数据高速缓冲存储器106的启用数据预取的操作状态,而状态202表示数据高速缓冲存储器106的停用预取的操作状态。并非筛分或否则过滤个别预取,高速缓冲存储器控制器108在状态202中操作时有利地终止所有预取。因此,图2中具体化的预取控制像用于数据预取的开/关开关般操作。
在一个或一个以上实施例中,高速缓冲存储器控制器108依据追踪“预取命中”而从状态200(预取启用)转变到状态202(预取停用)。另外,高速缓冲存储器控制器108依据追踪“总体命中”而从状态202转变回到状态200。在这种情形下,“预取命中”为对保持于数据高速缓冲存储器106的高速缓存存储器110中的经预取数据线的命中,而“总体命中”为对保持于数据高速缓冲存储器106的高速缓存存储器110中的任何数据线(不管是否经预取)的命中。在这种意义上,预取命中反映涉及经预取数据线的数据高速缓冲存储器命中的百分数,且总体命中反映高速缓冲存储器命中的总体百分数。等效地,高速缓冲存储器控制器108追踪高速缓冲存储器未命中。举例来说,如果对数据高速缓冲存储器106的总体命中率为百分之九十,那么总体未命中率为百分之十。
更详细地,在程序执行期间,处理器100首先在数据高速缓冲存储器106中寻找所需数据。数据高速缓冲存储器命中表示所需数据驻于数据高速缓冲存储器106中的情况。相反,数据高速缓冲存储器未命中表示所需数据不驻于数据高速缓冲存储器106中的情况。高速缓冲存储器控制器108响应于数据高速缓冲存储器未命中而执行数据获取,其通常被称作“强制性获取”。另一方面,假定启用预取,则高速缓冲存储器控制器108根据一个或一个以上预取对策(“策略”)将来自较高级存储器112的数据线预取到数据高速缓冲存储器106的高速缓存存储器110中。作为非限制性实例,高速缓冲存储器控制器108可使用基于顺序和/或基于指针的预取策略。
在任何情况下,所属领域的技术人员将了解,高速缓存存储器110含有经预取和已获取(非预取)数据线的混合,假定数据高速缓冲存储器106是在启用预取的情况下(状态200)操作的。因此,对数据高速缓冲存储器106的个别命中涉及经预取数据线或非预取数据线,且追踪预取命中向高速缓冲存储器控制器108提供关于预取性能的了解。简单来说,涉及经预取数据线的较少数目个数据高速缓冲存储器命中表明数据预取未有助于当前程序执行条件。
在这些条件下停用预取为有利的,因为其消除预取额外开销(存储器总线存取和控制)。停止预取-从状态200转变到状态202-因此减少处理器操作功率且减少资源负载。针对此类条件使预取关闭提供防止用多半不会使用的数据线污染数据高速缓冲存储器106的另一优点。
另一方面,程序执行条件经受改变,使得预取再次变成所要的。为此,高速缓冲存储器控制器108在状态202下操作时追踪针对数据高速缓冲存储器106的总体命中,且(例如)在针对数据高速缓冲存储器106的总体命中变成过低时启用预取。(等效地,总体未命中变成过高。)换句话说,如果针对数据高速缓冲存储器106的总体命中率开始遭受关闭的数据预取,那么高速缓冲存储器控制器108通过转变回到状态200来使预取重新开启。
举例来说,高速缓冲存储器控制器108追踪预取命中作为预取命中率且追踪总体命中作为总体命中率。以此方式,可将用于预取停用决策的界定停用阈值确定于默认值或动态计算出的值。同样,可将用于预取启用决策的界定启用阈值确定于默认值或动态计算出的值。作为非限制性实例,高速缓冲存储器控制器108可经配置以在预取命中率落在百分之二以下时使预取关闭,且可经配置以在总体命中率落在百分之九十九以下时使预取开启。当然,这些仅为实例值,且可根据特定处理器特性和数据高速缓冲存储器大小且根据其它考虑因素(例如,预取额外开销、未命中惩罚等等)来调整或以其它方式调谐阈值。
不管所使用的特定决策阈值,图3说明可由高速缓冲存储器控制器108用以追踪预取命中和总体命中的追踪机制的一个实施例。更明确地说,图3说明计数器控制电路300、第一计数器302和第二计数器304。这些电路可包括于高速缓冲存储器控制器108中或与之相关联。
在一个或一个以上实施例中,计数器控制电路300响应于高速缓冲存储器控制器108检测到对高速缓存存储器110中的经预取数据线的命中而使第一计数器302增加一,且响应于高速缓冲存储器控制器108检测到未对高速缓存存储器110中的经预取数据线的命中而使第一计数器302减小一。以此方式,第一计数器302的值反映数据高速缓冲存储器106上对经预取数据线的命中的百分数。因而,计数器控制电路300或高速缓冲存储器控制器108内的另一电路元件可将第一计数器302的值与界定停用阈值进行比较,作为用于确定是否转变到状态202的依据。
另外,计数器控制电路300响应于对数据高速缓冲存储器106的命中(任何命中)而使第二计数器304增加一,且响应于数据高速缓冲存储器未命中而使第二计数器304减小一。以此方式,第二计数器304的值反映对数据高速缓冲存储器的命中的总体百分数。更明确地说,通过对数据高速缓冲存储器命中使计数增加且对数据高速缓冲存储器未命中使计数减小,第二计数器304的值反映对数据高速缓冲存储器106的命中/未命中百分数。因而,计数器控制电路300或高速缓冲存储器控制器108内的另一电路元件可将第二计数器304的值与界定启用阈值进行比较,作为用于确定是否转变到状态200的依据。
上述处理涉及检测个别数据高速缓冲存储器命中是否是对高速缓存存储器110中的经预取数据线。图4和图5说明提供用于所述检测的不同实施例。在这两个图中,可看出高速缓冲存储器控制器108存储或以其它方式维持表示高速缓存存储器110中的哪些数据线经预取的指示符。
具体而言,图4说明一实施例,其中对于高速缓存存储器110中保持的每一数据线而言,高速缓存存储器110包含:标签存储器400,用于保持存储器地址信息;数据存储器402,用于保持经高速缓存数据的线;和预取标记404,用以将数据线的状态指示为经预取(例如,“1”)或未经预取(例如,“0”)。
相反,图5说明替代实施例,其中所存储的(预取)指示符被实施为寄存器组500,包括用于高速缓存存储器110中的每一经预取数据线的线识别符(ID)条目502。举例来说,可针对预取到高速缓存存储器110中的每一数据线将条目添加到寄存器组500,使得寄存器组500中仅表示经预取数据线。或者,寄存器组500可包括用于高速缓存存储器110中所有数据线的条目,每一条目指示高速缓存存储器110中的相应数据线是否被预取。
图6和图7共同说明利用所存储指示符(404或502)的用途来检测预取命中的处理逻辑的一个实施例。作为非限制性实例,可由高速缓冲存储器控制器108通过数字处理逻辑(例如,在状态机中)实施所说明的处理。另外,应注意,所说明处理步骤中的一个或一个以上可以不同于所说明顺序的顺序来执行,或可与其它步骤同时执行,和/或可作为其它处理任务的部分来执行。
与所说明的处理广泛一致地,高速缓冲存储器控制器108使用第一计数(例如,第一计数器302的值)来追踪对数据高速缓冲存储器106的预取命中且使用第二计数(例如,第二计数器304的值)来追踪对数据高速缓冲存储器106的总体命中。第一计数器302和第二计数器304可包含饱和计数器,使得相应的第一计数值和第二计数值在相应最大值时饱和。不管所述细节,高速缓冲存储器控制器108的一个或一个以上实施例依据第一计数值和第二计数值使数据高速缓冲存储器106在预取启用条件与预取停用条件之间转变。可作为开始操作的部分来初始化这些计数。
更详细地,所说明的处理开始于启用对数据高速缓冲存储器106的数据预取(方框600)。在至少一个实施例中,高速缓冲存储器控制器108经配置以在默认启用数据预取的情况下开始操作,使得处理器100的启动或重新启动使数据预取开启。
在启用预取的情况下,数据高速缓冲存储器控制器108在需要时将数据线获取到数据高速缓冲存储器106中,且根据现用预取策略将数据线预取到高速缓冲存储器中(方框602)。处理在循环或以其它方式持续进行的基础上继续,其中高速缓冲存储器控制器108确定数据高速缓冲存储器命中是否发生(方框604)。如果数据高速缓冲存储器命中发生(从方框604分出的“是”),那么高速缓冲存储器控制器108检测所述命中是否为预取命中(方框606),例如,其使用所存储(预取)指示符(404或502)来确定高速缓冲存储器命中所涉及的特定数据线是不是经预取数据线。
如果所述命中为预取命中(从方框606分出的“是”),那么数据高速缓冲存储器控制器108使第一计数增加一(方框608)。如果所述命中并非预取命中(从方框606分出的“否”),那么数据高速缓冲存储器控制器108使第一计数减小一(方框610)。可通过经由计数器控制电路300对第一计数器302进行操作来以此方式维持第一计数。
操作继续,其中评估第一计数(方框612)以确定第一计数的值是否高于用于预取的界定停用阈值。在所述布置的情况下,可将停用阈值设定为对应于预取被视为非所要的点的百分数值。在任一种情况下,对于二进制计数值来说,可通过将计数值与对应于所要阈值的二进制模式进行比较来作出所述确定。在至少一个实施例中,根据用于追踪预取命中的所要计数分辨率来对第一计数器302定大小。还请注意,可对每一高速缓冲存储器命中执行对第一计数的评估,或可根据另一调度或触发条件执行对第一计数的评估。
在任一种情况下,如果第一计数的值指示预取命中率过低(从方框614分出的“是”),那么高速缓冲存储器控制器108停用预取(方框616)。从此,处理任选地继续,其中使第一计数复位和/或使第二计数复位(方框618)。即,可结合进行从预取启用到预取停用的转变,以加强所述状态改变的方式来设定一个或两个计数。
在至少一个此类实施例中,作为改变到预取停用状态的部分使第二计数复位到最大值,且作为改变到预取启用状态的部分使第一计数复位到最大值。这样做会防止快速状态反转(有时被称作“乒乓”)。更明确地说,实例计数器复位表示本文中所预期的一种形式的控制滞后。在本文中的一个或一个以上实施例中,广泛地预期(例如)通过以下各者来实施启用/停用控制滞后:使用于追踪预取命中和总体命中的追踪机制(计数器或其它)复位、调整控制阈值、在进行状态改变后暂时中止状态改变处理等等。
通过跟随连接符“B”到图7而返回到所说明的处理,看到处理继续,其中预取被关闭。在停用预取的同时,高速缓冲存储器控制器108继续监视数据高速缓冲存储器存取(方框700)。如果存在数据高速缓冲存储器存取(从方框700分出的“是”),那么高速缓冲存储器控制器108检测所述存取是否导致高速缓冲存储器命中(方框702)。如果所述存取导致命中(从方框702分出的“是”),那么处理继续,其中高速缓冲存储器控制器108使第二计数增加一(方框704)。相反,如果高速缓冲存储器存取导致高速缓冲存储器未命中(从方框702分出的“否”),那么处理继续,其中高速缓冲存储器控制器108使第二计数减小一(方框706)且在需要时将数据线获取到高速缓存存储器110中(方框708)。
处理接着继续,其中评估第二计数(方框710)。可将高速缓冲存储器存取和/或计数器更新用作计数评估的触发器,或可使用另一调度或触发器。在任一种情况下,所述评估可包含将第二计数的值与界定启用阈值进行比较。在至少一个此类实施例中,所述界定启用阈值表示数据高速缓冲存储器命中的较低百分数值。在所述布置的情况下,如果由第二计数追踪的高速缓冲存储器命中的百分数处于或低于所述较低百分数,那么将总体命中率视为低。
如果总体命中率不低(从方框712分出的“否”),那么处理循环回到方框700。另一方面,如果总体命中率为低(从方框712分出的“是”),那么处理通过返回到图6的方框600的连接符“A”而继续以进行预取启用。(注意,可作为转变回到预取启用条件的部分而使第一计数和/或第二计数复位(方框714))。
在替代实施例中,高速缓冲存储器控制器108经配置以基于计数或以其它方式确定高速缓存存储器110中的经预取数据线的数目(如与高速缓存存储器110中的数据线的总体数目相比)来追踪预取命中。高速缓冲存储器控制器108可使用第一计数器302对经预取数据线进行计数,或其可配置有用于追踪所述信息的其它计数器和/或寄存器。在任一种情况下,经预取数据线的计数与数据线的总体计数的比较仍在以下意义上反映出预取命中率:如果预取命中相对不频繁,那么高速缓存存储器110中的经预取数据线的数目将由于数据高速缓冲存储器替换策略而随时间减小。
谨记上述实施例和其它变化,如本文中所教导的数据高速缓冲存储器预取控制广泛地包含追踪预取命中和追踪总体命中,使得从预取启用条件的转变是基于预取命中,且从预取停用条件的转变是基于总体命中。在至少一个实施例中,如果预取命中率落在界定停用阈值以下,那么停用预取,且如果总体命中率落在界定启用阈值以下,那么启用预取。所存储的指示符可用以表示哪些数据线被预取,且各种计数器或其它寄存器可用以预取命中和总体命中追踪。
因此,尽管已在本文中相对于本发明的特定特征、方面和实施例来描述本发明,但应明了,在本发明的广泛范围内众多变化、修改和其它实施例是可能的,且因此,所有变化、修改和实施例将被认为是在本发明的范围内。本发明实施例因此在所有方面应被理解为是说明性的而非限制性的,且希望在所附权利要求书的有意义和等效范围内的所有改变包含于其中。

Claims (26)

1.一种控制对数据高速缓冲存储器的数据预取的方法,其包含:
当启用了数据预取时,追踪对所述数据高速缓冲存储器的预取命中,且基于对预取命中的所述追踪来选择性地停用对所述数据高速缓冲存储器的数据预取;以及
当停用了数据预取时,追踪对所述数据高速缓冲存储器的总体命中,且基于对总体命中的所述追踪来选择性地启用对所述数据高速缓冲存储器的数据预取;
结合停用对所述数据高速缓冲存储器的数据预取,通过将用于追踪所述数据高速缓冲存储器的所述总体命中的第一追踪机制复位来实施第一控制滞后。
2.根据权利要求1所述的方法,其进一步包含结合启用对所述数据高速缓冲存储器的数据预取,通过将用于追踪所述预取命中的第二追踪机制复位来实施第二控制滞后。
3.根据权利要求1所述的方法,其中追踪对所述数据高速缓冲存储器的预取命中包含追踪预取命中率,所述预取命中率反映涉及经预取数据线的对所述数据高速缓冲存储器的命中的百分数,且其中追踪对所述数据高速缓冲存储器的总体命中包含追踪对所述数据高速缓冲存储器的总体命中率。
4.根据权利要求3所述的方法,其中追踪所述预取命中率包含追踪所述数据高速缓冲存储器中的经预取数据线的数目与所述数据高速缓冲存储器中的数据线的总体数目的关系。
5.根据权利要求3所述的方法,其进一步包含存储指示所述数据高速缓冲存储器中的哪些数据线为经预取数据线的指示符,且使用所述所存储指示符来检测对所述数据高速缓冲存储器的预取命中以追踪所述预取命中率。
6.根据权利要求3所述的方法,其中追踪所述预取命中率包含响应于检测到对经预取数据线的数据高速缓冲存储器命中而使第一计数增加一,和响应于检测到未对经预取数据线的数据高速缓冲存储器命中而使所述第一计数减小一,且其中追踪所述总体命中率包含响应于数据高速缓冲存储器命中而使第二计数增加一和响应于数据高速缓冲存储器未命中而使所述第二计数减小一。
7.根据权利要求6所述的方法,其中基于对预取命中的所述追踪来停用对所述数据高速缓冲存储器的数据预取包含在如所述第一计数的值所指示所述预取命中率落到界定停用阈值时停用对所述数据高速缓冲存储器的数据预取。
8.根据权利要求6所述的方法,其中基于对总体命中的所述追踪来启用对所述数据高速缓冲存储器的数据预取包含在如所述第二计数的值所指示所述总体命中率落到界定启用阈值时启用对所述数据高速缓冲存储器的数据预取。
9.根据权利要求6所述的方法,其进一步包含结合启用数据高速缓冲存储器预取,通过将所述第一计数复位来实施用于控制数据高速缓冲存储器预取的启用滞后。
10.根据权利要求6所述的方法,其进一步包含在经配置以在相应第一最大计数值和第二最大计数值处饱和的第一饱和计数器和第二饱和计数器中维持所述第一计数和所述第二计数。
11.根据权利要求1所述的方法,其中追踪所述预取命中包含追踪第一计数器中的预取命中率,所述预取命中率反映对所述数据高速缓冲存储器中的经预取数据线的数据高速缓冲存储器命中的百分数,且其中追踪所述总体命中包含追踪第二计数器中的总体命中率,所述总体命中率反映数据高速缓冲存储器命中对数据高速缓冲存储器未命中的总体百分数。
12.根据权利要求1所述的方法,其进一步包含初始化所述数据高速缓冲存储器以在数据高速缓冲存储器预取被启用的情况下开始操作。
13.根据权利要求1所述的方法,其进一步包含只有在启用数据预取时才根据一个或一个以上界定预取策略将数据线预取到所述数据高速缓冲存储器中,和不管是否启用数据预取都响应于数据高速缓冲存储器未命中将数据线获取到所述数据高速缓冲存储器中。
14.一种控制对数据高速缓冲存储器的数据预取的设备,其包含:
用于当启用了数据预取时,追踪对所述数据高速缓冲存储器的预取命中,且基于对预取命中的所述追踪来选择性地停用对所述数据高速缓冲存储器的数据预取的装置;
用于当停用了数据预取时,追踪对数据高速缓冲存储器的总体命中,且基于对总体命中的所述追踪来选择性地启用对所述数据高速缓冲存储器的数据预取的装置;及
用于结合停用对所述数据高速缓冲存储器的数据预取,复位用于追踪所述数据高速缓冲存储器的所述总体命中的第一追踪机制的装置。
15.根据权利要求14所述的设备,其进一步包含用于结合对所述数据高速缓冲存储器的数据预取,来复位用于追踪所述预取命中的第二追踪机制的装置。
16.根据权利要求14所述的设备,其中用于追踪对所述数据高速缓冲存储器的预取命中的装置包含用于追踪预取命中率的装置,所述预取命中率反映涉及经预取数据线的对所述数据高速缓冲存储器的命中的百分数;且用于追踪对所述数据高速缓冲存储器的总体命中的装置包含用于追踪对所述数据高速缓冲存储器的总体命中率的装置。
17.根据权利要求16所述的设备,其中用于追踪预取命中率的装置包含用于追踪所述数据高速缓冲存储器中的经预取数据线的数目与所述数据高速缓冲存储器中的数据线的总体数目的关系的装置。
18.根据权利要求16所述的设备,其进一步包含用于维持指示所述数据高速缓冲存储器中的哪些数据线为经预取数据线的指示符的装置,和用于使用所述指示符来检测对所述数据高速缓冲存储器的预取命中以追踪所述预取命中率的装置。
19.根据权利要求16所述的设备,其中用于追踪预取命中率的装置通过以下方式来追踪所述预取命中率:响应于检测到对经预取数据线的数据高速缓冲存储器命中而使第一计数器增加一,和响应于检测到未对经预取数据线的数据高速缓冲存储器命中而使所述第一计数器减小一;且通过以下方式来追踪所述总体命中率:响应于数据高速缓冲存储器命中而使第二计数器增加一,和响应于数据高速缓冲存储器未命中而使所述第二计数器减小一。
20.根据权利要求19所述的设备,其进一步包含用于在如所述第一计数器的值所指示所述预取命中率落到界定停用阈值时停用对所述数据高速缓冲存储器的数据预取的装置。
21.根据权利要求19所述的设备,其进一步包含用于在如所述第二计数器的值所指示所述总体命中率落到界定启用阈值时启用对所述数据高速缓冲存储器的数据预取的装置。
22.根据权利要求19所述的设备,其进一步包含用于结合启用数据高速缓冲存储器预取,通过将所述第一计数器复位来实施用于控制数据高速缓冲存储器预取的启用滞后的装置。
23.根据权利要求19所述的设备,其中所述第一计数器和所述第二计数器包含分别在第一最大计数值和第二最大计数值处饱和的第一饱和计数器和第二饱和计数器。
24.根据权利要求14所述的设备,其中用于追踪对所述数据高速缓冲存储器的预取命中的装置包含用于追踪第一计数器中的预取命中率的装置,所述预取命中率反映对所述数据高速缓冲存储器中的经预取数据线的数据高速缓冲存储器命中的百分数;且用于追踪对所述数据高速缓冲存储器的总体命中的装置包含用于追踪第二计数器中的总体命中率的装置,所述总体命中率反映数据高速缓冲存储器命中对数据高速缓冲存储器未命中的总体百分数。
25.根据权利要求14所述的设备,其进一步包含用于初始化所述数据高速缓冲存储器的装置,以在数据高速缓冲存储器预取被启用的情况下开始操作。
26.根据权利要求14所述的设备,其进一步包含用于只有在启用数据预取时才根据一个或一个以上界定预取策略将数据线预取到所述数据高速缓冲存储器中的装置,和用于不管是否启用数据预取都响应于数据高速缓冲存储器未命中将数据线获取到所述数据高速缓冲存储器中的装置。
CN2008800240012A 2007-07-10 2008-07-10 数据预取调节 Expired - Fee Related CN101689147B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/775,320 US7917702B2 (en) 2007-07-10 2007-07-10 Data prefetch throttle
US11/775,320 2007-07-10
PCT/US2008/069710 WO2009009704A1 (en) 2007-07-10 2008-07-10 Data prefetch throttle

Publications (2)

Publication Number Publication Date
CN101689147A CN101689147A (zh) 2010-03-31
CN101689147B true CN101689147B (zh) 2013-05-15

Family

ID=39494443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800240012A Expired - Fee Related CN101689147B (zh) 2007-07-10 2008-07-10 数据预取调节

Country Status (6)

Country Link
US (1) US7917702B2 (zh)
EP (1) EP2015189B1 (zh)
JP (1) JP5095820B2 (zh)
KR (1) KR101095217B1 (zh)
CN (1) CN101689147B (zh)
WO (1) WO2009009704A1 (zh)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
KR100421538B1 (ko) * 2001-01-29 2004-03-18 대한민국 생약재의 휘발성 추출물을 유효성분으로 하는 문화재 보존용 살생물제 조성물 및 그를 이용한 문화재 보존방법
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
CN100539439C (zh) 2002-10-05 2009-09-09 数字方敦股份有限公司 连锁反应码的系统编码和解码系统和方法
EP1665539B1 (en) * 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
CN101019326B (zh) 2004-05-07 2013-02-27 数字方敦股份有限公司 文件下载和流系统
WO2006020826A2 (en) * 2004-08-11 2006-02-23 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
US9136983B2 (en) 2006-02-13 2015-09-15 Digital Fountain, Inc. Streaming and buffering using variable FEC overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9386064B2 (en) * 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
EP2203836A4 (en) 2007-09-12 2014-11-05 Digital Fountain Inc GENERATING AND COMMUNICATING SOURCE IDENTIFICATION INFORMATION TO ENABLE RELIABLE COMMUNICATIONS
EP2329385A4 (en) 2008-08-06 2016-09-14 Movik Networks CALLING CONTENT IN THE RADIO ACCESS NETWORK (RAN)
EP2391953A4 (en) * 2009-01-30 2012-08-08 Movik Networks APPLICATION, USE AND WIRELESS CONNECTING TRANSPORT NETWORK PLANNER
US8364901B2 (en) * 2009-02-13 2013-01-29 Micron Technology, Inc. Memory prefetch systems and methods
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8291171B2 (en) 2009-11-30 2012-10-16 Hewlett-Packard Development Company, L.P. Altering prefetch depth based on ready data
WO2011100518A2 (en) * 2010-02-12 2011-08-18 Movik Networks, Inc. Charging-invariant and origin-server-friendly transit caching in mobile networks
US8882378B2 (en) 2010-02-15 2014-11-11 Access Business Group International Llc Heating and dispenser system
WO2011115965A1 (en) * 2010-03-15 2011-09-22 Movik Networks Adaptive chunked and content-aware pacing of multi-media delivery over http transport and network controlled bit rate selection
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
WO2012012334A2 (en) * 2010-07-19 2012-01-26 Movik Networks Content pre-fetching and cdn assist methods in a wireless mobile network
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US9319448B2 (en) 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
WO2012040608A2 (en) 2010-09-24 2012-03-29 Movik Networks Destination learning and mobility detection in transit network device in lte & umts radio access networks
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9471321B2 (en) 2011-03-30 2016-10-18 Freescale Semiconductor, Inc. Method and apparatus for controlling fetch-ahead in a VLES processor architecture
US20130013867A1 (en) * 2011-07-06 2013-01-10 Advanced Micro Devices, Inc. Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US20130262826A1 (en) * 2011-10-06 2013-10-03 Alexander Gendler Apparatus and method for dynamically managing memory access bandwidth in multi-core processor
CN102521158B (zh) * 2011-12-13 2014-09-24 北京北大众志微系统科技有限责任公司 一种实现数据预取的方法及装置
US9043579B2 (en) 2012-01-10 2015-05-26 International Business Machines Corporation Prefetch optimizer measuring execution time of instruction sequence cycling through each selectable hardware prefetch depth and cycling through disabling each software prefetch instruction of an instruction sequence of interest
US8635406B2 (en) * 2012-03-08 2014-01-21 Arm Limited Data processing apparatus and method for providing target address information for branch instructions
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
CN102662713B (zh) * 2012-04-12 2014-04-16 腾讯科技(深圳)有限公司 提高应用程序运行速度的方法、装置及终端
US9390018B2 (en) 2012-08-17 2016-07-12 Advanced Micro Devices, Inc. Data cache prefetch hints
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9367468B2 (en) 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9298634B2 (en) * 2013-03-06 2016-03-29 Gregory RECUPERO Client spatial locality through the use of virtual request trackers
US9223710B2 (en) * 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
JP6191240B2 (ja) * 2013-05-28 2017-09-06 富士通株式会社 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム
US9471510B2 (en) * 2013-12-20 2016-10-18 Netapp, Inc. System and method for cache monitoring in storage systems
US9292447B2 (en) 2014-02-20 2016-03-22 Freescale Semiconductor, Inc. Data cache prefetch controller
US20150286571A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
US9280476B2 (en) 2014-06-04 2016-03-08 Oracle International Corporation Hardware stream prefetcher with dynamically adjustable stride
US9256541B2 (en) 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US20160011790A1 (en) * 2014-07-14 2016-01-14 Sandisk Technologies Inc. Systems and methods to enable access to a host memory associated with a unified memory architecture (uma)
US10824335B2 (en) 2014-07-14 2020-11-03 Western Digital Technologies, Inc. Device and method to store predicted data at a host memory
US9507596B2 (en) * 2014-08-28 2016-11-29 Intel Corporation Instruction and logic for prefetcher throttling based on counts of memory accesses to data sources
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
DE102015115582A1 (de) * 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US9798900B2 (en) * 2015-03-26 2017-10-24 Intel Corporation Flexible counter system for memory protection
US9864661B2 (en) * 2016-02-12 2018-01-09 Hewlett Packard Enterprise Development Lp Cache-accelerated replication of snapshots between storage devices
JP6627629B2 (ja) * 2016-04-14 2020-01-08 富士通株式会社 演算処理装置、および演算処理装置の制御方法
US10740260B2 (en) * 2016-05-12 2020-08-11 Lg Electronics Inc. Cache self-clean engine
US10379862B2 (en) 2016-06-28 2019-08-13 International Business Machines Corporation Effectiveness and prioritization of prefeteches
US9928176B2 (en) * 2016-07-20 2018-03-27 Advanced Micro Devices, Inc. Selecting cache transfer policy for prefetched data based on cache test regions
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10303379B2 (en) 2017-09-25 2019-05-28 International Business Machines Corporation Efficient adaptive read-ahead in log structured storage
US11294810B2 (en) * 2017-12-12 2022-04-05 Advanced Micro Devices, Inc. Memory request throttling to constrain memory bandwidth utilization
US10613983B2 (en) * 2018-03-20 2020-04-07 Advanced Micro Devices, Inc. Prefetcher based speculative dynamic random-access memory read request technique
US11675591B2 (en) * 2018-10-31 2023-06-13 Advanced Micro Devices, Inc. Selectively enabled result lookaside buffer based on a hit rate
US11294595B2 (en) * 2018-12-18 2022-04-05 Western Digital Technologies, Inc. Adaptive-feedback-based read-look-ahead management system and method
US11327891B2 (en) * 2019-09-20 2022-05-10 Samsung Electronics Co., Ltd. Prefetching operations in storage devices
US11720364B2 (en) 2020-03-27 2023-08-08 Intel Corporation Methods and apparatus to dynamically enable and/or disable prefetchers
US11442864B2 (en) 2020-06-29 2022-09-13 Marvell Asia Pte, Ltd. Managing prefetch requests based on stream information for previously recognized streams
KR20220117747A (ko) 2021-02-17 2022-08-24 삼성전자주식회사 데이터 프리페치 제어 기능을 갖는 스토리지 컨트롤러, 스토리지 컨트롤러의 동작 방법, 및 스토리지 장치의 동작 방법
KR20220120016A (ko) * 2021-02-22 2022-08-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11853220B2 (en) * 2021-10-14 2023-12-26 Arm Limited Prefetcher training

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570887A (zh) * 2003-10-07 2005-01-26 威盛电子股份有限公司 预取数据控制器及其方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367656A (en) * 1992-03-13 1994-11-22 Bull Hn Information Systems Inc. Controlling cache predictive prefetching based on cache hit ratio trend
JPH07105092A (ja) * 1993-09-30 1995-04-21 Sharp Corp 記憶装置
US5983324A (en) * 1996-03-28 1999-11-09 Hitachi, Ltd. Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof
US6247107B1 (en) * 1998-04-06 2001-06-12 Advanced Micro Devices, Inc. Chipset configured to perform data-directed prefetching
US20020073406A1 (en) * 2000-12-12 2002-06-13 Darryl Gove Using performance counter profiling to drive compiler optimization
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US6978349B1 (en) * 2003-01-09 2005-12-20 Hewlett-Packard Development Company, L.P. Adaptive cache memory management
US7237068B2 (en) * 2003-01-28 2007-06-26 Sun Microsystems, Inc. Computer system employing bundled prefetching and null-data packet transmission
US7055016B2 (en) * 2003-04-30 2006-05-30 Sun Microsystems, Inc. Computer system including a memory controller configured to perform pre-fetch operations
WO2005076181A1 (en) 2004-02-05 2005-08-18 Dal-Hyun Cho Information buying and selling system
US7162567B2 (en) * 2004-05-14 2007-01-09 Micron Technology, Inc. Memory hub and method for memory sequencing
US7313654B2 (en) * 2004-10-27 2007-12-25 Xiv Ltd Method for differential discarding of cached data in distributed storage systems
US20060174228A1 (en) * 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US20070239940A1 (en) * 2006-03-31 2007-10-11 Doshi Kshitij A Adaptive prefetching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570887A (zh) * 2003-10-07 2005-01-26 威盛电子股份有限公司 预取数据控制器及其方法

Also Published As

Publication number Publication date
CN101689147A (zh) 2010-03-31
EP2015189B1 (en) 2015-07-29
JP2010532904A (ja) 2010-10-14
US20090019229A1 (en) 2009-01-15
KR20100022518A (ko) 2010-03-02
KR101095217B1 (ko) 2011-12-20
US7917702B2 (en) 2011-03-29
WO2009009704A1 (en) 2009-01-15
JP5095820B2 (ja) 2012-12-12
EP2015189A1 (en) 2009-01-14

Similar Documents

Publication Publication Date Title
CN101689147B (zh) 数据预取调节
JP6855642B1 (ja) プリフェッチャベースの投機的ダイナミックランダムアクセスメモリ読み出し要求技術
US7865669B2 (en) System and method for dynamically selecting the fetch path of data for improving processor performance
US6983356B2 (en) High performance memory device-state aware chipset prefetcher
US9256541B2 (en) Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US20090006813A1 (en) Data forwarding from system memory-side prefetcher
US20130013867A1 (en) Data prefetcher mechanism with intelligent disabling and enabling of a prefetching function
EP3676713B1 (en) Utilization-based throttling of hardware prefetchers
US20080320228A1 (en) Method and apparatus for efficient replacement algorithm for pre-fetcher oriented data cache
Khan et al. Improving cache performance using read-write partitioning
US20070239940A1 (en) Adaptive prefetching
Khan et al. Improving cache performance by exploiting read-write disparity
GB2544474A (en) Event triggered programmable prefetcher
US8667221B2 (en) Detection of streaming data in cache
DE102013202995A1 (de) Energieeinsparung in Verzweigungsvorhersagen
US20140229682A1 (en) Conditional prefetching
DE102013202992A1 (de) Energieeinsparung bei Verzweigungsvorhersage
US9280476B2 (en) Hardware stream prefetcher with dynamically adjustable stride
US10073785B2 (en) Up/down prefetcher
US20060179240A1 (en) System and method for algorithmic cache-bypass
Swain et al. Analysis and predictability of page replacement techniques towards optimized performance
Olson et al. Probabilistic Directed Writebacks for Exclusive Caches
Dafre et al. Pattern based cache management policies
US8244980B2 (en) Shared cache performance
OnurMutlu et al. DRAM-Aware Last-Level Cache Replacement

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

Granted publication date: 20130515

Termination date: 20180710

CF01 Termination of patent right due to non-payment of annual fee