CN116057514A - 可扩展高速缓存一致性协议 - Google Patents
可扩展高速缓存一致性协议 Download PDFInfo
- Publication number
- CN116057514A CN116057514A CN202180062434.2A CN202180062434A CN116057514A CN 116057514 A CN116057514 A CN 116057514A CN 202180062434 A CN202180062434 A CN 202180062434A CN 116057514 A CN116057514 A CN 116057514A
- Authority
- CN
- China
- Prior art keywords
- agent
- cache block
- snoop
- request
- state
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0824—Distributed directories, e.g. linked lists of caches
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/10—Providing a specific technical effect
- G06F2212/1048—Scalability
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)
Abstract
描述了一种用于***的可扩展高速缓存一致性协议,该***包括耦接到一个或多个存储器控制器的多个一致代理。该存储器控制器可实现来自该存储器控制器耦接到的存储器的高速缓存块的精确目录。对高速缓存块的多个请求可为未解决的,并且请求的窥探和完成可包括接收代理处的预期高速缓存状态,如当处理该请求时该存储器控制器中的目录所指示,以允许该接收代理检测竞争条件。在一个实施方案中,这些高速缓存状态可包括一级共享状态和二级共享状态。该一级共享状态可适用于负责将该高速缓存块的副本发射到请求代理的一致代理。在一个实施方案中,可支持至少两种类型的窥探:窥探转发和窥探退回。
Description
背景技术
技术领域
本文所描述的实施方案涉及高速缓存一致***。
相关技术描述
各种***可包括在使用期间访问存储器的多个代理。如果代理中的一个或多个代理高速缓存数据,则一个代理有可能在另一个代理已高速缓存(并且可能已修改)数据时从存储器读取该数据。许多***实现高速缓存一致性机制以分辨所高速缓存数据副本和存储器中的数据,从而根据存储器排序模型排序对相同数据的访问并且允许将数据传送到代理以进行高速缓存。
一致性控制器和各种代理与存储器之间的附加通信通常用于保持高速缓存一致性。随着代理数量的增加,此类消息的数量也增加,并且可能压垮代理与存储器之间的互连体。即使存在足够的带宽以将消息以及读取和写入流量携载到存储器,消息的数量也会因增加存储器等待时间而降低***的性能。
附图说明
以下详细描述参考附图,现在对这些附图进行简要描述。
图1是实现为片上***(SOC)的高速缓存一致性***的一个实施方案的框图。
图2是示出用于高速缓存块的一致传送的三跨链协议的一个实施方案的框图。
图3是示出管理一个一致事务的填充与另一个一致事务的窥探之间的竞争的一个实施方案的框图。
图4是示出管理一个一致事务的窥探与另一个一致事务的确认之间的竞争的一个实施方案的框图。
图5是一致代理的一个实施方案的一部分的框图。
图6是示出在一致性控制器处处理请求的一个实施方案的操作的流程图。
图7是示出向存储器控制器发射请求以处理与该请求相关的完成的一致代理的一个实施方案的操作的流程图。
图8是示出接收窥探的一致代理的一个实施方案的操作的流程图。
图9是示出根据一个实施方案的对高速缓存块的冲突请求链的框图。
图10是示出并吞窥探的一致代理的一个实施方案的流程图。
图11是示出不可高速缓存请求的一个实施方案的框图。
图12是示出用于基于可高速缓存和不可高速缓存的请求性质生成窥探的一致性控制器的一个实施方案的操作的流程图。
图13是示出根据一致性协议的一个实施方案的多个高速缓存状态的表。
图14是示出可在一致性协议的一个实施方案中使用的多个消息的表。
图15是示出用于处理改变为独占条件请求的一致性控制器的一个实施方案的操作的流程图。
图16是示出用于读取目录条目并生成窥探的一致性控制器的一个实施方案的操作的流程图。
图17是示出用于处理独占无数据请求的一致性控制器的一个实施方案的操作的流程图。
图18是包括在图1中示出的SOC的***的一个实施方案的框图。
图19是计算机可访问存储介质的一个实施方案的框图。
尽管本公开中所述的实施方案可受各种修改形式和另选形式的影响,但其具体实施方案在附图中以举例的方式示出并将在本文中详细描述。然而,应当理解,附图和对其的具体实施方式不旨在将实施方案限制为所公开的特定形式,而相反,本发明旨在涵盖落入所附权利要求书的实质和范围内的所有修改、等同物和另选方案。本文所使用的标题仅用于组织目的,并不旨在用于限制说明书的范围。
具体实施方式
描述了一种用于***的可扩展高速缓存一致性协议,该***包括耦接到一个或多个存储器控制器的多个一致代理。一致代理通常可包括具有用于高速缓存存储器数据的高速缓存或者以其他方式可拥有一个或多个高速缓存块并且潜在地本地修改这些高速缓存块的任何电路。一致代理参与高速缓存一致性协议以确保由一个一致代理做出的修改对随后读取相同数据的其他代理可见,并且确保由两个或更多个一致代理以特定顺序做出的修改(如在***中的排序点诸如存储高速缓存块的存储器的存储器控制器处所确定的)在一致代理中的每个一致代理中以该顺序被观察到。
高速缓存一致性协议可指定可在代理与存储器控制器(或存储器控制器内的一致性控制器)之间发射以完成一致事务的消息或命令集合。这些消息可包括请求、窥探、窥探响应和完成。“请求”是发起事务并且指定所请求高速缓存块(例如,以及高速缓存块的地址)以及请求方将接收高速缓存块所处的状态(或者最小状态,在一些情况下,可提供更具许可性状态)的消息。如本文中所用,“窥探”或“窥探消息”是指发射到一致代理的消息,该消息请求高速缓存块的状态改变,并且在一致代理具有高速缓存块的独占副本或以其他方式负责高速缓存块的情况下,还可请求一致代理提供高速缓存块。“完成”或“窥探响应”可以是来自一致代理的指示已做出状态改变并且(如果适用的话)提供高速缓存块的副本的消息。在一些情况下,对于某些请求,完成也可由这些请求的源提供。
“状态”或“高速缓存状态”通常可是指指示高速缓存块的副本在高速缓存中是否有效并且还可指示高速缓存块的其他属性的值。例如,状态可指示高速缓存块是否相对于存储器中的副本被修改。状态可指示高速缓存块的所有权级别(例如,是否允许具有高速缓存的代理修改高速缓存块,代理是否负责提供高速缓存块或者在从高速缓存逐出的情况下将高速缓存块返回到存储器控制器,等等)。状态还可指示高速缓存块可能存在于其他一致代理中(例如,“共享”状态可指示可将高速缓存块的副本存储在一个或多个其他可高速缓存代理中)。
在高速缓存一致性协议的各种实施方案中可包括多种特征。例如,存储器控制器可各自实现一致性控制器和对应于由该存储器控制器控制的存储器的高速缓存块的目录。目录可跟踪多个可高速缓存代理中的高速缓存块的状态,从而允许一致性控制器确定将窥探哪些可高速缓存代理以改变高速缓存块的状态并且可能地提供高速缓存块的副本。即,基于在高速缓存控制器处接收的请求,窥探不需要被广播到所有可高速缓存代理,而是可将窥探发射到具有受请求影响的高速缓存块的副本的那些代理。一旦已经生成窥探,就可在窥探被处理并且数据被提供给请求源之后更新目录以反映每个一致代理中的高速缓存块的状态。因此,对于被处理到相同高速缓存块的下一个请求,该目录可为精确的。例如,当与广播解决方案相比时,窥探可被最小化,从而减少一致代理与存储器控制器之间的互连体上的流量。在一个实施方案中,可支持“3跨链”协议,其中高速缓存一致代理中的一个高速缓存一致代理向请求源提供高速缓存块的副本,或者如果不存在高速缓存代理,则存储器控制器提供该副本。因此,数据设置在以下三个“跨链”(或通过接口发射的消息)中:从源到存储器控制器的请求、对将对请求作出响应的一致代理的窥探以及从一致代理到请求源的具有高速缓存块数据的完成。在不存在所高速缓存副本的情况下,可存在两个跨链:从源到存储器控制器的请求和从存储器控制器到源的具有数据的完成。可存在附加消息(例如,当针对请求存在多个窥探时,来自其他代理的指示已经做出请求状态改变的完成),但数据本身可设置在三个跨链中。相比之下,许多高速缓存一致性协议是四跨链协议,其中一致代理通过将高速缓存块返回到存储器控制器来对窥探作出响应,并且存储器控制器将高速缓存块转发到源。在一个实施方案中,除三个跨链流之外,协议还可支持四个跨链流。
在一个实施方案中,针对高速缓存块的请求可由一致性控制器处置,并且一旦已经生成窥探(和/或对于不存在所高速缓存副本的情况,来自存储器控制器的完成),就可更新目录。然后可服务针对相同高速缓存块的另一个请求。因此,针对相同高速缓存块的请求可不被串行化,如同一些其他高速缓存一致性协议的情况。当存在未解决到高速缓存块的多个请求时可发生各种竞争条件,因为与后续请求相关的消息可在与先前请求相关的消息之前到达给定的一致代理(其中“后续”和“先前”是指如在存储器控制器中的一致性控制器处被排序的请求)。为了允许代理对请求进行分类,消息(例如,窥探和完成)可包括接收代理处的预期高速缓存状态,如当处理请求时目录所指示。因此,如果接收代理不具有处于消息中所指示的状态的高速缓存块,则接收代理可延迟对消息的处理,直到高速缓存状态改变为预期状态为止。改变为预期状态可经由与先前请求相关的消息发生。对竞争条件和使用预期高速缓存状态来解决这些竞争条件的附加描述在下面相对于图3-图4和图6-图8提供。
在一个实施方案中,这些高速缓存状态可包括一级共享状态和二级共享状态。一级共享状态可适用于负责将高速缓存块的副本发射到请求代理的一致代理。在处理给定请求(例如,对在共享状态下被允许返回的高速缓存块的读取)期间,甚至可不需要窥探二级共享代理。关于一级共享状态和二级共享状态的附加细节将相对于图14和图16描述。
在一个实施方案中,可支持至少两种类型的窥探:窥探转发和窥探退回。窥探转发消息可用于致使一致代理将高速缓存块转发到请求代理,而窥探退回消息可用于致使一致代理将高速缓存块返回到存储器控制器。在一个实施方案中,还可支持窥探失效消息(并且也可包括转发变体和退回变体以针对完成指定目的地)。窥探失效消息致使高速缓存一致代理使高速缓存块失效。支持窥探转发流和窥探退回流可提供例如可高速缓存(窥探转发)行为和不可高速缓存(窥探退回)行为两者。窥探转发可用于在将高速缓存块提供给高速缓存代理时最小化消息的数量,因为高速缓存代理可存储高速缓存块并且潜在地使用其中的数据。另一方面,非一致代理可不存储整个高速缓存块,并且因此退回到存储器的副本可确保完整高速缓存块被捕获在存储器控制器中。因此,可基于请求代理的能力(例如,基于请求代理的标识)和/或基于请求的类型(例如,可高速缓存或不可高速缓存)选择窥探转发变体和窥探退回变体或类型。关于窥探转发和窥探退回消息的附加细节在下面相对于图11、图12和图14提供。各种其他特征在剩余图中示出并且将在下面更详细地描述。
图1是包括耦接到一个或多个存储器诸如存储器12A-12m的片上***(SOC)10的***的实施方案的框图。SOC 10可包括多个一致代理(CA)14A-14n。这些一致代理可包括耦接一个或多个高速缓存(例如,高速缓存18)的一个或多个处理器(P)16。SOC 10可包括一个或多个非一致代理(NCA)20A-20p。SOC 10可包括一个或多个存储器控制器22A-22m,每个存储器控制器在使用期间耦接到相应的存储器12A-12m。每个存储器控制器22A-22m可包括耦接到目录26的一致性控制器电路24(更简要地说,“一致性控制器”或“CC”)。存储器控制器22A-22m、非一致代理20A-20p和一致代理14A-14n可耦接到互连体28以在各种部件22A-22m、20A-20p与14A-14n之间通信。顾名思义,在一个实施方案中,SOC10的部件可集成到单个集成电路“芯片”上。在其他实施方案中,各种部件可在SOC 10外部其他芯片上或另外的离散部件上。可使用任何数量的集成或离散部件。在一个实施方案中,一致代理14A-14n和存储器控制器22A-22m的子集可在耦接在一起以形成图1的SOC 10中示出的部件的多个集成电路芯片中的一个集成电路芯片中实现。
一致性控制器24可实现高速缓存一致性协议的存储器控制器部分。一般来讲,一致性控制器24可被配置为(例如,通过存储器控制器22A-22m中的一个或多个队列(未示出))从互连体28接收针对映射到存储器控制器22A-22m耦接到的存储器12A-12m的高速缓存块的请求。目录可包括多个条目,该多个条目中的每个条目可跟踪***中相应高速缓存块的一致性状态。一致性状态可包括例如高速缓存块在各个一致代理14A-14N中(例如,在高速缓存18中,或者在其他高速缓存诸如处理器16中的高速缓存(未示出)中)的高速缓存状态。因此,基于对应于给定请求和给定请求的类型的高速缓存块的目录条目,一致性控制器24可被配置为确定哪些一致代理14A-14n将接收窥探以及窥探类型(例如,窥探失效、窥探共享、改变为共享、改变为拥有、改变为失效等)。一致性控制器24还可独立地确定将发射窥探转发还是窥探退回。一致代理14A-14n可接收窥探,处理窥探以更新一致代理14A-14n中的高速缓存块状态,并且向请求一致代理14A-14n或发射窥探的存储器控制器22A-22m提供高速缓存块的副本(如果由窥探指定的话)。附加细节将在下文进一步提供。
如上所述,一致代理14A-14n可包括一个或多个处理器16。处理器16可用作SOC 10的中央处理单元(CPU)。***的CPU包括执行***主要控制软件诸如操作***的一个或多个处理器。通常,由CPU在使用过程中执行的软件可控制***的其他部件,以实现***的期望的功能。处理器还可执行其他软件诸如应用程序。应用程序可提供用户功能,并且可依靠操作***进行下层设备控制、调度、存储器管理等。因此,处理器也可被称为应用处理器。一致代理14A-14n还可包括其他硬件,诸如高速缓存18和/或至***的其他部件的接口(例如至互连体28的接口)。其他一致代理可包括非CPU的处理器。此外,其他一致代理可不包括处理器(例如,诸如显示控制器或其他***电路的固定功能电路、具有经由一或多个嵌入式处理器进行的处理器辅助的固定功能电路等可为一致代理)。
通常,处理器可包括被配置为执行在由处理器实施的指令集架构中定义的指令的任何电路和/或微码。处理器可涵盖在具有作为片上***(SOC10)或其他集成水平的其他部件的集成电路上实施的处理器内核。处理器可进一步涵盖离散微处理器、集成到多芯片模块具体实施中的处理器核心和/或微处理器、实现为多个集成电路的处理器等。给定一致代理14A-14n中的处理器16的数量可不同于另一个一致代理14A-14n中的处理器16的数量。一般来讲,可包括一个或多个处理器。另外,处理器16可在微架构具体实施、性能和功率特性等方面不同。在一些情况下,处理器甚至可在这些处理器实现的指令集架构、这些处理器的功能(例如,CPU、图形处理单元(GPU)处理器、微控制器、数字信号处理器、图像信号处理器等)等方面不同。
高速缓存18可具有任何容量和配置,诸如设置关联、直接映射或完全关联。高速缓存块大小可以是任何期望的大小(例如,32字节、64字节、128字节等)。高速缓存块可以是高速缓存18中的分配和解除分配的单元。另外,在该实施方案中,高速缓存块可以是在其上保持一致性的单元(例如,存储器地址空间的对齐的一致性粒度片段)。在一些情况下,高速缓存块也可称为高速缓存线。
除一致性控制器24和目录26之外,存储器控制器22A-22m通常可包括用于从SOC10的其他部件接收存储器操作和用于访问存储器12A-12m以完成存储器操作的电路。存储器控制器22A-22m可被配置为访问任何类型的存储器12A-12m。例如,存储器12A-12m可以是静态随机存取存储器(SRAM)、动态RAM(DRAM)诸如包括双倍数据速率(DDR、DDR2、DDR3、DDR4等)DRAM的同步DRAM(SDRAM)、非易失性存储器、图形DRAM诸如图形DDR DRAM(GDDR)以及高带宽存储器(HBM)。可支持DDR DRAM的低功率/移动版本(例如,LPDDR、mDDR等)。存储器控制器22A-22m可包括存储器操作的队列,以用于对操作进行排序(并且潜在地重新排序),并将这些操作呈现至存储器12A-12m。存储器控制器22A-22m还可包括用于存储等待写入到存储器的写入数据和等待返回到存储器操作源的读取数据的数据缓冲器(在数据并非从窥探提供的情况下)。在一些实施方案中,存储器控制器22A-22m可包括用于存储最近访问的存储器数据的存储器高速缓存。例如,在SOC具体实施中,存储器高速缓存可通过在预期很快将被再次访问的情况下避免从存储器12A-12m重新访问数据来降低SOC中的功率消耗。在一些情况下,存储器高速缓存也可称为***高速缓存,其与私有高速缓存诸如高速缓存18或处理器16中的高速缓存不同,该私有高速缓存只服务于某些部件。此外,在一些实施方案中,***高速缓存不需要位于存储器控制器22A-22m内。
非一致代理20A-20p通常可包括SOC 10中所包括的各种附加硬件功能(例如,“***设备”)。例如,***设备可包括视频***设备,诸如被配置为处理来自相机或其他图像传感器的图像捕捉数据的图像信号处理器、GPU、视频编码器/解码器、缩放器、旋转器、混合器等。***设备可包括音频***设备,诸如麦克风、扬声器、至麦克风和扬声器的接口、音频处理器、数字信号处理器、混合器等。***设备可包括用于SOC 10外部的各种接口的接口控制器,该SOC包括接口诸如通用串行总线(USB)、***设备部件互连体(PCI)(包括PCI高速(PCIe))、串行端口和并行端口等等。***设备可包括联网***设备诸如媒体访问控制器(MAC)。可包括任何一组硬件。在一个实施方案中,非一致代理20A-20p还可包括到一组***设备的桥。
互连体28可为用于在SOC 10的部件间进行通信的任何通信互连体和协议。互连体28可为基于总线的,包括共享总线配置、交叉开关配置、和具有桥的分层总线。互连体28也可为基于分组的或电路交换的,并且可为具有桥的分层、交叉开关、点到点、或其他互连体。在一个实施方案中,互连体28可包括多个独立的通信构造。
一般来讲,每个部件22A-22m、20A-20p和14A-14n的数量可根据实施方案而变化,并且可使用任何数量。如后缀“m”、“p”和“n”所指示,一种类型的部件的数量可不同于另一种类型的部件的数量。然而,给定类型的数量也可与另一类型的数量相同。另外,虽然图1的***被示出为具有多个存储器控制器22A-22m,但具有一个存储器控制器22A-22m的实施方案也被设想并且可实现本文所述的高速缓存一致性协议。
接下来转向图2,示出了示出根据可扩展高速缓存一致性协议的实施方案的多个一致代理12A-12D和存储器控制器22A针对可高速缓存读取独占请求(CRdEx)执行一致性事务的框图。读取独占请求可以是针对高速缓存块的独占副本的请求,因此一致代理14A-14D使任何其他副本失效,并且当事务完成时,请求方具有唯一有效副本。具有指派到高速缓存块的存储器位置的存储器12A-12m在指派到存储器12A-12m中的高速缓存块的位置处具有数据,但如果请求方修改该数据,则该数据也将是“陈旧的”。可使用读取独占请求,例如使得请求方具有修改高速缓存块而无需在高速缓存一致性协议中发射附加请求的能力。如果不需要独占副本,则可使用其他请求(例如,如果请求方不一定需要可写入副本,则可使用读取共享请求CRdSh)。“CRdEx”标签中的“C”可是指“可高速缓存”。其他事务可由非一致代理(例如,图1中的代理20A-20p)发出,并且此类事务可被标记为“NC”(例如,NCRd)。对事务中的请求类型和其他消息的附加讨论在下面针对一个实施方案相对于图14进一步提供,并且对高速缓存状态的进一步讨论在下面针对实施方案相对于图13进一步提供。
在图2的示例中,一致代理14A可通过将读取独占请求发射到(控制指派到读取独占请求中的地址的存储器位置的)存储器控制器22A来发起事务。存储器控制器22A(并且更具体地,存储器控制器22A中的一致性控制器24)可读取目录26中的条目并且确定一致代理14D具有处于一级共享状态(P)的高速缓存块,并且因此可为将把高速缓存块提供给请求一致代理14D的一致代理。一致性控制器24可生成对一致代理14D的窥探转发(SnpFwd[st])消息,并且可向一致代理14D发出窥探转发消息。根据目录26,一致性控制器24可包括接收窥探的一致代理中的当前状态的标识符。例如,在这种情况下,根据目录26,当前状态在一致代理14D中是“P”。基于窥探,一致代理14D可访问正在存储高速缓存块的高速缓存并且生成具有对应于高速缓存块的数据的填充完成(图2中的Fill)。一致代理14D可将填充完成发射到一致代理14A。因此,***实现用于将数据递送给请求方的“3跨链”协议:CRdEx、SnpFwd[st]和Fill。如SnpFwd[st]消息中的“[st]”所指示,还可利用在处理窥探之后一致代理将转换到的高速缓存块的状态来对窥探转发消息进行编码。在各种实施方案中,可存在消息的不同变型,或者可将状态作为字段携载在消息中。在图2的示例中,一致代理中的高速缓存块的新状态可为失效,因为请求是读取独占请求。其他请求可允许新的共享状态。
另外,一致性控制器24可根据高速缓存块的目录条目确定一致代理14B-14C具有处于二级共享状态(S)的高速缓存块。因此,可向满足以下条件的每个一致代理发出窥探:(i)具有高速缓存块的所高速缓存副本;并且(ii)一致代理中的块的状态将基于事务而改变。由于一致代理14A正在获得独占副本,因此共享副本将失效,并且因此一致性控制器24可针对一致代理14B-14C生成窥探失效(SnpInvFw)消息并且可向一致代理14B-14C发出窥探。窥探失效消息包括指示一致代理14B-14C中的当前状态是共享的标识符。一致代理14B-14C可处理窥探失效请求并且将确认(Ack)完成提供给一致代理14A。需注意,在所示出的协议中,从窥探代理到一致性控制器24的消息不在该实施方案中实现。一致性控制器24可基于窥探的发出更新目录条目,并且可处理下一个事务。因此,如先前所提及的,在该实施方案中,对相同高速缓存块的事务可不被串行化。一致性控制器24可允许对相同高速缓存块的附加事务开始并且可依赖于窥探中的当前状态指示以识别哪些窥探属于哪些事务(例如,对相同高速缓存块的下一个事务将检测对应于已完成先前事务的高速缓存状态)。在所示出的实施方案中,窥探失效消息是SnpInvFw消息,因为完成作为三跨链协议的一部分被发送到起始一致代理14A。在一个实施方案中,对于某些代理也支持四跨链协议。在这种实施方案中,可使用SnpInvBk消息来指示窥探代理将把完成发射回到一致性控制器24。
因此,窥探中的高速缓存状态标识符可允许一致代理解决形成对相同高速缓存块的不同事务的消息之间的竞争。即,接收消息的顺序可与一致性控制器处理对应请求的顺序不一致。一致性控制器24通过目录26处理对相同高速缓存块的请求的顺序可定义请求的顺序。即,一致性控制器24可以是用于在给定存储器控制器22A-22m中接收的事务的排序点。另一方面,可基于对应于每个消息的当前高速缓存状态和一致代理14A-14n中的高速缓存状态在一致代理14A-14n中管理消息的串行化。给定一致代理可基于窥探访问一致代理内的高速缓存块,并且可被配置为将窥探中指定的高速缓存状态与高速缓存中当前的高速缓存状态进行比较。如果状态不匹配,则窥探属于在将代理中的高速缓存状态改变为窥探中指定的状态的另一个事务之后排序的事务。因此,窥探代理可被配置为基于第一状态与第二状态不匹配延迟对窥探的处理,直到第二状态响应于与不同于第一请求的请求相关的不同通信而改变为第一状态为止。例如,可基于由窥探代理从不同事务接收的填充完成等改变状态。
在一个实施方案中,窥探可包括指示对应于事务的完成数量的完成计数(Cnt),因此请求方可确定何时已接收到与事务有关的所有完成。一致性控制器24可基于高速缓存块的目录条目中所指示的状态确定完成计数。完成计数可以是例如完成的数量减一(例如,在图2的示例中为2,因为存在三个完成)。该具体实施可允许完成计数用作在请求代理接收到事务的初始完成时事务的完成计数器的初始化(例如,该完成计数已经递减以反映携载完成计数的完成的接收)。一旦计数已被初始化,用于事务的另外的完成就可致使请求代理更新完成计数器(例如,使计数器递减)。在其他实施方案中,实际完成计数可被提供并且可被请求方递减以初始化完成计数。一般而言,完成计数可以是标识请求方将在事务完全完成之前观察到的完成数量的任何值。即,请求代理可基于完成计数器完成请求。
图3和图4示出了在具有对相同高速缓存块的事务的情况下可发生的示例性竞争条件,以及给定代理的如当在存储器控制器中处理事务时在目录中反映的当前高速缓存状态(也称为“预期高速缓存状态”)和给定代理中的(例如,如在给定代理的高速缓存或可临时存储高速缓存数据的缓冲器中反映的)当前高速缓存状态的使用。在图3和图4中,一致代理被列为CA0和CA1,并且与高速缓存块相关联的存储器控制器被示出为MC。CA0、CA1和MC的垂直线30、32和34示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图3和图4中从顶部至底部推进。如果存储器控制器耦接到的存储器包括指派到高速缓存块的地址的存储器位置,则存储器控制器可与高速缓存块相关联。
图3示出了用于对相同高速缓存块的一个事务的填充完成与不同事务的窥探之间的竞争条件。在图3的示例中,CA0利用CRdEx请求向MC发起读取独占事务(箭头36)。CA1也利用CRdEx请求发起读取独占事务(箭头38)。MC首先处理CA0事务,从而将CA0事务建立为排序在CA1请求之前。在该示例中,目录指示在***中不存在高速缓存块的所高速缓存副本,并且因此MC以独占状态下的填充(FillE,箭头40)对CA0请求作出响应。MC针对CA0在独占状态下更新高速缓存块的目录条目。
MC从CA1选择CRdEx方面以用于处理,并且检测到CA0具有处于独占状态的高速缓存块。因此,MC可生成对CA0的窥探转发请求,从而请求CA0使其高速缓存中的高速缓存块失效并且将高速缓存块提供给CA1(SnpFwdI)。窥探转发请求还包括CA0中的高速缓存块的E状态的标识符,因为这是在CA0的目录中反映的高速缓存状态。MC可发出窥探(箭头42)并且可更新目录以指示CA1具有独占副本并且CA0不再具有有效副本。
窥探和填充完成可按任一时间顺序到达CA0。消息可在不同的虚拟信道中传播,和/或互连中的其他延迟可允许消息以任一顺序到达。在所示出的示例中,窥探在填充完成之前到达CA0。然而,因为窥探中的预期状态(E)与CA0中的高速缓存块的当前状态(I)不匹配,所以CA0可延迟对窥探处理。随后,填充完成可到达CA0。CA0可将高速缓存块写入高速缓存中并且将状态设置为独占(E)。还可允许CA0对高速缓存块执行至少一个操作以支持CA0中的任务向前推进,并且该操作可将状态改变为修改(M)。在高速缓存一致性协议中,目录26可不单独地跟踪M状态(例如,其可被视为E),但可将E状态匹配为窥探中的预期状态。CA0可在状态为修改的情况下向CA1发出填充完成(FillM,箭头44)。因此,用于两个事务的窥探与填充完成之间的竞争条件已经被正确地处置。
虽然在图3的示例中,CRdEx请求是由CA1在来自CA0的CRdEx请求之后发出的,但CRdEx请求可由CA1在来自CA0的CRdEx请求之前发出,并且由于MC是事务的排序点,因此来自CA0的CRdEx请求仍然可由MC排序在来自CA1的CRdEx请求之前。
图4示出了用于对相同高速缓存块的一个一致事务的窥探与另一个一致事务的完成之间的竞争条件。在图4中,CA0发起回写事务(CWB)(箭头46)以将所修改高速缓存块写入到存储器,但高速缓存块实际上可如上文所提及在目录中被跟踪为独占。例如,如果CA0将高速缓存块从其高速缓存逐出,但该高速缓存块处于修改状态,则可发射CWB。CA1针对相同高速缓存块发起读取共享事务(CRdS)(箭头48)。CA1事务由MC排序在CA0事务之前,该MC读取高速缓存块的目录条目并且确定CA0具有处于独占状态的高速缓存块。MC向CA0发出窥探转发请求,并且请求改变到二级共享状态(SnpFwdS,箭头50)。窥探中的标识符指示CA0中的当前高速缓存独占状态(E)。MC更新目录条目以指示CA0具有处于二级共享状态的高速缓存块,并且CA1具有处于一级共享状态的副本(因为先前的独占副本正被提供给CA1)。
MC处理来自CA0的CWB请求,从而再次读取高速缓存块的目录条目。MC发出Ack完成,从而在Ack完成中用高速缓存状态的标识符指示当前高速缓存状态在CA0中是二级共享(S)(箭头52)。基于预期二级共享状态与当前修改状态不匹配,CA0可延迟对Ack完成的处理。处理Ack完成将允许CA0丢弃高速缓存块,并且响应于稍后到达的SnpFwdS请求,CA0然后不会将高速缓存块的副本提供给CA1。当接收到SnpFwdS请求时,CA0可向CA1提供填充完成(箭头54),从而提供处于一级共享状态(P)的高速缓存块。CA0还可将CA0中的高速缓存块的状态改变为二级共享(S)。状态的改变与用于Ack完成的预期状态匹配,并且因此CA0可使高速缓存块失效并且完成CWB事务。
图5是一致代理14A的一个实施方案的一部分的一个实施方案的更详细框图。其他一致代理14B-14n可以是类似的。在所示出的实施方案中,一致代理14A可包括请求控制电路60和请求缓冲器62。请求缓冲器62耦接到请求控制电路60,并且请求缓冲器62和请求控制电路60两者耦接到高速缓存18和/或处理器16以及互连体28。
请求缓冲器62可被配置为存储由高速缓存18/处理器16针对一致高速缓存块生成的多个请求。即,请求缓冲器62可存储在互连体28上发起事务的请求。在图5中示出请求缓冲器62的一个条目,并且其他条目可以是类似的。该条目可包括有效(V)字段63、请求(Req.)字段64、计数有效(CV)字段66和完成计数(CompCnt)字段68。有效字段63可存储指示条目是否有效(例如,存储未解决请求)的有效指示(例如,有效位)。请求字段64可存储定义请求的数据(例如,请求类型、高速缓存块的地址、用于事务的标签或其他标识符等)。计数有效字段66可存储完成计数字段68的有效指示,从而指示完成计数字段68已经被初始化。请求控制电路68可在处理从互连体28接收的用于请求的完成时使用计数有效字段66来确定请求控制电路68是将初始化包括在完成中的具有完成计数的字段(计数字段并不有效)还是将更新完成计数,诸如使完成计数递减(计数字段有效)。完成计数字段68可存储当前完成计数。
请求控制电路60可从高速缓存18/处理器16接收请求并且可将请求缓冲器62中的请求缓冲器条目分配给请求。请求控制电路60可跟踪缓冲器62中的请求,从而致使请求在互连体28上发射(例如,根据任何种类的仲裁方案)并且跟踪请求中的所接收完成以完成事务并且将高速缓存块转发到高速缓存18/处理器16。
现在转向图6,示出了示出存储器控制器22A-22m中的一致性控制器24的一个实施方案基于接收到将处理的请求的操作的流程图。当已经经由任何期望的仲裁算法在于存储器控制器22A-22m中接收的针对服务的请求中选择请求时,可执行图6的操作。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器24可被配置为实现图6中示出的操作。
一致性控制器24可被配置为基于请求的地址从目录26读取目录条目。一致性控制器24可被配置为基于如目录条目中所指示的请求的类型(例如,请求方针对高速缓存块请求的状态)和各种一致代理14A-14n中的高速缓存块的当前状态确定将生成哪些窥探(框70)。另外,一致性控制器24可基于如目录中所指示的将接收窥探的一致代理14A-14n的当前状态生成将包括在每个窥探中的当前状态。一致性控制器24可被配置为将当前状态***窥探中(框72)。一致性控制器24还可被配置为生成完成计数并且将完成计数***每个窥探中(框74)。如先前所提及的,在一个实施方案中,完成计数可以是完成的数量减一,或者完成的总数。完成的数量可以是窥探,并且在存储器控制器22A-22m将提供高速缓存块的情况下来自存储器控制器22A-22m的填充完成的数量。在针对可高速缓存请求存在窥探的大多数情况下,窥探一致代理14A-14n中的一个窥探一致代理可提供高速缓存块,并且因此完成的数量可以是窥探的数量。然而,在无一致代理14A-14n具有高速缓存块的副本(无窥探)的情况下,例如,存储器控制器可提供填充完成。一致性控制器24可被配置为使窥探排队以用于发射到一致代理14A-14n(框76)。一旦窥探被成功地排队,一致性控制器24就可被配置为更新目录条目以反映请求的完成(框78)。例如,更新可改变在目录条目中跟踪的高速缓存状态,以匹配由窥探请求的高速缓存状态,改变指示哪个代理将把高速缓存块的副本提供给在事务完成时将具有处于独占、修改、拥有或一级共享状态的高速缓存块的一致代理14A-14n的代理标识符等。
现在转向图7,示出了示出一致代理14A-14n中的请求控制电路60的一个实施方案基于接收到在请求缓冲器62中未解决的请求的完成的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在请求控制电路60中的组合式逻辑电路中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。请求控制电路60可被配置为实现图7中示出的操作。
请求控制电路60可被配置为访问请求缓冲器62中的与所接收完成与其相关联的请求相关联的请求缓冲器条目。如果计数有效字段66指示完成计数有效(决策框80,“是”分支),则请求控制电路60可被配置为使请求计数字段68中的计数递减(框82)。如果计数为零(决策框84,“是”分支),则请求完成并且请求控制电路60可被配置为将完成的指示(以及所接收高速缓存块,如果适用的话)转发到生成请求的高速缓存18和/或处理器16(框86)。完成可致使更新高速缓存块的状态。如果在更新之后高速缓存块的新状态与待决窥探中的预期状态一致(决策框88,“是”分支),则请求控制电路60可被配置为处理待决窥探(框90)。例如,请求控制电路60可被配置为将窥探传递到高速缓存18/处理器16以生成对应于待决窥探的完成(并且改变如由窥探所指示的高速缓存块的状态)。
如果新状态与预期状态相同,则新状态可与预期状态一致。另外,如果预期状态是由目录26针对新状态跟踪的状态,则新状态可与预期状态一致。例如,在一个实施方案中,修改状态在目录26中被跟踪为独占状态,并且因此修改状态与预期的独占状态一致。例如,如果状态设置在由另一个一致代理14A-14n发射的填充完成中,则新状态可被修改,该另一个一致代理具有作为独占的高速缓存块并且本地修改高速缓存块。
如果计数有效字段66指示完成计数有效(决策框80)并且在递减之后完成计数不为零(决策框84,“否”分支),则请求并未完成并且因此在请求缓冲器62中保持待决(并且正等待请求完成的任何待决窥探可保持待决)。如果计数有效字段66指示完成计数并不有效(决策框80,“否”分支),则请求控制电路60可被配置为利用设置在完成中的完成计数初始化完成计数字段68(框92)。请求控制电路60仍可被配置为检查完成计数为零(例如,如果对于请求仅存在一次完成,则完成计数在完成中可为零)(决策框84),并且处理可如上文所讨论那样继续。
图8是示出一致代理14A-14n的一个实施方案基于接收到窥探的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致代理14A-14n中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致代理14A-14n可被配置为实现图8中示出的操作。
一致代理14A-14n可被配置为对照高速缓存18中的状态检查窥探中的预期状态(决策框100)。如果预期状态与高速缓存块的当前状态不一致(决策框100,“否”分支),则完成未解决,这将把高速缓存块的当前状态改变为预期状态。完成对应于在对应于窥探的事务之前排序的事务。因此,一致代理14A-14n可被配置为使窥探待决,从而延迟对窥探的处理,直到当前状态改变为窥探中所指示的预期状态为止(框102)。在一个实施方案中,待决窥探可被存储在专门针对待决窥探提供的缓冲器中。另选地,待决窥探可被并吞到正存储冲突请求的请求缓冲器62中的条目中,如下面相对于图10更详细地所讨论。
如果预期状态与当前状态一致(决策框100,“是”分支),则一致代理14A-14n可被配置为基于窥探处理状态改变(框104)。即,窥探可指示期望的状态改变。一致代理14A-14n可被配置为生成完成(例如,在窥探是窥探转发请求的情况下为填充,在窥探是窥探退回请求的情况下为副本退回窥探响应,或在窥探是状态改变请求的情况下为确认(转发或退回,基于窥探类型))。一致代理可被配置为根据窥探生成具有完成计数的完成(框106)并且对完成进行排队以用于发射到请求一致代理14A-14n(框108)。
使用本文所述的高速缓存一致性算法,高速缓存块可通过具有低消息带宽开销的冲突请求链从一个一致代理14A-14n发射到另一个一致代理。例如,图9是示出高速缓存块在4个一致代理CA0至CA3之间的发射的框图。类似于图3和图4,一致代理被列为CA0至CA3,并且与高速缓存块相关联的存储器控制器被示出为MC。CA0、CA1、CA2、CA3和MC的垂直线110、112、114、116和118分别示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图9中从顶部至底部推进。在对应于图9的顶部的时间处,一致代理CA3具有处于(在目录26中被跟踪为独占的)修改状态的在事务中涉及的高速缓存块。图9中的事务全部是对相同高速缓存块的。
一致代理CA0利用CRdEx请求向存储器控制器发起读取独占事务(箭头120)。一致代理CA1和CA2也发起读取独占事务(分别为箭头122和124)。如箭头120、122和124在线118处的头部所指示,存储器控制器MC将事务排序为CA0,然后是CA1,并且最后是CA2。来自CA0的事务的目录状态是处于独占状态的CA3,并且因此,在当前高速缓存状态为独占的情况下发射窥探转发和失效(SnpFwdI)(箭头126)。一致代理CA3接收窥探并将具有数据的FillM完成转发给一致代理CA0(箭头128)。类似地,来自CA1的事务的目录状态是处于独占状态的一致代理CA0(来自对CA0的先前事务),并且因此存储器控制器MC向当前高速缓存状态为E的一致代理CA0发出SnpFwdI(箭头130),并且来自CA2的事务的目录状态是当前高速缓存状态为E的一致代理CA1(箭头132)。一旦一致代理CA0曾有机会对高速缓存块执行至少一个存储器操作,一致代理CA0就以到一致代理CA1的FillM完成作出响应(箭头134)。类似地,一旦一致代理CA1曾有机会对高速缓存块执行至少一个存储器操作,一致代理CA1就以到一致代理CA2的FillM完成(箭头136)对其窥探作出响应。虽然各种消息的顺序和定时可变化(例如,类似于图3和图4中所示的竞争条件),但一般来讲,当冲突请求解决时,高速缓存块可利用一个额外消息(FillM完成)从代理移动到代理。
在一个实施方案中,由于上述竞争条件,窥探可在其将窥探的填充完成(通过该窥探携载预期高速缓存状态检测到)之前被接收。另外,窥探可在Ack完成被收集并且填充完成可被处理之前被接收。Ack完成由窥探产生,并且因此取决于携载窥探的虚拟信道中的推进。因此,(在预期高速缓存状态上延迟等待的)冲突窥探可填充内部缓冲器并将压力返回到构造中,这可导致死锁。在一个实施方案中,一致代理14A-14n可被配置为将一个窥探转发和一个窥探失效并吞到请求缓冲器中的未解决请求中,而不是分配单独的条目。非冲突窥探或者将到达能够在没有进一步互连相依性的情况下处理的点的冲突窥探然后可绕过冲突窥探流通并且避免死锁。一个窥探转发和一个窥探失效的并吞可以是足够的,因为当进行窥探转发时,转发责任被转移到目标。因此,在请求方完成其当前请求并且在先前的窥探转发完成之后发出另一个新请求之前不会再次进行另一个窥探转发。当窥探失效完成时,请求方根据目录而失效并且在该请求方处理先前的失效之前将不会再次接收另一个失效,再次请求高速缓存块并获得新副本。
因此,一致代理14A-14n可被配置为通过检测由一致代理接收的对高速缓存块的窥探来帮助确保向前推进和/或防止死锁,对于该高速缓存块,一致代理具有已被排序在窥探之前的未解决请求。一致代理可被配置为将第二窥探并吞到未解决请求中(例如,并吞到存储请求的请求缓冲器条目中)。一致代理可在完成未解决请求之后处理所并吞窥探。例如,如果所并吞窥探是窥探转发请求,则一致代理可被配置为在完成未解决请求之后将高速缓存块转发给窥探转发窥探中所指示的另一个一致代理(并且可将高速缓存状态改变为由窥探转发请求所指示的状态)。如果所并吞窥探是窥探失效请求,则一致代理可将高速缓存状态更新为失效并且在完成未解决请求之后发射确认完成。将窥探并吞到冲突请求中可例如通过在每个请求缓冲器条目中包括用于描述所并吞窥探的数据的附加存储来实现。
图10是示出一致代理14A-14n的一个实施方案基于接收到窥探的操作的流程图。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致代理14A-14n中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致代理14A-14n可被配置为实现如图10中示出的操作。例如,图10中所示出的操作可以是检测具有与预期高速缓存状态不一致的预期高速缓存状态并且待决的窥探(图8中的决策框100和框102)的一部分。
一致代理14A-14n可被配置为将因缺乏一致高速缓存状态而待决的窥探的地址与请求缓冲器62中的未解决请求(或待决请求)的地址进行比较。如果检测到地址冲突(决策框140,“是”分支),则请求缓冲器62可将窥探并吞到指派到针对其检测到地址冲突的待决请求的缓冲器条目中(框142)。如果与待决请求不存在地址冲突(决策框140,“否”分支),则一致代理14A-14n可被配置为针对窥探分配单独的缓冲器位置(例如,在请求缓冲器62中或一致代理14A-14n中的另一个缓冲器中),并且可被配置为将描述窥探的数据存储在缓冲器条目中(框144)。
如先前所提及的,在一个实施方案中,高速缓存一致性协议可支持可高速缓存请求和不可高速缓存请求两者,同时保持所涉及数据的一致性。不可高速缓存请求可例如由非一致代理20A-20p发出,并且非一致代理20A-20p可不具有一致地存储高速缓存块的能力。在一个实施方案中,一致代理14A-14n也可以发出不可高速缓存请求,并且一致代理不可高速缓存响应于这种请求而提供的数据。因此,例如在给定非一致代理20A-20p请求的数据在一致代理14A-14n中的一个一致代理中的所修改高速缓存块中并且将被转发到给定非一致代理20A-20p并且预期所修改高速缓存块将由给定非一致代理20A-20p预留的情况下,针对不可高速缓存请求的窥探转发请求将是不适当的。
为了支持一致不可高速缓存事务,可扩展高速缓存一致性协议的实施方案可包括多种类型的窥探。例如,在一个实施方案中,窥探可包括窥探转发请求和窥探退回请求。如先前所提及的,窥探转发请求可致使将高速缓存块转发到请求代理。另一方面,窥探退回请求可致使将高速缓存块发射回到存储器控制器。在一个实施方案中,还可支持窥探失效请求以使(具有用于引导完成的转发和退回版本的)高速缓存块失效。
更具体地,接收请求的存储器控制器22A-22m(并且甚至更具体地,存储器控制器22A-22m中的一致性控制器24)可被配置为从目录26读取由请求中的地址标识的对应于高速缓存块的条目。存储器控制器22A-22m可被配置为根据条目向一致代理14A-14m中的具有高速缓存块的所高速缓存副本的给定代理发出窥探。窥探指示给定代理将基于第一请求是第一类型(例如,可高速缓存请求)而将高速缓存块发射到请求源。窥探指示给定代理将基于第一请求是第二类型(例如,不可高速缓存请求)而将第一高速缓存块发射到存储器控制器。存储器控制器22A-22n可被配置为基于从给定代理接收到高速缓存块以完成对请求源作出响应。另外,如同其他一致请求,存储器控制器22A-22n可被配置为基于针对不可高速缓存请求发出多个窥探更新目录26中的条目以反映不可高速缓存请求的完成。
图11是示出在一个实施方案中一致地管理的不可高速缓存事务的示例的框图。图11可以是用于将窥探数据通过存储器控制器传递给请求方的4跨链协议的示例。非一致代理被列为NCA0,一致代理是作为CA1,并且与高速缓存块相关联的存储器控制器被列为MC。NCA0、CA1和MC的垂直线150、152和154示出对应于事务的各种消息的源(箭头的根部)和消息的目的地(箭头的头部)。时间在图11中从顶部至底部推进。
在对应于图11顶部的时间,一致代理CA1具有处于独占状态(E)的高速缓存块。NCA0向MC发出不可高速缓存的读取请求(NCRd)(箭头156)。MC根据目录26确定CA1具有包含由NCRd请求的数据的处于独占状态的高速缓存块,并且生成对CA1的窥探退回请求(SnpBkI(E))(箭头158)。CA1向MC提供具有高速缓存块数据的副本退回窥探响应(CpBkSR)(箭头160)。如果数据被修改,则MC可利用数据更新存储器,并且可在不可高速缓存读取响应(NCRdRsp)中将针对不可高速缓存读取请求的数据提供给NCA0(箭头162),从而完成请求。在一个实施方案中,可存在多于一种类型的NCRd请求:使窥探一致代理中的高速缓存块失效的请求和允许窥探一致代理保持高速缓存块的请求。上述讨论说明了失效。在其他情况下,窥探代理可将高速缓存块保持处于相同状态。
可以类似方式执行不可高速缓存写入请求,从而使用窥探退回请求来获得高速缓存块并且在将高速缓存块写入到存储器之前利用不可高速缓存写入数据修改高速缓存块。仍可提供不可高速缓存写入响应以向不可高速缓存代理(图11中的NCA0)通知写入完成。
图12是示出存储器控制器22A-22m(并且更具体地,在一个实施方案中,存储器控制器22A-22m中的一致性控制器24)的一个实施方案响应于请求的操作的流程图,其示出可高速缓存和不可高速缓存操作。例如,图12中所示出的操作可以是图6中示出的操作的一部分的更详细说明。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器24可被配置为实现图12中示出的操作。
一致性控制器24可被配置为基于请求中的地址读取目录。如果请求是目录命中(决策框170,“是”分支),则高速缓存块存在于一致代理14A-14n中的一个或多个高速缓存中。如果请求是不可高速缓存的(决策框172,“是”分支),则一致性控制器24可被配置为向负责提供高速缓存块副本的一致代理14A-14n发出窥探退回请求(以及如果适用的话向共享代理发出窥探失效请求(退回变体)——框174)。一致性控制器24可被配置为更新目录以反映窥探完成(例如,使一致代理14A-14n中的高速缓存块失效——框176)。一致性控制器24可被配置为等待副本退回窥探响应(决策框178,“是”分支)以及来自共享一致代理14A-14n的任何Ack窥探响应,并且可被配置为生成到请求代理的不可高速缓存完成(视情况为NCRdRsp或NCWrRsp)(框180)。如果高速缓存块被修改,则数据也可由存储器控制器22A-22m写入到存储器。
如果请求是可高速缓存的(决策框172,“否”分支),则一致性控制器24可被配置为生成对负责转发高速缓存块的一致代理14A-14n的窥探转发请求(框182),以及如果需要的话生成对其他高速缓存一致代理14A-14n的其他窥探。一致性控制器24可更新目录24以反映事务的完成(框184)。
如果请求在目录26中未命中(决策框170,“否”分支),则在一致代理14A-14n中不存在高速缓存块的所高速缓存副本。在这种情况下,可不生成窥探,并且存储器控制器22A-22m可被配置为生成填充完成(对于可高速缓存请求)或不可高速缓存完成(对于不可高速缓存请求)以提供数据或完成请求(框186)。在可高速缓存请求的情况下,一致性控制器24可更新目录26以针对高速缓存块创建条目,并且可将请求一致代理14A-14n初始化为具有由一致代理14A-14n请求的处于高速缓存状态的高速缓存块的副本(框188)。
图13是示出可在一致代理14A-14n的一个实施方案中实现的示例性高速缓存状态的表190。其他实施方案可采用不同的高速缓存状态、示出的高速缓存状态和其他高速缓存状态的子集、示出的高速缓存状态和其他高速缓存状态的超集等。修改状态(M)或“脏独占”状态可以是仅具有高速缓存块的所高速缓存副本(该副本是独占的)的一致代理14A-14n中的状态,并且所高速缓存副本中的数据已经相对于存储器中的对应数据被修改(例如,数据的至少一个字节不同于存储器中的对应字节)。所修改数据也可称为脏数据。拥有状态(O)或“脏共享”状态可以是具有高速缓存块的所修改副本但可与至少一个其他一致代理14A-14n共享副本的一致代理14A-14n中的状态(尽管其他一致代理14A-14n随后可以将共享高速缓存块逐出)。另一个一致代理14A-14n将具有处于二级共享状态的高速缓存块。独占状态(E)或“干净独占”状态可以是仅具有高速缓存块的所高速缓存副本但所高速缓存副本所具有的数据与存储器中的对应数据相同的一致代理14A-14n中的状态。独占无数据(EnD)状态或“干净独占,无数据”状态可以是一致代理14A-14n中的类似于独占(E)状态,只是高速缓存块数据并未被递送到一致代理的状态。这种状态可在其中一致代理14A-14n将修改高速缓存块中的每个字节的情况下使用,并且因此可能不存在益处或一致性原因来在高速缓存块中供应先前数据。EnD状态可以是用于减少互连体28上的流量的优化,并且可不在其他实施方案中实现。一级共享(P)状态或“干净共享一级”状态可以是具有高速缓存块的共享副本但也负责基于窥探转发请求将高速缓存块转发到另一个一致代理的一致代理14A-14n中的状态。二级共享(S)状态或“干净共享二级”状态可以是具有高速缓存块的共享副本但在另一个一致代理14A-14n具有处于一级共享状态的高速缓存块的情况下不负责提供高速缓存块的一致代理14A-14n中的状态。在一些实施方案中,如果没有一致代理14A-14n具有处于一级共享状态的高速缓存块,则一致性控制器24可选择二级共享代理以提供高速缓存块(并且可向所选择一致代理发送窥探转发请求)。在其他实施方案中,如果不存在处于一级共享状态的一致代理14A-14n,则一致性控制器24可致使存储器控制器22A-22m向请求方提供高速缓存块。失效状态(I)可以是不具有高速缓存块的所高速缓存副本的一致代理14A-14n中的状态。处于失效状态的一致代理14A-14n可先前不具有请求副本,或者可具有任何副本并且基于窥探或基于高速缓存块的逐出使副本失效以高速缓存不同的高速缓存块。
图14是示出可在可扩展高速缓存一致性协议的一个实施方案中使用的各种消息的表192。可在其他实施方案中存在另选消息、所示出消息和附加消息的子集、所示出消息和附加消息的超集等。这些消息可携载链接来自相同事务的消息(例如,初始请求、窥探、完成)的事务标识符。初始请求和窥探可携载受事务影响的高速缓存块的地址。一些其他消息也可携载地址。在一些实施方案中,所有消息可携载地址。
可高速缓存读取事务可利用可高速缓存读取请求消息(CRd)发起。可存在CRd请求的各种版本以请求不同的高速缓存状态。例如,CRdEx可请求独占状态,CRdS可请求二级共享状态等。响应于可高速缓存读取请求而实际提供的高速缓存状态可至少与请求状态一样具许可性,并且可更具许可性。例如,CRdEx可接收处于独占或修改状态的高速缓存块。CRdS可接收处于一级共享、独占、拥有或修改状态的块。在一个实施方案中,可实现机会性CRd请求,并且可授予(不使高速缓存块的其他副本失效的)可能的最具许可性状态(例如,在没有其他一致代理具有所高速缓存副本的情况下为独占,在存在所高速缓存副本的情况下为拥有或一级共享,等等)。
改变为独占(CtoE)消息可由具有处于不允许修改的状态(例如,拥有、一级共享、二级共享)的高速缓存块的副本的一致代理使用,并且一致代理正尝试修改高速缓存块(例如,一致代理需要独占访问来将高速缓存块改变为修改)。在一个实施方案中,条件CtoE消息可用于存储条件指令。存储条件指令是加载保留/存储条件对的一部分,在该对中,加载获得高速缓存块的副本并且针对该高速缓存块设置保留。一致代理14A-14n可监视其他代理对高速缓存块的访问,并且可基于高速缓存块是否尚未被加载与存储之间的另一个一致代理14A-14n修改条件地执行存储(如果高速缓存块尚未被修改,则成功地存储,如果高速缓存块已经被修改,则不进行存储)。附加细节在下文提供。
在一个实施方案中,当一致代理14A-14n将修改整个高速缓存块时,可使用高速缓存读取独占,仅数据(CRdE Donly)消息。如果高速缓存块在另一个一致代理14A-14n中未被修改,则请求一致代理14A-14n可使用EnD高速缓存状态并修改块的所有字节,而无需将高速缓存块中的先前数据传送给代理。如果高速缓存块被修改,则可将所修改高速缓存块传送到请求一致代理14A-14n,并且请求一致代理14A-14n可使用M高速缓存状态。
不可高速缓存事务可利用不可高速缓存读取和不可高速缓存写入(NCRd和NCWr)消息发起。
如前所述,窥探转发和窥探退回(分别为SnpFwd和SnpBk)可用于窥探。可存在用于请求在处理窥探之后接收一致代理14A-14n中的各种状态(例如,失效或共享)的消息。还可存在针对CRdE Donly请求的窥探转发消息,该窥探转发消息请求在高速缓存块被修改的情况下转发,否则不转发,并且在接收方处失效。在一个实施方案中,还可存在在表192中示出为SnpInvFw和SnpInvBk的仅失效窥探转发请求和窥探退回请求(例如,致使接收方失效并分别向请求方或存储器控制器确认而无需返回数据的窥探)。
完成消息可包括填充消息(Fill)和确认消息(Ack)。填充消息可指定请求方在完成时将呈现的高速缓存块的状态。可高速缓存写回(CWB)消息可用于将高速缓存块发射到存储器控制器22A-22m(例如,基于将高速缓存块从高速缓存逐出)。副本退回窥探响应(CpBkSR)可用于将高速缓存块发射到存储器控制器22A-22m(例如,基于窥探退回消息)。不可高速缓存写入完成(NCWrRsp)和不可高速缓存读取完成(NCRdRsp)可用于完成不可高速缓存请求。
图15是示出一致性控制器24的一个实施方案基于接收到条件改变为独占(CtoECond)消息的操作的流程图。例如,在一个实施方案中,图15可以是图6中的框70的一部分的更详细描述。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器24可被配置为实现图15中示出的操作。
CtoECond消息可由一致代理14A-14n(“源”)基于存储条件指令的执行发出。如果源在存储条件指令之前丢失高速缓存块的副本(例如,副本不再有效),则存储条件指令可在源中本地失败。如果源仍具有(例如处于二级或一级共享状态,或拥有状态的)有效副本,则当执行存储条件指令时,仍可能的是另一个事务将被排序在来自源的改变为独占消息之前,该改变为独占消息致使源使其所高速缓存副本失效。使所高速缓存副本失效的相同事务也将致使存储条件指令在源中失败。为了避免高速缓存块失效以及将高速缓存块传送到存储条件指令将失败的源,CtoECond消息可由源提供并使用。
CtoECond消息可被定义为当该CtoECond消息被一致性控制器24排序时具有至少两个可能的结果。如果在排序并处理CtoECond消息时源仍具有如目录26中所指示的高速缓存块的有效副本,则CtoECond可类似于非条件CtoE消息进行:发出窥探并获得高速缓存块的独占状态。如果源不具有高速缓存块的有效副本,则一致性控制器24可使CtoE事务失败,从而利用CtoE失败的指示将Ack完成返回到源。源可基于Ack完成终止CtoE事务。
如图15中所示出,一致性控制器24可被配置为读取地址的目录条目(框194)。如果源保持(例如处于共享状态的)高速缓存块的有效副本(决策框196,“是”分支),则一致性控制器24可被配置为基于目录条目中的高速缓存状态生成窥探(例如,用于使高速缓存块失效,使得源可改变为独占状态的窥探)(框198)。如果源未保持高速缓存块的有效副本(决策框196,“否”分支),则高速缓存控制器24可被配置为将确认完成发射到源,从而指示CtoECond消息失败(框200)。CtoE事务因此可终止。
现在转向图16,示出了示出一致性控制器24的一个实施方案读取目录条目并确定窥探的操作的流程图(例如,在一个实施方案中,图6中的框70的至少一部分)。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器24可被配置为实现图16中示出的操作。
如图16所示,一致性控制器24可被配置为读取请求的地址的目录条目(框202)。基于目录条目中的高速缓存状态,一致性控制器24可被配置为生成窥探。例如,基于代理中的一个代理中的高速缓存状态至少是一级共享(决策框204,“是”分支),一致性控制器24可被配置为将SnpFwd窥探发射到该一级共享代理,从而指示一级共享代理将把高速缓存块发射到请求代理。对于(例如处于二级共享状态的)其他代理,一致性控制器24可被配置为生成仅失效窥探(SnpInv),该SnpInv指示其他代理将不把高速缓存块发射到请求代理(框206)。在一些情况下(例如,请求高速缓存块的共享副本的CRdS请求),其他代理不需要接收窥探,因为这些其他代理不需要改变状态。如果高速缓存状态是至少与一级共享一样具许可性的高速缓存状态(例如,图13的实施方案中的一级共享、拥有、独占或修改),则代理可具有作为至少一级共享的高速缓存状态。
如果没有代理具有作为至少一级共享的高速缓存状态(决策框204,“否”分支),则一致性控制器24可被配置为确定一个或多个代理是否具有处于二级共享状态的高速缓存块(决策框208)。如果是(决策框208,“是”分支),则一致性控制器24可被配置为选择具有二级共享状态的代理中的一个代理,并且可将SnpFwd请求指令发射到所选择代理以便将高速缓存块转发到请求代理。一致性控制器24可被配置为针对处于二级共享状态中的其他代理生成SnpInv请求,这些SnpInv请求指示其他代理将不把高速缓存块发射到请求代理(框210)。如上所述,如果其他代理不需要改变状态,则可不生成并发射SnpInv消息。
如果没有代理具有处于二级共享的高速缓存状态(决策框208,“否”分支),则一致性控制器24可被配置为生成填充完成并且可被配置为致使存储器控制器读取高速缓存块以用于发射到请求代理(框212)。
图17是示出一致性控制器24的一个实施方案响应于CRdE Donly请求而读取目录条目并确定窥探的操作的流程图(例如,在一个实施方案中,图6中的框70的至少一部分)。然而,为了便于理解,框图以特定顺序示出,也可使用其他顺序。框可在一致性控制器24中的组合式逻辑中并行执行。框、框的组合和/或流程图作为一个整体可在多个时钟周期内为流水线式的。一致性控制器24可被配置为实现图17中示出的操作。
如上所述,CRdE Donly请求可由要修改高速缓存块中的所有字节的一致代理14A-14n使用。因此,一致性控制器24可致使其他代理使高速缓存块失效。如果代理修改了高速缓存块,则代理可将所修改高速缓存块供应给请求代理。否则,代理可不供应高速缓存块。
一致性控制器24可被配置为读取请求的地址的目录条目(框220)。基于目录条目中的高速缓存状态,一致性控制器24可被配置为生成窥探。更具体地,如果给定代理可具有高速缓存块的所修改副本(例如,给定代理具有处于独占或一级状态的高速缓存块)(框222,“是”分支),则高速缓存控制器24可生成对代理的窥探转发-仅脏(SnpFwdDonly)以将高速缓存块发射到请求代理(框224)。如上所述,SnpFwdDonly请求可致使接收代理在数据被修改的情况下发射高速缓存块,否则不发射高速缓存块。在任一情况下,接收代理可使高速缓存块失效。如果数据被修改并且提供所修改高速缓存块,则接收代理可发射填充完成。否则,接收代理可发射Ack完成。如果没有代理具有所修改副本(决策框222,“否”分支),则一致性控制器24可被配置为针对具有高速缓存块的所高速缓存副本的每个代理生成窥探失效(SnpInv)。(框226)。在另一个实施方案中,即使高速缓存块被修改,一致性控制器24也可请求不转发数据,因为请求方要修改整个高速缓存块。即,一致性控制器24可致使具有所修改副本的代理在不转发数据的情况下使数据失效。
计算机***
接下来转向图18,示出了***700的一个实施方案的框图。在例示的实施方案中,***700包括耦接到一个或多个***设备704和外部存储器702的片上***(SOC)10的至少一个实例。提供了电源(PMU)708,其向SOC 10供应供电电压以及向存储器702和/或***设备154供应一个或多个供电电压。在一些实施方案中,可包括SOC 10的多于一个实例(并且也可包括多于一个存储器702)。在一个实施方案中,存储器702可包括图1中所示出的存储器12A-12m。
根据***700的类型,***设备704可包括任何期望的电路。例如,在一个实施方案中,***704可以是移动设备(例如,个人数字助理(PDA)、智能电话等),并且***设备704可包括用于各种类型的无线通信的设备,诸如Wi-Fi、蓝牙、蜂窝、全球定位***等。***设备704还可包括额外存储装置,该额外存储装置包括RAM存储装置、固态存储装置或磁盘存储装置。***设备704可包括用户接口设备,诸如显示屏,其包括触摸显示屏或多触摸显示屏、键盘或其它输入设备、麦克风、扬声器等。在其它实施方案中,***700可为任何类型的计算***(例如,台式个人计算机、膝上型电脑、工作站、网络机顶盒等)。
外部存储器702可包括任何类型的存储器。例如,外部存储器702可为SRAM、动态RAM(DRAM)(诸如同步DRAM(SDRAM))、双倍数据速率(DDR、DDR2、DDR3等)SDRAM、RAMBUSDRAM、低功率版本的DDR DRAM(例如,LPDDR、mDDR等)等等。外部存储器702可包括存储器设备可被安装到的一个或多个存储器模块,诸如单列直插存储器模块(SIMM)、双列直插存储器模块(DIMM)等。另选地,外部存储器702可包括以芯片上芯片或封装上封装具体实施被安装在SOC 10上的一个或多个存储器设备。
如图所示,***700被展示为具有在广泛领域中的应用。例如,***700可用作台式计算机710、膝上型计算机720、平板电脑730、蜂窝或移动电话740或电视750(或耦接到电视的机顶盒)的芯片、电路、部件等的一部分。还示出了智能手表和健康监测设备760。在一些实施方案中,智能手表可包括各种通用计算相关功能。例如,智能手表可提供对电子邮件、手机服务、用户日历等的访问。在各种实施方案中,健康监测设备可以是专用医疗设备或以其他方式包括专用的健康相关功能。例如,健康监测设备可监测用户的生命体征、跟踪用户与其他用户的接近度以用于流行病学社交距离的目的、联系人跟踪、在发生健康危机的情况下向紧急服务部门提供通信等。在各种实施方案中,上述智能手表可包括或可不包括一些或任何健康监测相关功能。还设想了其他可穿戴设备,诸如围绕颈部佩戴的设备、可植入人体中的设备、被设计成提供增强和/或虚拟现实体验的眼镜,等等。
***700还可用作基于云的服务770的一部分。例如,先前提及的设备和/或其他设备可访问云端中的计算资源(即,远程定位的硬件和/或软件资源)。更进一步地,***700可用于家庭的除先前提到的那些设备之外的一个或多个设备中。例如,家用电器可监测和检测值得注意的情况。例如,家中的各种设备(例如,冰箱、冷却***等)可监测设备的状态,并且在检测到特定事件的情况下向房主(或例如维修机构)提供警报。另选地,恒温器可监测家中的温度,并且可基于由房主对各种情况的反应历史来自动化调整加热/冷却***。图18中还示出了***700对各种交通运输方式的应用。例如,***700可用于飞机、火车、公共汽车、出租用汽车、私人汽车、从私人船只到游轮的水运船、(用于出租或私有的)小型摩托车等的控制和/或娱乐***。在各种情况下,***700可用于提供自动化引导(例如,自驾驶车辆)、一般***控制等。这些任何许多其他实施方案都是可能的并且被设想到的。需注意,图18中所示出的设备和应用仅为例示性的,并非旨在进行限制。其他设备是可能的并且被设想到的。
计算机可读存储介质
现在转向图19,示出了计算机可读存储介质800的一个实施方案的框图。一般来讲,计算机可访问存储介质可包括在使用期间能够被计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可包括诸如磁性或光学介质的存储介质,例如,盘(固定或可拆卸)、带、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质还可包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM或闪存存储器。存储介质可被物理地包括在存储介质将指令/数据提供至其的计算机内。另选地,存储介质可连接至计算机。例如,存储介质可通过网络或无线链路诸如网络附接存储装置而被连接至计算机。存储介质可通过***接口诸如通用串行总线(USB)而被连接。通常,计算机可访问存储介质800可以非暂态方式存储数据,其中非暂态在该上下文中可指不通过信号传输指令/数据。例如,非暂态存储装置可为易失性的(并且响应于断电而可能会丢失所存储的指令/数据)或为非易失性的。
图19中的计算机可访问存储介质800可存储代表SOC 10的数据库804。一般来讲,数据库804可以是可以由程序读取并且直接或间接使用以制造包括SOC 10的硬件的数据库。例如,数据库可以是诸如Verilog或VHDL的高级设计语言(HDL)中硬件功能的行为级别描述或寄存器传送级别(RTL)描述。可通过合成工具读取该描述,合成工具可合成该描述以产生包括来自合成库的门电路列表的网表。网表包括一组门电路,其还表示包括SOC 10的硬件的功能。然后可放置并路由网表,以产生用于描述要应用到掩模的几何形状的数据集。然后可以在各种半导体制造步骤中使用掩模以产生对应于SOC 10的半导体电路。替代地,根据需要,计算机可访问存储介质800上的数据库804可以是网表(具有或不具有合成库)或数据集。
虽然计算机可访问存储介质800存储SOC 10的表示,但其他实施方案可根据需要携载SOC 10的任何部分的表示,包括一致代理14A-14n、存储器控制器22A-22m、非一致代理20A-20p、一致性控制器24、目录26等的任何子集。数据库804可表示上述的任何部分。
基于本公开,一种***可包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该***还可包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备,其中该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存这些存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。其中基于该多个一致代理中的第一代理针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探,并且将该第二代理中的该第一高速缓存块的第一状态的标识符包括在该窥探中。基于该窥探,该第二代理可被配置为:将该第一状态与该第二代理中的该第一高速缓存块的第二状态进行比较,并且基于该第一状态与该第二状态不匹配延迟对该窥探的处理,直到该第二状态响应于与不同于该第一请求的请求有关的不同通信而改变为该第一状态为止。在一个实施方案中,该存储器控制器可被配置为:确定指示该第一代理将针对该第一请求将接收的完成的数量的完成计数,其中该确定是基于来自该条目的这些状态;并且将该完成计数包括在基于该第一请求发出的多个窥探中,包括向该第二代理发出的该窥探。该第一代理被可配置为:基于从该多个一致代理中的一个一致代理接收到初始完成利用该完成计数来初始化完成计数器,基于从该多个一致代理中的另一个一致代理接收到后续完成更新该完成计数器,并且基于该完成计数器完成第一请求。在一个实施方案中,该存储器控制器可被配置为:基于根据该第一请求发出多个窥探更新该目录的该条目中的这些状态以反映该第一请求的完成。在一个实施方案中,该第一代理可被配置为:检测由该第一代理接收的对该第一高速缓存块的第二窥探,其中该第一代理可被配置为:将该第二窥探并吞到该第一请求中。在一个实施方案中,该第一代理可被配置为:在完成该第一请求之后处理该第二窥探。在一个实施方案中,该第一代理可被配置为:在完成该第一请求之后将该第一高速缓存块转发到在该第二窥探中指示的第三代理。在一个实施方案中,第三代理可被配置为基于存储条件指令生成对在该第三代理处处于有效状态的第二高速缓存块的条件改变为独占状态请求。该存储器控制器可被配置为:基于该目录中的与该第二高速缓存块相关联的第二条目确定该第三代理是否保持该第二高速缓存块的有效副本,并且该存储器控制器可被配置为:将指示失败的完成发射到该第三代理,并且基于确定该第三代理不再保持该第二高速缓存块的该有效副本终止该条件改变为独占请求。在一个实施方案中,该存储器控制器可被配置为:基于确定该第三代理保持该第二高速缓存块的该有效副本向该多个一致代理中的如由该第二条目指示的其他一致代理发出一个或多个窥探。在一个实施方案中,该窥探指示该第二代理将基于该第一状态是一级共享而将该第一高速缓存块发射到该第一代理,并且其中该窥探指示该第二代理将基于该第一状态是二级共享而不发射该第一高速缓存块。在一个实施方案中,该窥探指示该第二代理将发射该第一高速缓存块,即使在该第一状态是二级共享的情况下。
在另一个实施方案中,一种***包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该***还包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备。该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存该存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。基于该多个一致代理中的第一代理针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,并且根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探。该窥探可指示该第二代理将基于该条目指示该第二代理具有处于至少一级共享状态的该第一高速缓存块而将该第一高速缓存块发射到该第一代理。该窥探指示该第二代理将基于不同代理具有处于至少该一级共享状态的该第一高速缓存块而不将该第一高速缓存块发射到该第一代理。在一个实施方案中,如果该不同代理处于该一级共享状态,则该第一代理处于该第一高速缓存块的二级共享状态。在一个实施方案中,该窥探指示该第一代理将基于该不同代理具有处于至少该一级共享状态的该第一高速缓存块而使该第一高速缓存块失效。在一个实施方案中,该存储器控制器被配置为:基于该不同代理具有处于该一级共享状态的该第一高速缓存块以及该第一请求是针对该第一高速缓存块的共享副本的请求,不向该第二代理发出窥探。在一个实施方案中,该第一请求可针对该第一高速缓存块的独占状态,并且该第一代理要修改整个该第一高速缓存块。该窥探可指示如果该第一高速缓存块在该第二代理中处于修改状态,则该第二代理将发射该第一高速缓存块。在一个实施方案中,该窥探指示如果该第一高速缓存块在该第二代理中并不处于修改状态,则该第二代理将使该第一高速缓存块失效。
在另一个实施方案中,一种***包括:多个一致代理,其中该多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存。该***还包括:存储器控制器,该存储器控制器耦接到一个或多个存储器设备。该存储器控制器包括目录,该目录被配置为跟踪该多个一致代理中的哪个一致代理正在高速缓存该存储器设备中的多个高速缓存块的副本以及该多个一致代理中的所高速缓存副本的状态。基于针对第一高速缓存块的第一请求,该存储器控制器可被配置为:从该目录读取对应于该第一高速缓存块的条目,并且根据该条目向该多个一致代理中的具有该第一高速缓存块的所高速缓存副本的第二代理发出窥探。该窥探可指示该第二代理将基于与该第一请求相关联的属性具有第一值而将该第一高速缓存块发射到该第一请求的源,并且该窥探指示该第二代理将基于该属性具有第二值而将该第一高速缓存块发射到该存储器控制器。在一个实施方案中,该属性是请求的类型,该第一值是能高速缓存的,并且该第二值是不能高速缓存的。在另一个实施方案中,该属性是该第一请求的源。在一个实施方案中,该存储器控制器可被配置为:基于从该第二代理接收到该第一高速缓存块对该第一请求的该源作出响应。在一个实施方案中,该存储器控制器被配置为:基于根据该第一请求发出多个窥探更新该目录的该条目中的这些状态以反映该第一请求的完成。
***
本公开包括对“实施方案”或“实施方案”的组(例如,“一些实施方案”或“各种实施方案”)的引用。实施方案是所公开概念的不同具体实施或实例。对“实施方案”、“一个实施方案”、“特定实施方案”等的引用并不一定是指相同的实施方案。设想了大量可能的实施方案,包括具体公开的那些,以及落入本公开的实质或范围内的修改或替代。
本公开可讨论可由所公开的实施方案产生的潜在优点。并非所有这些实施方案的具体实施都将必然表现出任何或所有潜在优点。特定具体实施是否实现了优点取决于许多因素,其中一些因素在本公开的范围之外。事实上,存在许多原因导致落入权利要求范围内的具体实施可能不表现出任何所公开的优点中的一些或全部。例如,特定具体实施可包括在本公开的范围之外的其他电路,结合所公开的实施方案中的一个实施方案,该其他电路否定或减弱一个或多个所公开的优点。此外,特定具体实施(例如,具体实施技术或工具)的次优设计执行也可能否定或减弱所公开的优点。即使假设有技术的具体实施,优点的实现仍可取决于其他因素,诸如部署具体实施的环境情况。例如,提供给特定具体实施的输入可防止本公开中解决的一个或多个问题在特定场合发生,结果可能无法实现其解决方案的益处。考虑到本公开外部的可能因素的存在,本文所述的任何潜在优点都不应理解为是为了证明侵权行为而必须满足的权利要求限制。相反,此类潜在优点的识别旨在示出受益于本公开的设计者可用的一种或多种改进类型。永久性地描述此类优点(例如,陈述特定优点“可能出现”)并非旨在传达关于此类优点实际上是否可被实现的疑问,而是认识到此类优点的实现通常取决于附加因素的技术现实。
除非另行指出,否则实施方案是非限制性的。也就是说,所公开的实施方案并非旨在限制基于本公开起草的权利要求的范围,即使仅针对特定特征描述单个示例的情况下也是如此。本发明所公开的实施方案旨在为示例性的而非限制性的,而无需在本发明中进行任何相反的陈述。因此本申请意在允许涵盖所公开实施方案的权利要求、以及此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
例如,本申请中的特征可以任何合适的方式组合。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地讲,参照所附权利要求,从属权利要求的特征在适当的情况下可与其他从属权利要求的特征组合,包括从属于其他独立权利要求的权利要求。类似地,在适当的情况下,可组合来自相应独立权利要求的特征。
因此,虽然所附从属权利要求可撰写成使得每个从属权利要求从属于单个其他权利要求,但也可设想附加从属关系。可设想符合本公开的从属特征的任何组合,并且这些组合可在本专利申请或另一专利申请中受权利要求书保护。简而言之,组合不限于所附权利要求中具体列举的那些。
在适当的情况下,还预期以一种格式或法定类型(例如,装置)起草的权利要求旨在支持另一种格式或法定类型(例如,方法)的对应权利要求。
***
因为本公开是法律文件,所以各种术语和短语可受到管理和司法解释的约束。特此给出公告,以下段落以及贯穿本公开提供的定义将用于确定如何解释基于本公开起草的权利要求。
除非上下文另有明确规定,否则对单数形式的项目的引用(即,前面有“一个”、“一种”或“该”的名词或名词短语)旨在表示“一个或多个”。因此,在不伴随上下文的情况下,对权利要求中的“项目”的引用并不排除该项目的附加实例。“多个”项目是指两个或更多个项目的集合。
词语“可”在本文中在允许的意义上(即,具有潜在可能的,能够的)进行使用,而不是在强制意义上(即,必须)进行使用。
术语“包含”和“包括”及其形式是开放式的,并且意指“包括但不限于”。
当在本公开中相对于选项列表使用术语“或”时,除非上下文另有提供,否则一般将理解为以包含性意义使用。因此,表述“x或y”等同于“x或y,或两者”,因此涵盖1)x但不是y,2)y但不是x,以及3)x和y两者。另一方面,短语诸如“x或y中的任一者,但不是两者都”使得清楚“或”以排他性意义使用。
表述“w、x、y或z,或它们的任何组合”或“...w、x、y和z中的至少一者”旨在涵盖涉及最多至该集合中元件总数的单个元件的所有可能性。例如,给定集合[w,x,y,z],这些短语涵盖集合中的任何单个元素(例如,w但不是x、y或z)、任何两个元素(例如,w和x,但不是y或z)、任何三个元素(例如,w、x和y,但不是z)以及所有四个元素。短语“...w、x、y和z中的至少一者”因此是指集合[w,x,y,z]中的至少一个元素,从而涵盖该元素列表中的所有可能的组合。该短语不应被解释为要求存在w的至少一个实例、x的至少一个实例、y的至少一个实例和z的至少一个实例。
在本公开中,各种“标签”可先于名词或名词短语。除非上下文另有提供,否则用于特征(例如,“第一电路”、“第二电路”、“特定电路”、“给定电路”等)的不同标签是指特征的不同实例。除此之外,除非另有说明,否则标签“第一”、“第二”和“第三”在应用于特征时并不暗示任何类型的排序(例如,空间、时间、逻辑等)。
短语“基于”或用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。此短语也旨在覆盖A仅基于B来确定的实施方案。如本文所用,短语“基于”与短语“至少部分地基于”是同义的。
短语“响应于”和“响应”描述了触发效应的一个或多个因素。该短语不排除附加因素可影响或以其他方式触发效应的可能性,这些因素与指定因素联合使用或独立于指定因素。也就是说,效果可以仅仅响应于这些因素,或者可以响应于指定的因素以及其他未指定的因素。考虑短语“响应于B执行A”。该短语指定B是触发A的执行或触发A的特定结果的因素。该短语不排除执行A也可能响应于某些其他因素,诸如C。该短语也不排除执行A可响应于B和C而联合执行。此短语也旨在覆盖A仅响应于B而执行的实施方案。如本文所用,短语“响应”与短语“至少部分地响应于”是同义的。类似地,短语“响应于”与短语“至少部分地响应于”是同义的。
***
在本公开内,不同实体(其可被不同地称为“单元”、“电路”、其他部件等)可被描述或声称成“被配置为”执行一个或多个任务或操作。此表达方式—被配置为[执行一个或多个任务]的[实体]—在本文中用于指代结构(即,物理的事物)。更具体地,此表达方式用于指示此结构被布置成在操作期间执行一个或多个任务。结构可被说成“被配置为”执行某个任务,即使该结构当前并非正***作。因此,被描述或表述为“被配置为”执行某个任务的实体指代用于实施该任务的物理的事物,诸如设备、电路、具有处理器单元的***和存储有可执行程序指令的存储器等。此短语在本文中不被用于指代无形的事物。
在一些情况下,各种单元/电路/部件在本文中可被描述为执行一组任务或操作。应当理解,这些实体“被配置为”执行那些任务/操作,即使没有具体指出。
术语“被配置为”并不旨在意指“可配置为”。例如,未编程的FPGA不会被认为是“被配置为”执行特定功能。然而,该未编程的FPGA可以“可配置为”执行该功能。在适当编程之后,FPGA然后可认为“被配置为”执行特定功能。
出于基于本公开的美国专利申请的目的,在权利要求中陈述结构“被配置为”执行一个或多个任务明确地旨在对该权利要求要素不援引35U.S.C.§112(f)。如果申请人在基于本公开的美国专利申请的申请过程中想要援引112(f)部分,则其将使用“用于[执行功能]的装置”结构来表述权利要求的要素。
在本公开中可描述不同的“电路”。这些电路或“电路”构成硬件,该硬件包括各种类型的电路元件,诸如组合逻辑、时钟存储设备(例如,触发器、寄存器、锁存器等)、有限状态机、存储器(例如,随机存取存储器、嵌入式动态随机存取存储器)、可编程逻辑阵列等。电路可为定制设计的,或取自标准库。在各种具体实施中,电路可视情况包括数字部件、模拟部件或两者的组合。某些类型的电路可通常被称为“单元”(例如,解码单元、算术逻辑单元(ALU)、功能单元、存储器管理单元(MMU)等)。此类单元也指电路或电路。
因此,在附图中示出并在本文中描述的所公开的电路/单元/部件和其他元件包括硬件元件,诸如前面段落中描述的那些硬件元件。在许多情况下,硬件元件在特定电路中的内部布置可通过描述该电路的功能来指定。例如,特定的“解码单元”可被描述为执行“处理指令的操作码并将该指令路由到多个功能单元中的一个或多个”的功能,这意味着解码单元“被配置为”执行该功能。对于计算机领域的技术人员而言,该功能规范足以暗示用于电路的一组可能的结构。
在各种实施方案中,如前面段落中所讨论的,电路、单元和由它们被配置为实现的功能或操作限定的其他元件,相对于彼此的布置和此类电路/单元/部件以及它们进行交互的方式形成硬件的微架构定义,该硬件最终在集成电路中制造或被编程到FPGA中以形成微架构定义的物理具体实施。因此,微架构定义被本领域的技术人员认为是可导出许多物理具体实施的结构,所有这些物理具体实施均落入由微架构定义所描述的更广泛的结构中。即,具有根据本公开提供的微架构定义的技术人员可在没有过度实验的情况下并且利用普通技术人员的应用,通过以硬件描述语言(HDL)诸如Verilog或VHDL编码电路/单元/部件的描述来实现该结构。HDL描述常常以可显现为功能性的方式来表达。但是对于本领域的技术人员而言,该HDL描述是用于将电路、单元或部件的结构转换为下一级具体实施细节的方式。此类HDL描述可采用以下形式:行为代码(其通常为不可合成的)、寄存器传输语言(RTL)代码(其与行为代码相比通常为可合成的)、或结构代码(例如,指定逻辑门及其连接性的网表)。可针对为给定集成电路制造技术设计的单元库来顺序地合成HDL描述,并可出于定时、功率和其他原因而被修改,以获得被传输到工厂以生成掩模并最终产生集成电路的最终的设计数据库。一些硬件电路或其部分也可在示意图编辑器中被定制设计并与合成电路一起被捕获到集成电路设计中。该集成电路可包括晶体管和其它电路元件(例如,无源元件,诸如电容器、电阻器、电感器等),以及晶体管和电路元件之间的互连件。一些实施方案可实现耦接在一起的多个集成电路,以实现硬件电路,和/或可在一些实施方案中使用离散元件。另选地,HDL设计可被合成为可编程逻辑阵列诸如现场可编程门阵列(FPGA)并且可在FPGA中实现。一组电路的设计与这些电路的后续低级具体实施之间的这种解耦通常导致这样的情形:其中电路或逻辑设计者从来不指定超出对电路被配置为做什么的描述的用于低级具体实施的一组特定结构,因为该过程是在电路实施过程的不同阶段执行的。
可使用电路元件的许多不同低级组合来实现电路的相同规格的事实导致该电路的大量等效结构。如所指出的那样,这些低级电路具体实施可根据制造技术、被选择用于制造集成电路的铸造厂、为特定项目提供的单元库等的变化而变化。在许多情况下,通过不同设计工具或方法进行的产生这些不同具体实施的选择可以是任意的。
此外,对于给定实施方案,电路的特定功能规范的单个具体实施通常包括大量设备(例如,数百万个晶体管)。因此,该信息的剪切体积使得提供用于实现单个实施方案的低级结构的完整叙述是不切实际的,更不用说大量等同的可能具体实施。为此,本公开描述了使用工业中常用的功能简写的电路的结构。
一旦充分了解了上面的公开,许多变型和修改对于本领域的技术人员而言将变得显而易见。本公开旨在使以下权利要求书被阐释为包含所有此类变型和修改。
Claims (20)
1.一种***,包括:
多个一致代理,其中所述多个一致代理中的给定代理包括用于高速缓存存储器数据的一个或多个高速缓存;
存储器控制器,所述存储器控制器耦接到一个或多个存储器设备,其中所述存储器控制器包括目录,所述目录被配置为跟踪所述多个一致代理中的哪个一致代理正在高速缓存所述存储器设备中的多个高速缓存块的副本以及所述多个一致代理中的所高速缓存副本的状态;
其中基于所述多个一致代理中的第一代理针对第一高速缓存块的第一请求,所述存储器控制器被配置为:
从所述目录读取对应于所述第一高速缓存块的条目,
根据所述条目向所述多个一致代理中的具有所述第一高速缓存块的所高速缓存副本的第二代理发出窥探,并且
将所述第二代理中的所述第一高速缓存块的第一状态的标识符包括在所述窥探中;以及
其中基于所述窥探,所述第二代理被配置为:
将所述第一状态与所述第二代理中的所述第一高速缓存块的第二状态进行比较,并且
基于所述第一状态与所述第二状态不匹配延迟对所述窥探的处理,直到所述第二状态响应于与不同于所述第一请求的请求有关的不同通信而改变为所述第一状态为止。
2.根据权利要求1所述的***,
其中所述存储器控制器被配置为:
确定指示所述第一代理针对所述第一请求将接收的完成的数量的完成计数,其中所述确定是基于来自所述条目的所述状态,
将所述完成计数包括在基于所述第一请求发出的多个窥探中,包括向所述第二代理发出的所述窥探;以及
其中所述第一代理被配置为:
基于从所述多个一致代理中的一个一致代理接收到初始完成,利用所述完成计数来初始化完成计数器,
基于从所述多个一致代理中的另一个一致代理接收到后续完成,更新所述完成计数器,并且
基于所述完成计数器完成第一请求。
3.根据权利要求1或权利要求2所述的***,其中所述存储器控制器被配置为:基于根据所述第一请求发出多个窥探,更新所述目录的所述条目中的所述状态以反映所述第一请求的完成。
4.根据权利要求1至3中任一项所述的***,其中所述第一代理被配置为:检测由所述第一代理接收的对所述第一高速缓存块的第二窥探,其中所述第一代理被配置为:将所述第二窥探并吞到所述第一请求中。
5.根据权利要求4所述的***,其中所述第一代理被配置为:在完成所述第一请求之后处理所述第二窥探。
6.根据权利要求5所述的***,其中所述第一代理被配置为:在完成所述第一请求之后将所述第一高速缓存块转发到在所述第二窥探中指示的第三代理。
7.根据权利要求1至6中任一项所述的***,其中:
***理被配置为:基于存储条件指令,生成对在所述***理处处于有效状态的第二高速缓存块的条件改变为独占状态请求,并且
所述存储器控制器被配置为:基于所述目录中的与所述第二高速缓存块相关联的第二条目确定所述***理是否保持所述第二高速缓存块的有效副本,并且
所述存储器控制器被配置为:基于确定所述***理不再保持所述第二高速缓存块的所述有效副本,将指示失败的完成发射到所述***理,并且终止所述条件改变为独占请求。
8.根据权利要求7所述的***,其中所述存储器控制器被配置为:基于确定所述***理保持所述第二高速缓存块的所述有效副本,向所述多个一致代理中的如由所述第二条目指示的其他一致代理发出一个或多个窥探。
9.根据权利要求1至8中任一项所述的***,其中所述窥探指示所述第二代理将基于所述第一状态是一级共享而将所述第一高速缓存块发射到所述第一代理,并且其中所述窥探指示所述第二代理将基于所述第一状态是二级共享而不发射所述第一高速缓存块。
10.根据权利要求9所述的***,其中所述窥探指示所述第二代理将发射所述第一高速缓存块,即使在所述第一状态是二级共享的情况下。
11.根据权利要求1至8中任一项所述的***,其中基于所述多个一致代理中的***理针对第二高速缓存块的第二请求,所述存储器控制器被配置为:
从所述目录读取对应于所述第二高速缓存块的条目,并且
根据所述条目向所述多个一致代理中的具有所述第一高速缓存块的所高速缓存副本的第五代理发出窥探,其中所述窥探指示所述第五代理将基于所述条目指示所述第五代理具有处于至少一级共享状态的所述第二高速缓存块而将所述第二高速缓存块发射到所述***理,并且其中所述窥探指示所述第五代理将基于不同代理具有处于至少所述一级共享状态的所述第一高速缓存块而不将所述第二高速缓存块发射到所述***理。
12.根据权利要求11所述的***,其中所述存储器控制器被配置为:基于所述不同代理具有处于所述二级共享状态的所述第二高速缓存块以及所述第二请求是针对所述第一高速缓存块的共享副本的请求,不向所述第五代理发出窥探。
13.根据权利要求1至12中任一项所述的***,其中基于针对第三高速缓存块的第三请求,所述存储器控制器被配置为:
从所述目录读取对应于所述第三高速缓存块的条目,并且
根据所述条目向所述多个一致代理中的具有所述第三高速缓存块的所高速缓存副本的第六代理发出窥探,其中所述窥探指示所述第六代理将基于与所述第三请求相关联的属性具有第一值而将所述第三高速缓存块发射到所述第三请求的源,并且其中所述窥探指示所述第六代理将基于所述属性具有第二值而将所述第三高速缓存块发射到所述存储器控制器。
14.根据权利要求13所述的***,其中所述属性是所述第一请求的类型,并且其中所述第一值是能高速缓存的并且所述第二值是不能高速缓存的。
15.根据权利要求13所述的***,其中所述属性是所述源的标识。
16.一种方法,包括:
由存储器控制器,所述存储器控制器耦接到一个或多个存储器设备并且包括目录,所述目录被配置为跟踪所述多个一致代理中的哪个一致代理正在高速缓存所述存储器设备中的多个高速缓存块的副本以及所述多个一致代理中的所高速缓存副本的状态,基于所述多个一致代理中的第一代理针对第一高速缓存块的第一请求而从所述目录读取对应于所述第一高速缓存块的条目,从所述目录读取对应于所述第一高速缓存块的条目;
由所述存储器控制器,根据所述条目向所述多个一致代理中的具有所述第一高速缓存块的所高速缓存副本的第二代理发出窥探;
由所述存储器控制器,将所述第二代理中的所述第一高速缓存块的第一状态的标识符包括在所述窥探中;
由所述第二代理,基于所述窥探将所述第一状态与所述第二代理中的所述第一高速缓存块的第二状态进行比较;以及
基于所述第一状态与所述第二状态不匹配延迟对所述窥探的处理,直到所述第二状态响应于与不同于所述第一请求的请求有关的不同通信而改变为所述第一状态为止。
17.根据权利要求16所述的方法,还包括:
由所述第一代理检测由所述第一代理接收的对所述第一高速缓存块的第二窥探;
由所述第一代理将所述第二窥探并吞到所述第一请求中;
在完成所述第一请求之后处理所述第二窥探;以及
在完成所述第一请求之后,将所述第一高速缓存块转发到在所述第二窥探中指示的第三代理。
18.根据权利要求16或17所述的方法,其中所述窥探指示所述第二代理将基于所述第一状态是一级共享而将所述第一高速缓存块发射到所述第一代理,并且其中所述窥探指示所述第二代理将基于所述第一状态是二级共享而不发射所述第一高速缓存块。
19.根据权利要求16或17所述的方法,还包括:
由所述存储器控制器,基于所述多个一致代理中的***理针对第二高速缓存块的第二请求从所述目录读取对应于所述第二高速缓存块的条目;以及
由所述存储器控制器,根据所述条目向所述多个一致代理中的具有所述第一高速缓存块的所高速缓存副本的第五代理发出窥探,其中所述窥探指示所述第五代理将基于所述条目指示所述第五代理具有处于至少一级共享状态的所述第二高速缓存块而将所述第二高速缓存块发射到所述***理,并且其中所述窥探指示所述第五代理将基于不同代理具有处于至少所述一级共享状态的所述第一高速缓存块而不将所述第二高速缓存块发射到所述***理。
20.根据权利要求16至19中任一项所述的方法,还包括:基于针对第三高速缓存块的第三请求,所述存储器控制器被配置为:
由所述存储器控制器,基于针对第三高速缓存块的第三请求从所述目录读取对应于所述第三高速缓存块的条目;以及
根据所述条目向所述多个一致代理中的具有所述第三高速缓存块的所高速缓存副本的第六代理发出窥探,其中所述窥探指示所述第六代理将基于与所述第三请求相关联的属性具有第一值而将所述第三高速缓存块发射到所述第三请求的源,并且其中所述窥探指示所述第六代理将基于所述属性具有第二值而将所述第三高速缓存块发射到所述存储器控制器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063077371P | 2020-09-11 | 2020-09-11 | |
US63/077,371 | 2020-09-11 | ||
US17/315,725 | 2021-05-10 | ||
US17/315,725 US11544193B2 (en) | 2020-09-11 | 2021-05-10 | Scalable cache coherency protocol |
PCT/US2021/049777 WO2022056206A1 (en) | 2020-09-11 | 2021-09-10 | Scalable cache coherency protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116057514A true CN116057514A (zh) | 2023-05-02 |
Family
ID=80626643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180062434.2A Pending CN116057514A (zh) | 2020-09-11 | 2021-09-10 | 可扩展高速缓存一致性协议 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11544193B2 (zh) |
KR (1) | KR20230048411A (zh) |
CN (1) | CN116057514A (zh) |
DE (1) | DE112021004707T5 (zh) |
WO (1) | WO2022056206A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11544193B2 (en) | 2020-09-11 | 2023-01-03 | Apple Inc. | Scalable cache coherency protocol |
US11934313B2 (en) | 2021-08-23 | 2024-03-19 | Apple Inc. | Scalable system on a chip |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893160A (en) | 1996-04-08 | 1999-04-06 | Sun Microsystems, Inc. | Deterministic distributed multi-cache coherence method and system |
US5897657A (en) | 1996-07-01 | 1999-04-27 | Sun Microsystems, Inc. | Multiprocessing system employing a coherency protocol including a reply count |
US7114043B2 (en) * | 2002-05-15 | 2006-09-26 | Broadcom Corporation | Ambiguous virtual channels |
US7296121B2 (en) * | 2002-11-04 | 2007-11-13 | Newisys, Inc. | Reducing probe traffic in multiprocessor systems |
US6922756B2 (en) * | 2002-12-19 | 2005-07-26 | Intel Corporation | Forward state for use in cache coherency in a multiprocessor system |
US7480770B2 (en) | 2006-06-14 | 2009-01-20 | Sun Microsystems, Inc. | Semi-blocking deterministic directory coherence |
US8190820B2 (en) | 2008-06-13 | 2012-05-29 | Intel Corporation | Optimizing concurrent accesses in a directory-based coherency protocol |
US8250311B2 (en) * | 2008-07-07 | 2012-08-21 | Intel Corporation | Satisfying memory ordering requirements between partial reads and non-snoop accesses |
US8874855B2 (en) | 2009-12-28 | 2014-10-28 | Empire Technology Development Llc | Directory-based coherence caching |
US8375170B2 (en) * | 2010-02-12 | 2013-02-12 | Arm Limited | Apparatus and method for handling data in a cache |
US20130318308A1 (en) | 2012-05-24 | 2013-11-28 | Sonics, Inc. | Scalable cache coherence for a network on a chip |
US9274955B2 (en) * | 2012-08-17 | 2016-03-01 | Futurewei Technologies, Inc. | Reduced scalable cache directory |
US9135174B2 (en) | 2012-11-27 | 2015-09-15 | International Business Machines Corporation | Coherent attached processor proxy supporting master parking |
US9355034B2 (en) | 2013-12-31 | 2016-05-31 | Samsung Electronics Co., Ltd. | Removal and optimization of coherence acknowledgement responses in an interconnect |
US20160188470A1 (en) * | 2014-12-31 | 2016-06-30 | Arteris, Inc. | Promotion of a cache line sharer to cache line owner |
US10528519B2 (en) * | 2017-05-02 | 2020-01-07 | Mellanox Technologies Ltd. | Computing in parallel processing environments |
US10761987B2 (en) * | 2018-11-28 | 2020-09-01 | Arm Limited | Apparatus and method for processing an ownership upgrade request for cached data that is issued in relation to a conditional store operation |
US11445020B2 (en) * | 2020-03-24 | 2022-09-13 | Arm Limited | Circuitry and method |
US11544193B2 (en) | 2020-09-11 | 2023-01-03 | Apple Inc. | Scalable cache coherency protocol |
-
2021
- 2021-05-10 US US17/315,725 patent/US11544193B2/en active Active
- 2021-09-10 DE DE112021004707.8T patent/DE112021004707T5/de active Pending
- 2021-09-10 CN CN202180062434.2A patent/CN116057514A/zh active Pending
- 2021-09-10 WO PCT/US2021/049777 patent/WO2022056206A1/en active Application Filing
- 2021-09-10 KR KR1020237008371A patent/KR20230048411A/ko unknown
-
2022
- 2022-11-22 US US18/058,105 patent/US11947457B2/en active Active
-
2023
- 2023-01-27 US US18/160,575 patent/US11868258B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230083397A1 (en) | 2023-03-16 |
US20220083472A1 (en) | 2022-03-17 |
KR20230048411A (ko) | 2023-04-11 |
US11868258B2 (en) | 2024-01-09 |
DE112021004707T5 (de) | 2023-06-22 |
US20230169003A1 (en) | 2023-06-01 |
WO2022056206A1 (en) | 2022-03-17 |
US11544193B2 (en) | 2023-01-03 |
US11947457B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
US8037253B2 (en) | Method and apparatus for global ordering to insure latency independent coherence | |
US9208091B2 (en) | Coherent attached processor proxy having hybrid directory | |
CN114756502A (zh) | 片上原子事务引擎 | |
US11947457B2 (en) | Scalable cache coherency protocol | |
TW200534110A (en) | A method for supporting improved burst transfers on a coherent bus | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
US20100211742A1 (en) | Conveying critical data in a multiprocessor system | |
US11537538B2 (en) | Inter cluster snoop latency reduction | |
US20230350828A1 (en) | Multiple Independent On-chip Interconnect | |
US20040068616A1 (en) | System and method enabling efficient cache line reuse in a computer system | |
US11822480B2 (en) | Criticality-informed caching policies | |
US11886340B1 (en) | Real-time processing in computer systems | |
CN117940908A (zh) | 动态分配高速缓存存储器作为ram | |
US20210349840A1 (en) | System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol | |
US11550716B2 (en) | I/O agent | |
US11941428B2 (en) | Ensuring transactional ordering in I/O agent | |
US20230063676A1 (en) | Counters For Ensuring Transactional Ordering in I/O Agent | |
WO2022216597A1 (en) | I/o agent | |
TW202422346A (zh) | 控制快取原則的系統及方法,及快取區 | |
KR20240034258A (ko) | Ram으로서의 캐시 메모리의 동적 할당 |
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 |