專利名稱:一種基于ddr sdram進(jìn)行數(shù)據(jù)讀寫(xiě)的方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊技術(shù)領(lǐng)域,尤其涉及一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Double Data Rate Synchronous Dynamic Random Access Memory, DDRSDRAM)進(jìn)行數(shù)據(jù)讀寫(xiě)的方法、裝置及系統(tǒng)。
背景技術(shù):
隨著網(wǎng)絡(luò)容量與業(yè)務(wù)不斷增長(zhǎng),為了實(shí)現(xiàn)報(bào)文的服務(wù)質(zhì)量(Quality of Service,QoS)服務(wù)要求,高優(yōu)先級(jí)的優(yōu)先服務(wù),需要網(wǎng)絡(luò)設(shè)備中的流量管理芯片有一個(gè)足夠大的緩存空間來(lái)存儲(chǔ)上游設(shè)備發(fā)送過(guò)來(lái)的報(bào)文,并將報(bào)文緩存后調(diào)度輸出,從而實(shí)現(xiàn)按照優(yōu)先級(jí)對(duì)不同的數(shù)據(jù)進(jìn)行調(diào)度。對(duì)高端網(wǎng)絡(luò)設(shè)備而言,基本要求是至少緩存200ms線速的報(bào)文數(shù)據(jù),在40Gbps環(huán) 境下,該網(wǎng)絡(luò)設(shè)備需要至少SGbits緩存容量。為了保證緩存容量,并且降低經(jīng)濟(jì)成本,在網(wǎng)絡(luò)設(shè)備中存儲(chǔ)器普遍采用DDR3SDRAM。網(wǎng)絡(luò)設(shè)備的流量管理芯片是由隊(duì)列管理系統(tǒng),緩存管理系統(tǒng)和DDR控制器組成的,為了提高緩存的利用率,可以采用的方法包括提高緩存管理系統(tǒng)的效率,或提高DDR的讀寫(xiě)效率,在現(xiàn)有技術(shù)中普遍采用提高DDR的讀寫(xiě)效率實(shí)現(xiàn)。通過(guò)提高DDR的讀寫(xiě)效率,提高緩存的利用率的方法包括將接收到的報(bào)文數(shù)據(jù)切分為固定大小的單元,將各個(gè)單元按照DDR bank輪詢的方式進(jìn)行讀寫(xiě)操作。當(dāng)采用bank輪詢的方式進(jìn)行讀寫(xiě)操作時(shí),對(duì)于不同bank間操作的情況,采用狀態(tài)機(jī)的方法,對(duì)將要執(zhí)行命令的行提前Precharge和Activate操作,從而實(shí)現(xiàn)數(shù)據(jù)線上的無(wú)縫連接。對(duì)同一個(gè)bank換行通過(guò)快進(jìn)快出(FIFO)緩存方式亂序,讓非同bank換行或者非同bank的命令先執(zhí)行。對(duì)于讀寫(xiě)操作轉(zhuǎn)換時(shí)的固定延遲,采用讀寫(xiě)均衡的方法減少這種轉(zhuǎn)換的次數(shù)來(lái)提高利用率。但是上述通過(guò)提高DDR讀寫(xiě)效率提高緩存利用率的方法,也是存在很大的弊端的,這是因?yàn)樵谶M(jìn)行讀寫(xiě)操作時(shí),一般將兩片DDR作為一組,當(dāng)將報(bào)文切分為固定長(zhǎng)度的單元進(jìn)行存儲(chǔ)時(shí),如果切分的某個(gè)單元內(nèi)包含的有效字節(jié)比較少,則存在較大的帶寬浪費(fèi)。例如固定長(zhǎng)度為32字節(jié)時(shí),如果一個(gè)報(bào)文是33字節(jié),則將其應(yīng)該切分為2個(gè)單元,第一個(gè)單元有32個(gè)字節(jié),但第二個(gè)單元的有效字節(jié)數(shù)只為1,當(dāng)通過(guò)一組DDR對(duì)其存儲(chǔ)時(shí),將近浪費(fèi)掉50%的帶寬,從而不利于提聞DDR讀與的效率,并且也不利于提聞緩存的利用率。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的方法、裝置及系統(tǒng),用以解決現(xiàn)有基于DDR進(jìn)行讀寫(xiě)時(shí)效率不高,不利于提高緩存利用率的問(wèn)題。本發(fā)明實(shí)施例提供的一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的方法,所述數(shù)據(jù)寫(xiě)操作通過(guò)多組DDR SDRAM實(shí)現(xiàn),包括根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊;
針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDR SDRAM每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDRSDRAM 中。本發(fā)明實(shí)施例提供的一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的方法,所述數(shù)據(jù)讀操作通過(guò)多組DDR SDRAM實(shí)現(xiàn),包括根據(jù)每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,以及接收到的 讀命令和讀地址,確定該讀地址對(duì)應(yīng)的DDR每個(gè)數(shù)據(jù)子單元的物理地址;當(dāng)數(shù)據(jù)子單元為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDR SDRAM讀取出的數(shù)據(jù)合并;當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文。本發(fā)明實(shí)施例提供的一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的裝置,所述裝置包括隊(duì)列管理模塊,用于根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊;緩存管理模塊,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDR SDRAM每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,將拼接后組成的數(shù)據(jù)子單元發(fā)送給DDR控制器模塊;DDR控制器模塊,用于將接收到的數(shù)據(jù)子單元寫(xiě)入每組DDR SDRAM中。本發(fā)明實(shí)施例提供的一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的裝置,所述裝置包括隊(duì)列管理模塊,用于發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址;緩存管理模塊,用于針對(duì)每個(gè)讀命令,根據(jù)讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成DDR每個(gè)數(shù)據(jù)子單元的物理地址;當(dāng)前讀操作讀取的為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDR SDRAM讀取出的數(shù)據(jù)合并;當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文;
DDR控制器模塊,用于從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的數(shù)據(jù)子單
J Li o本發(fā)明實(shí)施例提供的一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的系統(tǒng),所述系統(tǒng)包括上述的寫(xiě)操作的裝置,和上述的讀操作的裝置。本發(fā)明實(shí)施例提供了一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的方法、裝置及系統(tǒng),該寫(xiě)方法中根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,當(dāng)該數(shù)據(jù)塊中最后一個(gè)數(shù)據(jù)子單元包含的字節(jié)數(shù)不大于一片DDR每次處理的字節(jié)長(zhǎng)度時(shí),將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。由于在本發(fā)明實(shí)施例中當(dāng)通過(guò)每組DDR進(jìn)行讀寫(xiě)操作時(shí),為了避免DDR資源的浪費(fèi),將數(shù)據(jù)進(jìn)行拼接,從而提高了 DDR讀寫(xiě)的效率,提高了緩存資源的利用率。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的過(guò)程;圖2為本發(fā)明實(shí)施例提供的基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的過(guò)程;圖3為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的裝置結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的寫(xiě)操作時(shí)序圖;圖5為本發(fā)明實(shí)施例提供的報(bào)文劃分為數(shù)據(jù)塊的示意圖;圖6為本發(fā)明實(shí)施例提供的對(duì)數(shù)據(jù)子單元進(jìn)行數(shù)據(jù)存儲(chǔ)的過(guò)程;圖7為本發(fā)明實(shí)施例提供的數(shù)據(jù)子單元拼接過(guò)程的詳細(xì)描述;圖8為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的過(guò)程;圖9為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的詳細(xì)過(guò)程;圖10為本發(fā)明實(shí)施例提供的另一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的詳細(xì)過(guò)程;圖11為本本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的裝置的結(jié)構(gòu)示意圖;圖12為本發(fā)明實(shí)施例提供的讀操作時(shí)序圖;圖13為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀取方式示意圖;圖14為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)讀取方式示意圖。
具體實(shí)施例方式為了提聞DDR進(jìn)行讀與的效率,提聞緩存利用率,本發(fā)明實(shí)施例提供了一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的方法,系統(tǒng)及裝置,該方法中基于數(shù)據(jù)拼接,提高每組DDR讀寫(xiě)操作的效率,從而提高緩存的利用率。為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚、明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖I為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的過(guò)程,該過(guò)程包括以下步驟SlOl :根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊。S102 :針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元。S103:判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDR SDRAM每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S104,否則,進(jìn)行步驟 S105。S104:根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。S105 :將該數(shù)據(jù)子單元寫(xiě)入該組DDR SDRAM中。 由于鏈表節(jié)點(diǎn)的數(shù)量,以及鏈表節(jié)點(diǎn)的容量,決定了緩存的容量,并且每片DDRSDRAM(以下簡(jiǎn)稱DDR)的最大容量也是可知,因此可知在每臺(tái)網(wǎng)絡(luò)設(shè)備中需要幾片DDR。當(dāng)確定了 DDR數(shù)量后,將每?jī)善珼DR劃分為一組,構(gòu)成一組DDR。對(duì)于DDR3,其是按照8個(gè)突發(fā)(burst)的方式進(jìn)行存儲(chǔ)的,因此可知每片DDR在一個(gè)周期中可以處理的字節(jié)長(zhǎng)度,并且每組DDR每個(gè)周期處理的字節(jié)長(zhǎng)度也是可知的。在本發(fā)明實(shí)施例中,當(dāng)網(wǎng)絡(luò)設(shè)備接收到相應(yīng)的報(bào)文后,根據(jù)鏈表節(jié)點(diǎn)的大小,將每個(gè)報(bào)文劃分為相應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊,例如將每個(gè)報(bào)文劃分為512字節(jié)的數(shù)據(jù)塊。當(dāng)將每個(gè)報(bào)文劃分為多個(gè)數(shù)據(jù)塊后,根據(jù)每組DDR每個(gè)周期可以處理的字節(jié)長(zhǎng)度,又可以將每個(gè)數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元。每組DDR對(duì)每個(gè)數(shù)據(jù)子單元進(jìn)行讀寫(xiě)操作。由于每個(gè)數(shù)據(jù)子單元包含的字節(jié)數(shù),是根據(jù)每組DDR每個(gè)周期可以處理的字節(jié)長(zhǎng)度進(jìn)行劃分的,當(dāng)該數(shù)據(jù)子單元為該數(shù)據(jù)塊的最后一個(gè)數(shù)據(jù)子單元時(shí),該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)很可能不大于對(duì)其進(jìn)行處理的一組DDR—個(gè)周期可以處理的字節(jié)長(zhǎng)度。當(dāng)該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)不大于一片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度時(shí),則對(duì)該數(shù)據(jù)子單元進(jìn)行處理的該組DDR在對(duì)該數(shù)據(jù)子單元進(jìn)行處理時(shí),一片DDR在進(jìn)行時(shí)就是進(jìn)行了空操作,浪費(fèi)了帶寬資源。因此在本發(fā)明實(shí)施例中當(dāng)該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)不大于一片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度時(shí),則根據(jù)該片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度,將數(shù)據(jù)子單元與該數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)在單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,構(gòu)成一個(gè)新的數(shù)據(jù)子單元寫(xiě)入該組DDR中,從而提高DDR寫(xiě)操作的效率,進(jìn)而提高緩存的利用率。具體的例如,當(dāng)每片DDR是按照8個(gè)burst的方式進(jìn)行讀寫(xiě)處理時(shí),每片DDR的數(shù)據(jù)位寬為16bit,因此每片DDR每次的操作是16字節(jié),也就是128bit,因此一組DDR包含2片DDR時(shí),其每次操作也就是每個(gè)周期可以操作32字節(jié)的數(shù)據(jù)。當(dāng)網(wǎng)絡(luò)設(shè)備接收到每個(gè)報(bào)文時(shí),根據(jù)鏈表節(jié)點(diǎn)的大小,將每個(gè)報(bào)文劃分為512字節(jié)的數(shù)據(jù)塊,再將每個(gè)512字節(jié)的數(shù)據(jù)塊劃分為8個(gè)64字節(jié)的單元,每個(gè)單元再分為2個(gè)32字節(jié)的數(shù)據(jù)子單元,每個(gè)數(shù)據(jù)子單元再分為2個(gè)128bit的數(shù)據(jù),每個(gè)128bit的數(shù)據(jù)分別存儲(chǔ)到每組DDR中的每片DDR中。由于在本發(fā)明實(shí)施例中一組DDR包括兩片DDR,所以在進(jìn)行數(shù)據(jù)子單元的劃分時(shí),是按照32字節(jié)的精度進(jìn)行劃分的,即將數(shù)據(jù)塊按照32字節(jié)的精度劃分為多個(gè)數(shù)據(jù)子單元。當(dāng)該組DDR對(duì)每個(gè)數(shù)據(jù)子單元進(jìn)行處理時(shí),分兩個(gè)周期完成,第一個(gè)周期由第一片DDR存儲(chǔ)128bit數(shù)據(jù),第二周期由第二片DDR存儲(chǔ)128bit數(shù)據(jù)。因此當(dāng)數(shù)據(jù)子單元的有效字節(jié)數(shù)小于一片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度時(shí),例如當(dāng)該數(shù)據(jù)子單元包括的有效字節(jié)數(shù)為16字節(jié),S卩128bit。此時(shí)在向DDR組寫(xiě)入數(shù)據(jù)時(shí),首先在第一個(gè)周期向第一片DDR寫(xiě)入128bit數(shù)據(jù),在第二個(gè)周期在向第二片DDR寫(xiě)入數(shù)據(jù)時(shí),由于該數(shù)據(jù)子單元的數(shù)據(jù)已經(jīng)被全部寫(xiě)入DDR 了,因此造成了第二片DDR的浪費(fèi)。在本發(fā)明實(shí)施例中為了避免這種浪費(fèi),當(dāng)該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)小于一片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度時(shí),將數(shù)據(jù)子單元與該數(shù)據(jù)塊的下一數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,將拼接重新構(gòu)成的數(shù)據(jù)子單元寫(xiě)入該組DDR中。由于在將報(bào)文,按照鏈表節(jié)點(diǎn)的大小劃分為相應(yīng)長(zhǎng)度的每個(gè)數(shù)據(jù)塊時(shí),只可能最后一個(gè)數(shù)據(jù)塊中最后一個(gè)數(shù)據(jù)子單元的包含的有效字節(jié)數(shù),不大于一片DDR每個(gè)周期處理的字節(jié)長(zhǎng)度,因此在本發(fā)明實(shí)施例中為了進(jìn)一步提高數(shù)據(jù)讀寫(xiě)的效率,當(dāng)判斷該數(shù)據(jù)塊包含報(bào)文的報(bào)文尾信息時(shí),才針對(duì)該數(shù)據(jù)塊中的數(shù)據(jù)子單元進(jìn)行判斷。
圖2為本發(fā)明實(shí)施例提供的基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的過(guò)程,該過(guò)程包括以下步驟S201 :根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊。S202 :針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元。S203:判斷該數(shù)據(jù)塊是否包含報(bào)文的報(bào)文尾信息,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S204,否則,進(jìn)行步驟S206。S204:判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S205,否則,進(jìn)行步驟S206。S205 :根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。S206 :將該數(shù)據(jù)子單元寫(xiě)入該組DDR SDRAM中。圖3為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的裝置結(jié)構(gòu)示意圖,該裝置包括隊(duì)列管理模塊31,用于根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊;緩存管理模塊32,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDRSDRAM每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,將拼接后組成的數(shù)據(jù)子單元發(fā)送給DDR控制器模塊33 ;DDR控制器模塊33,用于將接收到的數(shù)據(jù)子單元寫(xiě)入每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM中。在本發(fā)明實(shí)施例中為了進(jìn)一步提高基于DDR進(jìn)行數(shù)據(jù)寫(xiě)入的效率,該緩存管理模塊32,還用于判斷所述數(shù)據(jù)塊是否包含報(bào)文的報(bào)文尾信息。
下面結(jié)合圖3所示的裝置,對(duì)本發(fā)明實(shí)施例中基于DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的過(guò)程進(jìn)行詳細(xì)說(shuō)明。在本發(fā)明實(shí)施例中該隊(duì)列管理模塊與緩存管理模塊之間是按照切分后的數(shù)據(jù)塊進(jìn)行操作的,現(xiàn)以鏈表節(jié)點(diǎn)的大小為512字節(jié),即一個(gè)數(shù)據(jù)塊的標(biāo)準(zhǔn)有效字節(jié)數(shù)為512字節(jié),,一組DDR—個(gè)周期處理的字節(jié)長(zhǎng)度為32字節(jié),即一個(gè)數(shù)據(jù)子單元的標(biāo)準(zhǔn)有效字節(jié)數(shù)為32字節(jié)為例進(jìn)行說(shuō)明。在網(wǎng)絡(luò)設(shè)備中當(dāng)隊(duì)列管理模塊接收到待寫(xiě)入的報(bào)文后,根據(jù)鏈表節(jié)點(diǎn)的大小,將該報(bào)文以固定字節(jié)長(zhǎng)度512字節(jié)為標(biāo)準(zhǔn),劃分為多個(gè)數(shù)據(jù)塊(block)。將劃分后的數(shù)據(jù)塊作為寫(xiě)數(shù)據(jù)發(fā)送到緩存管理模塊,并向緩存管理模塊發(fā)送寫(xiě)操作命令。其中隊(duì)列管理模塊發(fā)送的寫(xiě)操作命令包含寫(xiě)數(shù)據(jù)和寫(xiě)信號(hào),其中寫(xiě)信號(hào)和寫(xiě)數(shù)據(jù)是分別通過(guò)不同的通道發(fā)送的。圖4為本發(fā)明實(shí)施例提供的寫(xiě)操作時(shí)序圖,在時(shí)序圖中主要包括寫(xiě)信號(hào),在該圖中最上面為時(shí)鐘信號(hào),寫(xiě)信號(hào)包括寫(xiě)使能信號(hào)(wr_Cmd_val),當(dāng)前數(shù)據(jù)報(bào)寫(xiě)入的邏輯地址(wr_add),當(dāng)前數(shù)據(jù)塊的有效字節(jié)數(shù)(wr_data_val),數(shù)據(jù)塊的開(kāi)始block指示(wr_sop)和數(shù)據(jù)塊結(jié)束block指示(wr_eop)。緩存管理模塊根據(jù)接收到的寫(xiě)操作命令,將接收到的邏輯地址轉(zhuǎn)換為DDR存儲(chǔ)器的物理地址,并且根據(jù)當(dāng)前數(shù)據(jù)塊包含的有效字節(jié)數(shù),確定劃分為數(shù)據(jù)子單元的個(gè)數(shù),并在接收到隊(duì)列管理模塊發(fā)送的寫(xiě)數(shù)據(jù),即一個(gè)數(shù)據(jù)塊,根據(jù)確定的數(shù)據(jù)子單元的個(gè)數(shù),通過(guò)8個(gè)寫(xiě)數(shù)據(jù)RAM進(jìn)行位寬轉(zhuǎn)換,轉(zhuǎn)換成128bit的數(shù)據(jù),并將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送給DDR控制器模塊。緩存管理模塊與DDR控制器模塊之間的時(shí)鐘域是266MHz,而DDR控制器模塊和DDR之間的時(shí)鐘域是533MHz,每片DDR的位寬是16bit,兩片就是32bit,由于DDR的雙倍速率,因此相當(dāng)于1066MHz的時(shí)鐘域,這樣緩存管理模塊和DDR控制器模塊之間的接口位寬是128bit才能速率匹配上。當(dāng)選擇的每片DDR每個(gè)周期處理的數(shù)據(jù)為16字節(jié)時(shí),則對(duì)應(yīng)一組DDR的數(shù)據(jù)子單元包含的字節(jié)數(shù)為32字節(jié),因此在數(shù)據(jù)管理模塊在根據(jù)數(shù)據(jù)塊包含的有效字節(jié)數(shù),確定劃分為數(shù)據(jù)子單元的個(gè)數(shù)時(shí),根據(jù)每個(gè)數(shù)據(jù)子單元的固定字節(jié)長(zhǎng)度為32字節(jié),將數(shù)據(jù)塊劃分為對(duì)應(yīng)個(gè)數(shù)的數(shù)據(jù)子單元。并且數(shù)據(jù)管理模塊是將一個(gè)數(shù)據(jù)子單元按照兩個(gè)周期操作的,每個(gè)周期傳輸128bit的數(shù)據(jù)。具體的隊(duì)列管理模塊在將一個(gè)數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元時(shí),如圖5所示,例如該隊(duì)列管理模塊接收到兩個(gè)報(bào)文,分別為報(bào)文0和報(bào)文1,兩個(gè)報(bào)文的長(zhǎng)度不同。當(dāng)接收到該每個(gè)報(bào)文時(shí),將該報(bào)文劃分為多個(gè)512字節(jié)的數(shù)據(jù)塊,如圖5所示,報(bào)文0劃分為了 n個(gè)數(shù)據(jù)塊,報(bào)文I劃分為了 k個(gè)數(shù)據(jù)塊。當(dāng)將每個(gè)報(bào)文劃分為了多個(gè)數(shù)據(jù)塊后,針對(duì)每個(gè)數(shù)據(jù)塊,將該數(shù)據(jù)塊根據(jù)固定的字節(jié)長(zhǎng)度64字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為8個(gè)單元(cell),即將每個(gè)數(shù)據(jù)塊劃分為0 7共8個(gè)單元。具體的當(dāng)該兩個(gè)報(bào)文屬于同一隊(duì)列時(shí),可以將該兩個(gè)報(bào)文劃分后的單元按照時(shí)間順序,確定每個(gè)每個(gè)單元的隊(duì)列序號(hào),將每個(gè)單元按照隊(duì)列序號(hào)排列。之后將每個(gè)單元再按照32字節(jié)的固定長(zhǎng)度,劃分為兩個(gè)數(shù)據(jù)子單元。由于每個(gè)數(shù)據(jù)塊包含的有效字節(jié)數(shù)可能比512字節(jié)少,因此在將該數(shù)據(jù)塊劃分為數(shù)據(jù)子單元后,每個(gè)數(shù)據(jù)子單元包含的字節(jié)數(shù)也不可能完全都是32字節(jié)。當(dāng)該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)為32字節(jié)時(shí),將該數(shù)據(jù)子 單元包含的有效字節(jié)劃分為2個(gè)128bit的數(shù)據(jù),兩個(gè)128bit數(shù)據(jù)輪詢的存入一組DDR的兩片DDR中,如圖6所示,數(shù)據(jù)子單元O的第一個(gè)128bit數(shù)據(jù)存入DDR組的DDR片O中,第二個(gè)128bit數(shù)據(jù)存入DDR組的DDR片I中,數(shù)據(jù)子單元I的第一個(gè)128bit數(shù)據(jù)存入DDR組的DDR片O中,第二個(gè)128bit數(shù)據(jù)存入DDR組的DDR片I中。數(shù)據(jù)管理模塊在將數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元后,當(dāng)該數(shù)據(jù)塊中最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù)小于16字節(jié)時(shí),即該數(shù)據(jù)子單元包含的有效字節(jié)數(shù)小于128bit時(shí),則該數(shù)據(jù)管理模塊在接收到下一個(gè)數(shù)據(jù)塊時(shí),并按照寫(xiě)信號(hào)將該數(shù)據(jù)塊劃分為對(duì)應(yīng)的數(shù)據(jù)子單元后,將該下一個(gè)數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)子單元的前128bit,與該最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù)進(jìn)行拼接,構(gòu)成一個(gè)新的數(shù)據(jù)子單元,并將構(gòu)成的該新的數(shù)據(jù)子單元發(fā)送到DDR控制器管理模塊。DDR控制器管理模塊將接收到的該數(shù)據(jù)子單元的數(shù)據(jù),在第一個(gè)周期向第一片DDR中存儲(chǔ)的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù)對(duì)應(yīng)的數(shù)據(jù),在第二個(gè)周期向第二片DDR存儲(chǔ)該下一個(gè)數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)子單元的前128bit。如圖7所示為數(shù)據(jù)子單元拼接過(guò)程的詳細(xì)描述,當(dāng)當(dāng)前報(bào)文0的最后一個(gè)數(shù)據(jù)塊到來(lái)時(shí),該數(shù)據(jù)塊的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù)不大于16字節(jié),例如圖7中 的數(shù)據(jù)塊O(PacketO)中最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù)小于16字節(jié),則此時(shí)將該最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)保存起來(lái),當(dāng)該數(shù)據(jù)塊0的下一個(gè)數(shù)據(jù)塊數(shù)據(jù)塊I(Packetl)到來(lái)時(shí),則將數(shù)據(jù)塊0最后一個(gè)數(shù)據(jù)子單元暫存的有效字節(jié)加到數(shù)據(jù)塊I的包頭之前,組成一個(gè)新的數(shù)據(jù)子單元,之后數(shù)據(jù)塊2與數(shù)據(jù)塊3、數(shù)據(jù)塊4拼接的過(guò)程,如上所述,這里就不一一贅述。同時(shí),由于將數(shù)據(jù)子單元進(jìn)行了拼接,因此需要對(duì)每個(gè)數(shù)據(jù)塊的包長(zhǎng)進(jìn)行更新。圖8為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的過(guò)程,該過(guò)程包括以下步驟S801 :發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址。S802 :針對(duì)每個(gè)讀命令,根據(jù)該讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成DDR每個(gè)數(shù)據(jù)子單元的物理地址。S803 :判斷當(dāng)前讀操作讀取的是該報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDR SDRAM讀取出的數(shù)據(jù)合并。S804:當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文。具體的在從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元包括判斷包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,是否寫(xiě)入了雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM中;當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元。并且從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元包括
判斷包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,是否寫(xiě)入了 DDR SDRAM中;當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元。圖9為本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的詳細(xì)過(guò)程,該過(guò)程包括以下步驟S901 :發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址。S902 :針對(duì)每個(gè)讀命令,根據(jù)讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成 DDR每個(gè)數(shù)據(jù)子單元的物理地址。S903 :判斷該數(shù)據(jù)子單元是否包含報(bào)文的報(bào)文頭信息,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S904,否則,進(jìn)行步驟S909。S904 :判斷該數(shù)據(jù)子單元是否為拼接后的數(shù)據(jù)子單元,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S905,否則,進(jìn)行步驟S909。S905 :判斷該數(shù)據(jù)子單元是否寫(xiě)入了雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDRSDRAM中,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S906,否則,進(jìn)行步驟S907。S906:從讀暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,之后,進(jìn)行步驟S908。S907 :從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元。S908 :將讀取的包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元緩存,并與從之后數(shù)據(jù)塊中讀取的數(shù)據(jù)合并保存。S909 :從DDR中讀取的該數(shù)據(jù)單元的數(shù)據(jù)。圖10為本發(fā)明實(shí)施例提供的另一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的詳細(xì)過(guò)程,該過(guò)程包括以下步驟S1001 :發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址。S1002 :針對(duì)每個(gè)讀命令,根據(jù)讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成DDR每個(gè)數(shù)據(jù)子單元的物理地址。S1003 :判斷該數(shù)據(jù)子單元是否包含報(bào)文的報(bào)文尾信息,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S1004,否則,進(jìn)行步驟S1009。S1004:判斷該數(shù)據(jù)子單元是否為拼接后的數(shù)據(jù)子單元,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S1005,否則,進(jìn)行步驟S1009。S1005 :判斷該數(shù)據(jù)子單元是否寫(xiě)入了 DDR SDRAM中,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S1006,否則,進(jìn)行步驟S1007。S1006:從讀暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,之后,進(jìn)行步驟S1008。S1007 :從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元。S1008 :將讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,與之前讀取的數(shù)據(jù)合并保存。S1009 :從DDR中讀取的該數(shù)據(jù)單元的數(shù)據(jù)。
上述兩個(gè)實(shí)施例將分別針對(duì)讀取的為報(bào)文頭和報(bào)文尾信息分別作為判斷的條件,進(jìn)行讀取操作,在實(shí)際的數(shù)據(jù)讀取的過(guò)程中,該上述兩個(gè)步驟都要進(jìn)行,先判斷哪個(gè)都是可以的,針對(duì)每個(gè)條件進(jìn)行判斷的過(guò)程依據(jù)上述兩個(gè)實(shí)施例進(jìn)行即可。圖11為本本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的裝置的結(jié)構(gòu)示意圖,該裝置包括隊(duì)列管理模塊111,用于發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址;緩存管理模塊112,用于針對(duì)每個(gè)讀命令,根據(jù)讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成DDR每個(gè)數(shù)據(jù)子單元的物理地址;當(dāng)前讀操作讀取的為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單 元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDRSDRAM讀取出的數(shù)據(jù)合并;當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文;DDR控制器模塊113,用于從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的數(shù)據(jù)子單元。在網(wǎng)絡(luò)設(shè)備中當(dāng)隊(duì)列管理模塊接收到待讀出的報(bào)文后,根據(jù)鏈表節(jié)點(diǎn)的大小,將該報(bào)文以固定字節(jié)長(zhǎng)度512字節(jié)為標(biāo)準(zhǔn),劃分為多個(gè)數(shù)據(jù)塊(block)。將劃分后的數(shù)據(jù)塊作為讀數(shù)據(jù)發(fā)送到緩存管理模塊,并向緩存管理模塊發(fā)送讀操作命令。其中隊(duì)列管理模塊發(fā)送的讀操作命令包含讀數(shù)據(jù)和讀信號(hào),其中讀信號(hào)和讀數(shù)據(jù)是分別通過(guò)不同的通道發(fā)送的。圖12為本發(fā)明實(shí)施例提供的讀操作時(shí)序圖,在時(shí)序圖中主要包括讀信號(hào),在該圖中最上面為時(shí)鐘信號(hào),讀信號(hào)包括讀使能信號(hào)(rd_cmd_val),當(dāng)前數(shù)據(jù)報(bào)讀出的邏輯地址(rd_add),數(shù)據(jù)塊結(jié)束 block 指示(rd_eop)。緩存管理模塊根據(jù)接收到的讀操作命令,將接收到的邏輯地址轉(zhuǎn)換為DDR存儲(chǔ)器的物理地址,并且根據(jù)當(dāng)前數(shù)據(jù)塊包含的有效字節(jié)數(shù),確定劃分為數(shù)據(jù)子單元的個(gè)數(shù),并在接收到隊(duì)列管理模塊發(fā)送的讀數(shù)據(jù),即一個(gè)數(shù)據(jù)塊。將劃分后的數(shù)據(jù)子單元的個(gè)數(shù)輸出給DDR控制器模塊,DDR控制器模塊會(huì)將數(shù)據(jù)從每組DDR的兩片DDR中讀出。在DDR控制器模塊讀取每個(gè)數(shù)據(jù)子單元的數(shù)據(jù)時(shí),也是按照每個(gè)周期32字節(jié)讀取的,每個(gè)周期讀取128bit的數(shù)據(jù)。當(dāng)讀出的數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),則從DDRSDRAM的相應(yīng)地址空間讀取包含該數(shù)據(jù)。具體的例如當(dāng)數(shù)據(jù)塊0和數(shù)據(jù)塊I為同一隊(duì)列中相鄰的兩個(gè)數(shù)據(jù)塊時(shí),則在讀命令到來(lái)時(shí),則將數(shù)據(jù)塊0的數(shù)據(jù)塊讀出,當(dāng)數(shù)據(jù)塊0的數(shù)據(jù)和數(shù)據(jù)塊I中數(shù)據(jù)存在拼接時(shí),則該拼接的數(shù)據(jù),可能已經(jīng)和下一個(gè)數(shù)據(jù)塊寫(xiě)入了 DDR中,也有可能還在寫(xiě)暫存當(dāng)中,沒(méi)有來(lái)得及存入DDR中就進(jìn)行了當(dāng)前數(shù)據(jù)塊的讀取了。如果PacketO的尾部最后一個(gè)128bit數(shù)據(jù)沒(méi)有寫(xiě)入DDR3SDRAM中,則讀取PacketO的數(shù)據(jù)時(shí),可以直接從寫(xiě)暫存當(dāng)中讀取PacketO的最后一個(gè)128bit數(shù)據(jù),如圖13所示。如果PacketO的尾部最后一個(gè)128bit數(shù)據(jù)與Packetl —同存入DDR3SDRAM當(dāng)中。PacketO讀出后,再?gòu)囊唤MDDR3SDRAM中讀出一個(gè)32字節(jié)的數(shù)據(jù)子單元數(shù)據(jù),這個(gè)數(shù)據(jù)子單元的高128bit數(shù)據(jù)為PacketO的報(bào)文尾,而低128bit數(shù)據(jù)就是Packetl的報(bào)文頭部,將低128bit數(shù)據(jù)先暫存到讀暫存寄存器中,這樣讀取Packetl的第I個(gè)數(shù)據(jù)時(shí)(包頭128bit),就直接從應(yīng)從拼接數(shù)據(jù)讀暫存中取得就可以了,如圖14所示。本發(fā)明實(shí)施例提供的一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的系統(tǒng),該系統(tǒng)包括寫(xiě)操作端,根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM中;讀操作端,根據(jù)每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,以 及接收到的讀命令和讀地址,確定該讀地址對(duì)應(yīng)的DDR每個(gè)數(shù)據(jù)子單元的物理地址;當(dāng)數(shù)據(jù)子單元為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDR SDRAM讀取出的數(shù)據(jù)合并;當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文。本發(fā)明實(shí)施例提供了一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的方法、系統(tǒng)及裝置,該寫(xiě)方法中根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,當(dāng)該數(shù)據(jù)塊中最后一個(gè)數(shù)據(jù)子單元包含的字節(jié)數(shù)不大于一片DDR每次處理的字節(jié)長(zhǎng)度時(shí),將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。由于在本發(fā)明實(shí)施例中當(dāng)通過(guò)每組DDR進(jìn)行讀寫(xiě)操作時(shí),為了避免DDR資源的浪費(fèi),將數(shù)據(jù)進(jìn)行拼接,從而提高了 DDR讀寫(xiě)的效率,提高了緩存資源的利用率。上述說(shuō)明示出并描述了本發(fā)明的優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過(guò)上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的方法,所述數(shù)據(jù)寫(xiě)操作通過(guò)多組DDR SDRAM實(shí)現(xiàn),其特征在于,包括 根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊; 針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元; 判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDRSDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度, 當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。
2.如權(quán)利要求I所述的方法,其特征在于,所述判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDR SDRAM每次處理的字節(jié)長(zhǎng)度之前,所述方法還包括 判斷所述數(shù)據(jù)塊包含所述報(bào)文的報(bào)文尾信息。
3.如權(quán)利要求I所述的方法,其特征在于,所述寫(xiě)入該組DDRSDRAM中包括 將所述最后一個(gè)數(shù)據(jù)子單元包含的字節(jié),寫(xiě)入該組DDR SDRAM的第一片DDR SDRAMjf該第一數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)寫(xiě)入該組DDRSDRAM的第二片DDR SDRAM中。
4.一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的方法,所述數(shù)據(jù)讀操作通過(guò)多組DDR SDRAM實(shí)現(xiàn),其特征在于,包括 根據(jù)每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,以及接收到的讀命令和讀地址,確定該讀地址對(duì)應(yīng)的DDR每個(gè)數(shù)據(jù)子單元的物理地址; 當(dāng)數(shù)據(jù)子單元為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDRSDRAM讀取出的數(shù)據(jù)合并; 當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文。
5.如權(quán)利要求4所述的方法,其特征在于,所述從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元包括 判斷包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,是否寫(xiě)入了 DDR SDRAM中; 當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元。
6.如權(quán)利要求4所述的方法,其特征在于,所述從DDRSDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元包括 判斷包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,是否寫(xiě)入了 DDR SDRAM中; 當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元。
7.一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)寫(xiě)操作的裝置,其特征在于,所述裝置包括 隊(duì)列管理模塊,用于根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊; 緩存管理模塊,針對(duì)每個(gè)數(shù)據(jù)塊,根據(jù)該數(shù)據(jù)塊包含的有效字節(jié)長(zhǎng)度,以及每組DDRSDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,判斷該數(shù)據(jù)塊劃分后的最后一個(gè)數(shù)據(jù)子單元包含的有效字節(jié)數(shù),是否不大于一片DDR SDRAM每次處理的字節(jié)長(zhǎng)度,當(dāng)判斷結(jié)果為是時(shí),根據(jù)每組DDR SDRAM每個(gè)周期處理的字節(jié)長(zhǎng)度,將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,將拼接后組成的數(shù)據(jù)子單元發(fā)送給DDR控制器模塊; DDR控制器模塊,用于將接收到的數(shù)據(jù)子單元寫(xiě)入每組DDR SDRAM中。
8.如權(quán)利要求7所述的裝置,其特征在于,所述緩存管理模塊,還用于判斷所述數(shù)據(jù)塊是否包含報(bào)文的報(bào)文尾信息。
9.一種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀操作的裝置,其特征在于,所述裝置包括 隊(duì)列管理模塊,用于發(fā)出對(duì)當(dāng)前隊(duì)列的讀命令和讀地址; 緩存管理模塊,用于針對(duì)每個(gè)讀命令,根據(jù)讀命令包含的有效字節(jié)長(zhǎng)度,以及每組雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器每個(gè)周期處理的字節(jié)長(zhǎng)度,將該讀地址轉(zhuǎn)換成DDR每個(gè)數(shù)據(jù)子單元的物理地址;當(dāng)前讀操作讀取的為報(bào)文的第一個(gè)數(shù)據(jù)子單元,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從緩存管理的暫存空間讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,并與從之后從DDR SDRAM讀取出的數(shù)據(jù)合并;當(dāng)該數(shù)據(jù)子單元包含該報(bào)文的報(bào)文尾信息,且所述數(shù)據(jù)子單元為拼接后的數(shù)據(jù)子單元時(shí),從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,取出該數(shù)據(jù)子單元的高字節(jié)部分與之前讀取的數(shù)據(jù)合并,得到讀出的報(bào)文; DDR控制器模塊,用于從DDR SDRAM的相應(yīng)地址空間讀取包含該報(bào)文的數(shù)據(jù)子單元。
10.如權(quán)利要求9所述的裝置,其特征在于,所述DDR控制器模塊具體用于,判斷包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,是否寫(xiě)入了 DDR SDRAM中,當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文頭信息的數(shù)據(jù)子單元。
11.如權(quán)利要求9所述的裝置,其特征在于,所述DDR控制器模塊具體用于,判斷包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,是否寫(xiě)入了 DDR SDRAM中,當(dāng)該數(shù)據(jù)寫(xiě)入了 DDR SDRAM中時(shí),從讀暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元,否則,從寫(xiě)暫存中讀取包含該報(bào)文的報(bào)文尾信息的數(shù)據(jù)子單元。
12.—種基于雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的系統(tǒng),其特征在于,所述系統(tǒng)包括如權(quán)利要求7 8任一所述的寫(xiě)操作的裝置,和如權(quán)利要求9 11任一所述的讀操作的裝置。
全文摘要
本發(fā)明公開(kāi)了一種基于DDR SDRAM進(jìn)行數(shù)據(jù)讀寫(xiě)操作的方法、系統(tǒng)及裝置,用以解決基于DDR進(jìn)行讀寫(xiě)時(shí)效率不高,不利于提高緩存利用率的問(wèn)題。該方法根據(jù)鏈表節(jié)點(diǎn)的大小,將接收到的報(bào)文劃分為對(duì)應(yīng)長(zhǎng)度的多個(gè)數(shù)據(jù)塊,針對(duì)每個(gè)數(shù)據(jù)塊,將該數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)子單元,當(dāng)該數(shù)據(jù)塊中最后一個(gè)數(shù)據(jù)子單元包含的字節(jié)數(shù)不大于一片DDR每次處理的字節(jié)長(zhǎng)度時(shí),將該最后一個(gè)數(shù)據(jù)子單元與下一數(shù)據(jù)塊中第一個(gè)數(shù)據(jù)子單元中相應(yīng)字節(jié)的數(shù)據(jù)拼接,寫(xiě)入該組DDR SDRAM中。由于在本發(fā)明實(shí)施例中當(dāng)通過(guò)每組DDR進(jìn)行讀寫(xiě)操作時(shí),為了避免DDR資源的浪費(fèi),將數(shù)據(jù)進(jìn)行拼接,從而提高了DDR讀寫(xiě)的效率,提高了緩存資源的利用率。
文檔編號(hào)H04L12/56GK102684976SQ201110057810
公開(kāi)日2012年9月19日 申請(qǐng)日期2011年3月10日 優(yōu)先權(quán)日2011年3月10日
發(fā)明者呂華磊, 汪友寶 申請(qǐng)人:中興通訊股份有限公司