CN113656212A - 用于缓存目录tcam错误检测和纠正的系统和方法 - Google Patents

用于缓存目录tcam错误检测和纠正的系统和方法 Download PDF

Info

Publication number
CN113656212A
CN113656212A CN202110419037.8A CN202110419037A CN113656212A CN 113656212 A CN113656212 A CN 113656212A CN 202110419037 A CN202110419037 A CN 202110419037A CN 113656212 A CN113656212 A CN 113656212A
Authority
CN
China
Prior art keywords
entry
processors
tcam
cam
redundant
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.)
Granted
Application number
CN202110419037.8A
Other languages
English (en)
Other versions
CN113656212B (zh
Inventor
F·R·德罗普斯
T·E·麦基
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN113656212A publication Critical patent/CN113656212A/zh
Application granted granted Critical
Publication of CN113656212B publication Critical patent/CN113656212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及用于缓存目录TCAM错误检测和纠正的系统和方法。提供了用于解决与使用冗余三态内容可寻址存储器(TCAM)来促进错误检测和纠正相关联的裸片效率低下的系统和方法。仅冗余TCAM的一部分(或同一TCAM的多个部分)被保留用于已修改的一致性目录缓存条目,而剩余的多个部分可用于未修改的一致性目录缓存条目。为冗余的、已修改的一致性目录缓存条目保留的空间量可以是可编程的和可适应的。

Description

用于缓存目录TCAM错误检测和纠正的系统和方法
背景技术
在对称多处理(SMP)系统中,多个处理器被配置为共享公共操作系统和存储器资源。单个操作系统副本管理系统中的所有处理器。因为所有处理器都经由共享总线或网 络进行连接并且可以访问相同的共享存储器资源,所以SMP也被称为“紧耦合多重处理(tightly coupled multiprocessing)”。由于所有处理器并行运行,因此SMP系统的吞吐量高于单处理器系统。此外,提高了可靠性。如果处理器插座发生故障(例如,该处理器 的板上发生短路),则该处理器的工作负荷可以分配到其他插座中,而如果单处理器中 的处理器发生故障,则系统将发生故障。
附图说明
参考以下附图根据一个或多个不同的实施例详细地描述本公开。附图仅出于说明的 目的而提供,并且仅描绘典型实施例或示例实施例。
图1是根据本文公开的技术的实施例的示例架构。
图2是根据本文公开的技术的实施例的示例节点。
图3A是根据本文公开的技术的一个实施例的一致性目录缓存实施设备的示例布局 的示意性表示。
图3B是根据本文公开的技术的一个实施例的示例TCAM的示意性表示。
图3C是根据本文公开的技术的一个实施例的示例SRAM的示意性表示。
图3D是根据本文公开的技术的一个实施例的示例单独的TCAM区域的示意性表示。
图4A示出了根据本文公开的技术的一个实施例的示例一致性目录缓存管理流程的 第一部分。
图4B示出了图4A的示例一致性目录缓存管理流程的第二部分。
图5是根据本文公开的技术的一个实施例的用于执行TCAM错误检测和纠正的示例计算装置。
图6是可以在其中实施本公开中描述的实施例的示例计算系统。
附图并非是穷举的,并且不将本公开限制于所公开的精确形式。
具体实施方式
非统一存储器访问(NUMA)是针对SMP系统的存储器设计。通常,NUMA架构包 括通过SMP总线或网络互连的多个节点。每个节点本身是小规模的SMP,包括几个在它 们自己之间互连的处理器插座和相关联存储器,节点内的存储器由所有处理器插座共享。 节点内的存储器可以被认为是节点的处理器的本地存储器,而其他节点的存储器可以被 认为是远程存储器。每个节点内的节点控制器使得处理器插座能够访问系统内的远程存 储器。节点控制器可以被认为是高级存储器控制器,管理对部分或全部本地存储器的访 问以及节点的处理器插座对远程存储器的访问。
由于实施存储器的方式,每个节点控制器都参与系统的缓存一致性协议。缓存一致 性可能需要确保数据块的统一,这意味着要使用的任何变量在所有本地缓存中都具有一 致的值。在这点上,一致性目录可以包括条目信息以跟踪可以在多处理器共享存储器系统中的处理器之间共享的每个存储器块的状态和所有权。因为一致性目录可能太大而不能存储在节点控制器上,所以一致性目录可以存储在主机存储器中,并且节点控制器可 以使用一致性目录缓存来快速访问/降低对处理器的带宽影响。
综上所述,一致性目录缓存可以被描述为存储一致性目录条目的子集的部件,以提 供更快的访问和增加的数据带宽。对于基于目录的一致性,一致性目录缓存可以由节点控制器用来管理计算机系统或不同计算机系统的不同节点之间的通信。在这点上,一致 性目录缓存可以跟踪计算机系统或不同计算机系统的每个缓存块(或缓存行)的状态。 例如,一致性目录缓存可以跟踪计算机系统或不同计算机系统的哪些节点共享缓存块。
一致性目录缓存可以包括与多个存储器块相关的信息。为了便于实施,这些存储器 块的大小可以被定义为与计算机系统的系统缓存行相同。为了讨论清楚起见,这些缓存行大小的存储器块可以被称为缓存行。缓存行信息可以标识在计算机系统(或多个不同 的计算机系统)中存储缓存行的处理器(或另一个装置)。一致性目录和一致性目录缓存 可以包括与每个系统存储器缓存行相关联的一致性状态和所有权信息。随着缓存行数量 的增加,一致性目录以及类似的一致性目录缓存的大小可能类似地增加。出于性能原因, 一致性目录缓存的大小的增加可能导致与一致性目录缓存相关联的裸片面积的使用的相 应增加。在一些系统中,三态内容可寻址存储器(TCAM)用于实施一致性目录缓存,其 中TCAM保存要搜索的标签,并且其中TCAM的基础是静态随机存取存储器(SRAM)。 因此,错误检测和纠正被用来维护可用性,这当前是通过复制来实现的,即,两个存储重 复/冗余TCAM标签条目的TCAM。使用两个TCAM进行错误检测和纠正也是裸片面积 低效的。
因此,各种实施例涉及仅在需要保护已修改的一致性目录缓存条目时提供TCAM复制(duplication)。具体地,一定数量的TCAM条目被保留用作冗余TCAM配置。
在一个实施例中,冗余TCAM条目的数量可以是可编程的并且在两个TCAM中使 用相同的行。在TCAM的冗余条目区域之间使用相同/对应的行允许更容易地询问第二 TCAM以确定当应该有两个命中/匹配时只有一个命中/匹配发生时,第一TCAM或第二 TCAM中的哪个出错(在下文中有更详细的描述)。另外,当两个TCAM中都存在匹配 时,行号/地址可以用作指向基础SRAM位置的直接指针。根据另一个实施例,不必将冗 余/已修改的条目写入到每个TCAM中的相同行。例如,可以构建使用例如单个TCAM 并且预期所述TCAM的上半部/上部部分和下半部/下部部分两者中的匹配以便为已修改 的条目提供冗余的电路。尽管涉及到对单个TCAM的更多写操作(四次写入),而不是 并行对两个TCAM中的每一个进行两次写入,但是可以实现相同的裸片大小效率。剩余 的TCAM容量可以保存未修改的条目。为了管理以这种方式配置的TCAM,每个TCAM 被视为/管理为两个单独的缓存区域(一个用于已修改的条目,一个用于未修改的条目)。 每个缓存区域维护单独的最近最少使用(LRU)链表以标识要逐出的条目。
在另一个实施例中,条目指派可以是自由流动的,其中当需要已修改的条目的冗余 条目存储时,两个TCAM条目被逐出。在这个实施例中,考虑了条目到TCAM的动态分 配,其中不需要任何将TCAM空间划分成冗余条目区域和非冗余条目区域的“硬”划分。 因此,当要存储冗余条目时,两个空闲条目位置被释放(因为冗余条目存储在两个TCAM 中)。如果LRU条目是冗余条目,则逐出所述LRU条目会产生这两个条目位置。如果 LRU条目是非冗余条目,则可以逐出额外的条目以获得额外的条目空间。在另一个实施 例中,已修改的条目可以通过执行已修改的信息到主机/系统存储器的回写来替换非冗余 /未修改的LRU条目。如果逐出未修改的条目,则其可以被默默地删除(drop in)。
图1图示了根据本公开的实施例的示例架构100。示例架构100仅出于说明的目的而提供,并且不应被解释为将本文公开的主题的范围限制于架构100。本领域普通技术人员将知道,本文公开的技术的实施例适用于利用共享存储器资源的任何多处理系统。如 图1所示,架构100包括16个节点。在各种实施例中,架构100内可以包括超过16个 节点。每个节点(0至15)连接到架构100内的每个其他节点。在各种实施例中,节点 可以如架构100中所描绘的那样直接连接到一个或多个节点,而在其他实施例中,节点 可以通过其他装置连接到一个或多个节点,所述其他装置包括但不限于路由器和交换机。 在各种实施例中,每个节点(0至15)可以包括一个或多个处理器和一个或多个节点控 制器(图1中未示出),所述节点控制器是被配置为使得每个节点内的处理器能够访问 所有其他节点上的存储器的高级存储器控制器。
图2图示了根据本公开的实施例的示例节点200。在各种实施例中,节点200可以表示关于图1讨论的节点(0至15)中的一个或多个。节点200仅出于说明的目的而提供, 并且不应被解释为将本文所讨论的技术的范围仅限制于节点200。节点200仅示出了与 解释本公开的技术相关的那些部件,并且本领域普通技术人员将知道如何实施节点200 中省略的处理系统的公共部件。
在各种实施例中,节点200可以被实施为单个集成电路,包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、复杂可编程逻辑 装置(CPLD)、或其他集成电路部件。在一些实施例中,节点200可以包括其中设置有 多个芯片组的印刷电路板(PCB)或多芯片模块。如图所示,节点200包括四个处理器 CPU0、CPU1、CPU2、CPU3。每个处理器可以包含一个或多个处理器核。节点200可以 具有与SMP系统类似的结构,每个处理器CPU0、CPU1、CPU2、CPU3彼此通信地耦接 并且可以访问每个存储器201、202、203、204。在各种实施例中,存储器201、202、203、 204可以包括一种或多种类型的非暂态机器可读存储介质,包括但不限于:固态存储装置 (SSD)、单直插式存储器模块(SIMM)、双列直插式存储器模块(DIMM)、动态随 机存取存储器(DRAM)、静态随机存取存储器(SRAM)、以及其他常见类型的计算机 存储器。
每个处理器CPU0、CPU1、CPU2、CPU3管理其相应的存储器部件。对存储在存储 器201、202、203、204上的数据的请求被指向相应的处理器CPU0、CPU1、CPU2、CPU3。 作为非限制性示例,如果CPU2需要本地存储器204中的地址处的数据块,则CPU2可 以向CPU3发送请求以取得所请求的数据块并将所述数据块提供给CPU2。在各种实施例 中,每个存储器201、202、203、204可以具有被配置为控制对其相应存储器部件的数据 块的访问的相关联存储器控制器。在一些实施例中,每个存储器控制器可以被实施为专 用逻辑电路。
尽管图示了每个存储器201、202、203、204直接连接到一个处理器CPU0、CPU1、CPU2、CPU3,但是本领域普通技术人员将知道,在一些实施例中,每个处理器插座CPU0、CPU1、CPU2、CPU3可以连接到一个或多个存储器部件。作为非限制性示例,CPU0和 CPU3可以连接到存储器201,从而允许处理器CPU0、CPU3两者直接访问存储器201。
存储器201、202、203、204与系统内其他节点的本地存储器相结合以形成具有全局地址空间的共享主存储器。在各种实施例中,存储器201、202、203、204可以组合成本 地节点存储器,并且系统中其他节点的存储器可以被认为是远程存储器。每个存储器201、 202、203、204可以是共享主存储器的逻辑部分,类似于3级缓存。在各种实施例中,每 个处理器CPU0、CPU1、CPU2、CPU3可以包括专用CPU缓存(即,1级缓存、2级缓 存)(图2中未示出),用于存储来自本地存储器(即,存储器201、202、203、204的 组合)或远程存储器(即,与远程节点相关联的存储器)的频繁使用的数据的副本。
在各种实施例中,每个处理器插座可以具有专用缓存205、206、207、208,所述缓存包括分别与相应处理器CPU0、CPU1、CPU2、CPU3相关联的更小、更快的硬件存储 器。缓存205、206、207、208可以以各种缓存架构来实施,包括但不限于组相联缓存、 全关联缓存、直接映射缓存示意图、以及本领域中常见的其他缓存架构。在一些实施例 中,缓存205、206、207、208可以作为单个部件在处理器CPU0、CPU1、CPU2、CPU3 内实施。缓存205、206、207、208可以包括一种或多种类型的公共高速缓冲存储器部件, 包括但不限于SRAM、同步DRAM(SDRAM)、闪速存储器、嵌入式DRAM(eDRAM)、 非易失性RAM(NVRAM)、以及其他类型的缓冲存储器部件。每个相应的缓存205、 206、207、208专用于每个处理器CPU0、CPU1、CPU2、CPU3,从而保存来自共享主存 储器的数据块值的副本以通过减少从系统内的较慢共享主存储器取得数据的需要来提高 处理速度。
如上文所讨论的,CPU缓存(图2中未示出)被配置为保存从节点的本地存储器(即,从存储器201、202、203、204)或远程存储器(即,与远程节点相关联的存储器)拉出 的数据块。缓存205、206、207、208可以被配置为存储从远程存储器中的地址、从不同 的节点取得的数据块的副本。在一些实施例中,CPU缓存和缓存205、206、207、208可 以组合成单个部件。
节点200包括两个节点控制器,节点控制器1和节点控制器2。如上文所讨论的,节点控制器1和节点控制器2的任务是管理相应处理器CPU0、CPU1、CPU2、CPU3对远 程存储器以及从远程处理器对本地存储器的访问。在各种实施例中,每个节点可以有更 少或更多的节点控制器。每个节点控制器充当系统互连,从而为每个处理器CPU0、CPU1、 CPU2、CPU3提供对共享存储器内的存储器地址的访问,包括系统中其他节点的存储器 部件中存在的地址。在各种实施例中,节点控制器1和2可以实施为单独的处理器部件, 而在其他实施例中,节点控制器1和2可以实施为一个或多个专用逻辑部件,包括但不 限于被配置为执行特定状态操作的状态机。每个节点控制器1和2可以包括多个结构连 接器(图2中未示出)以将节点控制器1和2与系统内的其他节点互连(比如在图1所 示的示例中)。
在各种实施例中,每个节点控制器1和2可以控制处理器CPU0、CPU1、CPU2、 CPU3的子集。在图示的示例中,节点控制器1通信地耦接到处理器CPU0和CPU1,而 节点控制器2通信地耦接到处理器CPU2、CPU3。此外,每个节点控制器1和2可以代 表远程节点上的所有处理器。对于处理器CPU0、CPU1、CPU2、CPU3中的每一个,节 点控制器1和2表现为单个远程处理器。这允许处理器维护更紧凑的一致性目录和装置 寻址。作为非限制性示例,处理器的一致性目录可以仅跟踪4到8个其他处理器或装置 的所有权信息的状态。
如图2所示,每个节点控制器1和2包括一个或多个三态内容可寻址存储器(TCAM)210a、210b、210c、210d。TCAM是特殊类型的高速存储器,其在一个时钟周期内搜索其 全部内容,类似于普通的内容可寻址存储器(CAM)。尽管CAM为每个被搜索的位提 供二分搜索模式(0或1),但TCAM允许使用至少三个数据搜索条件来存储和查询数 据:0、1和X。X被称为“无关”或“通配符”状态,其指示一个或多个位在搜索期间 不需要精确匹配来指示匹配(也称为命中)。使用三个搜索条件使得TCAM能够基于模 式匹配执行更广泛的搜索,而不是传统CAM的精确匹配二分搜索。TCAM可以对表示 各种大小的存储器块的条目进行操作,从而允许动态调整地址标签的大小来进行搜索。 这些动态大小的标签链接到动态大小的远程或本地存储器数据块。TCAM允许单个条目 覆盖比相关缓存行的大小更大或更小的范围,从而减少对用于每个关注地址的单独特定 条目(对于CAM来说,这是必需的)的需要。然而,应该注意,各种实施例不一定限于 TCAM,而是可以在CAM中应用/实施。本领域的普通技术人员将理解,如果应用于CAM (而不是TCAM),则标签大小将是相同的,这与TCAM相反,在TCAM中,标签大小 可以根据一致性目录缓存跟踪多大的存储器块而变化。
每个TCAM 210a、210b、210c、210d可以被配置为跟踪可由处理器CPU0、CPU1、CPU2、CPU3之一或系统中的任何其他处理器插座访问的任何数据块的所有权。如上文 所讨论的,存在可以在SMP中实施以解决一致性问题的各种缓存一致性协议。通常,这 些缓存一致性协议利用状态标签来确保维护一致性,常见状态包括已修改(modified)(M)、 独占(exclusive)(E)、共享(shared)(S)和无效(invalid)(I)。已修改指示缓存 行是“脏的”,这意味着值已被修改并且不同于共享存储器中的值。独占指示缓存行的 值与共享存储器中的值相同并且这个缓存维护该数据块的唯一缓存副本。共享指示值与 共享存储器的存储器数据块中的值相同,但在系统内的其他缓存中存在一个以上的主存 储器数据块副本。无效指示缓存行数据无效并且可以重复使用。每一个缓存行都以无效 状态开始,指示没有相应数据块的所有权。
为了说明缓存一致性协议操作的示例,CPU0可以读取存储器202中的地址X。即,CPU0向CPU1发送读取消息。CPU1确保地址X的数据不被任何处理器(例如,CPU0、 CPU1、CPU2或CPU3中的任何一个)持有。为了确保数据不被任何处理器持有,CPU1 向节点控制器1发送窥探请求(snoop request)消息。应该注意,窥探请求不被发送到 CPU0,因为CPU0是发送读取请求的处理器。节点控制器1在其一致性目录缓存中可能 有未命中(即,在TCAM中找不到(在下文中有更详细的描述)。节点控制器1从CPU1 的存储器获取一致性目录状态,并且节点控制器1用“无主”(unowned)消息来响应窥 探请求。节点控制器1将一致性目录状态保存到一致性目录缓存。因为CPU1现在知道 没有其他处理器具有所请求的数据,所以其可以读取存储器202的地址X,并将数据发 送到CPU0。
接下来,CPU2可以读取存储器202中的地址X,其中CPU2向节点控制器2发送读 取消息,并且节点控制器2向节点控制器1转发读取消息。节点控制器1在其TCAM中 有命中(如上所述,当其被保存时),并且一致性目录缓存指示数据是“无主的”。因 此,节点控制器1将读取转发给CPU1。CPU1确保地址X的数据不被任何处理器持有。 为此,CPU1向CPU0发送窥探消息(与上文类似,CPU1不向节点控制器2发送窥探消 息,因为所述节点控制器是读取的来源。CPU0向CPU1发回消息,指示其已放弃数据的 所有权,并且CPU1将数据发送给节点控制器1。节点控制器1将数据转发给节点控制器 2,并且节点控制器1更新一致性目录缓存状态以指示CPU2拥有地址X的数据。节点控 制器2然后可以将数据消息转发给CPU2。
参考图3A,示例一致性目录缓存管理设备或电路300可以在节点控制器(例如,节点控制器1和2(图2))处实施,并且可以包括多路复用器302以接收如处理器窥探请 求(在上述缓存一致性示例中引用)或节点控制器请求等请求。处理器窥探请求可以被 描述为由本地处理器发起的询问存储器块或缓存行的状态和所有权的操作。节点控制器 请求可以被描述为由远程处理器或远程节点控制器发起的操作,所述操作被发送到包括 设备300的本地节点控制器。所述请求可以被指向一致性目录标签304以确定是否存在 关于特定存储器块(即,缓存行)的状态信息。一致性目录标签304可以包括与多个存 储器块相关的信息。即,并且参考图3B,一致性目录标签304可以包括与系统存储器块 或缓存行相对应的高地址(upper address)的集合,其中状态和所有权信息被缓存在一致 性目录缓存(例如,维护在TCAM 306A和306B中)中。例如,高地址可以包括高地址 A、高地址B、……、高地址N等。每个高地址可以具有与每个条目相关联的对应行号 (例如,行号1、2、……、N)。取决于位置,每个高地址可以是0至N个无关位。如 本文所公开的,为了便于实施,这些存储器块的大小可以被定义为与计算机系统(或不 同的计算机系统)的系统缓存行相同。为了讨论清楚起见,这些缓存行大小的存储器块 可以被称为缓存行。
所有权可以被描述为关于哪个节点或处理器拥有被跟踪的系统存储器块或缓存行的 所有权的标识。在共享状态下,所有权可以包括共享系统存储器块或缓存行的节点或处 理器。
上述请求可以由一个或多个TCAM 306A和306B(每个TCAM可以是TCAM 306A 至210d之一的实施例)处理。对于TCAM 306A,每个缓存条目可以包括TCAM条目以 保存高地址以便与请求进行比较。这个高地址可以称为标签。关于高地址,处理器系统 可以包括允许定义被访问的数据位的字节或字地址。当多个字节或字被一起分组成较大 的块(比如缓存行)时,高地址位可以用于唯一地定位系统存储器的每个块或缓存行,并 且低地址(loweraddress)位可以用于唯一地定位系统存储器块或缓存行内的每个字节或 字。
标签可以被描述为用于标识高地址的链接描述符。目录标签可以被描述为在高速缓 冲存储器的目录部分中使用的链接描述符。一致性目录标签304可以包括一致性目录缓存的所有标签,并且可以被描述为在一致性目录高速缓冲存储器的目录部分中使用的链接描述符。一致性目录标签304可以包括定义被跟踪的系统存储器块的高地址位。
目录标签可以表示唯一地标识目录条目的一致性目录缓存地址的部分。目录标签可 以用于检测一致性目录标签304内目录缓存行的存在,并且如果是,则匹配条目可以标识缓存信息在目录状态存储中的位置。一个一致性目录缓存条目可以表示存储器的单个系统缓存行的一致性状态和所有权。
在匹配编码器308处,由TCAM 306A处理的请求可以被处理以确定一致性目录标签304的相关联行(例如,地址)的二进制表示。对于TCAM 306A,TCAM 306A的每 一行或条目可以包括匹配行,当该条目与输入搜索值相匹配时,所述匹配行被激活。例 如,如果TCAM306A具有1024个条目,则其将输出1024条匹配行。这1024条匹配行 可以被编码成二进制值,所述二进制值可以用于例如寻址存储状态和所有权信息的存储 器。例如,如果匹配行255是活动的(active),则来自匹配编码器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”并且可以被指定为“无关” (don’t care)存储器状态。缓存行地址的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条目以执行如本文所公开的将由单 个条目表示的存储器块的分组。
状态信息可以包括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内的其他电路。所述其他电路可以包括向一致性目录缓存发送初始请求的电路。
如上所述,通常通过将一致性目录缓存条目的冗余副本存储在单独的TCAM中来使用多个TCAM(例如,两个TCAM)来实施错误检测/纠正。即,一致性目录缓存可以被 修改,并且因此一致性目录缓存条目的最近版本驻留在节点控制器一致性目录缓存中。 因此,如果存在TCAM故障,则一致性状态、所有权和系统缓存一致性可能会丢失,并 且因此使用冗余TCAM来维护一致性目录缓存条目的另一个副本。然而,TCAM往往很 大,并且使用多个TCAM是裸片面积低效的。
因此,冗余TCAM存储的使用被保留用于脏(dirty)一致性目录缓存条目。即,仅TCAM的一部分被保留用于冗余条目,而TCAM的多个剩余部分可以用于非冗余条目。 现在参考图3D,第一TCAM(例如,TCAM 306A)可以包括用于非冗余一致性缓存条 目306A-1的区域和为冗余一致性目录缓存条目保留的另一个区域306A-2。另一个TCAM (例如,TCAM 306B)还可以包括用于非冗余一致性缓存条目306B-1的区域和为冗余一 致性目录缓存条目306B-2保留的另一个区域。区域306A-2和306B-2用于存储脏的/已 修改的一致性目录缓存条目的冗余副本。如上所述,在其他实施例中,单个TCAM(或 CAM)可以包括多个冗余条目区域(与在两个单独的TCAM/CAM之间分割冗余条目区 域相反)。例如,在其他实施例中,冗余条目区域306A-2可以被分成不同的冗余条目区 域以在单个TCAM(即,TCAM 306A)中存储已修改的条目。
例如,并返回参考图2,CPU2可以读取存储器202中的地址X,其中CPU2向节点 控制器2发送读取消息,并且节点控制器2向节点控制器1转发读取消息。节点控制器1在TCAM210a中有命中,并且一致性目录缓存指示数据是“无主的”。因此,节点控 制器1将读取转发给CPU1。CPU1通过向CPU0发送窥探消息来确保地址X的数据不被 任何处理器持有。CPU0向CPU1发回消息,指示其已放弃数据的所有权,并且CPU1将 数据发送给节点控制器1。节点控制器1将数据转发给节点控制器2,并且节点控制器1 更新一致性目录缓存状态以指示CPU2拥有地址X的数据。节点控制器2然后可以将数 据消息转发给CPU2。因为一致性目录缓存状态已经被修改,所以条目被认为是脏的,并 且一致性目录缓存条目被存储在冗余条目区域306A-2以及冗余条目区域306B-2中。
使用冗余存储是因为一致性目录缓存条目的最新、最近版本仅驻留在节点控制器的 一致性目录缓存中(不在主/主机存储器中)。例如,当TCAM标签条目附加有纠错码时,当TCAM位错误发生时,使用标签和对应的纠错码两者的搜索可以导致未命中。然而, 这个附加的纠错码仅提供错误保护,直到该条目被修改为止。如果实施一致性目录缓存 的TCAM发生故障,则系统缓存一致性可能会丢失,除非执行冗余缓存。通过使用冗余 TCAM,可以在SMP系统中保留错误检测和纠正功能。再次参考图3D,TCAM 306A包 括冗余条目区域306A-2,并且其中存储的任何条目也存储在TCAM 306B的冗余条目区 域306B-2中,并且反之亦然。应该理解,分别在TCAM 306A和306B两者中的相同行 被用于冗余条目区域306A-2和306B-2。
然而,作为非脏/未修改的条目的任何一致性目录缓存条目都不以冗余方式存储。即, 未在本地(例如,在节点控制器处)修改的干净条目是在节点控制器的一致性目录缓存中准确反映主/主机存储器的内容的条目。因为这样的条目已经准确地反映了主/主机存储器,所以即使存储所述条目的TCAM发生故障,一致性也不会丢失,因为一致性目录缓 存未命中将导致从存储在主/主机存储器中的完整目录读取。返回参考图3C,干净条目可 以存储在TCAM 306A和306B的非冗余条目区域中,例如,在冗余条目区域306A-1或 306B-1之一中。例如,干净条目0到n可以存储在TCAM 306A的非冗余条目区域306A- 1中,而后续的干净条目n+1到n+m可以存储在TCAM 306B的非冗余条目区域306B- 1中。
例如,并且返回参考图2,CPU0可以读取存储器202中的地址X。即,CPU0向CPU1 发送读取消息。CPU1通过向节点控制器1发送窥探请求消息来确保地址X的数据不被 任何处理器(例如,CPU0、CPU1、CPU2或CPU3中的任何一个)持有。节点控制器1 在其一致性目录缓存中可能有未命中(即,在TCAM中找不到(在下文中有更详细的描 述)。节点控制器1从CPU1的存储器获取一致性目录状态,并且节点控制器1用“无 主”消息来响应窥探请求。节点控制器1将一致性目录状态保存到一致性目录缓存。因 为CPU1现在知道没有其他处理器具有所请求的数据,所以其可以读取存储器202的地 址X,并将数据发送到CPU0。由于一致性目录缓存状态没有改变,因此对应的标签条目 是干净的标签条目,并且可以分别存储在TCAM306A或306B的非冗余条目区域306A- 1或306B-1(图3D)中。
因为不是整个TCAM被归为存储冗余一致性目录缓存条目,所以提高了裸片面积效率。例如,在一个实施例中,如果TCAM中25%的条目被用作冗余条目,则与常规的“完 全冗余”TCAM方案相比,可以提供75%以上的非冗余TCAM条目。即,假设1024个 完全冗余的条目,25%是256,每个TCAM中剩下768个条目,总计256+768*2=1792 个条目,并且(1792-1024)/1024=75%。根据一些实施例,可以留出一定数量的TCAM条 目作为冗余条目,并且可以确定被留出作为冗余条目的TCAM条目的这个数量/被留出作 为冗余条目的TCAM条目的这个数量可以是可编程的。根据其他实施例,为冗余条目留 出的TCAM条目的数量可以基于脏条目的数量是自适应的。在一个实施例中,可以用 LRU算法跟踪所有冗余和非冗余条目,并且可以替换最早的条目。可替代地,在另一个 实施例中,可以例如针对已修改条目的最大数量指定可编程阈值,所述阈值可以利用计 数器来实施,使得当计数达到所述可编程阈值时,将开始逐出条目。根据又一实施例,还 可以基于查看条目的过去替换的算法来调整可编程阈值。例如,如果电路维护两个单独 的LRU链表,并且在某个时间段内有更多的冗余条目被替换,则可以调整可编程阈值以 增加允许的冗余条目的数量,或反之亦然。
参考图4A和图4B,描述了根据一些实施例的可被执行来管理一致性目录缓存的示例操作的流程图。节点控制器可以接收消息或请求,并且在操作400处,执行检查以确 定消息/请求是否包括缓存搜索操作,比如窥探请求。如上所述,这样的消息/请求可以在 节点控制器的多路复用器(例如,MUX 302)处接收。
基于接收到的消息/请求涉及一致性目录缓存搜索的确定,在操作402处,过程状态 机314可以触发TCAM搜索,例如,触发TCAM 210A和210B搜索其相应的一致性目 录标签(其一个示例是一致性目录标签304)。即,与包括在接收到的消息/请求中的缓 存行相关联的地址可以用于在一个或多个TCAM中搜索匹配的标签值(在这个示例中, 在TCAM 306A和306B中的一个或多个中)。如本文所公开的,对于TCAM实施的一 致性目录标签,每个缓存条目可以包括TCAM条目以保存要对照着比较的高地址或标签。 如上文所讨论的,目录标签可以表示目录地址中唯一地标识目录标签的部分,其中,标 签可以用于检测节点控制器内目录缓存行的存在,并且如果是,则匹配条目可以标识缓 存信息在目录状态信息(例如,310)存储中的位置。在操作404处,确定是否找到/存在 至少一个TCAM匹配。如果不存在匹配,则可以在操作406处执行常规的缓存未命中处 理(如上所述)。再次,并且例如,假设接收到针对地址1110的请求,关于地址1111、 地址111X和地址11XX(例如,具有最多两个最低有效数字“无关”位)的TCAM条 目,匹配可以如下确定。接收到的地址的0位与TCAM地址1111的对应的1位不匹配, 并且因此会导致未命中。相反,接收到的地址的0位不与TCAM地址111X和11XX的 对应的X位相比较,从而导致匹配。
如果存在至少一个TCAM匹配,则在操作408处,过程状态机314读取找到的匹配 条目的冗余条目标志。应该理解,冗余条目标志的使用可以取决于实施方式。例如,在一 个实施例中,如果TCAM例如被硬划分为冗余条目区域和非冗余条目区域,则冗余条目 区域中的任何匹配将在这两个TCAM之间具有对应的匹配。如果根据另一个实施例使用 可适应/动态分配方案,则例如在SRAM或随机逻辑中实施的表结构可以用于当这两个条 目被写入到这两个TCAM时记录这样的冗余条目标志。以这种方式,当检测到匹配时, 可以执行快速查找。如果设置了冗余条目标志(在操作410处确定),则由过程状态机 314执行检查(在操作412处)以确定是否在TCAM 306A和306B(即,主要TCAM和 冗余TCAM)两者中都检测到匹配。如果是,则可以在操作416处执行常规的一致性目 录缓存匹配处理(如上所述)。例如,过程状态机314可以获得与匹配条目相关联的TCAM 行地址。在这种情况下,如果设置了冗余条目标志,则冗余TCAM中的匹配是预期的。 如果没有设置冗余条目标志(在操作410处确定),则由过程状态机314执行检查(在 操作414处)以确定是否在TCAM 306A和306B两者中都检测到匹配。在这种情况下, 在没有设置冗余条目标志的情况下,TCAM 306A和306B两者中的匹配表明有错误(或 者如果当应该已经找到TCAM 306A和306B两者中的匹配时未在TCAM 306A和306B 两者中都检测到匹配)。因此,在操作418处,执行错误处理,例如,响应于接收到的消 息/请求,可能引发错误。如果未在TCAM 306A和306B两者中都检测到匹配(如果没有 设置冗余条目标志,则这是预期的),则在操作416处发生正常的缓存匹配处理。
如果基于由用于确定接收到的请求/消息是否是缓存搜索操作的检查(在操作400处) 产生的确定而确定其不是缓存搜索操作,则过程状态机314确定接收到的消息/请求是否 包括TCAM更新操作(在操作420处)。如果否,则处理可以返回到操作400。如果是, 则(在操作422处)可以由过程状态机314执行检查以确定要写入的条目是否被修改。TCAM更新操作可能反映了一致性目录缓存状态的改变。例如,基于消息/请求是状态改 变请求的确定(在操作420处),过程状态机314可以检查存储的状态信息以确定是否 设置了多个有效位。基于没有设置多个有效位的确定,可以更新状态信息。基于设置了 多个有效位的确定,过程状态机314可以为当前TCAM条目计算并更新新的“无关”位。 例如,对于表示四个存储器块的单个TCAM条目,最高有效的“无关”位可以被清除, 并且从无关变为一(或零)上的匹配。然后,过程状态机314可以更新状态信息并调整 有效位。例如,对于如上文所讨论的一上的匹配,对于全部为1111的相关联状态信息有 效位,有效位可以改变为1100。
在操作426处,过程状态机314设置冗余条目标志。回顾已修改的或脏的一致性目录缓存条目将被冗余地存储在两个TCAM中,可以设置冗余条目标志,使得可以指定(在 对这个特定TCAM条目的后续搜索期间)两个TCAM中的匹配是预期的(如上文关于 操作410至416所述)。在操作428处,过程状态机314可以添加与状态改变请求相关 联的新TCAM条目。这里,因为所述条目是脏条目,所以过程状态机314可以将所述条 目写入到TCAM 306A和306B两者中(在其相应的冗余条目区域306A-2和306B-2中) 并且写入与和状态改变请求相关联的地址相匹配的相关联状态信息。已修改条目的写入 可以取决于由LRU电路312提出的LRU链表(例如,取决于是否必须逐出LRU条目)。
应该注意,已修改的条目可以存储在可用条目中,并且不需要根据LRU链表来存储。 本领域普通技术人员将理解,可以使用确定已修改条目的放置的其他方法。例如,在另一个实施例中,条目指派可以是自由流动的,其中当需要修改条目的冗余条目存储时, 两个TCAM条目被逐出。例如,在另一个实施例中,已修改的条目可以通过执行已修改 的信息的回写来替换非冗余/未修改的LRU条目。
回到操作422,基于要写入的一致性目录缓存条目未被修改的确定,过程状态机314 可以在TCAM 306A或306B的相应非冗余条目区域306A-1或306A-2中将新的一致性 目录缓存条目写入到所述TCAM之一。
图5是根据本公开的实施例的示例计算装置500。在计算装置500的操作和功能与关于图1至图4B讨论的操作或功能相同或类似的情况下,该描述应该被解释为适用。例 如,计算装置500可以是节点200(节点控制器,例如,节点控制器1或2之一)、设备 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以接收一致性目录缓存操作请求。如上所述,节点控制器可以接收关于存储在节点控制器处的一致性目录缓存的各种消息或请求。操作可以涉及存储器操作、关于数据的状态和/或所有权的询问、源自远程节点的 操作请求等。例如,请求可以被指向TCAM内的一致性目录缓存标签。
一个或多个硬件处理器502可以执行指令508以确定接收到的一致性目录缓存操作 请求的类型。例如,指令508可以包括用于确定一致性目录缓存操作请求是否是缓存搜索操作的子指令。如果所请求的一致性目录缓存操作是缓存搜索操作,则可以搜索TCAM 条目,并且可以执行命中/未命中处理或错误处理。如果所请求的一致性目录缓存操作不 是缓存搜索操作,则指令508可以包括进一步的子指令以确定所请求的一致性目录缓存 操作是否是TCAM更新操作。如果不是,则一个或多个硬件处理器502可以返回等待另 一个消息/请求。指令508可以包括又一个子指令以确定如果所请求的一致性目录缓存操 作确实是TCAM更新操作,则要写入到一致性目录缓存的条目是否被修改。
如上所述,已修改的条目或脏条目,其中节点/一致性目录缓存包含条目的最后/最新 更新版本(并且因此可能与主机存储器中维护的条目的状态/所有权/值冲突,利用冗余 TCAM缓存来维护一致性。如果条目未被修改,则一致性不是问题,因为主机/主存储器将准确地反映节点处的本地一致性目录缓存中的条目。因此,对于未修改的条目,不需 要冗余TCAM缓存。因此,可以配置(可编程地或自适应地)TCAM以包含/包括非冗余 条目区域和冗余条目区域。通过不对冗余条目保留整个TCAM,可以改善或减轻裸片面 积的低效率。因此,一个或多个硬件处理器502可以执行指令510以基于确定要将条目 写入到TCAM,所述TCAM存储作为一致性目录缓存操作的目标的一致性目录缓存,将 所述条目写入到TCAM的非冗余条目区域或TCAM的冗余条目区域之一。
图6描绘了可以在其中实施本文所描述的各种实施例的变体的示例计算机系统600 的框图。计算机系统600包括总线602、网络、交叉开关或用于传送信息的其他通信互连机制、与总线602耦接以用于处理信息的一个或多个硬件处理器604。(多个)硬件处理 器604可以是例如一个或多个通用微处理器。在各种实施例中,一个或多个硬件处理器 604可以执行非暂态机器可读指令以执行参考图1至图3以及图4A至4B讨论的实施例 的各种功能。
计算机系统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.一种设备,包括:
一个或多个处理器;以及
存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:
接收一致性目录缓存操作请求;
确定所述一致性目录缓存操作请求的类型;以及
基于确定要将条目写入到内容可寻址存储器(CAM),所述CAM存储作为所述一致性目录缓存操作请求的目标的一致性目录缓存,将所述条目写入到所述CAM的非冗余条目区域或所述CAM的冗余条目区域之一。
2.如权利要求1所述的设备,其中,在被执行时使所述一个或多个处理器确定所述一致性目录缓存操作请求的类型的所述指令包括:在被执行时进一步使所述一个或多个处理器确定所述一致性目录缓存操作请求是否包括缓存搜索操作的子指令。
3.如权利要求2所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器搜索所述CAM的所有条目以确定存在至少一个CAM匹配并且基于所述至少一个CAM匹配的存在的确定而执行缓存命中处理、缓存未命中处理或错误处理之一的指令。
4.如权利要求2所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器在确定所述一致性目录缓存操作请求不是缓存搜索操作时确定所述一致性目录缓存操作请求是否涉及CAM更新操作的指令。
5.如权利要求4所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器确定要被写入到所述CAM的所述条目是否被修改的指令。
6.如权利要求5所述的设备,其中,在被执行时使所述一个或多个处理器将所述条目写入到所述CAM的冗余条目区域的所述指令是在确定要被写入到所述CAM的所述条目被修改时被执行。
7.如权利要求6所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器在确定要被写入到所述CAM的所述条目被修改时设置冗余条目标志的指令。
8.如权利要求7所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器将所述相同的条目写入到另一个CAM的冗余条目区域的指令,其中,所述CAM和所述相同的条目被写入的所述另一个CAM的相应行是相同的。
9.如权利要求7所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器将所述相同的条目写入到所述CAM的另一冗余条目区域的指令。
10.如权利要求1所述的设备,其中,在被执行时使所述一个或多个处理器将所述条目写入到所述CAM的非冗余条目区域的所述指令是在确定要被写入到所述CAM的所述条目未被修改时被执行。
11.如权利要求1所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器基于根据所述CAM的过去条目替换历史而设置的可编程阈值最大值和可适应可编程阈值最大值之一来自适应地配置能够被写入到所述CAM的冗余条目区域的条目的数量的指令。
12.如权利要求1所述的设备,其中,所述CAM维护最近最少使用链表,基于所述链表来确定在所述CAM的冗余条目区域中的何处写入所述条目。
13.如权利要求12所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器通过执行对要被写入到所述CAM的冗余条目区域的条目的回写操作来用所述条目替换最近最少使用的条目的指令,所述条目是已修改的条目。
14.如权利要求13所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器用要被同时写入到另一个CAM的冗余条目区域的条目来替换最近最少使用的条目的指令。
15.如权利要求12所述的设备,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器逐出所述CAM的非冗余条目区域中的现有CAM条目的指令。
16.一种节点控制器,包括:
第一三态内容可寻址存储器(TCAM);
第二TCAM;
一个或多个处理器;以及
存储器单元,所述存储器单元能够操作地连接到所述一个或多个处理器,所述存储器单元包括指令,所述指令在被执行时使所述一个或多个处理器进行以下操作:
接收一致性目录缓存操作请求,并确定所述一致性目录缓存操作请求是涉及写入已修改的条目还是未修改的条目;
响应于确定所述一致性目录缓存操作请求涉及写入已修改的条目,将所述条目写入到所述第一TCAM和所述第二TCAM中的每一个的对应冗余条目区域中;以及
响应于确定所述一致性目录缓存操作请求涉及写入未修改的条目,将所述条目写入到仅所述第一TCAM或所述第二TCAM之一的非冗余条目区域。
17.如权利要求16所述的节点控制器,其中,所述第一TCAM和所述第二TCAM中的每一个维护最近最少使用(LRU)链表,基于所述链表来确定条目的逐出和替换。
18.如权利要求17所述的节点控制器,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器逐出每个LRU链表中的LRU条目以容纳所述已修改的条目到所述第一TCAM和所述第二TCAM中的每一个的写入的指令。
19.如权利要求17所述的节点控制器,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器逐出每个LRU链表中的LRU条目以容纳所述未修改的条目到所述第一TCAM或所述第二TCAM之一的写入的指令。
20.如权利要求16所述的节点控制器,其中,所述存储器单元包括:在被执行时进一步使所述一个或多个处理器基于根据所述第一TCAM和所述第二TCAM的过去条目替换历史而设置的可编程阈值最大值和可适应可编程阈值最大值之一来自适应地配置能够被写入到所述第一TCAM和所述第二TCAM的冗余条目区域的条目的数量的指令。
CN202110419037.8A 2020-05-12 2021-04-19 用于缓存目录tcam错误检测和纠正的系统和方法 Active CN113656212B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/930,263 US11188480B1 (en) 2020-05-12 2020-05-12 System and method for cache directory TCAM error detection and correction
US15/930,263 2020-05-12

Publications (2)

Publication Number Publication Date
CN113656212A true CN113656212A (zh) 2021-11-16
CN113656212B CN113656212B (zh) 2022-08-02

Family

ID=78280717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110419037.8A Active CN113656212B (zh) 2020-05-12 2021-04-19 用于缓存目录tcam错误检测和纠正的系统和方法

Country Status (3)

Country Link
US (1) US11188480B1 (zh)
CN (1) CN113656212B (zh)
DE (1) DE102021108478B4 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089116A (zh) * 2022-12-16 2023-05-09 成都海光集成电路设计有限公司 数据处理方法及装置
CN116089116B (zh) * 2022-12-16 2024-05-31 成都海光集成电路设计有限公司 数据处理方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550720B2 (en) * 2020-11-24 2023-01-10 Arm Limited Configurable cache coherency controller

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330643B1 (en) * 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
EP1304621A2 (en) * 2001-10-17 2003-04-23 Sun Microsystems, Inc. Updating directory cache
US20040068620A1 (en) * 2002-10-03 2004-04-08 Van Doren Stephen R. Directory structure permitting efficient write-backs in a shared memory computer system
US7185172B1 (en) * 2003-10-31 2007-02-27 Integrated Device Technology, Inc. CAM-based search engine devices having index translation capability
CN101035060A (zh) * 2006-03-08 2007-09-12 中兴通讯股份有限公司 一种三重内容可寻址存储器报文分类的统一处理方法
CN101137966A (zh) * 2001-08-27 2008-03-05 英特尔公司 通用执行数据通路中软件控制的内容可寻址存储器
CN102591958A (zh) * 2011-12-29 2012-07-18 中国科学技术大学 基于tcam的确定性有穷状态自动机的匹配方法和装置
CN103310838A (zh) * 2012-03-14 2013-09-18 瑞萨电子株式会社 内容可寻址存储器系统
CN106201919A (zh) * 2015-06-01 2016-12-07 Arm 有限公司 缓存一致性
CN106909517A (zh) * 2015-12-22 2017-06-30 超威半导体产品(中国)有限公司 用于基于目录的缓存一致性的目录替换方法和系统
US20190236011A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Memory structure based coherency directory cache

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138264A1 (en) * 2003-02-27 2005-06-23 Fujitsu Limited Cache memory
US9135175B2 (en) * 2012-12-21 2015-09-15 Oracle International Corporation Distributed cache coherency directory with failure redundancy
US20150039823A1 (en) 2013-07-30 2015-02-05 Mediatek Inc. Table lookup apparatus using content-addressable memory based device and related table lookup method thereof
US10997074B2 (en) * 2019-04-30 2021-05-04 Hewlett Packard Enterprise Development Lp Management of coherency directory cache entry ejection
US11169921B2 (en) * 2019-05-09 2021-11-09 Hewlett Packard Enterprise Development Lp Ternary content addressable memory-enhanced cache coherency acceleration

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330643B1 (en) * 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
CN101137966A (zh) * 2001-08-27 2008-03-05 英特尔公司 通用执行数据通路中软件控制的内容可寻址存储器
EP1304621A2 (en) * 2001-10-17 2003-04-23 Sun Microsystems, Inc. Updating directory cache
US20040068620A1 (en) * 2002-10-03 2004-04-08 Van Doren Stephen R. Directory structure permitting efficient write-backs in a shared memory computer system
US7185172B1 (en) * 2003-10-31 2007-02-27 Integrated Device Technology, Inc. CAM-based search engine devices having index translation capability
CN101035060A (zh) * 2006-03-08 2007-09-12 中兴通讯股份有限公司 一种三重内容可寻址存储器报文分类的统一处理方法
CN102591958A (zh) * 2011-12-29 2012-07-18 中国科学技术大学 基于tcam的确定性有穷状态自动机的匹配方法和装置
CN103310838A (zh) * 2012-03-14 2013-09-18 瑞萨电子株式会社 内容可寻址存储器系统
CN106201919A (zh) * 2015-06-01 2016-12-07 Arm 有限公司 缓存一致性
CN106909517A (zh) * 2015-12-22 2017-06-30 超威半导体产品(中国)有限公司 用于基于目录的缓存一致性的目录替换方法和系统
US20190236011A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Memory structure based coherency directory cache

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116089116A (zh) * 2022-12-16 2023-05-09 成都海光集成电路设计有限公司 数据处理方法及装置
CN116089116B (zh) * 2022-12-16 2024-05-31 成都海光集成电路设计有限公司 数据处理方法及装置

Also Published As

Publication number Publication date
US11188480B1 (en) 2021-11-30
DE102021108478B4 (de) 2024-04-11
DE102021108478A1 (de) 2021-11-18
CN113656212B (zh) 2022-08-02
US20210357334A1 (en) 2021-11-18

Similar Documents

Publication Publication Date Title
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
US11734192B2 (en) Identifying location of data granules in global virtual address space
CN100476760C (zh) 用于分级高速缓存行替换的方法、系统及装置
US11200168B2 (en) Caching data from remote memories
US4774654A (en) Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US11561844B2 (en) Disaggregated system domain
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US20060184743A1 (en) Cache memory direct intervention
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
US10713166B2 (en) Efficient early ordering mechanism
US10831663B2 (en) Tracking transactions using extended memory features
US20200183836A1 (en) Metadata for state information of distributed memory
US11169921B2 (en) Ternary content addressable memory-enhanced cache coherency acceleration
CN113656212B (zh) 用于缓存目录tcam错误检测和纠正的系统和方法
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US11016908B2 (en) Distributed directory of named data elements in coordination namespace
US10684958B1 (en) Locating node of named data elements in coordination namespace
US8799587B2 (en) Region coherence array for a mult-processor system having subregions and subregion prefetching
US6813694B2 (en) Local invalidation buses for a highly scalable shared cache memory hierarchy
CN113742258B (zh) 用于高效缓存一致性协议处理的节点控制器
US10915460B2 (en) Coordination namespace processing
US10489292B2 (en) Ownership tracking updates across multiple simultaneous operations
US6826655B2 (en) Apparatus for imprecisely tracking cache line inclusivity of a higher level cache
JP6272011B2 (ja) キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法

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