一種數(shù)據(jù)處理方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]第三代雙倍數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(double data rate type threesynchronous dynamic random access memory,簡(jiǎn)稱DDR3SDRAM)是目前應(yīng)用最廣泛的內(nèi)存產(chǎn)品,在成本、帶寬、功耗等方面都具有巨大優(yōu)勢(shì)。
[0003]DDR3SDRAM 一般使用長(zhǎng)度為8的突發(fā)式訪問(wèn),一次突發(fā)式訪問(wèn)是指對(duì)內(nèi)存的一次讀(read,簡(jiǎn)寫(xiě)為RD)或者寫(xiě)(write,簡(jiǎn)寫(xiě)為WR)命令。tk如,若DDR3芯片的數(shù)據(jù)位寬為16比特(英文:bit)、突發(fā)長(zhǎng)度為8,這里的數(shù)據(jù)位寬為處理器與所述DDR3芯片之間的數(shù)據(jù)線的總寬度,突發(fā)長(zhǎng)度為一次突發(fā)式訪問(wèn)所訪問(wèn)的數(shù)據(jù)長(zhǎng)度。則一次讀返回16bitX8 =128bit 數(shù)據(jù)。
[0004]DDR3SDRAM存儲(chǔ)體一般包括8個(gè)不同的存儲(chǔ)庫(kù)(Bank),每個(gè)Bank分為多行,每行稱之為一頁(yè)(Page),每頁(yè)又分為多列。如圖1所示,一次典型的讀過(guò)程為:處理器向DDR3SDRAM發(fā)送激活(ACT)命令和要訪問(wèn)的Bank地址(圖中用ΒΑ0標(biāo)識(shí)Bank地址)、行地址(如圖中RAx、RAy)以打開(kāi)一頁(yè),之后發(fā)送讀(RD)命令和頁(yè)內(nèi)列地址(如圖中CAx);在一頁(yè)之內(nèi)可連續(xù)采用讀命令執(zhí)行讀操作,但如果跨頁(yè),必須先發(fā)送預(yù)充電(Precharge,簡(jiǎn)寫(xiě)為PRE)命令關(guān)閉當(dāng)前打開(kāi)的一頁(yè)并再次發(fā)送ACT命令打開(kāi)對(duì)應(yīng)頁(yè)。這樣,在同一個(gè)Bank之內(nèi)切換頁(yè)時(shí),兩次讀命令之間需要有tRTP+tRP+Ι個(gè)時(shí)鐘周期的延遲,其中,tRTP為從發(fā)送讀命令到發(fā)送預(yù)充電PRE命令(也即關(guān)閉Bank命令)的時(shí)間,tRP為關(guān)閉Bank所需要的時(shí)間,從發(fā)送ACT命令到讀之間至少需要一個(gè)時(shí)鐘周期的時(shí)間。如圖2所示,一次典型的寫(xiě)過(guò)程為:處理器向DDR3SDRAM發(fā)送激活(ACT)命令和要寫(xiě)入的Bank地址、行地址;在一頁(yè)之內(nèi)可連續(xù)采用寫(xiě)命令執(zhí)行寫(xiě)操作,但如果跨頁(yè),就必須先發(fā)送PRE命令關(guān)閉當(dāng)前打開(kāi)的一頁(yè)并再次發(fā)送ACT命令。這樣,在同一個(gè)Bank之內(nèi)切換頁(yè)時(shí),兩次寫(xiě)(WR)命令之間需要有WL+4+tWR+tRP個(gè)時(shí)鐘周期的延期。其中,WL為寫(xiě)延遲的時(shí)間,也即在發(fā)送寫(xiě)命令后,還需經(jīng)過(guò)WL個(gè)時(shí)鐘周期進(jìn)入寫(xiě)操作,之后,有4個(gè)時(shí)鐘周期的寫(xiě)入時(shí)間,tWR為執(zhí)行寫(xiě)操作后的與恢復(fù)時(shí)間,tRP為Bank關(guān)閉時(shí)間。
[0005]從上述過(guò)程可見(jiàn),當(dāng)相鄰兩個(gè)內(nèi)存訪問(wèn)操作訪問(wèn)同一 Bank的不同頁(yè)時(shí),需要在執(zhí)行前一個(gè)訪問(wèn)操作后延遲較長(zhǎng)時(shí)間才能執(zhí)行后一個(gè)訪問(wèn)操作,嚴(yán)重降低了訪問(wèn)效率。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法及裝置,用以解決現(xiàn)有技術(shù)中當(dāng)相鄰兩個(gè)內(nèi)存訪問(wèn)操作訪問(wèn)同一 Bank的不同頁(yè)時(shí)訪問(wèn)效率較低的問(wèn)題。
[0007]第一方面,提供一種數(shù)據(jù)處理方法,包括:
[0008]將待操作的數(shù)據(jù)塊Block劃分為多個(gè)數(shù)據(jù)子塊;所述多個(gè)數(shù)據(jù)子塊的數(shù)量不大于內(nèi)存的存儲(chǔ)庫(kù)Bank的數(shù)量;
[0009]對(duì)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank執(zhí)行訪問(wèn)操作;其中,所述Block的不同數(shù)據(jù)子塊對(duì)應(yīng)所述內(nèi)存的不同Bank。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,將待操作的Block劃分為多個(gè)數(shù)據(jù)子塊,包括:
[0011]根據(jù)預(yù)設(shè)的Block大小和內(nèi)存訪問(wèn)指令,確定所述待操作的Block ;
[0012]根據(jù)預(yù)設(shè)的數(shù)據(jù)子塊大小,將所述Block劃分為所述多個(gè)數(shù)據(jù)子塊。
[0013]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)的Block大小為所述內(nèi)存的Bank的數(shù)量與內(nèi)存的數(shù)據(jù)位寬、一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積;所述預(yù)設(shè)的數(shù)據(jù)子塊大小為內(nèi)存的數(shù)據(jù)位寬與一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積。
[0014]結(jié)合第一方面,或第一方面的第一或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,對(duì)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank執(zhí)行訪問(wèn)操作,包括:
[0015]根據(jù)訪問(wèn)所述待操作的Block之前已訪問(wèn)的一個(gè)Block所對(duì)應(yīng)的Bank訪問(wèn)順序,以及所述待操作的Block的每個(gè)數(shù)據(jù)子塊與所述內(nèi)存的Bank的對(duì)應(yīng)關(guān)系,確定所述待操作的Block所對(duì)應(yīng)的Bank訪問(wèn)順序;
[0016]根據(jù)所述待操作的Block所對(duì)應(yīng)的Bank訪問(wèn)順序,訪問(wèn)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank,使得兩次訪問(wèn)所述內(nèi)存的同一 Bank的間隔時(shí)間最長(zhǎng)。
[0017]第二方面,提供一種數(shù)據(jù)處理裝置,包括:
[0018]劃分模塊,用于將待操作的數(shù)據(jù)塊Block劃分為多個(gè)數(shù)據(jù)子塊;所述多個(gè)數(shù)據(jù)子塊的數(shù)量不大于內(nèi)存的存儲(chǔ)庫(kù)Bank的數(shù)量;
[0019]訪問(wèn)模塊,用于對(duì)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank執(zhí)行訪問(wèn)操作;其中,所述Block的不同數(shù)據(jù)子塊對(duì)應(yīng)所述內(nèi)存的不同Bank。
[0020]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述劃分模塊具體用于:根據(jù)預(yù)設(shè)的Block大小和內(nèi)存訪問(wèn)指令,確定所述待操作的Block;根據(jù)預(yù)設(shè)的數(shù)據(jù)子塊大小,將所述Block劃分為所述多個(gè)數(shù)據(jù)子塊。
[0021]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)的Block大小為所述內(nèi)存的Bank的數(shù)量與內(nèi)存的數(shù)據(jù)位寬、一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積;所述預(yù)設(shè)的數(shù)據(jù)子塊大小為內(nèi)存的數(shù)據(jù)位寬與一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積。
[0022]結(jié)合第二方面,或第二方面的第一或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述訪問(wèn)模塊具體用于:根據(jù)訪問(wèn)所述待操作的Block之前已訪問(wèn)的一個(gè)Block所對(duì)應(yīng)的Bank訪問(wèn)順序,以及所述待操作的Block的每個(gè)數(shù)據(jù)子塊與所述內(nèi)存的Bank的對(duì)應(yīng)關(guān)系,確定所述待操作的Block所對(duì)應(yīng)的Bank訪問(wèn)順序;根據(jù)所述待操作的Block所對(duì)應(yīng)的Bank訪問(wèn)順序,訪問(wèn)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank,使得兩次訪問(wèn)所述內(nèi)存的同一 Bank的間隔時(shí)間最長(zhǎng)。
[0023]第三方面,提供一種數(shù)據(jù)處理系統(tǒng),該系統(tǒng)包括處理器、內(nèi)存和數(shù)據(jù)線,所述內(nèi)存包括多個(gè)存儲(chǔ)庫(kù)Bank,當(dāng)所述裝置運(yùn)行時(shí),所述處理器與所述內(nèi)存之間通過(guò)數(shù)據(jù)線通信,所述處理器具體用于:
[0024]將待操作的數(shù)據(jù)塊Block劃分為多個(gè)數(shù)據(jù)子塊;所述多個(gè)數(shù)據(jù)子塊的數(shù)量不大于內(nèi)存的存儲(chǔ)庫(kù)Bank的數(shù)量;
[0025]對(duì)所述待操作的Block的每個(gè)數(shù)據(jù)子塊所對(duì)應(yīng)的Bank執(zhí)行訪問(wèn)操作;其中,所述Block的不同數(shù)據(jù)子塊對(duì)應(yīng)所述內(nèi)存的不同Bank。
[0026]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述處理器具體用于:
[0027]根據(jù)預(yù)設(shè)的Block大小和內(nèi)存訪問(wèn)指令,確定所述待操作的Block ;
[0028]根據(jù)預(yù)設(shè)的數(shù)據(jù)子塊大小,將所述Block劃分為所述多個(gè)數(shù)據(jù)子塊。
[0029]結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)的Block大小為所述內(nèi)存的Bank的數(shù)量與內(nèi)存的數(shù)據(jù)位寬、一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積;所述預(yù)設(shè)的數(shù)據(jù)子塊大小為內(nèi)存的數(shù)據(jù)位寬與一次突發(fā)長(zhǎng)度以及突發(fā)次數(shù)的乘積。
[0030]結(jié)合第三方面,或第三方面的第一或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述處理器具體用于:
[0031]根據(jù)訪問(wèn)所述待操作的Block之前已訪問(wèn)的一個(gè)Block所對(duì)應(yīng)的Bank訪問(wèn)順序,以及所述待操作的Block的每個(gè)數(shù)據(jù)子塊與所述內(nèi)存的Bank的對(duì)應(yīng)關(guān)系,確定所述待操作的Block所對(duì)應(yīng)的Bank訪問(wèn)順序;根據(jù)所述待操作