一种TCAM查找方法及装置与流程

文档序号:14950878发布日期:2018-07-17 22:31阅读:197来源:国知局

本发明涉及一种集成电路设计技术领域,尤其是涉及一种提高tcam验证效率的tcam查找方法及装置。



背景技术:

tcam(ternarycontentaddressablememory,三态内容寻址存储器),能够满足高速实时通信的极速查找需求,查找速度快,每个周期即可完成一次查找,常用于快速查找acl、路由等表项。

在集成电路设计过程中,对于高速实时通信的应用要求,通常选择tcam查找技术。若tcam查找模块出现缺陷会导致查找结果错误,从而影响芯片的功能,因此,对带有tcam模块的芯片进行验证非常重要。

现有的tcam验证技术中,常使用真值表直接对tcam中每个表项中的每个比特位进行查找。随着集成电路的快速发展,tcam的查找数据位宽越来越大,表项数量越来越多,采用上述方式验证时消耗大量的时间成本,验证效率低,因此该验证方式不适用于数据位宽较大、表项数据量较多的tcam模块。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种查找效率高、适用于验证数据位宽较大、表项数量较多的tcam模块的tcam查找方法及装置。

为实现上述目的,本发明提出如下技术方案:一种tcam查找方法,包括如下步骤:

s1,将tcam中每一个表项数据均分割成n个第一数据片段;

s2,将待查找数据分割成n个第二数据片段:slice(0)~slice(n-1),且n个第二数据片段的数据位宽与n个第一数据片段的数据位宽一一对应;

s3,将n个第二数据片段与tcam中第一个表项的n个第一数据片段按照slice(0)~slice(n-1)的顺序一一进行匹配,若第m个第二数据片段与第一数据片段不匹配,则slice(m)~slice(n-1)的数据片段停止匹配并进行下一个表项中数据片段的匹配。

优选地,每个第一数据片段的数据位宽均相同。

优选地,在步骤s3中,还通过设置标志位用于标识的查找表项中第m个第二数据片段与第一数据片段是否匹配。

优选地,所述查找的表项中第m+1个第二数据片段与第一数据片段匹配之前先查看标志位的值。

优选地,所述标志位的值为0时,表示查找的表项中第m个第二数据片段与第一数据片段匹配,为1时,表示表示查找的表项中第m个第二数据片段与第一数据片段不匹配。

一种tcam查找装置,包括

第一数据分段模块,用于将tcam中每一个表项数据均分割成n个第一数据片段;

第二数据分段模块,用于将待查找数据分割成n个第二数据片段:slice(0)~slice(n-1),且n个第二数据片段的数据位宽与n个第一数据片段的数据位宽一一对应;以及

数据匹配模块,用于将n个第二数据片段与tcam中第一个表项的n个第一数据片段按照slice(0)~slice(n-1)的顺序一一进行匹配,若第m个第二数据片段与第一数据片段不匹配,则slice(m)~slice(n-1)的数据片段停止匹配并进行下一个表项中数据片段的匹配。

优选地,每个第一数据片段的数据位宽均相同。

优选地,所述数据匹配模块还通过设置标志位用于标识查找的表项中第m个第二数据片段与第一数据片段是否匹配。

优选地,所述查找的表项中第m+1个第二数据片段与第一数据片段匹配之前先查看标志位的值。

优选地,所述标志位的值为0时,表示查找的表项中第m个第二数据片段与第一数据片段匹配,为1时,表示查找的表项中第m个第二数据片段与第一数据片段不匹配。

本发明的有益效果是:

与现有技术相比,本发明所述的tcam查找方法及装置,通过将tcam表项数据分割成n个第一数据片段,将待查找数据分割成n个第二数据片段:slice(0)~slice(n-1),并按照slice(0)~slice(n-1)的顺序与tcam中第一个表项的n个第一数据片段进行匹配,若第m个第二数据片段与第一数据片段不匹配,则slice(m)~slice(n-1)的数据片段停止匹配并进行下一个表项中数据片段的匹配,减少了匹配的次数,进而提高了tcam的查找效率。

附图说明

图1是本发明的方法流程图示意图;

图2是本发明的tcam表项数据分段示意图;

图3是本发明的结构框图示意图。

具体实施方式

下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。

本发明所揭示的一种tcam(ternarycontentaddressablememory,三态内容寻址存储器)查找方法,能够提高tcam查找效率,尤其适用于数据位宽较大、表项数量较多的tcam的验证。

如图1所示,一种tcam(ternarycontentaddressablememory,三态内容寻址存储器)查找方法,包括如下步骤:

s1,将tcam中每一个表项数据均分割成n个第一数据片段。

具体的,tcam常用于查找acl(accesscontrollist,访问控制列表)、路由表项等,其包括若干个表项,每个表项中存储了一定数据位宽的数据。进一步地,为了实现tcam快速查找,首先将每个表项数据分割成n个第一数据片段。优选地,每个第一数据片段的数据位宽均相同,实施时,以每个第一数据片段的数据位宽是8位最佳。当然,每个第一数据片段的数据位宽也可以不同。

s2,将待查找数据分割成n个第二数据片段:slice(0)~slice(n-1),且n个第二数据片段的数据位宽与n个第一数据片段的数据位宽一一对应。

具体的,tcam在进行查找时,待查找数据的数据位宽与tcam中表项中的数据位宽相同。因此,将待查找数据同样分割成n个第二数据片段,并使n个第一数据片段与n个第二数据片段的数据位宽一一对应,n个第二数据片段记为slice(0)~slice(n-1),其中,slice(0)表示第一个第二数据片段,依次类推,slice(n-1)表示第n个第二数据片段。

如图2所示,本实施例中以包含256个表项,每个表项的数据位宽为320位的tcam为例对如何进行数据分段进行详细的说明:

首先,将tcam中每个表项中的数据分割成40个第一数据片段,其中,第一个第一数据片段的数据位宽为4位,第二个第一数据片段的数据位宽为4位,第三个第一数据片段的数据位宽为8位,第四个第一数据片段的数据位宽为16位,从第五个第一数据片段至第四十个第一数据片段的数据位宽均为8位。

其次,待查找数据的数据位宽同样为320位,将其分成40个第二数据片段,并且40个第二数据片段需要与40个第一数据片段的数据位宽一一对应,因此,在40个第二数据片段中,第一个第二数据片段的数据位宽为4位,第二个第二数据片段的数据位宽为4位,第三个第二数据片段的数据位宽为8为,第四个第二数据片段的数据位宽为16位,从第五个第二数据片段至第四十个第二数据片段的数据位宽均为8位。

当然,也可以对待查找数据和表项数据进行均分,如每个第一数据片段和第二数据片段的数据位宽均为8位。

s3,将n个第二数据片段与tcam中第一个表项的n个第一数据片段按照slice(0)~slice(n-1)的顺序一一进行匹配,若第m个第二数据片段与第一数据片段不匹配,则slice(m)~slice(n-1)的数据片段停止匹配并进行下一个表项中数据片段的匹配,其中,0≤m≤n-1,m、n为自然数。

具体的,在数据匹配过程中,按照slice(0)~slice(n-1)的顺序以数据片段为单位进行一一匹配,即第一个第二数据片段与第一个表项中的第一个第一数据片段进行匹配,第二个第二数据片段与第一个表项中的第二个第一数据片段进行匹配,以此类推,第n个第二数据片段与第一表项中的第n个第一数据片段进行匹配。若第m个第二数据片段与第一数据片段在匹配的过程中存在匹配的情形,则继续第m+1个第二数据片段的匹配,直到第n个第二数据片段与第一表项中的第n个第一数据片段完成匹配;若第m个第二数据片段与第一数据片段在匹配过程中存在不匹配的情形,表示待查找数据与第一个表项中的数据不相匹配,则slice(m)~slice(n-1)的数据片段停止匹配,将带查找数据与下一个表项中的数据进行匹配。

待查找数据与第二个表项进行匹配时,第一个第二数据片段与第二个表项中的第一个第一数据片段进行匹配,第二个第二数据片段与第一个表项中的第二个第一数据片段进行匹配,以此类推,第n个第二数据片段与第一表项中的第n个第一数据片段进行匹配。同样的,若第m个第二数据片段与第一数据片段在匹配的过程中存在匹配的情形,则继续第m+1个第二数据片段的匹配,直到第n个第二数据片段与第二表项中的第n个第一数据片段完成匹配;若第m个第二数据片段与第一数据片段在匹配过程中存在不匹配的情形,表示待查找数据与第二个表项中的数据不相匹配,则slice(m)~slice(n-1)的数据片段停止匹配,将带查找数据与下一个表项中的数据进行匹配。

以此类推,直到查找到与待查找数据相匹配的表项。

在步骤s3中,第m个第二数据片段与第一数据片段匹配时是以数据片段中的每个数据进行一一匹配的。

在上述数据片段匹配的过程中,若第一个第二数据片段与待查找表项中的第一个第一数据片段不匹配,则从第二数据片段开始无需再对该表项中的数据片段进行匹配,进而节约了n-1次查找。若第m个第二数据片段与待查找表项中的第m个第一数据片段不匹配,则可以节约n-m次查找。

与现有技术相比,本发明所述的tcam查找方法可以进一步提高查找效率。

进一步地,在第二数据片段与第一数据片段匹配过程中,还通过设置标志位,用于标识查找的表项中第m个第二数据片段与第一数据片段是否匹配。标志位的数据可根据表项的数据进行设置,如有256个表项,则可以设置256个标志位。本实施例中,当标志位的值为0时,表示查找的表项中第m个第二数据片段与第一数据片段匹配,为1时,表示查找的表项中第m个第二数据片段与第一数据片段不匹配。在第m+1个第二数据片段与第一数据片段匹配时首先要查看当前标志位的值,若为1,则无需在进行匹配,直接进行下一个表项的匹配,若为0,则继续匹配该表项。

如图3所示,一种tcam查找装置,包括第一数据分段模块、第二数据分段模块,以及数据匹配模块。其中,第一数据分段模块用于将tcam中每一个表项数据均分割成n个第一数据片段;第二数据分段模块用于将待查找数据分割成n个第二数据片段,记为slice(0)~slice(n-1),并且n个第二数据片段的数据位宽与第一数据片段的数据位宽一一对应;数据匹配模块用于将n个第二数据片段与tcam中第一个表项的n个第一数据片段按照slice(0)~slice(n-1)的顺序一一进行匹配,若第m个第二数据片段与第一数据片段不匹配,则slice(m)~slice(n-1)的数据片段停止匹配并进行下一个表项数据片段的匹配。

优选地,每个第一数据片段的数据位宽均相同,实施时,以每个第一数据片段的数据位宽是8位最佳。当然,每个第一数据片段的数据位宽也可以不同。

进一步地,按照slice(0)~slice(n-1)的顺序一一进行数据片段匹配时,第m个第二数据片段与第一数据片段匹配时是以数据片段中的每个数据进行一一匹配的。数据匹配模块还通过设置标志位用于标识查找的表项中第m个第二数据片段与第一数据片段是否匹配。当标志位的值为0时,表示查找的表项中第m个第二数据片段与第一数据片段匹配,为1时,表示查找的表项中第m个第二数据片段与第一数据片段不匹配。在第m+1个第二数据片段与第一数据片段匹配时首先要查看当前标志位的值,若为1,则无需在进行匹配,直接进行下一个表项中数据片段的匹配,若为0,则继续匹配该表项。

本发明中通过将每个表项中的数据分割成n个数据片段,以数据片段为单位进行匹配,若当前数据片段不匹配,则后续数据片段不再进行匹配,节省了匹配次数,提高tcam查找效率。

本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。

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