CN109446112A - 用于预取流量的改进控制的方法和系统 - Google Patents

用于预取流量的改进控制的方法和系统 Download PDF

Info

Publication number
CN109446112A
CN109446112A CN201811197559.2A CN201811197559A CN109446112A CN 109446112 A CN109446112 A CN 109446112A CN 201811197559 A CN201811197559 A CN 201811197559A CN 109446112 A CN109446112 A CN 109446112A
Authority
CN
China
Prior art keywords
request
prefetching
prefetch
memory hierarchy
identifier
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.)
Granted
Application number
CN201811197559.2A
Other languages
English (en)
Other versions
CN109446112B (zh
Inventor
J·梅雷迪思
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.)
MIPS Tech LLC
Original Assignee
MIPS Tech LLC
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 MIPS Tech LLC filed Critical MIPS Tech LLC
Publication of CN109446112A publication Critical patent/CN109446112A/zh
Application granted granted Critical
Publication of CN109446112B publication Critical patent/CN109446112B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/782Hierarchical allocation of resources, e.g. involving a hierarchy of local and centralised entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

本申请涉及用于预取流量的改进控制的方法和系统,其中描述了预取流量的改进控制,具体描述了用于改进控制由处理器生成的流量的方法及系统。在一个实施例中,当设备生成为来自存储器层级的一条数据或指令生成预取请求时,设备包括在请求中的预取标识符。此标识符将请求标记为预取请求而不是非预取请求,例如时间敏感型请求。基于该标识符,当预取流量没有被存储器层级完成时,存储器层级然后可以在高流量时发布中止响应,这抑制了预取流量。在接收到中止响应时,设备删除预取请求的任何记录的至少一部分,并且如果后来需要数据/指令,则以比原来的预取请求更高的优先级发布新的请求。

Description

用于预取流量的改进控制的方法和系统
本申请是申请日为2014年1月15日,申请号为201410016939.7,发明名称为“用于预取流量的改进控制的方法和系统”(原名称为“预取流量的改进控制”)的申请的分案申请。
技术领域
本发明总体上涉及控制流量,并且更具体地,本发明涉及用于改进控制由处理器生成的流量的方法和系统。
背景技术
为了减少与访问存储在主存储器中的数据相关联的延迟,处理器通常使用存储器层级,其包括一个或多个缓存。通常有两个或三个级别的缓存,记为L1、L2和L3,并且在一些示例中,前两个缓存(L1和L2)可以是片上缓存,其通常以SRAM(静态随机存取存储器)实现,而第三级缓存(L3)可以是片外缓存。在其他的示例中,例如在片上系统(SoC)中,所有的存储器可在同一块硅片上实现。缓存比以DRAM实现的主存储器小,但涉及访问缓存的延迟比主存储器短得多,并且在层级中的较下层中变得更短(L1缓存被认为是最低级别缓存)。由于延迟与缓存的大小至少近似有关,所以更低级别的缓存(例如L1)通常比更高级别的缓存(例如L2)更小。
当处理器,或者更具体地,处理器运行的MEM阶段,访问一条数据或指令时,条数据或指令从层级中可用的最低一级被访问(最低一级是最接近处理器的一级)。例如,将在L1缓存中执行查找,如果项目(即数据/指令)在L1缓存中,这被称为缓存命中。然而,如果项目不在L1缓存中,这是缓存未中,并接着检查层级中的下一级别直到找到项目(例如L2缓存,如果项目也不在L2缓存中,则其次是L3缓存)。在缓存未中的情况下,项目被带入缓存。
由于在最低级的缓存(例如L1缓存)中缓存未中引起的存储器层级的遍历,引入了延迟,为了克服这一点,处理器可以在需要数据和/或指令之前取得它们,这个过程被称为“预取”。预取可以针对以下项目(即数据/指令):处理器将来肯定会需要的项目,如果程序中采用特定分支则处理器可能需要的项目,和/或基于替代的预测方法而被预取的项目。分支预测可以用来预测可能会采用哪些分支,减少浪费的预取量(即,预取了项目,但实际上并没有被处理器所使用)。
例如,乱序处理器使用分支预测和投机预取以允许在预测的分支中的指令被乱序地投机执行。
下面描述的实施例不限于解决已知的管理预取流量的方法的缺点的任何或所有实现。
发明内容
以简化的形式提供本发明内容以介绍概念的选择,其将会在下面的具体实施方式中进一步描述。该发明内容并不意图标识所要求保护主题的敏感特征或重要特征,也不是为了用于帮助确定所要求保护的主题的范围。
描述了用于改进控制由处理器生成的流量的方法和系统。在一个实施例中,当设备为来自存储器层级的一条数据或指令生成预取请求时,设备包括在请求中的预取标识符。这个标识符将请求标记为预取请求而不是非预取请求,例如时间敏感型请求。基于该标识符,在预取流量没有被存储器层级完成时,存储器层级然后可以在高流量时发布抑制预取流量的中止响应。在接收到中止响应时,设备删除预取请求的任何记录的至少一部分,并且如果后来需要数据/指令,则以比原来的预取请求更高的优先级发布新的请求。
第一方面提供了控制由处理器生成的流量的方法,所述方法包括:将预取标识符附加到预取请求,预取请求从存储器层级请求项目,其中项目包括一条数据或指令;将预取请求从处理器传输到存储器层级;以及响应于接收对应于预取请求的中止响应,移除关于预取请求的本地存储的至少一部分数据。
第二方面提供了控制由处理器生成的流量的方法,所述方法包括:在存储器层级中的节点处接收来自处理器的预取请求,预取请求包括预取标识符,并且请求存储在存储器层级中的项目,其中所述项目包括一条数据或指令;基于预取标识符和处在存储器层级的一部分内的流量级别的评估,确定是否生成对应于预取请求的中止响应;如果评估确定将生成中止响应,则生成对应于预取请求的中止响应;并且将中止响应传输到处理器。
第三方面提供了一种系统,包括:多个设备,其被安排用来生成来自存储器层级的项目的请求,其中项目包括一条数据或指令;存储器层级的至少一部分;以及连接多个设备和存储器层级的至少一条总线,其中多个设备中的至少一个包括:第一硬件逻辑,其被安排用来将预取标识符附加到预取请求,预取请求从存储器层级请求项目并将预取请求从处理器传输到存储器层级;以及第二硬件逻辑,其被安排用来响应于接收对应于预取请求的中止响应,移除关于预取请求的本地存储的至少一部分数据。
第四方面提供了重置一部分系统的方法,该方法包括:在存储器层级中生成中止所有响应;并且响应于在处理器处接收中止所有响应,移除本地存储的、与先前发送到所述存储器层级的存储在所述存储器层级的数据项目的任何未完成的请求有关的至少一部分数据。
第五方面提供了一种基本上如参考附图2-5中任意一个描述的方法。
第六方面提供了基本上如参考附图1描述的一种系统。
进一步地,还提供了以下内容:
1)一种控制由处理器生成的流量的方法,所述方法包括:在所述处理器处将预取标识符附加到预取请求,以将所述预取请求标记为预取请求而不是非预取请求,所述预取请求从存储器层级请求项目,其中所述项目包括一条数据或指令;将所述预取请求从所述处理器传输到所述存储器层级;以及响应于在所述处理器处接收对应于由所述存储器层级的节点基于所述预取标识符生成的所述预取请求的中止响应,移除与所述预取请求相关的本地存储到所述处理器的至少一部分数据。
2)根据项1)所述的方法,进一步包括:传输对于所述项目的新请求到所述存储器层级,其中所述新请求具有比所述预取请求更高的优先级。
3)根据项1)或2)所述的方法,其中移除与所述预取请求相关的本地存储的至少一部分数据包括:移除本地存储的所述预取请求的任何记录。
4)根据项1)或2)所述的方法,进一步包括:响应于接收中止所有响应,移除先前传输到所述存储器层级的任何未完成的请求的任何记录,包括先前传输到所述存储器层级的任何未完成的预取请求和任何时间敏感型请求。
5)根据项1)或2)所述的方法,其中将预取标识符附加到预取请求包括:生成所述预取请求;以及将预取标识符插入到所述预取请求,其中所述预取标识符是根据所述预取请求的类型选择的。
6)根据项5)所述的方法,其中所述预取请求的类型包括下面中的一个:推测性的预取请求和肯定性的预取请求。
7)根据项1)或2)所述的方法,还包括,在所述存储器层级中的节点处:从所述处理器接收所述预取请求,所述预取请求包括所述预取标识符;基于所述预取标识符和所述存储器层级的一部分内的流量级别的评估,确定是否生成对应于所述预取请求的中止响应;以及如果所述评估确定将生成中止响应,则生成对应于所述预取请求的中止响应。
8)根据项7)所述的方法,其中在所述存储器层级的一部分内的流量级别的评估包括:使流量级别的测量与一个或多个阈值进行比较。
9)根据项7)所述的方法,其中确定是否生成对应于所述预取请求的中止响应包括:如果预取标识符包括在所述请求内,并且如果流量级别超过预先定义的级别,则确定将生成中止响应;以及如果没有预取标识符包括在所述请求内,和/或如果流量级别不超过所述预先定义的级别,则确定将不生成中止响应。
10)根据项7)所述的方法,其中确定是否生成对应于所述预取请求的中止响应包括:如果所述预取标识符满足过滤标准并且如果流量级别超过预先定义的级别,则确定将生成中止响应;以及如果没有预取标识符包括在所述请求内,如果所述预取标识符不满足所述过滤标准和/或如果流量级别不超过所述预先定义的级别,则确定将不生成中止响应。
11)根据项10)所述的方法,进一步包括:在所述存储器层级的一部分内,基于流量级别的评估而动态更新所述过滤标准。
12)一种系统,包括:多个设备,其被安排用来生成对于来自存储器层级的项目的请求,其中项目包括一条数据或指令;所述存储器层级的至少一部分;以及连接所述多个设备和所述存储器层级的至少一条总线,其中所述多个设备中的至少一个包括:第一硬件逻辑,其被安排用来将预取标识符附加到预取请求,以将所述预取请求标记为预取请求而不是非预取请求,所述预取请求从存储器层级请求项目并且将所述预取请求从所述设备传输到所述存储器层级;以及第二硬件逻辑,其被安排用来响应于接收与由所述存储器层级的节点基于所述预取标识符生成的所述预取请求对应的中止响应,移除与所述预取请求相关的本地存储到所述设备的至少一部分数据。
13)根据项12)所述的系统,其中所述系统是片上系统。
14)一种重置一部分系统的方法,所述方法包括:
在存储器层级中生成中止所有响应;以及
响应于在处理器处接收所述中止所有响应,移除本地存储到处理器的、与先前发送到所述存储器层级的存储在所述存储器层级中的数据项目的任何未完成的请求有关的至少一部分数据。
这里描述的方法可以由配置了软件的计算机执行,所述软件以机器可读形式存储在有形存储介质中,例如当程序运行在计算机上时和当计算机程序可以实施在计算机可读介质上时,为包括用于配置计算机来执行描述方法的组成部分的计算机程序代码的计算机程序形式,或者为包括适于执行在这里描述的任何方法的所有步骤的计算机程序代码模块的计算机程序形式。有形(或非瞬态)存储介质的示例包括磁盘、拇指驱动器、存储器卡等,并不包括传播信号。软件可以适应于在并行处理器或串行处理器上执行,从而可以以任何合适的顺序或同时进行所述方法步骤。
这认可了:固件和软件可以被分别使用并且是有价值的。它的目的是包含运行于或控制“哑的”或标准硬件的软件,以实现所需的功能。其还意图包含“描述”或定义硬件配置的软件,例如HDL(硬件描述语言)软件,如硅芯片设计所使用的,或用于配置通用可编程芯片,以实现所需的功能。
优选的特征可以在合适处进行组合,这对技术人员来说是显而易见的,并且可与发明的任何方面进行组合。
附图说明
本发明的实施例将会以示例的方式并参考以下附图描述,其中:
图1是系统的示意图;
图2是控制预取流量的示例方法的流程图;
图3是控制预取流量的另一个示例方法的流程图;
图4是显示了权利要求1的系统中的示例消息流示意图;和
图5是显示了控制流量的示例方法的示意图。
贯穿各图使用共同的参考数字表示相似的特征。
具体实施方式
以下仅仅以示例的方式描述本发明的实施例。这些示例代表了将本发明付诸实践的对于申请人来讲已知的最佳方式,但是它们并不是唯一的实现方法。描述阐明了示例的功能和构建和操作示例的步骤的顺序。然而,相同或同等的功能和顺序可由不同的示例来完成。
下面的描述关于控制在处理器和存储器之间和/或在存储器层级之间的流量的改进方法。具体地讲,描述了控制预取流量的方法。也描述了可以实现一些或全部方法步骤的硬件和/或软件。
如上所述,处理器可以从关联的存储器层级预取数据和/或指令,以减少与遍历存储器层级(例如,在最高级缓存的缓存未中的情况下)相关联的延迟,以提高效率(例如,在乱序处理器的情况下)或为其他原因。预取的项目(即数据/指令)在未来的某时肯定会被处理器请求使用,对这样的项目(即数据和/或指令)的请求可以称为“肯定性预取请求”。或者,预取的项目可以是推测性的,就是有可能不会被处理器所请求。这种推测性的预取请求通常发生在程序有分支的情况,并且尽管分支预测可用于识别程序将采用的最有可能的路径,但也不能保证会采用特定分支。因此,有可能在分支点之后为指令预取的任何数据以及在分支点之后发生的取得的任何指令将不会被使用。当这出现时,请求可以被称作“错过的预测预取请求”。
在预取的项目(即数据和/或指令)中,处理器产生预取流量,包括对多条数据和/或指令的预取请求。然后,包含来自存储器层级的请求项目的流量和对应的响应在存储器层级内并且在处理器和存储器层级之间与其他流量(如非预取请求及其关联的响应)竞争总线容量(例如,带宽)的份额。处理器所使用的预取生成流量正时的时间转换(即,流量比其他情况下更早);然而,错过的预测预取请求会造成没有好处的额外流量(超出以下可能性:预测成功并且预取请求不是错过的预测预取请求)。
在一个系统(例如片上系统,SoC)内,可能有许多的设备产生预取请求。这些设备可以是访问存储器层级的任何部件,例如处理器(例如物理处理器,如CPU或GPU,或在多线程处理器内的虚拟处理器)或处理器的子部件(例如虚拟线程,执行管线或ALU)。在系统内,也可能有设备不能忍受延迟,并生成数据和/或指令的时间敏感型(time-critical)请求,这些可以称为“实时设备”或“敏感设备”。这些时间敏感型请求是如果被延迟则会影响系统操作的请求,并且可能例如涉及音频、图形或控制处理,其中延迟可能导致一段无声或空白或冻结显示(并因此会被用户发现)。某些设备可能生成预取请求和时间敏感型请求两者,而其他设备(例如在SoC内)可能仅仅生成时间敏感型请求。
当系统包括一个或多个生成预取请求的设备,并且至少一个设备生成时间敏感型请求时,可能会有时间段内所有或部分系统内的总流量太高,无法支撑所有的时间敏感型请求,所以一些流量不得不被拖延或停止以操作那些对系统操作直接敏感的请求。将可以领会,虽然这里的描述把请求描述为预取或事件敏感的,但可能对非预取请求的时间敏感性进行变化;然而所有非预取请求都需完成。
现有的解决方案拖延来自被视为低优先级的设备的所有流量,这暂时节流它的流量,支持另一设备的流量。然而,这将会影响从拖延设备传递的可能是高优先级的后续请求,并且没有方法促进来自拖延设备的更敏感请求。此外,可能没有到设备的反馈机制,所以它不知道流量被拖延,或者反馈机制可能是响应缓慢(例如,总线可以检测到的服务不好,但不知道为什么)。
在一些现有的解决方案中,预取生成是通过限制可以装入预取流量的时隙(slot)的数量来节流的。然而,在这样的解决方案中,这仅仅是在减少的流量流已经传播回设备之后实现,因此预取生成的节流发生在总流量太高的时间点之后。
根据这里描述的方法,预取标识符被附加到每个预取请求,其标识了特定请求是预取请求。如以下更详细的描述,可能有不止一个种类(或类别)的预取请求,例如用于区分推测性预取和肯定性预取,所以可能使用了不止一种类型的预取标识符。
在高流量时,这样总线(或系统的其他部分)的容量被限制到敏感操作可能会受到不利影响的点,存储器层级发布中止消息来响应预取请求(由预取标识符标识)的接收。当生成了中止消息时,预取请求没有被存储器层级完成,中止消息通知发布设备(即生成预取请求的设备):这已经发生了。设备本应请求它试图预取的项目(即数据/指令),然后设备可以以更高级的优先级为同一项目发布新请求(如非预取请求)。这增加了设备将会接收到请求的项目(并且请求将不会导致进一步的中止响应)的机会。发布的新请求既不包括预取标识符(此时它是非预取请求)也不将包括与原来的预取请求不同的标识符(例如,这表示更高级别的优先级,从而促进请求)。
使用这种技术,在(例如被敏感操作)大量利用带宽期间,预取流量会被抑制。设备不需要修改它们的预取生成算法,并且在非敏感的请求可能会被拖延的系统中不需要大量的存储。此外,设备将不会有时间敏感型请求被阻挡在拖延的预取请求之后,因为在高流量时只有预取请求将会被过滤出,设备可以继续发布请求(预取或非预取)到系统。所述方法可以在存储器层级中的任何地方实现,并且可以在层级内多个点独立地实现,以能够定位流量减少(例如,解决层级内的特定瓶颈,因为层级中可能有经历高流量的独立时间段的点)。技术以非常动态的方式运行,并且可以响应于短时间段的高流量,而没有任何明显的时间滞后。所述方法也可用于与其他流量仲裁技术相结合。
图1显示了系统100(例如SoC)的示意图,其包括经由一个或多个总线110连接到存储器层级108的多个设备102、104、106。设备102、104、106中每一个能够从存储器层级108经过总线110发布数据/指令请求,这些请求可以包括预取请求和/或时间敏感型请求。设备102、104、106可以例如包括处理器(例如物理或虚拟处理器)或处理器的子部件(例如,虚拟线程或ALU),并且设备102、104、106可以都是同一类型的设备,或者它们可以是不同类型的设备(例如,一些设备只发布时间敏感型请求)。存储器层级108包括多个级别的存储器,在这个示例中包括三个级别的缓存L1 112、L2 114和L3 116。一些缓存可以在两个或多个设备之间共享,而其他缓存可以分别提供给每个设备。应当领会,当系统100是SoC时,存储器层级108内的一些级别可以在片外实现或者存储器层级108的所有级别可以在片上实现。
可以参考图2描述图1的系统100的操作,其中显示了控制预取流量的示例方法的流程图。当设备102、104、106产生预取请求(例如,使用标准技术)时,预取标识符包含在请求中(块202),例如,预取标识符可以被编码在请求内。包括预取标识符的这一请求随后例如通过总线110被传输到存储器层级108(块204)。
响应于接收请求(块206),存储器层级108根据流量的当前级别进行两个动作之一(块210或212)。流量级别可以在存储器层级108内或者在系统100内在任意点被评估(在块208),并且图2的方法可以在系统中或者存储器层级108中在不止一个点实现(例如在图1显示的两个或更多个节点A、B和C),流量级别可以在决策点(例如在节点A/B/C)处被本地评估。
如果流量的当前级别不是太高(例如没有高至影响时间敏感型操作),则请求由存储器层级实现(块208的“否”后跟随块210)。然而,如果流量的当前级别被确定为太高(块208的“是”),则存储器层级108生成中止响应(块212)。该中止响应与接收到的请求直接相关(在块206中)并被传输回生成那个请求的设备(块214)。在一个示例中,中止响应包含ID,该ID匹配(或对应于)请求的ID(在块206中接收到)。当生成中止响应时(在块212),接收到的请求(在块206中)没有被完成,也不存储起来以供后续处理(同请求被拖延的情况)。预取请求可以因此被描述为被系统过滤出。
由存储器层级108生成的中止响应(在块212)通知发起设备:它发布的预取请求将不会被完成。当设备接收到中止响应时(块216),该设备将会移除至少一些本地存储的与预取请求相关的数据(块218),在一些示例中,可以移除所有与预取请求相关的数据。该与预取请求相关的数据可以是例如与请求的一条数据或指令的地址、请求数据/指令所存储的位置等相关的信息。
当发现设备要求在原来的预取消息中所请求的项目(即,一条数据或指令)时(块220的“是”,即原来的请求不是错过的预测预取),设备为项目发布新请求(块222),这一新请求被传输到存储器层级108(例如,如上述)。这个新请求例如可以是时间敏感型请求或其他形式的非预取请求,在这种情况下,新请求(在块222中发布的)将具有与原来的请求(在块202中生成的)不同类型的标识符或不包括任何标识符。
在一些示例中,新请求(在块222中发布)可以是比原来的请求(在块202中生成的)具有更高优先级的预取请求,在这种情况下,然后方法重复(如虚线箭头指示的从块222到块204)。
在实现块218-220时,设备可以不需要任何额外的逻辑以使得生成新请求(在块220),这是因为与预取相关的数据已被移除,就像是原来的预取没有发生过。然后可以使用设备所需的用于生成项目(即数据/指令)请求的现有机制来生成新请求。
可以领会,尽管图2示出了确定是否需要请求的项目(在块220)直到流程图的结束,但该确定实际上可以发生在预取请求生成(在块202)之后的任何点;然而,不会触发对项目的新请求的发布(块222),直到已经接收到中止响应(在块216)之后。当确定是否需要请求的项目(在块220)发生地较早时,现有的逻辑可以被用来存储指示:该数据是主动要求的,但可以提供额外的逻辑以生成新请求(在块222)。
包含于预取请求中(在块202)的标识符可以例如在包括与请求一同传递的一组编码的数据位的“边带标签”中实现。或者预取标识符可以以任何方式在请求内编码。
在图2显示的示例中,存在单一类型的标识符,其表示请求是预取请求。在一些示例中,可能有不止一种类型的预取标识符,其表示预取请求的类型或类别。在示例中,可以有两类预取请求:肯定性预取请求和推测性预取请求,因此,有两种类型的预取标识符(每类预取请求对应一个)。在另一示例中,可能有多于两类的预取请求,推测性的预取请求根据请求的项目(即数据/指令)将被处理器所使用的可能性(如,根据分支预测或任何其他使用的预测的可信度)而被划分为不同类别。在这样的示例中,可能有两类推测性预取请求:高可信度的预取请求和低可信度的预取请求。在进一步的示例中,预取标识符可以包括分支预测的可信度测量,在这种情况下,一个或多个阈值可以被用来确定哪些预取请求被过滤出。
图3显示了控制预取流量的另一示例方法的流程图,其也可以在图1显示的系统100中实现。该方法是图2所示方法的一种变型,相同的元件具有相同的参考数字。
如上所述,设备生成的预取请求包括预取标识符(块202);然而在这个示例方法中,可以使用不止一种类型的预取标识符,因此生成预取请求(块302),并且适当类型的预取标识符包括在请求中(块304)。如上所述,预取标识符可以被编码在边带标签内,或者另一种方法可以用来编码预取请求内的预取标识符。
在图3显示的方法中,基于包括在每个预取请求内的预取标识符,存储器层级再次过滤预取流量;然而在这种方法中,所有的预取流量可能被过滤出(通过块212中发布中止响应)或者只有一些预取流量(即不是所有的预取流量)可以被过滤出。
在接收到预取请求(在块206)时,如果总流量不是太高(在块208的“否”),则完成请求(块210)。然而,如果总流量太高(在块208的“是”),则发生额外的过滤步骤(块306),这样,仅当预取标识符匹配定义的标准(在块306中的“是”)时,会为预取响应发布中止响应(在块212)。在没有满足这些过滤标准时(块306中的“不”),完成预取请求(块210)。过滤标准(在块306中使用的)可以是固定的或动态,并且可能例如仅过滤出那些推测性预取请求,这样完成所有肯定性预取请求(在块210)。
当过滤标准(在块306中使用的)被动态设置时,它们可以基于总流量的评估(在块310)而设定(在块308),如上面所述,该总流量可以被在实现所属方法的决策点本地评估。在一个示例中,存储器层级可以响应高级别的总流量,仅仅初始过滤出(不完成)推测性的预取请求。如果过滤推测性的预取请求无法导致总流量充分下降到时间敏感型请求不受影响,则过滤标准可能会更新(在块308),这样额外的预取请求(例如所有的预取请求)被过滤掉。当总流量再次下降(例如,在一段时间的高流量之后),过滤标准可能再次被调整(在块308),这样完成一些预取流量并且当流量下降充分时,将没有预取请求被阻挡(作为块208中“不”的结果)。
在示例中,其中预取标识符包括与请求相关联的可信度值(例如,基于分支预测的可信度,并且肯定性预取请求具有如100的极端值),过滤标准(在块306中使用的)可以是可信度阈值,并且完成了那些用标识符指定高于阈值的可信度的请求,而那些低于阈值的则被过滤掉。当过滤标准被动态设置时,基于总流量的评估(在块310),可以调整可信度阈值的值(在块308)。
在参考图1-3描述的上述示例中,标识符仅包括在预取请求内。应当领会,代替标识符可以包括在项目(即数据/指令)的所有请求内,这些标识符可以表示请求是预取请求还是非预取请求(在一些情况下,预取请求和/或非预取请求的类别)。当标识符包括在预取和非预取请求中时,这里描述的方法可以应用于过滤掉一些除了预取请求外的非预取请求。
如图2和3中显示的,上述方法的某些部分(例如块202、204和216-222)是由生成预取请求的设备实现。替换地,当生成预取请求的设备不提供对预取中止的支持时,单独的设备可以拦截预取请求并添加预取标识符(从而执行块202),并且实现需要的逻辑以支持系统中在这一阶段的预取中止(例如,从而通过该单独设备和生成预取请求的设备的组合来执行块202、204和216-222)。上面描述的方法中的其他部分可以在系统中的任何点实现,图1显示了三个示例位置,表示为A、B和C,其中方法的这些其他部分(例如块206-214和306-310)可以实现(例如使用额外的逻辑128)。如上所述,方法可在系统中的单个点或者在系统中的不止一个点实现。当方法的非设备部分(例如块206-214和306-310)在系统中的不止一个点操作时,该方法可以在各点独立地并且基于本地的总流量级别进行操作,这样不同的点可以使用不同的过滤标准(在块306)和/或可以或不可以实现预取请求的任何过滤。方法实现的确切位置可以依赖于系统的设计和系统内的总线(或多个总线)的路由。
在一个示例中,方法的非设备部分可在系统中一个或多个仲裁点实现(例如在存储器层级内)。这些仲裁点在系统内控制总线的使用,并包括逻辑130用于检测竞争和/或高流量级别。在一些示例中,方法可以在能够执行服务质量(QoS)监控的系统中的节点实现。
图3显示了评估流量(块310)的明确的方法步骤,这未在图2中显示。应当领会,这一方法块可被添加到图2,或者流量水平的监控可以与确定总流量太高(在块208)相结合。可以使用用于评估流量的任何合适的方法,包括流量水平、QoS测量、在窗口接受的请求的测量、或由输出总线消耗带宽的更具体的测量。确定流量是否太高(在块208)可以通过使流量测量与一个或多个阈值比较而实现。例如,当流量测量超过阈值T时,流量可能会被认为太高(块208的“是”)。在另一个示例中,可能有多个阈值,其中如果流量测量超过第一阈值T1,则仅有推测性的预取请求被过滤掉(并且因此导致中止响应),并且如果流量测量超过了第一阈值和第二阈值T2,则所有预取请求都被过滤掉。在一些示例中,阈值可以是不同的/独立的,并且仅影响请求类型的子集(即,不是所有请求类型)。
图4显示了实现上述方法的系统中的多个示例性消息流。在这些示例中,预取请求由设备102生成(在块202),而方法的非设备部分在节点C处完成。预取请求经由多个中间点(如箭头402-406所示)从设备102传输到节点C,图4显示了两个中间点,节点A和B。
在第一示例消息流41中,在节点C处生成的中断响应(在块212)遵循返回路径(箭头408-412所示),其与预取请求采取的路径相同,但是方向相反(例如,经由中间点,节点A和B)。当中止响应遵循与预取请求所采取的路径匹配的返回路径时,期待传回消息(即,它们期待看到完成预取请求的响应)的沿途的任何元素(例如中间点,节点A和B)将会看到中止消息,并且(必要时)正确地重置它们的状态。例如,这可以用于系统在存储器层级内包括级联的仲裁点的情况。
在第二示例消息流42中,在节点C处生成的中止响应遵循返回路径(由箭头414所示),其不同于预取请求的外向路径(箭头402-406所示)。在这个示例中,中止响应遵循直接的路线,并直接从节点C经过到设备102。这样的消息流可以用于以下情况:在外向路径上没有中间点来保持与预取请求相关联的任何状态,并因此不期待从节点C到设备102传回消息。
在第三示例消息流43中,由在节点C处生成的中止响应所遵循的返回路径(箭头416-418所示)不遵循与预取请求(如消息流42)相同的路径也不遵循直接的路线,而是替代地经由一个中间点(节点A)。
应当领会,图4显示的消息流仅提供几个示例,在其他示例中,中止消息可能经由不在预取请求的外向路径上的中间点而遵循返回路径,例如从而返回路径除了它的开始点和结束点外与外向路径完全不同。
在上面所描述的方法中,发布预取请求的设备不需要改变与预取请求生成相关联的任何事物。设备包括额外的硬件逻辑120以接收中止响应并对中止响应做出反应(例如,实现块216-218,同时块220-222使用现有的硬件逻辑),以及硬件逻辑122用于将预取标识符插入到预取请求。如图1所示,接收和对中止响应做出反应的额外的硬件逻辑120也可以替代地在L1缓存内实现。用于将预取标识符插入到预取请求的硬件逻辑122在一些实现中也可以包含于缓存级别或者生成预取流量的任何地方。
然而,在一些例子中,设备可以修改它的预取行为,以响应接收一个或多个中止响应,并且可以提供额外的硬件逻辑以实现这个功能。例如,设备可以在一段时间内限制生成的预取请求的数量或者仅仅生成肯定性预取请求(而不是推测性预取请求)。这可能会减少系统内生成的中止响应的数量;然而,如果流量仅仅短时间过大,则预取生成的任何减少可能会不必要地限制当没有拥塞时设备的预取。
上面所描述的方法被系统用于过滤预取请求,以便更重要的请求(例如时间敏感型请求)不会因为系统内的拥塞(例如在系统总线内)而延迟或拖延。然而,如图5所示,该方法可以被修改以拒绝来自特定设备的对数据和/或指令的所有请求(即所有的预取请求和所有的非预取请求)。图5所示的方法可以例如被用来协助重新设置一部分系统,例如在系统被分成几个不同的电源域,和/或当某个区域预计不被使用时减少功耗。
图5显示了可以在图1所示的系统100中实现的控制流量的示例方法的流程图。设备生成项目的请求(块502),其中项目可以是一条数据或指令,并且设备可以将如预取标识符的标识符插入到请求中(块504,这是可选的)。如上所述参考图2和3所示的方法,图5中所示的方法不需要使用对请求类型分类的标识符(例如,以标识预取请求),然而,图5所示的方法可用于与先前描述的方法相组合。生成的请求然后被传输到存储器层级(块204)。
在存储器层级中的节点接收请求(块506),如上面所述,这种请求可以是预取请求或者时间敏感型请求。响应于此,或者更通常地响应于一些其他事件例如对访问受到控制的存储器或设备的复位操作,节点生成中止响应(块508),然而不同于先前描述的中止响应,这种中止响应并不链接到特定的请求,而是一种“中止所有”响应,其会影响已经从特定设备接收到的但尚未完成的所有请求。中止响应也可以不会通过接收到特定类型的请求或作为高流量级别的后果而被触发,而是通过从特定设备接收到的请求被触发,并且涉及其他触发因素(例如,访问的层级的状态事件,如“复位”或者“关机”)。“中止所有”响应被发送到请求源设备(块214),并且响应可以遵循直接的路径,路径与请求的外向路径或(例如,根据图4中所示的任何示例的)任何其他路径匹配。
当接收到中止响应(块216)时,设备移除至少一些数据(块510)(在一些示例中是所有数据),其与目标是发布“中止所有”消息的部件的所有未完成的请求有关,而不仅是在块502中生成的请求。通过以这种方式清除所有事物,设备然后将在它需要请求的项目(块220-222)时重新发布任何请求。如上所述,当预取请求已被移除(且未完成)时,重新发布的请求可能是非预取请求。当替代行动是必要的时,接收“中止所有”消息也可以触发设备的软件或硬件操作。
上面描述的中止所有响应可以被层级的任何级别的逻辑处理和发送。例如,图1所示的L3缓存116可以发布中止所有响应,以响应检测到对主存储器132的存储器访问已重置(因此不会响应未解决的请求)。
虽然上述方法可以在SoC中实现,但所述方法也可以在下面的系统中实现:存储器层级一些或所有在片外(即,当设备生成数据请求时不在同一块硅片上)。
术语“处理器”和“计算机”在这里用于指任何设备或其一部分,其具有处理能力从而能够执行指令。本领域技术人员将会认识到,这样的处理能力被合并进许多不同的设备,因此术语“计算机”包括机顶盒、媒体播放器、数字无线电设备、PC、服务器、移动电话、个人数字助理和许多其他设备。
本领域技术人员会认识到,用于存储程序指令的存储设备可以跨越分布在网络中。例如,远程计算机可存储描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并下载一部分或全部软件以运行程序。或者,本地计算机可以按需下载多款软件,或者在本地终端执行一些软件指令和在远程计算机(或计算机网络)执行一些软件指令。本领域技术人员也会认识到,通过使用本领域技术人员所知的传统技术,所有或部分软件指令可由专用电路执行,例如DSP、可编程逻辑阵列等等。
这里给出的任何范围或设备值可以被扩展或改变而不失去所追求的效果,这对于技术人员来说是明显的。
应当理解,上面描述的益处和优点可以涉及一个实施例或者可以涉及若干实施例。实施例不限于解决了任何或所有所述问题的那些实施例,或者具有任何或所有所述益处和优点的那些实施例。
每次谈及“一”项目是指一个或多个那些项目。术语“包括”在这里用于意指包括方法块或标识的元件,但这样的块或元件不包括排他性列表,并且方法或装置可以包括额外的块或元件。
这里描述的方法的步骤可以以任何合适的顺序进行,或在适当的地方同时进行。图中框之间的箭头显示方法步骤的一个示例顺序,但并不意图排除其他顺序或并行执行多个步骤。另外,个体的块可以从任何方法移除而不偏离在这里描述的主题的精神和范围。上面描述的任何示例的方面可以结合任何其他描述的示例的方面以形成进一步的示例,而不失去所追求的效果。当图中的元件显示为被箭头连接时,应当领会,这些箭头只显示元件间的一个示例通信流(包括数据和控制消息)。元件之间的流可以是任何方向或两个方向。
应当理解,仅以示例的方式给出上面所描述的优选实施例,本领域技术人员可以做出各种修改。虽然上面描述的各种实施例具有一定程度的特定性,或参考了一个或多个个体实施例,但本领域技术人员对公开的实施例可以做出许多改变而不偏离本发明的精神和范围。

Claims (10)

1.一种系统(100),包括:
多个设备(102,104,106),其被安排用来生成对于来自存储器层级的项目的请求,其中,一个项目包括一条数据或指令;
所述存储器层级(108)的至少一部分;以及
至少一条总线(110),其连接所述多个设备和所述存储器层级,
其中所述多个设备的至少一个包括:
第一硬件逻辑(120),其被安排用来将预取标识符附加到预取请求,以将所述预取请求标记为预取请求而不是非预取请求,所述预取请求从存储器层级请求项目,并且将所述预取请求从所述设备传输到所述存储器层级;以及
第二硬件逻辑(122),其被安排用来响应于接收对应于由所述存储器层级的节点基于所述预取标识符生成的所述预取请求的中止响应,移除预取请求的任何记录。
2.根据权利要求1所述的系统,其中,所述第二硬件逻辑进一步被安排用来响应于接收中止所有响应,移除先前传输到所述存储器层级的任何未完成的请求的任何记录,包括先前传输到所述存储器层级的任何未完成的预取请求和任何时间敏感型请求。
3.根据权利要求1所述的系统,其中,所述第一硬件逻辑被安排用来根据所述预取请求的类型选择所述预取标识符。
4.根据权利要求1所述的系统,其中,所述存储器层级包括:
中止响应生成逻辑(128),其被安排用来基于所述预取标识符和所述存储器层级的一部分内的流量级别的评估,确定是否生成中止响应,以及如果所述确定是肯定的,则生成所述中止响应。
5.根据权利要求4所述的系统,其中,所述存储器层级进一步包括:
流量评估逻辑(130),其被安排用来使流量级别的测量与一个或多个阈值进行比较。
6.根据权利要求4所述的系统,其中,确定是否生成对应于所述预取请求的中止响应包括:
如果预取标识符包括在所述请求内并且如果流量级别超过预先定义的级别,则确定将生成中止响应;以及
如果没有预取标识符包括在所述请求内和/或如果流量级别不超过所述预先定义的级别,则确定将不生成中止响应。
7.根据权利要求4所述的系统,其中确定是否生成对应于所述预取请求的中止响应包括:
如果所述预取标识符满足过滤标准并且如果流量级别超过预先定义的级别,则确定将生成中止响应;以及
如果没有预取标识符包括在所述请求内、如果所述预取标识符不满足所述过滤标准和/或如果流量级别不超过所述预先定义的级别,则确定将不生成中止响应。
8.根据权利要求7所述的系统,进一步包括:
被安排用来基于所述存储器层级的一部分内的流量级别的评估而动态更新所述过滤标准的硬件逻辑。
9.根据权利要求1至8中任一项所述的系统,其中所述系统是片上系统。
10.一种控制由处理器生成的流量的方法,所述方法包括:
在存储器层级中的节点处从所述处理器接收预取请求(206),所述预取请求包括预取标识符并且请求存储在所述存储器层级中的项目,其中,所述项目包括一条数据或指令;
基于所述预取标识符和所述存储器层级的一部分内的流量级别的评估,确定是否生成对应于所述预取请求的中止响应(208);
如果所述评估确定将生成中止响应,则生成对应于所述预取请求的中止响应(212);
将所述中止响应传输到所述处理器(214)。
CN201811197559.2A 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统 Active CN109446112B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1300646.5A GB2509765B (en) 2013-01-15 2013-01-15 Improved control of pre-fetch traffic
GB1300646.5 2013-01-15
CN201410016939.7A CN103927266B (zh) 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201410016939.7A Division CN103927266B (zh) 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统

Publications (2)

Publication Number Publication Date
CN109446112A true CN109446112A (zh) 2019-03-08
CN109446112B CN109446112B (zh) 2023-02-21

Family

ID=47757963

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201410016939.7A Active CN103927266B (zh) 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统
CN201811197559.2A Active CN109446112B (zh) 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201410016939.7A Active CN103927266B (zh) 2013-01-15 2014-01-15 用于预取流量的改进控制的方法和系统

Country Status (4)

Country Link
US (2) US9658962B2 (zh)
CN (2) CN103927266B (zh)
DE (1) DE102014000372A1 (zh)
GB (3) GB2513042B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023226505A1 (zh) * 2022-05-23 2023-11-30 华为技术有限公司 一种预取调度方法及预取调度器

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645936B1 (en) * 2014-03-26 2017-05-09 Marvell International Ltd. System and method for informing hardware to limit writing in a memory hierarchy
US9710042B2 (en) * 2014-08-15 2017-07-18 Oracle International Corporation Adaptive microprocessor power ramp control
JP6417951B2 (ja) * 2015-01-15 2018-11-07 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム
US10042749B2 (en) 2015-11-10 2018-08-07 International Business Machines Corporation Prefetch insensitive transactional memory
US10848583B2 (en) * 2015-10-15 2020-11-24 Tensera Networks Ltd. Freshness-aware presentation of content in communication terminals
US10152419B2 (en) * 2015-11-10 2018-12-11 International Business Machines Corporation Deferred response to a prefetch request
JP6734760B2 (ja) 2015-11-10 2020-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プリフェッチ・インセンシティブのトランザクション・メモリ
US10164836B2 (en) * 2015-12-22 2018-12-25 Amazon Technologies, Inc. Shifting network traffic from a network device
US9892066B1 (en) 2016-10-31 2018-02-13 International Business Machines Corporation Dynamically adjusting read data return sizes based on interconnect bus utilization
US9684461B1 (en) * 2016-10-31 2017-06-20 International Business Machines Corporation Dynamically adjusting read data return sizes based on memory interface bus utilization
CN106789704B (zh) * 2017-01-13 2019-06-14 北京交通大学 片上网络限流系数的精确量化方法
US10474578B2 (en) * 2017-08-30 2019-11-12 Oracle International Corporation Utilization-based throttling of hardware prefetchers
US10425456B2 (en) 2017-11-29 2019-09-24 Bank Of America Corporation Request processing system using a splitting engine
US10419265B2 (en) 2017-11-29 2019-09-17 Bank Of America Corporation Request processing system using a combining engine
US11567776B2 (en) * 2020-11-03 2023-01-31 Centaur Technology, Inc. Branch density detection for prefetcher

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US6438656B1 (en) * 1999-07-30 2002-08-20 International Business Machines Corporation Method and system for cancelling speculative cache prefetch requests
CN1504882A (zh) * 2002-12-05 2004-06-16 �Ҵ���˾ 中断处理程序预测方法和系统
US20090199190A1 (en) * 2008-02-01 2009-08-06 Lei Chen System and Method for Priority-Based Prefetch Requests Scheduling and Throttling
CN102112966A (zh) * 2008-08-08 2011-06-29 高通股份有限公司 用于推测式中断向量预取的设备及方法
CN102640124A (zh) * 2009-09-11 2012-08-15 超威半导体公司 用于数据流的储存感知预取

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5206945A (en) * 1985-03-15 1993-04-27 Hitachi, Ltd. Single-chip pipeline processor for fetching/flushing instruction/data caches in response to first/second hit/mishit signal respectively detected in corresponding to their logical addresses
KR19990003937A (ko) * 1997-06-26 1999-01-15 김영환 프리페치 장치
US6470427B1 (en) * 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US6681318B2 (en) * 2000-09-08 2004-01-20 Sun Microsystems, Inc. Method and apparatus for using an assist processor to prefetch instructions for a primary processor
US7051195B2 (en) * 2001-10-26 2006-05-23 Hewlett-Packard Development Company, L.P. Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US20060259658A1 (en) * 2005-05-13 2006-11-16 Connor Patrick L DMA reordering for DCA
US7533242B1 (en) * 2005-10-31 2009-05-12 Sun Microsystems, Inc. Prefetch hardware efficiency via prefetch hint instructions
US8966053B2 (en) * 2007-07-12 2015-02-24 Viasat, Inc. Methods and systems for performing a prefetch abort operation for network acceleration
US8683133B2 (en) * 2008-01-18 2014-03-25 Texas Instruments Incorporated Termination of prefetch requests in shared memory controller
CN101639725B (zh) * 2008-07-31 2013-07-17 国际商业机器公司 指令处理装置、方法及其使用的执行控制装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418516B1 (en) * 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US6438656B1 (en) * 1999-07-30 2002-08-20 International Business Machines Corporation Method and system for cancelling speculative cache prefetch requests
CN1504882A (zh) * 2002-12-05 2004-06-16 �Ҵ���˾ 中断处理程序预测方法和系统
US20090199190A1 (en) * 2008-02-01 2009-08-06 Lei Chen System and Method for Priority-Based Prefetch Requests Scheduling and Throttling
CN102112966A (zh) * 2008-08-08 2011-06-29 高通股份有限公司 用于推测式中断向量预取的设备及方法
CN102640124A (zh) * 2009-09-11 2012-08-15 超威半导体公司 用于数据流的储存感知预取

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
谢学军: "数据值预测与存储器预取技术研究", 《中国优秀博士学位论文全文数据库》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023226505A1 (zh) * 2022-05-23 2023-11-30 华为技术有限公司 一种预取调度方法及预取调度器

Also Published As

Publication number Publication date
GB2513043B (en) 2015-09-30
US20170220471A1 (en) 2017-08-03
GB2513043A (en) 2014-10-15
CN103927266A (zh) 2014-07-16
US9658962B2 (en) 2017-05-23
US20140325159A1 (en) 2014-10-30
GB2513042B (en) 2015-09-30
US10754778B2 (en) 2020-08-25
CN103927266B (zh) 2018-11-09
GB201412476D0 (en) 2014-08-27
GB2509765B (en) 2015-07-15
GB2513042A (en) 2014-10-15
DE102014000372A1 (de) 2014-07-17
CN109446112B (zh) 2023-02-21
GB201300646D0 (en) 2013-02-27
GB201412477D0 (en) 2014-08-27
GB2509765A (en) 2014-07-16

Similar Documents

Publication Publication Date Title
CN103927266B (zh) 用于预取流量的改进控制的方法和系统
TWI830694B (zh) 用於資料處理和資料存儲的設備及方法
US10324890B2 (en) Cache management in RDMA distributed key/value stores based on atomic operations
US9197703B2 (en) System and method to maximize server resource utilization and performance of metadata operations
CN105282215B (zh) 用于通过内容中心网络转发并响应兴趣的基于声誉的策略
CN101730885B (zh) 用于多线程和多核心系统的高速缓存及其方法
US20130100955A1 (en) Technique for prioritizing traffic at a router
WO2015112249A1 (en) Methods for combining access history and sequentiality for intelligent prefetching and devices thereof
US10915446B2 (en) Prefetch confidence and phase prediction for improving prefetch performance in bandwidth constrained scenarios
US10079916B2 (en) Register files for I/O packet compression
US20110138129A1 (en) Cache management for a number of threads
US20190014016A1 (en) Data acquisition device, data acquisition method and storage medium
WO2016101748A1 (zh) 一种网络连接的缓存方法和装置
US10356175B2 (en) Request multiplexing
US20140379995A1 (en) Semiconductor device for controlling prefetch operation
US10733106B2 (en) I/O driven data routing and cache allocation
US9626296B2 (en) Prefetch list management in a computer system
US9652387B2 (en) Cache system with multiple cache unit states
US8566521B2 (en) Implementing cache offloading
JP2017174038A (ja) 情報処理システム、情報処理方法およびプログラム
KR102526431B1 (ko) 데이터 처리
WO2017011021A1 (en) Systems and methods facilitating reduced latency via stashing in systems on chips
CN114430821A (zh) 用于在处理器中执行的指令流中的分支集合活动检测的动态集合活动分支训练
JP5715458B2 (ja) 情報処理システム、調停方法
JP2014241121A (ja) プログラム、排他制御要求振り分け方法およびシステム

Legal Events

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