国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)讀寫的方法與裝置與流程

      文檔序號(hào):11230376閱讀:887來(lái)源:國(guó)知局
      一種數(shù)據(jù)讀寫的方法與裝置與流程

      本發(fā)明涉及數(shù)據(jù)讀寫技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)讀寫的方法與裝置。



      背景技術(shù):

      存儲(chǔ)器是現(xiàn)代信息技術(shù)中用于保存信息的記憶設(shè)備。有了存儲(chǔ)器,計(jì)算機(jī)才有記憶功能,才能保證正常工作。存儲(chǔ)器的主要功能是存儲(chǔ)程序和各種數(shù)據(jù),并能在計(jì)算機(jī)運(yùn)行過(guò)程中高速、自動(dòng)地完成程序或數(shù)據(jù)的存取。存儲(chǔ)器的類型有多種,nand-flash存儲(chǔ)器具有容量較大,改寫速度快等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ),因而在業(yè)界得到了越來(lái)越廣泛的應(yīng)用,為后續(xù)介紹方便可以將nand-flash存儲(chǔ)器簡(jiǎn)稱為nand,由于nand在數(shù)據(jù)讀寫時(shí)會(huì)有bit錯(cuò)誤,所以在數(shù)據(jù)寫入nandflash時(shí)會(huì)利用ecc算法對(duì)數(shù)據(jù)進(jìn)行編碼(ecc編碼),當(dāng)數(shù)據(jù)從nand讀出后可以根據(jù)ecc算法對(duì)數(shù)據(jù)進(jìn)行解碼(ecc解碼),來(lái)對(duì)數(shù)據(jù)進(jìn)行糾錯(cuò)。

      傳統(tǒng)方式中,向nand中寫入數(shù)據(jù)或從nand中讀取數(shù)據(jù)時(shí),需要等待數(shù)據(jù)完成編碼或解碼處理后,再去向nand中寫入新的數(shù)據(jù)或從nand中讀取新的數(shù)據(jù),而數(shù)據(jù)進(jìn)行編碼或解碼的過(guò)程往往會(huì)耗費(fèi)大量的時(shí)間,造成讀寫帶寬的大量損失,使得數(shù)據(jù)讀寫的效率較低??梢?,如何提升數(shù)據(jù)讀寫的效率,是本領(lǐng)域技術(shù)人員亟待解決的問題。



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

      本發(fā)明實(shí)施例的目的是提供一種數(shù)據(jù)讀寫的方法與裝置,可以有效提升數(shù)據(jù)讀寫的效率。

      為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種數(shù)據(jù)讀寫的方法,包括:

      從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);

      利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,并從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,將所述第二數(shù)據(jù)包寫入第二緩存區(qū);所述第二緩存區(qū)為與所述第一緩存區(qū)相鄰的緩存為空的緩存區(qū);

      將編碼或解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,還包括:

      接收所述目標(biāo)存儲(chǔ)器發(fā)送的反饋信息;

      依據(jù)所述反饋信息中攜帶的緩存區(qū)標(biāo)識(shí),將所述緩存區(qū)標(biāo)識(shí)對(duì)應(yīng)的緩存區(qū)清空。

      可選的,當(dāng)所述第一存儲(chǔ)器為nand,目標(biāo)存儲(chǔ)器為ddr;

      則利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行解碼處理;

      相應(yīng)的,

      將解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,當(dāng)所述第一存儲(chǔ)器為ddr,目標(biāo)存儲(chǔ)器為nand;

      則利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼處理;

      相應(yīng)的,

      將編碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,在所述從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū)之前,還包括:

      判斷第一緩存區(qū)是否為空;

      若是,則將所述第一數(shù)據(jù)包寫入所述第一緩存區(qū);

      若否,則依次判斷是否存在緩存為空的緩存區(qū);

      若存在,則將所述緩存區(qū)作為第一緩存區(qū)。

      本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)讀寫的裝置,包括寫入單元、處理單元和發(fā)送單元,

      所述寫入單元,用于從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);

      所述處理單元,用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,所述寫入單元還用于從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,并將所述第二數(shù)據(jù)包寫入第二緩存區(qū);所述第二緩存區(qū)為與所述第一緩存區(qū)相鄰的緩存為空的緩存區(qū);

      所述發(fā)送單元,用于將編碼或解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,還包括接收單元和清空單元,

      所述接收單元,用于接收所述目標(biāo)存儲(chǔ)器發(fā)送的反饋信息;

      所述清空單元,用于依據(jù)所述反饋信息中攜帶的緩存區(qū)標(biāo)識(shí),將所述緩存區(qū)標(biāo)識(shí)對(duì)應(yīng)的緩存區(qū)清空。

      可選的,當(dāng)所述第一存儲(chǔ)器為nand,目標(biāo)存儲(chǔ)器為ddr;

      則所述處理單元具體用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行解碼處理;

      相應(yīng)的,

      所述發(fā)送單元具體用于將解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,當(dāng)所述第一存儲(chǔ)器為ddr,目標(biāo)存儲(chǔ)器為nand;

      則所述處理單元具體用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼處理;

      相應(yīng)的,

      所述發(fā)送單元具體用于將編碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,還包括判斷單元和選取單元,

      所述判斷單元,用于判斷第一緩存區(qū)是否為空;

      若是,則觸發(fā)所述寫入單元,將所述第一數(shù)據(jù)包寫入所述第一緩存區(qū);

      若否,則所述判斷單元還用于依次判斷是否存在緩存為空的緩存區(qū);

      若存在,則觸發(fā)所述選取單元,所述選取單元,用于將所述緩存區(qū)作為第一緩存區(qū)。

      由上述技術(shù)方案可以看出,當(dāng)需要從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器發(fā)送數(shù)據(jù)時(shí),可以預(yù)先設(shè)置多個(gè)緩存區(qū),從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);當(dāng)?shù)谝粩?shù)據(jù)包完全寫入到第一緩存區(qū)后,便可以利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,為了提升數(shù)據(jù)讀寫的效率,在對(duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,并將所述第二數(shù)據(jù)包寫入第二緩存區(qū);當(dāng)完成對(duì)第一數(shù)據(jù)包的編碼或解碼處理后,可以將該第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器,參照第一數(shù)據(jù)包的處理流程,可以完成從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器傳輸數(shù)據(jù)。可見,在對(duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以同時(shí)將第二數(shù)據(jù)包寫入到第二緩存區(qū),充分利用了編碼或解碼處理的時(shí)間間隙,可以有效提升數(shù)據(jù)讀寫的效率。

      附圖說(shuō)明

      為了更清楚地說(shuō)明本發(fā)明實(shí)施例,下面將對(duì)實(shí)施例中所需要使用的附圖做簡(jiǎn)單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

      圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀寫的方法的流程圖;

      圖2a為本發(fā)明實(shí)施例提供的一種從nand向ddr傳輸數(shù)據(jù)的流水線操作的示意圖;

      圖2b為本發(fā)明實(shí)施例提供的一種從ddr向nand傳輸數(shù)據(jù)的流水線操作的示意圖;

      圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀寫的裝置的結(jié)構(gòu)示意圖。

      具體實(shí)施方式

      下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下,所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)范圍。

      為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明。

      以從nand向ddr傳輸數(shù)據(jù)為例,傳統(tǒng)方式中,需要等待數(shù)據(jù)完成解碼處理后,才可以進(jìn)行下一個(gè)數(shù)據(jù)的傳輸,由于數(shù)據(jù)解碼處理會(huì)消耗大量的時(shí)間,按照此種方式進(jìn)行數(shù)據(jù)的傳輸,需要花費(fèi)較長(zhǎng)的時(shí)間,導(dǎo)致數(shù)據(jù)讀寫效率較低。

      如果可以在數(shù)據(jù)進(jìn)行編碼或解碼處理時(shí),進(jìn)行后續(xù)數(shù)據(jù)的讀寫操作,將極大的提升數(shù)據(jù)讀寫的效率。根據(jù)速度的提升會(huì)由資源增加來(lái)補(bǔ)償?shù)脑瓌t,按照該種處理方式必然會(huì)消耗一部分fpga的緩存資源,而fpga內(nèi)部恰恰有大量的ram資源可以作為緩存區(qū),為此,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)讀寫的方法與裝置,可以預(yù)先選取出多個(gè)ram作為數(shù)據(jù)存儲(chǔ)的緩存區(qū),使用多個(gè)緩存區(qū)的流水操作,實(shí)現(xiàn)在數(shù)據(jù)編碼或解碼處理的同時(shí),進(jìn)行后續(xù)數(shù)據(jù)的讀寫,從而有效提升數(shù)據(jù)讀寫的效率。本發(fā)明實(shí)施例提供的技術(shù)方案,適用于在進(jìn)行數(shù)據(jù)傳輸時(shí)需要進(jìn)行編碼或解碼處理的數(shù)據(jù)讀寫場(chǎng)景。

      在本發(fā)明實(shí)施例中,可以通過(guò)存儲(chǔ)控制器實(shí)現(xiàn)對(duì)多個(gè)緩存區(qū)的管理。為了區(qū)分不同的緩存區(qū),便于存儲(chǔ)控制器對(duì)這幾個(gè)緩存區(qū)進(jìn)行管理,可以對(duì)選取的多個(gè)緩存區(qū)設(shè)置緩存區(qū)標(biāo)識(shí),例如,該標(biāo)識(shí)可以是數(shù)字編號(hào),以選取3個(gè)緩存區(qū)為例,可以將其編號(hào)為0、1、2,即緩存區(qū)的名稱為ram0、ram1和ram2。

      接下來(lái),詳細(xì)介紹本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)讀寫的方法。圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀寫的方法的流程圖,該方法包括:

      s101:從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū)。

      第一存儲(chǔ)器可以是需要從存儲(chǔ)器中讀取數(shù)據(jù)的存儲(chǔ)器。以nand和ddr之間傳輸數(shù)據(jù)為例,當(dāng)需要從nand中讀取數(shù)據(jù)時(shí),第一存儲(chǔ)器即為nand;當(dāng)需要向nand寫入數(shù)據(jù)時(shí),即從ddr中讀取數(shù)據(jù)時(shí),第一存儲(chǔ)器即為ddr。為后續(xù)介紹方便,下面均以nand數(shù)據(jù)的讀寫為例展開介紹。

      數(shù)據(jù)可以以數(shù)據(jù)包的形式在不同的存儲(chǔ)器之間傳輸,第一數(shù)據(jù)包可以是待傳輸數(shù)據(jù)中的一部分?jǐn)?shù)據(jù)。第一緩存區(qū)可以是預(yù)先選取出多個(gè)緩存區(qū)中的其中一個(gè)緩存區(qū)。

      s102:利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,并從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,將所述第二數(shù)據(jù)包寫入第二緩存區(qū)。

      當(dāng)完成第一數(shù)據(jù)包寫入第一緩存區(qū)的操作后,便可以對(duì)第一緩存區(qū)中的數(shù)據(jù)即第一數(shù)據(jù)包進(jìn)行編碼或解碼處理。當(dāng)需要從nand中讀取數(shù)據(jù)時(shí),即第一存儲(chǔ)器為nand,則利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行解碼處理。當(dāng)需要向nand中寫入數(shù)據(jù)時(shí),則利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼處理。

      第二數(shù)據(jù)包可以是待傳輸數(shù)據(jù)中與第一數(shù)據(jù)包相鄰的數(shù)據(jù)。第二緩存區(qū)可以是與所述第一緩存區(qū)相鄰的緩存為空的緩存區(qū)。

      在本發(fā)明實(shí)施例中,可以預(yù)先設(shè)置多個(gè)緩存區(qū),用于存儲(chǔ)待傳輸數(shù)據(jù)。以緩存區(qū)為ram0和ram1為例,將第一數(shù)據(jù)包寫入到ram0后,便可以利用ecc算法對(duì)ram0中的第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,與此同時(shí)可以從第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,將該第二數(shù)據(jù)包寫入ram1中。

      s103:將編碼或解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      以nand和ddr這兩種存儲(chǔ)器為例,當(dāng)?shù)谝淮鎯?chǔ)器為nand,目標(biāo)存儲(chǔ)器為ddr,則需要利用ecc算法對(duì)第一數(shù)據(jù)包進(jìn)行解碼處理;相應(yīng)的,將解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      相比于對(duì)數(shù)據(jù)進(jìn)行編碼或解碼處理所花費(fèi)的時(shí)間,以及向ddr中寫入數(shù)據(jù)或者從ddr中讀取數(shù)據(jù)所花費(fèi)的時(shí)間,向nand寫入數(shù)據(jù)或者是從nand中讀取數(shù)據(jù)花費(fèi)的時(shí)間相對(duì)較長(zhǎng),為了降低數(shù)據(jù)讀寫帶寬的損失,在執(zhí)行上述操作流程時(shí),可以通過(guò)保證nand數(shù)據(jù)讀寫的連續(xù)進(jìn)行,以使得nand讀寫性能可以達(dá)到最大化。

      以ram0、ram1和ram2三個(gè)緩存區(qū)為例,從nand向ddr傳輸數(shù)據(jù)的流水線操作的示意圖,如圖2a所示,從第一存儲(chǔ)器即nand中讀取第一數(shù)據(jù)包將其存儲(chǔ)于第一緩存區(qū)ram0,當(dāng)完成將第一數(shù)據(jù)包寫入ram0的操作后,可以對(duì)ram0中的第一數(shù)據(jù)包進(jìn)行ecc解碼處理,與此同時(shí),可以從nand中讀取第二數(shù)據(jù)包將其存儲(chǔ)于第二緩存區(qū)ram1,當(dāng)完成對(duì)第一數(shù)據(jù)包的解碼處理后,可以將解碼后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器即ddr中。以此類推,當(dāng)完成將第二數(shù)據(jù)包寫入ram1的操作后,可以對(duì)ram1中的第二數(shù)據(jù)包進(jìn)行ecc解碼處理,與此同時(shí),可以從nand中讀取第三數(shù)據(jù)包將其存儲(chǔ)于第三緩存區(qū)ram2,當(dāng)完成對(duì)第二數(shù)據(jù)包的解碼處理后,可以將解碼后的第二數(shù)據(jù)包發(fā)送至ddr中。由圖2a可以看出,當(dāng)完成將第三數(shù)據(jù)包寫入ram2的操作后,可以對(duì)ram2中的第三數(shù)據(jù)包進(jìn)行ecc解碼處理,此時(shí)第一數(shù)據(jù)包已經(jīng)發(fā)送至ddr,說(shuō)明ram0緩存為空,與此同時(shí)可以將第四數(shù)據(jù)包寫入ram0,當(dāng)完成對(duì)第三數(shù)據(jù)包的解碼處理后,將解碼后的第三數(shù)據(jù)包發(fā)送至ddr中。從圖2a中可以看出,在數(shù)據(jù)傳輸過(guò)程中實(shí)現(xiàn)了從nand中讀取數(shù)據(jù)的連貫性,從而使得數(shù)據(jù)從nand傳輸至ddr花費(fèi)的時(shí)間較短,有效的提升了從nand中讀取數(shù)據(jù)的效率。

      當(dāng)?shù)谝淮鎯?chǔ)器為ddr,目標(biāo)存儲(chǔ)器為nand,則需要利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼處理;相應(yīng)的,將編碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      以ram0、ram1和ram2三個(gè)緩存區(qū)為例,從ddr向nand傳輸數(shù)據(jù)的流水線操作的示意圖,如圖2b所示,從第一存儲(chǔ)器即ddr中讀取第一數(shù)據(jù)包將其存儲(chǔ)于第一緩存區(qū)ram0,當(dāng)完成將第一數(shù)據(jù)包寫入ram0的操作后,可以對(duì)ram0中的第一數(shù)據(jù)包進(jìn)行ecc編碼處理,在編碼處理過(guò)程中,可以從ddr中讀取第二數(shù)據(jù)包,并將其存儲(chǔ)于第二緩存區(qū)ram1,當(dāng)?shù)谝粩?shù)據(jù)包完成編碼后,便可以將編碼后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器即nand中。以此類推,當(dāng)完成將第二數(shù)據(jù)包寫入ram1的操作后,可以對(duì)ram1中的第二數(shù)據(jù)包進(jìn)行ecc編碼處理,在編碼處理過(guò)程中,可以從從ddr中讀取第三數(shù)據(jù)包,并將其存儲(chǔ)于第三緩存區(qū)ram2,當(dāng)?shù)诙?shù)據(jù)包完成編碼后,便可以將編碼后的第二數(shù)據(jù)包發(fā)送至nand中。由圖2b可以看出,當(dāng)完成將第三數(shù)據(jù)包寫入ram2的操作后,可以對(duì)第三數(shù)據(jù)包進(jìn)行ecc編碼處理,此時(shí)第一數(shù)據(jù)包已經(jīng)發(fā)送至nand,說(shuō)明ram0緩存為空,故此,可以將第四數(shù)據(jù)包寫入ram0,以此類推完成數(shù)據(jù)的傳輸。從圖2b中可以看出,在數(shù)據(jù)傳輸過(guò)程中實(shí)現(xiàn)了向nand中寫入數(shù)據(jù)的連貫性,從而使得數(shù)據(jù)從ddr傳輸至nand花費(fèi)的時(shí)間較短,有效的提升了向nand中寫入數(shù)據(jù)的效率。

      圖2a和圖2b均以3個(gè)緩存區(qū)為例進(jìn)行的介紹。在本發(fā)明實(shí)施例中,可以根據(jù)數(shù)據(jù)包從第一存儲(chǔ)器寫入緩存區(qū)的時(shí)間,對(duì)數(shù)據(jù)包進(jìn)行編碼或解碼的時(shí)間,以及將編碼或解碼處理后的數(shù)據(jù)發(fā)送至目標(biāo)存儲(chǔ)器的時(shí)間,可以根據(jù)這三個(gè)時(shí)間之間的比例關(guān)系,確定所需要的緩存區(qū)的個(gè)數(shù)。

      以從nand向ddr傳輸數(shù)據(jù)為例,可以將從nand向緩沖區(qū)寫入數(shù)據(jù)包的時(shí)間作為第一參數(shù),對(duì)數(shù)據(jù)包進(jìn)行解碼的時(shí)間以及將解碼后的數(shù)據(jù)包發(fā)送至ddr的時(shí)間之和作為第二參數(shù),可以由這兩個(gè)參數(shù)的比例關(guān)系,確定出緩存區(qū)的個(gè)數(shù)。例如,當(dāng)?shù)诙?shù)與第一參數(shù)的比值小于等于1時(shí),說(shuō)明在將一個(gè)數(shù)據(jù)包從nand寫入緩沖區(qū)的時(shí)間段內(nèi),可以同時(shí)完成對(duì)上一個(gè)數(shù)據(jù)包的解碼以及發(fā)送至ddr的操作,此時(shí),設(shè)置兩個(gè)緩存區(qū)便可以滿足要求。如圖2a所示,為當(dāng)?shù)诙?shù)與第一參數(shù)的比值大于等于1時(shí)的情況,從圖2a中可以看出,當(dāng)完成將第二數(shù)據(jù)包寫入ram1后,此時(shí)ram0中的第一數(shù)據(jù)包還沒有完全傳輸至ddr,也即ram0緩存區(qū)仍被占用,此時(shí),可以向緩存為空的ram2中寫入第三數(shù)據(jù)包,當(dāng)完成將第三數(shù)據(jù)包寫入ram2后,此時(shí)ram0中的第一數(shù)據(jù)包已經(jīng)完全傳輸至ddr,也即ram0緩存為空,此時(shí),可以將第四數(shù)據(jù)包寫入ram0,由此可知,針對(duì)圖2a所示的情況,設(shè)置3個(gè)緩存區(qū)可以充分利用數(shù)據(jù)讀寫帶寬,滿足數(shù)據(jù)讀寫的要求。

      與上述從nand向ddr傳輸數(shù)據(jù)的原理類似,從ddr向nand傳輸數(shù)據(jù)時(shí),可以將從ddr向緩沖區(qū)寫入數(shù)據(jù)包的時(shí)間以及對(duì)該數(shù)據(jù)包進(jìn)行編碼的時(shí)間之和作為第一參數(shù),將編碼后的數(shù)據(jù)包發(fā)送至nand的時(shí)間作為第二參數(shù),可以由這兩個(gè)參數(shù)的比例關(guān)系,確定出緩存區(qū)的個(gè)數(shù)。

      由上述技術(shù)方案可以看出,當(dāng)需要從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器發(fā)送數(shù)據(jù)時(shí),可以預(yù)先設(shè)置多個(gè)緩存區(qū),從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);當(dāng)?shù)谝粩?shù)據(jù)包完全寫入到第一緩存區(qū)后,便可以利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,為了提升數(shù)據(jù)讀寫的效率,在對(duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,并將所述第二數(shù)據(jù)包寫入第二緩存區(qū);當(dāng)完成對(duì)第一數(shù)據(jù)包的編碼或解碼處理后,可以將該第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器,參照第一數(shù)據(jù)包的處理流程,可以完成從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器傳輸數(shù)據(jù)??梢姡趯?duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以同時(shí)將第二數(shù)據(jù)包寫入到第二緩存區(qū),充分利用了編碼或解碼處理的時(shí)間間隙,可以有效提升數(shù)據(jù)讀寫的效率。

      考慮到在將緩存區(qū)中的數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器時(shí),可能會(huì)出現(xiàn)緩存區(qū)出現(xiàn)數(shù)據(jù)殘余的情況,針對(duì)該種情況,可以在目標(biāo)緩存器接收到從緩存區(qū)發(fā)送的數(shù)據(jù)包后,可以將攜帶該緩存區(qū)標(biāo)識(shí)的反饋信息發(fā)送給存儲(chǔ)控制器,存儲(chǔ)控制器在接收到目標(biāo)存儲(chǔ)器發(fā)送的反饋信息后,可以依據(jù)所述反饋信息中攜帶的緩存區(qū)標(biāo)識(shí),將所述緩存區(qū)標(biāo)識(shí)對(duì)應(yīng)的緩存區(qū)清空。

      通過(guò)清空處理,可以保證在將緩存區(qū)的數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器后,該緩存區(qū)可以用于后續(xù)數(shù)據(jù)包的存儲(chǔ)。

      在本發(fā)明實(shí)施例中,可以以輪詢的方式依次向預(yù)先選取的緩存區(qū)寫入數(shù)據(jù)包。當(dāng)需要向某一緩存區(qū)寫入數(shù)據(jù)時(shí),可能會(huì)出現(xiàn)該緩存區(qū)仍有數(shù)據(jù)的情況,此時(shí),若仍將數(shù)據(jù)包寫入該緩存區(qū),可能會(huì)出現(xiàn)緩存空間不足,導(dǎo)致數(shù)據(jù)包的丟失,針對(duì)該種情況,可以增加相應(yīng)的判斷步驟。以向第一緩存區(qū)寫入數(shù)據(jù)包為例,具體的,可以判斷第一緩存區(qū)是否為空;若是,則將所述第一數(shù)據(jù)包寫入所述第一緩存區(qū);若否,則依次判斷是否存在緩存為空的緩存區(qū);若存在,則將所述緩存區(qū)作為第一緩存區(qū)。

      對(duì)于其他緩存區(qū),可以參照第一緩存區(qū)的判斷過(guò)程,在此不再贅述。

      圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)讀寫的裝置的結(jié)構(gòu)示意圖,包括寫入單元31、處理單元32和發(fā)送單元33,

      所述寫入單元31,用于從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);

      所述處理單元32,用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,同時(shí),所述寫入單元31還用于從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,并將所述第二數(shù)據(jù)包寫入第二緩存區(qū);所述第二緩存區(qū)為與所述第一緩存區(qū)相鄰的緩存為空的緩存區(qū);

      所述發(fā)送單元33,用于將編碼或解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,還包括接收單元和清空單元,

      所述接收單元,用于接收所述目標(biāo)存儲(chǔ)器發(fā)送的反饋信息;

      所述清空單元,用于依據(jù)所述反饋信息中攜帶的緩存區(qū)標(biāo)識(shí),將所述緩存區(qū)標(biāo)識(shí)對(duì)應(yīng)的緩存區(qū)清空。

      可選的,當(dāng)所述第一存儲(chǔ)器為nand,目標(biāo)存儲(chǔ)器為ddr;

      則所述處理單元32具體用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行解碼處理;

      相應(yīng)的,

      所述發(fā)送單元33具體用于將解碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,當(dāng)所述第一存儲(chǔ)器為ddr,目標(biāo)存儲(chǔ)器為nand;

      則所述處理單元32具體用于利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼處理;

      相應(yīng)的,

      所述發(fā)送單元33具體用于將編碼處理后的第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器。

      可選的,還包括判斷單元和選取單元,

      所述判斷單元,用于判斷第一緩存區(qū)是否為空;

      若是,則觸發(fā)所述寫入單元,將所述第一數(shù)據(jù)包寫入所述第一緩存區(qū);

      若否,則所述判斷單元還用于依次判斷是否存在緩存為空的緩存區(qū);

      若存在,則觸發(fā)所述選取單元,所述選取單元,用于將所述緩存區(qū)作為第一緩存區(qū)。

      圖3所對(duì)應(yīng)實(shí)施例中特征的說(shuō)明可以參見圖1所對(duì)應(yīng)實(shí)施例的相關(guān)說(shuō)明,這里不再一一贅述。

      由上述技術(shù)方案可以看出,當(dāng)需要從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器發(fā)送數(shù)據(jù)時(shí),可以預(yù)先設(shè)置多個(gè)緩存區(qū),從第一存儲(chǔ)器中讀取第一數(shù)據(jù)包,并將所述第一數(shù)據(jù)包寫入第一緩存區(qū);當(dāng)?shù)谝粩?shù)據(jù)包完全寫入到第一緩存區(qū)后,便可以利用ecc算法對(duì)所述第一數(shù)據(jù)包進(jìn)行編碼或解碼處理,為了提升數(shù)據(jù)讀寫的效率,在對(duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以從所述第一存儲(chǔ)器中讀取第二數(shù)據(jù)包,并將所述第二數(shù)據(jù)包寫入第二緩存區(qū);當(dāng)完成對(duì)第一數(shù)據(jù)包的編碼或解碼處理后,可以將該第一數(shù)據(jù)包發(fā)送至目標(biāo)存儲(chǔ)器,參照第一數(shù)據(jù)包的處理流程,可以完成從第一存儲(chǔ)器向目標(biāo)存儲(chǔ)器傳輸數(shù)據(jù)。可見,在對(duì)第一數(shù)據(jù)包進(jìn)行編碼或解碼處理時(shí),可以同時(shí)將第二數(shù)據(jù)包寫入到第二緩存區(qū),充分利用了編碼或解碼處理的時(shí)間間隙,可以有效提升數(shù)據(jù)讀寫的效率。

      以上對(duì)本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)讀寫的方法與裝置進(jìn)行了詳細(xì)介紹。說(shuō)明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說(shuō)明即可。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。

      專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來(lái)實(shí)現(xiàn),為了清楚地說(shuō)明硬件和軟件的可互換性,在上述說(shuō)明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

      結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(ram)、內(nèi)存、只讀存儲(chǔ)器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動(dòng)磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1