專利名稱:用于在多處理器系統(tǒng)中保持一致性的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及多處理器系統(tǒng),特別涉及在多處理器系統(tǒng)中保持存儲(chǔ)器一致性(coherence)。
背景技術(shù):
例如交換機(jī)或路由器的網(wǎng)絡(luò)裝置可包括有助于向該網(wǎng)絡(luò)裝置內(nèi)和外傳輸例如信元或幀的數(shù)據(jù)的網(wǎng)絡(luò)處理器。這樣的網(wǎng)絡(luò)處理器可根據(jù)傳輸?shù)皆摼W(wǎng)絡(luò)處理器的數(shù)據(jù)而以一個(gè)或多個(gè)控制結(jié)構(gòu)(例如控制塊)在存儲(chǔ)器中存儲(chǔ)信息。
當(dāng)該網(wǎng)絡(luò)處理器的多個(gè)組件嘗試在幾乎相同的時(shí)間或在重疊的時(shí)間周期期間更改同一個(gè)控制結(jié)構(gòu)時(shí),在網(wǎng)絡(luò)處理器中會(huì)出現(xiàn)數(shù)據(jù)一致性問題。例如,網(wǎng)絡(luò)處理器的一個(gè)組件可能嘗試更改存儲(chǔ)器中的一個(gè)控制結(jié)構(gòu),而另一個(gè)組件也在更改存儲(chǔ)器中同一個(gè)控制結(jié)構(gòu)。
一些網(wǎng)絡(luò)處理器使用防止一個(gè)組件在與同一總線耦接的另一組件更改控制結(jié)構(gòu)時(shí)更改該控制結(jié)構(gòu)(例如通過鎖定對(duì)該控制結(jié)構(gòu)的訪問)的總線協(xié)議??商鎿Q地,一些網(wǎng)絡(luò)處理器使用一種采用窺探方法判定與總線耦接的組件是否正在更改該控制結(jié)構(gòu)的總線協(xié)議。如果組件正在更改該控制結(jié)構(gòu),則其它組件必須等待直至該組件已完成其更改。然而,該方案僅能對(duì)某些總線協(xié)議起作用。盡管有效,但協(xié)議和/或窺探技術(shù)往往實(shí)現(xiàn)起來很復(fù)雜、處理密集且昂貴,并難以獲得(例如在缺少這些特征的現(xiàn)有處理器中)。因此存在對(duì)維護(hù)網(wǎng)絡(luò)處理器中的數(shù)據(jù)一致性的改善方法和設(shè)備的需求。
發(fā)明內(nèi)容
在本發(fā)明的第一方面中,提出了一種維護(hù)控制結(jié)構(gòu)一致性的方法。該方法包括以下步驟(1)在硬件更新操作期間,由硬件訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和(2)當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
在本發(fā)明的第二方面,提供了一種設(shè)備,該設(shè)備包括硬件更新邏輯,適配為與網(wǎng)絡(luò)處理器的存儲(chǔ)器控制器耦接,并適配為與至少一個(gè)存儲(chǔ)器相互作用以使得(1)在硬件更新操作期間,由該硬件更新邏輯訪問該至少一個(gè)存儲(chǔ)器中存儲(chǔ)的控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和(2)當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
在本發(fā)明的第三方面,提供了一種網(wǎng)絡(luò)處理器系統(tǒng)。該網(wǎng)絡(luò)處理器系統(tǒng)包括適配為存儲(chǔ)多個(gè)控制結(jié)構(gòu)的至少一個(gè)存儲(chǔ)器和一個(gè)網(wǎng)絡(luò)處理器。該網(wǎng)絡(luò)處理器包括與該至少一個(gè)存儲(chǔ)器耦接的存儲(chǔ)器控制器和與該存儲(chǔ)器控制器耦接的硬件更新邏輯。該硬件更新邏輯適配為與該至少一個(gè)存儲(chǔ)器相互作用以使得(1)在硬件更新操作期間,由該硬件更新邏輯訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和(2)當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
還提供了許多其它方面,如根據(jù)本發(fā)明這些和其它方面的計(jì)算機(jī)程序產(chǎn)品。可由計(jì)算機(jī)可讀介質(zhì)(例如載波信號(hào)、軟盤、光盤、DVD、硬盤、隨機(jī)存取存儲(chǔ)器等)承載這里所述的每一計(jì)算機(jī)程序產(chǎn)品。
根據(jù)下面的詳細(xì)描述、所附權(quán)利要求以及附圖,本發(fā)明的其它特點(diǎn)和方面將變得更加清楚。
圖1是可在其中實(shí)現(xiàn)本方法和設(shè)備的示例網(wǎng)絡(luò)處理器系統(tǒng)。
圖2是可在圖1的網(wǎng)絡(luò)處理器系統(tǒng)的存儲(chǔ)器中存儲(chǔ)的示例控制塊的方框圖。
圖3圖示了在維護(hù)控制塊一致性的同時(shí),在圖1的網(wǎng)絡(luò)處理器系統(tǒng)中執(zhí)行硬件更新操作的示例方法。
圖4圖示了在圖1的網(wǎng)絡(luò)處理器系統(tǒng)中進(jìn)行確保控制塊一致性的軟件更新操作的示例方法。
具體實(shí)施例方式
網(wǎng)絡(luò)處理器通常執(zhí)行諸如分組分類、分組更改、隊(duì)列管理和/或分組轉(zhuǎn)發(fā)的功能。例如,分組分類可包括基于已知特征(例如地址或協(xié)議)識(shí)別分組。分組更改可包括更改分組以符合協(xié)議(例如更新TCP/IP協(xié)議分組的報(bào)頭信息)。隊(duì)列管理可包括應(yīng)用程序使用的分組的排隊(duì)、出隊(duì)和調(diào)度。分組轉(zhuǎn)發(fā)可包括將諸如TCP/IP協(xié)議分組的分組轉(zhuǎn)發(fā)或路由發(fā)送(route)到該分組的合適的目的地址。
執(zhí)行分組分類、分組更改、隊(duì)列管理和/或分組轉(zhuǎn)發(fā)時(shí),該網(wǎng)絡(luò)處理器可更改存儲(chǔ)器中存儲(chǔ)的(例如控制塊)并與該網(wǎng)絡(luò)處理器接收(例如用于更新地址/路由信息、校驗(yàn)和(checksum)信息等)的數(shù)據(jù)(例如幀或信元)對(duì)應(yīng)的一個(gè)或多個(gè)控制結(jié)構(gòu)。該網(wǎng)絡(luò)處理器可利用多個(gè)組件而更改存儲(chǔ)器中存儲(chǔ)的控制結(jié)構(gòu)。例如,該網(wǎng)絡(luò)處理器可利用軟件(例如處理器執(zhí)行的指令)或硬件(例如邏輯裝置)來更改該控制結(jié)構(gòu)。
如上所述,當(dāng)兩個(gè)不同的組件幾乎同時(shí)需要更改同一個(gè)控制結(jié)構(gòu)時(shí),可能會(huì)出現(xiàn)問題。沒有數(shù)據(jù)一致性方案,則存儲(chǔ)器中存儲(chǔ)的結(jié)果控制結(jié)構(gòu)可能不能正確反映這兩個(gè)組件做出的更改。例如,網(wǎng)絡(luò)處理器的硬件可從該存儲(chǔ)器讀取整個(gè)控制塊,更改該控制塊的某些字段并將該整個(gè)控制塊寫入存儲(chǔ)器。當(dāng)硬件正在更改該控制塊時(shí),在該硬件將其更改的控制塊寫回到存儲(chǔ)器中之前,該網(wǎng)絡(luò)處理器的軟件可更改該控制塊的一個(gè)或多個(gè)字段。結(jié)果,存儲(chǔ)器中存儲(chǔ)的控制塊將包括由軟件做出的改變。然而,一旦硬件已完成了對(duì)控制塊的字段的更改,并將整個(gè)控制塊寫回到存儲(chǔ)器中,則由軟件更改的控制塊的字段可能會(huì)被丟失/重寫。因此,該存儲(chǔ)器中存儲(chǔ)的控制塊可能與其對(duì)應(yīng)的信元或幀不一致。下面參考圖1-4描述用于確??刂茐K在這些和其它情況下的一致性的方法和設(shè)備。
圖1是可在其中實(shí)現(xiàn)本方法和設(shè)備的示例網(wǎng)絡(luò)處理器系統(tǒng)100。該網(wǎng)絡(luò)處理器系統(tǒng)100可包括與諸如DRAM或其它類似存儲(chǔ)器的存儲(chǔ)器104耦接的網(wǎng)絡(luò)處理器102。在一個(gè)實(shí)施例中,該存儲(chǔ)器104可在該網(wǎng)絡(luò)處理器102的外部(例如來自片外)。
該網(wǎng)絡(luò)處理器102可包括一個(gè)或多個(gè)處理器106a-n,它們的每一個(gè)可包括存儲(chǔ)器(例如緩存)(未示出)。每一處理器106a-n可通過總線122(例如處理器局域總線)與存儲(chǔ)器控制器120耦接。每一處理器106a-n可通過總線122和存儲(chǔ)器控制器120在存儲(chǔ)器104中存儲(chǔ)和創(chuàng)建使得該處理器更改一個(gè)或多個(gè)控制結(jié)構(gòu)如控制塊的指令。
該存儲(chǔ)器控制器120可與存儲(chǔ)器104耦接,并允許該網(wǎng)絡(luò)處理器102的組件與存儲(chǔ)器104通信。該存儲(chǔ)器控制器120也可耦接到和/或可包括硬件更新邏輯124(例如鎖定邏輯)。該硬件更新邏輯124可包括多個(gè)寄存器128a-n。在一個(gè)實(shí)施例中,該硬件更新邏輯包括八個(gè)寄存器,盡管也可采用更多或更少。該硬件更新邏輯128a-n可包括邏輯、寄存器、存儲(chǔ)器等的任何合適的組合,并在至少一個(gè)實(shí)施例中可包括專用集成電路(ASIC)。
圖2是可在存儲(chǔ)器104中存儲(chǔ)的示例控制塊200的方框圖。該控制塊200包括多個(gè)字段,所述多個(gè)字段含有與該網(wǎng)絡(luò)處理器102中接收的信元或幀對(duì)應(yīng)的信息。在一個(gè)實(shí)施例中,每一控制塊200可包括32個(gè)1字節(jié)字段的數(shù)據(jù),所以為32字節(jié)大小??墒褂闷渌刂茐K尺寸??赏ㄟ^軟件(例如由處理器106a-n執(zhí)行的指令)或通過硬件(例如該硬件更新邏輯124)訪問每一控制塊200的一個(gè)或多個(gè)部分或字段(例如第二字節(jié)202)。在至少一個(gè)實(shí)施例中,當(dāng)在軟件更新操作期間由軟件訪問控制塊時(shí),可以利用軟件從該存儲(chǔ)器104讀取該控制塊的一個(gè)或多個(gè)部分或字段,進(jìn)行更改,并將其寫回到該存儲(chǔ)器104。類似地,當(dāng)在硬件更新操作期間由硬件(例如通過硬件更新邏輯124)訪問控制塊200時(shí),可以利用硬件從該存儲(chǔ)器讀取該控制塊的一個(gè)或多個(gè)部分或字段,進(jìn)行更改,并將其寫到該存儲(chǔ)器中。
現(xiàn)在參考圖1-2和圖3描述該網(wǎng)絡(luò)處理器系統(tǒng)100的操作,圖3圖示了在維護(hù)控制塊一致性的同時(shí),在該網(wǎng)絡(luò)處理器系統(tǒng)100中執(zhí)行硬件更新操作的示例方法300。更具體地,圖3圖示了當(dāng)在硬件更新操作期間使用硬件來訪問控制塊的一個(gè)或多個(gè)部分時(shí),為了確??刂茐K一致性而由該網(wǎng)絡(luò)處理器系統(tǒng)100執(zhí)行的步驟。
參考圖3,在步驟302,方法300開始。在步驟304,在硬件更新列表上放置要更新的控制塊的指針。例如,當(dāng)該硬件更新邏輯124將要訪問控制塊200的一個(gè)或多個(gè)部分時(shí),可在該硬件更新列表126上放置代表該控制塊200的地址的至少一部分的信息(例如通過在寄存器128a-n之一中存儲(chǔ)該地址信息)。如下面將詳細(xì)描述的一樣,使用該硬件更新列表126中的條目來判定是否允許對(duì)控制塊的軟件訪問。
在步驟306,從該存儲(chǔ)器104讀取該控制塊的一個(gè)或多個(gè)部分(例如數(shù)據(jù)的一個(gè)或多個(gè)字節(jié))。更具體地,當(dāng)該硬件更新邏輯124執(zhí)行硬件更新操作時(shí),該硬件更新邏輯124可將訪問控制塊的一個(gè)或多個(gè)部分的請(qǐng)求發(fā)送到該存儲(chǔ)器控制器120。響應(yīng)于該請(qǐng)求,該存儲(chǔ)器控制器120可從存儲(chǔ)器104中檢索該控制塊指定的一個(gè)或多個(gè)部分,并將該控制塊的一個(gè)或多個(gè)部分提供到該硬件更新邏輯124。
在步驟308,可更新該控制塊的一個(gè)或多個(gè)部分。例如,可由該硬件更新邏輯124更新該控制塊200的一個(gè)或多個(gè)字節(jié)或字段。例如,如上所述,該網(wǎng)絡(luò)處理器系統(tǒng)100可通過更改與接收的幀或信元對(duì)應(yīng)的控制結(jié)構(gòu)(例如控制塊)而對(duì)該幀或信元執(zhí)行分組更改。例如,在分組更改期間,可由硬件更新邏輯124更新或更改與接收的信元或幀對(duì)應(yīng)的控制塊的校驗(yàn)和字段。
在利用該硬件更新邏輯124更新該控制塊的一個(gè)或多個(gè)部分之后,在步驟310,將該控制塊的一個(gè)或多個(gè)已更新的部分寫回到存儲(chǔ)器104中。例如,該硬件更新邏輯124可向該存儲(chǔ)器控制器120發(fā)送請(qǐng)求,以將該控制塊的一個(gè)或多個(gè)已更新的部分寫回到存儲(chǔ)器104中。
可對(duì)該控制塊200的一個(gè)或多個(gè)部分或整個(gè)控制塊(例如其所有部分)分別執(zhí)行讀取和寫入步驟,步驟306和步驟310。當(dāng)讀取或?qū)懭肟刂茐K的所有部分時(shí),由該硬件更新邏輯124更改的控制塊的字段將反映由該硬件更新邏輯124對(duì)控制塊做出的更改,而沒有由該硬件更新邏輯124更改的字段將反映在從存儲(chǔ)器104中讀取該控制塊時(shí)該字段具有的值。因?yàn)樵撚布逻壿?24通常更改控制塊的多個(gè)部分,所以與對(duì)于要由該硬件更新邏輯124更新的控制塊的每一部分而從存儲(chǔ)器104中讀取控制塊的一部分、更新該控制塊的該部分、并將已更新的控制塊寫到存儲(chǔ)器104中相比,從存儲(chǔ)器104讀取該整個(gè)控制塊、更改該控制塊的所述多個(gè)部分、并將該整個(gè)控制塊寫到存儲(chǔ)器104中對(duì)存儲(chǔ)器控制器120和存儲(chǔ)器104之間的總線130的利用更有效。相反,在軟件更新期間,軟件更新操作通常僅更改控制塊的一個(gè)或少數(shù)幾個(gè)部分(字段),并且可以通過僅讀取和寫回要更改的控制塊的那些部分而更有效地執(zhí)行。如下面參考圖4將描述的一樣,使用硬件更新列表126,即使在對(duì)正由硬件更新邏輯124更改的控制塊嘗試軟件更新時(shí)也可確保數(shù)據(jù)一致性。
在步驟312,從該硬件更新列表126中去除已在步驟308更新的控制塊的指針。更具體地,在對(duì)控制塊執(zhí)行讀取-更改-寫入之后,從存儲(chǔ)該指針的寄存器128a-n中去除該控制塊的指針。在步驟314,圖3的方法結(jié)束。
圖4圖示了在該網(wǎng)絡(luò)處理器系統(tǒng)100中進(jìn)行確??刂茐K一致性的軟件更新操作的示例方法400。更具體地,圖4圖示了軟件更新操作期間,當(dāng)使用軟件訪問控制塊的一個(gè)或多個(gè)部分時(shí),由該網(wǎng)絡(luò)處理器系統(tǒng)100執(zhí)行的確保控制塊一致性的步驟。
參考圖4,在步驟402,方法400開始。在步驟404,監(jiān)視總線122以得到對(duì)控制塊進(jìn)行軟件訪問的請(qǐng)求。例如,該存儲(chǔ)器控制器120和/或該硬件更新邏輯124可監(jiān)視處理器局域總線122以得到控制信號(hào)和/或來自處理器106a-n之一的地址。例如,該硬件更新邏輯124可采用該存儲(chǔ)器控制器120以檢測(cè)控制信號(hào)和/或總線上的地址。該控制信號(hào)和/或地址可表示將執(zhí)行的命令和/或?qū)?duì)其執(zhí)行該命令的控制塊。
對(duì)控制塊進(jìn)行軟件訪問可包括從存儲(chǔ)器讀取控制塊的一個(gè)或多個(gè)操作、更改控制塊的一個(gè)或多個(gè)部分中的至少一個(gè)。例如,當(dāng)網(wǎng)絡(luò)處理器從中接收數(shù)據(jù)的網(wǎng)絡(luò)連接(例如信道)不再激活時(shí),網(wǎng)絡(luò)處理器系統(tǒng)100的處理器106a-n可能需要對(duì)與接收的幀或信元對(duì)應(yīng)的控制塊的一個(gè)或多個(gè)部分進(jìn)行訪問。在這種情況下,可由處理器更改與接收的幀或信元對(duì)應(yīng)的控制塊的字段的一個(gè)或多個(gè)比特,以禁止該信道。當(dāng)只有控制塊的一個(gè)部分/字段的少數(shù)比特要被更改時(shí),一般而言,(1)僅從存儲(chǔ)器104讀取要更改的控制塊的部分/字段;(2)更改該控制塊的部分/字段的適當(dāng)比特;和(3)將該控制塊的已更改的部分/字段寫回到存儲(chǔ)器104中將比從/向存儲(chǔ)器104讀和寫該整個(gè)控制塊更有效。
在步驟406,判定是否接收了對(duì)控制塊的一個(gè)或多個(gè)部分進(jìn)行軟件訪問的請(qǐng)求。例如,可判定存儲(chǔ)器控制器120是否已接收了對(duì)控制塊的一個(gè)部分(例如一字節(jié))進(jìn)行軟件訪問的請(qǐng)求(例如寫入請(qǐng)求)。如果還沒有接收到對(duì)控制塊的一個(gè)或多個(gè)部分進(jìn)行軟件訪問的請(qǐng)求,則重復(fù)步驟404。例如,如果存儲(chǔ)器控制器120沒有接收到寫入控制塊的一個(gè)字節(jié)的請(qǐng)求,則該存儲(chǔ)器控制器120會(huì)繼續(xù)監(jiān)視該總線122,以得到對(duì)控制塊進(jìn)行軟件訪問的請(qǐng)求(例如來自處理器106a-n)?;蛘?,如果接收了對(duì)控制塊進(jìn)行軟件訪問的請(qǐng)求,則執(zhí)行步驟408。
在步驟408,檢查硬件更新列表126以判定該列表是否包括被請(qǐng)求進(jìn)行軟件訪問的控制塊的指針。例如,當(dāng)存儲(chǔ)器控制器120從處理器106a-n之一接收了寫入控制塊的請(qǐng)求時(shí),存儲(chǔ)器控制器120可掃描該寄存器128a-n中的每一條目以判定該控制塊的地址(或該控制塊的地址的一部分)是否存儲(chǔ)在寄存器128a-n之一中。如果該硬件更新列表126中的一個(gè)條目包括被請(qǐng)求進(jìn)行軟件訪問的控制塊的指針,則在步驟410,延遲對(duì)該控制塊的軟件訪問。例如,可由硬件更新邏輯124采用存儲(chǔ)器控制器120來拒絕請(qǐng)求對(duì)該控制塊進(jìn)行軟件訪問的處理器106a-n對(duì)總線122的訪問。在這樣的實(shí)施例中,將需要處理器106a-n發(fā)送對(duì)該控制塊進(jìn)行軟件訪問的另一請(qǐng)求(例如處理器106a-n可包括自動(dòng)發(fā)送附加請(qǐng)求直至訪問被同意的軟件和/或硬件)。或者,該硬件更新邏輯124可采用存儲(chǔ)器控制器120來同意該軟件訪問請(qǐng)求(例如通過發(fā)往處理器106a-n之一的適當(dāng)控制信號(hào)),并僅延遲和/或排隊(duì)該軟件訪問請(qǐng)求直至完成該硬件更新操作。
如果判定該硬件更新列表126不包括將由軟件訪問的控制塊的指針,則執(zhí)行步驟412。也就是允許對(duì)控制塊的軟件訪問。例如,該存儲(chǔ)器控制器120可允許進(jìn)行請(qǐng)求的處理器106a-n訪問該總線122和該控制塊。在步驟414,圖4的方法結(jié)束。
如圖3所示,在硬件更新操作期間,僅在硬件(例如硬件更新邏輯124)讀取、更新、寫入或利用該控制塊時(shí),才在該硬件更新列表126中包括控制塊的指針。所以,如果該控制塊的指針不在該硬件更新列表126中,則該硬件更新邏輯124不采用該控制塊,并且可允許對(duì)控制塊進(jìn)行軟件訪問,而沒有軟件更新被硬件更新操作重寫的風(fēng)險(xiǎn)。
通過執(zhí)行圖3和4的方法,該網(wǎng)絡(luò)處理器系統(tǒng)100可確??刂茐K一致性,同時(shí)允許該網(wǎng)絡(luò)處理器102的一個(gè)或多個(gè)組件幾乎同時(shí)讀取、更改、和/或?qū)懭朐撏豢刂平Y(jié)構(gòu)。
前面的描述僅公開了本發(fā)明的示范實(shí)施例。對(duì)于本領(lǐng)域普通技術(shù)人員而言,落入本發(fā)明范圍之內(nèi)的對(duì)以上公開的設(shè)備和方法的更改是顯而易見的。例如,盡管圖3圖示了執(zhí)行硬件更新操作的示例方法,其中在從存儲(chǔ)器104中讀取控制塊之前,將該控制塊的指針放置在硬件更新列表126上,但是應(yīng)該明白,可在從存儲(chǔ)器104讀取控制塊之后,將該控制塊的指針放置在該硬件更新列表126上。
盡管圖1中示出的示例網(wǎng)絡(luò)處理器系統(tǒng)100包括具有兩個(gè)處理器的網(wǎng)絡(luò)處理器102,但是網(wǎng)絡(luò)處理器102可包括單一處理器或多于兩個(gè)處理器。而且,盡管圖1的示例網(wǎng)絡(luò)處理器系統(tǒng)100圖示了包括硬件更新邏輯124的存儲(chǔ)器控制器120,但是硬件更新邏輯124可在存儲(chǔ)器控制器120外部。同樣,可由片內(nèi)(on-chip)存儲(chǔ)器代替寄存器128a-n。
可用計(jì)算機(jī)程序代碼(例如存儲(chǔ)器控制器120、一個(gè)或多個(gè)處理器106a-n等之中)將圖3的處理300或圖4的處理400中的一個(gè)或多個(gè)步驟實(shí)現(xiàn)為一個(gè)或多個(gè)計(jì)算機(jī)程序產(chǎn)品。
因此,盡管已結(jié)合其示范實(shí)施例公開了本發(fā)明,但是應(yīng)該明白,其它實(shí)施例也落入所附權(quán)利要求所限定的本發(fā)明的精神和范圍之內(nèi)。
權(quán)利要求
1.一種維護(hù)控制結(jié)構(gòu)一致性的方法,包括在硬件更新操作期間,由硬件訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
2.根據(jù)權(quán)利要求1的方法,還包括在該硬件更新操作期間由硬件訪問的控制結(jié)構(gòu)的一個(gè)或多個(gè)部分不再由該硬件訪問之后,從該硬件更新列表中去除該控制結(jié)構(gòu)的指針。
3.根據(jù)權(quán)利要求1的方法,其特征在于,當(dāng)由硬件訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中包括在硬件更新操作期間,由硬件訪問控制結(jié)構(gòu)的所有部分時(shí),將該控制結(jié)構(gòu)的指針寫入該硬件更新列表中。
4.根據(jù)權(quán)利要求1的方法,其特征在于,該軟件更新操作包括更新該控制結(jié)構(gòu)的字段。
5.根據(jù)權(quán)利要求1的方法,其特征在于,該指針代表該控制結(jié)構(gòu)的地址的至少一個(gè)部分。
6.根據(jù)權(quán)利要求1的方法,其特征在于,該硬件更新列表存儲(chǔ)在硬件中。
7.根據(jù)權(quán)利要求6的方法,其特征在于,該硬件更新列表至少存儲(chǔ)在存儲(chǔ)器和寄存器之一中。
8.根據(jù)權(quán)利要求1的方法,其特征在于,該硬件更新列表包括多個(gè)條目。
9.根據(jù)權(quán)利要求1的方法,其特征在于,該控制結(jié)構(gòu)包括控制塊。
10.根據(jù)權(quán)利要求9的方法,其特征在于,控制塊包括多個(gè)字節(jié)的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9的方法,其特征在于,該控制塊包括基于網(wǎng)絡(luò)處理器接收的信元或幀的信息。
12.根據(jù)權(quán)利要求9的方法,其特征在于,該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分包括該控制塊的一個(gè)或多個(gè)字節(jié)。
13.根據(jù)權(quán)利要求1的方法,其特征在于,在硬件更新操作期間,當(dāng)由硬件訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入該硬件更新列表中包括在該硬件操作期間,當(dāng)由硬件從存儲(chǔ)器中讀取該控制結(jié)構(gòu)的一個(gè)或多個(gè)指針,進(jìn)行更改,并將其寫回到該存儲(chǔ)器中時(shí),將該控制結(jié)構(gòu)的指針寫入該硬件更新列表中。
14.根據(jù)權(quán)利要求1的方法,其特征在于,延遲該軟件訪問包括監(jiān)視總線,以至少得到控制信號(hào)和地址之一。
15.根據(jù)權(quán)利要求14的方法,其特征在于,延遲該軟件訪問包括當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),拒絕對(duì)總線進(jìn)行軟件訪問。
16.根據(jù)權(quán)利要求14的方法,其特征在于,延遲該軟件訪問包括同意對(duì)軟件訪問請(qǐng)求;和當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),延遲該軟件訪問。
17.根據(jù)權(quán)利要求1的方法,其特征在于,當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問包括延遲由在網(wǎng)絡(luò)處理器的處理器上執(zhí)行的指令引起的軟件訪問。
18.根據(jù)權(quán)利要求1的方法,其特征在于,當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問包括當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),延遲由軟件對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分執(zhí)行的讀取、更改和寫入操作中的至少一個(gè)。
19.一種設(shè)備,包括硬件更新邏輯,適配為與網(wǎng)絡(luò)處理器的存儲(chǔ)器控制器耦接,并適配為與至少一個(gè)存儲(chǔ)器相互作用以使得在硬件更新操作期間,由該硬件更新邏輯訪問該至少一個(gè)存儲(chǔ)器中存儲(chǔ)的控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
20.根據(jù)權(quán)利要求19的設(shè)備,其特征在于,該硬件更新邏輯還適配為在該硬件更新操作期間由該硬件更新邏輯訪問的控制結(jié)構(gòu)的一個(gè)或多個(gè)部分不再由該硬件訪問之后,從該硬件更新列表中去除該控制結(jié)構(gòu)的指針。
21.根據(jù)權(quán)利要求19的設(shè)備,其特征在于,該硬件更新邏輯適配為通過采用該存儲(chǔ)器控制器監(jiān)視總線上的控制信號(hào)和地址的至少之一,來檢測(cè)該軟件訪問。
22.根據(jù)權(quán)利要求20的設(shè)備,其特征在于,該硬件更新邏輯適配為通過采用該存儲(chǔ)器控制器,在該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),拒絕對(duì)總線進(jìn)行軟件訪問,來延遲該軟件訪問。
23.根據(jù)權(quán)利要求20的設(shè)備,其特征在于,該硬件更新邏輯適配為通過采用該存儲(chǔ)器控制器進(jìn)行以下操作以延遲該軟件訪問同意對(duì)軟件訪問的請(qǐng)求;和當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表上時(shí),延遲該軟件訪問。
24.一種網(wǎng)絡(luò)處理器系統(tǒng),包括適配為存儲(chǔ)多個(gè)控制結(jié)構(gòu)的至少一個(gè)存儲(chǔ)器;網(wǎng)絡(luò)處理器,該網(wǎng)絡(luò)處理器包括與該至少一個(gè)存儲(chǔ)器耦接的存儲(chǔ)器控制器;硬件更新邏輯,與該存儲(chǔ)器控制器耦接,并適配為與該至少一個(gè)存儲(chǔ)器相互作用以使得在硬件更新操作期間,由該硬件更新邏輯訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。
25.根據(jù)權(quán)利要求24的網(wǎng)絡(luò)處理器系統(tǒng),其特征在于,該硬件更新邏輯還適配為在該硬件更新操作期間由該硬件更新邏輯訪問的控制結(jié)構(gòu)的一個(gè)或多個(gè)部分不再由該硬件訪問之后,從硬件更新列表中去除該控制結(jié)構(gòu)的指針。
26.根據(jù)權(quán)利要求24的網(wǎng)絡(luò)處理器系統(tǒng),其特征在于,該硬件更新邏輯適配為通過采用該存儲(chǔ)器控制器監(jiān)視總線上的控制信號(hào)和地址的至少之一,來檢測(cè)該軟件訪問。
27.根據(jù)權(quán)利要求24的網(wǎng)絡(luò)處理器系統(tǒng),其特征在于,該存儲(chǔ)器控制器包括該硬件更新邏輯。
28.根據(jù)權(quán)利要求27的網(wǎng)絡(luò)處理器系統(tǒng),其特征在于,該硬件更新邏輯包括片內(nèi)存儲(chǔ)器。
29.根據(jù)權(quán)利要求24的網(wǎng)絡(luò)處理器系統(tǒng),還包括利用內(nèi)部總線與該存儲(chǔ)器控制器耦接的多個(gè)處理器。
30.根據(jù)權(quán)利要求24的網(wǎng)絡(luò)處理器系統(tǒng),其特征在于,該至少一個(gè)存儲(chǔ)器包括DRAM。
全文摘要
在第一方面,提供了一種維護(hù)控制結(jié)構(gòu)一致性的方法。該方法包括以下步驟(1)在硬件更新操作期間,由硬件訪問控制結(jié)構(gòu)的一個(gè)或多個(gè)部分時(shí),將該控制結(jié)構(gòu)的指針寫入硬件更新列表中;和(2)當(dāng)該控制結(jié)構(gòu)的指針在該硬件更新列表中時(shí),在軟件更新操作期間,延遲對(duì)該控制結(jié)構(gòu)的一個(gè)或多個(gè)部分的軟件訪問。還提供了許多其它方面。
文檔編號(hào)H04L12/24GK1584855SQ20041004538
公開日2005年2月23日 申請(qǐng)日期2004年5月21日 優(yōu)先權(quán)日2003年8月21日
發(fā)明者保羅·A·甘菲爾德, 克里·C·伊明, 約翰·D·艾里什 申請(qǐng)人:國際商業(yè)機(jī)器公司