基于复用器的三态内容寻址存储器的制造方法

文档序号:10654595阅读:245来源:国知局
基于复用器的三态内容寻址存储器的制造方法
【专利摘要】在一个实施例中,一种三态内容寻址存储器(TCAM),包括:输入端口,其被耦接以接收W位的键作为输入;输出端口,其被耦接以提供匹配向量作为输出,所述匹配向量包括至少一位。所述TCAM进一步包括存储器,所述存储器具有存储单元,所述存储单元可操作以为N个W位的TCAM字储存N*W个位对。所述存储器包括多个存储器输出。所述TCAM进一步包括至少一个比较电路。所述至少一个比较电路包括至少一个复用器,所述至少一个复用器中的各个复用器被耦接以接收所述W位的键中的一位的实际版本和补码版本作为输入。所述至少一个复用器中的各个复用器由所述多个存储器输出中的一对存储器输出进行控制。所述至少一个比较电路进一步包括组合逻辑,所述组合逻辑被耦接以基于所述至少一个复用器的输出执行至少一次逻辑“与”运算。
【专利说明】
基于复用器的三态内容寻址存储器
技术领域
[0001]概括地说,本公开的实施例涉及电子电路,具体而言,涉及基于复用器的三态内容 寻址存储器(TCAM)。
【背景技术】
[0002] 内容寻址存储器(CAM)是一类用于特定的高速检索应用的存储器。通常而言,CAM 将输入的检索数据(简称为"键(key)"、"输入键"或者"检索键")与存储数据字的表进行比 较,并且返回对相匹配的字的指示。对相匹配的字的指示可以是相关的数据,或者可以被用 于获得相关的数据。二态CAM(BCAM)是最简单的一类CAM,其使用输入键来检索存储的数据 字,这些数据字完全由逻辑"Γ和"0"组成。三态CAM( TCAM)这类CAM允许第三种匹配状态"X" 或"不理会(don't care)",其中,对于与输入键进行比较的被存储的数据字而言,该第三种 匹配状态可以对应于每个存储数据字中的一位或多位。
[0003] 在可编程集成电路(1C)中可以实现TCAM。示例性的可编程1C包括复杂可编程逻辑 控制器件(CPLD)和现场可编程门阵列(FPGA)。一种类型的FPGA包括可编程片(tile)的阵 列。可编程片包括各种类型的逻辑块,而逻辑块例如可以包括输入/输出块(Ι0Β)、可配置逻 辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管 理器、延迟锁定回路(DLL)、诸如快速外围部件互连(PCIe)和以太网等的总线或网络接口。 每个可编程片典型地都包括可编程互连和可编程逻辑。可编程互连典型地包括大量不同长 度的互连线路,互连线路通过可编程互连点(PIP)相互连接。可编程逻辑使用可编程元件来 执行用户设计的逻辑,所使用的可编程元件例如可以包括函数发生器、寄存器、算术逻辑等 等。
[0004] 期望通过有效利用可用的资源在可编程IC (例如FPGA)中实现TCAM。

【发明内容】

[0005] 描述了用于提供基于复用器的三态内容寻址存储器(TCAM)的技术。在一个实施例 中,TCAM包括:输入端口,所述输入端口被耦接以接收W位的键(W-bit key)作为输入;以及 输出端口,所述输出端口被耦接以提供匹配向量作为输出。所述匹配向量包括至少一位。所 述TCAM进一步包括存储器,所述存储器具有存储单元,所述存储单元可操作以为N个W位的 TCAM字储存N*W个位对(pair of bits)。所述存储器包括多个存储器输出。所述TCAM进一步 包括至少一个比较电路。所述至少一个比较电路包括至少一个复用器,所述至少一个复用 器中的每个复用器被耦接以接收所述W位的键中的一位的实际版本和补码版本作为输入。 所述至少一个复用器中的每个复用器由所述多个存储器输出中的一对存储器输出进行控 制。所述至少一个比较电路进一步包括组合逻辑,所述组合逻辑被耦接以基于所述至少一 个复用器的输出执行至少一次逻辑"与"运算。
[0006] 在另一实施例中,可编程集成电路(1C)包括:配置存储器;以及可编程逻辑,所述 可编程逻辑包括分布式随机存取存储器(RAM)、可配置逻辑元件以及可编程互连元件,所述 可编程互连元件被耦接于所述可配置逻辑元件之间。所述可编程互连元件包括多个复用 器,所述多个复用器中的每个复用器具有多个输入和一个输出。所述多个复用器中的每个 复用器具有控制输入,所述控制输入耦接于控制复用逻辑。所述控制复用逻辑通过所述配 置存储器被配置为选择所述配置存储器的输出或者所述分布式RAM的输出,以控制所述复 用器。
[0007] 在另一实施例中,一种实现TCAM的方法包括:接收W位的键作为输入;提供匹配向 量作为输出,所述匹配向量包括由至少一个比较电路产生的至少一位;在存储器的存储单 元中为N个W位的TCAM字储存N*W个位对,所述存储器包括多个存储器输出;将所述W位的键 中的一位的实际版本和补码版本耦接于所述至少一个比较电路中的至少一个复用器中的 每个复用器,所述至少一个复用器中的每个复用器由所述多个存储器输入中相应一对存储 器输入进行控制;以及基于所述至少一个复用器的输出,执行至少一次"与"运算。
[0008] 通过参考下面详细的描述,可以理解本公开的这些方面和其他方面。
【附图说明】
[0009] 为了方便对上述特征的详细理解,通过参考示例性的实施方式可以获得在前文已 被简要概括的更为详细的描述,附图中示出了一些示例性的实施方式。然而应当注意,附图 仅示出了典型的示例性实施方式,因此不被视为限制了范围。
[0010] 图1A示出了 FPGA的示例性架构;
[0011] 图1B是根据一个实施例描绘了图1A的FPGA的更高层级视图的框图;
[0012]图2是描绘了示例性的TCAM系统的框图;
[0013]图3A是描绘了示例性的1 X 1的TCAM的框图;
[0014]图3B是描绘了图3A的1 X 1的TCAM的示例性实现方式的框图;
[0015]图4是描绘了示例性的2X2的TCAM的框图,通过扩展,其可以被推广为NX W的 TCAM;
[0016] 图5是描绘了图1A-1B中显示的FPGA的可编程结构的一部分的框图;
[0017] 图6A示出了在FPGA内的复用器的框图,该FPGA被配置成实现TCAM的一部分;
[0018]图6B示出了在FPGA内的另一复用器的框图,该FPGA被配置成实现TCAM的一部分; [0019]图7A中的框图示出了图4中的TCAM在可编程IC内的一个示例性实现方式;
[0020]图7B中的框图示出了图4中的TCAM在可编程IC内的另一个示例性实现方式;
[0021] 图8是描绘了TCAM的另一实施例的框图,该TCAM的深度是N并且宽度是2;
[0022] 图9是描绘了TCAM的另一实施例的框图,该TCAM的深度是2并且宽度是W;
[0023] 图10是描绘了实现TCAM的方法示例的流程图;
[0024] 为了便于理解,在可能的情况下,使用了相同的参考数字来标示附图中一致的相 同元件。可以预期的是,一个实施例中的元件可以被有益地并入其他实施例。
【具体实施方式】
[0025] 参考附图来描述以下各种特征。应当注意的是,附图可能是也可能不是按比例绘 制的,并且具有相似的结构或功能的元件在全部附图中由相似的参考数字表示。应当注意 的是,附图仅意图促进对特征的描述。其并非意图作为所请求保护的发明的详尽描述或者 作为所请求保护的发明的范围限制。此外,示出的实施例不需要具有所显示的全部方面或 优点。结合特定实施例进行描述的方面或优点不必限制于该实施例,并且尽管没有明示或 者没有进行详细描述,这些方面或优点也可以实施在任何其他实施例中。
[0026] 在此描述了用于提供基于复用器的三态内容寻址存储器(TCAM)的技术。在可编程 集成电路(1C)中,例如FPGA中,TCAM的一些实施例使用块随机存取存储器(RAM)或者分布式 RAM来存储表示TCAM数据字的数据。使用输入键来检索匹配向量,以对RAM进行寻址,匹配向 量确定了哪个存储的TCAM字匹配了输入键。在该实施例中,为了实现所有可能的状态(逻辑 "Γ、逻辑"0"和不理会"X"),需要每个TCAM位具有两个存储单元。输入键宽度的增加会使得 用于储存TCAM数据的存储单元的量多一倍。同样,随着键的宽度的增加,这种基于RAM的 TCAM的存储效率以指数形式降低。进一步地,可编程1C内的这种RAM可能具有最小尺寸(例 如,最浅的RAM可以是32字深)。同样,每个TCAM位的存储单元数量一般大于2(例如,假设32 字深的RAM,则每个TCAM位需要至少6个存储单元)。
[0027] 如在此描述的那样,可以使用可编程1C中的复用器逻辑来实现TCAM。复用器逻辑 的输入由输入键构成。储存的TCAM位被用于控制复用器逻辑。复用器逻辑的输出提供了匹 配向量,匹配向量指示哪些TCAM数据字匹配了输入键。对于本文中描述的基于复用器的 TCAM,每个TCAM位仅需要两个存储单元,这比上述基于RAM的TCAM更高效(例如,至少更高效 三倍)。
[0028] 图1A示出了FPGA 100的示例性架构,FPGA 100包括大量不同的可编程片,这些可 编程片包括千兆位收发器("MGT")101、可配置逻辑块("CLB")102、随机存取存储器块 ("BRAM")103、输入/输出块("Ι0Β")104、配置和时钟逻辑("C0NFIG/CL0CKS")105、数字信号 处理块("DSP")106、专用输入/输出块("I/O")107(例如,配置端口和时钟端口),以及其他 可编程逻辑108,例如数字时钟管理器、模数转换器、系统监测逻辑等。一些FPGA也包括专用 处理器块("PROCHllO。
[0029] 在一些FPGA中,每个可编程片包括至少一个可编程互连元件("INT")111,可编程 互连元件111具有与同一片内的可编程逻辑元件的输入输出端子120的连接,如图1A顶部包 括的示例所示。每个可编程互连元件111(也称为"互连元件111")还可以包括与同一片或者 其他片内的相邻可编程互连元件的互连段122的连接。每个可编程互连元件111还可以包括 与在逻辑块(未显示)之间的通用路由资源中的互连段124的连接。通用路由资源可以包括 位于逻辑块(未显示)之间的路由通道,后者包括互连段(例如,互连段124)的路径以及用于 连接互连段的开关块(未显示)。通用路由资源中的互连段(例如,互连段124)可以跨一个或 多个逻辑块。可编程互连元件111与通用路由资源合起来一起为所示出的FPGA实现了可编 程互连结构("可编程互连")。如下面进一步描述的那样,在一些实施例中,为了高效实现 TCAM,一些互连元件111或者全部互连元件111可以包括附加电路。
[0030] 在示例性的实施方式中,CLB 102可以包括可配置逻辑元件("0^")112,可配置逻 辑元件112可以被编程为执行用户逻辑加单个可编程互连元件("INT")111。除了包括一个 或多个可编程互连元件之外,BRAM 103可以包括BRAM逻辑元件(%1?1;')113。典型地,片内包 括的互连元件的数量取决于片的高度。在图示的实施例中,BRAM片具有的高度和5个CLB相 同,但是也可以使用其他的数量(例如,4个)。除了适当数量的可编程互连元件之外,DSP片 106可以包括03?逻辑元件("03?1;')114。除了可编程互连元件111的一个实例之外,1(?104 可以包括,例如,输入/输出逻辑元件("IOL")115的两个实例。本领域的技术人员十分清楚, 诸如被连接至I/O逻辑元件115的实际的I/O焊盘,典型地不会被限于输入/输出逻辑元件 115的区域内。
[0031] 在图示的实施例中,在基片(图1A所示)中部附近的水平区域被用作配置、时钟以 及其他控制逻辑。从该水平区域或水平列延伸出来的垂直列109被用于在FPGA宽度上分配 时钟信号和配置信号。
[0032] 利用图1A中所示架构的一些FPGA可以包括额外的逻辑块,这些额外的逻辑块会打 乱组成了大部分FPGA的规则的列状结构。额外的逻辑块可以是可编程块和/或专用逻辑。例 如,处理器块110可以跨越CLB和BRAM的几列。处理器块110可以包括各种部件,这些部件的 范围可以从单个微处理器到由微处理器、存储控制器、外围设备等组成的完整可编程处理 系统。
[0033]需要注意的是,图1A仅意图示出示例性的FPGA架构。例如,一行中逻辑块的数量、 行的相对宽度、行的数量和顺序、行中包括的逻辑块的类型、逻辑块的相对大小以及图1A顶 部包括的互连/逻辑实现方式都仅仅是示例性的。例如,在实际的FPGA中,无论CLB出现在哪 里,都典型地包括不止一相邻行的CLB,以有助于用户逻辑的高效实现,但是相邻CLB行的数 量随FPGA的整体大小而变化。在另一实施例中,FPGA可以包括整个处理系统(例如,处理器、 存储器、外围设备等),以作为处理器块110的替代或附加。在该实施方式中,片上系统(SoC) 可以包括与处理系统进行通讯的可编程结构(如FPGA 100中所示的可编程逻辑)。
[0034] 图1B是根据实施例描述了FPGA 100的更高层级的视图的框图。FPGA 100包括可编 程结构150,其可以包括上述各种可编程片。可编程结构150被耦接配置存储器152。配置存 储器152包括随机存取存储器(RAM),例如静态RAM(SRAM)等。配置存储器152装载有配置位 流(configuration bitstream),以用于对可编程结构150进行编程("配置")。例如,如在此 描述的那样,配置位流可以被装载进配置存储器152,以用于配置在可编程结构150内的 TCAM。在一些实施例中,FPGA 100内的至少一些CLE 112可以被配置为RAM。可以将这种RAM 横跨可编程结构150进行分配,并且通常被称为分布式RAM 154。可以使用一个或多个CLE 112来实现分布式RAM 154。
[0035] 在此描述的实施例中,可以在可编程1C中,例如FPGA 100中,实现基于复用器的 TCAM。被存储的用于TCAM的数据字可以被储存在FPGA 100的配置存储器152或者分布式RAM 154内。可以使用可编程互连元件111中的复用器以及CLE 112中的查找表(LUT)来执行比较 逻辑。下文首先描述基于复用器的TCAM的实施例,随后描述该基于复用器的TCAM在可编程 IC (例如FPGA 100)中的示例性的实现方式。
[0036] 图2是描绘了示例性的TCAM系统200的框图。TCAM系统200包括TCAM 202 JCAM 202 的输入端口 204的宽度为W位,并且被耦接以接收W位的输入键(其中W是大于0的整数hTCAM 202包括比较逻辑208,比较逻辑208被耦接于字存储器210。比较逻辑208包括至少一个比较 电路(如下所述),比较电路具有一个或多个复用器("复用器逻辑220"),复用器由字存储器 210的输出进行控制。比较逻辑208还包括组合逻辑222,组合逻辑222被耦接于复用器逻辑 220的输出。字存储器210包括X位的输出224,以向比较逻辑208提供X输出。字存储器210为N 个W位的TCAM字储存了位,其中N是大于0的整数。字存储器210可以是RAM,例如静态RAM (SRAM)、动态RAM(DRAM)等。
[0037] 具体地,字存储器210为N个TCAM字的每一位储存一对位(例如,N*W个位对(bit pair)或者2*N*W个位)。如上所述,TCAM字的位可以具有以下值:逻辑"1"、逻辑"0",或者不 理会"X"。因此,TCAM字的每一位都由字存储器210内的一对位来表示,字存储器210包括数 据位(data bit)和屏蔽位(mask bit)。数据位确定在一个TCAM字内的位是逻辑"1"还是逻 辑"〇"。屏蔽位确定在一个TCAM字内的位是否是不理会"X"。如果屏蔽位是逻辑"0",那么该 TCAM位的数值就是数据位的数值。如果屏蔽位是逻辑"1",那么该TCAM位的数值就是逻辑 T。
[0038]基于输入键以及储存在字存储器210内的位对,比较逻辑208在输出端口 206上输 出Y位的匹配向量,其中Y是大于0的整数。匹配向量指示出:在字存储器210中表示的N个 TCAM字中的哪一个匹配了输入键。
[0039] 在一个实施例中,X等于2*W*N,这使得字存储器210包括2*W*N个输出。例如,位对 218中的每一位可以被储存在存储单元中,其中存储单元被親接于比较逻辑208。在该实施 例中,可以将输入键与在字存储器210中表示的N个TCAM字进行比较,并且并行地生成N位的 匹配向量(例如,Y等于NhN位匹配向量内的逻辑"Γ指示正匹配(positive match),而在N 位的匹配向量内的逻辑"〇"指示负匹配(negative match)。
[0040] 在其他实施例中,字存储器210包括储存有X位的字的可寻址RAM,在一个实施例 中,每个X位的字表示一个W位的TCAM字,因此X等于2*W。字存储器210的深度等于N,以用于 表示N个TCAM字中的每个TCAM字。地址发生器216可被用于对字存储器210进行寻址,从而向 比较逻辑208提供一系列的2*W位的字。比较逻辑208将来自字存储器210的每个2*W位的字 (例如,表示一个TCAM字)与输入键进行比较,并且生成匹配向量。在该实施例中,匹配向量 包括一位(例如,Y等于1),该位指示出当前的TCAM字是否匹配了输入键。因此,输入键可以 依次与在字存储器210内表示的N个TCAM字进行比较。
[0041] 在另一实施例中,字存储器210的每个X位的字都表示N个TCAM字的一位,因此X等 于2*N。字存储器210的深度等于W,以表示W位的TCAM字的每一位。地址发生器216可被用于 对字存储器210进行寻址,从而向比较逻辑208提供一系列的2*N位的字。比较逻辑208可以 使W位的输入键串行化(或者,W位的输入键可以作为串行位流而被提供给比较逻辑208),并 且将输入键的每一位与N个TCAM字中相应位进行比较,并且生成匹配向量。在该实施例中, 匹配向量包括N位(例如,Y等于N),每一位针对于N个TCAM字的一个TCAM字。因此,输入键可 以依次与在字存储器210内表示的N个TCAM字的W位进行比较。
[0042] Y位的匹配向量可以被用作TCAM 202的输出。可供选择地,Y位的匹配向量可以被 用于从外部数据存储器214获得附加数据。附加数据可以包括对应于TCAM字的数据字。 [0043]在一个实施例中,TCAM 202包括优先编码器212,优先编码器212被耦接于输入端 口 206。优先编码器212接收一个或多个Y位的匹配向量,并且生成地址(匹配地址)。如果字 存储器210是可寻址RAM,那么优先编码器212可以包括地址发生器216。否则地址发生器216 可以被省略。匹配地址可以被耦接于外部数据存储器214的地址端口,以用于检索数据。通 过这种方式,可以获得与输入键相联系的数据。Y位的匹配向量可以指示多个正匹配(例如, N个TCAM字中的多个TCAM字可以匹配一个给定的输入键)。优先编码器212可以相对于匹配 TCAM字中的其他匹配TCAM字将优先权给予匹配TCAM字中的一个TCAM字,并且相应地生成针 对外部数据存储器214的匹配地址。通过这种方式,来自外部数据存储器214的针对给定输 入键的数据输出,与具有最高优先权的给定的TCAM字相联系。在另一实施例中,如果字存储 器210是可寻址RAM,并且可寻址RAM具有2*W位的字,而2*W位的字中的每个字表示一个TCAM 字,那么优先编码器212可以控制地址发生器216以对字存储器210进行寻址,直到发现第一 次匹配。
[0044] 图3A是描绘了示例性的1 X 1的TCAM的框图。图3B是描绘了图3A中1 X 1的TCAM的示 例性实施方式的框图。如图3A所示,1位的输入键K[0]被输入到比较函数304。存储位置302 储存1位TCAM字的位Τ[0]。位Τ[0]可以是逻辑"1"、逻辑"0"和不理会"X"。输入键Κ[0]可以是 逻辑"Γ或者逻辑"0"。如果输入键Κ[0]匹配TCAM字Τ[0],或者如果TCAM字Τ[0]是不理会 "X",那么比较函数304输出逻辑"Γ。如果输入键Κ[0]不匹配TCAM字Τ[0],那么比较函数304 输出逻辑"0"。
[0045] 如图3Β所示,可以使用复用器306以及一对存储器输出308Μ和308D(共同组成存储 器输出308)来实现图3A的1 X 1的TCAM。存储器输出308中的每个输出提供一位。存储器输出 308M提供TCAM字的位T [ 0 ]的屏蔽位。存储器输出308D提供TCAM字的位T [ 0 ]的数据位。屏蔽 位和数据位被储存在具有存储器输出308的存储器310内。
[0046]在示出的实施例中,复用器306包括四个输入,也就是包括第一输入、第二输入、第 三输入和第四输入,第一输入被耦接以接收输入键K[0]的补码(输入键的补码版本),第二 输入被耦接以接收输入键Κ[0 ](输入键的实际版本),第三输入不连接(NC)(或以其他方式 被忽略),第四输入被耦接以接收恒定的逻辑"Γ。在另一实施例中,不与复用器306的输入 相连接的第三输入可以被忽略,从而复用器306可以包括三个输入。可供选择地,复用器306 的第三和第四输入两者都可以被耦接以接收恒定的逻辑"1",这实际上将四输入的复用器 转变成三输入的复用器。复用器306包括两个控制输入,一个被耦接以接收由存储器输出 308Μ提供的屏蔽位,而另一个被耦接以接收由存储器输出308D提供的数据位。复用器306提 供匹配输出。
[0047]复用器306根据下表进行操作:
[0048]表 1
[0051 ] MD位对"00"、"01"和"11"表示出了一个TCAM位的"0"、"Γ和"不理会"。在一些实施 例中,MD位对"10"不被使用。在其他实施例中,MD位对"10"也可以表示出针对TCAM位的"不 理会"。相应地,对于"0Γ的MD,输出是K[0]。对于"00"的MD,输出是~K[0]。对于"1Γ (或者 "1 〇")的MD,输出是恒定的逻辑T。
[0052]图3B中示出的1 X 1的TCAM的实现方式可以被扩展至一般的N X W的TCAM,其中N是 TCAM的深度,而W是TCAM的宽度。此外,可以使用具有可单独访问的存储单元的字存储器或 者使用可寻址字存储器来实现这种NX W的TCAM。
[0053]图4是描绘了示例性的TCAM 400的框图,TCAM 400所具有的深度是2,宽度是2。 TCAM 400包括对比较逻辑208和字存储器210的具体实现,其中字存储器210具有可单独访 问的存储单元。如下面实施例所描述的,这种字存储器可以被包括在可编程1C内,例如 FPGA。本领域的技术人员可以理解,基于下面对2X2的TCAM的描述,TCAM 400可以被扩展至 深度是N且宽度是W的一般情况。
[0054] TCAM 400包括比较电路402〇和402!(共同组成比较电路402)。比较电路402执行比 较逻辑208。比较电路402的数量对应于TCAM 400的深度(例如,储存在TCAM 400内的字的数 量)。因此,在本实施例中,对于深度为N = 2的TCAM字,存在两个比较电路402。比较电路402〇 包括复用器404Q,〇、复用器404 Q,i以及"与"门410〇。类似地,比较电路402!包括复用器4041>0、 复用器404 1;1以及"与"门41(h。复用器404Q,Q至4041;1共同地被称作"复用器404"。通常而言, 比较电路402中的每个比较电路都包括W个复用器,其中W是TCAM 400的宽度。因此,在本实 施例中,针对TCAM字的宽度为W=2,存在两个复用器404。"与"门410〇和"与"门410!共同地被 称作"组合逻辑410"。
[0055] 在第一 TCAM字406〇的比较电路402〇中,复用器404Q,Q由第一 TCAM字406〇的最低有效 位(LSB) (TCAM位406Q,Q)进行控制。如上所述,在存储器中,TCAM字的每一位都使用屏蔽位/ 数据位对来表示。TCAM位406Q,Q的屏蔽位和数据位被分别储存在存储单元4081^^4080:中。 复用器404(u由第一 TCAM字406〇的最高有效位(1^)(^^位406〇,1)进行控制。1^1位4060, 1 的屏蔽位和数据位被分别储存在存储单元408M#P408D2中。
[0056] 在第二TCAM字406!的比较电路402冲,复用器4041>()由第二TCAM字406^LSB(TCAM 位4061>())进行控制。TCAM位4061>()的屏蔽位和数据位被分别储存在存储单元408M 3和408D3 中。复用器4041;1由第二TCAM字406^MSB(TCAM位4061;1)进行控制。TCAM位406 1;1的屏蔽位 和数据位被分别储存在存储单元408M4和408D4中。存储单元40801至408〇4以及存储单元 4081 1至408114共同地被称作"存储单元408"。存储单元408是字存储器210内的存储单元。 [0057]在比较电路402〇中,"与"门410〇将两个1 X 1的基于复用器的TCAM具体实现(例如, 图3B中TCAM具体实现的两个实例)的输出组合在一起。复用器404Q, Q接收检索键K[0]的第一 位的实际版本和补码版本,而复用器404Q,i接收检索键K[l]的第二位的实际版本和补码版 本。通常,针对宽度为W位的TCAM,检索键(检索关键字)包括W位。因此,在本实施例中,检索 键包括两位Κ[0]和K[l]。复用器404 1>()和4041;1分别接收检索键Κ[0]的实际版本和补码版本 以及检索键K[l]的实际版本和补码版本。复用器404 q,q和404Q,i的输出被耦接于"与"门410〇 的输入。复用器404U和404 1;1的输出被耦接于"与"门41(^的输入。
[0058] "与"门410〇输出第一匹配位M[0],"与"门410^出第二匹配位M[l]。通常,匹配位 向量包括N位,每一位针对于N个TCAM字中的一个TCAM字。如果检索键K[ 1:0 ]分别匹配第一 TCAM字406〇的TCAM位406Q,〇和406Q,!,那么"与"门410〇输出逻辑"Γ,否则输出逻辑"0"。如果 检索键K[1:0]分别匹配第二TCAM字406j^TCAM位406 1>()和4061;1,那么"与"门410411出逻辑 "Γ,否则输出逻辑"〇"。每个复用器404按照上面有关图3Α的描述进行操作。
[0059] TCAM 400可以被推广以形成Ν X W的TCAM。Ν X W的TCAM包括Ν个比较电路402。在Ν X W的TCAM中,每个比较电路402都包括W个复用器404。每个复用器由储存在存储单元408内的 特定的位对进行控制。N X W的TCAM需要2*N*W个存储单元408。N X W的TCAM的组合逻辑410执 行N个逻辑"与"运算。匹配位向量Μ包括N位,每一位针对于N个TCAM字中的一个TCAM字。
[0060] TCAM 400或者经推广的NXW版本的TCAM 400可以被用在图2中的TCAM 202内。比 较逻辑208包括复用器404和组合逻辑410。字存储器210包括存储单元408。组合逻辑410的 输出在输出端口 206上提供N位的匹配向量。因此,TCAM 400或者经推广的N X W版本的TCAM 400也可以被耦接于优先编码器212,优先编码器212对外部数据存储器214进行寻址,如图2 所示。
[0061] 图5是描绘了 FPGA 100的可编程结构150的平面布局的框图,其可被用于实现在此 描述的基于复用器的TCAM。图5显示了在可编程结构150内的可编程片的两个列502和506。 列502和506内的可编程片包括CLE 112。在列502和506的每个中,只示出了一个CLE 112,但 是列502和506通常包括多个CLE。每个CLE 112都被耦接于互连元件111。
[0062] 每个CLE 112包括四个片段(slice)SMl-SMO和SL0-SL1。片段SM0-SM1是一种类型 (类型"M"),片段SL0-SL1是另一种类型(类型"L")。类型Μ的片段SM0和SM1包括查找表(LUT) 508和支持逻辑5KLLUT 508可以被配置作为函数发生器,以用于执行具有多个输入和多个 输出的任何组合函数。LUT 508也可以被配置成作为LUT-RAM,LUT-RAM被配置成存储多个 位。支持逻辑510可以包括能够支持LUT 508的触发器、复用器、进位链逻辑等等。类型"L"的 片段SL0和SL1包括LUT 512和支持逻辑5HLLUT 512可以被配置成作为函数发生器,但不作 为LUT-RAM。图5中的架构只是一个实施例。在其他实施例中,CLE 112中的所有LUT可能都包 括LUT-RAM(每个片段都是类型"M"的),或者CLE 112中的所有LUT可能都包括不能被配置成 RAM的LUT(每个片段都是类型"L"的)。
[0063]在该实施例中,列502内的类型"L"的片段SL0和SL1与列506内的类型"M"的片段 SM0和SM1相邻,在两者之间具有两个互连单元111。列502内的片段SL0-SL1被耦接于互连元 件111中的一个,列506内的片段SM0-SM1被耦接于互连元件111中的另一个。互连元件111可 以相互耦接。每个互连元件111都包括复用器514。不同的复用器514可以具有不同的输入, 例如来自列502中的CLE 112的输入、来自列506中的CLE 112的输入、来自另一互连元件111 内的复用器514的输入、或者来自互连的输入。同样地,不同的复用器514可以具有不同的输 出,例如去往列502内的CLE 112的输出、去往列506内的CLE 112的输出、去往另一互连元件 111的输出、或者去往互连的输出。
[0064] 可以在可编程结构150内实现TCAM 400(或者其经推广的NXW的版本)。可以使用 互连元件111内的复用器514来实现复用器404。可以使用在列502中类型"L"的片段内的LUT 112来实现组合逻辑410。在一种实现方式中,存储单元408包括配置存储器152的储存单元, 其被耦接于复用器514。在另一种实现方式中,存储单元408包括分布式RAM 154的存储单 元,其使用在列506中类型"M"的片段内的LUT 508来实现。
[0065] 在另一实施例中,可以使用附加至可编程结构150的片之内的复用器来实现复用 器404。也就是说,可编程结构150可以包括在一个或多个复用器片内的专用复用器,而不是 使用在互连元件111内的复用器514。因此,在图5的环境中,在一些实施例中,为了实现TCAM 400,互连元件111可以由具有复用器514的复用器片来替换。
[0066] 图6A是示出了在FPGA 100内的复用器514的框图,其被配置成实现TCAM的一部分。 复用器514被配置成如图3B中的实现方式所显示的那样。给定TCAM位的屏蔽位和数据位分 别被储存在存储单元602jP602 2中,其是配置存储器152的一部分。在这种实现方式中,TCAM 数据字被储存在配置存储器152内。
[0067] 图6B是示出了在FPGA 100内的复用器514'的框图,其被配置成实施TCAM的一部 分。复用器514'被配置成如图3B中的实现方式所显示的那样。复用器514'包括附加控制复 用器逻辑606,以用于实现"快速更新(fast-update)"模式。在图6A显示的实现方式中,通过 在适当的存储单元中将新的数据加载到配置存储器152,对TCAM数据字进行更新。在图6B显 示的实现方式中,通过将新的数据加载到分布式RAM 154,对TCAM数据字进行更新。特别地, 控制复用器逻辑606对配置存储器152内的存储单元602jP6022或者分布式RAM 154内的存 储单元604jP6042是否被耦接于控制复用器514'进行控制。在配置存储器152内的存储单元 6023可以储存位,该位可以确定配置存储器152或者分布式RAM 154是否被提供到复用器 514'的控制端口。对分布式RAM 154的更新可以快于对配置存储器152的更新,这使得在图 6B的实现方式中对TCAM数据字的更新更快。
[0068] 图7A是示出了TCAM 400(或者TCAM 400的NXW的经推广的版本)在可编程1C内(例 如FPGA 100内)的示例性实现方式700的框图。TCAM的实现方式700包括组合逻辑410,后者 使用类型"L"的片段逻辑702来实现。在类型"L"的片段逻辑702内的LUT被用于实现"与"门 逻辑。在另一实施例中,由于在类型"M"的片段逻辑中的LUT也可以实施"与"门逻辑,所以可 以使用类型"M"的片段逻辑来实现组合逻辑410。如上所述,可以在互连逻辑或者专用复用 器逻辑704中实现复用器404。互连逻辑或者专用复用器逻辑704包括附加控制逻辑(例如, 控制复用器逻辑606),附加控制逻辑使得在此的复用器可以由分布式RAM单元进行控制。可 以使用类型"M"的片段逻辑706来实现存储单元408,该存储单元408储存了表示TCAM位的位 对。类型"M"的片段逻辑706内的LUT被用作LUT-RAM,以实现分布式RAM。
[0069] 图7B是示出了TCAM 400(或者TCAM 400的NXW的经推广的版本)在可编程1C(例如 FPGA 100)内的示例性实现方式701的框图。TCAM的实现方式701与TCAM的实现方式700相 似,但是存储单元408在配置存储器152内实现,而不是在分布式RAM 154内实现。
[0070] 图8是描绘了TCAM 800的另一实施例的框图,其中TCAM 800的深度是N并且宽度是 2JCAM 800包括对比较逻辑208和字存储器210的具体实现,其中字存储器210是可寻址 RAM。本领域的技术人员可以理解,基于下面对NX 2的TCAM的描述,TCAM 800可以被扩展至 深度为N且宽度为W的一般情况。
[0071] TCAM 800包括比较电路802,比较电路802被耦接于字存储器210。字存储器210存 储4位的RAM字808ι至808n(共同地组成RAM字808)。每个RAM字808表示一个TCAM字。同样地, 每个RAM字808针对TCAM字的每一位都包括一对位(M,D),以使得每个4位RAM字808表示2位 的TCAM字T[ 1:0]。字存储器210包括4位的输出D[3:0]。
[0072]比较电路802包括复用器804〇和80也(共同组成复用器804)以及"与"门806(或者执 行逻辑"与"运算的一些组合逻辑)。复用器804是图3B中显示的复用器306的具体实现。复用 器804〇的第一和第二端子接收输入键的位K[0]的补码版本和实际版本。复用器80和的第一 和第二端子接收输入键的位K[l]的补码版本和实际版本。每个复用器804的第三和第四端 子接收恒定的逻辑"Γ (或者可以不连接第三端子)。复用器804的输出被耦接于"与"门806 的输入。"与"门806的输出提供了匹配输出Μ。位D[0]和D[l]控制复用器804〇,位D[2]和D[3] 控制复用器80如。
[0073] 在操作中,地址发生器216对字存储器210进行寻址,以输出表示TCAM字的RAM字 808。由D [ 1: 0 ]提供的TCAM位T [ 0 ]的位对(Μ,D)对复用器804〇进行控制,由D [ 3 : 2 ]提供的 TCAM位T[l]的位对(M,D)对复用器8041进行控制。地址发生器216可以生成字存储器210的 多个地址,以将输入键与多个TCAM字依次进行比较。当发现至少一次匹配时,地址发生器 216可以停止生成地址。对于每次比较,匹配位Μ指示了正匹配或负匹配。输入键与TCAM字的 完整比较需要Ν个生成的地址。通过复制增加附加的复用器804并且将字存储器210的输出 扩展至D[W-1:0],TCAM 800可以被扩展至支持W位的TCAM字。
[0074]图9是描绘了TCAM 900的另一实施例的框图,其中TCAM 900的深度是2并且宽度是 ITCAM 900包括对比较逻辑208和字存储器210的具体实现,其中字存储器210是可寻址 RAM。本领域的技术人员可以理解,基于下面对2 XW的TCAM的描述,TCAM 800可以被扩展至 深度为N并且宽度为W的一般情况。
[0075] TCAM 900包括比较电路902〇和902!(共同组成比较电路902),比较电路902被耦接 于字存储器210。字存储器210存储4位的RAM字9081至90办(共同组成RAM字908)。每个RAM字 908表示两个TCAM字930dP930 2的给定的位。同样地,每个RAM字908针对TCAM字的每一位都 包括一对位(M,D),以使得每个4位RAM字908表示两个TCAM字930dP930 2的给定的位T。例如, RAM字908ι包括表示每个TCAM字930ι和9302的位TtOLRAM字908w表示每个TCAM字930ι和9302 的位T [ W-1 ]。字存储器210包括4位的输出D [ 3:0 ]。
[0076]比较电路902〇包括复用器904〇、"与"门906〇(或者执行逻辑"与"运算的一些组合逻 辑)以及锁存器920〇。复用器904〇的第一和第二输入被耦接于移位寄存器922的输出。移位寄 存器922输出所述输入键的串行位流。复用器904〇的第三和第四端子被耦接以接收恒定的 逻辑"Γ (或者可以不连接第三端子)。复用器904〇的输出被耦接于"与"门906〇的输入。"与" 门906〇的输出被耦接于锁存器920〇并且提供匹配向量的位M[0]。锁存器920〇的输出被耦接 于"与"门906〇的另一输入。锁存器920〇的时钟端口被耦接以接收来自时钟924的时钟信号。 [0077]比较电路902:包括复用器90如、"与"门906:(或者执行逻辑"与"运算的一些组合逻 辑)以及锁存器92(h。复用器90也的第一和第二输入被耦接于移位寄存器922的输出。复用器 90和的第三和第四端子被耦接以接收恒定的逻辑"Γ (或者可以不连接第三端子)。复用器 90也的输出被耦接于"与"门906:的输入。"与"门9064^输出被耦接于锁存器920 1并且提供 匹配向量的位Μ[ 1 ]。锁存器92(h的输出被耦接于"与"门906!的另一输入。锁存器92(h的时钟 端口被耦接以接收来自时钟924的时钟信号。
[0078] 复用器904〇和90如(共同组成复用器904)是对图3B中示出的复用器306的具体实 现。位D[0]和D[l]对复用器904〇进行控制,位D[2]和D[3]对复用器90也进行控制。
[0079] 在操作中,地址发生器216对字存储器210进行寻址以输出RAM字908,RAM字908表 示两个TCAM字930dP9302中的每个TCAM字的位。由D[1:0]提供的针对第一 TCAM字930!的位 对(M,D)对复用器904〇进行控制,由D[3:2]提供的针对第二TCAM字9302的位(M,D)对复用器 训如进行控制。地址发生器216可以生成针对字存储器210的多个地址,以将输入键的位与 多个TCAM字的相相应位依次进行比较。输入键与TCAM字的完整比较需要W个生成的地址。通 过复制比较电路902并且将字存储器210的输出扩展至D[N-1:0],TCAM 900可以被扩展至支 持N个TCAM字。
[0080]图10是描绘了实现TCAM的示例性方法1000流程图。方法1000内的操作不意指任何 特定的顺序。方法1000开始于操作1002,其中W位的键作为输入而被接收。在操作1004,提供 了由至少一个比较电路生成的匹配向量作为输出。匹配向量可以包括至少一位。在一个实 施例中,至少一个比较电路可以被配置在可编程1C内。
[0081] 在操作1006,N*W个位对被储存在存储器内,其表示了N个W位的TCAM字。如上所述, 存储器可以是可编程1C的配置存储器或者可编程1C内的分布式RAM。在一些实施例中,存储 器可以是可寻址RAM。
[0082] 在操作1008,W位输入键中各个位的实际版本和补码版本被耦接于至少一个比较 电路中的W个复用器的各个复用器。在操作1009,W个复用器中的各个复用器都由相应的一 对存储器输出进行控制。在可选择的操作1016,生成地址以用于存储器。在操作1010,对W个 复用器的输出进行逻辑"与"。
[0083] 方法1000可以包括操作1012,其中响应于匹配向量而生成地址。在操作1014,使用 所述地址从数据存储器获得数据。
[0084]虽然上述内容针对特定的实施例,但是在没有背离其基本范围的情况下,可以构 想出其他的实施例和进一步的实施例,并且其范围是通过权利要求确定的。
【主权项】
1. 一种三态内容寻址存储器(TCAM)电路,包括: 输入端口,所述输入端口被耦接以接收W位的键作为输入; 输出端口,所述输出端口被耦接以提供匹配向量作为输出,所述匹配向量包括至少一 位; 存储器,所述存储器具有多个存储单元,所述多个存储单元可操作以为N个W位的TCAM 字储存N*W个位对,所述存储器包括多个存储器输出; 至少一个比较电路,所述至少一个比较电路包括: 至少一个复用器,所述至少一个复用器中的每个复用器被耦接以接收所述W位的键中 的一位的实际版本和补码版本作为输入,所述至少一个复用器中的每个复用器由所述多个 存储器输出中的一对存储器输出进行控制;以及 组合逻辑,所述组合逻辑被耦接以基于所述至少一个复用器的输出执行至少一次逻辑 "与,,运算。2. 如权利要求1所述的TCAM电路,其中所述至少一个复用器中的每个复用器包括四输 入复用器,所述四输入复用器具有第一输入、第二输入、第三输入和第四输入,其中,所述第 一输入被耦接以接收所述W位的键中相应位的实际版本,所述第二输入被耦接以接收所述W 位的键中所述相应位的补码版本,所述第三输入未被连接或被耦接以接收恒定的逻辑"高" 位,所述第四输入被耦接以接收所述恒定的逻辑"高"位。3. 如权利要求1所述的TCAM电路,其中所述至少一个比较电路包括N个比较电路,其中 所述至少一个复用器包括N*W个复用器,其中所述N个比较电路中的每个比较电路包括所述 N*W个复用器中的W个复用器,并且其中控制着N*W个复用器中的每个复用器的一对存储器 输出被親接于所述多个存储单元中相应一对存储单元。4. 如权利要求1所述的TCAM电路,其中所述至少一个比较电路包括单个比较电路,其中 所述至少一个复用器包括所述单个比较电路中的W个复用器,其中所述多个存储器输出包 括2*W个存储器输出,其中控制着W个复用器中的各个复用器的一对存储器输出被耦接于所 述2*W个存储器输出中相应一对存储器输出,并且其中所述TCAM电路进一步包括: 地址发生器,所述地址发生器被耦接于所述存储器。5. 如权利要求1所述的TCAM电路,其中所述至少一个比较电路包括N个比较电路,其中 所述至少一个复用器包括N个复用器,其中所述N个比较电路中的每个比较电路包括所述N 个复用器中相应一个复用器,其中所述多个存储器输出包括2*N个存储器输出,其中控制着 所述N个复用器中的各个复用器的一对存储器输出被耦接于所述2*N个存储器输出中相应 一对存储器输出,并且其中所述TCAM电路进一步包括: 地址发生器,所述地址发生器被耦接于所述存储器。6. 如权利要求1所述的TCAM电路,其中还包括: 优先编码器,所述优先编码器被耦接于所述输出端口,以接收所述匹配向量。7. 如权利要求6所述的TCAM电路,其中还包括: 数据存储器,所述数据存储器具有地址端口,所述地址端口被耦接于所述优先编码器; 其中所述优先编码器可操作为基于所述匹配向量为所述数据存储器生成地址。8. 如权利要求1所述的TCAM电路,其中所述至少一个复用器包括可编程集成电路(1C) 的互连片中的多个复用器的至少一部分,并且其中所述组合逻辑在所述可编程1C中通过查 找表(LUT)逻辑来实现。9. 如权利要求8所述的TCAM电路,其中所述存储单元包括所述可编程1C的配置存储器 的一部分。10. 如权利要求8所述的TCAM电路,其中所述存储单元包括所述可编程1C的分布式存储 器的一部分。11. 一种可编程集成电路(1C),包括: 配置存储器;以及 可编程逻辑,所述可编程逻辑包括分布式随机存取存储器(RAM)、可配置逻辑元件以及 可编程互连元件,所述可编程互连元件被耦接于所述可配置逻辑元件之间; 其中所述可编程互连元件包括多个复用器,每个复用器具有多个输入和一个输出; 其中所述多个复用器中的每个复用器具有控制输入,所述控制输入被耦接于控制复用 逻辑,所述控制复用逻辑通过所述配置存储器被配置为选择所述配置存储器的输出或者所 述分布式RAM的输出以控制所述复用器。12. 如权利要求11所述的可编程1C,其中所述配置存储器对位流进行存储,以用于配置 所述可编程逻辑中的三态内容寻址存储器(TCAM),所述TCAM包括: 输入端口,所述输入端口被耦接以接收W位的键作为输入; 输出端口,所述输出端口被耦接以提供N位匹配向量作为输出; 所述分布式RAM的多个存储单元,所述多个存储单元可操作以为N个W位的TCAM字储存 N*W个位对; N个比较电路,所述N个比较电路中的每个比较电路被耦接以输出所述N位匹配向量中 的相应位,所述N个电路中的每个电路包括: 所述多个复用器中的W个复用器,所述W个复用器中的每个复用器接收所述W位的键中 相应位的实际版本和补码版本作为输入,所述W个复用器中的每个复用器由所述N*W个位对 中的相应一对进行控制;以及 组合逻辑,所述组合逻辑被配置为在至少一个所述可配置逻辑元件中对所述W个复用 器的输出进行逻辑"与",从而提供所述N位匹配向量中的相应位。13. 如权利要求12所述的可编程1C,其中所述W个复用器中的每个复用器包括四输入复 用器,所述四输入复用器具有第一输入、第二输入、第三输入和第四输入,其中,所述第一输 入被耦接以接收所述W位的键中相应位的实际版本,所述第二输入被耦接以接收所述W位的 键中所述相应位的补码版本,所述第三输入未被连接或被耦接以接收恒定的逻辑"高"位, 所述第四输入被耦接以接收所述恒定的逻辑"高"位。14. 如权利要求12所述的可编程1C,其中在所述N个电路的每个电路中的所述组合逻辑 在平面布局的第一列中被配置为多个所述可配置逻辑元件,其中所述存储单元位于所述平 面布局的第二列中,并且其中在所述N个电路的每个电路中的所述W个复用器被布置于第一 列和第二列之间。15. 如权利要求14所述的可编程1C,其中在所述N个电路的每个电路中的所述组合逻辑 被配置为第一类型的所述可配置逻辑元件,并且其中所述存储单元被配置为第二类型的所 述可配置逻辑元件。16. -种实现三态内容寻址存储器(TCAM)的方法,包括: 接收W位的键作为输入; 提供匹配向量作为输出,所述匹配向量包括由至少一个比较电路产生的至少一位; 在存储器的多个存储单元中为N个W位的TCAM字储存N*W个位对,所述存储器包括多个 存储器输出; 将所述W位的键中的各位的实际版本和补码版本耦接于在所述至少一个比较电路中的 至少一个复用器中的各个复用器,所述至少一个复用器中的各个复用器由所述多个存储器 输出中相应一对存储器输出进行控制;以及 基于所述至少一个复用器的输出,执行至少一次"与"运算。17. 如权利要求16所述的方法,其中所述至少一个复用器中的每个复用器包括四输入 复用器,所述四输入复用器具有第一输入、第二输入、第三输入和第四输入,其中,所述第一 输入被耦接以接收所述W位的键中相应位的实际版本,所述第二输入被耦接以接收所述W位 的键中所述相应位的补码版本,所述第三输入未被连接或被耦接以接收恒定的逻辑"高" 位,所述第四输入被耦接以接收所述恒定的逻辑"高"位。18. 如权利要求16所述的方法,其中所述方法进一步包括: 响应于所述匹配向量,生成地址;以及 使用所述地址从数据存储器获取数据。19. 如权利要求16所述的方法,其中所述存储单元包括所述可编程1C的配置存储器的 一部分。20. 如权利要求16所述的方法,其中所述存储单元包括所述可编程1C内的分布式存储 器的一部分。
【文档编号】G11C15/04GK106024056SQ201610184890
【公开日】2016年10月12日
【申请日】2016年3月29日
【发明人】P·迈德
【申请人】赛灵思公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1