CN1470019A - 用于在一个分布式存储器、高速缓存相干的多处理器***中把有序的输入/输出事务流水线处理到相干存储器的方法和装置 - Google Patents

用于在一个分布式存储器、高速缓存相干的多处理器***中把有序的输入/输出事务流水线处理到相干存储器的方法和装置 Download PDF

Info

Publication number
CN1470019A
CN1470019A CNA018173098A CN01817309A CN1470019A CN 1470019 A CN1470019 A CN 1470019A CN A018173098 A CNA018173098 A CN A018173098A CN 01817309 A CN01817309 A CN 01817309A CN 1470019 A CN1470019 A CN 1470019A
Authority
CN
China
Prior art keywords
transactions requests
data
memory
distributed
prefetch
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
CNA018173098A
Other languages
English (en)
Other versions
CN1297903C (zh
Inventor
K
K·克雷塔
L·罗伊
A·库马
M·哈雷
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1470019A publication Critical patent/CN1470019A/zh
Application granted granted Critical
Publication of CN1297903C publication Critical patent/CN1297903C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

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)
  • Multi Processors (AREA)

Abstract

一种用于在一个分布式存储器、高速缓存相干、多处理器***中把有序的输入/输出事务流水线处理到相干存储器的方法。一个预取引擎响应于一个来自一条输入/输出总线、送往一个分布式、相干存储器的事务从该分布式、相干存储器中预取数据。一个输入/输出相干高速缓存缓冲器接收该预取的数据并且保持和该分布式相干存储器以及在该***中的其它高速缓存代理相干。

Description

用于在一个分布式存储器、高速缓存相干的多处理器***中把有序的 输入/输出事务流水线处理到相干存储器的方法和装置
背景技术
1.领域
本发明的一个实施例涉及包含分布式存储器的计算机***领域,尤其涉及一种用于在这样的***中流水线处理输入/输出事务的方法。
2.相关技术的讨论
某些输入/输出(I/O)总线,诸如***设备部件互连(PCI)总线,具有严格的事务次序要求。在其中在这样一个I/O总线和存储器之间仅仅具有一个路径的计算机***中,流水线处理来自I/O总线的有序请求是相对容易的。对于具有非分布式存储器体系结构的***这个方法运行良好,因为在该I/O总线和存储器之间存在单个路径。
然而,对于具有一个分布式存储器体系结构的***,其在一个I/O总线和存储器之间有多个路径,由于在多个路径上保持事务次序涉及的复杂度,一般惯例是不流水线处理来自I/O总线的有序请求。使用一种非流水线的方法,一个I/O桥接器在发布下一个I/O总线请求之前完成到存储器的第一个I/O总线请求。这样一种方法能够限制用于面向分布式存储器的事务能达到的I/O吞吐量。这可能导致总体***性能损失或者需要非寻常的软件修改来避免限制能达到的I/O吞吐量。
附图简要说明
本发明通过示例进行说明且不局限于附图中的图表,其中类似的参考号指示类似的单元,而且附图包含:
图1是一个示范性的分布式存储器、高速缓存相干的、多处理器***的框图,在该***中依据一个实施例,有序的I/O事务可以被有效地流水线处理。
图2一个实施例中的输入/输出桥接器的框图,该输入/输出桥接器提供用于有序I/O事务的有效流水线处理而且可以在图1中的***中使用。
图3是一个流程图,说明了图2中的预取引擎的操作。
图4是一个流程图,说明了图2中的退出引擎的操作。
图5是一个流程图,说明了一个用于流水线处理有序I/O事务的实施例的一种方法。
详细说明
描述了一种用于在一个分布式存储器、高速缓存相干***中流水线处理有序输入/输出(I/O)事务的方法和装置。在下面说明中,为了说明起见描述了特定类型的集成电路、***与电路配置。然而,将要理解:其它实施例适用于其它类型的集成电路,以及以另一种方式配置的电路和/或***。
对于一个实施例,响应于来自一条输入/输出总线、指向一个分布、相干存储器的第一事务,一个预取引擎从一个分布、相干存储器中预取数据。一个相干高速缓存缓冲器接收该预取的数据并且和该分布、相干存储器以及在该***中的其它相干高速缓存存储器保持相干。
图1是一个框图,显示一个其中可以有利地使用本发明的一个实施例的示例计算机***100。计算机***100是一个分布式存储器、高速缓存相干、多处理器***。该示例***100包含处理结点105和110,这些结点可以被包含在大量处理结点当中。在***100中还包含一个互连网络115和一个输入/输出(I/O)节点120。
每一个处理结点105和110都包含一个或多个处理器125来处理指令、分别包含一个或多个芯片组部件130和135、以及分别包含一个或多个本地存储器140和145。芯片组部件130和135可以执行诸如,例如用于相应节点的存储器控制、多路处理支持和/或高速缓存相干性维护的功能。一个或多个处理器125可以每个都包含或者与一个高速缓冲存储器147相连。用于一个实施例的高速缓存存储器147是互相相干的,而且在这个示例中,具有由存储器140和145实现的分布、相干存储器。
一个实施例中的存储器140和145一起操作作为一个分布、相干主存储器。每一个存储器140和145可以是一个同样包含非相干区域的大存储器的一部分或者一个区域。对于一个实施例,使用众所周知的MESI(修改、排它、共享或者无效)状态协议结合相干***互连总线160、165和/或170,保持在高速缓存存储器147和存储器140和145之间的相干性。相干***互连总线160、165和170经由互连网络115在处理结点105和110以及I/O节点120之间通信信息,以便在各个存储器140、145和在I/O节点120中的相干高速缓存缓冲器之间保持相干性,将在下面对该I/O节点120进行更详细的描述。对于一个实施例,依据在处理结点和I/O节点之间的通信事务,相干***互连总线160、165和170是没有次序限制的点到点互连。
可以提供互连网络115来在该I/O节点120和诸如处理结点105和110的处理结点之间通信消息。对于一个实施例,互连网络115没有保持在该I/O节点120和一个或多个处理结点105和110之间通信的信息当中的次序。
该I/O节点120包含一个I/O桥接器150来把一个或多个I/O总线155,诸如,例如一个***设备部件互连(PCI)总线,和处理结点105和110接口。下面参见图2对一个实施例中的I/O桥接器120的更多细节进行描述。
就其它实施例来说,可以以其它方式配置***100。例如,芯片组和/或存储器可以被包含在一个或多个处理器125内,和/或互连网络115可以不被包含在内。此外,可以依据不同的协议和/或使用不同类型的互连方法维持存储器的相干性。其中在I/O总线和存储器之间不止一条路径的其它类型的***配置也在各种实施例的范围内。
图2是I/O桥接器250的框图,该I/O桥接器250可以用于一个实施例以实现图1中的I/O桥接器150。I/O桥接器250包含一个或多个I/O高速缓存缓冲器205、一个或多个I/O事务请求缓冲器210、一个预取引擎215和一个退出引擎220。还可以包含其它电路,诸如其它I/O事务处理、缓存和控制电路(未显示)。
如以下更详细描述得那样,高速缓存缓冲器205包含地址、数据和状态字段,而且被用来响应于一个或多个I/O事务请求存储预取的数据,以便于I/O事务请求的流水线操作。地址字段指示在相应数据字段中的数据保存在存储器中那个位置的地址。保持一个实施例中的高速缓存缓冲器205与其中包含I/O桥接器250的***中的其它相干存储器的相干。例如,在I/O桥接器250被包含在图1的***100中的场合,保持高速缓存缓冲器205与分布式的相干存储器140和145、以及相干高速缓冲存储器147相干。因此,I/O高速缓存缓冲器205中的状态字段被用于指示在相应数据字段中的数据的相干性状态(例如,用于一个其中使用了MESI协议的实施例的M(修改)、E(排它的)、S(共享)或者I(无效))。
提供了I/O事务请求缓冲器210(在此也被称为I/O请求缓冲器),以存储从一条或多条I/O总线255送往根据图1描述的分布式的相干存储器的事务请求。另一方面,这种请求在此可以被称为入站相干请求或者入站相干I/O请求。
就一个实施例来说,I/O事务请求缓冲器210可以用来存储所有的1/O事务请求,不管它们是否被送往相干的存储器区域。没有被送往相干存储器的I/O请求在此被称为非相干的事务请求,而且可以包含,例如I/O端口访问、配置访问、中断、和/或诸如锁定之类的特定事务。此外,甚至某些被送往相干存储器区域的I/O事务可以被分类为非相干的事务。例如,在锁定序列期间对相干存储器的存储器访问可以被分类为非相干的事务。
所希望的相干高速缓存缓冲器和/或输入/输出请求缓冲器的大小可以通过均衡所希望的对存储器的延迟和I/O吞吐量相对于用于缓冲器的可用空间来确定。
此外,就某些实施例来说,对写或者读多行存储器的一个I/O事务请求可以作为单个事务被保存在I/O事务请求缓冲器210中,但是作为多个单线事务在存储器行边界处由预取和退出引擎进行处理。就这样一个实施例来说,这些单线事务中每一个的处理是依据如下所述的用于单个单线事务的方法进行的。
一个实施例中的I/O事务请求缓冲器210包含地址、数据和控制字段。地址字段指示与请求有关的地址,诸如一个将被访问的存储器地址。数据字段提供了在写请求时将被写入到存储器中、或是在读请求时将被写入到用于返回数据的位置的相应数据,而控制字段可以用来指示相对指令排序信息、请求类型和/或与I/O事务请求有关的附加信息。
在I/O请求缓冲器210存储了来自I/O总线255的相干和非相干的I/O事务请求的场合,事务的类型可以由与该事务有关的地址、请求类型和/或在控制字段中的控制信息来确定。
就一个实施例来说,I/O桥接器250为每条连接到I/O桥接器250的不同I/O总线255包含一个类似于I/O请求缓冲器210的单独的I/O请求缓冲器。就另一个实施例来说,提供了单个I/O请求缓冲器210,以暂时地存储从连接到I/O桥接器250的所有I/O总线255接收的I/O事务请求。就这个实施例来说,I/O事务请求缓冲器210的控制字段还可以指示从其接收事务的那条总线。就一个替换实施例来说,I/O桥接器250可以包含不同数目的类似于I/O事务请求缓冲器210的I/O事务请求缓冲器,其中一个或多个缓冲器由多条I/O总线255共享。
类似地,高速缓存缓冲器205可以包含多个高速缓存缓冲器或者单个高速缓存缓冲器。
预取引擎215和退出引擎220可以使用两个单独的电路块来实现,或者它们可以被组合起来以提供如下所述的功能。
在操作中,来自一条或多条I/O总线255的入站I/O事务请求被暂时地保存在I/O事务请求缓冲器210中。就一个实施例来说,I/O事务请求缓冲器210被实现为一个先进先出(first-in-first-out,FIFO)缓冲器,以便使输入的事务以它们从I/O总线255中接收的顺序被保存在缓冲器中,而且事务排序不需要被另外指示。就另一个实施例来说,可以在例如控制字段中指示相对的事务顺序。
预取引擎215然后操作用于允许把事务请求流水线处理到相干存储器。预取引擎通过执行与在I/O事务请求缓冲器210中的事务有关的数据的非汇集预取、然后把预取的数据存储在I/O高速缓存缓冲器205中,这样进行操作。可以在另一个事务正被处理的同时,或者在等待对前一预取操作的响应的同时,执行这个数据预取。此外,预取引擎215可以预取与在I/O事务请求缓冲器中的任何相干事务请求有关的数据,而不考虑它被接收的顺序。以这种方法,启用了流水线操作。结合图2和3更详细地描述一个实施例中预取引擎215的操作。
如图3的块305所示,预取引擎215首先从I/O事务请求缓冲器210中选择一条相干请求。可以使用多种方法中的任何一种来选择将被预取引擎215进行操作的待处理相干请求。例如,预取引擎215可以仅仅选择在缓冲器210中的下一条待处理请求。如果有多个I/O事务请求缓冲器,则预取引擎215可以使用例如一种时间分割方法,以选择在一个缓冲器中的下一条待处理相干请求。做为选择,由对在其上进行操作的下一条待处理相干请求的预取引擎进行的选择可以是任意的。然而,无论使用了什么方法,预取引擎215都不需要遵守在选择待处理请求或者在执行预取操作中的排序要求。
此外,就一个实施例来说,如果例如另外预取引擎215是空转的(例如,在I/O事务请求缓冲器210中没有待处理的事务请求),则预取引擎215可以推测地预取数据。就这个实施例来说,预取引擎215可以使用多种方法中的任何一种,以确定将被推测性地预取用于一个预期的I/O事务的数据。例如,预取引擎215可以预取继刚好被预取的数据之后的下一存储器行或者多行。以这种方法,如果一个即将到来的入站I/O事务请求指示顺序地继前一请求之后的数据,则该数据将会是立即可用的。其它用以确定数据以推测性地预取的方法在各种
实施例的范围之内。
在判定块310,确定所选择的相干请求是读请求还是写请求。如果例如预取引擎215正对一条待处理读请求进行操作,则在块315,预取引擎215确定所请求的存储器行的有效拷贝在I/O高速缓存缓冲器205中是否可用。如果是这样的话,则预取引擎在块320继续确定在I/O事务请求缓冲器210中是否有更多的待处理请求,而且可以在块305继续预取与在I/O事务请求缓冲器210中的其它待处理请求有关的数据。
在判定块315处,如果该请求存储器行的一个有效拷贝不在该本地I/O高速缓存缓冲器205中可用,然后,在块325处,预取引擎215在相干***互连270上发布一个读取请求以预取要被读取的存储器请求行。在该I/O桥接器250被包含在一个类似于图1中的***100的***中的地方,在相干***互连270上发布的读取请求,经由与各个***处理结点相连的相干***互连总线,通过互连网络传递到该***的分布式、相干存储器处。在包含I/O桥接器250的***以一种不同的方式被配置的地方,在该相干***互连上发布的读取请求可以经由一种不同的路由达到分布式、相干存储器。
这个预取操作,以及由一个实施例的预取引擎215执行的其它预取操作,是一个非汇集的预取操作。在这个环境中的非汇集意思指,如果经由相干***互连270从在该***中的某些其它存储器/高速缓存代理接收一个进来的探听请求,而且这个探听请求命中在该I/O高速缓存缓冲器205中的一行,则遵循用于分布式、相干存储器的存储器/高速缓存相干协议(用于一个实施例的MESI协议)。因此,在相应事务请求的预取操作和退出之间,保存在I/O高速缓存缓冲器205中的预取存储器行可以是无效的及/或I/O高速缓存缓冲器205可以失去该行的所有权。根据退出引擎220的操作在下面更详细地讨论解决这个问题的方法。
继续参见图2和3,在从该相干***互连等待着一个响应的同时,预取引擎215可以在块320处继续进行以确定在该I/O事务请求缓冲器210中是否有更多的等待请求或者是否推测地预取附加的数据。预取引擎能因此响应于在I/O事务请求缓冲器210中的其它等待请求,以如上所述的方法继续预取数据或者推测地预取数据。
在块330处,当经由该相干***互连170接收请求的数据时,预取引擎215在I/O高速缓存缓冲器205中把这个数据指定到一个共享状态中。这通过在该I/O高速缓存缓冲器205的地址字段中指示与该数据有关的存储器地址、在相应的数据字段中指示请求的数据,以及在相应状态字段中指示高速缓存相干性状态(在这种情况中为共享),来完成。
回过来参考判定块310,如果选择的请求代之以一个写请求,则在块335处,预取引擎215确定该I/O高速缓存缓冲器205是否拥有对应于该写请求的存储器行的一个排它拷贝(例如,利用MESI协议,这个所有权由一个E或者M状态指示)。如果是这样的话,则在块320处,如先前描述的那样,预取引擎215可以如上所述,继续预取对应于其它待定请求的数据或者推测地预取数据。
如果,在判定块335处,I/O高速缓存缓冲器205不拥有与该写请求有关的特定存储器行的一个排它拷贝,则在块340处,预取引擎215发布一个请求以经由该相干***互连270预取该存储器行的所有权。对于一个实施例,取决于该写请求是否是一个部分行写请求或者全行写请求,那请求的形式可以不同。例如,对于一次全行写请求,预取引擎可以发布一个无效请求以无效该存储器行的其它拷贝而没有读取该存储器行的内容,同时对于一个部分行写请求,预取引擎可以发布一个所有权读取请求,其使该存储器行的其它拷贝无效并且返回该存储器行的内容。
类似于读取请求,在等待在互连270上的探听响应的同时,预取引擎215可以继续预取与其它待处理I/O事务请求有关的数据。
在块345处,当接收到一次探听响应时,预取引擎在I/O高速缓存缓冲器205中把请求的存储器行指定到一个排它状态中(即,例如,根据MESI协议的“E”状态)。一个实施例的方法则在块320处继续进行以确定是否有更多的待处理I/O请求要在其上面进行操作。
并行于预取引擎215进行的上述动作,一旦事务请求已经完成了,则退出引擎220进行操作以按次序从I/O事务请求缓冲器210中退出I/O事务请求。参见图2和4对一个实施例的退出引擎215的操作进行描述。
在块405处,退出引擎220从I/O事务请求缓冲器210中按次序选择下一个事务来退出。对于一个实施例,退出引擎220可以严格地以它们从一条特定I/O总线接收的次序退出事务请求。对于另一个实施例,退出引擎220可以依据为偏离该事务被接收的次序而准备的特定排序规则退出事务请求。对于一个实施例,这些次序要求可以在该事务本身中指定,然后依据一个状态机,例如,在退出引擎220中处理。
例如,对于一个实施例,具有可在该I/O高速缓存缓冲器205中得到的相应数据的一个读取事务请求可以在一个较早接收的、读取事务请求之前退出,因此一个后续的读取请求有效地超越一个未完成的、先前读取请求。对于这个相同的实施例,然而,一个读取请求可以不在一个较早接收的写请求之前被退出。可以在该退出引擎上面施加其它类型的排序规则以保证不从该***中任何存储器中写入错误数据或者从中读出错误数据。退出指令以防止错误读取或者写入事务的次序在此被称为程序次序。
此外,如上所述,对于一个实施例,I/O事务请求缓冲器210还可以存储非相干的I/O事务请求。对于这样一个实施例,由退出引擎220保持的退出次序还包含按次序退出非相干的I/O事务请求。
在块410处,一旦已经选择了要被退出的I/O事务请求,则退出引擎220在块415处确定该事务是否是一个读取事务或者写入事务。如果该事务是一个读取事务,则在块420处,退出引擎220确定与该事务有关的存储器行是否在该I/O高速缓存缓冲器205中存在和有效。如果是这样的话,则在块425处,来自I/O高速缓存缓冲器205的相应数据经由I/O总线255中的相应一条返回到请求的I/O代理。
如果,在判定块420处,确定相应存储器行在I/O高速缓存缓冲器205中不存在或者是无效的(如上所述,可能由于在该***中另一个高速缓存代理的探听请求),则在块440处,退出引擎在相干***互连270上发布一个读取请求以取出对应于该事务请求的存储器行。一旦请求的数据已经经由相干***互连270返回到I/O桥接器250,则在块425处把该数据提供到请求I/O代理。
在块430处,一旦已经为该I/O事务请求进行了服务,则从该I/O事务请求缓冲器210中删除它。这可以以许多方式中的任何一种完成。对于一个实施例,例如,删去在该I/O事务请求缓冲器210中的条目。对于另一个实施例,通过仅仅使用一个标记或者另一种方法,可以使在该缓冲器210中的该行可用于一个后续的条目以便它被改写。
回过来参见判定块415,如果要被退出的I/O事务请求代之以是一个写请求,则在判定块445处,确定I/O高速缓存缓冲器205是否拥有在一个排它状态中的相应存储器行(即,依据MESI协议的一个M或者E状态)。如上所述,即使该存储器行的所有权被先前预取了,I/O高速缓存缓冲器205也可以在存储器行被预取的时间和事务请求被退出的时间之间已经失去了该行的所有权。这可以是因为,例如,来自在该***中的另一个高速缓存代理的一个中间探听操作命中在该I/O高速缓存缓冲器205中请求的高速缓存行。
如果I/O高速缓存缓冲器205拥有在一个排它状态中的存储器行,则在块450处,依据写入请求在I/O高速缓存缓冲器205中更新与存储器行有关的数据而且该行的状态被标记为修改了。(要被写入到符合该写入请求存储器行中的数据可以,例如,在写到在该I/O高速缓存缓冲器205中的存储器行中之前,已经被暂时地保存在一个写入缓冲器(没有显示)中)。
如果该写入请求是一个全行写入请求,则整行数据,依据该写入请求,被简单地写到在I/O高速缓存缓冲器205中的相应条目的数据字段中。如果,代之以,写入请求是一个部分行写入请求,则要被写入的数据可以以本技术领域技术人员众所周知的方式与当前在该I/O高速缓存缓冲器205相应行中的数据合并。
对于一个实施例,为了允许更好地跟踪I/O高速缓存缓冲器205的状态,如果例如响应于任何取出、预取或者获得所有权操作,作为添加新条目替换在该I/O高速缓存缓冲器205中修改了的行,则该I/O桥接器250经由相干***互连270发送一个请求来恰当地更新在该分布存储器中的行。如果例如响应于一次预取操作替换在该I/O高速缓存缓冲器205中的一个干净行(即,当前没有数据被保存在那个高速缓存行中),则I/O桥接器250经由相干***互连270发送一个探听请求来向跟踪在该***中的高速缓存缓冲器状态的实体指示这个动作。可以例如,通过包含在该I/O桥接器(没有显示)内的其它相干性控制逻辑发送这些探听请求。这个其它相干性控制逻辑还可以响应于其它动作类型执行诸如探听的功能,及/或解释与在该***中的I/O高速缓存缓冲器205和/或其它高速缓存代理有关的相干性状态。
继续参考图2和4,在判定块445处,如果该I/O高速缓存缓冲器205不拥有对应于在一个排它状态中的写入请求的存储器行,则在块455处,退出引擎220以类似于上述描述相应预取操作的方式、经由该相干***互连请求和获取该存储器行的所有权。退出引擎然后也以如上所述在块450处继续进行,以对于每个被退出的写入请求更新在高速缓存缓冲器205中的数据。
在块430处,一旦已经完成了该请求,则从该I/O事务请求缓冲器210中删除该请求。
在判定块435处,确定在I/O事务请求缓冲器210中是否有更多的待定请求。如果是这样的话,则以一种类似的方式处理和退出它们。
使用上述方法,有可能在一个在I/O总线和存储器之间有多条路径的***中(例如,在一个具有分布式、相干存储器的***中)流水线处理有序的I/O事务请求。通过一个响应于来自一条或多条I/O总线的相干存储器访问请求而执行非汇集、无序预取操作的预取引擎部分地便于这个流水线处理。另外,上述本地I/O高速缓存缓冲器通过存储该预取操作的结果,同时保持和剩余分布式存储器子***和高速缓存存储器的相干性,来帮助该流水线操作。同在一个多处理器、分布式的存储器、高速缓存相干***中处理I/O事务的先前方法相比,允许I/O请求流水线处理可以提高I/O吞吐量,而且因此提高了总体***性能。
图5是一个流程图,说明了一个用于流水线处理有序I/O事务的实施例中的一种方法。在块505处,从一条I/O总线送往一个分布式相干存储器的I/O事务为缓存。在块510处,响应于第一个缓存的输入/输出事务从该分布式、相干存储器中预取数据,并且在块515处暂时地把数据存储。在块520处,在该预取数据和保存在该分布式、相干存储器及其它高速缓存存储器中的数据之间保持相干性,并且在块525处,按次序退出缓存的I/O事务。将要理解:对于其它实施例,该方法可以仅仅包含如上所述的某些动作或者可以包含没有在上面所述的附加动作。此外,这些动作中的一个或多个可以以一种不同于上面所述的次序执行或者和上面所述的另一个动作同时执行。
在上述说明中,已经结合其中的具体实施例对本发明进行了描述。然而,可以理解:可以在这里进行各种修改和变化,而没有背离由附加权利要求书所阐述的、本发明更为广泛的精神和范围。因此,说明书和附图只是说明性的,而没有限制意义。

Claims (26)

1.一个装置,包含:
一个响应于从一条输入/输出总线送往一个分布式、相干存储器的第一事务从该分布式、相干存储器中预取数据的预取引擎;以及
一个接收该预取的数据的输入/输出相干高速缓存缓冲器,该相干高速缓存缓冲器和该分布式相干存储器以及在一个包含该输入/输出相干高速缓存缓冲器的***中的其它高速缓存存储器相干。
2.如权利要求1所述的装置,其特征在于:由该预取引擎执行的预取操作是一次非汇集的预取操作,因此由该相干高速缓存缓冲器接收的预取数据可以由在该分布式相干存储器中的存储器改变。
3.如权利要求2所述的装置,其特征在于:第一事务请求是一个存储器读取请求而且该预取引擎响应于该第一事务请求发布一个读取请求来从该分布式、相干存储器中预取要读取的数据。
4.如权利要求2所述的装置,其特征在于:第一事务请求是一个存储器写入取请求而且该预取引擎发布一个请求来预取在该分布式、相干存储器中的一个存储器行的所有权,该存储器行由第一事务请求所指示。
5.如权利要求1所述的装置,进一步包含:
一个暂时地存储从输入/输出总线接收,送往分布式、相干存储器的事务请求的输入/输出事务请求缓冲器。
6.如权利要求5所述的装置,其特征在于:该预取引擎响应于保存在输入/输出事务请求缓冲器中的事务请求预取数据。
7.如权利要求6所述的装置,其特征在于:
该预取引擎响应于保存在输入/输出事务请求缓冲器中的事务请求,而不考虑该事务请求从输入/输出总线接收的次序,预取数据。
8.如权利要求5所述的装置,进一步包含:
一个在事务请求已经完成了之后以程序次序退出保存在该事务请求缓冲器中的输入/输出事务请求的退出引擎。
9.如权利要求8所述的装置,其特征在于:
该退出引擎进一步检查该输入/输出相干高速缓存缓冲器以确定与要被退出的一个输入/输出事务请求有关的数据以一种有效状态是否存在于输入/输出相干高速缓存中。
10.如权利要求1所述的装置,其特征在于:
使用MESI协议在输入输出相干高速缓存和该分布式、相干存储器之间保持相干性。
11.一种方法,包含:
响应于从一条输入/输出总线接收并且送往一个分布式、相干存储器的第一输入/输出事务请求,预取数据;
临时地存储该预取的数据;以及在预取的数据和保存在该分布式、相干存储器中的数据以及保存在其它高速缓存存储器中的数据之间保持相干性。
12.如权利要求11所述的方法,进一步包含:缓存从输入/输出总线接收,送往分布式、相干存储器的输入/输出事务请求。
13.如权利要求12所述的方法,进一步包含:响应于第二和第三缓存的输入/输出事务预取数据,其中响应于第一、第二和第三缓存的输入/输出事务预取数据可以以任何次序执行。
14.如权利要求12所述的方法,进一步包含:
缓存的输入/输出事务由输入/输出总线发布的次序退出。
15.如权利要求14所述的方法,其特征在于:
退出包含检查临时存储的、预取的数据,以确定对应于要被退出的事务请求的有效数据是否被临时存储了。
16.如权利要求11所述的方法,其特征在于:保持相干性包含使用一个MESI协议保持相干性。
17.如权利要求11所述的方法,其特征在于:
预取包含响应于第一事务请求发布一条数据请求;以及
接收请求的数据。
18.如权利要求17所述的方法,其特征在于:
响应于从输入/输出总线接收并且送往该分布式、相干存储器的第二输入/输出事务请求预取数据出现在发布该请求和接收请求的数据之间。
19.一个计算机***,包含:
每个都包含至少一个处理器和至少一个高速缓存代理的第一和第二处理结点;
一个分布式相干存储器,其中该分布式相干存储器中的部分被包含在每一个第一和第二处理结点内;以及
一个与第一和第二处理结点相连的输入/输出节点、该输入/输出节点包含:
一个响应于从第一条输入/输出总线送往该分布式、相干存储器的第一事务,从该分布式、相干存储器中预取数据的预取引擎;以及
一个接收该预取的数据的输入/输出相干高速缓存缓冲器,该相干高速缓存缓冲器和该分布式相干存储器以及高速缓存代理相干。
20.如权利要求19所述的计算机***,进一步包含:
一个相干***互连以把每一个第一和第二处理结点连接到输入/输出节点,该相干***互连来传递信息以保持该分布式,相干存储器的相干性以及保持在该输入/输出相干高速缓存缓冲器和该分布式相干存储器之间的相干性。
21.如权利要求20所述的计算机***,其特征在于:依据一个MESI协议保持相干性。
22.如权利要求19所述的计算机***,进一步包含:
一个互连网络,以在第一和第二处理结点以及输入/输出节点之间传递信息。
23.如权利要求19所述的计算机***,进一步包含:
一个连接在第一和第二处理结点以及多个输入/输出总线之间的输入/输出桥接器,多个输入/输出总线包含第一输入/输出总线,该输入/输出桥接器包含预取引擎和输入/输出相干高速缓存缓冲器。
24.如权利要求22所述的计算机***,其特征在于:该输入/输出桥接器进一步包含:
至少一个输入/输出事务请求缓存器,来临时地存储从多个输入/输出总线接收、送往该分布式、相干存储器的输入/输出事务请求。
25.如权利要求24所述的计算机***,其特征在于:
该预取引擎响应于保存在输入/输出事务请求缓冲器中的事务请求,而不考虑该事务请求被存储的次序,预取数据。
26.如权利要求24所述的计算机***,其特征在于:该输入/输出桥接器进一步包含:
一个退出引擎,为对应于要被退出的一个事务请求的有效数据进一步检查输入输出相干高速缓存缓冲器,
该退出引擎以程序次序退出保存在输入/输出事务请求缓存器中的事务请求。
CNB018173098A 2000-08-21 2001-08-14 用于流水线处理有序的输入/输出事务的设备、方法和计算机*** Expired - Fee Related CN1297903C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/643,380 2000-08-21
US09/643,380 US7124252B1 (en) 2000-08-21 2000-08-21 Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system

Publications (2)

Publication Number Publication Date
CN1470019A true CN1470019A (zh) 2004-01-21
CN1297903C CN1297903C (zh) 2007-01-31

Family

ID=24580571

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018173098A Expired - Fee Related CN1297903C (zh) 2000-08-21 2001-08-14 用于流水线处理有序的输入/输出事务的设备、方法和计算机***

Country Status (9)

Country Link
US (1) US7124252B1 (zh)
EP (1) EP1311956B1 (zh)
KR (1) KR20030024895A (zh)
CN (1) CN1297903C (zh)
AT (1) ATE526630T1 (zh)
AU (1) AU2001281273A1 (zh)
HK (1) HK1052774B (zh)
TW (1) TW542958B (zh)
WO (1) WO2002017086A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346318C (zh) * 2004-04-20 2007-10-31 国际商业机器公司 根据存储器占用动态调整预读值的***和方法
CN102014163A (zh) * 2010-12-08 2011-04-13 云海创想信息技术(北京)有限公司 一种基于事务驱动的云存储测试方法及***
CN102591829A (zh) * 2010-12-06 2012-07-18 索尼公司 互连装置和用于其的控制方法
CN102591829B (zh) * 2010-12-06 2016-11-30 索尼公司 互连装置和用于其的控制方法
CN108288484A (zh) * 2017-01-10 2018-07-17 爱思开海力士有限公司 包括多个平面的非易失性存储器件
CN110268390A (zh) * 2017-02-08 2019-09-20 Arm有限公司 相干互连***中的读取交易***生命期
CN112602067A (zh) * 2018-08-27 2021-04-02 高通股份有限公司 用于预取存储指令的独占高速缓存一致性状态的方法、装置和***

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040022022A1 (en) * 2002-08-02 2004-02-05 Voge Brendan A. Modular system customized by system backplane
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US6993540B2 (en) * 2002-12-20 2006-01-31 Intel Corporation Prefetching memory objects into a shared cache during garbage collection with a three-finger Cheney scan in a multithreaded processing environment
US7200718B2 (en) * 2004-04-26 2007-04-03 Broadband Royalty Corporation Cache memory for a scalable information distribution system
US20060179173A1 (en) * 2005-02-02 2006-08-10 Bockhaus John W Method and system for cache utilization by prefetching for multiple DMA reads
US7840752B2 (en) * 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
US7930459B2 (en) * 2007-09-28 2011-04-19 Intel Corporation Coherent input output device
US8200905B2 (en) * 2008-08-14 2012-06-12 International Business Machines Corporation Effective prefetching with multiple processors and threads
US8688893B2 (en) 2009-06-23 2014-04-01 Intel Mobile Communications GmbH Memory device and memory interface
US8898287B2 (en) * 2010-02-24 2014-11-25 Salesforce.Com, Inc. System, method and computer program product for monitoring data activity utilizing a shared data store
US9690679B2 (en) 2011-10-31 2017-06-27 Hewlett Packard Enterprise Development Lp Transaction commitment and replication in a storage system
WO2013101213A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Method and apparatus for cutting senior store latency using store prefetching
JP6139689B2 (ja) * 2012-10-22 2017-05-31 インテル・コーポレーション 装置
US20140114928A1 (en) * 2012-10-22 2014-04-24 Robert Beers Coherence protocol tables
US8938561B2 (en) * 2013-01-10 2015-01-20 Skymedi Corporation Time-sharing buffer access system
US9569362B2 (en) * 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US10180796B2 (en) * 2015-10-16 2019-01-15 SK Hynix Inc. Memory system
EP3835959A4 (en) * 2018-08-24 2021-11-10 Huawei Technologies Co., Ltd. DATA PRE-EXTRACTION PROCESS AND DEVICE
US20230185715A1 (en) * 2021-12-13 2023-06-15 Relativity Oda Llc Queue optimization via predicitve caching in cloud computing

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049847A (en) 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5875349A (en) 1996-12-04 1999-02-23 Intersect Technologies, Inc. Method and arrangement for allowing a computer to communicate with a data storage device
US5809536A (en) 1996-12-09 1998-09-15 Intel Corporation, Inc. Method for reducing the number of coherency cycles within a directory-based cache coherency memory system uitilizing a memory state cache
US6085263A (en) 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US6058461A (en) * 1997-12-02 2000-05-02 Advanced Micro Devices, Inc. Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
US5948095A (en) * 1997-12-31 1999-09-07 Intel Corporation Method and apparatus for prefetching data in a computer system
US6581129B1 (en) * 1999-10-07 2003-06-17 International Business Machines Corporation Intelligent PCI/PCI-X host bridge
US6718454B1 (en) * 2000-04-29 2004-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for prefetch operations to reduce latency associated with memory access

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346318C (zh) * 2004-04-20 2007-10-31 国际商业机器公司 根据存储器占用动态调整预读值的***和方法
CN102591829A (zh) * 2010-12-06 2012-07-18 索尼公司 互连装置和用于其的控制方法
CN102591829B (zh) * 2010-12-06 2016-11-30 索尼公司 互连装置和用于其的控制方法
CN102014163A (zh) * 2010-12-08 2011-04-13 云海创想信息技术(北京)有限公司 一种基于事务驱动的云存储测试方法及***
CN102014163B (zh) * 2010-12-08 2013-06-05 云海创想信息技术(北京)有限公司 一种基于事务驱动的云存储测试方法及***
CN108288484A (zh) * 2017-01-10 2018-07-17 爱思开海力士有限公司 包括多个平面的非易失性存储器件
CN108288484B (zh) * 2017-01-10 2021-05-25 爱思开海力士有限公司 包括多个平面的非易失性存储器件
TWI735703B (zh) * 2017-01-10 2021-08-11 韓商愛思開海力士有限公司 包括多個平面的非揮發性記憶體裝置
CN110268390A (zh) * 2017-02-08 2019-09-20 Arm有限公司 相干互连***中的读取交易***生命期
CN110268390B (zh) * 2017-02-08 2023-09-01 Arm有限公司 相干互连***中的读取交易***生命期
CN112602067A (zh) * 2018-08-27 2021-04-02 高通股份有限公司 用于预取存储指令的独占高速缓存一致性状态的方法、装置和***

Also Published As

Publication number Publication date
EP1311956A2 (en) 2003-05-21
US7124252B1 (en) 2006-10-17
ATE526630T1 (de) 2011-10-15
CN1297903C (zh) 2007-01-31
KR20030024895A (ko) 2003-03-26
HK1052774B (zh) 2012-05-18
HK1052774A1 (en) 2003-09-26
WO2002017086A2 (en) 2002-02-28
EP1311956B1 (en) 2011-09-28
WO2002017086A3 (en) 2002-11-07
AU2001281273A1 (en) 2002-03-04
TW542958B (en) 2003-07-21

Similar Documents

Publication Publication Date Title
CN1297903C (zh) 用于流水线处理有序的输入/输出事务的设备、方法和计算机***
US11693791B2 (en) Victim cache that supports draining write-miss entries
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
US6751710B2 (en) Scalable multiprocessor system and cache coherence method
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
US7827354B2 (en) Victim cache using direct intervention
US6622217B2 (en) Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system
EP0349122B1 (en) Method and apparatus for filtering invalidate requests
US7469321B2 (en) Software process migration between coherency regions without cache purges
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US6816947B1 (en) System and method for memory arbitration
US7305523B2 (en) Cache memory direct intervention
US7340565B2 (en) Source request arbitration
US20120215988A1 (en) Administering Non-Cacheable Memory Load Instructions
EP1202180A1 (en) Scalar data cache for a vector processor
US20050144399A1 (en) Multiprocessor system, and consistency control device and consistency control method in multiprocessor system
US20060053255A1 (en) Apparatus and method for retrieving data from a data storage system
US6546465B1 (en) Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
JPH06318174A (ja) キャッシュ・メモリ・システム及び主メモリに記憶されているデータのサブセットをキャッシュする方法
CN1924833A (zh) 具有多阶快取架构的处理模块
US7406554B1 (en) Queue circuit and method for memory arbitration employing same
Tate Developing the Hatfield Superscalar architecture cache simulator

Legal Events

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

Granted publication date: 20070131

Termination date: 20170814