[go: up one dir, main page]

CN114761933B - 扩展对某些请求的一致性保护的高速缓存窥探模式 - Google Patents

扩展对某些请求的一致性保护的高速缓存窥探模式 Download PDF

Info

Publication number
CN114761933B
CN114761933B CN202080084926.7A CN202080084926A CN114761933B CN 114761933 B CN114761933 B CN 114761933B CN 202080084926 A CN202080084926 A CN 202080084926A CN 114761933 B CN114761933 B CN 114761933B
Authority
CN
China
Prior art keywords
request
memory
cache
cache memory
target address
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
Application number
CN202080084926.7A
Other languages
English (en)
Other versions
CN114761933A (zh
Inventor
D.威廉姆斯
G.古思里
沈昱
L.默里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN114761933A publication Critical patent/CN114761933A/zh
Application granted granted Critical
Publication of CN114761933B publication Critical patent/CN114761933B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

高速缓存存储器包括数据阵列、指定一致性状态信息的数据阵列的内容的目录、以及通过参考数据阵列和目录处理从系统结构窥探的操作的窥探逻辑。窥探逻辑响应于在系统结构上窥探到指定目标地址的第一刷新或清理存储器访问操作的请求,确定高速缓存存储器是否具有目标地址的一致性所有权。基于确定高速缓存存储器具有目标地址的一致性所有权,窥探逻辑服务该请求并且此后进入裁判模式。当处于裁判模式时,窥探逻辑保护由目标地址标识的存储器块免受多个处理器核的冲突的存储器访问请求,直到指定目标地址的第二刷新/清理存储器访问操作结束为止。

Description

扩展对某些请求的一致性保护的高速缓存窥探模式
背景技术
本发明一般涉及数据处理,并且具体涉及扩展对更新系统存储器的刷新(flush)/清理(clean)存储器访问请求的一致性保护的高速缓存窥探模式(snooping mode)。
传统的多处理器(MP)计算机系统,诸如服务器计算机系统,包括多个处理单元,所有处理单元都耦合到系统互连,系统互连通常包括一个或多个地址、数据和控制总线。耦合到系统互连的是系统存储器,其表示多处理器计算机系统中的最低级的共享存储器,并且通常可由所有处理单元进行读取和写入访问。为了减少对驻留在系统存储器中的指令和数据的访问延迟,每个处理单元通常还由相应的多级高速缓存层次结构(multi-level cachehierarchy)来支持,该多级高速缓存层次结构的较低级别可由一个或多个处理器核共享。
高速缓存存储器通常用于临时缓冲可能由处理器访问的存储器块,以便通过减少由于必须从系统存储器加载所需数据和指令而引入的访问延迟来加速处理。在一些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状态),则清理操作的后续发出将接收指示成功的一致性响应,并且刷新操作的后续发出将接收指示成功的一致性响应(如果没有行的经高速缓存的副本存在)或者接收将使目标高速缓存行的任何剩余的经非HPC高速缓存的副本无效的责任转移给发起一致性参与者的一致性响应。在刷新操作的这些情况的任何一种情况中,在刷新操作已经完全完成或者一旦目标高速缓存行的剩余的非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是常规的组关联(set-associative)的,则利用系统存储器(实)地址内的预定索引位将系统存储器108中的存储器位置映射到高速缓存阵列302内的特定同余类。存储在高速缓存阵列302的高速缓存行内的特定存储器块被记录在高速缓存目录308中,其包含针对每个高速缓存行的一个目录条目。尽管在图3中没有明确示出,但本领域技术人员将理解,高速缓存目录308中的每个目录条目包括各种字段,例如,标识高速缓存阵列302的对应的高速缓存行中保持的存储器块的实地址的标签字段、指示高速缓存行的一致性状态的状态字段、指示高速缓存行相对于相同同余类中的其他高速缓存行的替换顺序的LRU(最近最少使用)字段、以及指示存储器块是否保持在相关联的L1高速缓存中的包含性字段。
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的成功,则Cresp 410可指示例如请求的存储器块的数据源(如果适用)、所请求的存储器块要由主机400高速缓存的一致性状态(如果适用)、以及是否需要使一个或多个L2高速缓存230中的所请求的存储器块的经高速缓存的副本无效的“清理”操作(如果适用)。
响应于接收到组合响应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。因此,SL一致性状态的实施方式可以使频繁被查询的高速缓存行的许多仅查询副本贯穿多处理器数据处理系统而创建,减少了对这些高速缓存行的仅查询访问的延迟。
再次参考图4,对于请求402中参考的存储器块,如果存在HPC,或者在不存在HPC的情况下,存储器块的LPC优选地具有响应于请求402(在必要时)保护存储器块的一致性所有权的转移的责任。在图4所示的示例性场景中,在由请求402的请求地址指定的存储器块的HPC(或者在不存在HPC的情况下,LPC)处的窥探器404n在保护窗口412a期间保护所请求的存储器块的一致性所有权向主机400的转移,该保护窗口412a从窥探器404n确定其部分响应406的时间开始延伸,直到窥探器304n接收到组合响应410,并且在后续窗口扩展412b期间,该窗口扩展412b将可编程时间扩展到窥探器404n接收到组合响应410之外。在保护窗口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状态的目标高速缓存行(如果存在)的高速缓存层次结构中完成的刷新/清理操作与发起最终成功的刷新/清理请求的主机之间的漏洞窗口(window of vulnerability)中遭受前向进度问题。如以下参考图5至图8详细描述的,这些前向进度问题可以通过具有目标高速缓存行的一致性所有权的一致性参与者(即,HPC)扩展其用于目标高速缓存行的保护窗口来解决。
现在转到图5,示出了根据一个实施例的处理单元104中的主机400(例如,RC机312)执行刷新或清理类型的存储器访问操作的示例性过程的高级逻辑流程图。如上文所指示,任何数量的主机可以并发地对可能的冲突的目标地址执行其自身的相应刷新/清理存储器访问操作。因此,可以以在时间上重叠的方式在数据处理系统100内执行图5中给出的过程的多个实例。
图5的过程开始于框500,然后进行到框502,其示出了主机400在数据处理系统100的系统结构上发出存储器访问操作的请求402。在至少一些实施例中,主机400,诸如L2高速缓存230的RC机312,基于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,或者当前忙于处理目标高速缓存行的请求。
轻量级重试Prep由如下L2高速缓存230提供:其目录308是可访问的,并且指示目标地址的SL和S状态中的任一个,以及(1)当前正在处理目标地址的另一冲突的请求,或者(2)不能分派SN机311,并且对于目标地址,SN机311当前没有活动,或者(3)已经分派SN机311来处理FC请求402。
应当理解,对于整个间隔,L2高速缓存230使SN机311活动处理对给定目标地址的请求,当请求被第一次窥探时,L2高速缓存230将基于与目标地址相关联的一致性状态提供重量级重试Presp或轻量级重试Presp。下面参照图6详细描述由将FC请求402的目标地址保持在脏HPC(例如M或T)一致性状态的L2高速缓存230执行的特定动作。下面参照图7详细描述由将刷新请求的目标地址保持在共享(例如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、505和506,其示出了在框502处发出的FC操作的请求402的主机400等待从响应逻辑218接收对应的Cresp 410。在至少一个实施例中,响应逻辑218可基于如下表III所示的窥探器404的所接收的Presp来生成针对FC操作的Cresp 410。应当注意,在至少一些实施例中,DCBST请求没有接收到轻量级重试Presp(如表III的行1、2、3和5所示),因为DCBST请求被将高速缓存行保持在SL和S状态中的任一个状态的高速缓存忽略。
表III
响应于对Cresp 410的接收,主机400确定Cresp 410是否指示重试,如表III的前三行所示(框504)。如果是,则过程返回到框502,其示出主机400在系统结构上重新发出FC操作的请求402。如果主机400在框504确定请求402的Cresp 410不是重试,则在表III的实施例中,一致性结果是HPC_Success(在框505处的肯定确定;表III的第四行)、Success_with_cleanup(Success_CU)(在框506处的肯定确定;表III的第五和第六行)或者Success(在框505和506两者处的否定确定;表III的第七行)。如果Cresp 410是Success(如在框505和506两者处的否定确定指示的),则在数据处理系统100中不存在目标高速缓存行的经高速缓存的副本。结果,刷新或清理操作成功完成,并且图5的过程在520结束。
然而,如果Cresp 410指示Success_CU,则Cresp 410指示一个或多个高速缓存可以保持除了处于脏HPC状态之外的目标高速缓存行的副本,并且指示将目标高速缓存行的副本保持在HPC状态的高速缓存不存在或者响应于请求402,以HPC_Ack Presp指示完成将目标高速缓存行写回系统存储器108以及在Cresp将目标高速缓存行的一致性所有权转移到主机400。因此,主机400打开保护窗口413,并通过使任何冲突的窥探请求接收重量级重试Presp(框508)来开始保护目标地址。此外,如果FC操作是刷新或AMO操作,则主机400在系统结构上发出清理命令(例如,来自表II的BK或BK_Flush命令)以使目标存储器块的任何共享的经高速缓存的副本无效(框510)。在框510之后,图5的过程转到框512,其示出了针对在框510处发出的清理命令的Cresp 410是否指示成功的确定。如果否,则过程返回到框510,其表示主机400重新发出清理命令。一旦接收到针对在框510处发出的清除命令的指示成功的Cresp 410,主机400就关闭保护窗口413,并且因此结束对FC操作的请求的目标地址的保护(框514)。此后,图5的过程在框520处结束。
如果FC操作的Cresp 410是HPC_Success,则Cresp 410指示先前的脏的HPC高速缓存已经完成了给定类的FC操作所必需的处理(例如,将目标高速缓存行写回系统存储器108和更新其目录),并且没有高速缓存将目标高速缓存行的副本保持在共享的一致性状态或者FC操作不与目标高速缓存行的共享的副本交互,或者两者皆有。因为不存在数据处理系统100中存在的目标高速缓存行的高速缓存副本或者存在的那些不受FC操作的影响,所述主机400不发出清理命令,并且图5的过程在框520处结束。应当注意,HPC_Success的Cresp不是针对FC操作的初始请求而接收的,而是仅在至少一个重试之后接收的,如下文参见图6的框602和框630至632进一步讨论的。
现在参考图6,其是根据一个实施例的示例性过程的高级逻辑流程图,HPC高速缓存通过该示例性过程来处理FC存储器访问操作的窥探的请求。为了促进更好地理解,将结合图7的时序图700来描述图6的流程图。
图6中描绘的过程开始于框600,然后进行到框602,其示出了将FC存储器访问操作的目标高速缓存行保持在脏的HPC一致性状态(例如M或T一致性状态)的L2高速缓存存储器230窥探来自本地互连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模式计时器的期满(框640)和窥探相同类的FC操作(例如,清理、刷新、AMO等)的请求(框630)。当在该处理循环中时,SN机311在系统结构上监视任何冲突的操作,该冲突的操作的目标在于与早先窥探的FC请求相同的高速缓存行,但是不在相同类的FC操作中,如图6的框622和图7的附图标记714所示。响应于检测到任何这样的冲突的请求,SN机311将重量级重试Presp提供给冲突的非FC请求,如图6的框624所示。该重量级重试Presp将导致响应逻辑218的相关实例发出重试Cresp,如上文参见图5的表Ⅲ和框504所讨论的。此后,过程转到框640,其将在下面描述。
在处理循环中,SN机311还在系统结构上监视任何冲突的FC操作,该冲突的FC操作将与早先窥探到的FC请求相同的高速缓存行作为目标,并且该冲突的FC操作处于相同类的FC操作中(例如,清理、刷新、AMO等),如图6的框630和图7的附图标记716所示。冲突的FC操作可以由发出早先FC请求的同一主机400或由不同的主机发出。响应于检测到任何这样的冲突的FC请求,SN机311提供对冲突的FC请求的HPC_Ack部分响应,如图6的框632所示。该HPC_Ack部分响应将引起HPC_Success Cresp的生成(参见例如表III)。响应于接收到HPC_Success Cresp(框634),图6的过程转到框650,其在下面描述。
框640描绘SN机311通过参考REF模式计时器确定REF模式的超时是否已发生。在不同实施例中,超时可在静态的预定计时器值处发生,或者替代地,在基于例如在SN机311处于REF模式的时段期间接收的冲突的FC和/或非FC操作的数量而确定的动态值处发生。如果否,则图6的过程返回至已经描述的框622。响应于在框640确定REF模式已经超时,过程进行到框650,其示出SN机311退出REF模式,如图7的参考标号718所示,SN机311因此结束其对目标高速缓存行的保护,并返回到空闲状态(图6的框614和图7的参考标号720)。此后,图6的过程在框616处结束。
本领域技术人员将理解,图6公开了一种技术,其中HPC窥探器临时进入REF模式,其中HPC窥探器在由HPC窥探器执行的刷新/清理活动的结束和后续FC存储器访问操作的结束(例如,Cresp)之间的间隔中扩展对于作为FC存储器访问操作的请求的目标的存储器块的一致性保护,其中,该后续FC存储器访问操作具有相同类并且指定相同目标地址。目标高速缓存行的这种扩展的保护确保了在保证FC存储器访问操作成功之前不会为目标高速缓存行形成其它HPC。
现在参考图8,描绘了根据一个实施例的示例性过程的高级逻辑流程图,通过该示例性过程,保持窥探到的刷新类型的请求(例如DCBF或AMO)的目标高速缓存的非HPC共享副本的高速缓存处理该请求。应当注意,保持清理(例如,DCBST)请求的目标高速缓存的共享副本的高速缓存忽略清理请求。
图8的过程在框800开始,然后进行到框802,其示出保持刷新类型的请求的目标高速缓存行的L2高速缓存230窥探刷新类型的操作的初始请求(例如,DCBF或AMO)或相关联的清理命令(例如,BK或BK_FLUSH)。响应于窥探到初始请求或清理命令,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),并且图7的处理在框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中所示的组件、电路、器件或逻辑结构等效的设计/仿真功能,以生成网表990,其可以包含诸如设计结构920的设计结构。网表990可以包括例如编译或以其他方式处理的数据结构,其表示描述与集成电路设计中的其他元件和电路的连接的导线、分立部件、逻辑门、控制电路、I/O设备、模型等的列表。网表990可以使用迭代过程来合成,其中网表990被重新合成一次或多次,这取决于器件的设计规范和参数。如同本文所述的其它设计结构类型一样,网表990可记录在机器可读存储介质上或编程到可编程门阵列中。该介质可以是非易失性存储介质,例如磁盘或光盘驱动器、可编程门阵列、紧凑式闪存或其它闪存。另外,或者作为选择,介质可以是系统或高速缓存存储器,或者缓冲空间。
设计过程900可以包括用于处理包括网表990的各种输入数据结构类型的硬件和软件模块。这样的数据结构类型可以例如驻留在库元件930内,并且包括一组常用的元件、电路和器件,包括用于给定制造技术(例如,不同的技术节点,32nm、45nm、90nm等)的模型、布局和符号表示。数据结构类型还可以包括设计规范940、特征数据950、验证数据960、设计规则970和测试数据文件995,其可以包括输入测试模式、输出测试结果和其他测试信息。设计过程900还可以包括例如标准机械设计过程,诸如应力分析、热分析、机械事件模拟、用于诸如铸造、模制和模压成形等的操作的过程模拟等。机械设计领域的普通技术人员可以理解在设计过程900中使用的可能的机械设计工具和应用的范围,而不偏离本发明的范围和精神。设计过程900还可以包括用于执行标准电路设计过程的模块,所述标准电路设计过程例如时序分析、验证、设计规则检查、布局和布线操作等。
设计过程900采用并结合逻辑和物理设计工具,诸如HDL编译器和仿真模型构建工具,以处理设计结构920以及所描绘的支持数据结构中的一些或全部连同任何附加的机械设计或数据(如果适用的话),以生成第二设计结构990。设计结构990以用于机械器件和结构的数据交换的数据格式(例如,以IGES、DXF、Parastoll XT、JT、DRG或用于存储或呈现这样的机械设计结构的任何其他适当格式存储的信息)驻留在存储介质或可编程门阵列上。类似于设计结构920,设计结构990优选地包括一个或多个文件、数据结构或其它计算机编码的数据或指令,其驻留在传输或数据存储介质上,并且当由ECAD系统处理时,生成在逻辑上或以其它方式在功能上等效的形式的图1至图3中所示的本发明的一个或多个实施例。在一个实施例中,设计结构990可以包括在功能上仿真图1至图3中示出的器件的编译的、可执行的HDL仿真模型。
设计结构990还可以采用用于交换集成电路的布图数据的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或用于存储这种设计数据结构的任何其他适当格式存储的信息)。设计结构990可以包括信息,例如符号数据、映射文件、测试数据文件、设计内容文件、制造数据、布局参数、布线、金属层、通孔、形状、用于通过生产线路由的数据、以及制造商或其他设计者/开发者生产如上所述且如图1至图3所示的器件或结构所需的任何其他数据,然后设计结构990可以进行到阶段995,其中例如设计结构990:进行流片、交付制造、交付掩模厂、送到另一设计厂、送回到客户等。
如上所述,在至少一个实施例中,高速缓存存储器包括数据阵列、指定一致性状态信息的数据阵列的内容的目录、以及通过参考数据阵列和目录来处理从系统结构窥探的操作的窥探逻辑。该窥探逻辑响应于在系统结构上窥探指定目标地址的第一刷新/清理存储器访问操作的请求,确定高速缓存存储器是否具有目标地址的一致性所有权。基于确定高速缓存存储器具有目标地址的一致性所有权,窥探逻辑服务该请求,并且此后进入裁判模式。当处于裁判模式时,窥探逻辑保护由目标地址标识的存储器块免受多个处理器核的冲突的存储器访问请求,直到指定目标地址的第二刷新/清理存储器访问操作结束为止。
尽管已经具体示出和描述了各种实施例,但是本领域技术人员将理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上对其进行各种改变,并且这些替代实现全部落入所附权利要求的范围内。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上并发地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
尽管已经关于执行指导本发明的功能的程序代码的计算机系统描述了各方面,但是应当理解,本发明可以替代地被实现为包括存储程序代码的计算机可读存储设备的程序产品,所述程序代码可以由数据处理系统的处理器处理以使数据处理系统执行所描述的功能。计算机可读存储设备可以包括易失性或非易失性存储器、光盘或磁盘等,但排除非法定主题,诸如传播信号本身、传输介质本身以及能量形式本身。
作为示例,程序产品可以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,所述数据和/或指令生成本文公开的硬件组件、电路、设备或系统的逻辑上、结构上或以其他方式功能上等效的表示(包括仿真模型)。这样的数据和/或指令可以包括硬件描述语言(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.一种数据处理系统,包括:
系统架构;以及
根据权利要求7所述的多个处理设备,其全部耦合到所述系统结构。
9.一种在多处理器数据处理系统中进行数据处理的方法,所述多处理器数据处理系统包括所述多处理器数据处理系统中的多个处理器核中的相关联的处理器核的高速缓存存储器,所述多处理器数据处理系统包括系统结构,所述系统结构通信地耦合所述高速缓存存储器和系统存储器的存储器控制器以接收所述系统结构上的操作,所述方法包括:
所述高速缓存存储器在所述系统结构上窥探所述多个处理器核中的指定目标地址的一个处理器核的第一刷新/清理存储器访问操作的请求;
基于窥探到所述请求,所述高速缓存存储器确定所述高速缓存存储器是否具有所述目标地址的一致性所有权;
基于确定所述高速缓存存储器具有所述目标地址的一致性所有权,所述高速缓存存储器服务所述请求并且此后进入裁判模式;以及
当处于所述裁判模式时,所述高速缓存存储器保护由所述目标地址标识的存储器块免受所述多个处理器核的冲突的存储器访问请求,直到指定所述目标地址的第二刷新/清理存储器访问操作结束为止。
10.根据权利要求9所述的方法,其中:
刷新或清理操作的请求是第一请求;并且
进入所述裁判模式包括基于在窥探到所述第一请求之后并且在所述窥探逻辑完成对所述第一请求的处理之前窥探到冲突的第二请求而进入所述裁判模式。
11.根据权利要求9所述的方法,其中所述保护包括所述高速缓存存储器通过对冲突的存储器访问请求发出重试一致性响应来保护存储器块免受冲突的存储器访问请求。
12.根据权利要求9所述的方法,还包括当处于所述裁判模式时,所述高速缓存存储器对与第一刷新/清理存储器访问操作相同类的刷新/清理存储器访问操作的冲突的请求提供第一一致性响应,并对其它类型的冲突的请求提供不同的第二一致性响应。
13.根据权利要求9所述的方法,还包括当处于所述裁判模式时,所述高速缓存存储器检测超时状况,并且响应于检测到所述超时状况而退出所述裁判模式。
14.根据权利要求9所述的方法,其中,所述高速缓存存储器包括数据阵列和所述数据阵列的内容的目录,所述目录包括一致性状态信息,并且其中,进入所述裁判模式包括所述高速缓存存储器仅基于所述一致性状态信息而进入所述裁判模式,所述一致性状态信息指示与所述目标地址相关联的修改的高速缓存行的一致性所有权。
15.一种有形地体现在用于设计、制造或测试集成电路的机器可读存储设备中的装置,所述装置包括:
处理单元,包括:
多个处理器核;
高速缓存存储器,包括:
数据阵列;
所述数据阵列的内容的目录,其中所述目录包括一致性状态信息;以及
窥探逻辑,所述窥探逻辑通过参考所述数据阵列和所述目录来处理从系统结构窥探的操作,其中所述窥探逻辑响应于在系统结构上窥探到所述多个处理器核中的指定目标地址的一个处理器核的第一刷新/清理存储器访问操作的请求而执行以下操作:
确定所述高速缓存存储器是否具有所述目标地址的一致性所有权;
基于确定所述高速缓存存储器具有所述目标地址的一致性所有权,服务所述请求并且此后进入裁判模式;以及
当处于所述裁判模式时,保护由所述目标地址标识的存储器块免受所述多个处理器核的冲突的存储器访问请求,直到指定所述目标地址的第二刷新/清理存储器访问操作结束为止。
16.根据权利要求15所述的装置,其中:
刷新或清理操作的请求是第一请求;并且
所述窥探逻辑被配置为基于在窥探到所述第一请求之后并且在所述窥探逻辑完成对所述第一请求的处理之前窥探到冲突的第二请求而进入所述裁判模式。
17.根据权利要求15所述的装置,其中所述窥探逻辑被配置为通过对冲突的存储器访问请求发出重试一致性响应来保护存储器块免受冲突的存储器访问请求。
18.根据权利要求15所述的装置,其中:
当处于所述裁判模式时,所述窥探逻辑被配置为对与第一刷新/清理存储器访问操作相同类的刷新/清理存储器访问操作的冲突的请求提供第一一致性响应,并对其它类型的冲突的请求提供不同的第二一致性响应。
19.根据权利要求15所述的装置,其中当处于所述裁判模式时,所述窥探逻辑检测超时状况,并且响应于检测到所述超时状况而退出所述裁判模式。
20.根据权利要求15所述的装置,其中所述高速缓存存储器仅基于所述目录中的一致性状态信息而进入所述裁判模式,所述一致性状态信息指示与所述目标地址相关联的修改的高速缓存行的一致性所有权。
CN202080084926.7A 2019-12-17 2020-12-14 扩展对某些请求的一致性保护的高速缓存窥探模式 Active CN114761933B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/717,868 US11157409B2 (en) 2019-12-17 2019-12-17 Cache snooping mode extending coherence protection for certain requests
US16/717,868 2019-12-17
PCT/EP2020/085894 WO2021122408A1 (en) 2019-12-17 2020-12-14 Cache snooping mode extending coherence protection for certain requests

Publications (2)

Publication Number Publication Date
CN114761933A CN114761933A (zh) 2022-07-15
CN114761933B true CN114761933B (zh) 2024-12-10

Family

ID=74095797

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080084926.7A Active CN114761933B (zh) 2019-12-17 2020-12-14 扩展对某些请求的一致性保护的高速缓存窥探模式

Country Status (4)

Country Link
US (1) US11157409B2 (zh)
EP (1) EP4066119B1 (zh)
CN (1) CN114761933B (zh)
WO (1) WO2021122408A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN114265797B (zh) * 2021-12-01 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、硬盘设备及方法
US11874783B2 (en) * 2021-12-21 2024-01-16 Advanced Micro Devices, Inc. Coherent block read fulfillment
CN115756322B (zh) * 2022-11-15 2025-03-28 中国第一汽车股份有限公司 数据存储方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970215B1 (en) * 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests

Family Cites Families (23)

* Cited by examiner, † Cited by third party
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
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
US7000078B1 (en) 1999-10-01 2006-02-14 Stmicroelectronics Ltd. System and method for maintaining cache coherency in a shared memory system
US6763434B2 (en) * 2000-12-30 2004-07-13 International Business Machines Corporation Data processing system and method for resolving a conflict between requests to modify a shared cache line
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
US7467262B2 (en) * 2005-05-24 2008-12-16 International Business Machines Corporation Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
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
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
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
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
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
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
US10152417B2 (en) 2016-04-11 2018-12-11 International Business Machines Corporation Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation
US10157134B2 (en) * 2016-04-11 2018-12-18 International Business Machines Corporation Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response
US20180011792A1 (en) 2016-07-06 2018-01-11 Intel Corporation Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System
US10592424B2 (en) * 2017-07-14 2020-03-17 Arm Limited Range-based memory system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970215B1 (en) * 2019-12-03 2021-04-06 International Business Machines Corporation Cache snooping mode extending coherence protection for certain requests

Also Published As

Publication number Publication date
JP2023509334A (ja) 2023-03-08
EP4066119B1 (en) 2024-01-10
WO2021122408A1 (en) 2021-06-24
US20210182198A1 (en) 2021-06-17
US11157409B2 (en) 2021-10-26
EP4066119A1 (en) 2022-10-05
CN114761933A (zh) 2022-07-15

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
CN114761933B (zh) 扩展对某些请求的一致性保护的高速缓存窥探模式
CN103365794B (zh) 数据处理方法、装置和系统
US10152417B2 (en) Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation
US10216519B2 (en) Multicopy atomic store operation in a data processing system
US10102130B2 (en) Decreasing the data handoff interval in a multiprocessor data processing system based on an early indication of a systemwide coherence response
CN114761932B (zh) 扩展对某些请求的一致性保护的高速缓存窥探模式
US10956070B2 (en) Zeroing a memory block without processor caching
CN114787784B (zh) 扩展对某些请求的一致性保护的高速缓存窥探模式
WO2023010975A1 (en) Data processing system having masters that adapt to agents with differing retry behaviors
US11163700B1 (en) Initiating interconnect operation without waiting on lower level cache directory lookup
US10949346B2 (en) Data flush of a persistent memory cache or buffer
JP7710447B2 (ja) 特定のリクエストに対するコヒーレンス保護を拡張するキャッシュ・スヌーピング・モード
US9665297B1 (en) Injection of at least a partial cache line in a private multilevel cache hierarchy
US11561901B1 (en) Distribution of injected data among caches of a data processing system
US11561900B1 (en) Targeting of lateral castouts in a data processing system
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
GR01 Patent grant
GR01 Patent grant