可动态配置的内容可寻址存储器系统的制作方法

文档序号:6762646阅读:205来源:国知局
专利名称:可动态配置的内容可寻址存储器系统的制作方法
技术领域
本发明涉及可动态配置的内容可寻址存储器系统的设计技术。
背景技术
现代社会和技术越来越多地依靠信息或者数据。多种多样的数据类型通常被存储或者保存,被访问或者检索,以及被修改或者更新。可以采用多种方法来实现上述操作,从经过长期考验的纸和墨水到先进的电子技术。
例如,使用一个包括加利福尼亚圣克拉拉(Santa Clara,California)的2003电话本来寻找“芯成半导体有限公司”,就能够找到电话号码“(408)588-0800。”使用描述电子存储器的术语来表述,电话本就是一个内容可寻址存储器(CAM,content addressable memory)。寻找电话号码就是将存入CAM的条目与查表操作的关键码进行匹配的查表操作,这里的关键码就是“芯成半导体有限公司”。为了找到内容与关键码匹配的条目,将查阅CAM内所有的条目。对于该查表操作,发现正确的一个匹配条目,就会输出一个与该条目对应的,例如(408)588-0800电话号码。
图1a是对应背景技术的第一例内容可寻址存储器(CAM)输入、输出和存储信息条目的功能图。CAM110存储二元信息,也就是说,信息是具有例如“0”或者“1”两种状态的二元格式。
二元CAM110包括四行,每一行具有一个对应的行号112。每行存储一个二元号码的数据条目114,例如,最优先匹配的条目也就是行号为1的第一行存储一个值为“1010”的数据条目。关键码120是一个二元值,输入到二元CAM110中。对应接收关键码120的值,二元CAM110向输出端130提供了一个相应值。
图1b显示了出现在二元CAM110内的查表操作中的四个例子。在每个查表操作140过程中,二元CAM110接收一个输入关键码值120,然后对应产生一个输出值130。在第一个例子的查表操作中,接收到的关键码值为“1100”,输出为“3”,这是因为行号3是唯一与所述关键码值匹配的行,即该行存储的条目与所述关键码值一致。在第二个例子的查表操作中,接收到的关键码值为“1010”输出为“1”。
行号为1和行号为2的两行都与码值匹配,但是由于设定行号1的优先级高于行号2,所以仍输出为“1”。电话本中的条目按照字母表顺序编排,但是CAM中的条目通常按照优先级排列,所述优先级用来确定当一个以上的条目与特定码值匹配时,输出哪一个匹配的码值。
在第三个和第四个例子的查表操作中,二元CAM110的输出是“无效的”,这是因为没有行与“1011 ”或者“0001”匹配。
在一些CAM系统中,从二元CAM110输出的行号作为一个标准存储器的输入地址,即该标准存储器存储与CAM中条目相关的其他数据。标准存储器能够用于存储例如CAM中条目的电话号码,并根据二元CAM110输出的“3”,“1”或者“4”输出第三,第一或者第四条目的电话号码。
图2a是对应背景技术的第二例内容可寻址存储器(CAM)输入、输出和存储信息的功能图。CAM210存储三元信息,也就是说,信息是具有例如“0”,“1”或者“要么0要么1”三种状态的三元格式。
三元CAM210存储四个条目,每个条目包括数据项216和掩码项218。存储在三元CAM210中的数据项216具有与二元CAM110中数据项116相同的值。掩码项218中有一位值为“1”表示该行存储的数据相应位既可以匹配“0”也可以匹配“1”。例如,第四行的条目可以与关键值“1000”或者“1001”匹配。
图2b显示了出现在三元CAM210内的查表操作中的四个例子。在每个查表操作140过程中,三元CAM210接收一个输入关键值120,然后对应产生一个输出值130。图2b中显示的关键码值的例子与图1b中相同。
在第一个,第二个和第四个例子的查表操作中,三元CAM210的输出以及这些输出的原理与图1a和1b所示的例子相同。
然而,在第三个例子的查表操作中,由于第二行的掩码项218是“0001”,那么第二行中数据项就与码值“1010”或者“1011”匹配,从而三元CAM210输出为“2”。与二元CAM110相比,由于二元CAM110不具有对应关键码值“1011”的条目,就只好输出“无效”。
这种对CAM的查表操作通常发生在计算机网络对数据包进行路由操作的时候。实际上,穿过例如因特网这样的复杂网络的数据包可能引发几百次的上述查表操作。计算机网络通常包括转换器,网络集线器,防火墙,网关或者路由器,本文中统称“路由器”。
下面考虑这样一个例子,即路由器接收一个包含部分网页的数据包,该网页要在一个目标计算机上显示。路由器从数据包中析取目标计算机的网络地址,例如“87.134.242.159”。然后路由器使用该目标地址,或者部分目标地址,例如“87.134”或者仅仅用“159”,作为CAM中查表操作的关键码。
CAM查表操作的速度在网络路由系统中非常关键。对于一台路由器而言,它可能同时会接收并发送几百个网页的访问信息以及许多其它的信息,而仅仅一个单一的网页访问就可能包含几万个数据包。一个人花费一分钟来查表一个电话号码是合理的,但是一个网络路由器每秒却必须处理数百万次的CAM查表操作。
同样对于网络路由系统,查表操作的灵活性也是很关键的。因而,灵活的CAM配置是很重要的。
作为一个需要灵活性的例子,一些路由器对于CAM的查表关键码不仅仅是目标网络地址,还可能会使用包含在一个关键码中的数据,包括数据包的类型,数据包的大小,或者数据包源的网络地址等。
作为另一个例子,存储在CAM中的网络数据可以包括各种类型的信息。这些信息包括但不限于i)路由器外部的链接网络,当寻址特定的目标,或者特定的目标组时,数据包将会被发送到该网络上去;ii)与特定目标或者包类型有关的网络服务信息的优先级或者质量管理;iii)安全信息或者存取权限;以及iv)动态维持的负载信息。作为另一个需要灵活性的例子,一些路由器会依照其所操作的开放系统互连(OSI)层不同而变化。
计算机网络并非唯一使用CAM的电子设备。其他CAM的应用包括有数据存储网络或者系统,视频处理,电脑图形图像和数据压缩。
一些传统的CAM系统常通过并行操作提供高速的查表能力,然而,纯硬件系统却缺乏灵活性。而另外一些传统CAM系统则是在软件或固件的控制下通过程序按序执行查表操作。然而,这种程序执行的查表操作却相对低效率。

发明内容
本发明的目的在于,提供一种可动态配置的内容可寻址存储器系统,既能高速化,又能满足条目和操作的灵活性。为了达到上述目的,本发明提供了硬件CAM模块,而且这些模块能够以各种结构被动态链接在一起,并能动态地配置不同CAM模块之间的链接方式,通过这种配置就能动态改变条目的深度和CAM系统支持的关键码的宽度。同时不同的CAM模块还能够被配置成两个以上可以同时完成不同查表操作的CAM存储器的CAM系统,这样就提供了一个成倍提速的潜在系统。
依照本发明的一些实施实例的CAM系统,包括一个或几个具有一系列CAM模块的CAM子系统,所述CAM子系统中的CAM模块可以根据相应的链接控制信号进行配置。每个CAM模块具有一个控制电路和一个CAM阵列。CAM阵列的每一行存储相关CAM子系统中所存一个条目中的一个字段,从关键码接收一个相应的字段,确定条目字段是否与关键码字段相匹配,如果匹配则生成一个字段匹配信号。同时控制电路会接收前一字段的匹配信号给每一行,这样每行具有一个匹配输入信号,以及一个链接控制信号,并与每一行的字段匹配信号产生一个匹配输出信号。对于CAM子系统而言,第N个CAM模块的匹配输出信号就是第N+1个CAM模块的匹配输入信号,第一个CAM模块的匹配输入信号为“1”。
本发明的一些具体实施实例包括优先级编码器和一个互连电路,该互连电路将CAM模块中选定的一个的匹配输出信号链接到每个优先级编码器。
本发明的一些具体实施实例包括配置寄存器,该寄存器存储配置信息并根据此产生各种配置控制信号。另外,配置控制信号也可以根据关键码产生。
本发明的一些具体实施实例包括一种根据条目产生输出值的方法,所述的每一个条目包括条目字段,而每一个条目字段的各部分分别存储在一系列CAM模块中。一个关键码被接收并被分配到一系列关键码字段内,此处的每个关键码字段对应一个CAM模块。每个关键码字段与对应关键码字段的CAM模块内存储的部分条目字段进行比较,并根据比较结果产生一个部分字段匹配信号。每个CAM模块中的条目都会接收其上一级的匹配输出信号并在此基础上产生本级匹配输出信号,只有所有部分字段都匹配的条目才会产生该子系统的最后一级匹配输出信号,并进入优先级编码电路中进行编码。


参见附图阅读时,将会从本文的描述和讨论中了解本发明的目的、特征和优点。各附图中显示出本发明的技术、实施实例和应用实例,附图中图1a显示了其中容纳二元信息的内容可寻址存储器(CAM)的第一实施实例;图1b显示了图1a的二元CAM中的查表操作和该操作的输出结果的几个例子;图2a显示了其中容纳三元信息的内容可寻址存储器(CAM)的第二实施实例,;图2b显示了图2a的三元CAM中的查表操作和该操作的输出结果的几个例子;图3显示了用于本发明的典型的CAM模块的功能部件及各部件间的链接关系;图4a和图4b显示了用于本发明的控制电路的两个例子的逻辑单元及其链接关系;图5显示了本发明的一个例子,其中,图3所示的CAM模块的单个个体被配置作为一个CAM子系统以独立方式运行;图6显示了本发明的另一个例子,其中,图3所示的三个以上的CAM模块被配置作为一个单个CAM子系统一起运行;图7显示了本发明的另一个例子,其中,CAM模块能被动态配置为一个单个CAM子系统运行,所述子系统能被配置成容纳不同宽度的数据;图8显示了本发明的一个例子,其中,CAM模块能被动态配置为一个或多个同时运行的CAM子系统;图9显示了本发明的另一个例子,其中,CAM模块被配置为一个连续进行四阶段查表操作的单个CAM子系统运行,其中每一阶段分别使用关键码的一部分进行查表。
图10显示了本发明一个实施实例中查表操作中的运行步骤。
具体实施例方式
本文中的描述,论述和附图对本发明有关的技术进行了解释,给出了本发明以及使用本发明的一些实施实例。已知的方法,步骤,系统,电路或者元件将用图示而不采用详述的方式进行描述,这样可以避免与本发明的原理混淆。另一方面,还提供了本发明的具体实施实例的细节,虽然这些细节可能不适用本发明的其他实施实例。
这里的一些描述和论述使用了通称或者专业术语,包括但不限于匹配,相等,生成,“真”或“假”。本行业的技术人员使用这些术语方便命名计算机,数字系统或者电子系统中元件,数据或者操作的方便的命名。所述的元件,数据或者操作由实际物体的物理属性来表示,这些物理属性包括但不限于,电压,磁场和光学反射率。例如,“生成”或者“真”可以指一个大约3伏特的电信号,而“不真”或者“假”可以指一个大约0.3伏特的电信号,或者相反。类似地,包括但不限于判定,选择,检测,比较和控制的知觉或者精神方面的术语也可以涉及上述元件,数据或者操作,或者对于所述物理属性的处理或利用。
图3为根据本发明的一个实施实例的CAM模块功能框图。多个这样的CAM模块300可以被配置,链接成一个CAM子系统。每个CAM子系统可以作为一个独立的CAM系统进行操作,它可以保存条目并根据关键码实行查表操作。
一个包括许多CAM300模块的CAM系统能被配置成一个或多个CAM子系统,每个子系统的规模也可以进行灵活配置。这样的一个CAM系统能很好地支持宽度可变的数据和各种类型的数据进行查表操作。
CAM模块300包括M行K列的CAM矩阵360。CAM矩阵包括M行,标号从1至M。每行包括K个CAM单元365。每行能够保存一个条目中的k比特字段。每行都与当前查表操作关键值中的一个k比特字段来进行匹配。当存储的字段与查表字段内容相匹配,则每行生成字段匹配信号330,也就是说,产生值为“真”的信号。
对于CAM矩阵360的每一行,控制电路370接收一个匹配输入信号310然后产生一个匹配输出信号315。控制电路也接收链路控制信号320。所述链路控制信号判定哪些CAM模块被链接在同一子系统中,从而作为一个CAM子系统一起运行。也就是说,CAM系统中的不同CAM(模块)300可以被配置在一起,作为单独CAM系统一起运行。链路控制信号的设定与具体的CAM模块在CAM子系统中的位置有关,例如该CAM模块是否为子系统中的第一CAM模块,是否为子系统中的最后一个CAM模块,或者是中间模块。
优先级编码器380可选择地包括在每个CAM模块300中。换句话说,作为一个CAM系统中的每一个CAM子系统都可以具有一个单独的优先级编码器,该编码器链接CAM子系统中最后一个CAM子系统。
优先级编码器380对应CAM矩阵360的每一行并接收一个编码请求信号340,根据编码请求信号产生模块编码输出信号350。如果仅产生一个编码请求信号,那么该信号的行号就是模块编码输出信号350的值。然而,在一个CAM系统中所存储的许多条目都可能与一个具体的查表操作中的关键值匹配,在这种情况下,优先级编码器380在已经产生编码请求信号的行中选择具有最高优先级的行,例如,可以设定最低行号的行,或者最高行号的行优先级最高。
在本发明的不同实施实例中所使用的优先级编码器可以是任何接收编码请求信号的电路或者装置,在生成编码请求信号的行中选择并将选中的行进行编码。可以使用任何技术来实现该选择。也可以使用任何技术来实现编码。
在本发明的不同实施实例中所使用的控制电路采用了各种技术来编码链路控制或者配置信息。例如,链路控制信号可以表现为多种类型,例如对于CAM子系统中的中间CAM模块而言是输入链接有效信号,这一信号对第一个CAM模块是置为“假”,而对其它中间CAM模块都是置为“真”,也就是允许CAM子系统中的模块都链接起来。在这种情况下输出匹配信号315的产生将会考虑输入匹配信号310的状态。
作为另一个例子,链路控制信号320对于最后一个CAM模块则是输出链接无效信号,这使得它之后的CAM模块不会与它产生链接关系。在这种情况下输出匹配信号315将不考虑该CAM模块中字段匹配信号的状态,而只与链路控制信号320相关。
本发明的其它实施实例中可以使用其它类型链路控制信号,包括但不限于第一模块链接信号,输出链接无效信号,非最后模块链接信号,或者可输入链接有效信号。
CAM矩阵360和CAM单元365可以是任何电路或者装置,能够存储条目字段,并根据存储的条目字段值和关键码字段值的比较结果产生字段匹配信号。存储矩阵和CAM单元已存在许多经典和正在进一步开发的设计方法。
如上面图1a和1b中所描述的二元CAM,使用在本发明的一些实施实例中。也可以使用如上面图2a和2b中所描述的三元CAM。也可以使用其它类型的CAM,包括但不限于三元CAM,其中存储的条目是二元的,而关键码值是三元的;三元CAM,其中存储的条目和关键码值都是三元的;以及二元/三元CAM,其存储一个二元条目,根据二元判断来判定关键码字段和条目字段的匹配,或者存储一个三元条目,根据三元判断来判定关键码字段和条目字段的匹配。
已知的CAM矩阵和CAM单元使用各种技术将信息存储在CAM中,从CAM中读取信息,修改或者重新设置CAM中的信息。任何这样的技术,以及将来开发出的CAM单元和CAM矩阵设计技术,都可以使用到本发明的各种实施实例中。
所述控制电路可以根据编码许可信号325,生成或不生成编码请求信号。如果CAM模块没有链接优先级编码器,就不需要编码请求信号325。如果当CAM模块不是CAM子系统的最后一个模块,则不需要链接优先级编码器,也就不需要编码请求信号325,从而可以减少优先级编码器所消耗的功耗。
图4a或者4b显示了本发明实施实例的控制电路。图4a对应于非第一模块的信号控制,该控制信号可称为输入链接有效信号。图4b对应于最后一个模块的信号控制,其可称为输出链接无效信号。
如图4a所示,对于每个子系统的第一模块,其链路控制信号320设为“假”,所以该模块不会与之前其他CAM模块链接。对于每个子系统的中间的和最后的模块,则该链路控制信号设置为“真”,也就是该模块与之前的CAM模块能链接在一起。这种类型的链路控制信号在下面的图5和图6中被使用。
假如这样的话,当没有设置链路控制信号,则每行所产生的匹配输出信号就是该行的字段匹配信号。当设置了链路控制信号后,仅在该行的匹配输入信号和字段匹配信号都有效时,才生成对应于每行的匹配输出信号。
如图4a所示,输出匹配信号315是由二输入“与”门430A所产生的,其产生条件为字段匹配信号330为“真”。而且匹配输入信号310为“真”或链路控制信号为“假”。二输入“与”门430A的一个输入是二输入“或”门420的输出,该“或”门420的两个输入分别是匹配输入信号310和链接控制信号320的非。
当匹配输出信号315和编码允许信号325都有效时,二输入“与”门430B生成编码请求信号340。因此,当编码允许信号无效时,任一行都不会生成编码请求信号340。当使用例如互补金属氧化物半导体(CMOS)的电路时,使用这种技术易于将优先级编码器置为低功率模式。CMOS电路的功耗大部分消耗在信号变换瞬间,因此,简单地保持优先级编码器的输入为一个常量,就能充分地降低CMOS优先级编码器所消耗的功耗。
如果优先级编码器不在CAM子系统中最后的CAM模块中,那么本发明的其它实施实例可以使用其它技术来降低优先级编码器所消耗的功耗。例如提供给这些优先级编码器的电源电压可以降低或者切断,或者关闭其工作时钟。
在图4b的情况中,对于每个CAM子系统的最后一个模块,链路控制信号320会被置为有效,使得该模块不会与跟随其后的CAM模块相链接。对于每个CAM子系统中的第一和中间的模块,即对于每个与后续模块相链接的模块,该链路控制信号被置为无效。这类链路控制信号能简化某些CAM系统的设计,在这些系统中,链路控制信号320和可编码信号325使用同样的信号。
假如这样的话,当子系统链路控制信号320有效时,就产生有效的匹配输出信号315,而不管CAM子系统中匹配与否。当链路控制信号320无效时,则匹配输出信号315仅在匹配输入信号310和字段匹配信号330都有效时才有效。
当编码允许信号325,字段匹配信号330和匹配信号310都有效时,二输入“与”门430D才产生编码请求信号340。二输入“与”门430C的两个输入分别是字段匹配信号330和匹配输入信号310,其输出是二输入“与”门430D的输入端。当链路控制信号320有效或者“与”门430C的输出有效时,二输入“或”门420B则产生有效的匹配输出信号315。
图4a和4b是控制电路370的逻辑框图,恰到好处地解释和描述了该电路的逻辑功能。在本发明的各种实施实例中,控制电路可能通过“与非”门和“或非”门实施,或者通过锁存字段匹配信号来形成编码请求信号,以提供时钟控制的同步操作,其也能使用其它实现技术。
通过允许查表操作关键码的不同部分在流水线的不同节拍进行同时操作的技术,锁存字段匹配信号能够有效地增加具有流水线结构的CAM存储系统的处理能力。另外或者可选择地,锁存字段匹配信号有利于允许关键码的各部分在不同的时钟周期被读入CAM子系统,这将在下面的图9中进行描述。
图5是根据本发明的一个实施实例的CAM子系统的功能框图。CAM子系统500包括图3中CAM模块300的一个实例300A,其使用图4a中的控制电路370,该控制电路370配置为具有单一CAM模块的CAM子系统。
CAM子系统500的输出是CAM子系统输出520,也就是CAM模块300A的模块输出350。提供给CAM模块300A的编码允许信号325置为有效,促使CAM模块中的优先级编码器380能在模块输出端350产生编码结果。提供给CAM模块300A的链路控制信号320置为无效,或者具有“非”值,因而提供给优先级编码器380的编码请求信号340就是由CAM矩阵360产生的字段匹配信号330,而不管匹配输入信号310的当前值是什么。
图6是根据本发明的一个实施实例的CAM子系统的功能框图。CAM子系统600能够存储和比较单一CAM模块所存储的三倍以上宽度的数据。CAM子系统600包括图3中CAM模块300的三个以上的实例,300A,300B,……300X,均使用图4a中的控制电路370。各个CAM模块300链接成系列并作为一个单一的CAM子系统运行。CAM子系统600的输出是CAM子系统输出520,即CAM模块300X的模块输出350。
系列中最后的CAM模块,例如,CAM模块300X,其编码允许信号置为有效,可子系统中的其它CAM模块编码允许信号则置为无效。这就降低了CAM模块中非最后模块的优先级编码器所消耗的功耗,而不改变CAM子系统600的功能。
系列中的第一个CAM模块,例如CAM模块300A,其链接控制信号置为无效,因此,第一CAM模块的匹配输入信号310上的任何值都将不被理会。而其它模块,例如CAM模块300B到300X,其链路控制信号320都被置为有效。因此,这些模块的匹配输出信号将由该模块中的匹配状况和该模块所接收的匹配输入信号所决定。
该子系统中除了最后的CAM模块的其它模块,也就是排除CAM模块300X的其它模块而来的匹配输出信号315将作为部分匹配信号630传递给子系统中下一个CAM模块,630对于下一模块则是该模块所接收到的匹配输入信号310。例如,CAM模块300A对于每一行产生的匹配输出信号变成该行的部分匹配信号传递给CAM模块300B,然后变成CAM模块300B内该行的匹配输入信号。子系统中邻近的每一对CAM模块300都具有在该对CAM模块之间连接的部分匹配信号630。而每个CAM模块的匹配输出信号315都体现该行所在模块和前一个模块内匹配状态。
可以简单地将两个CAM模块直接链接成一个CAM子系统,并设置其链接控制信号与编码有效信号为有效状态,来达到CAM子系统数据宽度为单一CAM模块300的两倍的目标。
典型地,CAM模块300是具有相同设计的电路的不同实例,但这不是必需的。模块的字段或者数据宽度K,模块的行数M,或者众多的其它设计参数的一个或者多个都可以做一定变化。
图7是根据本发明的一个实施实例的动态配置的CAM系统的功能框图。CAM系统700包括八个CAM模块710、优先级编码器380和配置寄存器720。
在CAM系统700中,提供给CAM模块710A至710H的链路控制信号320A至320H以及编码允许信号325A至325H都从配置寄存器720中产生。用户可以动态地改变存储在相连模块的配置寄存器中的值,也就是说,在CAM系统700运行过程中,往配置寄存器720中写入新的配置数据。
对于某些应用,当CAM条目已存储在的系统中后,动态改变CAM系统700的配置需要清除、修改或者替换存储在重新链接或者重新解散链接关系的CAM模块中的一些或所有条目。然而,这只是由于存储数据的变化所要求,而并非CAM系统700所强加的需求。
在图7和图8中,断开的模块链743用“X”代表,链接的模块链746用圆点代表。在图4a中显示的这类控制电路370用于CAM模块710中。因此,断开的模块链734作为输入端的CAM模快其链接控制信号320被置为无效。连结的模块链746作为输入端的CAM模块其链接控制信号320则被置为有效。
在图7所示的实例配置中,CAM模块710被分别配置到三个CAM子系统中,作为三个独立的CAM子系统运行。其中三个CAM模块710实例的链路控制信号被置为无效。CAM模块710A和710B链接在一起,作为第一CAM子系统一起运行。CAM模块710C至710F链接在一起并作为第二CAM子系统一起运行。CAM模块710G和710H链接在一起并作为第三CAM子系统一起运行。因为三个子系统共享一个优先级编码器380,所以三个子系统在任何时刻仅会出现一个查表操作,不过每个CAM子系统都是作为一个独立的CAM子系统在运行。
CAM存储系统700的配置与存储在配置寄存器720中的数据相关。该数据能够被改变,以在CAM存储系统700中形成更多或者更少的CAM子系统。可以改变配置寄存器中的数据,形成一个链接更少的CAM模块的CAM子系统,在这样的子系统仅限于处理较小宽度的数据。另外或者可选择地改变配置寄存器720内的数据,形成一个链接更多的CAM模块的CAM子系统,在这样的子系统中能够处理更宽的数据。
在图7所示的本发明的实施实例中,每个CAM模块710与CAM模块300的不同之处在于,其不包括优先级编码器。然而,各种实施实例能够包括具有各种特征和属性的CAM模块,包括但不限于,包含优先级编码器的模块,或者包含其它类型控制电路的模块。
为了防止总线730上的冲突,CAM模块710的每个个体使用了一个编码允许信号325。总线730将每个CAM模块710输出的编码请求信号340连在一起。作为优先级编码器380的输入编码请求信号340。
配置寄存器720内的数据决定了编码允许信号325的值。配置寄存器内的数据应该这样设置,即在任一时刻仅有CAM模块710的一个实例驱动总线730。该数据还应该配置成仅是各子系统中的最后一个CAM模块710驱动总线730。因此对于如图7所示的配置,配置寄存器720中的数据应当确保CAM模块710B、710F或者710H中在同一时刻恰好只有一个模块接收到有效的编码许可信号325,而且其它任何CAM模块都不会接收到有效的编码允许信号。
图8是根据本发明的实施实例的并行查表CAM系统中动态配置的功能框图。CAM系统包括六个CAM模块710、三个优先级编码器380以及互连结构840。
在图8所示的实例配置中,CAM模块710配置为两个CAM子系统,从而形成两个独立运行的CAM子系统。然而,通过对配置数据850提供不同的值,能够动态改变该配置。
互连结构840可配置为链接来自任何一个CAM模块710A至710F的编码请求输出信号340和任何一个优先级编码器380A至380C的编码请求输入信号340。构成怎样的链接由配置数据850决定。
图8中用“X”代表断开的链路843,表示对应链路的CAM模块710没有与对应链路的优先级编码器380链接。图8中用圆点代表互连的链路846。互连的链路846表示相应CAM模块710输出的编码请求信号340被链接到对应的优先级编码器380的编码请求信号340。
图8中的实例显示了两个CAM子系统的情况。CAM模块710A和710B相互链接并链接到优先级编码器380C。这些模块和编码器380C作为第一CAM子系统一起运行。CAM模块710C至710F链接在一起并链接到优先级编码器380A。这些模块和编码器380A作为第二CAM子系统一起运行。因此,CAM存储系统800具有两个独立的CAM子系统并行运行。每个CAM子系统包括一个或多个CAM模块和一个优先级编码器。因此,在同一时间,每个CAM子系统能够实现独立的并行查表操作。
配置数据850可以由类似于图7的配置寄存器720的配置寄存器提供。本发明的这些实施实例提供了能够动态配置的CAM子系统,也就是说,只要配置寄存器内的值改变,它们的配置也随之改变。典型地但不是必须地,该值的设定应当在软件或者固件的控制之下进行。
可选择地或者另外,配置数据850可以由当前查表操作的查表输入值而定。一个特定查表操作的查表输入包括在该操作中使用的关键码,也可以包括与关键码一并提供的附加查表信息。该配置数据可以包括从关键码和/或查表信息中提取的字段。该配置数据也可以包括在运算过程中,逻辑处理中所使用关键码的结果和/或查表信息,CAM子系统中的查表操作,或者常规存储器中的存取操作。使用这些配置数据的本发明的实施实例也提供能够动态配置的CAM子系统,但在这些实施实例中,CAM子系统的配置是随着数据的变化而变化的。
在本发明的各种实施实例中,所使用的配置数据可以来自各种源,在配置数据中不同的比特可以来自不同的源。配置数据的源包括但不限于一个或多个配置寄存器,一个或多个由当前查表操作的查表输入而定的数据值,一个或多个与当前查表操作无关的数据值;或者上述任何组合。
在CAM系统800中,CAM模块710和编码允许信号325的结构和作用以及提供给这些模块的链路控制信号320与在图7中所示的CAM系统700和图3中所示的CAM模块300所描述的等效。
图9是根据本发明的实施实例的可动态配置CAM系统的功能框图,该CAM系统具有一个连续四阶段的查表操作。CAM系统900包括六个64比特的CAM模块910A至910F,控制器940,128比特关键码总线920。
CAM模块910的功能与CAM模块300类似,不同点在于,每个CAM模块内使用的控制电路在提供给该模块的锁存控制信号930的控制下锁存匹配输出信号。当锁存控制信号有效时,就锁存匹配输出信号。然后向子系统中的下一个CAM模块提供所述被锁存的匹配输出信号,用以产生驱动CAM模块中优先级编码器的编码请求信号。
每个CAM模块910存储64比特条目字段,接收一个64比特关键码字段。CAM系统900配置为存储条目和接收384比特宽度的关键码;然而,关键码总线920仅128比特宽度。
当CAM系统900包含在一个仅能对电路外产生的关键码数据提供128脚输入的集成电路内时,上述情况就会产生。或者由于时序约束,例如在CAM模块内的行的CAM单元之间产生字段匹配信号所需的时间太长,或者在CAM模块之间传递匹配输入与匹配输出信号所需时间太长,上述情况也会发生。
控制器940驱动每个查表操作进入四个阶段。在阶段一,通过关键码总线920,将关键码的最先128比特提供给CAM系统900。具体地,关键码值的0-63比特通过关键码总线920的区域920A提供给CAM模块910A,关键码值的64-127比特通过关键码总线920的区域920B提供给CAM模块910B。经过足够长的时间,确保有效的匹配输出信号已经到达CAM模块910B内控制电路内的锁存器,然后控制器940生成锁存控制信号930B,这些匹配输出信号则被锁存。
在第二阶段,关键码的随后128比特通过关键码总线920提供给CAM系统900。具体地,关键码值的128-191比特通过关键码总线920的区域920A提供给CAM模块910C,关键码值的192-255比特通过关键码总线920的区域920B提供给CAM模块910D。经过足够长的时间,确保有效的匹配输出信号已经到达CAM模块910D内控制电路内的锁存器,然后控制器940生成锁存控制信号930D,这些匹配输出信号则被锁存。
在第三阶段,关键码的第三部分以及最后的128比特通过关键码总线920提供给CAM系统900。具体地,关键码值的256-319比特通过关键码总线920的区域920A提供给CAM模块910E,关键码值的320-383比特通过关键码总线920的区域920B提供给CAM模块910F。经过足够长的时间,确保有效的匹配输出信号已经到达CAM模块910F内控制电路内的锁存器,然后控制器940生成锁存控制信号930F,这些匹配输出信号则被锁存。
在第四阶段,CAM模块910F内的优先级编码器使用锁存于模块内的匹配输出信号来选择匹配行中的一个(如果有的话),并将所选行编码形成模块输出信号350,也就是CAM系统900输出信号520。
图10是根据本发明的实施实例的查表操作的流程图。在图10中,查表操作140图解为更方便的操作顺序,例如操作1010到1050。
在操作1010中,CAM存储系统接收关键码的值。该码值使用于该CAM查表操作事件中。该查表操作根据该码值和当前存储于CAM系统中的条目产生一个输出值。
在操作1020中,接收的关键码值分割为关键码字段。每个关键码字段对应形成于CAM存储系统中子系统的CAM模块。每个关键码字段也对应存储于相应CAM模块内的条目字段。
在操作1030中,每个CAM模块将对应模块的关键码字段与存储在该模块中的所有条目字段进行比较。根据该比较,对每个条目产生一个字段匹配信号。
在操作1040中,子系统中的最后一个CAM模块对每个条目产生一个条目匹配信号,其它CAM模块对每个条目产生一个部分匹配信号。每个条目匹配信号和部分匹配信号都是由该CAM模块和在其链接关系前的CAM模块所产生的字段匹配信号所决定的。
在操作1050中,如果生成了一个或多个条目匹配信号,那么就会依据优先级的定义选中那个具有最高优先级条目匹配信号的对应行,再将该行号编码作为CAM存储系统的输出。
本发明的范围由权利要求限定。本发明可以在形式上做大量修改,变化,根据本文描述的技术进行优化,也可以使用本领域所熟知的现有技术。本文描述的特征和描述并非用来将本发明限定为所揭示的设计、形式和实施实例中,而只是用以详尽地说明本发明。
权利要求
1.一种可动态配置的内容可寻址存储器系统,用于存储条目和接收包括关键码的查表输入信息,该系统包括按照对应的链路控制信号将一系列的内容可寻址存储器模块链接构成的内容可寻址存储器子系统,每个内容可寻址存储器模块包括I)具有多行的内容可寻址存储器矩阵,每行配置为存储来自一个条目的一部分字段,接收来自所述关键码的一部分对应字段,并判定条目字段是否与关键码字段匹配,如果匹配则生成一个字段匹配信号;II)一个控制电路,配置为接收每行的字段匹配信号,对应每行的匹配输入信号,和对应内容可寻址存储器数据模块的链路控制信号,并对每行产生一个匹配输出信号;其特征是,由内容可寻址存储器模块接收的匹配输入信号就是该子系统中在该内容可寻址存储器模块前的另一内容可寻址存储器模块对应行所产生的匹配输出信号。
2.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,对内容可寻址存储器子系统中除了第一个内容可寻址存储器模块以外的所有内容可寻址存储器模块其链路控制信号都被置为有效;当链路控制信号置为无效时,由每行产生的匹配输出信号就是该行的字段匹配信号;当链路控制信号置为有效时,仅在匹配输入信号和字段匹配信号都有效的行内产生匹配输出信号。
3.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,仅对子系统中最后一个内容可寻址存储器模块设置另一类型链路控制信号;当该类型链路控制信号无效时,仅在匹配输入信号和字段匹配信号都有效的行内产生匹配输出信号;当该类型链路控制信号有效时,对于任一行都产生匹配输出信号。
4.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,该系统还包括一个优先级编码器,被配置成连接内容可寻址存储器系统中最后一个内容可寻址存储器模块内生成的匹配输出信号所对应的行,并将该选定的行编码作为内容可寻址存储器子系统的输出。
5.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,每个内容可寻址存储器模块还包括一个优先级编码器,被配置成连接该模块内生成的匹配输出信号所对应的行,并将该选定的行编码作为该模块的输出;所述内容可寻址存储器子系统中最后一个内容可寻址存储器模块的模块输出就是内容可寻址存储器子系统的输出。
6.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,每个内容可寻址存储器模块还包括一个优先级编码器,被配置成接收一个编码允许信号,当编码允许信号无效时进入低功耗模式,在编码允许信号有效时,选出有效编码请求信号所对应的行,并将该选定行编码作为模块输出;所述内容可寻址存储器子系统中最后一个内容可寻址存储器模块的模块输出是内容可寻址存储器子系统的输出。
7.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,所述控制电路被配置为接收编码允许信号并仅在匹配输出信号和编码允许信号都有效的行生成编码请求信号;每个内容可寻址存储器模块还包括一个优先级编码器,配置成连接编码请求信号,并在具有至少一个编码请求信号的情况下,将所对应的行编码作为模块输出;子系统中最后一个内容可寻址存储器模块的模块输出是内容可寻址存储器子系统的输出。
8.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,该系统还包括一个配置寄存器,用于存储配置信息,并根据配置信息产生至少一个链路控制信号或者是编码允许信号。
9.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,使用由查表输入而定的数据产生至少一个链路控制信号或者编码允许信号。
10.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,该系统还包括至少两个优先级编码器;一个互连电路,配置成将每个优先级编码器和选定的内容可寻址存储器模块的匹配输出信号相连,其中的互连电路能为各种优先级编码器选择不同的内容可寻址存储器模块。
11.如权利要求10所述的可动态配置的内容可寻址存储器系统,其特征在于,该系统还包括一个配置寄存器,用于存储配置信息,并根据该信息产生互连控制信号;其中的互连电路根据该互连控制信号为优先级编码器选择内容可寻址存储器模块。
12.如权利要求10所述的可动态配置的内容可寻址存储器系统,其特征在于,所述互连电路根据由查表输入而定的数据产生互连控制信号,为优先级编码器选择内容可寻址存储器模块。
13.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,所述关键码字段和条目字段是二元的,在关键码字段和条目字段相等时,该行判定两者匹配。
14.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,所述关键码字段和条目字段中至少一个为三元的,在关键码字段和条目字段内的屏蔽码所选比特相等时,判定该行的关键码字段和条目字段匹配。
15.如权利要求1所述的可动态配置的内容可寻址存储器系统,其特征在于,所述行存储二元条目,并根据二元测定来判定关键码字段和条目字段匹配,或者存储三元条目,并根据三元测定来判定关键码字段和条目字段匹配。
16.一种根据条目产生输出值的方法,所述条目包括条目字段,每个条目字段存储在内容可寻址存储器子系统的一个模块中,所述方法包括接收一个包括一个关键码的查表输入信息;将该关键码分配到一系列关键码字段中,其中的每个关键码字段对应一个内容可寻址存储器模块;将每个关键码字段与存储于对应该关键码字段的内容可寻址存储器模块内的条目字段进行比较;对每个条目产生一系列部分匹配信号,其中这些部分匹配信号对应于内容可寻址存储器子系统中的相应内容可寻址存储器模块系列,每个部分匹配信号体现对应条目的字段匹配信号的状态,和在该内容可寻址存储器模块之前的内容可寻址存储器模块字段匹配信号的状态;选出该内容可寻址存储器子系统中最后的内容可寻址存储器模块所生成的部分匹配信号所对应的行,进行编码。
17.如权利要求16所述的根据条目产生输出值的方法,其特征在于,还包括通过在配置寄存器内写入配置数据,改变内容可寻址存储器子系统中的内容可寻址存储器模块。
18.如权利要求16所述的根据条目产生输出值的方法,其特征在于,还包括根据由查表输入而定的数据,改变内容可寻址存储器子系统中的内容可寻址存储器模块。
19.如权利要求16所述的根据条目产生输出值的方法,其特征在于,关键码的分配和比较出现在至少两个阶段,每个阶段包括内容可寻址存储器子系统中不同内容可寻址存储器模块子集。
20.一种可动态配置的内容可寻址存储器系统,用于存储条目和接收带有关键码的查表输入信息,该内容可寻址存储器系统包括一系列根据相应链路控制信号组成内容可寻址存储器子系统的方式,每一种组成方式包括I)至少两种存储某一条目中字段的方式,用于从关键码中接收相关字段并判定该字段是否匹配存储内容,如果是,则生成字段匹配信号。II)从字段匹配信号的存储装置中接收相关信号的方式,用于从每个存储装置中接收字段匹配信号和对应于每个存储装置的匹配输入信号以及对应于相关组成方式的链接控制信号,并由此产生对应每个存储装置的匹配输出信号。其中的匹配输入信号由内容可寻址存储器子系统中除第一个内容可寻址存储器模块以外的其它所有模块接收,也就是内容可寻址存储器子系统中各个内容可寻址存储器模块内对应存储装置所产生的匹配输出信号。
21.如权利要求20所述的可动态配置的内容可寻址存储器系统,其特征在于,还包括至少两个装置,用来选出内容可寻址存储器子系统中最后一个内容可寻址存储器模块中的匹配输出信号的存储装置,并将该选定的存储装置内容编码作为内容可寻址存储器子系统输出;连接装置,用于将选定装置链接到一个选定的内容可寻址存储器模块的匹配输出信号,其中的链接装置用于针对各种所述选定装置来选择各种内容可寻址存储器数据库。
22.如权利要求20所述的可动态配置的内容可寻址存储器系统,其特征在于,该系统还包括根据查表输入信息,产生链路控制信号或者编码允许信号或者互连控制信号中至少一个信号的装置。
全文摘要
一种可动态配置的内容可寻址存储器(CAM)系统,包括可链结起来形成CAM子系统的CAM模块。每个CAM模块包括一个具有数行的CAM矩阵。在查表操作中,CAM内所存储的条目字段与来自关键码的字段进行匹配,并在匹配命中的行产生一个字段匹配信号。每个CAM模块接收一个链路控制信号,且每一行都从先前CAM模块接收匹配输入信号,并在此基础上每一行产生匹配输出信号。一些实施实例可以根据存储在配置寄存器内的数据,或者关键码的当前值,或者其它查表信息,动态地配置CAM系统为一个或多个独立的具有不同宽度的CAM子系统。一些实施实例包括与所选择的CAM模块匹配输出动态链接的多个优先级编码器,从而利于实现CAM子系统的并行查表操作。
文档编号G11C15/00GK1540666SQ20041003516
公开日2004年10月27日 申请日期2004年4月20日 优先权日2003年4月23日
发明者周良荪, 郑仲志 申请人:芯成半导体(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1