CN105279105B - 用于调整预取流的程度的自适应机制 - Google Patents
用于调整预取流的程度的自适应机制 Download PDFInfo
- Publication number
- CN105279105B CN105279105B CN201510425507.6A CN201510425507A CN105279105B CN 105279105 B CN105279105 B CN 105279105B CN 201510425507 A CN201510425507 A CN 201510425507A CN 105279105 B CN105279105 B CN 105279105B
- Authority
- CN
- China
- Prior art keywords
- data
- prefetch
- actual demand
- data stream
- prefetched
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
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)
- Supplying Of Containers To The Packaging Station (AREA)
- Apparatus For Radiation Diagnosis (AREA)
- External Artificial Organs (AREA)
Abstract
提供一种用于调整预取流的程度的自适应机制。根据一个总的方面,一种方法可包括:监视与数据流相关联的多个预取高速缓存请求。所述方法还可包括:评估预取高速缓存请求的准确性。所述方法还可包括:至少部分基于预取高速缓存请求的准确性,调整比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。
Description
本申请要求于2014年7月17日提交第62/026,004号以及2015年6月3日提交的第14/730,217号美国临时专利申请的优先权。此在先申请的主题通过应用合并于此。
技术领域
本申请涉及存储数据,更具体地讲,涉及高速缓存管理。
背景技术
通常,计算机和由计算机执行的程序对无限量的快速存储器具有贪婪的需求。不幸地是,存储器(特别是快速存储器)通常在成本和芯片面积(die area)方面昂贵。对无限快速存储器的期望的传统解决方案是存储器层次结构,或者存储器层叠或层次系统。通常,分层存储器系统包括多级存储器,每一级比前一层慢但比前一层大。
典型的计算机存储器层次结构可包括三级。最快且最小的存储器(通常被称为“级别1(L1)高速缓存”)最靠近处理器,并包括静态随机存取存储器(RAM和SRAM)。下一层或级通常被称为级别2(L2)高速缓存,并且比L1高速缓存大但比L1高速缓存慢。第三级是主存储器,并且一般包括通常被插入到存储器模块中的动态RAM(DRAM)。然而,其它系统可具有更多或更少的存储器层。此外,在一些系统中,处理器寄存器和永久或半永久存储装置(例如,硬盘驱动器、固态驱动器等)可被认为是存储器系统的一部分。
存储器系统通常利用包容原则,其中,最慢但最大的层(例如,主存储器等)包括所有的可用数据。第二层(例如,L2高速缓存等)包括所述可用数据的子集,下一层(例如,L1高速缓存等)包括第二层的数据子集的第二子集。结果,包括在更快层中的所有数据也被更慢层所包括。
通常,高速缓存基于位置原则(例如,时间位置、空间位置等)决定什么样子集的数据被包括。假设,程序将希望访问它最近已访问的数据或作为它最近已访问的数据的下一个数据的数据。例如,如果电影播放程序正在访问数据,则很可能电影播放器将要访问电影接下来的几秒等等。
然而,程序偶尔会请求在最快高速缓存(例如,L1高速缓存等)中不可用的一条数据。这通常被称为“高速缓存未命中”,并且使最快高速缓存向下一存储器层(例如,L2高速缓存)请求所述数据。由于在确定发生高速缓存未命中、由L1高速缓存搜索数据以及将其提供给处理器的过程中发生了延迟,因此对于存储器性能来说这是昂贵的。偶尔,下一存储器层(例如,L2高速缓存等)也不包括请求的数据,并且必须向下一层(例如,主存储器等)请求所述数据。这通常造成更多的延迟。
发明内容
根据一个总的方面,一种方法可包括:监视与数据流相关联的多个预取高速缓存请求。所述方法还可包括:评估所述多个预取高速缓存请求的准确性。所述方法还可包括:至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。
根据另一总的方面,一种设备可包括预取确认器和存储器。预取确认器可被配置为:监视与数据流相关联的多个预取高速缓存请求,评估所述多个预取高速缓存请求的准确性,至少部分基于所述准确性,调整比所述数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。存储器可被配置为:存储第一数据结构,其中,第一数据结构指示所述多个预取高速缓存请求的准确性;存储第二数据结构,其中,第二数据结构指示比所述数据流对数据的当前实际需求多且允许被预取的数据的最大量。
根据另一总的方面,一种预取单元可包括模式表、自适应预取表和发射队列。模式表可包括与数据流相关联的模式数据结构。自适应预取表可包括自适应预取数据结构,其中,所述自适应预取数据结构与所述数据流相关联并指示比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。发射队列可被配置为发出用于针对数据流预取数据的多个预取高速缓存请求。预取单元可被配置为:评估所述多个预取高速缓存请求的准确性,至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多且可允许被预取的数据的最大量。
一个或更多个实现方式的细节在附图和以下描述中被阐述。从所述描述和附图并从权利要求,其它特征将是明显的。
用于存储数据的系统和/或方法,更具体地讲,用于高速缓存管理的系统和/或方法基本上如至少一个附图中所示,和/或如结合至少一个附图被描述,如在权利要求中被更全面地阐述。
附图说明
图1是根据公开的主题的系统的示例实施例的框图;
图2是根据公开的主题的数据结构的示例实施例的框图;
图3是根据公开的主题的状态机的示例实施例的框图;
图4是根据公开的主题的系统的示例实施例的框图;
图5是根据公开的主题的技术的示例实施例的流程图;
图6是可包括根据公开的主题的原理形成的装置的信息处理系统的示意框图。
在各种附图中的相同参考符号指示相同元件。
具体实施方式
在下面将参照示出一些示例实施例的附图更充分地描述各种示例实施例。然而,可以以许多不同的形式来实施本公开的主题,并且本公开的主题不应被解释为局限于在此阐述的示例实施例。相反,提供这些示例实施例使得本公开将会是彻底和完整的,并将充分地将本公开主题的范围传达给本领域的技术人员。在附图中,为了简明,可夸大层和区域的大小和相对大小。
应该理解,当元件或层被称作在另一元件或层“之上”、“连接”或“结合”到另一元件或层时,该元件或层可能直接在所述另一元件或层之上、连接或结合到另一元件或层,或者可能存在中间元件或层。相反,当元件被称作“直接”在另一元件或层“之上”、“直接连接”或“直接结合”到另一元件或层时,不存在中间元件或层。相同的标号始终代表相同的元件。如这里所使用的,术语“和/或”包括一个或更多个相关所列项的任何或全部组合。
应该理解,尽管在这里可使用术语第一、第二、第三等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应被这些术语所限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离本公开主题的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
在这里使用空间相对术语(诸如“在…下方”、“在…之下”、“下面的”、“在…之上”、“上面的”等)来轻松地描述在附图中示出的一个元件或特征与另一元件或特征的关系。应该理解,空间相对术语是为了包括除了附图中描述的方位之外的在使用或运行中的装置的不同方位。例如,如果附图中的装置被翻转,则被描述为在其它元件或特征“下方”或“之下”的元件将随后被定位为在所述其它元件或特征“之上”。因此,示例性术语“在…之下”可包括上面和下面两种方位。可将装置朝向另外的方位(旋转90度或在其它方位),并相应地解释在这里使用的空间相对描述符。
在这里使用的术语仅用于描述特定示例实施例的目的,而不意图限制本公开主题。如这里所使用的,单数形式也意图包括复数形式,除非上下文另有清楚的指示。还应该理解,当在本说明书中使用术语“包括”和/或“包括有”时,其表示存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或更多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。
参照作为理想化的示例实施例(和中间结构)的示意性示意图的剖面图,在这里描述示例实施例。同样地,预计会出现例如由制造技术和/或公差引起的图示的形状的变化。因此,示例实施例不应被解释为限于这里示出的区域的特定形状,而将包括例如由制造产生的形状的偏差。例如,示出为矩形的注入区域在其边缘通常具有圆形或弯曲特性和/或注入浓度的梯度,而不是从注入区域到非注入区域的二元(binary)改变。同样地,通过注入形成的埋区可能导致在埋区和通过其发生注入的面之间的区域中的一些注入。因此,在附图中示出的区域实际上是示意性的,所述区域的形状不是为了示出装置的区域的实际形状,也不是为了限制本公开主题的范围。
除非另有定义,否则这里使用的所有术语(包括技术和科学术语)具有与公开的主题所属领域的普通技术人员通常理解的含义相同的含义。还应该理解,除非这里明确定义,否则术语(诸如在常用词典中定义的)应被解释为具有与所述术语在相关领域的上下文中的含义一致的含义,而不应理想化或过于正式地被解释。
在下文中,将参照附图详细地解释示例实施例。
在各种实施例中,系统(例如,处理器、片上系统等)可包括被配置为执行或处理一个或更多个指令的执行单元。在这种实施例中,这些指令可构成程序或应用(或它们的一部分)。在各种实施例中,执行单元可被处理器或其它更大的计算机组件包括。在各种实施例中,这些指令可偶尔访问存储在存储器系统(例如,L1高速缓存、L2高速缓存和主存储器等)中的数据(例如,从存储器系统读取数据、将数据写入存储器系统等)。
在这种实施例中,当这些指令访问数据时,它们可首先向作为存储器系统的第一层或最快层的L1高速缓存请求数据。如果请求的数据被包括在高速缓存中(即,高速缓存命中),则L1高速缓存可提供所述数据(或在写指令的情况下更新存储的数据),并且执行单元可顺利进行操作。
然而,在各种实施例中,如果请求的数据未包括在高速缓存中(即,高速缓存未命中),则L1高速缓存可转而向L2高速缓存(即,存储器系统中的下一级或下一层)请求所述数据。这可能会对执行单元的能力产生不利影响或产生不期望的影响,并可使执行单元延迟或拖延指令的处理。
传统地,L1高速缓存一次仅向L2高速缓存请求一条数据。然而,在一些实施例中,系统可包括L1填充缓冲器,L1填充缓冲器被配置为使由L1高速缓存或其代表提出的对L2高速缓存的数据请求排队。在这种实施例中,L1高速缓存能够容纳来自执行单元的对数据的另外的请求,同时等待引起高速缓存未命中的数据的完成(fulfillment)。
类似地,L2高速缓存可存储数据的子集。如果高速缓存未命中的数据被包括在高速缓存中,则该数据可相对快速地被提供给L1高速缓存。如果高速缓存未命中的数据未被包括在高速缓存中,则另一高速缓存未命中被产生,这一次是在L2高速缓存级产生的。L2高速缓存可向主存储器(或存储器系统中的下一层)请求未命中的数据,并且主存储器被预计其存储的数据中具有该数据。在各种实施例中,主存储器可仅存储数据的子集,全部可能的数据可存储在存储介质或其它半永久或永久存储装置(例如,硬盘驱动器、固态装置、光盘等)中。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
高速缓存未命中通常被认为是有害的。系统可包括被配置为预测什么样的数据可能会被指令请求的预取单元,然后系统促使预测的数据在存储器系统中容易被获得。在一些实施例中,预取单元可减少直接由指令引起的高速缓存未命中的次数。在这种实施例中,通过在需要(或预测需要)数据的指令被执行之前请求该数据,可在所述指令需要该数据之前解决由于请求该数据而引起的高速缓存未命中。在这种实施例中,执行单元可不会意识到发生了这种高速缓存未命中,并且可能不拖延指令的执行,或者可能不使指令的执行受到不利影响。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
图1是根据公开的主题的系统或预取单元或引擎100的示例实施例的框图。在示出的实施例中,示出了可能的预取单元或预取器的粗略概述。具体地,示出的预取器100可包括预取过滤器102、重排序队列104、模式识别器或训练表106、模式表108、发射队列110、预取确认器或确认表112。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,数据高速缓存请求或需求可被输入到预取过滤器102。在各种实施例中,预取过滤器102可被配置为追踪哪些数据高速缓存请求与相同的或预先遇到(pre-encountered)的高速缓存块(cacheline)或存储器地址相关联。在这种实施例中,预取器100的其余部分可仅应付或处理高速缓存块,而不应付或处理同一高速缓存块的子部分或字。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,对于指定的高速缓存块的请求可被传递给重排序队列104。在各种实施例中,重排序队列104可被配置为将数据高速缓存请求重新排序返回到程序顺序,或者重排序返回到由程序或指令的流自然发出请求的顺序。在各种实施例中,整个计算系统或加载存储单元(出于各种原因)可不按顺序发出数据高速缓存请求,并且重排序队列104可被配置为调换请求顺序的变化。
在一实施例中,高速缓存预取器100可包括模式识别器或训练表106,其中,模式识别器或训练表106被配置为检测由于指令而发生的存储器访问的模式。例如,一系列指令或指令流可按3千字节(KB)、然后4KB、然后4KB(即,3+4+4等)的模式来访问存储器地址。在这种实施例中,训练表106可识别存储器访问的模式。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,指令可包括若干指令流。在此背景下,指令流可以是全部与普通程序、函数或子程序相关并按顺序执行以完成任务的一系列指令。在现代计算机中,执行单元可被配置为经由诸如(但不限于)多任务、多线程、时间分片等技术,基本上并行地执行一个或更多个指令流。类似地,预取单元100可被配置为针对各个流预取数据。虽然,在此参照单个流描述了公开的主题,但是应理解,相同的处理和数据结构等针对多个流被创建、维持和采用,并且在此描述的单个实例可被应用于所有的流。
在这种实施例中,模式识别器106可被配置为在各种指令流中检测存储器访问模式。在这种实施例中,第一指令流可与第一组存储器访问模式(例如,3+4+4、1+8+8等)相关联,第二指令流可与第二组存储器访问模式(例如,3+5+4、4+8+8、3+4+4等)相关联。在各种实施例中,两个或更多个指令流可与相似模式相关联。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在各种实施例中,预取单元100可包括或维持模式表108,其中,模式表108被配置为存储检测的或预测的存储器访问模式。在各种实施例中,模式表108可包括存储在由预取单元100包括的存储器中的数据指令。在一些实施例中,模式表结构108可不包括表,但可包括另一形式的数据结构(例如,链表、数组等)。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,高速缓存预取器100可被配置为使它的预取数据预测至少部分基于模式表108中存储的模式。例如,如果3+4+4模式被识别,并且对起始于3kB边界的存储器地址的存储器访问被检测到,则高速缓存区域器100可在接下来的两个4kB边界预取数据。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
示出的实施例的模式表108可包括使指令流与检测的模式相关联的传统模式条目134。如以下参照图2和图3描述的,示出的实施例的模式表108还可包括自适应预取条目136,其中,自适应预取条目136监视和指示预取器100与各种识别的模式具有的置信度。在示出的实施例中,模式表108也可包括自适应状态机138,其中,自适应状态机138被配置为动态地调整预取器100在各种识别的模式中具有的置信度。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
响应于识别的模式而产生的预取数据请求可被存储在发射队列110中。在各种实施例中,发射队列110随后可将预取数据请求调度到填充缓冲器(例如,L2填充缓冲器等)中或,直接调度到高速缓存(例如,L2高速缓存等)中。
在这种实施例中,由这些预取所请求的预取数据可最终被存储在高速缓存(例如,L1高速缓存、L2高速缓存等)中。最后,指令或程序可真实地请求数据(与推测地预取该数据不同)。如果预取器100正确地预测到对数据的实际需求,则当实际数据请求或需求发生时,它可导致高速缓存命中。可选地,如果预取器100没有正确地预测到对数据的实际需求,则实际的数据请求或需求可导致高速缓存未命中(由于实际请求的数据事先未被预取并放置在高速缓存中)。
需要确认由高速缓存预取器100做出的预测是有效的或至少是有用的。在各种实施例中,这种反馈机制可被采用以提高由预取单元100进行的预测。
在各种实施例中,预取单元100可包括预取确认器和/或确认表112。在示出的实施例中,预取确认器112可被配置为监视通过指令(或执行单元)做出的数据访问,并确定高速缓存预取器100是否正确地预测出指令将访问预取的数据。在各种实施例中,基于此反馈(正面的和/或负面的),模式表108可调整其预测技术(如参照图2和图3所详细描述的)。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,预取确认器112可被配置为从执行单元接收数据访问请求(例如,加载、存储、读、写等)。在各种实施例中,此数据访问请求可与访问的数据相关联,并可包括所访问的数据被存储的特定存储器地址。在各种实施例中,数据访问请求也可被存储器系统接收,并可按照以上参照基本高速缓存存储器分层结构说明所描述的那样被处理。在一些实施例中,预取确认器112可从存储器系统接收高速缓存命中和/或未命中,而不是全数据访问请求。
在各种实施例中,预取确认器或确认表112可被配置为确定访问的数据(或至少确定与访问的数据相关练得存储器地址)是否已被预取单元100预取或预测。在一个这种实施例中,预取确认器112可被配置为将实际存储器访问(例如,存储器地址、访问是否导致高速缓存命中和/或未命中、访问的数据是否被事先预取等)通知给模式识别器106和/或模式表108。
应理解,图1的示出的示例仅是一个说明性示例,公开的主题不限于此。预取器100可经由若干体系结构或实施例来实现,并且应理解,图1中示出的预取器100仅是说明性示例,其它示例也是可能的。另外,还应理解,这些其它示例或实施例可包括通过公开的主题示出的自适应状态机138和/或自适应预取条目136。
图2是根据公开的主题的数据结构200的示例实施例的框图。具体地,这些数据结构202和224可存在于模式表(例如,如图1中所示的)中,或单独地存在于一个或更多个其它结构(例如,如图4中所示的)中。在这种实施例中,每个指令流可与相似的数据结构200相关联,这些数据结构200可被应用以预测指令流将需要什么样的数据。
如上所述,预取单元或引擎的主要目的是减少由存储器分层结构的各个部分经历的有效延迟。预取引擎推测地请求数据,希望能在数据被指令流实际请求时,数据已被预先加载或预取到合适的高速缓存中,并因此与高速缓存未命中相比,将明显减少延迟(从指令流的角度看)。
为了实现此目的,预取单元期望预取充足的数据或高速缓存块,以保持领先于指令流的对数据的当前实际需求。在所述需求之前预取单元正在请求的高速缓存块的级别或数量被称为预取流的“程度”。注意,不应将预取流的“程度”与被用作预取引擎中的模式的一部分的偏移或地址模式混淆,其中,偏移或地址模式告诉预取引擎从哪些存储器地址请求数据。所述“程度”与多少条预取的数据在任何一个时刻被获得或存储有关,而不与从哪里(例如,存储器地址)得到这些数据有关。
然而,预取单元也期望避免证明是不需要的伪预取(例如,实际上从未被指令流访问的推测预取)。在各种实施例中,这可能例如由于实际需求流在长度上非常短(即,指令流需要比预取单元获得的数据更少的数据)而发生,或者,潜在地,这可能由于预取单元进行的不准确的检测/预测而发生。应注意,以上内容仅是一些说明性示例,公开的主题不限于此。伪预取或不准确的预取浪费资源(诸如,例如浪费填充缓冲器空间),消耗带宽,耗电,以及用不必要的数据污染高速缓存等。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
如上面的简要描述,在各种实施例中,预取单元可被配置为动态地评估先前预取的数据的准确性,并增加或减少比各个数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。在示出的实施例中,数据结构200可被用于帮助预取单元动态地监视预取的准确性,评估预取的准确性,并调整可允许被预取的数据的程度或量。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,条目202可存在于模式表中。在各种实施例中,此条目可包括传统或常规的模式数据210,其中,模式数据210包括识别(identifier)模式(3+4+4模式)和关联的指令流等。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。模式数据210的细节并非公开的主题的关注点,而是被示出以使特定指令流、模式表中的条目或者一组传统模式数据210清楚,存在一组关联的其它数据或置信数据290。
在各种实施例中,每个模式表条目可被分配指定的置信度或状态212。置信状态212指示预取引擎在此模式条目中有多大信心,或者对于模式条目而言预取为多准确。如果对于模式条目而言预取比较准确,则置信状态可比较高。相反,如果对于模式条目而言预取不太准确,则置信状态可比较低。
在示出的实施例中,置信状态可指示对于指定的模式条目可发生的预取的程度或数量。如果置信程度低,则可允许的预取的数量可以小。如果置信程度高,则可允许的预取的数量可以大。
在示出的实施例中,置信状态212可与若干参数或设置值292关联,或者可包括若干参数或设置值292。在示出的实施例中,这些参数292被示出为包括在模式条目202中。在另一实施例中,对于置信状态212的所有示例而言,参数可以是相同的(例如,与低置信度相关联的所有模式条目可具有P值5,等等)。在这种实施例中,特定参数值292可被存储在其它地方(例如,存储在共同设置表、确认状态定义数组等中),并且不与每个模式条目202一起存储(因为单独的置信状态212可能就足够了)。然而,图2的实施例允许对公开的主题的更全面解释。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
一旦由公开的主题跟踪的其它值被解释,与置信状态相关联的参数292将会被更好的理解。如上所述,预取单元监视并评估其预取预测的准确性,并且,作为响应,动态地调整对于指定的模式条目可能发生的预取的数量。为了实现此目的,在一实施例中,预取单元可对未完成的推测预取(尚未与任何实际数据需求或请求匹配的预取)以及已关闭的预取(与实际数据需求或请求匹配的预取)的数量进行测量或计数。
在这种实施例中,模式条目202可包括第一字段或值,其中,第一字段或值可包括已发生但尚未与任何实际数据需求或请求匹配的可允许的预取(即,它们仍为推测的)的计数(P 217)。模式条目202也可包括第二字段或值,其中,第二字段或值可包括已发生并且已与任意实际数据需求或请求匹配的预取(即,它们不再是推测的)的计数(C 218)。在这种实施例中,当推测预取与实际数据请求匹配时,P 217的值可减小,而C 218的值可增大。类似地,当新的推测的预取被做出但未与实际数据请求匹配时,P 217的值可增大,而C 218的值可保持不变。
在各种实施例中,P 217和C218的值可周期性地被检查或评估,以确定由预取单元进行的预测有多准确。在一实施例中,此周期可基于预定义的时间量。在另一实施例中,此周期可基于一个或更多个事件。在这种实施例中,如参照数据结构224被详细地描述的,可采用开窗口机制(windowing mechanism)。然而,目前将讨论更简单的基于时间的机制。
在这种实施例中,每隔预定义的秒数、毫秒数或时钟周期数,预取引擎就可通过比较P 217和C 218来检查或评估其预测的准确性。基于此评估,预取引擎可(或不会)改变被分配给模式条目202的置信状态212。
如上所述,每个置信状态212可与一个或更多个参数292相关联。在各种实施例中,第一参数可包括在置信状态212退化、减小或降低之前允许的正确预取的最小数量(Cmin213)。在类似的实施例中,第二参数可包括在置信状态212提升、提高或增加之前允许的正确预取的最大数量(Cmax 214)。在这种实施例中,在评估阶段(例如,由定时器到期或事件(诸如与窗相关联的情况等)引起的)期间,确认的正确预取或不再是推测的预取的数量(C218)可被确定,并与Cmin 213和Cmax 214比较。基于与这些阈值的比较,置信状态212可以降低、提高或原封不动。如以下参照图3所描述的,如果置信状态212被调整或改变,则参数292也可被改变。
在各种实施例中,每个置信状态212可与这样的参数相关联:该参数指示已发生但尚未与任何实际数据需求或请求匹配的可允许的预取的最大数量或程度(Pmax 215)。如上所述,当置信状态212提高或降低时,Pmax 215的值可增加或减少。在这种实施例中,Pmax215的值可限制对此特定模式条目202进行的预取的数量。当预取器获得模式条目202的置信时,可允许更多的未完成的预取。相反,当预取器损失模式条目202的置信时,可允许更少的未完成的预取。在这种实施例中,Pmax 215可充当限制可发生的未完成的预取的数量(如用P 217衡量的)的阈值。如以下参照数据结构224描述的,Pmax 215的值也可影响周期的准确性评估的时序和发生。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,在每个评估阶段,P 217和C 218的值可被归零或重置为某些值。在一些实施例中,模式条目202可包括衡量模式条目202的累积的不准确的水平(AI 222)的字段或值。在这种实施例中,在P 217和C 218的值被重置之前(在为下一监视周期准备时),P 217和C 218之差可被认为是在监视周期期间发生的预取不准确的次数(在此简化的示例中)。在给定的监视周期期间发生的不准确的次数可增加到在模式条目的有效期期间发生的所有不准确的运行次数(AI 222)。在一些实施例中,AI 222可仅对在第二时间周期(即,与用于测量C 218的时间周期不同的时间周期)或滑动时间窗口期间的不准确的次数进行计数,而不是模式条目202的全部有效期期间的不准确的次数进行计数。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,每个置信状态212可与这样的参数(AImax 216)相关联:该参数指示在模式条目202的有效期(或实施例的第二监视周期)期间累积的不准确的最大可允许数量。在更优选的实施例中,AImax 216的值对于所有的置信状态21可以是全局的或者是相同的。
在各种实施例中,一旦AI 222达到或超过AImax 216的阈值,预取单元就可采取纠正措施。在一个实施例中,采取的纠正措施可包括:使模式条目202终止或无效,以及基于此而不再执行预取。在这种实施例中,预取单元可基于新的模式进行重新训练(希望这次更加准确)。在这种实施例中,可对重新训练的模式的重新识别而应用新的模式条目202。
在另一实施例中,纠正措施可包括改变置信状态212(例如,将置信状态212改变为低置信状态,将置信状态212改变为默认置信状态等)。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在各种实施例中,模式条目202可包括指示P 217和C 218的评估阶段或评估何时发生的结构或字段224。在非优选的实施例中,如上所述,此字段224可简单地包括定时器或其它计数器。在更优选的实施例中,字段224可包括更复杂的数据结构,诸如,例如一个或更多个监视窗口。在示出实施例中,数据结构224可包括两个监视窗231和232。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,字段224可不被包括在模式条目202中,但仅与模式条目202相关联。例如,在示出的实施例中,数据结构224可足够复杂,将数据结构224单独存储,或者甚至存储在预取单元的不同组件(例如,确认表等)中。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在示出的是实施例中,数据结构224可包括两个监视窗231和232。在各种实施例中,程度或Pmax 215数量可被应用于限制预测的数量以及确定评估阶段(测量P 217和C218)应何时发生。
在这种实施例中,第一窗口231可被定义。窗口231可足够大以存储最大数量的可允许的未完成的(即,未匹配的或仍然为推测的)预取(例如,置信状态212的Pmax 215或程度)。当预取请求被做出或完成时,预取(它们的存储器地址或存储器地址的表示)被存储在窗口231中。
在示出的实施例中,窗口231具有存储预取信息的10个位置或地方(即,Pmax 215在此示例中等于10)。当预取被做出时,预取被存储在各个位置(例如,P01、P02、P03、P04、P05、P06、P07、P08、P09、P10等)。
当提出实际数据请求或需求时,确认单元可将这些实际数据需求与预取的数据匹配。在这种实施例中,推测的预取或预测的预取可被标记为或被改变为经确认的预取或数据。
例如,在示出的实施例中,如果针对与位置242或P02相关联的预测的或推测的数据,执行单元提出实际数据需求,则位置242的值可从值P02改变为C02。在这种实施例中,这可表示仅存在9个未完成的预取(并且P 217可从10改变为9)。在各种实施例中,当更多个的实际数据需求被提出时,更多个的预测的或推测的位置值可从Ps(预测的)改变或转变为Cs(确认的)。在各种实施例中,这可涉及标志位的使用。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,这种形式的监视可假设来自特定流的确认(或实际数据需求)按照程序顺序到达。在各种实施例中,如果加载存储单元以按顺序的方式进行操作,则这可能不是问题。然而,在包括无序加载存储单元的实施例中,可需要对需求加载和存储进行重排序的机制。在图1中,此机制可以是重排序队列。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,一旦位置242的值从P02(预测的)切换为C02(确认的),则未完成的预取的数量就下降到最大可允许的数量(Pmax 215)以下,并且更多的预取可被实现。然而,可注意到,第一窗口231仅具有10个位置,并且它们全部填满。在这种实施例中,可采用双缓冲或多窗口方案。
在示出的实施例中,第二窗口232可被创建。另外,第二窗口232可包括数量与Pmax215相等的位置。当第一窗231变得填满时,新的预取(如果允许在Pmax上限或阈值以下)可被放置在第二窗232(例如,P11等)中。在各种实施例中,第二窗232通常可包括尚未填满的若干空位置234(当已达到Pmax极限并且在确认发生之前没有更多的预取可发生时)。
如上所述,数据结构224可在基于事件的评估或测量方案中被采用(相对于基于定时器或时间的方案等)。在这种实施例中,当一个或更多个预定义的事件发生时,可进行评估阶段。
在一个实施例中,第一事件可包括第一窗231中的所有预测条目转变为确认的条目(例如,P01、P02、…P10等转变为C01、C02、…C10)。在这种实施例中,预取器可被认为对于此监视周期具有100%准确性。
在另一实施例中,第二事件可包括第二窗口232中的预测条目转变为确认的条目(例如,P12转换为C12等)。在确认按照程序顺序发生的实施例中,跳过预取可表示:任何跳过的预取将永远不会被确认。在示出的实施例中,P02被确认为C02的事实表示条目P01将永远不会被确认,并且程序从未请求预测的数据并且将永远不会请求所述预测的数据。P10、P13等被确认,但是确认条目P01的机会已被失去。类似地,对条目C09的确认表示条目P03、P04、P05、P06、P07和P08将不再被确认。在这种实施例中,如果第二窗232中的条目被确认(例如,P12转换为C12等),则这表示第一窗231中未确认的条目将不再被确认,并且第一窗231的值现在是最终值。在这种实施例中,第二窗232的使用可允许预取器容忍虚假的不准确的预取(例如,P01等)。
在各种实施例中,其它触发事件可发生,或可被应用于触发评估阶段。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
如上所述,一旦评估阶段发生,C 218的值就可被计算。在一些实施例中,C 218的值可在各种预取确认发生时被实时更新。在另一实施例中,C 218的值可仅在评估阶段期间被更新。在各种实施例中,只有第一窗口231中的值可被包括在C 218的计算中。
例如,在示出的实施例中,对C12的确认可触发评估阶段。在这种实施例中,当第一窗231中的确认仅包括C02和C09时,C 218的值可以是2(由于C12此时未被计数,因此C 218的值不是3)。
类似地,对此监视周期或窗口而言不准确的数量可以是第一窗231中的未完成的或未确认的预测条目的数量(8;P01、P03、P04、P05、P06、P07、P08和P10)。注意,这不同于对以上讨论的基于时间周期(相对于基于窗口或事件的监视方案)的不准确和AI 222的简单解释。不准确的数量可被增加到不准确的总数(AI 222)。
另外,应注意,在基于事件的方案中的值P 217可包括贯穿所有窗口231和232或窗231和232两者的未完成的预取的总数。如上所述的作为对被简化的定时器或时间周期方案的部分解释,值P 217和C 218被讨论为在某种程度上互补。这可能不是当值P 217和C 218通过不同窗口被测量时(例如,P 217贯穿所有窗,C 218贯穿第一窗等)使用基于事件的方案的情况。
如上所述,在评估阶段,C 218的值可与参数Cmin 213和Cmax 214进行比较,并且置信状态212可被调整。同样如上所述,置信状态212的改变可导致参数Pmax 215的改变。在示出的实施例中,如以下所描述的,当窗口231和232的尺寸基于Pmax 215时,这可导致窗口231和232的尺寸改变。
在评估阶段结束时,第一窗口231可被删除,因为来自第一窗231的所有信息可能已被收集。然后,第二窗口232可被认为是第一窗口231,并且当需要新的第二窗口232时,新的第二窗口232可被创建。在一些实施例中,这可通过删除第一窗口231的内容并将第二窗口232的内容(例如,P11、C12、P13等)拷贝或移动到第一窗口231来实现。在另一实施例中,指针或切换标志可被应用于标识两个窗口231和232中的哪一个窗被认为是第一窗口或第二窗口,并且此指针或切换标志可在每个监视周期反转或替换。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
另外,当窗口231和232的尺寸依赖于参数Pmax 215时,在对窗口进行移动期间,也可调整窗口的尺寸。例如,如果Pmax从10降低到5,则第一窗口231的尺寸可被调整为仅包括5个位置(其中,三个将被P11、C12和P13填充),并且新的第二窗口232也是这样。在一些实施例中,如果现有的未完成的或确认的预取的数量超过第一窗口231的新尺寸,则超出现有的未完成的或确认的预取的量可被放置在新的第二窗口232中。例如,如果新的Pmax是5,但条目P11、C12、P13、P14、P15和P16已存在,则P11、C12、P13、P14和P15可被放置在第一窗口231并且P16可被放置在新的第二窗口232中。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。类似地,如果Pmax 215增加,则窗口231和232的尺寸可增加。
在评估阶段结束时,既然原始的第一窗口231已被删除,那么P 217的值可被更新为反映未完成的预取。例如,在示出的实施例中,在评估阶段之前,P 217的值可能为10(由于P01、P03、P04、P05、P06、P07、P08、P10、P11和P13)。但是在第一窗口231被删除并且第二窗口232的内容移动到新的第一窗口231之后,P 217的值可以是2(由于P11和P13)。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。类似地,依赖于实施例,C 218的值可被改变。
图3是根据公开的主题的状态机300的示例实施例的框图。应理解,状态机300仅是一个说明性示例,公开的主题不限于此。在各种实施例中,可存在任意数量的状态的状态机。另外,在一些实施例中,可在不使用传统状态机的情况下采用例如图表等的技术来计算状态和参数。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,状态机300可包括四个置信状态或置信度:低302、中等304、高306和终止308。如上所述,这些状态中的每一个状态可与它们拥有的各个参数(Pmax、Cmax、Cmin等)相关联。
例如,在示出的实施例中,低置信状态302可包括10的Pmax或程度、5的Cmax以及2的Cmin,或者与10的Pmax或程度、5的Cmax以及2的Cmin相关联。中等置信状态304可包括20的Pmax或程度、10的Cmax以及5的Cmin,或者与20的Pmax或程度、10的Cmax以及5的Cmin相关联。高置信状态306可包括40的Pmax或程度、41的Cmax以及10的Cmin,或者与40的Pmax或程度、41的Cmax以及10的Cmin相关联。终止或未激活置信状态308可包括0的Pmax或程度、2的Cmax以及0的Cmin,或者0的Pmax或程度、2的Cmax以及0的Cmin相关联。应注意,以上仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,如果流或模式条目是未激活的,则可等待或默认为未激活状态308。由于用于此状态的Pmax是0,所以可不发生预取。在各种实施例中,一旦遇到新的流或创建新的模式条目,那么它可被分配低置信状态302(或基于实施例被分配其它状态),并且预取可如上所述发生。
在示出的实施例中,当C的值大于或小于各个值Cmax或Cmin时,置信可被提高或降低。当置信提高时,置信状态可从低302改变为中等304,并最终改变为高306。在示出的实施例中,高状态306的Cmax可被设置为足够高使得它不会被超过(例如,当Pmax仅为40时,Cmax可等于41),从而终止向更高的置信上升。相反地,当置信下降时,置信状态可从高306改变为中等304,改变为低302,并最终改变为终止或未激活308。在各种实施例中,一旦模式条目进入终止状态308,模式条目可从模式表移除,并且预取引擎可基于新模式进行重新训练。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,如果合计的不准确(AI)的数量曾经超过阈值(AImax),则模式条目可经由终止状态308被终止或呈现为未激活。在示出的实施例中,这可直接从任何其它状态发生,完全不同于可经由确认的预取比较(C相对于Cmax/Cmin)而发生的有序的或顺序的提高或降低置信。
在非优选实施例中,值AImax可基于各个置信状态,而不是全局计数值。在这种实施例中,AI可导致置信度的更加顺序的降低,这与示出的实施例所不同。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,公开的主题可部分地由于对流进行准确预取的程度或深度更大而提高预取引擎或单元的性能。也就是说,当预取的准确性的置信增加时,公开的主题允许更多的预取发生。类似地,当置信降低时,更少的预取发生,这意味着会发生更少的不准确的预取。在这种实施例中,伪预取或不准确的预取的数量的减少可表示更少的功耗。
另外,公开的主题允许较好的且更准确的评估预取流的准确性。如上所述,与简化的基于时间的方法相比,用于测量预取的准确性的基于窗口或基于事件的方法可导致对预取的准确性的更精确的评估。此外,在这种实施例中,基于事件的方法可对于伪预取更加容忍。相反地,终止流或删除以下模式条目的能力可提高整个系统性能,其中,所述模式条目被认为产生了太多的累积或累积的不准确的预取。
如上所述,公开的主题的用于动态地调整或调节(ramp)预取发生的程度的能力可提高预取引擎或单元的性能。另外,在各种实施例中,可经由与置信状态相关联的各种参数(例如,Cmax、Cmin等)来控制所述程度被调整或提高或降低的速度。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
图4是根据公开的主题的系统或预取器400的示例实施例的框图。与图1的系统100相似,应理解,预取器400仅是一个说明性示例,公开的主题不限于此。然而,预取器400被用于示出公开的主题的两种变化,其中,如果仅图1被示出,则这两种变化可能不会很明显。
如上所述,预取器400可包括预取过滤器102、训练表或模式识别器106、具有模式条目43的模式表408、自适应预取表409、发射队列110、确认表或预取确认器412。上述组件可以与参照图1描述的组件相似或相比拟的。
图1和此实施例之间的示出的第一差异是:重排序队列104被示出为是可选的。如上所述,在一些实施例中,加窗口方案可依赖于按顺序跟踪实际数据需求或请求,但是较大系统或处理器的加载存储单元可发出无顺序的实际数据需求或请求,并且重排序队列104(或预取确认器112中的类似物)可将这些实际数据需求返回到程序顺序。
在示出的实施例中,可采用不依赖于对实际数据需求的按顺序跟踪的监视方案,并因此可移除或不包括重排序队列104。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
示出的第二差异可以是自适应预取表409与模式表408分开。在示出的实施例中,自适应预取表409可包括自适应预取条目436。这些条目可包括图2或类似实施例的字段或值290。模式条目434(如图2的模式数据210所示)可继续被包括在模式表408中。在这种实施例中,自适应预取条目436可继续与它们的各个模式条目434相关联,但是可被存储在物理上分开的位置或数据结构中。应理解,以上内容仅是一个说明性示例,公开的主题不限于此。
另外,在示出的实施例中,状态机438可被包括在预取确认器412或类似分离的数据结构中。在这种实施例中,监视和/或评估预取的准确性的电路或逻辑可被包括在预取确认器412内,并且数据结构436可被包括在表409中。
在各种实施例中,如上所述,状态机438可包括用于每个状态的全局参数(例如,Pmax、Cmax、Cmin等),并且这些值可不被存储在自适应预取条目436内。在这种实施例中,置信状态值可被存储在自适应预取条目436内,并然后被状态机438引用。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
图5是根据公开的主题的技术的示例实施例的流程图。在各种实施例中,技术500可被系统(诸如图1、图4或图6的系统)使用或产生。另外,技术500的部分可利用或产生数据结构(诸如图2和/或图3的数据结构)。虽然应理解,以上内容仅是一些说明性示例,但是公开的主题不限于此。应理解,公开的主题不限于由技术500示出的行为的顺序或数量。
块502示出:如上所述,在一个实施例中,可监视与数据流相关联的多个预取高速缓存请求。如上所述,在各种实施例中,监视过程可包括:经由预取请求的至少两个窗口来跟踪预取高速缓存请求。如上所述,在这种实施例中,每个窗可包括等于以下程度的窗口尺寸:所述程度与比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量相关联。在一个这种实施例中,监视过程可包括:如上所述,当数据流提出对数据的实际需求时,确定对数据的实际需求是否与预取请求的所述至少两个窗口中的一个窗口内的预取高速缓存请求匹配。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
块504示出:如上所述,在一个实施例中,预取高速缓存请求的准确性可被评估。在一个实施例中,评估过程可包括:如上所述,当对数据的实际需求与预取请求的所述至少两个窗口中的第二窗口内的预取高速缓存请求匹配,或者预取请求的所述至少两个窗口中的第一窗口内的所有预取高速缓存请求与对数据的实际需求匹配时,评估与第一窗口相关联的预取高速缓存请求的准确性。在一些实施例中,评估过程可包括如上所述的用于评估预取高速缓存请求的准确性的基于事件的方法。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
块506示出:如上所述,在一个实施例中,至少部分基于预取高速缓存请求的准确性,可调整比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。在一个这种实施例中,调整过程可包括:如上所述,将第二窗口的内容移动到第一窗口,使得第二窗口不再与任何预取高速缓存请求相关联。另外,调整过程可包括:如上所述,确定比数据流的对数据的当前实际需求多且可允许被预取的数据的新的最大量。此外,在这种实施例中,调整过程可包括:如上所述,将预取请求的所述至少两个窗口的窗口尺寸的调整为比数据流的对数据的当前实际需求多且可允许被预取的数据的所述新的最大量。
在另一实施例中,调整过程可包括:如上所述,如果预取高速缓存请求的准确性低于预定义的阈值,则减小比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。相反地,调整过程可包括:如上所述,如果预取高速缓存请求的准确性高于预定义的阈值,则增加比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。另外,调整过程可包括:如上所述,不调整比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。
在另一实施例中,调整过程可包括:如上所述,如果与数据流相关联的预取高速缓存请求的累积的不准确性超过预定义的阈值,则停止针对数据流预取数据。
在一个实施例中,调整过程可包括:如上所述,动态地调整与数据流相关联的置信状态。在这种实施例中,调整置信状态的过程可包括:将数据流与多个预定义的置信状态之一相关联。在这种实施例中,如上所述,每个置信状态可与以下项相关联:预取高速缓存请求的准确性的最低等级、预取高速缓存请求的准确性的最高等级、以及与比数据流的对数据的当前实际需求多且可允许被预取的数据的最大量。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
图6是可包括根据公开的主题形成的半导体装置的信息处理系统600的示意性框图。
参照图6,信息处理系统600可包括根据公开的主题的原理构成的一个或更多个装置。在另一实施例中,信息处理系统600可采用或执行根据公开的主题的原理的一个或更多个技术。
在各种实施例中,信息处理系统600可包括计算装置,诸如,例如膝上型计算机、桌上型计算机、工作站、服务器、刀片式服务器、个人数字助理、智能电话、平板电脑和其它合适的计算机等或者它们的虚拟机或虚拟计算装置。在各种实施例中,信息处理系统600可被用户(未示出)使用。
根据公开的主题的信息处理系统600还可包括中央处理单元(CPU)、逻辑或处理器610。在一些实施例中,处理器600可包括一个或更多个功能单元块(FUB)或组合逻辑块(CLB)615。在这种实施例中,组合逻辑块可包括各种布尔逻辑运算(例如,NAND、NOR、NOT、XOR等)、稳态逻辑装置(例如,触发器、锁存器等)、其它逻辑装置或它们的组合。这些组合逻辑运算可按简单或复杂方式被配置为处理输入信号来实现期望的结果。应理解,虽然描述了同步组合逻辑运算的一些说明性示例,但是公开的主题不限于此,并可包括异步运算,或者同步组合逻辑运算和异步运算的混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物(COMS)晶体管。在各种实施例中,这些COMS晶体管可被排列成执行逻辑运算的门;但是应理解,其它技术可被使用并在公开的主题的范围内。
根据公开的主题的信息处理系统600还可包括易失性存储器620(例如,随机存取存储器(RAM)等)。根据公开的主题的信息处理系统600还可包括非易失性存储器(例如,硬盘驱动器、光学存储器、NAND或闪存等)。在一些实施例中,易失性存储器620、非易失性存储器630或它们的组合或一部分可被称为“存储介质”。在各种实施例中,易失性存储器620和/或非易失性存储器630可被配置为以半永久的形式或基本上永久的形式存储数据。
在各种实施例中,信息处理系统600可包括一个或更多个网络接口640,所述网络接口640被配置为使信息处理系统600作为通信网络的一部分,且使信息处理系统600经由通信网络进行通信。Wi-Fi协议的示例可包括但不限于电气和电子工程师协会(IEEE)802.11g、IEEE 802.11n等。蜂窝协议的示例可包括但不限于IEEE 802.16m(也叫作高级无线MAN(城域网)、高级长期演进(LTE))、增强型数据速率GSM(全球移动通信系统)演进、演化高速分组接入(HSPA+)等。有线协议的示例可包括但不限于IEEE 802.3(也叫作以太网)、光线通道、电力线通信(例如,电力猫(HomePlug)、IEEE 1901等)等。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括用户接口单元650(例如,显示适配器、触感接口、人机接口装置等)。在各种实施例中,此用户接口单元650可被配置为接收来自用户的输入和/或向用户提供输出。其它类型的装置也可被用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;来自用户的输入可以以任何形式被接收,来自用户的输入包括声音、语音或触觉输入。
在各种实施例中,信息处理系统600可包括一个或更多个其它装置或硬件组件660(例如,显示器或监视器、键盘、鼠标、相机、指纹读取器、视频处理器等)。应理解,以上内容仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统600还可包括一个或更多个系统总线605。在这种实施例中,系统总线605可被配置为通信地连接处理器610、易失性存储器620、非易失性存储器630、网络接口640、用户接口单元650以及一个或更多个硬件组件660。由处理器610处理的数据或从非易失性存储器630的外部输入的数据可被存储在非易失性存储器630或易失性存储器620中。
在各种实施例中,信息处理器系统600可包括或执行一个或更多个软件组件670。在一些实施例中,软件组件670可包括操作系统(OS)和/或应用。在一些实施例中,OS可被配置为向应用提供一个或更多个服务,并管理或充当信息处理系统600的应用和各种硬件组件(例如,处理器610、网络接口640等)之间的媒介。在这种实施例中,信息处理系统600可包括可在本地安装并被配置为由处理器610直接执行并与OS直接交互的一个或更多个本机应用。在这种实施例中,本机应用可包括预编译的机器可执行代码。在一些实施例中,本机应用可包括被配置为将源代码或对象代码翻译为随后由处理器610执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虚拟执行器(VM)(例如,Java虚拟机、微软公共语言运行库等)。
可使用各种封装技术来封装以上描述的半导体器件。例如,可使用以下技术中的任意一种技术来封装根据公开的主题的原理构造的半导体装置:层叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装件(CSP)技术、塑料引线芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、裸片格栅封装(die in waffle pack)技术、裸片级晶片形式(die inwafer form)技术、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料公制方形扁平封装(PMQFP)技术塑料方形扁平封装(PQFP)技术、小型外壳封装(SOIC)技术、收缩小型外壳封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄型方形扁平封装(TQFP)技术、系统级封装件(SIP)技术、多芯片封装件(MCP)技术、晶片级制造封装件(WFP)技术和晶片级加工的堆叠式封装件(WSP)技术或者本领域技术人员将已知的其它技术。
方法步骤可被一个或更多个可编程处理器执行,其中,一个或更多个可编程处理器执行计算机程序以通过对输入数据进行操作并产生输出来执行功能。方法步骤也可被专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)))执行,并且设备可被实现为专用逻辑电路。
在各种实施例中,计算机可读介质可包括指令,其中,当所述指令被执行时,促使装置执行方法步骤中的至少一部分。在各种实施例中,计算机可读介质可被包括在磁介质、光学介质、其它介质或它们的组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器等)中。在这种实施例中,计算机可读介质可以是有形且非暂时性体现制造品。
虽然已参照示例实施例描述了公开的主题的原理,但是本领域的技术人员将明白,可在不脱离公开构思的精神和范围的情况下,对其作出各种改变和修改。因此,应理解,以上实施例不是限制性的,而仅是说明性的。因此,公开构思的范围通过对权利要求及其等同物的最广泛的可容许的解释被确定,并且不应受以上描述的约束或限制。因此,应理解,权利要求意图覆盖落在实施例的范围内的所有这种修改和改变。
Claims (18)
1.一种用于调整预取的程度的方法,包括:
监视与数据流相关联的多个预取高速缓存请求;
评估所述多个预取高速缓存请求的准确性;
至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量,
其中,监视的步骤包括:
经由至少两个预取请求窗口来跟踪所述多个预取高速缓存请求,其中,每个预取请求窗口包括与比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量相关联的窗口尺寸。
2.如权利要求1所述的方法,其中,监视的步骤包括:
当所述数据流做出对数据的实际需求时,确定对数据的实际需求是否与所述至少两个预取请求窗口中的一个预取请求窗口内的预取高速缓存请求匹配,
其中,评估的步骤包括:
当所述至少两个预取请求窗口中的第一窗口内的所有预取高速缓存请求与对数据的实际需求匹配,或者对数据的实际需求与所述至少两个预取请求窗口中的第二窗口内的预取高速缓存请求匹配时,评估与第一窗口相关联的预取高速缓存请求的准确性。
3.如权利要求2所述的方法,其中,调整的步骤包括:
将第二窗口的内容移动到第一窗口,使得第二窗口不再与任何预取高速缓存请求相关联;
确定比所述数据流对数据的当前实际需求多且能够允许被预取的数据的新的最大量;
将所述至少两个预取请求窗口的窗口尺寸调整为比所述数据流对数据的当前实际需求多且能够允许被预取的数据的所述新的最大量。
4.如权利要求1所述的方法,其中,调整的步骤包括:
如果所述准确性低于预定义的阈值,则减小比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量;
如果所述准确性高于预定义的阈值,则增加比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量;
否则不调整比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量。
5.如权利要求1所述的方法,其中,调整的步骤包括:
如果与所述数据流相关联的预取高速缓存请求的累积的不准确性超过预定义的阈值,则停止针对所述数据流的预取数据。
6.如权利要求1所述的方法,其中,比所述数据流的数据的当前实际需求多且允许被预取的数据的最大量通过置信状态来指示,
其中,调整的步骤包括:
动态地调整与所述数据流相关联的置信状态。
7.如权利要求6所述的方法,其中,调整置信状态的步骤包括:
将所述数据流与多个预定义的置信状态之一相关联;
其中,每个置信状态与以下项相关联:预取高速缓存请求的准确性的最低等级、预取高速缓存请求的准确性的最高等级、以及比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量。
8.如权利要求1所述的方法,其中,评估所述多个预取高速缓存请求的准确性的步骤包括:利用基于事件的方法,来评估所述多个预取高速缓存请求的准确性。
9.一种用于调整预取的程度的设备,包括:
预取确认器,被配置为:
监视与数据流相关联的多个预取高速缓存请求,
评估所述多个预取高速缓存请求的准确性,
至少部分基于所述准确性,调整比所述数据流对数据的当前实际需求多的且能够允许被预取的数据的最大量;
存储器,被配置为:
存储第一数据结构,其中,第一数据结构指示准确性;
存储第二数据结构,其中,第二数据结构指示比所述数据流的对数据的当前实际需求多且允许被预取的数据的最大量,
其中,第一数据结构包括至少两个预取请求窗口,其中,每个预取请求窗口包括具有与比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量相关联的窗口尺寸的数据结构。
10.如权利要求9所述的设备,其中,预取确认器被配置为:
当数据流做出对数据的实际需求时,确定对数据的实际需求是否与所述至少两个预取请求窗口内表示的预取高速缓存请求匹配;
当所述至少两个预取请求窗口中的第一窗口内的所有预取高速缓存请求与对数据的各个实际需求匹配,或者对数据的实际需求与所述至少两个预取请求窗口中的第二窗口内的预取高速缓存请求匹配时,评估与第一窗口相关联的预取高速缓存请求的准确性。
11.如权利要求10所述的设备,其中,存储器被配置为:
将第二窗口的内容移动到第一窗口,使得第二窗口不再与任何预取高速缓存请求相关联;
确定比所述数据流对数据的当前实际需求多且能够允许被预取的数据的新的最大量;
将所述至少两个预取请求窗口的窗口尺寸调整为比所述数据流对数据的当前实际需求多且能够允许被预取的数据的所述新的最大量。
12.如权利要求9所述的设备,其中,预取确认器被配置为:
如果所述准确性低于预定义的阈值,则减小比所述数据流的对数据的当前实际需求多的能够允许被预取的数据的最大量,
如果所述准确性高于预定义的阈值,则增加比所述数据流的对数据的当前实际需求多的能够允许被预取的数据的最大量,
否则不调整比所述数据流的对数据的当前实际需求多的能够允许被预取的数据的最大量。
13.如权利要求9所述的设备,其中,预取确认器被配置为:
如果与所述数据流相关联的预取高速缓存请求的累积的不准确性超过预定义的阈值,则指示预取单元停止针对数据流的预取数据。
14.如权利要求9所述的设备,其中,比所述数据流的数据的当前实际需求多且允许被预取的数据的最大量通过置信状态来指示;
其中,预取确认器被配置为:调整与数据流相关联的置信状态。
15.如权利要求14所述的设备,其中,预取确认器被配置为:
将所述数据流与多个预定义的置信状态之一相关联;
其中,每个置信状态与以下项相关联:预取高速缓存请求的准确性的最低等级、预取高速缓存请求的准确性的最高等级、以及比数据流对数据的当前实际需求多且能够允许被预取的数据的最大量。
16.一种预取单元,包括:
模式表,包括与数据流相关联的模式数据结构;
自适应预取表,包括自适应预取数据结构,其中,所述自适应预取数据结构与所述数据流相关联并指示比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量;
发射队列,被配置为发出用于针对所述数据流预取数据的多个预取高速缓存请求;
其中,预取单元被配置为:
评估所述多个预取高速缓存请求的准确性,
至少部分基于所述准确性,调整所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量,
其中,自适应预取表包括至少两个预取请求窗口,
其中,每个预取请求窗口包括具有与比所述数据流对数据的当前实际需求多且能够允许被预取的数据的最大量相关联的窗口尺寸。
17.如权利要求16所述的预取单元,
其中,预取单元被配置为:
当所述数据流做出对数据的实际需求时,确定对数据的实际需求是否与所述至少两个预取请求窗口内表示的预取高速缓存请求匹配;
当被预定义的事件触发时,评估与所述至少两个预取请求窗口中的第一窗口相关联的预取高速缓存请求的准确性。
18.如权利要求16所述的预取单元,其中,预取单元被配置为:将所述数据流与多个预定义的置信状态之一相关联,并响应于触发事件,将所述数据流与所述多个预定义的置信状态中的另一个相关联;
其中,每个置信状态与以下项相关联:预取高速缓存请求的准确性的最低等级、预取高速缓存请求的准确性的最高等级、以及比数据流对数据的当前实际需求多且允许被预取的数据的最大量。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462026004P | 2014-07-17 | 2014-07-17 | |
US62/026,004 | 2014-07-17 | ||
US14/730,217 | 2015-06-03 | ||
US14/730,217 US9665491B2 (en) | 2014-07-17 | 2015-06-03 | Adaptive mechanism to tune the degree of pre-fetches streams |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279105A CN105279105A (zh) | 2016-01-27 |
CN105279105B true CN105279105B (zh) | 2020-05-15 |
Family
ID=55074691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510425507.6A Active CN105279105B (zh) | 2014-07-17 | 2015-07-17 | 用于调整预取流的程度的自适应机制 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9665491B2 (zh) |
KR (1) | KR102424121B1 (zh) |
CN (1) | CN105279105B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9465744B2 (en) * | 2014-07-29 | 2016-10-11 | International Business Machines Corporation | Data prefetch ramp implemenation based on memory utilization |
US11169925B2 (en) * | 2015-08-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds |
US10402563B2 (en) * | 2016-02-11 | 2019-09-03 | Morphisec Information Security Ltd. | Automated classification of exploits based on runtime environmental features |
CN107783911B (zh) * | 2016-08-31 | 2021-06-08 | 华为技术有限公司 | 一种数据过滤方法及终端设备 |
US9946654B2 (en) * | 2016-09-09 | 2018-04-17 | Cray Inc. | High-bandwidth prefetcher for high-bandwidth memory |
US10417235B2 (en) | 2017-02-03 | 2019-09-17 | International Business Machines Corporation | Window management in a stream computing environment |
US10540287B2 (en) * | 2017-05-12 | 2020-01-21 | Samsung Electronics Co., Ltd | Spatial memory streaming confidence mechanism |
US10387320B2 (en) * | 2017-05-12 | 2019-08-20 | Samsung Electronics Co., Ltd. | Integrated confirmation queues |
US10303379B2 (en) * | 2017-09-25 | 2019-05-28 | International Business Machines Corporation | Efficient adaptive read-ahead in log structured storage |
US10621099B2 (en) * | 2018-06-29 | 2020-04-14 | Intel Corporation | Apparatus, method, and system for enhanced data prefetching based on non-uniform memory access (NUMA) characteristics |
GB2575292B (en) * | 2018-07-04 | 2020-07-08 | Graphcore Ltd | Code Compilation for Scaling Accelerators |
US11294595B2 (en) | 2018-12-18 | 2022-04-05 | Western Digital Technologies, Inc. | Adaptive-feedback-based read-look-ahead management system and method |
US11630670B2 (en) | 2021-07-21 | 2023-04-18 | Apple Inc. | Multi-table signature prefetch |
TW202345004A (zh) * | 2021-12-31 | 2023-11-16 | 美商賽發馥股份有限公司 | 具亂序過濾預取器訓練佇列之預取器 |
CN115883910A (zh) * | 2022-12-27 | 2023-03-31 | 天翼云科技有限公司 | 一种用于分片视频加速的渐进式弹性缓存方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570887A (zh) * | 2003-10-07 | 2005-01-26 | 威盛电子股份有限公司 | 预取数据控制器及其方法 |
US7836259B1 (en) * | 2004-04-02 | 2010-11-16 | Advanced Micro Devices, Inc. | Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy |
CN102202050A (zh) * | 2010-03-26 | 2011-09-28 | 微软公司 | 预期响应预高速缓存 |
CN102508638A (zh) * | 2011-09-27 | 2012-06-20 | 华为技术有限公司 | 用于非一致性内存访问的数据预取方法和装置 |
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060248280A1 (en) * | 2005-05-02 | 2006-11-02 | Al-Sukhni Hassan F | Prefetch address generation implementing multiple confidence levels |
US8285941B2 (en) * | 2008-02-25 | 2012-10-09 | International Business Machines Corporation | Enhancing timeliness of cache prefetching |
US8677049B2 (en) * | 2009-04-13 | 2014-03-18 | Advanced Micro Devices, Inc. | Region prefetcher and methods thereof |
US8166251B2 (en) * | 2009-04-20 | 2012-04-24 | Oracle America, Inc. | Data prefetcher that adjusts prefetch stream length based on confidence |
US9304927B2 (en) * | 2012-08-27 | 2016-04-05 | Oracle International Corporation | Adaptive stride prefetcher |
US9304919B2 (en) * | 2013-05-31 | 2016-04-05 | Advanced Micro Devices, Inc. | Detecting multiple stride sequences for prefetching |
US10671535B2 (en) * | 2013-07-17 | 2020-06-02 | Advanced Micro Devices, Inc. | Stride prefetching across memory pages |
-
2015
- 2015-06-03 US US14/730,217 patent/US9665491B2/en active Active
- 2015-07-15 KR KR1020150100416A patent/KR102424121B1/ko active IP Right Grant
- 2015-07-17 CN CN201510425507.6A patent/CN105279105B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1570887A (zh) * | 2003-10-07 | 2005-01-26 | 威盛电子股份有限公司 | 预取数据控制器及其方法 |
US7836259B1 (en) * | 2004-04-02 | 2010-11-16 | Advanced Micro Devices, Inc. | Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy |
CN102202050A (zh) * | 2010-03-26 | 2011-09-28 | 微软公司 | 预期响应预高速缓存 |
CN102508638A (zh) * | 2011-09-27 | 2012-06-20 | 华为技术有限公司 | 用于非一致性内存访问的数据预取方法和装置 |
CN103235764A (zh) * | 2013-04-11 | 2013-08-07 | 浙江大学 | 线程感知多核数据预取自调方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105279105A (zh) | 2016-01-27 |
US9665491B2 (en) | 2017-05-30 |
KR102424121B1 (ko) | 2022-07-22 |
US20160019155A1 (en) | 2016-01-21 |
KR20160010341A (ko) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279105B (zh) | 用于调整预取流的程度的自适应机制 | |
TWI791505B (zh) | 空間記憶體串流預取引擎的設備與方法、製造及測試方法 | |
US9280474B2 (en) | Adaptive data prefetching | |
US8683129B2 (en) | Using speculative cache requests to reduce cache miss delays | |
US9886385B1 (en) | Content-directed prefetch circuit with quality filtering | |
KR102676704B1 (ko) | 메모리 시스템에 데이터 스트림을 쓰기 위한 방법, 장치 및 시스템 온 칩 | |
TWI774703B (zh) | 偵測與處理儲存串流的系統與方法 | |
KR102513446B1 (ko) | 집적된 컨펌 대기열 회로를 포함하는 장치 및 그것의 동작 방법 | |
US20190065375A1 (en) | Intelligent data prefetching using address delta prediction | |
US20160117250A1 (en) | Apparatus and Method of Throttling Hardware Pre-fetch | |
US8832414B2 (en) | Dynamically determining the profitability of direct fetching in a multicore architecture | |
US20150268961A1 (en) | Decoupling l2 btb from l2 cache to accelerate search for miss after miss | |
WO2018028629A1 (en) | Pattern based preload engine | |
US9367466B2 (en) | Conditional prefetching | |
US20170060762A1 (en) | Expedited servicing of store operations in a data processing system | |
US20170060759A1 (en) | Expedited servicing of store operations in a data processing system | |
US20180121209A1 (en) | Adaptive mechanisms to improve boot performance | |
US20240329999A1 (en) | Instruction prefetch throttling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |