CN108415873B - 转发对监听请求的响应 - Google Patents
转发对监听请求的响应 Download PDFInfo
- Publication number
- CN108415873B CN108415873B CN201810101403.3A CN201810101403A CN108415873B CN 108415873 B CN108415873 B CN 108415873B CN 201810101403 A CN201810101403 A CN 201810101403A CN 108415873 B CN108415873 B CN 108415873B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- snoop request
- response
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004044 response Effects 0.000 title claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000003672 processing method Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 description 19
- 230000015654 memory Effects 0.000 description 15
- 238000000034 method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 6
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000002730 additional effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
本公开涉及转发对监听请求的响应。提供了一种数据处理装置,其包括用于接收关于代表请求节点的所请求的数据的监听请求的接收电路。监听请求包括对关于是否将要发生转发的指示。发送电路发送对监听请求的响应,并且缓存电路缓存至少一个数据值。当将要发生转发并且该至少一个数据值包括所请求的数据时,该响应包括所请求的数据并且发送电路将响应发送至请求节点。
Description
技术领域
本公开涉及数据处理。更具体地,本公开涉及缓存。
背景技术
在多处理器系统中,可能具有许多节点或处理器,每个节点或处理器具有它们自己的(一个或多个)缓存。这些节点可连接至一个或多个共享缓存或存储器。因此,特定数据值可位于共享缓存或存储器之一中或位于处理器之一的本地缓存中。因此,当节点想要访问数据值时,获得来自另一节点的数据有时为必要的。这通过请求器向所谓的归属节点发送请求来实现,这维持了整个系统中数据的一致性。随后归属节点向可能具有所请求的数据的节点发送一或多个监听请求。若那些节点中的一个具有数据,则它们可将数据返回至归属节点,该归属节点将数据返回至请求器。然而,此过程涉及若干通信的交换,其可能花费时间来解决。
发明内容
从第一示例性配置来看,提供了一种数据处理装置,包括:接收电路,用于接收关于代表请求节点的所请求的数据的监听请求,该监听请求包括对关于是否将要发生转发的指示;发送电路,用于发送对该监听请求的响应;以及缓存电路,用于缓存至少一个数据值,其中当将要发生转发并且该至少一个数据值包括该所请求的数据时,该响应包括该所请求的数据并且该发送电路将该响应发送至该请求节点。
从第二示例性配置来看,提供了一种数据处理装置,包括:接收电路,用于接收来自请求节点的关于所请求的数据的数据请求;以及发送电路,用于向另一节点发送监听请求,其中该监听请求包括:该请求节点的标识符、对该所请求的数据的引用、以及对当该所请求的数据被缓存在该另一节点处时,是否将直接从该另一节点到该请求节点发生转发的指示。
从第三示例性配置来看,提供了一种数据处理方法,包括:缓存至少一个数据值;接收关于代表请求节点的所请求的数据的监听请求,该监听请求包括关于是否将要发生转发的指示;以及发送对该监听请求的响应,其中当将要发生转发并且该至少一个数据值包括该所请求的数据时,该响应包括该所请求的数据并且将该响应发送至该请求节点。
附图说明
本发明将参照如附图所示的本发明的实施例来仅通过示例的方式进一步描述,在附图中:
图1示出了根据一个实施例的包括数据处理装置的系统;
图2示出了根据一个实施例的归属节点及两个请求器节点;
图3示出了根据一个实施例的归属节点与两个请求器节点之间的一系列事务;
图4示出了根据一个实施例的归属节点与两个请求器节点之间的一系列事务;
图5示出了根据一个实施例的归属节点与两个请求器节点之间的一系列事务;以及
图6以流程图形式示出了根据一个实施例的通过请求器节点进行数据处理的方法。
具体实施方式
在参照附图讨论实施例之前,提供了对实施例的以下描述。
根据一个示例性配置,提供了一种数据处理装置,包括:接收电路,用于接收关于代表请求节点的所请求的数据的监听请求,该监听请求包括对关于是否将要发生转发的指示;发送电路,用于发送对该监听请求的响应;以及缓存电路,用于缓存至少一个数据值,其中当将要发生转发并且该至少一个数据值包括该所请求的数据时,该响应包括该所请求的数据并且该发送电路将该响应发送至该请求节点。
根据上文,监听请求自身包括对是否将要发生转发过程的指示。此可以是将要发生转发(若默认为不执行转发)的指示或者将不发生转发(若默认为执行转发)的指示。当转发发生时,数据处理装置(其可以是另一主/请求节点并且在此描述中还称作响应节点)将所请求的数据(若存在)直接转发至发布对该数据的请求的请求节点。因此,若数据在响应节点处可用,则数据不需要被发送回归属节点并从归属节点前进到请求节点。因此,这使得可以减少当请求节点发布对由响应节点持有的数据的请求时所涉及的延迟。监听请求由归属节点响应于请求节点请求访问数据而生成。归属节点可以生成监听请求以确定数据是否由系统内的另一节点(诸如响应节点)持有。例如,从响应节点访问数据可能比经由主系统存储器来访问数据更快。
在一些实施例中,从归属节点接收该监听请求;并且当禁止发生转发时,该响应包括该所请求的数据并且该发送电路将该响应发送至该归属节点。当将不发生转发(通过默认或者通过指示)时,不是向请求节点转发响应,而是响应节点将响应发送至归属节点。
在一些实施例中,从归属节点接收该监听请求;并且当将要发生转发并且该至少一个数据值包括该所请求的数据时,该发送电路另外向该归属节点发送完成通知以指示已经完成该监听请求。除了将响应发送至请求节点之外,响应节点还可以向归属节点发送完成通知以指示已经通过由响应节点执行的转发动作完成了该监听请求。结果,归属节点不需要继续发布监听请求,并且可以避免需要访问主系统存储器以取回由请求节点初始请求的数据。
在一些实施例中,该监听请求包括对该请求节点的指示。通过在监听请求中包括对请求节点的指示,响应节点能够确定系统内的各个节点中的哪个节点最初请求了该数据。这使得在需要任意中间节点的情况下,响应节点可以直接将对监听请求的响应发送至相关的请求节点。所提议的方案允许互连(例如,归属节点)来使用其自己的标识符(不同于从请求节点120发送的标识符),以便与监听目标(例如,响应节点130)进行通信。为了使转发起作用,除其自身生成之标识符外,归属节点还必须包括由请求节点120生成的标识符。
在一些实施例中,从归属节点接收到该监听请求;该监听请求包括事务标识符以标识从该请求节点到该归属节点的使得生成该监听请求的事务;并且该响应包括该事务标识符。通过包括在监听请求中提供的事务标识符(该事务标识符进而包括来自由请求节点对归属节点做出的初始请求的事务标识符),由响应节点产生的响应可以与初始数据请求相关联。以这种方式,请求节点可以确定返回的数据与任意所请求的数据之间的关系。
在一些实施例中,该缓存电路包括与该至少一个数据值中的每一个相关联的缓存状态;并且该缓存状态指示数据值是下列项中的至少一项:无效、共享、自身、独占以及修改。提供各种缓存状态以便实现互连系统的各个节点之间的一致性。例如,缓存内的每个条目被提供有状态,该状态可用于指示整个系统内的数据的共享及/或修改的程度。例如,状态“无效”可用于指示缓存线不再无效并且可自由重写。缓存状态“共享”可指示数据值正在许多不同节点之间共享,但不可修改。状态“自身”可指示相关的缓存线在本地缓存中被修改。若数据尚未在存储器中更新,则此经修改的数据可与系统中的其他节点共享。状态“独占”可指以下事实:节点为系统中具有线的副本的唯一节点,但线尚未修改。最后,状态“修改”可指示节点具有系统中的缓存列的唯一副本,并且与系统中的主存储器相比,已经对该副本进行了修改。应理解,此处给出的状态仅为当前实施例能够使用的权限分配的示例。在其他实施例中,相同的权限分配可通过使用不同的缓存状态名称及/或标志来提供。例如,由英国剑桥ARM有限公司创造的AMBA规范描述了不同的分类,例如,“无效”、“原始/变更(clean/dirty)”、以及“唯一/共享”。这最后两个选项可组合成任意组合以提供总共五种不同的状态。在本描述的其余部分通篇,将使用AMBA缓存状态。然而,本领域普通技术人员将理解的是,还可使用替代/等效的缓存状态。
在一些实施例中,该监听请求指示是否将要发生转发,而不管与该所请求的数据相关联地储存在该数据处理装置处的状态。通过指示是否将要发生由响应节点执行的转发动作,并且通过这样做而不管与所请求的数据相关联地储存的状态,可以在不需要额外的储存条件的情况下执行转发操作。具体地,在一些实施例中,该监听请求指示是否将要发生转发,而不管与该所请求的数据相关联地储存在该缓存电路中的缓存状态。在这些实施例中,不需要添加另外的缓存状态以指示转发为可允许的或者已经发生。因此,由响应节点执行的转发操作与任何缓存状态无关。
在一些实施例中,该监听请求通过编码一种类型的该监听请求来指示是否将要发生转发。因此,作为由响应节点接收之该一种或多种监听请求的结果,此指示若数据存在于响应节点处则将要发生转发。
在其他实施例中,该监听请求通过该监听请求中的位来指示是否将要发生转发。通过在监听请求中使用位来指示若所请求的数据在响应节点处可用时是否将要发生转发,可提供高效的编码以便实现转发而不显著增加跨系统的流量。在包括许多节点的系统中或在频繁发送大量数据的情况下,这可能是重要的。
在一些实施例中,从归属节点接收到该监听请求;并且当该发送电路不能将该响应发送至该请求节点时,该发送电路将该响应发送至该归属节点。通过通知归属节点响应节点不能将对监听请求的响应发送至请求节点,归属节点能够采取额外动作以将所请求的数据提供至请求节点。例如,这可通过将额外的监听请求发送至系统内的其他节点,或通过将对该数据的请求发送至主存储器来实现。在一些其他实施例中,提供超时(time out),以便归属节点将推断监听请求已失败,除非归属节点被通知与此相反。然而,在此种实施例中,在可以获得关于监听请求的成功的任意结论之前,需要等待最小时间段(即超时时间)。
在一些实施例中,当将要发生转发并且该缓存电路缺乏该所请求的数据时,该发送电路将该响应发送至该请求节点以指示该所请求的数据不存在。此外,通过向归属节点提供响应节点不能通过将所请求的数据提供至请求节点来对监听请求做出响应的指示符,归属节点能够采取一些替代动作,例如,转发额外的监听请求或通过向主存储器发布对要提供的数据的请求。
在一些实施例中,除了将包括该所请求的数据的该响应发送至该请求节点之外,还根据该缓存状态中的至少一个以及一种类型的该监听请求来调整与该缓存电路中的该所请求的数据相关联的缓存状态。在一些情况下,监听请求可能导致与储存在响应节点的缓存电路中的所请求的数据相关联的缓存状态的变化。具体地,缓存数据的变化可取决于与接收监听请求之前的数据相关联的初始缓存状态以及进入监听请求的类型中的任一者或两者。可考虑这些因素中的每一个,以确定当发送对监听请求的响应时,与缓存电路中的所请求的数据相关联的新的缓存状态。
在一些实施例中,该种类型的该监听请求指示该请求节点用于缓存该所请求的数据的期望缓存状态。因此,监听请求可包括对输入数据的共享和修改的期望程度的指示。具体地,请求节点可能期望特定的数据段由请求节点唯一地持有,或请求节点可能对在共享状态下持有的数据感到满意。在任一情况下,所期望的缓存状态可以是确定如何修改与响应节点的缓存电路中的所请求的数据相关联的缓存状态的因素。
在一些实施例中,该响应指示该请求节点用于缓存该所请求的数据的所要求的缓存状态。对于监听请求所提供的响应可指示当所请求的数据被提供回请求节点时将针对该所请求的数据所使用的缓存状态。可以基于与请求节点处的数据相关联的初始缓存状态、与请求节点处的数据相关联的新的缓存状态、及由请求节点提供的任意所要求的缓存状态,来确定这样的所要求的缓存状态。
在一些实施例中,共享该所要求的缓存状态。换言之,由于转发,由响应节点提供的数据将由请求节点在共享状态下持有。因此,数据可由请求节点读取,但不能由该节点修改。
在一些实施例中,从归属节点接收到该监听请求;当该所请求的数据在该缓存电路中指示修改的缓存状态时,该所要求的缓存状态为原始(clean)并且该发送电路将另一响应发送至该归属节点;并且该另一响应包括该所请求的数据并且指示该所请求的数据被修改。响应节点处理其中它接收到关于数据的指示“修改”的缓存状态的监听请求的情况的一种有效方式,是响应节点使用先前提及的转发过程来对监听请求进行响应,以便将数据转发至请求节点。这可以使用所要求的“原始”的缓存状态来发送,以便请求节点不知道数据已被更改。在类似的时间,响应节点还可将另一响应发送至归属节点,以提供所请求的数据并还指示所请求的数据已经被修改。通常,这将导致归属节点尽力将经修改的数据写回至例如主系统存储器。因此,这可被实现而不必涉及请求节点,或者不必在数据可被提供至请求节点之前将数据写回至主系统存储器。因此,可以改善整个请求操作的延迟。
根据另一示例性配置,提供了:接收电路,用于接收来自请求节点的关于所请求的数据的数据请求;以及发送电路,用于向另一节点发送监听请求,其中该监听请求包括:该请求节点的标识符、对该所请求的数据的引用、以及对当该所请求的数据被缓存在该另一节点处时,是否将直接从该另一节点到该请求节点发生转发的指示。
当归属节点接收到来自请求节点的对数据的请求时,归属节点向系统内的一个或多个其他节点发布监听请求。被发送的监听请求包括对是否将要发生转发的指示。由此,监听请求的接收器可通过将所请求的数据(若存在)发至请求节点来对监听请求直接进行响应,而不是将数据发回至归属节点以发送至请求节点。
现将参照附图描述特定的实施例。
图1示出了数据处理系统100。在数据处理系统100内,具有归属节点110、第一请求节点120和第二请求节点130。第一请求节点120和第二请求节点130可以是互连内的归属节点。在此实施例中,第一请求节点120将称作请求节点,而第二请求节点130将称作响应节点。数据处理系统100中的节点110、120、130中的每一个都包括缓存。每个缓存被示出为具有三列。第一列表示数据值的地址,第二列表示数据值本身,并且第三列表示与该数据值相关联的缓存状态。在此实施例中,缓存状态符合在由英国剑桥ARM有限公司创造的AMBA规范中使用的那些缓存状态。这种缓存状态包括:“I”,指示特定条目为无效且可重写;“SD”,指示特定条目为共享并且变更(dirty)两者(即在更通用术语中,特定条目是该节点“自身”的,以使得该条目由其他节点共享但已经被本地地修改);“SC”,指示条目为共享且原始的(亦在更通用术语中,特定条目被“共享”,以使得该条目由系统中的其他节点共享且不可修改);以及“UC”,指示条目为唯一且原始的(即在更通用术语中,特定条目为“独占”的,以使得该条目由节点唯一地所有并且尚未被修改)。
如图1的实施例所示,节点120、130中的一个或多个可以访问其他节点不能访问的数据值。例如,请求节点120不能访问数据值0x0094,该数据值由响应节点130持有。类似地,响应节点130不能访问数据值0x0090,该数据值由请求节点120持有。因此,请求节点120期望访问数据值0x0094,则它必须向归属节点110发送请求,这维持在整个数据处理系统100的一致性以获得对该数据值的访问。
尽管未在图1中示出,但数据处理系统100还可包括经由归属节点110连接的主系统存储器。可以根据来自归属节点110的请求来从主系统存储器取回数据。然而,此过程可能是费时的,因为访问主系统存储器通常将比访问一个缓存更慢。
图2示意性地示出了数据处理系统100。在数据处理系统100内,具有归属节点110、第一请求节点120和第二请求节点/响应节点130。这些节点中的每一个都包括缓存140A、140B、140C;接收电路150A、150B、150C;及发送电路160A、160B、160C。
如前面提及的,请求节点120向归属节点110发布关于在请求节点120的本地缓存140A中未找到的一些期望的数据的请求消息。该请求消息由请求节点120的发送电路160A发送,并且由归属节点110的接收电路150B接收。在此时,归属节点110确定在哪里可以找到所请求的数据的最新版本。它确定该数据的最新版本可在响应节点130处找到。因此,它向响应节点130发布针对要提供的数据的监听转发请求消息。这由归属节点110的发送电路160B发送并且由响应节点130的接收电路150C接收。监听转发请求的细节将在下面参照图3更详细地讨论。当接收到监听转发请求时,响应节点130针对所请求的数据搜索其本地缓存140C。若找到所请求的数据,则作为指示将执行转发的转发指示的结果,请求节点130将尝试将该数据以响应的形式直接转发至第一请求节点120。该响应由响应节点130的发送电路160C发送并且由请求节点120的接收电路150A接收。
因此,来自请求节点120的所请求的数据可由响应节点130直接提供。具体地,在此实施例中,不需要将响应或所请求的数据提供回归属节点110,并且不需要归属节点110随后将数据返回第一请求节点120。以此方式,由于仅需要一个响应消息而不是需要两个响应消息,则可以改善延迟。
图3示出了数据处理系统100的三个节点之间的事务序列。X轴表示每个节点并且Y轴表示时间。初始地,请求节点120向归属节点110发布ReadShared消息。此指示请求节点120期望对特定数据值进行共享读取访问。当由归属节点110接收时,归属节点110向响应节点130发布SnpSharedFwd消息。该消息为监听转发请求消息,其首先指示请求节点120期望对特定数据值进行共享服务,并且其次指示将由响应节点130执行转发。消息包括指示初始请求的来源(请求节点120)的转发节点id。消息还包括与由请求节点120发布的初始请求消息相关联的事务id。具体地,由请求节点120发布的初始ReadShared消息与特定事务id(A)相关联。该事务id被包括作为监听请求转发消息的第二参数。最后,监听请求转发消息还包括其自身的事务id,B。当在响应节点130处接收到时,响应节点130确定是否存在所请求的数据。在此实施例中,假设存在数据值。由于请求节点120期望对数据值进行共享读取访问,因此与数据值相关联的缓存状态从唯一原始(UC)变为共享原始(SC)。此外,响应节点130将SnpResp_SC_Fwded_SC消息发布回归属节点110。第一SC指示响应节点130将副本保留为SC,并且第二SC指示SC副本已经被发送到请求节点120。该消息指示已经或将对监听请求进行响应,并且该监听请求已经以共享原始(SC)缓存状态被请求和提供。类似地,响应节点130发布对监听请求的响应。在此实施例中,响应以CompData_SC消息的形式被从响应节点130发送至请求节点120。响应节点130通过从归属节点110接收到的SnpSharedFwd消息而知道请求节点120的id的标识,该id的标识标识请求节点120。此响应消息包括归属节点110的标识符和正被响应的监听请求的事务id(B)作为参数。
因此,当请求节点120接收到此响应时,请求节点120已经成功地获得数据值。随后,请求节点120使用确认来对归属节点110作出响应。此确认包括由归属节点110发布的监听请求的事务id(B)以及归属节点110的标识符作为参数。一旦归属节点接收到此确认,则它知道数据已经由请求节点120成功地获取并且不需要采取另外动作来获取所请求的数据。若由响应节点130发布的该确认或监听响应未被归属节点110接收到,则归属节点110可推断所请求的数据尚未由请求节点120获得并且可能采取另外的动作。具体地,归属节点110可使用额外的监听请求来查询网络中的其他节点,或可以访问主系统存储器以获得正请求的数据。
为了维持一致性,提供了关于响应节点必须如何对接收到的不同类型的监听请求进行响应的许多规则。具体地,根据监听请求的类型(其指示请求节点想要一旦已经获取到数据就与数据相关联的缓存状态)以及由响应节点持有的数据的当前缓存状态,可以采取不同的动作或一系列动作。具体地,这些动作可以指定由响应节点持有的数据的缓存状态的变化。这些规则描述如下。此外,如已叙述的,基于由英国剑桥ARM有限公司创造的AMBA规范来提供这些规则。然而,本领域普通技术人员将认识到,可以使用其他等同的状态来设计等同的一组规则。
用于在响应节点130处处理转发类型监听的一般规则为:
·若线处于UD(唯一变更)、UC(唯一原始)、SD(共享变更)、或SC(共享原始)状态,则将副本转发至请求节点。
·不允许转换至相应的非转发类型监听。
·不响应于非无效监听类型转发处于唯一状态的数据。
·接收具有DoNotGoToSD位的监听请求的响应节点130不转换至SD(共享变更),即使一致性允许它这么做。
SnpSharedFwd
除了由接收SnpSharedFwd的响应节点130遵循的先前列出的一般规则之外的规则为:
·允许响应节点130转发处于SD(共享变更)、UC(唯一原始)、UD(唯一变更)或者SC(共享原始)状态的线。
·响应节点130将其数据的副本转换至SD(共享变更)、SC(共享原始)或者I(无效)状态。
SnpCleanFwd
除了由接收SnpCleanFwd的响应节点130遵循的先前列出的一般规则之外的规则为:
·响应节点130转发处于SC(共享原始)或UC(唯一原始)状态的缓存线。
·响应节点130将其数据的副本转换至SD(共享变更)、SC(共享原始)或者I(无效)状态。
SnpUniqueFwd
除了由接收SnpUniqueFwd的响应节点130遵循的先前列出的一般规则之外的规则为:
·响应节点130转发处于唯一状态的缓存线。
·具有处于任意变更状态(诸如UD(唯一变更)或SD(共享变更))的数据的响应节点130将变更数据发送至请求器而不是归属。
·响应节点130将其数据的副本转换至I(无效)状态。
·响应节点130不将数据返回至归属节点110。
SnpNotSharedDirtyFwd
除了由接收SnpNotSharedDirtyFwd的响应节点130遵循的先前列出的一般规则之外的规则为:
·响应节点130转发处于SC(共享原始)、UC(唯一原始)和UD(唯一变更)状态的数据。
·响应节点130将其数据的副本转换至SD、SC或I状态。
SnpOnceFwd
除了由接收SnpOnceFwd的响应节点130遵循的先前列出的一般规则之外的规则为:
·响应节点130转发处于I(无效)状态的数据。
·综上所述,响应节点130不将变更数据转发至请求节点120。
·当数据状态从UD(唯一变更)或SD(共享变更)变为UC(唯一原始)或SC(共享原始)时,响应节点130将数据返回至归属节点110。
图4示出了事务图,其中请求节点120与响应节点130之间的连接已断开。具体地,一系列事务按照与之前相同的方式进行,其中请求节点120替代地请求数据的唯一副本。然而,一旦SnpUniqueFwd消息由响应节点130接收到并且响应节点130试图将数据转发至请求节点120,就确定请求节点120与响应节点130之间的连接已断开。因此,响应节点130替代地使用包括所请求的数据的常规监听响应消息来对归属节点110进行响应。在此时,归属节点110可按照典型的监听请求/监听响应过程来将数据转发至请求节点120。
图5示出了在请求节点120、响应节点130和归属节点140之间的事务图。事务按照图3所示的实施例进行。然而,在此情况下,请求节点120所请求的由响应节点130储存的数据为变更的。换言之,数据已经在响应节点130的本地缓存中被修改。在此情况下,仍然通过响应节点130将数据转发至请求节点120。此外,响应节点130向请求节点120指示数据为原始的。换言之,请求节点120能够以共享原始(SC)的缓存状态来将数据储存在其缓存中。然而,当响应节点130将响应发布回归属节点140时,这以SnpResp_SC_Fwded_SC消息的形式完成,该消息包括经修改(变更)的数据并且指示数据以共享原始状态被转发至请求节点120。响应于此,归属节点140将使得数据写回至系统缓存或者主存储器。因此,请求节点120快速地接收最新的数据。这可以在不需要将数据发送至归属节点140、写回、以及随后提供至请求节点120(这些可能引起显著的延迟)的情况下实现。
图6是示出了根据一个实施例的数据处理方法的流程图170。该处理在步骤180处开始,其中接收监听转发请求。在步骤190处,确定本地节点是否在其本地缓存中具有所请求的数据。若不具有,则在步骤200处,可将否定响应发回至归属节点并且过程返回至步骤180。替代地,在步骤210处,根据已经被发布的监听请求的类型和本地缓存中的数据的当前缓存状态,修改与本地缓存中的数据关联的缓存状态。一旦此步骤完成,在适当的情况下,则在步骤220处,确定节点是否具有至请求器的连接。如不具有,则在步骤230处,将监听响应发送回至归属节点,并且该处理返回至步骤180。若节点具有至请求器的连接,则在步骤240处,将响应发送至请求器。该处理随后进行至步骤250,其中确定与数据相关联的先前的缓存状态是否是“修改”。例如,这可以等同于表示本地节点已经修改了数据的共享变更状态。若不是“修改”,则该处理返回至步骤180。否则,在步骤260,将经修改的数据发送回至归属节点。随后该处理返回至步骤180。
因此,所描述的实施例使得可以直接对监听请求快速地响应。此外,这可以在无需对任意所提供的系统中的缓存状态进行任何扩充的情况下来实现。
在本申请中,词语“被配置为…”用于表示装置的元件具有能够执行所定义的操作的配置。在该上下文中,“配置”表示硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者可被编程为执行功能的处理器或其他处理设备。“被配置为”并不意味着装置元件需要以任意方式被改变以提供所定义的操作。
尽管本文已经参考附图详细描述了本发明的说明性实施例,但将理解的是,本发明不限于这些精确的实施例,并且可以由本领域技术人员实现各种改变、添加、以及修改,而不脱离如所附权利要求限定的本发明的范围和精神。例如,从属权利要求的特征的各种组合可以与独立权利要求的特征相一致,而不脱离本发明的范围。
Claims (15)
1.一种数据处理装置,包括:
接收电路,所述接收电路接收关于代表请求节点的所请求的数据的监听请求,所述监听请求包括对关于是否要发生转发的指示;
发送电路,所述发送电路发送对所述监听请求的响应;以及
缓存电路,所述缓存电路用于与所述所请求的数据的缓存状态相关联地缓存所述所请求的数据,其中
当转发要发生时,所述响应包括所述所请求的数据并且所述发送电路将所述响应发送至所述请求节点;
所述监听请求是从与所述请求节点不同的归属节点接收的;
当转发要发生时,所述发送电路还向所述归属节点发送完成通知以指示已经完成所述监听请求;以及
不管所述所请求的数据的缓存状态是否是无效,不管所述所请求的数据的缓存状态是否是共享,不管所述所请求的数据的缓存状态是否是自身,不管所述所请求的数据的缓存状态是否是独占,并且不管所述所请求的数据的缓存状态是否是修改,所述转发都会发生。
2.根据权利要求1所述的数据处理装置,其中,
当禁止发生转发时,所述响应包括所述所请求的数据并且所述发送电路将所述响应发送至所述归属节点。
3.根据权利要求1所述的数据处理装置,其中,
所述监听请求包括对所述请求节点的指示。
4.根据权利要求1所述的数据处理装置,其中,
所述监听请求包括事务标识符以标识从所述请求节点到所述归属节点的使得生成所述监听请求的事务;并且
所述响应包括所述事务标识符。
5.根据如权利要求1所述的数据处理装置,其中,
所述监听请求指示是否要发生转发,而不管与所述所请求的数据相关联地储存在所述数据处理装置处的状态。
6.根据权利要求1所述的数据处理装置,其中,
所述监听请求通过编码一种类型的所述监听请求来指示是否要发生转发。
7.根据权利要求1所述的数据处理装置,其中,
所述监听请求通过所述监听请求中的位来指示是否要发生转发。
8.根据权利要求1所述的数据处理装置,其中,
当所述发送电路不能将所述响应发送至所述请求节点时,所述发送电路将所述响应发送至所述归属节点。
9.根据权利要求1所述的数据处理装置,其中,
当要发生转发并且所述缓存电路缺乏所述所请求的数据时,所述发送电路将所述响应发送至所述请求节点以指示所述所请求的数据不存在。
10.根据权利要求1所述的数据处理装置,其中,
除了将包括所述所请求的数据的所述响应发送至所述请求节点之外,还根据所述缓存状态中的至少一个以及一种类型的所述监听请求来调整与所述缓存电路中的所述所请求的数据相关联的缓存状态。
11.根据权利要求10所述的数据处理装置,其中,
所述类型的所述监听请求指示所述请求节点用于缓存所述所请求的数据的期望缓存状态。
12.根据权利要求1所述的数据处理装置,其中,
所述响应指示所述请求节点用于缓存所述所请求的数据的所要求的缓存状态。
13.根据权利要求12所述的数据处理装置,其中,
所述所要求的缓存状态被共享。
14.根据权利要求12所述的数据处理装置,其中,
当所述所请求的数据在所述缓存电路中指示修改的缓存状态时,所述所要求的缓存状态为原始并且所述发送电路将另一响应发送至所述归属节点;并且
所述另一响应包括所述所请求的数据并且指示所述所请求的数据被修改。
15.一种数据处理方法,包括:
与一个数据值的缓存状态相关联地缓存该数据值;
从归属节点接收关于代表请求节点对所述一个数据值的监听请求,所述请求节点不同于所述归属节点,所述监听请求包括关于是否要发生转发的指示;以及
发送对所述监听请求的响应,其中
当要发生转发并且所述一个数据值存在时,所述响应包括所述一个数据值并且所述响应被发送至所述请求节点,而不管所述一个数据值的缓存状态是否是无效,不管所述一个数据值的缓存状态是否是共享,不管所述一个数据值的缓存状态是否是自身,不管所述一个数据值的缓存状态是否是独占,并且不管所述一个数据值的缓存状态是否是修改;并且
当转发要发生并且所述一个数据值包括所请求的数据时,完成通知被发送到所述归属节点以指示已经完成所述监听请求。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/427,384 | 2017-02-08 | ||
US15/427,384 US11159636B2 (en) | 2017-02-08 | 2017-02-08 | Forwarding responses to snoop requests |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415873A CN108415873A (zh) | 2018-08-17 |
CN108415873B true CN108415873B (zh) | 2024-03-22 |
Family
ID=61283468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810101403.3A Active CN108415873B (zh) | 2017-02-08 | 2018-02-01 | 转发对监听请求的响应 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11159636B2 (zh) |
JP (1) | JP7277075B2 (zh) |
CN (1) | CN108415873B (zh) |
GB (1) | GB2566563B (zh) |
TW (1) | TWI753093B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10942865B2 (en) * | 2019-06-13 | 2021-03-09 | Arm Limited | Snooping with access permissions |
US11334495B2 (en) * | 2019-08-23 | 2022-05-17 | Arm Limited | Cache eviction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
CN1869956A (zh) * | 2005-05-24 | 2006-11-29 | 国际商业机器公司 | 数据处理系统中的数据处理的方法和装置 |
CN101042680A (zh) * | 2006-03-23 | 2007-09-26 | 国际商业机器公司 | 更新无效一致状态的方法、数据处理系统和高速缓存系统 |
CN101042678A (zh) * | 2006-03-23 | 2007-09-26 | 国际商业机器公司 | 数据处理的单元、系统和方法 |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275905B1 (en) | 1998-12-21 | 2001-08-14 | Advanced Micro Devices, Inc. | Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system |
US6631401B1 (en) | 1998-12-21 | 2003-10-07 | Advanced Micro Devices, Inc. | Flexible probe/probe response routing for maintaining coherency |
US6393529B1 (en) | 1998-12-21 | 2002-05-21 | Advanced Micro Devices, Inc. | Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write |
EP2320322A3 (en) * | 1998-12-21 | 2011-08-03 | Advanced Micro Devices, Inc. | Conservation of system memory bandwidth and cache coherency maintenance using memory cancel messages |
US6370621B1 (en) | 1998-12-21 | 2002-04-09 | Advanced Micro Devices, Inc. | Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation |
JP2003216597A (ja) * | 2002-01-23 | 2003-07-31 | Hitachi Ltd | マルチプロセッサシステム |
US7003633B2 (en) * | 2002-11-04 | 2006-02-21 | Newisys, Inc. | Methods and apparatus for managing probe requests |
US7856534B2 (en) * | 2004-01-15 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Transaction references for requests in a multi-processor network |
JP4572169B2 (ja) * | 2006-01-26 | 2010-10-27 | エヌイーシーコンピュータテクノ株式会社 | マルチプロセッサシステム及びその動作方法 |
US7779210B2 (en) * | 2007-10-31 | 2010-08-17 | Intel Corporation | Avoiding snoop response dependency |
JP2009223759A (ja) * | 2008-03-18 | 2009-10-01 | Fujitsu Ltd | 情報処理装置,メモリ制御方法およびメモリ制御装置 |
US9058272B1 (en) * | 2008-04-25 | 2015-06-16 | Marvell International Ltd. | Method and apparatus having a snoop filter decoupled from an associated cache and a buffer for replacement line addresses |
US7925840B2 (en) * | 2008-09-05 | 2011-04-12 | Arm Limited | Data processing apparatus and method for managing snoop operations |
US8799586B2 (en) | 2009-09-30 | 2014-08-05 | Intel Corporation | Memory mirroring and migration at home agent |
US8375170B2 (en) * | 2010-02-12 | 2013-02-12 | Arm Limited | Apparatus and method for handling data in a cache |
US8656115B2 (en) * | 2010-08-20 | 2014-02-18 | Intel Corporation | Extending a cache coherency snoop broadcast protocol with directory information |
US8635411B2 (en) * | 2011-07-18 | 2014-01-21 | Arm Limited | Data processing apparatus and method for managing coherency of cached data |
WO2013103347A1 (en) * | 2012-01-06 | 2013-07-11 | Intel Corporation | Improving value of forward state by increasing local caching agent forwarding |
US8959290B2 (en) * | 2012-02-21 | 2015-02-17 | Lsi Corporation | Methods and apparatus for reusing snoop responses and data phase results in a cache controller |
US9372798B2 (en) * | 2012-03-02 | 2016-06-21 | Arm Limited | Data processing apparatus having first and second protocol domains, and method for the data processing apparatus |
US9235519B2 (en) * | 2012-07-30 | 2016-01-12 | Futurewei Technologies, Inc. | Method for peer to peer cache forwarding |
US9542316B1 (en) * | 2015-07-23 | 2017-01-10 | Arteris, Inc. | System and method for adaptation of coherence models between agents |
-
2017
- 2017-02-08 US US15/427,384 patent/US11159636B2/en active Active
-
2018
- 2018-01-19 GB GB1800876.3A patent/GB2566563B/en active Active
- 2018-01-31 JP JP2018014641A patent/JP7277075B2/ja active Active
- 2018-01-31 TW TW107103406A patent/TWI753093B/zh active
- 2018-02-01 CN CN201810101403.3A patent/CN108415873B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
CN1869956A (zh) * | 2005-05-24 | 2006-11-29 | 国际商业机器公司 | 数据处理系统中的数据处理的方法和装置 |
CN101042680A (zh) * | 2006-03-23 | 2007-09-26 | 国际商业机器公司 | 更新无效一致状态的方法、数据处理系统和高速缓存系统 |
CN101042678A (zh) * | 2006-03-23 | 2007-09-26 | 国际商业机器公司 | 数据处理的单元、系统和方法 |
CN104380269A (zh) * | 2012-10-22 | 2015-02-25 | 英特尔公司 | 高性能互连相干协议 |
Also Published As
Publication number | Publication date |
---|---|
JP7277075B2 (ja) | 2023-05-18 |
US20180227382A1 (en) | 2018-08-09 |
GB201800876D0 (en) | 2018-03-07 |
GB2566563B (en) | 2021-03-10 |
US11159636B2 (en) | 2021-10-26 |
JP2018129041A (ja) | 2018-08-16 |
CN108415873A (zh) | 2018-08-17 |
GB2566563A (en) | 2019-03-20 |
TW201830923A (zh) | 2018-08-16 |
TWI753093B (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8806148B2 (en) | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration | |
US7386680B2 (en) | Apparatus and method of controlling data sharing on a shared memory computer system | |
US8793442B2 (en) | Forward progress mechanism for stores in the presence of load contention in a system favoring loads | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20020087811A1 (en) | Method and apparatus for reducing memory latency in a cache coherent multi-node architecture | |
US20150058570A1 (en) | Method of constructing share-f state in local domain of multi-level cache coherency domain system | |
US8504779B2 (en) | Memory coherence directory supporting remotely sourced requests of nodal scope | |
US20030018739A1 (en) | Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols | |
JP2008097598A (ja) | 共用のグローバル・コヒーレンシ状態を支援するプロセッサ、データ処理システム、および方法 | |
JP2005519391A (ja) | 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム | |
JP5004571B2 (ja) | 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法 | |
KR102581572B1 (ko) | 허브 디바이스 및 그의 작동방법 | |
CN108415873B (zh) | 转发对监听请求的响应 | |
US7089376B2 (en) | Reducing snoop response time for snoopers without copies of requested data via snoop filtering | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
US10942865B2 (en) | Snooping with access permissions | |
JP7328742B2 (ja) | スヌープ要求への対応 | |
WO2019149031A1 (zh) | 应用于节点系统的数据处理方法及装置 | |
US20210216241A1 (en) | Write operation status | |
KR20110070772A (ko) | 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조 |
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 |