CN114758704A - 内容可寻址存储器及其操作方法 - Google Patents
内容可寻址存储器及其操作方法 Download PDFInfo
- Publication number
- CN114758704A CN114758704A CN202210009979.3A CN202210009979A CN114758704A CN 114758704 A CN114758704 A CN 114758704A CN 202210009979 A CN202210009979 A CN 202210009979A CN 114758704 A CN114758704 A CN 114758704A
- Authority
- CN
- China
- Prior art keywords
- cam
- stage
- phase
- sub
- search key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
Abstract
本发明提供了一种内容可寻址存储器(CAM)设备及其操作方法。该CAM设备包括多个CAM子库。每个CAM子库包括按行和列布置并且沿列维度划分为第一阶段和第二阶段的CAM单元阵列。每个CAM子库包括多个第一阶段匹配线(ML)、多个第一阶段搜索线(SL)对、多个第二阶段ML、多个第二阶段SL对。第一阶段ML指示第一阶段行分段是否有第一部分搜索关键字的匹配。每个第二阶段SL对耦接至第二阶段的一列CAM单元并由SL使能信号选通。当多个第一阶段ML都没有指示匹配时SL使能信号解除生效,从而阻止第二部分搜索关键字被提供至多个第二阶段SL对。
Description
技术领域
本发明涉及内容可寻址存储器(content addressable memory,CAM)设备的低功率设计。
背景技术
内容可寻址存储器(content addressable memory,CAM)通常用于高速搜索应用中。CAM设备将搜索关键字(search key)与存储在CAM单元阵列(CAM cell array)的每一行中的数据进行比较,并返回匹配数据的地址。当使用在网络交换机中时,CAM可以加快路由表查找(routing table lookup)和数据转发(data forwarding)的操作。
在CAM设备中,每个CAM单元耦接到跨越相应行的匹配线(match line,ML)和跨越相应列的搜索线对(search line pair)(SL和SLB)。匹配线和搜索线消耗了整体动态功率的最主要部分;例如,高达80%的动态功率。CAM应用的一种常见情况是,当与搜索关键字(search key)进行比较时,大多数CAM行都未命中。在搜索之前,所有匹配线和所有搜索线对都被预充电。在搜索过程中,每个搜索线对(SL和SLB)根据搜索关键字的相应比特,被驱动到相反的逻辑状态(即,一个逻辑高,另一个逻辑低)。因此,每个周期都切换SL和SLB之一。当CAM行与搜索关键字不匹配时,相应的匹配线将被放电(例如,放电至地电压)。如果所有CAM行都不匹配,则所有匹配线在每个周期都会充电和放电,从而消耗最大功率。
因而,降低CAM功耗是降低网络交换机的芯片级整体动态功耗的关键。
发明内容
有鉴于此,本发明提供了一种新颖的内容可寻址存储器(content addressablememory,CAM)设备以及操作方法。
在一个实施例中,提供了一种内容可寻址存储器(CAM)设备。该CAM设备包括多个CAM子库。每个CAM子库包括按行和列布置的CAM单元的阵列,所述CAM单元的阵列沿列维度被划分为第一阶段和第二阶段。每个CAM子库还包括多个第一阶段匹配线(ML),每个第一阶段ML耦接到第一阶段行分段的CAM单元并且指示是否在所述第一阶段行分段中找到第一部分搜索关键字的匹配。每个CAM子库还包括所述第一阶段中的多个第一阶段搜索线(SL)对,以及多个第二阶段ML,其中每个第二阶段ML耦接到第二阶段行分段的CAM单元。每个CAM子库还包括多个第二阶段SL对,其中每个第二阶段SL对耦接至第二阶段中的一列CAM单元并由SL使能信号选通。每个CAM子库还包括用于接收所述多个第一阶段ML作为输入的电路,并且当所述多个第一阶段ML都没有指示匹配时所述电路使得所述SL使能信号解除生效,其中SL使能信号的解除生效能够阻止第二部分搜索关键字被提供至所述多个第二阶段SL对。
在另一个实施例中,提供了一种CAM设备的操作方法,由CAM设备的每个CAM子库执行。每个CAM子库包括按行和列排列的CAM单元阵列,并且每个CAM子库沿列维度被划分为第一阶段和第二阶段。该方法包括以下步骤:将第一部分搜索关键字与第一阶段行分段的CAM单元中存储的数据进行比较;由每个第一阶段ML指示是否在对应的第一阶段行分段中找到对所述第一部分搜索关键字的匹配;基于所有第一阶段ML的逻辑状态产生SL使能信号,其中所述SL使能信号为多个第二阶段SL对的选通信号,所述多个第二阶段SL对耦接至所述第二阶段中相应列的CAM单元;以及当所有第一阶段ML都没有指示匹配时,SL使能信号解除生效,其中所述SL使能信号的解除生效能够阻止第二部分搜索关键字被提供至所述多个第二阶段SL对。
本发明中通过子库级(sub-bank level)动态选通搜索线(dynamically gatedsearch lines)技术来降低功率,可以节省CAM设备的大量功率,从而提高设备的整体性能。
本发明的优点将在以下描述中详细解释。
附图说明
在附图中通过示例而非限制的方式说明本发明,其中相同的附图标记表示相同的元件。需要说明的是,本发明中“一”或“一个”实施例并不一定是指同一实施例,此类表述表示至少一个。此外,当结合实施例描述特定特征、结构或特性时,无论是否进行了明确描述,都应当认为在本领域技术人员的知识范围内可结合其他实施例来实施此类特征、结构或特性。
图1例示了根据一个实施例的CAM设备。
图2例示了根据另一个实施例的CAM设备。
图3例示了根据一个实施例的CAM设备的子库。
图4示出了根据一个实施例的线或电路。
图5是示出根据一个实施例的由CAM设备的子库执行的过程的流程图。
图6是示出根据一个实施例的用于子库中的动态选通搜索线的方法的流程图。
具体实施方式
在以下描述中,阐述了许多具体细节。然而,应当理解,可以在没有这些具体细节的情况下实践本发明的实施例。在其他情况下,为了不混淆对本发明的理解,没有详细示出众所周知的电路、结构和技术。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践本发明。本领域普通技术人员根据本发明的描述在无需过度实验的情况下将能够实现适当的功能。
本发明的实施例提供了一种超低功率的内容可寻址存储器(contentaddressable memory,CAM)设备。本文使用的术语“CAM”可以涵盖不同类型的CAM,例如二进制CAM(binary CAM)、三进制CAM(ternary CAM,TCAM)、四进制CAM(quaternary CAM,QCAM)或其他类型的CAM。在一个实施例中,本文公开的CAM设备可以是片上系统(system-on-a-chip,SOC)的一部分,例如处理和/或通信设备(例如,网络设备)中的SOC。
在一种使用场景中,可以使用CAM设备来存储查找表,通过使用搜索关键字在该查找表中搜索匹配条目。在查找表中,可以按优先级顺序存储一组规则(例如,访问控制(access control,ACL)规则或其他规则)。当多个条目与搜索关键字相匹配时,匹配条目的最高地址被输出为匹配地址。相关规则(correlated rules)可以被编程为彼此相邻并占据查找表中的相邻条目。因此,如果给定条目与表示给定规则的搜索关键字相匹配,则附加匹配(如果有)很可能会出现在与给定条目相邻存储的相关规则中。例如,可以在优先级比给定条目稍高或稍低的条目中找到附加匹配,因此附加匹配被存储在给定条目附近。因此,搜索结果中经常存在空间局部性(spatial locality)的模式。这里公开的子库级(sub-banklevel)动态选通搜索线(dynamically gated search lines)技术寻求利用CAM设备的可能匹配的空间局部性来降低功率。
本文公开的CAM设备可以包括任意数量的存储库(memorybank)并且每个存储库是按行和列布置的CAM单元阵列。每个存储库可以沿行维度划分为多个子库。每个子库还可以沿列维度进一步划分为至少两个阶段(stage),其中仅当在同一子库的第一阶段中找到匹配时该子库的第二阶段才被激活(即,启用)用于搜索。在子库级别有条件地启用第二阶段搜索。即,每个子库可以独立于其他子库来启用或禁用其第二阶段搜索。子库级别的启用利用了上述空间局部性,因为经常在同一个子库中找到匹配条目。其第一阶段没有匹配的子库可以禁用第二阶段的搜索。更具体地,根据第一阶段的搜索结果动态地产生搜索使能信号,以选通第二阶段中的搜索线。当由于第一阶段中没有匹配使得搜索使能信号被解除生效(de-asserted)(例如,为逻辑低)时,第二阶段搜索线被禁止搜索并禁止上述切换(toggle)。因此,可以节省大量功率,从而提高设备的整体性能。
在以下描述中,术语“连接”、“耦接”和它们的派生词用于表示两个或多个元件可以直接物理接触或不直接物理接触,且在它们之间具有电连接。因此,下文中的术语“连接”和“耦接”分别等效于“电连接”和“电耦接”。
图1例示了根据一个实施例的CAM设备100。CAM设备100包括沿着行维度划分为四个子库(例如,子库0、子库1、子库2和子库3)的CAM库101。可以理解的是,CAM设备100可以包括任意数量的CAM库,并且每个CAM库可以包括多个子库,并不限于四个。CAM库101具有C列CAM单元,C等于要与CAM单元中存储的数据进行比较的搜索关键字的位数。在四个子库的示例中,每个子库具有R行和C列的CAM单元并且CAM库101具有(4xR)行和C列。
在一个实施例中,每个子库进一步沿着列维度划分为多个阶段;例如,第一阶段110和第二阶段120。第一阶段110具有C1列并且第二阶段120具有C2列,其中C1+C2=C。在对称单元结构的一个实施例中,C1=C2;在不对称单元结构的替代实施例中,C1和C2可以是不同的数字。具有非对称单元结构的CAM库101可以具有C1<C2。如下文将进一步详细描述的,当在相同子库的第一阶段110中没有发现匹配时,可以禁用第二阶段120中的搜索线以节省功率。当第一阶段110中的大多数搜索的结果都是不匹配时,具有较宽的第二阶段(即,C1<C2)可以比对称单元结构(即,C1=C2)节省更多功率,因为较宽的第二阶段包含更多的可能会被禁用的搜索线。然而,应当理解,这里描述的动态选通搜索线技术适用于C1和C2的任何正整数值。
CAM设备100还包括搜索输入寄存器170,其存储要与存储在CAM单元的行中的数据进行比较的搜索关键字。在图1的示例中,子库中CAM单元的每一行被划分为第一阶段行分段(row segment)和第二阶段行分段。第一部分搜索关键字(例如,前C1个比特)与存储在第一阶段行分段中的数据进行比较,第二部分搜索关键字(例如,后面的C2个比特)与存储在第二阶段行分段中的数据进行比较。经由耦接到子库的驱动器,搜索关键字从搜索输入寄存器170提供至每个子库的CAM单元。
如将参考图3和图4详细描述的,在子库的两个阶段110和120中,每个CAM单元都耦接到匹配线(ML)和两条互补搜索线(SL)(称为搜索线对)。每个ML耦接到同一行分段中的所有CAM单元,并且每个SL对都耦接到同一列中的CAM单元。第一阶段110中的ML被称为第一阶段ML(即,ML1),而第二阶段120中的ML被称为第二阶段ML(即,ML2)。第一阶段110中的SL对被称为第一阶段SL对(即,SL1和SLB1),而第二阶段120中的SL对被称为第二阶段SL对(即,SL2和SLB2)。
在图1的示例中,第一阶段驱动器(例如,驱动器01、驱动器11、驱动器21或驱动器31)接收第一部分搜索关键字并根据第一部分搜索关键字的比特值驱动第一阶段SL对。第二阶段驱动器(例如,驱动器02、驱动器12、驱动器22或驱动器32)接收第二部分搜索关键字并根据第二部分搜索关键字的比特值驱动第二阶段SL对。例如,如果搜索关键字比特值为1,则相应的SL可以被驱动为逻辑高并且SLB可以被驱动为逻辑低。根据本发明的实施例,当同一子库的第一阶段110使SL使能(SL_EN)信号生效(例如,逻辑高)时,每个第二阶段SL对被启用且根据第二部分搜索关键字被驱动至相反逻辑电平。当子库的第一阶段110使SL_EN信号解除生效(例如,SL_EN处于逻辑低电平)时,同一子库的第二阶段SL对被禁用并且在第二阶段120中不执行比较操作。
图1进一步例示了在每对对应的第一阶段110和第二阶段120之间的控制电路150。在替代实施例中,控制电路150可以被放置在子库中不同于图1中所示位置的其他位置中。此外,控制电路150的不同部分可以放置在子库的不同或分开的位置。每个子库的控制电路150包括为子库生成SL_EN信号的电路组件等。
此外,CAM设备100包括地址解码器160和匹配输出电路180。地址解码器160包括响应于从地址总线或其他电路接收到的地址,选择CAM单元的对应行以进行读取、写入和/或其他操作的电路。当在CAM库101中出现匹配时,匹配输出电路180产生匹配信号,以指示包含匹配条目的行的索引。
在一些实施例中,子库中的第一阶段110和第二阶段120中的每一个可以进一步划分为多个CAM块(例如,在该示例中,每个阶段分为两个CAM块)。在图1中在每一阶段中由虚线表示这种划分。例如,子库(Sub-Bank)0的第一阶段110可以包括左CAM块和右CAM块,每个块具有(C1/2)列和R行个CAM单元。在左CAM块中左半行分段的CAM单元耦接到左ML,而在右CAM块中对应的右半行分段耦接到右ML。左ML和右ML上的信号被组合(例如,通过与门)以生成该行分段的第一阶段ML信号。子库0的第二阶段120可以类似地划分为左右块。应理解,子库的每一阶段可被划分为具有任何块宽度(即,列数)的任何数量的块,这由电路设计决定。在以下描述中,当使用这种块划分时,术语“第一阶段ML”和“第二阶段ML”分别指的是第一阶段和第二阶段中的组合的左ML和右ML。
图2例示了根据另一个实施例CAM设备200,其中的CAM库202被划分为四个子库。CAM设备200所执行的操作以及CAM库202所产生的信号与CAM设备100和CAM库101的相同。然而,CAM设备200中驱动器的布置不同于CAM设备100中驱动器的布置。更具体地说,在CAM设备100中,子库0和子库1的驱动器彼此紧邻,子库2和子库3的驱动器也彼此紧邻。在CAM设备200中,子库1和子库2的驱动器彼此紧邻,而子库0和子库3的驱动器与其他驱动器分开。在替代实施例中,每个子库中驱动器的布置可以不同于图1和图2的示例。可以理解,所公开的动态选通搜索线的技术可以应用于CAM设备中的不同布置的驱动器。
图3例示了根据一个实施例的子库300的进一步细节。子库300可以是图1和图2所示的子库中的任何一个。子库300包括第一阶段110、第二阶段120和第一阶段预充电(pre-charge,PRCHG)电路361、第二阶段PRCHG电路362和使能产生电路380。第一阶段110包括CAM单元阵列310,第二阶段120包括CAM单元阵列320。为了简单起见,在第一阶段110和第二阶段120中没有示出所有的CAM单元行和CAM单元列。
每个CAM单元(310和320)位于一个行分段和列中。每个CAM单元耦接到匹配线(ML)和搜索线对(SL和SLB)。在子库300内,每个第一阶段ML(即,ML1)耦接到同一第一阶段行分段中的所有CAM单元310,并且每个第二阶段ML(即,ML2)耦接到同一第二阶段行分段中的所有CAM单元320。每个第一阶段SL对(SL1和SLB1)耦接到第一阶段110的同一列中的所有CAM单元310,并且每个第二阶段SL对(例如,SL2和SLB2)耦接到第二阶段120的同一列中的所有CAM单元320。搜索关键字是分别输入到第一阶段110和第二阶段120的数据D1_in和D2_in的组合。为了说明的目的,D2_in(k)代表输入到第二阶段120的一个搜索关键字比特。第一阶段驱动器331和第二阶段驱动器332根据相应的数据输入值驱动相应的SL对。
第一阶段PRCHG电路361、第二阶段PRCHG电路362和使能产生电路380可以是图1和图2中的控制电路150的一部分,在替代实施例中,这些电路361、362、380的布置可以与图3中所示的不同。为简单起见,图3的示例中并未显示所有时钟信号。
对于第一阶段110中的每个行分段,第一阶段PRCHG电路361包括与门(AND)365,其用于接收预充电(PRCHG)信号和特定行的有效比特(valid bit,VBIT)指示符。VBIT指示符指示相应行中存储的数据是否有效。VBIT指示符选通/控制第一阶段ML的预充电。以最上面一行的分段为例,当VBIT(0)为逻辑高电平时,相应的第一阶段ML(即,ML1(0))被预充电为逻辑高电平。如果第一部分搜索关键字与存储在CAM单元310的最上面一行的分段中的数据匹配,则ML1(0)保持高电平并在下一个时钟中通过相应的触发器(flip-flop)传送(例如,D触发器352),以用作第二阶段120中最上面一行的分段的ML使能信号(ML_EN(0))。替代实施例中在第一阶段PRCHG电路361中可以不包括VBIT指示符。
对于第二阶段120中的每个行分段,第二阶段PRCHG电路362包括与门366,以接收相应行分段的PRCHG信号和ML_EN信号。逻辑高状态的ML_EN信号指示在第一阶段110中对应行分段中的匹配。例如,ML_EN(0)使得在第二阶段120中搜索第二部分搜索关键字之前,ML2(0)可以被预充电至逻辑高电平。
线或(wired-OR)电路370从第一阶段110中所有R个行分段的ML1接收输入并对所有ML1执行逻辑或运算。线或电路370的输出在下一个时钟中通过D触发器372传送,以作为第二阶段120的SL使能(SL_EN)信号。注意,每个子库根据该子库的第一阶段中的匹配结果,生成其自己的SL_EN。也就是说,SL_EN是子库级使能信号。生效的(例如,逻辑高)SL_EN信号使能第二阶段120中的搜索(即,比较)操作。SL_EN信号是第二阶段驱动器332的输入处的选通信号。生效的SL_EN指示第一阶段110的一个或多个行分段中存在匹配,并且使第二部分搜索关键字能够向前传送到第二阶段SL对。第二阶段驱动器332包括用于每个第二阶段SL对的一对3-输入与门(例如,与门381和382)。与门381接收SL_EN、时钟信号CCLK和搜索关键字比特D2_in(k)作为输入,与门382接收SL_EN、时钟信号CCLK和反相的(inverted)搜索关键字比特作为输入。
图4示出了根据一个实施例的线或电路370的进一步细节。为了说明的简单起见,在第一阶段110和第二阶段120中并未示出CAM单元的所有行和列。线或电路370包括R行开关375,R行开关375之后是反相器(inverter)376。开关375并行连接,它们的所有输出端彼此连接,所有输入端接地。每个开关375的栅极端连接到同一行分段中的对应ML1。以顶部行分段为例,当在第一阶段110的顶部行分段中发现匹配时,ML1(0)处于逻辑高状态。相应的开关375接通,导致其输出端被下拉至地。当任一开关375接通时,所有开关375的所有输出端均被拉至逻辑低状态(例如接地),且反相器376输出具有逻辑高状态(即,生效SL_EN)的SL_EN信号。
因此,线或电路370对所有第一阶段ML执行布尔或运算。具有逻辑高ML1的一个或多个第一阶段行分段使得线或电路370能使SL_EN生效。当第一阶段行分段中都没有逻辑高ML1时(即,第一阶段110中没有匹配),SL_EN被解除生效。输入到第二阶段120的搜索关键字由SL_EN和时钟信号(CCLK)进行选通(gated)。因此,当在第一阶段110中没有匹配时,在第二阶段120中不能执行搜索。
图4以虚线示出了子库300中的一些时钟信号连接。例如,线或电路370可以在输入端(即,ML1)和输出端(即,在反相器376处)处通过时钟信号(DCLK)被选通。所有的D触发器352可以由另一个时钟信号(CK)进行选通。此外,第一阶段驱动器331和第二阶段驱动器332可以被另一个时钟信号(CCLK)选通。可以理解,动态选通搜索线技术可以应用于使用不同时钟信号的子库。
图5是示出根据一个实施例的由CAM设备的子库执行的过程500的流程图。图1至图4中提供了子库的一些示例。在步骤510,第一阶段ML(例如,ML1)和第一阶段SL对(例如,SL1和SLB1)被预充电(例如,至逻辑高)。在一些实施例中,预充电的ML1对应于有效的CAM行条目,如对应的VBIT指示符所指示的。在步骤520,第一阶段驱动器根据第一部分搜索关键字将每个第一阶段SL对驱动到相反的逻辑电平。例如,如果搜索关键字的第一比特是1,则第一列的SL1和SLB1可以分别被驱动到高逻辑状态和低逻辑状态。如果搜索关键字的第一比特为0,则第一列的SL1和SLB1可以分别被驱动到低逻辑状态和高逻辑状态。在步骤530,将第一部分搜索关键字与第一阶段行分段中存储的数据进行比较;例如,每个第一阶段CAM单元将其存储的值与相应SL对的逻辑电平进行比较。在步骤540,当对应的第一阶段行分段是匹配的时,使该行分段的ML_EN生效(例如,逻辑高),或者当对应的第一阶段行分段不匹配时,使该行分段的ML_EN解除生效(例如,逻辑低)。过程500进行到步骤550或步骤560。在步骤550,当所有第一阶段行分段都没有匹配时,SL_EN被解除生效(de-assert)(例如,逻辑低),并且在步骤555,第二阶段SL对被禁用;因此,在子库中没有匹配。
当过程500进行到步骤560时,当一个或多个第一阶段行分段具有匹配时,SL_EN生效(例如,为逻辑高)。继续到步骤570,对于由ML_EN使能的每个第二阶段行分段,对应的第二阶段ML(例如,ML2)被预充电到逻辑高。此外,所有的第二阶段SL对(例如,SL2和SLB2)都预充电到逻辑高电平。在步骤580,根据第二部分搜索关键字的对应比特值,生效的SL_EN使得每个第二阶段SL对被驱动到相反的逻辑状态。在步骤590,将第二部分搜索关键字与由对应ML_EN使能的那些第二阶段行分段中存储的数据进行比较。在步骤595,输出比较结果以指示匹配或不匹配。还可以输出匹配条目的行索引。
图6是示出根据一个实施例的在子库中动态选通搜索线的方法的流程图。方法600可以由图1至图4所示的子库执行。每个子库包括按行和列布置的CAM单元阵列。子库沿列维度划分为第一阶段和第二阶段。
在步骤610,将第一部分搜索关键字与子库中第一阶段行分段的CAM单元中存储的数据进行比较。在步骤620,,第一阶段ML指示在对应的第一阶段行分段中是否找到第一部分搜索关键字的匹配。在步骤630,基于所有第一阶段ML的逻辑状态产生SL_EN信号。SL_EN信号是第二阶段SL对的选通信号,第二阶段SL对耦接到第二阶段中对应列的CAM单元。在步骤640,当第一阶段ML都没有指示匹配时,SL_EN信号被解除生效。SL_EN信号的解除生效阻止了将第二部分搜索关键字提供给第二阶段SL对。
已经参考图1至图4的示例性实施例描述了图5和图6的流程图的操作。然而,应当理解,图5和图6的流程图的操作可以由除了参考图1至图4所讨论的那些实施例之外的本发明实施例来执行,并且参考图1至图4所讨论的实施例可以执行与参考这些流程图所讨论的操作所不同的操作。虽然图5和图6的流程图示出了由本发明的某些实施例执行的特定操作顺序,但应当理解,这种顺序是示例性的(例如,替代实施例可以执行不同顺序的操作、组合某些操作、重复某些操作等)。
虽然已经根据几个实施例描述了本发明,但是本领域技术人员将认识到,本发明不限于所描述的实施例,并且可以在所附权利要求的精神和范围内进行修改和变更。因此,本发明被认为是说明性的而不是限制性的。
Claims (19)
1.一种内容可寻址存储器CAM设备,包括:
多个CAM子库,每个CAM子库包括:
按行和列布置的CAM单元的阵列,所述CAM单元的阵列沿列维度被划分为第一阶段和第二阶段;
多个第一阶段匹配线ML,每个第一阶段ML耦接到第一阶段行分段的CAM单元并且指示是否在所述第一阶段行分段中找到第一部分搜索关键字的匹配;
所述第一阶段中的多个第一阶段搜索线SL对;
多个第二阶段ML,每个第二阶段ML耦接到第二阶段行分段的CAM单元;
多个第二阶段SL对,其中每个第二阶段SL对耦接至第二阶段中的一列CAM单元并由SL使能信号选通;以及
用于接收所述多个第一阶段ML作为输入的电路,并且当所述多个第一阶段ML都没有指示匹配时所述电路使得所述SL使能信号解除生效,其中所述SL使能信号的解除生效能够阻止第二部分搜索关键字被提供至所述多个第二阶段SL对。
2.如权利要求1所述的CAM设备,其中当一个或多个第一阶段ML指示与所述第一部分搜索关键字的匹配时,所述SL使能信号生效。
3.如权利要求1所述的CAM设备,其中所述电路包括线或电路,所述线或电路用于对所述多个第一阶段ML执行逻辑或操作以产生所述SL使能信号。
4.如权利要求1所述的CAM设备,其中,所述电路包括时钟选通触发器,所述时钟选通触发器接收用于指示所述第一阶段行分段中的匹配的第一阶段ML并且输出ML使能信号以使能相应第二阶段ML的预充电。
5.如权利要求1所述的CAM设备,其中,每个CAM子库都是CAM库沿行维度划分的所述多个CAM子库的一部分。
6.如权利要求1所述的CAM设备,其中每个CAM子库产生对应的SL使能信号以指示在所述CAM子库的对应第一阶段中的匹配。
7.如权利要求1所述的CAM设备,其中所述第一阶段和所述第二阶段包括相同列数的CAM单元,或者所述第一阶段包括比所述第二阶段更少列的CAM单元。
8.如权利要求1所述的CAM设备,其中每个CAM单元为三进制CAM单元、二进制CAM单元或者四进制CAM单元。
9.如权利要求1所述的CAM设备,其中每个第二阶段SL对耦接到一对与门,该对与门包括接收所述SL使能信号、时钟信号和第二部分搜索关键字比特输入的第一与门以及接收所述SL使能信号、所述时钟信号和反相的第二部分搜索关键字比特输入的第二与门。
10.如权利要求1所述的CAM设备,还包括:
输出电路,用于指示搜索关键字与存储在所述多个CAM子库的一个或多个行中的数据之间的匹配,其中所述搜索关键字包括提供至所述第一阶段的所述第一部分搜索关键字和提供至所述第二阶段的所述第二部分搜索关键字。
11.一种CAM设备的操作方法,由所述CAM设备的多个CAM子库中的每一个CAM子库执行,每个CAM子库包括按行和列布置的CAM单元的阵列,所述方法包括:
将第一部分搜索关键字与第一阶段行分段的CAM单元中存储的数据进行比较,其中每个CAM子库沿列维度被划分为第一阶段和第二阶段;
由每个第一阶段ML指示是否在对应的第一阶段行分段中找到对所述第一部分搜索关键字的匹配;
基于所有第一阶段ML的逻辑状态产生SL使能信号,其中所述SL使能信号为多个第二阶段SL对的选通信号,所述多个第二阶段SL对耦接至所述第二阶段中相应列的CAM单元;以及
当所有第一阶段ML都没有指示匹配时,所述SL使能信号解除生效,其中所述SL使能信号的解除生效能够阻止第二部分搜索关键字被提供至所述多个第二阶段SL对。
12.如权利要求11所述的方法,还包括:
当一个或多个第一阶段ML指示匹配时,所述SL使能信号生效。
13.如权利要求11所述的方法,还包括:
当所述SL使能信号生效时,将所述第二部分搜索关键字与第二阶段行分段的CAM单元中存储的数据进行比较。
14.如权利要求11所述的方法,还包括:
对所有第一阶段ML执行逻辑或运算,以生成所述SL使能信号。
15.如权利要求11所述的方法,还包括:
当对应的第一阶段行分段中具有匹配时,产生ML使能信号以使能相应第二阶段行分段的预充电。
16.如权利要求11所述的方法,还包括:
当对应的有效比特指示符指示对应行的CAM单元的有效性时,对对应的第一阶段ML进行预充电。
17.如权利要求11所述的方法,还包括:
当发现搜索关键字与在所述多个CAM子库的一个或多个行中存储的数据相匹配时输出匹配指示,其中所述搜索关键字包括提供至所述第一阶段的所述第一部分搜索关键字和提供至所述第二阶段的所述第二部分搜索关键字。
18.如权利要求11所述的方法,其中每个CAM单元是三进制CAM单元、二进制CAM单元或者四进制CAM单元。
19.如权利要求11所述的方法,其中每个CAM子库都是CAM库沿行维度划分的所述多个CAM子库的一部分。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163135038P | 2021-01-08 | 2021-01-08 | |
US63/135,038 | 2021-01-08 | ||
US17/522,214 US11967377B2 (en) | 2021-01-08 | 2021-11-09 | Dynamically gated search lines for low-power multi-stage content addressable memory |
US17/522,214 | 2021-11-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114758704A true CN114758704A (zh) | 2022-07-15 |
Family
ID=79230717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210009979.3A Pending CN114758704A (zh) | 2021-01-08 | 2022-01-06 | 内容可寻址存储器及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11967377B2 (zh) |
EP (1) | EP4027347B1 (zh) |
CN (1) | CN114758704A (zh) |
TW (1) | TWI806334B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2608009B (en) * | 2021-12-29 | 2023-08-09 | Univ Dalian Tech | Enhanced TL-TCAM lookup-table hardware search engine |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5373290A (en) * | 1991-09-25 | 1994-12-13 | Hewlett-Packard Corporation | Apparatus and method for managing multiple dictionaries in content addressable memory based data compression |
US6687785B1 (en) * | 2000-06-08 | 2004-02-03 | Netlogic Microsystems, Inc. | Method and apparatus for re-assigning priority in a partitioned content addressable memory device |
US6374326B1 (en) | 1999-10-25 | 2002-04-16 | Cisco Technology, Inc. | Multiple bank CAM architecture and method for performing concurrent lookup operations |
US7219188B1 (en) * | 2004-02-06 | 2007-05-15 | Netlogic Microsystems, Inc. | Segmented content addressable memory array and priority encoder |
US7242600B2 (en) | 2005-10-28 | 2007-07-10 | Qualcomm Incorporated | Circuit and method for subdividing a CAMRAM bank by controlling a virtual ground |
US7692941B2 (en) * | 2008-08-25 | 2010-04-06 | Netlogic Microsystems, Inc. | Separate CAM core power supply for power saving |
US7848129B1 (en) * | 2008-11-20 | 2010-12-07 | Netlogic Microsystems, Inc. | Dynamically partitioned CAM array |
US9063840B1 (en) * | 2009-08-21 | 2015-06-23 | Broadcom Corporation | Multiple match detection for multiple flows in a content addressable memory |
US7920399B1 (en) | 2010-10-21 | 2011-04-05 | Netlogic Microsystems, Inc. | Low power content addressable memory device having selectable cascaded array segments |
US8031501B1 (en) | 2010-10-21 | 2011-10-04 | Netlogic Microsystems, Inc. | Segmented content addressable memory device having pipelined compare operations |
US8467213B1 (en) * | 2011-03-22 | 2013-06-18 | Netlogic Microsystems, Inc. | Power limiting in a content search system |
US8493763B1 (en) | 2011-10-27 | 2013-07-23 | Netlogic Microsystems, Inc. | Self-timed match line cascading in a partitioned content addressable memory array |
US8787059B1 (en) * | 2011-12-05 | 2014-07-22 | Netlogic Microsystems, Inc. | Cascaded content addressable memory array having multiple row segment activation |
US8619451B1 (en) * | 2012-01-06 | 2013-12-31 | Netlogic Microsystems, Inc. | Power savings in a content addressable memory device using masked pre-compare operations |
US9306596B2 (en) * | 2014-06-27 | 2016-04-05 | Intel Corporation | Hybrid CAM assisted deflate decompression accelerator |
JP6533129B2 (ja) * | 2015-08-28 | 2019-06-19 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US10397263B2 (en) * | 2017-04-25 | 2019-08-27 | Futurewei Technologies, Inc. | Hierarchical pattern matching for deep packet analysis |
US10261487B1 (en) * | 2018-01-31 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Finite state machines |
US10453531B1 (en) * | 2018-06-29 | 2019-10-22 | Sandisk Technologies Llc | Content addressable memory using threshold-adjustable vertical transistors and methods of forming the same |
US10741585B2 (en) * | 2018-06-29 | 2020-08-11 | Sandisk Technologies Llc | Content addressable memory using threshold-adjustable vertical transistors and methods of forming the same |
US11264096B2 (en) * | 2019-05-14 | 2022-03-01 | Micron Technology, Inc. | Apparatuses, systems, and methods for a content addressable memory cell with latch and comparator circuits |
US11031079B1 (en) * | 2019-11-27 | 2021-06-08 | Flashsilicon Incorporation | Dynamic digital perceptron |
US11600320B2 (en) * | 2019-12-17 | 2023-03-07 | Flashsilicon Incorporation | Perpectual digital perceptron |
US11031080B1 (en) * | 2019-12-26 | 2021-06-08 | Micron Technology, Inc. | Architecture for fast content addressable memory search |
JP7376435B2 (ja) * | 2020-07-27 | 2023-11-08 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US11211111B1 (en) * | 2020-09-30 | 2021-12-28 | Arm Limited | CAM device with 3D CAM cells |
US11561607B2 (en) * | 2020-10-30 | 2023-01-24 | Hewlett Packard Enterprise Development Lp | Accelerating constrained, flexible, and optimizable rule look-ups in hardware |
-
2021
- 2021-11-09 US US17/522,214 patent/US11967377B2/en active Active
-
2022
- 2022-01-04 EP EP22150235.4A patent/EP4027347B1/en active Active
- 2022-01-04 TW TW111100217A patent/TWI806334B/zh active
- 2022-01-06 CN CN202210009979.3A patent/CN114758704A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4027347A1 (en) | 2022-07-13 |
EP4027347B1 (en) | 2024-03-06 |
US11967377B2 (en) | 2024-04-23 |
US20220223207A1 (en) | 2022-07-14 |
TWI806334B (zh) | 2023-06-21 |
TW202228135A (zh) | 2022-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6243280B1 (en) | Selective match line pre-charging in a partitioned content addressable memory array | |
US6512684B2 (en) | Content addressable memory having cascaded sub-entry architecture | |
US7417881B2 (en) | Low power content addressable memory | |
KR101052812B1 (ko) | 감소된 매치라인 용량을 위한 터너리 내용 주소화 메모리셀 | |
US6430074B1 (en) | Selective look-ahead match line pre-charging in a partitioned content addressable memory array | |
US6901000B1 (en) | Content addressable memory with multi-ported compare and word length selection | |
US7602629B2 (en) | Content addressable memory | |
WO2003056565A1 (en) | Circuit and method for reducing power usage in a content addressable memory | |
US6958925B1 (en) | Staggered compare architecture for content addressable memory (CAM) device | |
US6704216B1 (en) | Dual match-line, twin-cell, binary-ternary CAM | |
WO2009032457A1 (en) | Low power ternary content-addressable memory (tcam) | |
Hussain et al. | Match-line division and control to reduce power dissipation in content addressable memory | |
US7924589B1 (en) | Row redundancy for content addressable memory having programmable interconnect structure | |
US7113415B1 (en) | Match line pre-charging in a content addressable memory having configurable rows | |
EP4027347B1 (en) | Dynamically gated search lines for low-power multi-stage content addressable memory | |
US6972978B1 (en) | Content addressable memory (CAM) devices with block select and pipelined virtual sector look-up control and methods of operating same | |
JP2779114B2 (ja) | 連想メモリ | |
Chang | A high-performance and energy-efficient TCAM design for IP-address lookup | |
TWI713051B (zh) | 內容可定址記憶體裝置 | |
US6493790B1 (en) | Translation-lookaside buffer with current tracking reference circuit | |
US8493763B1 (en) | Self-timed match line cascading in a partitioned content addressable memory array | |
JP2004110887A (ja) | 半導体装置のデータ読出回路およびデータ読出方法 | |
US5166660A (en) | Random access compare array | |
US7667993B2 (en) | Dual-ported and-type match-line circuit for content-addressable memories | |
Jiang et al. | A fully parallel content addressable memory design using multi-bank structure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |