集成电路内的嵌入式存储器和专用处理器结构的制作方法

文档序号:7541367阅读:245来源:国知局
集成电路内的嵌入式存储器和专用处理器结构的制作方法
【专利摘要】集成电路可以包括根据第一时钟频率可操作的可编程电路(270),以及存储器块(205)。所述存储器块可以包括具有至少一个数据端口的存储元件(210)以及耦合到所述存储元件的数据端口上并且耦合到所述可编程电路上的存储器处理器(215)。所述存储器处理器可以根据比所述第一时钟频率更高的第二时钟频率可操作。此外,所述存储器处理器可以为硬连线的并且专用于执行所述存储器块的存储元件中的操作。
【专利说明】集成电路内的嵌入式存储器和专用处理器结构
【技术领域】
[0001]本说明书内所揭示的一个或多个实施例涉及集成电路(1C)。更确切地说,一个或多个实施例涉及IC内的嵌入式存储器和专用处理器结构。
【背景技术】
[0002]在高速网络应用内,快速执行查找操作的能力会是至关重要的。例如,为了处理一个包,该包的一个或多个属性通常必须被确定并且用于执行查找操作。查找操作的结果可以决定将对包所实施的处理。可以影响包处理的属性实例的非详尽列表可以包括包类型、包所有权,及其类似物。包处理操作的实例可以包括、但不限于,基于包的目的地地址确定包的下一跳地址、转发包、路由包、以及筛选包。这些类型的包操作可以涉及每包一个或多个查找操作。因此,网络节点的带宽可以高度取决于网络节点快速并有效执行查找操作的能力。较慢的查找性能会导致网络节点中减少的带宽。较慢的查找性能还会增加网络节点的成本,因为由查找过程引起的时延可能使将另外的存储器包括在网络节点中成为必需以避免数据溢出条件。

【发明内容】

[0003]本说明书内揭示的一个或多个实施例涉及集成电路(1C),并且更确切地说涉及IC内的嵌入式存储器和专用处理器结构。
[0004]一个实施例可以包括1C。IC可以包括根据第一时钟频率可操作的可编程电路,以及存储器块(例如,块随机存取存储器)。存储器块可以包括具有至少一个数据端口的存储元件(例如,随机存取存储(RAM)元件)以及耦合到存储元件的数据端口上并且耦合到可编程电路上的存储器处理器。存储器处理器可以根据比第一时钟频率更高的第二时钟频率可操作。此外,存储器处理器可以为硬连线的并且专用于执行存储器块的存储元件中的操作。
[0005]在此实施例中,存储元件可以为随机存取存储(RAM)元件,并且存储器处理器可以经配置以更新RAM元件内的至少一个位置以便响应于更新条件。
[0006]在此实施例中,可编程电路可以经配置以从包中提取搜索关键字的至少一部分并且将所述搜索关键字的至少一部分提供给存储器处理器;以及存储器处理器可以经配置以将搜索关键字的至少一部分与存储元件内的选定条目进行比较。
[0007]在此实施例中,存储器处理器可以包含最高有效单元,所述最高有效单元经配置以指示存储器块在耦合到至少一个另外的存储器块上时,是否指定用于检查搜索关键字的至少一部分的最高有效位。
[0008]在此实施例中,存储器处理器可以包含最低有效单元,所述最低有效单元经配置以指示存储器块在耦合到至少一个另外的存储器块上时,是否指定用于检查搜索关键字的至少一部分的最低有效位。
[0009]在此实施例中,存储器处理器可以经配置以对作为二进制搜索树格式化数据存储在存储元件内的表的一部分执行搜索操作。
[0010]在此实施例中,存储元件可以配置为二进制内容可寻址存储器并且存储器处理器在二进制内容可寻址存储器操作状态中被配置。
[0011 ] 在此实施例中,存储元件可以配置为三进制内容可寻址存储器并且存储器处理器在三进制内容可寻址存储器操作状态中被配置。
[0012]在此实施例中,存储器处理器可以经配置以对作为特里结构格式化数据存储在存储元件内的表的一部分执行搜索操作。
[0013]在此实施例中,存储器块可以为多个存储器块中的一者,并且多级管线结构可以包含多个存储器块,其中多个存储器块中的每一个存储器处理器可以通过硬连线信号路径耦合到多个存储器块中的另一存储器块的至少一个其他存储器处理器上;并且其中多个存储器块的至少一个存储器处理器可以耦合到可编程电路上并且可以经配置以接收搜索关键字的至少一部分。
[0014]在此实施例中,多个存储器块的第一组可以配置为多级管线结构的第一级;并且多个存储器块的第二组可以配置为多级管线结构的第二级。
[0015]用于改进查找性能的方法的一个实施例可以包含:根据第一时钟频率操作集成电路的可编程电路;以及根据比第一时钟频率更高的第二时钟频率操作集成电路的存储器块(例如,块随机存取存储器)的存储器处理器;以及存储器块的存储元件可以耦合到存储器处理器上,并且存储器处理器可以为硬连线的并专用于执行存储元件中的操作。
[0016]在此实施例中,所述方法可以进一步包含:从包中提取搜索关键字的至少一部分;将搜索关键字的至少一部分提供给存储器处理器;以及将搜索关键字的至少一部分与存储元件内选定的条目进行比较。
[0017]在此实施例中,所述方法可以进一步包含:对作为二进制搜索树格式化数据存储在存储元件内的表的一部分执行搜索操作。
[0018]在此实施例中,所述方法可以进一步包含:对作为特里结构格式化数据存储在存储元件内的表的一部分执行搜索操作。
[0019]IC的另一实施例可以包括可编程电路和多级管线电路结构。多级管线电路结构可以包括多个块随机存取存储器。每一个块随机存取存储器可以包括具有至少一个数据端口的RAM元件和耦合到所述数据端口上的专用存储器处理器。多个块随机存取存储器中的每一个存储器处理器可以通过硬连线信号路径耦合到多个块随机存取存储器的另一块随机存取存储器的至少一个其他存储器处理器上。多个块随机存取存储器的至少一个存储器处理器可以耦合到可编程电路上并且可以经配置以接收搜索关键字的至少一部分。
[0020]在此实施例中,多个块随机存取存储器的第一组可以配置为多级管线化结构的第一级;以及多个块随机存取存储器的第二组可以配置为多级管线化结构的第二级。
[0021]在此实施例中,每一级的至少一个存储器处理器可以包含最高有效单元,所述最高有效单元经配置以指示存储器处理器所属于的块随机存取存储器在耦合到一个组的至少一个另外的块随机存取存储器上时,是否指定用于检查搜索关键字的至少一部分的最高有效位。
[0022]在此实施例中,每一级的至少一个存储器处理器可以包含:最低有效单元,所述最低有效单元经配置以指示块随机存取存储器在耦合到一个组的至少一个另外的块随机存取存储器上时,是否指定用于检查搜索关键字的至少一部分的最低有效位。
[0023]在此实施例中,可编程电路可以以第一时钟频率可操作;并且其中多个块随机存取存储器中的每一个存储器处理器可以以比第一时钟频率更高的第二时钟频率可操作。
[0024]在此实施例中,可编程电路可以经配置以从至少两个包中提取关键字数据并且并行地将关键字数据提供给多级管线电路结构。
[0025]在此实施例中,关键字数据的第一部分可以提供给多级管线电路的第一级;并且其中除了第一部分之外的关键字数据的每一个部分可以提供给延迟线并且从延迟线输出到除了第一级的多级管线电路结构的一个级上。
[0026]在此实施例中,多级管线电路结构可以包含:包含串联耦合的多个块随机存取存储器的第一子组的第一列;以及包含串联耦合的多个块随机存取存储器的第二子组的第二列;其中第一列与第二列串联耦合。
[0027]在此实施例中,多级管线电路结构可以包含:包含串联耦合的多个块随机存取存储器的第一子组的第一列;以及包含串联耦合的多个块随机存取存储器的第二子组的第二列;其中第一列与第二列并联耦合并且每一者接收相同的关键字数据。
[0028]IC的另一实施例可以包括根据第一时钟频率可操作的可编程电路以及包括具有第一数据端口和第二数据端口的RAM元件的块随机存取存储器。第一数据端口可以耦合到可编程电路上。存储器处理器可以耦合到第二数据端口上并且耦合到可编程电路上。存储器处理器可以根据比第一时钟频率更高的第二时钟频率可操作。存储器处理器可以为硬连线的并且专用于执行RAM元件中的操作。
[0029]在此实施例中,任选地,根据加载进入集成电路的配置数据一次仅第一数据端口或第二数据端口可操作。
【专利附图】

【附图说明】
[0030]图1为图示根据本说明书内所揭示的一个实施例的集成电路(IC)的架构的第一框图。
[0031]图2为图示根据本说明书所内揭示的另一实施例的块随机存取存储器(BRAM)的架构的框图。
[0032]图3为图示根据本说明书所内揭示的另一实施例的数据结构到查找系统的级的示例性映射的图式。
[0033]图4为图示根据本说明书内所揭示的另一实施例的使用BRAM的多级管线结构的框图。
[0034]图5为图示根据本说明书内所揭示的另一实施例的BRAM的框图。
[0035]图6为图示根据本说明书内所揭示的另一实施例的图5的BRAM的框图。
[0036]图7为图示根据本说明书内所揭示的另一实施例的BRAM的框图。
[0037]图8为图示根据本说明书内所揭示的另一实施例的IC内的多级管线结构的框图。
[0038]图9为图示根据本说明书内所揭示的另一实施例的IC内的多级管线结构的框图。
[0039]图10为图示根据本说明书内所揭示的另一实施例的多级管线结构的框图。
[0040]图11为图示根据本说明书内所揭示的另一实施例的多级管线结构的框图。
[0041]图12为图示根据本说明书内所揭示的另一实施例的多级管线结构的框图。[0042]图13为图示根据本说明书内所揭示的另一实施例的多级管线结构的框图。
[0043]图14为图示根据本说明书内所揭示的另一实施例的用于产生电路设计的系统的框图。
[0044]图15为图示根据本说明书内所揭示的另一实施例的电路设计的方法的流程图。【具体实施方式】
[0045]尽管本说明书以界定一个或多个实施例的特征的权利要求作为结论,这些特征被看作是新颖的,但是应相信,通过考虑结合附图进行描述,一个或多个实施例将得到更好的理解。根据需要,本说明书内揭示了一个或多个详细的实施例。然而,应了解,所述一个或多个实施例仅为示例性的。因此,本说明书内所揭示的的特定结构以及功能性细节并不解释为限制性的,而是仅作为权利要求书的依据以及作为用于教示所属领域的技术人员在实际的任何适当详细结构中以各种方式采用所述一个或多个实施例的代表性依据。此外,本文所使用的术语以及短语并不意图为限制性的,而是提供本文所揭示的一个或多个实施例的可理解描述。
[0046]本说明书内所揭示的一个或多个实施例涉及集成电路(IC),并且更确切地说涉及IC内的嵌入式存储器和专用处理器结构。根据本说明书内所揭示的一或多个实施例,查找性能可以通过嵌入式存储器所包括的处理元件被提高。在具有嵌入式存储器块的IC内,处理元件可以被包括以用于一个或多个嵌入式存储器块。当布置在管线配置中时,相邻处理元件之间的信号路径可以被硬化以增加电路的带宽。在一个方面中,存储器块所包括的处理元件可以专用于在特定存储器块内执行搜索或查找操作,每一个处理元件与所述特定存储器块相关联。
[0047]图1为图示根据本说明书内所揭示的一个实施例的IC的架构100的第一框图。例如,架构100可以在现场可编程门阵列(FPGA)类型的IC内实施。如图所示,架构100包括若干不同类型的可编程电路,例如,逻辑、块。例如,架构100可以包括大量不同的可编程拼片,所述可编程拼片包括数千兆位收发器(MGT) 101、可配置逻辑块(CLB) 102、随机存取存储器块(BRAM) 103、输入/输出块(IOB) 104、配置和时钟逻辑(CONFIG/CLOCKS) 105、数字信号处理块(DSP) 106、专门的I/O块107(例如,配置端口和时钟端口),以及其他可编程逻辑108,诸如数字时钟管理器、模/数转换器、系统监控逻辑,等等。
[0048]在一些IC中,每一个可编程拼片包括规范化地连接到并连接自每一个相邻拼片中的对应INTlll的可编程互连元件(INT) 111。因此,INTlll合起来实施用于所说明的IC的可编程互连结构。每一个INTlll还包括到达以及来自同一拼片内的可编程逻辑元件的连接,如图1的顶部处所包括的实例所示。
[0049]例如,CLB102可以包括可以被编程以实施用户逻辑外加单个INTlll的可配置逻辑元件(CLE) 112。BRAM103可以包括除了一个或多个INTlll之外的BRAM逻辑电路元件(BRL)113。通常,拼片中所包括的INTlll的数目取决于拼片的高度。在描画的实施例中,BRAM拼片具有与五个CLB相同的高度,但也可使用其他数目(例如,四个)。除适当数目的INTlll之外,DSP拼片106可以包括DSP逻辑电路元件(DSPL) 114。除INTlll的一个实例之外,10B104可以包括(例如)I/O逻辑电路元件(IOL) 115的两个实例。如所属领域的技术人员将清楚,连接(例如)到10L115上的实际I/O垫片通常不限于10L115的区域。[0050]在图1中所描画的实施例中,接近裸片中心的柱状区域(图1中示出为阴影)被用于配置、时钟以及其他控制逻辑。由此柱延伸的水平区域109用以横跨可编程IC的宽度来分配时钟和配置信号。一些利用图1中所图示的架构的IC包括另外的逻辑块,所述逻辑块分裂组成IC较大部分的规则柱状结构。另外的逻辑块可以为可编程块和/或专用电路。例如,被描绘成PR0C110的处理器块跨越了若干列的CLB与BRAM。
[0051]PROCl 10可以实施为硬连线处理器,所述硬连线处理器被制造为实施IC的可编程电路的裸片的一部分。PR0C110可以表示复杂程度各异的各种不同的处理器类型和/或系统中的任何一种,其范围为从单独的处理器(例如,能够执行程序代码的单个核心)到具有一个或多个核心、模块、协处理器、接口或类似者的整个处理器系统。
[0052]短语“可编程电路”可以指代IC内的可编程电路元件,例如,本文所描述的各种可编程或可配置的电路块或拼片、以及根据加载进入IC的配置数据选择性耦合各种电路块、拼片和/或元件的互连电路。例如,CLB103和BRAM103等在PR0C110外部的图1中示出的部分可以被认为是IC的可编程电路。
[0053]一般来说,直到配置数据被加载进入1C,可编程电路的功能才建立。一组或多组配置位可以用以对FPGA等的IC的可编程电路进行编程。配置数据或位通常被称作“配置位流”。一般来说,在没有首先将配置位流加载到IC中的情况下,可编程电路是不可操作或发挥作用的。配置位流有效地指定了电路设计。将配置位流加载到IC中,会实施或实例化由可编程电路内的位流所指定的特定电路设计。电路设计指定了(例如)可编程电路块的功能方面以及各种可编程电路块之间的连接性。
[0054]“硬连线”或“硬化”的(也即,不可编程的)电路被制造为IC的一部分。不同于可编程电路,硬连线电路或电路块不是在制造IC之后通过配置位流的加载来实施。硬连线电路通常被认为具有专用电路块和互连,举例来说,所述电路块和互连在不首先将配置位流加载到IC中的情况下就能够发挥作用。
[0055]在一些情况下,硬连线电路可以具有一个或多个可操作模式,所述可操作模式可以根据寄存器设置或存储在IC内的一个或多个存储元件中的值进行设置或选定。可操作模式可以(例如)通过将配置位流加载到IC中进行设置。尽管具有此能力,但硬连线电路并不被认为是可编程电路,因为硬连线电路在作为IC的一部分被制造时就是可操作的并且具有特定的功能。
[0056]图1意图图示可以用以实施IC的示例性架构,所述IC包括可编程电路(例如,可编程结构),以及处理器系统。例如,一列中逻辑块的数目、列的相对宽度、列的数目以及排序、包括在列中的逻辑块的类型、逻辑块的相对大小,以及包括在图1顶部处的互连/逻辑实施方案仅为示例性的。例如,在实际的IC中,CLB的超过一个相邻列通常包括在CLB出现处,以促进用户电路设计的有效实施。然而,相邻CLB列的数目可以随IC总大小的变化而变化。此外,IC内的PR0C110的大小和/或定位是仅出于说明的目的,并且并不意图作为本说明书内所揭示的一个或多个实施例的限制。
[0057]本说明书内揭示的一个或多个实施例可以在IC内实施,无论所述IC是可编程还是不可编程的。可编程IC为可以经编程以执行指定的逻辑功能的众所周知类型的集成电路。一般来说,可编程IC可以为包括专用IC的任何1C,所述IC包括至少某一可编程电路。可编程IC的实例可以包括但不限于FPGA、复杂可编程逻辑装置(CPLD)、以及掩模可编程装置。因此,短语“可编程1C”指代本文中所提到的IC以及仅部分可编程的1C。例如,另一类型的可编程IC可以包括硬编码晶体管逻辑和以可编程方式与硬编码晶体管逻辑互连的可编程开关结构的组合。
[0058]图2为图示根据本说明书内所揭示的另一实施例的BRAM205的架构的框图。图2图示了包括多个BRAM205的列200。列200 (例如)可以在具有如参考图1所图示的架构的IC内实施。举例来说,BRAM205可以代替或结合如参考图1所描述的BRAM103使用。如图所示,每一个BRAM205可以包括随机存取存储(RAM)元件210和存储器处理器215。在一个方面中,RAM元件210可以大体上与参考图1所描述的BRAM逻辑元件(BRL) 113类似或相同地实施。一般来说,RAM元件210可以包括可以通过信号220耦合到存储器处理器215上的一个或多个端口 240。存储器处理器215可以通过信号225和230串联耦合到相邻BRAM205的其他存储器处理器上。RAM元件210可以通过端口 240和信号220硬连线到存储器处理器215上。
[0059]如图所示,BRAM205可以耦合到可编程电路270上。可编程电路270可以使用如大体上参考图1所描述的一个或多个可编程拼片或块以及可编程互连电路进行实施。在一个方面中,RAM元件210可以包括可以通过信号244耦合到IC的可编程电路270上的一个或多个另外端口 242。例如,端口 242可以绕过存储器处理器215。
[0060]当端口 240可以以与存储器处理器215相同的时钟频率进行操作时,端口 242可以以与IC的可编程电路270相同的时钟频率进行操作。不同的数据端口可以根据加载进入IC中的配置位流被启用,例如,呈现可操作或不可操作的。例如,基于加载进入IC中的配置位流,端口 240或端口 242将在任何给定时间可操作。如图所示,可编程电路270进一步可以通过信号246耦合到存储器处理器215上。
[0061]在本说明书内,相同的参考标号被用以指代终端、信号线、导线,以及其对应的信号。就此而言,在本说明书内,术语“信号”、“导线”、“连接”、“终端”,以及“引脚”有时可以互换使用。还应了解,术语“信号”、“导线”或类似者,可以表示一个或多个信号,例如,通过单个导线的单个位的传输或通过多个平行导线的多个平行的位的传输。此外,每一个导线或信号可以根据具体情况表示在由信号或导线连接的两个或两个以上组件之间的双向通信。在一个方面中,存储器处理器215可以实施为硬连线电路块。此外,信号220、225、和230可以为硬连线信号路径。通过实施存储器处理器215和硬连线电路形式的信号220、225、和230,BRAM205可以在彼此之间更加有效地以串联方式并且以比使用可编程电路270 (例如,包括可编程电路块和可编程互连)的情况更快的时钟速度进行通信以将两个或两个以上BRAM205耦合在一起。因此,在一个实施例中,列200的BRAM205可以耦合在一起,从而形成多级管线,在所述多级管线中,数据可以通过存储器处理器215以及信号225和230以串联方式在列内从一个BRAM205传播到下一个上,而不使用可编程电路270。
[0062]一般来说,BRAM205可以经配置以以可编程电路270的频率或存储器处理器215的频率进行操作。例如,包括端口 240的RAM元件210可以经配置以以存储器处理器215的时钟频率进行操作,所述时钟频率比用于操作可编程电路270的频率更快。包括端口 242的RAM元件210进一步可以经配置以操作存储器处理器215的频率。存储器处理器215的频率(例如)可以为可编程电路270的频率几倍高或快。
[0063]BRAM205的每一个存储器处理器215可以专用于仅与该BRAM205的RAM元件210一起使用。由此,在一个方面中,存储器处理器215可以经配置以执行与RAM元件210相关的各种数据驱动功能。例如,存储器处理器215可以经配置以执行RAM元件210中的搜索和/或查找功能。
[0064]在另一实例中,存储器处理器215可以经配置以检测特定条件,并且响应于那些条件或信号,更新(例如,递增或递减)RAM元件210内的一个或多个存储器位置内的值,所述存储器位置已经被指定为计数器位置。关于计数器功能,存储器处理器215可以封装一个或多个计数器的实施。一个或多个触发条件可以通过系统内(例如,在可编程电路270内)其他地方的电路产生,所述可编程电路在BRAM205之外。响应于来自此类电路指示特定条件已经出现的信号,存储器处理器215可以递增或递减RAM元件210内的一个或多个不同存储器位置。以此方式,存储器处理器215可以经配置以操纵RAM元件210的一个或多个单元的内部状态。一个或多个单元或可以被改变的存储器位置(例如)可以为计数器。存储器处理器215可以被认为与RAM元件210紧耦合或集成。存储器处理器215可以提供围绕存储器的抽象层,由此封装所描述的专业行为。存储器处理器215的功能还说明了可以与通用处理器的行为或操作进行对照的封闭系统的操作,在所述通用处理器中,处理器与存储器之间的耦合为受到极少限制的,例如,为宽松的。与存储器进行交互的其他控制器,例如,存储器控制器,提供基本的读出和写入请求。例如,存储器控制器有效地安排存储在存储器中的数据的获取并且将所请求的数据从存储器转移到主机或从主机转移到存储器,而不在途中更改数据。
[0065]如所提到,BRAM205还可以经配置以执行查找操作。BRAM205可以经配置以对数据执行查找操作,所述数据以多种不同格式中的任何一种进行组织。例如,数据可以以二进制搜索树(BST)的形式格式化并且跨越两个或两个以上BRAM205进行存储。在另一实例中,数据可以以特里结构的形式格式化并且跨越两个或两个以上BRAM205进行存储。
[0066]BST指代基于节点的二进制树数据结构。BST也可以被称作排序或分类二进制树。BST的分级结构促进了更加有效的搜索,所述搜索试图使必须执行的比较的数目最小化。一般来说,BST由节点构造。每一个节点表示一个表条目。在最长前缀匹配(LPM)的情况下,每一个节点还存储条目的长度。
[0067]LPM,也称为最大前缀长度匹配,指代由在因特网协议(IP)网络连接中的路由器使用以从路由表中选定条目的算法。路由表中的每一个条目可以指定一个网络。因此,一个目的地地址可以匹配超过一个路由表条目。最具体的表条目可以被称作LPM,因为所述表条目具有匹配目的地地址的地址位的前导地址位的最大数目。
[0068]例如,前缀可以用于使路由表紧凑。IP地址本质上是分级的。因此,单个前缀可以用于表示IP地址的范围,而非存储许多平面地址条目。因为两个前缀可以重叠,其中一个前缀可以表示较大的一组地址并且另一个前缀可以表示较小的一组地址,所以最具体前缀的选择是需要的。最具体前缀表示最小组地址。在此实例中,最长匹配前缀为最具体或描述性前缀并且表示最小组IP地址。
[0069]再次参考BST,每一个节点可以充当一个父代。每一个父节点可以具有两个子代。在BST的视觉表示中,左子节点在父节点的左侧并且第二子代在父节点的右侧。左子代和左子节点的每一个后代必须包含小于存储在当前节点(例如,父节点)中的值的值。类似地,右子代和右子节点的每一个后代必须包含大于存储在当前节点中的值的值。对应地从左子节点和右子节点中延伸的左子树和右子树都必须也为BST。为了执行有效的查找,树应该保持平衡。
[0070]尽管每一个节点表示数据元素,但为了排序和查找目的,节点通常根据每一个节点的关键字进行比较而非使用与节点相关联的记录的任何部分。对BST进行的操作需要节点之间的比较。这些比较可以通过存储器处理器215在一个或多个不同的BRAM205内执行。特里结构指代用于存储关联数组的排序树数据结构,在所述关联数组中关键字通常是字符串。特里结构还可以被称作前缀树。不同于BST,特里结构中没有节点存储与该节点相关联的关键字。确切地说,特里结构内的节点的位置界定与该节点相关联的关键字。节点的所有后代具有与该节点相关联的字符串的公共前缀。根与空字符串相关联。值通常不与每一个节点相关联,仅与对应于所感兴趣的关键字的叶子和一些内部节点相关联。
[0071]像BST—样,特里结构可以用于促进LPM。特里结构将存储在其中的位分割以实现在每一层处的小逐位比较。特里结构有效地跨越层将位分条。由此,由从根节点到前缀节点的路径表示的逻辑二进制值与前缀的值匹配。每一层具有一个相关联的步幅,所述步幅指定在特里结构的每一层处待检测的位的数目。每一个节点在给定层中具有两步可能的分支。
[0072]使用特里结构的查找或搜索操作包括在特里结构的根处开始以及以关键字的最高有效位开始。在每一层处,进行分支判定/比较,其中每一个分支具有分配的二进制值。分支判定包括从前缀的顶部处提取位的步幅数目以及跟随具有相同二进制值的分支。当节点跟随包含前缀的分支时,则前缀与搜索关键字匹配。过程可以被重复并且朝向最后的特里结构层和最低有效位继续,直到最长匹配前缀被找到。用于搜索特里结构格式化数据所必需的比较可以通过一个或多个BRAM205或其内的存储器处理器215执行。图3为图示根据本说明书所内揭示的另一实施例的数据结构305到查找系统310的级的示例性映射的图式。在一个方面中,数据结构305可以表不BST。在另一方面中,数据结构305可以表不特里结构。在任一情况下,图3图示了数据结构305被分段成指示为层0、1、2、和3的层的方法。
[0073]数据结构305的每一层可以映射、或分配到将在本说明书内进行更详细地描述的查找系统310的特定级。一般来说,查找系统310可以使用如参考图2所描述的BRAM(例如,BRAM的列)来实施。多个BRAM可以串联耦合在一起形成多级管线结构。多个BRAM可以组织成多组BRAM,其中每一组包括两个或两个以上单独的BRAM。每一组BRAM可以实施查找系统310的级,数据结构305的每一个层被映射到所述级上。
[0074]应了解,数据结构305仅出于说明的目的而提供。由此,跨越一个或多个BRAM而存储的实际数据结构可以包括更少或更多的节点。此外,当需要时,数据结构可以具有相同或不同的层次。
[0075]图4为图示根据本说明书内所揭示的另一实施例的使用BRAM的多级管线结构400的框图。图4图示了不同的BRAM205可以被分组成多个级,其中每一个级可以根据具体情况对应于BST或特里结构的数据结构的层。出于说明的目的,图4中描画的实例涉及BST实施方案。
[0076]如图所示,每一个BRAM205包括RAM元件210和存储器处理器215。信号路径405图示了通过存储器处理器215从而形成多级管线结构400的硬连线管线的数据流。只要足够数目的相邻的BRAM205经分配以满足每一级的存储器要求,多级管线结构400就可以实施(例如,映射)到BRAM205的列上。图4图示了表示为级O和级I的两个级,其中管线自下而上进行流动,例如,从级O到级I。图4中描画的实例示出了在每一级处加倍的存储器的数量,这是BST实施方案的更深层的特征。
[0077]如所简单提到,一个“组”可以指代“K”个BRAM205,其中“K”可以为一或更多的整数值。每一级可以形成一个或多个组,其中每一组包括K个BRAM205。尽管每一级可以包括一组或多组BRAM205,但仅一组BRAM205在任何给定时间处在每一级内都是起作用的。例如,级O包括标记为组I的单个组BRAM205。因为级O包括仅单个组,所以该组,也即,组I是起作用的。然而,级I包括表示为组2和组3的两个组。在级I内,组2或组3在任何给定时间处是起作用的。未起作用的组可以对信号路径405实施穿通行为。如所提到,对于BST实施方案,假设BRAM205中的每一者使用相同的存储器容量,那么每一级的容量可以加倍。
[0078]—般来说,每一个存储器处理器215可以经配置以执行功能,诸如存储表条目、存储查找结果、以及将选定条目与搜索关键字或其部分进行比较。如所提到,存储器处理器215和信号路径405可以是硬连线的。
[0079]在一个方面中,BRAM205之间的互连可以最小化。“K”的大小,例如,在每一组中的BRAM205的数目,可以根据表达式K = (32/ff)+l来确定,其中“W”表示每一个表条目的宽度。一个组可以将表条目存储在顶部“K-1”个BRAM205中。表结果可以存储在底部BRAM205中。搜索关键字和查找上下文可以经过作为部分信号路径405如存储器处理器215。“查找上下文”可以指代(例如)存储器地址、结果、和/或状态信息。顶部“K-1”个BRAM205可以从地址中检索存储的条目并且将检索的条目与分段与搜索关键字进行比较。比较可以确定下一级的上下文(例如,新地址)和结果。上下文和结果随后可以传递到管线中的下一个 BRAM205 上。
[0080]图5为图示根据本说明书内所揭示的另一实施例的BRAM500的框图。BRAM500经配置用于具有用于实施LPM的BST类型的数据结构的实施方案。在所示出的实例中,BRAM500经配置以实施范围比较。应了解,如所描述,BRAM500可以实施比较操作的一个32位部分。如所论述,一个或多个BRAM500以管线方式连接在一起以形成多个级,其中每一级可以执行比较操作的32位部分。
[0081]内容可寻址存储器(CAM)指代当实施准确的匹配策略时可以使用的存储器。在一个方面中,二进制CAM(BCAM)存储器可以被使用。在另一方面中,对于更加一般的匹配,例如,LPM,三进制CAM(TCAM)可以被使用。TCAM的“三进制”部分指代将O、1、或* (通配符)用于每一个表位位置。图5图示了用于LPM类型的查找的TCAM实施方案。TCAM实施方案可以利用每一个二进制表条目(例如,节点)存储位掩码。位掩码可以指示值的哪些位在查找操作期间必须匹配。因此;每个表条目数据位存储两个位。
[0082]BRAM500可以包括RAM元件505和存储器处理器510。如图所示,RAM元件505可以包括表示为数据端口 A和数据端口 B的两个数据端口。数据端口 A和B中的每一者可以配置为32位数据端口。RAM元件505进一步可以包括经配置用于10位操作的地址端口和启用端口。如所论述,RAM元件505可以包括可以直接耦合到可编程电路上的一个或多个另外端口(未图示)。当利用存储器处理器510时,BRAM500的耦合到可编程电路上的端口可以呈现不可操作。
[0083]图5中图示的示例性配置利用了 RAM元件505的双端口性质以用于将搜索词与存储值的上限和下限进行比较。比较可以用于确定沿哪个方向向下移动用于下一管线级的地址形式的BST。存储器处理器510可以包括比较器块515-1和515-2以及形成地址块525。
[0084]关键字可以通过信号530从一个BRAM传递到下一个。如所论述,信号530可以表示超过一个数据线或导线。像存储器处理器510和其中穿过的各种信号一样,信号530可以为硬连线的。
[0085]查找上下文可以在另外的信号上进行传递,所述信号在图5中表示为信号532、534、536、和538。信号532和534可以对应地为上限和下限比较信号,其中每一个信号在宽度上为4位。信号536可以传输结果和17位信号形式的状态信息。信号538可以传输14位信号形式的地址信息。
[0086]如图所示,存储器处理器510可以产生待输出到管线架构内的下一个存储器处理器(未图不)上的每一个对应信号的经更新版本。例如,信号532’、534’、536’、和538’可以被产生并且作为输入耦合到下一个存储器处理器上。信号530可以持续(例如)BRAM的列的长度。
[0087]在操作中,存储器处理器510可以接收关键字的一个部分(例如,片段)形式的输入(信号530)、先前比较结果和状态(信号536)、所读出的地址和传递到随后或下一级的下一个地址(信号538)。如所提到,关键字的片段可以为32位。出于说明的目的,RAM元件505可以经配置以存储1024个条目,其中每一个条目具有36位宽度。在此实例中,可以将有效信号530-1提供给RAM元件505以启用RAM元件505以在选定的时钟周期上读出和/或写入。在一个方面中,有效信号530-1可以从信号530中获得。例如,通过配置位流的加载而可配置的寄存器560可以被包括。寄存器560可以匹配一个或多个地址位(如配置位流所指定),例如,顶部“M”位,其中M为整数值,其中顶部M地址位来自信号538。寄存器560的输出连同信号530-1可以被提供给“与”门562。因此,仅当地址的顶部M位匹配并且信号530-1指示“有效”时,RAM元件505在一个特定时钟周期上被启用。当启用时,存储器处理器510可以从RAM元件505中进行读出、执行任何所需的比较、以及按所需修改对应于信号536和536’的结果和状态。
[0088]如图所示,信号538被提供给多路复用器542。提供给多路复用器542的控制信号可以来自最高有效单元(MSC) 540。MSC540可以实施为寄存器,所述寄存器可以为可配置的。例如,存储在MSC540中的值可以通过配置位流的加载而被加载或指定。MSC540指定BRAM500是否对应于一组BRAM中的最高有效位(MSB),例如,特定级中的最高有效位。当被设置时,BRAM500可以更新提供给下一个BRAM或管线的下一级的地址。例如,当MSC540被设置时,多路复用器542可以通过形成地址块525将所产生或确定的最新确定地址作为信号538’进行传递。当MSC540未被设置时,通过信号538接收的地址可以作为信号538’被传递和输出。
[0089]最低有效单元(LSC) 544也可以被提供。像MSC540 —样,LSC544可以为可以通过配置位流的加载进行设置的寄存器。当LSC544被设置时,来自比较器块515-1和515-2中的每一者的比较输出可以置零并且对应地通过信号532’和534’传播到管线中的下一个存储器处理器。当LSC544未被设置时,使用比较器块515-1和515-2可以执行分段比较。[0090]除接收来自LSC544的信号之外,比较器块515_1和515_2中的每一者还可以接收在给定时钟周期上可操作的有效信号,例如,信号530-1。比较器块515-1可以执行上限比较,而比较器块515-2可以执行下限比较。如图所示,图5图示了一个实例,其中RAM元件505的数据端口 A和B两者都被用于执行并行的上部和下限比较,以便确定在BST内沿哪个方向移动,如通过由形成地址块525产生的地址所指定。
[0091]一般来说,通过比较器块515-1和515-2执行的分段比较可以与级中的其他BRAM的比较结果(例如,如通过信号532和534所接收)进行合并,并且用于确定关键字是小于还是等于从RAM元件505中由信号538指定的地址中读出的表条目值。
[0092]在一个方面中,下一个地址可以由形成地址块525通过将如通过信号538所接收的当前地址左移一位以及将比较结果分配为底部地址位而形成。用于多路复用器546的控制信号548可以为信号530-1和信号564的逻辑与。信号564可以从形成地址块525中输出并且指示是否已检测到匹配。控制信号548指示是否将从RAM元件505的数据端口 A中获得的结果和状态信息作为信号536’进行传递或者是否将从先前BRAM中接收的结果和状态信息(例如,传递信号536)作为信号536’进行传播。响应于确定关键字匹配表条目值、状态对于当前时钟周期是有效的,例如,信号530-1和信号564都为真使得控制信号548为真,从数据端口 A获得的结果和状态可以输出为信号536’作为新的结果和状态。以另外的方式,在信号536上接收的结果和状态输出为信号536’。
[0093]图6为图示根据本说明书内所揭示的另一实施例的图5的BRAM500的框图。在图6中,BRAM500经配置用于具有用于实施LPM的BST类型的数据结构的实施方案。鉴于图5图示了用于TCAM类型的存储器的一个实施例,图6图示了用于BCAM类型的存储器的一个实施例。因此,仅利用了单个比较器块515。此外,仅RAM元件505的单个数据端口(也即数据端口 A)被访问。
[0094]因为存储器处理器510在一定程度上是可配置的,所以尽管实施为硬连线块,但在一个方面中,组件和/或连接可以通过合适的配置位流的加载而被禁用,而非移除此类比较器块515-1和信号532、532’以及从数据端口 B到比较器块515-1、从LSC544和信号530-1到比较器块515-1、以及从比较器块515-1到形成地址块525的其他内部连接。就此而言,图5的存储器处理器510和图6的存储器处理器510不必实施为两个不同的硬连线电路块,而是实施为具有可以通过适当配置位流的实施或加载进行选定的TCAM操作状态和BCAM操作状态的一个硬连线电路块。
[0095]图7为图示根据本说明书内所揭示的另一实施例的BRAM700的框图。BRAM700经配置用于具有用于实施LPM的特里结构类型的数据结构的实施方案。如图所示,BRAM700可以包括RAM元件705和存储器处理器710。出于说明的目的,RAM元件705可以经配置用于存储2048个条目,其中每一个条目在宽度上为18位。
[0096]向存储器处理器710的输入可以包括关键字的一个片段或部分。向存储器处理器710的关键字片段输入可以被提供为向多路复用器720的输入并且表示为“关键字〈0>”和“关键字〈1:0>”。例如,关键字的一个或两个位可以作为输入提供给存储器处理器710。此夕卜,存储器处理器710可以通过信号712接收下一个子节点的地址并且通过信号714接收子节点的地址。
[0097]如图所示,子节点的地址可以提供给对准块716。对准块716可以将子节点的地址的选定部分提供给多路复用器718和720中的每一者的不同输入。例如,对准块716可以将地址的位10到12提供给多路复用器718的第一输入并且将地址的位9到11提供给多路复用器718的第二输入。
[0098]如上文所论述,多路复用器720可以接收关键字的片段。例如,多路复用器720可以具有两个输入,其中每一个输入经配置以接收在图7中用逗号指示的级联值。多路复用器720的每一个输入(例如)可以经配置以接收地址的一个或多个较高位和关键字的一个或多个(例如两个)位,所述关键字的一个或多个位为片段。出于说明的目的,图7中示出的实施方案假设关键字在每一级或BRAM700之外被分片或处理成两个或两个以上不同的片段。因此,如将在本文中更加详细描述,在通过延迟线馈入片段之后,每一级可以接收关键字的一部分,例如,一个位、两个位,或类似者。
[0099]步幅选择信号750可以提供给多路复用器718和720中的每一者。步幅选择信号750可以为存储器处理器710的可配置部分,所述可配置部分可以通过配置位流的加载被指定。因此,根据步幅选择信号750,多路复用器720可以输出第一输入或第二输入。例如,多路复用器720可以选择特里结构中的层的步幅。步幅指示在被执行的查找操作的当前级中使用的关键字位的数量。如图7中所描画,步幅为I或2。例如,当步幅为I时,那么一个关键字位被用于该级或每级中。当步幅为2时,两个关键字位被用于该级或每级中。
[0100]多路复用器728可以经配置以在初始级或随后级的地址之间进行选择。在初始级中,较大(例如,全长)的步幅被使用。在此实例中,全长步幅为11位,因为RAM元件705被实施为36K RAM,也就是说,通过2048个条目被配置为18位。对于所有随后的级,一个或两个位的步幅可以用作来自多路复用器728的输出。
[0101]此外,基于步幅选择信号750,多路复用器718可以输出地址的位10到12或从信号714中提取的地址的位9到11。来自多路复用器718的输出可以提供给电路块746。电路块746可以经配置以检查具有预定值的位的预定数目。和步幅选择信号750 —样,通过电路块746进行检查的位的特定数目和值通过配置位流的加载可以为可配置的。
[0102]例如,在一个方面中,电路块746可以实施为与门,所述与门可以将根据配置位流的加载进行确定或指定并且表示为信号722的一个或多个位值与多路复用器718的输出进行比较。根据图7中描画的实例,信号722可以可以与来自多路复用器718的信号输出进行比较的三个位值。然而,应了解,其他电路配置可以被实施并且与门的使用仅出于说明的目的。
[0103]多路复用器724可以接收作为第一输入的电路块746的输出和作为第二输入的硬编码值,例如,一个值。多路复用器724可以经配置以根据初始级信号752传递来自电路块746的输出或硬编码值。初始级信号752可以为用于级的可编程配置的以部分。由此,初始级信号752可以经设置以指示BRAM700是否实施查找管线的第一级。当有效信号754和来自多路复用器724的输出中的每一者对于给定时钟周期为真时,电路块726 (例如,与门)可以将启用信号740提供给RAM元件705的启用端口。
[0104]通过信号712’指定的下一个子地址可以(至少部分)通过更新级块730进行确定。多路复用器732可以根据控制信号类型756传递信号714或来自更新级块730的输出。更新级块730可以经配置以使跳跃距离递减一位。例如,更新级块730可以经实施以假设子指针为2维指针。控制信号类型756检查子代的类型是为2维指针还是为叶子。控制信号类型756(例如)可以作为子代的一部分被传递,例如,子代的一个位。因为叶子已经包含结果,所以叶子可以直接传递。2维指针需要如所描述通过更新级块730进行处理,例如,递减。
[0105]多路复用器732可以将通过多路复用器734接收的输出信号提供为第一输入。从提供给RAM元件705的地址端口的地址中读出的数据(例如,上下文和/或结果)可以从数据端口输出并且提供给多路复用器734的第二输入。多路复用器734可以根据控制信号跳跃758传递来自多路复用器732的输出或从RAM元件705中读出的数据。
[0106]控制信号跳跃758(例如)可以基于来自输入子信号714的两个检查而产生。两个检查可以包括或指示类型和跳跃距离。当输入子代的类型为2维指针时,第二检查可以执行,在所述第二检查上,跳跃距离等于零。控制信号跳跃758的分配可以根据(a)类型为叶子还是(b)类型为2维指针以及跳跃距离不为零来确定。如果条件(a)或(b)为真,那么控制信号跳跃758被分配为真。当控制信号跳跃758被分配真值时,来自多路复用器732的值被使用,例如,经过多路复用器734。否则,控制信号跳跃758被分配为假并且来自存储器的值被使用。
[0107]根据经配置步幅,对准块716可以将如在信号714上接收的用于子代的地址指针左移位,使得地址恰当地对准。输入子代可以为2维指针或叶子。如果为2维指针,那么可以检查跳跃距离是否等于零。当跳跃距离不为零时,子代的地址通过更新级块730递减并且子代被传递到下一级。当跳跃距离为零时,通过将底部步幅地址位设置为来自子代的地址指针,可以从存储器中读出新的子代。新的子代作为信号714’被传递到下一级。
[0108]多路复用器734可以向多路复用器736提供输出。如图所示,多路复用器736可以接收作为第一输入的来自多路复用器734的输出以及作为第二输入的信号712。因此,多路复用器736可以根据启用信号740将来自多路复用器734的输出或信号712作为信号712’进行传递。由多路复用器736产生的输出可以从存储器处理器710中输出为信号712’。因此,当BRAM700被启用以用于当前时钟周期时,存储器处理器710从存储器中读取并且更改下一个子代的地址,如信号712’上所指定和输出。
[0109]信号712’可以提供给多路复用器738作为第一输入。指定子代的地址的信号714可以提供给多路复用器738作为第二输入。多路复用器738可以根据控制信号742将信号712’或信号714作为信号714’进行传递。控制信号742指示BRAM700是否为“级边缘”。更确切地说,控制信号742可以指示BRAM700是否为管线结构的级的最后的BRAM。由此,控制信号742还可以为可以通过配置位流的加载进行指定的可配置信号。在任何情况下,当BRAM700为级的最后的BRAM时,基于控制信号742,多路复用器738有效地将如信号712’上所指定的下一个子代的地址分配给信号714’上的下一级的子代的地址。
[0110]图8为图示根据本说明书内所揭示的另一实施例的IC内的多级管线结构800的框图。图8图不了可以用于BST类型的表实施方案的一个实例。如图所不,包处理电路810可以在IC的可编程电路部分内实施。包处理电路810可以在具有第一时钟频率的第一时钟域中操作。一般来说,包处理电路810可以从所接收的包805-1、805-2、805-3、和805-4中的每一者中提取关键字。
[0111]如所论述,BRAM列820可以包括经实施以耦合在BRAM中的每一者内的各个存储器处理器的硬连线数据路径,所述BRAM在BRAM列820内以通信方式连接。BRAM列820可以在具有第二频率的第二时钟域中操作,所述第二频率不同于(例如,高于)时钟域I中的第一时钟频率。在一个实例中,第二时钟频率可以为第一时钟频率的倍数。在图8中描画的实例中,第二时钟频率可以为第一时钟频率的四倍。
[0112]因此,包可以到达可编程电路内(例如,包处理电路810内)的网络接口上。标头信息(例如,关键字)可以通过包处理电路810进行提取并且提供给BRAM列820。在时钟频率2为时钟频率I的四倍快的情况下,四个关键字可以提供给BRAM列820。因此,根据时钟频率2相对于时钟频率I的倍数,多个关键字可以被分组在一起并且并行提供给BRAM列820以用于处理。
[0113]在图示中,从包805中提取的每一个关键字可以为128位。包处理电路810可以将四个关键字并行地提供给BRAM列820,由此需要512个位线。当由BRAM列820接收时,由于速度增加,关键字815可以经串行化以便以串联方式通过多级管线架构进行传播,如图所示。四个关键字815可以在四个连续硬件周期中传递到BRAM列820中并且沿着硬连线数据路径连同有效指示位进行传播,所述有效指示位指示特定的BRAM何时接收到要进行操作的关键字或其部分。在此实例中,由于关键字宽度,数据路径可以为128位外加用于有效信号的另外的位,例如,总计129位。由于BRAM列820的速度上的增加,处理来自包805中的四个关键字815的结果825可以被输出。结果825可以并行地提供给IC的可编程电路。结果825实际上并行地包括四个17位结果,例如,每一个包或关键字的一个17位结果,所述结果可以从BRAM列820的最后的级中输出。
[0114]图9为图示根据本说明书内所揭示的另一实施例的IC内的多级管线结构900的框图。图9图示了可以用于特里结构类型的表实施方案的一个实例。为了便于图示,包处理电路未被图示,但包可以如参考图8所描述进行处理,其中关键字或其部分被提取并且提供给图9中图示的电路。
[0115]如图所示,BRAM列905可以包括“S”个级,其中S为整数,并且关键字可以具有初始步幅+S-1个位的宽度。四个连续的包关键字可以被提取并且并行地提供给BRAM列905。四个关键字的初始步幅位可以并行地提供给级O。在此实例中,级O可以接收四个11位初始步幅,例如,44位。其余的关键字位可以通过915-S馈送给延迟线915-1、915-2并且随后通过S-1馈送给级1,因此当对应的上下文到达该级时,每一个关键字到达适当的级。
[0116]延迟的长度可以为用于级X的“X”个周期,例如,用于级I的一个周期、用于级2的两个周期等。BRAM列905的结果920可以包括并行地在级S-1处的四个结果。每一个单独结果可以为18位。因此,结果920可以为4X18位。一个替代实施方案可以使用硬化数据路径将所有的关键字位传送给所有级,所述硬化数据路径可以在形成BRAM列905的BRAM中的每一者上方的一个或多个金属层内实施。
[0117]图10为图示根据本说明书内所揭示的另一实施例的多级管线结构1000的框图。图10图示了一种情况,其中在IC内的两个不同的BRAM列1005-1和1005-2串联耦合在一起以实施用于BST类型的表实施方案的较大结构。在示出的实例中,级0-7被映射到BRAM列1005-1上。级8-11被映射至Ij BRAM列1005-2上。
[0118]如所论述,多个关键字1010可以并行地从较慢的电路提供给较高速度的BRAM列1005。信号1015可以使BRAM列1005-1与BRAM列1010-2耦合。继续先前的实例,在所述实例中每一个关键字为128位并且每一个关键字或包的结果为17位,信号1015可以为580位信号路径以将四个关键字(4X128)和四个结果(4X17)从BRAM列1005-1中传播到BRAM列1005-2中。包括四个单独结果的结果1020可以从级11中收集并且输出。结果1020可以如参考图8所描述而被输出,例如,作为可以并行地提供给IC的可编程电路等的其他电路的四个单独17位结果。
[0119]图11为图示根据本说明书内所揭示的另一实施例的多级管线结构1100的框图。图11图示了一种情况,其中在IC内的两个不同的BRAM列1105-1和1105-2串联耦合在一起以实施用于特里结构类型的表实施方案的较大结构。在所示出的实例中,级O通过级(S-1)被映射到BRAM列1105-1上。级S通过级(2S-1)被映射到BRAM列1105-2上。
[0120]四个关键字1110的初始步幅位可以并行地提供给级O。在此实例中,级O可以接收四个11位初始步幅,例如,44位。其余的关键字位可以对应地通过1115-(2S-1)馈送给延迟线1115-1并且随后通过2S-1馈送给级1,因此当对应的上下文到达该级时,每一个关键字到达适当的级。明显地,延迟1115-1中每一者通过1115-(2S-1)提供增加数量的延迟,例如,延迟的一个另外的时钟周期。信号1120可以将如通过BRAM列1105-1所确定的四个结果(例如,4X18位结果或72位)提供给BRAM列1105-2。BRAM列1105-2的结果1125可以包括四个结果,所述结果在从级2S-1输出之后可以并行地被格式化。每一个单独结果可以为18位。因此,结果1125可以为4X18位。一个替代实施方案可以使用硬化数据路径将所有的关键字位传送给所有级,所述硬化数据路径可以在形成BRAM列1105-1和BRAM列1105-1的BRAM中的每一者上方的一个或多个金属层内实施。
[0121]图12为图示根据本说明书内所揭示的另一实施例的多级管线结构1200的框图。图12图示了用于BST类型的表的实施方案,其中在IC内的两个不同BRAM列1205-1和1205-2并行地进行操作,其中结果被合并。多级管线结构1200可以实施如图10 —样较大但具有较低时延的表。待实施的表可以被分割并且映射到两个单独的表中,所述单独的表对应地被映射到BRAM列1205-1和1205-2上。时延是较少的,因为产生的结构具有比使用串联耦合的BRAM列的初始表的实施方案更少的级。如图所示,如从四个接收包中提取的关键字1210(例如,相同的四个关键字)可以提供给BRAM列1205-1和1205-2中的每一者,如图所示。通过BRAM列1205-1和1205-2中的每一者确定的结果可以合并并且作为结果1220输出。结果1220可以(例如)通过选择LPM或返回不存在匹配来确定。
[0122]图13为图示根据本说明书内所揭示的另一实施例的多级管线结构1300的框图。图13图示了一种情况,其中在IC内的两个不同BRAM列1305-1和1305-2分别实施用于特里结构类型表实施方案的多级管线结构并且并联耦合。在所示出的实例中,级O通过级(S-1)被映射到BRAM列1305-1上并且映射到BRAM列1305-2上。
[0123]四个关键字1310的初始步幅位可以并行地提供给每一级O。在此实例中,级O可以接收四个11位初始步幅,例如,44位。其余的关键字位可以对应地在BRAM列1305-1和1305-2中的每一者内通过1315-(S-1)馈送到延迟管线1315-1并且随后通过S-1馈送到级1,因此当对应的上下文到达该级时,每一个关键字到达适当的级。当串联配置需要用于每一级的延迟线时,如图13中所示,一个延迟线可以将数据提供给两个平行级中的每一者,例如,在BRAM列1305-1和1305-2中的每一者中的相同的级。来自BRAM列1305-1和1305-2中的每一者中的合并结果1325可以从级S-1中的每一者中输出。多个管线的结果可以通过比较来自所有管线的输出以及因此选择LPM或返回不存在匹配来合并。每一个单独结果可以为18位。因此,结果1325可以为4X18位。
[0124]图14为图示根据本说明书内所揭示的另一实施例的用于产生电路设计的系统1400的框图。系统1400可以包括通过系统总线1415耦合到存储元件1410上的至少一个处理器1405。由此,系统1400可以将程序代码存储在存储元件1410内。处理器1405可以执行通过系统总线1415从存储元件1410中获取的程序代码。例如,在一个方面中,系统1400可以实施为适合于存储和/或执行程序代码的计算机。然而,应了解,系统1400可以以任何能够执行本说明书内所描述的功能的系统的形式来实施,所述系统包括处理器以及存储器。存储元件1410可以包括一个或多个物理存储装置等,例如,本地存储器1420以及一个或多个大容量存储装置1425等。本地存储器1420指代随机存取存储器或通常在程序代码的实际执行期间使用的其他非持久性存储器装置。大容量存储装置1425可以实施为硬盘驱动器或其他持久性数据存储装置。系统1400还可以包括一个或多个高速缓冲存储器(未图示),所述高速缓存存储器提供至少某些程序代码的临时存储器,以减少在执行期间必须从大容量存储装置1425中检索程序代码的次数的数目。
[0125]键盘1430、显示器1435、和指向装置(未图示)等输入/输出(I/O)装置任选地可以耦合到系统1400上。I/O装置可以直接或通过插入I/O控制器耦合到系统1400上。网络适配器也可以耦合到系统1400上,以通过插入专用或公共网络使系统1400变得耦合到其他系统、计算机系统、远程打印机,和/或远程存储装置上。调制解调器、电缆调制解调器、以及以太网卡为可以与系统1400 —起使用的不同类型的网络适配器的实例。
[0126]如图14中所描画,存储元件1410可以存储电路设计模块1440。以可执行程序代码的形式被实施的电路设计模块1440可以由系统1400执行。电路设计1440可以产生用于在IC内实例化或实施为IC的一个或多个电路设计。所产生的电路设计可以在IC内实例化,无论IC是或不是可编程1C。此外,电路设计可以以编程形式指定为网表、一个或多个硬件描述语言文件、或作为一个配置位流。使用系统1400所产生的电路设计可以包括或指定适合于配置本说明书内所揭示的各种多级管线结构的配置数据。例如,当以如本文所描述的管线架构进行布置时,电路设计可以指定所需用于配置RAM元件和存储器处理器的参数。
[0127]在一个方面中,电路设计模块1440可以经配置以执行标准综合、位置和路线及其类似物等功能以产生电路设计。给定表条目和各种用户参数,电路设计模块1440进一步可以产生适当的数据结构实施方案以加载到指定的多级管线结构中。
[0128]图15为图示根据本说明书内所揭示的另一实施例的电路设计的方法1500的流程图。图15可以通过参考图13所描述的系统1400等的系统进行实施。
[0129]在框1505中,系统可以接收指定表实施方案的类型的用户输入。例如,在一个方面中,指示表是为BST还是为特里结构实施方案的用户输入可以被接收。在BST实施方案的情况下,用户输入进一步可以指示BST实施方案是为BCAM还是为TCAM实施方案。
[0130]在框1510中,系统可以接收指定表大小信息的用户输入。例如,指定表的宽度和高度的用户输入可以通过系统被接收。在框1515中,系统可以产生可以被输出的电路设计,例如,编程电路设计。产生的电路设计可以指定或包括符合所接收的用户指定参数的多级管线结构。例如,通过系统从用户接收的参数可以根据具体情况经变换以产生用于一个或多个BRAM的适当设置,并且被包括在产生的电路设计内,所述电路设计还可以包括将在IC的可编程电路内实施的各种子电路。
[0131]在框1520中,系统进一步可以构造表实施方案,例如,BST或特里结构,所述表实施方案利用由用户提供或确认给系统的表条目进行填充。例如,在特里结构实施方案的情况下,被填充的表可以包括在叶子处的前缀。所产生的表实施方案可以映射到在框1515中产生的多级管线架构上。应了解,映射算法可以产生每层均衡数目的节点。
[0132]在一个或多个实施例中,可以根据各种技术执行表实施方案和映射,所述技术包括但不限于,在乐(Le)等人的“基于可扩展高吞吐量SRAM的使用FPGA的IP查找架构”,场可编程逻辑和应用(2008年),以及江(Jiang)等人的“基于特里结构的存储器均衡线性管线架构的IP查找”,高性能互连(2007)内描述的那些,这些内容中的每一者以全文引用的方式并入本文中。
[0133]在框1525中,通过系统产生的电路设计可以被加载进入IC中。在框1530中,系统可以将框1520中产生的表实施方案加载进入多级管线结构中,所述多级管线结构由电路设计指定并且现在利用IC进行实施。
[0134]图式中的流程图图示了根据本说明书内所揭示的一个或多个实施例的架构、功能,以及系统、方法,和计算机程序产品的可能的实施的操作。就此而言,
[0135]流程图中的每一个框可以表示代码的模块、片段,或部分,所述代码包括实施指定的逻辑函数的可执行程序代码的一个或多个部分。
[0136]应当注意,在一些替代的实施中,框中所提到功能可以不以各图中所提到的顺序出现。例如,根据所涉及的功能,连续示出的两个框实际上可大体同时执行,或所述框有时可能以相反顺序执行。还应注意,流程图图示的每一个框以及流程图图示中框的组合可以通过专用的基于硬件的系统或专用硬件以及可执行指令的组合来实施,所述基于硬件的系统执行指定的功能或动作。
[0137]一个或多个实施例可以以硬件或硬件与软件的组合实现。一个或多个实施例可以以在一个系统中集中的方式或以分布的方式实现,在所述分布的方式中不同的元件遍布若干互连系统。任何种类的数据处理系统或适合于执行本文中所描述方法的至少一部分的其他设备是适合的。
[0138]一个或多个实施例进一步可以被嵌入计算机程序产品等装置中,所述装置包含实现本文所描述的方法的实施的所有特征。该装置可以包括数据存储媒体,例如,非暂时性计算机可用或计算机可读媒体,所述数据存储媒体存储程序代码,当在包括存储器和处理器的系统中被加载并且执行时,所述程序代码使得系统来执行本说明书内所描述的功能的至少一部分。数据存储媒体的实例可以包括,但不限于,光学媒体、磁性媒体、磁光媒体、随机存取存储器等计算机存储器、大容量存储装置(例如,硬盘),或类似者。
[0139]在本文中,术语“计算机程序”、“软件”、“应用”、“计算机可用程序代码”、“程序代码”、“可执行代码”,其变体和/或组合,表示一组指令的用任何语言、代码或符号的任何表达,所述指令意欲使系统具有信息处理能力以直接地或者在以下操作中的任一者或两者之后执行特定功能,所述操作为:a)转换成另一种语言、代码,或符号;b)采用不同的材料形式进行复制。例如,程序代码可以包括,但不限于,子程序、功能、步骤、目标方法、目标实施方案、可执行应用、小程序、服务器小程序、源代码、目标代码,共享库/动态加载库和/或设计用于在计算机系统上执行的其他指令的序列。[0140]如本文所使用的术语“一”被定义为一个或一个以上。如本文所使用的术语“多个”被定义为两个或两个以上。如本文所使用的术语“另一个”被定义为至少第二个或更多。如本文所使用的术语“包括”和/或“具有”被定义为包含,也即,开放的语言。如本文所使用的术语“耦合”被定义为连接,不论是没有任何插入元件的直接地连接还是利用一个或多个插入元件的间接地连接,除非另外指明。两个元件还可以以机械方式、电力方式,或通过通信信道、路径、网络,或系统以通信方式连接。
[0141]在不脱离其精神或基本属性的情况下,本说明书内所揭示的一个或多个实施例可以以其他形式实施。因此,当指示一个或多个实施例的范围时,应该参考以下权利要求书而非参考前述说明书。
【权利要求】
1.一种集成电路,包含: 根据第一时钟频率而操作的可编程电路;以及 存储器块,包含: 具有至少一个数据端口的存储元件;以及 耦合到所述存储元件并且耦合到所述可编程电路上的存储器处理器; 其中所述存储器处理器根据比所述第一时钟频率更高的第二时钟频率而操作;以及 其中所述存储器处理器为硬连线的并且专用于执行所述存储器块内所述存储元件中的操作。
2.根据权利要求1所述的集成电路,其中所述存储元件为随机存取存储(RAM)元件,并且所述存储器处理器经配置以响应于更新条件更新所述RAM元件内的至少一个位置。
3.根据权利要求1或2所述的集成电路,其中所述可编程电路经配置以从包中提取搜索关键字的至少一部分并且将所述搜索关键字的所述至少一部分提供给所述存储器处理器;以及 其中所述存储器处理器经配置以将所述搜索关键字的所述至少一部分与所述存储元件内的选定条目进行比较。
4.根据权利要求3所述的集成电路,其中所述存储器处理器包含最高有效单元,所述最高有效单元经配置以指示所述存储器块在耦合到至少一个另外的存储器块上时,是否被指定用于检查所述搜索关键字的所述至少一部分的最高有效位。
5.根据权利要求3所述的集成电路,其中所述存储器处理器包含最低有效单元,所述最低有效单元经配置以指示所述存储器块在耦合到至少一个另外的存储器块上时,是否被指定用于检查所述搜索关键字的所述至少一部分的最低有效位。
6.根据权利要求1到5中任一项所述的集成电路,其中所述存储器处理器经配置以执行对作为二进制搜索树格式化数据存储在所述存储元件内的表的一部分的搜索操作。
7.根据权利要求6所述的集成电路,其中所述存储元件被配置为二进制内容可寻址存储器并且所述存储器处理器被配置为处在二进制内容可寻址存储器操作状态。
8.根据权利要求6所述的集成电路,其中所述存储元件被配置为三进制内容可寻址存储器并且所述存储器处理器被配置为处在三进制内容可寻址存储器操作状态。
9.根据权利要求1到5中任一项所述的集成电路,其中所述存储器处理器经配置以执行对作为特里结构格式化数据存储在所述存储元件内的表的一部分的搜索操作。
10.根据权利要求1所述的集成电路,其中所述存储器块为多个存储器块中的一者,并且其中多级管线结构包含所述多个存储器块,其中所述多个存储器块中的每一个存储器处理器通过硬连线信号路径耦合到所述多个存储器块中的另一存储器块的至少一个其他存储器处理器上;以及其中所述多个存储器块的至少一个存储器处理器耦合到所述可编程电路上并且经配置以接收搜索关键字的至少一部分。
11.根据权利要求10所述的集成电路,其中 所述多个存储器块的第一组被配置为所述多级管线结构的第一级;以及 所述多个存储器块的第二组被配置为所述多级管线结构的第二级。
12.一种用于改进查找性能的方法,包含: 根据第一时钟频率操作集成电路的可编程电路;以及根据比所述第一时钟频率更高的第二时钟频率操作所述集成电路的存储器块的存储器处理器; 其中所述存储器块的存储元件耦合到所述存储器处理器上,并且所述存储器处理器为硬连线的并且专用于执行所述存储元件中的操作。
13.根据权利要求12所述的方法,进一步包含: 从包中提取搜索关键字的至少一部分; 将所述搜索关键字的所述至少一部分提供给所述存储器处理器;以及 将所述搜索关键字的所述至少一部分与所述存储元件内的选定条目进行比较。
14.根据权利要求12或13所述的方法,进一步包含: 执行对作为二进制搜索树格式化数据存储在所述存储元件内的表的一部分的搜索操 作。
15.根据权利要求12或13所述的方法,进一步包含: 执行对作为特里结构格式化数据存储在所述存储元件内的表的一部分的搜索操作。
【文档编号】H03K19/177GK103959652SQ201280054848
【公开日】2014年7月30日 申请日期:2012年8月17日 优先权日:2011年11月8日
【发明者】克里斯多夫·E·尼利, 高登·J·布莱诺 申请人:吉林克斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1