CN101036118A - 由外部代理启动cpu数据预取的方法和设备 - Google Patents
由外部代理启动cpu数据预取的方法和设备 Download PDFInfo
- Publication number
- CN101036118A CN101036118A CNA2005800331573A CN200580033157A CN101036118A CN 101036118 A CN101036118 A CN 101036118A CN A2005800331573 A CNA2005800331573 A CN A2005800331573A CN 200580033157 A CN200580033157 A CN 200580033157A CN 101036118 A CN101036118 A CN 101036118A
- Authority
- CN
- China
- Prior art keywords
- data
- prefetched instruction
- target
- cache
- processor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/6028—Prefetching based on hints or prefetch instructions
Abstract
在计算系统中对外部代理进行设置以便启动从系统存储器到与目标处理器相关联的高速缓存的数据预取,其中该目标处理器需要所述数据以执行程序。当外部代理具有数据时,产生并发出预取指令。该预取指令可以与系统互连事务一起或作为单独的事务发送到系统中包括所述目标处理器的设备。当接收到并识别出预取指令时,与所述目标处理器相关联的硬件预取器可以向系统存储器发出请求以将数据预取到高速缓存。目标处理器能够比访问系统存储器中的数据更有效率地访问高速缓存中的数据。可以将一些预处理与数据预取相关联。
Description
技术领域
本公开总体上涉及计算系统中的存储器访问,更具体地涉及由外部代理启动CPU数据预取和预处理,以提高依赖于存储器的操作性能。
背景技术
中央处理单元(CPU)通常在硬件中执行预取,以便提前将数据取到CPU的高速缓存中。当在CPU上执行的程序真的需要数据时,这有助于减少存储器访问等待时间。由于预取的原因,能够以通常比系统存储器访问等待时间小得多的等待时间在高速缓存中找到数据。现代预取硬件追踪存储器访问的空间和时间访问模式,并代表CPU向系统存储器发出先行请求。然而,与CPU相关联的预取硬件诸如另一个CPU、芯片组或输入/输出(I/O)设备通常不能被外部代理调用。当外部代理具有新数据时,典型的协议要求所有CPU的高速缓存(如果外部代理是CPU的话,则具有新数据的CPU除外,)使它们拷贝无效,并当它们需要新数据时,从存储器读取新数据。换句话说,无论何时当除外部代理之外的CPU需要新数据时,CPU必须从存储器(或可能从外部代理)读取新数据,并因而导致了比从CPU自身的高速缓存直接读取高得多的等待时间。结果,由于存储器访问的原因,数据处理速度会被降低。
附图说明
由以下的本公开的详细说明,本公开的特点和优点会变得明显,其中:
图1是示出一般计算系统的示意图;
图2是计算系统的功能部件的示意图,其中外部代理可以启动CPU数据预取;
图3是处理器的示意图,外部代理可以对其启动数据预取;
图4是示出用于在计算系统中由外部代理启动CPU数据预取的预取指令的示例性格式的表格;
图5是示出一个示例性计算系统的示意图,在此外部代理可以被允许启动CPU数据预取;
图6是示出另一个示例性计算系统的示意图,在此外部代理可以被允许启动CPU数据预取;及
图7是示出在计算系统中由外部代理启动CPU数据预取的示例性过程的流程图。
具体实施方式
本发明的实施例包括一种由外部代理启动CPU数据预取的方法和设备。在现代计算系统中,除了软件实现的预取机制之外,还存在预取硬件,以先行将数据取到CPU高速缓存中。这种预取硬件能够基于存储器访问的空间和时间访问模式,将数据从系统存储器预取到CPU高速缓存中。根据本发明的实施例,预取硬件的功能可以被扩展,以便其能够被外部代理调用,外部代理诸如芯片组、I/O设备和除与预取硬件相关联的那个CPU之外的CPU。当外部代理具有新数据时,外部代理可以向目标CPU的预取硬件发出一条独立消息或“预取指令”,以使得新数据可以从存储器被预取到目标CPU的高速缓存中。在一个实施例中,预取指令可以与现有系统互连事务一起进行发送。在另一个实施例中,预取指令可以作为单独的事务来发送。而且,除预取新数据之外的诸如对新数据预处理的其它功能也可以被调用。
在说明书中所提及的本发明的“一个实施例”意味着结合该实施例描述的具体特征、结构或特性被包括在本发明的至少一个实施例中。因而,在本说明书全文中多个地方出现的短语“在一个实施例中”不必全部指相同的实施例。
图1是示出一般计算系统100的示意图。计算系统100包括目标CPU 110、支持平台120、存储器130和至少一个外部代理140。目标CPU可以运行用于处理来自外部代理140的数据的程序。目标CPU可以是在计算系统中的仅有的CPU或多个CPU中的一个。目标CPU可以包括高速缓存112和硬件预取器114。高速缓存112被设置成目标CPU 110从该高速缓存访问数据比从存储器130访问相同数据更有效率(例如高速缓存访问等待时间比存储器访问等待时间短得多)。硬件预取器114可以代表目标CPU 110向存储器130发送请求,以先行将数据取到高速缓存112中。基于可预测的目标CPU对存储器访问的空间和时间访问模式,硬件预取器可以发出预取请求。尽管在图1中高速缓存112和硬件预取器114被示为在目标CPU 110之内,但它们可以是彼此分开的,且它们中的任何一个或全部都可以与目标CPU分离。外部代理140可以包括多CPU系统中的另一个CPU,和/或诸如芯片组或I/O设备的其它设备。外部代理可以提供在目标CPU 110上运行的程序所需的数据。支持平台120可以提供在目标CPU 110、存储器130和外部代理140之间必要的接口。支持平台可以包括存储器控制器125,以处理往来于存储器130的数据的输入/输出(I/O)。支持平台还可以包括接口部件(在图中未示出)以便于在存储器与外部代理之间的数据通信。存储器130可以存储目标CPU 110或包括在系统100中的任何其它设备使用的数据(包括指令序列)。与由目标CPU 110访问位于高速缓存112中的信息相比,访问位于存储器130中的信息会相对较慢(例如高等待时间)。
计算系统100可以运行高速缓存同调协议(cache coherency protoco1),根据该协议,当外部代理具有新数据时,外部代理使得包括目标CPU的高速缓存112在内的所有CPU的高速缓存中的、与新数据具有相同存储器地址的数据的所有拷贝无效,并将新数据写入到存储器130(该协议可以被称为写入无效协议)。换句话说,当数据源是外部代理时,无论何时在目标CPU 110上运行的程序需要数据,该程序不能期望在其高速缓存112中找到数据(即招致高速缓存缺失),并必须从存储器获得数据。因为存储器访问等待时间通常比高速缓存访问等待时间高得多,在目标CPU上运行的程序性能会受到影像。一种避免来自外部代理的数据的高速缓存缺失的方案(并从而帮助改进在目标CPU上运行的程序性能)是允许外部代理代表目标CPU 110启动数据预取。用该方法,当外部代理具有新数据时,外部代理可以通过发送预取指令来调用硬件预取器114。一旦接收到并识别出预取指令,硬件预取器可以发出存储请求,以从存储器130预取新数据,并将其放置在高速缓存112中。该方案给予外部代理对目标CPU的高速缓存的直接访问,并可以称为直接高速缓存访问(DCA)。在一个实施例中,预取指令可以与现有的系统互连事务一起发送,如监听事务。在另一个实施例中,预取指令可以作为单独的事务被发送。
图2是计算系统的功能部件的示意图,在此外部代理可以启动CPU数据预取。目标代理210可以是CPU或处理器,其可以运行需要从DCA源代理260而来的数据的程序。目标代理对目标高速缓存220的访问比对存储器250的访问更快并更有效率。目标代理包括硬件预取器215。基于目标代理210过去的空间和时间存储器访问模式,硬件预取器215可以预料到随后的存储器访问,并发出存储请求以将数据预取到目标高速缓存220中。硬件预取器还可以被DCA源代理260调用,以使得由DCA源代理接收的或产生的新数据可以被预取到目标高速缓存中。目标高速缓存220存储目标代理上运行的程序所需的数据的至少一部分。在一个实施例中,目标高速缓存可以与目标代理相关联。在另一个实施例中,目标高速缓存可以是系统中的任何高速缓存。目标高速缓存被实现为:目标代理从该高速缓存访问数据要比从存储器250访问相同数据更有效率。在一个实施例中,目标代理210、硬件预取器215和目标高速缓存220可以是物理上彼此分开的。在另一个实施例中,这三个部件可以是物理上彼此相连的。在另一个实施例中,它们中的任意两个可以是物理上彼此相连的,但与第三个在物理上分离。再在另一个实施例中,硬件预取器215或目标高速缓存220中的任意一个或其两个可以在物理上是目标代理210的一部分。
请求代理230可以是运行操作系统(OS)或等价软件的CPU或处理器,将要或很可能会处理新数据270并了解新数据的特性。新数据的特性可以包括存储器地址和DCA优选项。存储器地址表示从I/O设备或其它设备而来的数据被放置到存储器中的何处,DCA优选项可以包括DCA允许指示器、目标标识符和目标高速缓存放置属性。DCA允许指示器指示从DCA源代理而来的新数据能够被预取到目标代理的高速缓存中;目标标识符识别目标代理的高速缓存;目标放置属性指示新数据如何放置到目标代理的高速缓存中。请求代理可以与目标代理不同或相同。
路由支持平台240为DCA事务提供必要的支持,以将数据路由到目标高速缓存220,并还确保在目标高速缓存与存储器250之间的同调。路由支持平台可以是桥接DCA源代理(例如DCA源代理260)与CPU(例如目标代理210)的芯片组。路由支持平台240可以包括存储器控制器,以管理往来于存储器250的数据的I/O。存储器250可以存储被目标代理210、DCA源代理260和/或包括在系统中的任何其它设备使用的数据(包括指令序列)。在一个实施例中,存储器控制器可以是路由支持平台的一部分。在另一个实施例中,存储器控制器可以是目标代理的一部分。另外,路由支持平台可以与DCA源代理分离,但它们也可以被合并或连接到一起。例如,芯片组也可以是新数据源,并还可以启动对目标代理的高速缓存的数据预取。
在图2中所示的计算系统可以包括DCA源代理260。尽管图2只示出了一个DCA源代理,但在计算系统中可以有更多个DCA源代理。DCA源代理260可以包括I/O适配器、网络接口控制器或磁盘适配器。在具有新数据270时,请求代理230向DCA源代理发送新数据的特性,用于DCA源代理使用。在一个实施例中,如果DCA允许指示器指示DCA功能被允许,DCA源代理可以向目标高速缓存220直接发送新数据,并同时保持系统中不同高速缓存之间的同调。在另一个实施例中,代表DCA源代理而运作的路由支持平台240可以启动同调事务,例如监听,以确保在包含目标高速缓存220在内的所有CPU高速缓存中的、与新数据具有相同存储器地址的数据的所有拷贝都被无效(无效事务)。CPU对无效事务的响应依赖于在其高速缓存中的高速缓存行(这里放置与与新数据具有相同的存储器地址的数据的拷贝)的状态。如果在CPU的高速缓存的任何一个中的高速缓存行处于修正(M)状态,那么该数据就被从CPU高速缓存收回(回写)到存储器。存储器控制器将该CPU回写与写入事务(用于将新数据从DCA源代理写入到存储器)合并,并将合并的数据发送到存储器。如果写入事务是全部高速缓存行写入,那么可以忽略CPU回写。如果写入事务是部分高速缓存行事务,那么它就与被CPU收回的全部高速缓存行合并。如果在CPU的高速缓存中没有发现高速缓存行处于M状态,CPU回写可以不发生。
除了启动无效事务之外,DCA源代理还可以产生对从请求代理接收的DCA优选项编码的预取指令,并借助于路由支持平台240,向所有CPU发出该预取指令。在一个实施例中,预取指令可以与无效事务一起发送。在另一个实施例中,预取指令可以作为单独的独立事务被发送。一旦与目标代理相关联的硬件预取器215接收到并识别出预取指令,硬件预取器就可以向存储器发出请求,以根据新数据的DCA优选项,将新数据270预取到目标高速缓存220。此后,目标代理可以直接从目标高速缓存读取新数据,而不是从用于运行程序的存储器,从而减小了数据读取等待时间并提高了运行程序的性能。
而且,根据预取指令的指示,在使新数据在目标高速缓存220中成为可用之前,硬件预取器215可以预处理新数据。预处理数据的指示可以被编码在作为预取指令的一部分的DCA优选项中。在将该预取数据传送进高速缓存之前,预处理选择在将该预取的数据转换成新格式过程中提供了灵活性。这种预处理可以包括任何类型的数据处理,例如解码、解压缩、解密等。
图3是处理器300的示意图,其充当如图2所示的目标代理210。处理器300还可以充当外部代理(例如在多处理器计算系统中)。处理器300可以包括一个或多个处理核心(在图3中未示出)。每个处理核心具有与其相连的其自身的高速缓存,或多于一个的处理核心可以共享一个或多个高速缓存。在一个实施例中,处理核心的高速缓存可以与该处理核心在物理上集成,并位于处理器300内。在另一个实施例中,处理核心的高速缓存可以与该处理核心在物理上分离,并可以位于处理器300之内或之外。处理器300可以包括硬件预取器310。基于由处理器300的处理核心的过去的空间和时间存储器访问模式,硬件预取器310可以预料到随后的存储器的访问,并发出存储请求,以将数据预取到请求处理核心的高速缓存中。当处理器300充当目标代理时,处理器300还可以包括预取指令接收机构330,以在外部代理具有处理器300中的一个或多个处理核心所需的新数据时,识别并接收由外部代理(例如,如图2中所示的DCA源代理260)发出的预取指令。预取指令可以与无效事务一起或作为单独的事务发送到处理器300。
一旦由预取指令接收机构330接收到预取指令,预取指令就可以被传送到预取指令解码机构340,以对包括在预取指令中的信息解码。预取指令可以至少包括待预取的数据的存储器地址和目的地(例如,特定处理核心的高速缓存)。预取指令解码机构可以将解码的信息传送到硬件预取器310,以便硬件预取器可以基于由预取指令解码机构340提供的存储器地址和目的地信息将数据从存储器预取到接收高速缓存中。预取指令还可以包括在将预取数据传送进接收高速缓存之前要求对该预取的数据首先预处理(例如,解密、解码、解压缩、降采样等)的信息。处理器还可以包括预处理机构320,以根据包括在预取指令中的信息,对预取的数据预处理。
而且,处理器300还可以包括预取指令发送机构350,当处理器300充当外部代理且该外部代理具有目标代理所需的新数据时,向该目标代理发送预取指令。预取指令可以与同调事务(例如无效)一起或作为单独的事务发送到目标代理。尽管在图3中未示出,处理器300可以进一步包括当处理器具有需要发送到目标代理的高速缓存的新数据时产生预取指令的机构。
图4是示出用于在计算系统中由外部代理启动CPU数据预取的预取指令的示例性格式的表格。预取指令可以包括多个字段(例如在该示例中为6个字段)。字段410可以包括消息操作码,以将一条消息标识为预取指令。字段420可以包括存储器地址,它是要被预取的数据的基本地址。字段420还可以包括数据长度,其是从基本地址开始的要被预取的字节数。尽管可以使用默认值(例如单一高速缓存行),但数据长度可以是可选的。字段430可以包括路由信息及其它任何信息,以允许系统将预取指令路由到该目标,其中该路由信息包含在目标代理中的目标高速缓存或目标处理核心的标识(“目标ID”)。字段440可以包括由硬件预取器发出的预取请求的可选优先权信息。由于预取不影响任何结构状态,为了控制系统拥塞,它们可以被硬件预取器任意的忽略。对于一些要求一定的性能等级(例如服务的品质)的应用,预取指令可以请求最高优先权之一,因而预取请求至少不会被全部忽略。字段450可以包括可选高速缓存属性,如果存在分级,可以允许对高速缓存等级进行选择,还可以控制数据的预取块如何替换在高速缓存中的现有数据,及在被放入到高速缓存后新块的状态。字段460可以包括可选预处理指令,其指示硬件预取器在将数据传送进高速缓存之前启动所需的预处理。尽管在图4中所示的预取指令的示例性格式可以包括6个字段,但字段数、每个字段的大小和每个字段的解释取决于各自的应用。本领域普通技术人员可以容易地提出针对特定应用的修改格式,这应被视为在公开的实例的精神和范围内。
图5是示出一个示例性计算系统500的示意图,在此外部代理可以被允许启动CPU数据预取。计算系统500包括N个处理器(在此N是正整数),510A、…、510N,芯片组520,系统存储器550,外设部件互连(PCI)总线560和连接到PCI总线的至少一个I/O设备570。每个处理器(例如510A)可以包括一个或多个处理核心,512A、512B、…、512M。每个处理核心可以运行需要来自另一个处理器(例如处理器510N)和/或其它设备(例如I/O设备570)的数据的程序。在一个实施例中,每个处理核心可以具有其自身的高速缓存,如图所示,例如514A、514B、…、514M。在另一个实施例中,一些或全部处理核心可以共享高速缓存。通常,与访问系统存储器550中的数据相比,处理核心能够更有效率地访问其高速缓存中的数据。每个处理器(例如510A)还可以包括硬件预取器(例如处理器510A的516),以基于其一个或多个其处理核心的空间和时间存储器访问模式,先行将数据从系统存储器取到与该一个或多个处理核心相关联的高速缓存。
芯片组520可以进一步包括存储控制集线器(MCH)530和I/O控制器集线器(ICH)540。MCH530可以包括存储器控制器532,其连接到系统存储器550以控制往来于系统存储器的通信。系统存储器550可以存储数据,包括由处理器或包括在系统500中的任何其它设备执行的指令序列。MCH530可以通过集线器接口连接到ICH540。ICH540提供到系统中的输入/输出(I/O)设备的接口。ICH540可以包括PCI桥接器542,其提供到外设部件互连(PCI)总线560的接口。PCI桥接器542可以在处理器510与I/O设备570(例如音频设备和磁盘驱动器)之间提供数据通路。尽管未示出,但其它设备也可以连接到PCI总线560和ICH540。
处理器的硬件预取器(例如在处理器510A中的516)还可以被外部代理(例如另一个处理器和/或I/O设备)调用。当外部代理具有目标处理核心(例如512B)执行程序所需的新数据时,外部代理可以向所有处理器发送预取指令。预取指令对该目标处理核心的标识(“目标核心ID”)进行编码。目标核心ID被包括在由请求代理发送到外部代理的新数据的特性中。请求代理可以与目标核心或处理器内的任何其它处理核心相同,而该处理器可以与目标核心所在的处理器相同或不同。请求代理可以运行操作系统(OS)或其它软件,并了解新数据是如何被发送及处理。当与目标处理核心相关联的硬件预取器(“目标硬件预取器”)接收到预取指令并识别出目标处理核心的标识时,其向系统存储器发出请求,以将新数据预取到与目标处理核心相关联的高速缓存。使用预取指令允许外部代理的直接本地高速缓存访问。作为结果,目标处理核心可以直接从其高速缓存读取新数据,而不是从系统存储器。而且,预取指令可以指示硬件预取器在将新数据传送进目标高速缓存之前,首先预处理新数据。
处理器(例如510A)和芯片组520可以通过前端总线(FSB)580相连。由外部代理对高速缓存的直接访问可以通过扩展已有的总线读取无效线路(BRIL)事务协议而在FSB上得到支持。当希望修改高速缓存行时,FSB代理(例如处理器,芯片组或I/O设备)使用BRIL事务。代理使用非0长度BRIL(BRIL)以将全部高速缓存行从其当前位置(或者是处理器高速缓存或者是系统存储器)读取到该代理的高速缓存中,其中高速缓存状态是独占的。0长度BRIL(BRIL.0或BIL)是由已经具有共享状态的高速缓存行的代理使用,且该代理现在希望修改该高速缓存行。当I/O设备向高速缓存同调存储器写入时,BIL事务还可以被芯片组使用,以使得处理器高速缓存中的高速缓存行的先前拷贝无效。预取指令可以与BIL事务一起发送(“修改的BIL事务”)。当接收到修改的BIL事务时,所有处理器将使它们的高速缓存中的数据无效,该数据与由接收处理器之外的代理接收到的新数据具有相同的地址,以及或者丢掉该数据,或者将其回写到系统存储器。由于预取指令具有新数据要被发送到的目标高速缓存或目标处理器的目标核心的标识,在目标处理器中的硬件预取器会识别预取指令,并向系统存储器发出请求,以预取新数据。可选的,预取指令可以作为与FSB协议分离的互连事务被发送。使用该可选的方案,预取指令可以在外部代理具有新数据的时间与新数据被处理器的目标核心读取的时间之间的任何时间发送。
图6是示出另一个示例性计算系统600的示意图,在此外部代理被允许启动CPU数据预取。计算系统600包括两个处理器610A和610B、I/O集线器(IOH)630、存储器620A和620B、外设部件互连(PCI)总线660及连接到PCI总线的至少一个I/O设备650。每个处理器(例如610A)可以包括一个或多个处理核心611A、611B、…、611M。每个处理核心可以运行需要来自另一个处理器(例如处理器610B)和/或其它设备(例如I/O设备650)的数据的程序。在一个实施例中,每个处理核心可以具有其自身的高速缓存,例如在图中所示的613A、613B、…、613M。在另一个实施例中,一些或全部处理核心可以共享高速缓存。通常,处理核心访问其高速缓存中的数据比访问存储器620A或620B中的数据更有效率。每个处理器(例如610A)还可以包括硬件预取器(例如处理器610A的615),以基于其处理核心中的一个或多个处理核心的空间和时间存储器访问模式,先行将数据从存储器620A取到与这一个/这些个处理核心相关联的高速缓存。处理器(例如610A)可以进一步包括连接到存储器(例如620A)的存储器控制器(例如619),以控制往来于存储器的通信。另外,处理器可以包括链接接口617,以提供在处理器与IOH630之间的点到点连接。尽管附图仅示出了两个处理器,但系统600可以仅包括一个处理器或多于两个的处理器。
存储器620A和620B都存储数据,包括由处理器或包括在系统600中的任何其它设备执行的指令序列。IOH630提供到系统中输入/输出(I/O)设备的接口。IOH可以连接到外设部件互连(PCI)总线660。I/O设备650可以连接到PCI总线。尽管未示出,其它设备也可以连接到PCI总线和ICH。
与图5中所示的系统500类似,处理器的硬件预取器(例如在处理器610A内部的615)也可以被外部代理(例如另一个处理器和/或I/O设备)调用,以允许该外部代理通过使用预取指令对本地高速缓存的直接访问。通过修改以处理器与IOH之间的点到点连接为基础的同调事务以使得预取指令可以与这种事务(例如无效事务)一起发送,这种直接访问可以在点到点连接上得到支持。可选的,预取指令可以作为与以点到点连接为基础的同调协议分离的互连事务而被发送。
图7是示出在计算系统中由外部代理启动CPU数据预取的示例性过程的流程图。在块710中,目标代理(例如在处理器中的处理核心)运行使用来自DCA源代理(例如I/O设备,另一个处理器,或芯片组)的数据的程序。在块720中,DCA源代理可以接收或产生新数据。还是在块720中,请求代理可以发送新数据的DCA源代理特性,包括存储器地址和DCA优选项。在块730中,可以产生对新数据的DCA优选项编码的预取指令,并被DCA源代理发送到目标代理以及其它处理器。在一个实施例中,预取指令可以与无效事务一起发送,无效事务是高速缓存同调事务的一部分。例如,预取指令可以作为提示与无效事务一起发送。提示由与目标代理相关联的硬件预取器接收并识别,以使得硬件预取器可以向系统存储器发出预取请求。在另一个实施例中,预取指令可以作为单独的事务被发送。由于预取指令具有与目标代理有关的信息,因此作为单独的事务,预取指令可以直接发送到目标代理。另外,作为单独的事务,预取指令可以在DCA代理具有新数据之后及目标代理读取新数据之前的任何时间被发送。
在块740中,预取指令可以被与目标代理相关联的硬件预取器接收并识别。在块750中,在所有同调高速缓存中的、与DCA源代理中的新数据具有相同的存储器地址的数据拷贝可以被丢弃或回写到存储器。当写入事务(用于将新数据从DCA源代理写入到存储器)是部分高速缓存行事务、且在高速缓存中的数据处于修改状态时,发生回写。在此情况下,写入事务与被CPU收回的全部高速缓存行合并。在块760中,新数据可以被写入到存储器。新数据可以与从目标高速缓存收回的数据合并,并且合并的数据被写入到存储器。在块770中,与目标代理相关联的硬件预取器可以向存储器发出请求,以将新数据(或合并的数据)预取到目标高速缓存。如果预取指令包括预处理指示,根据该指示,在被传送进目标高速缓存之前,新数据(或合并的数据)被预处理。在块780中,目标代理可以从目标高速缓存读取新数据(或合并的数据)。
尽管在图7中的块以这种特定的顺序示出,但仅是为了说明方便才使用这种顺序。在每个不同的实施例中,块的顺序可以不同。作为示例,当预取指令可以作为单独的事务被产生并发送时,它可以在新数据被目标代理读取之前(但在DCA代理具有新数据之后)的任何时间被发送。此外,目标代理可以在图3中所示的全部过程中执行该程序,而不仅限于块710。而且,在图3中的各块可以被合并、分割或重新排序,以实现相同的结果。
尽管参照图1-7中的示意图说明了公开的技术的实施例,但本领域普通技术人员会易于想到可以选择地使用许多实现本发明的其它方法。例如,功能块或处理过程的执行顺序可以改变,和/或所述的功能块或处理过程的一部分可以被改变、除去或合并。
在前述中,描述了本公开的各个方面。为了解释,提出了特定的数量、系统和结构,以便提供对本公开的全面理解。然而,对于得益于本公开的本领域技术人员来说,可以无需这些特定的细节来实现本公开是显而易见的。在其它示例中,为了不模糊对本公开的理解,公知的特征、部件或模块被省略、简化、合并或分离。
本公开的技术可以具有多种设计表示或形式,用于设计的模拟、仿真和制造。代表设计的数据可以以多种方式来表示设计。首先,作为在模拟中是有用的,可以用硬件描述语言或另一种功能描述语言来表示硬件,其主要提供期望设计的硬件如何执行的计算机化模型。硬件模型可以存储在存储介质中,例如计算机存储器,以便可以用模拟软件来模拟模型,模拟软件对硬件模型应用特定的测试套件,以确定其实际功能是否如预期的。在一些实施例中,模拟软件没有录制、记录或包含在介质中。
另外,可以在设计过程的某些阶段产生具有逻辑和/或晶体管门电路的电路级模型。有时用专用硬件模拟器可以对该模型进行类似的模拟,该硬件模拟器使用可编程逻辑来构成模型。更进一步,这类模拟可以是仿真技术。在任何情况下,另一个实施例是可重构的硬件,其可以包含机器可读取介质,存储使用本公开的技术的模型。
而且,在某些阶段,大部分设计达到了表示各器件在硬件模型中的物理布置的数据的程度。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在生产集成电路时所用的掩模的、在不同掩模层上各种特征的存在与否的数据。再一次,表示集成电路的数据体现本公开的技术在于数据中的电路或逻辑能被模拟或制造以执行这些技术。
在设计的所有表示中,数据可以存储在任何形式的计算机可读取介质或设备中(例如硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM驱动器、闪存设备、数字多用途盘(DVD)或其它存储设备)。所公开的技术的实施例还可以被认为是作为存储描述设计或设计的特定部分的比特的机器可读取存储介质而实现。存储介质可以是购进的和其自己的,或被其它人使用以用于更进一步的设计或制造。
尽管已经参考说明性的实施例来说明了本公开,但本说明并不意图被解释为限制性的。上述说明性的实施例以及本公开的其它实施例的各种修改对于本公开所属领域的技术人员是显而易见的,并被认为是在本公开的精神和范围内。
Claims (53)
1、一种用于启动CPU数据预取的设备,包括:
目标代理,用于执行程序;
外部源代理,用于为所述目标代理提供至少一部分数据以执行所述程序,且当具有新数据时,产生并发出预取指令;及
与所述目标代理相关联的硬件预取器,当接收到所述预取指令时,发出请求以将所述新数据从存储器预取到目标高速缓存。
2、如权利要求1的设备,其中所述目标高速缓存存储所述目标代理执行所述程序所需的至少一部分数据。
3、如权利要求1的设备,其中所述存储器存储被所述目标代理和外部源代理中的至少一个使用的数据。
4、如权利要求1的设备,进一步包括路由支持平台,以便于实现将所述预取指令从所述外部源代理路由到所述目标代理以及在所述目标代理、目标高速缓存、数据源代理及存储器之间的数据移动。
5、如权利要求1的设备,其中所述目标代理访问所述目标高速缓存中的数据比访问所述存储器中的数据更快。
6、如权利要求1的设备,其中所述预取指令与互连事务一起发送到至少包括所述目标代理的多个代理,所述互连事务至少存在于所述目标代理与外部源代理之间。
7、如权利要求1的设备,其中所述预取指令作为单独的事务被发送到至少包括所述目标代理的多个代理。
8、如权利要求7的设备,其中在当所述外部源代理具有新数据时、和在所述外部源代理具有所述新数据之后但所述目标代理读取所述新数据之前中的至少一个时间,所述预取指令至少被发送到所述目标代理。
9、如权利要求1的设备,进一步包括请求代理,用于向所述外部源代理发送所述新数据的特性。
10、如权利要求9的设备,其中所述新数据的特性包括存储器地址和直接高速缓存访问(DCA)优选项,所述DCA优选项包括DCA允许指示器、所述目标代理和目标高速缓存中的至少一个的标识以及目标高速缓存替换属性。
11、如权利要求1的设备,其中所述预取指令包括:
消息操作码,用于识别所述预取指令;
源地址,用于指示在存储器中何处预取数据;及
路由信息,用于帮助将所述预取指令路由到所述硬件预取器,并将数据路由到所述存储器和目标高速缓存中的至少一个。
12、如权利要求11的设备,其中所述预取指令进一步包括指示所述硬件预取器在将所述预取的数据传送进所述目标高速缓存之前预处理所述预取的数据的预处理信息。
13、如权利要求11的设备,其中所述预取指令进一步包括指示接收所述预取的数据的所述目标高速缓存的等级、所述高速缓存的替换和收回策略以及置于所述高速缓存中的新数据块的状态中的至少一个的属性。
14、如权利要求1的设备由存储在计算机可读取介质中的数据来表示,该数据包括该设备的功能性描述。
15、如权利要求14的设备,其中表示所述设备的数据包括硬件描述语言代码。
16、如权利要求14的设备,其中表示所述设备的数据包括代表多个掩模层组物理数据的数据,表示在所述多个掩模层的每一个的各个位置的要素的存在与否。
17、一种用于启动CPU数据预取的方法,包括:
由目标代理执行程序;
由外部源代理获得新数据,所述新数据是所述目标代理运行所述程序所需要的;
当所述外部源代理获得所述新数据时,产生并发出预取指令;及
当接收到所述预取指令时,发出请求以将所述新数据预取到目标高速缓存中。
18、如权利要求17的方法,进一步包括所述新数据的特性,所述特性包括存储器地址和直接高速缓存访问(DCA)优选项,所述DCA优选项包括DCA允许指示器、所述目标代理和目标高速缓存中的至少一个的标识和目标高速缓存替换属性。
19、如权利要求17的方法,其中所述目标高速缓存存储所述目标代理执行所述程序所需的至少一部分数据,所述目标代理访问所述目标高速缓存中的数据比访问所述存储器中的数据更快,其中所述存储器存储所述目标代理和外部源代理中的至少一个使用的数据。
20、如权利要求17的方法,进一步包括将所述新数据写入到存储器中。
21、如权利要求17的方法,进一步包括与互连事务一起将所述预取指令发送到至少包括所述目标代理的多个代理,其中所述互连事务至少存在于所述目标代理与外部源代理之间。
22、如权利要求17的方法,进一步包括在将所述预取数据传送进所述目标高速缓存并由所述目标代理从所述目标高速缓存读取所述新数据之前,根据包括在所述预取指令中的指示预处理所述预取的数据。
23、如权利要求17的方法,进一步包括将所述预取指令作为单独的事务发送到至少包括所述目标代理的多个代理。
24、如权利要求23的方法,进一步包括在当所述外部源代理具有新数据时、和在所述外部源代理具有所述新数据之后但在所述目标代理读取所述新数据之前中的至少一个时间,将所述预取指令至少发送到所述目标代理。
25、如权利要求17的方法,其中所述预取指令包括:
消息操作码,用于识别所述预取指令;
源地址,用于指示在所述存储器中何处预取数据;及
路由信息,用于帮助将所述预取指令路由到所述硬件预取器,并将数据路由到所述存储器和所述目标高速缓存中的至少一个。
26、如权利要求25的方法,其中所述预取指令进一步包括指示接收所述预取的数据的所述目标高速缓存的等级、所述高速缓存的替换和收回策略、以及置于所述高速缓存中的新数据块的状态中的至少一个的属性。
27、一种产品,包括机器可读取介质,具有存储在其上的预取指令,所述预取指令包括:
第一字段,包括消息操作码,用于识别所述预取指令;
第二字段,包括源地址,用于指示在存储器中何处预取数据;及
第三字段,包括路由信息,用于帮助将所述预取指令路由到目标,并将数据路由到存储器和目标高速缓存中的至少一个,所述目标与所述目标高速缓存相关联。
28、如权利要求27的产品,其中所述预取指令进一步包括指示所述目标在将所述预取的数据传送进所述目标高速缓存之前预处理所述预取的数据的预处理信息。
29、如权利要求27的产品,其中所述预取指令进一步包括指示接收所述预取的数据的所述目标高速缓存的等级、所述高速缓存的替换和收回策略、以及置于所述高速缓存中的新数据块的状态中的至少一个的属性。
30、如权利要求27的产品,其中所述目标接收并识别所述预取指令,向所述存储器发出请求以将所述数据从所述存储器预取到所述目标高速缓存。
31、一种处理器,包括:
预取器,用于预取数据;及
连接到所述预取器的预取指令接收机构,用于识别并接收来自另一个代理的外部预取指令消息,所述外部预取指令消息指示第一地址并向所述预取器发出信令以使得所述预取器取来与所述第一地址相关的数据。
32、如权利要求31的处理器,进一步包括连接到所述预取器和预取指令接收机构的预取指令解码机构,用于解码包括在所述外部预取指令消息中的信息。
33、如权利要求31的处理器,进一步包括预处理机构,用于在将所述预取的数据传送进所述处理器的接收高速缓存之前,根据包括在所述外部预取指令消息中的信息,预处理所述预取的数据。
34、如权利要求31的处理器,其中所述预取器从存储器取来与所述第一地址相关联的数据,所述第一地址是所述数据的存储器地址。
35、如权利要求31的处理器,进一步包括预取指令发送机构,当所述处理器具有要发送到目标代理的数据时,发送外部预取指令消息。
36、如权利要求31的处理器,其中所述外部预取指令消息包括:
消息操作码,用于识别所述外部预取指令消息;
源地址,用于指示在所述存储器中何处预取所述数据;及
路由信息,用于帮助将所述外部预取指令消息路由到所述预取器,并将所述数据路由到所述处理器的接收高速缓存。
37、如权利要求36的处理器,其中所述外部预取指令消息进一步包括指示所述预取器在将所述预取的数据传送进所述接收高速缓存之前预处理所述预取的数据的预处理信息。
38、如权利要求36的处理器,其中所述外部预取指令消息进一步包括指示所述接收高速缓存的等级、所述接收高速缓存的替换和收回策略、以及置于所述接收高速缓存中的新数据块的状态中的至少一个的属性。
39、一种计算系统,包括:
目标处理器,用于执行程序;
外部代理,用于为所述目标代理提供至少一部分数据以执行所述程序,且当具有新数据时,启动从存储器到高速缓存的数据预取,所述高速缓存与所述目标处理器相关联;及
支持平台,在所述目标处理器与所述外部代理之间提供接口,并便于实现数据在所述目标处理器、外部代理、高速缓存和存储器之间移动;
其中所述目标处理器访问所述高速缓存中的数据比访问所述存储器中的数据更快。
40、如权利要求39的计算系统,其中所述外部代理通过产生并发出预取指令,启动从所述存储器到所述高速缓存的数据预取。
41、如权利要求39的计算系统,其中所述外部代理包括所述计算系统中的另一个处理器。
42、如权利要求39的计算系统,其中所述外部代理包括所述计算系统中的芯片组。
43、如权利要求39的计算系统,其中所述外部代理包括I/O设备,该I/O设备被包括在所述计算系统中或者连接到所述计算系统。
44、如权利要求39的计算系统,进一步包括与所述目标处理器相关联的硬件预取器,当接收并识别所述预取指令时,发出请求以将所述新数据从所述存储器预取到所述高速缓存。
45、如权利要求39的计算系统,其中所述预取指令与互连事务一起被发送到至少包括所述目标处理器的多个代理,其中所述互连事务至少存在于所述目标处理器与外部代理之间。
46、如权利要求39的计算系统,其中所述预取指令作为单独的事务被发送到至少包括所述目标处理器的多个代理。
47、如权利要求39的计算系统,其中在当所述外部代理具有新数据时、和在所述外部代理具有新数据之后但所述目标处理器读取所述新数据之前中的至少一个时间,将所述预取指令至少发送到所述目标处理器。
48、如权利要求39的计算系统,其中所述预取指令包括:
消息操作码,用于识别所述预取指令;
源地址,用于指示在所述存储器中何处预取数据;及
路由信息,用于帮助将所述预取指令路由到硬件预取器,并将数据路由到所述存储器和高速缓存中的至少一个。
49、如权利要求48的计算系统,其中所述预取指令进一步包括指示所述硬件预取器在将所述预取的数据传送进所述高速缓存之前预处理所述预取的数据的预处理信息。
50、如权利要求48的计算系统,其中所述预取指令进一步包括指示接收所述预取的数据的高速缓存的等级、所述高速缓存的替换和收回策略、以及置于所述高速缓存中的新数据块的状态中的至少一个的属性。
51、一种包括其上存储有数据的机器可读取介质的产品,当被处理器结合模拟程序访问时,提供包含下列各项的模型的功能:
目标代理,用于执行程序;
外部源代理,为所述目标代理提供至少一部分数据以执行所述程序,且当具有新数据时,产生并发出预取指令;及
与所述目标代理相关联的硬件预取器,当接收并识别所述预取指令时,发出请求以将所述新数据从存储器预取到目标高速缓存;
其中所述目标代理访问所述目标高速缓存中的数据比访问所述存储器中的数据更有效率。
52、如权利要求51的产品,其中预取指令与互连事务一起被发送到至少包括所述目标代理的多个代理,所述互连事务至少存在于所述目标代理与所述外部源代理之间。
53、如权利要求51的产品,其中预取指令作为单独的事务被发送到至少包括所述目标代理的多个代理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/966,231 US7360027B2 (en) | 2004-10-15 | 2004-10-15 | Method and apparatus for initiating CPU data prefetches by an external agent |
US10/966,231 | 2004-10-15 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101328188A Division CN101697118B (zh) | 2004-10-15 | 2005-10-13 | 由外部代理启动cpu数据预取的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101036118A true CN101036118A (zh) | 2007-09-12 |
CN100514282C CN100514282C (zh) | 2009-07-15 |
Family
ID=35515631
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101328188A Active CN101697118B (zh) | 2004-10-15 | 2005-10-13 | 由外部代理启动cpu数据预取的方法和设备 |
CNB2005800331573A Expired - Fee Related CN100514282C (zh) | 2004-10-15 | 2005-10-13 | 由外部代理启动cpu数据预取的方法和设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101328188A Active CN101697118B (zh) | 2004-10-15 | 2005-10-13 | 由外部代理启动cpu数据预取的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7360027B2 (zh) |
KR (1) | KR100958967B1 (zh) |
CN (2) | CN101697118B (zh) |
TW (1) | TWI305881B (zh) |
WO (1) | WO2006044743A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015188676A1 (zh) * | 2014-06-11 | 2015-12-17 | 华为技术有限公司 | 一种缓存数据的方法及存储设备 |
CN106302234A (zh) * | 2015-06-24 | 2017-01-04 | 龙芯中科技术有限公司 | 网络包传送方法、以太网控制器、高速缓存及系统 |
CN107544937A (zh) * | 2016-06-27 | 2018-01-05 | 深圳市中兴微电子技术有限公司 | 一种协处理器、数据写入方法和处理器 |
CN108885552A (zh) * | 2016-01-22 | 2018-11-23 | 索尼互动娱乐股份有限公司 | 用于向后兼容性的欺骗cpuid |
CN117707625A (zh) * | 2024-02-05 | 2024-03-15 | 上海登临科技有限公司 | 支持指令多发的计算单元、方法及相应图形处理器 |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296129B2 (en) | 2004-07-30 | 2007-11-13 | International Business Machines Corporation | System, method and storage medium for providing a serialized memory interface with a bus repeater |
US7443848B2 (en) * | 2004-09-29 | 2008-10-28 | Intel Corporation | External device-based prefetching mechanism |
US7331010B2 (en) * | 2004-10-29 | 2008-02-12 | International Business Machines Corporation | System, method and storage medium for providing fault detection and correction in a memory subsystem |
US7356737B2 (en) * | 2004-10-29 | 2008-04-08 | International Business Machines Corporation | System, method and storage medium for testing a memory module |
US7299313B2 (en) * | 2004-10-29 | 2007-11-20 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
US7512762B2 (en) * | 2004-10-29 | 2009-03-31 | International Business Machines Corporation | System, method and storage medium for a memory subsystem with positional read data latency |
US7441060B2 (en) * | 2004-10-29 | 2008-10-21 | International Business Machines Corporation | System, method and storage medium for providing a service interface to a memory system |
US7277988B2 (en) * | 2004-10-29 | 2007-10-02 | International Business Machines Corporation | System, method and storage medium for providing data caching and data compression in a memory subsystem |
US7395476B2 (en) * | 2004-10-29 | 2008-07-01 | International Business Machines Corporation | System, method and storage medium for providing a high speed test interface to a memory subsystem |
US20060095620A1 (en) * | 2004-10-29 | 2006-05-04 | International Business Machines Corporation | System, method and storage medium for merging bus data in a memory subsystem |
US7356456B1 (en) * | 2004-11-12 | 2008-04-08 | Paravirtual Corporation | Computer storage exception handing apparatus and method for virtual hardware system |
US7437517B2 (en) * | 2005-01-11 | 2008-10-14 | International Business Machines Corporation | Methods and arrangements to manage on-chip memory to reduce memory latency |
US20060259658A1 (en) * | 2005-05-13 | 2006-11-16 | Connor Patrick L | DMA reordering for DCA |
US7478259B2 (en) | 2005-10-31 | 2009-01-13 | International Business Machines Corporation | System, method and storage medium for deriving clocks in a memory system |
US7685392B2 (en) * | 2005-11-28 | 2010-03-23 | International Business Machines Corporation | Providing indeterminate read data latency in a memory system |
JP2007241612A (ja) * | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | マルチマスタシステム |
US7681047B2 (en) * | 2006-04-18 | 2010-03-16 | International Business Machines Corporation | Decryption of data in storage systems |
US7636813B2 (en) * | 2006-05-22 | 2009-12-22 | International Business Machines Corporation | Systems and methods for providing remote pre-fetch buffers |
US7640386B2 (en) * | 2006-05-24 | 2009-12-29 | International Business Machines Corporation | Systems and methods for providing memory modules with multiple hub devices |
US7584336B2 (en) * | 2006-06-08 | 2009-09-01 | International Business Machines Corporation | Systems and methods for providing data modification operations in memory subsystems |
US7669086B2 (en) * | 2006-08-02 | 2010-02-23 | International Business Machines Corporation | Systems and methods for providing collision detection in a memory system |
US7555597B2 (en) * | 2006-09-08 | 2009-06-30 | Intel Corporation | Direct cache access in multiple core processors |
US7870459B2 (en) | 2006-10-23 | 2011-01-11 | International Business Machines Corporation | High density high reliability memory module with power gating and a fault tolerant address and command bus |
US7721140B2 (en) | 2007-01-02 | 2010-05-18 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
US7606988B2 (en) * | 2007-01-29 | 2009-10-20 | International Business Machines Corporation | Systems and methods for providing a dynamic memory bank page policy |
US7937532B2 (en) * | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
GB2454809B (en) * | 2007-11-19 | 2012-12-19 | St Microelectronics Res & Dev | Cache memory system |
GB0722707D0 (en) * | 2007-11-19 | 2007-12-27 | St Microelectronics Res & Dev | Cache memory |
US7958313B2 (en) * | 2007-12-18 | 2011-06-07 | International Business Machines Corporation | Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources |
US8510509B2 (en) * | 2007-12-18 | 2013-08-13 | International Business Machines Corporation | Data transfer to memory over an input/output (I/O) interconnect |
US8064307B2 (en) * | 2008-09-16 | 2011-11-22 | Emt Co., Ltd. | Reproducing device, reproducing method and program used in the same |
US8234458B2 (en) | 2008-12-09 | 2012-07-31 | Nvidia Corporation | System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message |
US8886760B2 (en) * | 2009-06-30 | 2014-11-11 | Sandisk Technologies Inc. | System and method of predictive data acquisition |
US9239793B2 (en) * | 2011-12-13 | 2016-01-19 | Ati Technologies Ulc | Mechanism for using a GPU controller for preloading caches |
US8984228B2 (en) | 2011-12-13 | 2015-03-17 | Intel Corporation | Providing common caching agent for core and integrated input/output (IO) module |
US8539506B2 (en) * | 2012-02-09 | 2013-09-17 | Microsoft Corporation | Dynamic injection of code into running process |
US10078589B2 (en) * | 2015-04-30 | 2018-09-18 | Arm Limited | Enforcing data protection in an interconnect |
US10073775B2 (en) * | 2016-04-01 | 2018-09-11 | Intel Corporation | Apparatus and method for triggered prefetching to improve I/O and producer-consumer workload efficiency |
GB2567466B (en) * | 2017-10-12 | 2020-01-22 | Advanced Risc Mach Ltd | Cache stashing in a data processing system |
US10366027B2 (en) | 2017-11-29 | 2019-07-30 | Advanced Micro Devices, Inc. | I/O writes with cache steering |
US10664273B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data |
EP3835959A4 (en) | 2018-08-24 | 2021-11-10 | Huawei Technologies Co., Ltd. | DATA PRE-EXTRACTION PROCESS AND DEVICE |
US10860487B2 (en) * | 2019-04-17 | 2020-12-08 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Multi-core processing device and method of transferring data between cores thereof |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5371870A (en) * | 1992-04-24 | 1994-12-06 | Digital Equipment Corporation | Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching |
US6473832B1 (en) * | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6460115B1 (en) * | 1999-11-08 | 2002-10-01 | International Business Machines Corporation | System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism |
US6711651B1 (en) * | 2000-09-05 | 2004-03-23 | International Business Machines Corporation | Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching |
US6922753B2 (en) * | 2002-09-26 | 2005-07-26 | International Business Machines Corporation | Cache prefetching |
US20040117606A1 (en) * | 2002-12-17 | 2004-06-17 | Hong Wang | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information |
US8533401B2 (en) * | 2002-12-30 | 2013-09-10 | Intel Corporation | Implementing direct access caches in coherent multiprocessors |
US7010666B1 (en) * | 2003-01-06 | 2006-03-07 | Altera Corporation | Methods and apparatus for memory map generation on a programmable chip |
US20040199727A1 (en) * | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
US7231470B2 (en) * | 2003-12-16 | 2007-06-12 | Intel Corporation | Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system |
US8281079B2 (en) * | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
US20050246500A1 (en) * | 2004-04-28 | 2005-11-03 | Ravishankar Iyer | Method, apparatus and system for an application-aware cache push agent |
US7366845B2 (en) | 2004-06-29 | 2008-04-29 | Intel Corporation | Pushing of clean data to one or more processors in a system having a coherency protocol |
US8255591B2 (en) * | 2004-09-23 | 2012-08-28 | International Business Machines Corporation | Method and system for managing cache injection in a multiprocessor system |
US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
US7246205B2 (en) * | 2004-12-22 | 2007-07-17 | Intel Corporation | Software controlled dynamic push cache |
-
2004
- 2004-10-15 US US10/966,231 patent/US7360027B2/en not_active Expired - Fee Related
-
2005
- 2005-10-07 TW TW094135257A patent/TWI305881B/zh not_active IP Right Cessation
- 2005-10-13 CN CN2009101328188A patent/CN101697118B/zh active Active
- 2005-10-13 KR KR1020077007398A patent/KR100958967B1/ko not_active IP Right Cessation
- 2005-10-13 CN CNB2005800331573A patent/CN100514282C/zh not_active Expired - Fee Related
- 2005-10-13 WO PCT/US2005/037165 patent/WO2006044743A2/en active Application Filing
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015188676A1 (zh) * | 2014-06-11 | 2015-12-17 | 华为技术有限公司 | 一种缓存数据的方法及存储设备 |
US9594684B2 (en) | 2014-06-11 | 2017-03-14 | Huawei Technologies Co., Ltd. | Method for temporarily storing data and storage device |
CN106302234A (zh) * | 2015-06-24 | 2017-01-04 | 龙芯中科技术有限公司 | 网络包传送方法、以太网控制器、高速缓存及系统 |
CN106302234B (zh) * | 2015-06-24 | 2019-03-19 | 龙芯中科技术有限公司 | 网络包传送方法、以太网控制器、高速缓存及系统 |
CN108885552A (zh) * | 2016-01-22 | 2018-11-23 | 索尼互动娱乐股份有限公司 | 用于向后兼容性的欺骗cpuid |
CN108885552B (zh) * | 2016-01-22 | 2023-03-14 | 索尼互动娱乐股份有限公司 | 用于向后兼容性的欺骗cpuid |
CN107544937A (zh) * | 2016-06-27 | 2018-01-05 | 深圳市中兴微电子技术有限公司 | 一种协处理器、数据写入方法和处理器 |
CN117707625A (zh) * | 2024-02-05 | 2024-03-15 | 上海登临科技有限公司 | 支持指令多发的计算单元、方法及相应图形处理器 |
Also Published As
Publication number | Publication date |
---|---|
KR20070059127A (ko) | 2007-06-11 |
US7360027B2 (en) | 2008-04-15 |
TWI305881B (en) | 2009-02-01 |
TW200634621A (en) | 2006-10-01 |
WO2006044743A3 (en) | 2006-08-17 |
CN100514282C (zh) | 2009-07-15 |
KR100958967B1 (ko) | 2010-05-20 |
WO2006044743A2 (en) | 2006-04-27 |
CN101697118A (zh) | 2010-04-21 |
CN101697118B (zh) | 2013-06-19 |
US20060085602A1 (en) | 2006-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100514282C (zh) | 由外部代理启动cpu数据预取的方法和设备 | |
US10846450B2 (en) | Device for simulating multicore processors | |
CN110851378A (zh) | 双列直插式存储器模块(dimm)可编程加速卡 | |
US6526481B1 (en) | Adaptive cache coherence protocols | |
US20060095679A1 (en) | Method and apparatus for pushing data into a processor cache | |
JP5805675B2 (ja) | ガーベッジコレクションに対するcpuサポート | |
US8392663B2 (en) | Coherent instruction cache utilizing cache-op execution resources | |
US7769958B2 (en) | Avoiding livelock using intervention messages in multiple core processors | |
US9251083B2 (en) | Communicating prefetchers in a microprocessor | |
US7624236B2 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
US7500072B2 (en) | Migrating data that is subject to access by input/output devices | |
EP2791933B1 (en) | Mechanism for using a gpu controller for preloading caches | |
KR20030024895A (ko) | 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치 | |
KR20200062238A (ko) | 적어도 3개의 캐싱 레벨을 가진 캐시 계층을 위한 하이브리드 하위-레벨 캐시 포함 정책 | |
JP2006260159A (ja) | 情報処理装置、情報処理装置におけるデータ制御方法 | |
CN114600080A (zh) | 解耦访问执行处理 | |
US20180024930A1 (en) | Processing data based on cache residency | |
US20080263279A1 (en) | Design structure for extending local caches in a multiprocessor system | |
US8838915B2 (en) | Cache collaboration in tiled processor systems | |
US20030182539A1 (en) | Storing execution results of mispredicted paths in a superscalar computer processor | |
CN115686769A (zh) | 根据cxl协议处理一致存储器事务的系统、装置和方法 | |
CN114430819B (zh) | 数据处理系统及其处理单元和处理方法 | |
CN113641598A (zh) | 微处理器、高速缓存存储器系统及其中实现的方法 | |
US20240103719A1 (en) | Memory Control for Data Processing Pipeline Optimization | |
US11520704B1 (en) | Writing store data of multiple store operations into a cache line in a single cycle |
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: 20090715 Termination date: 20191013 |
|
CF01 | Termination of patent right due to non-payment of annual fee |