CN114761932A - 扩展对某些请求的一致性保护的高速缓存窥探模式 - Google Patents
扩展对某些请求的一致性保护的高速缓存窥探模式 Download PDFInfo
- Publication number
- CN114761932A CN114761932A CN202080083171.9A CN202080083171A CN114761932A CN 114761932 A CN114761932 A CN 114761932A CN 202080083171 A CN202080083171 A CN 202080083171A CN 114761932 A CN114761932 A CN 114761932A
- Authority
- CN
- China
- Prior art keywords
- request
- memory
- cache
- coherency
- conflicting
- 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
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- 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
-
- 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
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0877—Cache access modes
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)
- Storage Device Security (AREA)
Abstract
一种高速缓存存储器,包括数据阵列、指定一致性状态信息的数据阵列的内容的目录、以及通过参考数据阵列和目录来处理从系统结构窥探的操作的窥探逻辑。该窥探逻辑响应于在系统结构上窥探多个处理器核心中的指定目标地址的一个处理器核心的刷新/清理存储器访问操作的请求,服务于该请求,并且此后进入裁判模式。当处于裁判模式时,窥探逻辑保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,使得不允许其他一致性参与者承担存储器块的一致性所有权。
Description
背景技术
本发明一般涉及数据处理,并且特别涉及扩展用于更新系统存储器的刷新(flush)/清理(clean)存储器访问请求的一致性保护的高速缓存窥探模式(snoopingmode)。
传统的多处理器(MP)计算机系统,诸如服务器计算机系统,包括多个处理单元,所有处理单元都耦合到系统互连,该系统互连通常包括一个或多个地址、数据和控制总线。耦合到系统互连的是系统存储器,其表示多处理器计算机系统中的最低级的共享存储器,并且通常可由所有处理单元进行读取和写入访问。为了减少对驻留在系统存储器中的指令和数据的访问延迟,每个处理单元通常还由相应的多级高速缓存层次结构(multi-levelcache hierarchy)来支持,该多级高速缓存层次结构的较低级别可由一个或多个处理器核心共享。
高速缓存存储器通常用于临时缓冲可能由处理器访问的存储器块,以便通过减少由于必须从系统存储器加载所需数据和指令而引入的访问延迟来加速处理。在一些MP系统中,高速缓存层次结构包括至少两个级别。级别1(L1)或较高级别高速缓存通常是与特定处理器核心相关联的专用高速缓存,并且不能被MP系统中的其它核心访问。通常,响应于诸如加载或存储指令的存储器访问指令,处理器核心首先访问较高级别高速缓存的目录。如果在较高级高速缓存中没有找到所请求的存储器块,则处理器核心访问用于所请求的存储器块的较低级高速缓存(例如,级别2(L2)或级别3(L3)高速缓存)。最低级高速缓存(例如,L2或L3)可以由多个处理器核心共享。
因为多个处理器核心可以请求对数据的同一高速缓存行的写入访问,并且因为修改的高速缓存行不立即与系统存储器同步,所以多处理器计算机系统的高速缓存层次结构通常实现高速缓存一致性协议,以确保系统存储器的内容的各个处理器核心之间的至少最低级别的一致性。特别地,高速缓存一致性至少要求在硬件线程访问存储器块的副本并且随后访问存储器块的更新的副本之后,硬件线程不能再次访问存储器块的旧副本。
一些MP系统支持刷新和清理操作,这使得与刷新或清理操作的目标地址相关联的修改的高速缓存行被从唯一的高速缓存层次结构复制回系统存储器,该唯一的高速缓存层次结构包含处于指示写权限的一致性状态(本文,有时称为“HPC”状态)的高速缓存行,如果存在的话。对于清理操作,目标高速缓存行也转变为未修改的HPC一致性状态。对于刷新操作,HPC状态下的目标高速缓存行,无论是否修改,如果存在,都被转变为无效一致性状态。刷新操作还要求在MP系统的所有高速缓存层次结构中使处于非HPC状态的目标高速缓存行的任何其它一个或多个副本无效。当将目标高速缓存行保持在HPC状态的高速缓存(如果存在)已经完成其处理时,该无效可能未完成。
在通过基于窥探的一致性协议保持一致性的MP系统中,刷新或清理操作通常在MP系统的系统互连上广播,并且只要将目标高速缓存行保持在HPC状态的高速缓存尚未完成刷新或清理操作的处理,就接收重试一致性响应。因此,在将目标高速缓存行保持在HPC状态(如果存在)的高速缓存已经完成其对刷新或清理操作的处理之前,可能需要发起刷新或清理操作的一致性参与者多次重新发出刷新或清理操作。当保持目标高速缓存行处于HPC状态的高速缓存已经完成了刷新或清理操作的处理时,并且如果还没有创建HPC状态的目标高速缓存行的新副本(对于清理操作处于修改的HPC状态,对于刷新操作处于修改的或未修改的HPC状态),则清理操作的后续发布将接收指示成功的一致性响应,并且刷新操作的后续发布将接收指示成功的一致性响应(如果没有行的高速缓存副本存在)或者接收将使目标高速缓存行的任何剩余非FIPC高速缓存副本无效的责任转移给发起一致性参与者的一致性响应。在用于刷新操作的这些情况的任何一种情况中,在刷新操作已经完全完成或者一旦目标高速缓存行的剩余的非HPC副本已经被发起一致性参与者无效(例如,通过发出消杀(kill)操作)就将完成的意义上,可以认为刷新操作该操作已经“成功”。然而,如果在随后发出清理或刷新操作之前,另一个一致性参与者创建了处于相关HPC状态(即,处于用于清理操作的修改的HPC状态,以及处于用于刷新操作的修改或未修改的HPC状态)的目标高速缓存行的新副本,则随后的刷新或清理操作的重新发出将再次重试,并且将必须处理处于HPC状态的目标高速缓存行的新副本,从而延迟了刷新或清理操作的成功完成。该延迟可能由于连续创建刷新或清理操作的目标高速缓存行的新HPC副本而进一步恶化。
发明内容
在至少一个实施例中,通过指定的一致性参与者扩展目标高速缓存行的保护窗口,保护刷新或清理操作的目标高速缓存行免受来自其他一致性参与者的竞争访问。
根据本发明的一个方面,提供了一种高速缓存存储器,其包括数据阵列、指定一致性状态信息的数据阵列的内容的目录、以及通过参考数据阵列和目录来处理从系统结构窥探的操作的窥探逻辑。该窥探逻辑响应于在系统结构上窥探多个处理器核心中的指定目标地址的一个处理器核心的刷新或清理存储器访问操作的请求,服务于该请求,并且此后进入裁判模式。当处于裁判模式时,窥探逻辑保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,使得不允许其他一致性参与者承担存储器块的一致性所有权。
附图说明
图1是根据一个实施例的示例性数据处理系统的高级框图
图2是根据一个实施例的示例性处理单元的更详细框图;
图3是根据一个实施例的较低级高速缓存的详细框图;
图4是根据一个实施例的处理器存储器访问操作的示例性时序图;
图5是根据一个实施例的处理单元执行刷新/清理存储器访问操作的示例性过程的高级逻辑流程图;
图6是根据一个实施例的示例性处理的高级逻辑流程图,通过该示例性处理,具有窥探刷新或清理型请求的目标高速缓存行的一致性所有权的高速缓存处理该请求;
图7是根据一个实施例的示例性刷新/清理存储器访问操作的时序图;
图8是根据一个实施例的示例性处理的高级逻辑流程图,通过该示例性处理,保持窥探刷新型请求的目标高速缓存的非HPC共享副本的高速缓存处理该请求;
图9是示出设计过程的数据流程图。
具体实施方式
现在参考附图,其中相同的附图标记始终表示相同和对应的部分,并且特别参考图1,示出了描述根据一个实施例的示例性数据处理系统100的高级框图。在所描述的实施例中,数据处理系统100是高速缓存一致多处理器(MP)数据处理系统,其包括用于处理数据和指令的多个处理节点102。处理节点102耦合到系统互连110,用于传送地址、数据和控制信息。系统互连110可以被实现为例如总线互连、交换互连或混合互连。
在所描绘的实施例中,每个处理节点102被实现为包含四个处理单元104的多芯片模块(MCM),每个处理单元优选地被实现为相应的集成电路。每个处理节点102内的处理单元104通过本地互连114耦合以便彼此通信以及与系统互连110通信,该本地互连与系统互连110类似,例如可以利用一个或多个总线和/或开关来实现。系统互连110和本地互连114一起形成系统结构。
如以下参考图2更详细描述的,处理单元104各自包括耦合到本地互连114的存储器控制器106,以提供到相应系统存储器108的接口。驻留在系统存储器108中的数据和指令通常可以由数据处理系统100内的任何处理节点102的任何处理单元104中的处理器核心访问、高速缓存和修改。系统存储器108因此形成数据处理系统100的分布式共享存储器系统中的最低存储器存储级。在替代实施例中,一个或多个存储器控制器106(和系统存储器108)可以耦合到系统互连110而不是本地互连114。
本领域技术人员将理解,图1的MP数据处理系统100可以包括许多附加的未示出的组件,诸如互连桥、非易失性存储器、用于连接到网络的端口、或附接的设备等。因为这些附加的组件对于理解所描述的实施例不是必需的,所以它们未在图1中示出或在本文中进一步讨论。然而,还应当理解,本文描述的增强适用于不同架构的数据处理系统,并且决不限于图1中所示的一般化数据处理系统架构。
现在参考图2,描述了根据一个实施例的示例性处理单元104的更详细的框图。在所描述的实施例中,每个处理单元104是包括用于处理指令和数据的多个处理器核心200的集成电路。每个处理器核心200包括用于执行指令的一个或多个执行单元,包括执行存储器访问指令的LSU 202,所述存储器访问指令请求访问存储器块或导致生成访问存储器块的请求。在至少一些实施例中,每个处理器核心200能够同时独立地执行多个硬件执行线程。
每个处理器核心200的操作由多级存储器层次结构支持,该多级存储器层次结构在其最低层具有经由集成存储器控制器106访问的共享系统存储器108。在其较高级别,存储器层次结构包括一级或多级高速缓存存储器,在说明性实施例中,其包括每个处理器核心200内并对其专用的贯穿存储(store-through)级别一(L1)高速缓存226,以及用于每个处理器核心200的相应的内存存储(store-in)级别二(L2)高速缓存230。为了有效地处理对可高速缓存地址的多个并发存储器访问请求,在一些实施例中,每个L2高速缓存230可以用多个L2高速缓存片来实现,每个高速缓存片处理对相应的一组实存储器地址的存储器访问请求。
尽管所示的高速缓存层次结构仅包括两级高速缓存,但是本领域技术人员将理解,替代实施例可以包括附加的级别(例如,L3、L4等)的片上或片外内嵌或旁视高速缓存,其可以完全包括、部分包括或不包括较高级别的高速缓存的内容。
仍然参考图2,每个处理单元104还包括负责控制本地互连114和系统互连110上的操作流的集成和分布式结构控制器216,以及用于确定对在选择的高速缓存一致性协议中使用的存储器访问请求的一致性响应的响应逻辑218。
在操作中,当处理器核心200执行的硬件线程包括请求执行指定的存储器访问操作的存储器访问指令时,LSU 202执行存储器访问指令以确定要访问的目标实地址。如果所请求的存储器访问不能完全通过参考执行处理器核心200的L1高速缓存226来执行,则处理器核心200生成存储器访问请求,其包括例如至少请求类型和目标实地址,并且将该存储器访问请求发送到其相关联的L2高速缓存230以供处理。
现在参考图3,示出根据一个实施例的L2高速缓存230的示例实施例的更详细框图。如图3所示,L2高速缓存230包括高速缓存阵列302和高速缓存阵列302的内容的目录308。假设高速缓存阵列302和目录308是常规的组关联的,则利用系统存储器(实)地址内的预定索引位将系统存储器108中的存储器位置映射到高速缓存阵列302内的特定同余类。存储在高速缓存阵列302的高速缓存行内的特定存储器块被记录在高速缓存目录308中,其包含用于每个高速缓存行的一个目录条目。尽管在图3中没有明确示出,本领域技术人员将理解,高速缓存目录308中的每个目录条目包括各种字段,例如,标识高速缓存阵列302的对应的高速缓存行中保持的存储器块的实地址的标签字段、指示高速缓存行的一致性状态的状态字段、指示高速缓存行相对于相同同余类中的其他高速缓存行的替换顺序的LRU(最近最少使用)字段、以及指示存储器块是否保持在相关联的L1高速缓存226中的包含性字段。
L2高速缓存230包括多个(例如,16个)读取声明(Read-Claim,RC)机312a-312n,用于独立地和并发地服务从相关联的处理器核心200接收的存储器访问请求。为了服务于源自除了相关联的处理器核心200之外的处理器核心200的远程存储器访问请求,L2高速缓存230还包括多个窥探(SN)机311a-311m。每个SN机311可以独立地和并发地处理从本地互连114“窥探”的远程存储器访问请求。如将理解的,RC机312对存储器访问请求的服务可能需要高速缓存阵列302内的存储器块的替换或无效。因此,L2高速缓存230包括CO(掷出(castout))机310,其管理从高速缓存阵列302移除和写回存储器块。
L2高速缓存230还包括仲裁器(arbiter)305,其控制多路复用器M1-M2以排序从相关联的处理器核心200接收的本地存储器访问请求和在本地互连114上窥探的远程请求的处理。根据仲裁器305实现的仲裁策略,将存储器访问请求转发到分派逻辑306,其在给定数量的周期上处理关于目录308和高速缓存阵列302的存储器访问请求。
L2高速缓存230还包括RC队列(RC queue,RCQ)320和掷出推入干预(castout pushintervention,CPI)队列318,它们分别缓冲插入高速缓存阵列302和从其中移除的数据。RCQ 320包括多个缓冲器条目,每个单独地对应于RC机312中的特定一个,使得被分派的每个RC机312仅从指定的缓冲器条目检索数据。类似地,CPI队列318包括多个缓冲器条目,每个缓冲器条目单独地对应于CO机310和SN机311中的相应一个,使得被分派的每个窥探器311和每个CO机310仅从相应的指定的CPI缓冲器条目中检索数据。
每个RC机312还具有分配给它的多个RC数据(RCDAT)缓冲器322中的相应一个,用于缓冲从高速缓存阵列302读取的和/或经由重新加载总线323从本地互连114接收的存储器块。分配给每个RC机312的RCDAT缓冲器322优选地构造有与可以由相关联的RC机312服务的存储器访问请求对应的连接和功能。RCDAT缓冲器322具有相关联的存储数据复用器M4,其从其输入之中选择数据字节以用于在RCDAT缓冲器322中缓冲以响应由仲裁器305生成的未示出的选择信号。
在操作中,在存储队列(STQ)304内从相关联的处理器核心200接收包括请求类型(ttype)、目标实地址和存储数据的处理器存储请求。存储数据从STQ 304经由数据路径324传输到存储数据多路复用器M4,且存储类型和目标地址被传递到多路复用器M1。多路复用器M1还接收来自处理器核心200的处理器加载请求和来自RC机312的目录写请求作为输入。响应于未示出的由仲裁器305生成的选择信号,多路复用器M1选择其输入请求之一以转发到多路复用器M2,其另外接收经由远程请求路径326从本地互连114接收的远程请求作为输入。仲裁器305调度本地和远程存储器访问请求以进行处理,并且基于调度,生成选择信号328的序列。响应于仲裁器305生成的选择信号328,多路复用器M2选择从多路复用器M1接收的本地请求或从本地互连114窥探的远程请求作为下一个要处理的存储器访问请求。
现在参考图4,其描绘了图1的数据处理系统100的系统结构上的示例性操作的时空图,应当理解,在任何给定时间,系统结构上将有许多这样的操作在进行中,并且在一些操作场景中,这些并发操作中的多个可以指定冲突目标地址(conflicting targetaddress)。
操作开始于请求阶段450,其中主机400,例如L2高速缓存230的RC机312,在系统结构上发出请求402。请求402优选地至少包括指示期望访问的类型的请求类型和指示要由该请求访问的资源标识符(例如,实地址)。请求优选地包括在下面的表I中所阐述的那些。
表I
请求402由分布在数据处理系统100中的窥探器404a-404n接收,例如L2高速缓存230的SN机311a-311m和存储器控制器106中未示出的窥探器。对于读取类型的请求,与请求402的主机400在同一L2高速缓存230中的SN机311不窥探请求402(即,通常没有自窥探),因为仅当读取类型请求402不能由处理单元104内部服务时,请求402才在系统结构上传送。然而,对于其它类型的请求402,诸如刷新/清理请求(例如,表I中列出的DCBF、DCBST、AMO请求),与请求402的主机400在同一L2高速缓存230中的SN机311对请求402进行自窥探。
操作继续到部分响应阶段455。在部分响应阶段455期间,接收并处理请求402的窥探器404各自提供表示至少该窥探器404对请求402的响应的相应部分响应(“Presp”)406。集成存储器控制器106内的窥探器404例如基于该窥探器404是否负责请求地址以及其是否具有当前可用于服务该请求的资源来确定要提供的部分响应406。L2高速缓存230的窥探器404可基于例如其L2高速缓存目录308的可用性、窥探器404内处理请求的窥探逻辑实例311的可用性、以及与L2高速缓存目录308中的请求地址相关联的一致性状态(如果有的话),确定其部分响应406。
操作继续到组合响应阶段460。在组合响应阶段460期间,窥探器404的部分响应406由响应逻辑218的一个或多个实例分阶段或一次全部地逻辑组合,以确定对请求402的全系统组合响应(“Cresp”)410。在一个优选实施例中,其将在下文中假定,负责生成组合响应410的响应逻辑218的实例位于含有发出请求402的主机400的处理单元104中。响应逻辑218经由系统结构向主机400和窥探器404提供组合响应410,以指示对请求402的全系统响应(例如,成功、重试等)。如果Cresp 410指示请求402的成功,则Cresp410可指示例如请求的存储器块的数据源(如果适用)、所请求的存储器块要由主机400高速缓存的一致性状态(如果适用)、以及是否需要使一个或多个L2高速缓存230中的所请求的存储器块的高速缓存副本无效的“清除”(cleanup)操作(如果适用)。
响应于接受到组合响应410,主机400和窥探器404中的一个或多个通常执行一个或多个操作,以便为请求402服务。这些操作可包括向主机400提供数据、使一个或多个L2高速缓存230中缓存的数据的一致性状态无效或以其他方式更新一致性状态、执行掷出操作、将数据写回系统存储器108等。如果请求402需要,则可以在响应逻辑218生成组合响应410之前或之后,向或从主机400或窥探器404之一发送请求的或目标存储器块。
在以下描述中,将参考窥探器404相对于请求402所指定的请求地址是一致性最高点(HPC)、一致性最低点(LPC)还是两者都不是来描述窥探器404对请求402的部分响应406以及窥探器404响应于请求402而执行的操作和/或其组合响应410。LPC在此被定义为用作存储器块的最终存储库的存储器设备或I/O设备。在没有保持存储器块的副本的高速缓存参与者的情况下,LPC保持该存储器块的唯一映像。在没有用于存储器块的HPC高速缓存参与者的情况下,LPC具有唯一授权来准许或拒绝修改存储器块的请求。此外,当LPC数据是当前数据并且没有能够提供该数据的高速缓存参与者时,LPC将该数据提供给请求以读取或修改存储器块。如果高速缓存参与者具有数据的更当前的副本,但不能将其提供给请求,则LPC不提供过期数据,并且重试请求。对于图1至图3中给出的数据处理系统100的实施例中的典型请求,LPC将是用于保持所参考的存储器块的系统存储器108的存储器控制器106。
HPC在此被定义为唯一标识的设备,其高速缓存存储器块的真实映像(其可以与LPC处的对应的存储器块一致或不一致)并且具有授权以准许或拒绝修改存储器块的请求。描述性地,HPC(即使其副本与LPC后面的主存储器一致)还响应于读取或修改存储器块的任何请求(高速缓存到高速缓存的传送比LPC到高速缓存的传送快)而向请求者提供存储器块的副本。因此,对于数据处理系统实施例中的典型请求,HPC(如果有的话)将是L2高速缓存230。尽管可以使用其它指示器来指定存储器块的HPC,但是如果有的话,优选实施例使用L2高速缓存230的L2高速缓存目录308内的选择的高速缓存一致性状态来指定存储器块的HPC。在优选实施例中,一致性协议内的一致性状态除了提供(1)高速缓存是否是用于存储器块的HPC的指示之外,还指示(2)高速缓存副本是否是唯一的(即,是系统级唯一的高速缓存副本),(3)高速缓存是否以及何时相对于操作的阶段可以向对存储器块的请求的主机提供存储器块的副本,以及(4)存储器块的高速缓存的映像是否与LPC(系统存储器)处的对应存储器块一致。这四个属性可以例如在以下在表II中总结的公知MESI(修改、独占、共享、无效)协议的示例性变型中表达。关于一致性协议的进一步信息可以在例如美国专利7,389,388中找到,该专利通过参考结合于此。
表II
在上面的表II中值得注意的是T、Te、SL和S状态,它们都是“共享”一致性状态,因为高速缓存存储器可以同时保持由另一个高速缓存存储器以这些状态中的任何一个保持的高速缓存行的副本。T或Te状态标识先前分别保持M或Me状态之一的相关联的高速缓存行的HPC高速缓存存储器,并且向另一高速缓存存储器发起相关联的高速缓存行的仅查询副本。作为HPC,保持处于T或Te一致性状态的高速缓存行的高速缓存存储器具有修改高速缓存行或将这样的权限给予另一高速缓存存储器的权限。保持处于Tx状态的高速缓存行(例如,T或Te)的高速缓存存储器用作该高速缓存行的仅查询副本的最后策略(resort)(在Cresp之后)的高速缓存数据源,因为如果没有保持处于SL状态的高速缓存行的高速缓存存储器可用于用作数据源(在Cresp之前),则高速缓存存储器将仅向另一高速缓存存储器提供仅查询副本。
SL状态是响应于高速缓存存储器从处于T一致性状态的高速缓存存储器接收到高速缓存行的仅查询副本而在该高速缓存存储器处形成的。尽管SL状态不是HPC一致性状态,但保持处于SL状态的高速缓存行的高速缓存存储器具有将该高速缓存行的仅查询副本提供到另一高速缓存存储器的能力,并且可以在接受到Cresp之前这样做。响应于将高速缓存行的仅查询副本作为另一个高速缓存存储器的源(其假设SL状态),作为高速缓存行的仅查询副本的源的高速缓存存储器将其对于高速缓存行的一致性状态从SL更新到S。
再次参考图4,如果存在,则对于请求402中参考的存储器块的HPC,或者在不存在HPC的情况下,存储器块的LPC优选地具有响应于请求402在必要时保护存储器块的一致性所有权的转移的责任。在图4所示的示例性场景中,在由请求402的请求地址指定的存储器块的HPC(或者在没有HPC的情况下,LPC)处的窥探器404n在保护窗口412a期间保护所请求的存储器块的一致性所有权向主机400的转移,该保护窗口412a从窥探器404n确定其部分响应406的时间开始延伸,直到窥探器304n接收到组合响应410,并且在后续窗口扩展412b期间,该窗口扩展412b将可编程时间扩展到窥探器404n接受到组合响应之外在保护窗口412a和窗口扩展412b期间,窥探器404n通过向指定相同请求地址的其他请求提供部分响应406来保护所有权的转移,部分响应406防止其他主机获得所有权(例如,重试部分响应),直到所有权已经成功转移到主机400。主机400可以类似地发起保护窗口413,以在接受到组合响应410之后保护其对请求402中所请求的存储器块的一致性所有权。
因为窥探器404都具有用于处理上述CPU和I/O请求的有限资源,所以若干不同级别的Presp和对应的Cresp是可能的。例如,如果负责请求的存储器块的存储器控制器106内的窥探器具有可用于处理请求的队列,则窥探器可以用指示其能够用作请求的LPC的部分响应来响应。另一方面,如果窥探器没有队列可用于处理请求,则窥探器可以用指示其是存储器块的LPC但是当前不能服务于该请求的部分响应来响应。类似地,L2高速缓存230中的窥探器311可能需要窥探逻辑的可用实例并访问L2高速缓存目录406以便处理请求。缺少对这些资源中的任一者(或两者)的访问导致部分响应(和对应的Cresp)信令通知由于缺少所需资源而不能服务该请求。
如上所述,在实现基于窥探的一致性协议的系统中,刷新操作(例如DCBF和AMO)和清理操作(例如DCBST)可能在包含HPC状态的目标高速缓存行(如果存在)的高速缓存层次结构中完成的刷新/清理操作与发起最终成功刷新/清理请求的主机之间的弱点窗口中受到前向进度的关注。如以下参考图5至图8详细描述的,这些前向进度的问题可以通过具有目标高速缓存行的一致性所有权的一致性参与者(即,HPC)扩展其用于目标高速缓存行的保护窗口来解决。
现在转到图5,示出了根据一个实施例的处理单元104(例如,RC机312)中的主机400执行刷新或清理类型的存储器访问操作的示例性过程的高级逻辑流程图。如上文所指示,任何数量的主机可以并发地对可能的冲突目标地址执行其自身的相应刷新/清理存储器访问操作。因此,可以在时间上重叠的方式在数据处理系统100内执行图5中给出的过程的多个实例。
图5的过程开始于框500,然后进行到框502,其示出了主机400在数据处理系统100的系统结构上发出存储器访问操作的请求402。在至少一些实施例中,诸如L2高速缓存230的RC机312的主机400基于LSU 202对对应的指令的执行,响应于从相关联的处理器核心200接收到存储器访问请求而发出请求402。在所述实施例中,请求402发起属于若干类或类型的操作之一的存储器访问操作,这些操作在此统称为刷新/清理(FC)操作。这些FC操作包括表I中参考的DCBF、DCBST和AMO操作,它们都是存储-修改操作,需要将目标存储器块的任何修改的高速缓存副本写回到相关系统存储器108。
如在图4的前述讨论中清楚的,主机400的FC请求402在系统结构上由分布在数据处理系统100内的L2高速缓存230和存储器控制器106接收。响应于FC请求402的接受,这些各种窥探器404生成它们各自的部分响应406,并将部分响应406传送到响应逻辑218的相关实例。在示例性实施例中,L2高速缓存230以三个Presp之一响应窥探FC请求402:重量级重试,(2)轻量级重试,或(3)空。重量级重试Presp由L2高速缓存230提供,其当前不能访问其目录308中的FC请求402的目标地址的一致性状态。此外,还由L2高速缓存230提供重量级重试Presp,该高速缓存由其目录308中的一致性状态指定为目标地址的HPC,但此时不能响应FC请求402,或者当前忙于处理目标高速缓存行的请求。
L2高速缓存230提供轻量级重试Prep,其目录308是可访问的,并且指示目标地址的SL和S状态中的任一个,以及(1)当前正在处理目标地址的另一冲突请求,或者(2)不能分派SN机311,并且对于目标地址,SN机311当前没有活动,或者(3)已经分派SN机311来处理FC请求402。
应当理解,对于整个间隔,L2高速缓存230使SN机311活动处理对给定目标地址的请求,当请求被第一次窥探时,L2高速缓存230将基于与目标地址相关联的一致性状态提供重量级重试Presp或轻量级重试Presp。下面参照图6详细描述由保持处于脏(dirty)(例如M或T)HPC一致性状态的FC请求402的目标地址的L2高速缓存230执行的特定动作,下面参照图8详细描述由保持处于共享(例如Te、SL或S)一致性状态的刷新请求的目标地址的L2高速缓存230执行的动作。
响应于窥探FC请求402,不负责目标地址(即,不负责LPC)的存储器控制器106将不提供Presp(或空Presp)。如果由于资源限制或由于存储器控制器106已经服务于指定相同地址的另一个存储器访问请求,存储器控制器106不能服务于FC请求402,则作为FC请求402的目标地址的LPC存储器控制器的存储器控制器106提供Retry_LPC Presp。如果LPC存储器控制器106能够服务于FC请求402,则LPC存储器控制器106通过向任何随后的FC操作(或其它操作)提供LPC_Retry Presp来保护FC请求402的目标地址,直到其接收到用于最初窥探的FC请求402的成功的Cresp。
再次参考图5,过程从框502进行到框504-506,其示出了在框502处发出的FC操作的请求402的主机400等待从响应逻辑218接受对应的Cresp410。在至少一个实施例中,响应逻辑218可基于如下表III所示的窥探器404的所接收的Presp来生成用于FC操作的Cresp410。应当注意,在至少一些实施例中,DCBST请求没有接收到轻量级重试Presp(如表III的行1、2和4所示),因为DCBST请求被保持SL和S状态中的任一个状态的目标高速缓存行的高速缓存忽略。
表III
响应于对Cresp 410的接受,主机400确定Cresp 410是否指示重试,如表III的前三行所示(框504)。如果是,则过程返回到框502,其示出主机400在系统结构上重新发出FC操作的请求402。如果主机400在框504确定请求402的Cresp 410不是重试,则在表III的实施例中,一致性结果是Success_with_cleanup(Success_CU)(表III的第四行)或Success(成功)(表III的第五行)。如果Cresp 410成功(如由框506处的否定确定所指示的),则成功地完成了刷新或清理操作,并且图5的过程在520处结束。
然而,如果Cresp 410指示Success_CU,则主机400打开保护窗口413,并通过使任何冲突窥探的请求接收重量级重试来开始保护目标地址(框508)。此外,主机400在系统结构上发出清除命令,以使驻留在HPC高速缓存处的目标存储器块的任何修改的高速缓存副本被写回到系统存储器108(框510)。取决于请求402的类型,清除命令可以附加地使得目标存储器块的任何其他高速缓存的一个或多个副本无效,如表II中包括的BK和BK_Flush命令那样。在框510之后,图5的过程转到框512,其示出了对清除命令的Cresp 410是否指示成功的确定。如果否,则过程返回到框510,其表示主机400重新发出清除命令。一旦对于在框510发出的清除命令接收到指示成功的Cresp 410,主机400关闭保护窗口413,并因此结束对目标地址的保护(框514),此后,图5的处理在框520结束。
现在参考图6,其是根据一个实施例的示例性过程的高级逻辑流程图,HPC高速缓存通过该示例性过程处理FC存储器访问操作的窥探的请求。为了促进更好地理解,将结合图7的时序图700来描述图6的流程图。
图6中描述的过程开始于框600,然后进行到框602,其示出了L2高速缓存存储器230,其在脏HPC一致性状态(例如M或T一致性状态)下保持FC存储器访问操作的目标高速缓存行,窥探来自本地互连114的FC存储器访问操作的请求。FC存储器访问操作可以是例如如前所述的DCBF、DCBST或AMO操作,或者是要求将修改的高速缓存的数据写回系统存储器108的任何其它存储修改FC操作。响应于窥探FC存储器访问操作的请求,L2高速缓存存储器230分配SN机311以服务FC存储器访问操作,并将SN机311设置为忙碌状态,使得SN机311开始保护由请求指定的目标实地址。图7示出了在参考标号702处的SN机311从空闲状态到忙碌状态的转换,该SN机被分配来服务FC存储器访问操作的请求。此外,L2高速缓存存储器230向FC存储器访问操作的请求提供重量级重试Presp,因为来自目标高速缓存行的修改的数据还没有被写入系统存储器108。
当SN机311处于忙碌状态时,SN机311为窥探的请求执行正常处理(框604)。该正常处理包括经由系统结构将目标高速缓存行的修改的数据写回相关系统存储器108,并且当系统存储器108的更新完成时,如果FC请求402需要,则使本地目录308中的目标高速缓存行无效。此外,如在框604进一步所示,当SN机311处于忙碌状态时,L2高速缓存230提供对请求访问目标高速缓存行的任何窥探的请求的重量级重试部分响应,如图7的附图标记704所示,重量级重试部分响应使响应逻辑218的相关实例形成重试Cresp410,其迫使冲突请求的主机重新发出其请求。
在一些实施例中,分配给FC存储器访问操作的请求的SN机311基于对FC存储器访问操作的请求的窥探,自动设置REF(裁判(referee))模式指示器(如图6的框608和图7的参考标号706所示)。在由图6的可选块606表示的其它实施例中,仅当SN机311忙于处理FC存储器访问操作的请求时,非FC操作的冲突请求被L2高速缓存230窥探时,SN机311才在框608有条件地设置REF模式指示器。在框608之后,或者如果实现了可选框606,则在确定没有发生冲突非FC请求已被窥探之后,在框610确定SN机311对窥探的FC请求的处理是否完成。如果否,则图6的过程返回到已经描述的框604。然而,如果确定SN机311对窥探的FC请求的处理完成,如图7的附图标记708所示,则图6的过程从框610进行到框612。
框612示出,在完成其FC操作的处理之后,SN机311确定REF模式指示器是否被设置。如果不是,SN机311返回到空闲状态,如图6中的框614和图7中的标号710所示。在框614之后,图6的过程在框616处结束。返回到框612,如果SN机311确定REF模式指示器被设置,则SN机311在FC操作的请求的处理完成时不返回空闲状态,而是进入REF(裁判)模式,以扩展其对目标高速缓存行的保护,如图6的框620和图7的附图标记712所示,在一个实施例中,结合进入REF模式,SN机311还启动REF模式计时器。
在框620之后,SN机311的处理进入处理循环,在该处理循环中,SN机311监视REF模式计时器的期满和FC操作类的REF模式终止请求的接受的第一个发生,分别如框640和642所示。在这个处理循环中,SN机311在系统结构上监视任何以与窥探的FC请求相同的高速缓存行为目标的冲突非FC操作,如图6的框622和图7的参考标号714所示,响应于检测到任何这种冲突非FC请求,SN机311向冲突非FC请求提供重量级重试Presp,如图6的框624所示,这个重量级重试Presp将使得响应逻辑218的相关实例发布重试Cresp,如以上参考图5的表III和框504所讨论的,此后,过程转到框640,其将在下面描述。
在处理循环中,SN机311还在系统结构上监视任何以与早先的窥探的FC请求相同的高速缓存行为目标的冲突FC操作,如图6的框630和图7的参考标号716所示,响应于检测到任何这种冲突FC请求,SN机311提供对冲突FC请求的轻量级重试部分响应,如图6的框632所示,这种轻量级重试部分响应将使响应逻辑218的相关实例例如基于由相关存储器控制器106提供的部分响应所暗示的顺序来确定多个冲突、时间上重叠的FC请求中的哪一个将被选择来首先更新系统存储器108。在框632之后或者响应于框622和630两者处的否定确定,图6的过程传递到框640。
框640描绘SN机311通过参考REF模式计时器确定REF模式的超时是否已发生。在各种实施例中,超时可在静态预定计时器值时发生,或者替代地,在基于例如在REF模式期间接收的冲突FC和/或非FC操作的数量确定的动态值时发生。响应于在框640确定REF模式已经超时,处理进行到框650,其示出SN机311退出REF模式,如图7的参考标号718所示,SN机311因此结束其对目标高速缓存行的保护,并返回到空闲状态(图6的框614和图7的参考标号720)。图6的过程此后在框616处结束。
然而,如果SN机311在框640确定REF模式没有超时,则SN机311在框642进一步确定是否已经在系统结构上接收到FC操作类的终止请求(例如,CLEAN_ACK,BK,BK_FLUSH),如图7的附图标记722所示,终止请求虽然对于各种实施例和/或不同类型的FC存储器访问请求而言是不同的,但是提供了原始FC请求已经成功地被选择以由存储器控制器106针对目标存储器块进行处理的指示。如果SN机311在框642检测到FC操作的终止请求,则图6的过程转到框650和随后的框,这些框已经被描述。然而,如果SN机311没有检测到系统结构上的FC操作类的终止请求,则该过程从框642返回到已经描述的框622。
本领域技术人员将理解,图6公开了一种技术,其中HPC窥探器临时进入REF模式,其中HPC窥探器在由HPC窥探器执行的刷新/清理活动的结束和LPC处的用于处理的请求的结束之间的间隔内扩展对作为FC存储器访问操作的请求的目标的存储器块的一致性保护。目标高速缓存行的这种扩展的保护确保了在保证FC存储器访问操作成功之前不会为目标高速缓存行形成其它HPC。
现在参考图8,描述了根据一个实施例的示例性处理的高级逻辑流程图,通过该示例性处理,保持窥探的刷新型请求(例如DCBF或AMO)的目标高速缓存的非HPC共享副本的高速缓存处理该请求。应当注意,保持清理(例如,DCBST)请求的目标高速缓存的共享副本的高速缓存忽略清理请求。
图8的过程在框800开始,然后进行到框802,其示出保持窥探刷新型操作的初始请求(例如,DCBF或AMO)或相关联的清除命令(例如,BK或BK_FLUSH)的刷新型请求的目标高速缓存行的L2高速缓存230。响应于窥探初始请求或清除命令,L2高速缓存230提供轻量重试响应。另外,响应于初始请求,L2高速缓存230分配SN机311来处理初始请求。分配的SN机311从空闲状态转变到忙碌状态,并且开始保护目标高速缓存行。
在框804,被分配来处理在框802处窥探的请求的SN机311通过使本地目录308中的目标高速缓存行无效来执行对初始请求或清除命令的正常处理。如在框804进一步示出的,当SN机311处于忙碌状态时,L2高速缓存230提供对请求访问目标高速缓存行的任何窥探的请求的轻量级重试部分响应。在框806处确定SN机311对所窥探的请求的处理是否完成。如果否,则图8的过程返回到已经描述的框804。然而,如果确定SN机311对所窥探的请求的处理完成,则SN机311返回到空闲状态(框808),并且图8的处理在框810结束。
现在参考图9,描述了例如在半导体IC逻辑设计、仿真、测试、布局和制造中使用的示例性设计流程900的框图。设计流程900包括用于处理设计结构或器件以生成上述和图1至图3中所示的设计结构和/或器件的逻辑上或其他功能上等效的表示的过程、机器和/或机制,由设计流程900处理和/或生成的设计结构可以在机器可读传输或存储介质上编码以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,所述数据和/或指令生成硬件组件、电路、器件或系统的逻辑上、结构上、机械上或其他功能上等效的表示。机器包括但不限于在IC设计过程中使用的任何机器,诸如设计、制造或仿真电路、组件、设备或系统。例如,机器可以包括:光刻机、用于产生掩模的机器和/或设备(例如电子束写入器)、用于模拟设计结构的计算机或设备、用于制造或测试过程的任何装置、或用于将设计结构的功能等效表示编程到任何介质中的任何机器(例如用于编程可编程门阵列的机器)。
设计流程900可以根据正在设计的表示的类型而变化。例如,用于构建专用IC(ASIC)的设计流程900可以不同于用于设计标准部件的设计流程900或者不同于用于将设计实例化到可编程阵列中的设计流程900,所述可编程阵列例如由Altera公司或Xilinx公司提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA)。
图9示出了多个这样的设计结构,包括优选地由设计过程900处理的输入设计结构920。设计结构920可以是由设计过程900生成和处理以产生硬件设备的逻辑上等效的功能表示的逻辑仿真设计结构。设计结构920还可以或可替换地包括数据和/或程序指令,当由设计过程900处理时,其生成硬件设备的物理结构的功能表示。无论是表示功能和/或结构设计特征,设计结构920都可以使用诸如由核心开发者/设计者实现的电子计算机辅助设计(ECAD)来生成。当编码在机器可读数据传输、门阵列或存储介质上时,设计结构920可以由设计过程900内的一个或多个硬件和/或软件模块访问和处理,以模拟或以其他方式功能性地表示诸如图1至图3中所示的那些的电子组件、电路、电子或逻辑模块、装置、设备或系统。这样,设计结构920可以包括文件或其他数据结构,包括人和/或机器可读源代码、编译结构和计算机可执行代码结构,当由设计或模拟数据处理系统处理时,其功能性地模拟或以其他方式表示电路或其他级别的硬件逻辑设计。这样的数据结构可以包括硬件描述语言(HDL)设计实体或其他数据结构,其符合和/或兼容诸如Verilog和VHDL的低级HDL设计语言和/或诸如C或C++的高级设计语言。
设计过程900优选地采用和合并硬件和/或软件模块,用于合成、转换或以其他方式处理与图1至图3中所示的组件、电路、器件或逻辑结构等效的设计/仿真功能,以生成网表980,其可以包含诸如设计结构920的设计结构。网表980可以包括例如编译或以其他方式处理的数据结构,其表示描述与集成电路设计中的其他元件和电路的连接的导线、分立部件、逻辑门、控制电路、I/O设备、模型等的列表。网表980可以使用迭代过程来合成,其中网表980被重新合成一次或多次,这取决于器件的设计规范和参数。如同本文所述的其它设计结构类型一样,网表980可记录在机器可读存储介质上或编程到可编程门阵列中。该介质可以是非易失性存储介质,例如磁盘或光盘驱动器、可编程门阵列、紧凑式闪存或其它闪存。另外,或者作为选择,介质可以是系统或高速缓存存储器,或者缓冲空间。
设计过程900可以包括用于处理包括网表980的各种输入数据结构类型的硬件和软件模块。这样的数据结构类型可以例如驻留在库元件930内,并且包括一组常用的元件、电路和器件,包括用于给定制造技术(例如,不同的技术节点,32nm、45nm、90nm等)的模型、布局和符号表示。数据结构类型还可以包括设计规范940、特征数据950、验证数据960、设计规则970和测试数据文件985,其可以包括输入测试模式、输出测试结果和其他测试信息。设计过程900还可以包括例如标准机械设计过程,诸如应力分析、热分析、机械事件模拟、用于诸如铸造、模制和模压成形等的操作的过程模拟等。设计过程900还可以包括用于执行标准电路设计过程的模块,所述标准电路设计过程例如时序分析、验证、设计规则检查、布局和布线操作等。
设计过程900采用并结合逻辑和物理设计工具,诸如HDL编译器和仿真模型构建工具,以处理设计结构920以及所描绘的支持数据结构中的一些或全部连同任何附加的机械设计或数据(如果适用的话),以生成第二设计结构990。设计结构990以用于机械器件和结构的数据交换的数据格式(例如,以IGES、DXF、Parastoll XT、JT、DRG或用于存储或呈现这样的机械设计结构的任何其他适当格式存储的信息)驻留在存储介质或可编程门阵列上。类似于设计结构920,设计结构990优选地包括一个或多个文件、数据结构或其它计算机编码的数据或指令,其驻留在传输或数据存储介质上,并且当由ECAD系统处理时,生成在逻辑上或以其它方式在功能上等效的形式的图1至图3中所示的本发明的一个或多个实施例。
设计结构990还可以采用用于交换集成电路的布图数据的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这种设计数据结构的任何其他适当格式存储的信息)。设计结构990可以包括信息,例如符号数据、图文件、测试数据文件、设计内容文件、制造数据、布局参数、布线、金属层、过孔、形状、用于通过生产线路由的数据、以及制造商或其他设计者/开发者生产如上所述且如图1至图3所示的器件或结构所需的任何其他数据,然后设计结构990可以进行到阶段995,其中例如设计结构990:进行流片、交付制造、交付掩模厂、送到另一设计厂、送回到客户等。
如上所述,在至少一个实施例中,高速缓存存储器包括数据阵列、指定一致性状态信息的数据阵列的内容的目录、以及通过参考数据阵列和目录来处理从系统结构窥探的操作的窥探逻辑。该窥探逻辑响应于在系统结构上窥探多个处理器核心中的指定目标地址的一个处理器核心的FC存储器访问操作的请求,服务于该请求,并且此后进入裁判模式。当处于裁判模式时,窥探逻辑保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,以使得系统存储器的存储器控制器选择该请求以供处理。
尽管已经具体示出和描述了各种实施例,但是本领域技术人员将理解,在不脱离所附权利要求的范围的情况下,可以在形式和细节上对其进行各种改变,并且这些替代实现全部落入所附权利要求的范围内。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上并发地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
尽管已经关于执行指导本发明的功能的程序代码的计算机系统描述了各方面,但是应当理解,本发明可以替代地被实现为包括存储程序代码的计算机可读存储设备的程序产品,所述程序代码可以由数据处理系统的处理器处理以使数据处理系统执行所描述的功能。计算机可读存储设备可以包括易失性或非易失性存储器、光盘或磁盘等,但排除非法定主题,诸如传播信号本身、传输介质本身以及能量形式本身。
作为示例,程序产品可以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,所述数据和/或指令生成本文公开的硬件组件、电路、设备或系统的逻辑上、结构上或以其他方式功能上等效的表示(包括仿真模型)。这样的数据和/或指令可以包括硬件描述语言(HDL)设计实体或其他数据结构,其符合和/或兼容诸如Verilog和VHDL的低级HDL设计语言和/或诸如C或C++的高级设计语言。此外,数据和/或指令还可以采用用于交换集成电路的布局数据的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这样的设计数据结构的任何其它适当格式存储的信息)。
Claims (20)
1.一种多处理器数据处理系统中的多个处理器核心之中的相关联的处理器核心的高速缓存存储器,所述多处理器数据处理系统包括系统结构,系统结构通信地耦合高速缓存存储器和系统存储器的存储器控制器以接收系统结构上的操作,高速缓存存储器包括:
数据阵列;
数据阵列的内容的目录,其中目录包括一致性状态信息;以及
窥探逻辑,窥探逻辑通过参考数据阵列和目录处理从系统结构窥探的操作,其中窥探逻辑响应于在系统结构上窥探多个处理器核心中的指定目标地址的一个处理器核心的刷新或清理存储器访问操作的请求,服务所述请求并且此后进入裁判模式,其中窥探逻辑当处于裁判模式时保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,使得不允许其他一致性参与者承担存储器块的一致性所有权。
2.根据权利要求1所述的高速缓存存储器,其中:
刷新或清理操作的请求是第一请求;并且
窥探逻辑被配置为基于在窥探第一请求之后并且在窥探逻辑完成对第一请求的处理之前窥探冲突第二请求,进入裁判模式。
3.根据权利要求1所述的高速缓存存储器,其中窥探逻辑被配置为通过对冲突存储器访问请求发出重试一致性响应来保护存储器块免受冲突存储器访问请求。
4.根据权利要求1所述的高速缓存存储器,其中:
当处于裁判模式时,窥探逻辑被配置为对冲突刷新或清理请求提供第一一致性响应,并对其它类型的冲突请求提供不同的第二一致性响应。
5.根据权利要求1所述的高速缓存存储器,其中当处于裁判模式时,窥探逻辑检测超时状况,并且响应于检测到超时状况而退出裁判模式。
6.根据权利要求1所述的高速缓存存储器,其中窥探逻辑响应于当处于裁判模式时在系统结构上窥探终止请求而退出裁判模式。
7.根据权利要求1所述的高速缓存存储器,其中高速缓存存储器仅基于目录中的一致性状态信息来进入裁判模式,一致性状态信息指示与目标地址相关联的修改的高速缓存行的一致性所有权。
8.一种处理单元,包括:
根据前述权利要求中任一项所述的高速缓存存储器;以及
至少一个附属处理器核,耦合到高速缓存存储器。
9.一种数据处理系统,包括:
系统结构;以及
根据权利要求8所述的多个处理单元,其全部耦合到系统结构。
10.一种多处理器数据处理系统中的数据处理的方法,多处理器数据处理系统包括多处理器数据处理系统中的多个处理器核心之中的相关联的处理器核心的高速缓存存储器,所述多处理器数据处理系统包括系统结构,系统结构通信地耦合高速缓存存储器和系统存储器的存储器控制器以接收系统结构上的操作,所述方法包括:
高速缓存存储器在系统结构上窥探多个处理器核心中的指定目标地址的一个处理器核心的刷新或清理存储器访问操作的请求;
基于窥探所述请求,高速缓存存储器服务于请求,并且此后进入裁判模式;以及
当处于裁判模式时,高速缓存存储器保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,使得不允许其他一致性参与者承担存储器块的一致性所有权。
11.根据权利要求10所述的方法,其中:
刷新或清理操作的请求是第一请求;并且
进入裁判模式包括基于在窥探第一请求之后并且在窥探逻辑完成对第一请求的处理之前窥探冲突第二请求来进入裁判模式。
12.根据权利要求10所述的方法,其中所述保护包括高速缓存存储器通过对冲突存储器访问请求发出重试一致性响应来保护存储器块免受冲突存储器访问请求。
13.根据权利要求10所述的方法,其中所述保护包括当处于裁判模式时,高速缓存存储器对冲突刷新或清理请求提供第一一致性响应,并且对其它类型的冲突请求提供不同的第二一致性响应。
14.根据权利要求10所述的方法,还包括当处于裁判模式时,高速缓存存储器检测超时状况,并且响应于检测到超时状况而退出裁判模式。
15.根据权利要求10所述的方法,还包括高速缓存存储器响应于当处于裁判模式时在系统结构上窥探终止请求而退出裁判模式。
16.根据权利要求10所述的方法,其中进入裁判模式包括高速缓存存储器仅基于目录中的一致性状态信息来进入裁判模式,一致性状态信息指示与目标地址相关联的修改的高速缓存行的一致性所有权。
17.一种有形地包含在机器可读存储设备中的设计结构,用于设计、制造或测试集成电路,所述设计结构包括:
处理单元,包括:
处理器核心;
高速缓存存储器,包括:
数据阵列;
数据阵列的内容的目录,其中目录包括一致性状态信息;以及
窥探逻辑,窥探逻辑通过参考数据阵列和目录处理从多处理器数据处理系统的系统结构窥探的操作,其中窥探逻辑响应于在系统结构上窥探多个处理器核中的指定目标地址的一个处理器核心的刷新或清理存储器访问操作的请求,服务所述请求并且此后进入裁判模式,其中窥探逻辑当处于裁判模式时保护由目标地址标识的存储器块免受多个处理器核心的冲突存储器访问请求,使得系统存储器的存储器控制器选择所述请求以供处理。
18.根据权利要求17所述的设计结构,其中:
刷新或清理操作的请求是第一请求;并且
窥探逻辑被配置为基于在窥探第一请求之后并且在窥探逻辑完成对第一请求的处理之前窥探冲突第二请求,进入裁判模式。
19.根据权利要求17所述的设计结构,其中窥探逻辑被配置为通过对冲突存储器访问请求发出重试一致性响应来保护存储器块免受冲突存储器访问请求。
20.根据权利要求17所述的设计结构,其中:
当处于裁判模式时,窥探逻辑被配置为对冲突刷新或清理请求提供第一一致性响应,并对其它类型的冲突请求提供不同的第二一致性响应。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/701,833 US10970215B1 (en) | 2019-12-03 | 2019-12-03 | Cache snooping mode extending coherence protection for certain requests |
US16/701,833 | 2019-12-03 | ||
PCT/IB2020/061140 WO2021111255A1 (en) | 2019-12-03 | 2020-11-25 | Cache snooping mode extending coherence protection for certain requests |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114761932A true CN114761932A (zh) | 2022-07-15 |
Family
ID=75275353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080083171.9A Pending CN114761932A (zh) | 2019-12-03 | 2020-11-25 | 扩展对某些请求的一致性保护的高速缓存窥探模式 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10970215B1 (zh) |
JP (1) | JP2023504622A (zh) |
CN (1) | CN114761932A (zh) |
DE (1) | DE112020005147B4 (zh) |
GB (1) | GB2603447B (zh) |
WO (1) | WO2021111255A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157409B2 (en) * | 2019-12-17 | 2021-10-26 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
US11556472B1 (en) * | 2021-08-04 | 2023-01-17 | International Business Machines Corporation | Data processing system having masters that adapt to agents with differing retry behaviors |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4814981A (en) | 1986-09-18 | 1989-03-21 | Digital Equipment Corporation | Cache invalidate protocol for digital data processing system |
US5682516A (en) | 1994-03-01 | 1997-10-28 | Intel Corporation | Computer system that maintains system wide cache coherency during deferred communication transactions |
US6178484B1 (en) | 1998-02-17 | 2001-01-23 | International Business Machines Corporation | DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches |
US6557084B2 (en) | 1999-07-13 | 2003-04-29 | International Business Machines Corporation | Apparatus and method to improve performance of reads from and writes to shared memory locations |
US7000078B1 (en) | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US8635410B1 (en) * | 2000-07-20 | 2014-01-21 | Silicon Graphics International, Corp. | System and method for removing data from processor caches in a distributed multi-processor computer system |
US6633959B2 (en) | 2001-06-21 | 2003-10-14 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that provides notification of remote deallocation of shared data |
US7194587B2 (en) | 2003-04-24 | 2007-03-20 | International Business Machines Corp. | Localized cache block flush instruction |
US7389388B2 (en) | 2005-02-10 | 2008-06-17 | International Business Machines Corporation | Data processing system and method for efficient communication utilizing an in coherency state |
US7543116B2 (en) | 2006-01-30 | 2009-06-02 | International Business Machines Corporation | Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains |
US8219763B2 (en) | 2006-03-16 | 2012-07-10 | International Business Machines Corporation | Structure for performing cacheline polling utilizing a store and reserve instruction |
US8504777B2 (en) | 2010-09-21 | 2013-08-06 | Freescale Semiconductor, Inc. | Data processor for processing decorated instructions with cache bypass |
US8966457B2 (en) | 2011-11-15 | 2015-02-24 | Global Supercomputing Corporation | Method and system for converting a single-threaded software program into an application-specific supercomputer |
US8799588B2 (en) | 2012-02-08 | 2014-08-05 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration |
US8793442B2 (en) | 2012-02-08 | 2014-07-29 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
US8856455B2 (en) | 2012-03-28 | 2014-10-07 | International Business Machines Corporation | Data cache block deallocate requests |
US9129071B2 (en) | 2012-10-24 | 2015-09-08 | Texas Instruments Incorporated | Coherence controller slot architecture allowing zero latency write commit |
US9135175B2 (en) * | 2012-12-21 | 2015-09-15 | Oracle International Corporation | Distributed cache coherency directory with failure redundancy |
US8990513B2 (en) | 2013-01-11 | 2015-03-24 | International Business Machines Corporation | Accelerated recovery for snooped addresses in a coherent attached processor proxy |
US9208091B2 (en) | 2013-06-19 | 2015-12-08 | Globalfoundries Inc. | Coherent attached processor proxy having hybrid directory |
US9298626B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Managing high-conflict cache lines in transactional memory computing environments |
US10078589B2 (en) | 2015-04-30 | 2018-09-18 | Arm Limited | Enforcing data protection in an interconnect |
US20180143903A1 (en) * | 2016-11-22 | 2018-05-24 | Mediatek Inc. | Hardware assisted cache flushing mechanism |
US10592424B2 (en) * | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
-
2019
- 2019-12-03 US US16/701,833 patent/US10970215B1/en active Active
-
2020
- 2020-11-25 DE DE112020005147.1T patent/DE112020005147B4/de active Active
- 2020-11-25 CN CN202080083171.9A patent/CN114761932A/zh active Pending
- 2020-11-25 WO PCT/IB2020/061140 patent/WO2021111255A1/en active Application Filing
- 2020-11-25 GB GB2208451.1A patent/GB2603447B/en active Active
- 2020-11-25 JP JP2022532740A patent/JP2023504622A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112020005147B4 (de) | 2023-10-12 |
GB2603447B (en) | 2022-11-16 |
WO2021111255A1 (en) | 2021-06-10 |
GB2603447A (en) | 2022-08-03 |
GB202208451D0 (zh) | 2022-07-27 |
JP2023504622A (ja) | 2023-02-06 |
US10970215B1 (en) | 2021-04-06 |
DE112020005147T5 (de) | 2022-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885583B (zh) | 高速缓存存储器访问 | |
US9547597B2 (en) | Selection of post-request action based on combined response and input from the request source | |
US9208092B2 (en) | Coherent attached processor proxy having hybrid directory | |
US9251077B2 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
US9229868B2 (en) | Data recovery for coherent attached processor proxy | |
US9251076B2 (en) | Epoch-based recovery for coherent attached processor proxy | |
CN114761932A (zh) | 扩展对某些请求的一致性保护的高速缓存窥探模式 | |
EP4066119B1 (en) | Cache snooping mode extending coherence protection for certain requests | |
US10705957B1 (en) | Selectively updating a coherence state in response to a storage update | |
US9146872B2 (en) | Coherent attached processor proxy supporting master parking | |
US10733102B2 (en) | Selectively updating a coherence state in response to a storage update | |
WO2023010975A1 (en) | Data processing system having masters that adapt to agents with differing retry behaviors | |
US11157408B2 (en) | Cache snooping mode extending coherence protection for certain requests | |
CN114430819B (zh) | 数据处理系统及其处理单元和处理方法 | |
US11163700B1 (en) | Initiating interconnect operation without waiting on lower level cache directory lookup | |
US10949346B2 (en) | Data flush of a persistent memory cache or buffer | |
US10691599B1 (en) | Selectively updating a coherence state in response to a storage update | |
US11748280B2 (en) | Broadcast scope selection in a data processing system utilizing a memory topology data structure |
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 |