CN113742258B - 用于高效缓存一致性协议处理的节点控制器 - Google Patents
用于高效缓存一致性协议处理的节点控制器 Download PDFInfo
- Publication number
- CN113742258B CN113742258B CN202110425779.1A CN202110425779A CN113742258B CN 113742258 B CN113742258 B CN 113742258B CN 202110425779 A CN202110425779 A CN 202110425779A CN 113742258 B CN113742258 B CN 113742258B
- Authority
- CN
- China
- Prior art keywords
- memory
- processors
- information
- node controller
- operation request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 292
- 230000004044 response Effects 0.000 claims abstract description 39
- 238000000034 method Methods 0.000 abstract description 32
- 230000001427 coherent effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 19
- QFTYEBTUFIFTHD-UHFFFAOYSA-N 1-[6,7-dimethoxy-1-[1-(6-methoxynaphthalen-2-yl)ethyl]-3,4-dihydro-1H-isoquinolin-2-yl]-2-piperidin-1-ylethanone Chemical compound C1=CC2=CC(OC)=CC=C2C=C1C(C)C(C1=CC(OC)=C(OC)C=C1CC1)N1C(=O)CN1CCCCC1 QFTYEBTUFIFTHD-UHFFFAOYSA-N 0.000 description 17
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
-
- 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/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
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
技术领域
本公开整体涉及高效缓存一致性协议处理。
背景技术
在对称多处理(SMP)系统中,多个处理器被配置为共享公共操作系统和存储器资源。单个操作系统副本管理系统中的所有处理器。因为所有处理器都经由共享总线或网络连接并且可以访问相同的共享存储器资源,所以SMP也被称为“紧耦合多重处理(tightlycoupled multiprocessing)”。由于所有处理器并行运行,因此SMP系统的吞吐量高于单处理器系统。此外,提高了可靠性。如果处理器插槽(socket)发生故障(例如,该处理器的板上发生短路),则该处理器的工作负荷可以分配到其他插槽中,而如果单处理器中的处理器发生故障,则系统将发生故障。
发明内容
本公开一些实施例提供了一种本地节点控制器,包括一个或多个处理器,以及存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:在接收到指向远程节点的存储器操作请求时,所述存储器操作请求针对存储在所述远程节点的单个存储器块中的信息,确定在所述存储器操作请求中标识的所述单个存储器块的状态和所有权中的至少一者;将所接收的存储器操作请求从单个存储器块存储器操作请求修改为块组存储器操作请求,所述块组存储器操作请求包括对存储在与所述单个存储器块具有共同所有权和共同状态中的至少一者的一个或多个附加存储器块中的信息的多个存储器操作请求,所述一个或多个附加存储器块尚未与一个或多个附加存储器操作请求相关联;以及将所述块组存储器操作请求传输到所述远程节点。
本公开一些实施例提供了一种节点控制器,包括一个或多个处理器,以及存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:确定是否已经从本地处理器插槽接收到存储器操作请求;响应于确定已经从本地处理器插槽接收到存储器操作请求,确定是否需要到远程节点的消息来满足所述存储器操作请求;以及响应于确定需要到远程节点的消息来满足所述存储器操作请求,传输除了从所述本地处理器插槽接收的所述存储器操作请求之外还包括推测性存储器操作请求的块组存储器操作请求。
附图说明
参照以下附图根据一个或多个不同的实施例详细地描述本公开。附图仅出于说明的目的而提供,并且仅描绘典型实施例或示例实施例。
图1是根据本文公开的技术的实施例的示例架构。
图2是根据本文公开的技术的实施例的示例多处理器系统。
图3A是根据本文公开的技术的一个实施例的一致性协议实施设备的示例布局的示意性表示。
图3B是根据本文公开的技术的一个实施例的示例TCAM的示意性表示。
图3C是根据本文公开的技术的一个实施例的示例SRAM的示意性表示。
图4A示出了根据本文公开的技术的一个实施例的示例一致性协议处理流程的第一部分。
图4B示出了图4A的示例一致性协议处理流程的第二部分。
图4C示出了图4A的示例一致性协议处理流程的第三部分。
图5是根据本文公开的技术的一个实施例的用于执行一致性协议处理的示例计算装置。
图6是可以在其中实施本公开中描述的实施例的示例计算系统。
附图并非是穷举的,并且不将本公开限制于所公开的精确形式。
具体实施方式
非统一存储器访问(NUMA)是针对SMP系统的存储器设计。通常,NUMA架构包括通过SMP总线或网络互连的多个节点。每个节点本身是小规模的SMP,包括几个在它们自己之间互连的处理器插槽和相关联存储器,节点内的存储器由所有处理器插槽共享。节点内的存储器可以被认为是节点的处理器的本地存储器,而其他节点的存储器可以被认为是远程存储器。每个节点内的节点控制器使得处理器插槽能够访问系统内的远程存储器。节点控制器可以被认为是高级存储器控制器,管理对部分或全部本地存储器的访问以及节点的处理器插槽对远程存储器的访问。
由于实施存储器的方式,每个节点控制器都参与系统的缓存一致性协议。缓存一致性是包括多个离散的处理器插槽或处理器芯片的多处理器、多插槽系统中的重要概念。缓存一致性可能需要确保数据块的统一,这意味着要使用的任何变量在所有本地缓存中都具有一致的值。在这点上,一致性目录可以包括条目信息以跟踪可以在多处理器共享存储器系统中的处理器之间共享的每个存储器块的状态和所有权。因为一致性目录可能太大而不能存储在节点控制器上,所以一致性目录可以存储在主机存储器中,并且节点控制器可以使用一致性目录缓存来快速访问/降低对处理器的带宽影响。
综上所述,一致性目录缓存可以被描述为存储一致性目录条目的子集的部件,以提供更快的访问和增加的数据带宽。对于基于目录的一致性,一致性目录缓存可以由节点控制器(也称为集线器)用来管理计算机系统或不同计算机系统的不同节点之间的通信。在这点上,一致性目录缓存可以跟踪计算机系统或不同计算机系统的每个缓存块(或缓存行)的状态和所有权。例如,一致性目录缓存可以跟踪计算机系统或不同计算机系统的哪些节点共享缓存块。
一致性目录缓存可以包括与多个存储器块相关的信息。为了便于实施,这些存储器块的大小可以被定义为与计算机系统的系统缓存行相同。为了讨论清楚起见,这些缓存行大小的存储器块可以被称为缓存行。缓存行信息可以标识在计算机系统(或多个不同的计算机系统)中存储缓存行的处理器(或另一个装置)。一致性目录和一致性目录缓存可以包括与每个系统存储器缓存行相关联的一致性状态和所有权信息。随着缓存行数量的增加,一致性目录以及同样的一致性目录缓存的大小可能类似地增加。
在节点控制器之间的链路带宽可能远远低于节点控制器与处理器插槽之间的链路带宽的系统中,为了减少等待时间(latency)和带宽消耗,可以以相关和推测的方式对多个缓存行请求消息进行分组。也就是说,多个缓存行可能具有相同的状态和所有权特性,并且因此,对多个缓存行的请求可以被分组。作为响应而接收的信息可以被指向发出请求的处理器插槽,并且推测性接收的信息(未实际请求,但是可能会被请求)可以被维护在先进先出队列(或简称为“FIFO”)或其他存储器中,直到接收到对该信息的请求,或者直到被丢弃以释放跟踪空间用于新的请求。
例如,在接收到存储器操作请求(比如本地处理器插槽处的读操作)时,并且需要远程消息传递来执行/促进该读操作(例如,所述本地处理器插槽是从远程节点的处理器插槽请求所述读操作的目标数据),可以发送块请求而不是单个请求。也就是说,对具有或可能具有实际请求的存储器块/缓存行的相同状态和所有权的多个存储器块/缓存行的请求也被发送到远程节点。以这种方式,将已经通过单个请求操作而不是会引入等待时间并消耗带宽的多个请求操作取得了对那些尚未请求的存储器块/缓存行的请求。应该注意,存储器通常以大于单个缓存行的块大小被分配给应用程序,使得至少有时很可能多个存储器块/缓存行具有相同的状态和所有权特性。
图1图示了根据本公开的实施例的示例架构100。示例架构100仅出于说明的目的而提供,并且不应被解释为将本文公开的主题的范围限制于架构100。本领域普通技术人员将知道,本文公开的技术的实施例适用于利用共享存储器资源的任何多处理系统。如图1所示,架构100包括16个节点。在各种实施例中,架构100内可以包括超过16个节点。每个节点(0至15)连接到架构100内的每个其他节点。在各种实施例中,节点可以如架构100中所描绘的那样直接连接到一个或多个节点,而在其他实施例中,节点可以通过其他装置连接到一个或多个节点,所述其他装置包括但不限于路由器和交换机。在各种实施例中,每个节点(0至15)可以包括一个或多个处理器和一个或多个节点控制器(图1中未示出),所述节点控制器是被配置为使得每个节点内的处理器能够访问所有其他节点上的存储器的高级存储器控制器。
图2图示了根据本公开的实施例的示例节点200和220(也称为插槽组)。在各种实施例中,节点/插槽组200和220中的每一个可以表示关于图1讨论的节点(0至15)中的一个或多个。节点200和220仅出于说明的目的而提供,并且不应被解释为将本文所讨论的技术的范围仅限制于节点200和220。节点200和220仅示出了与解释本公开的技术相关的那些部件,并且本领域普通技术人员将知道如何实施节点200和220中省略的处理系统的公共部件。
在各种实施例中,节点200和220中的每一个可以被实施为单个集成电路,包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、复杂可编程逻辑装置(CPLD)、或其他集成电路部件。在一些实施例中,节点200可以包括其中设置有多个芯片组的印刷电路板(PCB)或多芯片模块。如图所示,节点200包括四个处理器插槽(或简称为处理器)CPU0、CPU1、CPU2、CPU3,而节点或插槽组220包括其自己的四个处理器插槽或处理器CPU20、CPU21、CPU22、CPU23。这些处理器中的每一个可以包含一个或多个处理器核。节点200和节点220可以各自具有与SMP系统类似的结构,每个处理器CPU0、CPU1、CPU2、CPU3彼此通信地耦接并且可以访问每个存储器201、202、203、204。同样,处理器CPU20、CPU21、CPU22、CPU23中的每一个彼此通信地耦接并且可以访问每个存储器221、222、223、224。节点或插槽组200和220可以经由节点控制器1、2、3和4彼此耦接。
在各种实施例中,存储器201、202、203、204、221、222、223、224可以包括一种或多种类型的非暂态机器可读存储介质,包括但不限于:固态存储装置(SSD)、单直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、以及其他常见类型的计算机存储器。
每个处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23管理其相应的存储器部件。对存储在存储器201、202、203、204、221、222、223、224上的数据的请求被指向相应的处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23。作为非限制性示例,如果CPU2需要本地存储器204中的地址处的数据块,则CPU2可以向CPU3发送请求以取得所请求的数据块并将所述数据块提供给CPU2。在各种实施例中,每个存储器201、202、203、204、221、222、223、224可以具有被配置为控制对其相应存储器部件的数据块的访问的相关联存储器控制器。在一些实施例中,每个存储器控制器可以被实施为专用逻辑电路。
尽管图示了每个存储器201、202、203、204直接连接到一个处理器CPU0、CPU1、CPU2、CPU3并且每个存储器221、222、223、224直接连接到一个处理器CPU20、CPU21、CPU22、CPU23,但是本领域普通技术人员将知道,在一些实施例中,每个处理器插槽CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23可以连接到一个或多个存储器部件。作为非限制性示例,CPU0和CPU3可以连接到存储器201,从而允许处理器CPU0、CPU3两者直接访问存储器201。
存储器201、202、203、204与系统内其他节点的本地存储器(在这个示例中,如上所述,存储器221、222、223、224)相结合以形成具有全局地址空间的共享主存储器。在各种实施例中,存储器201、202、203、204可以组合成本地节点(200)存储器,并且系统中其他节点(220)的存储器221、222、223、224可以被认为是远程存储器,并且反之亦然(相对于彼此)。每个存储器201、202、203、204、221、222、223、224可以是共享主存储器的逻辑部分,类似于3级缓存。在各种实施例中,每个处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23可以包括专用CPU缓存(即,1级缓存、2级缓存(图2中未示出),用于存储来自本地存储器(即,分别是存储器201、202、203、204的组合和存储器221、222、223、224的组合)或远程存储器(即,与远程节点相关联的存储器,例如,相对于节点220的节点200,并且反之亦然)的频繁使用的数据的副本。
在各种实施例中,每个处理器插槽CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23可以具有专用缓存205、206、207、208、225、226、227、228,所述缓存包括分别与相应处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23相关联的更小、更快的硬件存储器。缓存205、206、207、208、225、226、227、228可以以各种缓存架构来实施,包括但不限于组相联缓存、全关联缓存、直接映射缓存示意图、以及本领域中常见的其他缓存架构。在一些实施例中,缓存205、206、207、208、225、226、227、228可以作为单个部件在处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23内实施。缓存205、206、207、208、225、226、227、228可以包括一种或多种类型的公共高速缓冲存储器部件,包括但不限于SRAM、同步DRAM(SDRAM)、闪速存储器、嵌入式DRAM(eDRAM)、非易失性RAM(NVRAM)、以及其他类型的缓冲存储器部件。每个相应的缓存205、206、207、208、225、226、227、228专用于每个处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23,从而保存来自共享主存储器的数据块值的副本以通过减少从系统内的较慢共享主存储器取得数据的需要来提高处理速度。
如上文所讨论的,CPU缓存(图2中未示出)被配置为保存从节点的本地存储器(即,从存储器201、202、203、204、221、222、223、224)或远程存储器(即,与远程节点相关联的存储器)拉出的数据块。缓存205、206、207、208、225、226、227、228可以被配置为存储从远程存储器中的地址、从不同的节点取得的数据块的副本。在一些实施例中,CPU缓存和缓存205、206、207、208可以组合成单个部件,并且CPU缓存和缓存225、226、227、228可以组合成单个部件。
节点200和220各自包括两个节点控制器,分别是节点控制器1和节点控制器2,以及节点控制器3和节点控制器4。如上文所讨论的,节点200的节点控制器1和节点控制器2以及节点220的节点控制器3和节点控制器4的任务是管理相应处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23对远程存储器以及从远程处理器对本地存储器的访问。在各种实施例中,每个节点可以有更少或更多的节点控制器。每个节点控制器充当系统互连,从而为每个处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23提供对共享存储器内的存储器地址的访问,包括系统中其他节点的存储器部件中存在的地址。在各种实施例中,节点控制器1和2以及节点控制器3和4可以实施为单独的处理器部件,而在其他实施例中,节点控制器1和2以及节点控制器3和4可以实施为一个或多个专用逻辑部件,包括但不限于被配置为执行特定状态操作的状态机。每个节点控制器1、2、3和4可以包括多个结构连接器(图2中未示出)以将节点控制器1和2与系统内的其他节点(例如,节点3和4)互连(比如在图1所示的示例中)。
在各种实施例中,每个节点控制器1、2、3、4可以包括逻辑212、214、216、218。每个节点控制器1、2、3、4可以控制处理器CPU0、CPU1、CPU2、CPU3、CPU20、CPU21、CPU22、CPU23的子集。在图示的示例中,节点控制器1通信地耦接到处理器CPU0和CPU1,节点控制器2通信地耦接到处理器CPU2和CPU3,节点控制器3通信地耦接到处理器CPU20和CPU21,并且节点控制器4通信地耦接到处理器CPU22和CPU23。此外,每个节点控制器1、2、3和4可以代表远程节点上的所有处理器。对于处理器CPU0、CPU1、CPU2、CPU3中的每一个,节点控制器1和2表现为单个远程处理器,而对于处理器CPU20、CPU21、CPU22、CPU23中的每一个,节点控制器3和4表现为单个远程处理器。这允许处理器维护更紧凑的一致性目录和装置寻址。作为非限制性示例,处理器的一致性目录可以仅跟踪4到8个其他处理器或装置的所有权信息的状态。
如图2所示,节点控制器1和2各自包括一个或多个三态内容可寻址存储器(TCAM)210a、210b、210c、210d,并且节点控制器3和4各自包括一个或多个TCAM 230a、230b、230c、230d。TCAM是特殊类型的高速存储器,其在一个时钟周期内搜索其全部内容,类似于普通的内容可寻址存储器(CAM)。尽管CAM为每个被搜索的位提供二分搜索模式(0或1),但TCAM允许使用至少三个数据搜索条件来存储和查询数据:0、1和X。X被称为“无关(don’t care)”或“通配符(wildcard)”状态,其指示一个或多个位在搜索期间不需要精确匹配来指示匹配(也称为命中)。使用三个搜索条件使得TCAM能够基于模式匹配执行更广泛的搜索,而不是传统CAM的精确匹配二分搜索。TCAM可以对表示各种大小的存储器块的条目进行操作,从而允许动态调整地址标签的大小来进行搜索。这些动态大小的标签链接到动态大小的远程或本地存储器数据块。TCAM允许单个条目覆盖比相关缓存行的大小更大或更小的范围,从而减少对用于每个关注地址的单独特定条目(对于CAM来说,这是必需的)的需要。然而,应该注意,各种实施例不一定限于TCAM,而是可以在CAM中应用/实施。本领域的普通技术人员将理解,如果应用于CAM(而不是TCAM),则标签大小将是相同的,这与TCAM相反,在TCAM中,标签大小可以根据一致性目录缓存跟踪多大的存储器块而变化。
每个TCAM 210a、210b、210c、210d可以被配置为跟踪可由处理器CPU0、CPU1、CPU2、CPU3之一或系统中的任何其他处理器插槽访问的任何数据块的所有权。每个TCAM 230a、230b、230c、230d可以被配置为跟踪可由处理器CPU20、CPU21、CPU22、CPU23之一或系统中的任何其他处理器插槽访问的任何数据块的所有权。如上文所讨论的,存在可以在SMP中实施以解决一致性问题的各种缓存一致性协议。通常,这些缓存一致性协议利用状态标签来确保维护一致性,常见状态包括已修改(modified)(M)、独占(exclusive)(E)、共享(shared)(S)和无效(invalid)(I)。已修改指示缓存行是“脏的”,这意味着值已被修改并且不同于共享存储器中的值。独占指示缓存行的值与共享存储器中的值相同并且这个缓存维护该数据块的唯一缓存副本。共享指示值与共享存储器的存储器数据块中的值相同,但在系统内的其他缓存中存在一个以上的主存储器数据块副本。无效指示缓存行数据无效并且可以重复使用。每一个缓存行都以无效状态开始,指示没有相应数据块的所有权。
为了说明缓存一致性协议操作的示例,CPU0可以读取存储器202中的地址X。即,CPU0向CPU1发送读取消息。CPU1确保地址X的数据不被任何处理器(例如,CPU0、CPU1、CPU2或CPU3中的任何一个)持有。为了确保数据不被任何处理器持有,CPU1向节点控制器1发送窥探请求消息。应该注意,窥探请求不被发送到CPU0,因为CPU0是发送读取请求的处理器。节点控制器1在其一致性目录缓存中可能有未命中(miss)(即,在TCAM中找不到(下面有更详细的描述)。节点控制器1从CPU1的存储器获取一致性目录状态,并且节点控制器1用“无主”消息来响应窥探请求。节点控制器1将一致性目录状态保存到一致性目录缓存。因为CPU1现在知道没有其他处理器具有所请求的数据,所以其可以读取存储器202的地址X,并将数据发送到CPU0。
接下来,CPU2可以读取存储器202中的地址X,其中CPU2向节点控制器2发送读取消息,并且节点控制器2向节点控制器1转发读取消息。节点控制器1在其TCAM中有命中(如上所述,当其被保存时),并且一致性目录缓存指示数据是“无主的”。因此,节点控制器1将读取转发给CPU1。CPU1确保地址X的数据不被任何处理器持有。为此,CPU1向CPU0发送窥探消息(与上文类似,CPU1不向节点控制器2发送窥探消息,因为所述节点控制器2是读取的来源。CPU0向CPU1发回消息,指示其已放弃数据的所有权,并且CPU1将数据发送给节点控制器1。节点控制器1将数据转发给节点控制器2,并且节点控制器1更新一致性目录缓存状态以指示CPU2拥有地址X的数据。节点控制器2然后可以将数据消息转发给CPU2。
参考图3A,示例一致性目录缓存管理设备或电路300可以在节点控制器(例如,节点控制器1、2、3和4(图2))处实施,并且可以包括多路复用器302以接收如处理器窥探请求(在上述缓存一致性示例中引用)或节点控制器请求等请求。处理器窥探请求可以被描述为由本地处理器发起的询问存储器块或缓存行的状态和所有权的操作。节点控制器请求可以被描述为由远程处理器或远程节点控制器发起的操作,所述操作被发送到包括设备300的本地节点控制器。在一些实施例中,请求可以是包括读操作和/或写操作的某个存储器操作请求。一致性协议可以规定当访问存储器(例如,存储器201、202、203、204、221、222、223、224中的一个或多个)中的特定存储器块或缓存行时(比如当写入或读取存储在存储器中的至少一个存储器块时)要获得什么许可。将理解的是,不同的系统可以遵循不同的一致性协议。如上所述,某些逻辑、电路和/或状态机基于一致性目录中的数据执行一致性协议。
所述请求可以被指向一致性目录标签304以确定是否存在关于特定存储器块(即,缓存行)的状态信息。一致性目录标签304可以包括与多个存储器块相关的信息。即,并且参考图3B,一致性目录标签304可以包括与系统存储器块或缓存行相对应的高地址的集合,其中状态和所有权信息被缓存在一致性目录缓存(例如,维护在TCAM 306A和306B中)中。例如,高地址可以包括高地址A、高地址B、……、高地址N等。每个高地址可以具有与每个条目相关联的对应行号(例如,行号1、2、……、N)。取决于位置,每个高地址可以是0至N个无关位。如本文所公开的,为了便于实施,这些存储器块的大小可以被定义为与计算机系统(或不同的计算机系统)的系统缓存行相同。为了讨论清楚起见,这些缓存行大小的存储器块可以被称为缓存行。
所有权可以被描述为关于哪个节点或处理器拥有被跟踪的系统存储器块或缓存行的所有权的标识。在共享状态下,所有权可以包括共享系统存储器块或缓存行的节点或处理器。
所述请求可以由一个或多个TCAM 306A和306B(每个TCAM可以是TCAM 210a至210d或230a至230d之一的实施例)处理。对于TCAM 306A,每个缓存条目可以包括TCAM条目以保存高地址以便与请求进行比较。这个高地址可以称为标签。关于高地址,处理器系统可以包括允许定义被访问的数据位的字节或字(word)地址。当多个字节或字被一起分组成较大的块(比如缓存行)时,高地址位可以用于唯一地定位系统存储器的每个块或缓存行,并且低地址位可以用于唯一地定位系统存储器块或缓存行内的每个字节或字。
标签可以被描述为用于标识高地址的链接描述符。目录标签可以被描述为在高速缓冲存储器的目录部分中使用的链接描述符。一致性目录标签304可以包括一致性目录缓存的所有标签,并且可以被描述为在一致性目录高速缓冲存储器的目录部分中使用的链接描述符。一致性目录标签304可以包括定义被跟踪的系统存储器块的高地址位。
目录标签可以表示唯一地标识目录条目的一致性目录缓存地址的部分。目录标签可以用于检测一致性目录标签304内目录缓存行的存在,并且如果是,则匹配条目可以标识缓存信息在目录状态存储中的位置。一个一致性目录缓存条目可以表示存储器的一个或多个系统缓存行的一致性状态和所有权。
在匹配编码器308处,由TCAM 306A处理的请求可以被处理以确定一致性目录标签304的相关联行(例如,地址)的二进制表示。对于TCAM 306A,TCAM 306A的每一行或条目可以包括匹配行,当该条目与输入搜索值相匹配时,所述匹配行被激活。例如,如果TCAM 306A具有1024个条目,则其将输出1024条匹配行。这1024条匹配行可以被编码成二进制值,所述二进制值可以用于例如寻址存储状态和所有权信息的存储器。例如,如果匹配行255是活动的,则来自匹配编码器308的编码输出将是0xFF(因为编码器输出字段是10位宽)。
还参考图3C,状态信息310块可以包括针对由TCAM 306A处理的请求的存储器块(即,缓存行)的状态和的所有权的当前表示。例如,状态信息310可以包括:“有效”列,其包括一组有效位(例如,1111,0000,0011,0010);“状态信息”列,其包括如共享、无效或独占等信息;以及“共享向量/所有权”列,其包括共享状态的共享信息和独占状态的所有权。根据示例,状态信息310的行可以对应于一致性目录标签304的行。可替代地,一致性目录标签304的单个行可以对应于状态信息310的多个行。关于一致性目录标签304和状态信息310,假设高地址A覆盖全部有效的四个缓存行,这四个缓存行可以包括相同的状态信息和共享向量/所有权。有效位的长度可以对应于对无关位的解码数量。与存储器块状态和所有权信息相关的一致性目录缓存输出信息还可以包括响应于由多路复用器302接收的请求的目录缓存命中指示符状态(例如,一致性目录标签304命中)或目录缓存未命中指示符状态。所有权可以包括共享存储器块的计算机系统或不同计算机系统的节点(或多个节点)的指示。在这点上,存储的实际信息可以取决于实施方式和所使用的一致性协议。例如,如果正在使用的协议包括共享状态,则所有权信息可以包括共享块的节点或处理器的列表。可以基于由匹配编码器308编码成存储器地址的来自TCAM 306的相关联匹配行从状态信息310存储器存储中取得状态和所有权。
目录命中或目录未命中信息可以用于一致性目录缓存条目替换策略。例如,替换策略可以使用最近最少使用(LRU)跟踪电路312。如果相关联的缓存已满并且要添加新条目,则最近最少使用跟踪电路312可以逐出最近最少使用的缓存条目。在这点上,如果条目被逐出,则TCAM 306A可以被相应地更新。当TCAM 306A已满时,完整的一致性目录缓存可被认为已满。LRU跟踪电路312可以直接从匹配编码器308接收命中/未命中信息。然而,命中/未命中信息也可以从过程状态机314接收。当检测到缓存命中时,LRU跟踪电路312可以更新相关联的列表以将匹配条目移动到列表上最近使用的位置。
与TCAM 306A中的条目相关联的标签数据可以包括可能的存储器状态“0”、“1”或“X”,其中“X”存储器状态可以表示“0”或“1”并且可以被指定为“无关”存储器状态。缓存行地址的TCAM 306A中的最低有效数字可以定义一组缓存行内的缓存行的地址。最低有效数字可以由“X”存储器状态表示。因此,一个一致性目录缓存条目可以表示存储器的几个(例如,2、4、8、16等)系统缓存行的状态。这些存储器块或系统缓存行可以以2的幂以及非2的幂来分组。对于非2的幂,可以相对于范围对地址进行比较。例如,如果地址在A与C之间,则存储器块或系统缓存行可以被分组。因此,每个TCAM条目可以表示存储器的任意数量的系统缓存行。这些多个缓存行可以基于多个缓存行相邻的确定来分组,并且进一步基于所述多个缓存行包括(或可能包括)相同的状态和所有权来共享TCAM条目的确定来分组。在这点上,相邻的缓存行可以包括在定义的组的边界内的缓存行。因此,相邻的缓存行可以包括邻近的、非常接近的或者满足组寻址规范的缓存行。
过程状态机314可以基于如处理器窥探请求和/或节点控制器请求等请求来分析相关联的缓存行的状态和所有权信息以标识可以相对于TCAM 306A合并的缓存行。
后台清理状态机316还可以分析与相邻缓存行相关联的状态和所有权信息以标识可以相对于TCAM 306A合并的缓存行。因此,关于缓存行的合并,当添加新条目时,过程状态机314可以执行合并功能,并且当一致性目录缓存不忙于处理其他请求时,后台清理状态机316可以将合并功能作为后台操作执行。关于由后台清理状态机316执行的后台操作,状态和所有权信息可以随着时间而改变。当关于给定块的信息最初被写入并且由于状态或所有权信息与组合组中的其他块的信息不匹配而不能被分组时,所述给定块的此信息可以对应于单独的一致性目录缓存条目。如果在稍后的时间,与状态或所有权相关的一些信息发生了改变,则现在可能会发生分组。因此,当如处理器窥探请求和/或节点控制器请求等请求未正在被处理时,后台清理状态机316可以操作。在这点上,后台清理状态机316可以找到匹配的条目并重写TCAM条目以执行如本文所公开的将由单个条目表示的存储器块的分组。
硬件定序器318和硬件定序器320可以包括硬件(或处理器实施的指令)以针对一致性目录标签304利用存储器结构中的条目来标识与分组的缓存行相关的信息(例如,地址位)。在这点上,与存储器结构中的“无关”条目相关联的数据可以包括多于两个的可能的存储器状态。根据示例,条目可以包括唯一地标识存储器结构中的条目的地址。例如,条目可以包括没有任何“无关”位的地址。根据示例,条目可以包括存储器结构中的单个条目以标识与分组的缓存行相关的信息。例如,条目可以包括具有最低有效数字中的一个或多个作为“无关”位的地址。根据示例,分组的缓存行的数量可以等于四个相邻的缓存行。例如,条目可以包括以两个最低有效数字为“无关”位的地址。
对于TCAM 306A,硬件定序器318和硬件定序器320可以进一步包括硬件(或处理器实施的指令)以将地址的指定数量的低位写为“X”位。在这点上,与TCAM 306A中的条目相关联的数据可以包括可能的存储器状态“0”、“1”或“X”,其中“X”存储器状态(例如,“无关”存储器状态)可以表示“0”或“1”。例如,当条目被写入到一致性目录标签304中时,高地址(标签)的低两位可以在TCAM内被编程为“无关”。这个示例说明了当单个一致性缓存条目覆盖一组多达四个系统缓存行时的配置。
状态信息可以包括4位有效字段。具有4位有效字段的实施方式可以表示可以允许两个最低有效高地址位为“无关”位的实施方式。在这点上,相对于其他实施方式,有效性字段中的位数将会改变。例如,对于具有多达3个“无关”位的实施方式,有效字段的长度将是8位,因为三个低地址位有23=8(或者一般是2n,其中n表示“无关”位的数量)个唯一解码。关于包括4位有效字段的状态信息,这4位中的每一个可以对应于高地址的低两位的解码,从而允许每一位与四个缓存行组内的四个缓存行之一相关联。对于四个系统存储器缓存行中的每一个,这4个位可以被认为是有效位。每个TCAM条目现在可以表示系统存储器的零(不是有效条目)到四个缓存行的状态和所有权信息。一致性目录缓存跟踪可以被描述为监测所述位是活动的还是不活动的状态的一致性目录缓存。
可以执行对TCAM 306A的搜索以确定是否要添加新条目。可以使用与接收到的请求相对应的缓存行的高地址位来执行对TCAM 306A的搜索。如果存在TCAM未命中,则标签可以被写入到未使用的条目中。如果所有缓存条目都被使用,则最近最少使用的条目可以被逐出并且新标签可以被写入到该TCAM条目中。
如果在TCAM搜索期间,在新的高地址位与TCAM内的标签条目之间存在匹配,则可以检查上文讨论的4位字段。如果设置了4位字段中的对应位(如由高地址的低两位的解码所选择的),则可以指示缓存命中并且处理可以继续。如果没有设置上文讨论的4位字段中的对应位,则可以对状态和所有权信息进行比较。如果新系统存储器缓存行的状态和所有权信息与缓存的状态和所有权信息的值相同,则可以设置4位字段中的对应位以将这个新系统存储器缓存行添加到一致性目录标签304。状态和所有权字段可以应用于与地址字段相匹配并且在4位有效性字段中具有对应的有效位的所有缓存行。因此,如果被评估的缓存行的状态和所有权与状态和所有权字段相匹配,则可以设置有效性字段的对应位。关于状态和所有权信息,基于未设置指定位的确定,硬件定序器318可以进一步包括硬件(或处理器实施的指令)以确定与新条目相关联的状态和所有权是否分别与和前一条目相关联的状态和所有权相同。此外,基于与新条目相关联的状态和所有权分别与和前一条目相关联的状态和所有权相同的确定,硬件定序器318可以进一步包括硬件(或处理器实施的指令)来设置指定位以将新条目添加到设备300。在这点上,设置指定位可以指与特定系统存储器块或缓存行相关联的有效位。
如果没有设置上文讨论的4位字段中的对应位,则可以对状态和所有权信息进行比较。如果从状态信息310读取的状态和所有权信息不同于与新标签相关联的状态和所有权信息,则这个新标签可以被添加到TCAM 306A。
根据示例,假设一致性目录标签304包括针对10X的条目、有效性字段0011和状态/所有权SO,并且接收到针对具有状态/所有权SO的缓存行地址310的窥探请求,则针对10X的条目可以被更新为地址1XX,有效性字段可以被设置为0111,并且可以响应于窥探而返回SO。
处理器窥探请求和节点控制器请求中的部分信息可以用于确定如何驱动多路复用器302上的选择。如果存在处理器窥探请求并且没有节点控制器请求,则过程状态机314可以驱动选择线到多路复用器302来选择处理器窥探请求。
在图3A的示例实施方式中,过程状态机314可以控制多路复用器302。过程状态机314可以接收与所选择的不同请求相关的部分放大信息。
关于从匹配编码器308发送到过程状态机314和LRU跟踪电路312的信息,过程状态机314和LRU跟踪电路312可以从匹配编码器308接收匹配/不匹配指示符和匹配条目的TCAM行地址两者。
图1所示的目录状态输出可以包括用于匹配请求的状态和所有权信息。目录状态输出可以被发送到设备300所在的节点控制器或处理器专用集成电路(ASIC)内的其他电路。所述其他电路可以包括向一致性目录缓存发送初始请求的电路。
图3A所示的缓存命中/未命中状态输出可以表示关于请求是否与一致性目录缓存内的条目相匹配的指示。缓存命中/未命中状态输出可以被发送到设备300所在的节点控制器或处理器ASIC内的其他电路。所述其他电路可以包括向一致性目录缓存发送初始请求的电路。
如上所述,节点控制器与处理器插槽之间(例如,节点控制器3与CPU20之间)的互连可以具有比节点控制器之间(例如,节点控制器3与节点控制器4之间)的互连更高的带宽。因此,与访问存储在本地存储器中的数据相比,远程定位的节点控制器之间的消息传递(例如,请求)可能需要更长的处理时间。也就是说,如果要读取的数据例如存储在面对CPU20的存储器221中,则节点控制器3可以比如果数据存储在面对CPU2的存储器205中则节点控制器3必须访问该数据更快地访问该数据。
为了协调这种带宽差异,节点控制器互连将必须增加到更多的通道或更高的波特率。然而,就提高波特率而言,存在一些限制并且更高的波特率通常需要更多的裸片面积和功率。此外,增加通道会增加系统成本并对裸片大小产生负面影响,因为节点控制器互连将需要更多的SERDES。虽然是潜在的解决方案,但在封装互连中也会增加系统成本。此外,处理器互连的目标是适应越来越高的带宽。
因此,各种实施例利用双向节点控制器互连链路,双向节点控制器互连链路的特征在于与缓存行数据消息相比,与存储器操作请求消息相关联的更多带宽消耗。如上所述,各种实施例将相关的潜在请求的请求与第一(例如,原始或实际)请求分组在一起以创建块请求分组或块请求。这个块请求可以作为单个消息从本地节点发送到远程节点,从而改善平均存储器请求等待时间和节点控制器带宽。特别是,平均远程等待时间得到了改善,因为远程节点可以在后续请求被请求之前就开始对其进行处理。带宽得到了改善,因为节点控制器互连上发送的请求数量减少了。
图4A至图4C图示了根据一个实施例的使用块请求分组的一致协议处理的方法。在一些实施例中,在操作400处执行检查以确定系统中是否已经启用了块请求分组。如果块请求分组未启用,则所述方法结束。应该注意,块请求分组可以在节点控制器或处理器插槽级别上实施,并且实施这种分组可以在处理器插槽或节点控制器中完成并且可以通过寄存器设置来激活。
如果块请求分组被启用,则在操作402处确定是否已经从本地处理器插槽接收到存储器操作请求。例如,并且返回参考图2,可能已经在节点/插槽组220的节点控制器3处从处理器插槽(例如,CPU2)接收到存储器操作请求(比如读操作请求)。节点控制器3的逻辑216可以确定所述读操作请求是否已经从本地处理器插槽(例如,CPU20、CPU21、CPU22、CPU23之一)接收/被本地处理器插槽发送。应该理解,术语本地和远程可以反映相对于当前执行一致协议处理/块请求分组的节点控制器的位置/实施方式。即,本地请求可以指从直接连接到所述节点控制器的插槽接收的请求。远程请求或响应可以指来自未直接连接到这个特定节点控制器的插槽的消息。应该进一步理解,基于哪个节点控制器正在执行块请求分组的角度,每个插槽可以是本地的和远程的。
如果已经从本地处理器插槽接收到存储器操作请求,则处理进行到操作430。如果不是,则在操作404处确定是否已经从远程插槽接收到存储器操作请求。
如果还没有从远程插槽接收到存储器操作请求,则在操作406处例如由节点控制器3的逻辑216确定是否接收到对远程插槽请求的响应。如果否,则处理可以返回到操作402。如果节点控制器3已经接收到远程处理器插槽请求,则在操作408处,节点控制器3可以为所述请求服务或处理所述请求。例如,可以通过从适当的存储器访问数据并将数据返回到发出请求的远程处理器插槽来处理读操作请求。例如,读操作请求可能来自CPU3,请求存储在存储器221中的数据。处理然后可以再次返回到操作402。
如果节点控制器3的逻辑216确定接收到的是对请求的远程处理器插槽响应(在操作406处),则可以在操作410处执行检查以确定所述响应是否针对所需的请求,即,所述响应是否属于/包括响应于实际(而不是推测性/主动请求)的数据。如果不是,则在操作412处,所述响应可以被存储在FIFO中以便以后可能使用。因为多个请求可以在块组请求中被分组在一起,其中所述多个请求中的两个或更多个是主动或推测性请求,而不是实际请求,所以对这些主动/推测性请求的响应可以被保存在FIFO中,直到实际接收到对取得的信息的实际请求。如果该实际请求在一段时间后或跟踪空间已满后没有出现(在下文中有更详细的描述),则可以清除该信息。
如果所述响应是对所需请求的响应,则在操作414处,被请求的信息/数据被发送到做出所述请求的本地处理插槽。例如,如果CPU23请求由CPU0拥有并存储在存储器201中的信息并且接收到的响应是这个请求的信息,则所述信息可以被发送到CPU23。应该注意,这是简化的示例性说明,并且当响应信息实际发送到本地插槽时,对响应排序、冲突和其他问题的检查可能会延迟。
在操作416处,所述请求可以被标记为完成。也就是说,节点控制器(比如节点控制器3)可以通过本地处理器插槽和远程处理器插槽两者使用跟踪条目来跟踪存储器操作请求。此外,可以跟踪未完成的请求,例如,覆盖特定数量的连续或相邻存储器块/缓存行的块组请求。节点控制器的一致性目录缓存(例如,由TCAM 210A、210B维护的一致性目录缓存)可以用所有权、状态和指示存储器操作请求的其他信息来更新。在一个实施例中,这样的标记包括清除用于跟踪未完成请求的跟踪位。例如,可以跟踪来自本地处理器插槽的所有非推测性请求,并且与从本地处理器插槽接收的非推测性请求相关联的响应将被传递到发出请求的本地处理器插槽并且不能被丢弃。跟踪信息(例如,跟踪位)在一些实施例中可以维护在类似记分板的结构中,并且响应本身也可以临时存储在存储器中以确保在需要时的传递顺序以及传输链路可用性(因为到本地处理器插槽的链路当前可能繁忙或者在一些情况下被阻塞)。应该注意,如上所述,并且如下文将更详细描述的,由于可能的共同状态/所有权特性,可以根据包含多个相关请求的块组请求的单个消息来接收响应/信息。因为可以在还没有提交请求的情况下接收响应/信息,所以当已经接收到对实际请求的响应时,该“单个”请求(或者前述块组请求的“单个”请求部分)可以被标记为完成。
在操作418处,确定是否已经接收到对块组请求的所有响应。再次,如上所述,多个请求可以在块组请求中被分组在一起并作为单个消息发送到远程处理器插槽。作为接收响应的一部分,可以执行这个检查以确定是否已经接收到对所述块组请求的所有多个请求的响应,或者对于所述多个请求中的一个或多个,响应是否仍然未完成。如果已经接收到对所述多个请求中的每一个的响应,则在操作420处,可以清除对块组请求的跟踪。
如果在操作418处确定尚未接收到对块组请求的所有响应,则可以在操作422处执行检查以确定跟踪空间(例如,存储器中用于跟踪向远程插槽的请求的跟踪空间)是否已满。如果跟踪空间尚未满,则处理可以返回到操作402,并且可以如上所述处置后续响应。另一方面,如果跟踪空间被确定为已满,则在操作424处,可以确定是否设置了没有所需位的任何跟踪条目。如果设置了所需的跟踪位,则无法从跟踪空间中清除该条目。也就是说,跟踪条目(如上所述)可以包括指示信息是否已经被请求并且正在等待传递的位。如果信息正在等待传递,则针对该信息的跟踪条目将包括所需位/与所需位相关联,即,所述信息不再是推测性的,例如,已经接收到对该信息的后续请求。另一方面,如果在跟踪空间已满的时间点信息仍然是推测性的,则可以清除所述信息。因此,由于跟踪空间已满(如操作422中所确定的),并且由于没有跟踪条目可从跟踪空间中清除(如操作424中所确定的),因此在操作428处不接受关于本地请求的新跟踪条目。此后,处理可以返回到操作402。如果不需要一个或多个跟踪条目(即,没有设置其所需位),则在操作426处,可以从跟踪空间中清除尚未关联或链接到实际请求的最旧的活动跟踪条目。这意味着一旦跟踪空间变得可用,就可以继续接受新的本地请求。再次,处理可以返回到操作402。
应该理解,前述推测可以是空间驱动的,即,跟踪空间是否已满(如上所述)。推测也可以是状态驱动的。例如,与处于独占状态的信息/数据相反,取决于应用、环境等,处于共享状态的推测信息/数据可以被保存而不是丢弃,或者反之亦然。在一些实施例中,推测还可以基于关于哪个数据状态的推测数据被最经常使用的过去历史来确定其是否可以被丢弃。在又一些实施例中,推测可以是时间驱动的。即,跟踪条目是否被保留或清除可以取决于信息一直未被请求的时间量。也就是说,可以指定跟踪条目阈值,所述阈值指示跟踪条目在跟踪空间中可以存在的最大(和/或最小)时间量。在一些实施例中,可以考虑度量或因素的组合。仅作为一个示例(可以使用其他度量/因素和/或其组合),时间可以用作丢弃策略的基础,但是仅直到达到空间阈值为止,此时,可以应用不同的丢弃/保留策略。应该理解,系统遵循的一致性协议会影响跟踪的执行方式。
还应该理解,推测性信息/对信息的请求的量可以变化。例如,在一个实施例中,特定数量的相邻或连续缓存行被认为可能具有相同的状态/所有权特性,并且可以在块组请求中对相当数量的请求进行分组。例如,关于存储数据的状态和所有权信息可以用于影响将被推测性地请求的数据量。考虑关于推测性缓存行的数量配置可编程的最大限制,并且该限制被编程为例如八个推测性缓存行。在检查一致性目录信息时,如果检测到状态/所有权的改变,则可以请求(在块组请求中)的推测性数据可以被限制为与所需(实际请求的)缓存行的状态和所有权两者相匹配的连续缓存行。也就是说,可以请求一到八个(实际和/或推测性)缓存行。如果请求一个缓存行,则这一个缓存行可以对应于实际请求的缓存行,如果请求八个缓存行,则实际请求一个,推测性地请求七个连续的缓存行,依此类推。再次,一些实施例涉及使用状态/所有权信息来细化何时/多少推测性数据将使用块组请求来请求。例如,如果两个连续的缓存行具有不同的状态(一个是共享的,另一个是独占的),并且对共享的缓存行做出存储器操作请求,则下一个缓存行(处于独占状态)可能不会被推测性地请求,因为其具有不同的状态并且被使用的可能性较低。
返回操作402,如果例如节点控制器3的逻辑216确定接收到的请求是来自本地处理器插槽的请求,比如来自CPU20、CPU21、CPU22、CPU23之一的请求,则可以在操作430处确定是否需要远程消息。如上所述,节点控制器(比如节点控制器3)与本地处理器插槽(例如,CPU20)之间的通道数量和带宽可以高于节点控制器3与另一个节点控制器(例如,节点控制器2)之间的通道数量和带宽。因此,当请求仅仅是本地处理器插槽请求时,块组请求不一定被使用,因为节点控制器(在这种情况下是节点控制器3)与处理器插槽(在这种情况下是CPU20)之间的足够带宽就足够了。此外,节点控制3与处理器插槽CPU20之间的等待时间也足够。然而,如果关于请求的消息,例如,将节点控制器3接收的请求转发到由CPU3控制的存储器204的消息,CPU3又由节点控制器2管理,在节点控制器3与节点控制器2之间可能出现等待时间和带宽问题,则可以利用块组请求。因此,对由存储器204维护的信息(例如,如上所述的具有或可能具有相同的状态/所有权特性的相邻缓存行)的多个推测性请求可以与实际接收的请求相结合。
在操作432处,可以执行检查以确定是否存在已经未决的信息。也就是说,如果对信息的请求已经被传输到远程处理器插槽,则不需要发出另一个请求。应该注意,当信息或数据未决时,存储一些标识/跟踪信息。如上所述,这种跟踪信息(例如,跟踪位)可以存储或维护在记分板型存储器结构或任何存储器中,包括例如触发器。如果另一个处理器插槽正在请求相同的信息,则可以根据一致性协议来处置对这个请求的处理。例如,在为对相同信息的第二请求服务之前,可能需要首先为对信息的第一请求服务以维护一致性。可替代地,每个存储器所有者(例如,每个处理器插槽)都可以管理请求,因此可以解决任何冲突或冲突的请求节点/处理器插槽动作。因此,信息的所有者可以确定如何处置对相同信息/对相同存储器块/缓存行的访问的同时或后续请求。例如,当信息被保存在FIFO中时,可以处理窥探请求以验证所有权。也就是说,信息可以被维护在处理器插槽的FIFO中,但是所述处理器插槽不拥有所述信息,并且所有权应该被准确地反映。
在操作434处,可以执行检查以确定已经请求的信息是否已经在FIFO中。如本文所述,块组请求聚集对信息的多个请求,其中所述多个请求中的至少一个是推测性请求。当接收到响应于这样的推测性请求的信息时,所述信息被维护在FIFO中,直到认为其应该从FIFO中被丢弃或者直到其不再是对推测性请求的响应。也就是说,处理器插槽可能实际上已经请求了所述信息,此时,所述信息可以被发送到本地处理器插槽(在上述操作414处)。如果所述信息还没有被接收并且在FIFO中,则处理可以前进到操作440(在下文中有更详细的描述)。
如果在操作432处确定信息还没有未决,则在操作436处生成并发送块请求,所述块请求包括对包含所请求的信息的存储器块/缓存行以及相邻或连续存储器块/缓存行的多个请求,例如,最多可达指定的数量(这反映了被推测为共同拥有并且具有相同的状态的存储器块/缓存行的数量)。如上所述,推测性请求的数量可以基于状态、时间和/或其他考虑/因素而变化。
在操作438处,标记已经被生成为未决的构成块组请求的每个请求。在实际传输所述请求之后,在操作440处,可以将所述请求标记为已被请求。如上所述,请求的标记可以包括清除用于跟踪未完成请求的跟踪位。
在操作442处,执行检查以确定是否所有跟踪位置都被占用,即,上文讨论的跟踪空间已满。如果否,则处理可以返回到操作402。如果是,则在操作444处,跟踪空间被检测为已满,并且再次,处理可以返回到操作402。
图5是根据本公开的实施例的示例计算装置500。在计算装置500的操作和功能与关于图1至图4B讨论的操作或功能相同或类似的情况下,该描述应该被解释为适用。例如,计算装置500可以是节点200或220,节点控制器(例如,节点控制器1、2、3、4之一)、设备300、过程状态机314等的实施例。计算装置500包括一个或多个硬件处理器502,其可以是一个或多个中央处理单元(CPU)、基于半导体的微处理器、和/或适于取得并执行存储在机器可读存储介质504中的指令的其他硬件装置。根据一个实施例,一个或多个硬件处理器502可以获取、解码并执行指令,比如指令506至510,以控制用于在一致性目录缓存的上下文中实施错误检测和控制的过程或操作。作为取得并执行指令的替代或补充,一个或多个硬件处理器502可以包括包含用于执行一个或多个指令的功能的电子部件的一个或多个电子电路,比如现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他电子电路。
一个或多个硬件处理器502被配置为执行存储在机器可读介质504上的指令。机器可读介质504可以是一种或多种类型的非暂态计算机存储介质。非限制性示例包括:闪速存储器、固态存储装置(SSD);存储区域网络(SAN);可移动存储器(例如,存储器棒、CD、SD卡等);或内部计算机RAM或ROM;以及其他类型的计算机存储介质。存储在机器可读介质504上的指令可以包括用于执行由所标识的功能实施的功能的各种子指令。例如,指令“接收一致性目录缓存操作请求”可以包括用于由节点控制器以关于图1至图4B讨论的方式从多处理器系统内的其他节点接收来自多个本地处理器和节点控制器的一个或多个一致性目录缓存操作请求的各种子指令。
一个或多个硬件处理器502可以执行指令506以确定在存储器操作请求中标识的存储器块的状态和所有权中的至少一者。认识到存储器通常以大于单个缓存行的块大小被分配给应用程序,使得很可能多个存储器块/缓存行具有相同的状态和所有权特性,并且如果接收到对第一缓存和可能的相关联缓存行的请求,则所述多个存储器块/缓存行最终将被请求。例如,可以检查一致性目录(例如,节点控制器的一致性目录缓存)以确定与存储器块/缓存行相关联的状态和所有权。
一个或多个硬件处理器502可以执行指令508以将存储器操作请求从关于单个存储器块存储器操作请求的存储器操作请求修改为块组存储器操作请求。如上所述,各种实施例涉及将主动/推测性请求作为组请求。例如,在本地处理器插槽处接收存储器操作请求,在所述本地处理器插槽处将执行远程消息传递以便执行/促进可以发送块组请求的读取而不是单个请求的读取。也就是说,对具有或可能具有实际请求的存储器块/缓存行的相同状态和所有权的多个存储器块/缓存行的请求也被发送到远程节点。以这种方式,将已经通过单个请求操作而不是会引入等待时间并消耗带宽的多个请求操作取得了对那些尚未请求的存储器块/缓存行的请求。
一个或多个硬件处理器502可以执行指令510以将修改后的存储器操作请求从接收存储器操作请求的节点传输到远程节点。
图6描绘了可以在其中实施本文所描述的各种实施例的变体的示例计算机系统600的框图。计算机系统600包括总线602、网络、交叉开关或用于传送信息的其他通信互连机制、与总线602耦接以用于处理信息的一个或多个硬件处理器604。硬件处理器604可以是例如一个或多个通用微处理器。在各种实施例中,一个或多个硬件处理器604可以执行非暂态机器可读指令以执行参考图1至图3以及图4A至4C讨论的实施例的各种功能。
计算机系统600还包括耦接到总线602或其他通信互连机制以用于存储要由处理器604执行的信息和指令的主存储器606,比如随机存取存储器(RAM)、缓存和/或其他动态存储装置。主存储器606还可以用于存储在执行要由处理器604执行的指令期间的临时变量或其他中间信息。这种指令当存储在处理器604可访问的存储介质中时使计算机系统600成为被定制为执行指令中指定的操作的专用机器。
计算机系统600进一步包括只读存储器(ROM)608或耦接到总线602或其他通信互连机制以用于存储处理器604的静态信息和指令的其他静态存储装置。如磁盘、光盘或USB拇指驱动器(闪存驱动器)等的存储装置610被提供并耦接到总线602,用于存储信息和指令。
计算机系统600可以进一步包括耦接到总线602或其他通信互连机制以用于显示、传送和输入信息和/或命令的显示器612、输入装置614和/或光标控制装置616。在一些实施例中,与光标控制装置相同的方向信息和命令选择可以通过在没有光标的情况下接收触摸屏上的触摸来实施。计算系统600可以包括用于实施GUI的用户界面模块,所述GUI可以作为由计算装置执行的可执行软件代码被存储在大容量存储装置中。通过举例的方式,所述模块和其他模块可以包括部件(比如软件部件、面向对象的软件部件、类部件和任务部件)、进程、函数、属性、过程、子例程、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表格、数组和变量。
通常,如本文所使用的词语“部件”、“引擎”、“系统”、“数据库”、“数据存储”等可以是指在硬件或固件中实施的逻辑,或者是指以如例如Java、C或C++等编程语言编写的、可能具有入口点和出口点的软件指令集。软件部件可以被编译并链接到可执行程序,被安装在动态链接库中,或者可以用如例如BASIC、Perl、或Python等解释性编程语言编写。将理解的是,软件部件可从其他部件或从其本身调用,和/或可以响应于检测到的事件或中断而被调用。被配置用于在计算设备上执行的软件部件可以被提供在计算机可读介质中,比如致密盘、数字视频盘、闪存驱动器、磁盘、或任何其他有形介质,或者可以被提供作为数字下载(并且可以原始地以要求在执行之前安装、解压缩或解密的压缩格式或可安装格式来存储)。这样的软件代码可以部分或全部地存储在执行计算设备的存储器设备上,以用于由计算设备执行。软件指令可以嵌入在如EPROM等固件中。将进一步理解的是,硬件部件可以包括如门和触发器等连接逻辑单元,和/或可以包括如可编程门阵列或处理器等可编程单元。
计算机系统600可以使用定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文所描述的技术,所述定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与计算机系统相结合使计算机系统600成为专用机器或者将其编程为专用机器。根据一个实施例,本文的技术由计算机系统600响应于处理器604执行主存储器606中包含的一个或多个指令的一个或多个序列而执行。在各种实施例中,这种指令可以类似于关于图5讨论的那些指令。在替代实施例中,可以使用硬接线电路来代替软件指令或者与软件指令相结合。
如本文所使用的术语“非暂态介质(non-transitory media)”及类似术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这种非暂态介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,比如存储装置610。易失性介质包括动态存储器,比如主存储器606。非暂态介质的常见形式例如包括软盘、软磁盘、硬盘、固态驱动器、磁带或者任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、具有孔图案的任何物理介质、RAM、PROM和EPROM、闪速EPROM、NVRAM、任何其他存储器芯片或者盒、以及所述介质的联网版本。
非暂态介质不同于传输介质但可以与传输介质结合使用。传输介质参与非暂态介质之间的信息传递。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线602的导线。传输介质还可以采用声波或光波的形式,比如在无线电波和红外数据通信期间生成的声波或光波。
计算机系统600还包括耦接到总线602或其他通信互连机制以用于实现通过一个或多个网络链路与一个或多个网络的双向通信的通信接口618。例如,通信接口618可以是综合业务数字网(ISDN)卡、电缆调制解调器、卫星调制解调器、调制解调器,以向对应类型的电话线、局域网(LAN)、广域网、或一种或多种类型的无线通信链路提供数据通信连接。
计算机系统600可以通过网络、网络链路和通信接口618发送消息和接收数据,包括程序代码。在因特网示例中,服务器可以通过因特网、ISP、本地网络和通信接口618传输应用程序的请求代码。
所接收的代码可以在被接收到时由处理器604执行,和/或存储在存储装置610、或其他非易失性存储器中以供稍后执行。
伴随本公开并在前面章节中描述的每个附图仅出于说明目的而提供,并且不应被解释为限制本公开的范围。本公开的范围由所附的权利要求书和使用相同或等效元件的本领域普通技术人员将想到的类似实施例所控制。根据本公开的设备和装置中存在的本领域已知的公共部件、电路、装置、机器或其他元件的省略不构成落入本公开的范围之外的这些部件。本领域的普通技术人员知道如何利用这种公共部件并且无需具体叙述这些公共部件就可以理解主题。
在前面章节中所描述的每个过程、方法、和算法均可以在由包括计算机硬件的一个或多个计算机系统或计算机处理器所执行的代码部件中实施并由所述代码部件全部或部分地进行自动化。所述一个或多个计算机系统或计算机处理器还可以操作以支持“云计算”环境中相关操作的进行、或者操作作为“软件即服务”(SaaS)。所述过程和算法可以在专用电路中部分地或全部地实施。上文所描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式进行组合。不同的组合和子组合旨在落入本公开的范围内,并且在一些实施方式中可以省略某些方法框或过程框。本文描述的方法和过程也不限于任何特定的顺序,并且与所述方法和过程相关的框或状态可以以适当的其他顺序进行、或者可以并行进行、或者以某种其他方式进行。可以向所公开的示例实施例中添加框或状态或从中移除框或状态。可以将某些操作或过程的进行分配到多个计算机系统或计算机处理器之中,使其不是仅驻留在单个机器内,而是跨多个机器部署。
如本文所使用的,电路可以利用任何形式的硬件、软件或其组合来实施。例如,可以实施一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑部件、软件例程或其他机制以构成电路。在实施中,本文描述的各种电路可以被实施为分立电路,或者所描述的功能和特征可以在一个或多个电路之中部分地或全部地共享。即使可以分别地描述或主张各种特征或功能元件作为单独的电路,这些特征和功能也可以在一个或多个公共电路之间共享,并且这种描述不应要求或暗示需要单独的电路来实施这样的特征或功能。在使用软件来全部或部分地实施电路的情况下,这样的软件可以被实施以与能够执行关于所述软件所描述的功能的计算系统或处理系统(比如计算机系统600)一起操作。
在通常的用法中,术语“或”应该总是以包括的意义来解释,除非排他意义被特别指出或在逻辑上必要。当例如术语“或”与术语“任一(either)”成对出现时,如在“A或B(either A or B)”中,“或”的排他意义被特别指出。作为另一个示例,排他意义也可以通过在项的列表之后附加“排他”或“但不是两者”来特别指出,如在“A或B,排他地”和“A和B,但不是两者”中。而且,不应将对单数形式的资源、操作或结构的描述理解为排除复数。除非另外特别说明,或在如所使用的环境内以其他方式被理解,否则条件语言(除其他外,比如“可(can)”、“可以(could)”、“可能(might)”、或“会(may)”)一般地旨在传达某些实施例包括(而其他实施例不包括)某些特征、元素和/或步骤。
除非另外明确说明,否则本文档中使用的术语和短语及其变体应被解释为开放式的而不是限制性的。形容词(比如“常规(conventional)”、“传统(traditional)”、“正常(normal)”、“标准(standard)”、“已知(known)”和类似含义的术语)不应被解释为将所描述的项限制为给定时间段或在给定时间可用的项,而是应该被理解为包含可能现在或将来的任何时候都可用或已知的常规、传统、正常或标准技术。在某些实例中,宽泛单词和短语(比如“一个或多个”、“至少”、“但不限于”或其他类似的短语)的存在不应被理解为是指在这类宽泛短语可能不存在的情况下意图或要求更窄的情况。
Claims (20)
1.一种本地节点控制器,包括:
一个或多个处理器;以及
存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:
在接收到指向远程节点的存储器操作请求时,所述存储器操作请求针对存储在所述远程节点的单个存储器块中的信息,确定在所述存储器操作请求中标识的所述单个存储器块的状态和所有权中的至少一者;
将所接收的存储器操作请求从单个存储器块存储器操作请求修改为块组存储器操作请求,所述块组存储器操作请求包括对存储在与所述单个存储器块具有共同所有权和共同状态中的至少一者的一个或多个附加存储器块中的信息的多个存储器操作请求,所述一个或多个附加存储器块尚未与一个或多个附加存储器操作请求相关联;以及
将所述块组存储器操作请求传输到所述远程节点。
2.如权利要求1所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器确定与所述单个存储器块相关联的信息是否已经存在于本地先进先出缓存中的指令。
3.如权利要求2所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器将与所述单个存储器块相关联的所述信息转发到由所述本地节点控制器管理的本地处理器插槽的指令。
4.如权利要求1所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器进行以下操作的指令:
接收存储在所述远程节点的所述单个存储器块中的信息和存储在所述一个或多个附加存储器块中的信息;
将存储在所述单个存储器块中的信息转发到本地处理器插槽;以及
将存储在所述一个或多个附加存储器块中的信息维护在本地先进先出缓存中。
5.如权利要求4所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器在所有跟踪位置变满时丢弃在所述本地先进先出缓存中维护的信息中的最旧信息的指令。
6.如权利要求4所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器取决于在所述本地先进先出缓存中维护的信息中的最旧信息的当前状态和过去状态中的至少一者来丢弃所述最旧信息的指令。
7.如权利要求4所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器丢弃所述本地先进先出缓存中维护的信息中的保持未被请求的最旧信息的指令。
8.如权利要求1所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器基于所述一个或多个附加存储器块的所有权和状态中的至少一者来确定要在所述块组存储器操作请求中分组的所述一个或多个附加存储器操作请求的数量的指令。
9.如权利要求1所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器指示对存储在所述单个存储器块中的信息的所述存储器操作请求是保持未决还是实际被请求的指令。
10.如权利要求1所述的本地节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器指示对存储在所述一个或多个附加存储器块中的信息的所述一个或多个附加存储器操作请求是保持未决还是实际被请求的指令。
11.一种节点控制器,包括:
一个或多个处理器;以及
存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:
确定是否已经从本地处理器插槽接收到存储器操作请求;
响应于确定已经从本地处理器插槽接收到存储器操作请求,确定是否需要到远程节点的消息来满足所述存储器操作请求;以及
响应于确定需要到远程节点的消息来满足所述存储器操作请求,传输除了从所述本地处理器插槽接收的所述存储器操作请求之外还包括推测性存储器操作请求的块组存储器操作请求。
12.如权利要求11所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器响应于确定需要到远程节点的消息而确定响应于所述存储器操作请求的信息是否未决的指令。
13.如权利要求12所述的节点控制器,其中,所述推测性存储器操作请求包括存储在相对于其中存储有作为所述接收的存储器操作请求的目标的信息的缓存行的连续缓存行中的信息,存储在所述连续缓存行中的信息是以下情况中的至少一者:与作为所述接收的存储器操作请求的目标的信息被共同拥有;以及与作为所述接收的存储器操作请求的目标的信息处于共同的状态。
14.如权利要求11所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器使用在跟踪空间中维护的跟踪条目来跟踪所述存储器操作请求的状态的指令。
15.如权利要求14所述的节点控制器,其中,在被执行时进一步使所述一个或多个处理器跟踪所述存储器操作请求的状态的所述指令进一步使所述一个或多个处理器将所述接收的存储器操作请求和所述推测性存储器操作请求中的每一个标记为未决。
16.如权利要求11所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器确定作为所述接收的存储器操作请求的目标的信息是未决的还是已经在由所述节点控制器控制的节点的先进先出队列中被接收的指令。
17.如权利要求16所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器将所述信息传输到所述本地处理器插槽并且更新所述接收的存储器操作请求的跟踪状态的指令。
18.如权利要求17所述的节点控制器,其中,在被执行时使所述一个或多个处理器更新所述跟踪状态的指令进一步使所述一个或多个处理器更新跟踪空间,在所述跟踪空间内,至少相对于所述跟踪空间中的时间和所述跟踪空间的可用性为基础来维护所述接收的存储器请求的跟踪状态和所述推测性存储器操作请求的跟踪状态。
19.如权利要求11所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器将对所述推测性存储器操作请求的响应存储在先进先出队列中的指令。
20.如权利要求19所述的节点控制器,其中,所述存储器单元包括在被执行时进一步使所述一个或多个处理器在所述推测性存储器操作请求变成实际的附加存储器操作请求时传输对所述推测性存储器操作请求中的每一个的响应的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/888,123 | 2020-05-29 | ||
US16/888,123 US11314637B2 (en) | 2020-05-29 | 2020-05-29 | System and method for efficient cache coherency protocol processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742258A CN113742258A (zh) | 2021-12-03 |
CN113742258B true CN113742258B (zh) | 2023-12-01 |
Family
ID=78509163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110425779.1A Active CN113742258B (zh) | 2020-05-29 | 2021-04-20 | 用于高效缓存一致性协议处理的节点控制器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11314637B2 (zh) |
CN (1) | CN113742258B (zh) |
DE (1) | DE102021107227A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785292A (zh) * | 2023-12-26 | 2024-03-29 | 上海合芯数字科技有限公司 | 多核处理器系统的缓存一致性的验证方法及验证装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1252142A (zh) * | 1997-04-14 | 2000-05-03 | 国际商业机器公司 | 多处理器计算机系统中的读取操作 |
US7386674B1 (en) * | 2005-04-25 | 2008-06-10 | Netapp, Inc. | Method and apparatus to provide a unified readahead scheme for multiple sources |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155569B2 (en) * | 2001-02-28 | 2006-12-26 | Lsi Logic Corporation | Method for raid striped I/O request generation using a shared scatter gather list |
US9582204B2 (en) * | 2014-01-07 | 2017-02-28 | Apple Inc. | Speculative prefetching of data stored in flash memory |
US10635596B2 (en) * | 2015-10-02 | 2020-04-28 | Sony Interactive Entertainment Inc. | Information processing device, access controller, information processing method, and computer program for accessing memory having access units of different sizes |
US10379856B2 (en) * | 2017-06-04 | 2019-08-13 | International Business Machines Corporation | Multicopy atomic store operation in a data processing system |
US10592465B2 (en) * | 2017-10-26 | 2020-03-17 | Hewlett Packard Enterprise Development Lp | Node controller direct socket group memory access |
-
2020
- 2020-05-29 US US16/888,123 patent/US11314637B2/en active Active
-
2021
- 2021-03-23 DE DE102021107227.1A patent/DE102021107227A1/de active Pending
- 2021-04-20 CN CN202110425779.1A patent/CN113742258B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1252142A (zh) * | 1997-04-14 | 2000-05-03 | 国际商业机器公司 | 多处理器计算机系统中的读取操作 |
US7386674B1 (en) * | 2005-04-25 | 2008-06-10 | Netapp, Inc. | Method and apparatus to provide a unified readahead scheme for multiple sources |
Non-Patent Citations (1)
Title |
---|
多处理器系统缓存一致性的分析;贺宁;《电子工程师》;20070215;第33卷(第2期);第46-48、67页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113742258A (zh) | 2021-12-03 |
US11314637B2 (en) | 2022-04-26 |
DE102021107227A1 (de) | 2021-12-02 |
US20210374050A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6665774B2 (en) | Vector and scalar data cache for a vector multiprocessor | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
CN110865968B (zh) | 多核处理装置及其内核之间数据传输方法 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
JP2022534892A (ja) | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ | |
US6470422B2 (en) | Buffer memory management in a system having multiple execution entities | |
US7469318B2 (en) | System bus structure for large L2 cache array topology with different latency domains | |
US7490200B2 (en) | L2 cache controller with slice directory and unified cache structure | |
US6681295B1 (en) | Fast lane prefetching | |
US11010298B2 (en) | Reducing cache transfer overhead in a system | |
US8762651B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US8423736B2 (en) | Maintaining cache coherence in a multi-node, symmetric multiprocessing computer | |
US20180004661A1 (en) | Operation processing device, information processing apparatus, and control method for operation processing device | |
US8015364B2 (en) | Method and apparatus for filtering snoop requests using a scoreboard | |
US20120198178A1 (en) | Address-based hazard resolution for managing read/write operations in a memory cache | |
US11169921B2 (en) | Ternary content addressable memory-enhanced cache coherency acceleration | |
US7360021B2 (en) | System and method for completing updates to entire cache lines with address-only bus operations | |
CN113742258B (zh) | 用于高效缓存一致性协议处理的节点控制器 | |
CN113656212B (zh) | 用于缓存目录tcam错误检测和纠正的系统和方法 |
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 |