CN1284180A - 利用布尔逻辑和可编程结构进行地址分析的方法和装置 - Google Patents
利用布尔逻辑和可编程结构进行地址分析的方法和装置 Download PDFInfo
- Publication number
- CN1284180A CN1284180A CN98813238A CN98813238A CN1284180A CN 1284180 A CN1284180 A CN 1284180A CN 98813238 A CN98813238 A CN 98813238A CN 98813238 A CN98813238 A CN 98813238A CN 1284180 A CN1284180 A CN 1284180A
- Authority
- CN
- China
- Prior art keywords
- here
- priority
- input
- memory
- logic
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Logic Circuits (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及一方法和装置,用于执行处理函数和用于分析位字段的可编程逻辑,尤其涉及到通信网络中分析网络地址。本发明使用基于计算规则的处理函数,以分析位字段。在此,所说的计算规则如布尔操作是以硬件实现,以分析位字段诸如在一个时钟周期中的网络地址。本发明还描述了在可编程逻辑器件中使用优先级部件的方法和装置,以把上述位字段分析扩充到包括区分优先级次序,以便象最长前缀匹配的原理可在网络地址分析中使用。带有使用在结构中的存储器逻辑单元的装置被介绍。
Description
本发明总体涉及可编程逻辑器件结构,特别涉及允许使用“不介意”和优先权函数的结构。逻辑器件结构通常被用在诸如通信网络地址分析***的分析***中,而且逻辑器件结构也被用做微处理器结构的一部分。
在网络交换机中的数据流、任务和事件
为了提供一个背景和理解本发明涉及(但不限于)的***,对数字通信网络交换机/路由器进行描述。网络交换机/路由器的功能就是从网络节点接收数据包、分析每个数据包及把数据包发送到合适的节点上。这些功能是由网络程序和协议来定义的。
图1描述了方便地利用本发明的一个典型的网络交换机的一般功能配置。图1中的的***包括:
●一组输入设备101A-101I,它把网络部件连接到不同的物理介质中,该物理介质被用来从其它网络部件或终端传输数据。
●一组被指明为转发引擎(FE)的部件102A-102I,在其中,该引擎分析输入包的目的网络地址,并通过网络部件为其建立最好的路由。FE是一组部件,它可以方便地使用本发明。
●交换机103,它根据上述转发引擎102A-102I的地址分析结果,把数据包从给定的输入端传送到由输入转发引擎决定的输出端,通过交换机来选择路由。
●一组输出设备104A-104I,它把网络部件连接到物理介质,通过物理媒介,数据被传送到其它路由器、交换机或终端。
●一控制、管理和维护部件(CAMU)105,它管理和控制路由器。注意,为简明起见,在图1中只列出了第一个和最后一个输入组件101A-101I、预处理部件102A-102I和输出部件104A-104I。
还应注意,输入输出信道的数目不是固定不变的,而是随着路由器设备而变化的。
在某些***中也用地址来保存传送记录,例如:谁给谁传送数据、需要多长时间、所传送的数据总量是多少等等。在网络中利用这些记录完成诸如网络维护、网络统计、网络优化、记帐等工作。为了处理通信量、构建所需的记录,必须通过交换机中的转发引擎部件分析出唯一地址。分析的结果可以是数据通过交换机时必须使用的路径,构建数据传送记录所需的信息,或诸如此类。在下面这些结果都将被指明地址分析的结果或动作号。作为通信网络的一个例子,基于互联网协议第4版(用IPv4表示)的因特网,通过交换机用来决定路由的唯一的网络地址是以二进制形式给出的,其长度为32位。网络地址被分为两个子字段:1)子网号或前缀,2)主机号。路由在子网之间数据的路由器,使用前缀号在网络中路由数据。
前缀的长度会随着子网的不同而改变,由于会出现这样的情况:两个不同长度的前缀,但前n位中具有相同的二进制模式,这必须按两个不同的方向去路由,这里使用最长前缀匹配方法。该例子在因特网标准:争求意见1519、无类别域间路由(CIDR):地址分配和聚合策略中得到解释。最长前缀匹配查找最长前缀(一个最具体的路由信息),要被路由匹配的包地址,及按该前缀路由此包。这个问题将在本使用的后面做进一步的阐述。本发明将改进地址分析的速度。
在每个网络节点(路由器)中,存储着关于如何按照每个数据包的目的地址路由输入通信量的信息。信息通常存储在表里,表里记录着目的地址(网络地址)和动作码的位模式间的关系。(我们把这种表称做路由表,但在文献中能发现其它的表达法,如:“网络地址表”,或简单的称为“表”。作为一个例子,考虑下面所示的路由表:
表1路由表的一个例子
在这张路由表里a0或a1表示在该指定位置上的位分别必须是0或1,X符号表示在该指定位置上的位是无关紧要的(这个符号代表“不介意”)。
路由表里的动作号代表通过交换机或路由器的路径是按照网络拓扑结构构建的。网络拓扑结构是动态的,这意味着虽然大多数网络是由人工设计的,因而路由表可由网络管理员建立,但大多数网络经历着不稳定性,这使得某些网络路径或网络中的某些部分有时达不到。在这样的网络中,人工构建的路由表必须在操作期间被更新(由网络自动更新),以使路由表总是代表当前的网络拓扑关系。
路由表的另一个问题是在路由表中会出现与某个目的地址匹配的表有多入口的情况。作为一个例子,考虑线路号1、2、3。如果被分析的目的地址的前四位(位a1、a2、a3、a4)是(0111),则所有这些线路都将匹配。因为数据包只能通过一条路径来传送,在路由表中必须包括这些线路的优先权,这在优先权列指明了这一点。上面的例子中,具有最高优先权值的的那个入口被选中,并返回相关的动作码。在上面所显示的路由表中,要被分析的目的地址的前四位(比特位a1、a2、a3、a4)是(0111)的情况下,应返回动作码2。(在其它执行中也许会选择不同的优先权值代码设计方案)。
用现有软硬件解决方案进行地址分析存在的问题
在现有技术中,地址分析由软件算法或由专门设计的硬件完成。典型地,软件算法基于使用一种查找树(如:二叉查找树)的一些查找过程。该查找树包含所有的网络地址必须与之匹配的网络结构。软件算法的优点是:更新和维护网络功能灵活。当新协议、新功能和/或新算法将被执行时,大多数情况下只须更新***软件。这种方发的缺点是软件分析引入时的延时。对带有许多终端的大网络而言,地址分析可能是很耗时的工作,因而限制了网络的性能。
另外,查找树必须定期更新,并保持均衡以达到最优查找速度。在执行这些维护工作期间,***根本不能执行任何网络地址分析。这甚至还降低整个***的性能。
在执行专门设计的硬件***中,地址分析的延时更少。可以为某一特定功能对硬件进行优化,因此延时会被保持在最小限度内。
使用查找树的硬件确实存在。但即使硬件装置速度很快,存储器消耗和所需的硬件数也很显著。维护查找树所需的时间和保持查找树平衡状态也仍然是重要的。
在现有软件解决方案中,一个典型的实现方法使用了基于查找树的表查找功能。图2显示了二又查找树的一个例子。查找方法是搜遍查找树分支的一个遍历过程。在每个分支元素上,执行下面的过程(在下面的例子中,假定查询算法当前正在检测的图2查找树中的入口元素202):
1.如果正在被分析的网络地址号与当前元素(202)的网络号(或结构)相匹配被证实。有一匹配函数返回与特定元素(在本案例中是202)相关的动作号。
2.如果匹配未找到,过程继续执行两个子元素中的一个(在本案例中要么是202,要么是203)。如果网络地址号大于当前元素(在本案例中是202)的网络号(或模式),过程选择上面的元素(在本案例中是203)。反之,过程继续下面的分支(在本案例中是204)。
函数在入口点201处,从第一个元素202处开始执行,并继续直到找到一个匹配或遇到了分支的最后一个元素(205)。
扩展该树查找方法是可能的,以便完成最长前缀匹配。这可以通过使用在节点中匹配不止一个动作号的子树来完成。这意味着查找算法必须调查本地树,由此生成正确的动作号。
通过使用重复表查找的方法,软件操作可以找到所需的动作代码。使用这种方法,为了找到正确的匹配,仅仅必须在查找树中比较少量元素。对那些在较大的网络中找到的表而言,典型地软件操作为了找到一个匹配,可能必需在查找树中查找10-20个元素,这仍然会花费大量的时间。另外,***必须维护查找树以使它保持平衡,也就是使在查找树到达给定分支(如元素205)的末端元素之前,软件操作必须查找的元素数,对所有的分支大体相同。这种维护功能阻碍了查找树为了地址分析功能的目的的使用,因而限制了软件解决方案的性能。
一些现有技术的硬件解决方案也使用了查找树。虽然这些硬件解决方案的速度比相似的软件解决方案的速度要快,但为了在一个较大的网络中查找一个匹配,硬件解决方案仍然必须在查找树中查询10-20个入口。另外它们也必须维护查找树。
另外一个解决方案(“Routing Lookups in Hardware at MemoryAccess Speeds”Pankaj Gupta、Steven Lin和NickMckeown,IEEE Infocom April 1998,San Fransico)是基于存储器查找表的解决方案,其中存储器区保存着关于网络地址和活动号之间关系的信息。图3显示了一个***,这里的微处理器301被用于使用网络地址302寻址存储器304。从根本上说,存储器将输出被存储在该存储器单元中的动作号307。该动作号的的长度可用如16位来实现。
如果所有的网络地址以32位的网络地址来实现,在存储器304中将需要232个16位入口,因此,应考虑测量成本及印刷电路板的面积。然而,由于被用来决定入口号的前缀长度通常低于24位,因而,采用了一种在存储器中只有224个入口定址的方法。这意味着只有网络地址的24位被用作查找,这一点是通过拆分网络地址302来完成的。
然而,为了解决动作号310,必须使用多于24位网络地址情况下,引入了第二个存储器308。为决定是否应该使用这第二个存储器,在主存储器入口304的16位中的一位为此目的而保留。在多于24位的情况下,应解决动作号使用,主存输出余下的15位与网络地址余下的8位,即303,一起组成305用来指明在第二个存储器的地址。这一点被描述为306。第二个存储器308不能包括所有可能的入口,但该方法是基于以下事实的:为决定目的地,只有少数网络地址需要大于24位。
整个***的动作号输出310是一个在两个存储器输出之间的选择309。把网络地址拆分成24位和8位的拆分点可被改变,以适应有利的地方,即前缀分布不同的地方。
这种方法的缺点是:
1.大容量的存储器(上面的例子是33兆字节)在现有技术下不能被集成在一块集成电路上。由于需要多个集成电路间的通信,这将限制操作的速度。
2.使用现有技术,由于大约需要19个电路,这也将影响***的成本。另外,在今天的印刷电路板***中,该解决方案所需的面积将是重要的。
3.在最坏的情况下,更新存储器将使用17545个存储周期,在这个存储周期中,在即将到来的Internet包被处理或丢弃之前,必须将其存储。这要么引进更多的主存使用、降低了整体性能,要么导致丢失重要的数据包。
4.这种方法基于假定前缀分配随不同网络而变化。
MUSIC半导体已经实现了一个基于内容定址存储器(CAM)的地址分析方法。下面将描述一下核心装置,该核心装置打算做在一个集成电路上。图4描述了这种情况。当应用网络地址401时,CAM410被用来存储信息,这使得这个方法能够输出地址值414。当应用网络地址如下描述时,动作被执行:
1.变换机402将把32位网络地址扩充为64位404时,需要根据CAM中使用的三元态逻辑。三元态逻辑在比较时能使用“不介意”值。
2.CAM 410将把64位网络地址404与存储在各入口的值加以比较,并认定一个或多个匹配信号405,去指出网络地址和相应入口值之间的一致性。
3.如果不止一个匹配信号405被认定,当只希望一个地址值(因一包只有一个目的地),必须启动选择。这相当于最长前缀匹配。优先权编码器411将选择具有最低地址的入口。使用这种方法,最长前缀匹配是以CAM入口按前缀长度分类为条件的。
4.优先权编码器411,最多将认定一个信号406,以指示选择了哪一个入口。
5.入口地址412,被地址编码器407编码。这里413和页地址415相连接,这值可被编程到电路中。然后地址值414在输出时提供。
外部地址总线408和控制信号一起被用来把编程值编入CAM入口。这是通过解码地址解码器403,及把并把结果加到CAM编程线409来完成的。
因为地址值直接与在CAM中的相应网络地址的入口有关,并且CAM中的入口必须按前缀长度来排序,自由地联接网络地址和地址值是不可能的,因此地址值不能被用做动作号。这样的结果是必须执行外部变换。图5描述了此需要是如何被满足的。当网络地址501被使用时,上面描述的网络地址分析器502将认定地址值503。地址值被加到随机存储器(RAM)504,这将把地址值503映射到自由选择的动作号505上。
如果网络分析器被用在大的网络路由器中,使用现有技术(在最大的MUSIC集成电路中是8K)在网络分析器中实现的入口的总量将不足以包括所有可能的网络地址。因此,在一些情况下需要不止一个分析器。既然最长前缀匹配的规则必需满足,与其它的网络分析器联合使用的网络分析器将不得不通过专用的全局控制信号通信,并彼此等待计算的最佳匹配。
这种方法的缺点是:
1.必须使用外部存储器,这将限制***的整体性能。
2.为了维护正确的排序,当更新一个入口时,可能必需修正许多入口。这意味着单个的网络地址更新可能造成大量等待时间,对于这种情况,一定是要么储存包要么丢弃包。
3.当需要更多的网络分析器时,整体性能下降了,因为在一个分析器里的计算取决于其它分析器。
在PCT申请WO95/33324中描述的转发引擎中,路由判定的另一个解决方案使用了一个特别设计的路由功能,该路由功能基于专用寻址方案,及路由判定使用单个(可选)AND门。由于在光学领域中数字逻辑的限制,本发明最主要的目标之一是尽可能寻找简单的判定操作。
所描述的***的网络地址被选择,以使两个具体的操作能够被应用,一个为了查找一个具体的匹配,另一个被用作路由操作。
从受限制的N位字的集合里选择二进制地址字,满足这样的性质:对集中的任何两个字A(组成地址位a1、a2、an)和B(组成地址位b1、b2、bn),仅当A=B时A_B=0否则A_B=1,其中表达式A_B指布尔表达式:
~X指X的逻辑补码。公式1因此被用来在网络地址之间查找正确的匹配。网络地址集被限制,对N位宽的地址字(n是偶数),仅是
可以使用网络地址。
通过排序有限的网络地址集,WO95/33324声称要求保护一种可为简单环型网络拓扑结构建立的简单路由功能。在这个环型网络拓扑结构中,每个节点只需决定被分析的包将要被送到相邻网络节点(路由器)的“左”还是“右”。通过使用预先设置的鉴别字来做路由判定,而函数定义如下:
其中,A(组成地址位a1、a2、an)是被分析的网络地址,D(组成地址位d1、d2、dn)是预先确定的鉴别字。环型网中的每一个节点(路由器)保留了一个预定的及用硬件(光学的)实现鉴别器字和公式3操作的装置。如果被分析的包的目的地址和预先确定的鉴别器字一起使公式3的操作返回0,则节点在一个方向上控制该包,如果值为1,则节点在相反的方向上控制该包。
这种解决方案的主要缺点是:
1.地址空间受限,只能使用一专门的网络地址集。由于被使用的寻址方案不能被大多数主流网络协议(如:异步传送模式ATM、以太网、互联网协议等等)使用,则这些网络协议不能使用该方法。
2.由于公式3的输出只是单一位,因此可能建立的判定类型只是“右”或“左”,或“1”或“0”的判定类型,网络拓扑限于用两个端口的交换机建立的环型网拓扑结构。大多数网络并不受限于这种拓扑结构,而使用其它类型的结构(总线型、星型、网状和所有这些的结合)和多于两个端口的网络部件。
3.鉴别字的预定的特性使它难以改变或修正一个已经安装的网络,因此在所有和有些网络节点会需要新的鉴别字。
4.网络节点(路由器)上的鉴别字用光学领域的延时部件实现,且一旦建立就不能被改变。因此,为了改变网络,必须建立新节点(路由器)。
5.为了增加一个新的网络节点,需要重建整个***,因为扩展需要一个新的网络地址集,因而需要一个新的节点集。
6.如果一个节点出了故障,整个***将不起作用,而无法用。
本发明克服了下面这些限制:
1.本发明可被任何地址方案和任何网络协议使用,因为布尔操作是不固定或未预定的,它可以是任何乘积和描述的形式。
2.本发明简化了改变/更新网络拓扑结构的任务,因为网络地址分析功能的布尔操作可以被修改或重新编程。
3.本发明可以在具有多于两个端口的路由器中使用,因为它能处理具有多位的动作号。
地址分析处理的结果在很大程度上被用来选择一些可能的操作中的一个,例如:数据包应该通过路由器的哪条路径流动,哪个计数器应该加1等等。每一个可能的动作都被分配一个唯一的号码,动作码,和指定一个描述网络地址和动作号之间关系的函数。
这个函数被称作地址分析函数。在现有技术给出了一个例子中,地址分析函数通过指明表查找的方法来实现。这些现有技术解决方案以适当的方式组织表,并使用软件或硬件例程或方法来查找这个表。
从前面的讨论应该明白,需要一个方法和分析输入字的***,这里的分析处理用硬件速度工作,及这里的分析处理函数能被编程和/或被更新。
根据本发明的第一个特点,提供了这样的解决方案,这里通过使用包含一个或多个逻辑器件以实现计算规则运算的分析***,提供了一个分析输入字或模式的方法,所说的逻辑器件用硬件实现,及可重复编程,从而提供新的计算规则装置,所说的计算规则至少部分是分析***的一个或多个处理函数,所说的方法包括向分析***输入被分析的输入字的分析阶段,而处理的输入字因此提供输出字,所说的处理包括实现一个或多个计算规则运算的步骤。
这样的方法可被方便的作为分析网络地址的方法,在此,被分析的输入字代表通信网络中的网络地址,分析***是指地址分析***。这里,输出字最好采取动作号的形式,输入字和/或输出字也最好包括多于一位。
应该明白,一个或多个可编程的分析***的逻辑器件(PLD)最好采取更适于处理逻辑操作的结构。因此,优选的计算规则包括由一或多个逻辑操作。这样的逻辑操作可以是一个或多个模糊逻辑操作,但在优选实施例中,计算规则包括一或多个布尔逻辑操作,在这个布尔逻辑操作中,这里所有的计算规则必须是布尔逻辑操作。
这里,布尔逻辑操作由乘积项之和来定义。最好对输出字的给定位的计算规则用乘积项之和来运算,所说的每个乘积项,和输入字激活的输出字中的各位相关。
在处理输入字的过程中,输入字可被预先处理成预先确定的格式,预处理然后接着进行一个或多个计算规则运算。在计算规则运算的基础上,输出字被确定,而且计算规则运算结果也可以是一中间输出字,为了获得输出字,可对其进行后处理。
这样,通过执行或运行计算规则,多位输入字或多位预处理输入字可由一些计算规则来处理,每一计算规则导致具有多位输出字或中间输出字的输出位,而计算规则的数目与输出字或中间输出字的的位数相等。由于计算规则是通过使用如上所述的在硬件中执行的可编程逻辑器件来实现的,显然,在一个时钟周期内可获得计算规则运算结果的输出。
本发明的分析可被方便的用在包含最长前缀地址分析运算的地址分析中,在此,最长前缀地址分析运算最好是计算规则运算的一部分。
根据本发明的第一个方面的实施例,优选的方案是一个或多个处理操作包括一个或多个优先级函数,这里的优先级函数可以是计算规则的一部分。优先级函数可在可编程的逻辑器件中实现,它包含可重新编程的优先级部件或函数(PPE),用以对相同输入字匹配的几个可能输出结果之间区分优先级。
为了处理处理操作或计算规则,可编程的逻辑器件结构可包含一个“与”处理位面,以获得随计算规则的输入而变的乘积项,这里,“与”位面的编程提供使用“不介意”输入位。为了从“与”位面获得乘积项之和,可编程的逻辑器件结构也包含“或”位面,并由此导出计算规则的输出结果。
当使用布尔逻辑操作时,计算规则输出结果可通过赋予要处理的不同的布尔操作以不同优先级来确定。
当乘积项是在“与”位面上获得的时,这些乘积项会被区分优先级,由此在几个被激活的乘积项中选择一个。这里,可编程的优先级部件,可为每一个同时被激活的乘积项分配可区分优先次序的函数或一个优先级值或优先级号。最好,应选择具有最高优先级值或优先级号的乘积项。为了获得计算规则的输出结果,被选择的乘积项可转发到“或”位面。
如果可编程的优先级部件把优先级号赋给乘积项,则这样的号码将代表权重值或优先权代码。更可取的是,权重值会被赋给每一个乘积项。每一个被赋的权重值可等于为产生乘积项,在“与”位面中被编程反熔丝(antifuses)数。
为了易于更新分析***,根据本发明的第一个方面的分析方法还包括学习阶段,这里,分析***按照接收到的网络地址和优先级和/或动作号之间关系的信息被更新。在更新期间,分析阶段最好被暂停。更新最好包含对一个或多个可编程逻辑器件编程或重编程。
当在通信网络中使用,通信网络发生变化时,分析***可被更新。这种变化包含下面的一种或多种情况:新的终端地址、网络终端位置的变化和网络拓扑结构的变化。
本发明的第一个方面也为分析输入字或模式提供了一个***。这里的***包括为实现计算规则运算的一个或多个逻辑器件。所述的逻辑器件用硬件实现,及可重复编程,从而提供新的计算规则装置,所说的计算规则,至少部分是一个或多个处理操作,用于从输入字或模式中来确定输出字,从而提供一个分析结果。
这里,分析***可方便的成为网络地址分析***,这里要分析的输入字代表通信网络中的网络地址。更可取的是,输出字采取动作号的形式,并且,输入字和/或输出字包含不止一位,这一点也是优选的。
可编程的逻辑器件被修改以适合用来执行逻辑操作,这一点是首选的。因此,计算规则可包含一个或多个逻辑操作。象前面所讨论的那样,这些函数可以是模糊逻辑操作,但它们也可是布尔逻辑操作,所有的计算规则优选的是布尔逻辑操作。布尔逻辑操作可由乘积项的和来定义,且具体的计算规则可包括指向输出字的同一位的所有乘积项。
分析***的处理函数也可包含一个或多个预处理函数和/或一个或多个后处理函数。通过使用逻辑器件,使用一些计算规则能处理多位输入字或多位预处理输入字,这里,每一个计算规则可导致多位输出字或中间输出字的输出位,所用计算规则的数等于输出字或中间输出字的位数。当执行逻辑操作计算时,在那里逻辑操作被编程到逻辑器件中,计算规则运算的输出可在一个周期内得到。
在分析***的优选实施例中,可编程逻辑器件包含一个可重编程的优先级部件或函数(PPE)用来对被相同输入字匹配的几个可能的输出结果之间区分优先级。可编程逻辑器件还可包含一个“与”处理位面,以获得随计算规则输入而变的乘积项,这里,“与”位面的编程技术提供使用“不介意”输入位。为了从“与”位面获得乘积项之和,可编程的逻辑器件结构也包含“或”位面,并由此导出计算规则输出结果,这也是优选的。通过选择具有最高优先级值或号的被激活了的乘积项,优先级部件可适合于区分优先级。
为了易于对逻辑器件进行编程或更新,更新可在分析过程之前执行,或在上面描述的学习阶段发生,首选的是可编程逻辑器件包含存储器逻辑单元,这里的每个单元中包括为储存一个匹配值的一个可重新编程的存储组件,及也首选为了把输入位的值与已存储的匹配值相比较的逻辑组件。因此,把新的计算规则编程或重新编程到可编程逻辑器件硬件中,可通过编程存储器组件实现。这里,一个输入字或地址和输出字或动作号之间的关系中,编程的改变可在一个时钟周期或一个存储器写周期内完成。
应该明白,分析***的可编程逻辑器件可在单个集成芯片中实现。此外,实现分析的处理函数可通过单个集成芯片中的处理单元实现。
在本发明的第二个方面中,提供速度提高的微处理器体系结构。这样的微处理器可用在使用位字段分析限制应用性能的软件应用中。
这样,根据本发明的第二个方面,提供了一单片微处理器体系结构,所说的体系结构包括:
指令译码单元
地址计算单元
输入/输出部件
算术逻辑单元(ALU)及
可编程逻辑执行单元(PLEU)
这里,可编程逻辑执行单元更适于实现一个或多个逻辑操作,用逻辑执行单元的可重编程,由此提供实现新的逻辑操作。
更可取的是,可编程逻辑执行单元适合实现布尔逻辑操作。
为了易于编程或更新可编程逻辑执行单元,该单元可包括存储器逻辑单元,其中每一个单元包括一个可重编程的用于存储匹配值的存储组件。它还包括用于把输入位值与已存储的匹配值进行比较的逻辑组件。更可取的是,存储器组件用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。逻辑组件最好用MOS技术和/或CMOS技术来实现。
通过使用这样的存储器逻辑单元或存储器组件,把新的逻辑操作的编程或重新编程到可编程逻辑执行单元由存储器组件的编程来实现的,所说的编程最好在一个时钟周期或一个存储器写周期内完成。不同的逻辑操作可被编程到逻辑执行单元,这是通过来自内部指令单元的基本指令或来自经由输入/输出部件的外部控制单元的指令来完成的。
在优选实施例中,逻辑执行单元包括一个或多个逻辑器件和组件,具有可编程逻辑阵列组件的形式。这里,逻辑执行单元包括一些寄存器,这些寄存器用来存储逻辑器件或组件的状态。更可取的是,逻辑执行单元包括一个优先级函数单元,优先级函数单元更适合被重新编程。优先级函数单元可以是可编程逻辑器件或可编程逻辑阵列的一部分。
为了实现逻辑操作,逻辑执行单元可包括一个“与”处理位面结构和/或一个“或”处理位面结构。优先级函数单元可被构建以区分从“与”位面获得的乘积项的优先次序。如果几个乘积项由输入到逻辑单元的相同的输入所激活,则这种区分优先次序是需要的。
应该明白,具有根据本发明的第二个方面的任一实施例体系结构的微处理器可被以这样的方式编程,以便用一个基本微处理器指令执行位字段分析。
在本发明的范围内,也提供了电子结构或积木式结构,以能易于编程或更新。
这样,根据本发明的第三个方面,提供了一个可重新编程的电子结构,以把一位或多位输入信号与已存储的或预编程的匹配值相比较,所说的结构包括一个或多个存储器逻辑单元或组件(MLC),每个单元包括至少一个可重编程的、用来存储匹配值的存储器组件。而且,更可取的是,存储器逻辑单元至少包括一个用来把输入值与存储的匹配值相比较的逻辑组件。
最好,一个存储器单元存储一个位值,且要与存储的匹配值相比较的输入值最好也是一位值。这样,存储器逻辑单元(MLC)可包括单一位的存储单元和一个逻辑组件,一个位输入与存储的一位相比较。这里,输出结果可为“真”或“假”。
然而,如果“不介意”也象在分析中那样被提供,则应存储“真”、“假”、“不介意”。这要求存储一2位的字,由此需要两个存储器单元。这种包含两个一位的存储单元的单元,可至少形成部分三元态存储逻辑单元,它也可包括用来把一位输入与2位存储字相比较的一个逻辑单元。
存储器逻辑单元可被安置,以使逻辑组件通过一个或多个逻辑操作的使用,把输入值与存储值进行比较。所说的逻辑操作可以是逻辑“与”操作和/或逻辑“或”操作,以及反相操作。
可使用不同的存储器单元技术,但优选的是使用静态随机存取存储器(SRAM)单元来实现。然而,存储单元也可用动态随机存取存储器(DRAM)单元来实现。逻辑单元可用不同的技术用来做,但优选的逻辑单元通常使用MOS技术和/或CMOS技术来实现。
在优选实施例中,存储匹配值的存储器元件或单元有两个输出:输出真值匹配值和互补的匹配值。
使用存储器逻辑单元的逻辑组件可有不同的函数和不同的配置。逻辑组件可有例如至少两个输入和至少一个输出。
这里,存储器逻辑单元可被构造,以使输入位信号被供给第一个逻辑组件输入,及输入位信号取补后供给第二个逻辑组件输入,用来比较由逻辑组件输出的输出信号。
在另一个实施例中,存储器逻辑单元可被构造,以使只有“真”输入值被用作输入给比较逻辑。
在存储器逻辑单元实施例中,逻辑组件可通过使用4个晶体管实现。
在电子结构的优选实施例中,可安置几个存储器逻辑单元,以至少形成部分存储器逻辑结构(MLS),其中,每一个存储器逻辑单元具有作为输入的输入位信号和/或其取补信号。这里,几个存储器逻辑单元的输出结果可能被“AND”或“OR”在一起。
正如上面所讨论的,在另一优选实施例中,由两个存储器组件或两个存储器逻辑单元一起组成三元态存储器逻辑单元,并由此提供“不介意”输出。这里,为了提供“不介意”状态,两个存储器组件可以用相同的匹配值编程。如果两个存储器逻辑单元被组合在一起,三元态存储器逻辑单元中的第一个存储器逻辑单元可有供给第一个输入的一个输入位信号,而逻辑假信号供给第二个输入,第二个存储器逻辑单元可有供给第一输入的输入位取补的信号,逻辑假信号供给第二个输入,而第一个和第二个存储器逻辑单元的输出结果可被“与”在一起。
电子结构可有几个三元态存储器逻辑单元,被安置以至少形成部分三元态存储器逻辑结构(TMLS),每一个三元态存储器逻辑单元具有作为输入的输入位信号和/或其取补信号。
在电子结构的另一实施例中,几个存储器逻辑单元可被安置,以实现三元态内容定址存储器(CAM)。
根据本发明的第三个方面,也提供一个可重新编程的电子“与”处理结构或位面,其中几个三元态存储器逻辑单元形成了一个三元态存储器逻辑结构(TMLS)。根据本发明的任一实施例可选择三元态存储器逻辑单元。
在本发明的第三个方面的范围内,提供了一个可重新编程的电子优先级部件结构,其中,几个存储器逻辑单元形成了存储器逻辑结构(MLS)。根据本发明的实施例中任意一个,可选择存储器逻辑单元。
应明白,根据本发明的第三个方面,电子结构实施例描述的的任意一个,可被用来构成可被重新配置的硬件或可重新编程的电子逻辑器件结构(PLD),以处理逻辑操作。
为处理逻辑操作,本发明也存在可编程的电子器件。
因此,根据本发明的第四个方面,为处理逻辑操作,提供了一个可重新配置的硬件或可重新编程的电子逻辑器件结构(PLD),所说的结构包括一个可重新编程的优先级部件或函数(PPE),以区分用同一输入字匹配的几个输出结果之间的优先次序。
根据本发明的第四个方面,优选的逻辑器件结构包括按照上面本发明的第三个方面描述的一个或多个电子结构。因此,逻辑器件结构也可包括存储器逻辑单元(MLC),一个或多个存储器逻辑结构,和/或就象在本发明的第三个方面的任一实施例中描述的一个或多个三元态存储器逻辑结构。
为了处理逻辑操作,逻辑器件结构也可包括一个“与”处理位面,和/或一个“或”处理位面。优选的结构包括一个可编程的逻辑阵列(PLA),这里的可编程逻辑阵列包括“与”处理位面,优先级元件和“或”处理位面。
这里,优先级部件、“与”处理位面、和/或“或”处理位面可包括存储逻辑单元。此外,存储器逻辑单元可被安置以形成存储器逻辑结构(MLS)和/或三元态存储器逻辑结构(TMLS)。在优选实施例中,“与”处理位面包括三元态存储器逻辑结构(TMLS),优先级部件可包括存储器逻辑结构(MLS),而“或”处理位面可包括存储器逻辑结构(MLS)。
按照上面描述的本发明的第四个方面,逻辑器件结构也包括通过几个存储器逻辑单元实现的三元态内容定址存储器(CAM),这里,优先级部件可适用于区分多个同时被激活的CAM的匹配线的优先次序,由此选择输出结果。
当逻辑器件结构包括“与”处理位面时,该“与”位面可适用于获得随输入字或模式而变的乘积项。这里,当“与”位面中,被同一输入字激活不止一个乘积项时,优先级部件可适合于在几个可能的输出结果之间区分优先次序。最好,乘积项被赋予优先级号,而优先级部件适合于选择被激活的具有最高优先级号的乘积项。如果逻辑器件结构也包括“或”处理位面时,“或”位面会合适地获得来自“与”位面的乘积项之和,由此导出输出结果。因此,为了获得输出结果,被优先级部件选中的乘积项可被转到“或”位面。
在逻辑器件的实施例中,该结构适合于处理布尔操作,而输出结果通过把不同的优先级传送给要处理的不同的布尔操作而被确定。
当在被激活的乘积项间进行选择时,可编程的优先级部件可适合于把优先级函数分配给同时被激活的每个乘积项。另一方面,可编程的优先级部件可适合于把权重值或优先级码分配给在“与”位面获得的乘积项,由此选择几个被激活的乘积项中的一个。这里,权重值可分配给每一个乘积项。最好,分配给每一个乘积项的权重值等于为产生乘积项,在“与”位平面中被编程的反熔丝数。
优先级部件包括一些存储逻辑单元,而优先级函数通过在存储器逻辑单元中,存储相应的匹配值被编程,这一点是首选的。
当逻辑器件包括MLS结构和/或TMLS结构时,在一个时钟周期或一个存储器写周期内,通过对MLS结构中的一行,和/或TMLS结构中的一行进行编程而实现编程。为了对逻辑器件进行编程,一输入或地址字、相关的优先级号及相关的输出字可全部被输入到逻辑器件。
此外,也在本发明的范围内,提供了最小化布尔操作计算规则的方法,用作实现最长前缀匹配地址分析。
因此,根据本发明的第五个方面,提供了一个最小化布尔操作计算规则(BFCR)的方法,用来实现最长前缀匹配地址分析,其中,计算规则包括优先级规则,其中,可编程逻辑器件(PLD)根据路由表或网络地址表被更新或编程,路由表或网络地址表包括以网络地址位模式、相关的动作号和优先级值或号形式的入口,所说的方法包括:
a)根据优先级号排序路由表,以使路由表中每一个入口的子集(A)具有相同优先级号,相应的布尔计算规则(R)以乘积和的形式被设置。
b)在排序步骤中得到最小化计算规则集(R),以便得到乘积和形式的最小化计算规则集(R’)。
c)使用最小化计算规则集(R’)和相关的优先级号,更新可编程逻辑器件。
d)对具有公用优先级号入口的所有子集,重复步骤a到c。
当最小化计算规则时,可使用著名的Espresso最小化技术。
应明白,根据本发明第四个和第三个方面的实施例中的任一个,在本发明第一方面的分析方法和***的实施例中的任意一个,本发明第二方面的微处理机体系结构的实施例中的任意一个,及在本发明第五方面的最小化方法实施例中的任意一个中,使用的可编程逻辑器件属本发明的范围内。
也应明白,本发明的特点是针对(但不限于)使用数字技术改进通信网络中的地址分析。在硬件中实现地址分析,并由此得到类似于或更快于其它著名的硬件解决方案,这是本发明的一个目的。
通过用可编程逻辑和/或优先级函数来实现最长前缀匹配,使最小化更新前缀表的任务也在本发明的特性内。
本发明的特性的另一个目的是能够把所有的地址分析集成到一个单一的集成电路中,以与其它已知的解决方案相对比。
本发明的第二个特性是直接针对改进微处理器结构速度的,以使在软件应用中,使用位字段分析限制应用软件的性能。用基本微处理器指令执行位字段分析,并由此最小化由位字段分析造成的时延是本发明的一个目的。本发明的还有一个目的是在通用的微处理器体系结构中,可把附加的执行单元集成到微处理器中。
另外,为了实现新的位字段分析类型,可编程逻辑执行单元的逻辑操作,如布尔操作,可重新编程,这一点也在本发明的特性范围内。通过布尔操作,可理解一函数能以乘积和的格式写入。
为了更好的理解本发明,也为了知道如何实施同样的方式,参考附图作为例子,其中:
图1显示了通信网络交换机或路由器的基本部分,用以说明本发明的背景。
图2说明了为解决本发明涉及到的问题,在公用软件中所用的器件。它显示了树结构是如何用于查找带有路由信息的表。
图3显示了本发明涉及到的现有技术下的硬件装置的问题。它显示了一个***,为实现网络地址分析,这里的微处理器使用大容量RAM,用来把网络地址快速转换为动作号。
图4显示了本发明涉及到的现有技术下的硬件装置的问题。装置使用CAM结构实现把网络地址转换为硬件值,该硬件值不能被直接用作动作号。
图5说明了图4中显示的现有技术装置是如何必须与外部器件(如:RAM)一起使用,以扩充网络地址转换,包括动作号输出,及由此实现的网络地址分析。
图6是一个框图,实现了把输入转化为输出的地址分析函数的功能,它描述了本发明解决的问题的核心。
图7说明了计算规则是如何被用到输入字和输出字上的,因而,使用上述计算规则,通过执行网络地址分析实现本发明功能。由每一个计算规则使用所有的输入位,在输出端生成一位。
图8是一个流程图,描述了本发明是如何被用来解决把网络地址转化为动作号,及更新网络地址和动作号之间的关系的一个例子。
图9描述了如何使用PLD实现处理操作,它用一个或多个计算规则,把网络地址转化为动作号,从而实现网络地址分析。
图10用来描述PLA的核心组件。该图显示了一个“与”位面和一个“或”位面,它们是用来实现布尔操作。
图11显示了带有称作可编程优先级函数的扩充功能的上述PLA,它是一个区分活动乘积项间的优先次序的组件。可编程区分优先次序组件是本发明的一部分。
图12用来描述了本发明的在全局优先级函数中用的可伸缩性是如何得到的。该图显示了全局优先级信号是如何从可编程区分优先级函数输出的。
图13是一个运行和使用全局优先权级函数的***,它包含几个PLA结构,这些结构都和一个全局优先级函数相连,这在图中已进行说明。
图14描绘了在本发明中定义和使用的存储器逻辑结构和三元态存储器逻辑结构,以用网络地址分析实现不同类型器件。
图15是一个PLA结构,它可以既可使用三元态逻辑AND位面,又可用可编程优先级函数,并且都带有LMS和TMLS结构。
图16描绘了在匹配线上包含可编程优先级的CAM如何使用一个MLS结构而实现的。
图17描绘了一个PLA结构的AND位面中,使用的存储逻辑组件的逻辑实现例。
图18描绘了一个例子,这个例子中使用了两个存储逻辑组件,或者执行一个三元态存储器逻辑组件,或者用执行AND位面的两个存储逻辑组件,不需改变或修改已使用的逻辑。
图19显示了在实现网络地址分析任务时,多个PLA结构是如何在一起使用的。
图20说明了所描述的作为可编程优先级函数的公式和技术是如何用存储逻辑结构实现的。
图21描述了图中所示的一个微处理器的公用组件,用来说明一个新的执行单元是如何实现的,以提高软件程序的位字段的分析速度。
图22是通常使用的常规微处理器的公用器件的说明,并说明在现有技术中可编程逻辑器件是如何通过一个微处理器使用的。
图23是详细说明了,借鉴类似于一个常规执行单元的指令解码器,在微处理器核心中执行可编程逻辑的一个例子。
图24是详细说明了在存储器逻辑组件中使用的逻辑例,以执行一可编程优先级函数。
实现地址分析的处理函数
在图6中描述,所给的网络地址号和动作号之间的关系的地址分析函数可以被设置,以慨略地说明网络地址分析处理过程。在这个例子中,网络地址号是由32位宽的输入字601表示,动作号由4位宽的输出字603表示(注意,输入601和输出603的长度取决于网络设备)。从输入模式计算输出模式的这个地址分析函数602,可以有许多方法实现。
一些现有技术的解决方案使用不同的查找方法查找整个网络地址,或者查找表中的大部分网络地址,或者使用在特殊构造的存储结构上建立索引的软件解决方案,或者使用CAM结构。这些方法将被表查找操作指出。在WO95/33324中描述的方法,利用一简单且预定义的布尔操作,通过交换机部件,使用一个预先确定的鉴别字来对两个不同路由中的一个进行计算,选择的地址位的和。这个方法将表示为地址位和操作。
本发明是基于用于执行地址分析任务的处理函数(或计算函数)的概念。计算函数基于计算规则集,用网络地址号来计算输出的动作号。处理函数(或计算函数)不使用一个表来查找动作号,如在现有技术的表查找函数那样且不局限于固定的和预定的地址位和计算地址位函数和解决方案那样。
计算规则被用来从网络地址号中导出动作号,尽管并不受限于网络地址号。图7显示了几个计算规则703,是如何被用于这种处理的。图中说明了一个计算规则703,对动作号的每一个单元705都是必须的,这样从一个输入数据701就可以计算出输出号单元705。当网络中网络地址和动作号间改变时,为了能够更新处理函数,因此要求处理函数能够重新编程。因为网络信息是有规律的变化的,当使用处理函数时,必须进行重新编程。因此,本发明的一个组成部分是即使处理函数在硬件中被执行,并且这个硬件正在使用,来自输入端计算结果的处理函数也能够重新编程和改变。
在数字环境中,网络地址单元和动作号单元用二进制位来表示,计算规则703,可以是一个布尔操作。在本发明计算规则中使用的术语布尔操作是一个函数,它的结果可以描述为输入位702的和,例如,b1(a1,a2,a3)=a1a2+a2a3。下面的例子说明了这个布尔操作,它需要由输入(a1,a2,a3,a4,a5)=(1,0,1,0,1,x,x)或(1,1,1,0,1,x,x)中计算输出数据(b1,b2,b3,b4)=(1,0,0,1),这里,x表示一个不介意的值(两个输入数据得到同样的输出就等于两个网络目的地址连到相同网络交换器的输出上):
b1(a1,a2,a3,a4,a5)=a1~a2a3~a4a5+a1a2a3~a4a5
公式4
b2(a1,a2,a3,a4,a5)=~b1(a1,a2,a3,a4,a5)
=(~a1+a2+~a3+a4+~a5)(~a1+~a2+~a3+a4+~a5)
公式5
b3(a1,a2,a3,a4,a5)=b2(a1,a2,a3,a4,a5)
公式6
b4(a1,a2,a3,a4,a5)=b1(a1,a2,a3,a4,a5)
公式7
从指定的一组输入和输出模式中得出布尔操作是一个简明的,众所周知的技术。
基于计算规则的处理函数(或者计算函数)的使用消除了熟知的从查找表中重复处理,提供了一个比CAM组件更灵活的解决方案。这种采用多个且不是预定的计算规则的方法,使它能够:
1.基于已建立的网络协议,进行网络中的地址分析;
2.实现网络的拓扑结构,而不是使用多于两个端口的交换器的环状拓扑结构;
3.改变网络的拓扑结构时,不需安装新的路由器和交换器;
4.同网络中的动态变化(例如,链路不起作用,路由器失效)一起,更新计算规则(由其结果得到的动作码)。
基于以布尔操作的处理函数具有以下优点:
1.在布尔操作表达式中包含有乘积项;
2.可利用取补信号,即,在乘积项中对输入信号的取补信号;
3.具有不是预先确定的性质,因此(布尔)计算规则在运算操作过程中可以重新编制;
4.动作号不止一位,由此使建立不少于两个端口的交换器成为可能。
计算规则不局限于布尔操作,有些例子中它还包含有模糊逻辑。模糊逻辑可以与附加的信息,如链接到交换器或路由器的状态,网络地址优先级等等一起使用。信息被用于计算规则中,这个计算规则部分使用布尔逻辑运算,部分使用模糊逻辑运算,经交换器通过对动作号进行计算来区分信息量的优先级,这里,利用了基于自身地址的例如布尔计算规则,及基于网络信息用来执行优先级函数的模糊逻辑规则。
图8显示了一个流程图,它说明了使用一个处理函数进行网络地址分析的例子。流程图包括了使用和更新处理函数的流程。第一步,在801(目的或源)通过转发引擎提取输入包的网络地址,预处理地址801根据处理函数以可改变和编码地址为目的。这个预处理地址或者用于地址分析(目的地址),或者用网络地址和动作号之间有新的关系,更新(源地址,具有如端口号信息,包从端口号被接受)处理函数,也就是按路由表改变。这个决定是在步802做出的。在这个例子中,需要地址分析的地方,网络地址和分析/计算指令就会通过803到达处理函数804,以试图分析网络地址。分析的结果通过FE进行后处理。后处理可以是一个解码的过程,或者根据处理函数的结果作的其它改变。如果处理函数用所给网络地址的计算规则不能进行更新,那么不能进行地址分析是可能的。FE将验证地址分析806中得到的结果,并根据结果判断新的地址分析(处理)能否实现。如果这个地址分析是正确有效的,此流程就会结束,在810继续,它表示一个新的循环能被执行。如果地址分析非法,在807选择或者重新进行网络地址分析或者用现有技术809来实现地址分析。如果选择重新分析,在重新开始地址分析804之前,要执行一个新的预处理过程808。新的预处理过程可以是一个改变网络地址的函数,以这种方式,新的信息就可用于地址分析处理。
图8也说明了更新操作的流程。如果FE选择802,更新处理函数的计算规则,就需要关于网络地址和动作号之间关系的信息,经811到处理函数。这个处理函数将导出新的计算规则812,并由此,通过下面所说的自身的重新编程而更新所有的计算规则。最后,它以813继续作为结束,这也说明了一个新的循环的开始。这样,包含有计算规则的处理函数就得到更新,而不需要停止不止一次循环的网络信息分析的流程。从图中也可以看出,外部设备814,像微处理器可以用于更新计算规则。外部设备和为存取的处理函数FEs之间的优先级很容易在装置中选择。
作为本发明中一个实现改进地址分析方法的一个例子,采用了称为可编程逻辑技术。一个可编程逻辑组件是数字式的组件,它包含在其他组件中,可以在称为输入字或输入模式的输入位序列上执行布尔操作,(也可以参照下面的章节)。输出的位序列称为输出字,它是在输入字上进行指定的布尔操作的结果。这个布尔操作可以动态修改,因此可编程逻辑组件可以编程以执行新的布尔操作。可编程的逻辑组件可以包括或不包括为以后使用储存结果的寄存器。这些寄存器的值称为可编程逻辑组件的状态。输出字可以包括也可以不包括这些可编程逻辑组件的部分或全部状态。
尽管已经存在动态修改可编程逻辑器件(PLD)的布尔操作的熟知技术,但是当前的装置不适合于地址分析,因为为了更新布尔操作而进行的修改/重新编程技术的速度,用在上面所描述的网络地址分析***中还不够高。此外,现有的PLD装置的整体的计算速度和容量(依据最大的乘积项的容量数)太限制应用协议及典型的公用大规模网络速度。下面将详细说明这种装置的改进。
图9显示了处理函数901和一个PLD904是如何运行的。904是用一个布尔函数编写的,用它来代表网络地址的二进制位902的代码映象成二进制表示的动作号903。处理函数901必须计算正确的动作号,并用于PLD组件904,把一给定的输入网络地址902,从处理函数901处送至PLD 904。
通过使用这样的一个PLD单元904,处理函数901能够以一个周期硬件速度分析一个网络地址号,并且能够在一个单片集成电路中运行。(一个周期硬件速度表示在含有一个或多个运行布尔操作的电路的硬件中进行操作,这里的布尔操作不需要从前面所说的布尔操作计算的结果而产生最后结果)。
使用“不介意”和可编程的优先级函数的PLD体系结构
已知的解决方案
PLD是电可编程逻辑器件,它可用于执行布尔操作,并且在有些情况下,PLD结构也保留有寄存器,这些寄存器可存储(一些)输出位,并将这些输出位返回给布尔操作。PLD的结构在许多器件中使用,从简单的能够计算一些乘积项,并合计这些乘积项的***,到可控制几个特别设计的可编程程序块的***,这些***中能够编写/运行小的加法器及有限状态机(FSM)等等,能够建立相对较大的数字***(当这些可编程程序块通过可编程被联结时)。
这些PLD装置在具体的应用领域中被优化,这些领域如简单控制、在运行时被更新的小型数字化***等。因此,标准的PLD不能向网络地址分析的处理函数提供一个最优化解决方案。对于具有大的路由表(和具有大量的网络地址字)的较大的网络来说,标准PLD的容量、组织、处理速度和重新编程速度都不适用于实现网络地址分析的处理函数。
(例如,参照“Principles of CMOS VLSI Design”N.H.Wwste和K.Eshraghian著,Addison Westley出版公司,1992年。这本书介绍一些PLD结构。)
一个公用的PLD是一个可编程逻辑阵列(PLA),它基本上由两部分组成:一“与”位面和一“或”位面(参阅N.H.Weste和K.Eshraghian所著的“Principles of CMOS VLSI Design”,Addison Westley出版公司,1992年)。图10说明了一个公用的PLD装置。输入模式1001加到输入缓冲器1002上,缓冲器1002将会生成一个与输入模式互补的模式,并且将原始模式和补码1003传送到“与”位面1005。“与”位面由输入线1003,乘积项线1006和反熔丝1004组成。反熔丝用这样方式编程AND位面,就是给出具体的输入模式,一个具体的乘积项1006将被激活。反熔丝通常是用可编程位面的组件抽取,存在于各种装置中。因为这个组件的作用是通过如在组件上加一个高电压,去建立连接的,因此通常使用反熔丝的名称。图中,输入模式为(a1,a2,a3,a4)=(1,0,0,1),它将会激发乘积项2(pt2)。激活的乘积项通过激活输出线加在“或”位面1007上,激活的输出线通过一个反熔丝1008连接到乘积项。如果乘积项2(pt2)被激活,且此过程如图10所示,则输出模式1009将为(b1,b2,b3)=(0,1,0)。为进一步强调所说的PLA的功能,输出位b1完成的布尔函数写为:
b1=~a1~a2a3~a4+a1~a2a3~a4+~a1a2a3a4+~a1~a2a3a4
公式8
根据反熔丝技术装置,PLA结构的公用装置可以或者通过使用如紫外线将当前的程序擦除,或者加上高电压将当前的程序擦除,然后就可以重编程位面。
改进和由此得到的优点
在公用“与”位面装置中,当且仅当所有的输入模式与反熔丝程序相匹配,乘积项才会激活。而且,通过使用“与”位面的三元态逻辑,可能用多于一个输入去激活指定的乘积项。对乘积项和输入对之间的节点上的熔丝不进行编程,实现执行三元态逻辑(但不仅仅局限于此)。运用三元态逻辑的结果通过重写公式8进行说明,这里,连接输入位a4和图10中的乘积项pt2的反熔丝被消除了:
b1=~a1~a2a3+a1~a2a3+~a1a2a3+~a1~a2a3
公式9
应该注意,a4不再是公式的一部分,公式表明输入模式(a1,a2,a3,a4)=(1,0,0,0)和(a1,a2,a3,a4)=(1,0,0,1)将激活乘积项2(pt2)。作为这种修改的有用例子,使用了两个网络地址应得到相同动作号的情况,尽管这个使用不仅仅局限于此。当在AND位面中应用三元态逻辑时,不止一个乘积项被激活的情况是可能的。对于这种情况,本发明介绍了一个可编程的优先权组件(PPE),它在对乘积项进行操作的AND位面和OR位面之间。图11对此进行了说明,PPE表示为1107,使用AND位面1106的乘积项作为输入,并向OR位面提供一个优先权选择后的乘积项的输出1108。PPE的概念是分配给每个乘积项一个编程的权重,用于从几个乘积项中选择一个乘积项。图也举例说明了一种情况,就是用一个单一的输入模式(a1,a2,a3,a4)=(1,1,0,0)可激活两个乘积项。这个模式将激发两个乘积项pt6和pt7。如果乘积项pt6分配的权重是3,乘积项pt7的权重是2,结果将只有pt6可以读取OR位面,因此得到的输出模式是(b1,b2,b3)=(0,0,1)。
上述的用于本发明的一个例子,在PLA中的所说可编程优先权组件,在通信网络处理操作中用于(但不仅仅局限于此)执行一个最长前缀匹配分析。这种情况下,分配给每个乘积项的权重将是对应此乘积项的AND位面的反熔丝数。通过使用这种PPE可编程算法,在带有许多信息(最长前缀)在“与”位面中的匹配将达到最高优先级。
某些基于解决方案的现有技术CAM,使用CAM结构匹配线的连续权重。这意味着为了适应网络地址和动作号间的相关变化,当改变CAM结构中匹配入口时,可能不止一个匹配入口必须被重新编程,因而必须重新组织匹配模式在CAM结构中的相对位置。使用本发明,通过对CAM结构及相关的存储器入口,重新编程匹配模式的单个行以及区分函数优先次序,更新布尔操作是可能的。这使得在一个周期内更新所有的布尔操作成为可能。
所说的优先级部件能通过使用建立诸如分层的和分布式解决方案的方式实现和组织,由此提高可得到的集成的水平。PLA结构可被用于实现要么带有单个PLA结构,要么带有多个和可能级联的PLA结构的处理函数。图12描述了带有一个“与”位面1201、一个可编程优先级部件(PPE)1204,和一个“或”位面1207的PLA结构。其中,PPE是以这样的方式实现的:它可以和全局优先级函数相互作用。在图13中显示了这种结构,这里,任意一些PLAs,1301A、1301D通过全局优先级函数1305被连接。使用这种结构,多个PLAs可被用来分析输入模式1301,因而,有效地执行较大的路由表。每一个PLA,1303A,1303D的输出模式,还有指示成功分析的控制信号1304A 1304D与全局优先级函数相连接,区分来自所有PLAs的成功分析输出间的优先次序,从而选择并提供正确的输出模式1306。
装置
作为使用三元态逻辑、包括可编程优先级部件的PLA器件的装置的一个例子,图14描述了一个包括一个存储器组件1402和一个逻辑组件1403的组件1401。存储器组件1402可以但不限于用静态随机存取存储器(SRAM)实现。逻辑组件1403代表各种门逻辑,用如CMOS,如预充电逻辑实现。组件1401由存储器组件1402的和逻辑组件1403组成,当连接在一起时形成一个阵列,下面将指示存储器逻辑结构(MLS)。存储器逻辑组件的扩展可包括一附加存储器组件,并因而实现了三元态存储器逻辑组件1405。三元态存储器逻辑组件1405和其它这样的组件连接可形成三元态存储器逻辑结构(TMLS)。现在参看图15,图中显示了如何使用上述MLS和TMLS实现上面描述的使用三元态逻辑的PLA结构和可编程优先级函数的结构图。输入模式1501被加到TMLS 1502,TMLS将提供模式识别,并由此激活0、1或更多的乘积项1503,在这些乘积项中由MLS 1509最多只选择一个作为PPE。PPE的输出1504被用在另一个MLS 1505中,用来选择存储器逻辑组件的一行,然后,用存储的模式以生成正确的输出1506。它们一起提供了实现乘积项之间带有可编程优先级布尔操作结构。
通过使用存储器逻辑组件,前面描述的反熔丝采用灵活的存储器逻辑组件实现,其中,存储器单元易于被重新编程。通过选择TMLS1502的一行,和两个MLSs 1505 1509的一行,并使用输入路径1501、1507、1508,PLA可被重新编程。对SRAM存储器组件进行编程是一个众所周知的技术。对整个结构的一行进行编程和在乘积项之间使用可编程区分优先级次序确保所有的布尔操作可在一个存储器写周期中被更新。此外,上述结构可实现一个逻辑,以自动指向下一个在TMLS中未被使用或释放了的行。这将排除需要使用外部器件以跟踪PLA中的反熔丝程序,因为网络地址、网络地址的大小、和动作号包含所有的信息,这些信息修正所有的布尔操作,以适应一个网络地址和路由表中一个动作号之间有关的变化,上述方法仅使用一个存储器写周期来完成这件事。
上述存储器逻辑组件也可通过使用可重新编写优先级函数,来区分多个匹配线间的优先级次序来实现三元态CAM。CAM是一个特定的存储结构,当提供一个输入模式时,如果CAM中任何一个预先编程的模式匹配这些输入模式时,逻辑上激活一个匹配线。上述的模式匹配可以扩展到运用三元态逻辑,但是通常需要区匹配线间的某些种类的优先级,同能够激活多个一样,类似于上述的PLA乘积项。现有技术使用硬件优先级,它先用较高号的优先权乘积项,然后再用较低的优先级号的乘积项,或反之。本发明介绍了一种可编程的优先级部件(PPE)来扩展三元态CAM的性能。图16对此进行了说明,这里,一个普通的CAM阵列1602,运用三元态逻辑识别输入模式1601。匹配线1603,不止激活一条,使用MLS 1604来区分优先次序,被编程。PPE的输出1606,则作为一个优先级匹配指示。
作为这种逻辑需要,通过使用一逻辑存储单元,实现所说的反熔丝例,图17描述了这样的配置。输入模式(图中的一位和它的取补)1701,1702,被加到由4个晶体管组成的该逻辑上。乘积项1704,在输入模式应用之前或者被预充电或者提高到一个逻辑高值;预先充电是一种普遍熟知的技术。当应用输入模式(mb,~mb)=(1,0)时,如果SRAM单元的内容为0(d,~d)=(0,1),那么晶体管1705和1706都将打开。乘积项放电的结果,晶体管1705,1706,将打开一个通地的路径。相反,输入和SRAM单元的内容会得到相同的结果,因为另外的晶体管1707,1708会打开通地路径。因此,如果SRAM的内容和输入位mb不是相同逻辑值,乘积项将会放电。使用在一行中逻辑存储单元,如果一个元件的输入位和SRAM的内容之间不匹配,那么计算的乘积项值则为低逻辑值。然而,如果,仅仅是如果,输入模式的全部输入位和相应的SRAM单元的内容相匹配,乘积项将保持高的逻辑值,因此标志一个激活的乘积项。
本发明也定义了另外一种MLS的使用,以在一个普通匹配MLS和三元态匹配MLS之间产生一个混合电路,它既可用二进制又可用三元态逻辑匹配。这就实现了把两种逻辑存储单元一起使用,同时控制输入模式。图18描述了这样的两个逻辑存储单元,从实现的反熔丝说明中可以看出。应该看到,逻辑结构是不变的,因此它可以用于执行两个反熔丝,并且,匹配两位模式。然而,当输入端1801,1802加上逻辑低位,1803端应用一位输入模式,它的取补加到1804时,两个存储逻辑单元的结构可以实现三元态反熔丝或者CAM组件。下面这张表即说明这种情况:
表2
SRAM n(1805) | SRAM n+1(1806) | mb(1803) | ~mb(1804) | 乘积项(1807) | 注解 |
0 | 0 | X | x | 1 | 不介意 |
0 | 1 | 1 | 0 | 1 | 匹配 |
1 | 0 | 1 | 0 | 0 | 不匹配 |
这说明了应用这种输入模式的驱动器可以确定是否两个相邻的逻辑存储单元应该用两位普通匹配,还是一位的三元态匹配。
通过往乘积项中额外加入信号,在PLA结构中应用几个计算规则集(举例来说,在几个不同的网络协议中实现地址分析)来实现是可行的。对该特点,协议号码被定义,因此该号码(和它的二进制表示),根据PLA结构中将被分析的网络地址分析函数的每个协议被选择。在AND位面中的乘积项pt得到扩充,以至于它们由两部分组成,一部分是分析PT,代表了乘积项的计算规则,另一部分是协议PT,它代表了协议。举例来说:考虑一个乘积项,它有四个地址位(a1,a2,a3,a4)和两个协议位(p1,p2),在这里乘积项可以表示为:
pt=pt分析pt协议=(~a1a2~a4)(p1~p2)
公式10
如果根据输入(a1,a4)=(0,1,x,0)的地址分析是正确,并且协议所选号码是(P1,P2)=(1,0),乘积项则为1。通过这种方式,可以使用同一个PLA结构分析若干个协议(下面描述的优先级函数可以应用于在一个计算规则中的乘积项之间区分优先级)。另外,PLA结构可被建立使得一些协议采用三元态逻辑,而一些则不,比如说,使用上面所描述的MLS和/或TMLS结构的方法。
在本发明描述了地址分析方法的装置的扩充,使用了几个PLA结构,如图19所示,1902A-1902I,用来计算子表达方式1903A-1903I,通过使用PLA结构1904,计算动作号1905的结果,从而,为实现地址分析任务,最小化执行布尔操作所需电路数。
对描述的逻辑例子,能被用在使用可编程优先级部件的MLS中,推出了一些数学公式。对一些路由器中的一些前缀结构来说,不同的布尔操作可以涵盖同一个布尔表式字集,例如,两个函数f1(a1,a2,a3)和f2(a1,a2,a3)表示为:
f1(a1,a2,a3)=a1~a2+a1a2~a3
f2(a1,a2,a3)=-a1~a2~a3+a1~a2~a3
公式11
如果输入模式是:
(a1,a2,a3)=(1,0,0)
公式12
则为“true”或“1”。
在Internet中,只能选定用最长前缀的匹配,因此,必需实现区分动作号优先次序。一个实现的例子中,选定正确的作用码要依靠其它码的结果。用公式4的例子,假定函数f1(a1,a2,a3)的优先级比函数f2(a1,a2,a3)的优先级低,这两个函数可如下计算:
f1(a1,a2,a3)=(a1~a2+a1a2~a3)~f2(a1,a2,a3)
f2(a1,a2,a3)=~a1~a2~a3+a1~a2~a3
公式13
在另一个装置中,区分优先级用以乘积项级实现,例如,两个乘积项a1~a2和a1~a2~a3进行区分优先级。这个过程既可以通过扩展乘积项也可以通过引入一个优先级函数来进行。
在公式4的例子中,假定a1~a2的优先次序低于a1~a2~a3,两个函数可以扩展为:
f1(a1,a2,a3))=a1~a2a3+a1a2~a3
f2(a1,a2,a3)=~a1~a2~a3+a1~a2~a3
公式14
因为对输入(a1,a2,a3)=(1,0,0),a1~a2的优先级低于a1~a2~a3。
在这种情况下,被区分了优先级的乘积项的数量是一个重要的尺度,扩充的结果会产生大量新的乘积项。这种情况下,利用优先级函数是有利的。
优先级函数能被乘(逻辑“与”运算)以必须区分优先级的每个乘积项。鉴于公式4的例子,假定a1~a2的优先次序高于a1~a2~a3,就可以得到:
f1(a1,a2,a3)=a1~a2P1(a1,a2,a3)+a1a2~a3
f2(a1,a2,a3)=~a1~a2~a3p2(a1,a2,a3)+a1~a2a3
公式15
在这里P1(a1,a2,a3)和P2(a1,a2,a3)是两个优先级函数,每个优先级函数的计算(1或0)可以通过几个方法完成。下面的实现过程可以作为一个例子。
对每个优先级函数P1(a1,a2,a3)和P2(a1,a2,a3)选定一个优先级号,如P1(a1,a2,a3)的优先级比P2(a1,a2,a3)的优先级大。一个简单的函数就可以比较这两个优先级码,并且可以决定那个乘积项具有第一优先级。这个和每个乘积项相关联的优先级号或优先级代码可以在路由器或交换机的路由表中找到(参照前面章节中的讨论和路由表)。
作为比较两个二进制整数的一逻辑的例子,下面将说明所需的数学公式。
优先级号可以用二进制形式及一个可编程的优先级函数表示。作为一个例子,考虑一个优先级编码方案,这个方案中,一个优先级代码和布尔表达式中的每个乘积项相关(这个优先级号或代码可以直接在路由表中找到)。在这个例子中,使用了一个编码方法,这里的乘积项(赋值为“1”)用最高优先级值获得了其它乘积项的优先级(赋值为“1”)。对以最高有效位开始,计算的每位优先级函数Pi(a1,a2,…an)能以重复的过程实现。
为完成计算,使用一组帮助优先级函数hpi。帮助函数对优先级码中每个位i计算。帮助函数与指定的乘积项相关,并且可以用一个MLS实现。帮助函数的最高有效位,位n,如下计算:hpn=m(a1,a2,a3)(dn+~dnAZn)
公式16
式中,乘积项用作这个具体的优先级函数的输入,表示为m(a1,a2,a3),在这个具体的乘积项优先级码的第n位表示为dn,且当仅当所有的优先级码位和第n位置的乘积项为零或0时,变量AZn(所有的零)为true或“1”,即:AZn=II(~dn+~m(a1,a2,a3))i
i
公式17
式中,下标i表示完成与所有优先级码位(在第n位位置)的乘法(逻辑与)。
下面的帮助优先级函数(优先级码中每位)如下计算:
hpj=hpj+1(dj+~djAZj)
Azj=II(~dj+~hpj+1)i
i
公式18
优先级代码的最低有效位的帮助优先函数hp1可以用作优先级函数p(A1,A2,A3)的结果:
p(a1,a2,a3)=hp0
公式19
在图20所举的例中,为显示一两位的优先级码,采用了MLS组件的优先级函数。在AND位面计算的乘积项m0,m1和mn(注意,为简单起见,图中只显示了三个乘积项)被转送到优先级函数的第一层(第一列)。在优先级函数的第一层(表示优先级码中最高有效位)中,所有的零或AZ1信号根据本地的零,LZ10…n1计算,即,计算在每个MLS组件的列1中的信号(请看下面对该信号描述)。AZ信号返回到MLS组件,并计算列1中每个帮助函数hp1 0…n的值。帮助函数hp1 0…n转送到下一级(即第二最高有效位,在这种情况是优先级码中最低有效位),这里要计算一个新的AZ0信号和一组新的帮助函数hP1 0…n。最后一组帮助函数hp0就作为每个优先级函数P0,Pi和pn的值,这些值将传送至“或”位面。从图中可以看出,结果优先级码(c0,c1)基于AZ1…0信号计算。
图24显示了关于在第i列中的第j个乘积项的MLS组件的逻辑结构的一个更为详细的例子。逻辑电路部分,所说的MLS装置的帮助函数hpj I 2401的计算是以输入帮助函数信号hpj i-1 2403的值为基础的。所有零,AZI,MLS组件的第i列的信号可根据列中的每个MLS组件的所有本地的zero LZ0…ni信号的乘积(逻辑或)进行计算。全局与门2402以分布式的方式实现,以使AND电路的最小部分在每个MLS组件中第i列中被实现。
这种方法也可用于一个分布式优先级函数的装置,这里,若干个PLA结构的输出(例如动作号)都区分了优先级。所描述的优先级函数的每一组乘积项(例如每个PLA结构)计算的结果优先级码C0,,Cn也能用图20中所表示的方式计算出。优先级码中的结果位,每位i可通过如下计算得出:
式中下标j表示不同乘积项的优先级码的总和(逻辑OR)。结果优先级码是计算每组乘积项(例如一个PLA结构)的结果,并与“或”位面的结果有关(每个PLA结构的动作码)。
上面所提到的优先权函数能用于位组(例如动作码)之间区分优先级,而不是单个位(例如一个乘积项的输出结果)。这样,通过使用优先权函数附加层,能加到从一系列的结果值/动作码和它们的结果优先级码中找到结果动作码(参照前面章节中关于全局优先级函数章节)。
优先级函数装置所述的方法可以用提供优先级代码的其它编码方案而被修改(例如最小的值具有最高的优先级)。
另外,其它优先级函数可以通过在电路结构中形成称为硬件优先级函数的方式实现。在这种结构中,可编程逻辑结构中乘积项的物理位置决定了乘积项的优先级。然后直到用户编写可编程逻辑器件,设法使乘积项通过在适当位置编写乘积项而得到正确的优先级。
在地址分析中为减少计算操作的最小化技术
布尔最小化减少计算规则的***
本发明也描述了采用布尔操作计算规则,最小化乘积项组的方法,通过一个简单的乘积项排序和利用熟知的最小化技术,约束一个最长前缀匹配地址分析。也显示使用熟知的布尔最小化技术的其它方法。
通信网络交换器是这样一个***的例子,该***的目标是从不同的路径到达一个公共的交叉点,从这里,按照描述目标和它的传输路径之间关系的信息被发送到其它路径。这类***用附加需求,每个目标可以二进制标识符认出,布尔操作能用标识符来检索说明传输路径的信息,这是本发明的一个目标,并在本部分给于描述。下面文本将说明最小化技术是如何用到计算规则,并在某些情况下将其减少的。这个例子是基于一个网络交换器,但是在相似的***中均可应用。
由于输入的地址号码相对于输出的动作号大(如图6中的例子),输入的信息在很大程度上冗余,而这些信息在计算中可舍弃不用,由此最小化计算所需的乘积项的数量。
如上所描述的那样,可以构造一(组)布尔操作,在对输入的网络地址进行分析(二进制形式)的基础上来完成对输出动作号(一位或几位)的计算。
考虑一个网络的例子,这个网络的前缀长为三位,表示为a1,a2,a3。当函数f(a1,a2,a3)置1(true)时,一给定动作号,如通过路由器的路由被选择,或动作码各位中的一位设定计算/置值。函数f(a1,a2,a3)由三个输入位的布尔操作指定,它保存前缀信息,即,一个函数,位模式之一在给定的前缀位位置的输入的网络地址中被遇到变为1。作为函数的一个例子,定义函数去识别五种不同的位模式:
f(a1,a2,a3)=a1~a2~a3+~a1~a2~a3+a1~a2a3+a1a2~a3+a1a2a3
公式21
式中,如前所述,乘法表示逻辑“与”功能,求和表示逻辑“或”功能。标记~表示了在信号上反操作,即1变为0,0变为1。
公式21可最小化,这种情况下函数f(a1,a2,a3)更简单表示为:
f(a1,a2,a3)=a1+~a2~a3
公式22
这个函数也可用函数g1(a1,a2,a3)和g2(a1,a2,a3)来计算,公式21的计算子表达式为:
g1(a1,a2,a3)=g1=~a2~a3
g2(a1,a2,a3)=g2=a1a2
f(a1,a2,a3)=a1g1+~a1g1+a1~a2a3+g2~a3+g2a3
公式23
使用这些子函数g1(a1,a2,a3)和g2(a1,a2,a3),函数f(a1,a2,a3)可被最小化,并且可以保持乘积项的总数不变,这样有利于更新布尔操作。这样一组子函数可用于两步解决方案中,第一个PLA结构,根据输入的网络地址计算所有的子函数,第二个PLA结构,根据这组子函数的总乘积函数和计算动作码。对于有些***来说,通过预先计算一些公用模式,这样能最小化地址分析功能的芯片的总面积,并将这些用于所说的第二个PLA结构中。
正如所看到的,利用普通最小化技术可简化布尔操作的使用(参照如R.K.Brayton,G.D.Hachtel和A.L.SangiovanniVincentelli所著的Multilevel Logic Synthesis,Procceedings of IEEE,78卷,264-300页,第2期,1990年2月;或Synthesis and Optimization of DigitalCircuits,McGraw-Hill电学和计算机工程丛书中,由Giovanni DeMicheli和Giovanni Demicheli所作,1994年3月),其所得结果是一个小的但充分表示了处理过程的函数。(就像所提到的,输入信息包含有大量的冗余信息,但是通过这种方法就可以去掉这些冗余信息)
当编程PLA结构时,布尔最小化技术如在Giovanni De Micheli1994年3月所著Synthesis and Optimization of Digital Circuits,McGraw-Hill电学和计算机工程丛书中所描述的,以及程序如加洲伯克利大学的Espresso可被使用,以便使PLA结构中必须的乘积项数为最小。对使用优先级函数的最长前缀匹配地址分析方案的网络来说,标准的最小化方法不能实行。本发明使用的方法包含有以下几个步骤:
1.路由表根据优先级号排序;
2.每个在路由表中有入口的子组,A,具有相同优先级号,相当于在乘积项和表的形式中被建立的布尔计算规则R;
3.计算规则R使用如Espresso或相似的方法被最小化,导出乘积项和形式中最小化计算规则集R;
4.最小化计算规则集R与相应的子集A的优先级号/代码相关联;
5.用最小化计算规则集R和相应的优先级号/代码对PLD进行更新;
6.重复步骤2-5,把路由表中所有的优先级号和动作号全部结合。
由于经过全部最小化的乘积项集具有相同的优先级,使用这种或相似的方法,利用优先权函数的计算规则就不会不可靠。
上面所述的最小化技术也能够用图19所示的分布式结构中包含有若干个PLA结构的结构。(也参见前面对这部分的描述)。
这里所说的最小化方法也可以用在采用一个优先级函数的三元态CAM***中。这个CAM***的最小化布尔操作的结果乘积项R将被转变为三元态匹配模式,完成此过程要使用标准技术,并且相关联的优先级代码或R将更新CAM***。
具有可编程逻辑阵列执行单元的微处理器
微处理器体系说明
本发明的一部分涉及到执行软件程序的微处理器体系,在软件程序中,做了大量的位字段分析。一个位字段分析类似与前面应用中所描写的网址分析。图7显示的情况,由n位被分析,得到m位的结果。这不仅能提高普通软件的运行速度,也能提高位字段分析软件的执行速度。后者的一个例子就是在前文提到的网络地址分析。下文将提供更多的使用实例。
一个微处理器***包括一个微处理器和一些附加组件,但不是限于这些附加组件,如随机取存储器(RAM),固定存储器,为了对磁盘磁带驱动的控制器,为了对显示部件和监视器,LCD显示器等的控制器,输入部件和为了对如键盘,鼠标等的控制器,及其他输入输出和通信设备。微处理器能够读和写数据,及从或到这些部件中读取或写入基本的微处理指令。下面这些数据和基本的微处理指令将会指示程序信息。
微处理器执行基本微处理指令,如(但并不仅仅局限于此):两数相加,两数相减,两数比较,移动存储器的信息,转移,条件转移等。一系列的基本微处理指令能这样操纵数据,这种处理以软件程序表示。
图21表明了标准微处理器体系。在通常操作中,微处理器使用地址解码器,2102,指出在外部随机存储器(未显示)上的一个地址,那儿存放着要执行的下一条指令或程序信息。从输入输出单元,2103中取出指令,送至指令解码器2101,以分析程序指令,并在微处理器中设置必要的路径和控制信号2107。基本指令需要输入/输出单元2103,以与外部设备通信,同时会用到执行单元2108来进行计算或类似的操作,或者如果不直接操作数据,可只须改变指令解码器2101的状态和寄存器。执行单元用来实现象加,减,比较等的运算。这些运算是在一个算术逻辑单元(ALU)2104中完成的。另外,有些微处理器还包括一个浮点算术单元(FPAU)2105,加速包括乘除和其它更高级计算函数的这些运算。在通常的运算中,指令被指令解码器2101解码,然后再执行一个微码程序来完成这命令的操作。在有些微处理器中指令解码器2101中可能会改变微码,以改变或添加微处理器的功能。应指出可编程序逻辑执行单元(PLEU)2106如图所示,不是普通的微处理器的一部分,而是本发明的一部分。
ALU是一组件,它取出一或两个操作数,并根据输入用操作数实现预选择功能。当前,在大多数ALU中某些基本功能是整数加,整数减,类似二进制的与,或,异或,及操作数的一些位循环等二进制逻辑运算。
一个二进制逻辑运算是在两个操作数的每一位之间进行的逻辑运算。例如两个输入的操作数的第二位,假设其中分别包含二进制0和1,这时将会执行二进制的"或"。由于逻辑上1“或”0为1,因此结果输出字的第二位将会是1。
在位循环中,输入字将被循环某些位数,可以是右循环或左循环。作为一个例子,考虑二进制输入字10011,并假设这个字将要左循环二位,那么输出结果将是01110。
在某些情况下,微处理器可包含几个ALU及可另加FPAU。典型的FPAU将会完成浮点乘除操作。
一个典型的基本微处理器指令是通过以下步骤执行的:
1.读基本的微处理器指令(例如从存储器中读出的),输入输出部件2013将指令码传给指令解码器2101。
2.指令解码器2101分析基本的微处理器指令码,基于这些分析,发出控制信号2107,2109给微处理器的其它部分2102,2103,2108,专门执行基本的微处理器指令所需的动作。
3.执行所给基本微处理器指令所需的动作。这些动作可能为:由ALU 2104将两位数相加,由ALU 2104比较两个数,计算读到的程序信息的下一地址(由地址计算组件2102实现),从输入输出器2103中读出或存入数据等等。(以执行这些动作所需的基本微处理器指令。)
如前面图21所示的微处理器,微处理器的最小构造是集成一简单微处理器的功能需要的最小功能块集。现在大多数的微处理器都包含几个附加组件,每个都包括在微处理器体系中,以提高整个微处理器***的性能。这种附加组件有:内部寄存器,输入/输出缓存器,微处理器***的各种组件的直接接口。内部存储器既包括只读存储器ROM,又包括RAM,等等。另外有些微处理器用到了顺序执行基本微处理器指令的方法,另外可用流水线方法或二者的结合。
现有技术的问题
在一个软件程序中的一位字段分析,典型实现是用大量微处理器指令序列实现的。在一软件程序中,这里的一位字段分析或几位字段分析以重复的方法通过执行基本的微处理器指令序列实现,由于这种重复操作导致的延迟很突出,因此限制了整个***的性能。
通过使用下面数据处理所给出的软件例程,根据输入位序列操作导出输出位序列,说明位字段分析任务。这个位序列输出可以包括以下信息,如有限状态机(FSM)中下一个状态,一个新的(二进制)可变变量值,一个表达执行动作的二进制码,一个位模式匹配的情形的软件程序用到的标记,等等。软件中所用的索引,用到的阵列以及表都能被加速,象分析一个网络地址的特别的过程都可以被一个位字段的分析执行。
现有技术(例如WO 94/09416,“High Speed programmablelogic controller”)用到了一个微处理器或微控制器,其中具备有能够处理输入字预定义(简单的)的布尔操作指令组成的指令集的一子集。上述的微处理器或微控制器中的典型指令是二进制的“与”和二进制的“或”函数,这里的两个输入字的各位a0,…,an和b0,…,bn分别根据qi=ai·bi和qi=aI+bI,来计算输出字q0,…,qn。这些指令和其它指令如SHIFT指令(SHIFT用于将输入位序列向右或向左移一定的位置)一起使用,通过一系列重复指令进行位字段的分析。这种方法称为可编程序,这里将指出重复编程方法。这种方法的缺点是需要大量指令,并由此引起延迟,这个延迟对一个应用程序的性能是至关重要的。
作为一种位字段分析函数装置,需设置一个布尔操作,它指定所需的逻辑运算,以根据输入位序列生成输出位序列。因此,这个运算能够实现一个指定的位字段的分析。通过运用一个称为可编程逻辑的技术,可以使位字段分析的延迟最小化,这是一个数字组件,它在一个输入的位序列,称为一个输入字上,执行一个预编程布尔操作。输出位序列,称为输出字,是对输入字进行布尔操作的结果。布尔操作可以动态修改,因此可编程的逻辑组件能够重新编写程序,以执行一个新的布尔操作。可编程逻辑组件可以包含有也可不包含寄存器,以存储结果以便今后使用(例如,这些值用于表示FSM中的状态)。这些寄存器的值称为可编程逻辑组件的状态。输出字可以含有也可以不含有部分或全部的可编程逻辑组件的状态。
这种解决方案也就是所说的可编程序,但是这里的可编程能力是能通过重新编写可编程逻辑组件,改变位字段分析的,如此,用所说的组件,能够执行一个新的布尔操作。由于布尔操作可重新编程(这与重复可编程解决方案是相反的),可重新编程能力将表示布尔操作的可重新编程能力。
现今,这样的一个可编程逻辑组件,作为一个独立的电子器件商业化了。微处理器***可以运用这样的可编程逻辑器件作为附加组件。因此微处理器可以与可编程的逻辑器件建立通信,发送输入字,接收输出字,全面或部分地控制器件编程。图22显示了微处理器***的一个例子的方块图,它采用了可编程的逻辑组件。在这个例子中,微处理器2201由其余微处理器***组件2002-2007控制执行动作。存储器由RAM2202,及ROM 2203组成。组件2206是一个固定的存储器件。其它设备与用户之间的通信要经过输入输出组件2205。可编程逻辑组件2205与数据总线2204相连,这个微处理器***的其它部件2201,2202,2203,2206,2207也和数据总线2204相连。
这种方式的缺点是用于和可编程器件传输数据的时间,以及现在的微处理器的工作速度明显高于可编程逻辑器件的运行速度,因此增加了操作的相对等待时间。另外,从可编程逻辑器件中得到的结果,在有条件分支指令集中不能直接地作整数部分。
对于一些应用程序来说,其中位字段分析必须在一个特定的时间量中进行(例如,一些实时***),这种延迟的时间太长了。在一个微处理器***中使用外部PLDs的另一局限是更多的指令需要与外部设备进行通信。
总之这种方式的缺点如下:
1.在数据总线2204上来回的传输数据会引起延时;
2.为了连接可编程逻辑组件2205到数据总线上,可能需要附加的逻辑组件;
3.微处理器2201和可编程逻辑组件2205各自速度不同,导致微处理器2201有大量的等待状态;
4.其余的指令集从PLD中得到的结果缺乏集成型,从而使如条件分支能基于可编程逻辑组件中的标记直接执行。
为执行布尔操作,附加一个基于可编程逻辑的执行单元
根据本发明所说的执行单元,通过将一个PLD,2205集成到微处理器,作为一个附加执行单元,即可编程逻辑执行单元(PLEU)2106,得到在微处理器中使用可编程逻辑结构的优越性。
根据本发明中一实例,它在一个执行单元2108中利用了一个可编程逻辑组件2205,形成了一个可编程逻辑执行单元(PLEU)2106。图23说明了从中取得的性能。可编程逻辑组件2307用于位字段分析,在输入字上进行指定布尔操作,它包括一个预处理器2305,输入的操作数2311的译文和这个可编程逻辑执行单元的状态2310。可编程逻辑组件的有些输出字2308的位,可以被锁存2309,作为可编程逻辑执行单元的状态,而有些输出位可以作为微处理器中的标记2303。输出字2308的其余位作为这个可编程逻辑执行单元的输出2306。
可编程逻辑组件2307或者通过指令译码1201译码基于微处理机指令被重新编程,或者通过微处理机输入/输出接口直接从外部被重新编程。
本发明将可编程逻辑组件2205集成到微处理器2201,作为一个执行单元2106,以提高微处理器***用软件编程的性能,这里的大量位字段的分析限制了程序的性能。这里的改进不取决微处理器2201执行的复杂性,而是取决于运行和集成一个新的可执行单元2106,即可编程逻辑执行单元进入一指定的微处理器2201的可能性。可编程逻辑执行单元集成到微处理器,作为另一个执行单元2106,接受相同类型的输入(例如一个或两个操作数)发送相同类型的输出(例如一个输出字,标记等等)。微处理器的指令集会增加以调节新的执行单元2106的功能。由此位字段分析可通过一个基本的微处理器指令执行。
通过将可编程逻辑集成到微处理器2201,作为一个可执行单元2106,避免了在数据总线2204上来回传输数据所引起的延迟。另外,由于可编程逻辑组件集成到微处理器2201中,可编程逻辑组件作为微处理器2201的其余部分用相同工艺实现,因此,可编程逻辑组件和微处理器的其余部分之间的速度差异可保持为最小值。而且这种实现方法的另一个优点是,为使用下一条指令,向指令解码器的反馈一标记,根据可编程逻辑执行单元2106的标记能作的条件分支/转移。
当一个位字段分析被执行时,微处理器2201将这个位字段(如一个变量或一个输入值)送至可编程逻辑组件2205,将这个位字段作为输入字使用。输出字,由输入字进行指定的布尔操作的结果送回微处理器2201,作进一步的处理。当位字段分析是FSM例行程序的一部分时,可编程逻辑组件2205中的任一内部寄存器可以方便地存储当前的状态值。
图23显示了一个可编程逻辑执行单元的例子的功能方块图。输入2311,由一位或两位操作数(例如8,16,32,64位字)组成。这些输入字2311,传送至预处理单元2312,执行不同类型的预处理函数,如但不限于在两组位序列集(两个操作数)之间进行位的循环,与,或,异或运算等。预处理函数2312的目的是能对输入的操作数,在传送至可编程逻辑组件2307之前,能够作简单的位处理。预处理函数2311中的实现的函数类似于前面所描述的ALU,2104,做的循环和逻辑运算。存储在寄存器2309中的预处理函数2310的输出2305和可编程逻辑执行单元的状态2310,将用作可编程逻辑组件2307的输入字。可编程逻辑组件对输入字执行预编程布尔操作,最后得到输出字。
可编程逻辑组件2307的输出字2308分为三个不同的子输出字。每个输出字2308都可以是可编程逻辑组件2307中单独的布尔操作的结果,或者也可以是同一布尔操作的结果,因此,三个输出字中任一位将匹配其余两个输出字中的对应字。
输出字2308的第一组位作为标记2303,送往指令解码器2101,并用在如下的基本微处理器的指令中。接下来的基本微处理器的指令能够基于这些标记值执行条件转移。
这些标记的优点的一个例子,可以考虑上面的一个输入处理FSM的例子。在FSM中,这些标记可以触发条件转移,到一处理例行程序处理输入值。
第二组输出位2308,在寄存器2309中被锁存,并作为可编程逻辑执行单元的一个新的状态值2310。这个状态值可以方便地用于FSM中,代表FSM的当前状态。
输出字2308的最后一组位可以得到2306,微处理器的其余功能模块2101-2103可以以同样的方式,从其它的执行单元2108输出得到。
可编程逻辑执行单元可以通过一个单独的功能2304被控制和编程。编程和控制操作2304,从指令解码器2101处接收控制信号2301,从指令解码器2101处或直接通过输入/输出部件2103从外部得到程序信息2302。
这使得编程可编程逻辑执行单元成为可能,这过程要么直接采用基本的微处理器指令,要么通过一个单独的外部的微处理器控制组件进行。
为了强调本发明和现有技术的差别,需要注意的是可编程逻辑将是微处理器核心的一部分,而不是微处理器所使用的组件。这使在微处理器的指令集中包函新的指令,以容易地在微处理器程序中直接使用可编程逻辑执行单元,就像加入两个整数那样容易。这里是用现有技术对以前定义的重复可编程解决方案的一个扩展,其中几个指令必须使用还未执行的布尔操作,与本发明不同的是它用布尔操作的可编程能力来修改或重新编写这个布尔操作以减少重复处理的需要。
使用实例
通过执行软件程序,微处理器***可以实现许多不同的操作、解决许多不同的问题。在这样一些软件程序中一个基本的操作是对字段的分析(例如:一个变量的二进制表示、一个输入值等)。这种分析在很多软件例行程序中使用,例如分析从输入器件输入的例行程序中,在输入的值或变量形成判断依据的判断例行程序中,在有限状态机中等。
一个有限状态机是一系列例行程序,它基于以下三个基本部件:
1.一组输入事件或输入信号;
2.一组有限状态机;及
3.一组描述每一个给定状态的规则,状态FSM基于输入事件处理。
除此以外,有限状态机也可以包括输出信号,这些输出信号被用作启动不同的处理例程。
作为FSM的一个实例,考虑下面的输入例程。FSM的实例有两种状态:运行或等待。在等待状态下,FSM等待用户的输入。当按下一个键时,FSM分析输入(位字段)的值,如果该值与某一个模式匹配,则FSM继续运行状态,在运行状态下,FSM向处理例程发出一个信号,处理了输入。当处理例程完成时它向FSM发送一个返回信号,之后,FSM退回到等待状态。
在位字段分析中,最典型地是执行相关的一系列基本微处理器指令。在软件程序中,一位或几位字段分析是采用重复方式。由重复操作会明显产生延迟,它可能会限制***的性能。
指定的位字段分析任务,根据位输入序列功能确定,下面的数据处理,由给出的软件例程导出位输出序列。位输出序列包含这样的信息:FSM的下一个状态、变量的新(二进制)值、代表要执行的动作的二进制代码、在位模式匹配的情况下软件程序进一步使用的标识等等。
使用的另一个实例是通过对带有新的运算功能的输入和输出的新执行单元进行编程,在微处理器程序中加入新的专门运算或传输指令。作为一个例子,考虑的下面的问题是部分32位字被用作外部存储器的地址单元。这个例子的算法是:
1.把32位字加入寄存器A
2.把寄存器A拷贝到寄存器B
3.把寄存器A和0xFF0000进行与运算
4.右移寄存器A16位
5.把寄存器B和0xFF进行与运算
6.把寄存器A和寄存器B相加
7.把寄存器A与4相乘
为描述算法,考虑输入(a31,……a1)=(0010010.11001100.01010101.10011001)。当运用上面的算法时,输出将是(00000000.00000011.00110010.01100100)。象前面几节描述的那样,这样的二进制输入和二进制输出之间的关系可由布尔操作实现。
对于限于只能使用PLEU的大小输入量而言,应存储输出结果,因而建立布尔操作,该布尔操作把专门的输入映射到/运算成正确的输出模式。如果输入的范围被实现,PLEU可被用作该算法的专门的执行单元,在一个内部微处理器周期而不是象在上面的算法中,在7个内部微处理器周期中执行运算。用这种算法,对可编程执行单元进行编程,以实现专门计算是可能的,这样,如果经常使用替代算法会极大地改善整体性能。
另一个使用实例是强使用哈希译码。哈希编码是在输入处加一函数,其编码过程是不可逆转的。这意味着输出不能被用来计算输入。这一点也可被描述为不可逆转的函数。因此,一种强使方法,这里不同的输入表首先用哈希函数编码,然后必须与输出表进行匹配。通常情况下,这会通过表查询函数来实现,表查询函数要查遍每个被编码输入的已知输出表。因而查询取决于输出表的大小。实现这样的查询函数需要进行许多位字段分析。
另一个使用实例是一个集成的部分转发引擎。在这样的转发引擎中,可以方便地使用带有可编程逻辑执行单元的的微处理器。带有PLEU的微处理器会被用作如下任务:
1.网络地址分析(使用本发明中描述的方法);
2.通过设置PLEU中校验字段的计算规则,在数据包中计算校验字段;
3.既在数据包中,又通过使用路由器和/或网络管理***,使用PLEU计算统计图/数,PLEU可编程序以计算图/数;
4.根据数据扰频器,利用PLEU对部分或全部数据包进行扰频。数据扰频可通过微处理器用PLEU作码转换(如:从4位转到5位代码)和/或作PRBS扰频实现。在数据包的位或字节级的扰频函数由PLEU方便地完成,通过对PLEU进行编程以实现代码转换和/或通过对PLEU进行编程,使用例如它的内部寄存器和PLEU的布尔可编程结构,以实现PRBS扰频。
Claims (107)
1.一种在分析***中用于对输入字或摸式进行分析的方法,该分析***包括一个或多个执行计算规则运算的逻辑设备,所说的逻辑设备由硬件实现且可被编程,从而允许实现新的计算规则和更新现有计算规则,所说的计算规则至少是分析***一个或多个处理功能的一部分,所说方法包括了包含下述步骤的分析阶段:
在输入分析***中输入要分析的输入字,及
对输入字进行处理,从而提供输出字,
这里所说的处理包括一个执行一个或多个计算规则运算的步骤。
2.按照权利要求1的方法,这里所说的要被分析的输入字包括通信网络中的网络地址,而分析***是一个地址分析***。
3.按照权利要求1或2方法,这里的输出字用动作号的形式。
4.按照权利要求1到3中任意一种的方法,这里所说的输入字和/或输出字包括多于一位的信息。
5.按照权利要求1到4中任意一种的方法,这里所说的计算规则包括一个或多个模糊逻辑操作。
6.按照权利要求1到4中任意一种的方法,这里所说的计算规则包括一个或多个布尔逻辑操作。
7.按照权利要求6中任意一种的方法,这里所说的一个或多个布尔逻辑操作能用乘积项的和来定义,并且最好把输出字中给定位的计算规则,当作乘积项的和来计算,所说的乘积项每个与输入字激活的输出字节各个位相关。
8.按照权利要求1到7中任意一种的方法,这里所说的处理包括把输入字转成预定的输入字格式的预处理步骤。
9.按照权利要求8方法,这里所说的预处理步骤跟随着执行一个或多个计算规则运算的步骤。
10.按照权利要求1到9中任意一种的方法,这里所说的一个或多个计算规则运算的结果是为了得到所说输出字作后处理的中间输出字。
11.按照权利要求4到10中任意一种的方法,这里的多位输入字或多位预处理的输入字,使用一些计算规则来处理的,每个计算规则形成多位输出字或多位中间输出字的一个输出位,计算规则的数量等于输出字或中间输出字的位数。
12.按照权利要求2或权利要求4到11中任意一种的方法,这里所说的地址分析包括一最长的前缀地址分析运算,所说最长的前缀地址分析运算最好是所说的一个或多个计算规则运算的一部分。
13.按照权利要求4到12中任意一种的方法,这里所说的一个或多个处理功能包括一个或多个优先级函数,所说的优先级函数最好是所说的一个或多个计算规则的一部分。
14.按照前面的权利要求的任意一种的方法,这里所说的可编程逻辑器件具有处理逻辑函数的结构,所说的结构包括:
一个可重复编程的优先级部件或函数(PPE),用来对同一输入字匹配的几个可能的输出字之间确定优先次序。
15.按照权利要求1到4或6到14中任意一种的方法,这里的可编程逻辑器件结构还包括:
一AND处理位面,以得到作为计算规则输入的函数的乘积项,这里的每个计算规则输入包括真、假、或者是“不介意”。
16.按照权利要求1到4或6到15中任意一种的方法,这里的可编程逻辑器件结构还包括:
一OR位面,根据AND位面得到乘积项的和,由此得到计算规则输出结果。
17.按照权利要求14到16中任意一种的方法,这里所说的计算规则输出结果通过对要处理的不同布尔操作给予不同的优先级而被确定。
18.按照权利要求15或16的方法,这里在AND位面中得到的乘积项用优先级函数区分优先次序,从而选择将转送到OR位面的几个被激活的乘积项之一,以得到计算规则输出结果,所说的优先级函数最好选择具有最高优先权值或数值的乘积项。
19.按照权利要求18的方法,这里的可编程优先权部件把所说的优先级函数分配给每个同时被激活的乘积项。
20.按照权利要求18的方法,这里的可编程优先权部件把权重值或优先权编码分配给在AND位面得到的乘积项,从而选择几个被激活的乘积项之一。
21.按照权利要求20的方法,这里的权重值或优先权编码被赋给每个乘积项。
22.按照权利要求20或21的方法,这里分配给每个乘积项的权重值等于为形成乘积项编程在AND位面的反熔丝数。
23.按照权利要求1到22的任意一种的方法,还包括根据接收的网络地址、优先权和动作号之间关系的信息,更新分析***的学习阶段,所说的分析阶段在所说的更新期间是停止的。
24.按照权利要求23的方法,这里所说的更新包括一个或多个可编程逻辑器件的编程或重复编程。
25.按照权利要求23或24的方法,这里的分析***是随通信网络的变更而更新的。
26.按照权利要求25的方法,这里的变更可包括:新的终端地址、网络终端位置的变更、及网络拓朴的变更。
27.按照权利要求1到26的任意一种的方法,这里的可编程逻辑器件包括一些存储器逻辑单元,每个单元包括一可重复编程的的存储部件,用于存储匹配值,最好还有一个逻辑部件用于把输入位的值同存储的匹配值进行比较。
28.一种用于对输入字或摸式进行分析的***,所说的***包括:用以执行计算规则运算的一个或多个逻辑器件,所说的逻辑器件由硬件实现且可被编程,从而允许实现新的计算规则,并且所说的计算规则至少是一个或多个用于根据输入字或模式确定输出字的处理函数的部分,从而提供分析的结果。
29.按照权利要求28的***,这里把要分析的输入字表示为通信网络中的网络地址,而且分析***是一个地址分析***。
30.按照权利要求28或29的***,这里的输出字具有动作号的形式。
31.按照权利要求28到30中任意一种的***,这里的输入字和/或输出字包括多于一位的信息。
32.按照权利要求28到31中任意一种的***,这里的计算规则包括一个或多个模糊逻辑操作。
33.按照权利要求28到32中任意一种的***,这里的计算规则包括一个或多个布尔逻辑操作。
34.按照权利要求28到32中任意一种的***,这里由布尔逻辑操作定义的计算规则,能用乘积项的和来定义,以及对输出字的给定位的特定计算规则被当作乘积项的和来计算,所说乘积项每个与输入字激活的输出字中各个位相关。
35.按照权利要求28到34中任意一种的***,这里的处理函数包括预处理函数和/或后处理函数。
36.按照权利要求31到35中任意一种的***,这里的多位输入字或多位预处理的输入字使用一些计算规则来处理,每个计算规则形成多位输出字或多位中间输出字的一个输出位,计算规则的数量等于输出字或中间输出字的位数。
37.按照权利要求28到36中任意一种的***,这里的可编程逻辑器件包括:
一个可重复编程的优先级部件或函数(PPE),用来在同一输入字匹配的几个可能的输出结果之间确定优先次序。
38.按照权利要求37的***,这里的可编程逻辑器件还包括:
一AND处理位面,以得到作为计算规则输入的函数的乘积项,这里的每个计算规则输入或由真、假、或者是“不介意”构成。
39.按照权利要求38的***,这里的可编程逻辑器件还包括:
一OR位面,以根据AND位面得到乘积项的和,由此得到计算规则输出结果。
40.按照权利要求38或39的***,这里的优先权部件适合于通过选择具有最高优先值或数的激活的乘积项来区分优先次序。
41.按照权利要求28到40中任意一种的***,这里的可编程逻辑器件包括一些存储器逻辑单元,每个单元包括用于存储匹配值的可重复编程的存储器部件。
42.按照权利要求41的***,这里在可编程逻辑器件硬件中新计算规则的编程或重复编程通过编程存储器部件来实现。
43.按照权利要求28到42的任意一种的***,这里的可编程逻辑器件或一些器件是在单个集成片上实现的。
44.按照权利要求28到43的任意一种的***,这里执行分析的处理函数是由在单个集成片上的处理部件实现的。
45.一种单片微处理器体系结构,所说结构包括:
一指令解码单元,
一地址计算单元,
输入/输出部件,
一算术逻辑部件(ALU),及
一实现一个或多个逻辑功能的可编程逻辑执行部件(PLEU),所说的逻辑执行部件可重复编程,因此允许实现新的逻辑功能。
46.按照权利要求45的体系结构,这里的可编程逻辑执行单元适合执行布尔逻辑操作。
47.按照权利要求45或46的体系结构,所说的体系结构适合分析位字段。
48.按照权利要求45到47的任意一种的体系结构,这里的可编程逻辑执行部件包括一些存储器逻辑单元,每个单元包括一可重复编程的的存储器部件,用于存储匹配值,最好还有一个逻辑部件用于把输入的位值同存储的匹配值进行比较。
49.按照权利要求48的体系结构,这里的存储器部件用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)实现。
50.按照权利要求48或49的体系结构,这里的逻辑部件用MOS技术和/或CMOS技术实现。
51.按照权利要求48到50任意一种的体系结构,这里在可编程逻辑执行部件中新的逻辑函数的编程或重复编程通过编程存储器部件来实现。
52.按照权利要求45到51任意一种的体系结构,这里的不同逻辑操作可通过来自内部指令单元的基本指令,或从外部控制单元经输入/输出部件来的指令,编程到逻辑执行部件中。
53.按照权利要求45到52任意一种的体系结构,这里的逻辑执行部件包括可编程的逻辑器件或部件和/或可编程的逻辑阵列部件。
54.按照权利要求53的体系结构,这里的逻辑执行部件包括一些用来存储逻辑器件或部件状态的寄存器。
55.按照权利要求45到54任意一种的体系结构,这里的逻辑执行单元包括可编程优先权函数单元。
56.按照权利要求45到55任意一种的体系结构,这里的逻辑执行单元包括AND处理位面结构和/或OR处理位面结构。
57.一种具有按照权利要求45到56任意一种的体系结构的微处理机,所说的微处理机被编程,以通过一个基本的微处理机指令执行位字段的分析。
58.一种可重复编程的电子设备结构,用来把一位或多位的输入信号同存储的或预编程的匹配值进行比较,所说的结构包括:一个或多个存储器逻辑单元或部件(MLC),每个单元包括至少一个可重复编程的存储部件以存储匹配值,和/或至少一个逻辑部件以把输入值同存储的匹配值进行比较。
59.按照权利要求58的结构,这里的存储部件用静态随机存取存储器(SRAM)单元或动态随机存取存储器(DRAM)单元实现。
60.按照权利要求58或59的结构,这里的输入值同存储的匹配值的逻辑比较包括一个或多个逻辑操作,并且所说的逻辑操作包括AND功能和/或OR功能。
61.按照权利要求58到60任意一种的结构,这里的逻辑部件用MOS技术和/或CMOS技术实现。
62.按照权利要求58到61任意一种的结构,这里的存储器逻辑单元包括一个一位的存储器部件和/或一逻辑部件,用来把一个一位的输入同存储的位进行比较。
63.按照权利要求58到62任意一种的结构,这里至少两个一位的存储器部件或存储器逻辑单元被组合在一起,以允许存储两位的匹配值,并且形成允许“不介意”状态的三元态存储单元。
64.按照权利要求58到63任意一种的结构,这里的几个存储器逻辑单元被用来形成至少部分存储器逻辑结构(MLS)。
65.按照权利要求64的结构,这里的几个存储器逻辑单元的输出被AND和/或OR在一起。
66.按照权利要求63的结构,这里的两个存储器部件用相同的匹配值编程,以便允许“不介意”状态。
67.按照权利要求63或者66的结构,这里的几个三元态存储器逻辑单元用来至少形成部分三元态存储器逻辑结构(TMLS)。
68.按照权利要求58到62中任意一种的结构,这里的几个存储器逻辑单元用于实现三元态的内容可编址存储。
69.按照权利要求67的结构,这里的三元态存储器逻辑结构(TMLS)被安排形成至少部分可编程的AND处理结构或位面。
70.按照权利要求64的结构,这里的存储器逻辑结构(MLS)被安排,形成至少部分可编程优先权部件结构。
71.一种硬件可重配置或可重编程的电子逻辑设备结构(PLD),用来处理逻辑功能,所说的结构包括按照权利要求58到70任意一种的结构。
72.一种硬件可重配置或可重编程的电子逻辑设备结构(PLD),用来处理逻辑功能,所说的结构包括可编程优先级部件或函数(PPE)以便在相同输入字匹配的几个输出结果间区分优先次序。
73.按照权利要求72的结构,还包括一个或多个存储器逻辑单元(MLC),每个单元包括至少一个可重复编程的的存储器部件以存储匹配值,和/或至少一个逻辑部件以把输入位的值同存储的匹配值进行比较。
74.按照权利要求73的结构,这里的存储部件用静态随机存取存储器(SRAM)单元实现。
75.按照权利要求73或74的结构,这里的逻辑部件用四个晶体管实现。
76.按照权利要求73到75任意一种的结构,这里的逻辑部件用MOS技术和/或CMOS技术实现。
77.按照权利要求73到76任意一种的结构,这里的逻辑部件有两个输入和一个输出。
78.按照权利要求77的结构,这里构成的一个或多个存储器逻辑单元,使其一个输入位信号被反馈给第一个逻辑部件的输入端,输入位信号的补码被反馈给第二个逻辑部件的输入端,并用逻辑部件的输出端给出比较输出信号。
79.按照权利要求73到78任意一种的结构,这里的几个存储器逻辑单元被用来形成至少部分存储器逻辑结构(MLS),每个存储器逻辑单元具有输入的输入位信号和它的互补信号。
80.按照权利要求79的结构,这里的几个存储器逻辑单元的输出被AND和/或OR在一起。
81.按照权利要求73到80任意一种的结构,这里的两个存储器逻辑单元被组合在一起,形成一三元态的存储器逻辑单元,从而允许“不介意”状态,这里的输出信号不管匹配与否是固定的。
82.按照权利要求81的结构,这里的两个存储器部件用相同的匹配值编程以便允许“不介意”状态。
83.按照权利要求77、81或82任意一种的结构,这里的三元态存储器逻辑单元的第一存储器逻辑单元具有反馈给第一输入端的输入位信号,以及反馈给第二输入端的逻辑假信号,第二存储器逻辑单元具有反馈给第一输入端的输入位信号的补码,以及反馈给第二输入端的逻辑假信号,并且第一及第二存储器逻辑单元的输出最好AND在一起。
84.按照权利要求81、82或83任意一种的结构,这里的几个三元态存储器逻辑单元用来至少形成部分三元态存储器逻辑结构(TMLS),每个三元态存储器逻辑单元具有作为输入的输入位信号和它的互补信号。
85.按照权利要求72到84任意一种的结构,还包括一AND处理位面。
86.按照权利要求72到85任意一种的结构,还包括一OR处理位面。
87.按照权利要求85和86的结构,这里的结构包括一可编程逻辑陈列(PLA),所说的可编程逻辑陈列有AND处理位面,优先权部件及OR处理位面。
88.按照权利要求72到78任意一种的结构,这里的优先权部件,AND位面和/或OR位面有存储匹配值的存储器部件和/或将输入的位同存储的匹配值进行比较的逻辑部件。
89.按照权利要求73到88任意一种的结构,这里的优先权部件,AND位面和/或OR位面有一个或多个所说的存储逻辑单元。
90.按照权利要求79和89的结构,这里的存储器逻辑单元形成存储器逻辑结构(MLS)。
91.按照权利要求84和89或90的结构,这里的存储器逻辑单元形成三元态的存储器逻辑结构(TMLS)。
92.按照权利要求89和90的结构,这里的AND处理位面包括一个三元态存储器逻辑结构(TMLS),优先权部件包括存储器逻辑结构(MLS),而OR处理位面包括存储器逻辑结构(MLS)。
93.按照权利要求79的结构,还包括由使用几个存储器逻辑单元实现的三元态内容定址存储器(CAM),与适合在CAM的多个同时被激活的匹配线之间去区分优先次序的优先级部件一起,从而选择输出。
94.按照权利要求86到92任意一种的结构,这里的AND处理位面适于得到随输入字或模型而变的乘积项,而OR处理位面适于从AND位面得到乘积项和,从而得到输出结果。
95.按照权利要求94的结构,这里在AND位面中,当多于一个乘积项被同一输入字激活时,优先权部件适于在几个可能的输出结果之间区分优先次序。
96.按照权利要求95的结构,这里的结构适合处理布尔操作,并且通过对要被处理的不同的布尔操作给予不同的优先权来确定输出结果。
97.按照权利要求95的结构,这里的优先权部件适合在AND位面中得到的几个乘积项之间区分优先级,从而选择要转给OR位面的几个激活乘积项中的一项,以便得到输出结果。
98.按照权利要求95到97任意一种的结构,这里的优先权部件适合于通过选择具有最高优先权值或数的乘积项来确定优先次序。
99.按照权利要求97的结构,这里的可编程优先权部件适合于向每个同时激活的乘积项分配一优先级函数。
100.按照权利要求97或98的结构,这里的可编程优先权部件适合于向AND位面中得到的乘积项分配一权重值或优先权码,从而选择几个激活的乘积项中的一项。
101.按照权利要求100的结构,这里的优先权部件适合于向每个乘积项分配一权重值。
102.按照权利要求97或98的结构,这里分配给每个乘积项的权重值等于为生成该乘积项编制在AND位面中的反熔丝数。
103.按照权利要求73到102任意一种的结构,这里的优先权部件包含存储器逻辑单元,而通过在存储逻辑单元中存储相关的匹配值优先权函数被编程。
104.按照权利要求79到103任意一种的结构,这里的MLS结构中的一行和/或TMLS结构中的一行能在一个时钟周期或一个存储器写周期中被编程或重复编程。
105.按照权利要求72到104任意一种的结构,这里的编程或重复编程周期,通过输入一输入或地址字,一相关的优先权数,及相关的输出字而被执行。
106.一种用于执行最长前缀匹配地址分析的布尔函数计算规则(BFCR)的最小化方法,这里的计算规则包括优先级规则,而这里的可编程逻辑器件(PLD)要根据路由表或网络地址表被更新或编程,路由表或网络地址表包括以网络地址位模式和相关的输出动作号及优先权值或号码形式的入口,所说的方法包括:
a)根据优先权号码排序路由表,以使路由表中的每个入口的子表(A)具有相同的优先权号码,相应的布尔计算规则(R)被设置成乘积和的形式,
b)使在排序步骤中得到的计算规则集(R)最小化,从而得到乘积和形式的最小化的计算规则(R‘),
c)利用最小化的计算规则(R‘)和相关的优先权数更新可编程逻辑器件,及
d)对所有具有公共优先权数的项目子表重复步a)到c)。
107.按照权利要求106的方法,这里使用Espresso最小化技术。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DK1458/1997 | 1997-12-16 | ||
DK145897 | 1997-12-16 | ||
DK1457/1997 | 1997-12-16 | ||
DK145797 | 1997-12-16 | ||
DKPA199801174 | 1998-09-17 | ||
DKPA199801174 | 1998-09-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1284180A true CN1284180A (zh) | 2001-02-14 |
Family
ID=27221151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98813238A Pending CN1284180A (zh) | 1997-12-16 | 1998-12-16 | 利用布尔逻辑和可编程结构进行地址分析的方法和装置 |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1070287B1 (zh) |
JP (1) | JP2002508644A (zh) |
CN (1) | CN1284180A (zh) |
AT (1) | ATE224078T1 (zh) |
AU (1) | AU1663199A (zh) |
DE (1) | DE69807944D1 (zh) |
WO (1) | WO1999031581A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100347992C (zh) * | 2004-07-09 | 2007-11-07 | 清华大学 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
CN100392661C (zh) * | 2004-07-17 | 2008-06-04 | 周建龙 | 一种可编程测控设备的数据处理方法 |
CN108256164A (zh) * | 2011-12-15 | 2018-07-06 | 美光科技公司 | 状态机晶格中的布尔逻辑 |
CN110780877A (zh) * | 2019-09-17 | 2020-02-11 | 秦皇岛米格教育科技有限公司 | 基于程序积木的编程***及其配置装置 |
CN111935100A (zh) * | 2020-07-16 | 2020-11-13 | 锐捷网络股份有限公司 | Flowspec规则下发方法、装置、设备及介质 |
CN113448537A (zh) * | 2017-08-29 | 2021-09-28 | Gsi 科技公司 | 用于在关联存储器中进行最小值-最大值计算的方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6499081B1 (en) | 1999-02-23 | 2002-12-24 | Netlogic Microsystems, Inc. | Method and apparatus for determining a longest prefix match in a segmented content addressable memory device |
US6574702B2 (en) | 1999-02-23 | 2003-06-03 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a content addressable memory device |
US6539455B1 (en) | 1999-02-23 | 2003-03-25 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a ternary content addressable memory device |
US6460112B1 (en) | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US7143231B1 (en) | 1999-09-23 | 2006-11-28 | Netlogic Microsystems, Inc. | Method and apparatus for performing packet classification for policy-based packet routing |
US7487200B1 (en) | 1999-09-23 | 2009-02-03 | Netlogic Microsystems, Inc. | Method and apparatus for performing priority encoding in a segmented classification system |
US7110407B1 (en) | 1999-09-23 | 2006-09-19 | Netlogic Microsystems, Inc. | Method and apparatus for performing priority encoding in a segmented classification system using enable signals |
PL2126106T3 (pl) * | 2007-02-23 | 2018-03-30 | Sk Chemicals Co., Ltd. | Sposób produkcji i oczyszczania czynnika VIII i jego pochodnych |
RU2486576C1 (ru) * | 2012-04-17 | 2013-06-27 | Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет ФГБОУ ВПО "ВятГУ" | Однородная вычислительная среда для конвейерных вычислений суммы m n-разрядных чисел |
RU2653304C1 (ru) * | 2017-09-11 | 2018-05-07 | федеральное государственное бюджетное образовательное учреждение высшего образования "Пермский национальный исследовательский политехнический университет" | Программируемое логическое устройство |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL93220A0 (en) * | 1989-02-03 | 1990-11-05 | Bang & Olufsen As | Signal processing apparatus and method |
US5490258A (en) * | 1991-07-29 | 1996-02-06 | Fenner; Peter R. | Associative memory for very large key spaces |
US5138615A (en) * | 1989-06-22 | 1992-08-11 | Digital Equipment Corporation | Reconfiguration system and method for high-speed mesh connected local area network |
US5251205A (en) * | 1990-09-04 | 1993-10-05 | Digital Equipment Corporation | Multiple protocol routing |
US5386413A (en) * | 1993-03-19 | 1995-01-31 | Bell Communications Research, Inc. | Fast multilevel hierarchical routing table lookup using content addressable memory |
EP0721617B1 (de) * | 1993-09-20 | 1997-05-28 | Siemens Aktiengesellschaft | Anordnung zur regeldekodierung und regelauswertung für einen fuzzy-interference-prozessor mit hoher auflösung |
DE69422935T2 (de) * | 1994-06-30 | 2000-08-17 | International Business Machines Corp., Armonk | Verfahren und vorrichtung zum vergleichen von datensequenzen variabler länge |
US5893911A (en) * | 1996-04-17 | 1999-04-13 | Neon Software, Inc. | Method for defining and applying rules for message distribution for transaction processing in a distributed application |
-
1998
- 1998-12-16 CN CN98813238A patent/CN1284180A/zh active Pending
- 1998-12-16 AU AU16631/99A patent/AU1663199A/en not_active Abandoned
- 1998-12-16 JP JP2000539412A patent/JP2002508644A/ja active Pending
- 1998-12-16 WO PCT/DK1998/000557 patent/WO1999031581A2/en active IP Right Grant
- 1998-12-16 AT AT98961081T patent/ATE224078T1/de not_active IP Right Cessation
- 1998-12-16 EP EP98961081A patent/EP1070287B1/en not_active Expired - Lifetime
- 1998-12-16 DE DE69807944T patent/DE69807944D1/de not_active Expired - Lifetime
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100347992C (zh) * | 2004-07-09 | 2007-11-07 | 清华大学 | 实现线速对数据流按规则库近似匹配的可配置的硬件结构 |
CN100392661C (zh) * | 2004-07-17 | 2008-06-04 | 周建龙 | 一种可编程测控设备的数据处理方法 |
CN108256164A (zh) * | 2011-12-15 | 2018-07-06 | 美光科技公司 | 状态机晶格中的布尔逻辑 |
CN108256164B (zh) * | 2011-12-15 | 2022-01-21 | 美光科技公司 | 状态机晶格中的布尔逻辑 |
CN113448537A (zh) * | 2017-08-29 | 2021-09-28 | Gsi 科技公司 | 用于在关联存储器中进行最小值-最大值计算的方法 |
CN110780877A (zh) * | 2019-09-17 | 2020-02-11 | 秦皇岛米格教育科技有限公司 | 基于程序积木的编程***及其配置装置 |
CN110780877B (zh) * | 2019-09-17 | 2023-10-03 | 秦皇岛米格教育科技有限公司 | 基于程序积木的编程***及其配置装置 |
CN111935100A (zh) * | 2020-07-16 | 2020-11-13 | 锐捷网络股份有限公司 | Flowspec规则下发方法、装置、设备及介质 |
CN111935100B (zh) * | 2020-07-16 | 2022-05-20 | 锐捷网络股份有限公司 | Flowspec规则下发方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO1999031581A3 (en) | 1999-07-29 |
JP2002508644A (ja) | 2002-03-19 |
EP1070287A2 (en) | 2001-01-24 |
WO1999031581A2 (en) | 1999-06-24 |
DE69807944D1 (de) | 2002-10-17 |
EP1070287B1 (en) | 2002-09-11 |
ATE224078T1 (de) | 2002-09-15 |
AU1663199A (en) | 1999-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1324861C (zh) | 位串的校验方法及装置 | |
CN1284180A (zh) | 利用布尔逻辑和可编程结构进行地址分析的方法和装置 | |
CN1027198C (zh) | 计算装置 | |
CN1132098C (zh) | 并行分布处理***及其方法 | |
CN1202470C (zh) | 处理器 | |
CN1272946C (zh) | 可伸缩的网络处理器及操作该网络处理器的方法和装置 | |
CN1378665A (zh) | 编程概念 | |
CN1204503C (zh) | 用于通信网络的装置、***及其操作方法 | |
CN1781078A (zh) | 硬件加速器个性编译器 | |
CN1239984C (zh) | Vlsi网络处理器和方法 | |
CN1144145C (zh) | 用于数据仓库的选择聚集层和交叉产品层的方法和装置 | |
CN1311377C (zh) | 转寄信息封包的方法 | |
CN1186718C (zh) | 微控制器指令集 | |
CN86107558A (zh) | 具有带式随机存取存储器和地址发生器装置的单指令多数据单元阵列处理机 | |
CN1319210A (zh) | 可配置的硬件块的配置方法 | |
CN1118765C (zh) | 数据处理装置 | |
CN1298521A (zh) | 具有二维或多维可编程序的单元结构(fpgas、dpgas等)的数据流处理器和模块的无死锁配置方法 | |
CN1273893C (zh) | 模块化计算机***以及相关方法 | |
CN1522006A (zh) | 数字传送网上不同的数据帧接入和传送的***和方法 | |
CN1201519C (zh) | 数据一致性检测装置、数据一致性判断装置及数据挑选装置 | |
CN1846419A (zh) | 自管理媒介信息流 | |
CN1319209A (zh) | 数字通信处理器 | |
CN1505819A (zh) | 相联存储器及其检索方法、网络设备及网络*** | |
CN1269052C (zh) | 支持缩小代码长度的常量还原型处理器 | |
CN1106941A (zh) | 逻辑电路的自动设计方法、***、装置和乘法器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1075738 Country of ref document: HK |