專利名稱:一種報文存儲轉發(fā)的方法及報文存儲轉發(fā)電路的制作方法
技術領域:
本發(fā)明涉及存儲轉發(fā)技術,尤其是涉及一種報文存儲轉發(fā)的方法及相應的報文存儲轉發(fā)電路。
背景技術:
在網(wǎng)絡處理ASIC(專用集成電路)的應用中存在處理數(shù)據(jù)包的機制,通常先將數(shù)據(jù)按整個報文進行存儲,這些報文使用大容量存儲器進行存儲,這些存儲器是獨立于ASIC芯片的,如SRAM、DDR SRAM,然后根據(jù)某種調度方式,再將數(shù)據(jù)按一個個整報文進行讀出,轉發(fā)給下一節(jié)點或設備。
通常情況下,網(wǎng)絡節(jié)點具有N個邏輯通道,這些邏輯通道通過占用物理鏈路的時隙來轉發(fā)數(shù)據(jù),按照上述這種整報文的存儲-轉發(fā)機制,針對每個邏輯通道,在該節(jié)點都設置有一個獨立的緩存區(qū),利用該緩存區(qū)存儲完整的報文,該緩存區(qū)通常用存儲器件來實現(xiàn),即將存儲器的地址分成幾塊,每個邏輯通道占用其中一塊,在每個時隙只能訪問其中的一個邏輯通道。上述將數(shù)據(jù)轉發(fā)給下一節(jié)點或設備的條件是緩存區(qū)里必須有至少一個整報文,因此技術關鍵點是如何判斷存儲器中是否有至少一個整報文,并且能夠使得在調度存儲器的數(shù)據(jù)過程中不浪費讀操作的時鐘周期,保證每次讀出的數(shù)據(jù)都是有用的。
在現(xiàn)有技術中,將報文數(shù)據(jù)寫入外部存儲器中包括從寫地址存儲單元讀出當前通道的寫地址;判斷當前寫允許是否有效;如果當前寫允許有效,那么寫地址加1后,再寫入到寫地址存儲單元中;如果當前寫允許無效,那么寫地址不變;根據(jù)寫允許信號和寫有效信號產生寫使能信號;根據(jù)寫地址產生訪問存儲器的地址信號。
其中,整報文是以一組組數(shù)據(jù)的形式寫入緩存區(qū)中,即在一個時鐘周期內寫入的報文數(shù)據(jù)為一個分組,其中每組數(shù)據(jù)包含數(shù)個字段,尾字段為包結束標志EOP(End Of Packet),該EOP用來標識報文是否結束,當EOP有效時,如EOP=1,表示報文結束,當EOP無效時,如EOP=0,表示報文沒結束。
將報文數(shù)據(jù)從外部存儲器中讀出時,根據(jù)讀出的數(shù)據(jù)中EOP信號是否為1來決定一個完整報文的讀操作是否結束。
在現(xiàn)有的報文存儲轉發(fā)方法中,將EOP包結束標志當作報文數(shù)據(jù)的一部分寫入外部存儲器中,并在ASIC的邏輯中設置EOP計數(shù)器,當有N個邏輯通道時,需要設置N個EOP計數(shù)器,通過讀取該EOP計數(shù)器的值來指示存儲器里整報文的有無;如圖1所示,當向外部存儲器寫入一個完整的報文時,即寫入一個有效EOP時,該EOP計數(shù)器作加1處理;當從外部存儲器中讀出一個完整的報文時,即讀出一個有效EOP時,該EOP計數(shù)器作減1處理;當同時有寫入和讀出一個完整的報文時,該EOP計數(shù)器的值不變;再判斷EOP計數(shù)器的值,當EOP計數(shù)器的值為0時,表示緩存區(qū)中沒有報文,當前讀允許無效;當EOP計數(shù)器的值不為0時,表示緩存區(qū)中還有報文,當前讀允許有效;其中,從外部存儲器中讀出一個有效EOP之前還包括從外部存儲器中讀取數(shù)據(jù)并判斷該數(shù)據(jù)的EOP是否有效,如果EOP有效,才是從外部存儲器中讀出一個有效EOP。
然而,上述報文存儲轉發(fā)方法存在以下問題一、讀數(shù)據(jù)帶寬丟失ASIC芯片訪問外部存儲器延遲大,按時鐘周期來算,從讀到數(shù)據(jù)到判斷數(shù)據(jù)是否符合邏輯的要求,通常需要2個或2個以上的時鐘周期。如果做連續(xù)的讀操作,當判斷出讀到的數(shù)據(jù)為包尾時,讀指針已經讀過頭了,并從外部存儲器中多讀取了數(shù)據(jù),這時讀指針需要回退,將多讀出來的無用數(shù)據(jù)過濾掉。因此延遲的時鐘周期和讀指針回退的時間就相當于浪費掉了,不能進行有效的數(shù)據(jù)讀寫,因此造成了讀數(shù)據(jù)帶寬丟失;二、邏輯的混亂與死循環(huán)由于需要從ASIC芯片外部讀入數(shù)據(jù)到ASIC芯片內進行邏輯判斷即判斷EOP信號是否為1,而ASIC芯片外的信號易受到外部的干擾,例如EOP=1被干擾后變成EOP=0,這樣被干擾后的信號進入到邏輯內部進行判斷時,就會造成邏輯的混亂與死循環(huán)。
發(fā)明內容
本發(fā)明的目的在于提供一種報文存儲轉發(fā)的方法以及報文存儲轉發(fā)電路,以提高存儲器的讀帶寬利用率。
為了實現(xiàn)上述目的,本發(fā)明提供如下的技術方案。。。。。。
由于采用了上述方案,本發(fā)明具有以下有益效果本發(fā)明利用報文存儲轉發(fā)電路內部的EOP地址存儲單元存儲每個邏輯通道的包尾地址,再通過讀取本發(fā)明電路內部的包尾地址和讀地址實時進行比較,如果兩個地址相同并且當前沒有包尾數(shù)據(jù)寫入,則認為當前邏輯通道在外部存儲器中沒有整報文了,并確定下一個時鐘周期讀允許無效,當下一個時鐘周期到來時,則立即切換到其它邏輯通道,解決了現(xiàn)有技術讀數(shù)據(jù)帶寬丟失的問題,從而對于多邏輯通道的情況,可以極大的提高存儲器的讀帶寬利用率,極大地提高了報文存儲轉發(fā)電路的性能;本發(fā)明通過判斷電路內部的地址而不是存儲器中數(shù)據(jù),可以規(guī)避存儲器讀操作延時大的缺點,從而通過充分利用電路內部存儲單元讀寫延時小的優(yōu)點,達到縮短延時的目的;另外本發(fā)明方案不需要對報文存儲轉發(fā)電路外的信號進行判斷,避免了現(xiàn)有技術中由于外部干擾而造成的內部邏輯的混亂或死循環(huán),從而增強了本發(fā)明電路的魯棒性。
圖1是現(xiàn)有報文存儲轉發(fā)方法中判斷存儲器有無報文的流程圖;圖2是本發(fā)明提供的報文存儲轉發(fā)電路的第一個實施例的結構圖;圖3是本發(fā)明提供的報文存儲轉發(fā)電路的第二個實施例的結構圖;圖4是圖2和圖3所示讀判斷單元中讀允許狀態(tài)轉換圖;圖5是本發(fā)明報文存儲轉發(fā)方法中的寫操作流程圖;圖6是圖2所示讀判斷單元產生讀允許信號的流程圖;圖7是本發(fā)明報文存儲轉發(fā)方法中的讀操作流程圖;圖8是本發(fā)明時序示意圖。
具體實施例方式
本發(fā)明提供一種報文存儲轉發(fā)方法及相應的報文存儲轉發(fā)電路,以解決現(xiàn)有技術對外部存儲器進行讀數(shù)據(jù)時帶寬丟失的問題。為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖對本發(fā)明作進一步的詳細描述。
本發(fā)明的核心思想是在報文存儲轉發(fā)電路中,對應每個邏輯通道都設置有一個存儲單元,該空間用于保存每一個邏輯通道寫入外部存儲器中的最后一個包尾數(shù)據(jù)的地址即包尾地址,每當該電路接收到讀請求時,從該電路中的存儲模塊中讀取當前邏輯通道的讀地址以及當前邏輯通道的包尾地址,將兩者進行比較,再根據(jù)比較結果和當前是否寫入包尾數(shù)據(jù),確定外部存儲器中報文的有無,輸出相應的下一個時鐘周期的讀允許信號,當下一個時鐘周期到來時,通過判斷讀允許信號是否有效,從而實現(xiàn)將外部存儲器中報文數(shù)據(jù)的讀出轉發(fā)。
下面將結合附圖描述本發(fā)明報文存儲轉發(fā)電路,請參閱圖2和圖3所示,本發(fā)明提供的報文存儲轉發(fā)電路包括報文存儲轉發(fā)控制器100和存儲器控制單元200,其中,存儲器控制單元200作為一個與外掛存儲器類型相關的控制單元,用于將報文存儲轉發(fā)控制器100輸出的讀寫地址以及讀寫使能轉化為外部存儲器所需的時序并對外部存儲器進行讀寫操作。考慮到存儲器控制單元200為現(xiàn)有技術,在此不詳細描述。
報文存儲轉發(fā)控制器100包括寫模塊300、存儲模塊400和讀模塊500,其中,寫模塊300根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊400中讀取到的該通道的寫地址,產生并輸出寫使能和寫地址給存儲器控制單元200,以及當接收到有效EOP信號時,輸出相應條件信息給讀模塊并將該寫地址作為包尾地址寫入存儲模塊400;存儲模塊400用于存儲每個邏輯通道訪問外部存儲器所需的讀地址和寫地址以及每個邏輯通道的最后一個包尾地址;讀模塊500根據(jù)接收的邏輯通道的讀請求和從存儲模塊400中讀取到的該通道的讀地址和包尾地址,產生并輸出讀使能和讀地址給存儲器控制單元200,以及當接收到條件信息時,根據(jù)該條件信息和讀取到的讀地址和包尾地址,產生讀允許信號。
如圖2所示,為報文存儲轉發(fā)控制器的第一個實施例,其中存儲模塊400包括EOP地址存儲單元401、讀地址存儲單元402和寫地址存儲單元403,該EOP地址存儲單元401用于存儲每一個邏輯通道向外部存儲器中寫入最后一個包尾數(shù)據(jù)的地址即包尾地址,具體為在該EOP地址存儲單元401中,每個邏輯通道對應有一個EOP地址存儲區(qū)用于存儲該通道的最新包尾地址;該讀地址存儲單元402用于存儲每一個邏輯通道訪問外部存儲器所需要的讀地址,具體為在該讀地址存儲單元402中,每個邏輯通道對應有一個存儲區(qū)用于存儲該通道訪問外部存儲器所需要的讀地址;該寫地址存儲單元403用于存儲每一個邏輯通道訪問外部存儲器所需要的寫地址,具體為在該寫地址存儲單元403中,每個邏輯通道對應有一個存儲區(qū)用于存儲該通道訪問外部存儲器所需要的寫地址;其中,該EOP地址存儲器401與寫地址存儲器403可以是一個物理存儲器(寫側存儲器)上二個邏輯相互獨立的部分,該讀地址存儲器402為另一個獨立的物理存儲器(讀側存儲器);也可以將該EOP地址存儲單元401、讀地址存儲單元402和寫地址存儲單元403配置為三個獨立的物理存儲器。
寫模塊300包括EOP地址更新單元301和寫操作模塊304,其中寫操作模塊304根據(jù)接收到邏輯通道的寫有效信號和從存儲模塊400中讀取到的該通道的讀地址和寫地址,輸出寫使能和寫地址給存儲器控制單元200,同時輸出寫地址信息和指示信號給EOP地址更新單元301;如圖2所示,寫操作模塊304具體包括寫判斷單元302和寫控制單元303,當接收到的寫有效信號時,在當前時鐘周期內寫判斷單元302對從讀地址存儲單元402中讀取到的當前通道的讀地址和從寫地址存儲單元403中讀取到的當前通道的寫地址進行比較,根據(jù)比較結果產生并輸出相應的下一個時鐘周期寫允許信號給寫控制單元303;因考慮到是現(xiàn)有技術,在此不詳細描述;寫控制單元303判斷接收到的當前寫允許信號(寫判斷單元302上一個時鐘周期輸出的)是否有效,根據(jù)判斷結果和從寫地址存儲單元403中讀出的當前通道的寫地址,輸出相應的寫使能和寫地址給存儲器控制單元200同時輸出相應的指示信號和寫地址信息給EOP地址更新單元,以及對寫地址存儲單元403中當前通道的寫地址作相應的處理;具體如下如果寫允許有效,則輸出有效寫使能給存儲器控制單元200,發(fā)送有效指示信號給EOP地址更新單元301,并對當前通道的寫地址作加1處理后寫入寫地址存儲單元403中;如果寫允許無效,則輸出無效寫使能給存儲器控制單元200,發(fā)送無效指示信號給EOP地址更新單元301,當前通道的寫地址不變。
EOP地址更新單元301用于當接收到有效指示信號時,判斷接收到的EOP信號是否有效,如果EOP有效,則輸出有效控制信號給讀模塊500中的讀判斷單元501,并將接收到的寫地址作為包尾地址寫入EOP地址更新單元401中;如果EOP無效,則輸出無效控制信號給讀模塊500中的讀判斷單元501,并對寫地址不作處理;或者,EOP地址更新單元301用于當接收到有效指示信號時,判斷接收到的EOP信號是否有效,如果EOP有效,則將接收到的寫地址發(fā)送給讀模塊500中的讀判斷單元501,以及將接收到的寫地址作為包尾地址寫入EOP地址更新單元401;如果EOP無效,則不作處理。
例如EOP信號為邏輯1,將寫地址作為包尾地址寫入存儲模塊400或覆蓋存儲模塊400中原有的包尾地址,使存儲模塊400中的內容為每個邏輯通道的最新包尾地址;EOP信號為邏輯0,保持存儲模塊中原有的包尾地址,不作更新處理。
如圖2所示,讀模塊500包括讀判斷單元501和讀控制單元502;當接收到邏輯通道的讀請求時,在當前時鐘周期內讀判斷單元501根據(jù)接收的邏輯通道的讀請求,對從EOP地址存儲單元401中讀取到的該通道的包尾地址和從讀地址存儲單元402中讀取到的該通道的讀地址進行比較,如果當前EOP地址更新單元301有發(fā)來條件信息,則根據(jù)比較結果和接收到的條件信息,輸出下一個時鐘周期讀允許信號給讀控制單元502;讀控制單元502用于當接收到邏輯通道的讀請求時,判斷接收的當前讀允許信號(讀判斷單元501上一個時鐘周期輸出的)是否有效,根據(jù)判斷結果和從讀地址存儲單元402中讀取到的該通道的讀地址,輸出相應的讀使能和讀地址給存儲器控制單元200,以及對讀地址存儲單元402中當前通道的讀地址作相應的處理;具體為如果判斷結果為當前讀允許有效,則輸出有效讀使能給存儲器控制單元200,并將當前通道的讀地址作加1處理后再寫入讀地址存儲單元402中;如果判斷結果為當前讀允許無效,則輸出無效讀使能給存儲器控制單元200,當前通道的讀地址不變。
如圖3所示,為報文存儲轉發(fā)控制器的第二個實施例,與第一個實施例不同之處在于在當前時鐘周期內寫控制單元303用于當接收到邏輯通道的寫有效信號時,判斷接收到的當前寫允許信號(寫判斷單元上一個時鐘周期輸出的)是否有效以及將從讀地址存儲單元402中讀取到的當前通道的讀地址和從寫地址存儲單元403中讀取到的當前通道的寫地址送入寫判斷單元302,并根據(jù)判斷結果輸出相應的寫使能和寫地址給存儲器控制單元200,同時輸出相應的指示信號和寫地址信息給EOP地址更新單元301以及對寫地址存儲單元403中當前通道的寫地址作相應的處理;具體為如果判斷結果為寫允許有效,則輸出有效寫使能給存儲器控制單元200,發(fā)送有效指示信號給EOP地址更新單元301,并對當前通道的寫地址作加1處理后寫入寫地址存儲單元403中;如果判斷結果為寫允許無效,則輸出無效寫使能給存儲器控制單元200,發(fā)送無效指示信號給EOP地址更新單元301,當前通道的寫地址不變;寫判斷單元302根據(jù)接收的邏輯通道的寫有效信號,對接收到的讀地址和寫地址進行比較,根據(jù)比較結果輸出相應的下一個時鐘周期的寫允許信號給寫控制單元303;考慮是現(xiàn)有技術,在此不詳細描述。
在讀模塊500中,在當前時鐘周期內讀控制單元502,用于當接收到邏輯通道的讀請求時,判斷接收到的當前讀允許信號(讀判斷單元501上一個時鐘周期輸出的)是否有效,以及將從EOP地址存儲單元401中讀取到的當前通道的包尾地址和從讀地址存儲單元402中讀取到的當前通道的讀地址發(fā)送給讀判斷單元501,并根據(jù)判斷結果輸出相應的讀使能和讀地址給存儲器控制單元200以及對讀地址存儲單元403中當前通道的讀地址作相應的處理;具體為如果判斷結果為當前讀允許有效,則輸出有效讀使能給存儲器控制單元200,并將當前通道的讀地址作加1處理后再寫入讀地址存儲單元402中;如果判斷結果為當前讀允許無效,則輸出無效讀使能給存儲器控制單元200,當前通道的讀地址不變;讀判斷單元501用于當接收到邏輯通道的讀請求時,對接收到的讀地址和包尾地址進行比較,如果當前EOP地址更新單元301有發(fā)來條件信息,則根據(jù)比較結果和接收到的條件信息,輸出相應的下一個時鐘周期的讀允許信號給讀控制單元502。
在報文存儲轉發(fā)控制器的第一、二實施例中,還可以由寫判斷單元302將產生的下一個時鐘周期的寫允許信號同時輸出給寫控制單元303和EOP地址更新單元301,當下一個時鐘周期到來時,由EOP地址更新單元301自己判斷接收到的寫允許信號是否有效;還可以由寫判斷單元302將寫地址信息發(fā)送給EOP地址更新單元301。
讀判斷單元501是本發(fā)明的重點,下面詳細介紹讀判斷單元501產生讀允許信號的過程,請參閱圖4所示,圖4揭示了讀判斷單元中讀允許信號的各種狀態(tài)轉換及相應的控制條件以讀判斷單元接收EOP地址更新單元發(fā)送來的控制信號為例,下面對讀判斷單元中讀允許信號的各種狀態(tài)轉換進行說明,當系統(tǒng)復位時(條件1),讀判斷單元中的狀態(tài)機進入讀允許無效狀態(tài)(狀態(tài)1);在讀允許無效狀態(tài)下,對EOP地址更新單元發(fā)送來的控制信號進行判斷,如果控制信號為有效即寫入一個包尾地址(條件3)則下一個時鐘周期進入讀允許有效狀態(tài)(狀態(tài)2);如果控制信號為無效即沒有包尾地址寫入(條件2)則下一個時鐘周期保持在讀允許無效狀態(tài)(狀態(tài)1);在讀允許有效狀態(tài)(狀態(tài)2)下,將得到的當前邏輯通道的讀地址以及當前邏輯通道的包尾地址進行比較,如果當前EOP地址更新單元有發(fā)來控制信號,則同時對接收到的控制信號進行判斷,當讀地址與包尾地址不相同時(條件4),則下一個時鐘周期保持在讀允許有效狀態(tài)(狀態(tài)2);當讀地址與包尾地址相同,并且控制信號為有效即當前有新的包尾地址寫入(條件5)時,則下一個時鐘周期保持在讀允許有效狀態(tài)(狀態(tài)2);當讀地址與包尾地址相同,并且控制信號為無效即當前沒有新的包尾地址寫入(條件6)時,則下一個時鐘周期進入讀允許無效狀態(tài)(狀態(tài)1)。
對于讀判斷單元接收EOP地址更新單元發(fā)送來的寫地址的例子,在此不詳細描述。
請一并參閱圖5所示,圖5揭示了當前邏輯通道的寫操作流程,下面將結合圖2、3進行說明。
當接收到當前邏輯通道的寫有效信號時,步驟S101,從寫地址存儲單元中讀出當前通道的寫地址,并判斷當前寫允許是否有效;如果當前寫允許有效,則轉至步驟S102;如果當前寫允許無效,則轉至步驟S103。
步驟S102,利用該寫地址,將報文數(shù)據(jù)寫入外部存儲器中,以及將該寫地址作加1處理后寫入寫地址存儲單元中;同時判斷接收到的報文數(shù)據(jù)中的EOP信號是否有效,如果EOP信號有效,則轉至步驟S1021;如果EOP信號無效,則轉至步驟S1022。
步驟S1021,將該寫地址作為包尾地址寫入EOP地址存儲單元中當前通道所對應的存儲區(qū),同時輸出相應的條件信息;該信息可以是控制信號,也可以是該寫地址。
其中,在寫入之前,如果EOP地址存儲單元中當前通道所對應的存儲區(qū)為非空,則將該寫地址作為最新的包尾地址覆蓋原來的包尾地址,使得EOP地址存儲單元中當前通道所對應的存儲區(qū)中存儲的是最新的包尾地址,也就是最后一個報文的包尾地址。
步驟S1022,保持EOP地址存儲區(qū)中原有的EOP地址,不作更新處理。
步驟S103,不作寫數(shù)據(jù)操作。
請一并參閱圖6和圖7所示,揭示了當前邏輯通道的讀操作流程,下面將結合圖2進行說明。
在介紹讀操作流程之前,需要先介紹讀允許信號產生的流程,亦即判斷外部存儲器有無報文的方法,其中待判斷的存儲器可以是一個,也可以是多個;當為一個存儲器時,該存儲器劃分為多個緩存區(qū),各個緩存區(qū)被分別配置給相應的邏輯通道;當為多個存儲器時,每個邏輯通道分別配置有一個存儲器。
當接收到當前邏輯通道的讀請求時步驟S201從讀地址存儲單元中讀取當前邏輯通道的讀地址的同時,從EOP地址存儲單元中讀取當前邏輯通道的包尾地址;步驟S202比較該讀地址和包尾地址是否相同,如果相同,則執(zhí)行步驟S203;如果不相同,則執(zhí)行步驟S204。
步驟S203確定當前是否接收到EOP地址更新單元發(fā)送來的條件信息,如果接收到條件信息,并且該信息為控制信號,則執(zhí)行步驟S2031a;如果接收到條件信息,并且該信息為寫地址,則執(zhí)行步驟S2031b;如果沒有接收到條件信息,則執(zhí)行步驟S2032;步驟S2031a判斷該控制信號是否有效,如果有效,則執(zhí)行步驟S2031a1;如果無效,則執(zhí)行步驟S2031a2;步驟S2031a1確定外部存儲器中有整報文,產生下一個時鐘周期讀允許有效信號;步驟S2031a2確定外部存儲器中無整報文,產生下一個時鐘周期讀允許無效信號;步驟S2031b確定外部存儲器中有整報文,產生下一個時鐘周期讀允許有效信號;步驟S2032確定外部存儲器中無整報文,產生下一個時鐘周期讀允許無效信號;步驟S204確定外部存儲器中有整報文,產生下一個時鐘周期讀允許有效信號;下面接著介紹當前邏輯通道的讀操作流程當接收到當前通道的讀請求時,步驟S301從讀地址存儲單元中讀出當前通道的讀地址,并判斷當前讀允許信號是否有效,如果當前讀允許有效,則執(zhí)行步驟S302;如果當前讀允許無效,則執(zhí)行步驟S303;步驟S302利用該讀地址,將報文數(shù)據(jù)從外部存儲器中讀出轉發(fā),以及將該讀地址作加1處理后寫入讀地址存儲單元中;步驟S303立即停止當前通道的讀操作或切換到其他邏輯通道進行讀操作;參考圖8,是本發(fā)明時序示意圖,其中邏輯通道0的最新EOP地址為5,讀地址信號表示當前正在讀通道0的讀地址,圖中連續(xù)讀了5個邏輯通道0的報文數(shù)據(jù),當讀地址的值與當前通道最新EOP地址相等時(圖中都為5),通道切換指示信號變?yōu)楦唠娖?,通?有無包指示信號變?yōu)榈碗娖剑硎驹撨壿嬐ǖ?已將報文讀空了(該邏輯通道0的最后一個包尾數(shù)據(jù)已經讀出),同時切換到邏輯通道1即讀地址信號切換到邏輯通道1的地址,繼續(xù)進行讀操作,其中通道1有無包指示信號處于高電平指示邏輯通道1有報文,邏輯通道1的EOP地址為7,從圖8中可看到讀使能一直為高電平,因此沒有浪費一個時鐘周期。
本發(fā)明利用報文存儲轉發(fā)電路內部的EOP地址存儲單元存儲每個邏輯通道的最新包尾地址,再通過讀取本發(fā)明電路內部的包尾地址和讀地址實時進行比較,如果兩個地址相同并且當前沒有包尾數(shù)據(jù)寫入,則認為當前邏輯通道在外部存儲器中沒有整報文了,確定下一個時鐘周期讀允許無效,當下一個時鐘周期到來時,則立即切換到其它邏輯通道,解決了現(xiàn)有技術讀數(shù)據(jù)帶寬丟失的問題,從而對于多邏輯通道的情況,可以極大的提高存儲器的讀帶寬利用率,極大地提高了報文存儲轉發(fā)電路的性能;本發(fā)明通過判斷報文存儲轉發(fā)電路內部的地址而不是外部存儲器中數(shù)據(jù),可以規(guī)避外部存儲器讀操作延時大的缺點,從而通過充分利用電路內部存儲單元讀寫延時小的優(yōu)點,達到縮短延時的目的;另外本發(fā)明方案不需要對報文存儲轉發(fā)電路外的信號進行判斷,避免了現(xiàn)有技術中由于外部干擾而造成的內部邏輯的混亂或死循環(huán),從而增強了本發(fā)明電路的魯棒性。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的權利要求范圍之內。
權利要求
1.一種報文存儲轉發(fā)的方法,其特征在于,設置有一個用于存儲每個邏輯通道訪問外部存儲器所需讀地址和寫地址以及每個邏輯通道的最后包尾地址的存儲模塊,該方法包括如下步驟根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊中讀取到的該通道的寫地址,產生并輸出寫使能和寫地址,以及當接收到有效EOP信號時,輸出相應條件信息并將該寫地址作為包尾地址寫入存儲模塊;根據(jù)接收的邏輯通道的讀請求和從存儲模塊中讀取到的該通道的讀地址和包尾地址,產生并輸出讀使能和讀地址,以及當接收到條件信息時,根據(jù)該條件信息和該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號;根據(jù)接收到的讀寫地址以及讀寫使能對外部存儲器進行讀寫操作。
2.如權利要求1所述的方法,其特征在于,當接收到無效EOP信號時,所述輸出相應條件信息并將該寫地址作為包尾地址寫入存儲模塊的步驟具體為保持存儲模塊中原有的包尾地址,不作更新處理。
3.如權利要求1所述的方法,其特征在于,當沒有接收到條件信息時,所述根據(jù)該條件信息和該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號的步驟具體為根據(jù)該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號。
4.如權利要求3所述的方法,其特征在于,所述根據(jù)該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號的步驟包括當該讀地址與包尾地址相同時,產生下一個時鐘周期的讀允許無效信號;當該讀地址與包尾地址不相同時,產生下一個時鐘周期的讀允許有效信號。
5.如權利要求1所述的方法,其特征在于,所述根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊中讀取到的該通道的寫地址,產生并輸出寫使能和寫地址,以及當接收到有效EOP信號時,輸出相應條件信息并將該寫地址作為包尾地址寫入存儲模塊的步驟包括根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊中讀取到的該通道的讀地址和寫地址,輸出寫使能和寫地址,同時輸出寫地址信息以及指示信號或下一個時鐘周期的寫允許信號;當判斷出接收到的指示信號或接收到的上一個時鐘周期產生的寫允許信號為有效并且接收的EOP信號為有效時,發(fā)出相應條件信息并將接收到的寫地址作為包尾地址寫入存儲模塊。
6.如權利要求1所述的方法,其特征在于,所述根據(jù)接收的邏輯通道的讀請求和從存儲模塊中讀取到的該通道的讀地址和包尾地址,產生并輸出讀使能和讀地址,以及當接收到條件信息時,根據(jù)該條件信息和該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號的步驟包括根據(jù)接收到的邏輯通道的讀請求和接收到的上一個時鐘周期產生的讀允許信號以及從存儲模塊中讀取到的讀地址,產生并輸出相應的讀使能和讀地址;當接收到條件信息時,根據(jù)該條件信息以及對從存儲模塊中讀取到的包尾地址和讀地址比較的結果,產生并輸出下一個時鐘周期的讀允許信號。
7.如權利要求1所述的方法,其特征在于,所述根據(jù)接收的邏輯通道的讀請求和從存儲模塊中讀取到的該通道的讀地址和包尾地址,產生并輸出讀使能和讀地址,以及當接收到條件信息時,根據(jù)該條件信息和該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號的步驟包括根據(jù)接收的邏輯通道的讀請求,將從存儲模塊中讀取到的包尾地址和讀地址輸出,并結合接收到的上一個時鐘周期產生的讀允許信號,輸出相應的讀使能和讀地址;當接收到條件信息時,根據(jù)該條件信息以及對接收到的包尾地址和讀地址比較的結果,產生并輸出下一個時鐘周期的讀允許信號。
8.如權利要求6和7所述的方法,其特征在于,所述根據(jù)該條件信息以及對包尾地址和讀地址比較的結果,產生下一個時鐘周期的讀允許信號并輸出的步驟包括當該通道的讀地址和包尾地址相同,并且該條件信息為有效控制信號或者寫地址信息時,產生下一個時鐘周期讀允許有效信號并輸出;當通道的讀地址和包尾地址不相同時,產生下一個時鐘周期讀允許有效信號并輸出;當該通道的讀地址和包尾地址相同時,并且該條件信息為無效控制信號時,產生下一個時鐘周期讀允許無效信號并輸出。
9.如權利要求4和8所述的方法,其特征在于,所述產生下一個時鐘周期的讀允許無效信號的步驟之后還包括步驟立即停止當前通道或切換到其他邏輯通道。
10.一種報文存儲轉發(fā)電路,其特征在于,所述電路包括報文存儲轉發(fā)控制器和存儲器控制單元;所述報文存儲轉發(fā)控制器包括寫模塊、存儲模塊和讀模塊;其中,所述寫模塊根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊中讀取到的該通道的寫地址,產生并輸出寫使能和寫地址給存儲器控制單元,以及當接收到有效EOP信號時,輸出相應條件信息給讀模塊并將該寫地址作為包尾地址寫入存儲模塊;所述存儲模塊用于存儲每個邏輯通道訪問外部存儲器所需的讀地址和寫地址以及每個邏輯通道的最后包尾地址;所述讀模塊根據(jù)接收的邏輯通道的讀請求和從存儲模塊中讀取到的該通道的讀地址和包尾地址,產生并輸出讀使能和讀地址給存儲器控制單元,以及當接收到條件信息時,根據(jù)該條件信息和該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號;所述存儲器控制單元根據(jù)接收到的讀寫地址以及讀寫使能對外部存儲器進行讀寫操作。
11.如權利要求10所述的電路,其特征在于,所述寫模塊還用于當接收到無效EOP信號時,保持存儲模塊中原有的包尾地址,不作更新處理。
12.如權利要求10所述的電路,其特征在于,所述讀模塊還用于當沒有接收到條件信息時,根據(jù)該讀地址和包尾地址,產生下一個時鐘周期的讀允許信號。
13.如權利要求12所述的電路,其特征在于,所述讀模塊用于當該讀地址與包尾地址相同時,產生下一個時鐘周期的讀允許無效信號。
14.如權利要求10所述的電路,其特征在于,所述寫模塊包括寫操作模塊和EOP地址更新單元;所述寫操作模塊根據(jù)接收的邏輯通道的寫有效信號和從存儲模塊中讀取到的該通道的讀地址和寫地址,產生并輸出寫使能和寫地址給存儲器控制單元,同時輸出寫地址信息以及指示信號或下一個時鐘周期的寫允許信號給EOP地址更新單元;所述EOP地址更新單元用于當判斷出接收到的指示信號或接收到的寫操作模塊上一個時鐘周期產生的寫允許信號為有效并且接收到的EOP信號為有效時,發(fā)出相應條件信息給讀模塊并將接收到的寫地址作為包尾地址寫入存儲模塊。
15.如權利要求10所述的電路,其特征在于,所述讀模塊包括讀判斷單元和讀控制單元;所述讀控制單元根據(jù)接收到的邏輯通道的讀請求和接收到的上一個時鐘周期產生的讀允許信號以及從存儲模塊中讀取到的讀地址,輸出相應的讀使能和讀地址;所述讀判斷單元用于當接收到條件信息時,根據(jù)該條件信息以及對從存儲模塊中讀取到的包尾地址和讀地址比較的結果,產生并輸出下一個時鐘周期的讀允許信號給讀控制單元。
16.如權利要求10所述的電路,其特征在于,所述讀模塊包括讀判斷單元和讀控制單元;所述讀控制單元根據(jù)接收的邏輯通道的讀請求,將從存儲模塊中讀取到的包尾地址和讀地址輸出給讀判斷單元,并結合接收的讀判斷單元上一個時鐘周期產生的讀允許信號,輸出相應的讀使能和讀地址給存儲器控制單元;所述讀判斷單元用于當接收到條件信息時,根據(jù)該條件信息以及對接收到的包尾地址和讀地址比較的結果,產生并輸出下一個時鐘周期的讀允許信號給讀控制單元。
17.如權利要求15和16所述的電路,其特征在于,所述讀判斷單元用于當比較結果為讀地址和包尾地址相同以及條件信息為有效控制信號或者寫地址信息時,產生并輸出下一個時鐘周期的讀允許有效信號給讀控制單元。
18.如權利要求15和16所述的電路,其特征在于,所述讀判斷單元用于當比較結果為讀地址和包尾地址不相同時,產生并輸出下一個時鐘周期的讀允許有效信號給讀控制單元。
19.如權利要求15和16所述的電路,其特征在于,所述讀判斷單元用于當比較結果為讀地址和包尾地址相同以及條件信息為無效控制信號時,產生并輸出下一個時鐘周期的讀允許無效信號給讀控制單元。
20.如權利要求10所述的電路,其特征在于,所述存儲模塊具體包括EOP地址存儲單元,用于存儲每個邏輯通道的最后包尾地址;讀地址存儲單元,用于存儲每個邏輯通道訪問外部存儲器所需的讀地址;寫地址存儲單元,用于存儲每個邏輯通道訪問外部存儲器所需的寫地址。
全文摘要
本發(fā)明公開了一種報文存儲轉發(fā)的方法及相應的報文存儲轉發(fā)電路,應用本方法和電路,可以解決因電路訪問外部存儲器的延遲造成存儲器件讀帶寬丟失的問題,從而極大的提高存儲器件的讀帶寬利用率,極大地提高了整個報文存儲轉發(fā)電路的性能。
文檔編號H04L12/56GK1885827SQ200610061580
公開日2006年12月27日 申請日期2006年7月10日 優(yōu)先權日2006年7月10日
發(fā)明者梁創(chuàng) 申請人:華為技術有限公司