專利名稱:一種查找引擎實時系統內數據傳輸的方法和系統的制作方法
技術領域:
本發明涉及計算機領域的實時操作系統,尤其是指一種查找引擎實時系統內數據
傳輸的方法和系統。
背景技術:
實時操作系統(Real Time Operating System,RTOS)是保證在一定時間限制內完 成特定功能的操作系統,其主要特點是中央處理器(Central ProcessingUnit,CPU)需要在 規定的時間內完成某種操作。隨著實時操作系統的廣泛應用,所需要處理的業務類型也不 斷增加,通常情況下,CPU需要在規定的時間內完成和外部設備進行數據交互的任務,而這 些數據交互任務具有如下的特點1、一次的數據傳輸數量小;2、需要保證實時傳輸;3、傳 輸的執行時間不確定;4、需要頻繁的數據傳遞;5、傳輸可靠性要求較高。
查找引擎(Search Engine)是路由器、三層交換機等設備的重要功能模塊,主要完 成路由查找、數據包分類等操作的硬件加速。由于路由表項存在實時更新的特點,因此查找 引擎通常采用前述的實時操作系統實現。 目前,高帶寬的查找引擎通常使用三元內容尋址內存(Ternary ContentAddressable Memory, TCAM) 。 TCAM能夠支持精確匹配、最長前綴匹配和任意位匹 配,還能在一次存儲訪問周期內返回結果,而采用其他技術一般需要多次存儲訪問才能返 回結果。因此,利用TCAM的查找引擎較其他采用同類技術的查找引擎具備明顯的優勢。但 是,受到當前工藝水平的限制,TCAM的查找速度很難再大幅度提高,同時容量也很難做到很 大,并且價格昂貴、功耗很大。 現在,由于網絡容量的不斷擴大導致路由表項增大、路由震蕩等原因,因此,通過 實時操作系統實現的查找引擎中,CPU需要對外掛了 TCAM的協處理器進行大量的路由表項 更新等各種操作,使得CPU與協處理器之間需要頻繁執行請求命令并返回執行結果,造成 路由表項更新效率低下、CPU占用率高等問題,同時,低數據量的頻繁交互也對接口帶寬造 成浪費,無法保證系統的穩定性和可靠性。
發明內容
有鑒于此,本發明的主要目的在于提供一種查找引擎實時系統內數據傳輸的方法 和系統,提高接口的傳輸效率,釋放CPU的處理壓力,避免頻繁的命令交互占用過多的CPU 資源。 為達到上述目的,本發明的技術方案是這樣實現的 本發明提供了一種查找引擎實時系統內數據傳輸的方法,所述方法包括
CPU接收并存儲請求命令; 將所述請求命令封裝并發送請求命令包到協處理器中的緩存; 協處理器讀取所述請求命令包,并解析出請求命令執行相應操作; 協處理器將執行結果寫入緩存,等待全部執行后使用封裝所述執行結果并返回結
4果數據包; CPU解析所述結果數據包,校驗執行結果后清除對應完成的請求命令,等待下一個 請求命令。 其中,所述CPU解析結果數據包校驗執行結果后,還包括 當所述執行結果對應的請求命令被丟棄或者請求命令執行錯誤時,重發所述請求 命令。 其中,所述CPU存儲請求命令步驟中,具體包括 所述CPU將請求命令緩存到外部存儲器中。其中,當所述CPU管理多個外掛查找 引擎時,根據所述請求命令的目的查找引擎不同,將所述請求命令緩存到對應的外部存儲 器中。
其中,所述協處理器將執行結果寫入緩存步驟中,具體包括 當多個CPU管理同一個所述協處理器時,所述協處理器設置多個內部緩存對應不 同的CPU,用來分別存儲對應不同CPU發送過來的所述請求命令包的所述執行結果。
其中,將所述請求命令封裝的方法,具體包括 封裝原則是選擇同種類型的請求命令;和/或類型相似的請求命令;和/或數據 量小而且需要頻繁的數據傳輸的請求命令封裝在一起; 封裝的請求命令包,具體包括數據包起始字段、設備號字段、包長度字段、命令類 型字段、命令長度字段、命令數據字段、校驗字段和數據包結束字段。 其中,所述返回結果數據包的方法,具體包括通過中斷方式或查詢方式返回所述 結果數據包。 本發明還提供了一種查找引擎實時系統內數據傳輸的系統,所述系統包括CPU 模塊和協處理器模塊,其中, 所述CPU模塊,用于接收并存儲請求命令,將請求命令封裝成請求命令包并發送 給所述協處理器模塊,當結果數據包返回后,解析結果數據包校驗執行結果后清除對應完 成的請求命令,等待下一個請求命令; 所述協處理器模塊,用于讀取所述請求命令包,并解析出所述請求命令執行相應
操作;將執行結果寫入緩存,等待全部執行后,將執行結果封裝成所述結果數據包并返回。
其中,所述CPU模塊包括請求命令分類及控制子模塊、請求命令封裝子模塊、結
果解析子模塊和結果分析及重傳子模塊,其中, 所述請求命令分類及控制子模塊,用于接收并儲存業務層發送來的請求命令,符 合封裝條件后根據封裝原則將所述請求命令分類發送給所述請求命令封裝子模塊進行封 裝; 所述請求命令封裝子模塊,用于接收所述請求命令分類及控制子模塊發送來的所 述請求命令,進行封裝,并發送給所述協處理器; 所述結果解析子模塊,用于解析返回的所述結果數據包,將解析出的所述執行結 果傳遞給所述結果分析及重傳子模塊; 所述結果分析及重傳子模塊,用于校驗所述執行結果,返回所述請求命令分類及 控制子模塊清除對應完成的請求命令,等待下一個請求命令。 其中,所述協處理模塊還包括協處理器請求命令解析子模塊、請求命令執行子模塊、協處理器結果封裝子模塊, 所述協處理器請求命令解析子模塊,用于解析出請求命令包中的所述請求命令, 并將所述請求命令傳遞給所述請求命令執行子模塊; 所述請求命令執行子模塊,用于執行所述請求命令并將執行結果傳遞給所述協處 理器結果封裝子模塊; 所述協處理器結果封裝子模塊,用于封裝所述請求命令執行子模塊傳遞來的所述 執行結果,并向CPU模塊返回結果數據包。 其中,所述結果分析及重傳子模塊在校驗中,還用于 當所述執行結果對應的請求命令被丟棄或者所述請求命令的執行結果錯誤時,返 回所述請求命令封裝子模塊重發所述請求命令。
其中,所述請求命令分類及控制子模塊儲存請求命令,具體包括 所述請求命令分類及控制子模塊緩存請求命令,其中,當一個CPU模塊管理多個
外掛查找引擎時,根據請求命令的目的查找引擎不同,將請求命令緩存到對應的不同緩存中。 其中,所述協處理器結果封裝子模塊在封裝前還需要緩存所述執行結果,具體包 括 當多個CPU模塊管理同一個協處理器時,協處理器結果封裝子模塊設置多個內部 緩存對應不同的CPU,用來分別存儲對應不同CPU發送過來的所述請求命令包的所述執行結果。 本發明所提供的提高查找引擎數據傳輸效率的方法和系統,根據請求命令或執行 結果的類型和傳輸需要,將請求命令或執行結果進行封裝,以數據包的形式進行傳輸,可以 增加每次總線傳輸的信息量,在不改變TCAM的前提下,提高接口的傳輸效率,同時在規定 的時間內減少請求命令的執行頻率或者增加查詢間隔,大幅度的減少執行結果返回時中斷 或查詢的頻率,釋放CPU的處理壓力,避免CPU資源過多的被占用,保證CPU系統的穩定和 可靠運行。
圖1為查找引擎實時系統的結構示意圖; 圖2為本發明提高查找引擎數據傳輸效率的方法流程示意圖; 圖3為本發明中CPU和查找引擎之間的更新指令封裝的請求命令包結構示意圖; 圖4a為本發明中一種DEV_ID譯碼的構造示意圖; 圖4b為本發明中一種CMD_TYPE譯碼的構造示意圖; 圖5為本發明提高查找引擎數據傳輸效率的系統結構示意圖; 圖6為本發明提高查找引擎數據傳輸效率的系統的詳細結構圖。
具體實施例方式
為了更好的理解本發明,先介紹一下查找引擎實時系統,如圖1所示查找引擎通 常包括CPU 11、外部存儲器12、橋片13、協處理器14和TCAM 15。 CPU ll,用于系統的控制和管理。CPU中通常還包括10控制器、內部cache等部分。CPU可以根據程序執行時每條指令的要求,向存儲器、運算器、輸入輸出設備發出控制信號,控制計算機各個部分的運行。在本發明中主要負責路由計算、查找引擎更新以及系統控制管理等功能。內部cache配置使得CPU信息存取信息的速度得到提高;10控制器是CPU11與外部設備通訊的接口。 外部存儲器12,是為了彌補CPU 11內存容量不足和長期存儲信息而設的存儲裝置,通常用于存儲業務層發送來的請求命令等。 橋片13,又稱高速外部互聯總線(PCI-E/PCI),用于連接CPU 11和協處理器14。在一個或多個CPU 11外掛一個或多個協處理器14的情況下,需要通過橋片13建立各個CPU11和各個協處理器14之間點對點的通訊方式。 協處理器14,用于與CPU ll—起使用來執行運算。協處理器14的功能是在硬件中實現替代幾種軟件的指令。通過將多種代碼指令作為單一指令,減少了代碼指令的數目,以及在硬件中直接實現指令的方式,實現代碼加速。在本發明中協處理器14通過外掛TCAM,完成IP報文的轉發處理。通常情況下所述協處理器14可以通過網絡處理器、可編程邏輯門陣列(Field ProgrammingGate Array,FPGA),以及其他專用集成電路(A卯licationSpecific IntegratedCircuits, ASIC)來實現。
TCAM 15,用于實現查找引擎功能。 本發明的基本思想是在上述架構中,首先CPU接收并存儲請求命令;將請求命令封裝為請求命令包并發送到協處理器中的緩存;協處理器讀取請求命令包,并解析出請求命令執行相應操作;將執行結果寫入緩存,等待全部執行后封裝執行結果為結果數據包并返回;CPU解析結果數據包校驗執行結果后清除對應完成的請求命令,等待下一個請求命令。 下面結合附圖和具體實施例對本發明的技術方案進一步詳細闡述。 圖2為本發明一種提高查找引擎數據傳輸效率的方法流程示意圖,如圖2所示,本
發明包括以下步驟 步驟201, CPU接收并存儲請求命令; 具體的,CPU接收由業務層發送過來的請求命令,并將請求命令緩存到外部存儲器中。其中,當該CPU管理多個外掛查找引擎時,根據請求命令的目的不同查找引擎不同,將請求命令緩存到對應的外部存儲器中。所述的請求命令可以是CPU和查找引擎之間的更新指令。 步驟202,封裝請求命令; 具體的,當定時器溢出或達到固定的請求命令數目時,針對請求命令進行封裝操作。如果請求命令之間間隔時間過長,采用等待固定數目封裝的方式,會導致請求不能及時執行,對相應業務或功能造成影響。因此采用定時器或固定數目封裝的方式進行封裝。具體的,當請求命令密集時,采用達到固定數目的請求命令時封裝,所述的固定數目根據不同的應用場合,綜合請求命令發起頻率、請求命令包長度、中斷處理效率和協處理器內部資源等因素后選定;而在請求命令稀疏時,采用等待固定時間封裝,所述的固定時間可以根據需要具體設定,如1微秒或者1毫秒。請求命令的封裝原則是根據實際情況,盡量選擇同種類型的請求命令或者類型相似的請求命令封裝在一起,這樣可以使封裝更加簡單;還可以將數據量小而且需要頻繁的數據傳輸的請求命令封裝在一起,如需要頻繁的中斷通知CPU進
7行處理,或者CPU需要頻繁的查詢方式來讀取協處理器數據的請求命令封裝在一起。采用等待固定時間并根據上述封裝原則對請求命令進行封裝,可以在規定的時間內減少請求命令的執行頻率或者增加查詢間隔。 具體的,請求命令封裝方式,如圖3所示為CPU和查找引擎之間的更新指令封裝的請求命令包結構示意圖,每個請求命令包,由以下字段構成 SOP 301 :數據包起始字段,表示一個數據包的起始,SOP字段可以是一個固定的32位的無符號整數或者一個累加的數據包序列描述符,用以標識一個數據包在存儲區中和上一個數據包之間的邊界; DEV_ID 302 :設備號字段,描述當前的數據包的目的地址,圖4a列出了一種可能的DEV_ID譯碼,例如,0表示該數據包的目的地址是CPUO, 4表示該數據包的目的地址是系統中的第一個查找引擎; PKT_LEN 303 :包長度字段,描述當前數據包的總長度,協處理器可以根據該字段來解析請求命令; CMD_TYPE 304 :命令類型字段,描述當前數據包的命令類型,圖4b列出了一種可能的CMDJTPE譯碼,0表示查找引擎讀命令,1表示查找引擎寫寄存器命令,2表示查找引擎寫數據命令,3表示查找引擎查找命令,4表示查找引擎刪除命令,5表示協處理器讀寄存器命令,6表示協處理器寫寄存器命令,7表示協處理器讀數據命令,8表示協處理器寫數據命令…… CMD_LEN 305 :命令長度字段,描述當前命令長度,請求命令封裝時針對等長的請求命令進行封裝可以降低封裝和解析的難度,實際封裝時也可以針對不等長的命令進行;
CMD_DATA 306 :命令數據字段,描述填充進行封裝的數據包,針對不等長的請求命令進行填充,按照相同長度進行發送,即不同請求命令包長度相同,可以大大降低協處理器側命令解析的代價; CRC 307 :校驗字段,用于對封裝的請求命令包進行校驗,針對高可靠性的接口數據傳輸CRC(Cyclic Redundancy Check)非常有必要,下面列出一種可能的CRC32多項式 EOP 308 :數據包結束字段,表示一個數據包的結束,E0P字段可以是一個固定的32位的無符號整數或者一個累加的數據包序列描述符,用于標識一個數據包在存儲區中和
下一個數據包之間的邊界。 步驟203 ,發送請求命令包; 具體的,由于封裝后的數據量比較大,因此可以利用直接存儲器訪問(DirectMemory Access, DMA)控制器進行傳輸,CPU首先對DMA控制器進行初始化,并向10控制器發出操作命令,然后,當CPU執行完當前的傳輸后即刻掛起或只執行內部操作,由DMA控制器獲得外部互聯總線控制權后,輸出讀寫命令直接傳送數據,使CPU的效率大為提高,同時提高了總線帶寬的利用率。發送的請求命令包,最好先進行CRC校驗,以保證數據的完整性。所述請求命令包發送到協處理器的內部緩存中,當多個CPU管理同一個協處理器時,協處理器需要設置多個內部緩存對應不同的CPU,用來分別存儲不同CPU發送過來的請求命令包。 步驟204,協處理器讀取請求命令包、解析出請求命令;
具體的,協處理器從內部緩存中讀出請求命令包,并檢查請求命令包的CRC字段,
在校驗出錯時,需要通知CPU重傳,以保證系統的可靠性。協處理器內部的命令解析可以由
硬件實現,當使用網絡處理器時,可利用網絡處理器中的微碼部分實現。 步驟205,協處理器執行請求命令,并將執行結果寫入對應緩存; 具體的,協處理器按照順序執行請求命令,并將執行結果寫入步驟203中所述的
對應不同CPU的緩存中。 步驟206,等待所有命令執行完,將所有執行結果進行封裝,并返回結果數據包;
具體的,等待所有命令執行完,將所有執行結果按照步驟202中描述的封裝方法進行封裝。協處理器內部的封裝可以由硬件實現,當使用網絡處理器時,可利用網絡處理器中的微碼部分實現。返回結果數據包的方法可以是通過中斷方式或查詢方式以及其他現有方法。 當通過中斷方式返回結果數據包時,協處理器向CPU發出結果準備好返回中斷,CPU接到返回中斷后讀取結果數據包。其中,協處理器發出的結果準備好返回中斷最好占用CPU固定的中斷引腳,如果采用多級中斷,即與系統多個中斷復用一個中斷引腳,則需要讀取多級中斷寄存器判斷中斷類型,會影響中斷的處理效率。 當通過查詢方式返回結果數據包時,協處理器置結果準備好標志,CPU則采用固定時間間隔查詢協處理器的結果準備好標志,查詢到結果準備好標志后讀取結果數據包,并清除結果準備好標志。其中,時間間隔的選取可以根據封裝的返回結果數據包的數量以及路由表項更新頻率等因素綜合選取。通過定時器來實現,在CPU發送請求命令包時啟用定時器,在結果數據包返回后沒有新的請求命令包發送時關閉定時器,這樣可以更好的降低CPU的利用率。 步驟207, CPU讀取結果數據包并進行解析,判斷是否有請求命令被丟棄,當有請
求命令被丟棄時,執行步驟208 ;當請求命令被正常執行,則執行步驟209 ; 其中,以N(N為1、2、3……的自然數)個請求命令被封裝為例,協處理器同樣會返
回N個執行結果。每個執行結果反饋了對應的請求命令是否被正確執行的情況,CPU需要
檢查每個執行結果,當出現沒有執行結果的情況時,說明所對應的請求命令被丟棄,或者執
行結果出現錯誤時,都需要重新發送請求命令。為了保證系統的性能,可以將重新發送的請
求命令送入下一個封裝進程,與業務層發送來的新的請求命令一起封裝并發送。 步驟208,返回步驟202重發被丟棄的請求命令; 步驟209,將執行結果返回給業務層或直接丟棄并返回步驟201清除正確執行的請求命令并等待新的請求命令。 圖5為本發明提高查找引擎數據傳輸效率的系統結構示意圖,該系統包括CPU模塊51和協處理器模塊52,其中, CPU模塊51,用于接收并存儲請求命令,將請求命令封裝為請求命令包并發送給協處理器模塊52,當結果數據包返回后,解析結果數據包校驗執行結果后清除對應完成的請求命令,等待下一個請求命令; 協處理器模塊52,用于讀取請求命令包,并解析出請求命令執行相應操作;將執行結果寫入緩存,等待全部執行后封裝執行結果為結果數據包并返回。 圖6為本發明提高查找引擎數據傳輸效率的系統的詳細結構圖,該系統包括請求命令分類及控制子模塊601、請求命令封裝子模塊602、協處理器請求命令解析子模塊603、請求命令執行子模塊604、協處理器結果封裝子模塊605、結果解析子模塊606和結果分析及重傳子模塊607,其中, 請求命令分類及控制子模塊601 ,位于CPU模塊51中,用于接收并儲存業務層發送來的請求命令,符合封裝條件后根據封裝原則將請求命令分類發送給請求命令封裝子模塊602進行封裝; 具體的,請求命令分類及控制子模塊601接收由業務層發送過來的請求命令,并將請求命令緩存。其中,當一個CPU管理多個外掛查找引擎時,根據請求命令的目的不同查找引擎不同,將請求命令緩存到對應的不同緩存中。所述的請求命令可以是CPU和查找引擎之間的更新指令。當定時器溢出或達到固定的請求命令數目時,則符合進行封裝的條件,可以將請求命令發送給請求命令封裝子模塊602進行封裝。如果請求命令之間間隔時間過長,采用等待固定數目封裝的方式,會導致請求不能及時執行,對相應業務或功能造成影響。因此采用定時器或固定數目封裝的方式進行封裝。具體的,當請求命令密集時,采用達到固定數目的請求命令時封裝,所述的固定數目根據不同的應用場合,綜合請求命令發起頻率、請求命令包長度、中斷處理效率和協處理器內部資源等因素后選定;而在請求命令稀疏時,采用等待固定時間封裝,所述的固定時間可以根據需要具體設定,如1微秒或者1毫秒。請求命令的所述封裝原則是根據實際情況,盡量選擇同種類型的請求命令或者類型相似的請求命令封裝在一起,這樣可以使封裝更加簡單;還可以將數據量小而且需要頻繁的數據傳輸的請求命令封裝在一起,如需要頻繁的中斷通知CPU進行處理,或者CPU需要頻繁的查詢方式來讀取協處理器數據的請求命令封裝在一起。采用等待固定時間并根據上述封裝原則對請求命令進行封裝,可以在規定的時間內減少請求命令的執行頻率或者增加查詢間隔。 請求命令封裝子模塊602,位于CPU模塊51中,用于接收請求命令分類及控制子模塊601發送來的請求命令,進行封裝,并發送給協處理器請求命令解析子模塊603 ;
具體的,請求命令封裝方式,如圖3所示為CPU和查找引擎之間的更新指令封裝的請求命令包結構示意圖,每個請求命令包,由以下字段構成 SOP 301 :數據包起始字段,表示一個數據包的起始,SOP字段可以是一個固定的32位的無符號整數或者一個累加的數據包序列描述符,用以標識一個數據包在存儲區中和上一個數據包之間的邊界; DEV_ID 302 :設備號字段,描述當前的數據包的目的地址,圖4a列出了一種可能的DEV_ID譯碼,例如,0表示該數據包的目的地址是CPUO, 4表示該數據包的目的地址是系統中的第一個查找引擎; PKT_LEN 303 :包長度字段,描述當前數據包的總長度,協處理器可以根據該字段來解析請求命令; CMDJTPE 304 :命令類型字段,描述當前數據包的命令類型,圖4b列出了一種可能的CMDJTPE譯碼,0表示查找引擎讀命令,1表示查找引擎寫寄存器命令,2表示查找引擎寫數據命令,3表示查找引擎查找命令,4表示查找引擎刪除命令,5表示協處理器讀寄存器命令,6表示協處理器寫寄存器命令,7表示協處理器讀數據命令,8表示協處理器寫數據命令……
10
CMD_LEN 305 :命令長度字段,描述當前命令長度,請求命令封裝時針對等長的請求命令進行封裝可以降低封裝和解析的難度,實際封裝時也可以針對不等長的命令進行;
CMD_DATA 306 :命令數據字段,描述填充進行封裝的數據包,針對不等長的請求命令進行填充,按照相同長度進行發送,即不同請求命令包長度相同,可以大大降低協處理器側命令解析的代價; CRC 307 :校驗字段,用于對封裝的請求命令包進行校驗,針對高可靠性的接口數據傳輸CRC(Cyclic Redundancy Check)非常有必要,下面列出一種可能的CRC32多項式 EOP 308 :數據包結束字段,表示一個數據包的結束,EOP字段可以是一個固定的32位的無符號整數或者一個累加的數據包序列描述符,用于標識一個數據包在存儲區中和下一個數據包之間的邊界。 在所述發送過程中,由于封裝后的數據量比較大,因此可以利用DMA控制器進行傳輸,CPU首先對DMA控制器進行初始化,并向10控制器發出操作命令,然后,當CPU執行完當前的傳輸后即刻掛起或只執行內部操作,由DMA控制器獲得外部互聯總線控制權后,輸出讀寫命令直接傳送數據,使CPU的效率大為提高,同時提高了總線帶寬的利用率。發送的請求命令包,最好先進行CRC校驗,以保證數據的完整性。所述請求命令包發送到協處理器請求命令解析子模塊603的內部緩存中,當多個CPU管理同一個協處理器時,協處理器請求命令解析子模塊603需要設置多個內部緩存對應不同的CPU,用來分別存儲不同CPU發送過來的請求命令包。 協處理器請求命令解析子模塊603,位于協處理器模塊52中,用于解析請求命令包中的請求命令,并將請求命令傳遞給請求命令執行子模塊604 ; 具體的,協處理器請求命令解析子模塊603從內部緩存中讀出請求命令包,并檢查請求命令包的CRC字段,在校驗出錯時,需要通知CPU重傳,以保證系統的可靠性。協處理器請求命令解析子模塊603內部的命令解析可以由硬件實現,當使用網絡處理器時,可利用網絡處理器中的微碼部分實現。 請求命令執行子模塊604,位于協處理器模塊52中,用于執行請求命令并將執行結果傳遞給協處理器結果封裝子模塊605 ; 具體的,請求命令執行子模塊604,按照順序執行請求命令,并將執行結果寫入協處理器結果封裝子模塊605內的緩存中,當多個CPU管理同一個協處理器時,協處理器結果封裝子模塊605需要設置多個內部緩存對應不同的CPU,用來分別存儲對應不同CPU發送過來的請求命令包的執行結果。當請求命令是針對路由表項更新時,請求命令執行模塊完成路由表項的更新的操作。 協處理器結果封裝子模塊605,位于協處理器模塊52中,用于封裝請求命令執行子模塊604傳遞來的執行結果,并返回結果數據包; 具體的,等待所有命令執行完,將所有執行結果按照請求命令封裝子模塊602中描述的相同的封裝方法進行封裝。協處理器結果封裝子模塊605內部的封裝可以由硬件實現,當使用網絡處理器時,可利用網絡處理器中的微碼部分實現。返回結果數據包的方法可以是通過中斷方式或查詢方式以及其他現有方法。 結果解析子模塊606,位于CPU模塊51中,用于解析返回的結果數據包,將解析出
11的執行結果傳遞給結果分析及重傳子模塊607 ; 具體的,根據請求命令封裝子模塊602封裝的請求命令數,解析出各請求命令的
執行結果,將解析出的執行結果傳遞給結果分析及重傳子模塊607. 結果分析及重傳子模塊607,位于CPU模塊51中,用于校驗執行結果。 具體的,判斷是否有請求命令被丟棄或執行錯誤,當有請求命令被丟棄或執行錯
誤時,返回請求命令封裝子模塊602重發被丟棄或執行錯誤的請求命令;當請求命令被正
常執行,則將執行結果返回業務層或直接丟棄并返回請求命令分類及控制子模塊601清除
正確執行的請求命令并等待新的請求命令。 其中,以N(N為1、2、3……的自然數)個請求命令被封裝為例,結果解析子模塊606應該解析出N個執行結果。每個執行結果反饋了對應的請求命令是否被正確執行的情況,結果分析及重傳子模塊607檢查每個執行結果,當出現沒有執行結果的情況時,說明所對應的請求命令被丟棄,或者執行結果出現錯誤時,都需要重新發送請求命令。為了保證系統的性能,可以將重新發送的請求命令送入下一個封裝進程,與業務層發送來的新的請求命令一起封裝并發送。 以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
一種查找引擎實時系統內數據傳輸的方法,其特征在于,所述方法包括CPU接收并存儲請求命令;將所述請求命令封裝并發送請求命令包到協處理器中的緩存;協處理器讀取所述請求命令包,并解析出請求命令執行相應操作;協處理器將執行結果寫入緩存,等待全部執行后使用封裝所述執行結果并返回結果數據包;CPU解析所述結果數據包,校驗執行結果后清除對應完成的請求命令,等待下一個請求命令。
2. 根據權利要求1所述的方法,其特征在于,所述CPU解析結果數據包校驗執行結果 后,還包括當所述執行結果對應的請求命令被丟棄或者請求命令執行錯誤時,重發所述請求命令。
3. 根據權利要求1或2所述的方法,其特征在于,所述CPU存儲請求命令步驟中,具體 包括所述CPU將請求命令緩存到外部存儲器中;其中,當所述CPU管理多個外掛查找引擎 時,根據所述請求命令的目的查找引擎不同,將所述請求命令緩存到對應的外部存儲器中。
4. 根據權利要求1或2所述的方法,其特征在于,所述協處理器將執行結果寫入緩存步 驟中,具體包括當多個CPU管理同一個所述協處理器時,所述協處理器設置多個內部緩存對應不同的 CPU,用來分別存儲對應不同CPU發送過來的所述請求命令包的所述執行結果。
5. 根據權利要求1或2所述的方法,其特征在于,將所述請求命令封裝的方法,具體包括封裝原則是選擇同種類型的請求命令;和/或類型相似的請求命令;和/或數據量小 而且需要頻繁的數據傳輸的請求命令封裝在一起;封裝的請求命令包,具體包括數據包起始字段、設備號字段、包長度字段、命令類型字 段、命令長度字段、命令數據字段、校驗字段和數據包結束字段。
6. 根據權利要求1或2所述的方法,其特征在于,所述返回結果數據包的方法,具體包 括通過中斷方式或查詢方式返回所述結果數據包。
7. —種查找引擎實時系統內數據傳輸的系統,其特征在于,所述系統包括CPU模塊和 協處理器模塊,其中,所述CPU模塊,用于接收并存儲請求命令,將請求命令封裝成請求命令包并發送給所 述協處理器模塊,當結果數據包返回后,解析結果數據包校驗執行結果后清除對應完成的 請求命令,等待下一個請求命令;所述協處理器模塊,用于讀取所述請求命令包,并解析出所述請求命令執行相應操作; 將執行結果寫入緩存,等待全部執行后,將執行結果封裝成所述結果數據包并返回。
8. 根據權利要求7所述的系統,其特征在于,所述CPU模塊包括請求命令分類及控制 子模塊、請求命令封裝子模塊、結果解析子模塊和結果分析及重傳子模塊,其中,所述請求命令分類及控制子模塊,用于接收并儲存業務層發送來的請求命令,符合封 裝條件后根據封裝原則將所述請求命令分類發送給所述請求命令封裝子模塊進行封裝;所述請求命令封裝子模塊,用于接收所述請求命令分類及控制子模塊發送來的所述請 求命令,進行封裝,并發送給所述協處理器;所述結果解析子模塊,用于解析返回的所述結果數據包,將解析出的所述執行結果傳 遞給所述結果分析及重傳子模塊;所述結果分析及重傳子模塊,用于校驗所述執行結果,返回所述請求命令分類及控制 子模塊清除對應完成的請求命令,等待下一個請求命令。
9. 根據權利要求7或8所述的系統,其特征在于,所述協處理模塊還包括協處理器請 求命令解析子模塊、請求命令執行子模塊、協處理器結果封裝子模塊,所述協處理器請求命令解析子模塊,用于解析出請求命令包中的所述請求命令,并將 所述請求命令傳遞給所述請求命令執行子模塊;所述請求命令執行子模塊,用于執行所述請求命令并將執行結果傳遞給所述協處理器 結果封裝子模塊;所述協處理器結果封裝子模塊,用于封裝所述請求命令執行子模塊傳遞來的所述執行 結果,并向CPU模塊返回結果數據包。
10. 根據權利要求8所述的系統,其特征在于,所述結果分析及重傳子模塊在校驗中, 還用于當所述執行結果對應的請求命令被丟棄或者所述請求命令的執行結果錯誤時,返回所 述請求命令封裝子模塊重發所述請求命令。
11. 根據權利要求8或10所述的系統,其特征在于,所述請求命令分類及控制子模塊儲 存請求命令,具體包括所述請求命令分類及控制子模塊緩存請求命令,其中,當一個CPU模塊管理多個外掛 查找引擎時,根據請求命令的目的查找引擎不同,將請求命令緩存到對應的不同緩存中。
12. 根據權利要求9所述的系統,其特征在于,所述協處理器結果封裝子模塊在封裝前 還需要緩存所述執行結果,具體包括當多個CPU模塊管理同一個協處理器時,協處理器結果封裝子模塊設置多個內部緩存 對應不同的CPU,用來分別存儲對應不同CPU發送過來的所述請求命令包的所述執行結果。
全文摘要
本發明公開了一種查找引擎實時系統內數據傳輸的方法,具體包括CPU接收并存儲請求命令;將請求命令封裝并發送請求命令包到協處理器中的緩存;協處理器讀取請求命令包,并解析出請求命令執行相應操作;將執行結果寫入緩存,等待全部執行后封裝執行結果并返回結果數據包;CPU解析結果數據包校驗執行結果后清除對應完成的請求命令,等待下一個請求命令;本發明還公開了一種查找引擎實時系統內數據傳輸的系統,基于本發明的方法和系統,可以提高傳輸的效率、避免CPU資源過多的被占用,保證CPU系統的穩定和可靠運行。
文檔編號G06F15/163GK101777037SQ201010110829
公開日2010年7月14日 申請日期2010年2月3日 優先權日2010年2月3日
發明者李彧, 王志忠, 繆眾林, 錢曉東 申請人:中興通訊股份有限公司