使用模式匹配的网络消息处理的制作方法

文档序号:7587743阅读:263来源:国知局
专利名称:使用模式匹配的网络消息处理的制作方法
技术领域
本发明涉及网络通信,更具体地,涉及处理经由例如以太网网络的网络接收的消息。
背景技术
局域网(LAN)、广域网(WAN)和其它类型的网络典型地包括经由连接耦合、根据各种基于包的通信协议来操作的大量信息处理系统。例如,以太网IEEE 802.3协议是基于载波侦听多路访问/冲突检测(CSMA/CD)方法的被广泛使用的LAN协议。因为以太网和IEEE802.3协议是类似的,并且可以共存于相同的LAN上,所以两者有时都被称作以太网。10/100以太网提供从10到100兆比特每秒(Mbps)的增加的以太网速度,并为干线和服务器连接性提供简单的、成本有效的选择。吉比特以太网是建立在基础以太网协议之上的另一种以太网协议,但是将速度增加到10/100以太网的十倍以上到达1000Mbps或者一千兆比特每秒(Gbps)。
网络中的设备通常接收要给它们的消息和并不是要给它们的消息。因此,这种设备必须在本地分析每一个进入消息来确定它们是否应该接受该消息。典型地,每个设备具有必须以某种形式被与每一个所接收消息中的地址相比较的地址。由于地址长度和将要被比较的大量地址,精确的地址匹配在计算上是很密集的。因为设备可以为大量其它设备接受消息,所以非常大量的消息可能被接收,并且网络速度增加,处理(例如,接受或拒绝)进入消息的问题可以导致在网络中各种设备处的瓶颈,并降低整体性能。传统的目的地地址识别方法需要在比介质访问控制(MAC)级更高的开放式系统互联(OSI)级上被进行的后滤波,并且需要大量软件和通用处理硬件干涉。一些技术使用内容可寻址存储器(CAM),但是这种技术典型地都很贵、非常耗电并且不灵活。因此,需要增强处理进入消息的性能。
除了只是接受或拒绝进入消息之外,每一个设备典型地具有响应于接收到消息而进行的各种任务。因此,通过消息被接收的一些数据需要在很短的时间内被存储和访问。这样,通过预处理所接收消息(例如,通过在入站消息被处理器或软件驱动系统资源检查之前将它们分类)以释放这种资源的使用用于其它任务并减少访问重要或高优先级帧的等待时间来增强这种消息的处理将是有优势的。


通过参照附图,本发明可以被更好地理解,并且其许多目的、特征和优点对本领域技术人员是显然的。不同图中相同标号的使用指代类似或相同的项。
图1是图示根据本发明实施例的信息处理和通信系统的框图。
图2是图示图1的系统的包控制器的接收部分的框图。
图3是图示可由图1的系统接收和分析的实例性消息地址的框图。
图4是图示图1的实例性缓存描述符队列的框图。
图5是图示图1的实例性模式匹配和模式匹配属性寄存器的框图。
图6是图示用于通过图1的系统处理所接收消息的方法的流程图。
图7是图示用于散列和模式匹配由图1的系统所接收的消息地址的方法的一部分的流程图。
图8是图示用于散列和模式匹配由图1的系统所接收的消息地址的方法的另一部分的流程图。
图9是图示模式匹配在图7的图示流程内由图1的系统所接收的消息地址的方法的流程图。
图10是图示在图1的系统内处理被接受消息的方法的流程图。
图11是图示通过图1的系统提取和收藏(stash)消息的部分的方法的流程图。
图12是图示使用散列和/或模式匹配被处理的大量地址的表。
具体实施例方式
下面的讨论旨在提供本发明至少一个实例的详细描述,并且不应该被认为是对本发明本身的限制。实际上,任意数量的改变都可以落在由本说明书后面的权利要求适当限定的本发明范围内。
图1是图示根据本发明实施例的信息处理和通信系统100的框图。系统100包括处理器110、高速缓存120、存储器130、系统总线140、外设150和包控制器160。处理器110、高速缓存120、存储器130、外设150和包控制器160都经由系统总线140耦合。系统100可以是以太网、G级以太网和/或XG级以太网控制器或者是与其兼容的,可以是网络交换机或路由器,或者用于在网络内通信的其它类型的设备。
包控制器160包括总线接口单元(BIU)170、接收部分180、传送部分185和介质访问控制器(MAC)190。总线接口单元170被耦合到系统总线140。总线接口单元170经由连接172被耦合到接收部分180,经由连接174被耦合到传送部分185。MAC 190经由连接192被耦合到接收部分180,经由连接194被耦合到传送部分185。MAC 190被耦合到物理层硬件以经由物理(PHY)连接198从其它设备接收例如包的消息。
消息在MAC 190被接收并被传递到接收部分180。消息可取决于地址识别、散列、模式匹配或散列和模式匹配(例如,如下面至少参照图2到9描述的)可以被接受或不被接受。来自被接受消息的信息被传递到存储器130。某些信息可以通过模式匹配被识别为特别适合被处理器110或其它系统资源快速访问,在这种情况下,这种信息被从发送到存储器130的正常消息数据中提取出来,并且所提取数据被收藏在高速缓存120中(例如,如下面至少参照图2到6和图10到11描述的)。
所公开的目的地地址识别协议将对后滤波的需要降到最小,并且可以在介质访问控制级进行而无需在更高OSI级的进一步的软件和硬件干涉。对于一些地址集,用户可以找到在MAC级产生极好滤波的模式集。确定性算法可以被用于产生用于确保极好散列时间滤波所需的模式。所公开的协议还允许在被接受帧整体内而非仅仅目的地地址内的模式匹配搜索,以改善散列时间滤波的结果。
存储器130包括用于存储进入消息的帧数据缓存134和用于跟踪所存储消息的缓存描述符队列132,如在下面进一步详细描述的。高速缓存120包括可以存储一个或多个缓存描述符队列122的存储位置和用于收藏(即存储)所提取数据124以随后被处理器110使用的存储位置。所提取数据是根据这里描述的某些模式匹配协议从进入消息的正常帧数据中提取的用于存储在高速缓存120中的数据。所提取数据可以是例如重要数据、服务质量(QoS)等级数据或加速的访问时间可能是其期望的其它高优先级数据。存储器130和高速缓存120可以被处理器110访问,并且甚至可以被系统100内的其它设备或处理器(未示出)访问。
图2是图示系统100的包控制器160的接收部分180的框图。接收部分180包括直接存储器访问(DMA)控制器210、接收FIFO 220和地址/数据滤波器(ADF)230。ADF 230被耦合用于从MAC 190接收消息以及用于选择性地将这种消息提供给FIFO 220。具有可被地址/数据滤波器230接收的帧的实例性消息包在下面参照图3更详细地讨论。DMA 210被耦合用于在FIFO控制器222的控制下从接收FIFO220接收消息信息(例如,地址和数据信息,以及例如下面描述的模式状态信息的消息滤波结果)。
ADF 230包括临时队列234、模式匹配逻辑232和地址识别和散列逻辑238。临时队列234、模式匹配逻辑232和地址识别和散列逻辑238中每一个被耦合用于从MAC 190接收消息(例如帧)。临时队列234被耦合用于从模式匹配逻辑232和地址识别和散列逻辑238接收消息滤波结果信息,并且用于作为到接收FIFO 220的响应将帧(或其部分)和消息滤波信息提供给接收FIFO 220。
在没有模式匹配和散列逻辑时,直接且完整的地址比较将必须在每一个所接收消息的目的地地址与系统100或者系统100被配置用于为其接受消息的其它系统的地址之间被进行。这种完整的地址比较典型地包括以某种形式中断处理器110,因为比较典型地在软件的控制下发生。
但是,在图示的实施例中,模式匹配逻辑232和散列逻辑238被提供以减小完整地址比较发生的频率,从而允许处理器110空闲以执行其它任务。模式匹配逻辑232对所接收的帧进行模式匹配分析,以允许根据模式匹配结果对帧选择性接受。模式匹配在存储于模式匹配(PM)寄存器233中的值(例如,控制位或域)的控制下进行。散列逻辑238对所接收帧的地址进行散列分析,以允许根据散列命中或脱靶结果对帧选择性接受,以进一步增加对具有高接受可能的地址进行完整地址比较的可能性。
模式匹配逻辑232的PM寄存器233包括16个条目。每一个条目包括5个32比特寄存器。现在参照图5,每一个条目包括模式(PMDATA)、模式屏蔽(PM MASK)和模式匹配控制(PM CONTROL)域。模式匹配控制域包括匹配索引(MI)域、连续搜索启用(CSE)域、倒转(IV)域、连接模式(CP)域和模式匹配接受控制(PMAC)域。
PM DATA域包括用于与所接收帧比较的位模式。如果PMDATA位模式(例如,4字节模式)在帧中被找到,那么模式匹配被检测到。如果PM DATA位模式没有在帧中被找到,那么模式匹配没有被检测到。PM DATA域在图示实施例中为32比特长。PM MASK域包括使模式中某些位在比较发生时被屏蔽的位。例如,在帧的一部分内的出售商标识位在PM MASK被适当设置时可以被忽略。
匹配索引(MI)域指示在所接收帧中模式匹配应该多深地开始用于相应的PM DATA。例如,MI域可以包括6个位,指示从0到256比特的搜索范围。在一个实施例中,MI在4字节的倍数中,从接收帧的开始(从DA域到FCS,包括端点)指定索引,从其开始进行模式匹配。如果MI被清除,目的地地址的前4个字节提供用于模式匹配的开始点。MI的最大编程值在当前讨论实施例中为63(252字节偏移)。每一个4字节模式的MI值即使在允许邻近或非邻近模式时也被尊重(honor)。
连续搜索启用(CSE)域影响当匹配被找到时将采取的行动的类型。具体地,CSE位指示在模式匹配时立即采取行动,还是在模式匹配时应该进一步发生模式匹配搜索。已设置的CSE位指示如果在条目上发生匹配,那么模式匹配应该继续。例如,如果模式匹配被找到并且连续搜索被启用,那么模式匹配逻辑232继续从PM寄存器233的其它寄存器中搜索PM DATA的其它匹配直到256字节的最大值。如果没有其它匹配被遇到,那么与最后匹配的条目相应的属性被使用。所有连续的模式一定不能基于模式匹配拒绝最终接受。例如,第一模式匹配必须至少有条件地接受,并且所有随后的模式必须或者接受,或者既不接受也不拒绝以便接受帧。如果随后的模式匹配拒绝发生,那么CSE的值被忽略,帧被拒绝,搜索被停止。如果模式匹配被找到并且连续搜索被禁止(CSE=0),那么对所有其它模式的搜索将被模式匹配逻辑232停止,并且帧被接受或拒绝,或者另一个确定被基于具体模式匹配发生的事实而被作出。
连接模式(CP)域允许PM寄存器233每一个条目中可用的PMDATA的多于32比特的比较。如果CP位被设置,跟着当前PM寄存器后面的中间PM寄存器233被看作是该模式的继续,并且下一个PMDATA条目被连接到当前PM DATA条目。在这种情况下,每一个PMDATA条目必须在模式匹配将对其发生的帧中被找到,但是两组匹配位可以根据它们各自的MI而处于帧内的任何地方。如果CP位没有被设置,那么没有模式连接发生。最后的PM寄存器233的CP域被看作是被清除的,而不管存储在其中的值如何。其中CP被设置的最低的数字PM寄存器233含有被用于被连接模式的模式匹配控制和属性信息(除了MI)。对于每一个被连接的模式,MI域必须被设置到合适的4字节倍数,以免所有模式企图匹配到帧的前4个字节(如果MI被留下未清除)。
倒转(IV)域允许模式与帧以真或补形式的比较。例如,当倒转没有被设置时(IV=0),那么模式匹配只在数据匹配(例如,PM DATA被在所接收帧中找到)发生时发生。当倒转被设置(IV=1)时,模式匹配只在数据匹配不发生(例如,PM DATA没有在所接收帧中找到)时发生。
PMAC域基于模式匹配控制帧的滤波。PMAC存储两个位,它们指示(i)对相应模式的模式匹配是否被启用,以及(ii)如果模式匹配被启用用于相应的模式,那么模式匹配一旦结束时的效果。例如,如果PMAC域为00,那么对具体条目的模式匹配被禁止,没有模式匹配发生在相应模式,并且模式匹配逻辑232自由移到下一个PM寄存器233中的下一个模式。如果PMAC域不是00,那么模式匹配被启用。如果PMAC域是11,那么帧基于模式匹配被拒绝。如果PMAC域为10,那么帧或者在连续搜索被禁止(CSE=0)时被绝对接受,或者在连续搜索被启用(CSE=1)时被有条件地接受。如果PMAC域为01,那么帧既不被接受也不被拒绝。在这种情况下,模式不是在匹配发生时用于接受或拒绝帧的标准,并且信息被收集用于有关模式匹配结果的后处理,但是基于所收集的信息没有作出决定要接受还是拒绝帧。后处理可以包括基于先前模式或基于目的地地址识别对被接受的帧进行滤波或提取数据,或者可以包括其它分类功能。帧可以在后来被通过散列处理、其它模式匹配处理等被接受。
现在再次参照图2,DMA 210包括接收缓存211、提取引擎212、模式属性寄存器213、换成描述符和滤波处理器(BDFP)214、状态寄存器215和缓存描述符地址寄存器216。这里讨论的逻辑块是实例性的,不同的实施例可以具有不同的逻辑功能划分。例如,在一个实施例中,DMA 210可以被看作包括用于进行提取、换成描述符处理和滤波处理的存储器控制器。
接收缓存211被耦合用于从接收FIFO 220接收消息。状态寄存器215被耦合用于从接收FIFO 220接收模式状态(PS)。模式状态包括模式数量(例如,PM寄存器数量)和相应的模式命中指示。FIFO控制器222被耦合到DMA 210用于控制这种信息的传递。接收缓存211被耦合用于经由连接172将帧数据提供到总线接口单元170。
提取引擎212被耦合用于将提取控制信息提供到接收缓存211,以指示哪个帧信息将被提取用于继续送到高速缓存120。提取引擎212被耦合用于经由连接172将有关被提取信息的属性提供给总线接口单元170。例如,提取引擎212指示由接收FIFO发送到存储器或高速缓存的数据是否被提取或正常,或者其是否将被存储在存储器130中或者既被存储在存储器130中又被收藏在高速缓存120和与数据相关联的任何优先级信息中。状态寄存器215将模式状态信息提供给提取引擎212以指示帧数据是否应该被提取。提取引擎212还被耦合用于从模式属性寄存器213接收提取控制信息。例如,模式属性寄存器213将提取索引和提取长度提供到提取引擎212(下面讨论)。
模式属性寄存器213被耦合用于将指示在哪个缓冲队列中提交帧数据(PMF)的提交信息提供给缓存描述符地址寄存器216。状态寄存器215被耦合用于将例如实际模式匹配的指示的模式匹配信息提供给BDFP 214。缓存描述符地址寄存器216被耦合用于将用于每一个缓存描述符队列(BDQ 410、420、430和440)和每一个队列指针(BDQ_BASE、BDQ_CURRENT和BDQ_NEXT)以及缺省队列的基址提供给BDFP 214。BDFP 214被耦合用于经由连接172将地址和数据信息提供给总线接口单元170。
模式属性寄存器被用户来写用于指定在匹配发生时的行动,向哪里提供帧信息,何时提取帧信息以及如何存储接收帧和它们的相关联的缓存描述符。在当前讨论的实施例中,一共16个寄存器或条目被支持。一个这样的寄存器(或可替换寄存器)可以被指定为缺省寄存器,并且包括用于指定在没有模式匹配发生时的行动的信息。现在参照图5,每一个条目包括提取高速缓存(例如,L2高速缓存)写类型(ELCWT)、缓存描述符高速缓存写类型(BDLWT)、队列分类(QC)、模式匹配文件(PMF)、模式匹配提取(PME)、提取索引(EI)和提取长度(EL)。其它位域可以被包括用于启用或支持任意数量的其它功能。例如,数据探查位可以被包括用于支持所接收帧对存储器的探查或者所接收缓存数据存储器访问的探查。在这种情况下,当有到存储器的访问时,高速缓存可以探查到存储器的读或写访问,使得高速缓存可以检测地址然后采取适当的行动,例如无效存储在高速缓存中的数据副本,更新来自存储器的高速缓存数据,或者与将数据存储在存储器中几乎并行地将数据存储在高速缓存中。模式属性寄存器是用于所讨论信息内容的实例性存储位置。其它实施例可以包括用于存储这种信息内容的其它配置,包括其它位配置、分布式寄存器位置等等。
提取高速缓存写类型(ELCWT)域指定用于对提取数据进行的写交易类型。提取写交易在模式匹配提取(PME)域被设置、相应模式匹配发生并且提取长度(EL)域为非零时发生。在一个实施例中,如果ELCWT为00,那么没有分配被进行;如果ELCWT为01,那么没有提取发生;如果ELCWT为10,那么高速缓存线被分配;如果ELCWT为11,那么高速缓存线被分配并被锁定。在连接模式配置的情况下,所使用的ELCWT来自最下面数字的模式属性寄存器。到高速缓存的写被通过探查(snoop)进行。
缓存描述符高速缓存写类型(BDLWT)域指定用于对接收帧的缓存描述符进行的写交易类型。这在模式匹配发生时发生,而与PMF或PME的值无关。到高速缓存的写通过探查进行。在一个实施例中,如果BDLWT为00,那么没有分配被进行;如果BDLWT为10,那么高速缓存线被分配;如果BDLWT为11,那么高速缓存线被分配并被锁定。
模式匹配提取(PME)域指示基于模式匹配的提取是否被启用。如果模式匹配提取位被设置(PME=1),提取被启用。如果模式匹配提取位没有被设置(PME=0),那么提取被禁止。
队列分类(QC)指定如果PMF域被设置并且相应模式匹配发生时在其中提交进入帧的接收队列分类。在连接模式配置的情况下,所使用的QC来自前4字节模式。如果QC为00,那么队列#0被使用,并且在由BDQ0_BASE所指地址开始的缓存描述符被使用。如果QC为01,那么队列#1被使用,并且在由BDQ1_BASE所指地址开始的缓存描述符被使用。如果QC为10,那么队列#2被使用,并且在由BDQ2_BASE所指地址开始的缓存描述符被使用。如果QC为11,那么队列#3被使用,并且在由BDQ3_BASE所指地址开始的缓存描述符被使用。
模式匹配文件(PMF)指示QC域是否被用于帧在何处被提交到存储器130中。例如,如果PMF=0并且匹配发生,那么缺省属性寄存器中的QC域被用于确定帧在何处被提交。如果PMF=1并且匹配发生,那么与匹配模式相应的寄存器中的QC域被用于确定帧在何处被提交。
模式属性寄存器213还由用户来写以指定如果模式匹配发生并且寄存器213中的模式匹配提取(PME)位被设置时将被使用的提取索引和提取长度。提取索引(EI)指向接收帧内的第一字节,从其开始提取数据。DMA控制器210在模式匹配提取域(PME=1)被设置并且相应模式匹配发生时使用该域来进行提取。在连接模式配置(CP=1)的情况下,所使用的EI来自最下面数字的寄存器(例如,在连接链中的第一个寄存器)。提取长度(EL)域指定要从所接收帧提取的字节数量。DMA控制器210在模式匹配提取域(PME=1)被设置用于相应模式匹配时使用该域来进行提取。在连接模式配置的情况下,来自最下面数字模式属性寄存器的EL被使用。如果EL为零,那么没有提取发生。
图4是图示多个实例性缓存描述符队列BDQ0、BDQ1、BDQ2到BDQM的框图。每一个缓存描述符队列包括几个缓存描述符,例如对BDQ0示出的存储位置BD0 412、BD1 414、BD2 416到BDN 418。每一个缓存描述符队列具有环结构,并且经由三个指针被访问BDQ_BASE、BDQ_CURRENT和BDQ_NEXT。每一个缓存描述符存储位置存储与存储在存储器130中和/或高速缓存120中的所接收帧信息有关的信息。例如,这种信息包括状态和控制452、数据长度454、数据缓存指针456、模式匹配状态458、相对提取索引460、提取长度462和字节计数464。每一个缓存描述符队列可以表示相应帧的不同优先级。如图1所示,缓存描述符队列被存储在存储器130中,并且有时如果BDLWT被适当设置也被存储在高速缓存120中。缓存描述符队列可以在帧数据的相应提取发生的情况下或者不在此情况下被存储。
图6是图示系统100的实例性操作流的流程图。一旦帧在操作610被接收,ADF 230在决定620确定帧是否应该被接受。用于接受帧的过程在这里参照至少图7到9被进一步讨论。如果在决定620帧没有被接受,那么ADF 230在操作610等待其它帧。如果在决定620帧被接受,那么在操作630帧和模式状态被从临时队列234提供到接受FIFO 220。在帧和模式状态被传递到接受FIFO 220之后,在操作640模式状态和帧数据被提供到DMA 210。一旦模式已经被向前传递到DMA 210,在操作650,DMA 210可以将帧数据存储在存储器中。此外,在操作650,与模式匹配寄存器233中的启用模式匹配的任何数据都被提取并被收藏在高速缓存120中。用于存储帧数据和收藏提取帧数据的过程在这里参照至少图10和11被进一步讨论。
图3图示了具有在接收帧操作610可被地址/数据滤波器230接收的帧的实例性消息包。图示的格式与以太网/IEEE 802.3标准消息兼容。消息300包括前置码、开始帧定界符(SFD)和帧。前置码和开始帧定界符提供设置信息以帮助系统接收和处理帧。前置码是用于接收机时序同步的1和0交替的7字节域。例如,每一个字节含有值0x55。开始帧定界符指示帧的开始。开始帧定界符的实例值是0xD5序列(10101011二进制,因为位序是最不重要的位开始)。图示帧具有从64到1518字节的长度,并包括6字节目的地地址(DA)、6字节源地址、2字节类型/长度域、46到1500字节逻辑链路控制(LLC)帧和4字节帧检查序列。
帧的目的地地址包括3字节出售商域和3字节用户值。用户值的第一位将地址标识为单独地址(0)或组地址(1)。第二位指示地址是否被局域界定(1)或全球界定(0)。如图示的,源和目的地地址包括48比特。其它实施例可以使用不同的地址长度,例如在IEEE802.3规格更早版本中的16比特地址。
类型/长度域对应于以太网类型域和/或IEEE 802.3长度域。类型域表示在帧其余部分中使用的协议(例如TCP/IP)。长度域指定帧的数据部分的长度。一般地,长度域与以太网中使用的任何类型域都不同,以便于在相同网络上以太网和IEEE 802.3帧两者的使用。类型域由等于或大于1536(0x0600)但小于65535(0xFFFF)的十进制数标识。如果数在0和1,500(0x0000到0x05DC)之间,那么该域指示MAC客户数据的长度。在图示实施例中,从1,501到1,536(0x5DD到0x5ff)的范围是不明确的。
逻辑链路控制(LLC)负责向例如FDDI、以太网、令牌环等的网络层提供服务而与介质类型无关。LLC层理由LLC协议数据单元(PDU)以在介质访问控制(MAC)层域协议堆栈的上面层之间通信。三个变量确定经由LLC-PDU到上面层中的访问。变量包括目的地服务访问点(DSAP)、源服务访问点(SSAP)和控制变量。DSAP地址指定为上面层提供协议信息的站内的唯一标识符。SSAP为源地址提供相同的信息。
LLC帧包括前置码和信息域。前置码包括DSAP域、SSAP域和控制域。信息域包括数据和可选填充。填充一般只在输入小于46八位字节/字节时需要用于确保如在IEEE 802.3标准中指定的64个八位字节的最小帧大小。在802.3x中,数据域的第一个两个八位字节被用作操作码(OP)(中止=0x0001),并且第二个两个八位字节被用于传送中止时间(PT)参数(中止时间=0x0000用于开通以及0xFFFF用于截止)。此外,第三个八位字节域可以被用于扩展的中止控制参数(PTE)。取代LLC,以太网帧可以使用具有类似域的不同协议。因为这些域的使用随着所用协议的变化而变化,所以检查它们并汇报它们内容的能力可以显著加快以太网帧处理,并且这种能力可以通过使用模式匹配被增强。
帧检查序列(FCS)指定通过对除前置码、SFD和CRC之外的所有域使用标准CCITT-CRC多项式而得到的标准32位循环冗余检查。
图7和8是图示使用模式匹配的消息散列滤波的方法的流程图。现在参照图7,在操作610,在进入帧在临时队列234处被接收之后,模式匹配逻辑232访问PM寄存器233并顺序选择各种条目以确定存储在PM寄存器233中的模式是否被包含在临时队列234中的帧信息中。
例如,ADF 230检查包括用于确定模式匹配是否被启用的模式匹配启用位(PMEN)的ADF全球控制寄存器。如果模式匹配没有被启用(PMEN=0),那么过程进行到组地址决定715。如果模式匹配被启用(PMEN为非零),那么模式匹配过程710被启动。如果模式匹配过程710导致帧被接受或拒绝(如下面参照图9进一步详细描述的),那么过程从块710经过图示“接受”或“拒绝”流程节点中单独的一个到达图8中接受帧操作860或拒绝帧操作870中单独的一个。如果模式匹配过程710没有导致作出帧接受或拒绝决定,那么流程从模式匹配过程710经过图示的“没有检测到决定/模式匹配”节点到达前面提到的组地址决定715。
在组地址决定715,接收部分180确定所接收帧中的地址是否是组地址。在当前讨论的实施例中,帧的用户值的第一位将地址标识为单独地址(0)或组地址(1)。如果地址不是组地址,流程进行到站地址决定720。如果地址是组地址,流程进行到广播地址决定725。
在站地址决定720,接收部分180通过进行与帧数据的精确48比特比较来确定所接收帧中的地址是否是站地址。如果地址被确定为是站地址,那么流程从块720经过图示的“接受”流程点进行到图8中的接受帧操作860,并且帧在接受帧操作806被接受。如果地址没有被确定为是站地址,那么流程进行到散列命中决定740。
在广播决定725,接收部分180确定在所接收帧中的地址是否是广播地址。实例性广播地址是地址0XFFFFFF-FFFFFF。如果地址被确定为是广播地址,那么流程进行到广播启用的决定730。如果地址没有被确定为是广播地址,那么流程进行到前面提到的散列命中决定740。
在广播启用的决定730,接收部分180确定广播功能是否被启用。当ADF全球控制寄存器位BC_REJ被设置时,广播功能被启用。如果广播功能被启用,那么流程从块730经过图示的“接受”流程节点到达图8中的接受帧操作860,并且在接受帧操作860帧被接受。如果广播功能没有被启用,那么流程进行到混杂(promiscuous)模式决定735。
在混杂模式决定735,接收部分180确定混杂模式是否被启用。当ADF全球控制寄存器混杂位被设置(PROM=1)时,混杂模式被启用。当接收部分处于混杂模式时,还没有通过模式匹配被拒绝的所有帧被接受。一般地,混杂模式被用于检测并且很少使用。如果混杂模式被启用,那么流程从块735经过图示的“接受”流程节点到达图8的接受帧操作860,并且在接受帧操作860帧被接受。如果混杂模式被禁止,那么流程从块735经过图示的“拒绝”流程节点到达图8的拒绝帧操作870,并且在拒绝帧操作870帧被拒绝。
因为模式匹配可以在混杂模式决定735之前或者与其并行在操作710(或者在混杂模式决定735的接受结果之前)进行,可区别混杂模式可以被使用,其中除了含有导致帧拒绝的模式的一个或多个特定帧之外的来自所有地址的帧都被接受。例如,特定地址可以通过模式匹配被拒绝而同时所有其它地址被接受。
在散列命中决定740,接收部分180确定在帧确定地址上的散列命中是否已经发生。48比特确定地址通过使用32比特循环冗余检查(CRC)校验和的一部分而被映射成256个箱(在其它实施例中或者更多)中的一个。参见例如图12,其图示了已经产生的用于大量相应地址1222的大量CRC 1224。行1201到1210中每一行的每一个十六进制CRC 1224对应于相同行的6字节十六进制目的地地址。
在系统100的设置过程中,CRC校验和的位被用于索引到散列表。在一个实施例中,8个比特被用于索引256箱(bin)表。8比特域的较高级的3个位被用于选择在单独散列表和/或组散列表中8个散列桶寄存器。较高级的5比特域选择被选32比特寄存器内的位。当控制器接收帧时,相同的校验和被使用。如果进入地址的CRC校验和选择设置在组/单独散列表中的位,那么散列命中已经发生。否则,没有散列命中发生。
在图示实施例中,CRC的前8比特选择散列表中的位。行1201到1203和1206中的地址将被系统接收,并且因此已经被用于设置散列表。在行1201,十六进制值0x04映射到散列桶(bucket)箱4。在行1202,十六进制值0x0F映射到散列桶箱15。在行1203,十六进制值0x15映射到散列桶箱21。在行1206,十六进制值0xCB映射到散列桶箱203。这样,具有选择桶箱4、15、21和203任何一个的CRC的地址在这种地址被接收时将是散列命中的。
散列表的有效性可以随着地址数量的增加而下降。例如,当存储在256箱散列表中的地址数量增加时,散列表位中的绝大部分被设置,从而防止极小一部分不想要的帧到达存储器。散列滤波的一个优点是散列的速度不依赖于目的地地址列表中地址的数量。还应该注意,没有模式匹配而只是散列的协议不能被用于拒绝匹配一组所选地址的帧,因为不想要的地址可以映射到散列表中导致应该被接收帧的拒绝的相同位。因此,散列滤波本身导致不完美的滤波,需要对到达存储器的帧的后滤波。这可以通过下面参照图12所示被接收目的地地址的实例来说明。
在散列命中决定740,用于每一个所接收地址的CRC被用于选择散列桶箱。如果所选箱指示命中,那么散列命中已经发生。例如,当地址1201到1203和1206到1210中任何一个被接收时,箱4、15、21和203中一个被选择,并且散列命中已经发生。相应地,当地址1204或地址1205被接收时,箱4、15、21和203中没有一个被选择,并且散列命中没有发生。当散列命中还未发生时,帧典型地被拒绝。在这种方式下,地址1204和1205可能被拒绝。但是,图12的地址1207到1210产生散列命中,但是不是想要被系统100接收并接受的地址。因此,滤波的其它方式必须被使用。
系统100使用模式匹配来进一步滤波进入地址,使得对处理器/基于软件的后滤波的需要被最小化或者甚至被消除。例如,模式可以被存储在PM寄存器中使得导致误导散列命中的地址可能被拒绝。在图示实施例中,地址在它们不是旨在用于具体出售商ID(目的地地址的前24比特)时可以被拒绝。0x0050FC04的模式已经作为PM DATA与0XFFFFFF00的PM MASK一起存储在PM寄存器中。在这种方式下,在其前24比特中不具有0x0050FC的每一个地址通过模式匹配被拒绝。在这种情况下,地址1207到1209被拒绝,但是1210没有被拒绝因为其出售商ID匹配期望的出售商ID。
进一步的模式可以被存储用于改进过程。例如,使用2个模式,具有PM DATA 0x0050FC04和0xFFFFFFFF的PM MASK的一个,以及具有0XFFFFFFFF-F的PM DATA 0x0050FC03-C的第二模式可以被使用。在这种方式下,为散列命中的但是在其前32比特不具有0x0050FC04和在其前36比特不具有0x0050FC03-C的每一个地址可以通过模式匹配和散列而被有效地忽略。在这种情况下,地址1207到1210由于模式匹配和散列而被有效地拒绝,并且只有希望的地址被系统100接受。
这样,所接收地址1201到1210导致各种不同的结果。地址1204和1205导致散列失败,因此不被接受。地址1201到1203和地址1206到1210导致散列命中。地址1201到1203由于第一模式在这里被找到所以导致散列命中和模式匹配。地址1201到1203因此被接受。地址1206由于第二模式在这里被找到所以导致散列命中和模式匹配。地址1206因此被接受。地址1207到1210,虽然导致散列命中,但是不会导致模式匹配,因为第一和第二模式没有在这里被找到。地址1207到1210因此不被接受。
一般而言,如果32个组地址被存储在散列表中并且随机组地址被接收,那么散列表防止很大百分比(例如,在一些情况下高达85%甚至更高)的组地址帧到达存储器。在没有当前公开的模式匹配时,在系统100上操作的软件将不得不进一步滤波(后滤波)到达存储器130的那些以确定它们是否含有正确的地址。在前面的实例中,地址1207到1210将还需要包含后滤波的处理器110,而模式匹配诱发的拒绝情况不会被触发。
现在参照图8,在模式匹配启用决定845,接收部分180确定对于所选寄存器中所选模式PM DATA的模式匹配是否被启用。如果模式匹配没有被启用(PMEN=0),那么流程进行到散列/混杂决定855。如果模式匹配被启用(PMEN=1),那么模式匹配过程850被启动。如果模式匹配过程850导致帧被接受或拒绝(如下面参照图9进一步详细描述的),那么流程从块850经过图示的“接受”或“拒绝”流程节点中的单独一个到达接受帧操作860或拒绝帧操作870中的单独一个。如果在模式匹配过程850模式匹配发生但是没有帧接受或拒绝决定被作出,或者如果没有模式匹配发生,流程从模式匹配过程850经过图示的“没有决定/没有模式匹配被检测到”节点到达模式匹配未被检测到决定852。
现在参照当前讨论的图示实施例中的模式匹配未被检测到决定852,如果导致模式匹配的16个模式中任何一个都未被检测到,那么流程从决定852经过图示的“拒绝”流程节点到达拒绝帧操作870。在其它实施例中,帧可以被保留以被处理器110进一步滤波。在变化的实施例中,帧可以被给定比其模式被检测的帧更低的优先级,使得处理器110在关注低确信帧(散列命中但是没有模式匹配)之前先关注高确信帧(散列命中且模式匹配)。在另一个变化的实施例中,帧可以被存储在与不同处理单元相对应的不同队列中。如果导致模式匹配的16个模式中至少一个被检测到,那么流程从决定852经过图示的“没有决定”流程节点到达前面提到的散列/混杂决定855。到此描述的图7和8的单元对应于介质访问控制功能。
在散列/混杂决定855,无论在已经有模式匹配但是没有决定(例如,没有接受和没有拒绝)时,或者在还没有模式匹配时,数据链路功能都被实现。接收部分180(例如,ADF 230中的状态机)确定极好散列命中是否已经发生和/或混杂模式是否已被启用。极好散列命中在唯一地只对应一个地址的散列命中和模式匹配都发生时发生。对比而言,高确信散列命中在对应于少量地址但多于一个地址的散列命中和模式匹配发生时发生。高确信散列命中由于使用了增强高确信地址实际上为所寻找地址的可能性的模式匹配,所以提供比传统地址滤波增强的性能。使用系统和/或网络特性对模式的谨慎选择可以使散列命中为极好的可能性更高。如果极好散列命中已经发生或者混杂模式已经被启用,那么在帧接受操作860,所接收帧被接受。如果极好散列命中没有发生而且混杂模式也没有被启用,那么流程进行到完全地址匹配决定865。
在完全地址匹配决定855,处理器110确定完全地址匹配是否已经发生。系统100进行地址与系统100已知地址的直接比较。系统100可以将所接收地址存储在优先级队列中,使得具有较高预测接受可能性的地址(高确信帧)在具有较低预测接受可能性的地址(低确信地址)之前被处理。这种完全且直接的比较就系统100的处理资源来说是很昂贵的。因此,这里描述的模式匹配和散列试图避免这种昂贵的直接地址比较。在这种方式下,系统100可以使用尽可能没有直接地址比较的模式匹配来增强系统性能,并且完全地址匹配是最后的方法。如果有完全地址匹配,那么在帧接受操作860,所接收帧被接受。如果没有完全地址匹配,那么在帧拒绝操作870,接收帧被拒绝。
图9是图示用于匹配由系统100所接收的消息地址的方法的流程图。帧可以取决于模式匹配是否发生而被接受或拒绝。消息帧的任何部分可以被检查包括IP地址的匹配。除非最终处置(接受或拒绝)在一个模式匹配被尝试之前已经由于另一个模式匹配的发生而被决定,否则当模式匹配被启用(PMEN=1)时,对于相应模式匹配接受器指示符允许(例如,PMAC=1)的每一个模式,图9的操作被执行。如果模式数据设置被启用,那么消息数据被检查模式匹配。如果模式匹配数据没有被启用,或者如果模式匹配没有被找到,那么下一个模式被选择并且过程被重复。如果连续搜索被启用,那么搜索继续对下一个模式进行而与匹配无关。
参照接收操作935,进入帧的字节被接收到临时队列234中用于临时存储,直到关于接受或拒绝进入帧的决定被作出。进入帧的字节还被提供给模式匹配逻辑232和地址识别和散列逻辑238,使得这种决定可以在字节正被临时队列234接收的同时被作出。在字节已经在接收操作935被接收之后,流程前进到模式匹配确定操作905。
参照模式匹配确定操作905,模式匹配逻辑232确定存储在PM寄存器233中的模式匹配数据是否匹配所接收帧中的数据。例如,模式匹配逻辑将PM寄存器233的第一个中的PM DATA与进入帧数据在其被存储在临时队列234中时进行比较。临时队列234被用于存储帧直到决定被作出。例如,如果PM DATA(多达4个字节)中每一位匹配根据消息索引MI定位的消息数据的每一位,那么模式匹配发生。匹配可能发生到深入帧高达256字节并且具有最大256字节的偏移。PM DATA中某些可以被相应的PM MASK屏蔽。例如,PM DATA的每一位在相应的PM MASK位被清除时不能被检查匹配。如果先前模式的连接模式(CP)域被设置,那么只当PM DATA域(当前PMDATA和先前PM寄存器的PM DATA)在帧中被找到时匹配才发生。PMAC域确定相应的PM DATA是否被启用,并且如果其被启用,那么一旦匹配一系列行动即进行。操作905可以与操作935并行完成。
参照模式匹配决定905,如果模式匹配被禁止(例如,PMAC=00),那么流程前进到帧结尾(EOF)或者队列已满决定930。如果在模式匹配确定操作,905模式匹配没有被找到,那么流程也前进到EOF或队列已满决定930。如果在决定910,有模式匹配且模式匹配没有被禁止(例如,PMAC≠00),那么流程前进到接受帧决定915。
参照EOF/队列已满决定930,如果临时队列234没有满并且帧结尾还没有被接收(并且帧还没有被拒绝),那么在接收操作935额外的字节继续被接收到临时队列234中,并且流程前进到模式匹配确定操作905以启动对额外接收的帧信息的模式匹配。如果帧结尾已经被接收或者临时队列234已满,那么流程前进到拒绝所有节点决定940。
参照拒绝所有节点决定940,如果ADF 230被确定在拒绝所有节点,那么帧被拒绝并且操作流程取决于哪个相应流程启动了图9图示的模式匹配流程而如图7或8图示那样继续。如果ADF 230不在拒绝所有节点,那么没有关于帧的决定被作出,并且流程取决于哪个流程启动了图9图示的模式匹配而如图7或8图示那样继续。
参照接受帧决定915,如果ADF 230正在接受用于模式的帧(例如,对于具体PM DATA,PMAC=10),那么帧被有条件地接受,并且流程前进到连续搜索决定945。如果ADF 230现在没有接受用于模式的帧(例如,对于具体PM DATA,PMAC≠10),那么流程前进到拒绝帧据的920。
参照拒绝帧决定920,如果ADF 230正在拒绝用于模式的帧(例如,对于具体PM DATA,PMAC=11),那么进入帧被拒绝,因为其含有与拒绝PMAC值相关联的PM DATA(或者,导致考虑例如PM MASK、CP等的其它因素而导致匹配)。然后,流程取决于哪个流程启动了图9图示的模式匹配而如图7或8图示那样继续。如果ADF230现在没有拒绝用于模式的帧(例如,对于具体PM DATA,PMAC≠11),那么流程前进到连续搜索决定925。
参照连续搜索决定925,如果对模式的连续搜索被启用(例如,CSE=1),那么流程前进到EOF或队列已满决定930。如果在连续搜索决定925,连续搜索没有被启用(例如,CSE=0),那么没有关于前述模式匹配的决定被作出,并且流程前进到拒绝所有节点决定940。
参照连续搜索决定945,如果对模式的连续搜索被启用(例如,CSE=1),那么流程前进到EOF或队列已满决定950。如果在连续搜索决定945,连续搜索没有被启用(例如,CSE=0),那么进入帧被接受。帧被接受,因为其含有PM DATA(或者考虑例如PM MASK、CP等其它因素导致匹配)并且模式匹配被启用(PMAC=10)而且没有进一步的搜索需要来完成(CSE=0)。然后流程取决于哪个流程启动了图9图示的模式匹配来如图7或8图示那样继续。
参照EOF/队列已满决定950,如果帧结尾已经被接收或者临时队列234已满,那么进入帧被接受。帧被接受因为模式匹配已经发生,模式匹配被启用(PMAC=0)并且帧结尾已经到达或者临时队列已满所以进一步的模式匹配已不可能。然后流程取决于哪个流程启动了图9图示的模式匹配来如图7或8图示那样继续。
如果在EOF/队列已满决定950,临时队列234未满并且帧结尾还没有被接收,那么在接收操作955额外的字节被接收到临时队列234中。并且流程前进到模式匹配确定操作960以启动对额外的所接收帧信息对下一个模式(例如,在下一个顺序的PM寄存器233中的PMDATA)的模式匹配。模式匹配确定操作960在功能上与前述的操作905类似。操作955可以与操作960并行完成。在模式匹配操作960后,流程前进到模式匹配决定965。
参照模式匹配决定965,如果对于当前所选模式(例如,当前所选PM寄存器233中的PM DATA)的模式匹配被禁止(例如,PMAC=00),那么流程前进到EOF/队列已满决定950。如果在模式匹配确定操作965模式匹配没有被找到,那么流程也前进到EOF/队列已满决定950。如果决定965有模式匹配并且模式匹配没有被禁止(例如,PMAC≠00),那么流程前进到不拒绝帧决定970。
参照不拒绝帧决定970,如果ADF 230对于下一个模式(例如,相应的PM DATA)不拒绝帧(例如,PMAC=01或PMAC=10),那么流程前进到EOF/队列已满决定950。否则,进入帧被拒绝,因为拒绝模式(PMAC=11)已经被检测到。然后流程取决于哪个流程启动了图9图示的模式匹配来如图7或8图示那样继续。
现在参照图10,是用于在图1的系统内处理被接受消息的方法。图示实施例的一个优点是对包内重要数据的系统访问可以通过在其被接收时对其进行检测而被增强,而无需求助于更高级的资源并将其与描述符确信一起放到高速缓存中用于随后更快的访问。
图示的流程在接收模式状态操作1005中模式状态已经被提供给DMA 210并且被放到状态寄存器215中时被启动。之后,一般,帧数据取决于模式状态信息而被提交到存储器130中和/或收藏在高速缓存120中。提交包括基于包签名将包在存储器中分组,提取包括定位包的特定部分(例如,通过使用提取索引和长度值),并且抽藏包括将所提取数据复制到处理器高速缓存空间中。提取可以分配并锁定处理器高速缓存存储器,但是软件负责对在提取期间被DMA索引的高速缓存中的所有数据进行解锁。所提取数据不被从帧数据中移走;而是,所有帧数据被存储在存储器中,并且只有提取数据被复制到处理器高速缓存中。这种提交和收藏在下面进一步详细描述。
参照选择缓存描述符操作1010,DMA 210的BDFP 214基于模式匹配属性寄存器213中的模式状态和队列分类(QC)域来选择缓存描述符。QC域确定将使用哪个缓存描述符队列122/132。模式状态包括到合适QC域的指针。在有模式匹配发生时,模式状态还指示哪个模式匹配已发生。如果模式匹配发生,那么所匹配的模式可以使数据被从帧中提取并作为提取数据124被收藏在高速缓存120中。这样,除了缓存描述符132,缓存描述符队列122也被选择。如果没有模式匹配发生,那么没有提取将发生,从而导致只有缓存描述符队列132被使用。在选择缓存描述符操作1010之后,流程前进到提取准备操作1015。
在提取准备操作1015,如果模式状态指示模式匹配,那么提取引擎212从模式属性寄存器213得到提取索引(EI)和提取长度(EL)。在提取准备操作1015之后,流程前进到BDQ可用决定1020。
参照BDQ可用决定1020,BDFP 214确定所选缓存描述符队列(BDQ)是否可用。即,BDFP 214确定在所选BDQ中是否有空闲空间。如果所选BDQ可用,那么流程经过流程节点“A”前进到更新BDQ指针操作1030。如果所选BDQ不可用,那么流程前进到冲洗操作1025,于是帧和状态帧长度被从接收FIFO 220中冲洗掉,并且流程前进到接收模式状态操作1005。
参照更加BDQ指针操作1030,BDFP 214更新缓存描述符当前指针(BDQ_CURRENT)以指向下一个缓存描述符队列(BDQ_CURRENT=BDQ_NEXT)。在当前BDQ指针被更新之后,流程前进到BDQ为空决定1035。
参照BDQ为空决定1035,BDFP 214确定由BDQ_CURRENT指向的条目是否为空。如果当前BDQ条目非空,那么在标记不可用操作1040所选缓存描述符队列被标记为不可用,并且流程前进到冲洗操作1025。如果当前BDQ条目为空,那么流程前进到传送操作1045。
参照传送操作1045,BDFP 214将帧数据从接收FIFO 220传送到接收缓存211。传送继续直到帧结尾(EOF)被接收或者接收缓存211已满。在帧数据被传送之后,流程前进到EOF决定1050。
参照EOF决定1050,如果在操作1045帧结尾没有被接收,那么流程前进到选择性提取和收藏操作1060。如果在操作1045帧结尾被接收,那么流程前进到获得状态帧长度操作1055,在1055提取引擎212从状态寄存器215中得到状态帧长度。在操作1055之后,流程前进到选择性提取和收藏操作1060。
在选择性提取和收藏操作1060,数据被可控地从所接收帧中提取用于收藏在高速缓存120中。选择性提取和收藏操作1060在下面参照图11更完整地描述。在选择性提取和收藏操作1060之后,流程前进到EOF决定1065。
参照EOF决定1065,如果在选择性提取和收藏操作1060帧结尾被接收,流程前进到EOF更新操作1080。如果在选择性提取和收藏操作1060帧结尾没有被接收,那么流程前进到缓存结尾(EOB)决定1070。
参照EOF更新操作1080,BDFP 214更新当前缓存描述符队列中的状态和控制信息。例如,BDFP 214将当前BDQ 122中的提取发生位设置为指示所提取数据124已经被存储在高速缓存120中。下一个BDQ指针(BDQ_NEXT)被设置为指向所选BDQ中的下一个位置。当前BDQ的内容被根据BDLWT复制到高速缓存中。例如,如果模式匹配发生,并且如果BDLWT为00,那么没有分配被进行;如果BDLWT为10,那么高速缓存120行被分配;如果BDLWT为11,那么高速缓存120行被分配并被锁定。在EOF更新操作1080之后,流程前进到接收模式状态1005,使得更多的数据可以根据下一个帧被处理。
参照EOB决定1070,如果在选择性提取和收藏操作1060,存储器130中数据缓存134的结尾被遇到,那么流程前进到EOB更新操作1075。如果在选择性提取和收藏操作1060,数据缓存的结尾没有被遇到,那么流程前进到如上所述的传送操作1045。
参照EOB更新操作1075,BDFP 214更新当前缓存描述符队列的状态和控制信息。例如,BDFP 214将当前BDQ 122中的提取发生位设置为指示所提取数据124已经被存储在高速缓存120中。下一个BDQ指针(BDQ_NEXT)被设置为指向所选BDQ中的下一个位置。当前BDQ的内容被根据BDLWT复制到高速缓存中。在EOB更新操作1075之后,流程前进到节点A,使得更多的数据可以根据相同的帧被处理。
图11是图示用于通过图1的系统使用64字节缓存来提取和收藏消息一部分的方法的流程图。图11中图示的方法由图10的选择性提取和抽藏操作1060调用。
参照图11,在提取已被请求决定1105,提取引擎212确定对于给定模式匹配提取是否已经被请求。提取引擎212还检查各种提取域,例如提取相加(EX_ADD)域和提取长度(EL)域。提取相加域等于提取长度加上相应的提取索引(例如,EXADD=EL+EI[11∶15])。如果提取被请求(PME=1),提取相加值大于0,并且提取长度大于0,那么流程前进到EI≤64决定1125。如果提取没有被请求,提取相加值为0,或者提取长度为0,那么流程前进到对准决定1110。
参照对准决定1110,如果目的地址不是64字节对准的地址,流程前进到发送MAX(32B)操作1120,在1120最大为32字节的正常数据被发送到存储器130。MAX(32B)是高达并且包括32字节的字节数量(例如,其中x是字节数量,MAX(xB)≤x字节)。如果目标地址是64字节对准地址,那么流程前进到发送MAX(64B)操作1120,在这里正常数据的MAX(64B)被发送到存储器130。在发送MAX(32B)操作1115或者发送MAX(64B)操作1120之后,提取流程退出,并且流程前进到图10的EOF决定1065。
参照EI≤64决定1125,如果提取索引大于64,将被提取的数据还没有到达,流程前进到发送MAX(64B)操作1130,在1130,正常数据的MAX(64B)被发送到存储器130。在发送MAX(64B)操作1130之后,在减法EI操作1135提取索引被减去64(例如,EI=EI-64),并且提取流程退出,流程前进到图10的EOF决定1065。
再次参照EI≤64决定1125,如果提取索引小于或等于64,流程前进到存储相对EI操作1140。相对提取索引是到存储器130中数据缓存内被提取数据开始处的位置的索引。相对提取索引由BDFP 214内部存储到DMA 210,直到其在后来在操作1075或1080(图10)被写到存储器130和/或高速缓存中的合适BDQ。在存储相对EI操作1140,流程前进到EI≤32决定1145。
参照EI≤32决定1145,提取引擎212进行与提取索引的比较,并检查被内部存储在DMA 210中例如在提取引擎212内的提取数据标记。例如,如果提取索引大于32,并且提取数据标记非真,流程前进到发送MAX(32B)操作1150,在1150正常数据的MAX(32B)被发送到存储器130。在发送MAX(32B)1150之后,提取数据标记被设置为真,提取流程退出,并且流程前进到图10的EOF决定1065。
再次参照EI≤32决定1145,如果提取索引小于或等于32,或者提取数据标记为真,那么流程前进到小于32B决定1160。如果存在数据的至少32字节从所接收帧提取(例如,EX_ADD≥32B),那么流程前进到发送32B操作1170,在1170提取数据的32字节根据ELCWT被发送到存储器130并被复制到高速缓存120。例如,如果ELCWT为00,那么没有分配被进行;如果ELCWT为01,那么没有提取发生;如果ELCWT为10,那么高速缓存行被分配;如果ELCWT为11,那么高速缓存行被分配并被锁定。如果有数据的少于32字节将从所接收帧提取(例如,EX_ADD<32B),那么流程前进到舍入操作1165,在1165EX_ADD被舍入为值32,并且流程进一步前进到发送32B操作1170。
在发送32B操作1170之后,流程前进到减法操作1175,在1175提取相加域被减去所提取32字节段的数量(例如,EX_ADD=EX_ADD-32)。在减法操作1175之后,如果帧结尾(EOF)已经到达或者如果EX_ADD=0,那么在清除操作1180提取数据标记被清除。在清除操作1180之后,提取流程退出,流程前进到图10的EOF决定1065。
在一个实施例中,消息帧的一部分被系统100在包控制器160的MAC 190处接收。(参见,图1和图6,操作610)。消息帧的所接收部分(“所接收帧”)被提供给图2中地址/数据滤波器230的临时队列234。帧被地址/数据滤波器230处理以确定其是否应该被接受或拒绝。(参见图6,操作620)地址识别、散列、通过模式匹配以极好散列的散列和模式匹配(图7到9)通过地址识别和散列逻辑238和模式匹配逻辑232在所接收帧上被进行。地址识别和散列逻辑238进行散列和任何必要的完整直接地址比较。PM寄存器233包括与将要匹配的大量模式相对应的大量寄存器。模式匹配逻辑232基于存储在PM寄存器233中的配置值进行模式匹配(例如,通过连续搜索和/或连接能力)。如果在模式匹配和散列或其它故障安全调节后被接受,那么所接收帧和模式状态信息(模式匹配结果)被传送到接收FIFO 220(见图6,操作630)。
所接收帧然后被传送到接收缓存211,模式匹配状态信息被传送到DMA 210的状态寄存器215。(参见图6,操作640。)提取引擎212访问模式属性寄存器213和状态寄存器215以确定数据是否应该从接收缓存211中的所接收帧提取,并控制这种数据的提取为可应用。(参见图10和11。)BDFP访问状态寄存器215和缓存描述符地址寄存器,并产生将被写到存储器130和/或高速缓存120的地址和数据信息。来自BDFP 214的地址信息包括数据缓存内用于帧数据的数据缓存指针(例如,数据缓存指针(456))或者指向缓存描述符队列中下面条目中一个的(一个或多个)指针(例如,BDQ_BASE,BDQ_CURRENT,BDQ_NEXT)。数据信息包括图4中所示的状态和控制452、数据长度454、数据缓存指针456、模式匹配状态458、相对提取索引460、提取长度462和字节计数464。
帧的全部或一部分然后与相应缓存描述符队列132/122中的相应描述信息一起被提交到存储器130中(“正常数据”)和/或收藏在高速缓存120中(“提取数据”)。(参见图6,操作650,以及图10和11)。更具体地,接收缓存211将正常或提取帧数据提供给总线接口单元(BIU)170,提取引擎将属性提供给将帧数据标识为正常或提取的BIU 170,BDFP 214将地址信息和缓存描述符数据从缓存描述符地址寄存器216提供给BIU 170。BIU 170将帧数据传递到总线140用于存储在高速缓存120和/或存储器130中。正常帧数据被存储在至少一个数据缓存134中,并且与正常帧数据有关的描述符数据被存储在缓存描述符队列132中。如果提取发生,那么提取帧数据被存储(“收藏”)在高速缓存部分124中,并且与提取帧数据有关的描述符数据被存储在缓存描述符队列122中。
上面的描述旨在描述本发明的至少一个实施例。上面的描述不旨在限定本发明的范围。实际上,本发明的范围在下面的权利要求中限定。这样,本发明的其它实施例包括对上面描述的各种改变、修改、增加和/或改进。
一个实施例并入了一种新形式的模式匹配,其允许用户对高达16个4字节、可以被连接以形成更长模式并且可以被用于匹配前256字节内帧的一部分的模式进行编程。与每一个模式相关联的是可以被编程以接受/拒绝帧、将帧提交到存储器中四个队列之一中并将所提取的帧数据写到处理器的高速缓存中的一组属性。模式匹配能力包括支持对高达16个4字节唯一模式、基于逐位的模式匹配、深入到帧中高达256字节的匹配范围、高达256字节的偏移、4字节到增加到高达64字节的可编程模式大小、在匹配被检测到时接受或拒绝以及用于精确匹配的高达8个的单播地址。
该实施例将模式匹配的功率与散列滤波的使用组合在一起以提供不需要后滤波且可以在MAC级完成而不需要在逻辑链路控制级的进一步软件干涉的地址识别方法。加速帧处理的一个方法是增加正好命中散列表的任何目的地地址实际是系统正在寻找的地址之一的确信。因为多于一个的地址将具有相同8个最重要位的CRC,所以具有模式匹配的散列表的使用提供了显著增加必须在散列命中上完成的额外处理(检索地址并将其与有效目的地地址列表比较)不费力的几率的方法。这是很有价值的,因为这减少了由于不想要的散列表命中引擎的额外的存储器总线使用。可以被散列的地址数量还受到散列表有效性随地址数量的增加而下降的事实的限制。因为用户首先建立散列表并且因为将被散列的地址数量通常较低(32到64),所以比较容易找到可以覆盖其地址如果不是全部也是大部分的共用模式。使用少量模式匹配寄存器,用户就可以确保期望队列中的任何域都是命中的并且可以无需比较表就可以被处理。
在一个实施例中,如果CRC校验和选择在组/个人散列表中设置的位,那么帧只是有条件地接受未决模式匹配结果。出售商的代码,例如,可以被非常高效地用作要匹配的模式。模式越挑剔(更少的位被使用),高确信散列命中队列方法就越有效。具有非常挑剔的模式,可以被用在散列表中的地址数量可以被增加并且仍旧有效。该实施例的另一个优点是虽然散列本身不能被用于拒绝帧,没有拒绝好帧的风险,但是组合的模式匹配和散列滤波可以被用于进行“通过散列的帧拒绝”,因为散列冲突的不确定性被消除了。另一个灵活性是用户可以将模式匹配和散列拒绝的帧提交到“高概率不匹配队列”中,使得帧可以被检查以进一步证实方法的有效性。
如这里描述的,ADF 230的各种控制逻辑被分布在前面提到的ADF 230的单元之间,并且没有被图示为单独的逻辑块。可替换地,单独的控制逻辑块可以包括代表例如用于控制ADF 230所有操作、包括模式匹配和散列函数的状态机。这种状态机可以包括用于实现这里所描述函数的大量状态。例如,状态机可以在数据被接收和帧被接受时即从发呆状态转变到模式状态的状态。在模式状态的状态下,模式状态确信可以被使得对接收FIFO 220可用。状态机然后可以转变到临时队列数据阶段,其中,所接收帧被从临时队列234转发。状态机然后输入帧状态的状态,其中,与目的地地址滤波相关联的帧长度和状态(例如,广播地址、组/单个地址、混杂模式)被传送到接收FIFO 220。其它状态和状态机可以根据这里描述的函数来实现。
在一个实施例中,用于在信息处理系统内处理消息的方法被提供。信息处理系统具有存储器、高速缓存和包控制器。存储器和高速缓存每一个都被耦合到包控制器。该方法包括接收消息并对消息进行模式匹配,以提供指示所接收消息是否包括第一模式的模式匹配结果,以及提供对应于第一模式的模式匹配属性。方法还包括基于模式匹配结果来接受消息并选择缓存描述符队列(BDQ)。消息根据所选BDQ被存储到存储器,被接受消息的至少一部分被选择性地存储到高速缓存,其中,被接受消息的所述一部分由模式匹配属性指示。
在另一个实施例中,模式匹配属性指示多个BDQ中与第一模式相对应的一个和所选BDQ。在另一个实施例中,与第一模式相对应的模式匹配属性将缺省BDQ指示为所选BDQ。在另一个实施例中,消息基于模式匹配结果被接受。
在另一个实施例中,模式匹配属性提供了模式匹配提取指示符,并且被接受消息的所述一部分基于模式匹配提取指示符被选择性地存储到高速缓存。被接受消息的所述一部分在模式匹配提取指示符指示对于第一模式提取被启用和/或被禁止时可以被存储到高速缓存。模式匹配属性可以提供提取索引和提取长度以指示被接受消息的被存储到高速缓存的那部分。模式匹配属性还可以指示与第一模式相对应的、用于进行将被接受消息的所述一部分存储到高速缓存的高速缓存写类型。
在另一个实施例中,信息处理系统包括耦合到存储器和高速缓存的多个处理器,并且处理器中每一个具有分配的BDQ。模式匹配结果指示多个处理器中的一个来处理消息。在另一个实施例中,模式匹配结果指示与消息相对应的优先级。
在另一个实施例中,所选BDQ的至少一部分被存储到高速缓存。模式匹配属性可以指示与第一模式相对应的用于进行将所选BDQ的至少一部分存储到高速缓存的高速缓存写类型。
在另一个实施例中,对消息进行模式匹配的步骤包括确定第一模式是否存在于消息、由模数匹配数据指示的第一模式、具有相应模式匹配控制的模式匹配数据内,并响应于确定第一模式是否存在,提供基于模式匹配控制的模式匹配结果。模式匹配控制可以包括连接指示符,其指示第一模式是否是多个模式的连接。模式匹配控制可以包括连续搜索指示符,其指示连续搜索是否被启用。模式匹配控制可以包括倒转模式指示符,其中,当倒转模式指示符具有第一值时,模式匹配结果指示第一模式是否存在于消息中,并且当倒转指示符具有第二值时,模式匹配结果指示第一模式不存在于消息内。
在另一个实施例中,信息处理系统包括存储器、高速缓存以及耦合到存储器和高速缓存的包控制器。包控制器包括用于接收消息的输入、存储多个模式的模式匹配寄存器、存储与多个模式中每一个相对应的模式匹配属性的模式属性寄存器、被耦合用于对消息进行模式匹配以及用于提供指示所接收消息是否包括多个模式中第一模式的模式匹配结果的模式匹配逻辑,被耦合用于在所接收消息被接受时存储所接收消息的接收缓存,以及被耦合用于将被接受消息从接收缓存提供到存储器以及用于将被接受消息的至少一部分提供到高速缓存的存储器控制器。被接受消息的所述一部分由与第一模式相对应的模式匹配属性指示。
在另一个实施例中,被接受消息被根据所选BDQ提供到存储器。所选BDQ可以是多个BDQ中的一个并且由与第一模式相对应的模式匹配属性指示。存储器控制器可以被耦合用于将所选BDQ的至少一部分提供到高速缓存。模式匹配属性可以指示与第一模式相对应的用于进行将所选BDQ的至少一部分存储到高速缓存的高速缓存写类型。
在另一个实施例中,与第一模式相对应的模式匹配属性提供用于指示被接受消息被提供给高速缓存的那部分的提取索引和提取长度。在另一个实施例中,与第一模式相对应的模式匹配属性指示用于进行将被接受消息的一部分存储到高速缓存的高速缓存写类型。
在另一个实施例中,方法包括接收消息和确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到。第一模式由模式匹配数据指示,并且具有相应的模式匹配指示符和相应的连续搜索启用指示符。当第一模式匹配被检测到、并且相应的模式匹配接受指示符指示接受具有被检测到的第一模式的所接收消息时,所接收消息被基于相应的连续搜索启用指示符而被选择性接受。
在另一个实施例中,接收消息包括接收包的至少一部分。包还可以特征化为以太网包。
在另一个实施例中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,所接收消息在与第一模式相对应的连续搜索指示符指示没有连续搜索时被接受。
在另一个实施例中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,所接收消息在与第一模式相对应的连续搜索指示符指示连续搜索、并且与第二模式相对应的第二模式匹配被检测到时被接受,所第二模式匹配具有不指示所接收消息的拒绝的相应模式匹配接受指示符。第二模式可以由模式匹配数据指示,并且与第二模式相对应的模式匹配接受指示符指示接受所接收消息和既不接受也不拒绝所接收消息之一。与第二模式相对应的模式匹配接受指示符可以指示接受所接收消息和既不接受也不拒绝所接收消息之一,并且模式匹配对于第二模式被禁止。
在另一个实施例中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受符指示所接收消息的接受时,所接收消息在与第一模式相对应的连续搜索指示符指示连续搜索、并且与第二模式相对应的第二模式匹配被检测到时不被接受,所述第二模式具有指示所接收消息的拒绝的相应模式匹配接受指示符。
在另一个实施例中,相应的模式匹配接受指示符指示接受、拒绝和既不接受也不拒绝所接收消息中的一个。在另一个实施例中,方法还包括在第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的拒绝时拒绝消息。
在另一个实施例中,第一模式具有相应的倒转模式指示符,并且当倒转模式指示符具有第一值时第一模式匹配在所接收消息包括第一模式时被检测,并且当倒转模式指示符具有第二值时第一模式匹配在所接收消息不包括第一模式时被检测。
在另一个实施例中,第一模式具有指示所接收消息内确定第一模式匹配是否被检测到的位置的相应匹配索引。
在另一个实施例中,第一模式具有相应的连接指示符。方法还包括确定第二模式匹配在所接收消息内是否内检测到。消息在第一模式匹配和第二模式匹配被检测到时基于相应的连续搜索启用指示符被选择性地接受,并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受,并且与第一模式相对应的连接指示符指示第一和第二模式的连接。当第二模式匹配没有被检测到并且与第一模式相对应的连接指示符指示第一和第二模式的连接时,第一模式匹配被认为没有被检测到。
在另一个实施例中,方法包括执行散列函数以确定散列命中是否发生,其中当散列命中发生时,第一模式匹配被检测到,并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受,基于相应的连续搜索启用指示符来选择性地接受消息。
在另一个实施例中,方法包括接收消息和确定与多个模式中第一模式相对应的第一模式匹配在所接收消息内是否被检测到。第一模式具有相应的模式匹配接受指示符。方法还包括确定与多个模式中至少一个相对应的连接指示符在第一模式匹配被检测到时是否指示连接。方法还包括在第一模式被检测到并且多个模式中的所述至少一个的连接指示符指示连接时,确定与多个模式中第二模式相对应的第二模式匹配在所接收消息内是否被检测到。连接指示符对应于第一和第二模式中的一个,并且第二模式具有相应的模式匹配接受指示符。所接收消息在第一模式匹配被检测到时基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个被选择性地接受,与第一和第二模式中一个相对应的连接指示符指示连接,并且第二模式匹配被检测到。
在另一个实施例中,与第一模式相对应的模式匹配接受指示符指示使用第一模式处理的消息的接受、拒绝和既不接受也不拒绝中的一个,并且与第二模式相对应的模式匹配接受指示符指示使用第二模式处理的消息的接受、拒绝和既不接受也不拒绝中的一个。
在另一个实施例中,连接指示符和模式匹配接受指示符中被用于选择性地接受所接收消息的所述一个模式匹配接受指示符两者都对应于第一模式和第二模式中相同的一个。
在另一个实施例中,当第一模式匹配被检测到,与第一和第二模式中一个相对应的连接指示符指示连接,并且第二模式匹配被检测到时,基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个拒绝所接收消息。
在另一个实施例中,其中,第一模式具有相应的倒转模式指示符并且第二模式具有相应的倒转模式指示符,并且其中当与第一模式相对应的倒转模式指示符具有第一值时,第一模式匹配在所接收消息不包括第一模式时被检测到,并且当与第一模式相对应的倒转模式指示符具有第二值时,第一模式匹配在所接收消息包括第一模式时被检测到;当与第二模式相对应的倒转模式指示符具有第一值时,第二模式匹配在所接收消息不包括第二模式时被检测到,并且当与第二模式相对应的倒转模式指示符具有第二值时,第二模式匹配在所接收消息包括第二模式时被检测到。
在另一个实施例中,当第一模式匹配和第二模式匹配被检测到时,第一模式在所接收消息中发生在第二模式之后。在另一个实施例中,接收消息包括接收包的至少一部分。在另一个实施例中,其中,包被进一步表现为以太网包。
在另一个实施例中,第一模式具有用于指示所接收消息内确定在所接收消息内第一模式匹配是否被检测到的第一位置的相应匹配索引,并且第二模式具有用于指示所接收消息内确定在所接收消息内第二模式匹配是否被检测到的第二位置的相应匹配索引。
在另一个实施例中,当第一模式匹配被检测到时,多个模式中至少一个的连接指示符指示连接,并且第二模式匹配被检测,所接收消息被接受。
在另一个实施例中,当第一模式匹配被检测到,多个模式中至少一个的连接指示符指示连接,并且第二模式匹配被检测到时,所接收消息基于指示是否进行连续搜索的连续搜索指示符而被选择性地接受。
在另一个实施例中,包控制器包括接收消息的输入、模式匹配逻辑和控制逻辑。模式匹配逻辑响应于接收消息确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到。模式匹配逻辑包括被配置用于存储指示第一模式的模式匹配数据的至少一个模式匹配寄存器,并存储包括与第一模式相对应的模式匹配接受指示符和与第一模式相对应的连续搜索启用指示符的模式匹配控制。控制逻辑被耦合到模式匹配逻辑。在操作过程中,控制逻辑在第一模式匹配被检测到时基于与第一模式相对应的连续搜索启用指示符选择性地接受所接收消息,并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受。
在另一个实施例中,控制逻辑在与第一模式相对应的连续搜索指示符指示没有连续搜索时接受所接收消息,并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受。
在另一个实施例中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,控制逻辑在如下情况接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,以及与第二模式相对应的第二模式匹配被检测到,所述第二模式由模式匹配数据指示并且具有由不指示所接收消息的拒绝的模式匹配控制指示的相应模式匹配接受指示符。
在另一个实施例中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,控制逻辑在如下情况不接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,并且与第二模式相对应的第二模式匹配被检测到,所述第二模式由模式匹配数据指示并且具有由指示所接收消息的拒绝的模式匹配控制指示的相应模式匹配接受指示符。
在另一个实施例中,相应的模式匹配接受指示符指示所接收消息的接受、拒绝和既不接受也不拒绝中的一个。
在另一个实施例中,模式匹配控制包括与第一模式相对应的倒转模式指示符,并且其中当倒转模式指示符具有第一值时,第一模式在所接收消息包括第一模式时被检测到;当倒转模式指示符具有第二值时,第一模式匹配在所接收消息不包括第一模式时被检测到。
在另一个实施例中,模式匹配控制包括与第一模式相对应的、用于指示在所接收消息内确定第一模式匹配是否被检测到的位置的匹配索引。
在另一个实施例中,其中模式匹配控制包括与第一模式相对应的连接指示符;模式匹配控制逻辑确定第二模式匹配在所接收消息内是否被检测到;并且控制逻辑在第一模式匹配和第二模式匹配被检测到、与第一模式相对应的模式匹配接受指示符指示所接收消息的接受、并且与第一模式相对应的连接指示符指示第一和第二模式的连接时基于相应的连续搜索启用指示符选择性地接受消息,并且在第二模式匹配没有被检测到且与第一模式相对应的连接指示符指示第一和第二模式的连接时认为第一模式匹配没有被检测到。
在一个实施例中,包控制器包括接收消息的输入、模式匹配逻辑和控制逻辑。模式匹配逻辑确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到以及与第二模式相对应的第二模式匹配是否被检测到。模式匹配逻辑包括至少一个模式匹配寄存器。模式匹配寄存器存储指示第一模式和第二模式的模式匹配数据。模式匹配寄存器还存储包括与第一模式相对应的模式匹配接受指示符、与第二模式相对应的模式匹配接受指示符、与第一模式相对应的连接指示符和与第二模式相对应的连接指示符的模式匹配控制信息。控制逻辑被耦合到模式匹配逻辑以在第一模式匹配被检测到、第二模式被检测到并且与第一和第二模式中一个相对应的连接指示符指示连接时,基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符选择性地接受所接收消息。
在另一个实施例中,与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的一个以及与第一和第二模式中一个相对应的连接指示符两者都对应于第一模式和第二模式中相同的一个。在另一个实施例中,当第一模式匹配被检测到、第二模式匹配没有被检测到并且与第一和第二模式中一个相对应的连接指示符指示连接时,控制逻辑不接受所接收消息。
在另一个实施例中,模式匹配控制包括与第一模式相对应的倒转模式指示符和与第二模式相对应的倒转模式指示符,并且其中当与第一模式相对应的倒转模式指示符具有第一值时,第一模式匹配在所接收消息不包括第一模式时不被检测到,并且,当与第一模式相对应的倒转模式指示符具有第二值时,第一模式匹配在所接收消息包括第一模式时被检测到;并且当与第二模式相对应的倒转模式指示符具有第一值时,第二模式匹配在所接收消息不包括第二模式时被检测到,并且,当与第二模式相对应的倒转模式指示符具有第二值时,第二模式在所接收消息包括第二模式时被检测到。
在另一个实施例中,模式匹配控制包括与第一模式相对应的用于指示所接收消息内用于确定第一模式匹配在所接收消息内是否被检测到所处的第一位置的模式索引,以及与第二模式相对应的用于指示所接收消息内用于确定第二模式匹配在所接收消息内是否被检测到所处的第二位置的模式索引。在另一个实施例中,控制逻辑在第一模式匹配被检测到、与第一和第二模式中一个相对应的连接指示符指示连接以及第二模式匹配被检测到时接受所接收消息。在另一个实施例中,模式匹配控制包括与第一模式和第二模式中一个相对应的连续搜索启用指示符,其中,控制逻辑在第一模式匹配被检测到、多个模式中至少一个的连接指示符指示连接并且第二模式匹配被检测到时,基于连续搜索启用指示符和与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个选择性地接受所接收消息。
将理解,这里描述的体系结构只是实例性的,实际上实现相同功能的许多其它的体系结构都可以被实现。在概要的、但仍旧很确定的意义上用于实现相同功能的任何部分的安排被有效地“相关联”使得期望的功能被实现。因此,这里组合的用于实现具体功能的任何两个部分可以被看作是彼此“相关联”使得期望的功能被实现,而与体系结构或中间部分无关。同样,这样相关联的任何两个部分还可以被视为是彼此“可操作连接”或“可操作耦合”以实现期望功能。
本领域的技术人员将认识到逻辑块之间的边界只是说明性的,并且可替换的实施例可以合并逻辑块或电路元件或对各种逻辑块或电路元件进行可替换的功能分解。此外,可替换实施例可以组合具体部分的多个实例。
此外,本领域的技术人员将认识到上述操作功能之间的边界只是说明性的。多个操作的功能可以被组合成单个操作,和/或单个操作的功能可以被分配到额外的操作中。此外,可替换实施例可以包括具体操作的多种情况,并且操作顺序可以在各种其它实施例中被改变或者甚至并行进行。
因为上述详细描述是实例性的,所以当“一个实施例”被描述时,其是实例性的实施例。因此,在该上下文中词语“一个”的使用不旨在指示一个并且只有一个实施例可以具有所描述的特征。而是,许多其它实施例可以并且通常具有示例性的“一个实施例”的所描述特征。因此,当如上使用时,当本发明在一个实施例的上下文中被描述时,该一个实施例是本发明许多可能实施例中的一个。
虽然有关于词语“一个实施例”在详细描述中的使用的上述警告,但是本领域内的技术人员将理解如果特定数量的引入的权利要求元素在下面的权利要求中被意指,那么这种意指将在权利要求中被明确地叙述,而在没有这种叙述时就没有这种限制存在或被意指。例如,在下面的权利要求中,当权利要求元素被描述为具有“一个”特征时,将意指该元素应该被限制为一个并且是所描述特征的唯一一个。而是,当权利要求元素在下面的权利要求中被描述为包括或包含“一”特征时,不意指元素应该被限制为一个并且是所描述特征的唯一一个。而是,例如,包括“一”特征的权利要求应理解为包括所讨论的一个或多个特征的装置或方法。即,因为所讨论的装置或方法包括特征,所以权利要求理解为装置或方法而不管装置或方法是否包括另一个这种类似的特征。词语“一”作为对权利要求特征的非限制性的引入性冠性词的这种使用在这里被申请人采用为与过去由被许多法院采用的解释是一致的,虽然可能找到任何反常的或先例性的相反的案例法。类似地,当权利要求元素在下面的权利要求中被描述为包括或包含前面提到的特征(例如,“所述”特征)时,意指的是元素不应该被限制为一个并且是仅仅通过定冠词的偶然使用所描述特征的唯一一个。
此外,权利要求中例如“至少一个”和“一个或多个”的引入性短语的使用不应该被解释为暗示通过不定冠词“一”的另一个权利要求元素的引入将含有这种引入的权利要求元素的任何具体的权利要求限制为只包含一个这种元素的发明,即使在相同的权利要求包括引入性短语“一个或多个”或“至少一个”和例如“一”的不定冠词时。定冠词的使用也一样。
虽然本发明的具体实施例已经被示出和描述,但是对于本领域的技术人员将很显然,基于这里的教导,各种改进、可替换结构和等价替换都可以被使用而不脱离这里要保护的发明。结果是,所附权利要求在它们的范围内包含所有这种改变、修改等,只要它们在本发明的真正精神和范围内。而且,将理解本发明仅由所附权利要求限定。上面的描述不旨在给出对本发明实施例的穷举。除非另外明确地陈述,否则这里给出的每一个实例都是非限制性的或者非穷举的实例,而不管非限制性的、非穷举的术语或类似的术语是否在每一个实例中被同时表达。虽然已经尝试概述一些实例性实施例和对其的示例性变形,但是其它实施例和/或变形也在如下面权利要求所限定的发明范围内。
权利要求
1.一种用于在具有存储器、高速缓存和包控制器的信息处理系统内处理消息的方法,所述存储器和高速缓存的每一个都被耦合到包控制器,所述方法包括接收消息;对消息进行模式匹配以提供指示所接收消息是否包括第一模式的模式匹配结果,并提供与第一模式相对应的模式匹配属性;接受消息;基于模式匹配结果选择缓存描述符队列(BDQ);根据所选的缓存描述符队列将消息存储到存储器;以及选择性地将所接受消息的至少一部分存储到高速缓存,其中,所接受消息的所述一部分由模式匹配属性指示。
2.权利要求1的方法,其中,模式匹配属性指示多个缓存描述符队列中与第一模式相对应的一个,其中,多个缓存描述符队列中的所述一个对应于所选缓存描述符队列。
3.权利要求1的方法,其中,与第一模式相对应的模式匹配属性将缺省缓存描述符队列指示为所选缓存描述符队列。
4.权利要求1的方法,其中,模式匹配属性提供模式匹配提取指示符,其中,选择性地将所接受消息的所述一部分存储到高速缓存中是基于模式匹配提取指示符进行的,并且其中,所接受消息的所述一部分在模式匹配提取指示符指示提取对于第一模式被启用时被存储到高速缓存,并且所接受消息的所述一部分在模式匹配提取指示符指示提取对于第一模式被禁止时不被存储到高速缓存。
5.权利要求4的方法,其中,模式匹配属性提供提取索引和提取长度用以指示所接受消息中被存储到高速缓存的所述一部分。
6.权利要求4的方法,其中,模式匹配属性指示与第一模式相对应的用于进行将所接受消息的所述一部分存储到高速缓存的高速缓存写类型。
7.权利要求1的方法,其中,信息处理系统包括耦合到存储器和高速缓存的多个处理器,所述处理器中的每一个具有被分配的缓存描述符队列,并且其中模式匹配结果指示多个处理器中用来处理消息的一个。
8.权利要求1的方法,其中,模式匹配结果指示与消息相对应的优先级。
9.权利要求1的方法,还包括将所选缓存描述符队列的至少一部分存储到高速缓存。
10.权利要求9的方法,其中,模式匹配属性指示与第一模式相对应的用于进行将所选缓存描述符队列的所述至少一部分存储到高速缓存的高速缓存写类型。
11.权利要求1的方法,其中,对消息进行模式匹配包括确定第一模式是否存在于消息内,所述第一模式由模式匹配数据指示,并且模式匹配数据具有相应的模式匹配控制;以及响应于确定第一模式是否存在,基于模式匹配控制提供模式匹配结果。
12.权利要求11的方法,其中,模式匹配控制包括指示第一模式是否是多个模式的连接的连接指示符。
13.权利要求11的方法,其中,模式匹配控制包括指示连续搜索是否被启用的连续搜索指示符。
14.权利要求11的方法,其中,模式匹配控制包括倒转模式指示符,其中,当倒转模式指示符具有第一值时,模式匹配结果指示第一模式是否存在于消息内,并且当倒转模式指示符具有第二值时,模式匹配结果指示第一模式是否不存在于消息内。
15.权利要求1的方法,其中,消息被基于模式匹配结果接受。
16.一种信息处理系统,包括存储器;高速缓存;被耦合到存储器和高速缓存的包控制器,所述包控制器包括用于接收消息的输入;存储多个模式的模式匹配寄存器;存储与多个模式中每一个相对应的模式匹配属性的模式属性寄存器;模式匹配逻辑,其被耦合用于对消息进行模式匹配以及用于提供指示所接收消息是否包括多个模式中第一模式的模式匹配结果;被耦合用于在所接收消息被接受时存储所接收消息的接收缓存;以及存储器控制器,被耦合用于将来自接收缓存的所接受消息提供给存储器以及用于将所接受消息的至少一部分提供给高速缓存,其中,所接受消息的所述一部分由与第一模式相对应的模式匹配属性指示。
17.权利要求16的信息处理系统,其中,所接受消息被根据所选缓存描述符队列提供给存储器。
18.权利要求17的信息处理系统,其中,所选缓存描述符队列是多个缓存描述符队列中的一个,并且由与第一模式相对应的模式匹配属性指示。
19.权利要求17的信息处理系统,其中,存储器控制器被耦合用于将所选缓存描述符队列的至少一部分提供给高速缓存。
20.权利要求19的方法,其中,模式匹配属性指示与第一模式相对应的用于进行将所选缓存描述符队列的所述至少一部分存储到高速缓存的高速缓存写类型。
21.权利要求16的信息处理系统,其中,与第一模式相对应的模式匹配属性提供用于指示所接受消息中被提供给高速缓存的所述一部分的提取索引和提取长度。
22.权利要求16的信息处理系统,其中,与第一模式相对应的模式匹配属性指示用于进行将所接受消息的所述一部分存储到高速缓存中的高速缓存写类型。
23.一种方法,包括接收消息;确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到,其中,第一模式由模式匹配数据指示并且具有相应的模式匹配接受指示符和相应的连续搜索启用指示符;以及当第一模式匹配被检测到并且相应的模式匹配接受指示符指示接受具有所检测到的第一模式的所接收消息时,基于相应的连续搜索启用指示符选择性地接受所接收消息。
24.权利要求23的方法,其中,接收消息包括接收包的至少一部分。
25.权利要求24的方法,其中,包还被特征化为以太网包。
26.权利要求23的方法,其中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,在与第一模式相对应的连续搜索指示符指示没有连续搜索时接受所接收消息。
27.权利要求23的方法,其中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,在如下情况接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,以及与第二模式相对应的第二模式匹配被检测到,第二模式具有不指示所接收消息的拒绝的相应模式匹配接受指示符。
28.权利要求27的方法,其中,第二模式由模式匹配数据指示并且与第二模式相对应的模式匹配接受指示符指示接受所接收消息和既不接受也不拒绝所接收消息中的一个。
29.权利要求27的方法,其中,与第二模式相对应的模式匹配接受指示符指示接受所接收消息、既不接受也不拒绝所接收消息中的一个,并且模式匹配对于第二模式被禁止。
30.权利要求23的方法,其中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,在如下情况不接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,以及与第二模式相对应的第二模式匹配被检测到,第二模式具有指示所接收消息的拒绝的相应模式匹配接受指示符。
31.权利要求23的方法,其中,相应的模式匹配接受指示符指示所接收消息的接受、拒绝和既不接受也不拒绝中的一个。
32.权利要求23的方法,还包括当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的拒绝时,拒绝消息。
33.权利要求23的方法,其中,第一模式具有相应的倒转模式指示符,并且其中当倒转模式指示符具有第一值时,第一模式匹配在所接收消息包括第一模式时被检测到;当倒转模式指示符具有第二值时,第一模式匹配在所接收消息不包括第一模式时被检测到。
34.权利要求23的方法,其中,第一模式具有指示所接收消息内确定第一模式匹配是否被检测到的位置的相应的匹配索引。
35.权利要求23的方法,其中,第一模式具有相应的连接指示符,所述方法还包括确定第二模式匹配在所接收消息内是否被检测到,其中当第一模式匹配和第二模式匹配被检测到、与第一模式相对应的模式匹配接受指示符指示所接收消息的接受、并且与第一模式相对应的连接指示符指示第一和第二模式的连接时,基于相应的连续搜索启用指示符选择性地接受消息,以及当第二模式匹配没有被检测到并且与第一模式相对应的连接指示符指示第一和第二模式的连接时,第一模式匹配被认为没有被检测到。
36.权利要求23的方法,还包括执行散列函数以确定散列命中是否发生,其中,当散列命中发生、第一模式匹配被检测到、并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,基于相应的连续搜索启用指示符选择性地接受消息。
37.一种方法,包括接收消息;确定与多个模式中的第一模式相对应的第一模式匹配在所接收消息内是否被检测到,其中,第一模式具有相应的模式匹配接受指示符;当第一模式匹配被检测到时,确定与多个模式中的至少一个相对应的连接指示符是否指示连接;当第一模式匹配被检测到并且多个模式中的所述至少一个的连接指示符指示连接时,确定与多个模式中的第二模式相对应的第二模式匹配在所接收消息内是否被检测到,其中,连接指示符对应于第一和第二模式中的一个并且第二模式具有相应的模式匹配接受指示符;以及当第一模式匹配被检测到、与第一和第二模式中的一个相对应的连接指示符指示连接、并且第二模式匹配被检测到时,基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个来选择性地接受所接收消息。
38.权利要求37的方法,其中,与第一模式相对应的模式匹配接受指示符指示使用第一模式处理的消息的接受、拒绝和既不接受也不拒绝中的一个,并且与第二模式相对应的模式匹配接受指示符指示使用第二模式处理的消息的接受、拒绝和既不接受也不拒绝中的一个。
39.权利要求37的方法,其中,连接指示符和模式匹配接受指示符中被用于选择性地接受所接收消息的所述一个模式匹配接受指示符都对应于第一模式和第二模式中相同的一个。
40.权利要求37的方法,其中,当第一模式匹配被检测到、与第一和第二模式中的一个相对应的连接指示符指示连接、并且第二模式匹配被检测到时,基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个来拒绝所接收消息。
41.权利要求37的方法,其中,第一模式具有相应的倒转模式指示符并且第二模式具有相应的倒转模式指示符,并且其中当与第一模式相对应的倒转模式指示符具有第一值时,第一模式匹配在所接收消息不包括第一模式时被检测到,并且当与第一模式相对应的倒转模式指示符具有第二值时,第一模式匹配在所接收消息包括第一模式时被检测到;并且当与第二模式相对应的倒转模式指示符具有第一值时,第二模式匹配在所接收消息不包括第二模式时被检测到,并且当与第二模式相对应的倒转模式指示符具有第二值时,第二模式在所接收消息包括第二模式时被检测到。
42.权利要求37的方法,其中,当第一模式匹配和第二模式匹配被检测到时,第一模式在所接收消息中发生在第二模式之后。
43.权利要求37的方法,其中,接收所述消息包括接收包的至少一部分。
44.权利要求43的方法,其中,包还被进一步特征化为以太网包。
45.权利要求37的方法,其中,第一模式具有指示所接收消息内确定在所接收消息内第一模式匹配是否被检测到的第一位置的相应的匹配索引,并且第二模式具有指示所接收消息内确定在所接收消息内第二模式匹配是否被检测到的第二位置的相应的匹配索引。
46.权利要求37的方法,其中,当第一模式匹配被检测到、多个模式中至少一个的连接指示符指示连接、并且第二模式匹配被检测到时,所接收消息被接受。
47.权利要求37的方法,其中,当第一模式匹配被检测到、多个模式中至少一个的连接指示符指示连接、并且第二模式匹配被检测到时,所接收消息基于指示是否进行连续搜索的连续搜索指示符被选择性地接受。
48.一种包控制器,包括用于接收消息的输入;确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到的模式匹配逻辑,其中,模式匹配逻辑包括存储指示第一模式的模式匹配数据和存储包括与第一模式相对应的模式匹配接受指示符和与第一模式相对应的连续搜索启用指示符的模式匹配控制的至少一个模式匹配寄存器;以及控制逻辑,其被耦合到模式匹配逻辑,其在第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,基于与第一模式相对应的连续搜索启用指示符选择性地接受所接收消息。
49.权利要求48的包控制器,其中,控制逻辑在与第一模式相对应的连续搜索指示符指示没有连续搜索、第一模式匹配被检测到、并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时接受所接收消息。
50.权利要求48的包控制器,其中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,控制逻辑在如下情况接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,以及与第二模式相对应的第二模式匹配被检测到,所述第二模式由模式匹配数据指示并且具有由不指示所接收消息的拒绝的模式匹配控制指示的相应模式匹配接受指示符。
51.权利要求48的包控制器,其中,当第一模式匹配被检测到并且与第一模式相对应的模式匹配接受指示符指示所接收消息的接受时,控制逻辑在如下情况不接受所接收消息与第一模式相对应的连续搜索指示符指示连续搜索,以及与第二模式相对应的第二模式匹配被检测到,所述第二模式由模式匹配数据指示并且具有由指示所接收消息的拒绝的模式匹配控制指示的相应模式匹配接受指示符。
52.权利要求48的包控制器,其中,相应的模式匹配接受指示符指示所接收消息的接受、拒绝和既不接受也不拒绝中的一个。
53.权利要求48的包控制器,其中,模式匹配控制包括与第一模式相对应的倒转模式指示符,且其中当倒转模式指示符具有第一值时,第一模式匹配在所接收消息包括第一模式时被检测到;当倒转模式指示符具有第二值时,第一模式匹配在所接收消息不包括第一模式时被检测到。
54.权利要求48的包控制器,其中,模式匹配控制包括与第一模式相对应的用于指示在所接收消息内确定第一模式匹配是否被检测到的位置的匹配索引。
55.权利要求48的包控制器,其中模式匹配控制包括与第一模式相对应的连接指示符;模式匹配逻辑确定第二模式匹配在所接收消息内是否被检测到;并且控制逻辑在第一模式匹配和第二模式匹配被检测到、与第一模式相对应的模式匹配接受指示符指示所接收消息的接受、并且与第一模式相对应的连接指示符指示第一和第二模式的连接时基于相应的连续搜索启用指示符选择性地接受消息,而且在第二模式匹配没有被检测到且与第一模式相对应的连接指示符指示第一和第二模式的连接时认为第一模式匹配没有被检测到。
56.一种包控制器,包括用于接收消息的输入;确定与第一模式相对应的第一模式匹配在所接收消息内是否被检测到以及与第二模式相对应的第二模式匹配是否被检测到的模式匹配逻辑,其中,模式匹配逻辑包括存储指示第一模式和第二模式的模式匹配数据和存储包括与第一模式相对应的模式匹配接受指示符、与第二模式相对应的模式匹配接受指示符、与第一模式相对应的连续指示符和与第二模式相对应的连接指示符的模式匹配控制的至少一个模式匹配寄存器;以及控制逻辑,其被耦合到模式匹配逻辑,其在第一模式匹配被检测到、第二模式匹配被检测到并且与第一和第二模式中的一个相对应的连接指示符指示连接时,基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个来选择性地接受所接收消息。
57.权利要求56的包控制器,其中,与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的所述一个以及与第一和第二模式中的一个相对应的连接指示符都对应于第一和第二模式中相同的一个。
58.权利要求56的包控制器,其中,当第一模式匹配被检测到、第二模式匹配没有被检测到、并且与第一和第二模式中的一个相对应的连接指示符指示连接时,控制逻辑不接受所接收消息。
59.权利要求56的包控制器,其中,模式匹配控制包括与第一模式相应的倒转模式指示符和与第二模式相应的倒转模式指示符,并且其中当与第一模式相对应的倒转模式指示符具有第一值时,第一模式匹配在所接收消息不包括第一模式时被检测到,并且当与第一模式相对应的倒转模式指示符具有第二值时,第一模式匹配在所接收消息包括第一模式时被检测到;并且当与第二模式相对应的倒转模式指示符具有第一值时,第二模式匹配在所接收消息不包括第二模式时被检测到,并且当与第二模式相对应的倒转模式指示符具有第二值时,第二模式在所接收消息包括第二模式时被检测到。
60.权利要求56的包控制器,其中,模式匹配控制包括与第一模式相对应的用于指示所接收消息内确定在所接收消息内第一模式匹配是否被检测到的第一位置的匹配索引,以及与第二模式相对应的用于指示所接收消息内确定在所接收消息内第二模式匹配是否被检测到的第二位置的匹配索引。
61.权利要求56的包控制器,其中,当第一模式匹配被检测到、与第一和第二模式中的一个相对应的连接指示符指示连接、并且第二模式匹配被检测到时,控制逻辑接受所接收消息。
62.权利要求56的包控制器,其中,模式匹配控制包括与第一和第二模式中的一个相对应的连续搜索启用指示符,其中,当第一模式匹配被检测到、多个模式中的至少一个的连接指示符指示连接、并且第二模式匹配被检测到时,控制逻辑基于连续搜索启用指示符并基于与第一模式相对应的模式匹配接受指示符和与第二模式相对应的模式匹配接受指示符中的至少一个,来选择性地接受所接收消息。
全文摘要
模式匹配被用在信息处理系统中用于处理来自网络例如基于以太网的网络的进入消息,以帮助将这种消息提交到存储器中以及将这种消息选择性收藏在高速缓存中。模式匹配在不增加基于软件的处理器任务的情况下增加了消息接受和拒绝的效率。可以在进入消息中搜索模式的存在和模式的不存在。可以在进入消息中搜索多个模式的存在。模式匹配的结果不仅可以被用于消息的接受和拒绝,而且还可以用于其它后接受任务,例如根据具有具体模式匹配的消息的所标识的相对优先级或绝对重要性而进行进入消息的选择性存储,以及例如将消息根据模式匹配选择性导向到多处理器计算机系统内不同处理域。
文档编号H04L12/56GK1860743SQ200380110548
公开日2006年11月8日 申请日期2003年11月25日 优先权日2003年11月25日
发明者哈罗德·M.·马丁, 卡洛斯·A.·格里夫斯, 唐·Q.·尼古耶恩, 戴维·J.·努尼兹 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1