CN106024056A - 基于复用器的三态内容寻址存储器 - Google Patents
基于复用器的三态内容寻址存储器 Download PDFInfo
- Publication number
- CN106024056A CN106024056A CN201610184890.5A CN201610184890A CN106024056A CN 106024056 A CN106024056 A CN 106024056A CN 201610184890 A CN201610184890 A CN 201610184890A CN 106024056 A CN106024056 A CN 106024056A
- Authority
- CN
- China
- Prior art keywords
- multiplexer
- tcam
- input
- coupled
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
- G11C15/046—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
Abstract
在一个实施例中,一种三态内容寻址存储器(TCAM),包括:输入端口,其被耦接以接收W位的键作为输入;输出端口,其被耦接以提供匹配向量作为输出,所述匹配向量包括至少一位。所述TCAM进一步包括存储器,所述存储器具有存储单元,所述存储单元可操作以为N个W位的TCAM字储存N*W个位对。所述存储器包括多个存储器输出。所述TCAM进一步包括至少一个比较电路。所述至少一个比较电路包括至少一个复用器,所述至少一个复用器中的各个复用器被耦接以接收所述W位的键中的一位的实际版本和补码版本作为输入。所述至少一个复用器中的各个复用器由所述多个存储器输出中的一对存储器输出进行控制。所述至少一个比较电路进一步包括组合逻辑,所述组合逻辑被耦接以基于所述至少一个复用器的输出执行至少一次逻辑“与”运算。
Description
技术领域
概括地说,本公开的实施例涉及电子电路,具体而言,涉及基于复用器的三态内容寻址存储器(TCAM)。
背景技术
内容寻址存储器(CAM)是一类用于特定的高速检索应用的存储器。通常而言,CAM将输入的检索数据(简称为“键(key)”、“输入键”或者“检索键”)与存储数据字的表进行比较,并且返回对相匹配的字的指示。对相匹配的字的指示可以是相关的数据,或者可以被用于获得相关的数据。二态CAM(BCAM)是最简单的一类CAM,其使用输入键来检索存储的数据字,这些数据字完全由逻辑“1”和“0”组成。三态CAM(TCAM)这类CAM允许第三种匹配状态“X”或“不理会(don’t care)”,其中,对于与输入键进行比较的被存储的数据字而言,该第三种匹配状态可以对应于每个存储数据字中的一位或多位。
在可编程集成电路(IC)中可以实现TCAM。示例性的可编程IC包括复杂可编程逻辑控制器件(CPLD)和现场可编程门阵列(FPGA)。一种类型的FPGA包括可编程片(tile)的阵列。可编程片包括各种类型的逻辑块,而逻辑块例如可以包括输入/输出块(IOB)、可配置逻辑块(CLB)、专用随机存取存储器块(BRAM)、乘法器、数字信号处理块(DSP)、处理器、时钟管理器、延迟锁定回路(DLL)、诸如快速外围部件互连(PCIe)和以太网等的总线或网络接口。每个可编程片典型地都包括可编程互连和可编程逻辑。可编程互连典型地包括大量不同长度的互连线路,互连线路通过可编程互连点(PIP)相互连接。可编程逻辑使用可编程元件来执行用户设计的逻辑,所使用的可编程元件例如可以包括函数发生器、寄存器、算术逻辑等等。
期望通过有效利用可用的资源在可编程IC(例如FPGA)中实现TCAM。
发明内容
描述了用于提供基于复用器的三态内容寻址存储器(TCAM)的技术。在一个实施例中,TCAM包括:输入端口,所述输入端口被耦接以接收W位的键(W-bit key)作为输入;以及输出端口,所述输出端口被耦接以提供匹配向量作为输出。所述匹配向量包括至少一位。所述TCAM进一步包括存储器,所述存储器具有存储单元,所述存储单元可操作以为N个W位的TCAM字储存N*W个位对(pair of bits)。所述存储器包括多个存储器输出。所述TCAM进一步包括至少一个比较电路。所述至少一个比较电路包括至少一个复用器,所述至少一个复用器中的每个复用器被耦接以接收所述W位的键中的一位的实际版本和补码版本作为输入。所述至少一个复用器中的每个复用器由所述多个存储器输出中的一对存储器输出进行控制。所述至少一个比较电路进一步包括组合逻辑,所述组合逻辑被耦接以基于所述至少一个复用器的输出执行至少一次逻辑“与”运算。
在另一实施例中,可编程集成电路(IC)包括:配置存储器;以及可编程逻辑,所述可编程逻辑包括分布式随机存取存储器(RAM)、可配置逻辑元件以及可编程互连元件,所述可编程互连元件被耦接于所述可配置逻辑元件之间。所述可编程互连元件包括多个复用器,所述多个复用器中的每个复用器具有多个输入和一个输出。所述多个复用器中的每个复用器具有控制输入,所述控制输入耦接于控制复用逻辑。所述控制复用逻辑通过所述配置存储器被配置为选择所述配置存储器的输出或者所述分布式RAM的输出,以控制所述复用器。
在另一实施例中,一种实现TCAM的方法包括:接收W位的键作为输入;提供匹配向量作为输出,所述匹配向量包括由至少一个比较电路产生的至少一位;在存储器的存储单元中为N个W位的TCAM字储存N*W个位对,所述存储器包括多个存储器输出;将所述W位的键中的一位的实际版本和补码版本耦接于所述至少一个比较电路中的至少一个复用器中的每个复用器,所述至少一个复用器中的每个复用器由所述多个存储器输入中相应一对存储器输入进行控制;以及基于所述至少一个复用器的输出,执行至少一次“与”运算。
通过参考下面详细的描述,可以理解本公开的这些方面和其他方面。
附图说明
为了方便对上述特征的详细理解,通过参考示例性的实施方式可以获得在前文已被简要概括的更为详细的描述,附图中示出了一些示例性的实施方式。然而应当注意,附图仅示出了典型的示例性实施方式,因此不被视为限制了范围。
图1A示出了FPGA的示例性架构;
图1B是根据一个实施例描绘了图1A的FPGA的更高层级视图的框图;
图2是描绘了示例性的TCAM系统的框图;
图3A是描绘了示例性的1×1的TCAM的框图;
图3B是描绘了图3A的1×1的TCAM的示例性实现方式的框图;
图4是描绘了示例性的2×2的TCAM的框图,通过扩展,其可以被推广为N×W的TCAM;
图5是描绘了图1A-1B中显示的FPGA的可编程结构的一部分的框图;
图6A示出了在FPGA内的复用器的框图,该FPGA被配置成实现TCAM的一部分;
图6B示出了在FPGA内的另一复用器的框图,该FPGA被配置成实现TCAM的一部分;
图7A中的框图示出了图4中的TCAM在可编程IC内的一个示例性实现方式;
图7B中的框图示出了图4中的TCAM在可编程IC内的另一个示例性实现方式;
图8是描绘了TCAM的另一实施例的框图,该TCAM的深度是N并且宽度是2;
图9是描绘了TCAM的另一实施例的框图,该TCAM的深度是2并且宽度是W;
图10是描绘了实现TCAM的方法示例的流程图;
为了便于理解,在可能的情况下,使用了相同的参考数字来标示附图中一致的相同元件。可以预期的是,一个实施例中的元件可以被有益地并入其他实施例。
具体实施方式
参考附图来描述以下各种特征。应当注意的是,附图可能是也可能不是按比例绘制的,并且具有相似的结构或功能的元件在全部附图中由相似的参考数字表示。应当注意的是,附图仅意图促进对特征的描述。其并非意图作为所请求保护的发明的详尽描述或者作为所请求保护的发明的范围限制。此外,示出的实施例不需要具有所显示的全部方面或优点。结合特定实施例进行描述的方面或优点不必限制于该实施例,并且尽管没有明示或者没有进行详细描述,这些方面或优点也可以实施在任何其他实施例中。
在此描述了用于提供基于复用器的三态内容寻址存储器(TCAM)的技术。在可编程集成电路(IC)中,例如FPGA中,TCAM的一些实施例使用块随机存取存储器(RAM)或者分布式RAM来存储表示TCAM数据字的数据。使用输入键来检索匹配向量,以对RAM进行寻址,匹配向量确定了哪个存储的TCAM字匹配了输入键。在该实施例中,为了实现所有可能的状态(逻辑“1”、逻辑“0”和不理会“X”),需要每个TCAM位具有两个存储单元。输入键宽度的增加会使得用于储存TCAM数据的存储单元的量多一倍。同样,随着键的宽度的增加,这种基于RAM的TCAM的存储效率以指数形式降低。进一步地,可编程IC内的这种RAM可能具有最小尺寸(例如,最浅的RAM可以是32字深)。同样,每个TCAM位的存储单元数量一般大于2(例如,假设32字深的RAM,则每个TCAM位需要至少6个存储单元)。
如在此描述的那样,可以使用可编程IC中的复用器逻辑来实现TCAM。复用器逻辑的输入由输入键构成。储存的TCAM位被用于控制复用器逻辑。复用器逻辑的输出提供了匹配向量,匹配向量指示哪些TCAM数据字匹配了输入键。对于本文中描述的基于复用器的TCAM,每个TCAM位仅需要两个存储单元,这比上述基于RAM的TCAM更高效(例如,至少更高效三倍)。
图1A示出了FPGA 100的示例性架构,FPGA 100包括大量不同的可编程片,这些可编程片包括千兆位收发器(“MGT”)101、可配置逻辑块(“CLB”)102、随机存取存储器块(“BRAM”)103、输入/输出块(“IOB”)104、配置和时钟逻辑(“CONFIG/CLOCKS”)105、数字信号处理块(“DSP”)106、专用输入/输出块(“I/O”)107(例如,配置端口和时钟端口),以及其他可编程逻辑108,例如数字时钟管理器、模数转换器、系统监测逻辑等。一些FPGA也包括专用处理器块(“PROC”)110。
在一些FPGA中,每个可编程片包括至少一个可编程互连元件(“INT”)111,可编程互连元件111具有与同一片内的可编程逻辑元件的输入输出端子120的连接,如图1A顶部包括的示例所示。每个可编程互连元件111(也称为“互连元件111”)还可以包括与同一片或者其他片内的相邻可编程互连元件的互连段122的连接。每个可编程互连元件111还可以包括与在逻辑块(未显示)之间的通用路由资源中的互连段124的连接。通用路由资源可以包括位于逻辑块(未显示)之间的路由通道,后者包括互连段(例如,互连段124)的路径以及用于连接互连段的开关块(未显示)。通用路由资源中的互连段(例如,互连段124)可以跨一个或多个逻辑块。可编程互连元件111与通用路由资源合起来一起为所示出的FPGA实现了可编程互连结构(“可编程互连”)。如下面进一步描述的那样,在一些实施例中,为了高效实现TCAM,一些互连元件111或者全部互连元件111可以包括附加电路。
在示例性的实施方式中,CLB 102可以包括可配置逻辑元件(“CLE”)112,可配置逻辑元件112可以被编程为执行用户逻辑加单个可编程互连元件(“INT”)111。除了包括一个或多个可编程互连元件之外,BRAM 103可以包括BRAM逻辑元件(“BRL”)113。典型地,片内包括的互连元件的数量取决于片的高度。在图示的实施例中,BRAM片具有的高度和5个CLB相同,但是也可以使用其他的数量(例如,4个)。除了适当数量的可编程互连元件之外,DSP片106可以包括DSP逻辑元件(“DSPL”)114。除了可编程互连元件111的一个实例之外,IOB 104可以包括,例如,输入/输出逻辑元件(“IOL”)115的两个实例。本领域的技术人员十分清楚,诸如被连接至I/O逻辑元件115的实际的I/O焊盘,典型地不会被限于输入/输出逻辑元件115的区域内。
在图示的实施例中,在基片(图1A所示)中部附近的水平区域被用作配置、时钟以及其他控制逻辑。从该水平区域或水平列延伸出来的垂直列109被用于在FPGA宽度上分配时钟信号和配置信号。
利用图1A中所示架构的一些FPGA可以包括额外的逻辑块,这些额外的逻辑块会打乱组成了大部分FPGA的规则的列状结构。额外的逻辑块可以是可编程块和/或专用逻辑。例如,处理器块110可以跨越CLB和BRAM的几列。处理器块110可以包括各种部件,这些部件的范围可以从单个微处理器到由微处理器、存储控制器、外围设备等组成的完整可编程处理系统。
需要注意的是,图1A仅意图示出示例性的FPGA架构。例如,一行中逻辑块的数量、行的相对宽度、行的数量和顺序、行中包括的逻辑块的类型、逻辑块的相对大小以及图1A顶部包括的互连/逻辑实现方式都仅仅是示例性的。例如,在实际的FPGA中,无论CLB出现在哪里,都典型地包括不止一相邻行的CLB,以有助于用户逻辑的高效实现,但是相邻CLB行的数量随FPGA的整体大小而变化。在另一实施例中,FPGA可以包括整个处理系统(例如,处理器、存储器、外围设备等),以作为处理器块110的替代或附加。在该实施方式中,片上系统(SoC)可以包括与处理系统进行通讯的可编程结构(如FPGA 100中所示的可编程逻辑)。
图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。可以使用一个或多个CLE112来实现分布式RAM 154。
在此描述的实施例中,可以在可编程IC中,例如FPGA 100中,实现基于复用器的TCAM。被存储的用于TCAM的数据字可以被储存在FPGA 100的配置存储器152或者分布式RAM154内。可以使用可编程互连元件111中的复用器以及CLE 112中的查找表(LUT)来执行比较逻辑。下文首先描述基于复用器的TCAM的实施例,随后描述该基于复用器的TCAM在可编程IC(例如FPGA 100)中的示例性的实现方式。
图2是描绘了示例性的TCAM系统200的框图。TCAM系统200包括TCAM 202。TCAM 202的输入端口204的宽度为W位,并且被耦接以接收W位的输入键(其中W是大于0的整数)。TCAM202包括比较逻辑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)等。
具体地,字存储器210为N个TCAM字的每一位储存一对位(例如,N*W个位对(bitpair)或者2*N*W个位)。如上所述,TCAM字的位可以具有以下值:逻辑“1”、逻辑“0”,或者不理会“X”。因此,TCAM字的每一位都由字存储器210内的一对位来表示,字存储器210包括数据位(data bit)和屏蔽位(mask bit)。数据位确定在一个TCAM字内的位是逻辑“1”还是逻辑“0”。屏蔽位确定在一个TCAM字内的位是否是不理会“X”。如果屏蔽位是逻辑“0”,那么该TCAM位的数值就是数据位的数值。如果屏蔽位是逻辑“1”,那么该TCAM位的数值就是逻辑“1”。
基于输入键以及储存在字存储器210内的位对,比较逻辑208在输出端口206上输出Y位的匹配向量,其中Y是大于0的整数。匹配向量指示出:在字存储器210中表示的N个TCAM字中的哪一个匹配了输入键。
在一个实施例中,X等于2*W*N,这使得字存储器210包括2*W*N个输出。例如,位对218中的每一位可以被储存在存储单元中,其中存储单元被耦接于比较逻辑208。在该实施例中,可以将输入键与在字存储器210中表示的N个TCAM字进行比较,并且并行地生成N位的匹配向量(例如,Y等于N)。N位匹配向量内的逻辑“1”指示正匹配(positive match),而在N位的匹配向量内的逻辑“0”指示负匹配(negative match)。
在其他实施例中,字存储器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字进行比较。
在另一实施例中,字存储器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位进行比较。
Y位的匹配向量可以被用作TCAM 202的输出。可供选择地,Y位的匹配向量可以被用于从外部数据存储器214获得附加数据。附加数据可以包括对应于TCAM字的数据字。
在一个实施例中,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进行寻址,直到发现第一次匹配。
图3A是描绘了示例性的1×1的TCAM的框图。图3B是描绘了图3A中1×1的TCAM的示例性实施方式的框图。如图3A所示,1位的输入键K[0]被输入到比较函数304。存储位置302储存1位TCAM字的位T[0]。位T[0]可以是逻辑“1”、逻辑“0”和不理会“X”。输入键K[0]可以是逻辑“1”或者逻辑“0”。如果输入键K[0]匹配TCAM字T[0],或者如果TCAM字T[0]是不理会“X”,那么比较函数304输出逻辑“1”。如果输入键K[0]不匹配TCAM字T[0],那么比较函数304输出逻辑“0”。
如图3B所示,可以使用复用器306以及一对存储器输出308M和308D(共同组成存储器输出308)来实现图3A的1×1的TCAM。存储器输出308中的每个输出提供一位。存储器输出308M提供TCAM字的位T[0]的屏蔽位。存储器输出308D提供TCAM字的位T[0]的数据位。屏蔽位和数据位被储存在具有存储器输出308的存储器310内。
在示出的实施例中,复用器306包括四个输入,也就是包括第一输入、第二输入、第三输入和第四输入,第一输入被耦接以接收输入键K[0]的补码(输入键的补码版本),第二输入被耦接以接收输入键K[0](输入键的实际版本),第三输入不连接(NC)(或以其他方式被忽略),第四输入被耦接以接收恒定的逻辑“1”。在另一实施例中,不与复用器306的输入相连接的第三输入可以被忽略,从而复用器306可以包括三个输入。可供选择地,复用器306的第三和第四输入两者都可以被耦接以接收恒定的逻辑“1”,这实际上将四输入的复用器转变成三输入的复用器。复用器306包括两个控制输入,一个被耦接以接收由存储器输出308M提供的屏蔽位,而另一个被耦接以接收由存储器输出308D提供的数据位。复用器306提供匹配输出。
复用器306根据下表进行操作:
表1
MD位对“00”、“01”和“11”表示出了一个TCAM位的“0”、“1”和“不理会”。在一些实施例中,MD位对“10”不被使用。在其他实施例中,MD位对“10”也可以表示出针对TCAM位的“不理会”。相应地,对于“01”的MD,输出是K[0]。对于“00”的MD,输出是~K[0]。对于“11”(或者“10”)的MD,输出是恒定的逻辑“1”。
图3B中示出的1×1的TCAM的实现方式可以被扩展至一般的N×W的TCAM,其中N是TCAM的深度,而W是TCAM的宽度。此外,可以使用具有可单独访问的存储单元的字存储器或者使用可寻址字存储器来实现这种N×W的TCAM。
图4是描绘了示例性的TCAM 400的框图,TCAM 400所具有的深度是2,宽度是2。TCAM 400包括对比较逻辑208和字存储器210的具体实现,其中字存储器210具有可单独访问的存储单元。如下面实施例所描述的,这种字存储器可以被包括在可编程IC内,例如FPGA。本领域的技术人员可以理解,基于下面对2×2的TCAM的描述,TCAM 400可以被扩展至深度是N且宽度是W的一般情况。
TCAM 400包括比较电路4020和4021(共同组成比较电路402)。比较电路402执行比较逻辑208。比较电路402的数量对应于TCAM 400的深度(例如,储存在TCAM 400内的字的数量)。因此,在本实施例中,对于深度为N=2的TCAM字,存在两个比较电路402。比较电路4020包括复用器4040,0、复用器4040,1以及“与”门4100。类似地,比较电路4021包括复用器4041,0、复用器4041,1以及“与”门4101。复用器4040,0至4041,1共同地被称作“复用器404”。通常而言,比较电路402中的每个比较电路都包括W个复用器,其中W是TCAM 400的宽度。因此,在本实施例中,针对TCAM字的宽度为W=2,存在两个复用器404。“与”门4100和“与”门4101共同地被称作“组合逻辑410”。
在第一TCAM字4060的比较电路4020中,复用器4040,0由第一TCAM字4060的最低有效位(LSB)(TCAM位4060,0)进行控制。如上所述,在存储器中,TCAM字的每一位都使用屏蔽位/数据位对来表示。TCAM位4060,0的屏蔽位和数据位被分别储存在存储单元408M1和408D1中。复用器4040,1由第一TCAM字4060的最高有效位(MSB)(TCAM位4060,1)进行控制。TCAM位4060,1的屏蔽位和数据位被分别储存在存储单元408M2和408D2中。
在第二TCAM字4061的比较电路4021中,复用器4041,0由第二TCAM字4061的LSB(TCAM位4061,0)进行控制。TCAM位4061,0的屏蔽位和数据位被分别储存在存储单元408M3和408D3中。复用器4041,1由第二TCAM字4061的MSB(TCAM位4061,1)进行控制。TCAM位4061,1的屏蔽位和数据位被分别储存在存储单元408M4和408D4中。存储单元408D1至408D4以及存储单元408M1至408M4共同地被称作“存储单元408”。存储单元408是字存储器210内的存储单元。
在比较电路4020中,“与”门4100将两个1×1的基于复用器的TCAM具体实现(例如,图3B中TCAM具体实现的两个实例)的输出组合在一起。复用器4040,0接收检索键K[0]的第一位的实际版本和补码版本,而复用器4040,1接收检索键K[1]的第二位的实际版本和补码版本。通常,针对宽度为W位的TCAM,检索键(检索关键字)包括W位。因此,在本实施例中,检索键包括两位K[0]和K[1]。复用器4041,0和4041,1分别接收检索键K[0]的实际版本和补码版本以及检索键K[1]的实际版本和补码版本。复用器4040,0和4040,1的输出被耦接于“与”门4100的输入。复用器4041,0和4041,1的输出被耦接于“与”门4101的输入。
“与”门4100输出第一匹配位M[0],“与”门4101输出第二匹配位M[1]。通常,匹配位向量包括N位,每一位针对于N个TCAM字中的一个TCAM字。如果检索键K[1:0]分别匹配第一TCAM字4060的TCAM位4060,0和4060,1,那么“与”门4100输出逻辑“1”,否则输出逻辑“0”。如果检索键K[1:0]分别匹配第二TCAM字4061的TCAM位4061,0和4061,1,那么“与”门4101输出逻辑“1”,否则输出逻辑“0”。每个复用器404按照上面有关图3A的描述进行操作。
TCAM 400可以被推广以形成N×W的TCAM。N×W的TCAM包括N个比较电路402。在N×W的TCAM中,每个比较电路402都包括W个复用器404。每个复用器由储存在存储单元408内的特定的位对进行控制。N×W的TCAM需要2*N*W个存储单元408。N×W的TCAM的组合逻辑410执行N个逻辑“与”运算。匹配位向量M包括N位,每一位针对于N个TCAM字中的一个TCAM字。
TCAM 400或者经推广的N×W版本的TCAM 400可以被用在图2中的TCAM 202内。比较逻辑208包括复用器404和组合逻辑410。字存储器210包括存储单元408。组合逻辑410的输出在输出端口206上提供N位的匹配向量。因此,TCAM 400或者经推广的N×W版本的TCAM400也可以被耦接于优先编码器212,优先编码器212对外部数据存储器214进行寻址,如图2所示。
图5是描绘了FPGA 100的可编程结构150的平面布局的框图,其可被用于实现在此描述的基于复用器的TCAM。图5显示了在可编程结构150内的可编程片的两个列502和506。列502和506内的可编程片包括CLE 112。在列502和506的每个中,只示出了一个CLE 112,但是列502和506通常包括多个CLE。每个CLE 112都被耦接于互连元件111。
每个CLE 112包括四个片段(slice)SM1-SM0和SL0-SL1。片段SM0-SM1是一种类型(类型“M”),片段SL0-SL1是另一种类型(类型“L”)。类型M的片段SM0和SM1包括查找表(LUT)508和支持逻辑510。LUT 508可以被配置作为函数发生器,以用于执行具有多个输入和多个输出的任何组合函数。LUT 508也可以被配置成作为LUT-RAM,LUT-RAM被配置成存储多个位。支持逻辑510可以包括能够支持LUT 508的触发器、复用器、进位链逻辑等等。类型“L”的片段SL0和SL1包括LUT 512和支持逻辑510。LUT 512可以被配置成作为函数发生器,但不作为LUT-RAM。图5中的架构只是一个实施例。在其他实施例中,CLE 112中的所有LUT可能都包括LUT-RAM(每个片段都是类型“M”的),或者CLE 112中的所有LUT可能都包括不能被配置成RAM的LUT(每个片段都是类型“L”的)。
在该实施例中,列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的输出、或者去往互连的输出。
可以在可编程结构150内实现TCAM 400(或者其经推广的N×W的版本)。可以使用互连元件111内的复用器514来实现复用器404。可以使用在列502中类型“L”的片段内的LUT112来实现组合逻辑410。在一种实现方式中,存储单元408包括配置存储器152的储存单元,其被耦接于复用器514。在另一种实现方式中,存储单元408包括分布式RAM 154的存储单元,其使用在列506中类型“M”的片段内的LUT 508来实现。
在另一实施例中,可以使用附加至可编程结构150的片之内的复用器来实现复用器404。也就是说,可编程结构150可以包括在一个或多个复用器片内的专用复用器,而不是使用在互连元件111内的复用器514。因此,在图5的环境中,在一些实施例中,为了实现TCAM400,互连元件111可以由具有复用器514的复用器片来替换。
图6A是示出了在FPGA 100内的复用器514的框图,其被配置成实现TCAM的一部分。复用器514被配置成如图3B中的实现方式所显示的那样。给定TCAM位的屏蔽位和数据位分别被储存在存储单元6021和6022中,其是配置存储器152的一部分。在这种实现方式中,TCAM数据字被储存在配置存储器152内。
图6B是示出了在FPGA 100内的复用器514’的框图,其被配置成实施TCAM的一部分。复用器514’被配置成如图3B中的实现方式所显示的那样。复用器514’包括附加控制复用器逻辑606,以用于实现“快速更新(fast-update)”模式。在图6A显示的实现方式中,通过在适当的存储单元中将新的数据加载到配置存储器152,对TCAM数据字进行更新。在图6B显示的实现方式中,通过将新的数据加载到分布式RAM 154,对TCAM数据字进行更新。特别地,控制复用器逻辑606对配置存储器152内的存储单元6021和6022或者分布式RAM 154内的存储单元6041和6042是否被耦接于控制复用器514’进行控制。在配置存储器152内的存储单元6023可以储存位,该位可以确定配置存储器152或者分布式RAM 154是否被提供到复用器514’的控制端口。对分布式RAM 154的更新可以快于对配置存储器152的更新,这使得在图6B的实现方式中对TCAM数据字的更新更快。
图7A是示出了TCAM 400(或者TCAM 400的N×W的经推广的版本)在可编程IC内(例如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。
图7B是示出了TCAM 400(或者TCAM 400的N×W的经推广的版本)在可编程IC(例如FPGA 100)内的示例性实现方式701的框图。TCAM的实现方式701与TCAM的实现方式700相似,但是存储单元408在配置存储器152内实现,而不是在分布式RAM 154内实现。
图8是描绘了TCAM 800的另一实施例的框图,其中TCAM 800的深度是N并且宽度是2。TCAM 800包括对比较逻辑208和字存储器210的具体实现,其中字存储器210是可寻址RAM。本领域的技术人员可以理解,基于下面对N×2的TCAM的描述,TCAM 800可以被扩展至深度为N且宽度为W的一般情况。
TCAM 800包括比较电路802,比较电路802被耦接于字存储器210。字存储器210存储4位的RAM字8081至808N(共同地组成RAM字808)。每个RAM字808表示一个TCAM字。同样地,每个RAM字808针对TCAM字的每一位都包括一对位(M,D),以使得每个4位RAM字808表示2位的TCAM字T[1:0]。字存储器210包括4位的输出D[3:0]。
比较电路802包括复用器8040和8041(共同组成复用器804)以及“与”门806(或者执行逻辑“与”运算的一些组合逻辑)。复用器804是图3B中显示的复用器306的具体实现。复用器8040的第一和第二端子接收输入键的位K[0]的补码版本和实际版本。复用器8041的第一和第二端子接收输入键的位K[1]的补码版本和实际版本。每个复用器804的第三和第四端子接收恒定的逻辑“1”(或者可以不连接第三端子)。复用器804的输出被耦接于“与”门806的输入。“与”门806的输出提供了匹配输出M。位D[0]和D[1]控制复用器8040,位D[2]和D[3]控制复用器8041。
在操作中,地址发生器216对字存储器210进行寻址,以输出表示TCAM字的RAM字808。由D[1:0]提供的TCAM位T[0]的位对(M,D)对复用器8040进行控制,由D[3:2]提供的TCAM位T[1]的位对(M,D)对复用器8041进行控制。地址发生器216可以生成字存储器210的多个地址,以将输入键与多个TCAM字依次进行比较。当发现至少一次匹配时,地址发生器216可以停止生成地址。对于每次比较,匹配位M指示了正匹配或负匹配。输入键与TCAM字的完整比较需要N个生成的地址。通过复制增加附加的复用器804并且将字存储器210的输出扩展至D[W-1:0],TCAM 800可以被扩展至支持W位的TCAM字。
图9是描绘了TCAM 900的另一实施例的框图,其中TCAM 900的深度是2并且宽度是W。TCAM 900包括对比较逻辑208和字存储器210的具体实现,其中字存储器210是可寻址RAM。本领域的技术人员可以理解,基于下面对2×W的TCAM的描述,TCAM 800可以被扩展至深度为N并且宽度为W的一般情况。
TCAM 900包括比较电路9020和9021(共同组成比较电路902),比较电路902被耦接于字存储器210。字存储器210存储4位的RAM字9081至908W(共同组成RAM字908)。每个RAM字908表示两个TCAM字9301和9302的给定的位。同样地,每个RAM字908针对TCAM字的每一位都包括一对位(M,D),以使得每个4位RAM字908表示两个TCAM字9301和9302的给定的位T。例如,RAM字9081包括表示每个TCAM字9301和9302的位T[0]。RAM字908W表示每个TCAM字9301和9302的位T[W-1]。字存储器210包括4位的输出D[3:0]。
比较电路9020包括复用器9040、“与”门9060(或者执行逻辑“与”运算的一些组合逻辑)以及锁存器9200。复用器9040的第一和第二输入被耦接于移位寄存器922的输出。移位寄存器922输出所述输入键的串行位流。复用器9040的第三和第四端子被耦接以接收恒定的逻辑“1”(或者可以不连接第三端子)。复用器9040的输出被耦接于“与”门9060的输入。“与”门9060的输出被耦接于锁存器9200并且提供匹配向量的位M[0]。锁存器9200的输出被耦接于“与”门9060的另一输入。锁存器9200的时钟端口被耦接以接收来自时钟924的时钟信号。
比较电路9021包括复用器9041、“与”门9061(或者执行逻辑“与”运算的一些组合逻辑)以及锁存器9201。复用器9041的第一和第二输入被耦接于移位寄存器922的输出。复用器9041的第三和第四端子被耦接以接收恒定的逻辑“1”(或者可以不连接第三端子)。复用器9041的输出被耦接于“与”门9061的输入。“与”门9061的输出被耦接于锁存器9201并且提供匹配向量的位M[1]。锁存器9201的输出被耦接于“与”门9061的另一输入。锁存器9201的时钟端口被耦接以接收来自时钟924的时钟信号。
复用器9040和9041(共同组成复用器904)是对图3B中示出的复用器306的具体实现。位D[0]和D[1]对复用器9040进行控制,位D[2]和D[3]对复用器9041进行控制。
在操作中,地址发生器216对字存储器210进行寻址以输出RAM字908,RAM字908表示两个TCAM字9301和9302中的每个TCAM字的位。由D[1:0]提供的针对第一TCAM字9301的位对(M,D)对复用器9040进行控制,由D[3:2]提供的针对第二TCAM字9302的位(M,D)对复用器9041进行控制。地址发生器216可以生成针对字存储器210的多个地址,以将输入键的位与多个TCAM字的相相应位依次进行比较。输入键与TCAM字的完整比较需要W个生成的地址。通过复制比较电路902并且将字存储器210的输出扩展至D[N-1:0],TCAM 900可以被扩展至支持N个TCAM字。
图10是描绘了实现TCAM的示例性方法1000流程图。方法1000内的操作不意指任何特定的顺序。方法1000开始于操作1002,其中W位的键作为输入而被接收。在操作1004,提供了由至少一个比较电路生成的匹配向量作为输出。匹配向量可以包括至少一位。在一个实施例中,至少一个比较电路可以被配置在可编程IC内。
在操作1006,N*W个位对被储存在存储器内,其表示了N个W位的TCAM字。如上所述,存储器可以是可编程IC的配置存储器或者可编程IC内的分布式RAM。在一些实施例中,存储器可以是可寻址RAM。
在操作1008,W位输入键中各个位的实际版本和补码版本被耦接于至少一个比较电路中的W个复用器的各个复用器。在操作1009,W个复用器中的各个复用器都由相应的一对存储器输出进行控制。在可选择的操作1016,生成地址以用于存储器。在操作1010,对W个复用器的输出进行逻辑“与”。
方法1000可以包括操作1012,其中响应于匹配向量而生成地址。在操作1014,使用所述地址从数据存储器获得数据。
虽然上述内容针对特定的实施例,但是在没有背离其基本范围的情况下,可以构想出其他的实施例和进一步的实施例,并且其范围是通过权利要求确定的。
Claims (20)
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电路,其中所述至少一个复用器包括可编程集成电路(IC)的互连片中的多个复用器的至少一部分,并且其中所述组合逻辑在所述可编程IC中通过查找表(LUT)逻辑来实现。
9.如权利要求8所述的TCAM电路,其中所述存储单元包括所述可编程IC的配置存储器的一部分。
10.如权利要求8所述的TCAM电路,其中所述存储单元包括所述可编程IC的分布式存储器的一部分。
11.一种可编程集成电路(IC),包括:
配置存储器;以及
可编程逻辑,所述可编程逻辑包括分布式随机存取存储器(RAM)、可配置逻辑元件以及可编程互连元件,所述可编程互连元件被耦接于所述可配置逻辑元件之间;
其中所述可编程互连元件包括多个复用器,每个复用器具有多个输入和一个输出;
其中所述多个复用器中的每个复用器具有控制输入,所述控制输入被耦接于控制复用逻辑,所述控制复用逻辑通过所述配置存储器被配置为选择所述配置存储器的输出或者所述分布式RAM的输出以控制所述复用器。
12.如权利要求11所述的可编程IC,其中所述配置存储器对位流进行存储,以用于配置所述可编程逻辑中的三态内容寻址存储器(TCAM),所述TCAM包括:
输入端口,所述输入端口被耦接以接收W位的键作为输入;
输出端口,所述输出端口被耦接以提供N位匹配向量作为输出;
所述分布式RAM的多个存储单元,所述多个存储单元可操作以为N个W位的TCAM字储存N*W个位对;
N个比较电路,所述N个比较电路中的每个比较电路被耦接以输出所述N位匹配向量中的相应位,所述N个电路中的每个电路包括:
所述多个复用器中的W个复用器,所述W个复用器中的每个复用器接收所述W位的键中相应位的实际版本和补码版本作为输入,所述W个复用器中的每个复用器由所述N*W个位对中的相应一对进行控制;以及
组合逻辑,所述组合逻辑被配置为在至少一个所述可配置逻辑元件中对所述W个复用器的输出进行逻辑“与”,从而提供所述N位匹配向量中的相应位。
13.如权利要求12所述的可编程IC,其中所述W个复用器中的每个复用器包括四输入复用器,所述四输入复用器具有第一输入、第二输入、第三输入和第四输入,其中,所述第一输入被耦接以接收所述W位的键中相应位的实际版本,所述第二输入被耦接以接收所述W位的键中所述相应位的补码版本,所述第三输入未被连接或被耦接以接收恒定的逻辑“高”位,所述第四输入被耦接以接收所述恒定的逻辑“高”位。
14.如权利要求12所述的可编程IC,其中在所述N个电路的每个电路中的所述组合逻辑在平面布局的第一列中被配置为多个所述可配置逻辑元件,其中所述存储单元位于所述平面布局的第二列中,并且其中在所述N个电路的每个电路中的所述W个复用器被布置于第一列和第二列之间。
15.如权利要求14所述的可编程IC,其中在所述N个电路的每个电路中的所述组合逻辑被配置为第一类型的所述可配置逻辑元件,并且其中所述存储单元被配置为第二类型的所述可配置逻辑元件。
16.一种实现三态内容寻址存储器(TCAM)的方法,包括:
接收W位的键作为输入;
提供匹配向量作为输出,所述匹配向量包括由至少一个比较电路产生的至少一位;
在存储器的多个存储单元中为N个W位的TCAM字储存N*W个位对,所述存储器包括多个存储器输出;
将所述W位的键中的各位的实际版本和补码版本耦接于在所述至少一个比较电路中的至少一个复用器中的各个复用器,所述至少一个复用器中的各个复用器由所述多个存储器输出中相应一对存储器输出进行控制;以及
基于所述至少一个复用器的输出,执行至少一次“与”运算。
17.如权利要求16所述的方法,其中所述至少一个复用器中的每个复用器包括四输入复用器,所述四输入复用器具有第一输入、第二输入、第三输入和第四输入,其中,所述第一输入被耦接以接收所述W位的键中相应位的实际版本,所述第二输入被耦接以接收所述W位的键中所述相应位的补码版本,所述第三输入未被连接或被耦接以接收恒定的逻辑“高”位,所述第四输入被耦接以接收所述恒定的逻辑“高”位。
18.如权利要求16所述的方法,其中所述方法进一步包括:
响应于所述匹配向量,生成地址;以及
使用所述地址从数据存储器获取数据。
19.如权利要求16所述的方法,其中所述存储单元包括所述可编程IC的配置存储器的一部分。
20.如权利要求16所述的方法,其中所述存储单元包括所述可编程IC内的分布式存储器的一部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/675,159 | 2015-03-31 | ||
US14/675,159 US9653165B2 (en) | 2015-03-31 | 2015-03-31 | Multiplexer-based ternary content addressable memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106024056A true CN106024056A (zh) | 2016-10-12 |
CN106024056B CN106024056B (zh) | 2021-05-25 |
Family
ID=57017179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610184890.5A Active CN106024056B (zh) | 2015-03-31 | 2016-03-29 | 基于复用器的三态内容寻址存储器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9653165B2 (zh) |
CN (1) | CN106024056B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI709046B (zh) * | 2019-09-09 | 2020-11-01 | 英業達股份有限公司 | 多地址響應的複雜可程式邏輯裝置及運作方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070028039A1 (en) * | 2005-07-27 | 2007-02-01 | Pankaj Gupta | Controlling a searchable range within a network search engine |
CN104346289A (zh) * | 2013-07-30 | 2015-02-11 | 联发科技股份有限公司 | 查表装置以及查表方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5588010A (en) * | 1994-07-29 | 1996-12-24 | International Business Machines Corporation | Parallel architecture error correction and conversion system |
US6556042B1 (en) | 2002-02-20 | 2003-04-29 | Xilinx, Inc. | FPGA with improved structure for implementing large multiplexers |
US7308470B2 (en) * | 2003-12-05 | 2007-12-11 | Intel Corporation | Smaller and lower power static mux circuitry in generating multiplier partial product signals |
US7317331B2 (en) * | 2004-11-08 | 2008-01-08 | Tabula, Inc. | Reconfigurable IC that has sections running at different reconfiguration rates |
US20060155915A1 (en) * | 2004-12-30 | 2006-07-13 | Pereira Jose P | Database query processor |
US7298169B2 (en) * | 2005-03-15 | 2007-11-20 | Tabula, Inc | Hybrid logic/interconnect circuit in a configurable IC |
US7853578B1 (en) * | 2005-12-09 | 2010-12-14 | Marvell International Ltd. | High-performance pattern matching |
US7606968B2 (en) * | 2006-05-08 | 2009-10-20 | Mcdata Corporation | Multi-level content addressable memory |
US9262312B1 (en) * | 2012-10-17 | 2016-02-16 | Marvell International Ltd. | Apparatus and methods to compress data in a network device and perform content addressable memory (CAM) processing |
-
2015
- 2015-03-31 US US14/675,159 patent/US9653165B2/en active Active
-
2016
- 2016-03-29 CN CN201610184890.5A patent/CN106024056B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070028039A1 (en) * | 2005-07-27 | 2007-02-01 | Pankaj Gupta | Controlling a searchable range within a network search engine |
CN104346289A (zh) * | 2013-07-30 | 2015-02-11 | 联发科技股份有限公司 | 查表装置以及查表方法 |
Non-Patent Citations (1)
Title |
---|
ZAHID ULLAH等: "Hybrid Partitioned SRAM-Based Ternary Content Addressable Memory", 《 IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS》 * |
Also Published As
Publication number | Publication date |
---|---|
US9653165B2 (en) | 2017-05-16 |
CN106024056B (zh) | 2021-05-25 |
US20160293255A1 (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858006B1 (en) | Context driven memory circuits | |
US7746111B1 (en) | Gating logic circuits in a self-timed integrated circuit | |
US20050218929A1 (en) | Field programmable gate array logic cell and its derivatives | |
US8572151B2 (en) | Methods and apparatuses for cordic processing | |
US7746112B1 (en) | Output structure with cascaded control signals for logic blocks in integrated circuits, and methods of using the same | |
US8581624B2 (en) | Integrated circuits with multi-stage logic regions | |
JP2003084967A (ja) | 機能ブロック | |
US7746102B1 (en) | Bus-based logic blocks for self-timed integrated circuits | |
US9411554B1 (en) | Signed multiplier circuit utilizing a uniform array of logic blocks | |
US7746106B1 (en) | Circuits for enabling feedback paths in a self-timed integrated circuit | |
US20110126164A1 (en) | Semiconductor integrated circuit, program transformation apparatus, and mapping apparatus | |
JPWO2010107114A1 (ja) | パターンマッチング装置 | |
JP2018530958A (ja) | カスケード式ルックアップテーブル(lut)桁上げ論理回路 | |
CN109993272B (zh) | 卷积及降采样运算单元、神经网络运算单元和现场可编程门阵列集成电路 | |
US7746108B1 (en) | Compute-centric architecture for integrated circuits | |
Sutradhar et al. | Look-up-table based processing-in-memory architecture with programmable precision-scaling for deep learning applications | |
US7746110B1 (en) | Circuits for fanning out data in a programmable self-timed integrated circuit | |
Sasao et al. | A method to decompose multiple-output logic functions | |
Tian et al. | A field programmable transistor array featuring single-cycle partial/full dynamic reconfiguration | |
US7746105B1 (en) | Merging data streams in a self-timed programmable integrated circuit | |
US7746104B1 (en) | Dynamically controlled output multiplexer circuits in a programmable integrated circuit | |
US9002915B1 (en) | Circuits for shifting bussed data | |
EP2777155B1 (en) | Embedded memory and dedicated processor structure within an integrated circuit | |
US8706793B1 (en) | Multiplier circuits with optional shift function | |
CN106024056A (zh) | 基于复用器的三态内容寻址存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |