專利名稱:有效的分組處理流水線裝置和方法
技術領域:
本發明涉及電信網絡,具體地說,涉及分組交換電信網絡,更具體地說,涉及其中所用的網元和通信模塊,以及例如在網絡節點上操作所述網元和通信模塊以處理分組的方法。
現有技術以確定和靈活的方式處理以高速率到達例如電信網絡節點的分組,優選這樣的體系結構在考慮靈活的處理單元如處理器內核的同時,將處理分組的特殊性納入考慮。分組處理的理想屬性是處理分組過程中固有的并行性、數據平面和控制平面(單個處理線程可在其上停止)兩者中的高I/O(輸入/輸出)要求以及需要盡可能有效地加以使用的極小周期預算。并行處理對于高吞吐量的分組交換電信網絡中的分組處理是有利的,可提高處理能力。
雖然處理可并行執行,但某些需要訪問的資源卻不無備份。這導致不止一個處理單元希望訪問此類資源。例如數據庫等共享資源是可由多個處理單元訪問的一個資源。每個處理單元可執行單獨的任務,該任務不同于任何其它處理單元執行的任務。作為任務的一部分,訪問共享資源可能是必需的,例如,訪問數據庫以獲得相關的內聯數據。嘗試使吞吐量最大時,訪問處理單元的共享資源通常具有長的等待時間。如果處理單元在從共享資源收到應答前暫停操作,則效率變得很低。而且,需要大存儲空間的資源一般不在芯片上,因此,訪問和檢索時間相當大。
傳統上,對具有例如處理器內核的處理單元上的處理進行優化會涉及上下文切換,即,暫停一個線程,并將存儲在寄存器中的所有當前數據保存到存儲器中,這樣,以后在從共享資源收到應答時,可重新創建相同的上下文。然而,上下文切換占用大量的處理器資源,或者在只為此任務分配了少量處理器資源時占用大量的時間。
本發明的目的是提供一種分組處理單元和以提高的效率操作所述單元的一種方法。
本發明的又一目的是提供一種分組處理單元和操作所述單元的一種方法,通過本發明,上下文切換具有低處理時間開銷和/或低處理資源分配。
本發明的又一目的是提供一種高效的分組處理單元和使用并行處理操作所述單元的方法。
發明概述本發明解決了此問題,并在保持簡單的編程模型的同時取得了很高的效率,而同時在處理單元上不需要代價很高的多線程處理并可以調整處理單元以適應某個特殊功能。本發明部分依賴于如下事實對于上下文切換,當分組交換電信網絡的網元中發起共享資源請求時,通常存在用途很少的上下文,或者可以通過明智的任務編程將有用的上下文降到最少。切換以處理另一分組并不一定要求保存處理單元的完整狀態。明智的編程可包括將要在每個處理單元上運行的程序組織為函數調用序列,每次調用在處理單元上運行時具有上下文,但除了在分組本身中的數據外,不需要函數間調用。
因此,本發明提供了一種在分組交換網絡所用分組處理設備中處理數據分組的方法,所述分組處理設備包括多條并行流水線,每條流水線包括用于處理一個數據分組的一部分的至少一個處理單元;所述方法還包括將每個處理單元執行的所述任務組織成多個函數,這樣,實質上只存在函數調用而無函數間調用,并且在一個處理單元的所述函數調用所調用的每個函數終止時,唯一的上下文是第一數據部分。
本發明提供了在分組交換網絡中使用的分組處理設備,所述分組處理設備包括用于在所述分組處理設備中接收分組的裝置;用于將管理信息添加到所述分組的至少第一數據部分中的裝置,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;多條并行流水線,每條流水線包括至少一個處理單元,并且所述至少一個處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
本發明還提供了在分組處理設備中使用的通信模塊,所述通信模塊包括用于在所述通信模塊中接收分組的裝置;用于將管理信息添加到所述分組的至少第一數據部分中的裝置,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;多條并行通信流水線,每條通信流水線與至少一個處理單元一起使用;以及用于存儲所述第一數據部分的存儲裝置。
本發明還提供了在分組交換網絡所用分組處理設備中處理數據分組的方法,所述分組處理設備包括多條并行流水線,每條流水線包括至少一個處理單元;所述方法包括將管理信息添加到所述分組的至少第一數據部分中,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;以及所述至少一個處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
本發明還提供了在分組交換網絡中使用的分組處理設備,所述分組處理設備包括用于在所述分組處理設備中接收分組的裝置;用于將所述分組處理設備接收的每個分組分割成第一數據部分和第二數據部分的模塊;用于處理所述至少第一數據部分的裝置;以及重新組合所述第一和第二數據部分的裝置。
本發明還提供了在分組交換網絡所用分組處理設備中處理數據分組的方法,所述包括將所述分組處理設備接收的每個分組分割成第一數據部分和第二數據部分;處理所述至少第一數據部分;以及重新組合所述第一和第二數據部分。
本發明還提供了在分組交換網絡中使用的分組處理設備,所述分組處理設備包括用于在所述分組處理設備中接收分組的裝置;多條并行流水線,每條流水線包括至少一個處理單元、通過雙端口存儲單元鏈接到所述至少一個處理單元的通信引擎,其中一個端口連接到所述通信引擎,而另一端口連接到所述處理單元。
本發明還提供了在分組處理設備中使用的通信模塊,所述通信模塊包括用于在所述通信模塊中接收分組的裝置;多條并行通信流水線,每條通信流水線包括與處理單元通信以便處理分組的至少一個通信引擎和雙端口存儲單元,所述雙端口存儲單元的一個端口連接到所述通信引擎。
本發明還提供了在分組交換網絡中使用的分組處理單元,所述分組處理單元包括用于在所述分組處理單元中接收數據分組的裝置;多條并行流水線,每條流水線包括用于對數據分組的至少一部分執行某種過程的至少一個處理單元、連接到所述處理單元的通信引擎以及至少一個共享資源,其中所述通信引擎適于從所述處理單元接收共享資源請求,并將它發送到所述共享資源。所述通信引擎還適于從所述共享資源接收應答。
本發明還提供了配合分組處理單元使用的通信模塊,所述通信模塊包括用于在所述通信模塊中接收數據分組的裝置;多條并行流水線,每條流水線包括至少一個通信引擎以及至少一個共享資源,所述通信引擎具有用于連接到處理單元的裝置,其中所述通信引擎適于接收共享資源請求,并將它發送到所述共享資源,以及從所述共享資源接收應答并將它發送到所述連接裝置以便連接到所述處理單元。
現在將參照如下附圖描述本發明。
附圖簡述
圖1a和1b顯示了根據本發明實施例的分組處理路徑;
圖2a和2b顯示了根據本發明實施例的分組調度操作;圖3顯示了根據本發明實話例的一條流水線細節;圖4a顯示了與根據本發明實施例的處理單元相關聯的FIFO存儲器中報頭的位置;圖4b顯示了根據本發明實施例的報頭;圖5顯示了根據本發明實施例的處理單元;圖6顯示了根據本發明實施例如何通過流水線處理分組;圖7顯示了根據本發明實施例,傳送期間的分組重新對齊;圖8顯示了根據本發明實施例的通信引擎;圖9顯示了根據本發明實施例,用于控制緩沖區中報頭隊列的指針排列;圖10顯示了根據本發明又一實施例的共享資源布置;圖11顯示了根據本發明處理分組報頭(packet head)的流程圖。
說明性實施例的詳細說明下面將參照某些實施例和附圖描述本發明,但本發明并不限于此。本領域的技術人員會理解,本發明在并行處理領域和/或電信網絡,特別是分組交換電信網絡的分組處理中具有廣泛應用。
本發明的一個方面是可在分組處理設備中用于分組標題處理的分組處理通信模塊。分組處理設備由多條處理流水線組成,而每條流水線由若干處理單元組成。處理單元包括處理部件,例如處理器和相關聯的存儲器。處理器可以是微處理器,或者可以是可編程數字邏輯單元,例如可編程陣列邏輯(PAL)、可編程邏輯陣列(PLA)、可編程門陣列,特別是現場可編程邏輯陣列。分組處理通信模塊包括流水式通信引擎,該通信引擎提供適用于處理單元的非本地通信功能。為了形成完整的分組處理設備,將處理器內核和可選的其它處理功能塊安裝在分組處理通信模塊上。處理器內核無需具有內置的本地硬件上下文切換功能。
在下述內容中,將主要針對完整的分組處理設備描述本發明,但應理解,與根據本發明的分組處理通信模塊一起使用的處理器內核類型和尺寸不一定限制本發明,并且通信模塊(無處理器)也是本發明的一個獨立方面。
本發明的一個方面是優化的軟件/硬件劃分。例如,處理單元最好與負責非本地通信,稱為通信引擎的硬件塊相組合。該硬件塊可以常規方式實現,例如,實現為邏輯陣列如門陣列。然而,本發明還可通過替代裝置來實現,例如,通信引擎可實現為可配置塊,如可通過使用可編程數字邏輯單元,如可編陣列邏輯(PAL)、可編程邏輯陣列(PLA)、可編程門陣列,特別是現場可編程邏輯陣列獲得的可配置塊。具體地說,為了盡快地提供產品,本發明包括了兩代或更多代的智能設計策略,由此第一代中使用的可編程裝置在后續代中為專用硬件塊所替代。
硬件塊最好用于協議無關的功能。對于協議相關的功能,最好采用協議改變時允許重新配置和重新設計的軟件塊。例如,微處理器對此類應用有利。
根據本發明實施例的完整分組處理設備10包括安裝有處理器的分組處理通信模塊。處理設備10具有如圖1a所示,由多條并行處理流水線4、5、6組成的分組處理路徑。流水線的數量取決于要實現的處理能力。如圖1b所示,處理路徑包括用于從例如電信網絡1接收分組并將分組分發到一條或多條并行處理流水線4、5、6的調度單元2。電信網絡1可以是任何分組交換網絡,例如,陸線或移動無線電電信網絡。每個接收分組包括標題和有效負荷。每條流水線4、5、6包括多個處理單元4b...e、5b...e、6b...e。這些處理單元適于處理至少分組的標題。分組處理單元4b...e、5b...r、6b...e可與諸如數據庫等太大(或昂貴)而無法為每個處理單元(例如,路由表)復制的若干其它電路部件連接。同樣地,一些信息需要由多條流水線更新或采樣(例如,統計信息或管制信息)。因此,可添加處理單元可以與其通信的多個所謂的共享資源SR1-SR4。根據本發明的一個方面,提供了特定的通信基礎結構以便處理單元與共享資源通信。由于共享資源可以遠離處理單元,并且由于它們處理多個處理器的請求,因此,請求與應答之間的等待時間會很長。具體地說,處理單元4b...e、5b...e、6b...e中的至少一個單元可以經單條總線8a、8b、8c、8d、8e和8f訪問一個或多個共享資源,例如,處理單元4b、5b、6b經總線8a訪問SR1,處理單元4b、5b、6b和4c、5c、6c以及4e、5e、6e分別經總線8b、8c和8d訪問SR2。總線8可以是任何適用的總線,并且該總線的形式不視為對本發明的限制。入口分組緩沖區4a、5a、6a和/或出口分組緩沖區4f、5f、6f可分別設在處理流水線之前和/或之后。分組緩沖區的一個功能可以是適應數據路徑帶寬。分組緩沖區的主要任務是將主數據路徑通信帶寬從網絡1轉換到流水線通信帶寬。除此之外,分組緩沖區中可提供一些其它功能,如開銷插入/去除和任務查找。分組緩沖區最好能夠緩沖單個報頭(它包括至少分組標題)。它確保在接收和發送側上對與一個報頭一樣大的突發的線速數據傳送。
如圖1a中所示,例如從通信網絡1傳來的輸入分組被分割和序號分配裝置分割成報頭和尾部,該裝置最好在調度單元2中實施。報頭包括分組標題,而尾部包括至少部分分組有效負荷。報頭饋入流水線4-6之一,而有效負荷存儲(緩沖)到合適的存儲裝置9如FIFO中。在處理后,報頭和有效負荷在重組單元3中重新組合(分組合并),然后輸出,例如,在通過網絡1發送到另一節點前,可以在其中進行緩沖。
通常,一個或多個共享資源SR1-4可用于處理路徑,為流水線中的處理單元處理特定的任務。例如,這些共享資源可以是使用芯片外資源中存儲的數據結構的專用查找引擎,或者是用于需要訪問共享信息的專用功能的專用硬件。本發明在如下情形中對于提高效率特別有利如果每個處理單元暫停直至相關共享資源作出響應,而這些要用于處理系統中的共享資源引擎響應請求的等待時間很長,這種等待時間導致流水線處理單元效率下降。可用于本發明的典型共享資源是IP轉發表、MPLS轉發表、管制數據庫、統計信息數據庫。例如,由共享資源輔助的流水線結構執行的功能可以為·IPv4/IPv6標題分析和轉發·多字段分類·MPLS標簽分析與交換·IPinIP或GRE隧道端接·MPLS隧道端接·IPinIP或GRE隧道封裝·MPLS隧道封裝·計量與統計信息收集·ECMP和中繼支持·QoS模型支持為此,流水線結構可由以下共享資源輔助·32位或128位最長前綴匹配單元·TCAM分類裝置·芯片外DRAM、芯片外SRAM、芯片上SRAM·6B或18B精確匹配單元·32位或128位源濾波器(最長前綴匹配單元)·計量單元使用共享資源的一個方面是在等待對發送到共享資源的請求的應答時處理單元的停止時間。為使處理單元放棄一個當前待處理的任務,切換到另一任務,然后返回第一個任務,通常是提供上下文切換,即存儲處理器單元寄存器的內容。本發明的一個方面是采用硬件加速上下文切換。這也允許處理器內核用于自身未配備硬件切換功能的處理單元。此硬件最好在每個處理節點提供,例如,以通信引擎的形式提供。每個處理單元維護要處理的分組池。在發出共享資源請求時,相關處理單元的處理裝置將上下文切換到另一分組,直至已收到該請求的應答。本發明的一個方面是利用分組處理并行性,這樣,可以盡可能高的效率使用處理單元,進行有用的處理,從而避免等待I/O(輸出/輸出)操作完成。例如,這些I/O操作是請求共享資源或者將分組信息拷貝到處理單元內或從中拷貝出。本發明部分依賴于如下事實當分組交換電信網絡的網元中發起共享資源請求時,通常存在用途很少的上下文,或者可以通過明智的任務編程將有用的上下文降到最少。切換以處理另一分組并不一定要求保存處理單元的完整狀態。明智的編程可包括將要在每個處理單元上運行的程序組織為函數調用序列,每次調用在處理單元上運行時具有上下文,但不需要函數間調用。例外是分組本身或分組的一部分中數據提供的上下文。
回到圖1a和1b及分割裝置15,報頭的大小經過選擇,以便它包含與分組一起接收的所有相關標題。例如,這可以通過在分組的固定點進行分割來完成(在所支持的最大尺寸的標題后)。這會導致一些有效負荷被分割到報頭中。由于通常不處理有效負荷,因此這一般不會有問題。然而,本發明包括了處理有效負荷的可能性,例如,用于網絡速率控制。在分組數據包含可多重分解的數據時,在允許的情況下,視節點的網絡轉發帶寬而定,網絡可將數據截斷,從而具有更低的分解度。為處理此類情況,本發明在其范圍內包括了更精確的分組評估,以識別標題和有效負荷,并在其結合處干凈地將它們分割。分離的報頭(或標題)饋入處理流水線,而尾部(或有效負荷)則加以緩沖(及采用未顯示的其它處理單元加以任意處理)并在處理后重新附加到(修改的)報頭。
在分割后,接著將報頭提供給一條處理流水線,而將尾部存儲在諸如FIFO9的存儲器中。每個分組最好由序號分配模塊15分配一個序號。隨后將此序號復制到報頭及每個分組的尾部中并予以存儲。所述序號具有如下三個用途
·在流水線末重新裝配(修改后)報頭與尾部·需要時刪除報頭及其對應的尾部·需要時保持分組的特定順序序號可由分組分割和序號分配裝置15中包括的計數器生成。序計數器隨每個輸入分組遞增。這樣,序號可用于在流水線末以特定順序放置分組。
開銷生成器設置在分組調度器2中,或者最好設置在分組緩沖區4a、5a、6a中,以便為每個報頭和/或尾部生成新的/附加的開銷。在生成完整的報頭后,可將報頭發送到具有可用緩沖空間的流水線4-6之一。尾部發送到尾部FIFO9。
根據本發明的實施例,增加的開銷包括在報頭和/或尾部中的管理數據。圖2a中示意性地顯示了處理流程。在尾部,新的開銷最好包含序號和長度,即有效負荷的長度,并可選地包括對用于處理對應報頭的流水線的引用。在報頭中,增加的開銷最好包括報頭管理字段(HAF)和存儲由分組處理流水線生成的結果和狀態的區域。因此,報頭可包括結果存儲、狀態存儲和管理數據存儲。HAF可包含報頭長度、偏移、序號和執行FIFO維護和報頭選擇所必需的多個字段。
圖2b顯示了對處理設備內的分組執行的另一組操作。可在由流水線處理的每個報頭前面加上可用于存儲中間結果的臨時暫存區。它也可用于構建分組描述符,分組描述符可由分組處理單元的下游處理裝置使用。如圖2b所示,每條流水線開始處的分組緩沖區4a、5a、6a可將此臨時暫存區添加到分組報頭中。在末端的分組緩沖區4f、5f、6f可刪除它(至少部分刪除)。分組進入分組處理單元時,標題包含定義分組協議的一些鏈路層信息。這要由分組處理單元轉換成指向要對分組執行的第一個任務的指針。此查找操作可由入口分組緩沖區4a、5a、6a執行。
本發明的一個方面是,報頭在流水線中時包括要由當前和/或下一處理單元執行的任務引用。這樣,處理器單元上下文的一部分存儲在報頭中。也就是說,報頭中HAF的當前版本等效于處理狀態,包括要對該報頭執行的下一過程的指示。報頭本身還可存儲內聯數據,例如,變量的中間值可存儲在臨時暫存區中。為處理單元提供其上下文所必需的所有信息因此存儲在報頭中。報頭沿流水線下移時,上下文以存儲在報頭相關部分,如HAF、臨時暫存區中的數據的形式隨報頭一起移動。因此,本發明的一個創新方面是上下文隨分組一起移動,而不是上下文相對于某個處理器不動。
分組重組模塊3重新組合從處理流水線4-6傳來的分組報頭和從尾部FIFO9傳來的對應尾部。分組網絡可劃分割成可在每個節點上對每個分組進行獨立路由的網絡(數據報網絡)和其中建立了虛擬電路并且源與目的地之間的分組使用這些虛擬電路之一的網絡。因此,視網絡而定,對分組排序可能有不同的要求。重組模塊3確保分組以它們的到達順序離開,或以所需的任何其它順序離開。分組重組模塊3具有跟蹤發送的最后分組的序號的裝置。它搜索不同處理流水線的輸出以查找具有可發送序號的報頭,以及搜索FIFO9的末端以查看可用于傳輸的尾部,例如,下一序號。為簡化操作,最好是在流水線中嚴格根據序號處理分組,這樣,報頭及其對應尾部在重組模塊3中同時可用。因此,最好是用于處理流水線中分組的裝置嚴格根據提供的序號操作。隨后,在適當的報頭傳播到流水線輸出后,會在重組模塊3中將其添加到對應的尾部中,該尾部最好是那時尾部FIFO9中的第一個條目。重組單元3或出口分組緩沖區4f、5f、6f從報頭中刪除剩余的HAF和其它字段。
分組必須丟棄時,處理單元具有用于在報頭中設置要丟棄報頭的指示的裝置,例如,它可以在分組開銷中設置丟棄標志。重組模塊3隨后負責丟棄此報頭和對應的尾部。
圖3示意性地顯示了根據本發明實施例的一條流水線4。分組報頭最好在受到處理單元最小干預的情況下,沿多條總線從一個處理級傳遞到另一個處理級。另外,處理單元需要能夠在傳送期間持續處理分組。每個處理單元4b...4d最好包括處理部件14b-14d和通信引擎11b-11d。通信引擎可用硬件如可配置的數字邏輯單元來實現,并且處理單元可包括可編程處理內核,但本發明不限于此。為每個處理單元4b-4d分別分配了某種專用存儲器。例如,每個處理部件的部分數據存儲器最好是雙端口存儲器,例如,雙端口RAM 7b...7d或類似存儲器。其一個端口由通信引擎11b...11d使用,另一端口連接到此處理單元的處理部件。根據本發明的一個實施例,通信引擎11b...11d在一些情況下操作存儲器7b...7d中存儲的報頭,仿佛此存儲器組織為FIFO一樣。為此,報頭可以如同在FIFO中一樣以邏輯或物理方式存儲。通過這種方式,根據報頭的到達順序將報頭壓入此存儲器和從中彈出。然而,視應用而定,通信引擎并不限于以此方式使用存儲器7b...7d,而是可以利用此存儲器的所有功能,例如,將其作為雙端口RAM使用。在處理報頭時保持報頭之間先入先出關系的優點是分組輸入順序將自動保持,從而產生相同的輸出分組順序。然而,本發明并不限于此,而是包括可由通信引擎以隨機方式訪問的數據存儲器。
通信引擎彼此之間進行通信以傳送報頭。因此,在每個通信引擎準備接收新數據時,將就緒信號發送到前一通信引擎或其它以前的電路部件。
根據如圖4a所示的本發明實施例,從RAM 7b...7d的輸入端口到輸出端口,設置了三個存儲器區域一個包含已處理并準備發送到下一級的報頭,另一個包含正在處理的報頭,第三個區域包含已部分接收但尚未準備處理的報頭。RAM 7b...7d被分割成多個大小相等的緩沖區37a-h。每個緩沖區37a-h只包含一個報頭。如圖4b所示,每個報頭包含·報頭管理字段(HAF)HAF包含分組管理所需的所有信息。它一般是一個64位字長。各緩沖區37a-h均具有存儲HAF數據的裝置。
·臨時暫存區用作高速暫存存儲器的可選區域,在處理器之間傳遞分組狀態,或構建將離開系統的分組描述符。各緩沖區37a-h最好均具有在臨時暫存區存儲數據的裝置。
·分組開銷要從發組刪除(去封裝)或要添加到分組(封裝)中的開銷。各緩沖區37a-h最好均具有存儲分組開銷的裝置。
·報頭分組數據分組的實際報頭數據。各緩沖區37a-h最好均具有存儲報頭分組數據的裝置。
·共享資源請求除分組外,每個緩沖區在緩沖區末端為共享資源請求提供了一定空間。各緩沖區37a-h最好均具有存儲共享資源請求的裝置。
HAF包含分組信息(長度)和處理狀態以及包含“層2”(存在時)的部分信息(例如,至少為指示物理接口類型的代碼和“層3”協議號)。
根據本發明實施例的通信模塊可包括調度單元2、分組重組單元3、存儲器9、通信引擎11b...d、雙端口RAM 7b-d、可選的分組緩沖區以及到處理單元和共享資源的適當連接點。當通信模塊配備了相應的處理單元時,就形成了有效的分組處理設備。
圖5示意性地顯示了根據本發明實施例的處理單元。處理單元4b包括處理部件14b、最好實現為雙端口RAM的報頭緩沖存儲器7b、程序存儲器12b和通信引擎11b。可提供用于處理部件的本地存儲器13b。程序存儲器12b經指令總線連接到處理部件14b,并用于存儲在處理部件14b上運行的程序。緩沖存儲器7b通過數據總線17b連接到處理部件14b。通信引擎11b經監控總線18b監控數據總線,以檢測從處理部件到緩沖區之一中的任一HAF的寫入訪問。這允許通信引擎11b監視并更新其內部寄存器中每個緩沖區的狀態。通信引擎11b通過數據存儲器總線19b連接到緩沖存儲器7b。可選地,一個或多個處理塊(未顯示)可與處理部件14b包括在一起,例如,與諸如加密塊的協處理裝置包括在一起,以便降低處理部件14b的負荷,用以執行重復性的數據密集型任務。
使用處理內核如美國加州圣克拉拉Tensilica的Xtensa內核,可有效地實現根據本發明的處理部件14b。帶有專用硬件指令以加速將映射到此處理部件上的功能的處理器內核,在靈活性與性能之間取得了很好的折衷。另外,可在這種處理器內核中添加所需的處理部件硬件支持,即,處理器內核不需要上下文切換硬件支持。處理部件14b通過系統總線20b連接到通信引擎11b-復位和中斷可通過單獨的控制總線傳送(最好如圖8中所示)。從處理部件的角度看,數據存儲器7b不是FIFO,而只是分組池,可采用多種不同的選擇算法從中選擇分組來進行處理。
根據本發明的一個方面,處理部件是同步的,使得緩沖區37a-h不會上溢或下溢。對報頭的處理在處理部件上適時完成。分組一到達就從系統中移去,因此,處理將從不會產生對額外緩沖空間的需要。因此,處理部件應該不會產生緩沖區溢出。處理分組只可在足夠的數據可用時開始。在無報頭適合處理時,硬件(通信引擎)暫停處理部件。RAM 7b...7d提供緩沖存儲空間,并允許處理部件與流水線的處理步調無耦合。
每個處理部件可決定丟棄分組或剝離報頭的一部分或將某些內容添加到報頭中。為丟棄報頭,處理單元只需在HAF中將丟棄標志置位。這將產生兩種效果報頭將不再適合進行處理,并且只有該HAF將被傳送到下一級。分組重組器3收到丟棄比特已置位的報頭時,它會丟棄對應的尾部。
HAF具有指示第一相關字節位置的偏移字段。在輸入分組中,這將始終等于零。為從一開始就剝離報頭的一部分,處理部件使偏移標志指向要剝離部分后的第一字節。通信引擎將刪除要剝離的部分,將數據重新與字邊界對齊,更新HAF中的長度字段,并使偏移字段為零。圖7中顯示了這種情況。此過程的優點是通信引擎要讀取的下一狀態始終位于HAF的確定部分,因此,通信引擎(及處理部件)可配置為訪問HAF中的同一位置以獲得必需的狀態信息。而且,可在HAF中插入更多具有負偏移值的空間。這種空間插入HAF前端。
調度單元2可通過將非零值寫入標記寄存器發出標記命令。此值將分配給下一輸入分組,即,放在報頭中。重組單元3發出針對此分組的命令時(此時報頭完全得到處理),標記值可導致中斷產生。對分組進行標記的一個時機是在執行表更新時。可能必需知道在某個時刻前接收的所有分組離開流水線的時間。此類分組需要利用舊表數據進行處理。新的分組要利用新表數據進行處理。由于分組順序通過流水線后保持不變,因此,這可以通過標記輸入分組而實現。在不持分組順序的處理設備中,可將時間戳添加到每個報頭中而不是將一個標記添加到一個報頭中。隨后,每個報頭根據其時間戳進行處理。這涉及在重疊時段存儲兩種版本的表信息。
每個處理部件可訪問多個共享資源,例如,用于諸如查找、管制和統計信息等多種任務的共享資源。此訪問是通過與每個處理部件相關聯的通信引擎來進行的。提供了多條總線8a-f,以便將通信引擎連接到共享資源。相同的總線8a-f用于傳送請求及應答。例如,每個通信引擎11b經共享資源總線接口24b(SRBI-參見圖8)連接到這樣的一條總線8。通信引擎和數據存儲器7b可經配置總線21配置。
通信引擎11b最好是處理部件與除其本地存儲器13b以外的資源進行通信的唯一途徑。通信引擎11b由主處理部件14b經控制接口控制。通信引擎11b的主要任務是將分組從一條流水線級傳送到下一流水線級。除此之外,它實施上下文切換并與主處理部件14b和共享資源通信。
通信引擎11b具有連接到流水線的前一電路部件的接收接口22b(Rx)和連接到流水線中下一電路部件的發送接口23b(Tx)。要處理的報頭從一個處理單元經通信引擎和TX與RX接口22b、23b傳送到另一處理單元。如果不會在特定的處理單元中處理報頭,則可以為它配備隧道字段,此字段定義要忽略的處理單元數量。
同時進行接收和發送的通信引擎11b的每個發送/接收接口22b、23b只可以在不到50%的時鐘周期內訪問數據存儲器7。這意味著兩個處理級之間的有效帶寬小于總線帶寬的一半。只要流水線數量大于2,則這是足夠的。然而,第一流水線級必須能夠在新分組報頭進入流水線時以全總線速度接收突發。同樣地,最后的流水線級必須能夠以全總線速度產生分組。入口分組緩沖區4a、5a、6a負責均衡這些突發。入口分組緩沖區以總線速度接收一個分組報頭,然后以其自己的速度將它發送到第一個處理器級。在此期間,不能接收新分組報頭。出口分組緩沖區4f、5f、6f從最后的處理器級接收分組報頭。接收后,它以總線速度將報頭發送到分組重組單元3。入口分組緩沖區還可以具有兩個額外任務·添加分組開銷。
·將接收的分組報頭中的接口類型/協議代碼轉換成指向第一任務的指針。分組“層2”封裝包含協議字段,識別“層3”協議。然而,此字段的意義取決于“層2”協議。協議字段對(“層2”協議、“層3”協議)需要轉換成指針,該指針指向要對該分組執行的第一任務。
出口分組緩沖區還有一個額外任務·刪除分組開銷(的一部分)。
根據本發明,包括了多個硬件擴展以協助FIFO管理。
·FIFO地址偏移。知道當前正在處理的報頭的FIFO位置后,處理部件可以修改讀寫地址,使分組看似位于固定地址。
·自動報頭選擇。在收到處理引擎的簡單請求后,由專用硬件選擇可處理的報頭。
·通信引擎選擇了新報頭時,處理單元可以使用單次讀訪問獲得必需的信息。此信息要分割成不同的目標寄存器(FIFO位置、報頭長度、協議等)。
如上所述,在本發明的一個方面中,可提供諸如通信引擎的硬件,以支持很簡單的多任務方案。“上下文切換”在例如處理單元上運行的過程必須等待共享資源的應答,或者報頭準備傳遞到下一級時完成。硬件負責基于HAF選擇準備要處理的報頭。分組經簡單的就緒/可用協議或任何其它適當協議從一級傳送到另一級。只傳送包含相關數據的緩沖區部分。為此,將報頭修改為包含引導報頭處理所必需的信息。根據本發明的實施例,將分組處理分割成多個任務。每個任務通常處理請求的響應并生成新請求。下一任務的指針存儲在報頭中。每個任務先計算,然后存儲下一任務的指針。每個分組具有一個由不同組合中的兩個比特所表示的Done(完成)和Ready(就緒)定義的狀態。它們具有以下含意·Done=0,Ready=0分組當前正在等待共享資源的響應。無法選擇它用于處理,也不可將其發送到下一處理單元的處理部件。
·Done=0,Ready=1分組可選擇用于在此處理單元上進行處理。
·Done=1,Ready=0此處理部件上的處理已完成。分組可發送到下一處理單元的處理部件。
·Done=1,Ready=1未使用從緩站器管理的角度看,包含分組的緩沖區可處于三種不同的狀態下·準備好轉到下一級(Ready4Next)·準備好被處理(Ready4Processing)·等待共享資源應答(Waiting)通信引擎維護分組狀態,例如,通過在寄存器中存儲相關狀態,并且還將處于Ready4Processing狀態下的分組提供給與其相關聯的處理器。分組在處理后處于Ready4Next或Waiting狀態。處于Ready4Next狀態時,通信引擎將分組發送到下一級。處于Waiting狀態時,該狀態將在共享資源應答到達時由通信引擎自動變為Ready4Processing或Ready4Next狀態。
通信引擎用于選擇新分組報頭。新分組報頭的選擇由處理部件觸發,例如,由系統總線上的處理器讀操作觸發。當前緩沖區指針保持在寄存器中,指示正由處理部件處理的當前分組。
圖8顯示了根據本發明一個實施例的通信引擎示意圖。通信引擎的5個主要任務可概述如下緩沖區管理1)接收端22(Rx)從前一處理節點接收分組并推送到雙端口RAM7上2)發送端23(Tx)從雙端口RAM7彈出就緒分組并發送到下一單元。
多任務(上下文切換))3)基于緩沖區狀態選擇適合處理的新分組共享資源訪問4)發送端24a(Tx)根據請求標識列表裝配共享資源請求5)接收端24b(Rx)處理返回共享資源請求的應答。
上述5個功能在圖8中已表示為4個有限態機(FSM32、33、34a、34b)和緩沖區管理器28。應理解,這是通信引擎塊的功能描述并且不一定與實際的物理單元相關。圖8中所示通信引擎的有限態機表示可通過標準處理技術在硬件塊中實現。例如,該表示可轉換成諸如Verilog或VHDL等硬件描述語言,并且隨后可從VHDL源代碼自動生成硬件塊的網表如門陣列。
由通信引擎處理的主數據結構(列在涉及最多的任務后)為
-緩沖區管理雙端口RAM的緩沖區中類FIFO的數據結構-接收報頭寫指針寄存器中存儲的寫指針-發送報頭讀指針寄存器中存儲的讀指針-多任務帶有下列狀態空(空)、傳送就緒(Ready for transfer)、處理就緒(Ready for processing)、傳送就緒掛起(Ready for tranfer pending)、處理就緒掛起(Readyfor processing pending)加等待級(等待級)之一的緩沖狀態矢量,所有狀態均存儲在緩沖區狀態寄存器中,當前緩沖寄存器中的當前緩沖區,新分組寄存器準備要由處理器處理的下一分組的HAF和緩沖區位置。
-SR(共享資源)訪問在處理期間,請求在分組緩沖區RAM中排隊-發送端(23a)維護共享資源請求FIFO,即在裝配請求時允許其它處理的緩沖區通信引擎的其它部分為-RAM的仲裁器25通信引擎的許多功能單元共享到RAM7的總線19-配置接口26和RAM7中通信引擎和緩沖區的配置字段圖。控制接口26可用于配置通信引擎,例如,寄存器和隨機存取存儲器大小。
數據存儲器7的一個端口經數據存儲器(DM)RAM接口27和總線19連接到通信引擎11。在正常操作期間,此總線19用于以到達通信引擎11的RX接口22的數據填充存儲器7中的分組緩沖區37a-h,或者將它清空到TX接口23,這兩種操作均通過RAM仲裁器25進行。仲裁器25對功能單元(FSM)SR RX 34b、SR TX 34a、下一分組選擇29、接收32、發送33之間到DM RAM7的訪問加以組織并排定優先處理順序。
每個處理器單元14可訪問用于查找、管制和統計信息的多個共享資源。提供了多條總線8,以將處理單元14連接到共享資源。同樣的總線8可用于傳送請求及應答。每個通信引擎11b經共享資源總線接口24b(SRBI)連接到此類總線。
每個通信引擎11維護多個分組緩沖區37a-h。每個緩沖區可以包含一個分組,即,具有存儲一個分組的裝置。針對分組接收與發送,將緩沖區作為FIFO處理,因此,分組順序保持不變。分組從RX接口22進入,而通過TX接口23離開。數據存儲器7中緩沖區的數量、緩沖區大小和緩沖區的起始點通過控制接口26配置。緩沖區大小始終是2的冪,并且緩沖區起始點始終為緩沖區大小的倍數。這樣,每個存儲器地址可容易地分解成緩沖區編號和緩沖區中的偏移。每個緩沖區可包含一個分組的數據。處理部件14對緩沖區的寫訪問由通信引擎11經監控總線18監控,并相應地在緩沖區狀態寄存器中更新緩沖區狀態。緩沖區管理器28在寄存器35中維護4個指針,其中兩個指針指向緩沖區,而另外兩個指向緩沖區中的特定字·接收寫指針指向接收數據時將寫入的下一字。復位后,它指向第一緩沖區的第一字。
·發送寫指針指向發送數據時將要讀取的下一字。在復位后,它指向第一緩沖區的第一個字。
·最后發送緩沖區指針指向最后發送的緩沖區,或者指向正在發送的緩沖區,即一讀取某個緩沖區的第一字,便將其更新以指向該緩沖區。復位后,它指向最后的緩沖區。
·當前緩沖區指針指向當前處理器在使用的緩沖區。相關聯的當前緩沖區有效標志指示當前緩沖區的內容是否有效。處理單元不在處理任何分組時,當前緩沖區有效會被清除。
圖9示意性地顯示了各種指針。
在緩沖區狀態寄存器30中維護對應各緩沖區的狀態。每個緩沖區處于以下5種狀態之一·空緩沖區不包含分組。
·傳送就緒緩沖區中的分組可傳送到下一處理器級。
·處理就緒緩沖區中的分組可由處理器選擇進行處理。
·ReadyForTransferWSRPending當所有共享資源請求均被發送了時,分組必須轉到傳送就緒狀態。
·ReadyForProcessingWSRPending當所有共享資源請求均被發送了時,分組必須轉到傳送就緒狀態。
除狀態外,在寄存器35中為每個緩沖區維護一個等待級。等待級不等于零表示分組在等待某一事件,既不應移交處理器,也不應發送。通常,等待級表示正在進行的共享資源請求的數量。復位后,所有緩沖區均處于空狀態。分組完整接收后,對需要加以處理的分組,將存儲分組的緩沖區狀態更新為處理就緒狀態,而對于不需要處理的分組(例如,丟棄的分組),該緩沖區則更新為傳送就緒狀態。對于任一輸入分組,緩沖區的等待級設為零。
處理分組后,處理器14通過將傳送和共享資源請求比特寫入HAF,即雙端口RAM7的相關緩沖區中,從而更新該分組的緩沖區狀態。此寫操作由通信引擎11經監控總線18進行監控。處理器14可以在沒有共享資源請求要發送時將緩沖區置于處理就緒或傳送就緒狀態,或者在有請求要發送時置于ReadyForTransferWSRPending或ReadyForProcessingWSRPending狀態。所有請求一發送,緩沖區狀態就立刻從ReadyForTransferWSRPending或ReadyForProcessingWSRPending狀態返回傳送就緒或處理就緒狀態。讀指針到達新緩沖區的開始處時,它會在讀取和發送分組前等待,直至該緩沖區進入傳送就緒狀態且等待級等于零。發送一開始,緩沖區狀態立即設為空。這保證無法再選擇分組(因為寫指針決不會越過讀指針,因此,即便緩沖區處于空狀態,也不會覆蓋未發送數據)。
只要存在空緩沖區,便可從RX接口接收輸入數據。在寫指針到達讀指針時,緩沖區為滿(由于在兩種狀態下讀指針均等于寫指針,因此需要額外的標記區分全滿與空)。
當讀指針指向緩沖區,而該緩沖區進入傳送就緒狀態且等待級為零時會觸發分組發送。首先,緩沖區狀態設為空,隨后,從RAM讀取并發送HAF和臨時暫存區。只包含要剝離開銷的字被忽略。隨后,在發送前讀取并重新對齊分組數據的其余部分,以刪除第一字中的剩余開銷字節。然而,如果分組設置了其丟棄標志,則不讀取該分組數據。分組發送后,讀指針跳到下一緩沖區的開始處。
通信引擎維護當前緩沖區指針,它指向處理部件當前處理的分組緩沖區。相關聯的有效標志指示當前緩沖區的內容有效。如果處理器不在處理分組,則有效標志設為假。有5種不同的算法可用于選擇新分組·第一分組(0)返回包含最老分組的緩沖區。
·下一分組(1)返回包含分組的當前緩沖區之后的第一緩沖區。如果無當前緩沖區,則如第一分組算法那樣工作。
·第一可處理分組(2)返回包含處于處理就緒狀態下的最老分組的緩沖區。
·下一可處理分組(3)返回包含處于處理就緒狀態下的分組的當前緩沖區之后的第一緩沖區。如果無當前緩沖區,則象第一可處理分組算法一樣工作。
·下一緩沖區(4)返回當前緩沖區之后的第一緩沖區。如果無當前緩沖區,則返回第一緩沖區。
處理器完成對一個緩沖區的處理時,它指定要對該分組執行的下一任務。這是通過在分組HAF中寫入以下字段來完成的·任務指向下一任務的指針。
·隧道如果下一任務不在此處理器或下一處理器上,則設置此字段。
·丟棄如果分組需要被丟棄則設置此字段。使任務和隧道字段無效。
·傳送如果下一任務在另一處理器上,則設置此字段;而如果下一任務在同一處理器上則將此字段清零。
·共享資源請求如果在切換到下一任務前必須完成共享資源訪問,則設置此字段。
傳送和共享資源請求比特不僅寫入存儲器,還由通信引擎經XLMI接口監控。這用于更新緩沖區狀態·共享資源請求=0,并且傳送=0處理就緒·共享資源請求=0,并且傳送=1傳送就緒·共享資源請求=1,并且傳送=0ReadyForProcessingWSRPending·共享資源請求=1,并且傳送=1ReadyForTransferWSRPending通信引擎11提供到共享資源的通用接口24。請求由標題及其后發送到共享資源的的數據塊組成。通信引擎11在SRTX 34a中生成標題,但數據必須由處理器14提供。根據要發送的數據大小和性質,可以區分三種裝配請求的方式·即時要發送的數據是請求標識的一部分。這適用于只包含少量數據的請求。針對請求的應答存儲在請求標識中偏移字段指示的位置(偏移)或默認偏移(默認)。
·存儲器要發送的數據存儲在存儲器中。請求標識包含數據的位置和大小。提供了兩種請求類型在一種類型中,數據位于分組緩沖區中(相對);而在另一種類型中,位置指向絕對存儲器地址(絕對)。偏移字段指示應答必須存儲在緩沖區中的位置。
·定序器小的定序器從所有分組收集數據,并構建請求。請求標識包含指向定序器程序開始的指針。偏移字段指示應答必須存儲在緩沖區中的位置。
共享資源請求標識可包含以下字段·請求類型如上所述確定請求的類型。
·資源要尋址的資源標識·成功比特要使用的成功比特的索引(參見下文)·命令如果置位,則表示無需對此請求作出應答。如果清零,期望有應答。
·最后標志為分組的最后請求標識而設。對于其它請求標識則清零。
·偏移緩沖區中請求的應答必須存放的位置。偏移以字節為單位,從緩沖區的起始處開始。
·結尾偏移(EndOffset)如果設置,則指示應答的結尾必須定位的位置。偏移于是指向應答后的第一字節。如果清零,則偏移指向應答的第一字節必須存放的位置。
·數據請求中要發送的數據,用于即時請求。
·地址要發送的數據所處的位置(絕對地址或相對于分組緩沖區開始處的相對地址),用于存儲器請求。
·長度要發送的字數量,用于存儲器請求。
·程序定序器要執行的程序的開始地址。
在將請求標識置于緩沖存儲器7中后,處理器通過將HAF中的共享資源請求比特置位,指示存在這些標識(這通常在為下一任務更新HAF時完成)。
處理器釋放緩沖區(通過請求新的緩沖區)時會檢查HAF中的共享資源請求比特。這可以通過評估緩沖區狀態來完成。如果已設置,則將此分組的緩沖區編號壓入小FIFO,即共享資源請求FIFO中。當此FIFO為滿時,在有新分組請求時會返回空閑任務,以避免溢出。SR TX狀態機34a(圖8)從共享資源請求FIFO彈出緩沖區編號。它隨后從最高地址開始解析緩沖區中的請求標識,直到遇到其Last比特被置位的請求標識。隨后,從FIFO中彈出下一緩沖區編號,直至再無條目可用為止。每次解析請求標識時,會將對應的請求放在一起并發送到SRBI總線24a。在設置了HAF的共享資源請求比特時,根據傳送比特的值,將對應的緩沖區狀態設為ReadyForTransferWSRPending或ReadyForProcessingWSRPending。只要緩沖區處于這些狀態之一,它就不適于發送或處理。
無論何時發送非命令請求,等待級字段值會加1。收到應答時,它會減1。所有請求發送后,緩沖區狀態設為傳送就緒(當來自ReadyForTransferWSRPending狀態時)或處理就緒(當來自ReadyForProcessingWSRPending狀態時)。此機制保證只可在不早于如下時刻發送或處理分組(采用下一可處理分組算法/第一可處理分組算法)·所有請求均已發送·已發送請求的所有應答均已到達。
應答的目的地址通過共享資源總線套接字(bus socket)解碼。匹配本地地址的應答由通信引擎經SRBI RX接口24b接收。應答標題包含必須存儲應答的緩沖區編號和偏移。基于此,通信引擎能夠計算絕對存儲器地址。應答的數據部分從SRBI總線8接收,并存儲到數據存儲器7中。當所有數據均已存儲時,可通過對可尋址緩沖區中的HAF執行讀取-修改-寫入操作,從而更新成功比特(參見下文),最后,使該緩沖區的等待級字段值減1。
一些共享資源請求可以成功或失敗狀態結束(例如,精確匹配資源將一個地址與地址列表進行比較。匹配返回標識符,不匹配返回失敗狀態)。添加裝置,以將此傳播到所涉及分組的HAF。在HAF中設置了多個比特,例如5個比特,用于捕獲不同請求的結果。因此,請求標識必需指定要使用所述5個比特中的哪一個比特。共享資源還可以置于鏈中,即第一共享資源的結果是第二共享資源的請求,并以此類推。這些共享資源中的每個共享資源可具有成功或失敗狀態,因此可能需要其自己的成功比特。重要的是要注意,在資源以失敗狀態終止時,請求鏈會中斷。這種情況下,失敗的資源直接將其應答發送到始發通信引擎。
在處理分組時,與通信引擎11相關聯的處理部件14可以通過將必需的請求標識寫入相關分組的緩沖區中而使通信引擎11發出一個或多個到共享資源的請求。例如,每個請求標識為例如單個64比特字,并將促使生成一個共享資源請求。裝配請求并將其發送到共享資源的過程最好在處理器不再處理分組時開始。分組只在從共享資源傳來的所有應答到達后才可以再次選擇以加以處理。這保證了處理器和通信引擎決不會同時修改單個緩沖區。
共享資源請求通過將請求信息連同下一操作的信息從處理部件發送到相關聯的通信引擎來調用。下一操作信息是識別需要在此分組上執行的下一操作的指針以及指示需要為該操作將分組傳送到下一處理單元的選項。接著,處理單元讀取隨后需要執行的操作的指針。此選擇由同一專用硬件如通信引擎完成,該專用硬件為與處理單元相關的處理部件控制將報頭拷貝入或拷貝出緩沖存儲器7。就此而言,通信引擎還處理來自共享資源的應答。共享資源請求最好包括對發出請求的處理部件的引用。當應答從共享資源返回時,應答包括此引用。這允許接收通信引擎將應答寫入正確位置中,即寫入其緩沖區中的相關報頭中。隨后,處理部件跳到識別出的操作。這樣,處理模型為執行的單線程模型。不需要需要保存所有處理部件狀態的高代價上下文切換,即不需要可能在時間或硬件上代價高的操作。另外,它減少了選擇此類處理部件的選項數量。執行的單線程模型實際上是如下所示的無限循環1.讀操作信息2.跳到該操作3.將對共享資源的請求格式化或者指示將分組移交下一級4.返回步驟1。
此編程模型如此嚴格定義了將對單個分組執行的后續操作以及將執行這些操作的級。它未定義在單個處理部件上執行的(操作,分組)元組的順序。該順序是由共享資源定時和等待時間決定的,并且這樣的確切行為對該編程模型是透明的。
此編程模型的嚴格定義允許在不需要包括這些定時和等待時間數字的細節的層次上驗證要對分組執行的操作的程序代碼。
本發明的又一實施例涉及如何訪問共享資源。處理單元和共享資源經多條總線連接,例如,經雙64位寬總線連接。每個節點(假設為處理單元或共享資源)具有到這些總線中的一條或多條總線的連接。總線的數量和連接到每條總線的節點數量由帶寬要求確定。每個節點最好鎖定總線,以避免長連接。這可實現高速度,但同時帶來較高的等待時間。所有節點具有相同的優先級,并且仲裁是在每個節點中以分布方式完成的。只要在總線上檢測到分組結尾,每個節點便可插入分組。插入分組時,使輸入業務停止。假定實際帶寬不太接近于可用帶寬時這種簡單仲裁就已足夠且等待時間不太重要。后者對分組處理器而言是正確的,而前者可通過適當選擇總線拓樸來實現。
共享資源可連接到如圖10所示的2位寬總線。處理單元P1到P8排列在一條總線上,并可以訪問共享資源SR1和SR2;處理單元P9到P16排列在第二條總線上,且只可以訪問SR2;處理單元P17、P19、P21、P23到P24排列在第三條總線上,且只可以訪問SR3;以及處理單元P18、P20、P22、P24排列在第四條總線上,且只可以訪問SR3。處理節點通過向共享總線上其它節點相互發送消息而與共享資源進行通信。總線上的每個節點具有唯一地址。每當總線閑置,每個節點就可以在總線上插入分組。分組的目的節點從總線取走分組。總線上提供了爭用機制以防止沖突。每個沿總線傳遞的請求由相關的共享資源選擇并加以處理,然后再將響應放置到總線上。
總線可采用環狀形式的總線而非圖10所示的總線類型,并且響應可沿環路遍歷,直至到達相關處理單元/共享資源,這時,由該處理單元/共享資源接收。
本領域的技術人員由上述內容可以理解,進入處理流水線4-6的分組會觸發一系列在該分組的處理流水線上執行的操作。操作被定義為一小段程序(假定在硬件或軟件中)代碼,這段代碼在一些時鐘周期期間在處理部件上執行,同時不與任何共享資源交互或者不與流水線中的下一處理部件通信。一個操作在收到共享資源的請求時結束,或者通過將分組移交到下一級而結束。圖6以流程圖的形式示意性地說明了這種操作、共享資源請求和顯示分組移交的序列。先從調度單元傳來分組報頭。流水線第一級處理單元的處理部件對該報頭執行操作。隨后,請求共享資源SR1。在等待應答的時間內,報頭保持在相關聯的FIFO存儲器中。在收到應答時,由同一處理部件執行第二操作。因此,在一個處理部件內,可以對同一分組執行這些操作中的幾個操作。在一個處理部件對一個報頭的處理結束時,將修改過的報頭傳送到下一級,以對其執行進一步的操作。
圖11示意性地顯示了流水線中處理單元對分組進行的處理的流程圖。如前所述,在緩沖存儲器7內,每個緩沖區可能處于下列可能的緩沖區狀態之一中空R4P處理就緒R4T傳送就緒R4PwSRPending共享資源請求發送后處理就緒R4TwSRPending共享資源請求發送后傳送就緒等待級未決共享資源請求數量HAF中的相關比特傳送共享資源請求在步驟100中,新分組報頭出現在通信引擎的接收端口,如果存儲器中存在可用(空)緩沖區位置,則接收分組報頭,可用緩沖區的狀態通過緩沖區管理器加以訪問。如果存在可用緩沖區,則報頭數據在步驟102中發送到存儲器,并在步驟104中存儲在適當的緩沖區中,即存儲在適當的存儲器位置上。在步驟106中,如果要對報頭進行處理,則由通信引擎將緩沖區狀態寄存器中的緩沖區狀態從空狀態更新為R4P(或者,對于不需要處理的分組報頭,例如要丟棄和進行隧道處理的分組報頭,更新為R4T)。隨著緩沖區中較老的分組報頭得到處理并進一步沿流水線向下發送,經過一段時間,目前的R4P分組報頭就可供選擇了。
在步驟108中,處理部件結束對前一分組報頭的處理,并向通信引擎請求下一分組報頭。下一分組選擇是在步驟110中根據緩沖區狀態寄存器中包含的緩沖區狀態來決定的。如果沒有R4P分組報頭可用,則通信引擎向處理器返回空閑應答。處理部件將再次進行相同的請求,直至得到非空閑應答。
在步驟114中,通信引擎訪問下一分組寄存器,并發送下一分組報頭位置,并且將相關聯的任務指針也發送給處理部件。為讓處理部件立即啟動,不僅在應答中提供了下一分組報頭位置,而且還給出了相關聯的任務指針。此數據是要處理的下一分組報頭的HAF的一部分,因而需要對存儲器的讀周期。因此,通信引擎在步驟112中用分組報頭位置加任務指針二元組連續更新新分組寄存器,以使此HAF讀操作在處理部件周期預算外進行。
在步驟116中,處理部件處理分組報頭并更新HAF字段“傳送”和“共享資源請求”。通信引擎監視數據總線并依據處理部件與存儲器之間的這種總線監視,在步驟118中通知緩沖區狀態管理器更新緩沖區狀態。例如,如果未發送共享資源請求,則分組報頭狀態可變為R4P或R4T,如果要發送共享資源請求,則可變為R4PwSRPending或R4TwSRPending。
在步驟120中,待決共享資源請求在處理階段后觸發SR發送狀態機,以便裝配并發送列在緩沖區末尾的共享資源請求,即請求標識列表。在步驟122中,按順序處理請求ID。間接類型請求需要從存儲器讀取。在步驟124中,對于與命令相反,期望返回應答的每個請求,相應使等待級計數器遞增。
在步驟126中,SR接收狀態機在收到SR應答時處理結果,并在步驟128中寫入存儲器,更具體地說,寫入與相應分組報頭相關聯的緩沖區位置。在步驟130中,使等待級計數器遞減。
最終,當所有請求均已發送且所有應答均已收到后,在步驟132中將分組報頭狀態設為R4P或R4T。在緩沖區中對分組報頭數據流采用了先入先出的處理方法。在步驟134中,在當前最老的分組報頭狀態變為“R4T”時,發送狀態機隨后會將此分組報頭輸出到發送端口。
根據本發明的處理流水線滿足以下要求·通信開銷很低,以滿足非常有限的周期預算·可以支持不將分組重新排序的選項·在分組標題大小保持不變、從中剝離信息或者在其中添加信息的情況下,通過流水線的報頭相應地保持相同大小、縮小或者增大;流水線始終使下一相關標題與處理器字邊界重新對齊。這使得第一標題看似在FIFO存儲器7b...7d中的固定位置上,這簡化了軟件。
·處理單元能夠讀取、剝離和修改報頭;處理單元不感興趣的項目會傳送到下一級而無需處理單元干預。因此,不會損壞標題中承載的有效負荷部分,而只是將其轉發。
·處理單元能夠丟棄分組。
處理單元是同步的。
權利要求
1.一種在分組交換網絡中使用的分組處理單元,包括用于在所述分組處理單元中接收分組的裝置;用于將管理信息添加到所述分組的至少第一數據部分中的裝置,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;多條并行流水線,每條流水線包括至少一個處理單元,以及至少一個處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
2.如權利要求1所述的分組處理單元,其特征在于還包括將所述分組處理單元接收的每個分組分割成第一數據部分和第二數據部分的模塊。
3.如權利要求1或2所述的分組處理單元,其特征在于還包括將所述修改的第一數據部分傳送到另一處理單元的裝置。
4.如權利要求3所述的分組處理單元,其特征在于所述傳送裝置只在所述管理信息指示的所述過程完成后將所述第一數據部分傳送到另一處理單元。
5.如權利要求2到4中任意一項所述的分組處理單元,其特征在于還包括臨時存儲所述第二數據部分的裝置。
6.如權利要求5所述的分組處理單元,其特征在于所述臨時存儲裝置是FIFO存儲單元。
7.如以上任一權利要求所述的分組處理單元,其特征在于還包括將所述接收分組的順序指示添加到所述第一和第二數據部分中的裝置。
8.如以上任一權利要求所述的分組處理單元,其特征在于每條流水線包括多個通信引擎,每個通信引擎鏈接到一個處理單元。
9.如權利要求8所述的分組處理單元,其特征在于每個通信引擎通過雙端口存儲單元鏈接到一個處理單元,其中一個端口連接到所述通信引擎,而另一端口連接到所述處理單元。
10.如權利要求9所述的分組處理單元,其特征在于所述雙端口存儲器相對于相連的所述通信引擎配置為FIFO。
11.如以上任一權利要求所述的分組處理單元,其特征在于還包括重新組合分組的所述第一和第二數據部分的重組單元。
12.如權利要求8到11中任意一項所述的分組處理單元,其特征在于所述通信引擎為處理單元選擇分組的第一數據部分以進行處理。
13.如權利要求8到12中任意一項所述的分組處理單元,其特征在于處理單元的共享資源請求由所述通信引擎發送到共享資源。
14.一種在分組交換網絡所用分組處理設備中處理數據分組的方法,所述分組處理單元包括多條并行流水線,每條流水線包括至少一個處理單元;所述方法包括將管理信息添加到所述分組的至少第一數據部分中,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;以及使用至少一個處理單元,對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
15.如權利要求14所述的方法,其特征在于還包括將所述分組處理單元接收的每個分組分割成第一數據部分和第二數據部分。
16.如權利要求14或15所述的方法,其特征在于還包括將所述修改的第一數據部分傳送到另一處理單元。
17.如權利要求16所述的方法,其特征在于所述傳送步驟包括只在所述管理信息指示的所述過程完成后將所述第一數據部分傳送到另一處理單元。
18.如權利要求15到17中任意一項所述的方法,其特征在于還包括臨時存儲所述第二數據部分。
19.如權利要求18所述的方法,其特征在于所述臨時步驟包括存儲在FIFO存儲單元中。
20.如權利要求15到19所述的方法,其特征在于還包括將所述接收分組的順序指示添加到所述第一和第二數據部分中。
21.如權利要求15到20中任意一項所述的方法,其特征在于還包括重新組合分組的所述第一和第二數據部分。
22.一種在分組交換網絡中使用的分組處理單元,包括在所述分組處理單元中接收分組的裝置;將所述分組處理單元接收的每個分組分割成第一數據部分和第二數據部分的模塊;處理至少所述第一數據部分的裝置;以及重新組合所述第一和第二數據部分的裝置。
23.如權利要求22所述的分組處理單元,其特征在于所述分組處理單元包括多條并行流水線,每條流水線包括至少一個處理單元;每個處理單元執行的任務組織成多個函數,以便實質上只有函數調用而無函數間調用,并且一個處理單元的所述函數調用所調用的每個函數終止時,唯一的上下文是第一數據部分。
24.如權利要求22所述的分組處理單元,其特征在于還包括用于將管理信息添加到所述分組的至少第一數據部分中的裝置,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;以及多條并行流水線,每條流水線包括至少一個處理單元,至少一個處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
25.如權利要求24所述的分組處理單元,其特征在于還包括將所述處理的第一數據部分傳送到另一處理單元的裝置。
26.如權利要求25所述的分組處理單元,其特征在于所述傳送裝置只在所述管理信息指示的所述過程完成后將所述第一數據部分傳送到另一處理單元。
27.如權利要求22到26中任意一項所述的分組處理單元,其特征在于還包括臨時存儲所述第二數據部分的裝置。
28.如權利要求27所述的分組處理單元,其特征在于所述臨時存儲裝置是FIFO存儲單元。
29.如權利要求23到28中任意一項所述的分組處理單元,其特征在于還包括將所述接收分組的順序指示添加到所述第一和第二數據部分中的裝置。
30.如權利要求23到29中任意一項所述的分組處理單元,其特征在于每條流水線包括多個通信引擎,每個通信引擎鏈接到一個處理單元。
31.如權利要求30所述的分組處理單元,其特征在于每個通信引擎通過雙端口存儲單元鏈接到一個處理單元,其中一個端口連接到所述通信引擎,而另一端口連接到所述處理單元。
32.如權利要求31所述的分組處理單元,其特征在于所述雙端口存儲器相對于相連的所述通信引擎配置為FIFO。
33.一種在分組交換網絡所用分組處理設備中處理數據分組的方法,包括將所述分組處理單元接收的每個分組分割成第一數據部分和第二數據部分;處理所述至少第一數據部分;以及重新組合所述第一和第二數據部分。
34.如權利要求33所述的方法,其特征在于所述分組處理單元包括多條并行流水線,每條流水線包括至少一個處理單元;所述方法還包括將每個處理單元執行的任務組織成多個函數,以便實質上只有函數調用而無函數間調用,并且一個處理單元的所述函數調用所調用的每個函數終止時,唯一的上下文是第一數據部分。
35.如權利要求33所述的方法,其特征在于所述分組處理單元包括多條并行流水線,每條流水線包括至少一個處理單元;所述方法還包括將管理信息添加到所述分組的至少第一數據部分中,所述管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;以及至少一個處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。
36.如權利要求35所述的方法,其特征在于將所述處理的第一數據部分傳送到另一處理單元。
37.如權利要求36所述的方法,其特征在于所述傳送步驟包括只在所述管理信息指示的所述過程完成后將所述第一數據部分傳送到另一處理單元。
38.如權利要求33到37中任意一項所述的方法,其特征在于還包括臨時存儲所述第二數據部分。
39.如權利要求38所述的方法,其特征在于所述臨時步驟包括存儲在FIFO存儲單元中。
40.如權利要求33到39所述的方法,其特征在于還包括將所述接收分組的順序指示添加到所述第一和第二數據部分中。
41.一種在分組交換網絡中使用的分組處理單元,包括用于在所述分組處理單元中接收分組的裝置;多條并行流水線,每條流水線包括至少一個處理單元、通過雙端口存儲單元鏈接到所述至少一個處理單元的通信引擎,其中一個端口連接到所述通信引擎,而另一端口連接到所述處理單元。
42.如權利要求41所述的移動站,其特征在于所述雙端口存儲器相對于相連的所述通信引擎配置為FIFO。
43.一種在分組交換網絡所用分組處理設備中處理數據分組的方法,其特征在于所述分組處理單元包括多條并行流水線,每條流水線包括至少一個處理單元;所述方法還包括將每個處理單元執行的任務組織成多個函數,以便實質上只有函數調用而無函數間調用,并且一個處理單元的所述函數調用所調用的每個函數終止時,唯一的上下文是第一數據部分。
44.一種在分組交換網絡中使用的分組處理單元,包括用于在所述分組處理單元中接收分組的裝置;多條并行流水線,每條流水線包括用于對至少部分數據分組執行某種過程的至少一個處理單元;連接到所述處理單元的通信引擎;至少一個共享資源,其中所述通信引擎適于從所述處理單元接收共享資源請求,并將它發送到所述共享資源。
全文摘要
一種在分組交換網絡用于處理數據分組的分組處理設備包括接收分組的裝置;將管理信息添加到分組第一數據部分的裝置,管理信息至少包括要應用到所述第一數據部分上的至少一個過程的指示;以及多條并行流水線,每條流水線包括至少一個處理單元,其特征在于所述處理單元對所述第一數據部分執行所述管理信息指示的所述過程,以提供修改的第一數據部分。根據方法,由每個處理單元執行的任務組織成多個函數,以便實際上只有函數調用而無函數間調用,并且一個處理單元的所述函數調用所調用的每個函數終止時,唯一的上下文是第一數據部分。
文檔編號H04L12/56GK1663188SQ03814522
公開日2005年8月31日 申請日期2003年4月25日 優先權日2002年4月26日
發明者K·德福爾徹, G·費爾布魯根, L·德科斯特爾, J·沃特爾斯 申請人:美商傳威股份有限公司