公开/公告号CN103345937A
专利类型发明专利
公开/公告日2013-10-09
原文格式PDF
申请/专利权人 苏州雄立科技有限公司;
申请/专利号CN201310241607.4
申请日2013-06-18
分类号G11C15/00;G06F12/02;
代理机构北京市振邦律师事务所;
代理人李朝辉
地址 215021 江苏省苏州市苏州工业园区金鸡湖大道1355号国际科技园E502-1单元
入库时间 2024-02-19 20:08:03
法律状态公告日
法律状态信息
法律状态
2016-08-03
授权
授权
2013-11-13
实质审查的生效 IPC(主分类):G11C15/00 申请日:20130618
实质审查的生效
2013-10-09
公开
公开
技术领域
本发明涉及集成电路设计制造领域,具体来说,但不仅限于,内容可寻址存储器命中的优先级编码方法。
背景技术
通常的存储器(RAM或ROM)使用地址来指示存储单元的位置,并且输出该位置存储单元中的数据。与此相对,内容可寻址存储器(CAM)则接收外部检索数据,比较该检索数据与CAM中存储的数据是否匹配,并且输出该匹配数据在CAM中的地址。由于与检索数据相一致的字不限于一个,因此,当CAM中有多个字与检索数据相一致时,需要优先级编码器,来对从存储单元所输出的一致信号(表示与检索数据相一致的情况的信号)进行编码,并返回优先级最高的地址信号。
附图2说明了现有CAM的结构。如图所示,在CAM单元整列中存储数据。搜索数据从搜索数据寄存器发送到CAM单元整列。此后,比较该搜索数据与存储在CAM单元整列中的数据。如果所存储的数据匹配搜索数据,则将匹配线的的逻辑电平设为高,反之则为低。然后,匹配线检测单元检测匹配线的逻辑电平。优先级编码器接收来自该检测单元的输出,并且输出匹配的CAM单元的字线地址。
附图2是固定位宽的搜索。由于CAM的应用越来越广泛,而不同领域的应用所需的搜索数据位宽往往是不一样的。因此需要在不损失容量的情况下,提供多种搜索位宽的选择,比如1Kx640,2Kx320,4Kx160…。通常的做法如专利1(美国专利US7,230,840B2)所述。可以由多个最小宽度的模块来进行拼接,将每个小模块的匹配结果都输出到优先级编码器(PE)中,在优先级编码器中进行不同的组合,并计算出不同配置下最高优先级的地址。附图3是专利1的一种优化实现的示例,即将优先级编码器放在中间,CAM阵列放在两边。该示例共放置了8个CAM阵列,能实现4种不同比较位宽的配置(即1倍/2倍/4倍/8倍位宽),CAM阵列在版图上需要提供3根走线通道。如果放置16个阵列,则可以多一种16倍位宽的配置,不过走线通道则上升到7根。
很显然,上述方式每增加一种位宽,布线通道就需增加一倍。这在集成电路领域显然是不可接受的。特别是随着特征尺寸的减小,CAM基本单元面积越来越小,形状也越来越扁,版图上其所能提供的走线资源更加稀缺,一般只有几根而已。因此,传统优先级编码的方式很难提供4种或4种以上不同位宽配置的CAM芯片。
随着网络的发展,不断出现的新应用对数据查找芯片CAM有着各种不同搜索需求。而现有CAM在支持多种位宽搜索时,由于对芯片内部布线通道需求巨大,其所能提供的不同位宽模式种类受到极大限制,无法提供更多模式来满足不同应用领域的需求。
发明内容
为克服现有技术的上述缺点,本发明提供了一种在比较搜索芯片中支持多种查找模式的优先级编码方法,及利用该方法实现的优先级编码器和CAM搜索芯片。
本发明采用了以下技术方案:
一种在比较搜索芯片中支持多种查找模式的优先级编码方法,其特征在于该方法具有如下步骤:
步骤一:将CAM阵列分组,每组有一个底层优先级编码器,该优先级编码器放置于该分组物理实现的中间位置;
步骤二:底层优先级编码器对CAM阵列分组中每个字的比较结果进行处理,按照不同的配置计算出是否匹配,并将该新的匹配结果输出给上一层的优先级编码器A,底层优先级编码器同时生成组内CAM模块的块地址;
步骤三:优先级编码器A对底层优先级编码器的匹配结果进行处理,按照不同的配置计算出是否匹配,并将该匹配结果输出给更上一层的优先级编码器B,优先级编码器A同时需对底层编码器们产生的低位块地址进行选择,与该编码器生成的高位块地址合在一起,生成新的块地址;
步骤四:优先级编码器B对优先级编码器A的匹配结果进行处理,按照不同的配置计算出是否匹配,并将该匹配结果输出给优先级编码器B的上一层优先级编码器C,优先级编码器B同时需对优先级编码器A产生的低位块地址进行选择,与该编码器生成的高位块地址合在一起,生成新的块地址;
步骤五:依次类推,直至顶层;
步骤六:顶层优先级编码器对下一层优先级编码器的匹配结果进行处理,按照不同的配置计算出是否匹配,并对该匹配结果进行优先级编码,产生行地址;顶层优先级编码器同时需对下一层编码器们产生的低位块地址进行选择,与该编码器生成的高位块地址合在一起,生成最终的块地址。
其中,底层编码器的电路由1个最高优先级电路和1024个匹配计算单元组成。CAM阵列的结果会输出给相应行的匹配计算单元,得出不同配置下的匹配结果MOUT;在80bit模式下,mf0,mf1,mf2和mf3中只要有一个匹配,则输出是匹配的,并用块地址[1;0]来表示是哪一个模块匹配,1024个计算单元会得出1024个匹配结果MOUT;底层优先级电路则会判断出命中的匹配单元中优先级最高的那个,并将该单元的所在模块的块地址作为底层PE的块地址输出。
优选地,在该优先级编码方法中,8个CAM阵列被分成两组,每组CAM阵列的匹配结果都被输出到底层优先级编码器PE中,底层优先级编码器PE会输出不同配置下的匹配结果,并输出匹配的块地址;顶层优先级编码器PE会根据底层优先级编码器PE的匹配结果判断出最终的匹配结果,并计算出行地址,和最高位的块地址,根据该高位块地址,可以选出最终的低位块地址;每个字需两条走线,一条线是BLK3将匹配结果输出给底层PE,另一条线则是底层PE将新的匹配结果输出给顶层PE。
优选地,在上述步骤六中,底层优先级编码器PE输出的匹配结果MOUT会作为顶层匹配计算单元的输入,在80/160/320bit模式中,只要MOUT0或MOUT1中有1个匹配,则输出MO是匹配的,并用块地址来表示相应的CAM阵列;顶层最高优先级电路会判断出命中的匹配单元中优先级最高的那个,输出该单元的行地址,同时将该单元的块地址作为该顶层优先级编码器PE的块地址输出。
不同于传统CAM芯片将所有匹配输出都送到一个优先级编码器生成所有地址的方式,本发明中有不同层次的优先级编码器,其中顶层优先级编码器只生成行地址,块地址则是在局部编码器中生成,所有输入顶层PE的匹配线结果都会在局部PE中进行简化处理。利用该方式,4种不同位宽的配置的芯片只需2条布线通道,5种位宽的配置也只需3条线道,这大大减少了版图对布线通道的需求。同时通过这种方式,一款CAM芯片就可以拥有更多种的位宽配置,如图10所示,在同时支持多种位宽模式时,降低了版图对布线通道的需求。这样可以使一款芯片拥有更 多种的位宽配置,被更灵活地应用于多重领域。
附图说明:
附图1:本发明的结构示意图
附图2:CAM芯片的结构图
附图3:支持4种不同搜索位宽的CAM芯片传统实现方式的结构图
附图4:支持4种不同搜索位宽的CAM芯片本方案实现的结构图。
附图5:底层优先级编码器
附图6:底层匹配计算单元真值表
附图7:顶层优先级编码器
附图8:底层匹配计算单元真值表
附图9:块地址选择电路
附图10:位宽相应的线道书目表;
具体实施方式:
下面结合附图对本发明的具体方法进行详细描述。
附图4是根据本发明完成的一种具体实现。该实现能够同时支持4种不同的位宽模式,分别是8KX80,4KX160,2KX320和1KX640.其有8个80位的阵列模块组成,每个阵列模块有1K行。整个实现共需13位地址,含3位的块地址和10位的行地址。
如附图4所示,8个CAM阵列被分成两组,每组CAM阵列的匹配结果(mf0,mf1…)都被输出到底层优先级编码器(PE)中,底层PE会输出不同配置下的匹配结果,并输出匹配的块地址。顶层PE会根据底层PE的匹配结果判断出最终的匹配结果,并计算出行地址,和最高位的块地址[2]。根据该高位块地址,可以选出最终的低位块地址。显然,CAM阵列BLK2的上方是金属走线最密的地方。每个字需两条走线,一条线是BLK3将匹配结果输出给底层PE,另一条线则是底层PE将新的匹配结果输出给顶层PE。
附图5是附图4中底层PE的结构图,整个电路由1个最高优先级电路和1024个匹配计算单元组成。CAM阵列的结果会输出给相应行的匹配计算单元,得出不同配置下的匹配结果MOUT。在80bit模式下,mf0,mf1,mf2和mf3中只要有一个匹配,则输出是匹配的,并用块地址[1;0]来表示是哪一个模块匹配。在160bit模式下, mf0和mf1都匹配,或者mf2和mf3都匹配,则输出结果是匹配的,此时实际只有两个160bit的模块,1bit的块地址就可以表示,本例中用块地址[1]来表示,块地址[0]设为0。在320bit模式下,mf0,mf1,mf2和mf3需要全部匹配,输出结果才是匹配的。此时实际只有1个320bit的模块,无需块地址,本例中块地址[1:0]设为00。640bit模式与320bit模式相同。1024个计算单元会得出1024个匹配结果MOUT。底层优先级电路则会判断出命中的匹配单元中优先级最高的那个,并将该单元的所在模块的块地址作为底层PE的块地址输出。
附图6则是附图5中底层匹配计算单元真值表。可以根据该真值表来完成实际的电路。
附图7附图4中顶层PE的结构图。底层PE输出的匹配结果MOUT会作为顶层匹配计算单元的输入。在80/160/320bit模式中,只要MOUT0或MOUT1中有1个匹配,则输出MO是匹配的,并用块地址[2]来表示是左边的4个CAM阵列,还是右面的CAM阵列。在640bit模式中,只有MOUT0和MOUT1都匹配,输出MO才是匹配的,此时不需要块地址[2],本例将其置为0。顶层最高优先级电路会判断出命中的匹配单元中优先级最高的那个,输出该单元的行地址,同时将该单元的块地址[2]作为该顶层PE的块地址[2]输出。
附图8则是附图7中顶层匹配计算单元真值表。可以根据该真值表来完成实际的电路。
附图9则是附图4中块地址选择电路。如果块地址[2]为低,低两位的块地址输出选择右边底层PE产生的块地址。反之,则选择左边底层PE的块地址。
本发明的特定实施例已经进行了展示和描述,本领域的技术人员应当显而易见的知悉,在不背离本发明的范围的情况下,可在更广泛的方面对本发明做出修改或调整,因此,落入本发明的真正的精神和范围内的所有的这样的修改和调整包含在本发明的保护范围内。
机译: 一种交通流管理方法,包括为每辆汽车分配优先级值,比较优先级值以及操作优先级值较低的车辆以执行具有较高优先级值的动作支持车辆
机译: 单片结构的硅芯片,可集成到基于PC的计算系统中,并具有多个GPU驱动的管线核心,支持在运行图形应用程序时动态控制多种并行化模式
机译: 查找存储在电子数据文件中的记录的方法,包括将输入的搜索词与表示为情况并归档到情况数据文件中的数据数量进行比较