用于在多处理器系统中保持一致性的方法和设备的制作方法

文档序号:7592858阅读:166来源:国知局
专利名称:用于在多处理器系统中保持一致性的方法和设备的制作方法
技术领域
本发明一般涉及多处理器系统,特别涉及在多处理器系统中保持存储器一致性(coherence)。
背景技术
例如交换机或路由器的网络装置可包括有助于向该网络装置内和外传输例如信元或帧的数据的网络处理器。这样的网络处理器可根据传输到该网络处理器的数据而以一个或多个控制结构(例如控制块)在存储器中存储信息。
当该网络处理器的多个组件尝试在几乎相同的时间或在重叠的时间周期期间更改同一个控制结构时,在网络处理器中会出现数据一致性问题。例如,网络处理器的一个组件可能尝试更改存储器中的一个控制结构,而另一个组件也在更改存储器中同一个控制结构。
一些网络处理器使用防止一个组件在与同一总线耦接的另一组件更改控制结构时更改该控制结构(例如通过锁定对该控制结构的访问)的总线协议。可替换地,一些网络处理器使用一种采用窥探方法判定与总线耦接的组件是否正在更改该控制结构的总线协议。如果组件正在更改该控制结构,则其它组件必须等待直至该组件已完成其更改。然而,该方案仅能对某些总线协议起作用。尽管有效,但协议和/或窥探技术往往实现起来很复杂、处理密集且昂贵,并难以获得(例如在缺少这些特征的现有处理器中)。因此存在对维护网络处理器中的数据一致性的改善方法和设备的需求。

发明内容
在本发明的第一方面中,提出了一种维护控制结构一致性的方法。该方法包括以下步骤(1)在硬件更新操作期间,由硬件访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和(2)当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
在本发明的第二方面,提供了一种设备,该设备包括硬件更新逻辑,适配为与网络处理器的存储器控制器耦接,并适配为与至少一个存储器相互作用以使得(1)在硬件更新操作期间,由该硬件更新逻辑访问该至少一个存储器中存储的控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和(2)当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
在本发明的第三方面,提供了一种网络处理器系统。该网络处理器系统包括适配为存储多个控制结构的至少一个存储器和一个网络处理器。该网络处理器包括与该至少一个存储器耦接的存储器控制器和与该存储器控制器耦接的硬件更新逻辑。该硬件更新逻辑适配为与该至少一个存储器相互作用以使得(1)在硬件更新操作期间,由该硬件更新逻辑访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和(2)当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
还提供了许多其它方面,如根据本发明这些和其它方面的计算机程序产品。可由计算机可读介质(例如载波信号、软盘、光盘、DVD、硬盘、随机存取存储器等)承载这里所述的每一计算机程序产品。
根据下面的详细描述、所附权利要求以及附图,本发明的其它特点和方面将变得更加清楚。


图1是可在其中实现本方法和设备的示例网络处理器系统。
图2是可在图1的网络处理器系统的存储器中存储的示例控制块的方框图。
图3图示了在维护控制块一致性的同时,在图1的网络处理器系统中执行硬件更新操作的示例方法。
图4图示了在图1的网络处理器系统中进行确保控制块一致性的软件更新操作的示例方法。
具体实施例方式
网络处理器通常执行诸如分组分类、分组更改、队列管理和/或分组转发的功能。例如,分组分类可包括基于已知特征(例如地址或协议)识别分组。分组更改可包括更改分组以符合协议(例如更新TCP/IP协议分组的报头信息)。队列管理可包括应用程序使用的分组的排队、出队和调度。分组转发可包括将诸如TCP/IP协议分组的分组转发或路由发送(route)到该分组的合适的目的地址。
执行分组分类、分组更改、队列管理和/或分组转发时,该网络处理器可更改存储器中存储的(例如控制块)并与该网络处理器接收(例如用于更新地址/路由信息、校验和(checksum)信息等)的数据(例如帧或信元)对应的一个或多个控制结构。该网络处理器可利用多个组件而更改存储器中存储的控制结构。例如,该网络处理器可利用软件(例如处理器执行的指令)或硬件(例如逻辑装置)来更改该控制结构。
如上所述,当两个不同的组件几乎同时需要更改同一个控制结构时,可能会出现问题。没有数据一致性方案,则存储器中存储的结果控制结构可能不能正确反映这两个组件做出的更改。例如,网络处理器的硬件可从该存储器读取整个控制块,更改该控制块的某些字段并将该整个控制块写入存储器。当硬件正在更改该控制块时,在该硬件将其更改的控制块写回到存储器中之前,该网络处理器的软件可更改该控制块的一个或多个字段。结果,存储器中存储的控制块将包括由软件做出的改变。然而,一旦硬件已完成了对控制块的字段的更改,并将整个控制块写回到存储器中,则由软件更改的控制块的字段可能会被丢失/重写。因此,该存储器中存储的控制块可能与其对应的信元或帧不一致。下面参考图1-4描述用于确保控制块在这些和其它情况下的一致性的方法和设备。
图1是可在其中实现本方法和设备的示例网络处理器系统100。该网络处理器系统100可包括与诸如DRAM或其它类似存储器的存储器104耦接的网络处理器102。在一个实施例中,该存储器104可在该网络处理器102的外部(例如来自片外)。
该网络处理器102可包括一个或多个处理器106a-n,它们的每一个可包括存储器(例如缓存)(未示出)。每一处理器106a-n可通过总线122(例如处理器局域总线)与存储器控制器120耦接。每一处理器106a-n可通过总线122和存储器控制器120在存储器104中存储和创建使得该处理器更改一个或多个控制结构如控制块的指令。
该存储器控制器120可与存储器104耦接,并允许该网络处理器102的组件与存储器104通信。该存储器控制器120也可耦接到和/或可包括硬件更新逻辑124(例如锁定逻辑)。该硬件更新逻辑124可包括多个寄存器128a-n。在一个实施例中,该硬件更新逻辑包括八个寄存器,尽管也可采用更多或更少。该硬件更新逻辑128a-n可包括逻辑、寄存器、存储器等的任何合适的组合,并在至少一个实施例中可包括专用集成电路(ASIC)。
图2是可在存储器104中存储的示例控制块200的方框图。该控制块200包括多个字段,所述多个字段含有与该网络处理器102中接收的信元或帧对应的信息。在一个实施例中,每一控制块200可包括32个1字节字段的数据,所以为32字节大小。可使用其它控制块尺寸。可通过软件(例如由处理器106a-n执行的指令)或通过硬件(例如该硬件更新逻辑124)访问每一控制块200的一个或多个部分或字段(例如第二字节202)。在至少一个实施例中,当在软件更新操作期间由软件访问控制块时,可以利用软件从该存储器104读取该控制块的一个或多个部分或字段,进行更改,并将其写回到该存储器104。类似地,当在硬件更新操作期间由硬件(例如通过硬件更新逻辑124)访问控制块200时,可以利用硬件从该存储器读取该控制块的一个或多个部分或字段,进行更改,并将其写到该存储器中。
现在参考图1-2和图3描述该网络处理器系统100的操作,图3图示了在维护控制块一致性的同时,在该网络处理器系统100中执行硬件更新操作的示例方法300。更具体地,图3图示了当在硬件更新操作期间使用硬件来访问控制块的一个或多个部分时,为了确保控制块一致性而由该网络处理器系统100执行的步骤。
参考图3,在步骤302,方法300开始。在步骤304,在硬件更新列表上放置要更新的控制块的指针。例如,当该硬件更新逻辑124将要访问控制块200的一个或多个部分时,可在该硬件更新列表126上放置代表该控制块200的地址的至少一部分的信息(例如通过在寄存器128a-n之一中存储该地址信息)。如下面将详细描述的一样,使用该硬件更新列表126中的条目来判定是否允许对控制块的软件访问。
在步骤306,从该存储器104读取该控制块的一个或多个部分(例如数据的一个或多个字节)。更具体地,当该硬件更新逻辑124执行硬件更新操作时,该硬件更新逻辑124可将访问控制块的一个或多个部分的请求发送到该存储器控制器120。响应于该请求,该存储器控制器120可从存储器104中检索该控制块指定的一个或多个部分,并将该控制块的一个或多个部分提供到该硬件更新逻辑124。
在步骤308,可更新该控制块的一个或多个部分。例如,可由该硬件更新逻辑124更新该控制块200的一个或多个字节或字段。例如,如上所述,该网络处理器系统100可通过更改与接收的帧或信元对应的控制结构(例如控制块)而对该帧或信元执行分组更改。例如,在分组更改期间,可由硬件更新逻辑124更新或更改与接收的信元或帧对应的控制块的校验和字段。
在利用该硬件更新逻辑124更新该控制块的一个或多个部分之后,在步骤310,将该控制块的一个或多个已更新的部分写回到存储器104中。例如,该硬件更新逻辑124可向该存储器控制器120发送请求,以将该控制块的一个或多个已更新的部分写回到存储器104中。
可对该控制块200的一个或多个部分或整个控制块(例如其所有部分)分别执行读取和写入步骤,步骤306和步骤310。当读取或写入控制块的所有部分时,由该硬件更新逻辑124更改的控制块的字段将反映由该硬件更新逻辑124对控制块做出的更改,而没有由该硬件更新逻辑124更改的字段将反映在从存储器104中读取该控制块时该字段具有的值。因为该硬件更新逻辑124通常更改控制块的多个部分,所以与对于要由该硬件更新逻辑124更新的控制块的每一部分而从存储器104中读取控制块的一部分、更新该控制块的该部分、并将已更新的控制块写到存储器104中相比,从存储器104读取该整个控制块、更改该控制块的所述多个部分、并将该整个控制块写到存储器104中对存储器控制器120和存储器104之间的总线130的利用更有效。相反,在软件更新期间,软件更新操作通常仅更改控制块的一个或少数几个部分(字段),并且可以通过仅读取和写回要更改的控制块的那些部分而更有效地执行。如下面参考图4将描述的一样,使用硬件更新列表126,即使在对正由硬件更新逻辑124更改的控制块尝试软件更新时也可确保数据一致性。
在步骤312,从该硬件更新列表126中去除已在步骤308更新的控制块的指针。更具体地,在对控制块执行读取-更改-写入之后,从存储该指针的寄存器128a-n中去除该控制块的指针。在步骤314,图3的方法结束。
图4图示了在该网络处理器系统100中进行确保控制块一致性的软件更新操作的示例方法400。更具体地,图4图示了软件更新操作期间,当使用软件访问控制块的一个或多个部分时,由该网络处理器系统100执行的确保控制块一致性的步骤。
参考图4,在步骤402,方法400开始。在步骤404,监视总线122以得到对控制块进行软件访问的请求。例如,该存储器控制器120和/或该硬件更新逻辑124可监视处理器局域总线122以得到控制信号和/或来自处理器106a-n之一的地址。例如,该硬件更新逻辑124可采用该存储器控制器120以检测控制信号和/或总线上的地址。该控制信号和/或地址可表示将执行的命令和/或将对其执行该命令的控制块。
对控制块进行软件访问可包括从存储器读取控制块的一个或多个操作、更改控制块的一个或多个部分中的至少一个。例如,当网络处理器从中接收数据的网络连接(例如信道)不再激活时,网络处理器系统100的处理器106a-n可能需要对与接收的帧或信元对应的控制块的一个或多个部分进行访问。在这种情况下,可由处理器更改与接收的帧或信元对应的控制块的字段的一个或多个比特,以禁止该信道。当只有控制块的一个部分/字段的少数比特要被更改时,一般而言,(1)仅从存储器104读取要更改的控制块的部分/字段;(2)更改该控制块的部分/字段的适当比特;和(3)将该控制块的已更改的部分/字段写回到存储器104中将比从/向存储器104读和写该整个控制块更有效。
在步骤406,判定是否接收了对控制块的一个或多个部分进行软件访问的请求。例如,可判定存储器控制器120是否已接收了对控制块的一个部分(例如一字节)进行软件访问的请求(例如写入请求)。如果还没有接收到对控制块的一个或多个部分进行软件访问的请求,则重复步骤404。例如,如果存储器控制器120没有接收到写入控制块的一个字节的请求,则该存储器控制器120会继续监视该总线122,以得到对控制块进行软件访问的请求(例如来自处理器106a-n)。或者,如果接收了对控制块进行软件访问的请求,则执行步骤408。
在步骤408,检查硬件更新列表126以判定该列表是否包括被请求进行软件访问的控制块的指针。例如,当存储器控制器120从处理器106a-n之一接收了写入控制块的请求时,存储器控制器120可扫描该寄存器128a-n中的每一条目以判定该控制块的地址(或该控制块的地址的一部分)是否存储在寄存器128a-n之一中。如果该硬件更新列表126中的一个条目包括被请求进行软件访问的控制块的指针,则在步骤410,延迟对该控制块的软件访问。例如,可由硬件更新逻辑124采用存储器控制器120来拒绝请求对该控制块进行软件访问的处理器106a-n对总线122的访问。在这样的实施例中,将需要处理器106a-n发送对该控制块进行软件访问的另一请求(例如处理器106a-n可包括自动发送附加请求直至访问被同意的软件和/或硬件)。或者,该硬件更新逻辑124可采用存储器控制器120来同意该软件访问请求(例如通过发往处理器106a-n之一的适当控制信号),并仅延迟和/或排队该软件访问请求直至完成该硬件更新操作。
如果判定该硬件更新列表126不包括将由软件访问的控制块的指针,则执行步骤412。也就是允许对控制块的软件访问。例如,该存储器控制器120可允许进行请求的处理器106a-n访问该总线122和该控制块。在步骤414,图4的方法结束。
如图3所示,在硬件更新操作期间,仅在硬件(例如硬件更新逻辑124)读取、更新、写入或利用该控制块时,才在该硬件更新列表126中包括控制块的指针。所以,如果该控制块的指针不在该硬件更新列表126中,则该硬件更新逻辑124不采用该控制块,并且可允许对控制块进行软件访问,而没有软件更新被硬件更新操作重写的风险。
通过执行图3和4的方法,该网络处理器系统100可确保控制块一致性,同时允许该网络处理器102的一个或多个组件几乎同时读取、更改、和/或写入该同一控制结构。
前面的描述仅公开了本发明的示范实施例。对于本领域普通技术人员而言,落入本发明范围之内的对以上公开的设备和方法的更改是显而易见的。例如,尽管图3图示了执行硬件更新操作的示例方法,其中在从存储器104中读取控制块之前,将该控制块的指针放置在硬件更新列表126上,但是应该明白,可在从存储器104读取控制块之后,将该控制块的指针放置在该硬件更新列表126上。
尽管图1中示出的示例网络处理器系统100包括具有两个处理器的网络处理器102,但是网络处理器102可包括单一处理器或多于两个处理器。而且,尽管图1的示例网络处理器系统100图示了包括硬件更新逻辑124的存储器控制器120,但是硬件更新逻辑124可在存储器控制器120外部。同样,可由片内(on-chip)存储器代替寄存器128a-n。
可用计算机程序代码(例如存储器控制器120、一个或多个处理器106a-n等之中)将图3的处理300或图4的处理400中的一个或多个步骤实现为一个或多个计算机程序产品。
因此,尽管已结合其示范实施例公开了本发明,但是应该明白,其它实施例也落入所附权利要求所限定的本发明的精神和范围之内。
权利要求
1.一种维护控制结构一致性的方法,包括在硬件更新操作期间,由硬件访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
2.根据权利要求1的方法,还包括在该硬件更新操作期间由硬件访问的控制结构的一个或多个部分不再由该硬件访问之后,从该硬件更新列表中去除该控制结构的指针。
3.根据权利要求1的方法,其特征在于,当由硬件访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中包括在硬件更新操作期间,由硬件访问控制结构的所有部分时,将该控制结构的指针写入该硬件更新列表中。
4.根据权利要求1的方法,其特征在于,该软件更新操作包括更新该控制结构的字段。
5.根据权利要求1的方法,其特征在于,该指针代表该控制结构的地址的至少一个部分。
6.根据权利要求1的方法,其特征在于,该硬件更新列表存储在硬件中。
7.根据权利要求6的方法,其特征在于,该硬件更新列表至少存储在存储器和寄存器之一中。
8.根据权利要求1的方法,其特征在于,该硬件更新列表包括多个条目。
9.根据权利要求1的方法,其特征在于,该控制结构包括控制块。
10.根据权利要求9的方法,其特征在于,控制块包括多个字节的数据。
11.根据权利要求9的方法,其特征在于,该控制块包括基于网络处理器接收的信元或帧的信息。
12.根据权利要求9的方法,其特征在于,该控制结构的一个或多个部分包括该控制块的一个或多个字节。
13.根据权利要求1的方法,其特征在于,在硬件更新操作期间,当由硬件访问控制结构的一个或多个部分时,将该控制结构的指针写入该硬件更新列表中包括在该硬件操作期间,当由硬件从存储器中读取该控制结构的一个或多个指针,进行更改,并将其写回到该存储器中时,将该控制结构的指针写入该硬件更新列表中。
14.根据权利要求1的方法,其特征在于,延迟该软件访问包括监视总线,以至少得到控制信号和地址之一。
15.根据权利要求14的方法,其特征在于,延迟该软件访问包括当该控制结构的指针在该硬件更新列表上时,拒绝对总线进行软件访问。
16.根据权利要求14的方法,其特征在于,延迟该软件访问包括同意对软件访问请求;和当该控制结构的指针在该硬件更新列表上时,延迟该软件访问。
17.根据权利要求1的方法,其特征在于,当该控制结构的指针在该硬件更新列表上时,延迟对该控制结构的一个或多个部分的软件访问包括延迟由在网络处理器的处理器上执行的指令引起的软件访问。
18.根据权利要求1的方法,其特征在于,当该控制结构的指针在该硬件更新列表上时,延迟对该控制结构的一个或多个部分的软件访问包括当该控制结构的指针在该硬件更新列表上时,延迟由软件对该控制结构的一个或多个部分执行的读取、更改和写入操作中的至少一个。
19.一种设备,包括硬件更新逻辑,适配为与网络处理器的存储器控制器耦接,并适配为与至少一个存储器相互作用以使得在硬件更新操作期间,由该硬件更新逻辑访问该至少一个存储器中存储的控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
20.根据权利要求19的设备,其特征在于,该硬件更新逻辑还适配为在该硬件更新操作期间由该硬件更新逻辑访问的控制结构的一个或多个部分不再由该硬件访问之后,从该硬件更新列表中去除该控制结构的指针。
21.根据权利要求19的设备,其特征在于,该硬件更新逻辑适配为通过采用该存储器控制器监视总线上的控制信号和地址的至少之一,来检测该软件访问。
22.根据权利要求20的设备,其特征在于,该硬件更新逻辑适配为通过采用该存储器控制器,在该控制结构的指针在该硬件更新列表上时,拒绝对总线进行软件访问,来延迟该软件访问。
23.根据权利要求20的设备,其特征在于,该硬件更新逻辑适配为通过采用该存储器控制器进行以下操作以延迟该软件访问同意对软件访问的请求;和当该控制结构的指针在该硬件更新列表上时,延迟该软件访问。
24.一种网络处理器系统,包括适配为存储多个控制结构的至少一个存储器;网络处理器,该网络处理器包括与该至少一个存储器耦接的存储器控制器;硬件更新逻辑,与该存储器控制器耦接,并适配为与该至少一个存储器相互作用以使得在硬件更新操作期间,由该硬件更新逻辑访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。
25.根据权利要求24的网络处理器系统,其特征在于,该硬件更新逻辑还适配为在该硬件更新操作期间由该硬件更新逻辑访问的控制结构的一个或多个部分不再由该硬件访问之后,从硬件更新列表中去除该控制结构的指针。
26.根据权利要求24的网络处理器系统,其特征在于,该硬件更新逻辑适配为通过采用该存储器控制器监视总线上的控制信号和地址的至少之一,来检测该软件访问。
27.根据权利要求24的网络处理器系统,其特征在于,该存储器控制器包括该硬件更新逻辑。
28.根据权利要求27的网络处理器系统,其特征在于,该硬件更新逻辑包括片内存储器。
29.根据权利要求24的网络处理器系统,还包括利用内部总线与该存储器控制器耦接的多个处理器。
30.根据权利要求24的网络处理器系统,其特征在于,该至少一个存储器包括DRAM。
全文摘要
在第一方面,提供了一种维护控制结构一致性的方法。该方法包括以下步骤(1)在硬件更新操作期间,由硬件访问控制结构的一个或多个部分时,将该控制结构的指针写入硬件更新列表中;和(2)当该控制结构的指针在该硬件更新列表中时,在软件更新操作期间,延迟对该控制结构的一个或多个部分的软件访问。还提供了许多其它方面。
文档编号H04L12/24GK1584855SQ20041004538
公开日2005年2月23日 申请日期2004年5月21日 优先权日2003年8月21日
发明者保罗·A·甘菲尔德, 克里·C·伊明, 约翰·D·艾里什 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1