欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的控制方法及裝置與流程

文檔序號(hào):11277730閱讀:314來(lái)源:國(guó)知局
高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的控制方法及裝置與流程

本發(fā)明涉及訪問(wèn)技術(shù),尤其涉及一種高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(ddr,doubledataratesdram)的控制方法及裝置。



背景技術(shù):

隨著高速通信系統(tǒng)的迅猛發(fā)展,網(wǎng)絡(luò)系統(tǒng)中的以太網(wǎng)數(shù)據(jù)流量越來(lái)越大,所需服務(wù)功能也越來(lái)越多,對(duì)傳輸?shù)囊蕴W(wǎng)包,需要一塊足夠大小的緩存空間,將數(shù)據(jù)緩存起來(lái),在完成以太網(wǎng)數(shù)據(jù)的分析、交換、路由以及用戶定義的服務(wù)功能后,再將數(shù)據(jù)報(bào)文從緩存中取出并發(fā)送出去。

由于當(dāng)前的網(wǎng)絡(luò)通信設(shè)備速率很高,所需的緩存空間也非常大,對(duì)緩存空間的訪問(wèn)速率也有不小的要求,在這種情況下,傳統(tǒng)的同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(sdram,synchronousdynamicrandomaccessmemory)已經(jīng)不能滿足需求,而ddr具有更高的工作頻率,更快的速度,更大的緩存空間,已經(jīng)成為通信網(wǎng)絡(luò)中最為重要的緩存器件。

現(xiàn)有技術(shù)中,在當(dāng)前網(wǎng)絡(luò)通信設(shè)備中對(duì)ddr的訪問(wèn),主要是通過(guò)將訪問(wèn)地址轉(zhuǎn)化成行列映射,首先經(jīng)過(guò)選頁(yè)操作選到相應(yīng)的頁(yè)面(page),再通過(guò)地址線選到相應(yīng)的地址段對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)。如果ddr的讀寫(xiě)地址不連續(xù),則訪問(wèn)時(shí)會(huì)進(jìn)行頻繁的選頁(yè)操作,大大降低了ddr的訪問(wèn)效率;同時(shí)讀寫(xiě)的不均衡也會(huì)降低ddr的訪問(wèn)效率。傳統(tǒng)的解決方法主要是將ddr劃分為固定的緩存塊,雖然,這種方法可以提高ddr的訪問(wèn)效率,但是也存在一些弊端:比如固定緩存塊的劃分,如果緩存塊過(guò)大,可能會(huì)浪費(fèi)ddr的內(nèi)存空間;如果緩存塊過(guò)小,則起不到提高速率的作用等等,這些,都會(huì)降低ddr的訪問(wèn)效率。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明實(shí)施例希望提供一種高速訪問(wèn)ddr的控制方法及裝置,至少解決了現(xiàn)有技術(shù)存在的問(wèn)題。

本發(fā)明實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:

本發(fā)明實(shí)施例一種高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的控制方法,所述方法包括:

將雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊;

基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡。

上述方案中,所述方法還包括:

獲取針對(duì)多個(gè)通道突發(fā)的讀/寫(xiě)操作請(qǐng)求后,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序;

根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,在進(jìn)行本次讀/寫(xiě)操作對(duì)應(yīng)的數(shù)據(jù)讀寫(xiě)期間,支持針對(duì)所述各個(gè)通道其他讀/寫(xiě)操作請(qǐng)求的調(diào)度。

上述方案中,所述將ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊,包括:

將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,配置每個(gè)區(qū)域的起始地址和結(jié)束地址為均可配置;

配置所述每個(gè)區(qū)域由大小可配置的緩存塊組成,每個(gè)緩存塊均對(duì)應(yīng)一個(gè)緩存指針bp;

對(duì)于寫(xiě)入ddr的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存塊里面。

上述方案中,所述將ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊,還包括:

配置每個(gè)區(qū)域的bp為一個(gè)鏈表,將所述數(shù)據(jù)包寫(xiě)入所述ddr時(shí),申請(qǐng)區(qū) 域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;

根據(jù)bp大小選擇執(zhí)行一次寫(xiě)入或讀出ddr數(shù)據(jù)的數(shù)據(jù)包大小,對(duì)于超過(guò)第一閾值的數(shù)據(jù)包包長(zhǎng),配置為一次寫(xiě)入或讀出符合第二閾值的較長(zhǎng)數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù)的。

上述方案中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡,包括:

為每一個(gè)讀/寫(xiě)通道分配一個(gè)權(quán)重,每檢測(cè)到發(fā)生了一次讀/寫(xiě)操作,則將所述權(quán)重減去讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng);

所述權(quán)重可調(diào)整,并按照定時(shí)器的設(shè)置定時(shí)增加所述權(quán)重。

上述方案中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡,還包括:

如果檢測(cè)到針對(duì)多個(gè)通道的讀/寫(xiě)操作,且申請(qǐng)數(shù)據(jù)長(zhǎng)度均不大于通道當(dāng)前權(quán)重,則選擇讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng)與上次讀/寫(xiě)操作相近的通道,以保證ddr地址連續(xù);

上述方案中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡,還包括:

為寫(xiě)方向通道配置第一總權(quán)重;

為讀方向通道配置第二總權(quán)重;

連續(xù)調(diào)度寫(xiě)方向通道的數(shù)據(jù)到權(quán)重為0、或者根據(jù)所述第一總權(quán)重檢測(cè)到所有寫(xiě)方向通道的數(shù)據(jù)寫(xiě)入完成之后,連續(xù)調(diào)度讀方向通道的數(shù)據(jù)到權(quán)重為0、或者直至根據(jù)所述第二總權(quán)重檢測(cè)到所有讀通道的數(shù)據(jù)讀出完成,結(jié)束調(diào)度。

上述方案中,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序,包括:

為讀方向通道和寫(xiě)方向通道分別配置兩個(gè)先進(jìn)先出隊(duì)列fifo,兩個(gè)fifo中,第一fifo用于緩存讀寫(xiě)命令,第二fifo用于緩存讀寫(xiě)數(shù)據(jù);

根據(jù)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度的調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),將讀寫(xiě)命令次序和通道標(biāo)記次序作為所述緩存次序并存入所述第一fifo中,按照所述讀寫(xiě)命令次序?qū)⒆x寫(xiě)命令傳遞給所述ddr。

上述方案中,所述根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,包括:

如果檢測(cè)到是針對(duì)寫(xiě)方向通道的寫(xiě)入操作,則將各個(gè)通道的寫(xiě)數(shù)據(jù)緩存到第二fifo里面,通過(guò)緩存完成的通道去調(diào)度其他的寫(xiě)數(shù)據(jù),之后按照所述通道標(biāo)記次序?qū)?xiě)數(shù)據(jù)寫(xiě)入ddr;

如果檢測(cè)到是針對(duì)讀方向通道的讀出操作,則將數(shù)據(jù)讀出后,按照所述通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的第二fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從第二fifo讀出。

本發(fā)明實(shí)施例的一種高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的控制裝置,所述裝置包括:

緩存控制模塊,用于將雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊;

調(diào)度模塊,用于基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡。

上述方案中,所述裝置還包括:通道控制模塊,用于:

獲取針對(duì)多個(gè)通道突發(fā)的讀/寫(xiě)操作請(qǐng)求后,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序;

根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,在進(jìn)行本次讀/寫(xiě)操作對(duì)應(yīng)的數(shù)據(jù)讀寫(xiě)期間,支持針對(duì)所述各個(gè)通道其他讀/寫(xiě)操作請(qǐng)求的調(diào)度。

上述方案中,所述緩存控制模塊,進(jìn)一步用于:

將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,配置每個(gè)區(qū)域的起始地址和結(jié)束地址為均可配置;

配置所述每個(gè)區(qū)域由大小可配置的緩存塊組成,每個(gè)緩存塊均對(duì)應(yīng)一個(gè)緩存指針bp;

對(duì)于寫(xiě)入ddr的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存塊里面。

上述方案中,所述緩存控制模塊,進(jìn)一步用于:

配置每個(gè)區(qū)域的bp為一個(gè)鏈表,將所述數(shù)據(jù)包寫(xiě)入所述ddr時(shí),申請(qǐng)區(qū)域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;

根據(jù)bp大小選擇執(zhí)行一次寫(xiě)入或讀出ddr數(shù)據(jù)的數(shù)據(jù)包大小,對(duì)于超過(guò)第一閾值的數(shù)據(jù)包包長(zhǎng),配置為一次寫(xiě)入或讀出符合第二閾值的較長(zhǎng)數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù)的。

上述方案中,所述調(diào)度模塊,進(jìn)一步用于:

為每一個(gè)讀/寫(xiě)通道分配一個(gè)權(quán)重,每檢測(cè)到發(fā)生了一次讀/寫(xiě)操作,則將所述權(quán)重減去讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng);

所述權(quán)重可調(diào)整,并按照定時(shí)器的設(shè)置定時(shí)增加所述權(quán)重。

上述方案中,所述調(diào)度模塊,進(jìn)一步用于:

如果檢測(cè)到針對(duì)多個(gè)通道的讀/寫(xiě)操作,且申請(qǐng)數(shù)據(jù)長(zhǎng)度均不大于通道當(dāng)前權(quán)重,則選擇讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng)與上次讀/寫(xiě)操作相近的通道,以保證ddr地址連續(xù);

上述方案中,所述調(diào)度模塊,進(jìn)一步用于:

為寫(xiě)方向通道配置第一總權(quán)重;

為讀方向通道配置第二總權(quán)重;

連續(xù)調(diào)度寫(xiě)方向通道的數(shù)據(jù)到權(quán)重為0、或者根據(jù)所述第一總權(quán)重檢測(cè)到所有寫(xiě)方向通道的數(shù)據(jù)寫(xiě)入完成之后,連續(xù)調(diào)度讀方向通道的數(shù)據(jù)到權(quán)重為0、或者直至根據(jù)所述第二總權(quán)重檢測(cè)到所有讀通道的數(shù)據(jù)讀出完成,結(jié)束調(diào)度。

上述方案中,所述通道控制模塊,進(jìn)一步用于:

為讀方向通道和寫(xiě)方向通道分別配置兩個(gè)先進(jìn)先出隊(duì)列fifo,兩個(gè)fifo中,第一fifo用于緩存讀寫(xiě)命令,第二fifo用于緩存讀寫(xiě)數(shù)據(jù);

根據(jù)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度的調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),將讀寫(xiě)命令次序和通道標(biāo)記次序作為所述緩存次序并存入所 述第一fifo中,按照所述讀寫(xiě)命令次序?qū)⒆x寫(xiě)命令傳遞給所述ddr。

上述方案中,所述通道控制模塊,進(jìn)一步用于:

如果檢測(cè)到是針對(duì)寫(xiě)方向通道的寫(xiě)入操作,則將各個(gè)通道的寫(xiě)數(shù)據(jù)緩存到第二fifo里面,通過(guò)緩存完成的通道去調(diào)度其他的寫(xiě)數(shù)據(jù),之后按照所述通道標(biāo)記次序?qū)?xiě)數(shù)據(jù)寫(xiě)入ddr;

如果檢測(cè)到是針對(duì)讀方向通道的讀出操作,則將數(shù)據(jù)讀出后,按照所述通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的第二fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從第二fifo讀出。

本發(fā)明實(shí)施例的高速訪問(wèn)ddr的控制方法包括:將雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(ddr)按照動(dòng)態(tài)配置策略劃分為可變的緩存塊;基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡。采用本發(fā)明實(shí)施例,提高了ddr的訪問(wèn)效率和讀寫(xiě)速率。

附圖說(shuō)明

圖1為本發(fā)明實(shí)施例一的實(shí)現(xiàn)流程示意圖;

圖2為本發(fā)明實(shí)施例二的裝置組成結(jié)構(gòu)示意圖;

圖3為應(yīng)用本發(fā)明實(shí)施例的緩存控制模塊對(duì)應(yīng)的工作流程圖;

圖4為應(yīng)用本發(fā)明實(shí)施例的ddr空間初始化示意圖;

圖5為應(yīng)用本發(fā)明實(shí)施例的bp初始化示意圖;

圖6為應(yīng)用本發(fā)明實(shí)施例的通道控制模塊結(jié)構(gòu)圖;

圖7為應(yīng)用本發(fā)明實(shí)施例的調(diào)度模塊工作流程圖;

圖8為應(yīng)用本發(fā)明實(shí)施例的數(shù)據(jù)寫(xiě)入ddr流程圖;

圖9為應(yīng)用本發(fā)明實(shí)施例的數(shù)據(jù)讀出ddr流程圖。

具體實(shí)施方式

下面結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。

本發(fā)明實(shí)施例的一種高速訪問(wèn)ddr的控制方法,如圖1所示,所述方法 包括:

步驟101、將ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊。

步驟102、基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡。

步驟103、獲取針對(duì)多個(gè)通道突發(fā)的讀/寫(xiě)操作請(qǐng)求后,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序。

步驟104、根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,在進(jìn)行本次讀/寫(xiě)操作對(duì)應(yīng)的數(shù)據(jù)讀寫(xiě)期間,支持針對(duì)所述各個(gè)通道其他讀/寫(xiě)操作請(qǐng)求的調(diào)度。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述將ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊,包括:將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,配置每個(gè)區(qū)域的起始地址和結(jié)束地址為均可配置;配置所述每個(gè)區(qū)域由大小可配置的緩存塊組成,每個(gè)緩存塊均對(duì)應(yīng)一個(gè)緩存指針bp;對(duì)于寫(xiě)入ddr的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存塊里面。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述將ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊,還包括:配置每個(gè)區(qū)域的bp為一個(gè)鏈表,將所述數(shù)據(jù)包寫(xiě)入所述ddr時(shí),申請(qǐng)區(qū)域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;根據(jù)bp大小選擇執(zhí)行一次寫(xiě)入或讀出ddr數(shù)據(jù)的數(shù)據(jù)包大小,對(duì)于超過(guò)第一閾值的數(shù)據(jù)包包長(zhǎng),配置為一次寫(xiě)入或讀出符合第二閾值的較長(zhǎng)數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù)的。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡,包括:為每一個(gè)讀/寫(xiě)通道分配一個(gè)權(quán)重,每檢測(cè)到發(fā)生了一次讀/寫(xiě)操作,則將所述權(quán)重減去讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng);所述權(quán)重可調(diào)整,并按照定時(shí)器的設(shè)置定時(shí)增加所述權(quán)重。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶 寬進(jìn)行平衡,還包括:如果檢測(cè)到針對(duì)多個(gè)通道的讀/寫(xiě)操作,且申請(qǐng)數(shù)據(jù)長(zhǎng)度均不大于通道當(dāng)前權(quán)重,則選擇讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng)與上次讀/寫(xiě)操作相近的通道,以保證ddr地址連續(xù)。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡,還包括:為寫(xiě)方向通道配置第一總權(quán)重;為讀方向通道配置第二總權(quán)重;連續(xù)調(diào)度寫(xiě)方向通道的數(shù)據(jù)到權(quán)重為0、或者根據(jù)所述第一總權(quán)重檢測(cè)到所有寫(xiě)方向通道的數(shù)據(jù)寫(xiě)入完成之后,連續(xù)調(diào)度讀方向通道的數(shù)據(jù)到權(quán)重為0、或者直至根據(jù)所述第二總權(quán)重檢測(cè)到所有讀通道的數(shù)據(jù)讀出完成,結(jié)束調(diào)度。

在本發(fā)明實(shí)施例一實(shí)施方式中,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序,包括:為讀方向通道和寫(xiě)方向通道分別配置兩個(gè)先進(jìn)先出隊(duì)列fifo,兩個(gè)fifo中,第一fifo用于緩存讀寫(xiě)命令,第二fifo用于緩存讀寫(xiě)數(shù)據(jù);根據(jù)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度的調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),將讀寫(xiě)命令次序和通道標(biāo)記次序作為所述緩存次序并存入所述第一fifo中,按照所述讀寫(xiě)命令次序?qū)⒆x寫(xiě)命令傳遞給所述ddr。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,包括:如果檢測(cè)到是針對(duì)寫(xiě)方向通道的寫(xiě)入操作,則將各個(gè)通道的寫(xiě)數(shù)據(jù)緩存到第二fifo里面,通過(guò)緩存完成的通道去調(diào)度其他的寫(xiě)數(shù)據(jù),之后按照所述通道標(biāo)記次序?qū)?xiě)數(shù)據(jù)寫(xiě)入ddr;如果檢測(cè)到是針對(duì)讀方向通道的讀出操作,則將數(shù)據(jù)讀出后,按照所述通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的第二fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從第二fifo讀出。

本發(fā)明實(shí)施例的一種高速訪問(wèn)雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器的控制裝置,所述裝置包括:

緩存控制模塊,用于將雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器ddr按照動(dòng)態(tài)配置策略劃分為可變的緩存塊;

調(diào)度模塊,用于基于所述可變的緩存塊進(jìn)行讀寫(xiě)操作時(shí),根據(jù)加權(quán)循環(huán)調(diào)度策略對(duì)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度,并對(duì)讀/寫(xiě)帶寬進(jìn)行平衡。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述裝置還包括:通道控制模塊,用于:

獲取針對(duì)多個(gè)通道突發(fā)的讀/寫(xiě)操作請(qǐng)求后,根據(jù)突發(fā)緩沖調(diào)度策略將對(duì)各個(gè)通道的讀/寫(xiě)操作請(qǐng)求依次緩存下來(lái),并記錄緩存次序;

根據(jù)所述緩存次序,對(duì)所述ddr中的所述可變的緩存塊進(jìn)行本次讀/寫(xiě)操作,在進(jìn)行本次讀/寫(xiě)操作對(duì)應(yīng)的數(shù)據(jù)讀寫(xiě)期間,支持針對(duì)所述各個(gè)通道其他讀/寫(xiě)操作請(qǐng)求的調(diào)度。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述緩存控制模塊,進(jìn)一步用于:

將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,配置每個(gè)區(qū)域的起始地址和結(jié)束地址為均可配置;

配置所述每個(gè)區(qū)域由大小可配置的緩存塊組成,每個(gè)緩存塊均對(duì)應(yīng)一個(gè)緩存指針bp;

對(duì)于寫(xiě)入ddr的數(shù)據(jù)包,根據(jù)所述數(shù)據(jù)包的包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存塊里面。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述緩存控制模塊,進(jìn)一步用于:

配置每個(gè)區(qū)域的bp為一個(gè)鏈表,將所述數(shù)據(jù)包寫(xiě)入所述ddr時(shí),申請(qǐng)區(qū)域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;

根據(jù)bp大小選擇執(zhí)行一次寫(xiě)入或讀出ddr數(shù)據(jù)的數(shù)據(jù)包大小,對(duì)于超過(guò)第一閾值的數(shù)據(jù)包包長(zhǎng),配置為一次寫(xiě)入或讀出符合第二閾值的較長(zhǎng)數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù)的。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述調(diào)度模塊,進(jìn)一步用于:

為每一個(gè)讀/寫(xiě)通道分配一個(gè)權(quán)重,每檢測(cè)到發(fā)生了一次讀/寫(xiě)操作,則將所述權(quán)重減去讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng);

所述權(quán)重可調(diào)整,并按照定時(shí)器的設(shè)置定時(shí)增加所述權(quán)重。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述調(diào)度模塊,進(jìn)一步用于:

如果檢測(cè)到針對(duì)多個(gè)通道的讀/寫(xiě)操作,且申請(qǐng)數(shù)據(jù)長(zhǎng)度均不大于通道當(dāng)前 權(quán)重,則選擇讀出或?qū)懭氲臄?shù)據(jù)包的包長(zhǎng)與上次讀/寫(xiě)操作相近的通道,以保證ddr地址連續(xù);

在本發(fā)明實(shí)施例一實(shí)施方式中,所述調(diào)度模塊,進(jìn)一步用于:

為寫(xiě)方向通道配置第一總權(quán)重;

為讀方向通道配置第二總權(quán)重;

連續(xù)調(diào)度寫(xiě)方向通道的數(shù)據(jù)到權(quán)重為0、或者根據(jù)所述第一總權(quán)重檢測(cè)到所有寫(xiě)方向通道的數(shù)據(jù)寫(xiě)入完成之后,連續(xù)調(diào)度讀方向通道的數(shù)據(jù)到權(quán)重為0、或者直至根據(jù)所述第二總權(quán)重檢測(cè)到所有讀通道的數(shù)據(jù)讀出完成,結(jié)束調(diào)度。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述通道控制模塊,進(jìn)一步用于:

為讀方向通道和寫(xiě)方向通道分別配置兩個(gè)先進(jìn)先出隊(duì)列fifo,兩個(gè)fifo中,第一fifo用于緩存讀寫(xiě)命令,第二fifo用于緩存讀寫(xiě)數(shù)據(jù);

根據(jù)針對(duì)多個(gè)通道的讀/寫(xiě)操作進(jìn)行調(diào)度的調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),將讀寫(xiě)命令次序和通道標(biāo)記次序作為所述緩存次序并存入所述第一fifo中,按照所述讀寫(xiě)命令次序?qū)⒆x寫(xiě)命令傳遞給所述ddr。

在本發(fā)明實(shí)施例一實(shí)施方式中,所述通道控制模塊,進(jìn)一步用于:

如果檢測(cè)到是針對(duì)寫(xiě)方向通道的寫(xiě)入操作,則將各個(gè)通道的寫(xiě)數(shù)據(jù)緩存到第二fifo里面,通過(guò)緩存完成的通道去調(diào)度其他的寫(xiě)數(shù)據(jù),之后按照所述通道標(biāo)記次序?qū)?xiě)數(shù)據(jù)寫(xiě)入ddr;

如果檢測(cè)到是針對(duì)讀方向通道的讀出操作,則將數(shù)據(jù)讀出后,按照所述通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的第二fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從第二fifo讀出。

以一個(gè)現(xiàn)實(shí)應(yīng)用場(chǎng)景為例對(duì)本發(fā)明實(shí)施例闡述如下:

在現(xiàn)有技術(shù)中,在當(dāng)前網(wǎng)絡(luò)通信設(shè)備中對(duì)ddr的訪問(wèn),主要是通過(guò)將訪問(wèn)地址轉(zhuǎn)化成行列映射,首先經(jīng)過(guò)選頁(yè)操作選到相應(yīng)的頁(yè)面(page),再通過(guò)地址線選到相應(yīng)的地址段對(duì)數(shù)據(jù)進(jìn)行讀寫(xiě)。如果ddr的讀寫(xiě)地址不連續(xù),則訪問(wèn)時(shí)會(huì)進(jìn)行頻繁的選頁(yè)操作,大大降低了ddr的訪問(wèn)效率;同時(shí)讀寫(xiě)的不均衡也會(huì)降低ddr的訪問(wèn)效率。傳統(tǒng)的解決方法主要是將ddr劃分為固定的緩存塊(比如64字節(jié)),以緩存塊為單位對(duì)其進(jìn)行讀寫(xiě),這種方法能夠使ddr 的讀寫(xiě)地址連續(xù),從而提高ddr的訪問(wèn)效率,但是,如舉例說(shuō)明,采用這種固定緩存塊的方案仍然存在如下弊端:

比如固定緩存塊的劃分,如果緩存塊過(guò)大,可能會(huì)浪費(fèi)ddr的內(nèi)存空間,如果緩存塊過(guò)小,則起不到提高速率的作用。

另外,采用傳統(tǒng)的控制方法很難實(shí)現(xiàn)讀寫(xiě)均衡,同時(shí)有較多的讀寫(xiě)切換,降低了訪問(wèn)效率,在多通道同時(shí)訪問(wèn)ddr時(shí),也很難實(shí)現(xiàn)均衡調(diào)度。

而且,采用傳統(tǒng)的訪問(wèn)方式是在一個(gè)讀寫(xiě)操作完成時(shí),才進(jìn)行下一個(gè)讀寫(xiě)操作,由于ddr在讀寫(xiě)方向均存在時(shí)延,使得傳統(tǒng)的訪問(wèn)方式會(huì)將部分時(shí)間浪費(fèi)在時(shí)延等待上,降低了ddr的訪問(wèn)效率。

對(duì)于上述問(wèn)題,本發(fā)明實(shí)施例高速訪問(wèn)ddr的控制方法,通過(guò)ddr空間動(dòng)態(tài)緩存塊劃分及管理、多通道讀寫(xiě)均衡控制、連續(xù)讀寫(xiě)操作的機(jī)制可以提高ddr訪問(wèn)效率和讀/寫(xiě)速率,包括以下內(nèi)容:

一,動(dòng)態(tài)緩存塊劃分及管理機(jī)制:將ddr地址空間劃分為數(shù)個(gè)區(qū)域,每個(gè)區(qū)域由多個(gè)緩存(buffer)組成,每個(gè)區(qū)域的緩存大小均可配置,通過(guò)不同的緩存指針(bp,bufferpoint)對(duì)地址空間進(jìn)行管理。

這里,實(shí)現(xiàn)動(dòng)態(tài)緩存塊劃分及管理機(jī)制,包括:1.1)將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,每個(gè)區(qū)域的起始地址和結(jié)束地址均可配置;1.2)每個(gè)區(qū)域由大小可配置的緩存組成,每個(gè)緩存均對(duì)應(yīng)一個(gè)bp;1.3)對(duì)于一個(gè)數(shù)據(jù)包,根據(jù)包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存里面;1.4)每個(gè)區(qū)域的bp為一個(gè)鏈表,數(shù)據(jù)包寫(xiě)入ddr時(shí),申請(qǐng)?jiān)搮^(qū)域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;1.5)根據(jù)bp大小選擇一次寫(xiě)入或讀出ddr數(shù)據(jù)的大小,對(duì)于較大的包長(zhǎng),盡量一次寫(xiě)入或讀出比較長(zhǎng)的數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù),減少ddr的選頁(yè)操作。

二,多通道讀寫(xiě)均衡控制機(jī)制:在ddr控制器中,通過(guò)加權(quán)循環(huán)調(diào)度算法(wrr,weightedroundrobin)對(duì)多個(gè)通道進(jìn)行調(diào)度,同時(shí)對(duì)讀寫(xiě)帶寬進(jìn)行平衡,減少讀寫(xiě)切換。

這里,實(shí)現(xiàn)多通道讀寫(xiě)均衡控制機(jī)制,包括:2.1)為每一個(gè)讀寫(xiě)通道分配 一個(gè)權(quán)重,每發(fā)生一次讀/寫(xiě)操作,將權(quán)重減去包長(zhǎng),權(quán)重定時(shí)增加;2.2)在2.1基礎(chǔ)上,如果多個(gè)通道有訪問(wèn)ddr請(qǐng)求,且權(quán)重均滿足要求,盡量保證選擇包長(zhǎng)與上次讀寫(xiě)相近的通道,保證ddr地址連續(xù),減少選頁(yè)操作;2.3)讀方向和寫(xiě)方向各設(shè)一個(gè)總權(quán)重,在2.1的基礎(chǔ)上,連續(xù)調(diào)度寫(xiě)方向通道數(shù)據(jù)到權(quán)重為0或者所有寫(xiě)通道數(shù)據(jù)完成,然后連續(xù)調(diào)度讀方向數(shù)據(jù)到權(quán)重為0或者所有讀通道數(shù)據(jù)完成,減少讀寫(xiě)切換并實(shí)現(xiàn)讀寫(xiě)均衡。

三,連續(xù)讀寫(xiě)操作的機(jī)制:支持突發(fā)緩沖(burstoutstanding)調(diào)度機(jī)制,對(duì)于多個(gè)通道突發(fā)的讀寫(xiě)請(qǐng)求,可以將各個(gè)通道的請(qǐng)求依次緩存下來(lái),按照緩存次序?qū)dr進(jìn)行讀寫(xiě),在數(shù)據(jù)讀寫(xiě)期間各個(gè)通道可以進(jìn)行其他調(diào)度,不必等待本次讀寫(xiě)返回結(jié)果。

這里,實(shí)現(xiàn)連續(xù)讀寫(xiě)操作的機(jī)制,包括:3.1)讀寫(xiě)方向各有2個(gè)先進(jìn)先出隊(duì)列(fifo,firstinputfirstoutput),其中一個(gè)fifo緩存讀寫(xiě)命令(數(shù)據(jù)長(zhǎng)度),一個(gè)fifo緩存讀寫(xiě)數(shù)據(jù);3.2)ddr控制器按照調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),并按照次序?qū)⒆x寫(xiě)命令傳遞給ddr;3.3)如果是寫(xiě)訪問(wèn),ddr控制器將各個(gè)通道的寫(xiě)數(shù)據(jù)也緩存到數(shù)據(jù)fifo里面,緩存完成之后該通道可以去調(diào)度別的數(shù)據(jù),之后ddr控制器按照通道標(biāo)記次序?qū)?shù)據(jù)寫(xiě)入ddr;3.4)如果是讀訪問(wèn),ddr控制器將數(shù)據(jù)讀出后,按照通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從fifo讀出。

具體的,如圖2所示為應(yīng)用本發(fā)明實(shí)施例的一個(gè)裝置結(jié)構(gòu)組成示意圖,該裝置應(yīng)用于獨(dú)立芯片的ddr控制電路(如圖2中的ddr控制器),將上述實(shí)施例一及其實(shí)施方式中的各個(gè)實(shí)現(xiàn)過(guò)程在該獨(dú)立芯片中具體實(shí)現(xiàn),由ddr控制器實(shí)現(xiàn)對(duì)ddr的讀/寫(xiě)操作(讀入操作或?qū)懗霾僮?。ddr31用于存儲(chǔ)數(shù)據(jù)。其中,所述ddr控制器包括緩存控制模塊21、調(diào)度模塊22和多個(gè)通道控制模塊23(如圖2中的通道控制模塊1-4,每個(gè)通道控制模塊控制一個(gè)讀/寫(xiě)方向的通道),實(shí)際應(yīng)用中不限于這些通道控制模塊。

所述緩存控制模塊用于實(shí)現(xiàn)動(dòng)態(tài)緩存塊劃分及管理機(jī)制,具體的,將ddr地址空間劃分為數(shù)個(gè)區(qū)域,每個(gè)區(qū)域由多個(gè)緩存(buffer)組成,每個(gè)區(qū)域的緩 存大小均可配置,通過(guò)不同的緩存指針(bp,bufferpoint)對(duì)地址空間進(jìn)行管理。其中,實(shí)現(xiàn)動(dòng)態(tài)緩存塊劃分及管理機(jī)制,包括:1.1)將ddr的地址空間劃分為數(shù)個(gè)區(qū)域,每個(gè)區(qū)域的起始地址和結(jié)束地址均可配置;1.2)每個(gè)區(qū)域由大小可配置的緩存組成,每個(gè)緩存均對(duì)應(yīng)一個(gè)bp;1.3)對(duì)于一個(gè)數(shù)據(jù)包,根據(jù)包長(zhǎng)選擇緩存大小與其接近的區(qū)域,將其存入對(duì)應(yīng)bp的緩存里面;1.4)每個(gè)區(qū)域的bp為一個(gè)鏈表,數(shù)據(jù)包寫(xiě)入ddr時(shí),申請(qǐng)?jiān)搮^(qū)域鏈表首部的bp,數(shù)據(jù)包讀出ddr時(shí),將bp寫(xiě)入鏈表的尾部;1.5)根據(jù)bp大小選擇一次寫(xiě)入或讀出ddr數(shù)據(jù)的大小,對(duì)于較大的包長(zhǎng),盡量一次寫(xiě)入或讀出比較長(zhǎng)的數(shù)據(jù),并且保證一次寫(xiě)入或讀出的地址是連續(xù),減少ddr的選頁(yè)操作。

所述調(diào)度模塊用于實(shí)現(xiàn)多通道讀寫(xiě)均衡控制機(jī)制,具體的,在ddr控制器中,通過(guò)加權(quán)循環(huán)調(diào)度算法(wrr,weightedroundrobin)對(duì)多個(gè)通道進(jìn)行調(diào)度,同時(shí)對(duì)讀寫(xiě)帶寬進(jìn)行平衡,減少讀寫(xiě)切換。其中,實(shí)現(xiàn)多通道讀寫(xiě)均衡控制機(jī)制,包括:2.1)為每一個(gè)讀寫(xiě)通道分配一個(gè)權(quán)重,每發(fā)生一次讀/寫(xiě)操作,將權(quán)重減去包長(zhǎng),權(quán)重定時(shí)增加;2.2)在2.1基礎(chǔ)上,如果多個(gè)通道有訪問(wèn)ddr請(qǐng)求,且權(quán)重均滿足要求,盡量保證選擇包長(zhǎng)與上次讀寫(xiě)相近的通道,保證ddr地址連續(xù),減少選頁(yè)操作;2.3)讀方向和寫(xiě)方向各設(shè)一個(gè)總權(quán)重,在2.1的基礎(chǔ)上,連續(xù)調(diào)度寫(xiě)方向通道數(shù)據(jù)到權(quán)重為0或者所有寫(xiě)通道數(shù)據(jù)完成,然后連續(xù)調(diào)度讀方向數(shù)據(jù)到權(quán)重為0或者所有讀通道數(shù)據(jù)完成,減少讀寫(xiě)切換并實(shí)現(xiàn)讀寫(xiě)均衡。

所述通道控制模塊用于實(shí)現(xiàn)連續(xù)讀寫(xiě)操作的機(jī)制,具體的,支持突發(fā)緩沖(burstoutstanding)調(diào)度機(jī)制,對(duì)于多個(gè)通道突發(fā)的讀寫(xiě)請(qǐng)求,可以將各個(gè)通道的請(qǐng)求依次緩存下來(lái),按照緩存次序?qū)dr進(jìn)行讀寫(xiě),在數(shù)據(jù)讀寫(xiě)期間各個(gè)通道可以進(jìn)行其他調(diào)度,不必等待本次讀寫(xiě)返回結(jié)果。其中,實(shí)現(xiàn)連續(xù)讀寫(xiě)操作的機(jī)制,包括:3.1)讀寫(xiě)方向各有2個(gè)先進(jìn)先出隊(duì)列(fifo,firstinputfirstoutput),其中一個(gè)fifo緩存讀寫(xiě)命令(數(shù)據(jù)長(zhǎng)度),一個(gè)fifo緩存讀寫(xiě)數(shù)據(jù);3.2)ddr控制器按照調(diào)度結(jié)果依次將讀寫(xiě)命令和通道標(biāo)記緩存下來(lái),并按照次序?qū)⒆x寫(xiě)命令傳遞給ddr;3.3)如果是寫(xiě)訪問(wèn),ddr控制器將各個(gè) 通道的寫(xiě)數(shù)據(jù)也緩存到數(shù)據(jù)fifo里面,緩存完成之后該通道可以去調(diào)度別的數(shù)據(jù),之后ddr控制器按照通道標(biāo)記次序?qū)?shù)據(jù)寫(xiě)入ddr;3.4)如果是讀訪問(wèn),ddr控制器將數(shù)據(jù)讀出后,按照通道標(biāo)記將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的fifo,對(duì)應(yīng)通道可以將數(shù)據(jù)從fifo讀出。

如圖3所示為緩存控制模塊的工作流程,具體步驟如下:

步驟201、首先進(jìn)行ddr地址空間的初始化。該初始化將ddr空間劃分為n個(gè)區(qū)域,其中第一個(gè)區(qū)域的緩存顆粒配置成m字節(jié),第二個(gè)區(qū)域配成2m字節(jié)…最后一個(gè)區(qū)域的緩存顆粒配置成n*m字節(jié),如圖4所示,完成后進(jìn)入步驟202;

步驟202、每個(gè)區(qū)域初始化一個(gè)bp池,如圖5所示,該bp池為1個(gè)1-k的指針鏈表,存儲(chǔ)在1塊深度為k的ram里,每個(gè)地址都有一個(gè)指示標(biāo)識(shí),為1表示該bp已經(jīng)被使用,為0表示還未被使用,完成后進(jìn)入步驟203;

步驟203、接受調(diào)度模塊發(fā)過(guò)來(lái)的請(qǐng)求,如果是寫(xiě)請(qǐng)求,進(jìn)入步驟204,否則進(jìn)入步驟205;

步驟204、從對(duì)應(yīng)區(qū)域的bp池里取出當(dāng)前的空閑bp,發(fā)送給調(diào)度模塊,并將當(dāng)前bp指示置為1,將空閑bp指針指向下一個(gè)空閑bp,并將數(shù)據(jù)寫(xiě)入ddr,完成后進(jìn)入步驟203;

步驟205、從對(duì)應(yīng)的bp地址讀出ddr中的數(shù)據(jù),返回給調(diào)度模塊,并將當(dāng)前bp指示置為0,完成后進(jìn)入步驟203。

圖6是通道控制模塊的結(jié)構(gòu)圖,某個(gè)通道訪問(wèn)ddr時(shí),該通道對(duì)應(yīng)的控制器將讀/寫(xiě)命令和讀/寫(xiě)數(shù)據(jù)緩存下來(lái),讀/寫(xiě)命令存入第一fifo(具體為圖6中的命令fifo),將讀/寫(xiě)數(shù)據(jù)存入第二fifo(具體為圖6中的數(shù)據(jù)fifo)。調(diào)度模塊負(fù)責(zé)調(diào)度各個(gè)通道請(qǐng)求,所有通道通過(guò)調(diào)度模塊進(jìn)行wrr調(diào)度,將調(diào)度結(jié)構(gòu)傳遞給緩存控制模塊。

調(diào)度模塊的工作流程如圖7所示,具體步驟如下:

步驟301、調(diào)度模塊給每個(gè)通道初始化一個(gè)權(quán)重,該權(quán)重值可以配置,并 給讀寫(xiě)各配置一個(gè)總權(quán)重,每隔固定時(shí)間刷新各通道權(quán)重;

步驟302、進(jìn)入寫(xiě)調(diào)度周期,查詢各個(gè)寫(xiě)通道的訪問(wèn)請(qǐng)求,如果沒(méi)有任何請(qǐng)求則進(jìn)入步驟306,否則進(jìn)入步驟303;

步驟303、將符合要求的所有通道申請(qǐng)包長(zhǎng)與上次寫(xiě)入ddr的bp大小進(jìn)行比較,如果有一個(gè)通道的包長(zhǎng)符合上次的bp大小,則選擇這個(gè)通道,如果有多個(gè)滿足,則輪詢其中一個(gè),保證本次寫(xiě)入的bp與上次寫(xiě)入的相鄰,地址空間連續(xù);如果都不滿足,則輪詢所有輸入通道中的一個(gè),進(jìn)入步驟304;

步驟304、根據(jù)輪詢結(jié)果,向緩存控制模塊申請(qǐng)對(duì)應(yīng)區(qū)域的bp,將寫(xiě)請(qǐng)求發(fā)給緩存控制模塊,并從對(duì)應(yīng)通道控制模塊取出數(shù)據(jù)發(fā)送給緩存控制模塊,進(jìn)入步驟305;

步驟305、將對(duì)應(yīng)通道的權(quán)重和寫(xiě)通道總權(quán)重減去調(diào)度包長(zhǎng),如果寫(xiě)通道總權(quán)重已經(jīng)為0,則進(jìn)入步驟306,否則進(jìn)入步驟302;

步驟306、進(jìn)入讀調(diào)度周期,查詢各個(gè)讀通道的訪問(wèn)請(qǐng)求,如果沒(méi)有任何請(qǐng)求則進(jìn)入步驟302,否則進(jìn)入步驟307;

步驟307、將符合要求的所有通道申請(qǐng)bp與上次讀取的bp進(jìn)行比較,優(yōu)先選擇本次bp與上次bp相鄰的通道,如果沒(méi)有,則輪詢其中給一個(gè)通道,進(jìn)入步驟308;

步驟308、根據(jù)輪詢結(jié)果,將讀請(qǐng)求發(fā)給緩存控制裝置,并接受ddr的讀出內(nèi)容發(fā)送給通道控制裝置,進(jìn)入步驟309;

步驟309、將對(duì)應(yīng)通道的權(quán)重和讀通道總權(quán)重減去調(diào)度包長(zhǎng),如果讀通道總權(quán)重已經(jīng)為0則進(jìn)入步驟302,否則進(jìn)入步驟306。

圖8為本發(fā)明寫(xiě)數(shù)據(jù)訪問(wèn)ddr的工作流程,包括:

步驟401、寫(xiě)通道將寫(xiě)請(qǐng)求發(fā)送給該通道控制模塊,通道控制模塊檢查內(nèi)部命令和數(shù)據(jù)fifo是否非滿,是,則進(jìn)入步驟402;

步驟402、通道控制模塊將命令和數(shù)據(jù)分別寫(xiě)入命令fifo和數(shù)據(jù)fifo,此時(shí)對(duì)應(yīng)寫(xiě)通道可以進(jìn)行后續(xù)數(shù)據(jù)調(diào)度,無(wú)須等待寫(xiě)結(jié)果,之后返回步驟401;

步驟403、通道控制模塊檢查命令fifo是否為空,非空則將寫(xiě)請(qǐng)求發(fā)送給 調(diào)度模塊,進(jìn)入步驟404;

步驟404、調(diào)度模塊根據(jù)之前描述調(diào)度算法,輪詢到該通道數(shù)據(jù),向緩存控制模塊申請(qǐng)bp,進(jìn)入步驟405;

步驟405、緩存控制模塊將數(shù)據(jù)分配bp給調(diào)度模塊,將空閑bp指向下一個(gè)值,并將數(shù)據(jù)寫(xiě)入ddr,返回給調(diào)度模塊寫(xiě)成功指示,進(jìn)入步驟406;

步驟406、緩存控制模塊將bp返回給對(duì)應(yīng)通道控制模塊,通道控制模塊通知寫(xiě)通道寫(xiě)完成,并告知寫(xiě)通道對(duì)應(yīng)bp,結(jié)束本次操作,返回步驟403。

圖9為本發(fā)明讀數(shù)據(jù)訪問(wèn)ddr的工作流程,包括:

步驟501、讀通道將讀請(qǐng)求和讀bp發(fā)送給該通道控制模塊,通道控制模塊檢查內(nèi)部命令和數(shù)據(jù)fifo是否非滿,是,則進(jìn)入步驟502;

步驟502、通道控制模塊將命令和bp寫(xiě)入命令fifo,此時(shí)對(duì)應(yīng)讀通道可以進(jìn)行后續(xù)數(shù)據(jù)調(diào)度,無(wú)須等待讀結(jié)果,之后返回步驟501;

步驟503、通道控制模塊檢查命令fifo是否為空,非空,則將讀請(qǐng)求和bp發(fā)送給調(diào)度模塊,進(jìn)入步驟504;

步驟504、調(diào)度模塊根據(jù)之前描述調(diào)度算法,輪詢到該通道數(shù)據(jù),向緩存控制發(fā)起讀請(qǐng)求,進(jìn)入步驟505;

步驟505、緩存控制模塊將該bp置為空閑bp,并從ddr中讀出數(shù)據(jù),返回給調(diào)度模塊讀數(shù)據(jù),進(jìn)入步驟506;

步驟506、緩存控制模塊將數(shù)據(jù)返回給對(duì)應(yīng)通道控制模塊,通道控制模塊將數(shù)據(jù)寫(xiě)入數(shù)據(jù)fifo,并通知讀通道讀完成,讀通道可以從fifo中讀出數(shù)據(jù),結(jié)束本次操作,返回步驟c。

采用本發(fā)明實(shí)施例,通過(guò)將ddr地址劃分為多個(gè)區(qū)域,每個(gè)區(qū)域顆粒大小可以配置;同時(shí)根據(jù)wrr算法平衡各個(gè)讀寫(xiě)通道的數(shù)據(jù)包;支持讀寫(xiě)方向的突發(fā)連續(xù)訪問(wèn),與傳統(tǒng)的ddr訪問(wèn)方法相比,可以實(shí)現(xiàn)讀寫(xiě)地址連續(xù)均衡,減少ddr的選頁(yè)和切換操作,同時(shí)支持突發(fā)緩沖調(diào)度,避免了傳統(tǒng)方法在讀寫(xiě)時(shí)的數(shù)據(jù)等待,提高了ddr訪問(wèn)效率。

本發(fā)明實(shí)施例所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立 的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)施例的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分。而前述的存儲(chǔ)介質(zhì)包括:u盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。這樣,本發(fā)明實(shí)施例不限制于任何特定的硬件和軟件結(jié)合。

相應(yīng)的,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序用于執(zhí)行本發(fā)明實(shí)施例的一種高速訪問(wèn)ddr的控制方法。

以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宁陕县| 平果县| 隆化县| 新竹市| 海晏县| 宜春市| 宣威市| 登封市| 甘孜| 金坛市| 通化县| 西充县| 丰镇市| 会理县| 武功县| 广丰县| 山丹县| 河曲县| 贵阳市| 华安县| 华阴市| 襄垣县| 美姑县| 三门县| 时尚| 灌南县| 巨野县| 托克逊县| 禄劝| 车险| 荔波县| 湄潭县| 永安市| 四平市| 稷山县| 如东县| 呼玛县| 宣化县| 龙江县| 枝江市| 青浦区|