專利名稱:一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法及存儲(chǔ)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法及存儲(chǔ) 設(shè)備。
背景技術(shù):
NOR Flash技術(shù)是目前常用的一種閃存技術(shù),采用該技術(shù)可以按字節(jié)快速讀寫,但 是,每個(gè)字節(jié)在寫入數(shù)據(jù)之后,不能直接再次寫入,而必須先將之前寫入的數(shù)據(jù)擦除。采用 NOR Flash技術(shù)進(jìn)行擦除時(shí),只能以頁(yè)為單位進(jìn)行擦除操作,一般頁(yè)的大小為256字節(jié)。從 上層來(lái)看,擦除所完成的功能就是把擦除的這一頁(yè)內(nèi)的每一位都重新設(shè)置成邏輯1。NOR Flash的使用壽命是非常有限的,由NOR Flash中頁(yè)的最大可擦除次數(shù)決定, 隨著擦除次數(shù)的增加,該頁(yè)最終會(huì)變成只讀狀態(tài),成為壞頁(yè)。通常NOR Flash中每頁(yè)的最 大可擦除次數(shù)為10萬(wàn)次。當(dāng)在智能卡領(lǐng)域中使用NORFlash技術(shù)時(shí),由于智能卡對(duì)于文件 系統(tǒng)的存儲(chǔ)介質(zhì)不僅要求讀寫速度快、數(shù)據(jù)準(zhǔn)確、有掉電保護(hù)功能,而且對(duì)于存儲(chǔ)介質(zhì)的使 用壽命要求也比較高,例如,智能卡中的某些數(shù)據(jù)需要修改200萬(wàn)次左右,遠(yuǎn)遠(yuǎn)超過了 NOR Flash的最大可擦除次數(shù)。因此,迫切需要提高NOR Flash的使用壽命,為此,需要平衡使用 NOR Flash中所有的頁(yè),而不讓某一頁(yè)過度使用。這種技術(shù)就是損耗均衡技術(shù)。目前,在NOR Flash中應(yīng)用損耗均衡技術(shù)時(shí)主要有兩種實(shí)現(xiàn)方式。第一種實(shí)現(xiàn)方 式的核心思想在于將NOR Flash中的整個(gè)存儲(chǔ)空間劃分為若干個(gè)大小相等的存儲(chǔ)單元, 每個(gè)存儲(chǔ)單元的大小為256+4個(gè)字節(jié),其中后四個(gè)字節(jié)用來(lái)存放校驗(yàn)碼和存儲(chǔ)單元號(hào),然 后再利用存儲(chǔ)單元映射等算法實(shí)現(xiàn)損耗均衡。但是,由于NOR Flash技術(shù)中是將256個(gè)字 節(jié)作為一頁(yè),而采用上述存儲(chǔ)單元?jiǎng)澐址椒▌?shì)必會(huì)出現(xiàn)跨頁(yè)的情況,當(dāng)需要擦除時(shí),還需要 判斷跨頁(yè)情況,造成NOR Flash擦除相對(duì)緩慢。第二種實(shí)現(xiàn)方式的核心思想在于從整個(gè)存 儲(chǔ)空間中劃分出部分存儲(chǔ)單元作為管理存儲(chǔ)單元,用于記錄物理存儲(chǔ)單元與邏輯存儲(chǔ)單元 的對(duì)應(yīng)關(guān)系,對(duì)于上層文件系統(tǒng)只提供邏輯存儲(chǔ)單元的讀寫函數(shù)。對(duì)于擦寫次數(shù)較多的存 儲(chǔ)單元,將其數(shù)據(jù)寫入某空閑存儲(chǔ)單元,并修改物理存儲(chǔ)單元與邏輯存儲(chǔ)單元的對(duì)應(yīng)關(guān)系, 以實(shí)現(xiàn)各個(gè)存儲(chǔ)單元的均衡使用。其中,物理存儲(chǔ)單元和邏輯存儲(chǔ)單元的關(guān)系如下每個(gè) 存儲(chǔ)單元都有其對(duì)應(yīng)的物理地址和邏輯地址,且每個(gè)存儲(chǔ)單元對(duì)應(yīng)的物理地址是固定不變 的,用于唯一的標(biāo)識(shí)一個(gè)存儲(chǔ)單元,而存儲(chǔ)單元對(duì)應(yīng)的邏輯地址則是可以改變的,物理地址 所對(duì)應(yīng)的存儲(chǔ)單元稱為物理存儲(chǔ)單元,邏輯地址所對(duì)應(yīng)的存儲(chǔ)單元稱為邏輯存儲(chǔ)單元。具 體實(shí)現(xiàn)時(shí),在NOR Flash上開辟一段空間作為統(tǒng)計(jì)區(qū),用于記錄最近一段時(shí)間操作的存儲(chǔ) 單元對(duì)應(yīng)的擦除次數(shù),由于統(tǒng)計(jì)區(qū)的空間有限,只能記錄一小部分存儲(chǔ)單元的擦寫次數(shù),因 此,在內(nèi)存中還要開辟同樣大小的一段空間作為統(tǒng)計(jì)數(shù)據(jù)的臨時(shí)記錄,用于輔助記錄擦寫 次數(shù)。但是,采用這種方式,并不能準(zhǔn)確判斷哪個(gè)存儲(chǔ)單元的擦除次數(shù)頻繁,而且,在統(tǒng)計(jì)擦 寫次數(shù)時(shí),統(tǒng)計(jì)區(qū)由于擦寫頻繁很容易被寫壞。以上以NOR Flash為例說(shuō)明,但并不對(duì)存儲(chǔ) 設(shè)備構(gòu)成限制,除了 NOR Flash之外,其他的很多存儲(chǔ)設(shè)備也會(huì)遇到類似的問題。由此可見,現(xiàn)有技術(shù)主要存在以下缺點(diǎn)某些存儲(chǔ)單元因擦寫次數(shù)過多很容易被寫壞,導(dǎo)致NOR Flash等存儲(chǔ)設(shè)備的使用壽命非常有限。
發(fā)明內(nèi)容
本發(fā)明提供了一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法及存儲(chǔ)設(shè)備,用以解決現(xiàn)有技 術(shù)中某些存儲(chǔ)單元因擦寫次數(shù)過多容易被寫壞,導(dǎo)致存儲(chǔ)設(shè)備的使用壽命非常有限的問 題?!N存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法,包括確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地 址后,或者,每次將記錄的第一擦寫次數(shù)清零后,開始記錄所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地 址所標(biāo)識(shí)的存儲(chǔ)單元的第一擦寫次數(shù),其中,所述存儲(chǔ)設(shè)備中存儲(chǔ)有存儲(chǔ)單元的物理地址 與邏輯地址的當(dāng)前對(duì)應(yīng)關(guān)系;當(dāng)記錄的第一擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇一個(gè) 存儲(chǔ)單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇 的存儲(chǔ)單元的物理地址,并將記錄的第一擦寫次數(shù)清零。一種實(shí)現(xiàn)損耗均衡的存儲(chǔ)設(shè)備,包括記錄模塊,用于確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí) 對(duì)應(yīng)的邏輯地址后,或者,每次將記錄的第一擦寫次數(shù)清零后,開始記錄所述邏輯地址當(dāng)前 對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的第一擦寫次數(shù);更新模塊,用于當(dāng)記錄的第一擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ) 單元中選擇一個(gè)存儲(chǔ)單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的 存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址,并將記錄的第一擦寫次數(shù)清零;存儲(chǔ)模塊,用于存儲(chǔ)各個(gè)存儲(chǔ)單元的物理地址與邏輯地址的當(dāng)前對(duì)應(yīng)關(guān)系。本發(fā)明實(shí)施例中通過記錄出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址以及 該邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的擦寫次數(shù),可以有效防止擦寫次數(shù)過 多的存儲(chǔ)單元被寫壞,實(shí)現(xiàn)損耗均衡,從而顯著提高了存儲(chǔ)設(shè)備的使用壽命。
圖1為本發(fā)明實(shí)施例中的一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法流程圖;圖2為本發(fā)明實(shí)施例中實(shí)現(xiàn)損耗均衡的存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供了一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法及存儲(chǔ)設(shè)備,可以有效 防止擦寫次數(shù)過多的存儲(chǔ)單元被寫壞,從而顯著提高存儲(chǔ)設(shè)備的使用壽命。本發(fā)明實(shí)施例提供了一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法,如圖1所示,包括SlOl 確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏 輯地址后,或者,每次將記錄的第一擦寫次數(shù)清零后,開始記錄所述邏輯地址當(dāng)前對(duì)應(yīng)的物 理地址所標(biāo)識(shí)的存儲(chǔ)單元的第一擦寫次數(shù),其中,所述存儲(chǔ)設(shè)備中存儲(chǔ)有存儲(chǔ)單元的物理 地址與邏輯地址的當(dāng)前對(duì)應(yīng)關(guān)系。這里,存儲(chǔ)單元出現(xiàn)壞塊,具體指該存儲(chǔ)單元損壞,即無(wú)論該壞塊僅僅位于存儲(chǔ)單元的某個(gè)局部,還是覆蓋了整個(gè)存儲(chǔ)單元,都說(shuō)明該存儲(chǔ)單元已經(jīng)損壞,無(wú)法再次使用。其中,所述確定存儲(chǔ)單元出現(xiàn)壞塊,并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì) 應(yīng)的邏輯地址后,還可以進(jìn)一步包括從預(yù)留的空閑存儲(chǔ)單元中選擇一個(gè)存儲(chǔ)單元,將所 述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從預(yù)留的空閑存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理 地址,并將所述出現(xiàn)壞塊的存儲(chǔ)單元中的數(shù)據(jù)寫入從預(yù)留的空閑存儲(chǔ)單元中選擇的存儲(chǔ)單 元。并且,所述預(yù)留的空閑存儲(chǔ)單元的個(gè)數(shù)大于等于出現(xiàn)壞塊的存儲(chǔ)單元的個(gè)數(shù)。S102:當(dāng)記錄的第一擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選 擇一個(gè)存儲(chǔ)單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元 中選擇的存儲(chǔ)單元的物理地址,并將記錄的第一擦寫次數(shù)清零。為了實(shí)現(xiàn)數(shù)據(jù)的可靠備份,所述將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒 有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址的步驟之前,還可以進(jìn)一步包括將 所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元中的數(shù)據(jù)寫入備份存儲(chǔ)單元,并在更 新記錄存儲(chǔ)單元中記錄寫入備份存儲(chǔ)單元的操作;將寫入備份存儲(chǔ)單元中的數(shù)據(jù)寫入從沒 有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元,并在更新記錄存儲(chǔ)單元中記錄寫入選擇的存儲(chǔ) 單元的操作。其中,每當(dāng)需要對(duì)數(shù)據(jù)區(qū)中的某個(gè)存儲(chǔ)單元進(jìn)行數(shù)據(jù)更新時(shí),或者,對(duì)數(shù)據(jù)區(qū) 中出現(xiàn)壞塊的存儲(chǔ)單元進(jìn)行替換時(shí),備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元分別用于保存當(dāng)前 操作所對(duì)應(yīng)的原始數(shù)據(jù)以及更新操作信息,以便在突然斷電后根據(jù)備份存儲(chǔ)單元和更新記 錄存儲(chǔ)單元中保存的內(nèi)容繼續(xù)完成更新或替換操作。當(dāng)下次再需要對(duì)某個(gè)存儲(chǔ)單元進(jìn)行數(shù) 據(jù)更新或替換時(shí),則需要先擦除備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元中的內(nèi)容,然后再通過 備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元保存當(dāng)前操作所對(duì)應(yīng)的原始數(shù)據(jù)以及更新操作信息???之,通常情況下,備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元是配合在一起使用的,共同完成數(shù)據(jù)更 新時(shí)的掉電保護(hù)功能,每當(dāng)出現(xiàn)某個(gè)存儲(chǔ)單元需要進(jìn)行更新或替換時(shí),備份存儲(chǔ)單元和更 新記錄存儲(chǔ)單元都要擦除一次,且二者的擦除次數(shù)相同。當(dāng)然,具體實(shí)現(xiàn)時(shí),也可以為備份 存儲(chǔ)單元或更新記錄存儲(chǔ)單元預(yù)留較大的存儲(chǔ)容量,使得備份存儲(chǔ)單元或更新記錄存儲(chǔ)單 元可以在完成多次存儲(chǔ)單元的更新或替換操作之后再進(jìn)行擦除,但是,這樣還需要額外記 錄備份存儲(chǔ)單元或更新記錄存儲(chǔ)單元的已用空間及可用空間,并且,還需要分別記錄備份 存儲(chǔ)單元以及更新記錄存儲(chǔ)單元的擦除次數(shù),需要額外占用存儲(chǔ)空間且增加了管理的復(fù)雜 度,因此,在本實(shí)施例中,備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元都在每次執(zhí)行存儲(chǔ)單元的更新 或替換操作之前進(jìn)行擦除。由此可以看出,備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元擦除次數(shù)相同且擦寫頻繁,為 了防止備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元因擦寫次數(shù)過多而損壞,本方法還可以包括以下 步驟確定所述備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址后,或者,每當(dāng)記錄的第 二擦寫次數(shù)清零后,開始記錄所述備份存儲(chǔ)單元或更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址當(dāng)前 對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的第二擦寫次數(shù);當(dāng)記錄的第二擦寫次數(shù)達(dá)到設(shè)定閾值 時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇兩個(gè)存儲(chǔ)單元,并將所述備份存儲(chǔ)單元和更新記錄 存儲(chǔ)單元對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理地址分別更新為所述兩個(gè)存儲(chǔ)單元的物理地址, 并將記錄的第二擦寫次數(shù)清零。這里,由于備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元的擦寫次數(shù) 相同,因此,為了節(jié)約存儲(chǔ)空間,簡(jiǎn)化管理操作,可以只對(duì)備份存儲(chǔ)單元和更新記錄存儲(chǔ)單 元中的任意一個(gè)的擦寫次數(shù)進(jìn)行記錄。
在本方法中,在將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存 儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址之后,如果接收到攜帶所述邏輯地址的數(shù)據(jù)擦寫指 令,則根據(jù)該數(shù)據(jù)擦寫指令對(duì)所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元進(jìn)行擦寫。通過采用本發(fā)明實(shí)施例提供的方法,通過記錄出現(xiàn)壞塊的邏輯存儲(chǔ)單元的擦寫次 數(shù),可以有效避免擦寫次數(shù)過多的存儲(chǔ)單元被寫壞,合理實(shí)現(xiàn)損耗均衡,從而提高存儲(chǔ)設(shè)備 的使用壽命。下面以一個(gè)優(yōu)選實(shí)施例詳細(xì)描述一下本發(fā)明提供的實(shí)現(xiàn)損耗均衡的方法。在本實(shí) 施例中,以NOR Flash為例進(jìn)行介紹,當(dāng)然,本發(fā)明提供的方法還可以應(yīng)用于其他存儲(chǔ)設(shè)備 上,如NAND FLASH或EEPROM等。NOR Flash上的存儲(chǔ)單元也稱為扇區(qū),為了操作方便,本實(shí) 施例中的一個(gè)存儲(chǔ)單元的大小為256個(gè)字節(jié),與NOR Flash中的一頁(yè)的大小一致,因此,操 作時(shí)不會(huì)出現(xiàn)跨頁(yè)的現(xiàn)象。當(dāng)然,也可以將存儲(chǔ)單元的大小劃分為256個(gè)字節(jié)的整數(shù)倍,同 樣可以防止跨頁(yè)情況。本發(fā)明實(shí)施例提供的方案,僅記錄擦寫頻繁的部分存儲(chǔ)單元的擦寫次數(shù),對(duì)這些 存儲(chǔ)單元進(jìn)行損耗均衡處理。由于NOR Flash中的每頁(yè),也就是本發(fā)明實(shí)施例中提到的每 個(gè)存儲(chǔ)單元都受到擦除次數(shù)10萬(wàn)次的限制,所以經(jīng)常擦寫的存儲(chǔ)單元應(yīng)該參與均衡操作。 但是,損耗均衡的處理,是建立在明確參與均衡的存儲(chǔ)單元的擦寫次數(shù)之上的,如果每個(gè)存 儲(chǔ)單元的擦寫次數(shù)都要明確記錄,勢(shì)必會(huì)在空間、時(shí)間上占用很大資源,且記錄擦寫次數(shù)的 存儲(chǔ)單元也會(huì)頻繁擦寫。由于本發(fā)明為了防止操作過程中因斷電所導(dǎo)致的操作錯(cuò)誤,在對(duì)某個(gè)存儲(chǔ)單元中 的數(shù)據(jù)進(jìn)行修改之前,需要先將該存儲(chǔ)單元原來(lái)存儲(chǔ)的數(shù)據(jù)寫到備份存儲(chǔ)單元中,然后再 將修改之后的數(shù)據(jù)寫入該存儲(chǔ)單元,并且,在此過程中,還需要在更新記錄存儲(chǔ)單元中記錄 每一步所執(zhí)行的操作,以便于斷電后根據(jù)更新記錄存儲(chǔ)單元中記錄的操作步驟以及備份存 儲(chǔ)單元中存儲(chǔ)的數(shù)據(jù)進(jìn)行數(shù)據(jù)恢復(fù)。因此,備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元在每次修改 數(shù)據(jù)時(shí)都要進(jìn)行擦寫,所以,首先確定這兩個(gè)存儲(chǔ)單元擦寫頻繁,應(yīng)該記錄擦寫次數(shù)。另外, 數(shù)據(jù)區(qū)的存儲(chǔ)單元,即用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元中哪些存儲(chǔ)單元擦寫頻繁是無(wú)法事先得知 的,因此,可以在某個(gè)存儲(chǔ)單元出現(xiàn)壞塊,即損壞之后對(duì)其進(jìn)行記錄。當(dāng)某個(gè)存儲(chǔ)單元出現(xiàn) 壞塊時(shí),則說(shuō)明該存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ) 單元擦寫頻繁,因此,需要對(duì)該邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的擦寫次 數(shù)進(jìn)行記錄。為此,本發(fā)明將所有的存儲(chǔ)單元分為兩部分,一部分用于存儲(chǔ)管理信息,另外一部 分用于存儲(chǔ)數(shù)據(jù)信息。其中,管理信息對(duì)應(yīng)的全部存儲(chǔ)單元可以進(jìn)一步分為以下7部分,即啟動(dòng)存儲(chǔ)單元用于在磁盤格式化后記錄各個(gè)部分的大小及產(chǎn)品的相關(guān)信息,上 電后作為全局變量讀出,只有格式化時(shí)會(huì)擦寫一次。壞塊地址用于當(dāng)數(shù)據(jù)區(qū)有存儲(chǔ)單元出現(xiàn)壞塊時(shí),在此記錄相關(guān)信息。每條信息的 內(nèi)容包括壞塊所在存儲(chǔ)單元的物理地址、壞塊所在存儲(chǔ)單元出現(xiàn)壞塊時(shí)的邏輯地址、保留 區(qū)用于替換的存儲(chǔ)單元的物理地址。該部分的每個(gè)存儲(chǔ)單元可以記錄多條信息,且只有當(dāng) 數(shù)據(jù)區(qū)有存儲(chǔ)單元出現(xiàn)壞塊時(shí),才需要記錄一條,以后不會(huì)重復(fù)擦寫。
壞塊替換記錄由于當(dāng)存儲(chǔ)單元出現(xiàn)壞塊后,需要從保留區(qū)找到空閑的存儲(chǔ)單 元替代出現(xiàn)壞塊的存儲(chǔ)單元,涉及到記錄壞塊所在存儲(chǔ)單元的地址、修改頁(yè)訪問表O^age Access Table,PAT)等操作,為了防止在這一處理過程中掉電,需要在壞塊替換記錄中記錄 已完成的步驟,以便上電后繼續(xù)完成壞塊的替換過程。每出現(xiàn)一個(gè)壞塊,該部分所對(duì)應(yīng)的存 儲(chǔ)單元將會(huì)擦除一次。PAT:即頁(yè)訪問表,在該表中記錄了每個(gè)存儲(chǔ)單元的邏輯地址與物理地址的當(dāng)前對(duì) 應(yīng)關(guān)系,當(dāng)對(duì)應(yīng)關(guān)系改變時(shí),需要修改該表中的記錄。其中,物理地址,也叫硬件地址,用于 唯一的標(biāo)識(shí)各個(gè)存儲(chǔ)單元;邏輯地址,用于提供給上層文件系統(tǒng),上層文件系統(tǒng)在寫入數(shù)據(jù) 時(shí),根據(jù)邏輯地址對(duì)相應(yīng)的存儲(chǔ)單元進(jìn)行操作。數(shù)據(jù)區(qū)部分存儲(chǔ)單元的擦除次數(shù)用N個(gè)存儲(chǔ)單元記錄數(shù)據(jù)區(qū)前N個(gè)出現(xiàn)壞塊的 存儲(chǔ)單元在出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的擦寫次 數(shù)。其中,N的具體數(shù)值由保留區(qū)的存儲(chǔ)單元個(gè)數(shù)決定。更新記錄存儲(chǔ)單元地址用于存儲(chǔ)更新記錄存儲(chǔ)單元的物理地址,地址記錄只需 要4字節(jié),而本存儲(chǔ)單元的大小為256字節(jié),因此,本存儲(chǔ)單元可寫入64次地址,以最后一 條記錄作為當(dāng)前更新記錄存儲(chǔ)單元的物理地址。當(dāng)更新記錄存儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定 閾值后,需要參與均衡,此時(shí)會(huì)改變更新記錄存儲(chǔ)單元的地址,同時(shí)相應(yīng)的在該存儲(chǔ)單元中 記錄當(dāng)前更新記錄存儲(chǔ)單元的物理地址。備份存儲(chǔ)單元地址用于存儲(chǔ)備份存儲(chǔ)單元的物理地址,由于備份存儲(chǔ)單元和更 新記錄存儲(chǔ)單元的擦除次數(shù)相同,因此,當(dāng)更新記錄存儲(chǔ)單元改變地址時(shí),也需要修改備份 存儲(chǔ)單元的地址,此時(shí),需要相應(yīng)修改該存儲(chǔ)單元的記錄。數(shù)據(jù)信息對(duì)應(yīng)的全部存儲(chǔ)單元可以進(jìn)一步分為以下4個(gè)部分,即保留區(qū)在保留區(qū)中預(yù)留了一些空閑存儲(chǔ)單元用于替換損壞的存儲(chǔ)單元。當(dāng)數(shù)據(jù) 區(qū)有存儲(chǔ)單元出現(xiàn)壞塊,需要替換時(shí),從保留區(qū)中找到一個(gè)空閑存儲(chǔ)單元,代替出現(xiàn)壞塊的 存儲(chǔ)單元,同時(shí)修改邏輯地址與物理地址的對(duì)應(yīng)關(guān)系。其中,保留區(qū)中的存儲(chǔ)單元個(gè)數(shù)可以 由系統(tǒng)在格式化時(shí)進(jìn)行設(shè)置。數(shù)據(jù)區(qū)提供給上層文件系統(tǒng)的區(qū)域,即用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,利用PAT將物 理地址轉(zhuǎn)換為邏輯地址,供文件系統(tǒng)使用。更新記錄存儲(chǔ)單元為防止寫NOR Flash過程中掉電,每次進(jìn)行寫操作前,都要將 欲操作的步驟寫入此存儲(chǔ)單元,以便上電恢復(fù)后繼續(xù)完成操作,保證磁盤數(shù)據(jù)正確性。備份存儲(chǔ)單元N0R Flash執(zhí)行寫操作時(shí),需要先對(duì)操作的存儲(chǔ)單元進(jìn)行擦除,再 寫入。為防止這一過程中掉電,在更新某存儲(chǔ)單元中的數(shù)據(jù)時(shí),先將舊數(shù)據(jù),即原始數(shù)據(jù)寫 入備份存儲(chǔ)單元,擦除該存儲(chǔ)單元中的數(shù)據(jù),再將欲寫入的內(nèi)容與備份存儲(chǔ)單元中的內(nèi)容 合并,寫回該存儲(chǔ)單元。上述每一部分都是頁(yè)的整數(shù)倍,不會(huì)出現(xiàn)跨頁(yè)情況,便于操作。當(dāng)數(shù)據(jù)區(qū)有存儲(chǔ)單元出現(xiàn)壞塊后,先以保留區(qū)中的一存儲(chǔ)單元替換該出現(xiàn)壞塊的 存儲(chǔ)單元,然后開始記錄出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理 地址所標(biāo)識(shí)的存儲(chǔ)單元的擦寫次數(shù)。每擦除一次,在其記錄擦除次數(shù)的存儲(chǔ)單元中的相 應(yīng)偏移寫入1字節(jié)數(shù)據(jù),例如第一次擦除,在O偏移寫入0X5A,第二次擦除,在1偏移寫入 0x5A.......當(dāng)記錄的存儲(chǔ)單元擦除次數(shù)達(dá)到設(shè)定閾值,如256時(shí),將在數(shù)據(jù)區(qū)找到一個(gè)不需要記錄擦除次數(shù)的存儲(chǔ)單元,與達(dá)到次數(shù)的存儲(chǔ)單元進(jìn)行替換。每次寫數(shù)據(jù)區(qū)前,查看是 否有需要均衡的區(qū)域,如果有,先進(jìn)行損耗均衡替換,然后才進(jìn)行數(shù)據(jù)區(qū)內(nèi)容的更新。損耗 均衡替換可以按照備份存儲(chǔ)單元、更新記錄存儲(chǔ)單元、數(shù)據(jù)區(qū)的順序進(jìn)行,當(dāng)然也可以采用 其他順序,此處不作限定。由于備份存儲(chǔ)單元、更新記錄存儲(chǔ)單元相對(duì)擦除次數(shù)更多,所以 可以先替換,每次只替換一個(gè)存儲(chǔ)單元,可以提高處理速度。下面詳細(xì)介紹一下備份存儲(chǔ)單元、更新記錄存儲(chǔ)單元以及數(shù)據(jù)區(qū)的替換過程當(dāng)備份存儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定閾值后,從不需要記錄擦除次數(shù)的存儲(chǔ)單元 中選擇一個(gè)存儲(chǔ)單元與備份存儲(chǔ)單元進(jìn)行替換,替換后選擇的這一存儲(chǔ)單元即成為新的備 份存儲(chǔ)單元。具體替換過程為將選擇的這一存儲(chǔ)單元中的數(shù)據(jù)寫入備份存儲(chǔ)單元,并將選 擇的這一存儲(chǔ)單元的當(dāng)前邏輯地址與備份存儲(chǔ)單元的當(dāng)前邏輯地址進(jìn)行替換,假設(shè)本實(shí)施 例中備份存儲(chǔ)單元對(duì)應(yīng)的邏輯地址為0001,每當(dāng)需要向備份存儲(chǔ)單元寫入數(shù)據(jù)時(shí),也就是 向邏輯地址0001當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元寫入數(shù)據(jù)。因此,初始狀態(tài)時(shí),備 份存儲(chǔ)單元的邏輯地址為0001,物理地址也為0001,選擇的存儲(chǔ)單元的邏輯地址為0003, 物理地址也為0003,當(dāng)確定物理地址為0001的備份存儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定閾值后, 將選擇的物理地址為0003的存儲(chǔ)單元中的數(shù)據(jù)寫入物理地址為0001的備份存儲(chǔ)單元中, 然后擦除物理地址為0003的存儲(chǔ)單元中的數(shù)據(jù),同時(shí),將邏輯地址0001當(dāng)前對(duì)應(yīng)的物理地 址修改為0003,并在備份存儲(chǔ)單元地址中記錄新的備份存儲(chǔ)單元的物理地址,即物理地址 0003。而且,還要在PAT中將邏輯地址為0003的存儲(chǔ)單元對(duì)應(yīng)的物理地址修改為0001,具 體的,在修改PAT中的數(shù)據(jù)時(shí),為了防止斷電,可以先將PAT中存儲(chǔ)該數(shù)據(jù)的存儲(chǔ)單元中的 原始內(nèi)容寫入物理地址為0003的新的備份存儲(chǔ)單元中,然后再擦除PAT中存儲(chǔ)該數(shù)據(jù)的存 儲(chǔ)單元中的內(nèi)容,再將修改后的內(nèi)容與物理地址為0003的新的備份存儲(chǔ)單元中的內(nèi)容合 并,寫回PAT中存儲(chǔ)該數(shù)據(jù)的存儲(chǔ)單元中,實(shí)現(xiàn)對(duì)PAT的修改。在執(zhí)行上述每一步驟之后, 都需要在更新記錄存儲(chǔ)單元中記錄相關(guān)的操作,以防止因斷電而丟失數(shù)據(jù)。通過上述操作, 即把邏輯地址0001對(duì)應(yīng)的物理地址修改為0003,因此,下次再需要向備份存儲(chǔ)單元中寫入 數(shù)據(jù)時(shí),則直接寫入邏輯地址0001當(dāng)前對(duì)應(yīng)的物理地址0003所標(biāo)識(shí)的存儲(chǔ)單元,從而使得 物理地址為0003的存儲(chǔ)單元成為新的備份存儲(chǔ)單元,實(shí)現(xiàn)了備份存儲(chǔ)單元的均衡處理。當(dāng)更新記錄存儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定閾值后,從不需要記錄擦除次數(shù)的存儲(chǔ) 單元中選擇一個(gè)存儲(chǔ)單元與更新記錄存儲(chǔ)單元進(jìn)行替換,替換后選擇的這一存儲(chǔ)單元即成 為新的更新記錄存儲(chǔ)單元。具體替換過程為將選擇的這一存儲(chǔ)單元中的數(shù)據(jù)寫入備份存 儲(chǔ)單元,并將選擇的這一存儲(chǔ)單元的當(dāng)前邏輯地址與更新記錄存儲(chǔ)單元的當(dāng)前邏輯地址進(jìn) 行替換,假設(shè)本實(shí)施例中更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址為0002,每當(dāng)需要向更新記錄 存儲(chǔ)單元寫入數(shù)據(jù)時(shí),也就是向邏輯地址0002當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元寫 入數(shù)據(jù)。因此,初始狀態(tài)時(shí),更新記錄存儲(chǔ)單元的邏輯地址為0002,物理地址也為0002,選 擇的存儲(chǔ)單元的邏輯地址為0005,物理地址為0005,當(dāng)確定物理地址為0002的更新記錄存 儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定閾值后,將選擇的物理地址為0005的存儲(chǔ)單元中的數(shù)據(jù)先寫 入備份存儲(chǔ)單元中,然后擦除物理地址為0005的存儲(chǔ)單元中的數(shù)據(jù),然后,將物理地址為 0002的原更新記錄存儲(chǔ)單元中的內(nèi)容,即已經(jīng)記錄的與該替換更新記錄存儲(chǔ)單元的操作有 關(guān)的更新數(shù)據(jù)寫入物理地址為0005的存儲(chǔ)單元中,即物理地址為0005的存儲(chǔ)單元成為新 的更新記錄存儲(chǔ)單元,之后再向更新記錄存儲(chǔ)單元中寫入更新操作時(shí),則寫入物理地址為0005的新的更新記錄存儲(chǔ)單元中,并且,擦除物理地址為0002的原更新記錄存儲(chǔ)單元中的 內(nèi)容,將之前寫入備份存儲(chǔ)單元中的數(shù)據(jù)寫入物理地址為0002的存儲(chǔ)單元中,即將物理地 址為0005的存儲(chǔ)單元中的原始數(shù)據(jù)保存在了物理地址為0002的存儲(chǔ)單元中,同時(shí),將邏輯 地址0002當(dāng)前對(duì)應(yīng)的物理地址修改為0005,并在更新記錄存儲(chǔ)單元地址中記錄新的更新 記錄存儲(chǔ)單元的物理地址,即物理地址0005,而且,還要在PAT中將邏輯地址為0005的存儲(chǔ) 單元對(duì)應(yīng)的物理地址修改為0002。在執(zhí)行上述每一步驟之后,都需要在更新記錄存儲(chǔ)單元 中記錄相關(guān)的操作,以防止因斷電而丟失數(shù)據(jù)。通過上述操作,即把邏輯地址0002對(duì)應(yīng)的 物理地址修改為0005,因此,下次再需要向更新記錄存儲(chǔ)單元中寫入數(shù)據(jù)時(shí),則直接寫入邏 輯地址0002當(dāng)前對(duì)應(yīng)的物理地址0005所標(biāo)識(shí)的存儲(chǔ)單元,從而使得物理地址為0005的存 儲(chǔ)單元成為新的更新記錄存儲(chǔ)單元,實(shí)現(xiàn)了更新記錄存儲(chǔ)單元的均衡處理。當(dāng)數(shù)據(jù)區(qū)有存儲(chǔ)單元出現(xiàn)壞塊時(shí),需要從保留區(qū)中選擇一個(gè)存儲(chǔ)單元與出現(xiàn)壞塊 的存儲(chǔ)單元進(jìn)行替換即將數(shù)據(jù)區(qū)出現(xiàn)壞塊的存儲(chǔ)單元中的數(shù)據(jù)寫入保留區(qū)中所選擇的存 儲(chǔ)單元,并在壞塊地址中記錄出現(xiàn)壞塊的存儲(chǔ)單元的物理地址、出現(xiàn)壞塊的存儲(chǔ)單元的邏 輯地址以及從保留區(qū)選擇的存儲(chǔ)單元的物理地址。假設(shè)數(shù)據(jù)區(qū)出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞 塊時(shí)的邏輯地址為0003,該出現(xiàn)壞塊的存儲(chǔ)單元的物理地址也為0003,假設(shè)從保留區(qū)選擇 的這一存儲(chǔ)單元的物理地址為0006,將選擇的這一存儲(chǔ)單元與出現(xiàn)壞塊的存儲(chǔ)單元進(jìn)行替 換,即將邏輯地址0003對(duì)應(yīng)的物理地址修改為0006,并開始記錄物理地址為0006的這一 存儲(chǔ)單元,即出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)的邏輯地址0003當(dāng)前對(duì)應(yīng)物理地址所標(biāo)識(shí) 的存儲(chǔ)單元的擦除次數(shù),當(dāng)物理地址為0006的存儲(chǔ)單元的擦除次數(shù)達(dá)到設(shè)定閾值時(shí),從不 需要記錄擦除次數(shù)的存儲(chǔ)單元中選擇一個(gè)存儲(chǔ)單元,假設(shè)選擇的不需記錄擦除次數(shù)的存儲(chǔ) 單元的邏輯地址為0008,其所對(duì)應(yīng)的物理地址為0008,將物理地址為0008的存儲(chǔ)單元當(dāng)前 對(duì)應(yīng)的邏輯地址與物理地址為0006的存儲(chǔ)單元當(dāng)前對(duì)應(yīng)的邏輯地址0003進(jìn)行替換,則替 換后邏輯地址0003當(dāng)前對(duì)應(yīng)存儲(chǔ)單元的物理地址為0008,并開始記錄物理地址為0008的 存儲(chǔ)單元的擦除次數(shù)。具體替換過程為將物理地址為0006的存儲(chǔ)單元中的數(shù)據(jù)寫入備份 存儲(chǔ)單元,并擦除該存儲(chǔ)單元中的數(shù)據(jù),然后,將物理地址為0008的存儲(chǔ)單元中的數(shù)據(jù)寫 入物理地址為0006的存儲(chǔ)單元,然后,再將備份存儲(chǔ)單元中的數(shù)據(jù)寫入物理地址為0008的 存儲(chǔ)單元中,同時(shí),還要在PAT中將邏輯地址為0003的存儲(chǔ)單元所對(duì)應(yīng)的物理地址修改為 0008,將邏輯地址為0008的存儲(chǔ)單元所對(duì)應(yīng)的物理地址修改為0006。在執(zhí)行上述每一步驟 之后,都需要在更新記錄存儲(chǔ)單元中記錄相關(guān)的操作,以防止因斷電而丟失數(shù)據(jù)。當(dāng)下次再 需要對(duì)邏輯地址0003進(jìn)行操作時(shí),則會(huì)相應(yīng)的操作該邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo) 識(shí)的存儲(chǔ)單元,即物理地址為0008的存儲(chǔ)單元,從而實(shí)現(xiàn)了數(shù)據(jù)區(qū)的損耗均衡處理。在本實(shí)施例中,之所以要單獨(dú)記錄更新記錄存儲(chǔ)單元地址,是因?yàn)楫?dāng)更新記錄存 儲(chǔ)單元進(jìn)行替換時(shí),需要修改PAT,而所修改的PAT地址又需要記錄在更新記錄存儲(chǔ)單元 中,如果更新記錄存儲(chǔ)單元的地址沒有單獨(dú)存儲(chǔ),就無(wú)法找到需要修改的PAT 了,單獨(dú)記錄 備份存儲(chǔ)單元地址的原因與之類似。通過采用上述方法,可以大大降低各個(gè)存儲(chǔ)單元的總擦寫次數(shù),以記錄PAT的存 儲(chǔ)單元為例只有當(dāng)某個(gè)存儲(chǔ)單元參與均衡或者出現(xiàn)壞塊后進(jìn)行替換時(shí),存儲(chǔ)單元的邏輯 地址和物理地址的對(duì)應(yīng)關(guān)系才會(huì)發(fā)生變化,此時(shí)才會(huì)更新PAT。因此,如果PAT出現(xiàn)壞塊,即 擦除達(dá)到10萬(wàn)次,假設(shè)保留區(qū)的存儲(chǔ)單元個(gè)數(shù)為10個(gè),也就是說(shuō)記錄數(shù)據(jù)區(qū)中10個(gè)存儲(chǔ)單元的擦除次數(shù),最壞情況為這10個(gè)存儲(chǔ)單元的邏輯地址都在PAT的同一存儲(chǔ)單元中,即 數(shù)據(jù)區(qū)這10個(gè)存儲(chǔ)單元中的每個(gè)存儲(chǔ)單元平均修改PATl萬(wàn)次,而每個(gè)存儲(chǔ)單元的數(shù)據(jù)擦 除次數(shù)達(dá)到256次后才會(huì)修改PAT —次,再加上一開始不記錄擦除次數(shù),即存儲(chǔ)單元出現(xiàn)壞 塊前的擦除次數(shù)10萬(wàn)次,則PAT中的每個(gè)存儲(chǔ)單元平均可擦除10000X256+100000 = 266 萬(wàn)次,遠(yuǎn)遠(yuǎn)超過擦寫200萬(wàn)次的要求。其他存儲(chǔ)單元的計(jì)算方法類似,當(dāng)磁盤達(dá)到壽命時(shí),各部分擦寫次數(shù)統(tǒng)計(jì)如表1 所示表 權(quán)利要求
1.一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法,其特征在于,包括確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址后, 或者,每次將記錄的第一擦寫次數(shù)清零后,開始記錄所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所 標(biāo)識(shí)的存儲(chǔ)單元的第一擦寫次數(shù),其中,所述存儲(chǔ)設(shè)備中存儲(chǔ)有存儲(chǔ)單元的物理地址與邏 輯地址的當(dāng)前對(duì)應(yīng)關(guān)系;當(dāng)記錄的第一擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇一個(gè)存儲(chǔ) 單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存 儲(chǔ)單元的物理地址,并將記錄的第一擦寫次數(shù)清零。
2.如權(quán)利要求1所述的方法,其特征在于,所述確定存儲(chǔ)單元出現(xiàn)壞塊,并記錄下出現(xiàn) 壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址后,進(jìn)一步包括從預(yù)留的空閑存儲(chǔ)單元中選 擇一個(gè)存儲(chǔ)單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從預(yù)留的空閑存儲(chǔ)單元中選 擇的存儲(chǔ)單元的物理地址,并將所述出現(xiàn)壞塊的存儲(chǔ)單元中的數(shù)據(jù)寫入從預(yù)留的空閑存儲(chǔ) 單元中選擇的存儲(chǔ)單元。
3.如權(quán)利要求2所述的方法,其特征在于,所述預(yù)留的空閑存儲(chǔ)單元的個(gè)數(shù)大于等于 出現(xiàn)壞塊的存儲(chǔ)單元的個(gè)數(shù)。
4.如權(quán)利要求1所述的方法,其特征在于,所述將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址 更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址的步驟之前,進(jìn)一步包 括將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元中的數(shù)據(jù)寫入備份存儲(chǔ)單元, 并在更新記錄存儲(chǔ)單元中記錄寫入備份存儲(chǔ)單元的操作;將寫入備份存儲(chǔ)單元中的數(shù)據(jù)寫入從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元,并 在更新記錄存儲(chǔ)單元中記錄寫入選擇的存儲(chǔ)單元的操作。
5.如權(quán)利要求4所述的方法,其特征在于,還包括確定所述備份存儲(chǔ)單元和所述更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址后,或者,每當(dāng)記錄 的第二擦寫次數(shù)清零后,開始記錄所述備份存儲(chǔ)單元或更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址 當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的第二擦寫次數(shù);當(dāng)記錄的第二擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇兩個(gè)存儲(chǔ) 單元,并將所述備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理地址分 別更新為所述兩個(gè)存儲(chǔ)單元的物理地址,并將記錄的第二擦寫次數(shù)清零。
6.如權(quán)利要求1所述的方法,其特征在于,所述將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址 更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址的步驟之后,進(jìn)一步包 括接收到攜帶所述邏輯地址的數(shù)據(jù)擦寫指令后,對(duì)所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所 標(biāo)識(shí)的存儲(chǔ)單元進(jìn)行擦寫。
7.一種實(shí)現(xiàn)損耗均衡的存儲(chǔ)設(shè)備,其特征在于,包括記錄模塊,用于確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng) 的邏輯地址后,或者,每次將記錄的第一擦寫次數(shù)清零后,開始記錄所述邏輯地址當(dāng)前對(duì)應(yīng) 的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的第一擦寫次數(shù);更新模塊,用于當(dāng)記錄的第一擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇一個(gè)存儲(chǔ)單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存儲(chǔ) 單元中選擇的存儲(chǔ)單元的物理地址,并將記錄的第一擦寫次數(shù)清零;存儲(chǔ)模塊,用于存儲(chǔ)各個(gè)存儲(chǔ)單元的物理地址與邏輯地址的當(dāng)前對(duì)應(yīng)關(guān)系。
8.如權(quán)利要求7所述的存儲(chǔ)設(shè)備,其特征在于,所述更新模塊,進(jìn)一步用于確定出現(xiàn) 壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址之后,從預(yù)留的空閑存儲(chǔ)單元中選擇一個(gè)存儲(chǔ) 單元,將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從預(yù)留的空閑存儲(chǔ)單元中選擇的存儲(chǔ)單 元的物理地址,并將所述出現(xiàn)壞塊的存儲(chǔ)單元中的數(shù)據(jù)寫入從預(yù)留的空閑存儲(chǔ)單元中選擇 的存儲(chǔ)單元。
9.如權(quán)利要求7所述的存儲(chǔ)設(shè)備,其特征在于,所述更新模塊,具體用于將所述邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元中的數(shù)據(jù)寫入備份存儲(chǔ)單元, 并在更新記錄存儲(chǔ)單元中記錄寫入備份存儲(chǔ)單元的操作;將寫入備份存儲(chǔ)單元中的數(shù)據(jù)寫入從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元,并 在更新記錄存儲(chǔ)單元中記錄寫入選擇的存儲(chǔ)單元的操作。
10.如權(quán)利要求9所述的存儲(chǔ)設(shè)備,其特征在于,所述更新模塊,進(jìn)一步用于 確定所述備份存儲(chǔ)單元和所述更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址后,或者,每當(dāng)記錄的第二擦寫次數(shù)清零后,開始記錄所述備份存儲(chǔ)單元或更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址 當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的第二擦寫次數(shù);當(dāng)記錄的第二擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇兩個(gè)存儲(chǔ) 單元,并將所述備份存儲(chǔ)單元和更新記錄存儲(chǔ)單元對(duì)應(yīng)的邏輯地址當(dāng)前對(duì)應(yīng)的物理地址分 別更新為所述兩個(gè)存儲(chǔ)單元的物理地址,并將記錄的第二擦寫次數(shù)清零。
11.如權(quán)利要求7所述的存儲(chǔ)設(shè)備,其特征在于,還包括接收模塊,用于接收到攜帶所述邏輯地址的數(shù)據(jù)擦寫指令后,對(duì)所述邏輯地址當(dāng)前對(duì) 應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元進(jìn)行擦寫。
全文摘要
本發(fā)明公開了一種存儲(chǔ)設(shè)備中實(shí)現(xiàn)損耗均衡的方法及存儲(chǔ)設(shè)備,該方法包括確定存儲(chǔ)單元出現(xiàn)壞塊并記錄下出現(xiàn)壞塊的存儲(chǔ)單元出現(xiàn)壞塊時(shí)對(duì)應(yīng)的邏輯地址后,或者,每次將記錄的擦寫次數(shù)清零后,開始記錄該邏輯地址當(dāng)前對(duì)應(yīng)的物理地址所標(biāo)識(shí)的存儲(chǔ)單元的擦寫次數(shù),其中,存儲(chǔ)設(shè)備中存儲(chǔ)有存儲(chǔ)單元的物理地址與邏輯地址的當(dāng)前對(duì)應(yīng)關(guān)系;當(dāng)記錄的擦寫次數(shù)達(dá)到設(shè)定閾值時(shí),從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇一個(gè)存儲(chǔ)單元,將該邏輯地址當(dāng)前對(duì)應(yīng)的物理地址更新為從沒有出現(xiàn)壞塊的存儲(chǔ)單元中選擇的存儲(chǔ)單元的物理地址,并將記錄的擦寫次數(shù)清零。通過記錄出現(xiàn)壞塊的邏輯存儲(chǔ)單元擦寫次數(shù),可有效避免擦寫次數(shù)過多的存儲(chǔ)單元被寫壞,提高存儲(chǔ)設(shè)備的使用壽命。
文檔編號(hào)G06F12/02GK102135942SQ20101061731
公開日2011年7月27日 申請(qǐng)日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者薛晗 申請(qǐng)人:北京握奇數(shù)據(jù)系統(tǒng)有限公司