NandFlash存儲器中數據存儲方法
2023-05-21 22:20:21
專利名稱:NandFlash存儲器中數據存儲方法
技術領域:
本發明涉及Flash存儲技術,具體的說是涉及NandFlash存儲器中數據存儲方法。
背景技術:
Flash是嵌入式設備(手機、機頂盒、掌上設備等)中最常用的存儲介質,主要分 為NandFlash與NorFlash。NorFlash具有壽命長(擦寫次數達數十萬次)、壞塊少(使用 壽命內可以保證不會產生壞塊)的高可靠性,但是其容量小(一般最大64MB)、價格高(是 NandFlash的數倍)。與NorFlash相比,NandFlash具有壽命稍短(擦寫次數數萬次)、壞 塊比例千分之三(並且使用過程中會產生新的壞塊),但是容量大(一般最低64MB、最高可 達數GB)、價格低。基於上述對比,除了對存儲容量要求比較小、可靠性要求非常高的產品 外,大部分民用級嵌入式設備越來越多的青睞於使用NandFlash作為系統程序和用戶數據 的存儲介質。壞塊,是指數據塊在出廠時就已經變成了無法使用的數據塊;臨界狀態的塊,是指 使用過程中對該數據塊進行擦除或者寫入過程中可能發生錯誤的數據塊(但是讀取數據 不會發生錯誤)。因此要想實現在NandFlash存儲器中可靠存儲,就需要設法規避壞塊與臨 界狀態的塊。而傳統技術中在NandFlash存儲器中存儲數據是採用直接讀取、擦除、寫入的 方式,並沒有規避壞塊和臨界狀態的塊,導致存儲的可靠性低。
發明內容
本發明所要解決的技術問題是針對傳統技術中在NandFlash存儲器中數據存儲 可靠性低的缺陷,提供一種具有高可靠性的在NandFlash存儲器中數據存儲方法。本發明解決上述技術問題所採用的技術方案是=NandFlash存儲器中數據存儲方 法,包括以下步驟a.劃分NandFlash存儲空間,分為可用空間、備份空間及索引空間,可用空間用以 存儲作業系統文件的數據塊,備份空間用以轉存儲臨界狀態的數據塊,索引空間用以存儲 可用空間數據塊與備份空間數據塊的對應關係的記錄表;b.當需要對可用空間內某一地址進行讀、寫操作時,首先判斷該地址對應的數據 塊A是否為壞塊,是則執行步驟e,否則對其進行讀、寫操作,並執行步驟c ;c.判斷讀、寫操作中是否存在出錯情況,是則執行步驟d,否則,成功返回,不執行 後續步驟;d.將數據塊A標註為「壞塊」,並執行步驟h ;e.搜索索引空間中的記錄表,判斷是否存在數據塊A的記錄,如果有記錄則執行 步驟f,否則執行步驟g;f.找到數據塊A在備份空間中的對應數據塊B,對數據塊B進行讀、寫操作,並判 斷是否存在出錯情況,是則將數據塊B標註為「壞塊」,並執行步驟h,否則,成功返回,不執 行後續步驟;
g.如果當前需要執行讀操作,則出錯返回,如果當前需要執行寫操作,則執行步驟 h;h.在備份空間中尋找第一個未被使用的臨界狀態的數據塊C,對該數據塊進行寫 操作,如果成功,則執行步驟i,如果出錯,則將數據塊C標註為「壞塊」,返回步驟h ;i.在索引空間的記錄表中新增一條記錄,記錄數據塊A與數據塊C的對應關係。進一步,所述寫操作包括擦除、寫入、校驗。本發明的有益效果是在NandFlash存儲器中實現可靠數據存儲,提高存儲空間 利用率。
圖1為本發明的方法流程圖。
具體實施例方式下面結合附圖及實施例對本發明作進一步的描述。本發明針對傳統技術中在NandFlash存儲器中數據存儲可靠性低的缺陷,提供一 種具有高可靠性的在NandFlash存儲器中數據存儲方法。相對於傳統技術,其改進點可概 括為通過對NandFlash存儲空間進行劃分,劃分為可用空間、備份空間及索引空間,可用 空間用以存儲作業系統文件的數據塊,備份空間用以轉存儲臨界狀態的數據塊,索引空間 用以存儲可用空間數據塊與備份空間數據塊的對應關係的記錄表;當檢測到可用空間中的 某個數據塊為壞塊時,通過搜索索引空間記錄,在備份空間中尋找其對應數據塊來進行規 避,而如果沒有對應的數據塊則需要將備份空間中第一個未使用的臨界狀態數據塊作為其 對應數據塊,並在索引空間中新建對應關係。據此,可在成本相對較低、容量相對較大的、可 靠性卻相對較低的NandFlash存儲器中實現數據的透明、可靠性存儲。如圖1所示,本發明中的NandFlash存儲器中數據存儲方法,具體實現步驟如下a.劃分NandFlash存儲空間分為可用空間、備份空間及索引空間,可用空間用以 存儲作業系統文件的數據塊,備份空間用以轉存儲臨界狀態的數據塊,索引空間用以存儲 可用空間數據塊與備份空間數據塊的對應關係的記錄表;b.當需要對可用空間內某一地址進行讀、寫操作時,首先判斷該地址對應的數據 塊A是否為壞塊,是則執行步驟e,否則對其進行讀、寫操作,並執行步驟c ;c.判斷讀寫操作中是否存在出錯情況,是則執行步驟d,否則,成功返回,不執行 後續步驟;d.將數據塊A標註為「壞塊」,並執行步驟h ;e.搜索索引空間中的記錄表,判斷是否存在數據塊A的記錄,如果有記錄則執行 步驟f,否則執行步驟g;f.找到數據塊A在備份空間中的對應數據塊B,對數據塊B進行讀、寫操作,並判 斷是否存在出錯情況,是則將數據塊B標註為「壞塊」,並執行步驟h,否則,成功返回,不執 行後續步驟;g.如果當前需要執行讀操作,則出錯返回,如果當前需要執行寫操作,則執行步驟 h;
h.在備份空間中尋找第一個未被使用的臨界狀態的數據塊C,對該數據塊進行寫 操作,如果成功,則執行步驟i,如果出錯,則將數據塊C標註為「壞塊」,返回步驟h ;i.在索引空間的記錄表中新增一條記錄,記錄數據塊A與數據塊C的對應關係。上述寫操作包括擦除、寫入、校驗。三個操作都通過才算寫操作通過,其中任意一 個操作失敗,則寫操作失敗。實施例以ST公司的NAND2G存儲器為例,其具體實現方式如下將ST公司的NAND2G系列NandFlash (容量256MB)空間劃分為可用空間253MB、 備份空間2MB、索引空間1MB,每個數據塊的大小為16KB,對應的設備驅動節點分別為 /dev/mtdblockO、/dev/mtdblockl 和 /dev/mtdblock2,可用空間對應的邏輯塊號範圍 為(0-16191)、備份空間對應的邏輯塊號範圍為(0-127)。索引空間的映射記錄表項為 M(0 ^ M ^ 16191)- > N(0 ^ N ^ 127)。如果需要對可用空間的0x28000地址進行寫入操作(即/dev/mtdblockO的編號 為10的塊),具體步驟如下1.如果該數據塊是壞塊,則執行步驟2 ;否則,對該數據塊執行寫操作塊擦除、塊 寫入、塊校驗,以上三個操作都成功,則返回成功;有任一操作出錯,將其標記為「壞塊」,並 且執行步驟4 ;2.搜索索引空間記錄表,看是否存在「M= 10」的記錄。如果未找到記錄,則執行 步驟4 ;如果找到記錄,則執行步驟3 ;3.找到記錄「M = 10- > N = 0」,則對備份空間中/dev/mtdblockl的編號為0的 數據塊執行寫操作塊擦除、塊寫入、塊校驗以上三個操作都成功,則返回成功;有任一操 作出錯,將該數據塊標記為「壞塊」,並且執行步驟4 ;4.在備份空間內尋找到第一個未被使用的好塊(如/dev/mtdblockl的編號為η 的塊,0 ^η^ 127,對該數據塊執行擦除、塊寫入、塊校驗,如果三個操作都成功,則在索引 空間記錄表中新增一條記錄,記錄可用空間中的/dev/mtdblockO的編號為10的數據塊與 備份空間中/dev/mtdblockl的編號為η的數據塊的對應關係(「Μ = 10- > N = η),,;如 果任一操作出錯,則將備份空間中的/dev/mtdblockl的編號為η的塊標記為「壞塊」,並重 新執行步驟4。如果需要對可用空間的0x28000地址進行讀取操作(即/dev/mtdblockO的編號 為10的數據塊,具體步驟如下1.如果該數據塊(即/dev/mtdblockO的編號為10的塊)是壞塊,則執行步驟2 ; 否則,對該數據塊執行塊讀取,並返回;2.搜索索引空間記錄表,看是否存在「Μ= 10」的映射記錄。如果未找到記錄,則 出錯返回;如果找到記錄,則執行步驟3 ;3.找到記錄「Μ = 10- > N = 1」,則對備份空間中/dev/mtdblockl的編號為1的 數據塊執行塊讀取,並返回。
權利要求
NandFlash存儲器中數據存儲方法,其特徵在於包括以下步驟a.劃分NandFlash存儲空間,分為可用空間、備份空間及索引空間,可用空間用以存儲作業系統中文件的數據塊,備份空間用以轉存儲臨界狀態的數據塊,索引空間用以存儲可用空間數據塊與備份空間數據塊的對應關係的記錄表;b.當需要對可用空間內某一地址進行讀、寫操作時,首先判斷該地址對應的數據塊A是否為壞塊,是則執行步驟e,否則對其進行讀、寫操作,並執行步驟c;c.判斷讀、寫操作中是否存在出錯情況,是則執行步驟d,否則,成功返回,不執行後續步驟;d.將數據塊A標註為「壞塊」,並執行步驟h;e.搜索索引空間中的記錄表,判斷是否存在數據塊A的記錄,如果有記錄則執行步驟f,否則執行步驟g;f.找到數據塊A在備份空間中的對應數據塊B,對數據塊B進行讀、寫操作,並判斷是否存在出錯情況,是則將數據塊B標註為「壞塊」,並執行步驟h,否則,成功返回,不執行後續步驟;g.如果當前需要執行讀操作,則出錯返回,如果當前需要執行寫操作,則執行步驟h;h.在備份空間中尋找第一個未被使用的臨界狀態的數據塊C,對該數據塊進行寫操作,如果成功,則執行步驟i,如果出錯,則將數據塊C標註為「壞塊」,返回步驟h;i.在索引空間的記錄表中新增一條記錄,記錄數據塊A與數據塊C的對應關係。
2.如權利要求1所述的NandFlash存儲器中數據存儲方法,其特徵在於所述寫操作 包括擦除、寫入、校驗。
全文摘要
本發明涉及Flash存儲技術,針對傳統技術中在NandFlash存儲器中數據存儲可靠性低的缺陷,本發明公開了一種具有高可靠性的在NandFlash存儲器中數據存儲方法。其技術方案的要點可概括為通過對NandFlash存儲空間進行劃分,劃分為可用空間、備份空間及索引空間,當檢測到可用空間中的某個數據塊為壞塊時,通過搜索索引空間記錄,在備份空間中尋找其對應數據塊來進行讀寫,而如果沒有對應的數據塊則需要將備份空間中第一個未使用的臨界狀態數據塊作為其對應數據塊,並在索引空間中新建對應關係。本發明的有益效果是在NandFlash存儲器中實現可靠數據存儲,提高存儲空間利用率。
文檔編號G06F12/06GK101908023SQ20101024759
公開日2010年12月8日 申請日期2010年8月6日 優先權日2010年8月6日
發明者廖福成 申請人:四川長虹電器股份有限公司