用于内容可寻址存储器内的宽字删除的方法和设备的制作方法

文档序号:6761767阅读:236来源:国知局
专利名称:用于内容可寻址存储器内的宽字删除的方法和设备的制作方法
技术领域
本发明涉及半导体存储器。具体来说,涉及在内容可寻址存储器内的字删除。
背景技术
在许多常规存储器系统(诸如随机存取存储器)中,二进制数字(位)被存储在存储器单元中并由处理器存取,所述处理器指定一个与给定存储器单元相关联的线性地址。此系统可在某些限制内提供对存储器系统的任一部分的快速存取。为了便于处理器控制,每个存取存储器的操作都必须作为指令一部分声明所需的存储器单元的地址。标准的存储器系统并未被完善地设计用于基于内容的搜索。标准存储器中的基于内容的搜索需要在微处理器控制下的以软件为基础的算法搜索。执行搜索需要许多存储器操作。这类搜索既不迅速也无法有效地使用处理器资源。
为了克服这些缺点,已经开发出一种称为内容可寻址存储器(CAM)的关联存储器系统。CAM允许根据单元的内容参考单元,所以最早被用于查找表的实现中(诸如高速缓存子系统),目前则已快速应用于各种联网系统。CAM最有价值的特点是它可用单一操作执行搜索并且比较多个位置,其中将搜索数据与CAM中存储的数据进行比较。通常,搜索数据被加载到搜索线上并且被与CAM中存储的字比较。在搜索与比较操作中,匹配线上会产生与每个存储字相关联的匹配或失配信号,以指示搜索字是否与某一存储字相匹配。
CAM将数据存储在单元的矩阵里,所述单元通常是以静态随机存取存储器(SRAM)或以动态随机存取存储器(DRAM)为基础的单元。直到最近为止,以SRAM为基础的CAM单元由于其实施简易,所以最为普遍。然而,为了提供三进制状态的CAM(即其中每个CAM单元可以存储以下三种值的其中之一逻辑“0”、“1”或“无关”结果),以三进制SRAM为基础的单元通常比以三进制DRAM为基础的单元需要更多晶体管。结果,以三进制SRAM为基础的CAM单元的封装密度比以三进制DRAM为基础的单元低得多。


图1显示一个典型的CAM方框图。CAM 10包括一个以DRAM为基础的CAM单元(图中未示出)排成行和列而形成的矩阵或阵列25。以DRAM为基础的三进制CAM单元阵列的优点在于其占用的硅面积显著少于以SRAM为基础的对应部件。一行中预定数目的CAM单元存储一个数据字。使用地址译码器17来选择CAM阵列25内的任一行,以允许在所选择的行上写入或读取数据。阵列25内设有数据存取电路(诸如位线与列选择装置),以便将数据移入或移出阵列25。在CAM阵列25内,每行CAM单元设有匹配线感测电路(图中未示出),用于在搜索与比较操作中输出结果,以指示搜索字与该行中的所存储字的匹配是否成功。所有各行的结果由优先级编码器22处理,以输出对应于匹配字位置的地址(匹配地址)。匹配地址在由匹配地址输出块19输出之前先存储在匹配地址寄存器18内。数据经由数据输入/输出(I/O)块11与各种数据寄存器15被写入阵列25。经由数据输出寄存器23和数据输入/输出块11从阵列25中读出数据。CAM的其它部件包括控制电路块12、标志逻辑块13、电源电压产生块14、各种控制与地址寄存器16、更新计数器20以及JTAG块21。
图2显示如美国专利号6,320,777 B1中说明的典型三进制DRAM型CAM单元30。DRAM CAM单元30具有比较电路,该比较电路包括在匹配线ML与尾线TL间与n沟道比较晶体管34串联的n沟道搜索晶体管32。搜索线SL*与搜索晶体管32的栅极连接。存储电路包括n沟道存取晶体管36,其栅极与字线WL连接并且在位线BL和单元极板电压电势VCP之间和存储电容38串联。当在电容38上存储有代表逻辑“1”状态的电荷时,电荷存储节点CELL1与比较晶体管34的栅极连接,以导通晶体管34。用于另一半三进制数据位的其余的晶体管及电容镜像晶体管32、34、36和电容38与对应的搜索线SL及位线BL*连接,它们被提供来支持三进制数据存储。它们可以一起存储代表逻辑“1”、逻辑“0”或“无关”的三进制值。以下表1显示单元30可采取的可能的三进制状态。
表1尾线TL通常接地,而且所有晶体管都是n沟道晶体管。在前述专利6,320,777 B1中有三进制DRAM单元的操作的详细说明。
另一种常用的存储器单元类型是如图3所示的二进制单元。二进制CAM单元40与图2的三进制单元30相同,除了使用锁存元件替换一对DRAM存储单元以外。其中搜索晶体管42、比较晶体管44以及存取晶体管46分别对应于晶体管32、34与36,而第一反相器48及第二反相器50被安排成交叉耦合配置。反相器48的输入端与比较晶体管44的栅极及存取晶体管46的源极/漏极端子连接。因此,反相器50的输入端与单元40的相同的另一半的相同晶体管连接。二进制单元40在本技术领域是公知的,其本质上是一个SRAM单元,该SRAM单元具有与交叉耦合反相器的互补端子连接的两对搜索与比较晶体管。
CAM被设计成允许极快速地搜索大量组织成字的数据。联网系统中的有源CAM通常花90%的时间执行搜索,其余10%的时间则用于执行表维护功能。表维护包括在存储器阵列中写入新条目和从中删除旧条目。
通常,CAM将数据存储为72位或144位的片段(segment),此种片段称为字,其中每个字存储在CAM阵列中的单个单元行上。然而,日益需要存储更大增量的数据,诸如288位和432位字。因为制造具有288或432位的行的CAM存储器阵列可能并不实际,所以这些宽字被存储在多个连续行内。例如,如果要将一个288位的字存储在每行大小为72位的CAM阵列中,将需要连续四行。存储与搜索位于多行中的宽字时,其开销可以不比搜索常规大小的字多很多。然而,删除宽字的条目则会消耗大量周期(cycle)。
在转让给摩赛德科技公司(Mosaid Technologies Inc.)的美国专利申请No.09/997,296(Gillingham)或美国专利No.6,246,601(Pereira等人)中所公开的现有技术CAM,可以以高效率方式存储与搜索宽字。但是无法以高效率方式执行对这类条目的删除或消除。在Pereira等人的CAM系统中,系统控制器必须先搜索宽字条目的位置。系统控制器必须等候搜索结果,然后再计算第一字的位置。然后发出删除命令,以删除该字及构成该宽字的所有后续片段。由于CAM仅提供最高优先级的匹配地址,所以所删除的宽字的拷贝仍可能驻留在CAM阵列中。因此,系统控制器必须重复搜索,以确保已经没有存储该宽字的其它拷贝。假如有100个宽字要删除,每个宽字包括四个字片段,那么至少需要1200个周期才能删除全部100个宽字。更具体地说,搜索每个宽字需要四个周期,删除每个宽字也需要四个周期,然后又需要四个周期来再度搜索CAM,以确保该宽字的所有拷贝均已被删除。
因此,如果表维护操作消耗CAM装置太多的周期,则当这些周期无法用于执行搜索操作时,CAM装置的搜索性能即会降低。因此,在现有技术的CAM装置中,删除存储在多个片段内的宽字所需的开销极高。因此,为了增加CAM的整体性能,应该最小化表维护操作所需的CAM周期数。
因此,目前需要一种可以有效地搜索与删除宽字条目的CAM。
发明概要本发明一个目的在于消除或减少以往的CAM阵列的至少一个缺点。尤其是,本发明的一个目的在于提供一种CAM阵列,此种CAM阵列可使找到及删除存储在该CAM阵列中的宽字所需的周期数减至最少。
根据本发明的一个方面,提供一种内容可寻址存储器。该内容可寻址存储器包括匹配线行与匹配处理电路。该匹配线行包括与匹配线耦合的数据位单元与控制单元,以用于提供对应于该匹配线的匹配状态的搜索结果。该匹配处理电路接收该搜索结果以及从相邻匹配处理电路接收相邻锁存的(adjacently latched)搜索结果,以用于提供一个输出,以便响应于与所述匹配状态相应的相邻锁存的搜索结果来将各控制单元设置到预定的逻辑状态。
根据第一方面的一个实施例,每个控制单元包括与内容可寻址存储器单元耦合的设置电路(set circuit),该设置电路接收设置信号和匹配处理电路的输出,以用于当设置信号处于预定的逻辑状态时设置该内容可寻址存储器单元的逻辑状态。
在第一方面的另一实施例中,该匹配处理电路包括触发器电路,以用于在其D输入端接收搜索结果,并响应于时钟脉冲从其Q输出端提供锁存的搜索结果。在本实施例的一个方面中,该匹配处理电路包括第一逻辑传递门,用于在相邻锁存的搜索结果对应于匹配状态时将搜索结果传递至该触发器电路;第二逻辑传递门,用于响应于第一传递使能信号将锁存的搜索结果传递至相邻的匹配处理电路;和第三逻辑传递门,用于响应于第二传递使能信号将锁存的搜索结果传递至另一个相邻的匹配处理电路。在本实施例的另一方面中,该第三逻辑传递门响应于第二传递使能信号,选择性地将锁存的搜索结果与相邻锁存的搜索结果的其中之一从相邻行传递至该控制单元。
在第二方面中,本发明提供一种从CAM存储器阵列中删除宽字的方法。此方法包括在CAM存储器阵列中迭代地搜索宽字的各个字片段、对该宽字的最后一个字片段加标记以及将属于所述加标记的宽字(其具有加标记的最后一个字片段)的所有字片段删除。
在第二方面的一个实施例中,该迭代搜索的步骤包括沿第一方向将锁存的搜索结果从一行传递至一个相邻行,该标记步骤包括将与该宽字的最后一个字片段相关联的有效位设置为指示无效数据的逻辑状态,而该删除步骤包括搜索具有指示无效数据的逻辑状态的有效位。在该实施例的一个方面中,搜索有效位的步骤包括沿着与第一方向相反的第二方向将锁存的搜索结果从一行传递至一个相邻行。
在第三方面中,本发明提供一种内容可寻址存储器。该内容可寻址存储器包括内容可寻址存储器单元阵列,其中该阵列包括匹配线行,该匹配线行具有与匹配线耦合的多个数据位单元与多个控制单元,以用于提供对应于该匹配线的匹配状态的搜索结果;以及匹配处理电路,该匹配处理电路用于接收搜索结果以及从相邻匹配处理电路接收相邻锁存的搜索结果,从而提供一个输出,以便响应于与所述匹配状态对应的相邻锁存的搜索结果而将各控制单元设置到预定的逻辑状态。此种内容可寻址存储器还包括地址译码器,用于寻址数据位单元和控制单元;写入数据电路,用于将数据写入数据位单元和控制单元;以及搜索数据电路,用于将搜索数据写到搜索线上。
根据第三方面的一个实施例,每个控制单元包括一个与内容可寻址存储器单元耦合的设置电路,该设置电路接收设置信号与匹配处理电路的输出,以用于当设置信号处于预定的逻辑状态时设置该内容可寻址存储器单元的逻辑状态。
在第三方面的另一实施例中,该匹配处理电路包括触发器电路,以用于在其D输入端接收搜索结果,并响应于时钟脉冲从其Q输出端提供锁存的搜索结果。在本实施例的一个方面中,该匹配处理电路包括第一逻辑传递门,用于在相邻锁存的搜索结果对应于匹配状态时将搜索结果传递至该触发器电路;第二逻辑传递门,用于响应于第一传递使能信号将锁存的搜索结果传递至相邻的匹配处理电路;和第三逻辑传递门,用于响应于第二传递使能信号将锁存的搜索结果传递至另一个相邻的匹配处理电路。在本实施例的另一方面中,该第三逻辑传递门响应于第二传递使能信号而选择性地将锁存的搜索结果与相邻锁存的搜索结果的其中之一从相邻行传递至所述控制单元。
附图简述参照附图,仅以举例方式说明本发明的各实施例,其中图1为常规CAM装置的方框图;图2为以DRAM为基础的CAM单元的电路示意图;图3为二进制CAM单元的电路示意图;图4为根据本发明第一实施例的CAM存储器阵列的方框图;图5为根据本发明一个实施例的CAM存储器阵列的电路示意图;图6为根据本发明一个优选实施例的匹配线行的电路示意图;图7为根据本发明一个实施例的CAM状态/有效位单元的电路示意图;图8为为根据本发明一个实施例的CAM存储器阵列的电路示意图;图9为序列图,其说明图5及图8所示CAM存储器阵列的操作;图10为流程图,其显示根据本发明一个实施例的宽字删除方法;图11、12显示表1a至1f,所述表说明搜索与删除操作的一个实例;图13、14显示表2a至2g,所述表说明搜索与删除操作的一个实例;图15、16显示表3a至3f,所述表说明搜索与删除操作的一个实例;图17、18显示表4a至4f,所述表说明搜索与删除操作的一个实例。
发明的详细说明公开了一种用于删除CAM阵列内的分段的宽字条目的系统与方法。迭代执行常规的CAM搜索操作,以在第一CAM阵列方向中找到宽字的各字片段。由于CAM知道构成该字的字片段有几个,所以对最后一个字片段的搜索是一个搜索与删除操作,以将最后一个字片段标记为已删除的字片段。一旦删除最后一个字片段,即认为该宽字已被删除,因为对该宽字的后续搜索不会找到其最后一个字片段。然后在相反的CAM阵列方向中执行消除操作,以删除所删除宽字的所有字片段。系统随后能够利用这些字片段来存储新数据。CAM阵列的每行中的匹配处理电路将搜索结果传递至位于该行上方或下方的相邻行,以确保在搜索与删除操作中仅找到属于该宽字的字片段并且在消除操作中将其删除。
图4是显示本发明的第一实施例的方框图,其中的箭头指示数据的流向。图4中显示四行,其中CAM阵列100的每行包括多个匹配线行102与一个匹配处理电路104。每个匹配线行102包括与公共匹配线连接的各CAM数据单元和各CAM控制单元。CAM控制单元可包括任意数目的状态位单元与一个有效位单元,其接收匹配处理电路104的输出,诸如来自匹配处理电路104的锁存的搜索结果信号反馈。状态位与有效位CAM单元彼此完全相同,但与CAM数据单元不同,如稍后的图7所示。CAM数据单元可为任何类型的CAM单元,诸如三进制、二进制、以SRAM或以DRAM为基础的CAM单元。匹配处理电路104可接收来自上方相邻行或下方相邻行的锁存的搜索结果,并可将其锁存的搜索结果发送至上方相邻行或下方相邻行。在本实施例中,上方行的物理地址低于下方行的物理地址。例如,最上行的匹配处理电路104对应于由匹配线行102提供的搜索信号而提供锁存的搜索结果MFi,并向对应的上方及下方行的匹配处理电路提供标记为U_MFi与D_MFi的MFi的选通版本。由优先级编码器接收所有的匹配标志信号MF,以用于产生后续地址。最上方的匹配处理电路104还接收来自对应的上方与下方行匹配处理电路的选通的锁存的搜索结果D_MFi-1与U_MFi+1。CAM阵列100可存储常规长度的字(其宽度等于一行内的CAM数据单元数)或宽字(其宽度等于至少两行的CAM数据单元)。因此,宽字包括多个字片段,且每个片段存储在一行CAM单元内。
现在说明图4显示的删除CAM阵列100的宽字的一般方法。匹配线行102可经由搜索线(图中未示出)加以搜索,搜索结果以电流或电压形式出现在公共匹配线上。块102内的感测放大器电路检测匹配线上的电压或电流,以提供一个搜索信号,该搜索信号对应于匹配或失配条件。匹配线感测以及匹配线感测放大器在本领域中是公知的,本领域技术人员应当可以理解如何执行匹配线感测。每个匹配处理电路104接收方向控制信号(图中未示出),以确定选通的锁存的搜索结果的流动方向。例如,所有匹配处理电路可将它们的锁存的搜索结果传递至上方行,或可将其锁存的搜索结果传递至下方行。每个搜索周期由两个阶段组成。第一阶段是搜索与评估阶段,其中在搜索线上声明搜索数据、由感测放大器感测匹配线以及将来自感测放大器的搜索结果与来自上方或下方相邻匹配处理电路的选通的锁存的搜索结果进行比较。第二阶段是锁存阶段,其中锁存搜索结果并将其驱动至各自的MF线上。在各行之间传递与接收锁存的搜索结果是为了允许相邻行正确识别属于搜索中的宽字的字片段。
以下是CAM阵列100的一个操作实例。在该实例中,假设包括两个字片段的宽字被连续存储在图4所示的CAM阵列100的头两行中。在常规搜索(NORMAL SEARCH)操作的第一字片段搜索周期的搜索与评估阶段中,方向控制信号被禁用,并且第一行的感测放大器提供搜索结果给其匹配处理电路104。在CAM搜索操作期间也执行常规搜索操作。在锁存阶段中,第一匹配处理电路接着响应于时钟脉冲锁存MFi并将其驱动至对应于匹配的状态。现在开始搜索与删除(SEARCHAND DELETE)操作,以用于找出所述宽字的最后一个字片段,并将其标记为已删除。在第二(最后一个)字片段的搜索周期中,激活方向控制信号,以便将锁存的MFi经由D_MFi向下传递至相邻行。因此,从前一搜索周期中锁存的D_MFi被传递至第二行的匹配处理电路104。在第二搜索操作的搜索与评估接段中,在第二行内找到一个匹配,并且块102的其感测放大器提供一个搜索结果给其匹配处理电路104。第二匹配处理电路在搜索与评估阶段末尾比较其搜索结果与D_MFi,仅当第二行的搜索结果和D_MFi对应于匹配状态时,才在锁存阶段中锁存第二行的搜索结果并将其驱动至匹配状态。由于第二行包含最后一个字片段,所以响应于MFi+1的反馈将第二行标记为已删除。当然,由于第一行不匹配第二片段的搜索数据,所以在MFi+1被锁存并且被驱动至匹配状态的同时,第一行的匹配处理电路将锁存MFi并且将其驱动至失配状态。现在可以朝反方向进行消除(PURGE)操作以删除所有字片段,这是通过激活方向控制信号,以便将U_MFi+1往上传递至顶行的匹配处理电路104。最后,响应于MFi的反馈,将第一行标记为已删除。
以上实例假设宽字的第一片段存储在最上行内。另一方面,如果第一片段存储在第二行时,则需要激活经由U_MFi+1将锁存的MFi+1信号向上传递到相邻行的方向控制信号。总之,宽字的删除处理从常规搜索操作开始,以识别宽字的第一字片段。在常规搜索操作中,将锁存的搜索结果从一行传递至下一个相邻行。常规搜索操作可包括几个搜索周期,其中根据宽字的字片段数,使锁存的搜索结果连续传播通过各行。搜索与删除操作与常规搜索操作的搜索周期完全相同,但是其找到宽字的最后一个字片段,并通过利用其锁存的搜索结果的反馈来设置一个或多个与该字片段相关联的特定控制位,而将该最后一个字片段标记为已删除。最后,消除操作找到标记为已删除的最后一个字片段,然后将先前的字片段连续标记为已删除。消除操作类似搜索与删除操作,因为每个搜索周期中都将一个字片段标记为已删除。
图5显示根据本发明第二实施例的图4所示的CAM阵列100的详细电路实施例。CAM阵列200显示四行CAM单元及相关联的匹配处理电路。图5中仅详细说明上方的二行,因为所有各行彼此完全相同。每行包括匹配线行202与匹配处理块204,其中块202、204执行的功能分别与图4先前说明的块102、104一样。匹配线行202包括多个CAM数据单元206、一个状态位单元208和一个有效位单元210。在本实施例中,状态位单元208及有效位单元210都是CAM控制单元。图5中未显示位线、字线及搜索线,以简化该示意图,但是本领域技术人员应当理解的是CAM阵列需要有这些线路才能正常操作。如前所述,状态位单元208与有效位单元210彼此完全相同,但与CAM数据单元206不同。图7显示状态位单元208的电路示意图。公共匹配线212与CAM单元206、208、210及匹配线感测放大器214并联。匹配线感测放大器214优选地包括锁存电路,并提供搜索结果给匹配处理电路204。状态位单元208接收一对状态设置信号S_SET[1:0],有效位单元210则接收一对有效设置信号V_SET[1:0]。单元208、210都接收来自匹配处理电路204的输出,诸如来自匹配处理电路204的MFi+1。S_SET[1:0]与V_SET[1:0]分别共同连接到CAM阵列中的所有状态位单元与有效位单元。图7显示S_SET[1:0]与V_SET[1:0]与其CAM单元的连接细节。
匹配处理电路204包括AND(与)逻辑传递门216、触发器218、和OR(或)逻辑传递门220、222。AND门216接收来自感测放大器214的搜索结果和来自相邻匹配处理电路的OR逻辑传递门224、226的输出,并提供其逻辑结果至触发器218的D输入端。逻辑传递门224、226传递来自相邻匹配处理电路的相邻锁存的搜索结果。触发器218锁存其D输入端上出现的逻辑状态,并响应于CLK脉冲而驱动其Q输出端上的锁存的逻辑状态。OR门220接收标记为MFi+1的触发器218的Q输出,并向上传递使能信号PUEN*。OR门220的输出被提供给匹配处理电路204上方的匹配处理电路的AND门。OR门222接收触发器218的Q输出,并向下传递使能信号PDEN*。OR门222的输出被提供给匹配处理电路204下方的匹配处理电路的AND门。从图5可以看出,就像相邻的匹配处理电路间的互连一样,每行的各部件彼此完全相同。
以下讨论匹配线行202。数据单元206可为SRAM或DRAM型的二进制或三进制CAM单元,如图2及图3所示。图5中虽然只显示一个状态位单元208,但优选地至少使用三个状态位单元。在这种配置中,每个状态位单元208的配置如图5所示,但其接收其本身的一对状态设置信号。图6显示该优选实施例的进一步细节。在状态位单元208中存储的状态位数据可用于多种用途,诸如用于标记关于字的用户特定信息。它们也可用于标记字的寿命(age),或用于分隔数据条目。根据本发明各实施例的一个方面,其中一个状态位单元用于标记第一字,并且一个状态位用于标记最后一个字。这两个状态位都用在宽字的每个字片段中。另一方面,其中一个状态位用于标记第一字片段的位置,而该第一字片段中的一个或多个状态位用于标识该字片段的长度。另一方面,用于标识字片段长度的位被存储在数据单元206内,而非状态位单元208内。有效位单元210用于确定包含有效数据的各单元行。应当注意的是,沿着同一行的数据位单元206、状态位单元208及有效位单元210,共享一条公共字线与公共匹配线212。在搜索与删除操作中,当状态位单元208与有效位单元210各自的S_SET[1:0]与V_SET[1:0]信号已被适当设置时,可响应于其各自的触发器的Q输出而设置其存储状态。更具体地说,在搜索与删除操作期间,可将状态设置信号及有效设置信号驱动至预定的逻辑状态,当状态位单元208与有效位单元210的对应匹配信号(例如MFi+1)处于对应于匹配条件的逻辑状态时,可以设置或复位状态位单元208与有效位单元210的状态。根据本发明各实施例,单元208、210的设置状态为逻辑“0”,而单元208、210的复位状态为逻辑“1”。例如,通过复位有效位,可从CAM阵列有效地删除相关联的字片段。因此,如果在搜索数据与在一行中的数据位单元206或状态位单元208中存储的数据间发现匹配时,该行可在单个搜索周期内自动从CAM阵列中去除其字片段条目。此种体系结构的一个优点在于,它允许多个匹配行同时从CAM阵列中去除它们的字片段条目。
以下讨论匹配处理电路204。AND门216用作传递门,仅当来自OR逻辑传递门224、226的输出在高逻辑状态时,它才会传递来自匹配线感测放大器214的搜索结果。在常规搜索操作期间,信号PUEN*与PDEN*都在高逻辑状态,且AND门216被使能,以将搜索结果传递至触发器218的D输入端。OR门220、222、224与226也用作传递门,用于传递它们各自的由触发器218提供的锁存的搜索结果。当PUEN*在有效的低逻辑状态时,OR门220、226及其它匹配处理电路的任何对应OR门都将其关联行的锁存的搜索结果传递至其上方的相邻匹配处理电路。相应地,当PDEN*在有效的低逻辑状态时,OR门222、224及其它匹配处理电路的任何对应OR门都将其关联行的锁存的搜索结果传递至其下方的相邻匹配处理电路。这允许一个匹配处理电路将当前搜索周期的搜索结果与来自相邻匹配处理电路的前一搜索周期的搜索结果相组合。例如,如果由OR门224或226传递的相邻锁存的搜索结果在高逻辑状态,那么AND门216传递来自感测放大器214的高逻辑状态。CLK被定时为在AND门216评估搜索结果后提供脉冲,因此由触发器218提供的锁存的搜索结果仍然可供AND门216的评估使用。使用时,在任何搜索和/或搜索与删除周期期间,仅将PUEN*与PDEN*的其中之一设置为有效低逻辑状态。下一搜索和/或搜索与删除周期可在CLK脉冲和来自AND门216的搜索结果被触发器218锁存后再开始。本领域技术人员可以理解,还有其它方法来利用将搜索结果从一个相邻行传递至下一行的能力。
图6说明根据本发明一个优选实施例的匹配线行202。图6的匹配线行202与图5所示的匹配线行202完全相同,但有附加的状态位单元208,因此共有三个状态位单元。如图6所示,每个状态位单元接收其本身的设置信号,并与匹配线212耦合。第一状态位单元接收S0_SET[1:0],第二状态位单元接收S1_SET[1:0],第三状态位单元接收S2_SET[1:0]。虽然只显示三个状态位单元208与一个有效位单元210,但可使用任何数目的状态位单元与有效位单元,以进一步提供用户定义的功能。
如前所述,状态位单元208与有效位单元210可响应于来自匹配处理电路204的输出而被设置或复位到预定的逻辑状态。在本优选实施例中,该输出为来自触发器218的锁存的搜索结果。还可利用位线以常规方式写入和/或读取它们。图7显示根据本发明一个实施例的状态位单元208或有效位单元210的电路示意图。现在以有效位单元的上下文说明图7的示意图。有效位单元210与图3所示的二进制CAM单元40完全相同,但有附加的设置电路与其耦合。晶体管250、252、254及反相器256、258分别对应图3的晶体管42、44、46及反相器48、50。由于先前已说明过二进制CAM单元40,所以不必再说明图7所示的晶体管250、252、254及反相器256、258的功能。设置电路包括n沟道晶体管260、262、264及266,其中由晶体管260、262组成的第一支路串联在反相器256的输入节点与地之间;类似地,由晶体管264、266组成的第二支路串联在反相器258的输入节点与地之间。晶体管260、264的栅极端子与MFn连接,MFn可为图5中的对应触发器218的Q输出端。晶体管262的栅极端子接收信号V_SET0,晶体管264的栅极端子接收信号V_SET1。信号V_SET0与V_SET1是来自标记为V_SET[1:0]的信号线的单独信号。当反相器256的输入为逻辑“0”时,由反相器256、258组成的锁存电路存储逻辑“0”;而当反相器256的输入为逻辑“1”时,存储逻辑“1”。
在一个可替换的实施例中,可用p沟道晶体管替代设置电路中的n沟道晶体管,第一和第二支路将所述相同的输入节点耦合到VDD电源而非接地。此外,在各可替换的实施例中,定义单元设置或复位状态的逻辑状态可以反转。操作时,当MFn在高逻辑状态(或逻辑“1”)时,有效位单元210的状态可以改变,并且V_SET0与V_SET1被设置为适当的逻辑状态。在常规搜索操作中,V_SET0与V_SET1都被设置为低逻辑状态“0”,以禁用MFn对状态位单元208及有效位单元210的反馈作用。在搜索与删除操作及消除操作中,V_SET0与V_SET1被设置为互补的逻辑状态,以便导通晶体管262和266的其中之一。如果MFn被对应的触发器218驱动至高逻辑状态,则会经过位于反相器256或反相器258输出端的设置电路的第一或者第二支路形成通往接地的路径。由于通过晶体管260、262、264、266的电流被设置为大于反相器256、258的驱动能力,所以由反相器256、258锁存的任何逻辑状态都可被重写。当然,如果MFn维持在无效的低逻辑状态,则不会形成通往接地的路径,并会保留反相器256与258的锁存的状态。如上所述,图7所示的单元可以用作状态位单元208,其中设置信号V_SET0与V_SET1分别用设置信号S_SET0与S_SET1替换。用于设置或复位状态位单元208的设置信号可在搜索与删除操作及消除操作中激活,如果需要的话,可一起激活用于有效位单元210的设置信号。
图8显示本发明的一个可替换的CAM阵列实施例,在此实施例中,一行的状态位单元与有效位单元的状态可用其各自的MF输出或一相邻行的MF输出加以改变。CAM阵列400与图5所示的CAM阵列200类似,其中每行包括与匹配处理块404连接的匹配线行402。匹配线行402与图5的块204完全相同,并包括与公共匹配线412连接的各CAM数据单元406、各状态位单元408以及一个有效位单元410,以由感测放大器414进行感测。控制信号S_SET[1:0]及V_SET[1:0]分别连接到状态位单元408与有效位单元410,其连接方式与图5及图7先前所述方式相同。由于部件402至414及其互连分别对应于图5中相同标号的部件202至214,所以不必再进一步讨论。优选地,匹配线行402可包括至少三个状态位单元408,如图6的匹配线行202所示的那样。
虽然匹配处理块404仍提供输出以用于改变控制单元的逻辑状态,但是它与图5的匹配处理块204有所不同。虽然触发器418与OR门422分别对应图5中的触发器218与OR门222,但是用不同类型的传递逻辑门替换了OR门220,且AND门416接收二个输入而非如AND门216那样接收三个输入。该传递门可为MUX 420,其由PUEN*控制以选择性地使能来自其下方行的、将被传递到状态位单元408与有效位单元410的相邻锁存的MF搜索结果。MUX 420的第一输入端接收MFi+1,而MUX 420的第二输入端接收来自相邻下方行的MFi+2。MUX 420的输出是匹配处理块204的输出,其由状态位单元408与有效位单元410接收。AND门416具有第一输入端,用于接收来自上方行的OR门422的输出;以及第二输入端,用于接收由感测放大器414提供的搜索结果。
MUX 420的操作如下。当PUEN*在高逻辑状态时,MUX 420将其对应行的锁存的搜索结果MFi+1传递至状态位单元408与有效位单元410。当PUEN*在低逻辑状态时,MUX 420将其下方行的锁存的搜索结果MFi+2传递至状态位单元408与有效位单元410。因此,一个特定行的匹配处理块404可以选择性地接收其下方行的搜索结果,以用于设置或复位其的状态位单元408与有效位单元410。或者,本领域技术人员可以轻易看出,每行的MF信号可以与其下一行而非其上一行多路复用,因此使一行中的匹配能够用来设置其相邻下方行的状态位与有效位单元。其它可替换实施例可以包括任何MUX电路的组合,以便朝任一方向传递搜索结果。
图9的序列图说明图5所示CAM阵列200或图8所示CAM阵列400的操作。更具体地说,图5的序列图中显示宽字的常规搜索操作,以说明相邻各行信号间的交互作用。根据本发明各实施例,在常规搜索操作的搜索周期期间,设置信号S_SET[1:0]与V_SET[1:0]保持在其无效状态。图9的序列图显示信号CLK、PDEN*、PUEN*、MLSOi至MLSOi+2和MFi至MFi+2的迹线。MLSO节点取自每个匹配处理块AND门216或416的输出端,并被标记为对应于各自的MF信号。
在本实例中假设一个包括四个字片段的宽字被存储在图5所示的四个匹配线行202中。更具体地说,第一字片段存储在最高一行内,其后续字片段则存储在次高的各物理行地址内。在该实例中还假设有效位单元210设置为高逻辑状态以指示该行内存在有效数据,而状态位单元208根据用户需求被设置为高逻辑状态。参照图7,当反相器258的输出端将反相器256的输入端驱动至高逻辑状态时,得到所存储的高逻辑状态。
在本实例中,搜索会识别宽字的第一字片段,然后以向下方向或以减少物理行地址的方向进行对后续字片段的搜索。搜索会包括比较字符(comparand)数据、有效位数据及状态位数据。比较字符数据存储在CAM数据单元206内,有效位数据存储在有效位单元210内。状态位数据(诸如第一字标志位与字长度位)存储在状态位单元208内。因此,如果有效标志已设置、第一字标志已设置、字长度位匹配且比较字符数据与CAM数据单元内容匹配时,匹配线将只报告匹配或肯定的搜索结果。
在图9中指示为“搜索1”的第一搜索周期里,PDEN*与PUEN*被设置为无效高逻辑状态,且在与CAM阵列的数据位单元206、状态位单元208及有效位单元210耦合的搜索线上声明搜索数据。在本实施例中,匹配线被预充电至高逻辑状态或匹配条件,并且如果该行的任何单元报告失配则放电为低逻辑状态。当然,在可替换实施例中,匹配线可以被预充电至低逻辑状态并被拉至高逻辑状态。如图所示,在搜索周期1开始时使PDEN*及PUEN*在高逻辑状态,则第一行的AND门被使能以传递来自其感测放大器214的搜索结果。因此,MLSOi被驱动至高逻辑状态,以指示其对应匹配线上的匹配条件。由于其它的字片段不匹配当前的搜索数据,所以它们的MLSO节点继续保持在低逻辑状态,以指示其对应匹配线上的失配条件。CLK最终在第一跃迁箭头300处脉冲至高逻辑状态,且所有触发器218锁存各自MLSO节点的逻辑状态并将其驱动至其MF线上。MFi因此在第一搜索周期中的第一跃迁箭头300处被驱动至高逻辑状态。由于MFi的高逻辑状态被反馈到状态位单元208及有效位单元210,所以这些单元的晶体管260、264被导通。所有S_SET[1:0]与V_SET[1:0]信号都为低,因为这是常规搜索操作的一部分,因此,该行中的状态位或有效位都不会改变。
在第一搜索周期中的第一CLK脉冲结束后,声明新的搜索数据,以开始第二搜索周期。该第二搜索周期是一个组合搜索,所以PDEN*在跃迁302处被驱动至有效低逻辑状态,以使能所有OR门224。在第一行中,AND门216在跃迁304处将MLSOi驱动至低逻辑状态,因为前一行的相邻锁存的搜索结果MFi-1被假设处于低逻辑状态,并经由先前行的OR门224被传递至第一行的AND门216。另一方面,如果MFi-1恰好在高逻辑状态,那么,当其感测放大器214向AND门216提供失配搜索结果时,MLSOi会在虚线所示的跃迁306处降为低逻辑状态。
在PDEN*降至低逻辑状态后,接收MFi的OR门224将MFi的高逻辑状态传递至第二行的AND门216。因此,第二行的AND门216被使能来传递其关联感测放大器214的逻辑状态。最后,第二行的感测放大器214提供匹配搜索结果,并且MLSOi+1被驱动至高逻辑状态,如跃迁308处所示。应当注意的是,由于所有匹配线的定时完全相同,所以MLSOi+1的跃迁308与MLSOi的跃迁306大约在相同时间发生。
在第二跃迁箭头310处,CLK在第二搜索周期期间的脉冲为高,以将MFi+1驱动至高逻辑状态,这是因为MLSOi+1目前在高逻辑状态。再一次,第二行的状态位单元208与有效位单元210接收MFi+1的高逻极状态。在MLSOi+1被驱动至高逻辑状态的同时,MFi被驱动至低逻辑状态,这是因为MLSOi目前在低逻辑状态。然而,MFi的低逻辑状态最后传播通过OR门224与AND门216,以在第三跃迁箭头312处将MLSOi+1驱动至低逻辑状态。充分的传播延迟可确保MLSOi+1的高逻辑状态在被驱动至低逻辑状态前先被锁存在其触发器218内,并且必要时可以添加附加的延迟。
MLSOi+2响应于第三搜索周期的搜索数据在跃迁314处上升至高逻辑状态,而PDEN*继续保持在低逻辑状态,MFi+1继续保持在高逻辑状态。尤其是,第二行的OR门222传递MFi+1以使能第三行的AND门216,以传递感测放大器214的搜索结果。当CLK在第四跃迁箭头316处产生脉冲时,MLSOi+2被锁存并且MFi+2被驱动至高逻辑状态。大约在同一时间,MFi+1被驱动至低逻辑状态,因为MLSOi+1在低逻辑状态。在第五跃迁箭头318处,MLSOi+2降至低逻辑状态,其方式与MLSOi+1在第三跃迁箭头312处降至低逻辑状态的方式相同。
图9中虽未显示,但是在第四行及最后一行的搜索与删除操作中,后续的搜索周期会产生MFi+2、MLSOi+3及MFi+3的信号迹线图,这些迹线图与第三搜索周期中产生的MFi+1、MLSOi+2及MFi+2的信号迹线图相同。然而,由于这是搜索与删除操作,所以可以激活状态位单元208与有效位单元210的设置信号。例如,如果V_SETO被设置到高逻辑状态以导通晶体管262,反相器258的输出端则被接地以将有效位单元210的状态设置为逻辑“0”复位状态。这样可将最后一个字片段标记为无效。后续搜索(只搜索有效字,即有效位在搜索关键字中被设置为“1”)不会在该行上获得匹配结果。搜索宽字时,必须具有所有字片段的匹配才能报告整个宽字的匹配。因此,将最后一个字片段标记为无效可有效地删除整个宽字。在本实例中,在有效位中使用逻辑“1”以指示该行包含有效数据。在可替换实施例中,可使用逻辑“0”指示该行包含有效数据。在这些替换实施例中,有效位中的逻辑“1”指示该行为空。
随后的消除操作搜索被删除的最后的字片段,并以反向执行一系列搜索周期。这些搜索周期的进行方式与图9所示相同,但使用不同的搜索关键字数据,且PUEN*设置为低而PDEN*设置为高。例如,一旦找到最后被删除的字片段,后续的搜索周期可寻找并删除在该设置状态中具有有效位的相邻字片段。由于这些搜索周期以反向进行,所以只会找出属于被标记宽字的字片段。可以同时消除多个宽字。
现在讨论各种可在图5所示的CAM阵列200与图8所示的CAM阵列400上执行的宽字删除方法。图10显示根据本发明一个实施例的一般宽字删除法。
图10所示的一般宽字删除方法从步骤500开始,其中,CAM系统在常规搜索操作中迭代搜索宽字的每个字片段。先前已参照图9显示和说明了这种迭代搜索的实例。这种搜索可沿物理行地址渐增或渐减方向进行。在步骤502中,在搜索与删除操作中找到宽字的最后一个字片段,并响应于其锁存的搜索结果将状态位单元、有效位单元或甚至数据单元的状态设置为预设的逻辑状态,以便标记该最后一个字片段。在一个优选实施例中,将有效位复位为代表无效数据的逻辑状态,作为标记该宽字的方法。当然,本领域技术人员可以了解,标记该行时,可以使用数据单元、状态位单元及有效位单元的任何组合。在步骤504中进行消除操作,其中,CAM系统搜索被标记的最后一个字片段,然后沿着与步骤500中相反的方向,迭代地删除其余的宽字片段。最后,被标记宽字的各字片段的所有有效位都被复位。
图10所示方法可以高效率地搜索与删除CAM阵列中的宽字,因为可以同时找到与删除同一宽字的多个拷贝。或者,此方法可同时删除许多字片段数目各不相同的不同宽字。在该可替换实施例中,CAM系统在步骤502后循环返回到步骤500,以便找到另一宽字。因此,经过多次循环后,许多不同宽字的最后的字片段都被标记,以指示这些宽字被删除。一旦所有需要的宽字都已标记为已删除,即可在步骤504中进行消除操作,以同时删除属于该已删除宽字的所有字片段。以下是图10所示宽字删除方法的各具体实施例。
以下是在各具体实施例中使用的一些术语定义。“搜索下一个”指令只在已发出常规搜索指令时才会发出。“搜索下一个”指令组合当前搜索结果与前一搜索周期的锁存的搜索结果。“向下搜索下一个”指令会使PDEN*信号被驱动至低,并且给定行只有在其匹配线行报告匹配结果且其紧邻上方行在前一周期中报告匹配结果时才会向优先级编码器报告匹配。
类似地,“向上搜索下一个”指令会使PUEN*信号被驱动至低。在图5所示实施例中,给定行只有在其匹配线行报告匹配结果且其紧邻下方行在前一周期中报告匹配结果时才会向优先级编码器报告匹配。在图8所示实施例中,“向上搜索下一个”指令允许匹配行的上方行的状态位及有效位被设置或复位。
以下说明在图5所示的CAM阵列200上执行的本发明的第一宽字删除方法的实施例。在该实施例中,每个字被顺序删除与消除。然而,同一字的多个拷贝将同时被删除。在本实施例中,使用一个状态位单元来标记第一字,并使用该第一字的一个或多个位(可为数据或状态位单元)来指示该宽字的大小。所述序列如下1.对第一字片段进行搜索(有效、第一、宽字大小、数据)2.对后续的n-2个字片段进行向下搜索下一个(有效、数据)3.对最后一个字片段进行向下搜索下一个与删除(有效、数据)4.进行向上搜索下一个与删除(有效)5.重复步骤4,共n-1次
6.搜索所有已删除的字片段并设置第一及大小位。
参照图10,序列步骤1与2可在步骤500中执行,序列步骤3可在步骤502中执行,序列步骤4与5可在步骤504中执行。序列步骤6为可选的阵列清除步骤。
以下参照图11、12所示的表1a至1f来说明图5所示CAM阵列200执行的第一宽字删除方法实施例的实际实例。根据此实施例,表1a显示有六个字的表。使用状态位2表示第一字片段,使用状态1表示第一大小位,使用状态0表示第二大小位。行0包含常规字数据A,如有效位、第一位及大小位所指示。在此实施例中,大小位“00”指示常规长度字。行1至4包含由四个字片段B、C、D、E组成的宽字。行1包含第一字片段,如有效位所指示,且第一字位为高。该行在大小条目字段中还包含关键字“11”,这指示长度为4的宽字。应注意,长度编码只需要给每个不同的长度一个独特的代码。行2、3、4包含中间字片段,如其有效位的设置,并且第一位为“0”。这些行的大小位为无关状态(用“X”指示),并可由用户指定以代表其它有用的信息。它们可用来延伸大小位,以允许更多数量的受支持的大小。例如,在一个可替换实施例中,在第一字的大小位中,“00”指示一个常规字,“01”指示一个2片段的宽字,“10”指示一个4片段的宽字,“11”指示一个连续的宽字,其长度数据在后续字片段的状态位中给定。在该可替换实施例中,第一行的大小位中的“11”及后续行大小位中的“00”指示6片段宽字。第一行中的“11”及后续行中的“01”将指示一个8片段的宽字。本领域技术人员可以看出,这种表示字大小的方法可用存储在多行中的大小位来延续,以允许任何长度的字大小。行5包含一个空字,以有效位为低来指示。空行的大小代码优选地设置为单一长度条目。
步骤1将搜索有效=“1”、状态2=“1”、状态1=“1”、状态0=“1”及数据B。搜索后,行1中的触发器会被设置为“1”,以指示行1与搜索关键字匹配。步骤2的第一次迭代会用有效=“1”、状态2=“0”、状态1和0被屏蔽及数据=C来搜索下一字(向下链接)。搜索后,当行2匹配该搜索关键字且行1在前一搜索中匹配时,行2的触发器将为高。当行1在其匹配线上未获得匹配时,其触发器会被设置为“0”。步骤2的下一次迭代会用数据D重复此操作。
步骤3用有效=“1”、状态2=“0”、状态1和0被屏蔽以及数据=E来执行对下一字(向下链接)的搜索与删除。因为是搜索与删除命令,所以输入到有效位单元的V_SET0被设置为高逻辑状态,而行4的触发器中最终产生的匹配数据将行4的有效位设置为“0”。表1b显示步骤3后的表。应注意,步骤1至3会找到和标记以删除所有与给定搜索参数匹配的字。因此,相同宽字的多个拷贝可使用相同指令删除。
表1c显示对有效位的第一次向上搜索下一个与删除之后的结果。只有位置3的有效位被设置为“0”。行3与搜索条件匹配,而且仅有该行被链接到匹配行4的前一搜索。类似地,表1d显示步骤4的另一次迭代之后的表。表1e显示步骤4的最后一次迭代后的数据表。系统控制器知道它正在删除一个具有四个字片段的宽字,所以它只发出三个如步骤4中指示的类型的命令。
表1f显示步骤6的清除或消除后的数据表。所有已删除的字都被设置为单一条目空字的已知状态。步骤6并非必要,但是优选地执行此步骤。步骤6可以被延迟,直到多次删除各宽字之后(重复步骤1至5)。该方法允许用户以高效率删除所有宽字。例如,如果有100个不同的宽字要删除,每个宽字由4个字组成,则将花701个周期,并保证每个字所有的拷贝都会被删除掉。
以下说明用于在图5所示的CAM阵列200上执行的第二宽字删除方法的实施例。在此实施例中,使用一个状态位来标记第一字,并使用第二状态位来标记最后一个字。此实施例中删除条目的序列如下1.对第一字片段进行搜索(有效、第一、数据)2.对后续的n-2个字片段进行向下搜索下一个(有效、数据)3.对最后一个字片段进行向下搜索下一个与删除(有效、数据)4.搜索已删除的最后的字片段并且清除最后的位(非有效、非第一和最后一个)5.向上搜索下一个有效、非第一个并复位有效6.重复步骤5,共重复m次,其中m>=要消除的最大的n-17.搜索所有已删除的字片段并复位所有状态位。
参照图10,可在步骤500中执行序列步骤1与2,可在步骤502中执行序列步骤3,可在步骤504中执行序列步骤4至6。序列步骤7为可选的阵列清除步骤。应注意,在步骤3与4之间可以中断处理,并可执行对其它宽字的搜索。因此,一旦在步骤4恢复处理时,可以删除多个宽字的字片段。步骤4与5将删除CAM中所有的宽字片段。该方法允许用户高效率地删除所有宽字。例如,如果有100个宽字要删除,每个宽字包括四个字片段,这至少要花405个周期,并保证会删除宽字的所有拷贝。
以下参照图13、14显示的表2a至2g,说明图5所示的CAM阵列200执行的第二宽字删除方法实施例的实际例子。根据该实施例,表2a显示六个字的表。其中使用状态2表示第一字,使用状态1表示最后一个字。状态0为无关状态,如“X”所表示。该位可由系统指定来代表任一功能。行0包含常规字数据A,如有效位、第一位及最后位所指示的那样。行1至4包含由四个字片段B、C、D、E组成的宽字。行1包含第一字片段,如有效位所指示,且该第一字位为高。行2及3包含中间字片段,如其有效位的设置,且第一或最后位都不设置。行4包含最后一个字片段,如其有效位与最后位的设置。行5包含空字,以有效位为低而第一和最后位为高来指示。
步骤1将搜索有效=“1”、状态2=“1”、状态1=“0”、状态0被屏蔽及数据=B。搜索后,行1中的触发器会被设置为“1”,以指示行1与搜索关键字匹配。步骤2的第一次迭代会用有效=“1”、状态2=“0”、状态1=“0”、状态0被屏蔽以及数据=C来搜索下一字片段(向下链接)。搜索后,当行2匹配搜索关键字而行1在前一搜索中为匹配时,行2的触发器将为高。当行1在其匹配线上未获得匹配时,其触发器会被设置为“0”。步骤2的第二次迭代会用数据D重复此操作。
步骤3用有效=“1”、状态2=“0”、状态1=“1”、状态0被屏蔽以及数据=E来执行对下一字片段(向下链接)的搜索与删除。因为是搜索与删除命令,所以输入到有效位单元的V_SET0为高,而行4的触发器中最终产生的匹配数据将行4的有效位设置为“0”。表2b显示步骤3之后的表。
步骤4会用有效=“0”、状态2=“0”(非第一字)以及状态1=“1”(最后字)来搜索各行,而S1_SET0为高。应注意S1_SET0等于信号S_SET0,但只与状态位单元1连接。所有其它位都被屏蔽。表2c显示步骤4之后的表。应注意,当行4中的触发器匹配搜索关键字时,它会保持在“1”。该搜索关键字会找到宽字的被删除的最后的字片段(诸如行4),但不会找到已删除的字(诸如行5)。表2d显示对有效而非第一的搜索关键字(有效=“1”、状态2=“0”,其它都被屏蔽)进行第一次向上搜索下一个与删除之后的结果。只有位置3的有效位被设置为“0”。行3与搜索条件匹配,而且仅有该行被链接到匹配行4的前一搜索。类似地,表2e显示步骤5的另一次迭代之后的表。
在步骤5的另一次迭代之后,表格看来如表2f。步骤5的另一次迭代并不会影响该表,因为搜索是寻找状态2=“0”。行1的状态2为“1”,因此不会产生任何匹配。CAM内的其它地方可能有六个或八个字的宽字,这些宽字正由步骤5的后续迭代删除。
步骤7为消除或清除步骤,它将所有空位置设置为空的常规字。
以下说明图8所示的CAM阵列400上执行的第三宽字删除方法的实施例。在本实施例中,使用一个状态位来标记第一字片段,并使用该第一字片段的一个或多个位(CAM数据单元或状态位单元)来指示宽字的大小。其序列如下1.对第一字片段进行搜索(有效、第一、宽字大小、数据)2.对后续的n-2个字片段进行向下搜索下一个(有效、数据)3.对最后一个字片段进行向下搜索下一个与删除(有效、数据)4.搜索被删除的非第一字片段(非有效、非第一)并复位上方行的有效5.重复步骤5,共重复m次,其中m>=要消除的最大的n-26.搜索所有已删除的字并复位所有状态位。
参照图10,可在步骤500中执行序列步骤1与2,可在步骤502中执行序列步骤3,可在步骤504中执行序列步骤4至5。步骤6为可选的清除步骤。应注意,在步骤3与4之间可以中断处理,并可执行对其它宽字的搜索。因此,一旦在步骤4恢复处理时,可以删除多个宽字的字片段。步骤4与5将同时清除CAM中所有已删除的宽字条目。该方法允许用户高效率地删除所有宽字。例如,如果有100个各自不同的宽字要删除,每个宽字包括四个字片段,这要花404个周期。其中要花四个周期找到每个宽字的最后一个字片段并将其标记为无效。然后要花一个周期找到所有无效的非第一字片段并删除它们上方的下一字片段,再花二个周期清除剩余的字片段。复位所有第一字位要使用一个周期。
以下参照图15、16显示的表3a至3g,说明图8所示的CAM阵列400执行的第三宽字删除方法实施例的实际实例。根据该实施例,表3a显示六个字的表,其数据安排与表1a相同。前三个步骤与第一具体序列的前三个步骤相同,表3b显示的逻辑状态与表1b相同。
步骤4利用该能力来设置上方行的状态位。步骤4搜索所有已删除的非第一字片段(有效=“0”、状态2=“0”,其它状态与数据位被屏蔽),并将上方行的有效位单元设置为“0”。信号PUEN*被设置为低逻辑状态,V_SET0被设置为高逻辑状态。这样将行3的有效位设置为“0”。表3c显示步骤4的一次迭代之后的表状态。
步骤4的下一次迭代所产生的表如表3d所示。步骤4的另一次迭代产生表3e。步骤4的其它迭代不会影响当前的表,因为搜索是寻找状态2=“0”,而行1为状态2=“1”。然而,CAM中的其它地方可能有六个字或八个字的宽字需要删除。
步骤6为清除步骤,它搜索有效=“0”(所有其它位被屏蔽),并将状态2设置为“1”、将状态1设置为“0”以及将状态0设置为“0”。这样会将所有已删除的字设置为常规长度的空字。
以下说明图8所示的CAM阵列400上执行的本发明第四宽字删除方法的实施例。在本实施例中,使用一个状态位来标记第一字片段,并使用第二状态位来标记预定要消除的字片段。使用第一字片段的一个或多个位(数据位或状态位)来指示宽字的大小。其序列如下1.对第一字片段进行搜索(有效、第一、宽字大小、数据)2.对后续的n-2个字片段进行向下搜索下一个(有效、数据)3.对最后一个字片段进行向下搜索下一个与删除并设置消除位(有效、数据)4.用非有效、非第一以及消除位设置来搜索字片段,并对上方行复位有效位并且设置消除位5.重复步骤4,共重复m次,其中m>=要消除的最大的n-26.搜索所有已删除的字片段并复位所有状态位。
参照图10,可在步骤500中执行序列步骤1与2,可在步骤502中执行序列步骤3,可在步骤504中执行序列步骤4至5。步骤6为可选的阵列清除步骤。该方法允许用户高效率地删除所有宽字。例如,如果有100个各自不同的宽字要删除,每个宽字包括四个字片段,则要花404个周期,并保证会删除宽字的所有拷贝。
以下参照图17、18显示的表4a至4f说明图8所示的CAM阵列400执行的第四宽字删除方法实施例的实际实例。根据此实施例,表4a显示六个字的表。状态2仍然是第一位,但是状态1为消除标记。状态0为无关状态,并且可由系统用于任何其它目的。字大小被存储在前两个数据位内。
行0包含常规数据字A,以第一位及有效位设置为高来指示。数据A的前两位用于编码字大小“00”。通过减少或增加所存储的位数都可提供这些字大小数据位。或者,也可以加入附加的状态位。行1至4包含由四个字片段B、C、D、E组成的宽字。行1包含第一字片段,以有效位及第一位为高及消除位为低来指示。行2、3、4包含后续的字片段,以有效位设置为高和第一字位设置为低来显示。行5包含空字,以有效位为低来指示。
步骤1将搜索有效=“1”、状态2=“1”、状态0与状态1被屏蔽以及数据=11B。搜索后,行1的触发器会被设置为“1”,以指示行1匹配搜索关键字。步骤2的第一次迭代会用有效=“1”、状态2=“0”、状态1与状态0被屏蔽以及数据=C来搜索下一个字片段(向下链接)。搜索后,当行2匹配搜索关键字且行1在前一搜索中为匹配时,行2的触发器将为高。如果行1在其匹配线上未获得匹配,则行1的触发器会被设置为“0”。步骤2的下一次迭代用数据D来重复此操作。
步骤3是用搜索关键字有效=“1”、状态2=“0”、状态0与状态1被屏蔽以及数据=E进行向下搜索下一个与删除并且设置状态1的命令。搜索后,行4中的触发器输出为高,并且作为该命令的一部分,信号V_SET0与S1_SET1都被设置为高逻辑状态。这样就将行4中的有效位设置为低而将状态1设置为高,如表4b所示。
步骤4利用该能力来设置上方行的状态位。步骤4搜索有效=“0”、状态2=“0”、状态1=“1”、状态0及数据被屏蔽。信号PUEN*被设置为低逻辑状态,V_SET0与S1_SET1都被设置为高逻辑状态。这样就将行3的有效位设置为“0”,并将行3的状态1设置为“1”。如表4c所显示。步骤4的下一次迭代所产生的表如表4d所示。步骤4的另一次迭代产生表4e。步骤4的其它迭代不会影响当前的表,因为搜索是寻找状态2=“0”,而行1为状态2=“1”。然而,CAM中的其它地方可能有六个字片段或八个字片段的宽字需要消除。
步骤6为清除步骤,该步骤搜索有效=“0”、状态1=“1”、其它都被屏蔽,并将状态2设置为“1”以及将状态1设置为“0”。这样就将所有已删除的字设置为空字。
应当注意的是,修改第三和第四宽字删除方法的实施例以在图8所示的CAM阵列400上执行,因为图5所示的CAM阵列200没有使得一行能够设置相邻行的控制位的匹配处理电路。
上述从CAM阵列200、400中搜索与删除宽字的方法及实例假设宽字及其对应的状态及有效位单元已有写入的数据。写入字片段可用标准存储器写入操作来完成,从而激活字线,并用要写入的数据来驱动位线。在可以使用状态位单元前,通过声明信号S_SET[1:0]与V_SET[1:0],以在CAM装置的加电阶段期间先将它们设置为已知状态。在将宽字的第一字片段存储或写入CAM阵列200或400时,可将一个状态位设置为第一字标志位。因此,如果目前被写入的字片段为宽字的第一字或常规字时,该第一字标志位会被设置为逻辑“1”状态。如果目前写入的字片段是宽字中的后续字时,该第一字标志位会被设置为逻辑“0”状态。其它状态位或数据位可被分配予一个对应于字长度的值。下一个写入命令将是到CAM阵列中的上一个或下一个位置。每个已写入字片段的有效位单元将被设置为逻辑“1”状态,以指示该位置包含有效数据。
前述的根据本发明各实施例的CAM阵列及宽字删除方法,可使删除宽字所需的CAM操作周期数减至最少。这是通过将搜索与删除功能限制到CAM阵列来实现的,从而不需要在每个搜索周期后使用优先级编码器来计算匹配地址。根据本发明的宽字删除实施例只需404个搜索周期来删除100个各自不同的各包括四个字片段的宽字。如前所述,现有技术的CAM装置需要至少1200个周期来删除100个各包括四个字片段的宽字。由于使用本发明的CAM阵列与方法的CAM装置在删除字时所需的操作周期数约为现有技术CAM装置的三分之一,所以有更多时间可用于搜索的主要任务,因而使本发明具有显著改进的性能。
虽然本发明的各优选实施例使用三个状态位单元与一个单一有效位单元,但是在可替换实施例中可使用任何数目的状态位单元与有效位单元。在其它可替换实施例中,可用功能上等效的传递门来替代AND、OR和MUX门,而且可在任一搜索周期期间(包括在常规搜索操作期间)激活状态位单元与有效位单元设置信号。
本发明上述各实施例是用于举例目的。在不脱离本发明的仅由所附权利要求书所限定的范围的情况下,本领域技术人员可对各特定实施例实施多种改变、修改与变化。
权利要求
1.一种内容可寻址存储器(10),其特征在于匹配线行(202)具有与匹配线(212)耦合的数据位单元(206)与控制单元(208,210),用于提供对应于该匹配线(212)的匹配状态的搜索结果;和匹配处理电路(204)用于接收该搜索结果以及来自相邻匹配处理电路(204)的相邻锁存的搜索结果,以响应于与所述匹配状态对应的相邻锁存的搜索结果来提供一个输出,从而将控制单元(208,210)设置为预定的逻辑状态。
2.如权利要求1所述的内容可寻址存储器,其中每个控制单元(208,210)包括与内容可寻址存储器单元(40)耦合的设置电路(260,262,264,266),该设置电路(260,262,264,266)接收设置信号以及所述匹配处理电路(204)的输出,以用于在所述设置信号处于预定的逻辑状态时设置该内容可寻址存储器单元(40)的逻辑状态。
3.如权利要求1所述的内容可寻址存储器,其中所述匹配处理电路(204)包括触发器电路(218),用于在其D输入端接收搜索结果,以及响应于时钟脉冲从其Q输出端提供锁存的搜索结果。
4.如权利要求3所述的内容可寻址存储器,其中所述匹配处理电路(204)包括逻辑传递门(216),用于在所述相邻锁存的搜索结果对应于所述匹配状态时将所述搜索结果传递至触发器电路(218)。
5.如权利要求4所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第二逻辑传递门(220),用于响应于第一传递使能信号而将所述锁存的搜索结果传递至相邻的匹配处理电路(204)。
6.如权利要求5所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第三逻辑传递门(222),用于响应于第二传递使能信号而将所述锁存的搜索结果传递至另一个相邻的匹配处理电路(204)。
7.如权利要求5所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第三逻辑传递门(222),用于响应于第二传递使能信号而选择性地将所述锁存的搜索结果与来自相邻行的相邻锁存的搜索结果的其中之一传递至控制单元(208,210)。
8.一种从CAM存储器阵列(10)中删除宽字的方法,其特征在于a)在该CAM存储器阵列(10)中迭代搜索该宽字的各字片段;b)标记该宽字的最后一个字片段;和c)将属于具有被标记的最后一个字片段的被标记的宽字的所有字片段删除。
9.如权利要求8所述的方法,其中所述迭代搜索步骤包括沿第一方向将所述锁存的搜索结果从一行(102)传递至一个相邻行(102)。
10.如权利要求9所述的方法,其中所述标记步骤包括将与所述宽字的最后一个字片段相关联的有效位设置为指示无效数据的逻辑状态。
11.如权利要求10所述的方法,其中所述删除步骤包括搜索具有指示无效数据的逻辑状态的有效位。
12.如权利要求11所述的方法,其中所述搜索有效位的步骤包括沿着与所述第一方向相反的第二方向将锁存的搜索结果从一行(102)传递至一个相邻行(102)。
13.一种内容可寻址存储器(10),包括搜索数据电路(11,15),用于将搜索数据写到搜索线上;内容可寻址存储器单元阵列(25),该阵列(25)的特征在于匹配线行(202)具有与匹配线(212)耦合的数据位单元(206)与控制单元(208,210),用于提供对应于该匹配线(212)的匹配状态的搜索结果;和匹配处理电路(204),用于接收该搜索结果以及来自相邻匹配处理电路(204)的相邻锁存的搜索结果,以响应于与所述匹配状态对应的相邻锁存的搜索结果来提供一个输出,从而将控制单元(208,210)设置为预定的逻辑状态;地址译码器(17),用于寻址所述数据位单元(206)与控制单元(208,210);和写入数据电路(11,15),用于将数据写入所述数据位单元(206)与控制单元(208,210)。
14.如权利要求13所述的内容可寻址存储器,其中每个控制单元(208,210)包括与内容可寻址存储器单元(40)耦合的设置电路(260,262,264,266),该设置电路(260,262,264,266)接收设置信号以及所述匹配处理电路(204)的输出,以用于在所述设置信号处于预定的逻辑状态时设置该内容可寻址存储器单元(40)的逻辑状态。
15.如权利要求13所述的内容可寻址存储器,其中所述匹配处理电路(204)包括触发器电路(218),用于在其D输入端接收搜索结果,以及响应于时钟脉冲从其Q输出端提供该锁存的搜索结果。
16.如权利要求15所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第一逻辑传递门(216),用于在所述相邻锁存的搜索结果对应于所述匹配状态时将所述搜索结果传递至所述触发器电路(218)。
17.如权利要求16所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第二逻辑传递门(220),用于响应于第一传递使能信号而将所述锁存的搜索结果传递至所述相邻的匹配处理电路(204)。
18.如权利要求17所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第三逻辑传递门(222),用于响应于第二传递使能信号而将所述锁存的搜索结果传递至另一个相邻的匹配处理电路(204)。
19.如权利要求17所述的内容可寻址存储器,其中所述匹配处理电路(204)包括第三逻辑传递门(420),用于响应于第二传递使能信号而选择性地将所述锁存的搜索结果与来自相邻行的所述相邻锁存的搜索结果的其中之一传递至控制单元(208,210)。
全文摘要
公开一种用于搜索与删除CAM阵列(100)内的分段的宽字条目的系统及方法。执行常规的CAM搜索操作,以找到宽字的第一字片段(102)。当找到后再沿第一CAM阵列方向执行搜索与删除操作,以找到该宽字的所有后续的字片段(102),并将最后一个字片段(102)标记为已删除的字片段(102)。一旦删除该最后一个字片段(102),即认为该宽字已被删除,因为对该宽字的后续搜索将无法找到其最后一个字片段(102)。接着沿相反的CAM阵列(100)方向执行消除操作,以删除该已删除宽字的所有字片段(102)。该CAM阵列(100)的每行中的匹配处理电路(104)可将搜索结果传递至该行上方或下方的相邻行(102),以确保在搜索与删除操作中只找到属于该宽字的字片段(102),并在消除操作中删除所述字片段。
文档编号G11C15/04GK1739164SQ200380108681
公开日2006年2月22日 申请日期2003年11月12日 优先权日2002年11月13日
发明者A·罗思, R·麦肯兹, O·贝卡 申请人:莫塞德技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1