CN109564548A - 争用锁请求省略方案 - Google Patents
争用锁请求省略方案 Download PDFInfo
- Publication number
- CN109564548A CN109564548A CN201780032262.8A CN201780032262A CN109564548A CN 109564548 A CN109564548 A CN 109564548A CN 201780032262 A CN201780032262 A CN 201780032262A CN 109564548 A CN109564548 A CN 109564548A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- block
- request
- oriented block
- 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
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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/523—Mode
-
- 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/1041—Resource optimization
-
- 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/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
- G06F2212/284—Plural cache memories being distributed
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了一种用于多个节点之间的网络流量管理的系统和方法。一种计算系统包括彼此连接的多个节点。当归属节点确定请求对分配给所述归属节点的给定数据块的读取访问的节点的数目超过阈值并且所述给定数据块的副本已经存储在所述系统中的所述多个节点中的第一节点处时,所述归属节点向所述第一节点发送命令。所述命令指示所述第一节点将所述给定数据块的副本转发到所述归属节点。所述归属节点接着维持所述给定数据块的副本并且将所述给定数据块的副本转发到其它请求节点,直到所述归属节点检测到对所述给定数据块的写入请求或锁释放请求为止。
Description
背景技术
技术领域
本发明涉及计算网络系统,并且更明确地说,涉及管理多个节点之间的通信。
相关技术描述
在现代微处理器中,微处理器中包括一个或多个处理器和/或处理器核心,其中每个处理器能够在超标量流水线中执行指令。微处理器包括或耦接到高速缓存层次结构的一个或多个层级以便减少微处理器的数据请求的等待时间。另外,为了提高计算性能,计算系统通常包括多个节点,其中每个节点具有一个或多个微处理器。在一些情况下,给定数据块存储在多个节点的多个高速缓存中。由于高速缓存副本中的一者可以在一个节点中相对于其它节点中的高速缓存副本进行修改,因此计算系统被配置为根据给定高速缓存一致性协议来维持高速缓存一致性。各种特定一致性协议是众所周知的。
许多此类一致性协议包括使用在系统中的节点之间传递的消息、命令和/或探针。在一些情况下,消息由给定一致性点(诸如存储器控制器)协调。此外,探针用于同步对给定块的访问。软件通常使用锁定机制来同步对数据的访问。在各种系统中,许多线程试图获取给定数据块上的锁。在此类情况下,给定块的特定节点(例如,归属节点)接收针对给定块的多个锁获取请求。响应于此类请求,归属节点将通常串行处理锁获取请求。例如,在此类情况下,第一线程成功获取用于给定块的锁。一旦第一线程完成对给定块的处理,第一线程就向节点传送消息来释放锁。然而,由于正以串行化方式处理先前接收到的锁获取请求,因此直到先前请求已经被处理,才能够处理来自第一线程的锁释放请求。因此,在锁被释放之前出现延迟。
鉴于上述问题,需要用于管理多节点处理系统中的通信的有效方法和系统。
发明内容
设想了用于管理多个节点之间的通信的系统和方法。在各种实施方案中,一种计算系统包括彼此连接的多个处理节点。每个处理节点包含一个或多个处理核心和一个或多个对应的高速缓存存储器子系统。多个节点被配置为针对分配给归属节点的数据块生成读取访问请求。针对分配给归属节点的给定数据块,除归属节点以外的节点当前存储给定数据块的副本。其它节点针对给定数据块向归属节点发送读取访问请求,同时其它节点具有给定数据块的副本。
当归属节点确定请求对给定数据块进行读取访问的节点的数目已经超过阈值并且给定数据块的副本存储在另一个节点处时,归属节点向第一节点发送命令。发送到第一节点的命令指示第一节点将给定数据块的副本转发到归属节点。此外,第一节点被指示将给定数据块的副本的高速缓存一致性状态改变为拥有一致性状态。
响应于接收到副本,归属节点将给定数据块的副本转发到请求节点,诸如多个节点中的第二节点。另外,第二节点被指示将给定数据块的副本的高速缓存一致性状态改变为共享状态。归属节点继续向其它请求节点转发给定数据块的副本,直到归属节点检测到意图修改给定数据块的写入请求或读取请求为止。
将参考以下描述和附图进一步理解这些和其它实施方案。
附图说明
图1是计算系统的一个实施方案的广义图。
图2是用于在多节点计算系统中处理读取和写入请求的序列图的一个实施方案的广义图。
图3是存储器控制器的一个实施方案的广义图。
图4是用于在多节点计算系统中处理读取和写入请求的序列图的另一实施方案的广义图。
图5是用于在多节点计算系统中处理读取和写入请求的序列图的另一实施方案的广义图。
图6是用于在多节点计算系统中处理读取和写入请求的序列图的另一实施方案的广义图。
图7是用于在多节点计算系统中处理读取和写入请求的序列图的另一实施方案的广义图。
图8是用于在多节点计算系统中处理读取和写入请求的序列图的另一实施方案的广义图。
图9是用于在多节点计算系统中处理一系列读取请求的方法的一个实施方案的广义流程图。
图10是示例性处理节点的一个实施方案的广义图。
尽管本发明易于做出各种修改和替代形式,但是在附图中以示例方式示出特定实施方案并且在本文中对其进行详细描述。然而,应理解,附图及其详细描述并非意图将本发明限于所公开的特定形式,而是相反,本发明将涵盖落入如所附权利要求所限定的本发明范围内的所有修改、等效物和替代物。
具体实施方式
在以下描述中,阐述许多特定细节以提供对本发明的透彻理解。然而,本领域的普通技术人员应认识到,可以在没有这些特定细节的情况下实践本发明。在一些情况下,尚未详细示出众所周知的电路、结构和技术以避免模糊本发明。此外,应了解,为了说明简单且清楚起见,图中所示的元件未必按比例绘制。例如,一些元件的尺寸相对于其它元件被放大。
参考图1,示出计算系统100的一个实施方案。计算系统100包括多个处理节点110a至110d。处理节点110a至110d还可以称为节点110a至110d。虽然图1中示出四个节点,但是其它实施方案包括不同数目个节点,每个节点包括一个或多个处理器核心和一个或多个对应的高速缓存存储器子系统。
节点110a至110d中的每一者连接到存储器130a至130d中的相应一者。处理节点内的存储器控制器120a至120d中的相应一者用于将处理节点连接到存储器130a至130d中的相应一者。存储器控制器120a至120d包括用于介接到存储器130a至130d的控制电路。另外,存储器控制器120a至120d包括用于使存储器请求排队的请求队列。存储器130a至130d包括任何合适的存储器装置。例如,在各种实施方案中,存储器130a至130d中的每一者包括一个或多个动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、静态RAM、双列直插式存储器模块(DIMM)、硬盘、固态驱动器等。
计算系统100的地址空间在存储器130a至130d之间划分。处理节点110a至110d中的每一者包括存储器映射,其用于确定哪些地址被映射到存储器130a至130d中的哪一者并且因此确定针对特定地址的存储器请求应被路由到处理节点110a至110d中的哪一者。在各种实施方案中,用于计算系统100内的地址的一致性点是连接到存储与所述地址对应的字节的存储器130a至130d中的一者的节点110a至110d中的一者内的存储器控制器120a至120d中的一者。然而,在其它实施方案中,不同部件被配置为充当一致性点。
处理节点110a至110d中的每一者包括用于与处理节点110a至110d中的其它节点通信的接口逻辑。另外,处理节点110a至110d中的每一者连接到一个或多个输入/输出(I/O)装置和/或I/O总线,为了易于说明起见而未示出所述I/O装置和/或I/O总线。在各种实施方案中,计算系统100实施用于节点间通信的基于数据包的链路。在所描绘的实施方案中,链路被示出为节点110a至110d之间的双向线路。在其它实施方案中,节点110a至110d中的一者或多者通过网络(诸如LAN、WAN、WiFi连接、以太网、光纤通道、因特网等)连接到节点110a至110d中的其它节点。
跨链路传输的数据包包括消息、命令、请求和探针。节点110a至110d之间的链路以高速缓存一致方式进行操作。请注意,虽然节点110a至110d中的每一者被示出为直接连接其它节点110a至110d中的所有其它节点,但是在其它实施方案中,没有去往所有其它节点的直接连接。在此类实施方案中,从一个处理节点传输到另一个处理节点的数据包通过一个或多个中间节点。计算系统100采用任何合适的流控制机制和算法来传输数据包。
在各种实施方案中,节点110a至110d中的每一者内的一个或多个处理器连接到高速缓存层次结构的一个或多个层级以便减少处理器的数据请求的等待时间。一般来说,高速缓存存储一个或多个数据块,所述数据块中的每一者对应于存储在系统存储器中的对应地址处的数据。如本文所使用,“块”是存储在连续存储器位置中的一组字节,其出于一致性目的而被视为一个单元。在一些实施方案中,块是高速缓存中的分配和回收单元。一个块中的字节数目根据设计选择而变化。作为示例,经常使用32字节和64字节块。如本文所使用,术语“数据块”、“高速缓存线”和“高速缓存块”在以下对各种实施方案的描述中可互换地使用。
由于计算系统100的地址空间在存储器130a至130d之间划分,因此给定数据块的地址被映射到节点110a至110d中的特定一者。这个特定节点被视为给定数据块的“归属”节点。当给定数据块的有效副本以修改(M)、排他(E)或拥有(O)一致性状态存储在节点110a至110d中的另一个节点中时,该另一个节点被称为“拥有者”节点。例如,给定块的地址被映射到节点110a,这使得节点110a成为给定块的归属节点。然而,如果节点110b请求给定块的排他性副本、接收所请求的副本并且将给定块的副本存储在存储器130b中,则节点110b是给定块的拥有者节点。
在各种实施方案中,待由节点110a至110d中的处理器执行的工作对应于一个或多个进程,每个进程由一个或多个线程组成。在各种实施方案中,在计算系统100中跨链路发送的数据包用于同步对数据块的访问。
在各种实施方案中,锁的指示(例如,对数据块当前被锁定或解锁的指示)存储在数据块的数据内。在一些实施方案中,锁的指示是数据块的数据内的单个位。在其它实施方案中,锁的指示是数据块的数据内的字节。例如,在一个实施方案中,字节与测试和设置指令类型一起使用。数据块的数据内的用于锁的指示的其它数据大小也是有可能的并且被预期。在一些实施方案中,锁的拥有者的指示也存储在数据块的数据内。在其它实施方案中,软件机制从给定块内的数据外部确定锁的拥有者。例如,软件机制使用存储在其它地方的线程标识符(ID)来确定锁的拥有者。
如上所述,给定块最初被分配给归属节点。在一个示例中,节点110a是计算系统100中的用于给定块的归属节点。稍后,节点110b向节点110a请求给定块。在一些实施方案中,来自节点110b的请求包括根据高速缓存一致性协议的用于给定块的所请求高速缓存一致性状态的指示。
在各种实施方案中,在计算系统100中使用MOESI高速缓存一致性协议。在此类实施方案中,计算系统100中的每个高速缓存线处于五个高速缓存一致性状态中的一者。这五种状态包括修改(M)状态,其指示存储高速缓存线的副本的高速缓存具有高速缓存线的仅有有效副本并且已经对副本进行更改。拥有(O)状态指示存储高速缓存线的副本的高速缓存是具有高速缓存线的有效副本的多个高速缓存中的一者,但是所述高速缓存具有对其高速缓存线副本进行更改的排他性权限。排他(E)状态指示存储高速缓存线的副本的高速缓存具有高速缓存线的仅有有效副本并且尚未对副本进行任何更改。共享(S)状态指示存储高速缓存线的副本的高速缓存是具有高速缓存线的有效副本的多个高速缓存中的一者,但是所述高速缓存没有权限修改副本。无效(I)状态指示高速缓存未存储高速缓存线的有效副本。
在其它实施方案中,在计算系统100中使用其它高速缓存一致性协议。例如,在计算系统100中使用MSI、MESI、MESIF和MOESIF高速缓存一致性协议。MESIF和MOESIF协议使用转发(F)状态来指示存储高速缓存线的副本的高速缓存充当对用于给定线的任何请求的指定响应者。所述协议确保,如果任何高速缓存将高速缓存线保持在共享(S)状态,则最多有一个其它高速缓存将高速缓存线保持在转发(F)状态。在高速缓存一致性协议中不使用拥有(O)状态的实施方案中,针对给定块使用共享(S)状态。一般来说,本文所描述的方法和机制不限于任何特定高速缓存一致性协议。
如图1所示,给定块内的数据包括锁的指示(“L”)。如本文所使用,在给定块的数据内设置锁是指在给定块的数据内断言锁位、将给定块的数据内的用于指示锁的字节修改为指示设置锁或锁定状态的值等等。类似地,在给定块的数据内复位锁是指在给定块的数据内取消断言锁位、将给定块的数据内的用于指示锁的字节修改为指示复位锁或解锁状态的值等等。
由于锁的指示在给定块本身的数据内,因此数据的读取还包括关于数据是否被锁定的指示。这样,读取给定块的数据以便读取锁的指示。换句话说,执行对给定块的数据的读取以检查、检验或读取给定块的数据内的锁的指示。请注意,当节点内的处理器正在给定块的数据内设置或复位锁时,保证修改操作在节点处理来自另一节点的外部探针或其它读取请求之前完成。在给定块内的数据的内部修改与外部探针请求之间强制排序避免了实时锁定情况。
在各种实施方案中,可以不包括用于设置或复位锁的特殊指令。相反,设置或复位锁是响应于使用用于修改(或获得许可来修改)给定块内的数据的请求来进行的。此类请求包括写入请求、意图修改的读取请求等等。因此,在此类实施方案中,写入请求或意图修改的读取请求被视为“锁请求”。在其它实施方案中,可以包括用于设置或复位锁的特殊指令。在给定实施方案中,任一者和/或两者都是有可能的。
对于来自节点110b的对给定块的请求,在一些实施方案中,所述请求指示(显式地或隐式地)用于接收呈一致性协议的修改(M)状态的给定块的副本的请求。如图所示,给定数据块存储在拥有者节点(节点110b)的本地高速缓存150中。如图所示,数据块包括由“值”指示的数据值,以及锁指示“L”。在这个实施方案中,锁的指示在给定块的数据内。在一种情况下,拥有者节点(节点110b)准备好复位(释放)锁,这就是为什么它请求对给定块的排他性访问。如前所述,复位锁包括解除断言给定块的数据内的锁位、将给定块的数据内的用于指示锁的字节修改为指示复位锁或解锁状态的值等等。
在给定场景中,给定块的归属节点(节点110a)在所述给定块被另一个节点拥有时接收一个或多个用于访问所述给定块的请求。在各种实施方案中,访问请求显式地或隐式地为锁获取请求。响应于所接收到的锁获取请求,归属节点(节点110a)被配置为请求拥有者节点(节点110b)向归属节点返回给定块的副本。归属节点(节点110a)在转发缓冲器160中分配条目以存储给定块的返回副本。如图所示,转发缓冲器160包括数据的副本,所述副本包括数据值“值”的副本和锁的指示“L”的副本。归属节点(节点110a)将转发缓冲器160中的数据的副本转发给请求访问给定块的每个节点。
现在转到图2,示出广义序列图的一个实施方案,其示出当给定数据块当前由另一个节点(节点1-110b)拥有时归属节点(110a)从一个节点接收对给定数据块的读取请求。在所示的示例中,先前描述的电路和逻辑被相同地编号。例如,再次示出节点110a至110d。类似地,节点110c被示出为节点2,并且节点110d被示出为节点3。节点110a被称为归属节点。请注意,此处所提供的序列图是为了易于论述而提供的,且并非意图指示事件的严格定序。相反,一些事件可以同时发生,并且可以按不同次序发生。
在时间t0处,归属节点从节点2(110c)接收读取请求,所述读取请求被视为锁请求。读取请求指示对应于给定数据块的地址。当节点110b当前是所请求数据块的拥有者时,归属节点在时间t0处接收读取请求。例如,拥有者节点(节点1)在其本地高速缓存中存储有给定数据块的副本并且还存储有所述块的高速缓存一致性状态的指示。
响应于在时间t0处接收到请求,归属节点搜索目录类型数据结构以确定节点1当前是所请求块的拥有者节点。此外,归属节点维持给定数据块的所接收读取请求的计数并且响应于所述请求而使计数递增。在各种实施方案中,当给定数据块的读取请求命中给定数据块的先前待决读取请求时,归属节点使给定数据块的读取请求的计数递增。如果接收到读取请求并且计数尚未达到给定阈值,则归属节点通过确定哪个节点是当前拥有者来处理所接收的请求并且向拥有者节点发送命令。所述命令指示拥有者节点向请求节点2发送给定数据块的副本。相反,如果接收到读取请求并且计数达到(或已经达到)阈值,则归属节点以不同方式处理对给定数据块的请求。例如,归属节点本身可以从本地转发缓冲器向请求节点2发送给定数据块的副本,而不是请求拥有者节点向请求节点2转发给定数据块的副本。
如下面将更详细地论述,为了使归属节点将给定数据块的副本存储在其本地转发缓冲器中,归属节点首先向拥有者节点请求给定数据块的副本。在一些实施方案中,当归属节点所维持的计数达到给定阈值时,归属节点存储指示达到给定阈值的指示。例如,所存储的指示是指示不同模式将用于处理针对给定数据块的所接收读取请求的旗标(例如,模式指示符)。在其它实施方案中,每当接收到请求时,归属节点简单地检验计数以确定是否已经达到给定阈值。在此类实施方案中,使用计数本身与阈值的比较来确定模式。在一些实施方案中,当接收到针对给定数据块的写入请求或锁释放请求时,归属节点复位计数。在图2所示的示例中,在时间t0处接收到读取块请求时,用于给定数据块的计数已经达到给定阈值。归属节点还被配置为搜索其转发缓冲器,诸如先前转发缓冲器160,以确定其是否具有所请求数据块的副本。在一些实施方案中,归属节点在搜索目录之前首先搜索转发缓冲器。
在时间t1处,归属节点向拥有者节点发送命令,所述命令指示拥有者节点向归属节点发送给定数据块的副本。此外,从归属节点发送的命令指示拥有者节点针对其数据块的副本存储“拥有”的高速缓存一致性状态。
在时间t2处,拥有者节点向归属节点发送给定数据块的副本。在这种情况下,拥有者节点不向请求节点(节点2)发送数据块的副本。在时间t3处,归属节点接收给定数据块的副本并且将其存储在转发缓冲器(例如,先前论述的转发缓冲器160)中。请注意,转发缓冲器可以是多种存储位置中的任一者。例如,在一个实施方案中,转发缓冲器是被分配为存储用于转发目的的值的高速缓存的一部分。替代地,在另一个实施方案中,转发缓冲器是被分配为存储用于转发目的的值的一组寄存器。此外,转发缓冲器可以被实施为随机存取存储器(RAM)数据结构、内容可寻址存储器(CAM)数据结构等。在一些实施方案中,给定数据块尚未被写回到系统存储器,诸如先前存储器130a。在其它实施方案中,给定数据块被写回到系统存储器,同时副本保留在转发缓冲器中。
在时间t4处,归属节点向节点2发送所接收数据块的副本。在时间t5处,节点2以高速缓存一致性协议(例如,MOESI)的共享(S)一致性状态存储给定数据块的副本(例如,在其一个本地高速缓存中)。在时间t6处,节点2检查给定数据块的数据并且发现锁位被复位(即,数据未被锁定)。因此,给定数据块可用于被锁定。节点2修改给定数据块的数据以设置锁。如前所述,在一些实施方案中,设置锁包括在给定块的数据内断言锁位。替代地,在其它实施方案中,设置锁包括修改给定块的数据内的锁字节以指示设置的锁。给定数据块现在被认为是锁定的。
在时间t7处,节点3向归属节点发送对数据块的读取请求。同样,归属节点接收请求并且确定归属节点当前不拥有给定数据块,而是拥有者节点当前拥有给定数据块。在时间t8处,归属节点从其转发缓冲器向请求给定数据块的节点3发送给定数据块的副本。在时间t9处,节点3以共享(S)一致性状态将给定数据块的副本存储在其一个本地高速缓存中。在时间t10处,节点3检查给定数据块的数据并且发现锁位被设置。节点3在给定数据块被锁定时不能使用给定数据块。因此,节点3等待并且在等待使用给定数据块的同时周期性地重新检验所述给定数据块的数据。请注意,在各种实施方案中,在将数据块存储在本地高速缓存中之前,节点检查数据的锁位。
假如一个或多个额外节点针对给定数据块向归属节点发送请求(锁读取请求或仅仅读取请求),则归属节点将所述块的副本从其转发缓冲器传送到每个请求者。这样,归属节点不与拥有者节点就所接收到的请求进行通信。稍后,拥有者节点将给定数据块写回到归属节点并且使存储在拥有者节点处的副本无效。
如上所述,访问请求的计数由归属节点维持。在各种实施方案中,当在归属节点处接收到对应于给定数据块的写入请求或锁释放请求时,复位用于给定数据块的读取请求计数。另外,如果此类操作尚未发生,则指示拥有者节点将给定数据块返回到归属节点,使得归属节点执行任何所请求的修改并且将更新的给定数据块的副本存储在其系统存储器(诸如计算系统100中的先前存储器130a)中。
接下来转到图3,示出存储器控制器200的一个实施方案。存储器控制器200用于实施上述序列步骤以用于处理来自多个源(诸如来自除归属节点之外的节点的多个线程)的对相同给定地址的一系列读取请求。例如,当满足特定条件时,存储器控制器200用于将给定块存储在转发缓冲器中。此外,存储器控制器200将给定块从转发缓冲器直接发送到请求节点,而不是指示拥有者节点将其副本转发到请求节点。来自归属节点的直接转发减少了用于向请求节点发送给定块的副本的跳跃或中间节点的数目。
在图3的实施方案中,存储器控制器200包括数据包接口210、请求队列220、存储器访问控制逻辑230、一致性控制逻辑240、计数器242以及转发缓冲器250。数据包接口210通过网络或其它接口从其它节点接收命令数据包。在一些实施方案中,数据包接口210包括在用于与其它节点通信的网络接口或其它接口内。
数据包接口210被耦接以将所接收到的命令数据包发送到请求队列220。如果命令数据包所指示的地址对应于存储器中的与存储器控制器200相关联的存储器位置,则命令数据包被路由到存储器控制器200。换句话说,如果命令数据包的地址寻址连接到存储器控制器200的存储在存储器中的块,则命令数据包被路由到存储器控制器200。一旦存储在请求队列220中的相应数据包被处理,就准备响应数据包。在此类情况下,数据包接口210还向其它节点发送响应数据包。
当被接收时,存储器控制器200将命令数据包信息排队在请求队列220中,并且随后处理所述命令。响应于接收到数据包,将请求队列220中的可用条目分配给所接收到的数据包。如图所示,每个条目存储节点标识符(ID)、线程ID、命令的指示、对应于命令的地址、年龄的指示(例如,接收的时间)和状态信息中的一者或多者。
请求队列220中的状态信息包括数据大小、有效条目的指示、命令的优先级、用于存储对应命令的结果数据的字段、标识存储结果数据的另一队列中的位置的指针、命令是否被成功处理的指示等中的一者或多者。虽然请求队列220的条目中的字段被示出为以特定次序且以连续方式存储,但是存储布置的其它组合也是有可能的并且被预期。
在一些实施方案中,所有命令数据包按照它们被接收的次序来被处理。在其它实施方案中,对于指向相同地址的命令数据包,需要按序处理数据包。在此类情况下,指向不同地址的数据包可以相对于那些数据包被无序地处理。在另一些实施方案中,命令数据包以由优先级、命令类型、年龄的指示(诸如时间戳或队列中的位置)、地址、数据大小、线程ID、节点ID等中的一者或多者确定的次序来被处理。
存储器访问控制逻辑230包括与请求队列220和连接到存储器控制器的存储器中的每一者介接的逻辑和存储寄存器。例如,如果存储器控制器200是先前描述的用于节点110a的存储器控制器120a,则存储器是存储器130a。存储器访问控制逻辑230在相关联一致性操作已经被传输并且从其它节点接收到任何响应之后执行命令。如果命令是读取操作,则从存储器返回数据以存储在数据包接口210、请求队列220、转发缓冲器250(当满足特定条件时)或被指定用于存储结果数据的另一队列(未示出)中的一者中的响应数据包中。请注意,存储器访问控制逻辑230内的逻辑以硬件、软件(诸如固件)或组合来实施。
一致性控制逻辑240包括与请求队列220、用于将探针指向其它节点的任何目录类型结构、用于相关联节点的高速缓存存储器子系统以及转发缓冲器250中的每一者介接的逻辑和存储寄存器。类似于存储器访问控制逻辑230,一致性控制逻辑240内的任何逻辑以硬件、软件(例如固件)或组合来实施。
一致性控制逻辑240被配置为确保存储在请求队列220中的命令数据包根据高速缓存一致性协议以一致方式来被处理。如果对于给定命令需要探针,则一致性控制逻辑240向数据包接口210传输对应指示。例如,所述指示包括对应命令的源节点、地址、命令类型和其它信息。数据包接口210响应于从一致性控制逻辑240接收到探针的指示而传输探针命令。一致性控制逻辑240进一步从数据包接口210接收指示对应事务已经完成的数据包,并且接收用于写入命令的探针响应。
如先前论述,在各种实施方案中,节点包括用于确定哪些地址映射到哪个系统存储器并且因此确定对特定地址的存储器请求应路由到计算系统中的哪个节点的目录。所述目录包括多个条目,包括存储器映射,或者与存储器映射结合使用。目录中的为给定块分配的条目指示存储器中的给定块具有存储在高速缓存中的副本。所述高速缓存位于同一节点或另一个节点中。目录中的分配条目指示给定块的高速缓存一致性状态(诸如给定块的拥有者)、所述块是否在给定模式下被修改和/或具有给定块的共享副本的节点。
在各种实施方案中,对应于在目录中具有分配条目并具有共享(S)一致性状态的给定块的读取操作不需要探针命令来使给定块的其它副本无效。然而,具有S一致性状态的给定块的写入操作将需要探针命令来致使其它处理节点中的其它副本无效。因此,目录和一致性控制逻辑240被配置为检测这种场景,并且生成待经由数据包接口210发送的适当探针。对于在目录中具有分配条目的给定块的一致性状态的读取和写入操作的其它场景也是有可能的并且被预期。在一些实施方案中,在目录中没有分配条目意味着给定块没有存储在与目录相同的节点内的高速缓存中。
如图所示,一致性控制逻辑240包括一个或多个计数器242。在各种实施方案中,计数器242被复位为零并且被分配给对应于存储在请求队列220中的所接收读取请求的给定地址。针对用于给定地址的每个后续读取请求,使计数器242中的所分配计数器递增。例如,请求队列220中所示的第二条目存储用于地址0x100的锁读取请求。地址中的“0x”指示十六进制值。如图所示,锁读取请求是来自正在节点2上进行处理的线程58。请求队列220中的第三条目也存储用于地址0x100的锁读取请求。这个后续读取请求是来自正在节点3上进行处理的线程14。
在一些实施方案中,当接收到来自节点2的第二读取请求时,使计数器242中的被分配给地址0x100的给定计数器递增。针对用于地址0x100的每个后续读取请求,是计数器递增。当接收到用于地址0x100的写入请求或锁释放请求时,针对地址0x100复位计数器且/或使其无效。例如,请求队列220的第一条目中的第一读取请求是用于释放锁的排他性读取请求。响应于检测到这个读取请求而复位用于地址0x100的计数器。当针对地址0x100检测到请求队列220的第二条目中的第二读取请求时,将计数器分配给地址0x100并且设置为0或递增到1。
当针对地址0x100检测到请求队列220的第三条目中的第三请求时,使计数器242中的所分配计数器递增。用于地址0x100的每个后续读取请求或锁读取请求致使所分配计数器被递增。在一些实施方案中,计数器是非重叠计数器。
请求队列220所示的最后一个条目中的读取请求是用于释放锁的另一个排他性读取请求。响应于检测到这个读取请求而复位用于地址0x100的计数器。在达到这个特定读取请求之前,计数器242中的所分配计数器已经达到相对较高数字。例如,多达64个线程可能已经向存储器控制器200发送对应于地址0x100的读取请求或锁读取请求。当给定计数器超过阈值时,存储器控制器200改变对应于所分配地址(诸如上述示例中的地址0x100)的读取请求的处理。在各种实施方案中,阈值是可编程值。当计数器超过阈值时,存储器控制器200使用先前在图2中描述的上述序列步骤。例如,节点中的存储器控制器200将对应于地址0x100的块的副本存储在转发缓冲器250中。转发缓冲器250包括多个条目。转发缓冲器中的每个条目包括地址的指示、对应于地址的块的副本或标识存储块的数据的另一队列中的位置的指针以及状态信息中的一者或多者。状态信息包括有效条目的指示、数据的优先级等中的一者或多者。如果对应于所述地址的块的副本存储在转发缓冲器250的条目中,则块内的数据还包括锁的指示。所述指示在条目中示出为“L”。
存储器控制器200使用目录来确定给定块的副本是在归属节点中还是在另一节点中。基于这个确定,存储器控制器200从连接到存储器控制器200的系统存储器或从另一节点分配转发缓冲器中的条目。在一些实施方案中,如果使用另一节点来填充转发缓冲器,则指示所述另一节点将其给定块的高速缓存副本的一致性状态改变为拥有(O)一致性状态。当读取请求和锁读取请求被接收并存储在请求队列220中时,直接从转发缓冲器250服务于这些请求。请求节点被指示在其相应高速缓存存储器子系统中以共享(S)一致性状态安装来自转发缓冲器250的给定块的副本。
现在参考图4,展示示出用于处理对归属节点的多个读取请求的序列图的另一实施方案的广义框图。先前描述的电路和逻辑被相同地编号。如图所示,当节点1先前拥有给定块并锁定给定块时使用一系列步骤,但是节点1现在完成了其在锁定状态下使用给定块的操作并且准备好释放给定块上的锁。在时间t0处,节点1向归属节点发送请求。所述请求是用于对给定块的排他性访问的读取请求。排他性访问将允许节点1修改给定块内的数据并且复位锁。
在时间t1处,归属节点确定给定块没有单独拥有者。例如,归属节点已经搜索目录,但是没有找到用于给定块的地址的所分配条目,这指示给定块未以拥有状态存储在本地高速缓存或远程高速缓存中。替代地,归属节点可以在目录中找到所分配条目,这指示给定块的一个或多个副本以共享(S)一致性状态存储在其它节点中的高速缓存中。结果,在时间t2至t3处,归属节点访问其存储器,诸如DRAM等,以获得给定块的副本。
请注意,在其它示例中,如果归属节点确定给定块的副本以拥有(O)或排他(E)一致性状态位于另一节点中并且归属节点确定用于给定数据块的读取请求的计数尚未超过阈值,则归属节点指示所述另一节点将副本发送到归属节点并使所述另一节点处的本地副本无效。
在时间t4处,归属节点存储节点1是给定块的拥有者节点的指示。所述指示存储在目录的所分配条目中。在时间t5处,归属节点向请求节点1发送给定块的副本。此外,归属节点向其它节点(诸如具有处于共享(S)状态的块的副本的节点2至3)发送命令数据包以指示所述节点使给定块的任何副本无效。
在时间t6处,节点1将给定块的副本以排他(E)一致性状态安装在本地高速缓存中并且修改数据以复位锁。例如,节点1可以在给定块的数据内解除断言锁指示。节点1还将一致性状态从排他(E)修改为修改(M)。节点2和3还将块的状态从共享改变为无效。
图5描绘用于处理对归属节点的多个读取请求的序列图。如图所示,在以上在图4中描述的时间t0至t6处的一系列步骤之后使用时间t7至t13处的一系列步骤。先前描述的电路和逻辑被相同地编号。
在时间t7处,将一系列锁读取请求发送到归属节点。如图所示,节点2和3向归属节点发送锁读取请求以获得对在图4中的时间t6处的先前步骤中成为无效的块的访问。虽然示出仅2个节点发送锁读取请求,但是在其它实施方案中,在计算系统中使用也向归属节点发送锁读取请求的其它数目个节点。
在时间t8处,归属节点110a存储所接收到的锁读取请求。例如,如前所述,请求队列用于存储请求。虽然示出了锁读取请求,但是接收锁读取请求与标准读取请求的任何组合。如先前论述,分配计数器以跟踪对应于所述块的请求的数目。在所示的示例中,来自节点2的锁读取请求先于用于给定块的其它请求被接收。在时间t9处,归属节点将给定块的拥有权从节点1更新到节点2。另外,在一些实施方案中,使所分配的计数器递增。
在时间t10处,归属节点向节点1发送命令数据包,所述命令数据包指示节点1向节点2发送给定块的副本。在时间t11处,节点1处理所接收到的命令数据包,并且向节点2发送给定块的副本。在时间t12处,节点1使其给定块的副本无效。节点2接收给定块的副本,并且将其以排他(E)一致性状态安装在本地高速缓存中。在时间t13处,节点2读取给定块的数据,并且发现给定块被解锁或可用。
现在转到图6,示出用于在多节点计算系统中处理读取和写入请求的序列图。先前描述的电路和逻辑被相同地编号。如图所示,在先前在图5中描述的时间t8至t13处的一系列步骤之后呈现在时间t14至t19处的一系列步骤。
在确定满足条件之后使用时间t14至t19处的一系列步骤来改变锁请求和锁释放请求的处理以便减少用于服务一系列锁读取请求的跳跃的数目。一个或多个标准读取请求也可以与锁读取请求混合。
响应于确定所接收的块未被锁定(在图5的时间t13处),节点2通过修改给定块内的锁指示来设置锁。在时间t13处,节点2还将给定块的一致性状态从排他(E)转变为修改(M),因为所述块的数据(尽管它可能仅仅是锁指示)已经被修改。接着处理归属节点中的请求队列中的下一个锁读取请求。所述下一个锁读取请求来自节点3。响应于处理节点3的锁读取请求(在时间t7处接收),在时间t15处归属节点将给定块的拥有权从节点2更新到节点3。在一些实施方案中,还使用于对应地址的所分配计数器递增。此外,归属节点确定所分配计数器尚未超过可编程阈值。作为响应,在时间t16处,归属节点向节点2发送命令数据包,所述命令数据包指示节点2向节点3发送给定块的副本。
在时间t17处,节点2处理所接收的命令数据包,并且将给定块的副本发送到节点3。在时间t18处,节点2使其给定块的副本无效。节点3接收给定块的副本,并且将其以排他(E)一致性状态安装在本地高速缓存中。在时间t19处,节点3读取给定块的数据,并且发现给定块被锁定或不可用。作为响应,节点3等待,因为其还不能使用给定块的数据。
对于来自节点3的锁读取请求,使用最少3个跳跃来处理所述请求。第一跳跃用于将锁读取请求从节点3发送到归属节点。这个第一跳跃对应于图5中的先前时间t7。第二跳跃用于将命令数据包从归属节点发送到节点2。这个第二跳跃对应于先前时间t16。第三跳跃用于将给定块的副本从节点2发送到节点3。这个第三跳跃对应于先前时间t17。这个协议对应于所分配计数器尚未超过可配置阈值的场景。然而,当归属节点处的所分配计数器超过阈值时,用于处理锁读取请求的最小跳跃数目从3个跳跃减少到2个跳跃。
在各种实施方案中,当所分配计数器超过阈值时,归属节点将给定块的副本存储在转发缓冲器中,如前所述。当处理存储在请求队列中的锁读取请求时,归属节点直接将给定块的副本转发给请求节点。没有向另一个节点发送探针或命令数据包,所述探针或命令数据包指示所述另一个节点向请求节点发送给定块的副本。例如,如果用于节点3的锁读取请求已经致使所分配计数器超过可配置阈值,则归属节点可能已经将给定块的副本直接转发到节点3而不在任何步骤中包括节点2。这样,第一跳跃仍然用于将锁读取请求从节点3发送到归属节点。这个第一跳跃仍然对应于图4中的先前步骤8。然而,现在使用第二跳跃将给定块从归属节点的转发缓冲器转发到节点3。使用最少2个跳跃而不是3个跳跃。
图7示出了用于当请求数目已经满足或超过可编程阈值时在多节点计算系统中处理读取和写入请求的实施方案。先前描述的电路和逻辑被相同地编号。如图所示,在先前在图4中描述的时间t0至t6处的一系列步骤之后使用编号为t37至t45的一系列步骤。在其它节点处使给定块的共享副本无效之后发生在时间t37至t45处的步骤。
在时间t37处,归属节点从其它节点(诸如节点2至3)接收一系列锁读取请求。如图所示,节点2至3向归属节点发送锁读取请求以获得对在图4的时间t6处的先前步骤中为无效的给定块的副本的访问。此外,拥有者节点(在这个示例中为110b)通过修改给定块内的数据来复位锁,并且将一致性状态设置为修改(M)。
随后,在时间t38处,归属节点存储所接收的锁读取请求。在给定场景中,对对应于给定块的地址的先前读取请求可能已经是复位给定块的数据内的锁的排他性读取请求。在先前描述的时间t0至t6处的一系列步骤期间处理这个读取请求。对应于同一地址的第二读取请求是在时间t37处来自节点2的锁读取请求,如图7所示。在一些实施方案中,这个锁读取请求致使所分配的计数器超过阈值。现在,在各种实施方案中,不是向节点1发送指示节点1在将其给定块的本地副本发送到节点2之后使其本地副本无效的命令数据包,而是归属节点发送不同类型的命令数据包。
在时间t39处,归属节点向节点1发送命令,所述命令指示节点1向归属节点而不是向节点2发送给定块的副本。在时间t40处,节点1处理所接收的命令,并且将给定块的一致性状态从修改(M)转变为拥有(O)。在时间t41处,节点1向归属节点发送给定块的副本。在时间t42处,归属节点将给定块的所接收副本存储在转发缓冲器中。
归属节点进一步更新给定块的目录条目以指示节点1是拥有者节点。在一些实施方案中,归属节点还将所接收的给定块的副本写入到其系统存储器,诸如先前描述的存储器130a。在各种实施方案中,如果节点1在复位锁之后完成给定块,则节点1还向归属节点发送节点1处的本地副本正在变为(或已经变为)无效的指示。在此类情况下,归属节点不会将节点1拥有所述块的指示存储在目录中。如果节点1尚未完成其给定块的副本,则其维持其复本具有拥有(O)一致性状态。
在时间t43处,归属节点直接将给定块的副本从其转发缓冲器转发到节点2。节点2接收给定块的副本。如来自归属节点的数据包所指示,节点2将给定块以共享(S)一致性状态安装在本地高速缓存中。在时间t44处,节点2读取给定块的数据,并且发现给定块被解锁或可用。作为响应,节点2在时间t45处修改数据以在给定块的数据内设置锁。节点2接着鉴于这个修改而将给定块的一致性状态从排他(E)转变为修改(M)。
图8示出在图7的步骤之后的时间点处对锁读取请求的处理。如图所示,在先前在图7中描述的时间t37至t45处的一系列步骤之后使用时间t46至t49处的一系列步骤。在时间t46处,处理归属节点中的请求队列中的下一个锁读取请求。所述下一个锁读取请求来自节点3,因为来自节点1至2的先前读取请求已经被处理。如果节点1没有使其给定块的副本无效,则归属节点维持节点1是给定块的拥有者节点的指示。在这个示例中,所分配的计数器已经超过阈值。
在时间t46处,归属节点访问其转发缓冲器。在时间t47处,归属节点直接将给定块的副本从其转发缓冲器转发到节点3。节点3接收给定块的副本,并且按照来自归属节点的数据包的指示,在时间t48处,节点3将给定块以共享(S)一致性状态安装在本地高速缓存中。在时间t49处,节点3读取给定块的数据,并且发现给定块被锁定或不可用。作为响应,节点3等待,因为其还不能使用给定块的数据。
现在转到图9,示出用于在多节点计算系统中处理一系列读取请求的方法900的一个实施方案。出于论述目的,在本实施方案中按顺序示出步骤。然而,在其它实施方案中,一些步骤以与所示次序不同的次序发生,一些步骤同时执行,一些步骤与其它步骤组合,并且一些步骤不存在。
在框902中,多节点计算系统中的归属节点确定其有读取请求要处理。在各种实施方案中,归属节点包括存储所接收请求的请求队列。此外,归属节点被配置为保持对给定块的读取请求计数。例如,在一些实施方案中,计数与块的目标地址相关联,并且在接收到对块的请求时递增。在各种实施方案中,当检测到对对应于地址的块的写入请求或锁释放请求时复位计数。
在所示的示例中,如果尚未超过对地址的读取请求的阈值数目(条件框904),则在框906中使对地址的读取请求的计数递增。在框908中,针对请求节点处理读取请求(或最早的待决读取请求)。在一些实施方案中,所请求的数据被发送到请求节点。所请求的数据已经从归属节点的本地高速缓存、归属节点的系统存储器或者当前正在存储所请求的数据的副本的另一个节点的高速缓存中检索出来。在后一种情况下,从归属节点向所述另一个节点发送命令(例如,探针请求或其它消息)以指示所述另一个节点将数据转发到请求节点。
如果已经满足(例如,根据实施方案,等于或超过)所述地址的读取请求的阈值数目(条件框904),并且在归属节点的转发缓冲器中存在命中(条件框910),则在框912中,将所请求的数据从缓冲器转发到请求节点。如果在归属节点的缓冲器中存在未命中(条件框910),则在框914中,归属节点向拥有者节点发出请求以将所请求的数据发送到归属节点而不是将其发送到请求节点。在框916中,归属节点等待所请求的数据返回,并且当其确实返回时,将其存储在归属节点的转发缓冲器中。之后,方法900的控制流移动到框912,在该处归属节点将数据的副本转发到请求节点。
在框930中,归属节点确定其有写入请求或锁释放请求要处理。在框932中,归属节点确定对应于所述请求的地址,并且复位所述数据的读取请求计数(如果有的话)。先前,由于计数超过阈值,归属节点可能一直针对对应于所述地址的读取请求将数据从转发缓冲器转发到请求节点。然而,在复位计数后,归属节点即刻停止针对对应于所述地址的读取请求使用转发缓冲器。在框934中,归属节点处理写入请求或锁释放请求。
参考图10,示出示例性处理节点1000的一个实施方案。在一些实施方案中,处理节点1000的所示功能性被并入在单个集成电路上。处理节点1000被用作先前描述的多节点计算系统中的一个或多个节点。处理节点1000包括一个或多个处理单元1015,每个处理单元包括一个或多个处理器核心1012和相关联的高速缓存存储器子系统1094。在各种实施方案中,处理器核心1012利用通用微架构。
在一个实施方案中,处理器核心1012包括用于根据预定义通用指令集执行指令的电路。例如,选择指令集架构(ISA)。替代地,选择x86、或任何其它指令集架构。通常,处理器核心1012分别访问高速缓存存储器子系统1094以获取数据和指令。如果在高速缓存存储器子系统1094或共享高速缓存存储器子系统1098中未找到所请求的块,则生成读取请求并且将其传输到丢失块所映射到的节点内的存储器控制器1020。高速缓存存储器子系统1094集成在相应处理器核心1012内。高速缓存存储器子系统1094和共享高速缓存存储器子系统1098两者均包括耦接到对应高速缓存控制器的高速缓存存储器。
处理节点1000还包括一个或多个处理单元1070,其包括一个或多个处理器核心1072和数据存储缓冲器1074。在各种实施方案中,处理器核心1072不是处理器核心1012的镜射硅图像。而是,处理器核心1072可以具有与处理器核心1012所使用的微架构不同的微架构。在一些实施方案中,处理器核心1072包括为计算密集型任务提供高指令吞吐量的微架构。在一些实施方案中,处理器核心1072具有并行架构。例如,在一些实施方案中,处理器核心1072是基于单指令多数据(SIMD)的核心。SIMD核心的示例包括图形处理单元(GPU)、数字信号处理(DSP)核心等。在一个实施方案中,处理节点1000包括单个指令集架构(ISA)。
至少部分地基于处理器核心1012和1072的运行时硬件资源,以每个线程具有最高指令吞吐量的方式在处理器核心1012和1072中的一者上调度软件应用程序的线程。在一些实施方案中,处理单元1070是图形处理单元(GPU)。常规GPU利用极宽的单指令多数据(SIMD)架构以在高度数据并行应用中实现高吞吐量。每个对象独立于其它对象进行处理,但是使用相同的操作序列。
在一个实施方案中,单元1070集成在母板上。在另一个实施方案中,处理节点1000的所示功能性被并入在单个集成电路上。在此类实施方案中,作为CPU的单元1015和作为GPU的单元1070中的每一者是来自不同设计中心的专有核心。此外,GPU 1070能够经由存储器控制器120从处理节点1000直接访问本地存储器1094和1098以及主存储器,而不是经由接口1040在片外执行存储器访问。这个实施方案可以降低GPU 1070的存储器访问等待时间,这可以转化为较高性能。
通常,数据包处理逻辑1016被配置为对在处理节点1000所连接到的链路上接收到的控制数据包做出响应,响应于处理器核心1012及1072和/或高速缓存存储器子系统1094而生成控制数据包,且响应于存储器控制器1020选择来服务的事务而生成探针命令和响应数据包,并且通过接口逻辑1040将节点1000作为中间节点所针对的数据包路由到其它节点。在一些实施方案中,数据包处理逻辑1016可以被称为纵横开关。
接口逻辑1040包括用于接收数据包并且将数据包与数据包处理逻辑1016所使用的内部时钟同步的逻辑。接口逻辑1040还包括用于与一个或多个输入/输出(I/O)装置(1082)通信的逻辑。在一些实施方案中,接口逻辑1040直接与外部装置通信而不使用数据包处理逻辑1016、纵横开关或另一个部件。例如,网络消息直接在每个单元1015与网络接口卡1080之间传送,并且类似地在每个单元1070与网络接口卡1080之间传送。
在所示实施方案中,接口逻辑1040至少包括通用串行总线(USB)接口、去往存储装置的串行ATA总线接口、PCI Express(高速外围部件互连(PCIe))串行扩展总线接口、低引脚计数(LPC)总线、对等(P2P)直接存储器访问(DMA)控制器等。其它实施方案可以不包括一个或多个前述内容且/或可以包括其它装置或技术。
处理节点1000连接到网络接口卡(NIC)1080。NIC 1080包括用于跨网络与其它处理节点通信的电路和逻辑。例如,NIC 1080利用用于与物理层和数据链路层标准(诸如以太网、光纤通道、Wi-Fi或令牌环)通信的逻辑。NIC 1080允许与同一局域网(LAN)上的一群组近距离计算机通信。此外,NIC 1080允许跨网络与其它节点通信。NIC1080包括网络协议栈,诸如用于应用层的HTTP协议、用于传输层的TCP协议、用于互联网层的IP协议、用于数据链路层的以太网协议以及用于物理层的IEEE 802.3u协议。
请注意,一个或多个上述实施方案包括软件。在此类实施方案中,在计算机可读介质上传送或存储实施所述方法和/或机制的程序指令。被配置为存储程序指令的多种类型的介质是可用的,并且包括硬盘、软盘、CD-ROM、DVD、快闪存储器、可编程ROM(PROM)、随机存取存储器(RAM)以及各种其它形式的易失性或非易失性存储装置。一般来说,计算机可访问存储介质包括在使用期间能够由计算机访问以向计算机提供指令和/或数据的任何存储介质。例如,计算机可访问存储介质可以包括存储介质,诸如磁性或光学介质,例如磁盘(固定的或可移除的)、磁带、CD-ROM或DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或蓝光。存储介质进一步包括易失性或非易失性存储器介质,诸如RAM(例如,同步动态RAM(SDRAM)、双倍数据速率(DDR、DDR2、DDR3等)、SDRAM、低功率DDR(LPDDR2等)SDRAM、Rambus DRAM(RDRAM)、静态RAM(SRAM)等)、ROM、快闪存储器、能够经由诸如通用串行总线(USB)接口等外围接口访问的非易失性存储器(例如,快闪存储器)等。存储介质包括微机电系统(MEMS),以及能够经由诸如网络和/或无线链路等通信介质访问的存储介质。
另外,在各种实施方案中,程序指令包括使用高级编程语言(诸如C)或设计语言(HDL)(诸如Verilog、VHDL)或数据库格式(诸如GDS II流格式(GDSII))的对硬件功能性的行为级描述或寄存器传送级(RTL)描述。在一些情况下,所述描述由合成工具读取,所述合成工具合成描述以产生包括来自合成库的门列表的网表。网表包括一组门,这些门还代表包括系统在内的硬件的功能性。接着放置并路由网表以产生描述待应用于掩模的几何形状的数据集。接着在各种半导体制造步骤中使用所述掩模来产生对应于所述系统的一个或多个半导体电路。替代地,根据需要,计算机可访问存储介质上的指令是网表(具有或没有合成库)或数据集。此外,所述指令被来自诸如和Mentor等供应商的基于硬件式仿真器用于仿真目的。
虽然已经相当详细地描述了以上实施方案,但是一旦完全了解以上公开内容,各种变化和修改对于本领域的技术人员来说就将变得显而易见。希望所附权利要求被解释为涵盖所有此类变化和修改。
Claims (20)
1.一种方法,其包括:
将多个数据块存储在多个节点中的归属节点处;
在所述归属节点处从第一节点接收请求,所述请求是对访问所述多个数据块中的给定数据块的请求;
响应于确定所述给定数据块当前存储在第二节点处,所述归属节点:
从所述第二节点请求所述给定数据块的副本;
响应于从所述第二节点接收到所述给定数据块而将所述给定数据块的所述副本存储在所述归属节点处;以及
将所述给定数据块的所述副本从所述归属节点转发到所述第一节点。
2.根据权利要求1所述的方法,其中所述方法还包括将所述给定数据块的所述副本从所述归属节点转发到所述多个节点中的请求所述给定数据块的任何节点。
3.根据权利要求1所述的方法,其中响应于所述请求,所述方法还包括将存储在所述第二节点处的所述给定数据块的高速缓存一致性状态改变为拥有高速缓存一致性状态。
4.根据权利要求1所述的方法,其中响应于所述转发,所述方法还包括将所述给定数据块与对共享高速缓存一致性状态的指示一起存储在所述第一节点以及所述多个节点中的从所述归属节点接收所述给定数据块的转发副本的任何节点中的每一者中。
5.根据权利要求1所述的方法,其中所述方法还包括:
在所述归属节点处维持对所述给定数据块的读取请求数目的计数;并且
所述请求、存储和转发还响应于确定所述计数已经超过阈值。
6.根据权利要求5所述的方法,其中所述读取请求中的一者或多者是用于同步对所述给定数据块的访问的锁读取请求。
7.根据权利要求6所述的方法,其中所述方法还包括响应于接收到对所述给定数据块的写入请求或锁释放请求而复位所述计数。
8.根据权利要求2所述的方法,其还包括所述归属节点将所述给定数据块存储在缓冲器中,所述缓冲器用于将所述给定数据块的副本转发到请求所述给定数据块的节点,其中所述缓冲器与所述归属节点的系统存储器分开。
9.一种计算系统,其包括:
归属节点,其被配置为存储多个数据块;
第一节点,其被配置为生成对存储在所述归属节点处的数据块的访问请求;
第二节点,其被配置为生成对存储在所述归属节点处的数据块的访问请求;并且
其中响应于在所述归属节点处从所述第二节点接收到对访问所述给定数据块的请求以及确定所述给定数据块当前存储在所述第一节点处,所述归属节点被配置为:
从所述第一节点请求所述给定数据块的副本;
响应于从所述第一节点接收到所述给定数据块而将所述给定数据块的所述副本存储在所述归属节点处;以及
将所述给定数据块的所述副本从所述归属节点转发到所述第二节点。
10.根据权利要求9所述的计算系统,其中:
所述计算系统还包括多个节点,所述多个节点包括所述第一节点和所述第二节点;并且
所述归属节点还被配置为将所述给定数据块的所述副本从所述归属节点转发到所述多个节点中的请求所述给定数据块的任何节点。
11.根据权利要求9所述的计算系统,其中响应于所述请求,所述归属节点还被配置为将存储在所述第一节点处的所述给定数据的高速缓存一致性状态改变为拥有高速缓存一致性状态。
12.根据权利要求9所述的计算系统,其中响应于所述转发,所述归属节点还被配置为将所述给定数据块与对共享高速缓存一致性状态的指示一起存储在所述第二节点以及所述多个节点中的从所述归属节点接收所述给定数据块的转发副本的任何节点中的每一者中。
13.根据权利要求10所述的计算系统,其中所述归属节点还被配置为:
在所述归属节点处维持对所述给定数据块的读取请求数目的计数;并且
所述归属节点被配置为进一步响应于确定所述计数已经超过阈值而执行所述请求、存储和转发。
14.根据权利要求13所述的计算系统,其中所述读取请求中的一者或多者是用于同步对所述给定数据块的访问的锁读取请求。
15.根据权利要求14所述的计算系统,其中所述归属节点还被配置为响应于接收到对对应于所述给定数据块的给定地址的写入请求或锁释放请求而复位所述计数。
16.根据权利要求10所述的计算系统,其中:
所述归属节点还被配置为将所述给定数据块存储在缓冲器中,所述缓冲器用于将所述给定数据块的副本转发到请求所述给定数据块的节点;并且
所述缓冲器与所述归属节点的系统存储器分开。
17.一种存储程序指令的非暂时性计算机可读存储介质,其中所述程序指令能够由处理器执行以:
将多个数据块存储在多个节点中的归属节点处;
响应于在所述归属节点处从第一节点接收到请求,所述请求是对访问所述多个数据块中的给定数据块的请求,以及响应于确定所述给定数据块当前存储在第二节点处,致使所述归属节点:
从所述第二节点请求所述给定数据块的副本;
响应于从所述第二节点接收到所述给定数据块而将所述给定数据块的所述副本存储在所述归属节点处;以及
将所述给定数据块的所述副本从所述归属节点转发到所述第一节点。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中所述程序指令还可执行以将所述给定数据块的所述副本从所述归属节点转发到所述多个节点中的请求所述给定数据块的任何节点。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中所述程序指令还可执行以:
在所述归属节点处维持对所述给定数据块的读取请求数目的计数;以及
进一步响应于确定所述计数已经超过阈值而致使所述处理器执行所述请求、存储和转发。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中:
所述读取请求中的一者或多者是用于同步对对应于给定地址的所述给定数据块的访问的锁读取请求;并且
所述程序指令还可执行以响应于接收到对所述给定数据块的写入请求或锁释放请求而复位所述计数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/192,734 US10248564B2 (en) | 2016-06-24 | 2016-06-24 | Contended lock request elision scheme |
US15/192,734 | 2016-06-24 | ||
PCT/US2017/038811 WO2017223346A1 (en) | 2016-06-24 | 2017-06-22 | Contended lock request elision scheme |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109564548A true CN109564548A (zh) | 2019-04-02 |
Family
ID=59285363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780032262.8A Pending CN109564548A (zh) | 2016-06-24 | 2017-06-22 | 争用锁请求省略方案 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10248564B2 (zh) |
EP (1) | EP3433746B1 (zh) |
JP (1) | JP7166931B2 (zh) |
KR (1) | KR102452302B1 (zh) |
CN (1) | CN109564548A (zh) |
WO (1) | WO2017223346A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360090A (zh) * | 2020-03-04 | 2021-09-07 | 美光科技公司 | 相干性锁定方案 |
CN113939797A (zh) * | 2019-07-09 | 2022-01-14 | 美光科技公司 | 用于存储器子系统的锁定管理 |
WO2024000510A1 (zh) * | 2022-06-30 | 2024-01-04 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496538B2 (en) | 2015-06-30 | 2019-12-03 | Veritas Technologies Llc | System, method and mechanism to efficiently coordinate cache sharing between cluster nodes operating on the same regions of a file or the file system blocks shared among multiple files |
EP3220282B1 (en) * | 2015-12-14 | 2019-05-08 | Huawei Technologies Co., Ltd. | Method for managing lock in cluster, lock server and client |
US10521112B2 (en) * | 2017-03-17 | 2019-12-31 | International Business Machines Corporation | Layered clustered scale-out storage system |
US10725915B1 (en) | 2017-03-31 | 2020-07-28 | Veritas Technologies Llc | Methods and systems for maintaining cache coherency between caches of nodes in a clustered environment |
US10795819B1 (en) * | 2019-06-26 | 2020-10-06 | Intel Corporation | Multi-processor system with configurable cache sub-domains and cross-die memory coherency |
US11113213B2 (en) | 2019-12-30 | 2021-09-07 | Micron Technology, Inc. | Determining write commands for deletion in a host interface |
US11188471B2 (en) * | 2020-04-03 | 2021-11-30 | Alibaba Group Holding Limited | Cache coherency for host-device systems |
US20220206945A1 (en) * | 2020-12-25 | 2022-06-30 | Intel Corporation | Adaptive remote atomics |
US20240037032A1 (en) * | 2022-07-28 | 2024-02-01 | Dell Products L.P. | Lcs data provisioning system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050160430A1 (en) * | 2004-01-15 | 2005-07-21 | Steely Simon C.Jr. | System and method for updating owner predictors |
US7099913B1 (en) * | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7640315B1 (en) | 2000-08-04 | 2009-12-29 | Advanced Micro Devices, Inc. | Implementing locks in a distributed processing system |
JP2003216597A (ja) | 2002-01-23 | 2003-07-31 | Hitachi Ltd | マルチプロセッサシステム |
US7373466B1 (en) | 2004-04-07 | 2008-05-13 | Advanced Micro Devices, Inc. | Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer |
US7480784B2 (en) | 2005-08-12 | 2009-01-20 | Advanced Micro Devices, Inc. | Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU) |
US8407455B2 (en) | 2008-07-28 | 2013-03-26 | Advanced Micro Devices, Inc. | Coexistence of advanced hardware synchronization and global locks |
CN103294612B (zh) | 2013-03-22 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 在多级缓存一致性域系统局部域构造Share-F状态的方法 |
-
2016
- 2016-06-24 US US15/192,734 patent/US10248564B2/en active Active
-
2017
- 2017-06-22 WO PCT/US2017/038811 patent/WO2017223346A1/en active Application Filing
- 2017-06-22 CN CN201780032262.8A patent/CN109564548A/zh active Pending
- 2017-06-22 EP EP17735722.5A patent/EP3433746B1/en active Active
- 2017-06-22 KR KR1020187034910A patent/KR102452302B1/ko active IP Right Grant
- 2017-06-22 JP JP2018556346A patent/JP7166931B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099913B1 (en) * | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
US20050160430A1 (en) * | 2004-01-15 | 2005-07-21 | Steely Simon C.Jr. | System and method for updating owner predictors |
Non-Patent Citations (3)
Title |
---|
LENOSHKI D ET.AL: "The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor", 《THE DIRECTORY-BASED CACHE COHERENCE PROTOCOL THE DASH MULTIPROCESSOR》 * |
R. VELDEMA ET.AL.,: "Runtime Optimizations for a Java DSM Implementation", 《PROCEEDINGS OF THE 2001 JOINT ACM-ISCOPE CONFERENCE ON JAVA GRANDE》 * |
SONG FU ET.AL: "Distributed shared arrays:A distributed virtual machine with mobility support for reconfiguration", 《CLUSTER COMPUTING,KLUWER ACADEMIC PUBLISHIERS》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113939797A (zh) * | 2019-07-09 | 2022-01-14 | 美光科技公司 | 用于存储器子系统的锁定管理 |
CN113360090A (zh) * | 2020-03-04 | 2021-09-07 | 美光科技公司 | 相干性锁定方案 |
CN113360090B (zh) * | 2020-03-04 | 2022-12-06 | 美光科技公司 | 相干性锁定方案 |
US11726669B2 (en) | 2020-03-04 | 2023-08-15 | Micron Technology, Inc. | Coherency locking schemes |
WO2024000510A1 (zh) * | 2022-06-30 | 2024-01-04 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2017223346A1 (en) | 2017-12-28 |
EP3433746A1 (en) | 2019-01-30 |
KR20190021219A (ko) | 2019-03-05 |
US20170371787A1 (en) | 2017-12-28 |
US10248564B2 (en) | 2019-04-02 |
JP2019526086A (ja) | 2019-09-12 |
EP3433746B1 (en) | 2022-03-16 |
JP7166931B2 (ja) | 2022-11-08 |
KR102452302B1 (ko) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564548A (zh) | 争用锁请求省略方案 | |
JP7553478B2 (ja) | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ | |
US9792210B2 (en) | Region probe filter for distributed memory system | |
US9075730B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US7024521B2 (en) | Managing sparse directory evictions in multiprocessor systems via memory locking | |
EP0911731B1 (en) | Order supporting mechanisms for use in a switch-based multi-processor system | |
US20170168939A1 (en) | Snoop filter for cache coherency in a data processing system | |
US20090164733A1 (en) | Apparatus and method for controlling the exclusivity mode of a level-two cache | |
US7240165B2 (en) | System and method for providing parallel data requests | |
US20120210072A1 (en) | Cache-based speculation of stores following synchronizing operations | |
US9311244B2 (en) | Enforcing ordering of snoop transactions in an interconnect for an integrated circuit | |
US8904073B2 (en) | Coherence processing with error checking | |
JPH11282821A (ja) | 同時トランザクションを依存性で管理するための低占有度プロトコル | |
US20040088496A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
EP3885918B1 (en) | System, apparatus and method for performing a remote atomic operation via an interface | |
US20040088495A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
CN113924558A (zh) | 阶层式存储器系统中的存储器管线控制 | |
US20040088494A1 (en) | Cache coherence directory eviction mechanisms in multiprocessor systems | |
US20120124297A1 (en) | Coherence domain support for multi-tenant environment | |
US8732410B2 (en) | Method and apparatus for accelerated shared data migration | |
US11119924B2 (en) | Interface device including ports and a cache memory, and control method thereof | |
CN116057514A (zh) | 可扩展高速缓存一致性协议 | |
US9465740B2 (en) | Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers | |
CN110036376A (zh) | 无分配高速缓存策略 | |
US7797495B1 (en) | Distributed directory cache |
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 |