專利名稱:閃存介質中的數(shù)據(jù)管理方法
技術領域:
本發(fā)明涉及半導體存儲領域,具體地說涉及閃存介質中數(shù)據(jù)管理方法,利用該方法對數(shù)據(jù)進行管理之后,無論在向所述閃存介質寫入數(shù)據(jù)的任何時刻發(fā)生非法斷電,所述閃存介質中原有的數(shù)據(jù)以及新寫入的數(shù)據(jù)都不會丟失,提高了閃存介質存儲數(shù)據(jù)的安全性。
背景技術:
利用閃存介質的移動存儲裝置已大量廣泛應用并逐漸取代了軟盤軟驅。但是,閃存介質在實際應用中也顯露出其不足之處,例如用戶向閃存介質中寫入新數(shù)據(jù)或對已存入的數(shù)據(jù)進行修改時,由于人們早已了解的閃存介質特殊的讀寫特性,首先要將由相應的物理地址所指向的存儲塊中的數(shù)據(jù)(以下稱之為原始數(shù)據(jù)) “搬遷”到另一個地址所指向的存儲塊中。
閃存介質讀數(shù)據(jù)的原理與PC硬盤很相似,都是通過讀文件分配表、目錄區(qū)等來獲得盤內(nèi)文件的信息。如果在將原始數(shù)據(jù)進行搬遷的過程中,發(fā)生意外或用戶誤操作等情況造成非法斷電,會使這個搬遷過程意外中斷。在斷電時刻對原始數(shù)據(jù)的搬遷工作尚未完成,這部分數(shù)據(jù)信息在文件分配表、目錄區(qū)等內(nèi)并沒有及時的更新,那么這些參與搬遷的數(shù)據(jù)將無法讀取,變?yōu)闊o效數(shù)據(jù)。這樣,在此之前保存的含有這部分數(shù)據(jù)的文件成為無效文件,即造成數(shù)據(jù)丟失。
另外,由于閃存介質在讀寫方面的特性,閃存介質有一個對存儲塊擦除的操作,該操作是將存儲塊中的所有位設置為邏輯“1”。如果在擦除過程中斷電,可能存在該存儲塊中一部分位已經(jīng)為邏輯“1”,而尚余部分位仍為邏輯“0”的情況。這時,若再向該存儲塊寫入新數(shù)據(jù)就會出錯。
發(fā)明內(nèi)容
針對上述現(xiàn)有技術中的閃存介質存在的可靠性差、容錯性差,數(shù)據(jù)不安全、對非法斷電錯誤處理能力差等不足,本發(fā)明提供了一種在閃存介質中數(shù)據(jù)管理的方法,通過該方法,可以完整地保存在非法斷電前閃存介質中記錄的原始數(shù)據(jù),并保證閃存介質中所有的空存儲塊可用,從而提高快閃介質的穩(wěn)定性、數(shù)據(jù)安全性和容錯性能。
因此,本發(fā)明的目的在于提出一種閃存介質中的數(shù)據(jù)管理方法,所述閃存介質包括多個存儲塊,每個存儲塊由多個頁構成,每個頁包括數(shù)據(jù)存儲區(qū)和冗余區(qū),所述數(shù)據(jù)存儲區(qū)一般用于記錄用戶數(shù)據(jù),所述冗余區(qū)一般記錄該頁所在閃存芯片的專用信息和該頁所在存儲塊的邏輯地址等索引信息,以及其他可由用戶自行設定的信息,或者棄而不用。
在所述多個存儲塊中的至少一個存儲塊至少一頁的冗余區(qū)設置狀態(tài)標志,在所述存儲塊中存入數(shù)據(jù)過程中,將所述狀態(tài)標志設置為未完成狀態(tài);當所述存儲塊中存入數(shù)據(jù)完畢后,將所述狀態(tài)標志設置為完成狀態(tài)。
根據(jù)本發(fā)明,上述的未完成狀態(tài)表示對所述存儲塊的數(shù)據(jù)存入操作尚未完成;所述的完成狀態(tài)表示對所述存儲塊的數(shù)據(jù)存入操作已完成。其中所述數(shù)據(jù)存入操作步驟包括將指定接收新數(shù)據(jù)的存儲塊800中的要保留的數(shù)據(jù)復制到所述存儲塊900中;或者向所述存儲塊900中寫入新數(shù)據(jù);或者將所述原存儲塊800中的數(shù)據(jù)復制到所述存儲塊900中并且在所述原存儲塊800和/或900中寫入新數(shù)據(jù)。上述步驟中,指定接收新數(shù)據(jù)的存儲塊是指根據(jù)存入數(shù)據(jù)指令中指定的目標地址,在閃存介質中尋找到的對應地址的存儲塊。
根據(jù)本發(fā)明的另一目的,還提供了一種向閃存介質中寫數(shù)據(jù)的方法,所述閃存介質包括多個存儲塊,每個存儲塊由多個頁構成,每個頁包括數(shù)據(jù)存儲區(qū)和冗余區(qū),包括以下步驟接受寫新數(shù)據(jù)的指令;在所述閃存介質中找到與所述寫指令中指定的邏輯地址對應的存儲塊800;判斷所找到的存儲塊800是否為空;如存儲塊800為空,則在所找到的存儲塊800中寫入新數(shù)據(jù);如不為空,則查找一個空的新塊900;將存儲塊800中要保留的數(shù)據(jù)復制到所述的新塊900中,并將所述新塊900中至少一頁的冗余區(qū)狀態(tài)標志設置為未完成狀態(tài);向所述新塊900中寫入新數(shù)據(jù);將所述原塊800擦除;將所述新塊900中所述狀態(tài)標志由未完成狀態(tài)設置為完成狀態(tài)。
上述寫數(shù)據(jù)方法中,所述要保留的數(shù)據(jù)是原塊記錄的原始數(shù)據(jù)中,不會被要寫入的新數(shù)據(jù)覆蓋的部分。所述要保留的數(shù)據(jù)可能是原塊中的全部原始數(shù)據(jù),也可能是原始數(shù)據(jù)中的一部分。
根據(jù)本發(fā)明的又一目的,提供在閃存介質中的數(shù)據(jù)恢復方法,所述閃存介質采用上述的數(shù)據(jù)管理方法,當所述閃存介質的使用過程中每次加電時,對有可能因斷電而產(chǎn)生的數(shù)據(jù)損壞情況采用以下步驟進行數(shù)據(jù)恢復通過檢查狀態(tài)標志設置為未完成狀態(tài)的存儲塊,找出要保留的數(shù)據(jù)所在的存儲塊,并進行數(shù)據(jù)恢復操作。
根據(jù)本發(fā)明的另一目的,提供在閃存介質中確保空白存儲塊確實可用的方法,所述閃存介質在上述操作過程中斷電后,再次加電時找出冗余區(qū)全為邏輯“1”而數(shù)據(jù)存儲區(qū)不全為邏輯“1”的存儲塊并擦除,以保證所有冗余區(qū)為空的存儲塊都可使用。
所述邏輯值可以數(shù)值、字符串或數(shù)字與字符串的組合來表示,例如邏輯“1”。
采用本發(fā)明提供的數(shù)據(jù)管理方法,通過對存儲塊設置狀態(tài)標志,可以確保在對閃存介質寫入新數(shù)據(jù)過程中,無論是人為的非法操作或是意外斷電等情況,都不會丟失閃存介質中原有的要保留的數(shù)據(jù),并且可以避免因上述原因造成的存儲塊沒有被完全擦除以致再次讀寫出錯的情況。
圖1是本發(fā)明數(shù)據(jù)管理方法中閃存介質原存儲塊和存儲塊的示意圖;圖2示意性地說明閃存介質中存儲塊和頁的組織結構;圖3示意性地說明閃存介質的存儲塊中冗余區(qū)的劃分;圖4是根據(jù)本發(fā)明的閃存介質中數(shù)據(jù)管理方法寫入新數(shù)據(jù)的實施例流程圖;圖5是快閃存儲裝置加電后的數(shù)據(jù)恢復過程的實施例流程圖。
具體實施例方式
如圖2所示,其示出了現(xiàn)有閃存介質的物理構造。所述閃存介質的最小物理存儲單位是頁(Page),由多個頁組成一個存儲塊(Block,即物理塊)。每一片芯片包括多個存儲塊。所述每個頁包含若干字節(jié)的數(shù)據(jù)存儲區(qū)和若干字節(jié)的冗余區(qū),例如每頁可包含512字節(jié)的數(shù)據(jù)存儲區(qū)和16字節(jié)的冗余區(qū),或者每頁可包含2K字節(jié)的數(shù)據(jù)存儲區(qū)和64字節(jié)的冗余區(qū)。
所述冗余區(qū)中的字節(jié)分配方法多種多樣,例如可以采用一個或多個字節(jié)來設置狀態(tài)標志以表示該頁所在存儲塊的數(shù)據(jù)狀態(tài)和/或工作狀態(tài)。圖3是閃存介質的冗余區(qū)中字節(jié)分配的一種示例。
根據(jù)本發(fā)明,在所述頁的冗余區(qū)中設置狀態(tài)標志以表示該頁所在的存儲塊的狀態(tài)。所述狀態(tài)標志可包括完成狀態(tài)(Complete)和未完成狀態(tài)(Incomplete)。上述的未完成狀態(tài)表示對所述存儲塊的數(shù)據(jù)存入操作尚未完成;所述的完成狀態(tài)表示對所述存儲塊的數(shù)據(jù)存入操作已完成。此外,當所述冗余區(qū)的所有位都為邏輯“1”時,標志整個頁為“空”,可在該頁中寫入新數(shù)據(jù)。
如圖3所示,根據(jù)本發(fā)明的一個實施例,采用冗余區(qū)的第0個字節(jié)作為設置狀態(tài)標志的標志位。然而,本領域普通技術人員可以了解,本發(fā)明并不局限于此。
接下來,結合圖1和圖4來說明本發(fā)明的閃存介質的數(shù)據(jù)管理方法,并進一步說明根據(jù)該管理方法,在閃存介質中存入數(shù)據(jù)的任何時刻發(fā)生非法斷電均可確保數(shù)據(jù)安全的可能性。
如圖1所示,所述閃存介質中采用本發(fā)明提供的數(shù)據(jù)管理方法時,數(shù)據(jù)操作可以在存儲塊800和900之間進行。
如圖4所示,當所述閃存介質接收到來自操作系統(tǒng)的寫入新數(shù)據(jù)指令后(步驟1),存儲裝置的控制器根據(jù)所述寫入新數(shù)據(jù)指令所指定的邏輯地址尋找要寫入新數(shù)據(jù)的存儲塊(以下簡稱原塊),如步驟2所示。
在步驟3中,判斷所找到的存儲塊800是否為空。
如果存儲塊800為空,則在所找到的存儲塊800中寫入新數(shù)據(jù),如步驟3’;如果存儲塊800不為空,則查找一個空白存儲塊900(以下簡稱新塊)。,如步驟4接下來在步驟5中,存儲裝置的控制器要將所述原塊800中要保留的數(shù)據(jù)復制到新塊900中,即對原塊中的要保留的數(shù)據(jù)進行搬遷。在實施搬遷的同時將新塊900中的每一頁的狀態(tài)標志設置為未完成狀態(tài)。
接著,將所述要寫入的新數(shù)據(jù)寫入到所述新塊900中,同時將其相應頁面的狀態(tài)標志設置為未完成狀態(tài)(步驟6)。此后,將所述原塊800中數(shù)據(jù)全部擦除(步驟7)。
將新塊900所有頁的冗余區(qū)狀態(tài)標志從未完成狀態(tài)設置為完成狀態(tài)(步驟8)。
根據(jù)本發(fā)明的另一種實施方式,在找到新塊后,可以先在其中寫入新數(shù)據(jù),并且將新塊的狀態(tài)標志設置為未完成狀態(tài),然后將原塊中的要保留的數(shù)據(jù)復制到所述新塊中,再將新塊的狀態(tài)標志設置為完成狀態(tài)。
在新塊中復制要保留的數(shù)據(jù)步驟(步驟5)和寫入新數(shù)據(jù)步驟(步驟6)也可以同時進行,在進行過程中,將新塊的狀態(tài)標志設置為未完成狀態(tài);對新塊的復制操作和寫入操作都完成之后,再將新塊的狀態(tài)標志設置為完成狀態(tài)。
事實上,寫入新數(shù)據(jù)步驟(步驟6)還可以與復制要保留的數(shù)據(jù)步驟(步驟5)混合交叉進行。
所述向存儲塊寫數(shù)據(jù)的過程可以和對其狀態(tài)標志的設置過程也可以混合交叉進行。
而擦除原塊的步驟(步驟7)也可安排在將新塊的狀態(tài)標志設置為完成狀態(tài)步驟(步驟8)之后進行。
從對上述本發(fā)明的實施方式的描述可以理解,本發(fā)明的數(shù)據(jù)管理方法的特征在于在對新塊進行操作的過程中,如將原塊的要保留的數(shù)據(jù)復制到新塊或者在新塊中寫入新數(shù)據(jù)時,將新塊的狀態(tài)標志設置為未完成狀態(tài);對新塊的數(shù)據(jù)操作完成之后,再將新塊的狀態(tài)標志從未完成狀態(tài)設置為完成狀態(tài)。
利用該數(shù)據(jù)管理方法,在對所述閃存介質進行數(shù)據(jù)寫入時,即使發(fā)生非法斷電,也可以保證閃存介質中原有數(shù)據(jù)不會丟失。
也就是說,通過上述的閃存介質的數(shù)據(jù)管理方法,無論在操作過程的哪一步驟發(fā)生突然斷電,所述閃存介質在重新加電時都可以恢復要保留的數(shù)據(jù)。
對于上述實施例來說,如附圖4,例如在將要保留的數(shù)據(jù)復制到新塊,并正在將新塊的狀態(tài)標志設置為未完成狀態(tài)時(在步驟5中)發(fā)生斷電,由于對原塊中的原始數(shù)據(jù)作復制操作,原塊中仍然保存著原始數(shù)據(jù),斷電發(fā)生破壞的只是復制到新塊中的不完整的要保留的數(shù)據(jù)。因此在重新加電時只需先擦除新塊,再重復一次復制操作即可。
又例如,在原塊中的要保留的數(shù)據(jù)已復制到新塊中并且新塊中的狀態(tài)標志都已設置為未完成狀態(tài)之后,還未開始向新塊中寫入新數(shù)據(jù)之前(即步驟5完成之后,步驟6進行之前)發(fā)生中斷的情形下,新塊中要保留的數(shù)據(jù)是完整的,原塊中的原始數(shù)據(jù)也仍然保存著,而新數(shù)據(jù)尚未寫入,中斷的發(fā)生所影響的僅僅是新塊的狀態(tài)標志為未完成狀態(tài)。因此在重新加電時只需向新塊中寫入新數(shù)據(jù),然后將新塊中的狀態(tài)標志接著設置為完成狀態(tài)。即使在向新塊寫入新數(shù)據(jù)的過程中發(fā)生中斷(步驟6進行過程中),斷電發(fā)生后只有部分數(shù)據(jù)寫入到新塊中,此時在重新加電時只需繼續(xù)寫入余下的新數(shù)據(jù)即可。
若中斷發(fā)生在已將所有要寫入的新數(shù)據(jù)都寫入新塊后,但還未開始擦除原塊中的數(shù)據(jù)(步驟6完成之后,步驟7開始之前),此時原塊中仍有原始數(shù)據(jù),而且要保留的數(shù)據(jù)和新數(shù)據(jù)都已經(jīng)存在于新塊中,此時在重新加電時只需將新塊中狀態(tài)標志設置為完成狀態(tài)并擦除原塊。
若在將新塊的狀態(tài)標志設置為完成狀態(tài)的過程中(步驟8進行過程中)發(fā)生中斷,可能造成修改狀態(tài)標志操作失敗,因此在重新加電時只需將新塊中狀態(tài)標志再次置為完成狀態(tài)即可。
在找到一個新塊之前,由于尚未發(fā)生數(shù)據(jù)讀寫,即使發(fā)生中斷,也不會丟失數(shù)據(jù)。在擦除原塊中原始數(shù)據(jù)的過程中如果發(fā)生中斷,其后果是原塊中數(shù)據(jù)擦除不完全,在重新加電時不需進行數(shù)據(jù)恢復操作。
以上是說明在實施本發(fā)明數(shù)據(jù)管理方法的閃存介質遭遇非法斷電后數(shù)據(jù)恢復的可能性。
接下來結合附圖4及附圖5具體說明閃存介質中實施了上述的數(shù)據(jù)管理方法,當該閃存介質因非法斷電造成操作中斷后,對該閃存介質再次加電時的數(shù)據(jù)恢復方法。所述存儲裝置的控制器在閃存介質中尋找狀態(tài)標志設置為未完成狀態(tài)的存儲塊(即前述的新塊)。根據(jù)上述的數(shù)據(jù)管理方法可知,只要是在存儲塊中的狀態(tài)標志為未完成狀態(tài),就說明該存儲塊在中斷前的寫數(shù)據(jù)步驟中使用過,并且可能含有錯誤數(shù)據(jù),需要恢復。于是,控制器尋找與所述新塊具有相同邏輯地址的存儲塊,該存儲塊就是在斷電前寫數(shù)據(jù)過程中記錄原始數(shù)據(jù)的原塊。
如果能夠找到原塊,說明中斷發(fā)生在擦除原塊的步驟(步驟7)前。判斷所述未完成塊所有頁的冗余區(qū)狀態(tài)標志是否都是未完成狀態(tài);若是,說明所有需要保留的數(shù)據(jù)已被搬遷完畢,要寫入的新數(shù)據(jù)也已存儲完畢,則擦除原塊并將找到的新塊的狀態(tài)標志設置為完成狀態(tài);若所述新塊的全部頁狀態(tài)標志不全是未完成狀態(tài),則擦除新塊,將原塊狀態(tài)標志設置為完成狀態(tài),修改對照表。
如果無法找到原塊,則說明中斷可能發(fā)生在擦除原塊的過程中(步驟7過程中)或者發(fā)生在擦除原塊步驟完成后。此時將新塊的頁狀態(tài)標志設置為完成狀態(tài),同時如前述修改對照表。
所述對照表是所述閃存介質中的物理地址與邏輯地址的映射表,所述修改對照表是將對照表中對應新塊的邏輯地址改為指令中的邏輯地址。
從對上述本發(fā)明的實施方式的描述可以理解,本發(fā)明的數(shù)據(jù)恢復方法的特征在于根據(jù)閃存介質中存儲塊的各頁的冗余區(qū)狀態(tài)標志的檢查,判斷中斷發(fā)生時刻存儲塊的狀態(tài),進而找出要保留的數(shù)據(jù),進行相應的數(shù)據(jù)恢復操作。因此,對于寫數(shù)據(jù)方法中的步驟調整而造成恢復數(shù)據(jù)方法的改變,是不偏離本發(fā)明思想的。
在對可能由于中斷而丟失的原始數(shù)據(jù)進行恢復完成后,為確保閃存介質中存儲塊的冗余區(qū)所有位全為邏輯“1”的存儲塊確實全部為空,排除因擦除操作中斷而遺留的數(shù)據(jù),從而可能造成下次讀寫操作出錯,因此需要對所述空白存儲塊進行檢查排錯操作。
根據(jù)本發(fā)明,可采用如下方式檢查空白存儲塊并排錯首先找出第0頁冗余區(qū)所有位為邏輯“1”的存儲塊,再檢查該存儲塊所有頁的所有位是否全為邏輯“1”,如果不全為邏輯“1”,則對該存儲塊執(zhí)行擦除操作。
根據(jù)本發(fā)明,在恢復數(shù)據(jù)過程完成之后,最好要對所有空白存儲塊進行上述檢查排錯處理,這樣可以將未完全擦除的原塊清空,確保所有冗余區(qū)為空的存儲塊可用。
根據(jù)本發(fā)明方法的另一個實施例,根據(jù)SSFDC協(xié)議將所述閃存介質分成若干個區(qū)(Zone),每個區(qū)由若干個存儲塊構成,并且每個區(qū)都有設置至少一個空白存儲塊,用于將要保留的數(shù)據(jù)復制到該存儲塊中。
在本實施例中,采用與前述實施例類似的數(shù)據(jù)管理方法對各區(qū)內(nèi)的數(shù)據(jù)進行管理,其不同之處在于尋找新塊的范圍局限在原塊所在的區(qū)中,并且在恢復數(shù)據(jù)操作階段,尋找狀態(tài)標志設置為未完成狀態(tài)的存儲塊(新塊)的范圍也局限在該區(qū)中。借此,提高了在所述閃存介質中寫數(shù)據(jù)的速度及恢復數(shù)據(jù)的速度。而且,由于數(shù)據(jù)讀寫操作只是在同一區(qū)內(nèi)的兩個存儲塊之間進行,所述閃存介質的其他區(qū)在上述寫數(shù)據(jù)過程中不會出錯,故只需查找本區(qū)內(nèi)的空白存儲塊并排錯即可。
以上是對本發(fā)明示例性地說明,本領域普通技術人員可以理解,對冗余區(qū)狀態(tài)標志的設置的方案不是唯一的,搜尋新塊的途徑也可采用各種已知的技術。本發(fā)明的精髓是在寫數(shù)據(jù)時增加狀態(tài)標志的設置以鑒別所涉及的存儲塊的狀態(tài),從而在發(fā)生非法斷電后能有效地恢復數(shù)據(jù),保證數(shù)據(jù)的完整性。因此,不偏離本發(fā)明思想的對本發(fā)明技術方案的各種改型將落入所附本發(fā)明權利要求所限定的保留范圍中。
權利要求
1.閃存介質中的數(shù)據(jù)管理方法,所述閃存介質包括多個存儲塊,每個存儲塊由多個頁構成,每個頁包括數(shù)據(jù)存儲區(qū)和冗余區(qū),其特征在于,在所述多個存儲塊中的至少一個存儲塊(900)至少一頁的冗余區(qū)設置狀態(tài)標志,在所述存儲塊(900)中存入數(shù)據(jù)過程中,將所述狀態(tài)標志設置為未完成狀態(tài);當所述存儲塊(900)中存入數(shù)據(jù)完畢后,將所述狀態(tài)標志設置為完成狀態(tài)。
2.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,其中所述的未完成狀態(tài)表示對所述存儲塊(900)的數(shù)據(jù)存入操作尚未完成;所述的完成狀態(tài)表示對所述存儲塊(900)的數(shù)據(jù)存入操作已完成。
3.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,其中所述數(shù)據(jù)存入操作步驟包括將指定接收新數(shù)據(jù)的存儲塊(800)中的要保留的數(shù)據(jù)復制到所述存儲塊(900)中。
4.根據(jù)權利要求3所述的閃存介質中的數(shù)據(jù)管理方法,其中所述存儲塊(900)存入數(shù)據(jù)完畢后,擦除所述要保留的數(shù)據(jù)所在的原存儲塊(800)。
5.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,其中所述存儲塊(900)中存入數(shù)據(jù)的步驟包括向所述存儲塊(900)中寫入新數(shù)據(jù)。
6.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,其中所述存儲塊(900)中存入數(shù)據(jù)的步驟包括將所述原存儲塊(800)中的數(shù)據(jù)復制到所述存儲塊(900)中并且在所述原存儲塊(800)和/或(900)中寫入新數(shù)據(jù)。
7.根據(jù)上述權利要求中任一權利要求所述的數(shù)據(jù)管理方法,進一步包括在擦除原存儲塊(800)中的數(shù)據(jù)后,將所述存儲塊(900)的狀態(tài)標志設置為完成狀態(tài)。
8.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,所述狀態(tài)標志是使用所述存儲塊冗余區(qū)中的一個字節(jié)或多個字節(jié),或使用冗余區(qū)中的一個位或多個位。
9.根據(jù)權利要求1所述的閃存介質中的數(shù)據(jù)管理方法,在所述操作過程中斷電后,再次加電時找出冗余區(qū)全為邏輯“1”而數(shù)據(jù)存儲區(qū)不全為邏輯“1”的存儲塊并擦除,以保證所有為空的存儲塊都可使用。
10.向閃存介質中寫數(shù)據(jù)的方法,所述閃存介質包括多個存儲塊,每個存儲塊由多個頁構成,每個頁包括數(shù)據(jù)存儲區(qū)和冗余區(qū),包括以下步驟(1)接受寫新數(shù)據(jù)的指令;(2)在所述閃存介質中找到與所述寫指令中指定的邏輯地址對應的存儲塊(800);(3)判斷所找到的存儲塊(800)是否為空;(4)如存儲塊(800)為空,則在所找到的存儲塊(800)中寫入新數(shù)據(jù);如不為空,則查找一個空的新塊(900);(5)將存儲塊(800)中要保留的數(shù)據(jù)復制到所述的新塊(900)中,并將所述新塊(900)中至少一頁的冗余區(qū)狀態(tài)標志設置為未完成狀態(tài);(6)向所述新塊(900)中寫入新數(shù)據(jù);(7)將所述原塊(800)擦除;(8)將所述新塊(900)中所述狀態(tài)標志由未完成狀態(tài)設置為完成狀態(tài);
11.根據(jù)權利要求10所述的方法,其特征在于在步驟6,即向所述新塊(900)中寫入新數(shù)據(jù)的過程中,將所述狀態(tài)標志設置為未完成狀態(tài)。
12.根據(jù)權利要求10所述的方法,其特征在于向所述新塊(900)中寫入新數(shù)據(jù)的步驟可安排在步驟5執(zhí)行之前或在步驟5執(zhí)行過程中。
13.根據(jù)權利要求10所述的方法,其特征在于,將所述原存儲塊(800)中的數(shù)據(jù)擦除的步驟可以安排在步驟8執(zhí)行之后。
14.根據(jù)權利要求10所述的方法,所述確定存儲塊是否為空的步驟包括判斷所述存儲塊的所有頁冗余區(qū)的所有位是否為邏輯“1”。
15.閃存介質中的數(shù)據(jù)恢復方法,所述閃存介質采用如權利要求1所述的數(shù)據(jù)管理方法,當所述閃存介質的使用過程中每次加電時,對有可能因斷電而產(chǎn)生的數(shù)據(jù)損壞情況采用以下步驟進行數(shù)據(jù)恢復通過檢查狀態(tài)標志為未完成狀態(tài)的存儲塊(900),找出要保留的數(shù)據(jù)所在的存儲塊,并進行數(shù)據(jù)恢復操作。
16.根據(jù)權利要求15所述的數(shù)據(jù)恢復方法,其中所述恢復數(shù)據(jù)的操作包括保留所述原存儲塊(800)的數(shù)據(jù),并且對所述存儲塊(900)作擦除操作。
17.根據(jù)權利要求15所述的數(shù)據(jù)恢復方法,其中所述恢復數(shù)據(jù)的操作包括對所述原存儲塊(800)作擦除操作,并將所述存儲塊(900)的狀態(tài)標志改為完成狀態(tài)。
全文摘要
本發(fā)明提供閃存介質中的數(shù)據(jù)管理方法,其特征在于在對存儲塊進行操作的過程中,將所述塊的狀態(tài)標志設置為未完成狀態(tài);操作完成之后,再將狀態(tài)標志從未完成狀態(tài)設置為完成狀態(tài)。利用該方法,在對所述閃存介質進行數(shù)據(jù)寫入時,即使發(fā)生非法斷電,也可以保證閃存介質中原有數(shù)據(jù)不會丟失。本發(fā)明還提供了采用上述數(shù)據(jù)管理方法的閃存介質中寫數(shù)據(jù)方法和數(shù)據(jù)恢復方法。
文檔編號G11C16/06GK1518000SQ0310498
公開日2004年8月4日 申請日期2003年3月4日 優(yōu)先權日2003年1月26日
發(fā)明者鄧國順, 成曉華, 向鋒 申請人:深圳市朗科科技有限公司