專(zhuān)利名稱(chēng):數(shù)據(jù)存儲(chǔ)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種數(shù)據(jù)存儲(chǔ)方法及裝置。
背景技術(shù):
近年來(lái),隨著需要傳輸?shù)臄?shù)據(jù)流量越來(lái)越大,通信系統(tǒng)對(duì)帶寬的要求變得越來(lái)越高,同時(shí),導(dǎo)致芯片上的高速接口與內(nèi)部模塊之間的接口數(shù)據(jù)的處理速度也越來(lái)越快。在通信系統(tǒng)中,接口并不僅僅需要傳輸一種類(lèi)型的數(shù)據(jù),通常情況下,同一個(gè)接口需要傳輸很多類(lèi)型的數(shù)據(jù)。為了充分利用接口的帶寬,對(duì)不同類(lèi)型數(shù)據(jù)進(jìn)行高效的管理,發(fā)送方一般可以根據(jù)不同類(lèi)型的數(shù)據(jù)包進(jìn)行調(diào)度管理,接收方則需要對(duì)不同類(lèi)型的包進(jìn)行存儲(chǔ)管理。I、從發(fā)送方的角度看,接口在發(fā)送多種類(lèi)型的數(shù)據(jù)包的時(shí)候,通常會(huì)面臨如何安排不同類(lèi)型的數(shù)據(jù)包的優(yōu)先級(jí)的問(wèn)題。這是因?yàn)橛行╊?lèi)型的數(shù)據(jù)包實(shí)時(shí)性要求高,有些類(lèi)·型的數(shù)據(jù)包實(shí)時(shí)性要求低,在對(duì)各類(lèi)型的數(shù)據(jù)包進(jìn)行傳輸前,系統(tǒng)需要給不同類(lèi)型的數(shù)據(jù)包分配不同的優(yōu)先級(jí)優(yōu)先級(jí)高的數(shù)據(jù)包具有優(yōu)先被發(fā)送的權(quán)利,而優(yōu)先級(jí)低的數(shù)據(jù)包則可以安排在優(yōu)先級(jí)高的數(shù)據(jù)包發(fā)送完之后再被發(fā)送。但是,這樣往往導(dǎo)致優(yōu)先級(jí)低的數(shù)據(jù)包往往在發(fā)送過(guò)程中被多次打斷而延遲很久才能被發(fā)送出去。2、從接收方的角度看,接收方接收到的不同類(lèi)型的數(shù)據(jù)包通常并不是按照一定順序發(fā)送過(guò)來(lái)的。由于同一種類(lèi)型的數(shù)據(jù)包的優(yōu)先級(jí)是一樣的,系統(tǒng)能夠保證將同一種類(lèi)型的數(shù)據(jù)包按照順序發(fā)送,但是系統(tǒng)可能將不同類(lèi)型的數(shù)據(jù)包按照順序發(fā)送,造成接收方接收到的不同功能類(lèi)型的數(shù)據(jù)包是亂序的。另外,由于在發(fā)送方處優(yōu)先級(jí)低的數(shù)據(jù)包可能被打斷很多次才能發(fā)出,這也導(dǎo)致接收方在對(duì)接收到的數(shù)據(jù)包進(jìn)行存儲(chǔ)管理時(shí)產(chǎn)生了很大的不便。由于很多數(shù)據(jù)包的數(shù)據(jù)量都比較大,所以一般需要將數(shù)據(jù)包分多次進(jìn)行傳輸,而數(shù)據(jù)包里面的數(shù)據(jù)很多情況下是相互關(guān)聯(lián)的,如果需要完成某種運(yùn)算或者任務(wù),往往需要把數(shù)據(jù)包里面的所有數(shù)據(jù)收集齊才能進(jìn)行運(yùn)算等操作。由此可見(jiàn),對(duì)數(shù)據(jù)包里的包數(shù)據(jù)進(jìn)行收集和存儲(chǔ)尤為重要,如果同一個(gè)數(shù)據(jù)包的包數(shù)據(jù)能夠被連續(xù)傳輸,則數(shù)據(jù)的收集就比較簡(jiǎn)單,但是,如果同一個(gè)數(shù)據(jù)包的包數(shù)據(jù)被傳輸?shù)倪^(guò)程中被優(yōu)先級(jí)較高的數(shù)據(jù)包搶斷時(shí),則容易導(dǎo)致該數(shù)據(jù)包的包數(shù)據(jù)被間隔傳輸,從而造成數(shù)據(jù)的收集的復(fù)雜。對(duì)于上述問(wèn)題,現(xiàn)有技術(shù)中目前比較通用的解決方法是根據(jù)數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)(ID)最大數(shù)在接收方開(kāi)辟獨(dú)立的存儲(chǔ)空間,每個(gè)標(biāo)識(shí)(ID)對(duì)應(yīng)一個(gè)單獨(dú)的存儲(chǔ)空間。接收方一旦收到發(fā)送方傳輸過(guò)來(lái)的數(shù)據(jù)包立即根據(jù)數(shù)據(jù)包的ID號(hào)找到其對(duì)應(yīng)的存儲(chǔ)空間進(jìn)行存儲(chǔ),一旦某個(gè)類(lèi)型的數(shù)據(jù)包接收完成時(shí),則向內(nèi)部處理模塊發(fā)送中斷信息,通知內(nèi)部處理模塊該ID號(hào)的數(shù)據(jù)包已經(jīng)完成收集,可以處理了,內(nèi)部處理模塊只需要根據(jù)ID號(hào)到對(duì)應(yīng)的包數(shù)據(jù)存儲(chǔ)空間讀取數(shù)據(jù)。如果當(dāng)前情況下,有多種類(lèi)型的數(shù)據(jù)包都接收完了,那么內(nèi)部處理模塊一般會(huì)按照數(shù)據(jù)包的優(yōu)先級(jí)大小的順序進(jìn)行處理。上述方法確實(shí)能夠保證數(shù)據(jù)包的處理效率,但其存在的最大問(wèn)題在于數(shù)據(jù)包的接收存儲(chǔ)是根據(jù)每個(gè)數(shù)據(jù)包ID來(lái)開(kāi)辟數(shù)據(jù)包的存儲(chǔ)空間的,而且每個(gè)ID對(duì)應(yīng)的存儲(chǔ)空間必須按照最大流量來(lái)開(kāi)辟,因?yàn)榘l(fā)送方很有可能在某段時(shí)間內(nèi)一直發(fā)某個(gè)ID數(shù)據(jù)包,而其他ID的存儲(chǔ)空間在這段時(shí)間內(nèi)一直處于空閑狀態(tài),因此,這種包數(shù)據(jù)的接收和存儲(chǔ)方法很容易造成隨機(jī)存取內(nèi)存(RAM)資源的巨大浪費(fèi)。同時(shí),在數(shù)據(jù)包的傳輸過(guò)程中,由于包處理有時(shí)間限制(或者包傳輸出錯(cuò)),接收方為了不浪費(fèi)處理時(shí)間,需要對(duì)超過(guò)處理時(shí)間或傳輸出錯(cuò)的數(shù)據(jù)包進(jìn)行丟棄處理。針對(duì)相關(guān)技術(shù)中為了解決數(shù)據(jù)包亂序和數(shù)據(jù)包斷續(xù)傳輸導(dǎo)致的數(shù)據(jù)包存儲(chǔ)管理復(fù)雜的問(wèn)題而采取的在接收方開(kāi)辟獨(dú)立的存儲(chǔ)空間的方法,但同時(shí)容易造成RAM資源的浪費(fèi)及丟棄數(shù)據(jù)包的問(wèn)題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種存儲(chǔ)方法及裝置,以至少解決上述問(wèn)題之一。根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)存儲(chǔ)方法,包括接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,當(dāng)前包數(shù)據(jù)攜帶有當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID;接收·方根據(jù)包類(lèi)型ID從地址緩存區(qū)中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將第一存儲(chǔ)地址、當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū);接收方記錄新的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將第二存儲(chǔ)地址添加到對(duì)應(yīng)于包類(lèi)型ID的地址緩存區(qū)。優(yōu)選地,在接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)之后,包括接收方根據(jù)其接收到的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)攜帶的包起始狀態(tài)標(biāo)志確定當(dāng)前包數(shù)據(jù)為當(dāng)前數(shù)據(jù)包中的第一份包數(shù)據(jù);接收方判定當(dāng)前數(shù)據(jù)包接收開(kāi)始。優(yōu)選地,在接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)之后,還包括接收方根據(jù)其接收到的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)中的包結(jié)束狀態(tài)標(biāo)志確定當(dāng)前包數(shù)據(jù)為當(dāng)前數(shù)據(jù)包中的最后一份包數(shù)據(jù);接收方判定當(dāng)前數(shù)據(jù)包接收完成。優(yōu)選地,在接收方判定當(dāng)前數(shù)據(jù)包接收完成之后,包括接收方將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效;接收方上報(bào)當(dāng)前數(shù)據(jù)包為能夠被讀取的消息。優(yōu)選地,在接收方判定當(dāng)前數(shù)據(jù)包接收完成后,還包括接收方根據(jù)來(lái)自系統(tǒng)的執(zhí)行命令將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效;接收方上報(bào)當(dāng)前數(shù)據(jù)包為能夠被丟棄的消息。優(yōu)選地,在當(dāng)前數(shù)據(jù)包接收完成之后,該方法還包括根據(jù)當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次讀取當(dāng)前數(shù)據(jù)包的包數(shù)據(jù),直至讀取到當(dāng)前數(shù)據(jù)包的第一份包數(shù)據(jù)結(jié)束。根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲(chǔ)裝置,包括接收模塊,用于接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,當(dāng)前包數(shù)據(jù)攜帶有當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID ;存儲(chǔ)模塊,根據(jù)包類(lèi)型ID從地址緩存區(qū)中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將第一存儲(chǔ)地址、當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū);記錄模塊,用于記錄新的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將第二存儲(chǔ)地址添加到對(duì)應(yīng)于包類(lèi)型ID的地址緩存區(qū)。優(yōu)選地,該裝置還包括判斷模塊,用于根據(jù)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)中攜帶的包起始狀態(tài)標(biāo)識(shí)和/或包結(jié)束狀態(tài)標(biāo)志,確定當(dāng)前數(shù)據(jù)包接收開(kāi)始或接收完成。優(yōu)選地,該裝置還包括更新模塊,用于在判斷模塊判斷當(dāng)前數(shù)據(jù)包接收完成后,將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效。優(yōu)選地,接收模塊還用于接收系統(tǒng)發(fā)送的丟棄當(dāng)前數(shù)據(jù)包的執(zhí)行命令;更新模塊還用于根據(jù)執(zhí)行命令將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效。優(yōu)選地,該裝置還包括讀取模塊,用于在當(dāng)前數(shù)據(jù)包接收完成之后,根據(jù)當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次讀取當(dāng)前數(shù)據(jù)包的包數(shù)據(jù),直至讀取到當(dāng)前數(shù)據(jù)包的第一份包數(shù)據(jù)結(jié)束。通過(guò)本發(fā)明,采用一種鏈表式的 存儲(chǔ)方法對(duì)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)進(jìn)行存儲(chǔ),并且將所有數(shù)據(jù)包的包數(shù)據(jù)存儲(chǔ)在一個(gè)存儲(chǔ)空間內(nèi),其中,當(dāng)前包數(shù)據(jù)中包含上一份包數(shù)據(jù)中的存儲(chǔ)地址,方便了當(dāng)前數(shù)據(jù)包接收完成后對(duì)當(dāng)前數(shù)據(jù)包進(jìn)行鏈表式讀取,解決了傳統(tǒng)存儲(chǔ)方法不能夠支持亂序包接收、采用大量存儲(chǔ)分區(qū)數(shù)據(jù)包導(dǎo)致的存儲(chǔ)資源浪費(fèi)的問(wèn)題,進(jìn)而達(dá)到了支持亂序包的包內(nèi)斷續(xù)傳輸、節(jié)省存儲(chǔ)資源的效果。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法流程圖;圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例一種亂序數(shù)據(jù)包的鏈表式存儲(chǔ)方法流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)流發(fā)送方式和包數(shù)據(jù)格式;圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)示意圖;圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)索引示意圖;圖6是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;圖7是根據(jù)本發(fā)明優(yōu)選實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;圖8是根據(jù)本發(fā)明實(shí)施例一個(gè)優(yōu)選實(shí)施方式的亂序數(shù)據(jù)包鏈表式存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。圖I是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)方法流程圖,如圖I所示,該方法主要包括以下步驟(步驟S102-步驟S106)步驟S102,接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,當(dāng)前包數(shù)據(jù)攜帶有當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID ;在本發(fā)明實(shí)施例中,在發(fā)送方發(fā)送當(dāng)前數(shù)據(jù)包時(shí)可以為每種數(shù)據(jù)包標(biāo)注包頭的標(biāo)志用于辨別包的類(lèi)型,以及標(biāo)注包的起始和結(jié)束標(biāo)志用于辨別數(shù)據(jù)包的第一份包數(shù)據(jù)或者最后一份包數(shù)據(jù)。接收方接收到來(lái)到當(dāng)前數(shù)據(jù)包的包數(shù)據(jù)后,可以根據(jù)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)攜帶的包起始狀態(tài)標(biāo)志和/或包結(jié)束狀態(tài)標(biāo)志確定當(dāng)前包數(shù)據(jù)為當(dāng)前數(shù)據(jù)包中的第一份包數(shù)據(jù)或者為當(dāng)前數(shù)據(jù)包中的最后一份包數(shù)據(jù);如果確定為第一份包數(shù)據(jù),則接收方判定當(dāng)前數(shù)據(jù)包接收開(kāi)始,如果確定為最后一份數(shù)據(jù)包,則接收方判定當(dāng)前數(shù)據(jù)包接收完成。
步驟S104,接收方根據(jù)包類(lèi)型ID從地址緩存區(qū)中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將第一存儲(chǔ)地址、當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū);在本發(fā)明實(shí)施例中,接收方可以根據(jù)包ID從地址緩存區(qū)中讀取該類(lèi)型包上一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的地址信息,并把該地址、數(shù)據(jù)、包的起始結(jié)束標(biāo)志重新組合存儲(chǔ)到數(shù)據(jù)緩存區(qū)中;步驟S106,接收方記錄新的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將第二存儲(chǔ)地址添加到對(duì)應(yīng)于包類(lèi)型ID的地址緩存區(qū)。在本發(fā)明實(shí)施例中,接收方可以首先記下當(dāng)前包數(shù)據(jù)在數(shù)據(jù)空間中的地址,再把這個(gè)新的地址寫(xiě)到對(duì)應(yīng)包類(lèi)型ID地址的緩存空間中。如果發(fā)現(xiàn)數(shù)據(jù)包的結(jié)束標(biāo)志,則表明整個(gè)數(shù)據(jù)包收集完畢,同時(shí)通知內(nèi)部處理模塊來(lái)讀取數(shù)據(jù)。
優(yōu)選地,當(dāng)接收方判定當(dāng)前數(shù)據(jù)包接收完成時(shí),可以將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效,并且上報(bào)當(dāng)前數(shù)據(jù)包為能夠被讀取的消息;當(dāng)然,由于在實(shí)際的包數(shù)據(jù)傳輸過(guò)程中可能出現(xiàn)錯(cuò)誤,或者超過(guò)包處理時(shí)間,系統(tǒng)需要將這些數(shù)據(jù)包進(jìn)行丟棄處理,此時(shí),系統(tǒng)可以向接收方發(fā)送包丟棄的命令,當(dāng)接收到包丟棄的命令時(shí),接收方可以根據(jù)報(bào)丟棄命令將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效,并且上報(bào)當(dāng)前數(shù)據(jù)包能夠被丟棄的消息。優(yōu)選地,在當(dāng)前數(shù)據(jù)包接收完成,接收方還可以對(duì)存儲(chǔ)完成的數(shù)據(jù)進(jìn)行讀取。具體地,可以根據(jù)當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次讀取當(dāng)前數(shù)據(jù)包的包數(shù)據(jù),直至讀取到當(dāng)前數(shù)據(jù)包的第一份包數(shù)據(jù)結(jié)束。例如,接收方內(nèi)部的內(nèi)部處理模塊可以根據(jù)包類(lèi)型ID首先從地址緩存區(qū)中讀取包最后一個(gè)數(shù)據(jù)的存儲(chǔ)地址,再根據(jù)這個(gè)地址到緩存區(qū)中讀出包的最后一份數(shù)據(jù),其中,每份數(shù)據(jù)都包含上一份數(shù)據(jù)的存儲(chǔ)地址。通過(guò)這種鏈表的方法就可以把該數(shù)據(jù)包的所有的包數(shù)據(jù)都讀出來(lái),一旦讀到數(shù)據(jù)中包的起始標(biāo)志有效,則表明該包所有的數(shù)據(jù)都從緩存區(qū)中讀出來(lái)了。圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例一種亂序數(shù)據(jù)包的鏈表式存儲(chǔ)方法流程圖,如圖2所示,該流程主要包括以下步驟SI,接收方接收到某個(gè)數(shù)據(jù)包的一份包數(shù)據(jù)并且對(duì)包數(shù)據(jù)進(jìn)行解析,解析出包類(lèi)型、包起始標(biāo)志、包結(jié)束標(biāo)志;S2,從地址緩存區(qū)中讀取該數(shù)據(jù)包上一份包數(shù)據(jù)所在的存儲(chǔ)空間的地址信息;S3,把上一份的包數(shù)據(jù)的存儲(chǔ)地址、當(dāng)前數(shù)據(jù)包的起始狀態(tài)、結(jié)束狀態(tài)與當(dāng)前接收到的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū)中;S4,把當(dāng)前的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)的存儲(chǔ)地址的包頭ID(即上述的包類(lèi)型ID)寫(xiě)入到對(duì)應(yīng)的地址緩存區(qū)中;S5,如果當(dāng)前接收的包數(shù)據(jù)是該數(shù)據(jù)包的最后一份數(shù)據(jù)(由包結(jié)束標(biāo)志決定),則包狀態(tài)處理電路將對(duì)應(yīng)包的狀態(tài)置為“有效”標(biāo)志;如果某個(gè)包完成了接收,包狀態(tài)處理電路通知內(nèi)部數(shù)據(jù)處理單元處理包數(shù)據(jù);內(nèi)部處理單元根據(jù)包的ID到地址緩沖區(qū)讀取包在數(shù)據(jù)緩存區(qū)當(dāng)中的最后一份數(shù)據(jù)的地址;S6,得到數(shù)據(jù)包的最后一份數(shù)據(jù)的地址后,根據(jù)這個(gè)地址到數(shù)據(jù)緩存區(qū)中讀取數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行解析,因?yàn)樽x出的數(shù)據(jù)中包含有上一份數(shù)據(jù)的存儲(chǔ)地址,所以再根據(jù)新得到的地址繼續(xù)索引上一份數(shù)據(jù),依次讀取就該數(shù)據(jù)包的所有的包數(shù)據(jù)索引出來(lái)了 ;如果在包數(shù)據(jù)的讀取過(guò)程中發(fā)現(xiàn)該數(shù)據(jù)包的起始位有效,則表明該包數(shù)據(jù)已經(jīng)讀取完畢。在本發(fā)明實(shí)施例中,數(shù)據(jù)包的每份包數(shù)據(jù)是指一般接口中一個(gè)數(shù)據(jù)包的所有數(shù)據(jù)需要分成若干個(gè)周期進(jìn)行傳輸,這里的一份包數(shù)據(jù)就是在一個(gè)周期傳輸?shù)臄?shù)據(jù)。請(qǐng)參考圖3,包的數(shù)據(jù)流和包格式如圖3所示,在圖3中,Px包類(lèi)型優(yōu)先級(jí)最低,可以被Py,Pz打斷;同時(shí),Py優(yōu)先級(jí)低,又可以被Pz打斷;只有先傳輸完P(guān)z,再傳輸Py,最后再傳輸Ρχ。在本發(fā)明實(shí)施例中,地址緩存區(qū)可以用于存儲(chǔ)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)當(dāng)中的地址,它是一般采用一個(gè)寫(xiě)端口,兩個(gè)讀端口的隨機(jī)讀取存儲(chǔ)器(RAM),寫(xiě)端口用來(lái)寫(xiě)入當(dāng)前包數(shù)據(jù)的存儲(chǔ)地址;其中,一個(gè)讀端口為數(shù)據(jù)處理單元所用;另外一個(gè)讀端口為數(shù)據(jù)緩存區(qū)電路所用。數(shù)據(jù)緩存區(qū)可以用來(lái)存儲(chǔ)當(dāng)前的包數(shù)據(jù)、以及上一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)的地址信息、包的起始標(biāo)志、包的結(jié)束標(biāo)志。每個(gè)包的索引也就是通過(guò)數(shù)據(jù)緩存區(qū)當(dāng)中的地址信息來(lái)實(shí)現(xiàn)。由于當(dāng)前讀出的數(shù)據(jù)中包含上一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)所在的地址,所以可通過(guò)這種方式將整個(gè)包數(shù)據(jù)以一個(gè)倒序的鏈表方式串聯(lián)起來(lái)。其中,包數(shù)據(jù)索引結(jié)束是通過(guò)包的起始標(biāo)志來(lái)判斷的。包狀態(tài)處理電路可以用來(lái)管理每種數(shù)據(jù)包的當(dāng)前的狀態(tài),這個(gè)狀態(tài)標(biāo)志該數(shù)據(jù)包是否完成包數(shù)據(jù)的接收。完成一個(gè)完整包的接收需要把對(duì)應(yīng)包·的狀態(tài)置為“有效”狀態(tài);數(shù)據(jù)處理單元完成一個(gè)對(duì)應(yīng)數(shù)據(jù)包的處理需要包對(duì)應(yīng)包的狀態(tài)置為“無(wú)效”狀態(tài)。在本發(fā)明實(shí)施例中,步驟S104中的地址緩存區(qū)存儲(chǔ)的地址信息是某種類(lèi)型的數(shù)據(jù)包的最后一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)的地址。其中,地址緩存區(qū)可以以包類(lèi)型ID進(jìn)行尋址,每接收到一份包數(shù)據(jù)時(shí),可以首先從地址緩存區(qū)讀取該類(lèi)型上一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)所在的地址,讀取后把該地址信息跟數(shù)據(jù)一起寫(xiě)入到數(shù)據(jù)緩存區(qū)中。請(qǐng)參照?qǐng)D4,圖4中描述的是接收方接收到包類(lèi)型為Z的數(shù)據(jù)包時(shí),首先從包地址緩存區(qū)讀取Z包上一份數(shù)據(jù)在數(shù)據(jù)緩存區(qū)當(dāng)中的地址addr_a,再把數(shù)據(jù)、包的起始標(biāo)志和addr_a—起存入到數(shù)據(jù)緩沖區(qū)中;同時(shí),還需要把當(dāng)前的數(shù)據(jù)緩存區(qū)的地址addr_b寫(xiě)入到地址緩存區(qū)中,通過(guò)這個(gè)過(guò)程就完成了 Z包數(shù)據(jù)的鏈接。在本發(fā)明實(shí)施例中,數(shù)據(jù)緩存區(qū)中的每份包數(shù)據(jù)都包含有一個(gè)地址信息,該地址信息是該包數(shù)據(jù)的上一份數(shù)據(jù)在數(shù)據(jù)緩沖區(qū)的地址。當(dāng)接收到某個(gè)包最后一份數(shù)據(jù)的時(shí)候,只需要把該包最后一份數(shù)據(jù)在數(shù)據(jù)緩沖區(qū)的地址信息保存到地址緩沖區(qū)中,內(nèi)部處理模塊就可以得到最后一份數(shù)據(jù)的地址,從而把該數(shù)據(jù)包的所有的包數(shù)據(jù)索引出來(lái)。請(qǐng)參照?qǐng)D5,對(duì)某個(gè)包的索引方式如附圖5所示,接收方完成了 Z包的數(shù)據(jù)接收后就把state_symbol對(duì)應(yīng)的包狀態(tài)置為有效。在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,數(shù)據(jù)處理模塊得到Z包有效的信息后,可以讀取地址緩存區(qū)(addr_buf)中包Z的地址信息addr_c, addr_c就是包Z在數(shù)據(jù)緩沖區(qū)(data_buf)中最后一份數(shù)據(jù)的地址;用地址addr_c讀取包Z最后一份數(shù)據(jù),讀取最后一份數(shù)據(jù)后可以馬上解析出倒數(shù)第二份數(shù)據(jù)的地址addr_b,再用addr_ba出倒數(shù)第三份數(shù)據(jù)來(lái),依次索引下去,直到索引出的數(shù)據(jù)里面包含包的起始信息才完成一個(gè)包所有數(shù)據(jù)的索引。由于當(dāng)前從數(shù)據(jù)緩存區(qū)讀出的數(shù)據(jù)包含上一份數(shù)據(jù)的地址,因此內(nèi)部緩存區(qū)讀出的數(shù)據(jù)是倒序的。內(nèi)部處理模塊需要根據(jù)自身的特點(diǎn)或者系統(tǒng)的需要決定是否需要把包數(shù)據(jù)的順序調(diào)換過(guò)來(lái)。例如,如果需要調(diào)換,那么從數(shù)據(jù)緩沖區(qū)讀出的數(shù)據(jù)可以重新存儲(chǔ)到一個(gè)小的緩沖器(BUFF)空間中,內(nèi)部處理模塊只需要從BUFF的最后一個(gè)地址空間開(kāi)始倒序讀取即可得到系統(tǒng)所需要的數(shù)據(jù)。
在本發(fā)明實(shí)施例中,各種包類(lèi)型的數(shù)據(jù)均使用統(tǒng)一的空間進(jìn)行順序存儲(chǔ),每收到一份包數(shù)據(jù)就可以直接寫(xiě)入數(shù)據(jù)緩沖區(qū)中,同時(shí)地址加I。而如果采用傳統(tǒng)的分區(qū)存儲(chǔ)方法,則每種類(lèi)型的包至少需要一個(gè)存儲(chǔ)區(qū),并且考慮到在某些情況下發(fā)送方可能一直發(fā)送一種數(shù)據(jù)包,所以,在為每個(gè)存儲(chǔ)區(qū)開(kāi)辟空間時(shí),都需按照最大流量來(lái)進(jìn)行開(kāi)辟。在實(shí)際運(yùn)用中,如果某個(gè)數(shù)據(jù)包由于優(yōu)先級(jí)比較低,大多被斷續(xù)傳送到接收方,此時(shí),接收方只需要根據(jù)上述鏈表存儲(chǔ)的方法直接進(jìn)行存儲(chǔ),而在讀取的時(shí)候,只需要根據(jù)上述的方法就把斷續(xù)的數(shù)據(jù)重新組裝起來(lái)。如果某種類(lèi)型的包由于某些原因需要丟棄處理,只需要把對(duì)應(yīng)包的狀態(tài)重新置位即可。上述步驟S1-S6描述了從 接收數(shù)據(jù)包到數(shù)據(jù)處理單元讀取數(shù)據(jù)包的過(guò)程。在整個(gè)過(guò)程中,數(shù)據(jù)是倒序索引出來(lái)的,因此內(nèi)部邏輯在應(yīng)用的時(shí)候需要區(qū)分對(duì)待。例如,如果包數(shù)據(jù)內(nèi)部每個(gè)周期的數(shù)據(jù)是獨(dú)立的,則數(shù)據(jù)可以直接應(yīng)用;如果包數(shù)據(jù)內(nèi)部是相關(guān)聯(lián)的,則數(shù)據(jù)處理單元可以根據(jù)需要加一組乒乓緩沖器,就可以把數(shù)據(jù)倒換回來(lái)。需要說(shuō)明的是,本發(fā)明實(shí)施例提供的上述方法完全可以采用流水線操作,接收方一旦接收到數(shù)據(jù),可直接按照?qǐng)D2所示的步驟S1-S6的順序進(jìn)行操作,并且,不管是包類(lèi)型亂序還是包內(nèi)數(shù)據(jù)斷續(xù)傳輸,如果按照步驟S1-S6進(jìn)行操作,都可以對(duì)每個(gè)類(lèi)型數(shù)據(jù)包的包數(shù)據(jù)進(jìn)行高效的管理。即使在某些情況下,系統(tǒng)需要對(duì)數(shù)據(jù)包進(jìn)行丟棄處理時(shí),也只需要在包狀態(tài)指示電路中把對(duì)應(yīng)包的狀態(tài)置為“無(wú)效”即可,這樣包狀態(tài)指示電路就不會(huì)再通知內(nèi)部數(shù)據(jù)處理單元。采用上述實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法,利用鏈表的概念將存儲(chǔ)端口接收到的某個(gè)類(lèi)型包的當(dāng)前包數(shù)據(jù)存儲(chǔ)在一個(gè)統(tǒng)一的地址緩存空間,在接收完一個(gè)完整的數(shù)據(jù)包后,就可以通知系統(tǒng)的處理模塊對(duì)存儲(chǔ)的數(shù)據(jù)包進(jìn)行讀取,節(jié)省了 RAM資源;并且在發(fā)生包類(lèi)型亂序或者數(shù)據(jù)斷續(xù)傳輸?shù)那闆r下,仍能夠保證包數(shù)據(jù)的正確接收,從而大大提高了通信系統(tǒng)中數(shù)據(jù)傳輸?shù)恼_率。圖6是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖,該裝置用以實(shí)現(xiàn)上述實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法,該裝置主要包括接收模塊10、存儲(chǔ)模塊20以及記錄模塊30。其中,接收模塊10,用于接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,當(dāng)前包數(shù)據(jù)攜帶有當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID ;存儲(chǔ)模塊20,連接至接收模塊10,用于根據(jù)包類(lèi)型ID從地址緩存區(qū)中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將第一存儲(chǔ)地址、當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū);記錄模塊30,連接至存儲(chǔ)模塊20,用于記錄新的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將第二存儲(chǔ)地址添加到對(duì)應(yīng)于包類(lèi)型ID的地址緩存區(qū)。圖7是根據(jù)本發(fā)明優(yōu)選實(shí)施例的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖,如圖7所示,該裝置還可以包括判斷模塊40和更新模塊50。其中,判斷模塊40,用于根據(jù)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)中攜帶的包起始狀態(tài)標(biāo)識(shí)和/或包結(jié)束狀態(tài)標(biāo)志,確定當(dāng)前數(shù)據(jù)包接收開(kāi)始或接收完成。更新模塊50,用于在判斷模塊40判斷當(dāng)前數(shù)據(jù)包接收完成后,將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效。優(yōu)選地,在實(shí)際應(yīng)用中,接收模塊10還可以用于接收系統(tǒng)發(fā)送的丟棄當(dāng)前數(shù)據(jù)包的執(zhí)行命令;更新模塊50,還可以用于根據(jù)執(zhí)行命令將當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效。在本發(fā)明實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,如圖7所示,該裝置還可以包括讀取模塊60,連接至記錄模塊30和存儲(chǔ)模塊20,用于在當(dāng)前數(shù)據(jù)包接收完成之后,根據(jù)當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次從所述存儲(chǔ)模塊20中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù),直至讀取到當(dāng)前數(shù)據(jù)包的第一份報(bào)數(shù)據(jù)結(jié)束。圖8是根據(jù)本發(fā)明實(shí)施例一個(gè)優(yōu)選實(shí)施方式的亂序數(shù)據(jù)包鏈表式存儲(chǔ)裝置示意圖,如圖8所示,該裝置包括包接收、解包模塊81,用于在端口接收包數(shù)據(jù),將包數(shù)據(jù)中的包類(lèi)型,包起始標(biāo)志,包結(jié)束標(biāo)志解析出來(lái);數(shù)據(jù)存儲(chǔ)模塊82,用于存儲(chǔ)解包電路解析出來(lái)的包數(shù)據(jù)、緩存數(shù)據(jù)中包含的鏈表信息以及包起始信息,根據(jù)端口的最大流量采用統(tǒng)一的存儲(chǔ)區(qū)進(jìn)行存儲(chǔ)空間的分配;地址存儲(chǔ)模塊83,用于保存每種類(lèi)型包的最后一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)的地址,其中,確定當(dāng)前數(shù)據(jù)包接收結(jié)束時(shí),地址緩存區(qū)中的地址即數(shù)據(jù)包在數(shù)據(jù)緩存區(qū)中的最后一份包數(shù)據(jù)的地址;包狀態(tài)處理模塊84,用于指示當(dāng)前數(shù)據(jù)包是否接收完成的的標(biāo)志,其中,當(dāng)接收完某個(gè)數(shù)據(jù)包時(shí),標(biāo)志為“有效”指示,通知內(nèi)部邏輯可以調(diào)用該包,如果內(nèi)部邏輯完成某個(gè)包處理時(shí),去除“無(wú)效”指示,如果由于某些原因或某個(gè)數(shù)據(jù)包需要丟棄處理,,在包狀態(tài)電路中重新把對(duì)應(yīng)包的狀態(tài)置為“無(wú)效”指示;數(shù)據(jù)處理單元85,用于在數(shù)據(jù)包的包數(shù)據(jù)接收完成并存儲(chǔ)完畢后,對(duì)數(shù)據(jù)存儲(chǔ)區(qū)中的包數(shù)據(jù)進(jìn)行讀取。 需要說(shuō)明的是,在接口硬件設(shè)計(jì)中,應(yīng)用軟件領(lǐng)域鏈表的概念來(lái)存儲(chǔ)數(shù)據(jù)包,正如上述方法步驟中所描述的,可以將數(shù)據(jù)采用鏈表式管理作為基礎(chǔ)。同時(shí),接收方對(duì)數(shù)據(jù)包的存儲(chǔ)不采用傳統(tǒng)的分區(qū)存儲(chǔ)方式,而是根據(jù)接口的最大流量采用統(tǒng)一存儲(chǔ)的方式,從而大大節(jié)省了存儲(chǔ)資源,不僅能夠支持?jǐn)?shù)據(jù)包的順序傳輸,而且能夠支持?jǐn)?shù)包的亂序傳輸(包括數(shù)據(jù)包內(nèi)的包數(shù)據(jù)斷續(xù)傳輸)。采用上述實(shí)施例提供的數(shù)據(jù)存儲(chǔ)裝置,可以實(shí)現(xiàn)上述實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法,將存儲(chǔ)端口接收到的某個(gè)類(lèi)型包的當(dāng)前包數(shù)據(jù)存儲(chǔ)在一個(gè)統(tǒng)一的地址緩存空間,通過(guò)鏈表的方式將當(dāng)前數(shù)據(jù)包的包數(shù)據(jù)的存儲(chǔ)地址按照先后次序存儲(chǔ)在數(shù)據(jù)緩區(qū)中,進(jìn)而接收完一個(gè)完整的數(shù)據(jù)包,節(jié)省了 RAM資源,并且在發(fā)生包類(lèi)型亂序或者數(shù)據(jù)斷續(xù)傳輸?shù)那闆r下,仍能夠保證包數(shù)據(jù)的正確接收。從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果通過(guò)采用一種鏈表式的存儲(chǔ)方法對(duì)當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)進(jìn)行存儲(chǔ),并且將所有數(shù)據(jù)包的包數(shù)據(jù)存儲(chǔ)在一個(gè)存儲(chǔ)空間內(nèi),其中,當(dāng)前包數(shù)據(jù)中包含上一份包數(shù)據(jù)中的存儲(chǔ)地址,方便了當(dāng)前數(shù)據(jù)包接收完成后對(duì)當(dāng)前數(shù)據(jù)包進(jìn)行鏈表式讀取,解決了傳統(tǒng)存儲(chǔ)方法不能夠支持亂序包接收、采用大量存儲(chǔ)分區(qū)數(shù)據(jù)包導(dǎo)致的存儲(chǔ)資源浪費(fèi)的問(wèn)題,進(jìn)而達(dá)到了支持亂序包的包內(nèi)斷續(xù)傳輸、節(jié)省存儲(chǔ)資源的效果。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,包括 接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,所述當(dāng)前包數(shù)據(jù)攜帶有所述當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID ; 所述接收方根據(jù)所述包類(lèi)型ID從地址緩存區(qū)中讀取所述當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將所述第一存儲(chǔ)地址、所述當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)緩存區(qū); 所述接收方記錄所述新的包數(shù)據(jù)在所述數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將所述第二存儲(chǔ)地址添加到對(duì)應(yīng)于所述包類(lèi)型ID的所述地址緩存區(qū)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)之后,包括 所述接收方根據(jù)其接收到的所述當(dāng)前數(shù)據(jù)包的所述當(dāng)前包數(shù)據(jù)攜帶的包起始狀態(tài)標(biāo)志確定所述當(dāng)前包數(shù)據(jù)為所述當(dāng)前數(shù)據(jù)包中的第一份包數(shù)據(jù); 所述接收方判定所述當(dāng)前數(shù)據(jù)包接收開(kāi)始。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,在接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù)之后,還包括 所述接收方根據(jù)其接收到的所述當(dāng)前數(shù)據(jù)包的所述當(dāng)前包數(shù)據(jù)中的所述包結(jié)束狀態(tài)標(biāo)志確定所述當(dāng)前包數(shù)據(jù)為所述當(dāng)前數(shù)據(jù)包中的最后一份包數(shù)據(jù); 所述接收方判定所述當(dāng)前數(shù)據(jù)包接收完成。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述接收方判定所述當(dāng)前數(shù)據(jù)包接收完成之后,包括 所述接收方將所述當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效; 所述接收方上報(bào)所述當(dāng)前數(shù)據(jù)包為能夠被讀取的消息。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,在所述接收方判定所述當(dāng)前數(shù)據(jù)包接收完成后,還包括 所述接收方根據(jù)來(lái)自系統(tǒng)的執(zhí)行命令將所述當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效; 所述接收方上報(bào)所述當(dāng)前數(shù)據(jù)包為能夠被丟棄的消息。
6.根據(jù)權(quán)利要求I至5中任一項(xiàng)所述的方法,其特征在于,在所述當(dāng)前數(shù)據(jù)包接收完成之后,所述方法還包括 根據(jù)所述當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次讀取所述當(dāng)前數(shù)據(jù)包的包數(shù)據(jù),直至讀取到所述當(dāng)前數(shù)據(jù)包的第一份包數(shù)據(jù)結(jié)束。
7.一種數(shù)據(jù)存儲(chǔ)裝置,其特征在于,包括 接收模塊,用于接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,所述當(dāng)前包數(shù)據(jù)攜帶有所述當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID ; 存儲(chǔ)模塊,根據(jù)所述包類(lèi)型ID從地址緩存區(qū)中讀取所述當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將所述第一存儲(chǔ)地址、所述當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)緩存區(qū); 記錄模塊,用于記錄所述新的包數(shù)據(jù)在所述數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將所述第二存儲(chǔ)地址添加到對(duì)應(yīng)于所述包類(lèi)型ID的所述地址緩存區(qū)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括判斷模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)包的所述當(dāng)前包數(shù)據(jù)中攜帶的包起始狀態(tài)標(biāo)識(shí)和/或包結(jié)束狀態(tài)標(biāo)志,確定所述當(dāng)前數(shù)據(jù)包接收開(kāi)始或接收完成。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括 更新模塊,用于在所述判斷模塊判斷所述當(dāng)前數(shù)據(jù)包接收完成后,將所述當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為有效。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述接收模塊還用于接收系統(tǒng)發(fā)送的丟棄所述當(dāng)前數(shù)據(jù)包的執(zhí)行命令; 所述更新模塊還用于根據(jù)所述執(zhí)行命令將所述當(dāng)前數(shù)據(jù)包的包狀態(tài)更新為無(wú)效。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括 讀取模塊,用于在所述當(dāng)前數(shù)據(jù)包接收完成之后,根據(jù)所述當(dāng)前數(shù)據(jù)包的最后一份包數(shù)據(jù)中的存儲(chǔ)地址,以從后往前的順序依次讀取所述當(dāng)前數(shù)據(jù)包的包數(shù)據(jù),直至讀取到所述當(dāng)前數(shù)據(jù)包的第一份包數(shù)據(jù)結(jié)束。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)存儲(chǔ)方法及裝置。其中,該方法包括接收方接收發(fā)送方發(fā)送的當(dāng)前數(shù)據(jù)包的當(dāng)前包數(shù)據(jù),其中,當(dāng)前包數(shù)據(jù)攜帶有當(dāng)前數(shù)據(jù)包的包類(lèi)型標(biāo)識(shí)ID;接收方根據(jù)包類(lèi)型ID從地址緩存區(qū)中讀取當(dāng)前包數(shù)據(jù)的上一份包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第一存儲(chǔ)地址,將第一存儲(chǔ)地址、當(dāng)前包數(shù)據(jù)作為新的包數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)緩存區(qū);接收方記錄新的包數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中的第二存儲(chǔ)地址,將第二存儲(chǔ)地址添加到對(duì)應(yīng)于包類(lèi)型ID的地址緩存區(qū)。通過(guò)本發(fā)明,可以為多種類(lèi)型的數(shù)據(jù)包僅分配一個(gè)獨(dú)立的存儲(chǔ)空間就能完成多種類(lèi)型的數(shù)據(jù)包的存儲(chǔ),從而避免了隨機(jī)讀取內(nèi)存(RAM)資源的浪費(fèi),方便對(duì)需要丟棄的數(shù)據(jù)包進(jìn)行處理。
文檔編號(hào)H04L12/861GK102916902SQ20111022121
公開(kāi)日2013年2月6日 申請(qǐng)日期2011年8月3日 優(yōu)先權(quán)日2011年8月3日
發(fā)明者肖禮盛, 唐雄, 劉一非, 廖輝 申請(qǐng)人:中興通訊股份有限公司