基于存储器结构的一致性目录缓存

文档序号:1316033 发布日期:2020-07-10 浏览:12次 >En<

阅读说明:本技术 基于存储器结构的一致性目录缓存 (Coherent directory caching based on memory structure ) 是由 F·R·德罗普斯 T·麦基 于 2019-01-30 设计创作,主要内容包括:在一些示例中,关于基于存储器结构的一致性目录缓存实现,硬件序列器可以包括用于对包括与多个缓存行相关的信息的一致性目录缓存识别相邻缓存行的硬件。可以确定与相邻缓存行中的每一个相关联的状态。基于确定与相邻缓存行中的一个相关联的状态和与剩余的活动的相邻缓存行相关联的状态相同,可以对相邻缓存行进行分组。对于一致性目录缓存,硬件序列器可以利用存储器结构中的条目以识别分组的缓存行。与存储器结构中的条目相关联的数据可以包括多于两种的可能的存储器状态。(In some examples, with respect to a memory fabric-based coherency directory cache implementation, the hardware sequencer may include hardware to identify adjacent cache lines for a coherency directory cache that includes information related to a plurality of cache lines. A state associated with each of the adjacent cache lines may be determined. Based on determining that the state associated with one of the adjacent cache lines is the same as the state associated with the remaining active adjacent cache lines, the adjacent cache lines may be grouped. For coherent directory caching, a hardware sequencer may utilize an entry in a memory structure to identify a cacheline of a packet. The data associated with an entry in the memory structure may include more than two possible memory states.)

具体实施方式

为了简化和说明的目的,通过主要参考示例描述了本公开。在下面的描述中,为了提供对本公开的透彻理解,阐述了大量的具体细节。然而,显而易见的是,可以在不限于这些具体细节的情况下实施本公开。在其它情况下,一些方法和结构没有被详细描述,以免不必要地混淆本发明。

在本公开中,术语“一个”和“一种”意在表示特定元素中的至少一个。如本文所使用的,术语“包括”意味着包括但不限于,术语“包含”意味着包含但不限于。术语“基于”意味着是至少部分地基于。

本文公开了基于存储器结构的一致性目录缓存实现装置、用于操作基于存储器结构的一致性目录缓存的方法以及在其上存储有用于提供基于存储器结构的一致性目录缓存的机器可读指令的非暂态计算机可读介质。本文公开的装置、方法和非暂态计算机可读介质提供了利用三元内容可寻址存储器(TCAM)以实现一致性目录缓存。

一致性目录缓存可以包括与多个存储器块相关的信息。这些存储器块的大小为了易于实现可以被定义为与计算机系统的系统缓存行相同。为了讨论的清楚起见,这些缓存行大小的存储器块可以被称为缓存行。缓存行信息可以识别在计算机系统(或不同计算机系统)中存储缓存行的处理器(或另一设备)。一致性目录和一致性目录缓存可以包括与系统存储器缓存行中的每一个相关联的一致性状态和所有权信息。随着缓存行数量的增加,一致性目录的大小和一致性目录缓存可能类似地增加。出于性能原因,一致性目录缓存大小的增加可能导致与一致性目录缓存相关联的裸片区域(die area)的使用的相应增加,以及与一致性目录缓存相关联的功率使用的类似增加。在这方面,在更少地使用与一致性目录缓存相关联的裸片区域的情况下,并以与一致性目录缓存相关联的更少的功率使用实现一致性目录缓存在技术上具有挑战性。

为了解决至少上述技术挑战,本文公开的装置、方法和非暂态计算机可读介质通过利用保持系统缓存行的子集的一致性目录信息的一致性目录缓存来减少增加的目录大小所影响的裸片大小和/或减少利用系统功率。此外,或者在其它示例中,额外的裸片区域和功率可用于提供更大的一致性目录缓存,以由此提高系统性能。在这方面,可以通过利用TCAM实现一致性目录缓存。TCAM的性能包括选择“不关心”(或“通配符”)(例如,“X”)位的能力。“不关心”位可用于代表与具有相同TCAM条目的多个相邻缓存行相关的信息。在这方面,相邻的缓存行可以根据相同的所有权和状态信息分组。

例如,对于基于存储器结构的一致性目录缓存实现,可以对包括与多个缓存行相关的信息的一致性目录缓存识别相邻的缓存行。可以确定与相邻缓存行中的每一个缓存行相关联的状态和所有权。基于确定与相邻缓存行中的一个缓存行相关联的状态和所有权分别和与剩余的活动(active)相邻缓存行相关联的状态和所有权相同,则可以对相邻缓存行进行分组。此外,TCAM中的单个条目可用于一致性目录缓存,以识别与分组的缓存行相关的信息。

对于本文公开的装置、方法和非暂态计算机可读介质,本文所公开的装置、方法和非暂态计算机可读介质的元素(例如,组件)可以是硬件和程序的任意组合,以实现各元素的功能。在这里描述的一些示例中,硬件和程序的组合可以以多种不同的方式实现。例如,元素的程序可以是存储在非暂态机器可读存储介质上的处理器可执行指令,并且,元素的硬件可以包括处理资源以执行这些指令。在这些示例中,实现这些元素的计算设备可以包括存储指令的机器可读存储介质和执行指令的处理资源,或者,机器可读存储介质可以被计算设备和处理资源单独地存储和访问。在一些示例中,一些或所有元素可以在硬件电路中实现。

图1示出基于存储器结构的一致性目录缓存实现装置(以下也称为“装置100”)的示例布局。

参考图1,装置100可以包括多路复用器102以接收诸如处理器窥探请求(snooprequest)或节点控制器请求等请求。处理器窥探请求可以被描述为由本地处理器发起以询问存储器块或缓存行的状态和所有权的操作。节点控制器请求可以被描述为由远程处理器或远程节点控制器发起的发送到包括装置100的本地节点控制器的操作。请求可以被定向到一致性目录标签104,以确定是否存在关于特定存储器块(即,缓存行)的状态信息。一致性目录标签104可以包括与多个存储器块相关的信息。即,一致性目录标签104可以包括高位地址(upper address)的集合,所述高位地址对应于在一致性目录缓存中状态和所有权信息所被缓存的系统存储器块或缓存行。例如,高位地址可以包括高位地址A、高位地址B、…,高位地址N等。各高位地址可以具有与各条目相关联的相应的行号(例如,行号1、2,…,N)。根据位置,各高位地址可以是0-N不关心位。如这里所公开的,这些存储器块的大小可以为了易于实现被定义为与计算机系统(或不同计算机系统)的系统缓存行相同。为了讨论清楚,这些缓存行大小的存储器块可以被称为缓存行。

所有权可以被描述为识别哪个节点或处理器拥有被跟踪的系统存储器块或缓存行的所有权。在共享状态下,所有权可以包括共享系统存储器块或缓存行的节点或处理器。

请求可以由TCAM 106处理。对于TCAM 106,各缓存条目可以包括出于与请求进行比较的目的保持高位地址的TCAM条目。该高位地址可以被称为标签。关于高位地址,处理器系统可以包括允许定义被访问的数据位的字节地址或字地址。当多个字节或字被一起分组成较大的块(诸如缓存行)时,高位地址位可以被用于唯一地定位系统存储器的各块或缓存行,并且低位地址位可以被用于唯一地定位系统存储器块或缓存行内的各字节或字。

标签可以被描述为用于识别高位地址的链接描述符。目录标签可以被描述为在缓存存储器的目录部分中使用的链接描述符。一致性目录标签104可以包括一致性目录缓存的所有标签,并且可以被描述为在一致性目录缓存存储器的目录部分中使用的链接描述符。一致性目录标签104可以包括定义被跟踪的系统存储器的块的高位地址位。

目录标签可以代表一致性目录缓存地址的唯一识别目录条目的部分。目录标签可用于检测一致性目录标签104内是否存在目录缓存行,并且,如果存在,则匹配条目可以识别缓存信息在目录状态储存(storage)中的位置。一个一致性目录缓存条目可以代表存储器的单个系统缓存行的一致性状态和所有权。

在匹配编码器108处,由TCAM 106处理的请求可以被处理以确定一致性目录标签104的相关行(例如,地址)的二进制表示。对于TCAM 106,TCAM 106的每行或条目可以包括当该条目与输入搜索值匹配时被激活的匹配行(match line)。例如,如果TCAM 106具有1024个条目,则它将输出1024个匹配行。这1024个匹配行可以被编码成二进制值,该二进制值例如可用于寻址存储状态和所有权信息的存储器。例如,如果匹配行255是活动的,则来自匹配编码器108的经编码输出为OFF16

状态信息110块可以包括由TCAM 106处理的请求的存储器块(即缓存行)的状态和所有权的当前表示。例如,状态信息110可以包括:包含一组有效位(例如1111、0000、0011、0010)的“valids”列;包括诸如共享、无效或独占的信息的“state info.”列;以及包括共享状态的共享信息以及专属状态的所有权的“sharing vector/ownership”列。根据示例,状态信息110的行可以对应于一致性目录标签104的行。可选地,一致性目录标签104的单个行可以对应于状态信息110的多个行。关于一致性目录标签104和状态信息110,假定高位地址A覆盖全部有效的四条缓存行,则这四条缓存行可以包括相同的状态信息和共享向量/所有权。有效位的长度可以对应于不关心位的解码个数。与存储器块状态和所有权信息相关的一致性目录缓存输出信息还可以包括响应于由多路复用器102接收的请求的目录缓存命中指示符状态(例如,一致性目录标签104命中)或目录缓存未命中指示符状态。所有权可以包括正在共享存储器块的计算机系统或不同计算机系统的一个(或多个)节点的指示。在这方面,实际存储的信息可能取决于所使用的实现和一致性协议。例如,如果正在使用的协议包括共享状态,则所有权信息可以包括共享块的节点或处理器的列表。可以基于由匹配编码器108编码到存储器地址中的来自TCAM 106的相关匹配行,从状态信息110存储器储存(memory storage)检索状态和所有权。

目录命中或目录未命中信息可用于一致性目录缓存条目替换策略。例如,替换策略可以使用最近使用最少(least recently used,LRU)跟踪电路112。如果相关联的缓存已满并且要添加新的条目,则最近使用最少跟踪电路112可以逐出(evict)最近使用最少的缓存条目。在这方面,如果逐出条目,则TCAM 106可以相应地被更新。当TCAM 106已满时,可以认为完整的一致性目录缓存已满。LRU跟踪电路112可以直接从匹配编码器108接收命中/未命中信息。然而,也可以从处理状态机114接收命中/未命中信息。当检测到缓存命中时,LRU跟踪电路112可以更新相关联的列表,以将匹配条目移动到在列表上最近使用最多的位置。

与TCAM 106中的条目相关联的标签数据可以包括可能的存储器状态“0”、“1”或“X”,这里,“X”存储器状态可以代表“0”或“1”,并且可以被指定为“不关心”存储器状态。缓存行地址的TCAM 106中的最低有效数字可以定义一组缓存行中的缓存行的地址。最低有效数字可以由“X”存储器状态代表。因此,一个一致性目录缓存条目可以代表存储器的几个(例如,2个、4个、8个、16个等)系统缓存行的状态。这些存储器块或系统缓存行可以按2的幂和非2的幂进行分组。对于非2的幂,可以关于范围对地址进行比较。例如,如果地址在A和C之间,则可以对存储器块或系统缓存行进行分组。因此,各TCAM条目可以代表存储器的任意数量的系统缓存行。可以基于确定多个缓存行相邻、并且进一步基于确定多个缓存行包括共享TCAM条目的相同状态和所有权来对这些多个缓存行进行分组。在这方面,相邻的缓存行可以包括在定义的组的边界内的缓存行。因此,相邻的缓存行可以包括邻近的、接近的或满足组寻址规范的缓存行。

处理状态机114可以基于诸如处理器窥探请求和/或节点控制器请求等的请求分析相关缓存行的状态和所有权信息,以识别可以关于TCAM 106合并的缓存行。

后台清理状态机116也可以分析与相邻缓存行相关联的状态和所有权信息,以识别可以关于TCAM 106合并的缓存行。因此,关于缓存行的合并,处理状态机114可以在添加新条目时执行合并功能,并且,当一致性指示器缓存不忙于处理其它请求时,后台清理状态机116可以作为后台操作执行合并功能。关于由后台清理状态机116执行的后台操作,状态和所有权信息可以随着时间而变化。当关于给定块的信息最初被写入并且由于状态或所有权信息与在经组合的组中的其它块的信息不匹配而无法被分组时,给定块的该信息可以对应于单独的一致性目录缓存条目。如果以后与状态或所有权有关的一些信息改变,此时就可能发生分组。因此,当没有在进行诸如处理器窥探请求和/或节点控制器请求等的请求的处理时,后台清理状态机116可以操作。在这方面,后台清理状态机116可以找到匹配的条目并重写TCAM条目,以执行如这里所公开的由单个条目表示的存储器块的分组。

处理状态机114和后台清理状态机116关于包含相同状态和所有权的相邻缓存行分组的功能可以分别由硬件序列器118和硬件序列器120或包含于处理状态机114和后台清理状态机116中的其它电路执行。下面描述由硬件序列器118和硬件序列器120两者执行的某些功能。

根据示例,硬件序列器118和硬件序列器120可以包括用于为包括与多个缓存行相关的信息的一致性目录标签104识别相邻缓存行的硬件。在示例中,硬件序列器118和硬件序列器120可以是硬件状态机,或者可以是更大状态机的一部分。可选地,装置100可以包括处理器(例如,图6的处理器604),以实现硬件序列器118和硬件序列器120的一些或全部步骤(所述步骤可以被处理器实现为指令)。

对于包括硬件序列器118和硬件序列器120的装置100的实现,硬件序列器118和硬件序列器120还可以包括用于确定与相邻缓存行中的每一个相关联的状态和所有权的硬件。

基于确定与相邻缓存行中的一个相关联的状态和所有权分别与与剩余活动相邻缓存行相关联的状态和所有权相同,硬件序列器118和硬件序列器120还可以包括对相邻缓存行进行分组的硬件(或处理器实现的指令)。对相邻缓存行进行分组可以包括如果需要包括要添加的缓存行,则设定“不关心”位,以及设定有效性字段的相应有效位。在这方面,可以使用基于等式的比较以确定关于状态和所有权的两条信息是否相同。剩余活动缓存行可以被描述为在一致性目录缓存中的该组中当前表示的缓存行(例如,剩余活动缓存行可以包括在状态信息中设定的有效位)。

硬件序列器118和硬件序列器120还可以包括硬件(或处理器实现的指令),以对一致性目录标签104利用存储器结构中的条目以识别与分组的缓存行相关的信息(例如,地址位)。在这方面,与存储器结构中的“不关心”条目相关联的数据可以包括多于两种的可能的存储器状态。根据示例,条目可以包括唯一地识别存储器结构中的条目的地址。例如,条目可以包括没有任何“不关心”位的地址。根据示例,条目可以包括存储器结构中的单个条目,以识别与分组的缓存行相关的信息。例如,条目可以包括以最低有效数字中的一个或更多个为“不关心”位的地址。根据示例,分组的缓存行的数量可以等于四个相邻缓存行。例如,条目可以包括以两个最低有效数字为“不关心”位的地址。

根据示例,存储器结构可以包括图1所示的TCAM 106。对于TCAM 106,硬件序列器118和硬件序列器120还可以包括用于将地址的指定数量的低位写为“X”位的硬件(或处理器实现的指令)。在这方面,与TCAM 106中的条目相关联的数据可以包括可能的存储器状态“0”、“1”,或“X”,这里,“X”存储器状态(例如,“不关心”存储器状态)可以代表“0”或“1”。例如,当条目被写入一致性目录标签104中时,高位地址(标签)的低两位可以在TCAM中被编程为“不关心”。该示例示出单个一致性缓存条目覆盖多达四个系统缓存行的组时的配置。状态信息可以包括4位有效字段。具有4位有效字段的实现可以代表两个最低有效高位地址位可以被允许作为“不关心”的实现。在这方面,对于其它实现,有效性字段中的数个位会变化。例如,对于具有多达3个“不关心”位的实现,有效字段将是8位长,因为三个低位地址位存在2^3=8个(或者,通常是2^n,这里,n代表“不关心”位的数量)唯一解码。关于包括4位有效字段的状态信息,这4位中的每一个可以对应于高位地址的低两位的解码,从而允许各位与四个缓存行组内的四个缓存行中的一个相关联。这4位可以被视为四个系统存储器缓存行中的每一个的有效位。现在,各TCAM条目可以代表从0(不是有效条目)到系统存储器的四个缓存行的任何位置的状态和所有权信息。此外,硬件序列器118和硬件序列器120还可以包括硬件(或处理器实现的指令),以基于写入的低位来将一致性目录缓存跟踪指定为对分组的缓存行的各缓存行有效。一致性目录缓存跟踪可以被描述为一致性目录缓存监视位的状态是活动的还是非活动的。

硬件序列器118和硬件序列器120还可以包括硬件(或处理器实现的指令),以利用条目以指定零缓存行(不是与缓存行相关联的有效条目)或规定数量的相邻缓存行,这里,规定数量大于一。

可以执行TCAM 108的搜索以确定是否要添加新条目。可以通过使用对应于接收的请求的缓存行的高位地址位来执行TCAM 106的搜索。如果存在TCAM未命中,则可以将标签写入未使用的条目中。在这方面,硬件序列器118还可以包括硬件(或处理器实现的指令),以将条目指定为新条目,并确定一致性目录缓存存储器结构是否包括对应于与新条目相同的组的先前条目。在这方面,基于确定一致性目录缓存存储器结构不包括对应于与新条目相同的组的先前条目,可以将新条目添加到一致性目录缓存存储器结构的未使用条目位置中。

当要添加新条目时,可以执行TCAM 106的搜索。如果所有的缓存条目被使用,那么最近使用最少的条目会被逐出,并且,新标签会被写入该TCAM条目中。在这方面,硬件序列器118还可以包括硬件(或处理器实现的指令),以将条目指定为新条目,并确定存储器结构是否包括对应于与新条目相同的组的先前条目。基于确定存储器结构不包括对应于新条目的先前条目,硬件序列器118可以进一步包括硬件(或处理器实现的指令),以确定是否存储器结构中的所有条目位置被使用。基于确定存储器结构中的所有条目位置被使用,硬件序列器118可以进一步包括硬件(或处理器实现的指令),以逐出存储器结构的最近使用最少的条目。此外,可以将新条目添加到对应于存储器结构的被逐出的最近使用最少的条目的条目位置中。

如果在TCAM搜索期间在新高位地址位和TCAM内的标签条目之间存在匹配,则可以检查上面讨论的4位字段。如果由高位地址的低两位的解码选择的4位字段中的对应位被设定,则可以指示缓存命中,并且可以继续处理。在这方面,如果未确定缓存命中,则硬件序列器118可进一步包括硬件(或处理器实现的指令),以将条目指定为新条目,并且确定存储器结构是否包括对应于新条目的先前条目。基于确定存储器结构包括对应于新条目的先前条目,硬件序列器118还可以包括硬件(或处理器实现的指令),以针对先前条目确定是否设定对应于新条目的指定位。此外,基于确定指定位被设定,硬件序列器118可以进一步包括硬件(或处理器实现的指令),以将新条目指定为缓存命中。

如果没有设定上述4位字段中的对应位,则可以比较状态和所有权信息。如果状态和所有权信息对于新系统存储器缓存行以及状态和所有权信息的缓存值相同,则可以设定4位字段中的相应位,以将该新系统存储器缓存行添加到一致性目录标签104。状态和所有权字段可以应用于与地址字段匹配并且在4位有效性字段中具有相应有效位的所有缓存行。因此,如果被评估的缓存行的状态和所有权与状态和所有权字段匹配,则可以设定有效性字段的相应位。关于状态和所有权信息,基于确定未设定指定位,硬件序列器118还可以包括硬件(或处理器实现的指令),以确定与新条目相关联的状态和所有权是否分别与与先前条目相关联的状态和所有权相同。此外,基于确定与新条目相关联的状态和所有权分别与与先前条目相关联的状态和所有权相同,硬件序列器118还可以包括硬件(或处理器实现的指令),以设定指定位以将新条目添加到装置100。在这方面,设定指定位可以指的是与特定系统存储器块或缓存行相关联的有效位。

如果没有设定上述4位字段中的相应位,则可以比较状态和所有权信息。如果从状态信息110读取的状态和所有权信息与与新标签相关联的状态和所有权信息不同,则可以将该新标签添加到TCAM 106。在这方面,基于确定与新条目相关联的状态和所有权分别不同于与先前条目相关联的状态和所有权,硬件序列器118还可以包括硬件(或处理器实现的指令),以将新条目作为与先前条目不同的条目添加到一致性目录标签104。

硬件序列器118还可以包括硬件(或处理器实现的指令),以确定与相邻缓存行中的一个相关联的状态或所有权是否已经变化。基于确定与相邻缓存行中的一个相关联的状态或所有权已经变化,硬件序列器118还可以包括硬件(或处理器实现的指令),以将状态或所有权已经变化的相邻缓存行中的一个指定为新条目。硬件序列器118还可以包括硬件(或处理器实现的指令),以例如通过搜索TCAM 106以寻找匹配条目来确定TCAM 106是否包括对应于新条目的另一条目。基于确定TCAM 106不包括对应于新条目的另一条目,硬件序列器118还可以包括硬件(或处理器实现的指令),以将新条目添加到TCAM 106的未使用条目位置。

可能还需要更新刚刚匹配的当前TCAM条目,以清除一个或多个低位标签位的“不关心”编程。可能需要该更新,使得下次使用当前标签以搜索TCAM 106时该条目将不匹配。

基于确定TCAM 106不包括对应于新条目的其它条目,硬件序列器118可进一步包括硬件(或处理器实现的指令),以确定是否TCAM 106中的所有条目位置被使用。基于确定TCAM 106中的所有条目位置被使用,硬件序列器118可以进一步包括硬件(或处理器实现的指令),以逐出TCAM 106的最近使用最少的条目。硬件序列器118还可以包括硬件(或处理器实现的指令),以将新条目添加到对应于TCAM 106的被逐出的最近使用最少的条目的条目位置。

基于确定与相邻缓存行中的一个相关联的状态或所有权已经变化,硬件序列器118可以进一步包括硬件(或处理器实现的指令),以清除与状态或所有权已经变化的相邻缓存行中的一个相关联的编程以从分组的缓存行去除状态或所有权已变化的相邻缓存行中的一个。

根据示例,假定一致性目录标签104包括10X的条目、有效性字段0011和状态/所有权SO,并且接收了对具有状态/所有权SO的缓存行地址110的窥探请求,则10X的条目可以更新为地址1XX,有效性字段可以被设定为0111,并且可以响应于窥探而返回SO。

可以使用处理器窥探请求和节点控制器请求中的部分信息以确定如何驱动多路复用器102上的选择。如果存在处理器窥探请求而没有节点控制器请求,则处理状态机114可以驱动到复用器102的选择线以选择处理器窥探请求。

在图1的示例实现中,处理状态机114可以控制多路复用器102。处理状态机114可以接收与所选择的不同请求相关的放大的信息的一部分。

关于从匹配编码器108发送到处理状态机114和LRU跟踪电路112的信息,处理状态机114和LRU跟踪电路112可以从匹配编码器108接收匹配/不匹配指示符和匹配条目的TCAM行地址两者。

图1所示的目录状态输出可以包含匹配请求的状态和所有权信息。目录状态输出可以被发送到装置100所在的节点控制器或处理器专用集成电路(ASIC)内的其它电路。其它电路可以包括将初始请求发送到一致性目录缓存的电路。

图1所示的缓存命中/未命中状态输出可以代表请求是否与一致性目录缓存内的条目匹配的指示。缓存命中/未命中状态输出可以被发送到装置100所在的节点控制器或处理器ASIC内的其它电路。其它电路可以包括将初始请求发送到一致性目录缓存的电路。

图2示出处理流程以示出装置100的操作。处理流程可以由处理状态机114执行。处理状态机114的各种操作可由硬件序列器118执行。

参考图2,在框200处,可以开始关于处理状态机114的操作的处理流程。

在框202处,处理状态机114可以确定是否已接收到请求(例如,处理器窥探请求、节点控制器请求等)。

基于在框202处确定已接收到请求(例如,处理器窥探请求、节点控制器请求等),在框204处,处理状态机114可以触发TCAM 106以搜索一致性目录标签104。在这方面,可以使用与包含在所接收的请求中的缓存行相关联的地址以搜索匹配的标签值。如这里所公开的,对于TCAM 106实现的一致性目录标签104,各缓存条目可以包括TCAM条目,以保持要比较的高位地址。该高位地址可以被称为标签。目录标签可以代表目录地址的唯一识别目录标签的部分。标签可以被用于检测在装置100内是否存在目录缓存行,如果存在,则匹配条目可以识别缓存信息在目录状态信息110储存中的位置。

在框206处,处理状态机114可以确定是否在TCAM 106中检测到针对请求的匹配。根据示例,假定接收到对地址1110的请求,关于地址1111、地址111X和地址11XX的TCAM条目(例如,具有达两个最低有效数字不关心位),可以确定匹配如下。所接收地址的0位与TCAM地址1111的相应1位不匹配,并因此会导致未命中。相反地,所接收地址的0位不与TCAM地址111X和11XX的对应X位进行比较,从而导致匹配。

基于在框206处确定检测到匹配,在框208处,处理状态机114可以获得与框206处的匹配相关联的TCAM行地址。

在框210处,可以确定框202处的请求是否是状态变化请求。基于在框210处确定框202处的请求是状态变化请求,处理状态机114可以前进到框212。在框212处,处理状态机114可以检查所存储的状态信息以确定是否设定了多个有效位。

基于框212处确定未设定多个有效位,在框214处,可以更新状态信息。

基于框212处确定设定了多个有效位,在框216处,处理状态机114可以为当前TCAM条目计算和更新新的不关心位。例如,对于代表四个存储器块的单个TCAM条目,最有效的不关心位可以被清除,并且从不关心变为一(或零)上的匹配。

在框218处,处理状态机114可以更新状态信息并调整有效位。例如,对于如上所述的一上的匹配,对于均为1111的相关状态信息有效位,有效位可以变为1100。

在框220处,处理状态机114可以添加与状态变化请求相关联的新TCAM条目。在这方面,处理状态机114可以将条目写入TCAM中,并写入与与状态变化请求相关联的地址相匹配的相关状态信息。

基于在框210处确定框202处的请求不是状态变化请求,处理状态机114可以前进到框222。在框222处,处理状态机114可以针对匹配来更新最近使用最少跟踪电路112,以将TCAM行地址移动到TCAM行地址列表的顶部,以指示将TCAM行地址用作最近使用最多的TCAM行地址。

在框224处,处理状态机114可以从状态信息110得到关于匹配的状态信息。状态信息110可以被描述为可被写入和读取的存储器或储存元素。在图1的示例实现中,状态信息110可以被存储在静态随机存取存储器(SRAM)或另一种类型的存储器中。

在框226处,处理状态机114可以解码存储器块有效位。系统存储器块有效位或缓存行有效位可位于状态信息110储存内。在这方面,如果TCAM行地址代表表示多于一个的缓存行的条目,则处理状态机114可以解码相关联的块有效位,以识别与系统存储器块相关联的有效位。根据示例,如果七的TCAM行地址代表表示多于一个的缓存行的条目,则处理状态机114可以解码二进制1101的相关块有效位,以识别与系统存储器块相关联的1的有效位。

在框228处,处理状态机114可以确定当前块是否有效。例如,处理状态机114可以确定相关联的块有效位是活动还是非活动的(即,这里,活动/非活动可用于描述有效位的状态,而不定义1或“0”状态是代表有效还是无效)。在这方面,实现可以定义1是有效还是无效。但是,其它实现可以定义相反的映射。

基于在框228处确定当前块是有效的,在框230处,处理状态机114可以输出缓存命中/未命中状态。缓存命中/未命中状态可以被输出到节点控制器/处理器请求器以及ASIC的可以包括请求器的其它部分。

在框232处,处理状态机114可以响应于在框202处接收的请求输出目录状态信息。

基于在框228处确定当前块无效,在框234处,处理状态机114可以确定正在处理的当前请求的当前状态是否等于所存储的状态。可以从到一致性目录的查找来确定当前状态。可以在存储在状态信息110中的信息中描述所存储状态。所存储状态可以包括保持于一致性目录缓存中的(多个)缓存行的状态和所有权信息。在这方面,处理状态机114可以确定与在框202处接收的请求相关联的块之间的状态与所存储状态是否相同。所存储的状态信息可以代表与当前一致性缓存条目相关的信息。这种构造可以(例如,通过读取当前状态)利用来自完全一致性目录的附加信息。

基于在框234处确定当前状态等于所存储状态,在框236处,处理状态机114可以更新与新的存储器块相关联的块有效位。在这方面,可以设定新块的有效位。

基于在框234处确定当前状态与所存储状态不相同,在框238处,处理状态机114可以更新匹配的TCAM条目以去除“不关心”。在这方面,由于TCAM条目不能被共享,因此,随着现在需要单个的TCAM条目,“不关心”TCAM条目可以被去除。在这方面,可以在TCAM条目内改变或去除“不关心”位,以现在利用与任何新的传入请求的更精确的匹配。如果如上所述的四个系统缓存行中的一个的状态或所有权需要更新状态或所有权信息,并且共享TCAM条目的其它缓存行不被更新,则可以如上面描述的将新标签添加到TCAM 106。当前TCAM条目(刚刚匹配的条目)可能还需要被更新,以清除低标签位中的一个或多个的“不关心”编程。可能需要该更新,使得下次使用当前标签以搜索TCAM 106时,此条目将不匹配,因为状态和所有权信息不再相同,并且它们可能不再共享TCAM条目。根据示例,假定TCAM包括条目00XX,并且存在0000、0001和0010的有效位和0011的无效位,接收对0011的请求,并且0011与其余(例如0000、0001和0010)具有不同的状态/所有权,则在框238和240处,TCAM条目可以变为000X,并且可以添加0011的新条目。关于0010,可以添加两个新条目(例如,一个用于0010,并且一个用于0011)。

在框240处,处理状态机114可以为新的TCAM条目确定TCAM标签,并相应地更新状态信息。关于框240,框240可以不使用“不关心”,因为与新请求相关联的状态信息与存储在一致性目录缓存中的状态或所有权信息不匹配。即,TCAM条目可能需要更精确,并且不能代表一组系统存储器块或缓存行。

基于在框206处确定未检测到匹配,在框242处,处理状态机114可以确定与由请求块的地址代表的存储器块组相关联的具有“不关心”的TCAM标签。对于框242,关于从框206到框242的路径,该路径允许TCAM条目代表一组系统存储器块或缓存行,因为这是一组系统存储器块或缓存行中的第一请求,并且,由于是缓存中的第一个,因此不需要与可以存储在状态信息110中的任何所存储的状态或所有权信息进行比较。

在框244处,处理状态机114可以通过使用最近使用最少跟踪电路112选择TCAM条目。即,处理状态机114可以为新TCAM条目选择行/位置,并且选择TCAM条目以逐出。对于图1的示例实现,未使用的条目也可以代表最近使用最少的条目。

在框246处,处理状态机114可以确定来自框244的所选TCAM条目是否活动。TCAM可以包括“从不匹配”状态,以将条目识别为无效。如果TCAM条目可能未被使用、这里关于图3公开的后台清理操作已将多个TCAM条目组合为单个条目,或者TCAM条目被逐出,则TCAM条目可以从活动变为非活动。

基于在框246处确定来自框244的所选TCAM条目是活动的,在框248处,处理状态机114可以将状态信息写入到缓存正在操作的一致性目录。此外,在框250处,处理状态机114可以更新状态信息。

基于在框246处确定来自框244的所选TCAM条目为非活动,在框250处,处理状态机114可以例如通过将TCAM新条目写入先前TCAM条目的位置来更新TCAM条目相关的状态信息条目。

在框252处,处理状态机114可以用在框242处确定的标签更新TCAM 106。

在框254处,处理状态机114可以将缓存未命中状态输出到原始请求电路或包含一致性目录缓存的节点控制器或处理器的其它部分。

关于图2,当接收的缓存行请求要修改当前不关心位时,可以使得新的TCAM条目覆盖新的一对系统存储器块,但是可以为缓存行请求所属的存储器块标记有效位。

图3示出清理器流程,以示出装置100的操作。清理器流程可由后台清理状态机116执行。可以由硬件序列器120执行后台清理状态机116的各种操作。可以在条目的状态信息被更新时执行由后台清理状态机116执行的操作,但是该操作可以利用额外的TCAM搜索和写入操作,并且处理状态机114可能忙于处理下一请求并且不能执行这些操作。因此,可以在不干扰处理状态机114的操作的情况下执行后台清理状态机116。

参考图3,在框300处,可以开始关于清理状态机116的操作的清理器流程。

在框302处,清理状态机116可以将计数值设定为零。计数值可以被设定为零以有效地分析TCAM 106的所有内容。

在框304处,清理状态机116可以确定是否已接收请求(例如,处理器窥探请求、节点控制器请求等)。

基于在框304处确定已接收到请求(例如,处理器窥探请求、节点控制器请求等),处理可以恢复到框304,直到处理状态机114处理该请求。

基于在框304处确定没有接收到请求(例如,处理器窥探请求、节点控制器请求等),在框306处,清理状态机116可以读取由框302处的计数选择的TCAM条目。该计数可以被用作正被分析的TCAM条目的行号,这里,行号可以代表TCAM条目的地址。

在框308处,清理状态机116可以读取在框306处读取的TCAM条目的当前状态信息。

在框310处,清理状态机116可以确定(例如,来自框306的)相关条目是完全扩展(fully expanded)(因为所有可能的存储器块由单个条目代表)还是未被使用。当读取TCAM条目时,可以检查标签的低位。如果低位标签位的状态与和所有可能的“不关心”相关联的值匹配,则相关联的条目是完全扩展的。还可以读取状态信息110以检查有效位。

基于在框310处确定相关条目已被使用且未完全扩展,在框312处,清理状态机116可以搜索TCAM以查找邻接的存储器块。在所公开的示例中,TCAM 106可以包括与搜索中允许全局“不关心”的搜索操作相关联的位字段。搜索的低位可以被设定为“不关心”,并且可以执行TCAM搜索。在这方面,硬件序列器120还可以包括硬件(或处理器实现的指令),以对包括与多个缓存行相关的信息的一致性目录标签104识别相邻缓存行。在这方面,TCAM可以包括允许在搜索操作中的位排除的全局“不关心”位掩码。在本示例中,全局“不关心”位掩码可以被应用于一致性目录标签104的低位地址位。

在框314处,清理状态机116可以确定是否检测到TCAM匹配。清理状态机166可以进一步确定与所检测的相邻缓存行中的每一个相关联的状态和所有权。

基于在框314处确定检测到匹配,在框316处,清理状态机116可以得到与新匹配的条目相关联的新状态信息。在这方面,可以将基于计数值的条目排除在搜索或考虑之外,以防止对错误条目的匹配。此外,可以搜索和考虑行地址大于计数值的TCAM条目。

在框318处,清理状态机116可以基于计数值确定新的状态信息是否与与读取TCAM条目相关联的当前状态信息相同。

基于在框318处确定新状态信息与当前状态信息相同,在框320处,清理状态机116可以更新读取的状态信息。

在框322处,清理状态机116可以更新基于计数值读取的TCAM条目,以包括“不关心”位。TCAM条目可以被重写,使得低标签位中的一些被设定为“不关心”值。这是为了允许该TCAM条目代表多个系统存储器块或缓存行。

在框324处,清理状态机116可以使通过搜索TCAM获得的匹配TCAM条目无效。

在框326处,清理状态机116可以更新最近使用最少跟踪电路112。

在框328处,清理状态机116可以将计数增加1。

在框330处,清理状态机116可以确定计数是否大于与最大TCAM条目相关联的计数。

基于在框330处确定计数不大于最大TCAM条目,进一步处理可以返回到框304。

基于在框330处确定计数大于最大TCAM条目,在框332处,清理状态机116可以在重新开始之前实现时间延迟。时间延迟可以被省略。然而,可以减少再次重新清理一致性目录缓存装置100条目的需要,直到条目已被更新。当可能出现更新时,时间延迟可以允许时间窗口。在这方面,可以在每次条目更新之后执行清理类型操作。但是,出于性能原因,可以在后台中执行清理类型操作,以允许以比清理操作更高的优先级处理请求。

图4-6分别示出用于基于存储器结构的一致性目录缓存实现的示例框图400、方法500的示例流程图和另一示例框图600。可以通过示例而不是限制的方式在上面参照图1描述的装置100上实现框图400、方法500和框图600。可以在其它装置中实施框图400、方法500和框图600。除了示出框图400,图4示出可以执行框图400的步骤的装置100的硬件。硬件可以包括包含执行框图400的步骤的硬件的硬件序列器118(和硬件序列器120)。可选地,硬件可以包括处理器(未示出)和存储器(未示出),诸如存储当由处理器执行时使得处理器执行框图400的步骤的机器可读指令的非暂态计算机可读介质。存储器可以代表非暂态计算机可读介质。图5可以代表基于存储器结构的一致性目录缓存实现的方法,以及该方法的步骤。图6可以代表其上存储有机器可读指令以提供基于存储器结构的一致性目录缓存实现的非暂态计算机可读介质602。机器可读指令当被执行时使得处理器604执行也在图6中示出的框图600的步骤。

图4的处理器(未示出)和/或图6的处理器604可以包括单个或多个处理器或其它硬件处理电路,以执行这里描述的方法、功能和其它处理。这些方法、功能和其它处理可以被体现为存储在计算机可读介质上的机器可读指令,所述计算机可读介质可以是非暂态的(例如,图6中的非暂态计算机可读介质602),诸如硬件储存设备(例如,RAM(随机存取存储器)、ROM(只读存储器)、EPROM(可擦除可编程ROM)、EEPROM(电可擦可编程ROM)、硬盘和闪存存储器(flash memory))。图4的存储器(未示出)可以包括RAM,这里,处理器的机器可读指令和数据可以在运行时驻留。

参考图1-4,并且特别参考图4所示的框图400,硬件序列器118(和硬件序列器120)可以包括对包含与多个缓存行相关的信息的一致性目录标签104识别(例如,在402处)相邻缓存行的硬件。

硬件序列器118(和硬件序列器120)可以包括确定(例如,在404处)与相邻缓存行中的每一个相关联的状态的硬件。

基于确定与相邻缓存行中的一个相关联的状态与与剩余活动相邻缓存行相关联的状态相同,硬件序列器118(和硬件序列器120)可以包括将相邻缓存行分组(例如,在406处)的硬件。

硬件序列器118(和硬件序列器120)可以包括对一致性目录缓存利用(例如,在408处)存储器结构中的条目以识别与分组的缓存行相关的信息的硬件。在这方面,与存储器结构中的条目相关联的数据可以包括多于两种的可能的存储器状态。

参考图1-3和图5,并特别参考图5,对于方法500,在框502处,该方法可以包括对包括与多个缓存行相关的信息的一致性目录标签104识别相邻缓存行。

在框504处,该方法可以包括确定与相邻缓存行中的每一个相关联的状态。

基于确定与相邻缓存行中的一个相关联的状态与与剩余活动相邻缓存行相关联的状态相同,在框506处,该方法可以包括对相邻缓存行进行分组。

在框508,该方法可以包括对一致性目录标签104利用TCAM 108中的单个条目以识别与分组的缓存行相关的信息。

参照图1-3和图6,并特别参考图6,对于框图600,非暂态计算机可读介质602可以包括指令606,以在接收请求(例如,如这里关于图1和2所公开的)时,或在完成与包含与多个缓存行相关的信息的一致性目录标签104相关的先前接收的请求(例如,如这里关于图1和图3所公开的)时,识别一组指定数量的相邻缓存行。

处理器604可以取得、解码和执行指令608,以确定与相邻缓存行中的每一个相关联的状态和所有权。

基于确定与相邻缓存行中的一个相关联的状态和所有权分别与与剩余活动相邻缓存行相关联的状态和所有权相同,处理器604可以取得、解码和执行指令610,以对一致性目录标签104利用存储器结构中的条目,以识别与一组指定数量的相邻缓存行相关的信息。与存储器结构中的条目相关联的数据可以包括多于两种的可能的存储器状态。

这里描述和说明的是示例及其变型中的一些。这里使用的术语、说明和数字仅以解释的方式阐述,并不意味着限制。在意在由以下的权利要求及其等同物限定的主题的精神和范围内可以有许多变化,其中,除非另有说明,否则所有术语的含义都是其最广义的合理含义。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:从易失性存储器到非易失性存储器的可配置数据刷新

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类