專利名稱:基于定長單元存儲變長分組的隊列管理方法及設備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字交換技術(shù)領(lǐng)域,尤其涉及一種基于定長單元存儲變長分組的隊列管理方法及設備,可用于分組交換系統(tǒng)中。
背景技術(shù):
分組交換是一種存儲轉(zhuǎn)發(fā)式的交換方式,其存儲轉(zhuǎn)發(fā)的基本數(shù)據(jù)單元是報文分組。分組的轉(zhuǎn)發(fā)流程包括分組接收和緩存,輸出端口查找,隊列管理,出隊調(diào)度,分組發(fā)送等步驟。隊列管理是分組交換設備的重要功能,隊列管理方法的優(yōu)劣對交換設備的性能和成本有重要的影響。隊列管理通常包括入隊和出隊兩個基本操作,入隊是為進入系統(tǒng)的分組分配存儲空間,控制分組進入正確的輸出隊列中,出隊是將輸出隊列中的分組讀出,發(fā)送到相應的輸出端口。分組能否成功入隊取決于該分組所在的輸出隊列是否有足夠的空閑空間,但是隊列的長度總是有限的,因此如果數(shù)據(jù)流太大,而隊列沒有空間去暫存這些新到的分組時,隊列中的一些分組就會被丟棄,常用的丟包機制有Drop Tail,DropFront,Random Drop等。 當隊列出現(xiàn)丟包,說明隊列已經(jīng)滿,如果隊列長時間工作在滿或幾乎滿的狀態(tài),會對系統(tǒng)的時延性能造成很大的影響,所以好的隊列管理方法應該設法避免隊列進入滿或幾乎滿的狀態(tài)。現(xiàn)有的管理隊列存儲空間的方法有固定分配和共享緩存兩種。固定分配法是給每個隊列預先分配固定大小的一片連續(xù)的存儲空間,一般是把全部的空間平均分配給所有的隊列或按隊列優(yōu)先級進行一定的加權(quán)后按照各隊列的權(quán)重分配。屬于某個隊列的分組獨享該隊列的空間。這種固定分配的方式簡單,實現(xiàn)和管理也比較容易,但是當總的存儲空間有限而隊列很多時,分給每個隊列的空間就很少了。由于各隊列之間不能共享緩存,當某一隊列到達的數(shù)據(jù)量很少時,其空間將被閑置,而其他的一些隊列此時卻可能因為沒有空間而出現(xiàn)丟包。固定分配的方式對存儲空間資源的利用率不高。共享緩存法是一種比固定分配法更為通用的方法,一般使用鏈表的方式實現(xiàn)。所有空閑可用的空間被組織為一存儲池,為所有的隊列所共享,當某一隊列有分組到來時,先到存儲池申請入隊空間,如果申請成功,申請到的空間將以鏈表的方式添加到該隊列的隊尾。當分組出隊后,隊列釋放的空間也將回歸存儲池中。因為各隊列的分組會交替到達,所以同一隊列的不同分組是不連續(xù)存儲的,因而需要用鏈表來組織。由于分組的長度是動態(tài)變化的,例如以太網(wǎng)幀長度從64字節(jié)到1518字節(jié)均有,所以在入隊時為每個分組申請多大的隊列空間對系統(tǒng)的性能影響較大。有兩種申請隊列空間的方式,一是為每個分組申請固定大小的空間,該空間足以存放一個最大的分組,這種方式實現(xiàn)簡單,但當進入系統(tǒng)的分組中小分組的比例較大時,隊列空間利用率較低。另一種方式是為每一個分組按其大小申請不一樣大的隊列空間,這種方法空間利用率高,但缺點在于由于每次分配的空間都不一樣大,分組出隊以后回收到存儲池的將是不連續(xù)且大小不一樣的小塊空間,隊列的維護以及從存儲池中找出一塊合適的空間分配給新到分組的搜索過程將比較復雜。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對上述已有技術(shù)的不足,提出的一種基于定長單元存儲變長分組的隊列管理方法及設備,以提高隊列存儲空間的利用率,降低隊列維護的復雜度。本發(fā)明是這樣實現(xiàn)的一 .本發(fā)明基于定長單元存儲變長分組的隊列管理方法,包括如下步驟(1)將分組交換系統(tǒng)中用于存儲分組的隊列存儲空間劃分為m個等長度的基本緩存單元 Buffer,并編號為 BufferO,Buffer 1, . . .,Buffer (m-1),Buffer (m),當分組交換系統(tǒng)中有分組進入時,將該分組分片存儲到η個基本緩存單元Buffer中,m由隊列存儲空間的大小決定,η由分組的長度決定,m和η都是正整數(shù)且η < m ;(2)為每個基本緩存單元Buffer設置一個緩存描述符BD,并編號為BDO,BDl,..., BD (m-1),BD (m),每個BD編號與Buffer號和分組寫入/讀出隊列存儲空間的邏輯入隊/出隊地址相對應;(3)分別配置緩存描述符存儲表BD RAM、空閑隊列信息表和輸出隊列信息表,并將所有的緩存描述符BD初始化到一條鏈表中,并用空閑隊列信息表和輸出隊列信息表共同維護這條鏈表;(4)在分組入隊時,根據(jù)分組的大小計算出存儲該分組需要的緩存描述符BD個數(shù),然后訪問空閑隊列信息表和輸出隊列信息表,查看是否有足夠的緩存描述符BD分配給該分組,如果有,則填寫緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,給出分組邏輯入隊地址,反之,則給出入隊失敗指示;(5)當某一輸出隊列有分組出隊時,讀取并修改緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,給出該分組的邏輯出隊地址;(6)按照分組邏輯入隊地址,將分組分片存儲到隊列存儲空間中;按照分組邏輯出隊地址,將分組分片從隊列存儲空間中搬出。二 .本發(fā)明基于定長單元存儲變長分組的隊列管理設備,包括共享緩存器,作為隊列存儲空間,用于緩存分組數(shù)據(jù);緩存描述符存儲表BD RAM,用于存放緩存描述符BD,它由m個表項組成,每個表項有4項信息第一分片標志位Fs、最后分片標志位F1、有效數(shù)據(jù)長度Lv和下一跳地址K,其中m為基本緩存單元Buffer的個數(shù);空閑隊列信息表,用于存放空閑隊列狀態(tài)信息,它由1個表項組成,表項有3項信息空閑隊列長度L1、空閑隊列尾指針Ptl和空閑隊列頭指針Phl ;輸出隊列信息表,用于存放輸出隊列狀態(tài)信息,它由r個表項組成,一個表項對應一個輸出隊列且每個表項有4項信息輸出隊列最大允許長度Lmax、輸出隊列長度L2、輸出隊列尾指針Pt2和輸出隊列頭指針Ph2,其中r為輸出隊列的個數(shù);入隊控制器,在有分組入隊時開始工作,即根據(jù)分組的大小計算出存儲該分組需要的緩存描述符BD個數(shù),并通過讀寫選通開關(guān),訪問空閑隊列信息表和輸出隊列信息表, 查看是否有足夠的緩存描述符BD分配給該分組,如果有,則填寫緩存描述符存儲表BD RAM 的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,將分組邏輯入隊地址
6發(fā)送給數(shù)據(jù)搬移器,反之,將入隊失敗指示發(fā)送給數(shù)據(jù)搬移器;出隊控制器,在有分組出隊時開始工作,即通過讀寫選通開關(guān),讀取并修改緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,將出隊分組的邏輯出隊地址發(fā)送給數(shù)據(jù)搬移器;讀寫選通開關(guān),用于協(xié)調(diào)入隊控制器和出隊控制器有序的操作緩存描述符存儲表 BD RAM和輸出隊列信息表RAM,防止出現(xiàn)讀寫沖突;數(shù)據(jù)搬移器,接收分組邏輯入隊地址,將分組分片存儲到共享緩存器中;接收分組邏輯出隊地址,將分組分片從共享緩存器中搬出。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點本發(fā)明由于根據(jù)入隊分組的大小合理分配基本緩存單元Buffer的個數(shù),相比不管分組大小都分配一塊足夠大的固定存儲空間,提高了隊列存儲空間的利用率;同時由于本發(fā)明的隊列存儲空間的分配和回收都是以定長基本緩存單元Buffer為單位進行的,相比按與分組同等大小的存儲空間為單位分配和回收存儲空間的方法,降低了隊列維護的復雜度。
圖1為本發(fā)明的總流程圖;圖2為本發(fā)明中入隊處理子流程圖;圖3為本發(fā)明中出隊處理子流程圖;圖4為本發(fā)明的設備結(jié)構(gòu)框圖。
具體實施例方式為使本發(fā)明目的、技術(shù)方案以及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進行近一步的詳細說明。本發(fā)明所涉及的實施例為由64K*32位構(gòu)成的256KB的隊列存儲空間,劃分基本緩存單元Buffer大小為64Byte。參照圖1,本發(fā)明基于定長單元存儲變長分組的隊列管理方法,包括以下步驟步驟1 將分組交換系統(tǒng)中用于存儲分組的隊列存儲空間劃分為4096個64Byte 的基本緩存單元Buffer。步驟2 為每個緩存描述符Buffer設置一個緩存描述符BD,兩者構(gòu)成一一對應的關(guān)系。步驟3 分別配置緩存描述符存儲表BD RAM、空閑隊列信息表和輸出隊列信息表。(3a)設置緩存描述符存儲表BD RAM中的所有表項的參數(shù)將緩存描述符存儲表BD RAM中所有表項的第一個參數(shù),即第一分片標志位Fs置為0;將緩存描述符存儲表BD RAM中所有表項的第二個參數(shù),即最后分片標志位F1置為0;將緩存描述符存儲表BD RAM中所有表項的第三個參數(shù),即有效數(shù)據(jù)長度Lv為置 0 ;將緩存描述符存儲表BD RAM中第i個表項的第四個參數(shù),即下一跳地址An置為i+1, i為整數(shù),且0彡i彡m-l,m為緩存描述符BD的個數(shù),本實例m為4096。(3b)設置空閑隊列信息表中的所有表項的參數(shù)將空閑隊列信息表中表項的第一個參數(shù),即空閑隊列長度L1置為m ;將空閑隊列信息表中表項的第二個參數(shù),即空閑隊列尾指針Ptl置為m ;將空閑隊列信息表中表項的第三個參數(shù),即空閑隊列頭指針Phl置為0。(3c)設置輸出隊列信息表中的所有表項的參數(shù)將輸出隊列信息表中第j個表項的第一個參數(shù),即輸出隊列最大允許長度Lmax置
Γ-1
為L」,0 ( j ( r-1, r為輸出隊列的個數(shù),Lj為大于1的正整數(shù)且Σ、= w ;
J=O將輸出隊列信息表中所有表項的第二個參數(shù),即輸出隊列長度L2置為0 ;將輸出隊列信息表中所有表項的第三個參數(shù),即輸出隊列尾指針Pt2置為0 ;將輸出隊列信息表中所有表項的第四個參數(shù),即輸出隊列頭指針Ph2置為0。步驟4 在分組入隊時,執(zhí)行分組入隊處理相關(guān)操作。參照圖2,本步驟的具體實現(xiàn)如下(4a)利用公式N= ,計算得出存儲入隊分組需要的緩存描述符BD個數(shù),其中
A
「]為上取整運算,Lp為分組的大小,A為基本緩存單元Buffer的大小,N為存儲該分組需要的緩存描述符BD個數(shù),本實例A為64Byte,分組大小Lp為lOOByte,則計算得N為2,但不局限于該參數(shù);(4b)判斷入隊條件(4bl)訪問空閑隊列信息表,讀取表項的第一個參數(shù),第一個參數(shù)為空閑隊列長度 L1;(4b2)訪問輸出隊列信息表,得到入隊分組所屬的輸出隊列所對應的表項,讀取該表項的第一個參數(shù)和第二個參數(shù),第一個參數(shù)為最大允許隊列長度Lmax,第二個參數(shù)為輸出隊列長度L2 ;(4b3)比較空閑隊列長度L1與存儲分組需要的緩存描述符BD個數(shù)N,若L1 >N, 則置比較結(jié)果R1為1,反之置為0;(4b4)將存儲分組需要的緩存描述符BD個數(shù)N與輸出隊列長度L2求和,比較該和與最大允許隊列長度Lmax,若N+L2 ( Lmax,則置比較結(jié)果&為1,反之置為0 ;(4b5)若隊=1且& = 1,則滿足入隊條件,執(zhí)行步驟(4d),反之,則不滿足入隊條件,執(zhí)行步驟Ge);(4c)給出入隊失敗指示,入隊處理操作結(jié)束;(4d)填寫緩存描述符存儲表BD RAM的相應表項,并給出分組入隊邏輯地址(4dl)以空閑隊列頭指針I(yè)3hl為地址訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第一個參數(shù)Fs寫為1,第三個參數(shù)Lv寫為64,若存儲分組需要的緩存描述符 BD個數(shù)N = 1,則第二個參數(shù)F1寫為1,反之寫為0 ; (4d2)將空閑隊列頭指針Phl賦值給最后分片地址A1,再將表項的第四個參數(shù)An賦值給下一次訪問地址At ;并將空閑隊列頭指針Phl的值作為分組入隊邏輯地址給出;
(4d3)記分組剩余長度Lr = Lp-Lv, Lp為分組長度,Lv為該表項對應的基本緩存單元Buffer中存放的有效數(shù)據(jù)長度;記分組剩余占用緩存描述符BD數(shù)凡=N_1,N為存儲分組需要的緩存描述符BD個數(shù);(4d4)判斷Nr是否為0,如果是,則執(zhí)行步驟(4d8),反之,則執(zhí)行步驟;(4d5)以下一次訪問地址At訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第一個參數(shù)Fs寫為0,若分組剩余占用緩存描述符BD數(shù)凡=1,將第二個參數(shù)F1寫為1,將第三個參數(shù)Lv寫為L,的值,反之,第二個參數(shù)F1寫為0,第三個參數(shù)Lv寫為64 ;(4d6)將下一次訪問地址At賦值給最后分片地址A1,再將表項的第四個參數(shù)An賦值給下一訪問地址At ;將下一次訪問地址At的值作為分組入隊邏輯地址給出;(4d7)將分組剩余長度L,減64,將分組剩余占用緩存描述符BD數(shù)N,減1 ;返回步驟(4d4);(4d8)以出隊分組所屬的輸出隊列尾指針訪問緩存描述符存儲表BD RAM,得到特定表項,將該特定表項的第四個參數(shù)An寫為空閑隊列頭指針I(yè)3hl的值。(4e)更新空閑隊列信息表和輸出隊列信息表中相應的表項(4el)訪問空閑隊列信息表,將表項的第一個參數(shù)L1減去存儲分組需要的緩存描述符BD個數(shù)N的值,將第三個參數(shù)I3hl修改為下一次訪問地址At的值;(4e2)訪問輸出隊列信息表,得到分組所屬輸出隊列對應的表項,將該表項的第二個參數(shù)L2加上存儲分組需要的緩存描述符BD個數(shù)N的值,將第三個參數(shù)Pt2修改為最后分片地址A1的值,入隊處理操作結(jié)束。步驟5 在分組出隊時,執(zhí)行出隊處理相關(guān)操作。參照圖3,本步驟的具體實現(xiàn)如下(5a)讀取并修改緩存描述符存儲表BD RAM的相應表項,同時給出分組出隊邏輯地址(5al)以分組所屬的輸出隊列頭指針Ph2為地址訪問緩存描述符存儲表BDRAM,得到特定表項,讀取該表項第二個參數(shù)F1和第四個參數(shù)An ;(5a2)將輸出隊列頭指針Ph2的值賦給最后分片地址A1,將表項的第四個參數(shù)An的值賦給下一次訪問地址At,并將輸出隊列頭指針Ph2的值作為分組出隊邏輯地址給出;(5a3)判斷F1是否為1,如果是,則執(zhí)行步驟,反之則執(zhí)行步驟(5a4);(5a4)以下一次訪問地址At訪問緩存描述符存儲表BD RAM,得到特定表項,讀取該表項第二個參數(shù)F1和第四個參數(shù)An,并將下一次訪問地址At的值作為分組出隊邏輯地址給出;(5a5)將下一次訪問地址At的值賦給最后分片地址A1,再將表項的第四個參數(shù)An 的值賦給下一次訪問地址At;返回執(zhí)行步驟(5a3);(5a6)以空閑隊列尾指針Ptl為地址,訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第四個參數(shù)An寫為分組所屬的輸出隊列頭指針Ph2的值。(5b)更新空閑隊列信息表和輸出隊列信息表中相應的表項(5bl)訪問空閑隊列信息表,將表項的第一個參數(shù)L1加上存儲分組需要的緩存描述符BD的個數(shù)N,將第二個參數(shù)Ptl修改為最后分片地址A1的值;(5b2)訪問輸出隊列信息表,得到分組所屬輸出隊列對應的表項,將該表項的第二個參數(shù)L2減去存儲分組需要的緩存描述符BD的個數(shù)N,將第三個參數(shù)Ph2修改為下一次訪問地址At的值,出隊處理操作結(jié)束。步驟6 按照分組邏輯入隊地址,將分組分片存儲到隊列存儲空間中;按照分組邏輯出隊地址,將分組分片從隊列存儲空間中搬出。參照圖4,本發(fā)明基于定長單元存儲變長分組的隊列管理設備,包括共享緩存器10、緩存描述符存儲表BD RAM20、空閑隊列信息表30、輸出隊列信息表40、入隊控制器50、出隊控制器60、讀寫選通開關(guān)70、數(shù)據(jù)搬移器80。其中入隊控制器 50與緩存描述符存儲表BD RAM20、空閑隊列信息表30及輸出隊列信息表40雙向連接;出隊控制器60與緩存描述符存儲表BD RAM20、空閑隊列信息表30及輸出隊列信息表40雙向連接;數(shù)據(jù)搬移器80與入隊控制器50及出隊控制器60單向連接,并與共享緩存器10雙向連接。其中所述的共享緩存器10,為輸入分組提供足夠的存儲空間。所述的緩存描述符存儲表BD RAM20,用于存放所有緩存描述符BD,并維護著隊列鏈表的連接關(guān)系。在有分組入隊時接受入隊控制器50的訪問,填寫相應表項的信息;在有分組出隊時接受出隊控制器60的訪問,讀取并修改相應表項的信息。其中,表項信息如表1 所示,表中的第一分片標志位和最后分片標志位分別占lbit,取0或1 ;結(jié)合本實例基本緩存單元Buffer為64Byte,表1中的有效數(shù)據(jù)長度占7bit,取值范圍從1 64,該參數(shù)占用 bit數(shù)可根據(jù)實際劃分基本緩存單元Buffer的大小做改動;結(jié)合本實例緩存描述符有4096 個,表1中的下一跳地址占12bit,取值范圍從0 4095,該參數(shù)的占用bit數(shù)可根據(jù)實際隊列存儲空間大小做擴展。表1 緩存描述符存儲表BD RAM表項信息
第一分片標志位最后分片標志位有效數(shù)據(jù)長度下一跳地址IbitIbit7bit12bit所述的空閑隊列信息表30,用于存放空閑隊列狀態(tài)信息。在有分組入隊或出隊時, 分別接受入隊控制器50和出隊控制器60的訪問,并讀取和修改空閑隊列狀態(tài)信息。其中, 空閑隊列狀態(tài)信息如表2所示,結(jié)合本實例緩存描述符有4096個,表2中的空閑隊列長度占13bit,取值范圍從0 4096,表2中的空閑隊列尾指針和空閑隊列頭指針分別占12bit, 取值范圍均從0 4095,這3項參數(shù)的占用bit數(shù)均可根據(jù)實際隊列存儲空間大小做擴展。表2空閑隊列狀態(tài)信息
空閑隊列長度空閑隊列尾指針空閑隊列頭指針13bit12bit12bit所述的輸出隊列信息表40,用于存放各個輸出隊列的狀態(tài)信息。在有分組入隊或出隊時,分別接收入隊控制器50和出隊控制器60的訪問,并讀取和修改輸出隊列的狀態(tài)信息。其中,輸出隊列狀態(tài)信息如表3所示,結(jié)合本實例緩存描述符有4096個,表3中的輸出隊列最大允許長度和輸出隊列長度分別占13bit,取值范圍從0 4096,表3中的輸出隊列尾指針和輸出隊列頭指針分別占12bit,取值范圍從0 4095,這4項參數(shù)的占用bit數(shù)均可根據(jù)實際隊列存儲空間大小做擴展。表3輸出隊列狀態(tài)信息
權(quán)利要求
1.一種基于定長單元存儲變長分組的隊列管理方法,包括如下步驟(1)將分組交換系統(tǒng)中用于存儲分組的隊列存儲空間劃分為m個等長度的基本緩存單元 Buffer,并編號為 BufferO,Buffer 1, . . .,Buffer (m-1),Buffer (m),當分組交換系統(tǒng)中有分組進入時,將該分組分片存儲到η個基本緩存單元Buffer中,m由隊列存儲空間的大小決定,η由分組的長度決定,m和η都是正整數(shù)且η < m ;(2)為每個基本緩存單元Buffer設置一個緩存描述符BD,并編號為BDO,BDl,..., BD (m-1),BD (m),每個BD編號與Buffer號和分組寫入/讀出隊列存儲空間的邏輯入隊/出隊地址相對應;(3)分別配置緩存描述符存儲表BDRAM、空閑隊列信息表和輸出隊列信息表,并將所有的緩存描述符BD初始化到一條鏈表中,并用空閑隊列信息表和輸出隊列信息表共同維護這條鏈表;(4)在分組入隊時,根據(jù)分組的大小計算出存儲該分組需要的緩存描述符BD個數(shù),然后訪問空閑隊列信息表和輸出隊列信息表,查看是否有足夠的緩存描述符BD分配給該分組,如果有,則填寫緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,給出分組邏輯入隊地址,反之,則給出入隊失敗指示;(5)當某一輸出隊列有分組出隊時,讀取并修改緩存描述符存儲表BDRAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,給出該分組的邏輯出隊地址;(6)按照分組邏輯入隊地址,將分組分片存儲到隊列存儲空間中;按照分組邏輯出隊地址,將分組分片從隊列存儲空間中搬出。
2.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(3) 所涉及的配置緩存描述符存儲表BD RAM,包括如下操作將緩存描述符存儲表BD RAM中所有表項的第一個參數(shù)第一分片標志位Fs置為0 ;將緩存描述符存儲表BD RAM中所有表項的第二個參數(shù)最后分片標志位F1置為0 ;將緩存描述符存儲表BD RAM中所有表項的第三個參數(shù)有效數(shù)據(jù)長度Lv為置0 ;將緩存描述符存儲表BD RAM中第i個表項的第四個參數(shù)下一跳地址An置為i+1,i為整數(shù),且0彡i彡m-1,m為緩存描述符BD的個數(shù)。
3.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(3) 中所涉及的配置空閑隊列信息表,包括如下操作將空閑隊列信息表中表項的第一個參數(shù)空閑隊列長度L1置為m,m為緩存描述符BD的個數(shù);將空閑隊列信息表中表項的第二個參數(shù)空閑隊列尾指針Ptl置為m,m為緩存描述符BD 的個數(shù);將空閑隊列信息表中表項的第三個參數(shù)空閑隊列頭指針I(yè)3hl置為0。
4.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(3) 所涉及的配置輸出隊列信息表,包括如下操作將輸出隊列信息表中第j個表項的第一個參數(shù)輸出隊列最大允許長度Lmax置為Lj,r-1O^ j ^r-Lr為輸出隊列的個數(shù),Lj為大于1的正整數(shù)且Σ、= w ;J=O將輸出隊列信息表中所有表項的第二個參數(shù)輸出隊列長度L2置為0 ;將輸出隊列信息表中所有表項的第三個參數(shù)輸出隊列尾指針Pt2置為0 ; 將輸出隊列信息表中所有表項的第四個參數(shù)輸出隊列頭指針Ph2置為0。
5.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(4)所述的根據(jù)分組的大小計算出存儲該分組需要的緩存描述符BD個數(shù),是利用公式N= ^A進行計算,其中「 為上取整運算,Lp為分組的大小,A基本緩存單元Buffer的大小,N為存儲該分組需要的緩存描述符BD個數(shù)。
6.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(4) 所述的填寫緩存描述符存儲表BD RAM的相應表項,按如下步驟進行(4a)以空閑隊列頭指針PhlS地址訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第一個參數(shù)Fs寫為1,第三個參數(shù)Lv寫為64,若存儲分組需要的緩存描述符BD個數(shù) N= 1,則將第二個參數(shù)F1寫為1,反之寫為0;(4b)將空閑隊列頭指針I(yè)3hl的值賦給最后分片地址A1,再將表項的第四個參數(shù)An的值賦給下一次訪問地址At;(4c)記分組剩余長度k = Lp-Lv, Lp為分組長度,Lv為該表項對應的基本緩存單元 Buffer中存放的有效數(shù)據(jù)長度;記分組剩余占用緩存描述符BD數(shù)凡=N_l,N為存儲分組需要的緩存描述符BD個數(shù);(4d)判斷凡是否為0,如果是,則執(zhí)行步驟(4h),反之,則執(zhí)行步驟(4e); (4e)以下一次訪問地址At訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第一個參數(shù)Fs寫為0,若分組剩余占用緩存描述符BD數(shù)凡=1,將第二個參數(shù)F1寫為1,將第三個參數(shù)Lv寫為L,的值,反之,將第二個參數(shù)F1寫為0,第三個參數(shù)Lv寫為64 ;(4f)將下一次訪問地址At的值賦給最后分片地址A1,再將表項的第四個參數(shù)An的值賦給下一訪問地址At;(4g)將分組剩余長度k減64,將分組剩余占用緩存描述符BD數(shù)凡減1 ;返回步驟 (4d);(4h)以出隊分組所屬的輸出隊列尾指針訪問緩存描述符存儲表BD RAM,得到特定表項,將該特定表項的第四個參數(shù)An寫為空閑隊列頭指針I(yè)^hl的值。
7.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(4) 所述的更新空閑隊列信息表和輸出隊列信息表中相應的表項,按如下步驟進行首先,訪問空閑隊列信息表,將表項的第一個參數(shù)L1減去存儲分組需要的緩存描述符 BD個數(shù)N的值,將第三個參數(shù)Phl修改為下一次訪問地址At的值;然后,訪問輸出隊列信息表,得到分組所屬輸出隊列對應的表項,將該表項的第二個參數(shù)L2加上存儲分組需要的緩存描述符BD個數(shù)N的值,將第三個參數(shù)Pt2修改為最后分片地 JatA1的值。
8.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(5) 所述的讀取并修改緩存描述符存儲表BD RAM的相應表項,按如下步驟進行(5a)以分組所屬的輸出隊列頭指針Ph2S地址訪問緩存描述符存儲表BD RAM,得到特定表項,讀取該表項第二個參數(shù)F1和第四個參數(shù)An ;(5b)將輸出隊列頭指針Ph2的值賦給最后分片地址A1,將表項的第四個參數(shù)An的值賦給下一次訪問地址At;(5c)判斷F1是否為1,如果是,則執(zhí)行步驟(5f),反之則執(zhí)行步驟(5d); (5d)以下一次訪問地址At訪問緩存描述符存儲表BD RAM,得到特定表項,讀取該表項第二個參數(shù)F1和第四個參數(shù)An ;(5e)將下一次訪問地址At的值賦給最后分片地址A1,再將表項的第四個參數(shù)An的值賦給下一次訪問地址At ;返回執(zhí)行步驟(5c);(5f)以空閑隊列尾指針Ptl為地址,訪問緩存描述符存儲表BD RAM,得到特定表項,將該表項的第四個參數(shù)An寫為分組所屬的輸出隊列頭指針Ph2的值。
9.根據(jù)權(quán)利要求1所述的基于定長單元存儲變長分組的隊列管理方法,其中步驟(5) 所述的更新空閑隊列信息表和輸出隊列信息表中相應的表項,按如下步驟進行首先,訪問空閑隊列信息表,將表項的第一個參數(shù)L1加上存儲分組需要的緩存描述符 BD個數(shù)N的值,將第二個參數(shù)Ptl修改為最后分片地址A1的值;然后,訪問輸出隊列信息表,得到分組所屬輸出隊列對應的表項,將該表項的第二個參數(shù)L2減去存儲分組需要的緩存描述符BD的個數(shù)N,將第三個參數(shù)Ph2修改為下一次訪問地址At的值。
10.一種基于定長單元存儲變長分組的隊列管理設備,包括 共享緩存器,作為隊列存儲空間,用于緩存分組數(shù)據(jù);緩存描述符存儲表BD RAM,用于存放緩存描述符BD,它由m個表項組成,每個表項有4 項信息第一分片標志位Fs、最后分片標志位F1、有效數(shù)據(jù)長度Lv和下一跳地址An,其中m 為基本緩存單元Buffer的個數(shù);空閑隊列信息表,用于存放空閑隊列狀態(tài)信息,它由1個表項組成,表項有3項信息空閑隊列長度L1、空閑隊列尾指針Ptl和空閑隊列頭指針Phl ;輸出隊列信息表,用于存放輸出隊列狀態(tài)信息,它由r個表項組成,一個表項對應一個輸出隊列且每個表項有4項信息輸出隊列最大允許長度Lmax、輸出隊列長度L2、輸出隊列尾指針Pt2和輸出隊列頭指針Ph2,其中r為輸出隊列的個數(shù);入隊控制器,在有分組入隊時開始工作,即根據(jù)分組的大小計算出存儲該分組需要的緩存描述符BD個數(shù),并通過讀寫選通開關(guān),訪問空閑隊列信息表和輸出隊列信息表,查看是否有足夠的緩存描述符BD分配給該分組,如果有,則填寫緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,將分組邏輯入隊地址發(fā)送給數(shù)據(jù)搬移器,反之,將入隊失敗指示發(fā)送給數(shù)據(jù)搬移器;出隊控制器,在有分組出隊時開始工作,即通過讀寫選通開關(guān),讀取并修改緩存描述符存儲表BD RAM的相應表項,更新空閑隊列信息表和輸出隊列信息表中相應的表項,將出隊分組的邏輯出隊地址發(fā)送給數(shù)據(jù)搬移器;讀寫選通開關(guān),用于協(xié)調(diào)入隊控制器和出隊控制器有序的操作緩存描述符存儲表BD RAM和輸出隊列信息表RAM,防止出現(xiàn)讀寫沖突;數(shù)據(jù)搬移器,接收分組邏輯入隊地址,將分組分片存儲到共享緩存器中;接收分組邏輯出隊地址,將分組分片從共享緩存器中搬出。
全文摘要
本發(fā)明公開了一種基于定長單元存儲變長分組的隊列管理方法及設備。其方法是將隊列存儲空間劃分成等大小的基本緩存單元,并為每個單元設置一個緩存描述符,將這些描述符存在緩存描述符存儲表中形成鏈表;從緩存描述符存儲表中為入隊分組分配所需的緩存描述符,填寫對應的表項信息,給出入隊邏輯地址;從緩存描述符存儲表中找出出隊分組占用的緩存描述符,并給出出隊邏輯地址;分組入隊或出隊后,更新空閑隊列信息表和輸出隊列信息表;由入隊邏輯地址,將分組分片搬到隊列存儲空間中,由出隊邏輯地址,將分組分片從隊列存儲空間中搬出。本發(fā)明提高了隊列存儲空間的利用率,降低了隊列維護的復雜度,可用于分組交換系統(tǒng)中。
文檔編號H04L12/56GK102377682SQ20111041167
公開日2012年3月14日 申請日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者劉勇, 劉煥峰, 姚明旿, 張冰, 張奭, 潘偉濤, 邱智亮, 韓冬, 鮑民權(quán), 龔晨亮 申請人:西安電子科技大學