一種nand flash壞塊管理方法
【專利摘要】本發(fā)明提供一種NAND FLASH壞塊管理方法,解決常見NAND FALSH壞塊管理算法中速度與容量無法均衡的問題。該本發(fā)明在一個操作周期即可得到邏輯塊地址對應的物理塊地址。本發(fā)明可以在采用較少存儲空間的情況下,實現(xiàn)壞塊的管理工作。同時速度與全容量映射方法一樣,在一個操作周期即可得到邏輯塊地址對應的物理塊地址。有效解決了常見的壞塊管理方法中速度與面積的矛盾。將該方法應用在存儲器的電子設計中,降低了對硬件的要求,如計算映射關系的RAM、存儲映射表的FLASH等,在不降低產(chǎn)品性能的情況下,顯著降低產(chǎn)品的板面積和成本。本發(fā)明明顯縮小芯片集成電路規(guī)模和芯片面積。
【專利說明】—種NAND FLASH壞塊管理方法
[0001]
[0002]
[0003]
[0004]
【技術領域】
[0005]本發(fā)明屬于航空電子【技術領域】,具體涉及一種NAND FLASH壞塊管理方法。
【背景技術】
[0006]NAND FLASH Memory是一種點可擦除讀寫非易失性存儲器。它具有高密度,低成本,非易失性,功耗低,讀寫和擦除速度快等優(yōu)點,因此在移動設備中得到了廣泛應用。為了提高產(chǎn)品是良品率,NAND FLASH在出廠時存在一定比例的壞塊,芯片廠家會在固定位置給出壞塊標記,此外在使用過程中,也可能產(chǎn)生新的壞塊。由于壞塊無法完成正常的讀、寫、擦操作,因此采用一種方便快捷的壞塊管理方法,屏蔽壞塊的使用,使得數(shù)據(jù)始終在有效塊上操作,使用該類存儲器,保證數(shù)據(jù)安全必須的過程。
[0007]為了使用方便,我們將應用層欲操作的塊地址稱為邏輯塊地址,將實際數(shù)據(jù)存放的塊地址稱為物理塊地址,邏輯塊地址到物理塊地址的對應關系,稱為映射關系,存儲該映射關系的表,稱為映射表。目前普遍采用的壞塊管理方法主要有兩種:一是采用全容量映射的方法。首先將物理塊地址分為數(shù)據(jù)區(qū)和冗余區(qū),然后每個NAND FLASH邏輯塊均對應一個物理塊地址,存儲該塊對應的物理地址,如果數(shù)據(jù)區(qū)存在壞塊,則從冗余區(qū)選擇一個好塊進行映射即可。操作某塊時,直接讀取映射表,即可得到對應的物理塊地址。二是采用壞塊映射的方法。即僅對壞塊進行映射,每個壞塊均有一個冗余區(qū)好塊進行對應。每次操作前,首先遍歷映射區(qū),如果有對應的地址,則操作冗余區(qū)物理地址,如果沒有,則說明當前塊為好塊??芍苯舆M行操作。
[0008]從以上描述可以看出,方法一隨著存儲容量的增加,其需要的存儲的地址的容量成比例上升。尤其在海量存儲設備中,其容量大到不可接受的地步。方法二,雖然存儲容量較小,但是由于每次操作前,均需要進行掃描,會嚴重影響整個系統(tǒng)的讀寫速度。
【發(fā)明內(nèi)容】
[0009]發(fā)明目的:提供一種NAND FLASH壞塊管理方法,解決常見NAND FALSH壞塊管理算法中速度與容量無法均衡的問題。
[0010]技術方案:一種NAND FLASH壞塊管理方法,首先建立壞塊標記表和映射表,將NAND FLASH的物理存儲區(qū)域分為數(shù)據(jù)區(qū)和冗余區(qū),其中數(shù)據(jù)區(qū)作為數(shù)據(jù)的正常記錄區(qū)域,冗余區(qū)作為數(shù)據(jù)區(qū)中壞塊的備份,并定義邏輯區(qū)與數(shù)據(jù)區(qū)地址相同且大小一致;首先,按照數(shù)據(jù)區(qū)地址順序遍歷NAND FLASH壞塊標記,按照遍歷順序建立一個壞塊標記表,使用I表示對應塊為壞塊,O表示對應塊為好塊;當某塊為壞塊時,在冗余區(qū)尋找一個好塊建立映射關系,形成映射表,映射表中未使用的地址寫入全F將該映射關系保存;當需要操作某個邏輯區(qū)塊的地址時,按照以下步驟實現(xiàn)其對應的物理塊地址:
[0011]步驟1:查詢壞塊標記,若壞塊標記為0,說明與該邏輯塊地址值相同的數(shù)據(jù)區(qū)塊為好塊,可直接操作;若壞塊標記為1,轉(zhuǎn)步驟2 ;
[0012]步驟2:將邏輯區(qū)塊地址對應的壞塊標記表中地址之前的I相加,記為sum,轉(zhuǎn)步驟3 ;
[0013]步驟3:將sum作為映射表的地址,輸出映射表地址sum位置存儲的數(shù)據(jù),即為對應的冗余區(qū)的物理塊地址。
[0014]優(yōu)選的,步驟2采用二進制全加器實現(xiàn)。
[0015]優(yōu)選的,步驟2具體采用硬件電路或FPGA實現(xiàn)。
[0016]如果對某個邏輯區(qū)塊的地址進行操作時發(fā)現(xiàn)新的壞塊,則需要更新壞塊標記表和映射表,按照以下步驟實現(xiàn):
[0017]步驟4:將當前塊的壞塊標記更新為1,轉(zhuǎn)步驟5 ;
[0018]步驟5:在冗余區(qū)尋找未使用的好塊進行映射,轉(zhuǎn)步驟6 ;
[0019]步驟6:將sum開始的內(nèi)容依次后移,將映射關系填入sum位置即可建立新的映射表。
[0020]有益效果:本發(fā)明可以在采用較少存儲空間的情況下,實現(xiàn)壞塊的管理工作。同時速度與全容量映射方法一樣,在一個操作周期即可得到邏輯塊地址對應的物理塊地址。有效解決了常見的壞塊管理方法中速度與面積的矛盾。將該方法應用在存儲器的電子設計中,降低了對硬件的要求,如計算映射關系的RAM、存儲映射表的FLASH等,在不降低產(chǎn)品性能的情況下,顯著降低產(chǎn)品的板面積和成本。將該方法應用在NAND FLASH控制器等芯片設計中,可以在不降低產(chǎn)品性能的情況下,明顯縮小芯片集成電路規(guī)模和芯片面積。
【專利附圖】
【附圖說明】
[0021]圖1常見的壞塊管理方法一
[0022]圖2常見的壞塊管理方法二
[0023]圖3本發(fā)明采用的壞塊管理方法
[0024]圖4標記求和方法
[0025]圖5以某NAND FLASH為例的壞塊管理方法示意圖
【具體實施方式】
[0026]下面結合附圖對本發(fā)明做進一步詳細描述,如圖3所示,首先建立壞塊標記表和映射表,將NAND FLASH的物理存儲區(qū)域分為數(shù)據(jù)區(qū)和冗余區(qū),其中數(shù)據(jù)區(qū)作為數(shù)據(jù)的正常記錄區(qū)域,冗余區(qū)作為數(shù)據(jù)區(qū)中壞塊的備份,并定義邏輯區(qū)與數(shù)據(jù)區(qū)地址相同且大小一致;首先,按照數(shù)據(jù)區(qū)地址順序遍歷NAND FLASH壞塊標記,按照遍歷順序建立一個壞塊標記表,使用I表示對應塊為壞塊,O表示對應塊為好塊;當某塊為壞塊時,在冗余區(qū)尋找一個好塊建立映射關系,形成映射表,映射表中未使用的地址寫入全F將該映射關系保存;當需要操作某個邏輯區(qū)塊的地址時,按照以下步驟實現(xiàn)其對應的物理塊地址:
[0027]步驟1:查詢壞塊標記,若壞塊標記為0,說明與該邏輯塊地址值相同的數(shù)據(jù)區(qū)塊為好塊,可直接操作;若壞塊標記為1,轉(zhuǎn)步驟2 ;
[0028]步驟2:將邏輯區(qū)塊地址對應的壞塊標記表中地址之前的I相加,采用二進制全加器實現(xiàn),具體采用硬件電路或FPGA實現(xiàn)。記為sum,轉(zhuǎn)步驟3 ;
[0029]步驟3:將sum作為映射表的地址,輸出映射表地址sum位置存儲的數(shù)據(jù),即為對應的冗余區(qū)的物理塊地址。
[0030]如果對某個邏輯區(qū)塊的地址進行操作時發(fā)現(xiàn)新的壞塊,則需要更新壞塊標記表和映射表,按照以下步驟實現(xiàn):
[0031]步驟4:將當前塊的壞塊標記更新為1,轉(zhuǎn)步驟5 ;
[0032]步驟5:在冗余區(qū)尋找未使用的好塊進行映射,轉(zhuǎn)步驟6 ;
[0033]步驟6:將sum開始的內(nèi)容依次后移,將映射關系填入sum位置即可建立新的映射表。
[0034]下面以如圖5所示例具體進一步詳細描述,示例中NAND FLASH有16384個塊,其中第3、5、9塊為壞塊的NAND FLASH為例進行說明,假設數(shù)據(jù)區(qū)為第O塊?第15999塊,冗余區(qū)為第16000塊?第16384塊,第8塊在操作過程中損壞。首先通過讀取NAND FLASH的壞塊標記,判斷是否為壞塊,按照遍歷順序建立一個16384Xlbit的壞塊標記表,其中第3,5,9塊的標記為1,其余標記為O。分別于冗余區(qū)的第16000,16001,16002塊建立建立映射關系,在冗余塊映射表的地址1,2,3分別填入16000,16001,16002,其余未使用的地址寫入全F,將該映射關系保存。當需要操作某個邏輯區(qū)塊的地址時,按照以下步驟實現(xiàn)其對應的物理塊地址:
[0035]步驟1:查詢壞塊標記,若壞塊標記為0,說明與該邏輯塊地址值相同的數(shù)據(jù)區(qū)塊為好塊,可直接操作;若壞塊標記為1,進入步驟2,以圖5所示例,操作邏輯地址0,1,2,4,6,7,8,10……時,查詢壞塊標記為O,轉(zhuǎn)換后的物理地址為地址0,I,2,4,6,7,8,10……。當操作邏輯地址3,5,9時,由于壞塊標記為I,轉(zhuǎn)步驟2 ;
[0036]步驟2:將地址3,5,9之前所有的壞塊標記相加,通過二進制全加器分別得到sum為1,2,3.,轉(zhuǎn)步驟3 ;
[0037]步驟3:將1,2,3作為映射表地址,分別得到冗余區(qū)的物理塊地址16000,16001,16002,即對邏輯塊3,5,9的操作,就是對物理塊16000,16001,16002的操作。
[0038]如果對某個邏輯區(qū)塊的地址進行操作時發(fā)現(xiàn)新的壞塊,則需要更新壞塊標記表和映射表,以圖5示例,操作第8塊時,發(fā)現(xiàn)其損壞,此刻需要更新壞塊標記表和冗余映射表。按照以下步驟實現(xiàn):
[0039]步驟4:將當前塊的壞塊標記地址8的位置更新為I。轉(zhuǎn)步驟5 ;
[0040]步驟5:在冗余區(qū)尋找未使用的好塊16003進行映射。此時,sum為3,轉(zhuǎn)步驟6 ;
[0041]步驟6:將映射表地址3開始的內(nèi)容依次后移,將16003填入地址3的位置,完成映射表的更新。
[0042]通過以上示例,可以看出共需要16384X lbit+384byteX2 = 2816byte的存儲空間,由于中間的加法器采用硬件電路或FPGA實現(xiàn),所以實際的操作周期為I個時鐘。
[0043]若采用圖1所示全映射的壞塊管理方法,則需要16384X2byte = 32768byte的存儲空間,操作周期為I個時鐘。
[0044]若采用圖2冗余區(qū)映射的壞塊管理方法,則需要384byteX2 = 768byte的存儲空間,但是操作周期至少為384個時鐘。
[0045]可見在本示例中,全映射的壞塊管理方法所需的存儲空間是本發(fā)明的11.6倍,操作周期相同,而冗余區(qū)映射的壞塊管理方法所需時間是本發(fā)明的384倍,但存儲空間只有本發(fā)明的0.27倍。
【權利要求】
1.一種NAND FLASH壞塊管理方法,首先建立壞塊標記表和映射表,將NAND FLASH的物理存儲區(qū)域分為數(shù)據(jù)區(qū)和冗余區(qū),其中數(shù)據(jù)區(qū)作為數(shù)據(jù)的正常記錄區(qū)域,冗余區(qū)作為數(shù)據(jù)區(qū)中壞塊的備份,并定義邏輯區(qū)與數(shù)據(jù)區(qū)地址相同且大小一致;首先,按照數(shù)據(jù)區(qū)地址順序遍歷NAND FLASH壞塊標記,按照遍歷順序建立一個壞塊標記表,使用I表示對應塊為壞塊,O表示對應塊為好塊;當某塊為壞塊時,在冗余區(qū)尋找一個好塊建立映射關系,形成映射表,映射表中未使用的地址寫入全F將該映射關系保存;其特征在于,當需要操作某個邏輯區(qū)塊的地址時,按照以下步驟實現(xiàn)其對應的物理塊地址: 步驟1:查詢壞塊標記,若壞塊標記為O,說明與該邏輯塊地址值相同的數(shù)據(jù)區(qū)塊為好塊,可直接操作;若壞塊標記為1,轉(zhuǎn)步驟2 ; 步驟2:將邏輯區(qū)塊地址對應的壞塊標記表中地址之前的I相加,記為sum,轉(zhuǎn)步驟3 ; 步驟3:將sum作為映射表的地址,輸出映射表地址sum位置存儲的數(shù)據(jù),即為對應的冗余區(qū)的物理塊地址。
2.根據(jù)權利要求1所述的一種NANDFLASH壞塊管理方法,其特征在于,步驟2采用二進制全加器實現(xiàn)。
3.根據(jù)權利要求2所述的一種NANDFLASH壞塊管理方法,其特征在于,步驟2具體采用硬件電路或FPGA實現(xiàn)。
4.根據(jù)權利要求1至3任意一項所述的一種NANDFLASH壞塊管理方法,其特征在于,如果對某個邏輯區(qū)塊的地址進行操作時發(fā)現(xiàn)新的壞塊,則需要更新壞塊標記表和映射表,按照以下步驟實現(xiàn): 步驟4:將當前塊的壞塊標記更新為1,轉(zhuǎn)步驟5 ; 步驟5:在冗余區(qū)尋找未使用的好塊進行映射,轉(zhuǎn)步驟6 ; 步驟6:將sum開始的內(nèi)容依次后移,將映射關系填入sum位置即可建立新的映射表。
【文檔編號】G06F12/06GK104317733SQ201410589259
【公開日】2015年1月28日 申請日期:2014年10月28日 優(yōu)先權日:2014年10月28日
【發(fā)明者】程金, 賈寧, 周波岐 申請人:陜西千山航空電子有限責任公司