本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及多隊列數(shù)據(jù)的存儲規(guī)則、管理與快速查詢多隊列的方法、管理多隊列數(shù)據(jù)存儲的系統(tǒng)。
背景技術(shù):在現(xiàn)代通信網(wǎng)絡(luò)中,數(shù)據(jù)的存儲是網(wǎng)絡(luò)中的重要組成部分。數(shù)據(jù)存儲是數(shù)據(jù)流在加工過程中產(chǎn)生的臨時文件或加工過程中需要查找的信息。數(shù)據(jù)以某種格式記錄在計算機內(nèi)部或外部存儲介質(zhì)上。尤其在通信節(jié)點上,數(shù)據(jù)在處理過程中需要存儲,如交換設(shè)備等。其中,對于多個隊列的存儲,是通信系統(tǒng)中數(shù)據(jù)緩存的重要類型。雖然數(shù)據(jù)的存儲,已經(jīng)有多種實現(xiàn)方式,但是現(xiàn)有的技術(shù)仍然存在以下問題:傳統(tǒng)的多隊列數(shù)據(jù)存儲,通常采用分區(qū)存儲的處理方式,由于數(shù)據(jù)的隨機性,每個隊列的數(shù)據(jù)多少可能變化很大,每個隊列使用單獨的分區(qū)存儲空間,往往使得數(shù)據(jù)較少的隊列空間浪費,無法充分利用全部的存儲空間。本發(fā)明針對以上幾點,采取了分塊式、帶有塊指針并且每塊空間存在于不同的邏輯隊列中的方式,解決了多隊列共用存儲空間,提升了功能性和空間利用率。在具有交換功能的設(shè)備中,為防止阻塞,交換設(shè)備有時需要在輸入、輸出端都帶有緩存功能,但是這也使得完成交換,需要從輸入隊列轉(zhuǎn)入輸出隊列,增加了處理時延。本發(fā)明可以使得交換動作,只涉及指針的更新,而無需將數(shù)據(jù)讀出、寫入的更換隊列過程,提高了交換速度。在PON網(wǎng)絡(luò)中,將互相通信的ONU的兩組數(shù)據(jù),通過OLT運算編碼合為一組數(shù)據(jù)并下行發(fā)送,與源ONU存儲的其中一組原始數(shù)據(jù)再進行逆運算,即可獲得另一組數(shù)據(jù),這就是網(wǎng)絡(luò)編碼在PON中的應(yīng)用,可以減少下行數(shù)據(jù)流量。本發(fā)明針對這一應(yīng)用,可以將所有網(wǎng)絡(luò)編碼數(shù)據(jù)存儲在同一存儲空間,避免了因為網(wǎng)絡(luò)編碼數(shù)據(jù)的隨機性帶來的空間浪費,并通過隊列指針的索引,大大提高數(shù)據(jù)處理的靈活性。
技術(shù)實現(xiàn)要素:本發(fā)明提供了一種網(wǎng)絡(luò)編碼數(shù)據(jù)的存儲空間的設(shè)計方式,能夠快速的查詢、更新數(shù)據(jù)存儲空間中的內(nèi)容,是一種新的管理網(wǎng)絡(luò)編碼數(shù)據(jù)的存儲規(guī)則的方法,實現(xiàn)簡單、高效。為了實現(xiàn)上述技術(shù),本發(fā)明通過以下技術(shù)方案實現(xiàn):建立緩存空間體系,主要包括存儲有效數(shù)據(jù)的子空間、記錄子空間信息的子空間指針和記錄多隊列信息的隊列指針,通過子空間指針和隊列指針的記錄,使得子空間分別屬于不同的隊列;在初始化緩存空間后,在子空間中寫入或讀出數(shù)據(jù),并通過更新子空間指針和隊列指針,使得在隊列中加入或刪除子空間,完成多個隊列共用所有子空間的管理。步驟1,建立緩存空間,主要包括存儲有效數(shù)據(jù)的子空間K、記錄子空間信息的子空間指針P和記錄多隊列信息的隊列指針LP;其中,子空間與子空間指針具有固定對應(yīng)關(guān)系;根據(jù)隊列指針及子空間指針,確定每個子空間分別屬于不同的隊列;步驟2,在使用緩存空間時,首先初始化各個子空間K和子空間指針P,初始化隊列指針LP;步驟3,在寫入數(shù)據(jù)時,需要在子空間K中存入數(shù)據(jù),更新子空間指針P,更新隊列指針LP,在隊列中加入子空間K;步驟4,在讀出數(shù)據(jù)時,需要從子空間K中讀出數(shù)據(jù),更新子空間指針P,更新隊列指針LP,從隊列中刪除子空間K。步驟5,如果緩存數(shù)據(jù)需要記錄所有數(shù)據(jù)的時間順序,可以同時加入時間隊列,包括子空間指針和隊列指針信息;在寫入數(shù)據(jù)時,在時間隊列中加入子空間;在讀出數(shù)據(jù)時,從時間隊列中刪除子空間;步驟6,如果交換數(shù)據(jù),需要更新子空間指針P和隊列指針LP,即將子空間K從一個隊列交換到另一個隊列。一方面,所述“建立緩存空間,主要包括存儲有效數(shù)據(jù)的子空間、記錄子空間信息的子空間指針和記錄多隊列信息的隊列指針”,具體為:步驟1-1,建立子空間,將空間分塊,每一塊子空間可以存儲若干字節(jié)數(shù)據(jù),子空間的大小由存儲數(shù)據(jù)的特征決定;如果一組數(shù)據(jù)超出子空間存儲上限,可以使用多個子空間K存儲。步驟1-2,建立子空間指針,每一項記錄一個子空間的信息,主要包括子空間有效數(shù)據(jù)結(jié)束地址,包括在數(shù)據(jù)隊列或空閑隊列中的前一個子空間地址和后一個子空間地址,可以包括時間隊列中的前一個子空間地址和后一個子空間地址,可以包括存入數(shù)據(jù)的時間。步驟1-3,建立隊列指針,每一項記錄邏輯隊列起始和結(jié)束的子空間,邏輯隊列分為數(shù)據(jù)隊列和空閑隊列兩種類型,其中數(shù)據(jù)隊列是指邏輯上屬于一組數(shù)據(jù)的子空間組成的隊列,可以有多個數(shù)據(jù)隊列;空閑隊列是指當(dāng)前未使用的子空間組成的隊列,通常只需要有一個空閑隊列。步驟1-4,還可以建立時間隊列指針,記錄時間隊列起始和結(jié)束的子空間,時間隊列是指根據(jù)時間順序,子空間組成的隊列。所述步驟1-3“邏輯隊列分為數(shù)據(jù)隊列和空閑隊列兩種類型,其中數(shù)據(jù)隊列是指邏輯上屬于一組數(shù)據(jù)的子空間組成的隊列,可以有多個數(shù)據(jù)隊列”,具體為步驟1-3-1,如果緩存空間中不對數(shù)據(jù)進行區(qū)分,則可以只有一個數(shù)據(jù)隊列,表示存入有效數(shù)據(jù)的子空間組成的隊列;步驟1-3-2,如果為有多個收發(fā)端口,數(shù)據(jù)需要根據(jù)接收或發(fā)送端口分類,則每個端口對應(yīng)一個數(shù)據(jù)隊列,數(shù)據(jù)隊列數(shù)量與端口數(shù)量有關(guān);步驟1-3-3,如果數(shù)據(jù)根據(jù)源、目的地址進行區(qū)分,從同一個源地址到同一個目的地址的數(shù)據(jù)屬于一組數(shù)據(jù),則數(shù)據(jù)隊列數(shù)量與源地址與目的地址的組合有關(guān);步驟1-3-4,如果數(shù)據(jù)隊列可能性多,但具有規(guī)律,數(shù)據(jù)隊列指針可以使用列表的方式,進行排列管理;當(dāng)步驟3-2中端口數(shù)較多,使用一維列表;步驟3-3中源地址和目的地址組合,使用二維列表;步驟1-3-5,如果數(shù)據(jù)隊列可能性多,不適宜窮舉,步驟3-3中源地址與目的地址組合情況很多時,可以將數(shù)據(jù)隊列加入標(biāo)簽,標(biāo)記當(dāng)前每個數(shù)據(jù)隊列的類型,同類型的數(shù)據(jù)存入相同的隊列中,當(dāng)某一隊列清空,允許更新標(biāo)簽,用于存儲其他隊列數(shù)據(jù)。所述步驟1-3“空閑隊列是指當(dāng)前未使用的子空間組成的隊列,通常只需要有一個空閑隊列”,具體為步驟1-3-6,如果所有子空間沒有區(qū)別,可以在任何數(shù)據(jù)隊列中使用,只需要一個空閑隊列,此時為所有隊列共用緩存空間的方式;步驟1-3-7,如果所有子空間存在區(qū)別,允許使用多個空閑隊列,每個空閑隊列可以使用的規(guī)則不同,此時緩存空間不是完全共用的方式。另一方面,所述“在使用緩存空間時,首先初始化各個子空間K和子空間指針P,初始化隊列指針LP”,具體為步驟2-1,定義一個子空間為空閑子空間NK,不存儲實際有效數(shù)據(jù),特殊子空間NK可以只邏輯上存在,而沒有實際例化。定義一個無效時間NT,用于表示存入數(shù)據(jù)時間無效。步驟2-2,初始化子空間是指將子空間中的數(shù)據(jù)清除,由于子空間是否存儲有效數(shù)據(jù),取決于子空間是否屬于空閑隊列,因此初始化子空間可以不進行實際操作。步驟2-3,初始化子空間指針是指將子空間指針,按照子空間在空閑隊列中的方式進行賦值,即有效數(shù)據(jù)結(jié)束地址為0,第1個子空間指針前一個子空間地址為空閑子空間,后一個子空間地址為第2個子空間,中間每個子空間指針的前一個子空間地址和后一個子空間地址按順序排列,最后1個子空間指針前一個子空間地址為倒數(shù)第2個子空間,后一個子空間地址為空閑子空間。每個子空間指針時間隊列中的前一個子空間地址和后一個子空間地址,均為空閑子空間;存入數(shù)據(jù)時間初始化為無效時間。步驟2-4,初始化隊列指針是指將數(shù)據(jù)隊列和空閑隊列和時間隊列的指針賦值,數(shù)據(jù)隊列起始和結(jié)束子空間為空閑子空間,表示數(shù)據(jù)隊列為空;空閑隊列起始子空間為第1個子空間,結(jié)束子空間為最后1個子空間,結(jié)合子空間指針初始化,表示所有子空間屬于空閑隊列;時間隊列起始和結(jié)束子空間為空閑子空間,表示時間隊列為空。所述“在寫入數(shù)據(jù)時,需要在子空間K中存入數(shù)據(jù),更新子空間指針P,更新隊列指針LP,在隊列中加入子空間K”,具體為步驟3-1,寫入數(shù)據(jù)時,根據(jù)數(shù)據(jù)的類型,確定子空間應(yīng)該屬于的數(shù)據(jù)隊列。步驟3-2,如果空閑隊列為空,則不可以寫入數(shù)據(jù);如果空閑隊列不為空,則可以寫入數(shù)據(jù)。步驟3-3,查詢空閑隊列的起始子空間,在此子空間中存入數(shù)據(jù),數(shù)據(jù)結(jié)束時記錄有效數(shù)據(jù)結(jié)束地址。步驟3-4,如果數(shù)據(jù)隊列不為空,則數(shù)據(jù)隊列原來的結(jié)束子空間,其子空間指針后一個子空間為寫入數(shù)據(jù)的子空間;如果數(shù)據(jù)隊列為空,則跳過此步驟6-4。步驟3-5,寫入數(shù)據(jù)的子空間,其子空間指針前一個子空間為數(shù)據(jù)隊列原有的結(jié)束子空間;子空間指針后一個子空間為空閑子空間。步驟3-6,空閑隊列原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果空閑隊列此時為空,則跳過此步驟6-6。步驟3-7,數(shù)據(jù)隊列如果原本為空,則起始子空間為寫入數(shù)據(jù)的子空間;數(shù)據(jù)隊列如果不為空,則起始子空間不變;數(shù)據(jù)隊列結(jié)束子空間為寫入數(shù)據(jù)的子空間。步驟3-8,空閑隊列起始子空間為空閑隊列原來的第2個子空間,如果為空閑子空間,則此時空閑隊列為空,空閑隊列結(jié)束子空間也為空閑子空間。所述“在讀出數(shù)據(jù)時,需要從子空間K中讀出數(shù)據(jù),更新子空間指針P,更新隊列指針LP,從隊列中刪除子空間K”,具體為步驟4-1,讀出數(shù)據(jù)時,根據(jù)數(shù)據(jù)的類型,確定子空間應(yīng)該屬于的數(shù)據(jù)隊列。步驟4-2,如果數(shù)據(jù)隊列為空,則不可以讀出數(shù)據(jù),如果數(shù)據(jù)隊列不為空,則可以讀出數(shù)據(jù)。步驟4-3,查詢數(shù)據(jù)隊列的起始子空間,從此子空間中讀出數(shù)據(jù),直到有效數(shù)據(jù)結(jié)束。步驟4-4,如果空閑隊列不為空,則空閑隊列原來的結(jié)束子空間,其子空間指針后一個子空間為讀出數(shù)據(jù)的子空間;如果空閑隊列為空,則跳過此步驟7-4。步驟4-5,讀出數(shù)據(jù)的子空間,其子空間指針前一個子空間為空閑隊列原有的結(jié)束子空間;子空間指針后一個子空間為空閑子空間。步驟4-6,數(shù)據(jù)隊列原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果數(shù)據(jù)隊列此時為空,則跳過此步驟7-6。步驟4-7,空閑隊列如果原本為空,則起始子空間為讀出數(shù)據(jù)的子空間;空閑隊列如果不為空,則起始子空間不變;空閑隊列結(jié)束子空間為讀出數(shù)據(jù)的子空間。步驟4-8,數(shù)據(jù)隊列起始子空間為數(shù)據(jù)隊列原來的第2個子空間,如果為空閑子空間,則此時數(shù)據(jù)隊列為空,數(shù)據(jù)隊列結(jié)束子空間也為空閑子空間。所述“如果緩存數(shù)據(jù)需要記錄所有數(shù)據(jù)的時間順序,可以同時加入時間隊列,包括子空間指針和隊列指針信息;在寫入數(shù)據(jù)時,在時間隊列中加入子空間”,具體為步驟5-1,如果空閑隊列為空,則不可以寫入數(shù)據(jù);如果空閑隊列不為空,則可以寫入數(shù)據(jù)。步驟5-2,查詢空閑隊列的起始子空間,在此子空間中存入數(shù)據(jù)。步驟5-3,如果時間隊列不為空,則時間隊列原來的結(jié)束子空間,其子空間指針的時間隊列后一個子空間為寫入數(shù)據(jù)的子空間;如果時間隊列為空,則跳過此步驟7-3。步驟5-4,寫入數(shù)據(jù)的子空間,其子空間指針的時間隊列前一個子空間為時間隊列原有的結(jié)束子空間;子空間指針的時間隊列后一個子空間為空閑子空間;更新存入數(shù)據(jù)的時間。步驟5-5,時間隊列如果原來為空,則起始子空間為寫入數(shù)據(jù)的子空間;時間隊列如果不為空,則起始子空間不變;時間隊列結(jié)束子空間為寫入數(shù)據(jù)的子空間。所述“如果緩存數(shù)據(jù)需要記錄所有數(shù)據(jù)的時間順序,可以同時加入時間隊列,包括子空間指針和隊列指針信息;在讀出數(shù)據(jù)時,從時間隊列中刪除子空間”,具體為步驟5-6,如果數(shù)據(jù)隊列為空,則不可以讀出數(shù)據(jù),如果數(shù)據(jù)隊列不為空,則可以讀出數(shù)據(jù)。步驟5-7,查詢數(shù)據(jù)隊列的起始子空間,從此子空間中讀出數(shù)據(jù)。步驟5-8,讀出數(shù)據(jù)的子空間在時間隊列中前一個子空間,其子空間指針時間隊列后一個子空間為讀出數(shù)據(jù)的子空間在時間隊列中后一個子空間。步驟5-9,讀出數(shù)據(jù)的子空間在時間隊列中后一個子空間,其子空間指針時間隊列前一個子空間為讀出數(shù)據(jù)的子空間在時間隊列中前一個子空間。步驟5-10,讀出數(shù)據(jù)的子空間如果是時間隊列起始子空間,則時間隊列起始子空間為時間隊列原來的第2個子空間;讀出數(shù)據(jù)的子空間如果是時間隊列結(jié)束子空間,則時間隊列結(jié)束子空間為時間隊列原來的倒數(shù)第2個子空間。所述“如果交換數(shù)據(jù),需要更新子空間指針P和隊列指針LP,即將子空間K從一個隊列交換到另一個隊列”,具體為步驟6-1,根據(jù)數(shù)據(jù)的類型,確定輸入數(shù)據(jù)應(yīng)該屬于的數(shù)據(jù)隊列K1,在子空間中寫入數(shù)據(jù)。步驟6-2,根據(jù)交換查表,確定數(shù)據(jù)輸出應(yīng)該屬于的數(shù)據(jù)隊列K2。步驟6-3,查詢輸入數(shù)據(jù)隊列K1起始子空間,即為實現(xiàn)交換的子空間。步驟6-4,如果數(shù)據(jù)隊列K2不為空,則數(shù)據(jù)隊列K2原來的結(jié)束子空間,其子空間指針后一個子空間為實現(xiàn)交換的子空間;如果數(shù)據(jù)隊列K2為空,則跳過此步驟9-4。步驟6-5,實現(xiàn)交換的子空間,其子空間指針前一個子空間為數(shù)據(jù)隊列K2原有的結(jié)束子空間:子空間指針后一個子空間為空閑子空間。步驟6-6,數(shù)據(jù)隊列K1原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果數(shù)據(jù)隊列K1此時為空,則跳過此步驟9-6。步驟6-7,數(shù)據(jù)隊列K2如果原本為空,則起始子空間為實現(xiàn)交換的子空間;數(shù)據(jù)隊列K2如果不為空,則起始子空間不變;數(shù)據(jù)子空間K2結(jié)束子空間為實現(xiàn)交換的子空間。步驟6-8,數(shù)據(jù)隊列K1起始子空間為數(shù)據(jù)隊列K1原來的第2個子空間,如果為空閑子空間,則此時數(shù)據(jù)隊列K1為空,數(shù)據(jù)隊列K1結(jié)束子空間也為空閑子空間。步驟6-9,從輸出數(shù)據(jù)隊列K2子空間中讀出數(shù)據(jù),完成數(shù)據(jù)輸出。步驟6-10,如果交換查表能夠完成快速查詢,則可以通過指針操作,直接寫入輸出數(shù)據(jù)隊列K2中;如果數(shù)據(jù)輸出能夠即時完成,則可以直接從輸入數(shù)據(jù)隊列K1中,讀出數(shù)據(jù),完成數(shù)據(jù)輸出。由于多隊列數(shù)據(jù)共用緩存空間,因此可以簡化交換操作。另一方面,一種管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng),其特征在于,所述系統(tǒng)包括:數(shù)據(jù)存儲單元,用于存放需要緩存的數(shù)據(jù),按照分塊的方式分為若干子空間。數(shù)據(jù)存儲指針單元,用于存放數(shù)據(jù)存儲單元的指針信息,與數(shù)據(jù)存儲單元具有固定對應(yīng)關(guān)系。邏輯隊列指針單元,用于存放數(shù)據(jù)隊列和空閑隊列的指針信息,可以存放時間隊列的指針信息。初始化單元,用于對數(shù)據(jù)存儲單元和數(shù)據(jù)存儲指針單元進行初始化,對邏輯隊列指針單元進行初始化。數(shù)據(jù)寫入單元,用于寫入數(shù)據(jù)時,控制數(shù)據(jù)存儲單元寫入數(shù)據(jù),控制數(shù)據(jù)存儲指針單元和邏輯隊列指針單元的更新。數(shù)據(jù)讀出單元,用于讀出數(shù)據(jù)時,控制數(shù)據(jù)存儲單元讀出數(shù)據(jù),控制數(shù)據(jù)存儲指針單元和邏輯隊列指針單元的更新。數(shù)據(jù)交換單元,用于交換數(shù)據(jù)時,控制數(shù)據(jù)存儲指針單元和邏輯隊列指針單元的更新。一種管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng),具體為所述數(shù)據(jù)存儲單元,劃分為若干子空間,每個子空間可以存儲若干字節(jié)數(shù)據(jù),允許多個子空間聯(lián)合存儲一組數(shù)據(jù)。所述數(shù)據(jù)存儲指針單元,用于存放的數(shù)據(jù)存儲指針單元信息包括:數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,存入有效數(shù)據(jù)的時間。所述邏輯隊列指針單元,用于存放各個數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,存放空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,存放時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述初始化單元,用于初始化數(shù)據(jù)存儲單元各個子空間;初始化數(shù)據(jù)存儲指針單元,包括初始化數(shù)據(jù)存儲單元的有效數(shù)據(jù)結(jié)束地址,初始化在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,初始化在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,初始化存入有效數(shù)據(jù)的時間;初始化邏輯隊列指針單元,包括初始化各個數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,初始化空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,初始化時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)寫入單元,用于寫入數(shù)據(jù)時,控制數(shù)據(jù)存儲單元寫入數(shù)據(jù),控制數(shù)據(jù)存儲指針單元的更新,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)讀出單元,用于讀出數(shù)據(jù)時,控制數(shù)據(jù)存儲單元讀出數(shù)據(jù);控制數(shù)據(jù)存儲指針單元的更新,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)交換單元,用于交換數(shù)據(jù)時,控制數(shù)據(jù)存儲指針單元的更新,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。由以上技術(shù)方案可以看出,由于本發(fā)明通過分塊式的存儲方式,并通過指針記錄每塊數(shù)據(jù)在隊列中前一個和后一個數(shù)據(jù)的地址,使得不連續(xù)的存儲數(shù)據(jù),在邏輯上成為不同隊列中可控的存儲連續(xù)數(shù)據(jù);通過管理每個隊列的頭、尾指針,使得所有隊列能夠使用共同的存儲空間,提高了內(nèi)存空間的利用率;通過時間隊列的管理,使得每組數(shù)據(jù)同時存在于本隊列中,并按照時間順序排列,可以更加靈活的根據(jù)時間調(diào)度數(shù)據(jù)。本發(fā)明充分利用了存儲空間,并有很強的靈活調(diào)度能力。附圖說明圖1、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例總體流程圖;圖2、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例建立流程圖;圖3、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例隊列分類流程圖;圖4、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例初始化流程圖;圖5、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例寫入數(shù)據(jù)流程圖;圖6、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例讀出數(shù)據(jù)流程圖;圖7、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法時間隊列寫入數(shù)據(jù)流程圖;圖8、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法時間隊列讀出數(shù)據(jù)流程圖:圖9、本發(fā)明實施例提供的多隊列共用存儲空間的使用方法實施例交換數(shù)據(jù)流程圖;圖10、本發(fā)明實施例提供的多隊列共用存儲空間的系統(tǒng)實施例總體結(jié)構(gòu)圖;圖11、本發(fā)明實施例提供的多隊列共用存儲空間的系統(tǒng)實施例具體結(jié)構(gòu)圖。具體實施方式本發(fā)明實施示例提供了一種多隊列數(shù)據(jù)共用存儲空間的使用方法、一種多隊列數(shù)據(jù)共用存儲空間的系統(tǒng)。常用的存儲單元為隨機存儲器(RAM,randomaccessmemory),可以按需隨意取出或存入,且讀取速度與存儲位置無關(guān)。在本發(fā)明實施示例中,應(yīng)用雙端口的RAM,可以將寫入與讀出功能同時實現(xiàn),所以本文將以雙端口RAM為例來對本發(fā)明實施示例進行描述。雙端口RAM是有兩對讀寫端口的RAM,可以分別為兩對讀寫端口賦予不同的讀寫地址,這樣就能夠同時完成對網(wǎng)絡(luò)編碼數(shù)據(jù)的寫入與讀出功能,這樣的方式具有寫入、讀出快速,操作簡單的優(yōu)點。實施例一:本發(fā)明實施例提供的多隊列數(shù)據(jù)共用存儲空間的使用方法,在交換系統(tǒng)中的應(yīng)用,實施例如下文所述:一方面為OLT中網(wǎng)絡(luò)編碼數(shù)據(jù)及指針存儲空間的設(shè)計方式,其特征主要包括:建立緩存空間體系,主要包括存儲有效數(shù)據(jù)的子空間、記錄子空間信息的子空間指針和記錄多隊列信息的隊列指針,通過子空間指針和隊列指針的記錄,使得子空間分別屬于不同的隊列;在初始化緩存空間后,在子空間中寫入或讀出數(shù)據(jù),并通過更新子空間指針和隊列指針,使得在隊列中加入或刪除子空間,完成多個隊列共用所有子空間的管理。步驟201,建立緩存空間,主要包括存儲有效數(shù)據(jù)的子空間K、記錄子空間信息的子空間指針P和記錄多隊列信息的隊列指針LP;其中,子空間與子空間指針具有固定對應(yīng)關(guān)系;根據(jù)隊列指針及子空間指針,確定每個子空間分別屬于不同的隊列;子空間從K1開始,到KN結(jié)束,共有N塊子空間。子空間指針從P1開始,到PN結(jié)束,共有N個子空間指針,與子空間K依次對應(yīng)。隊列指針從LP1開始,到LPM結(jié)束,共有M個隊列。步驟202,在使用緩存空間時,首先初始化各個子空間K和子空間指針P,初始化隊列指針LP。初始化時,需要初始化子空間K,初始化子空間指針P,初始化隊列指針LP。步驟203,在寫入數(shù)據(jù)時,需要在子空間K中存入數(shù)據(jù),更新子空間指針P,更新隊列指針LP,在隊列中加入子空間K。寫入數(shù)據(jù)時,在子空間K中寫入數(shù)據(jù),更新子空間指針P,更新隊列指針LP。步驟204,在讀出數(shù)據(jù)時,需要從子空間K中讀出數(shù)據(jù),更新子空間指針P,更新隊列指針LP,從隊列中刪除子空間K。讀出數(shù)據(jù)時,從子空間K中讀出數(shù)據(jù),更新子空間指針P,更新隊列指針LP。步驟205,如果緩存數(shù)據(jù)需要記錄所有數(shù)據(jù)的時間順序,可以同時加入時間隊列,包括子空間指針和隊列指針信息;在寫入數(shù)據(jù)時,在時間隊列中加入子空間;在讀出數(shù)據(jù)時,從時間隊列中刪除子空間。加入時間順序,在子空間指針P中加入時間指針信息,在隊列指針中加入新的隊列指針。步驟206,如果交換數(shù)據(jù),需要更新子空間指針P和隊列指針LP,即將子空間K從一個隊列交換到另一個隊列。交換數(shù)據(jù)時,需要更新子空間指針P,更新隊列指針LP。其中,建立緩存空間,主要包括存儲有效數(shù)據(jù)的子空間、記錄子空間信息的子空間指針和記錄多隊列信息的隊列指針,具體為步驟211,建立子空間,將空間分塊,每一塊子空間可以存儲若干字節(jié)數(shù)據(jù),子空間的大小由存儲數(shù)據(jù)的特征決定;如果一組數(shù)據(jù)超出子空間存儲上限,可以使用多個子空間K存儲。子空間K可以存儲R字節(jié)數(shù)據(jù),如果數(shù)據(jù)超出R字節(jié),由多個子空間共同存儲,此時子空間指針中有效數(shù)據(jù)結(jié)束地址特定,如為0地址,由于存在數(shù)據(jù)隊列與空閑隊列之分,不與未存儲數(shù)據(jù)沖突;或直接設(shè)定存儲字節(jié)數(shù)R為一組數(shù)據(jù)可能的上限。步驟212,建立子空間指針,每一項記錄一個子空間的信息,主要包括子空間有效數(shù)據(jù)結(jié)束地址,包括在數(shù)據(jù)隊列或空閑隊列中的前一個子空間地址和后一個子空間地址,可以包括時間隊列中的前一個子空間地址和后一個子空間地址,包括存入數(shù)據(jù)的時間。子空間指針P,記錄子空間K的信息,包括有效數(shù)據(jù)結(jié)束地址PE,在數(shù)據(jù)隊列或空閑隊列中的前一個子空間地址PA和后一個子空間地址PB,可以包括時間隊列中的前一個子空間地址PC和后一個子空間地址PD,包括存入數(shù)據(jù)的時間PT。步驟213,建立隊列指針,每一項記錄邏輯隊列起始和結(jié)束的子空間,邏輯隊列分為數(shù)據(jù)隊列和空閑隊列兩種類型,其中數(shù)據(jù)隊列是指邏輯上屬于一組數(shù)據(jù)的子空間組成的隊列,可以有多個數(shù)據(jù)隊列;空閑隊列是指當(dāng)前未使用的子空間組成的隊列,通常只需要有一個空閑隊列。隊列指針LP,記錄邏輯隊列起始子空間LPA和結(jié)束子空間LPB地址,邏輯隊列分為數(shù)據(jù)隊列和空閑隊列,存入數(shù)據(jù)的隊列為邏輯隊列Q1、Q2、Q3……QM,未存入數(shù)據(jù)的隊列為空閑隊列Q0,通常需要一個空閑隊列。步驟214,還可以建立時間隊列指針,記錄時間隊列起始和結(jié)束的子空間,時間隊列是指根據(jù)時間順序,子空間組成的隊列。時間隊列指針LPT,記錄時間隊列起始子空間LPC和結(jié)束子空間LPD,時間隊列QT是數(shù)據(jù)根據(jù)時間順序排成的隊列,用于可能出現(xiàn)的時間順序。另外,邏輯隊列分為數(shù)據(jù)隊列和空閑隊列兩種類型,其中數(shù)據(jù)隊列是指邏輯上屬于一組數(shù)據(jù)的子空間組成的隊列,可以有多個數(shù)據(jù)隊列,具體為步驟2131,如果緩存空間中不對數(shù)據(jù)進行區(qū)分,則可以只有一個數(shù)據(jù)隊列,表示存入有效數(shù)據(jù)的子空間組成的隊列。如果存儲數(shù)據(jù)不進行區(qū)分,只有一個數(shù)據(jù)隊列Q1。步驟2132,如果為有多個收發(fā)端口,數(shù)據(jù)需要根據(jù)接收或發(fā)送端口分類,則每個端口對應(yīng)一個數(shù)據(jù)隊列,數(shù)據(jù)隊列數(shù)量與端口數(shù)量有關(guān);如果數(shù)據(jù)對應(yīng)多個端口,則每一個端口對應(yīng)一個隊列Q1、Q2……QM。步驟2133,如果數(shù)據(jù)根據(jù)源、目的地址進行區(qū)分,從同一個源地址到同一個目的地址的數(shù)據(jù)屬于一組數(shù)據(jù),則數(shù)據(jù)隊列數(shù)量與源地址與目的地址的組合有關(guān)。如果數(shù)據(jù)由源和目的地址區(qū)分,則每一個組合對應(yīng)一個隊列Q11、Q12……QMM。步驟2134,如果數(shù)據(jù)隊列可能性多,但具有規(guī)律,數(shù)據(jù)隊列指針可以使用列表的方式,進行排列管理;當(dāng)步驟3-2中端口數(shù)較多,使用一維列表;步驟3-3中源地址和目的地址組合,使用二維列表。隊列數(shù)量較多時,隊列指針可以按照一維列表或二維列表的組織方式,如可能存在1024個邏輯端口,適宜使用1024個表項的一維列表;如4K個MAC地址,一個地址對應(yīng)一個隊列,使用4K大小與MAC地址對應(yīng)的一維列表;如可能存在64個源設(shè)備和64個目的設(shè)備,使用64*64大小的二維列表。步驟2135,如果數(shù)據(jù)隊列可能性多,不適宜窮舉,步驟3-3中源地址與目的地址組合情況很多時,可以將數(shù)據(jù)隊列加入標(biāo)簽,標(biāo)記當(dāng)前每個數(shù)據(jù)隊列的類型,同類型的數(shù)據(jù)存入相同的隊列中,當(dāng)某一隊列清空,允許更新標(biāo)簽,用于存儲其他隊列數(shù)據(jù)。隊列數(shù)量過多而無法有效組織,或總是只有有限個隊列,如任意IP網(wǎng)段對應(yīng)一個隊列,64*64個源和目的總是只維持不超過16個隊列,適宜采用標(biāo)簽記錄的方式。即在隊列指針中加入一條記錄隊列信息的標(biāo)簽LP-List??臻e隊列是指當(dāng)前未使用的子空間組成的隊列,通常只需要有一個空閑隊列,具體為當(dāng)有數(shù)據(jù)存入一個子空間時,空閑隊列刪除該子空間,數(shù)據(jù)隊列加入該子空間;當(dāng)有一個子空間讀出數(shù)據(jù)釋放緩存時,數(shù)據(jù)隊列刪除該子空間,空閑隊列加入該子空間。步驟2136,如果所有子空間沒有區(qū)別,可以在任何數(shù)據(jù)隊列中使用,只需要一個空閑隊列,此時為所有隊列共用緩存空間的方式;子空間K性質(zhì)一致,可以任意隊列使用,則只有一個空閑隊列Q0。步驟2137,如果所有子空間存在區(qū)別,允許使用多個空閑隊列,每個空閑隊列可以使用的規(guī)則不同,此時緩存空間不是完全共用的方式。子空間K性質(zhì)不同,可以使用多個空閑隊列Q01、Q02……Q00。如數(shù)據(jù)隊列Q1優(yōu)先級高于Q2,需要至少保留S個子空間,則空閑隊列Q01中有S個子空間,Q02中有T個子空間,數(shù)據(jù)隊列Q1、Q2均可使用Q02中子空間K,當(dāng)空間不足時,只有Q1可以使用Q01中的子空間。另一方面,在使用緩存空間時,首先初始化各個子空間K和子空間指針P,初始化隊列指針LP,具體為步驟221,定義一個子空間為空閑子空間NK,不存儲實際有效數(shù)據(jù),特殊子空間NK可以只邏輯上存在,而沒有實際例化。定義一個無效時間NT,用于表示存入數(shù)據(jù)時間無效??臻e子空間NK,不存儲有效數(shù)據(jù),是所有隊列的開始和結(jié)束子空間,如空閑標(biāo)號K0。無效時間NT,用于表示存入數(shù)據(jù)時間無效,如無效時間記為0,有效時間從1到G循環(huán)。步驟222,初始化子空間是指將子空間中的數(shù)據(jù)清除,由于子空間是否存儲有效數(shù)據(jù),取決于子空間是否屬于空閑隊列,因此初始化子空間可以不進行實際操作。初始化子空間K,其中的有效數(shù)據(jù)初始化為特定數(shù)值,如初始數(shù)據(jù)為全0。步驟223,初始化子空間指針是指將子空間指針,按照子空間在空閑隊列中的方式進行賦值,即有效數(shù)據(jù)結(jié)束地址為0,第1個子空間指針前一個子空間地址為空閑子空間,后一個子空間地址為第2個子空間,中間每個子空間指針的前一個子空間地址和后一個子空間地址按順序排列,最后1個子空間指針前一個子空間地址為倒數(shù)第2個子空間,后一個子空間地址為空閑子空間。每個子空間指針時間隊列中的前一個子空間地址和后一個子空間地址,均為空閑子空間;存入數(shù)據(jù)時間初始化為無效時間。初始化子空間指針P,其中所有PE為0地址;P1A為K0,P2A為K1……,PMA為KM-1;P1B為K2,P2B為K3……PMB為K0;所有PC為K0;所有PD為K0;所有PT為0時間。步驟224,初始化隊列指針是指將數(shù)據(jù)隊列和空閑隊列和時間隊列的指針賦值,數(shù)據(jù)隊列起始和結(jié)束子空間為空閑子空間,表示數(shù)據(jù)隊列為空;空閑隊列起始子空間為第1個子空間,結(jié)束子空間為最后1個子空間,結(jié)合子空間指針初始化,表示所有子空間屬于空閑隊列;時間隊列起始和結(jié)束子空間為空閑子空間,表示時間隊列為空。初始化隊列指針LP,其中所有LPA為K0,所有LPB為K0;特別的,LP0A為K1,LP0B為KM;所有LPC為K0,所有LPD為K0。以上初始化所有內(nèi)容,使得每一個子空間K初始時按順序排列,屬于空閑隊列,不屬于數(shù)據(jù)隊列,不屬于時間隊列。在寫入數(shù)據(jù)時,需要在子空間K中存入數(shù)據(jù),更新子空間指針P,更新隊列指針LP,在隊列中加入子空間K,具體為步驟231,寫入數(shù)據(jù)時,根據(jù)數(shù)據(jù)的類型,確定子空間應(yīng)該屬于的數(shù)據(jù)隊列。根據(jù)數(shù)據(jù)類型確定數(shù)據(jù)隊列,如提取數(shù)據(jù)對應(yīng)的端口號、IP地址等,明確數(shù)據(jù)隊列為Q1。步驟232,如果空閑隊列為空,則不可以寫入數(shù)據(jù);如果空閑隊列不為空,則可以寫入數(shù)據(jù)??臻e隊列LP0A和LP0B為K0,表示沒有空閑子空間,不可寫入數(shù)據(jù);否則,LP0A和LP0B不為K0,可寫數(shù)據(jù)。步驟233,查詢空閑隊列的起始子空間,在此子空間中存入數(shù)據(jù),數(shù)據(jù)結(jié)束時記錄有效數(shù)據(jù)結(jié)束地址。假設(shè)LP0A為K1,則在K1中寫入數(shù)據(jù);當(dāng)數(shù)據(jù)結(jié)束時,更新P1E。步驟234,如果數(shù)據(jù)隊列不為空,則數(shù)據(jù)隊列原來的結(jié)束子空間,其子空間指針后一個子空間為寫入數(shù)據(jù)的子空間;如果數(shù)據(jù)隊列為空,則跳過此步驟。LP1A和LP1B不為K0,表示隊列Q1不為空,假設(shè)LP1B為K512,則P512B更新為K1;如果LP1A和LP1B為K0,則跳過此步驟。步驟235,寫入數(shù)據(jù)的子空間,其子空間指針前一個子空間為數(shù)據(jù)隊列原有的結(jié)束子空間;子空間指針后一個子空間為空閑子空間。P1A更新為K512或K0,與上一步驟對應(yīng);P1B更新為K0。步驟236,空閑隊列原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果空閑隊列此時為空,則跳過此步驟。假設(shè)P1B原來為K2,則P2A更新為K0;如果P1B原來為K0,則跳過此步驟。步驟237,數(shù)據(jù)隊列如果原本為空,則起始子空間為寫入數(shù)據(jù)的子空間;數(shù)據(jù)隊列如果不為空,則起始子空間不變;數(shù)據(jù)隊列結(jié)束子空間為寫入數(shù)據(jù)的子空間。如果LP1A和LP1B為K0,則LP1A更新為K1;如果LP1A和LP1B不為K0,則LP1A不變;LP1B總是更新為K1。步驟238,空閑隊列起始子空間為空閑隊列原來的第2個子空間,如果為空閑子空間,則此時空閑隊列為空,空閑隊列結(jié)束子空間也為空閑子空間。如果P1B原來為K2,LP0A更新為K2;如果P1B原來為K0,LP0A和LP0B更新為K0。以上步驟,使得子空間K1存入數(shù)據(jù),從隊列Q0的頭部刪除,加入隊列Q1的尾部,完成了從空閑隊列到數(shù)據(jù)隊列的轉(zhuǎn)換。隊列Q0的頭部由K1變?yōu)镵2,隊列Q1的尾部由K512變?yōu)镵1,并兼顧了可能出現(xiàn)的空隊列情況(與K0相關(guān))。在讀出數(shù)據(jù)時,需要從子空間K中讀出數(shù)據(jù),更新子空間指針P,更新隊列指針LP,從隊列中刪除子空間K,具體為步驟241,讀出數(shù)據(jù)時,根據(jù)數(shù)據(jù)的類型,確定子空間應(yīng)該屬于的數(shù)據(jù)隊列。根據(jù)數(shù)據(jù)類型確定數(shù)據(jù)隊列,假設(shè)讀出數(shù)據(jù)隊列為Q2。步驟242,如果數(shù)據(jù)隊列為空,則不可以讀出數(shù)據(jù),如果數(shù)據(jù)隊列不為空,則可以讀出數(shù)據(jù)。如果LP2A和LP2B為K0,表示沒有數(shù)據(jù),不可讀出數(shù)據(jù);否則,LP2A和LP2B不為K0,可讀數(shù)據(jù)。步驟243,查詢數(shù)據(jù)隊列的起始子空間,從此子空間中讀出數(shù)據(jù),直到有效數(shù)據(jù)結(jié)束。如果LP2A和LP2B不為K0,假設(shè)LP2A為K3,則從K3讀出數(shù)據(jù),直到P3E指示位置。步驟244,如果空閑隊列不為空,則空閑隊列原來的結(jié)束子空間,其子空間指針后一個子空間為讀出數(shù)據(jù)的子空間;如果空閑隊列為空,則跳過此步驟。如果LP0A和LP0B不為K0,假設(shè)LP0B為K800,則P800B更新為K3;如果LP0A和LP0B為K0,則跳過此步驟。步驟245,讀出數(shù)據(jù)的子空間,其子空間指針前一個子空間為空閑隊列原有的結(jié)束子空間;子空間指針后一個子空間為空閑子空間。P3A更新為K800或K0,與上一步驟對應(yīng);P3B更新為K0。步驟246,數(shù)據(jù)隊列原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果數(shù)據(jù)隊列此時為空,則跳過此步驟7-6。假設(shè)P3B原來為K47,則P47A更新為K0;如果P3B原來為K0,則跳過此步驟。步驟247,空閑隊列如果原本為空,則起始子空間為讀出數(shù)據(jù)的子空間;空閑隊列如果不為空,則起始子空間不變;空閑隊列結(jié)束子空間為讀出數(shù)據(jù)的子空間。如果LP0A和LP0B為K0,則LP0A更新為K3;如果LP0A和LP0B不為K0,則LP0A不變;LP0B總是更新為K3。步驟248,數(shù)據(jù)隊列起始子空間為數(shù)據(jù)隊列原來的第2個子空間,如果為空閑子空間,則此時數(shù)據(jù)隊列為空,數(shù)據(jù)隊列結(jié)束子空間也為空閑子空間。如果P3B原來為K47,LP2A更新為K47;如果P3B原來為K0,LP2A和LP2B更新為K0。以上步驟,使得子空間K3讀出數(shù)據(jù),從隊列Q2的頭部刪除,加入隊列Q0的尾部,完成了從數(shù)據(jù)隊列到空閑隊列的轉(zhuǎn)換。隊列Q2的頭部由K3變?yōu)镵47,隊列Q0的尾部由K800變?yōu)镵3,并兼顧了可能出現(xiàn)的空隊列情況(與K0相關(guān))。如果緩存數(shù)據(jù)需要記錄所有數(shù)據(jù)的時間順序,可以同時加入時間隊列,包括子空間指針和隊列指針信息;在寫入數(shù)據(jù)時,在時間隊列中加入子空間,具體為步驟251,如果空閑隊列為空,則不可以寫入數(shù)據(jù);如果空閑隊列不為空,則可以寫入數(shù)據(jù)。如果LP0A和LP0B為K0,不可寫入數(shù)據(jù);如果LP0A和LP0B不為K0,可以寫入數(shù)據(jù)。步驟252,查詢空閑隊列的起始子空間,在此子空間中存入數(shù)據(jù)。假設(shè)LP0A為K9,則在K9中寫入數(shù)據(jù)。步驟253,如果時間隊列不為空,則時間隊列原來的結(jié)束子空間,其子空間指針的時間隊列后一個子空間為寫入數(shù)據(jù)的子空間;如果時間隊列為空,則跳過此步驟。如果LPC和LPD不為K0,假設(shè)LPD為K5,則P5D更新為K9;如果LPC和LPD為K0,跳過此步驟。步驟254,寫入數(shù)據(jù)的子空間,其子空間指針的時間隊列前一個子空間為時間隊列原有的結(jié)束子空間;子空間指針的時間隊列后一個子空間為空閑子空間;更新存入數(shù)據(jù)的時間。P9C更新為K5,P9D更新為K0,更新存入數(shù)據(jù)時間P9T。步驟255,時間隊列如果原來為空,則起始子空間為寫入數(shù)據(jù)的子空間;時間隊列如果不為空,則起始子空間不變;時間隊列結(jié)束子空間為寫入數(shù)據(jù)的子空間。如果LPC和LPD為K0,則LPC更新為K9;如果LPC和LPD不為K0,則LPC不變;LPD總是更新為K9。在讀出數(shù)據(jù)時,從時間隊列中刪除子空間,具體為步驟256,如果數(shù)據(jù)隊列為空,則不可以讀出數(shù)據(jù),如果數(shù)據(jù)隊列不為空,則可以讀出數(shù)據(jù)。假設(shè)讀出數(shù)據(jù)隊列為Q4,如果LP4A和LP4B為K0,不可讀出數(shù)據(jù);如果LP4A和LP4B不為K0,可以讀出數(shù)據(jù)。步驟257,查詢數(shù)據(jù)隊列的起始子空間,從此子空間中讀出數(shù)據(jù)。假設(shè)LP4A為K71,則在K71中讀出數(shù)據(jù)。步驟258,讀出數(shù)據(jù)的子空間在時間隊列中前一個子空間,其子空間指針時間隊列后一個子空間為讀出數(shù)據(jù)的子空間在時間隊列中后一個子空間。假設(shè)P71C為K70,P71D為K72,則P70D更新為K72。步驟259,讀出數(shù)據(jù)的子空間在時間隊列中后一個子空間,其子空間指針時間隊列前一個子空間為讀出數(shù)據(jù)的子空間在時間隊列中前一個子空間。與上一步驟一致,P72C更新為K70。步驟2510,讀出數(shù)據(jù)的子空間如果是時間隊列起始子空間,則時間隊列起始子空間為時間隊列原來的第2個子空間;讀出數(shù)據(jù)的子空間如果是時間隊列結(jié)束子空間,則時間隊列結(jié)束子空間為時間隊列原來的倒數(shù)第2個子空間。如果P71C為K0,則LPC更新為K72;如果P71D為K0,則LPD更新為K70。以上為按隊列讀出數(shù)據(jù),通常從時間隊列中間讀出某一子空間數(shù)據(jù)。當(dāng)數(shù)據(jù)按照時間順序讀出時,將時間隊列按照數(shù)據(jù)隊列的方式處理,更新子空間指針和隊列指針信息,時間隊列與數(shù)據(jù)隊列地位對調(diào),原理一致不予贅述。如果交換數(shù)據(jù),需要更新子空間指針P和隊列指針LP,即將子空間K從一個隊列交換到另一個隊列,具體為步驟261,根據(jù)數(shù)據(jù)的類型,確定輸入數(shù)據(jù)應(yīng)該屬于的數(shù)據(jù)隊列K1,在子空間中寫入數(shù)據(jù)。假設(shè)子空間屬于數(shù)據(jù)隊列Q5,數(shù)據(jù)已經(jīng)寫入。步驟262,根據(jù)交換查表,確定數(shù)據(jù)輸出應(yīng)該屬于的數(shù)據(jù)隊列K2。假設(shè)子空間需要交換到數(shù)據(jù)隊列Q6。步驟263,查詢輸入數(shù)據(jù)隊列K1起始子空間,即為實現(xiàn)交換的子空間。需要交換的子空間為Q5的起始子空間,LP5A為K99。步驟264,如果數(shù)據(jù)隊列K2不為空,則數(shù)據(jù)隊列K2原來的結(jié)束子空間,其子空間指針后一個子空間為實現(xiàn)交換的子空間;如果數(shù)據(jù)隊列K2為空,則跳過此步驟。如果LP6A和LP6B不為K0,假設(shè)LP6B為K98,則P98B更新為K99;如果LP6A和LP6B為K0,則跳過此步驟。步驟265,實現(xiàn)交換的子空間,其子空間指針前一個子空間為數(shù)據(jù)隊列K2原有的結(jié)束子空間;子空間指針后一個子空間為空閑子空間。P99A更新為K98,P99B更新為K0。步驟266,數(shù)據(jù)隊列K1原來的第2個子空間,其子空間指針前一個子空間為空閑子空間,如果數(shù)據(jù)隊列K1此時為空,則跳過此步驟9-6。假設(shè)P99B為K100,則P100A更新為K0;如果P99B為K0,則跳過此步驟。步驟267,數(shù)據(jù)隊列K2如果原本為空,則起始子空間為實現(xiàn)交換的子空間;數(shù)據(jù)隊列K2如果不為空,則起始子空間不變;數(shù)據(jù)子空間K2結(jié)束子空間為實現(xiàn)交換的子空間。如果LP6A和LP6B為K0,則LP6A更新為K99;否則LP6A不變;LP6B總是更新為K99。步驟268,數(shù)據(jù)隊列K1起始子空間為數(shù)據(jù)隊列K1原來的第2個子空間;如果為空閑子空間,則此時數(shù)據(jù)隊列K1為空,數(shù)據(jù)隊列K1結(jié)束子空間也為空閑子空間。LP5A更新為K100,如果LP5A更新為K0,則LP5B也更新為K0。步驟269,從輸出數(shù)據(jù)隊列K2子空間中讀出數(shù)據(jù),完成數(shù)據(jù)輸出。按照讀出數(shù)據(jù)的步驟,將子空間K99從Q6隊列輸出,即完成了數(shù)據(jù)的讀出。步驟2610,如果交換查表能夠完成快速查詢,則可以通過指針操作,直接寫入輸出數(shù)據(jù)隊列K2中;如果數(shù)據(jù)輸出能夠即時完成,則可以直接從輸入數(shù)據(jù)隊列K1中,讀出數(shù)據(jù),完成數(shù)據(jù)輸出。由于多隊列數(shù)據(jù)共用緩存空間,因此可以簡化交換操作。如果快速查詢,將數(shù)據(jù)寫入K99,指針直接更新為Q6,省略了先進入Q5,后交換的過程;如果即時讀出,將數(shù)據(jù)讀出K99,指針直接更新為Q0,省略了先交換Q6,后讀出的過程。由于多數(shù)據(jù)共用緩存空間,任意寫入或讀出子空間,只要控制指針即可完成各種操作。以上步驟,完成了子空間K99從隊列Q5頭部交換到隊列Q6尾部的過程,Q5頭部由K99變?yōu)镵100,Q6尾部由K98變?yōu)镵99,同時兼顧了可能出現(xiàn)的空隊列情況,交換快速而不需要數(shù)據(jù)從子空間中讀出并寫入的過程。以上即為對本發(fā)明實施例提供的一種存儲多隊列數(shù)據(jù)的共用緩存空間使用方法實施例的描述。實施例二:本發(fā)明實施例提供的一種管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng),實施例如下文所述:管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng),其結(jié)構(gòu)如圖所示,所述系統(tǒng)包括:數(shù)據(jù)存儲單元410,用于存放需要緩存的數(shù)據(jù),按照分塊的方式分為若干子空間。數(shù)據(jù)存儲指針單元420,用于存放數(shù)據(jù)存儲單元410的指針信息,與數(shù)據(jù)存儲單元410具有固定對應(yīng)關(guān)系。邏輯隊列指針單元430,用于存放數(shù)據(jù)隊列和空閑隊列的指針信息,可以存放時間隊列的指針信息。初始化單元440,用于對數(shù)據(jù)存儲單元410和數(shù)據(jù)存儲指針單元420進行初始化,對邏輯隊列指針單元430進行初始化。數(shù)據(jù)寫入單元450,用于寫入數(shù)據(jù)時,控制數(shù)據(jù)存儲單元410寫入數(shù)據(jù),控制數(shù)據(jù)存儲指針單元420和邏輯隊列指針單元430的更新。數(shù)據(jù)讀出單元460,用于讀出數(shù)據(jù)時,控制數(shù)據(jù)存儲單元410讀出數(shù)據(jù),控制數(shù)據(jù)存儲指針單元420和邏輯隊列指針單元430的更新。數(shù)據(jù)交換單元470,用于交換數(shù)據(jù)時,控制數(shù)據(jù)存儲指針單元420和邏輯隊列指針單元430的更新。一種管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng),具體為所述數(shù)據(jù)存儲單元410,劃分為若干子空間,每個子空間可以存儲若干字節(jié)數(shù)據(jù),允許多個子空間聯(lián)合存儲一組數(shù)據(jù)。所述數(shù)據(jù)存儲指針單元420,用于存放的數(shù)據(jù)存儲單元410的指針信息包括:數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址421,在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址422和后一個數(shù)據(jù)存儲單元的地址423,在時間隊列中前一個數(shù)據(jù)存儲單元的地址424和后一個數(shù)據(jù)存儲單元的地址425,存入有效數(shù)據(jù)的時間426。所述邏輯隊列指針單元430,用于存放各個數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址431和結(jié)束數(shù)據(jù)存儲單元地址432,存放空閑隊列的起始數(shù)據(jù)存儲單元地址433和結(jié)束數(shù)據(jù)存儲單元434地址,存放時間隊列的起始數(shù)據(jù)存儲單元地址435和結(jié)束數(shù)據(jù)存儲單元地址436。所述初始化單元440,用于初始化數(shù)據(jù)存儲單無各個子空間441;初始化數(shù)據(jù)存儲指針單元442,包括初始化數(shù)據(jù)存儲單元的有效數(shù)據(jù)結(jié)束地址,初始化在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,初始化在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,初始化存入有效數(shù)據(jù)的時間;初始化邏輯隊列指針單元443,包括初始化各個數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,初始化空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,初始化時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)寫入單元450,用于寫入數(shù)據(jù)時,控制數(shù)據(jù)存儲單元寫入數(shù)據(jù)451;控制數(shù)據(jù)存儲指針單元的更新452,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新453,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)讀出單元460,用于讀出數(shù)據(jù)時,控制數(shù)據(jù)存儲單元讀出數(shù)據(jù)461;控制數(shù)據(jù)存儲指針單元的更新462,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新463,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。所述數(shù)據(jù)交換單元470,用于交換數(shù)據(jù)時,控制數(shù)據(jù)存儲指針單元的更新471,包括更新數(shù)據(jù)存儲單元中有效數(shù)據(jù)的結(jié)束地址,更新在數(shù)據(jù)或空閑隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新在時間隊列中前一個數(shù)據(jù)存儲單元的地址和后一個數(shù)據(jù)存儲單元的地址,更新存入有效數(shù)據(jù)的時間;控制邏輯隊列指針單元的更新472,包括更新對應(yīng)數(shù)據(jù)隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新空閑隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址,更新時間隊列的起始數(shù)據(jù)存儲單元地址和結(jié)束數(shù)據(jù)存儲單元地址。本發(fā)明實施例提供的一種管理多隊列數(shù)據(jù)的共用緩存空間的系統(tǒng)中,數(shù)據(jù)存儲單元410、數(shù)據(jù)存儲單元指針420、邏輯隊列指針430、初始化單元440、數(shù)據(jù)寫入單元450、數(shù)據(jù)讀出單元460和數(shù)據(jù)交換單元470等的工作方式,與上文描述的一種存儲多隊列數(shù)據(jù)的共用緩存空間使用方法相同,在此不再重復(fù)描述。以上對本發(fā)明實施例所提供的一種多隊列數(shù)據(jù)共用存儲空間的使用方法、多隊列數(shù)據(jù)共用存儲空間的系統(tǒng)進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明實施例的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明實施例的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實施例的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。