多周期搜索内容可寻址的存储器的制作方法

文档序号:16596228发布日期:2019-01-14 19:40阅读:248来源:国知局
多周期搜索内容可寻址的存储器的制作方法

本申请要求享有于2016年5月31日提交的、名称为“multiplecyclesearchcontentaddressablememory”的美国临时申请no.62/343,671、以及于2016年12月5日提交的、名称为“multiplecyclesearchcontentaddressablememory”美国专利申请no.15/369,823的优先权,这些申请在此通过全文引用的方式明确地并入本文。

本公开通常涉及内容可寻址的存储器(cam)电路,并且更具体地涉及一种多周期cam。



背景技术:

cam是可以基于内容可寻址的存储器。换言之,cam可基于存储在cam中的数据而寻址。不同于其中用于提供存储器地址且ram返回存储在该地址的数据的随机存取存储器(ram),cam被设计为使得用户提供数据字且cam搜索存储器,以查看数据字存储在cam的存储器中何处。如果在cam的存储器中找到数据字,则cam返回在此找到字的一个或多个存储地址的列表。

为了执行搜索,cam可以包括比较电路。cam中的比较电路可以将输入搜索数据与所存储的数据比较(或者可以将输入搜索数据与包含了所存储的数据的子集的表格比较)。比较电路可以检测在单元中所存储位于输入位之间的匹配。

cam返回任何匹配数据的地址。cam可以是消耗了集成电路(ic)上大量硅面积的大型存储器阵列。此外,在cam搜索期间高度活跃性可以影响用于cam的高功率利用率以及cam中高功率密度,例如在小硅管芯面积中的高功率利用率。

cam可以用于某些高速搜索应用。cam也可以称作联想存储器或联想存储装置。cam可以将有时称作标签的输入搜索数据与所存储的数据的表格比较。cam可以返回匹配数据的地址。

设计cam以在单个操作中搜索cam的整个存储器。因此,对于cam中数据的搜索可以远远快于对于ram中数据的类似搜索。由cam所使用的功率的量可以是相当大的。因此,可以希望一种用于减小内容可寻址存储器的功率利用率的系统和方法。



技术实现要素:

以下展示了一个或多个方面的简化概要以便于提供这些方面的基本了解。概要并非是所有预期设计的方面的广泛概述且有意设计为并未标识所有方面的关键或决定性要素也并未描绘任意或所有方面的范围。概要的单纯目的在于以简化形式展示一个或多个方面的一些概念以作为稍后所展示的更详细说明书的前奏。

在本公开的一个方面中,提供了一种方法和设备。设备可以是内容可寻址存储器(cam)。cam包括均被配置用于存储数据的多个存储器区段。额外地,cam包括被配置用于将在多个存储器区段的每个存储器区段中的所存储的数据与搜索输入数据比较的比较器。比较可以是以时分多路复用的方式。

在本公开的另一方面中,cam可以包括均被配置用于存储数据的多个存储器区段。cam也可以包括被配置用于将多个存储器区段的每一个中的所存储的数据与在多个存储器存取周期中对应一个中的搜索输入数据比较的比较器。

在本公开的另一方面中,cam可以包括多个存储器区段。多个存储器区段的每一个可以被配置用于存储数据。cam也可以包括比较器。额外地,cam可以包括状态机,被配置用于基于状态机的状态而控制比较器何时将在多个存储器区段的每一个中所存储的数据与搜索输入数据比较。

在本公开的另一方面中,提供了一种方法。方法可以是在cam中。额外地,方法可以包括在cam中多个存储器区段中存储数据。方法也可以包括以时分多路复用方式将在多个存储器区段的每一个中的所存储的数据与搜索输入数据比较。

可以理解,从以下详细说明书将使得设备和方法的其他方面变得对于本领域技术人员显而易见,其中借由示意说明的方式示出并描述了设备和方法的各个方面。如将认识到的,可以以其他和不同形式实施这些方面,并且数个细节能够在各种其他方面修改。因此,附图和详细说明书应该视作本质上是说明示意性而非限制性的。

附图说明

图1a是说明了示例性cam的概念性框图;

图1b是说明了图1a的示例性cam的一部分的概念性框图;

图1c是说明了示例性cam的一部分的另一概念性框图;

图2是说明了包括在cam中一系列存储器单元的示例性cam的概念性框图;

图3是十六位输入、4周期搜索cam的概念图;

图4是说明了具有共用比较电路的示例性cam的概念性框图;

图5是说明了具有共用比较电路的示例性cam的另一概念性框图;以及

图6是说明了可以实施在cam中的示例性方法的流程图。

具体实施方式

以下结合附图阐述的详细说明书意在作为哥哥配置的说明并且并非意在仅展示其中可以实践在此所述概念的配置。详细说明书为了提供哥哥概念的详尽理解的目的而包括具体细节。然而,对于本另一技术人员明显的是,可以不采用这些具体细节而实践这些概念。在一些情形中,以框图形式示出广泛已知的结构和部件以避免模糊这些概念。仅仅为了方便和清楚可以使用缩写和其他描述性术语且并非意在限制在此所公开的任何概念。

遍及本公开所展示的各个存储器可以实施作为独立存储器或者在其中。该方面也可以包括在任何集成电路(ic)或系统、或者集成电路或系统的任意部分(例如驻留在集成电路或集成电路的一部分中的模块、部件、电路等等)、或者其中集成电路或系统与其他集成电路或系统(例如视频卡、母板等)组合的任意中间产品、或者任何终端产品(例如移动电话、个人数字助理(pda)、台式计算机、膝上型计算机、手掌大小的计算机、平板计算机、工作站、游戏控制台、媒体播放器、基于计算机的模拟器、用于膝上型计算机的无线通信附件等等)中。

词语“示例性”在此用于意味着用作示例、实例或说明。在此描述为“示例性”的任何实施例不必理解为在其他实施例之上优选或有利的。同样,术语设备的“实施例”并未要求本发明的所有实施例包括所述部件、结构、特征、功能、进程、优点、益处或工作模式。

术语“连接”、“耦合”或其任意变形意味着在两个或更多元件之间直接或间接的任何连接或耦合,并且可以包括在“连接”或“耦合”在一起的两个元件之间存在一个或多个中间元件。元件之间的耦合或连接可以是物理的、逻辑的、或者其组合。如在此所使用,两个元件可以视作通过使用一个或多个引线、电缆和/或印刷电气连接、以及通过使用电磁能量诸如具有在射频区域、微波区域和光学(可见和不可见)区域中波长的电磁能量而“连接”或“耦合”在一起,作为数个非限定性且非穷举性的示例。

对于在此使用诸如“第一”、“第二”等等名称的元件的任何引用并未限制元件的数量或顺序。相反,在此使用名称作为在一个或多个元件或者元件的实例之间区分的方便方法。因此,对于第一和第二元件的引用并未意味着仅可以采用两个元件,或者第一元件必须在第二元件之前。如在此所使用的,对于复数个的引用包括单数个,且对于单数个的引用包括复数个。

现在将展示cam的各个方面。cam可以包括一个或多个静态随机存取存储器(sram)。sram是需要电力以保持数据的易失性存储器。额外地,如本领域技术人员将易于知晓,cam可以包括其他类型的存储器和/或电路配置。其他类型存储器的示例包括随机存取存储器(ram)、动态ram(dram)、同步动态ram(sdram)、双数据率ram(ddram)、只读存储器(rom)、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、处理器上的通用寄存器、闪存、或任何其他合适类型存储器。因此,对于sram的所有引用仅用于采用该方面可以扩展至广泛应用范围的理解而说明存储器的示例性方面。

图1a是说明了示例性cam100的概念框图。cam100可以是将输入搜索数据(例如标记)与所存储的数据的表格比较的存储器。cam100可以返回匹配数据的地址。cam100包括存储器102。存储器102可以是在此所述各种存储器类型中的一个或多个,例如sram。存储器102包括多个存储器存储空间104。存储器存储空间中的每个可以存储数据的集合,例如字或多个字。在图1a的所示示例中,存在所存储的m个数据的集合。数据的集合可以例如是字。因此,在一个示例中存储器102可以存储m个数据字。

cam100也可以包括搜索数据寄存器106和编码器108。搜索数据寄存器106基于搜索输入数据114而输出一个或更多且通常是多个搜索行110。基于在作为搜索行110上输出的搜索输入数据与存储在存储器102中数据之间比较而产生一系列匹配线112。

图1a的示例说明了其中每个存储器存储空间104存储2位的简化cam。每个存储器存储空间存储更多位的cam也是可能的。因为图1a的示例性cam100的存储器存储空间104存储2位,所以cam可以一次搜索2位,也即n=2。因此,在示例性cam100中搜索输入数据114是2位宽的。进一步,cam100可以同时搜索图1a的示例性cam100的所有m个存储器存储空间104。例如,搜索输入数据114可以存储在搜索数据寄存器106中。可以使用异或(nor)门118比较来自搜索数据寄存器106的输出(例如2位)与来自存储器存储空间104的数据输出116。在所示的示例中,两个异或(nor)门118可以用于每个存储器存储空间104,所存储的n位每个各一个。因此,对于每个存储器存储空间104可以存在n个匹配线。

因此,可以在存储器102中存储数据,并且可以使用一系列异或(nor)门118比较搜索行110。可以对于每个存储器存储空间104中每个位进行一次比较。在图1a的示例中,存储器102在每个存储器存储空间104中存储一系列的2位字,也即n=2。示例性的存储器存储空间104存储两位。可以将两位字与搜索输入数据的2位比较(n=2)。

在图1a的示例中,n=2,然而,n可以是任意整数。额外地,n可以大于2,例如8、16、32、64、128、256位,列举几个示例。比较的结果可以输入至与(and)门120。与门可以用于组合由同或门(xnor)118所执行的比较的结果,从而当且仅当在所存储字中所有位于输入搜索项中所有位匹配时,将所存储的字视作匹配。因此,与门120可以包括在比较树逻辑中的一系列与门,例如同或门118。

与门的输出可以输入至编码器108。编码器108可以基于存储器存储空间104的输出116而产生位置匹配。位置匹配可以是基于使用异或门118所执行并在匹配线112上输出的比较的结果。在示例中,可以提供单个位置匹配,诸如首地址匹配。地址可以是具有log2m位的地址。示例性的log2m位提供足够的位以对m个存储器存储空间中的每一个寻址。在其他示例中,可以从编码器输出多个位置匹配。例如,可以提供多地址log2m位宽。可以使用额外的log2m位输出集合而提供多个地址,或者在使用log2m位输出时刻提供一个地址。输出匹配地址的另一方式是使用独热(onehot)(多热)m位总线。示例性的cam100包括每个2位的m个字。其他示例可以包括更多或更少的位,例如每个4位的m个字。

图1b是说明了图1a的示例性cam100的一部分的概念性框图。在常规的m字cam中,所需的比较树的数目与匹配线的数目将等于m。与门120可以被配置用于确保当且仅当在所存储字中所有位与输入搜索项中所有位匹配时,将所存储字视作匹配。位的数目决定了在每个比较树中需要多少个同或门118和与门120。

可以使用同或门118之一来比较每个位。可以使用与门120组合比较的结果例如同或门118的输出以产生匹配线112。一系列与门120被配置为使得当且仅当所存储字中所有位匹配输入搜索项中所有位时将所存储字视作匹配。与门120可以是一个门宽以组合2位所需的两个比较。

图1c是说明了类似于图1b的示例性cam的一部分的概念性框图。图1c的示例可以用于包括每个4位的m个字的cam。(示例性cam100包括每个2位的m个字。)图1c说明了能够每个存储四位的存储器存储空间104’。可以使用一个同或门118’比较每个位。可以使用与门120’组合比较的结果,例如同或门118’的输出,以产生匹配线112’。一系列与门120’被配置为使得当且仅当所存储字中所有位匹配输入搜索项中所有位时将所存储字视作匹配。与门120’可以是两个门宽以组合4位所需的四个比较。

图2是说明了示例性cam200的概念性框图。图2中所示的示例性cam200包括cam200中多个存储器单元202。存储器单元202可以均是存储数据的电路装置。在一个示例中,每个存储器单元202可以存储一位数据。因此,可以向存储器单元202写入数据并从其读出数据。

cam200进一步包括一系列读出放大器204。读出放大器204可以用于放大来自一组存储器单元202的输出。例如,可以比较cam200中一组存储器单元202以产生信号,其指示了是否已经出现或尚未出现匹配,例如匹配为高而当尚未出现匹配时为低。行中的每个存储器单元202可以附接至匹配线,例如ml0、ml1、ml2、…mlm-1。匹配线可以预充电为高。如果存储在存储器单元中的位并未匹配,则每个单元可以能够将匹配线拉低。因此,在示例中,高逻辑值可以指示已经出现了匹配,且低逻辑值可以指示尚未出现匹配。然而,可以理解,在其他示例中,高逻辑值可以指示尚未出现匹配,且低逻辑值可以指示已经出现了匹配。

图2也说明了差分搜索行,例如sl0至sl3和/sl0至/sl3。附接至存储器单元202的比较电路装置可以采用异或操作执行在搜索行(sl和/sl)上数据与存储器单元202中数据之间的比较。在一个示例中,当数据并未在存储器单元202中匹配时,数据失配可以将匹配线例如ml0至mlm-1拉低至地电势,例如逻辑低(或指示了失配的其他状态)。当出现匹配时,匹配线上的存储器单元无法将匹配线拉至地电势,且匹配线可以是逻辑高(或指示匹配的其他状态)。每个匹配线(ml0至mlm-1)可以连接至多个存储器单元202。例如,所有存储器单元202在一行中。例如,当使用差分搜索线(sl,/sl)搜索时,任何存储器单元202可以控制连接至存储器单元202的匹配线的状态。

图3是根据在此所述系统和方法的十六位输入、4周期搜索cam300的概念图。示例性的4周期搜索cam300可以一次搜索四个存储器存储空间104,而不是如参照图1a所述同时搜索每个存储器存储空间。一次在一段时间期间而不是平行的搜索存储器存储空间104可以减少执行搜素所需的电路装置。图3的示例可以搜索总共16个存储器存储空间104,一次搜索四个存储器存储空间104。控制状态机302可以控制搜索,其在计数器306的四次计数期间一次发生四次搜索。

诸如cam300之类的示例性cam涉及存储器阵列设计,且更具体地涉及在多个时钟周期期间执行搜索操作的cam。例如,cam300可以以时分多路复用方式执行搜索操作。换言之,cam300可以在多个时钟周期期间散布cam的搜索操作,这可以有助于减小物理面积和功率密度。具体地,以时分多路复用方式执行cam300的搜索操作可以减小所需的总电路装置,并且因此,减小cam300的物理面积。换言之,可以减小由cam300的电路装置所占据的管芯上的面积的量。可以减小管芯上由cam300的电路装置所占据的面积的量,因为,通过以时分多路复用方式执行搜索操作,可以减小所需的比较电路的数目。当以时分多路复用方式比较时可以减小所需比较电路的数目,因为可以重复使用至少一些电路。可以将存储器102编组为行和列,例如,如图2中所示。列可以是时分多路复用的,从而将列中所有单元输出至编码器。然而,不同于图2,可以使用电路装置以处理时分多路复用结果,如参照图4所述。进一步,使用较少电路可以减小所使用的功率,这可以减小cam300的功率密度。因此,cam300可以有效地将低搜索等待时间交换减小的物理面积和减小的功率密度。

可以在多个时钟周期期间执行cam300的搜索操作。当在多个时钟周期期间在cam300中执行搜索操作时,将存储器输入的子集与每个时钟周期中输入搜索数据比较。因此,可以在多个输入项之中共用cam比较电路装置。如上所述,在多个输入项之中共用cam比较电路装置可以减小物理面积并减小功率密度。在一些示例中,可以使用状态机302以控制cam搜索周期。

在示例中,当发起搜索时,状态机302开始对搜索周期计数。在一个示例中,在每个搜索周期期间,存储器102的一部分和搜索输入数据114进行比较。例如,在搜索周期1期间,经由多路复用器将输入项0、4、8和12的内容发送至共用的比较电路。随后可以将4位部分命中的向量m[3:0]发送至状态机302,其中可以收集部分命中向量。在一个示例中,状态机302可以随后递增搜索周期,例如计数器306的计数。计数器306的递增可以使得比较cam300的后续部分。在一个示例中,在当已经将存储器阵列中每个输入项与输入搜索数据比较时之后的四个(4)时钟周期之后搜索可以结束,产生了命中向量match[15:0]。

在一个示例中,计数器306可以是2位计数器。2位计数器可以以“00”的二进制计数开始。在00的二进制计数处,可以搜索编号为0、4、8和12的存储器存储空间104(或四个存储器存储空间104的其他群组)。在计数00处搜索的结果可以存储在控制状态机302内。在01的二进制计数处,可以搜索编号为1、5、9和13的存储器存储空间104(或四个存储器存储空间104的其他群组)。在计数01处搜索的结果可以存储在控制状态机302内。在10的二进制计数处,可以搜索编号为2、6、10和14的存储器存储空间104(或四个存储器存储空间104的其他群组)。可以在控制状态机302内存储在计数10处搜索的结果。在11的二进制计数处,可以搜索编号为3、7、11和15的存储器存储空间104(或四个存储器存储空间104的其他群组)。计数11处搜索的结果可以存储在控制状态机302内。以时分多路复用方式执行四个搜索的结果,并且可以在一系列匹配线,例如match[0..15],上输出。

如图3中所示,cam300可以包括多个存储器存储空间104。每个存储器存储空间104可以被配置用于存储数据,例如在一个简化示例中的2位数据。可以理解,可以存储更多数据。示例性cam300也可以包括比较器304,其被配置用于将在存储器存储空间104中所存储的数据与搜索输入数据114比较。可以以时分多路复用方式将存储在存储器存储空间104中的数据与搜索输入数据114比较。例如,cam300可以在多个时钟周期期间散布cam的搜索操作。

状态机302可以被配置用于基于状态机的状态而控制比较器304何时将存储在存储器存储空间104中的数据与搜索输入数据114比较。

如上所述,状态机302可以包括计数器306。状态机302的状态可以对应于计数器306的计数。比较器304基于计数器306的计数而将在每个存储器存储空间104中的所存储的数据与搜索输入数据114比较。在一个示例中,计数器可以控制哪些存储器存储空间被存取并比较。例如,在二进制计数00处,可以比较存储器存储空间0、4、8和12。在另一示例中,计数器可以控制多路复用器电路装置,其控制来自存储器存储空间104的哪些位被输出至比较电路,诸如异或门。异或门可以用于比较多路复用器电路装置的输出与所搜索的数据,如参照图4更详细所述。

比较器304可以进一步被配置用于在图3的多个存储器存取周期0-3的对应存储周期中将在存储器存储空间104中存储的数据与搜索输入数据114进行比较。在一个示例中,在cam300中,图3的多个例如存储器存取周期0-3中的每一个存取在cam300的存储器存储空间104的集合中字的子集。例如,如上所述,计数器306可以是2位计数器,其可以开始于00的二进制计数,并计数经过四个状态,例如00、01、10、11。在每个二进制计数处,可以搜索存储器存储空间104的不同集合。因此,以时分多路复用方式执行四个搜索的结果,并且可以在一系列匹配线,例如match[0..15],上输出。

在一个示例中,比较器304被进一步配置为以时分多路复用方式将在多个存储器存储空间104的每一个中所存储的数据与搜索输入数据114比较。例如,如上所述,可以在经过四个状态例如00、01、10、11的计数期间执行比较。在每个二进制计数处,可以搜索存储器存储空间104的不同集合。其他大小的计数可以用于存储器存储空间104的数目与每个计数所搜索的存储器存储空间104的数目的不同组合。例如,可以在八个计数期间一次搜索十六个存储器存储空间中的两个。可以在两个计数期间一次搜索十六个存储器存储空间中的八个。可以在十六个计数期间一次搜索六十四个存储器存储空间之中的四个,列举几个示例。其他组合也是可能的。

在一个示例中,状态机302控制编码器以使得编码器对于在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114的比较的结果进行编码。例如,可以选择列并且将列的每行中每个存储器空间与搜索输入数据比较。在另一示例中,可以使用在例如两位存储器存储空间104的两个输出之间的多路复用。(更宽的多路复用器可以用于更大的存储器存储空间。)状态机的状态可以是一系列计值,其控制哪些位被比较。例如,在四个计数期间比较16位的示例中,可以使用两位计数器以计数经过比较的四个周期。

在另一示例中,状态机302被配置为以控制寄存器以使得寄存器(例如在图4中)以时分多路复用方式来存储结果中的至少一个,该结果是将多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜素输入数据114进行比较的结果。例如,寄存器可以存储异或门的输出。当使用异或门来比较存储器102中的位与cam300中待搜索的值时,异或门的输出可以是去往寄存器的输入。例如,状态机302可以控制何时将待比较的值(例如来自存储器存储空间104的值)以及待比较的值在输入端处向异或门提供。状态机302也可以控制何时向寄存器输入在异或门的输出端处的值。因此,比较(或多次比较)的结果(或多个结果)可以被存储在寄存器(或多个寄存器)中。

在一个示例中,状态机302可以包括计数器306。状态机的状态可以对应于计数器306的计数。额外地,比较器304可以基于计数器306的计数而比较在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114。例如,状态机可以循环经过每个状态,例如每个计数00、01、10、11,并且可以选择存储空间中的一个或多个并与搜索输入数据比较。因此,计数器可以使得比较以时分多路复用的方式发生。

在一个示例中,比较器304可以被进一步配置为在多个存储器存取周期0-3中的对应一个存储器存取周期中,比较在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114。

在一个示例中,多个存储器存取周期0-3中的每一个存取在cam300的存储器存储空间104的集合中字的子集。因此,虽然一些示例可以在计数器的每个计数处比较字的集合,例如在存储器存储空间0、4、8和12中、在存储器存储空间1、5、9和13中、在存储器存储空间2、6、10和14中、或者在存储器存储空间3、7、11和15中的字;其他示例可以比较在计数器的每个计数处字的子集。在计数器的每个计数处,比较字的子集的示例可以使用多路复用以在每个存储器存储空间中字中的位之间进行选择。可以由计数器306的计数控制时分多路复用。

如上所述,cam300以时分多路复用方式执行比较。以时分多路复用方式在cam300中执行比较可以减小管芯面积、减小功耗、减小功率密度、或者如上所述这些的任意组合。可以通过使用共用比较器电路而实现管芯面积的减小、功耗的减小、功率密度的减小、或者这些的任意组合。共用电路可以导致在示例性cam300中使用较少电路。使用较少电路可以减小管芯面积、减小功耗、减小功率密度、或者这些的一些组合。

图4是说明了根据在此所述系统和方法的具有共用比较电路装置的示例性cam400的概念性框图。cam400包括存储器102。存储器102包括一系列存储器存储空间104。存储器存储空间104可以存储多个数据集合。例如,每个存储器存储空间104可以存储字,例如2、4、8、16、32、64或其他数目的位字。在图4的所示示例中,存在m个所存储的数据集合。数据的集合可以例如是字。因此,在一个示例中存储器102可以存储m个数据字,在每个存储器存储空间104中具有例如一个字。在每个存储器存储空间104中所存储的数据不限于字。可以使用任意整数个位。作为简化示例使用两位字以说明概念。这些概念可以扩展至其他数目的位。

cam400也包括搜索数据寄存器106和编码器408。搜索数据寄存器106基于搜索输入数据114而输出一系列搜索行110。由与门420产生一系列匹配线412。与门可以被配置为确保当且仅当在所存储字中所有位匹配在输入搜索项中所有位时,将所存储字视作是匹配。匹配线可以是基于如由搜索数据寄存器在搜索行110上输出的搜索输入数据与存储在存储器102中数据之间的比较。将匹配线驱动为基于比较的逻辑电平。

可以使用一系列异或门418来比较存储在存储器102和搜索行110中的数据。可以对于存储在每个存储器存储空间104中的每个位与搜索输入数据114的可以被存储在搜索数据寄存器106中的位进行一次比较。在一个方面中,比较电路装置可以共用。因此,可以以时分多路复用方式执行比较。例如,cam400可以在多个时钟周期之上执行搜索操作。cam400可以在多个时钟周期期间散布cam的搜索操作。cam400可以在多个时钟周期期间散布cam的搜索操作以实现物理面积和功率密度的减小。以时分多路复用方式执行cam400的搜索操作可以降低cam400的物理面积并降低cam400的功率密度。因此,cam400可以有效地将低搜索等待时间换取cam400的减小的物理面积和较小的功率密度。例如,在图4中所示的电路中,与并未以时分多路复用方式执行搜索的电路相比,用于比较cam400的异或门418的数目可以减小一半。两个输入多路复用器424中的每一个可以一次向一个异或门418发送两位字中的一位。异或门418可以均将来自存储器102的位与来自搜索数据寄存器106的位比较。在两组比较之后,可以比较cam400的存储器102中的每个位。可以使用存储器存储空间104大小、多路复用器424大小、异或门418大小的其他组合以时分多路复用方式执行其他cam的搜索操作。

通过共用比较电路装置,可以使用较少的异或门418,因为可以通过使用多路复用器424而共用电路装置。可以以时分多路复用方式执行比较。如上所述,每个多路复用器424可以在存储在存储器存储位置104中的两个位之间选择。例如,如图4中所示,每个异或门418可以比较来自存储器102的两个输出,例如每个输出来自两个存储器存储空间104的一个。例如,比较可以在多个时钟周期期间执行,例如用以执行cam400的搜索。因此,cam400可以在多个时钟周期期间散布cam的搜索操作。以时分多路复用方式执行cam400的搜索操作可以降低cam400的物理面积,因为需要较少的门,例如异或门418。

比较的结果可以被输入至编码器408。编码器408可以基于匹配线412产生位置匹配416。位置匹配可以是其中存储了所搜索数据的存储器地址,例如存储器内“位置”。在一个示例中,当在cam400中找到数据时可以输出单个地址。例如,包括了使用搜索输入数据114所搜索该数据的第一位置。在其他一些示例中,可以串行地、并行地、或这些的一些组合而输出地址,取决于匹配的数目和在编码器408处可应用的输出。例如,编码器408可以针对cam400内的存储器位置产生地址,其包含了与存储在搜索数据寄存器106中且由cam400所搜索的搜索输入数据114匹配的数据。在一些示例中,图4的编码器408可以小于图1a的编码器108,因为共用比较电路装置(异或门418)可以允许编码器408具有较少的输入。具有较少输入的编码器408可以使用较少的门。因此,编码器408可以较小,例如可以在实施了cam400的管芯上占据较小面积。如在一些示例中所述,可以输出单个地址(当出现匹配时)。在其他示例中,可以串行地、并行地、或使用串行和并行输出的一些组合而输出零个、一个或更多地址。

图4的示例可以使用较少的比较门,例如异或门418。因此,以时分多路复用方式执行cam400的搜索操作也可以减小cam400的物理面积,因为可以需要较少的门。

在图4的示例中,存储器102在每个存储器存储空间中存储一串2位字,也即n=2。如上所述,参照图1a,n可以是任意整数。额外地,n可以大于2,例如8、16、32、64、128、256位,列举几个示例。提供二的幂作为示例,例如8、16、32、64、128、256位,因为常规地,许多存储器尺寸为2n位或2n字的幂。可以使用二的幂,因为2n字的存储器可以使用n位对每个字寻址。可以在每个存储器存储空间中存储其他数目的位。

如在此所述,cam400可以包括多个存储器存储空间104,每个存储器存储空间被配置用于存储数据。示例性cam400也可以包括异或门418,其被配置用于以时分多路复用方式比较在存储器102的多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114。

cam400也可以包括被配置用于对匹配线412上的结果编码的编码器408。结果可以是在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114的比较的结果。

额外地,cam400也可以包括寄存器422,其被配置用于存储以时分多路复用方式对在多个存储器存储空间104的每一个中所存储的数据与搜索输入数据114比较的结果的至少一个。寄存器422可以是被配置用于存储以时分多路复用方式(例如使用异或门418)将在存储器102的多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114比较的结果的多个寄存器,其可以组合,例如“相与(anded)”,从而可以针对时分多路复用比较来实现针对每个比较集合(对于存储器存储空间104的每个单独比较,1至m)或对于所有比较(例如所有比较1至m的组合)的单个结果。

比较器,例如异或门418,可以进一步被配置用于在多个存储器存取周期(例如图3的存储器存取周期0-3)的对应存储器存取周期中,将在多个存储器存储空间104中的每个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据114进行比较。在一个示例中,多个存储存取周期(例如图3的存储器存取周期0-3)中的每个存储存取周期存取在cam400的存储器存储空间104的集合中的字的子集。cam400可以包括多个存储器存储空间104。多个存储器存储空间104可以均配置用于存储数据。cam400也可以包括比较器,例如异或门418,其被配置用于在多个存储器存取周期(例如图3的存储器存取周期0-3)的对应一个中比较在多个存储器存储空间104中所存储的数据(例如存储在存储器存储空间104中的数据)和搜索输入数据114。

cam400也可以包括编码器408。编码器408可以被配置用于对例如在匹配线412上的结果编码。结果可以是将在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114比较的结果。

cam400也可以包括寄存器422。寄存器422可以被配置用于存储以时分多路复用方式将在多个存储器存储空间104的每一个中所存储的数据与搜索输入数据114进行比较的结果中的至少一个。

比较器,例如异或门418,可以进一步被配置用于以时分多路复用方式比较在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114。

在一个示例中,多个存储器存取周期(例如图3的存储器存取周期0-3)中的每个存储器存取周期可以存取在cam400的存储器存储空间104的集合中的字的子集。

另一示例性cam400可以包括多个存储器存储空间104。每个存储器存储空间104可以被配置用于存储数据。cam400也可以包括比较器,例如异或门418。cam400也可以包括状态机(例如图3的状态机302),其被配置用于基于状态机302的状态而控制比较器例如异或门418何时将在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114比较。

在一个示例中,状态机302可以进一步被配置为控制编码器408,以使得编码器408对在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114的比较的结果(例如匹配线412)编码。

在一个示例中,状态机302可以进一步被配置为控制寄存器422,以使得寄存器422在匹配线412上存储结果的至少一个。结果可以是以时分多路复用方式将在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114比较的结果。

在一个示例中,比较器,例如异或门418,可以被进一步配置为以时分多路复用方式来比较在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114。

在一个示例中,比较器,例如异或门418,可以被进一步配置以在多个存储器存取周期(图3中存储器存取周期0-3)的对应一个中比较在多个存储器存储空间104的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据114。

在一个示例中,多个存储器存取周期(图3中存储器存取周期0-3)中的每一个存取在cam400的存储器存储空间104的集合中字的子集。

如上所述,cam400以时分多路复用方式执行比较。以时分多路复用方式执行在cam400中比较可以减小管芯面积、减小功耗、减小功率密度、或这些的任意组合。可以通过使用共用比较器电路实现管芯面积的减小、功耗的减小、功率密度的减小、或者这些的任意组合。共用电路可以导致在示例性cam400中使用较少电路。使用较少电路可以减小管芯面积,减小功能功耗,减小功率密度,或者这些的一些组合。

图5是说明了具有共用比较电路的示例性cam500的另一概念性框图。说明了图5的具有共用比较电路的示例性cam500的概念性框图通常类似于说明了图4的具有共用比较电路的示例性cam400的概念性框图。cam400包括每个2位的m个字,而示例性cam500包括每个4位的m个字。图5中存储器存储空间104’能够每个存储四个位。可以使用多路复用器424’多路复用四个位,从而可以将四个位中的每个位与来自四个位的其他集合的对应位进行比较。可以使用同或门418’中的一个比较每个位。可以使用与门420’以组合比较的结果,例如同或门418’的输出,以产生匹配线412’。一系列与门420’可以被配置为当且仅当所存储字中所有位于输入搜索项中所有位匹配时将所存储字视作匹配。与门420’可以是两个门深以组合4位所需的四次比较。

在时分多路复用的cam中,比较树的数目和匹配线的数目可以等于m/x,其中x是用于搜索遍历cam的循环数目。然而,在输出编码器之后的输出最终既不是每个表示cam中m个字之一的m位总线,也不是如果对输出二进制编码的log2(m)位。

图6是说明了可以在cam中实施的示例性方法的流程图。在方框602中,实施了方法的cam在cam中的多个存储器区段中存储数据。例如,cam(300,400)在cam(300,400)中多个存储器存储区段(存储器存储空间104)中存储数据。数据可以存储在例如sram存储器中。不同于来自存储器的数据可应用于sram的输出,数据可以被输出至cam内的比较电路。

在方框604中,cam以时分多路复用方式将多个存储器区段的每一个中所存储的数据与搜索输入数据进行比较。例如,cam(300,400)以时分多路复用方式比较(304,例如使用异或门418、418’)在多个存储器区段(104)的每一个中所存储的数据与搜索输入数据。

如上参照图3所述,cam以一些不同方式以时分多路复用方式比较在多个存储器区段的每一个中所存储的数据与搜索输入数据。例如,可以使用计数器306以计数遍及一系列状态。在每个状态处,可以比较存储器区段的子集,例如存储器存储空间。例如,对于具有16个存储器存储空间104的cam300,可以使用2位计数器以计数遍及四个计数并一次比较4个存储器存储空间104,以通过比较存储器存储空间1040、4、8和12、或者1、5、9和13、或者2、6、10和14、以及3、7、11和15而比较16个存储器存储空间104的每一个。另一示例可以比较在存储空间104内字的子集。例如,可以使用两输入多路复用器以交替地比较在存储空间104中两位字中的每一位。

在方框606中,cam可以对将在多个存储器存储区段的每一个中所存储的数据与搜索输入数据比较的结果进行编码。例如,cam(300,400)可以对于在多个存储器区段的每一个中所存储的数据与搜索输入数据(114)的比较的结果(例如在匹配线412、412’上)进行编码。例如,可以将cam300的16个存储器存储空间104的匹配线从16个不同的单位匹配输出映射至一个或多个四位地址。一些示例可以输出单个4位地址。其他示例可以输出包括匹配的4位地址。可以跨一连串4位输出而同时输出4位地址,使用单个4位输出,一次一个,或者随时间变化所使用的多个4位输出的一些组合。

在方框608中,任选地,cam可以存储以时分多路复用方式将在多个存储器存储区段的每一个中所存储的数据与搜索输入数据比较的结果的至少一个。例如,cam可以存储以时分多路复用方式将多个存储器区段(104)的每一个中所存储的数据与搜索输入数据(114)比较的结果(例如在匹配线412、412’上)的至少一个。例如,结果可以存储在一个或多个寄存器422中以便可以向编码器408提供以时分多路复用方式执行的所有比较的结果。

cam(300,400)可以包括用于在cam(300,400)中多个存储器区段(104)中存储数据的装置,诸如存储器102,其包括存储器存储空间104。在一些示例中,存储器存储空间104可以是sram或其他类型数据存储。cam(300,400)也可以包括用于以时分多路复用方式将在多个存储器区段(104)的每一个中所存储的数据与搜索输入数据比较的装置(304,418,418’)。用于以时分多路复用方式将在多个存储器区段(104)的每一个中所存储的数据与搜索输入数据比较的装置(304,418,418’)可以包括异或门418、418’,多路复用器424、424’,计数器306,以及被配置用于以时分多路复用方式比较多个存储器区段(104)与搜索输入数据的其他电路装置。

额外地,在一个示例中,cam可以包括用于对多个存储器区段的每一个中所存储的数据与搜索输入数据比较的结果进行编码的装置。例如,cam(300,400)可以包括用于对多个存储器区段的每一个中所存储的数据与搜索输入数据(114)比较的结果(例如匹配线412、412’)进行编码的装置,例如编码器(408)。在另一示例中,cam(300,400)可以包括用于存储以时分多路复用方式比较在多个存储器区段(104)的每一个中所存储的数据与搜索输入数据(114)比较的结果(412,412’)的至少一个的装置,诸如寄存器(422)。

一个示例性cam(300,400)可以包括多个存储器区段(例如存储器存储空间104),其均被配置用于存储数据。示例性cam(400)也可以包括比较器(例如异或门418、418’,和多路复用器424、424’),其被配置用于以时分多路复用方式(例如使用异或门418、418’以及多路复用器424、424’)比较在多个存储器区段(例如存储器102的存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)。

示例性的cam(300,400)也可以包括编码器(408),其被配置用于对将多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较的结果(例如匹配线412、412’)进行编码。

示例性的cam(400)也可以包括寄存器(422),其被配置用于存储以时分多路复用方式将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据与搜索输入数据(114)比较的结果的至少一个。寄存器(422)可以是被配置用于存储以时分多路复用方式(例如使用异或门418、418’,以及多路复用器424、424’)将多个存储器区段(例如存储器102的存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较的结果的多个寄存器,可以组合例如“与门相连”,以便对于时分多路复用比较可以实现对于每个比较集合(对于存储器存储空间1041至m每个单独比较)或者对于所有比较(例如所有比较1至m的组合)的单个结果。

示例性cam(300,400)也可以包括状态机(302),其被配置用于基于状态机的状态,来控制比较器(304,418,418’)将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)何时进行比较。

在一个示例中,cam(300,400)的状态机(302)可以包括计数器(306)。状态机(302)的状态可以对应于计数器(306)的计数。比较器(304,418,418’)基于计数器(306)的计数而将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据与搜索输入数据(114)进行比较。

在一个示例中,cam(300,400)的比较器(304,418,418’)被进一步配置为以在多个存储器存取周期(例如图3的存储器存取周期0-3)的对应一个中将多个存储器区段(存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较。

在一个示例中,cam(300,400)的多个存储器存取周期(例如图3的存储器存取周期0-3)的每一个存取在cam(300,400)的存储器位置(存储器存储空间104)的集合中字的子集。

示例性cam(300,400)可以包括多个存储器区段(例如存储器存储空间104)。多个存储器区段(例如存储器存储空间104)可以均被配置用于存储数据。示例性cam(300,400)也可以包括比较器(304,418,418’),其被配置用于在多个存储器存取周期(例如图3的存储器存取周期0-3)的对应一个中将多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较。

另一示例性cam(300,400)也可以包括编码器(408),其被配置用于对于将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较的结果(例如匹配线412,412’)进行编码。

示例性cam(300,400)也可以包括寄存器(422),其被配置用于存储以时分多路复用方式将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据与搜索输入数据(114)比较的结果的至少一个。

示例性cam(300,400)也可以包括状态机(302),其被配置用于基于状态机的状态,来控制比较器(304,418,418’)将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中数据)与搜索输入数据(114)何时比较。

在一个示例中,cam(300,400)的状态机(302)可以包括计数器(306)。状态机(302)的状态可以对应于计数器(306)的计数。比较器(304,418,418’)基于计数器(306)的计数比较在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据与搜索输入数据(114)。

在一个示例中,进一步配置cam(300,400)的比较器(304,418,418’)用于以时分多路复用方式比较在多个存储器区段(存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)。

在一个示例中,cam(300,400)的多个存储器存取周期(例如图3的存储器存取周期0-3)的每一个存取在cam(300,400)的存储器位置(存储器存储空间104)的集合中字的子集。

另一示例性cam可以包括多个存储器区段(例如存储器存储空间104)。每个存储器区段(例如存储器存储空间104)可以被配置用于存储数据。cam(300,400)也可以包括比较器(304,418)。cam(300,400)也可以包括状态机(302),其被配置用于基于状态机(302)的状态控制比较器(304,418,418’)将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)何时比较。

在一个示例中,状态机(302)控制编码器(408)以使得编码器(408)对于将多个存储器区段(存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较的结果(例如匹配线412,412’)进行编码。

在一个示例中,状态机(302)控制寄存器(422),以使得寄存器(422)存储以时分多路复用方式将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中数据)和搜索输入数据(114)比较的结果(例如匹配线412,412’)的至少一个。

在一个示例中,状态机(302)可以包括计数器(306)。状态机的状态可以对应于计数器(306)的计数。额外地,比较器(304,418,418’)可以基于计数器(306)的计数将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较。

在一个示例中,比较器(304,418,418’)可以被进一步配置以时分多路复用方式将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较。

在一个示例中,比较器(304,418,418’)可以被进一步配置为以在多个存储器存取周期(图3中存储器存取周期0-3)的对应一个中将在多个存储器区段(例如存储器存储空间104)的每一个中所存储的数据(例如存储在存储器存储空间104中的数据)与搜索输入数据(114)比较。

在一个示例中,多个存储器存取周期(图3中存储器存取周期0-3)的每一个存取在cam(300,400)的存储器位置(例如存储器存储空间104)的集合中字的子集。

在一个示例中,比较器可以被配置为以在多个存储器区段之中共用比较电路装置。

可以理解,在所公开的进程/流程图中方框的特殊顺序或层次是示例性方案的示意说明。基于设计优选,可以理解,可以重新设置在进程/流程图中方框的特殊顺序或层级。进一步,可以组合或省略一些方框。所附方法权利要求以样本顺序展现了各个方框的要素,并且并非意在限定于所展示的特殊顺序或层级。

提供之前的说明以使得本领域任何技术人员能实践在此所述的各个方面。对于这些方面的各种修改对于本领域技术人员将是显而易见的,并且在此所限定的普遍原理可以适用于其他方面。因此,权利要求并未意在限定于在此所示的方面,但是应该符合与所声称权利要求一致的全部范围,其中以单数形式引用元件并非意在意味着“一个且仅一个”,除非明确地如此陈述,而是相反地意味着“一个或多个”。除非另外明确地陈述,术语“一些”涉及一个或多个。组合诸如“a、b或c的至少一个”、“a、b或c的一个或多个”、“a、b和c的至少一个”、“a、b和c的一个或多个”、以及“a、b、c或其任意组合”包括a、b和/或c的任意组合,并且可以包括多个a、多个b或者多个c。具体地,组合诸如“a、b或c的至少一个”、“a、b或c的一个或多个”、“a、b和c的至少一个”、“a、b和c的一个或多个”、以及“a、b、c或其任意组合”可以是单独a、单独b、单独c、a和b、a和c、b和c、或者a和b和c,其中任何这种组合可以包括a、b或c的一个或多个组元。在此通过引用而明确地在此包括遍及本公开所述的、对于本领域技术人员已知或稍后将要已知的各个方面的要素的所有结构和功能等价形式,并且意在由权利要求所包括。此外,在此所公开的并非意在献给公众,不论是否在权利要求中明确地陈述该公开。词语“模块”、“机制”、“元件”、“设备”等等可以不替代词语“装置”。不应依据35u.s.c.§112(f)的条款理解权利要求要素,除非使用短语“用于……的装置”明确地陈述,或者在方法权利要求的情形中,使用短语“用于……的步骤”陈述该要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1