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

實(shí)現(xiàn)存儲設(shè)備損耗均衡的方法及存儲設(shè)備的制作方法

文檔序號:6754400閱讀:180來源:國知局

專利名稱::實(shí)現(xiàn)存儲設(shè)備損耗均衡的方法及存儲設(shè)備的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,尤其涉及一種實(shí)現(xiàn)存儲設(shè)備損耗均衡的方法及存儲設(shè)備。
背景技術(shù)
:一般來說,存儲設(shè)備的使用壽命是由存儲單元的最大可擦寫次數(shù)決定的,隨著存儲單元的擦寫次數(shù)的增加,該存儲單元最終變?yōu)橹蛔x狀態(tài),從而成為壞塊。為了延長存儲設(shè)備的使用壽命,行之有效的方法是在盡量小的影響性能的前提下,均衡使用存儲設(shè)備中的所有存儲單元,而不讓某個或某幾個存儲單元被過度使用,這種均衡使用存儲設(shè)備中的存儲單元的技術(shù)成為損耗均衡(wearleveling)才支術(shù)。下面以目前常見的兩種非易失性閃存NORFLASH和NANDFLASH為例說明現(xiàn)有技術(shù)中實(shí)現(xiàn)損耗均衡的方法NANDFLASH可以達(dá)到高存儲密度,并且寫入和擦除的速度也很快,在大容量數(shù)據(jù)存儲中存在優(yōu)勢,應(yīng)用廣泛。NANDFLASH中的基本存儲單元為扇區(qū),扇區(qū)也是進(jìn)行擦寫操作的基本單位。扇區(qū)的大小為528個字節(jié),其中512字節(jié)用于存儲數(shù)據(jù),16字節(jié)用于存儲壞塊標(biāo)識和錯誤校-驗(yàn)碼(ECC)。為了達(dá)到損耗均衡的目的,在向NANDFLASH中某個邏輯扇區(qū)寫入數(shù)據(jù)后,記錄該邏輯扇區(qū)已寫數(shù)據(jù)不可用,當(dāng)需要對該邏輯扇區(qū)中的數(shù)據(jù)進(jìn)行更新時,不是將該扇區(qū)擦除后重新寫入更新后的數(shù)據(jù),而是將更新后的數(shù)據(jù)寫入其他可用即未保存數(shù)據(jù)的邏輯扇區(qū)。按照該方法,總是將新的數(shù)據(jù)寫入未寫入數(shù)據(jù)的新扇區(qū),直到滿足一定的條件時,比如,當(dāng)前NANDFLASH中不存在可用扇區(qū)或可用扇區(qū)的數(shù)量較少時,才將已保存數(shù)據(jù)即記錄為不可用的扇區(qū)統(tǒng)一進(jìn)行擦除,以保證NANDFLASH中存儲空間的可用性??梢?,通過上述損耗均衡的方法,NANDFLASH中的扇區(qū)能夠得到均衡使用,一般不會出現(xiàn)某個或某幾個扇區(qū)被過度使用的情況。NORFLASH帶有隨機(jī)接入存儲器(RAM)接口,有足夠的地址引腳來尋址,可以很容易地存取NORFLASH內(nèi)部的每一個字節(jié),應(yīng)用程序可以直接在NORFLASH內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中,并且傳輸效率很高,在1~4MB的小容量時具有很高的成本效益。NORFLASH中每個物理扇區(qū)的大小為256個字節(jié),將NORFLASH的整個存儲空間進(jìn)行邏輯扇區(qū)的劃分,劃分后每個邏輯扇區(qū)的大小為256+4個字節(jié),其中,前256個字節(jié)用于存儲數(shù)據(jù),后4個字節(jié)用來存i文ECC碼和扇區(qū)號。同樣的,為了達(dá)到損耗均衡的目的,在向NORFLASH某個邏輯扇區(qū)寫入數(shù)據(jù)后,記錄該邏輯扇區(qū)已寫數(shù)據(jù)不可用,當(dāng)需要對該邏輯扇區(qū)中的數(shù)據(jù)進(jìn)行更新時,不是將該邏輯扇區(qū)擦除后重新寫入更新后的數(shù)據(jù),而是將更新后的數(shù)據(jù)寫入其他可用即未保存數(shù)據(jù)的邏輯扇區(qū)。按照該方法,總是將新的數(shù)據(jù)寫入未寫入數(shù)據(jù)的新扇區(qū),直到滿足一定的條件時,才將已保存數(shù)據(jù)即記錄為不可用的扇區(qū)統(tǒng)一進(jìn)行擦除??梢?,通過上述損耗均衡的方法,NORFLASH中的扇區(qū)能夠得到均衡使用。向扇區(qū)中寫入數(shù)據(jù)是指將該扇區(qū)中的某些數(shù)椐位設(shè)置成邏輯0;對扇區(qū)進(jìn)行擦除是指將該扇區(qū)中的每一數(shù)據(jù)位都設(shè)置成邏輯1。一般在向扇區(qū)寫入數(shù)據(jù)前需要將該扇區(qū)進(jìn)行擦除。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中存在如下技術(shù)問題現(xiàn)有的損耗均衡的實(shí)現(xiàn)方案中,為了使得存儲單元不被過度使用,在一定的時間內(nèi)存儲設(shè)備中總有一些存儲單元不可用,4吏得對存儲空間的利用受到了限制,并且實(shí)現(xiàn)復(fù)雜度也較高。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種存儲設(shè)備中損耗均衡的方法及存儲設(shè)備,用于以較低的復(fù)雜度解決現(xiàn)有技術(shù)中存儲設(shè)備中的存儲單元被過度使用的問題。本發(fā)明實(shí)施例提供一種存儲設(shè)備中損耗均衡的方法,所述存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,該方法包括讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的笫二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所迷預(yù)先設(shè)定的閾值。本發(fā)明實(shí)施例提供一種存儲設(shè)備,該存儲設(shè)備包括第一存儲單元,用于存儲邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系;讀取單元,用于讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;更新單元,用于在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫才喿作的次數(shù)小于所述預(yù)先設(shè)定的閾值。本發(fā)明中,在存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,通過在第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,第二物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)小于預(yù)先設(shè)定的閾值,通過動態(tài)調(diào)整存儲設(shè)備中邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,達(dá)到了避免第一物理存儲單元被過度使用的問題。圖1為本發(fā)明實(shí)施例提供的方法流程示意圖2為本發(fā)明實(shí)施例中存儲單元擦寫次數(shù)的統(tǒng)計流程示意圖3為本發(fā)明實(shí)施例提供的存儲設(shè)備結(jié)構(gòu)示意圖。具體實(shí)施例方式為了避免存儲設(shè)備中的某個存儲單元被過度使用,從而達(dá)到損耗均衡的目的,本發(fā)明實(shí)施例提供一種存儲設(shè)備中損耗均衡的方法,本方法中,在存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,例如,第一邏輯存儲單元號對應(yīng)第一物理存儲單元號,在第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,第二物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)小于預(yù)先設(shè)定的閾值。參見圖1,本發(fā)明實(shí)施例提供的存儲設(shè)備中損耗均衡的方法,具體包括以下步驟步驟10:讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果;這里,第一物理存儲單元為存儲設(shè)備保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中,第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;步驟11:確定讀取到的統(tǒng)計結(jié)果是否超過預(yù)先設(shè)定的閾值;步驟12:在統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號;這里,對第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于預(yù)先設(shè)定的閾值。9在將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,第二物理存儲單元號對應(yīng)第二邏輯存儲單元號,在將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號的同時或之后,為了避免第二邏輯存儲單元號不可用,還可以將第二邏輯存儲單元號與第一物理存儲單元號相對應(yīng),即將第一物理存儲單元號與第二物理存儲單元號互換。較佳的,步驟12中,為了確保寫入存儲設(shè)備的數(shù)據(jù)不會因?yàn)檫壿嫶鎯卧柵c物理存儲單元號的對應(yīng)關(guān)系的調(diào)整而丟失,在確定統(tǒng)計結(jié)果超過預(yù)定的閾值之后、并且將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,將第一物理存儲單元中存儲的數(shù)據(jù)寫入第二物理存儲單元。步驟12中,第二物理存儲單元可以按照如下方式確定在確定統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值之后、并且將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,在存儲設(shè)備保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中查找滿足設(shè)定條件的第二邏輯存儲單元號,將第二邏輯存儲單元號對應(yīng)的物理存儲單元號確定為第二物理存儲單元號,對第二邏輯存儲單元號所標(biāo)識的第二邏輯存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于預(yù)先設(shè)定的閾值。這里的設(shè)定條件可以為第一條件或第二條件,具體如下第一條件為第二邏輯存儲單元號所標(biāo)識的邏輯存儲單元是未被使用過的邏輯存儲單元;第二條件為第二邏輯存儲單元號所標(biāo)識的邏輯存儲單元被擦寫的次數(shù)不超過設(shè)定門限值,該門限值小于所述預(yù)先設(shè)定的閾值。當(dāng)然,設(shè)定條件并不局限于以上兩種,可以根據(jù)需要進(jìn)行設(shè)定。上述從邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中查找滿足第一條件的第二邏輯存儲單元號的具體實(shí)現(xiàn)方式可以為對于存儲設(shè)t床存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中的各邏輯存儲單元號,根據(jù)預(yù)先設(shè)置存儲單元是否被使用過的使用標(biāo)識的對應(yīng)關(guān)系,確定該邏輯存儲單元號對應(yīng)的使用標(biāo)識,若該使用標(biāo)識為未被使用過,則記錄該邏輯存儲單元號;然后,從記錄的邏輯存儲單元號中選取一個邏輯存儲單元號作為第二邏輯存儲單元號。同樣的,從邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中查找滿足第二條件的第二邏輯存儲單元號的具體實(shí)現(xiàn)方式可以為對于存儲設(shè)備保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系中的各邏輯存儲單元號,根椐預(yù)先建立的邏輯存儲單元號與擦寫次數(shù)的對應(yīng)關(guān)系,確定該邏輯存儲單元號對應(yīng)的擦寫次數(shù),若該擦寫次數(shù)未超過設(shè)定門限值,則記錄該邏輯存儲單元號;然后,從記錄的邏輯存儲單元號中選取一個邏輯存儲單元號作為第二邏輯存儲單元號。上述第一條件和第二條件還可以結(jié)合起來使用,例如,首先查找滿足第一條件的第二邏輯存儲單元號,若查找到,則結(jié)束;否則,繼續(xù)查找滿足第二條件的第二邏輯存儲單元號,以此類推,這里不再窮舉。本發(fā)明中,需要對存儲設(shè)備中物理存儲單元的數(shù)據(jù)擦寫次數(shù)進(jìn)行統(tǒng)計,具體統(tǒng)i十方法可以4口下在內(nèi)存中統(tǒng)計對存儲設(shè)備中的全部或部分物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù);在滿足預(yù)先設(shè)定的數(shù)據(jù)擦寫操作次數(shù)寫入條件時,從在內(nèi)存中的統(tǒng)計結(jié)果和保存在存儲設(shè)備中統(tǒng)計結(jié)果記錄區(qū)的物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)中,選取數(shù)值最大的N個物理存儲單元的數(shù)據(jù)擦寫操作次數(shù),其中,N為大于0的整數(shù);利用選取到的物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)更新存^i殳備的統(tǒng)計結(jié)果記錄區(qū),即,將選取到的物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)覆蓋統(tǒng)計結(jié)果記錄區(qū)中已有的記錄。那么,步驟10中,是從存儲設(shè)備的統(tǒng)計結(jié)果記錄區(qū)中讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果。上述統(tǒng)計方法的具體實(shí)現(xiàn)可以采用如下算法在內(nèi)存中開辟一個整數(shù)型數(shù)組,作為統(tǒng)計結(jié)果的存儲區(qū)域,該數(shù)組中每個元素記錄了一個邏輯存儲單元號和該邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)。該數(shù)組共有63個元素,也就是最多可記錄63個邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)。該數(shù)組劃分為兩個區(qū),一個是固定區(qū),另一個是浮動區(qū),浮動區(qū)中元素的記錄可以被替換,固定區(qū)中元素的記錄不能被替換。浮動區(qū)中各元素記錄的數(shù)據(jù)擦寫次數(shù)為一次,固定區(qū)中各元素記錄的數(shù)據(jù)擦寫次數(shù)為兩次以上。當(dāng)然數(shù)組的大小可以根據(jù)實(shí)際需要隨意指定。同時,在存儲設(shè)備中劃分一塊統(tǒng)計結(jié)果記錄區(qū),該統(tǒng)計結(jié)果記錄區(qū)用于保存從內(nèi)存寫入的統(tǒng)計結(jié)果數(shù)據(jù)。如圖2所示,執(zhí)行如下步驟來統(tǒng)計邏輯存儲單元的擦寫次數(shù)步驟20:邏輯存儲單元A被執(zhí)行數(shù)據(jù)擦除操作;步驟21:讀取數(shù)組中的第i個元素,該元素記錄了邏輯存儲單元B和邏輯存儲單元B的數(shù)據(jù)擦寫次數(shù)C;i的初始值為l;步驟22:判斷i是否等于63,即判斷是否遍歷到數(shù)組的最后一個元素,若是,則到步驟29;否則,到步驟23;步驟23:判斷A是否等于B,即判斷A的記錄是否已保存在數(shù)組中,若是,則到步驟24;否則,i加l,到步驟21;步驟24:更新當(dāng)前元素中記錄的數(shù)據(jù)擦寫次數(shù)C-C+1;步驟25:查找存儲設(shè)備的統(tǒng)計結(jié)果記錄區(qū)中是否保存有邏輯存儲單元B的數(shù)據(jù)擦寫次數(shù),若是,則將查找到的邏輯存儲單元B的數(shù)據(jù)擦寫次數(shù)加1;步驟26:將當(dāng)前元素劃分為固定區(qū)的元素;步驟27:固定區(qū)的元素數(shù)加l,浮動區(qū)的元素數(shù)減1;固定區(qū)和浮動區(qū)的元素數(shù)初始值為0;步驟28:判斷數(shù)組的全部元素是否均屬于固定區(qū),若是,則到步驟32,否則,到步驟30;步驟29:將邏輯存儲單元A的數(shù)據(jù)擦寫次數(shù)1插入數(shù)組的當(dāng)前可插入元素位置X,X的初始值為1,每插入一條記錄后X加1,當(dāng)X等于63時,X12會初始化為當(dāng)前可插入位置的最小地址X-Y+1,其中Y為當(dāng)前數(shù)組固定區(qū)的元素個數(shù),X總是位于數(shù)組的浮動區(qū);步驟30:統(tǒng)計數(shù)組中保存的所有邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)之和;步驟31:判斷統(tǒng)計的數(shù)據(jù)擦寫次數(shù)之和是否超過設(shè)定的門限值,若是,則到步驟32,否則,到步驟33;步驟32:更新存^i殳備中的統(tǒng)計結(jié)果記錄區(qū),具體的,首先按照從大到小的順序,將數(shù)組中保存的邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)和保存在存儲設(shè)備中統(tǒng)計結(jié)果記錄區(qū)的邏輯存儲單元的數(shù)據(jù)擦寫操作次數(shù)進(jìn)行排序,從排序結(jié)果中選取前N個邏輯存儲單元的數(shù)據(jù)擦寫操作次數(shù),并將選取的N個邏輯存儲單元的數(shù)據(jù)擦寫操作次數(shù)寫入存儲設(shè)備的統(tǒng)計結(jié)果記錄區(qū),統(tǒng)計結(jié)果記錄區(qū)原有的記錄被覆蓋;步驟33:本流程結(jié)束??梢?,上述數(shù)據(jù)擦寫操作次數(shù)寫入條件的具體內(nèi)容可以是如下兩種第一種,為步驟28中提及的數(shù)組的全部元素均屬于固定區(qū),即數(shù)組中保存的邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)均在兩次以上;第二種,為步驟31中提及的統(tǒng)計的數(shù)據(jù)擦寫次數(shù)之和超過設(shè)定的門限值。在步驟24后,還可以執(zhí)行步驟12中的更新操作,即判斷步驟24中更新后的邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)是否超過預(yù)先設(shè)定的閾值,若是,則將對應(yīng)關(guān)系(存儲設(shè)備保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系)中該較小的其他物理存儲單元號,并將該邏輯存儲單元的記錄在數(shù)組中刪除,同時將固定區(qū)的元素數(shù)減l,浮動區(qū)的元素數(shù)加l。采用上述方法,由于在進(jìn)行數(shù)據(jù)擦寫操作時,實(shí)際是對邏輯存儲單元對應(yīng)的物理存儲單元進(jìn)行棒寫操作,因此,對存儲設(shè)備中邏輯存儲單元的數(shù)據(jù)擦寫操作的次數(shù)進(jìn)行統(tǒng)計,也就是對該邏輯存儲單元對應(yīng)的物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)進(jìn)行統(tǒng)計。對存儲設(shè)備中邏輯存儲單元的數(shù)據(jù)擦寫操作的次數(shù)進(jìn)13行統(tǒng)計時,在存儲設(shè)備中僅保存對少數(shù)幾個(N個)邏輯存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,這幾個邏輯存儲單元的擦寫次數(shù)最多,能夠合理的節(jié)省存儲設(shè)備的存儲資源,因?yàn)橥ǔ6啻畏磸?fù)進(jìn)行擦寫操作的存儲單元只集中在幾個邏輯存儲單元上,也就只需要對這幾個邏輯存儲單元執(zhí)行步驟12中的更新操作,因此在存儲設(shè)備中僅記錄少數(shù)幾個邏輯存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果是合理的。同時,在內(nèi)存中統(tǒng)計邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)后,在滿足預(yù)先設(shè)定的數(shù)據(jù)擦寫操作次數(shù)寫入條件時,才執(zhí)行后續(xù)更新存儲設(shè)備中統(tǒng)計結(jié)果的操作,而不是實(shí)時進(jìn)行更新,如果在兩次更新操作之間出現(xiàn)斷電情況,那么^義會丟失第一次更新后的統(tǒng)計結(jié)果,影響不大。較佳的,步驟12中,為了確保數(shù)據(jù)不被寫入壞塊,需要定時判斷存儲設(shè)備中的物理存儲單元是否為壞塊,若是,則更新保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,例如,判斷物理存儲單元號X所標(biāo)識的物理存儲單元X為壞塊后,將該對應(yīng)關(guān)系中的物理存儲單元號X更新為物理存儲單元號Y,物理存儲單元號Y所標(biāo)識的物理存儲單元Y不是壞塊,并且對物理存儲單元Y的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。判定是否為壞塊的一個時機(jī)可以是,在步驟12中將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之后,將第一邏輯存儲單元號對應(yīng)的第二物理存儲單元號更新為第三物理存儲單元號,對第三物理存儲單元號所標(biāo)識的第三物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值,并且,第三物理存儲單元并非壞塊。在將物理存儲單元號X更新為物理存儲單元號Y之前,為了防止數(shù)據(jù)丟失,還可以將物理存儲單元X中存儲的數(shù)據(jù)寫入到物理存儲單元Y中。判斷某個物理存儲單元是否為壞塊的方法可以有以下兩種第一種,向物理存儲單元寫入數(shù)據(jù),然后從該物理存儲單元讀出數(shù)據(jù),若讀出的數(shù)據(jù)一致,則說明該物理存儲單元并非壞塊,若不一致,則可判定該物理存儲單元為壞塊。第二種,擦除物理存儲單元中的數(shù)據(jù),然后從該物理存儲單元讀出數(shù)據(jù),若讀出的數(shù)據(jù)的比特位全部為1,則說明該物理存儲單元并非壞塊,否則,可判定該物理存儲單元為壞塊。在將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之后,對存儲設(shè)備中的存儲單元進(jìn)行數(shù)據(jù)檫寫操作的過程如下接收到攜帶第一邏輯存儲單元號的數(shù)據(jù)擦寫指令后,根據(jù)保存的邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,確定第一邏輯存儲單元號對應(yīng)第二物理存儲單元號,并對第二物理存儲單元進(jìn)行數(shù)據(jù)擦寫操作。本發(fā)明中的存儲設(shè)備可以是NORFLASH、NANDFLASH等非易失性閃存設(shè)備,還可以是磁盤等存儲設(shè)備。下面以NORFLASH為例進(jìn)行說明NORFLASH中按照頁的大小劃分為若干個基本存儲單元,每頁256個字節(jié),將該基本存儲單元稱為物理扇區(qū),即物理扇區(qū)是NORFLASH的物理存儲單元;將NORFLASH的磁盤扇區(qū)稱為邏輯扇區(qū),即邏輯扇區(qū)是NORFLASH的邏輯存儲單元。NORFLASH分為上層文件管理層、損耗均衡處理(FTL)層和驅(qū)動層。FTL層獨(dú)立于驅(qū)動層之上,為上層文件管理層提供以邏輯地址為訪問單位的對Flash進(jìn)行數(shù)據(jù)讀、寫、擦除等相關(guān)指令函數(shù)。FTL層主要實(shí)現(xiàn)的功能有邏輯地址到物理地址的轉(zhuǎn)換、損耗均衡的頁交換處理、以及壞塊管理等。邏輯地址到物理地址的轉(zhuǎn)換也就是邏輯扇區(qū)到物理扇區(qū)的轉(zhuǎn)換。NORFLASH的物理層上的存儲結(jié)構(gòu)可以分為信息區(qū)、頁訪問表(PageAccessTable,PAT)區(qū)和數(shù)據(jù)區(qū),如下表所示<table>tableseeoriginaldocumentpage15</column></row><table>其中,數(shù)據(jù)區(qū)用來存儲用戶寫入的文件數(shù)據(jù);PAT區(qū)用來保存邏輯扇區(qū)與物理扇區(qū)的對應(yīng)關(guān)系,如下表所示<table>tableseeoriginaldocumentpage16</column></row><table>信息區(qū)用來記錄PAT區(qū)和數(shù)據(jù)區(qū)的起始地址和大小。由于PAT區(qū)的地址是固定的,在NORFLASH中存儲PAT時,可以利用相對PAT起始地址的偏移量來表征邏輯扇區(qū)號,這樣可以節(jié)省一半的空間,訪問操作也會節(jié)省一半。對NORFLASH進(jìn)行損耗均衡處理的一個實(shí)例如下步驟S01:FTL層接收到上層文件管理層發(fā)來的攜帶邏輯地址a的數(shù)據(jù)寫指令,確定邏輯地址a對應(yīng)的邏輯扇區(qū)號為0001,邏輯扇區(qū)號等于邏輯地址除以物理扇區(qū)大小256的商;步驟S02:FTL層通過查找PAT區(qū)中邏輯扇區(qū)號與物理扇區(qū)號的對應(yīng)關(guān)系,確定邏輯扇區(qū)號0001對應(yīng)的物理扇區(qū)號為0001;步驟S03:FTL層將攜帶物理扇區(qū)號0001的數(shù)據(jù)寫指令發(fā)送給驅(qū)動層;步驟S04:驅(qū)動層確定物理扇區(qū)號0001對應(yīng)的物理地址,物理地址等于物理扇區(qū)號乘以物理扇區(qū)大小256的結(jié)果,加上邏輯地址除以物理扇區(qū)大小256的余數(shù);步驟S05:驅(qū)動層向確定的物理地址對應(yīng)的物理扇區(qū)寫入數(shù)據(jù);步驟S06:在為定時讀取擦寫次數(shù)而設(shè)置的定時器超時時,讀取物理扇區(qū)號0001所標(biāo)識的物理扇區(qū)的數(shù)據(jù)擦寫次數(shù)為4.53萬次,超過了設(shè)定的閾值4.5萬次,查找PAT表中未^^吏用過的物理扇區(qū),查找結(jié)杲為邏輯扇區(qū)號0008對應(yīng)的物理扇區(qū)號0008,將物理扇區(qū)號0001與物理扇區(qū)號0008互換,此時,邏輯扇區(qū)號0001對應(yīng)物理扇區(qū)號0008,邏輯扇區(qū)號0008對應(yīng)物理扇區(qū)號0001;如下表所示邏輯扇區(qū)號物理扇區(qū)號0001000800020002000300030004000400050005000600060007000700080001步驟S07:FTL層接收到上層文件管理層發(fā)來的攜帶邏輯地址a的數(shù)據(jù)寫指令,確定邏輯地址a對應(yīng)的邏輯扇區(qū)號為0001;步驟S08:FTL層通過查找PAT區(qū)中邏輯扇區(qū)號與物理扇區(qū)號的對應(yīng)關(guān)系,確定邏輯扇區(qū)號0001對應(yīng)的物理扇區(qū)號為0008;步驟S03:FTL層將攜帶物理扇區(qū)號0008的數(shù)據(jù)寫指令發(fā)送給驅(qū)動層;步驟S04'.驅(qū)動層確定物理扇區(qū)號0008對應(yīng)的物理地址,并向確定的物理地址對應(yīng)的物理扇區(qū)寫入數(shù)據(jù)。在步驟S06中,除了定時讀取物理扇區(qū)的數(shù)據(jù)擦寫次數(shù)外,還可以在對該物理扇區(qū)進(jìn)行數(shù)據(jù)擦除時讀取該物理扇區(qū)的數(shù)據(jù)擦寫次數(shù),并判斷讀取到的數(shù)據(jù)擦寫次數(shù)是否超過預(yù)先設(shè)定的閾值。參見圖3,本發(fā)明實(shí)施例還提供一種存儲設(shè)備,該存儲設(shè)備包括第一存儲單元30,用于存儲邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系;讀取單元31,用于讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;17更新單元32,用于在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。該存儲設(shè)備還包括數(shù)據(jù)交換單元33,用于在所述更新單元將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,將第一物理存儲單元中存儲的數(shù)據(jù)寫入笫二物理存儲單元。該存儲設(shè)備還包括查找單元34,用于在所述更新單元將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,從所述對應(yīng)關(guān)系中查找第二邏輯存儲單元號,將第二邏輯存儲單元號對應(yīng)的物理存儲單元號作為第二物理存儲單元號發(fā)送給所述更新單元;對所述第二邏輯存儲單元號所標(biāo)識的邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)小于所迷預(yù)先設(shè)定的閾值。所述查找單元34包括記錄單元,用于對于所述對應(yīng)關(guān)系中的各邏輯存儲單元號,根據(jù)預(yù)先設(shè)置r該遲輯存儲單元號所標(biāo)i1存儲單元是否被使用過的使用標(biāo)識的對應(yīng)關(guān)系,確定該邏輯存儲單元號對應(yīng)的使用標(biāo)識,若該使用標(biāo)識為未被使用過,則記錄該邏輯存儲單元號;選取單元,用于從所述記錄單元中選取一個邏輯存儲單元號作為第二邏輯存儲單元號發(fā)送給所述更新單元。該存儲設(shè)備還包括第二存儲單元35,用于存儲所述存儲設(shè)備中部分或全部物理存儲單元的數(shù)據(jù)擦寫的次數(shù)信息;所述讀取單元31用于從所述第二存儲單元中讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)杲。該存儲設(shè)備還包括壞塊管理單元36,用于判斷第二邏輯存儲單元是否為壞塊,若是,則將第一邏輯存儲單元號對應(yīng)的第二物理存儲單元號更新為第三物理存儲單元號,對所述第三物理存儲單元號所標(biāo)識的第三物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。該存儲設(shè)備還包括文件系統(tǒng)單元37,用于接收到攜帶第一邏輯存儲單元號的數(shù)據(jù)擦寫指令后,根椐所述對應(yīng)關(guān)系,確定第一邏輯存儲單元號對應(yīng)第二物理存儲單元號,并對第二物理存儲單元進(jìn)行數(shù)據(jù)擦寫操作。綜上,本發(fā)明的有益效果包括本發(fā)明實(shí)施例提供的方案中,在存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,通過在第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,第二物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)小于第一物理存儲單元,能夠動態(tài)調(diào)整存儲設(shè)備中邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,以避免了存儲設(shè)備中的某個存儲單元被過度使用,從而達(dá)到了損耗均衡的目的。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。權(quán)利要求1、一種存儲設(shè)備中損耗均衡的方法,其特征在于,所述存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,該方法包括讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。2、如權(quán)利要求1所述的方法,其特征在于,在確定所述統(tǒng)計結(jié)果超過預(yù)定的閾值之后、并且將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,該方法進(jìn)一步包括將第一物理存儲單元中存儲的數(shù)據(jù)寫入第二物理存儲單元。3、如權(quán)利要求1所述的方法,其特征在于,在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值之后、并且將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,該方法進(jìn)一步包括從所述對應(yīng)關(guān)系中查找第二邏輯存儲單元號,將第二邏輯存儲單元號對應(yīng)的物理存儲單元號確定為第二物理存儲單元號;對所述第二邏輯存儲單元號所標(biāo)識的邏輯存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。4、如權(quán)利要求3所述的方法,其特征在于,所述從所述對應(yīng)關(guān)系中查找第二邏輯存儲單元號包括對于所述對應(yīng)關(guān)系中的各邏輯存儲單元號,根據(jù)預(yù)先設(shè)置在所述存儲設(shè)備中的邏輯存儲單元號與用于表示該邏輯存儲單元號所標(biāo)識的邏輯存儲單元是否被使用過的使用標(biāo)識的對應(yīng)關(guān)系,確定該邏輯存儲單元號對應(yīng)的使用標(biāo)識,若該使用標(biāo)識為未被使用過,則記錄該邏輯存儲單元號;從記錄的邏輯存儲單元號中選取一個作為第二邏輯存儲單元號。5、如權(quán)利要求1所述的方法,其特征在于,在讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果之前,該方法進(jìn)一步包括操作的次數(shù);在滿足預(yù)先設(shè)定的數(shù)據(jù)擦寫操作次數(shù)寫入條件時,從在內(nèi)存中的統(tǒng)計結(jié)果和保存在所述存儲設(shè)備中統(tǒng)計結(jié)果記錄區(qū)的物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)中,選取數(shù)值最大的N個物理存儲單元的數(shù)據(jù)擦寫操作次數(shù);所述N為大于0的整數(shù);利用選取到的物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)更新所述統(tǒng)計結(jié)果記錄區(qū);所述讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果包括從所述統(tǒng)計結(jié)果記錄區(qū)中讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果。6、如權(quán)利要求1所述的方法,其特征在于,在將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之后,該方法進(jìn)一步包括判斷第二物理存儲單元是否為壞塊,若是,則將第一邏輯存儲單元號對應(yīng)的第二物理存儲單元號更新為第三物理存儲單元號,對第三物理存儲單元號所標(biāo)識的第三物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。7、如權(quán)利要求1-5中任一所述的方法,其特征在于,在將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之后,該方法進(jìn)一步包括接收到攜帶第一邏輯存儲單元號的數(shù)據(jù)擦寫指令后,根據(jù)所述對應(yīng)關(guān)系,確定第一邏輯存儲單元號對應(yīng)第二物理存儲單元號,并對第二物理存儲單元進(jìn)行數(shù)據(jù)擦寫操作。8、一種存儲設(shè)備,其特征在于,該存儲設(shè)備包括第一存儲單元,用于存儲邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系;讀取單元,用于讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;更新單元,用于在確定所述統(tǒng)計結(jié)果超過預(yù)先"^殳定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。9、如權(quán)利要求8所述的存儲設(shè)備,其特征在于,該存儲設(shè)備還包括數(shù)據(jù)交換單元,用于在所述更新單元將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,將第一物理存儲單元中存儲的數(shù)據(jù)寫入第二物理存儲單元。10、如權(quán)利要求8所述的存儲設(shè)備,其特征在于,該存儲設(shè)備還包括查找單元,用于在所述更新單元將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號之前,從所述對應(yīng)關(guān)系中查找第二邏輯存儲單元號,將第二邏輯存儲單元號對應(yīng)的物理存儲單元號作為第二物理存儲單元號發(fā)送給所述更新單元;對所述第二邏輯存儲單元號所標(biāo)識的邏輯存儲單元的數(shù)據(jù)擦寫次數(shù)小于所述閾值。11、如權(quán)利要求IO所述的存儲設(shè)備,其特征在于,所述查找單元包括記錄單元,用于對于所述對應(yīng)關(guān)系中的各邏輯存儲單元號,根據(jù)預(yù)先設(shè)置在所述存儲設(shè)備中的邏輯存儲單元號與用于表示該邏輯存儲單元號所標(biāo)識的邏輯存儲單元是否被使用過的使用標(biāo)識的對應(yīng)關(guān)系,確定該邏輯存儲單元號對應(yīng)的使用標(biāo)識,若該使用標(biāo)識為未被使用過,則記錄該邏輯存儲單元號;選取單元,用于從所述記錄單元中選取一個邏輯存儲單元號作為第二邏輯存儲單元號發(fā)送給所述更新單元。12、如權(quán)利要求8所述的存儲設(shè)備,其特征在于,該存儲設(shè)備還包括第二存儲單元,用于存儲所述存儲設(shè)備中部分或全部物理存儲單元的數(shù)據(jù)擦寫的次數(shù)信息;所述讀取單元用于從所述第二存儲單元中讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果。13、如權(quán)利要求8所述的存儲設(shè)備,其特征在于,該存儲設(shè)備還包括壞塊管理單元,用于判斷第二物理存儲單元是否為壞塊,若是,則將第一邏輯存儲單元號對應(yīng)的第二物理存儲單元號更新為第三物理存儲單元號,對第三物理存儲單元號所標(biāo)識的第三物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述預(yù)先設(shè)定的閾值。14、如權(quán)利要求8-12中任一所述的存儲設(shè)備,其特征在于,該存儲設(shè)備還包括文件系統(tǒng)單元,用于接收到攜帶第一邏輯存儲單元號的數(shù)據(jù)擦寫指令后,根據(jù)所述對應(yīng)關(guān)系,確定第一邏輯存儲單元號對應(yīng)第二物理存儲單元號,并對第二物理存儲單元進(jìn)行數(shù)據(jù)擦寫操作。全文摘要本發(fā)明實(shí)施例公開了一種存儲設(shè)備中損耗均衡的方法,所述存儲設(shè)備中存儲有邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,該方法為讀取對第一物理存儲單元的數(shù)據(jù)擦寫操作次數(shù)的統(tǒng)計結(jié)果,第一物理存儲單元為所述對應(yīng)關(guān)系中第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號所標(biāo)識的物理存儲單元;在確定所述統(tǒng)計結(jié)果超過預(yù)先設(shè)定的閾值時,將第一邏輯存儲單元號對應(yīng)的第一物理存儲單元號更新為第二物理存儲單元號,對所述第二物理存儲單元號所標(biāo)識的第二物理存儲單元的數(shù)據(jù)擦寫操作的次數(shù)小于所述閾值。采用本發(fā)明,能夠動態(tài)調(diào)整邏輯存儲單元號與物理存儲單元號的對應(yīng)關(guān)系,達(dá)到存儲設(shè)備內(nèi)損耗均衡的目的。文檔編號G11C16/06GK101533670SQ20091008264公開日2009年9月16日申請日期2009年4月23日優(yōu)先權(quán)日2009年4月23日發(fā)明者楠張,楊貴龍申請人:北京握奇數(shù)據(jù)系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
保山市| 武城县| 乐至县| 高平市| 中江县| 孟村| 元江| 英山县| 五大连池市| 桂东县| 德兴市| 乐平市| 五寨县| 美姑县| 肇州县| 韶山市| 西贡区| 文安县| 洞口县| 莱芜市| 邵阳市| 修水县| 三江| 南靖县| 新邵县| 定州市| 浦江县| 连江县| 左云县| 广元市| 宁夏| 巴楚县| 济源市| 灯塔市| 延边| 富蕴县| 陕西省| 绵阳市| 宁安市| 日喀则市| 都安|