專利名稱:一種面向大容量flash固存的壞塊管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種存儲(chǔ)器的壞塊處理方法,特別是一種大容量FLASH固存 的壞塊處理方法。
背景技術(shù):
快速擦寫(xiě)存儲(chǔ)器FLASH是目前性能價(jià)格比和可靠性最高的可擦寫(xiě)、非易
失存儲(chǔ)器。由于存儲(chǔ)容量大,F(xiàn)LASH供應(yīng)商不保證出廠的芯片沒(méi)有缺陷,而需
要使用者在應(yīng)用過(guò)程中自行識(shí)別有缺陷的存儲(chǔ)區(qū),并做出相應(yīng)的處理。由于X
容量FLASH是以塊為最高的存儲(chǔ)區(qū)單位(整個(gè)存儲(chǔ)體由若干存儲(chǔ)塊組成,每
個(gè)存儲(chǔ)塊包括若干個(gè)存儲(chǔ)頁(yè),每個(gè)存儲(chǔ)頁(yè)含有若干存儲(chǔ)字節(jié)),所以一般對(duì)有缺
陷的存儲(chǔ)區(qū)也是按塊來(lái)處理。因此,壞塊處理是大容量FLASH應(yīng)用中的一個(gè) 重點(diǎn)和難點(diǎn)。
傳統(tǒng)的壞塊處理方法是采用順序替換的方式,如上海交通大學(xué)微電子學(xué)院 謝凱年在2007年第16期總第255期《現(xiàn)代電子技術(shù)》上發(fā)表的"超大容量NAND FLASH壞區(qū)管理方法的設(shè)計(jì)與實(shí)現(xiàn)" 一文中的圖3所示,即若發(fā)現(xiàn)當(dāng)前操作的 存儲(chǔ)塊的前一個(gè)存儲(chǔ)塊為壞塊,則用緊鄰的下一個(gè)存儲(chǔ)塊來(lái)替換壞塊。該種方 法的問(wèn)題在于每個(gè)壞塊的替換操作都會(huì)影響到后續(xù)其他所有存儲(chǔ)塊的地址映 射,而且不管是有效塊還是壞塊都必須進(jìn)行地址映射。因此,在實(shí)際應(yīng)用中, 這種順序替換的方法使壞塊的處理操作變得非常復(fù)雜,需要相當(dāng)多的地址映射 資源和數(shù)據(jù)處理時(shí)間。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問(wèn)題是克服現(xiàn)有技術(shù)的不足,提供一種硬件資源占用 少、處理速度快的大容量FLASH固存的壞塊處理方法。
本發(fā)明的技術(shù)解決方案是 一種面向大容量FLASH固存的壞塊處理方法,其特征在于步驟如下
(1) 建立壞塊信息表,用于記錄壞塊和替換塊的地址映射關(guān)系;
(2) 設(shè)置壞塊信息記錄指針,用于指示當(dāng)前遇到的壞塊記錄位置,起始指 向?yàn)閴膲K信息表的首記錄;設(shè)置壞塊信息操作指針,用于指示當(dāng)前正在使用的 壞塊及與其對(duì)應(yīng)的替換塊,起始指向與壞塊信息記錄指針的起始指向相同;設(shè) 置最新替換塊寄存器,用于保存最新分配的替換塊的地址;
(3) 當(dāng)存儲(chǔ)器出現(xiàn)壞塊時(shí),記錄該壞塊的地址,同時(shí)為該壞塊指定替換塊, 將壞塊及其替換塊的地址添加至壞塊信息表中,最新替換塊寄存器指示所述替 換塊的地址;替換塊的分配從存儲(chǔ)器的最高的塊地址開(kāi)始向最低的塊地址依次 遞減;
(4) 若所述替換塊也為壞塊,則跳過(guò)所述替換塊重新分配新的替換塊,替 換塊為壞塊的不再添加至壞塊信息表中,最新替換塊寄存器指示所述新替換塊 的地址并用其替換壞塊信息表中的相應(yīng)記錄;
(5) 壞塊信息記錄指針指向下一記錄位置,壞塊信息才喿作指針指向當(dāng)前遇 到的壞塊及其替換塊的記錄位置,若當(dāng)前操作塊未出現(xiàn)在壞塊信息表的記錄中, 則壞塊信息操作指針保留當(dāng)前指示位置。
(6 )當(dāng)壞塊的數(shù)量達(dá)到了所能容忍的最大壞塊個(gè)數(shù)或替換塊的地址達(dá)到了 壞塊處理能力上限地址時(shí),提示壞塊數(shù)量溢出,無(wú)法繼續(xù)處理。 所述的最低的塊地址為壞塊處理能力上限地址。
所述的壞塊處理能力上限地址的確定方法為壞塊處理能力上限;1也址=存儲(chǔ)
器最高位地址-所能容忍的最大壞塊個(gè)數(shù)+1 ,其中所能容忍的最大壞塊個(gè)數(shù)由用 戶設(shè)定。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于本發(fā)明方法通過(guò)建立壞塊信息表,用 于記錄壞塊和替換塊的地址映射關(guān)系,并且替換塊的分配從存儲(chǔ)器的最高塊地 址開(kāi)始向最低塊地址依次遞減,與正常數(shù)據(jù)操作的地址完全獨(dú)立開(kāi),使得某個(gè) 壞塊的替換操作不會(huì)影響到后續(xù)其他存儲(chǔ)塊的地址映射,vA而簡(jiǎn)化了壞塊處理的操作,減少了硬件資源的占用,提高了壞塊處理的速度。壞塊的處理能力可
由用戶根據(jù)實(shí)際情況確定,操作靈活、筒便。
圖1為本發(fā)明壞塊處理方法的原理框圖; 圖2為本發(fā)明實(shí)施例中壞塊處理的示意過(guò)程圖一; 圖3為本發(fā)明實(shí)施例中壞塊處理的示意過(guò)程圖二; 圖4為本發(fā)明實(shí)施例中壞塊處理的示意過(guò)程圖三。
具體實(shí)施例方式
如圖1所示,為本發(fā)明壞塊處理方法的原理框圖。首先建立壞塊信息表, 用于記錄壞塊和替換塊的地址映射關(guān)系,并在信息表中設(shè)置壞塊信息記錄指針, 用于指示當(dāng)前遇到的壞塊記錄位置,起始指向?yàn)閴膲K信息表的首記錄;設(shè)置壞 塊信息操作指針,用于指示當(dāng)前正在使用的壞塊及與其對(duì)應(yīng)的替換塊,起始指
向與壞塊信息記錄指針的起始指向相同;設(shè)置最新替換塊寄存器,用于保存最
新分配的替換塊的地址;當(dāng)存儲(chǔ)器出現(xiàn)壞塊時(shí),記錄該壞塊的地址,同時(shí)為該 壞塊指定替換塊,將壞塊及其替換塊的地址添加至壞塊信息表中,最新替換塊 寄存器指示所述替換塊的地址;替換塊的分配從存儲(chǔ)器的最高的塊地址開(kāi)始向 最低的塊地址(壞塊處理能力上限地址)依次遞減;若所述替換塊也為壞塊, 則跳過(guò)所述替換塊重新分配新的替換塊,替換塊為壞塊的不再添加至壞塊信息 表中,最新替換塊寄存器指示所述新替換塊的地址并用其替換壞塊信息表中的 相應(yīng)記錄;隨后壞塊信息記錄指針指向下一記錄位置,壞塊信息操作指針指向 當(dāng)前遇到的壞塊及其替換塊的記錄位置,若當(dāng)前操作塊未出現(xiàn)在壞塊信息表的 記錄中,則壞塊信息操作指針保留當(dāng)前指示位置。當(dāng)壞塊的數(shù)量達(dá)到了所能容 忍的最大壞塊個(gè)數(shù)或替換塊的地址達(dá)到了壞塊處理能力上限地址時(shí),提示壞塊 數(shù)量溢出,無(wú)法繼續(xù)處理。
壞塊處理能力上限地址的確定方法為壞塊處理能力上限地址=存^[諸器最高 位地址-所能容忍的最大壞塊個(gè)數(shù)+1,其中所能容忍的最大壞塊個(gè)數(shù)由用戶設(shè)定。
實(shí)施例
下面以一個(gè)128Kx8bit存儲(chǔ)容量、8192個(gè)存儲(chǔ)塊的FLASH為例進(jìn)一步 說(shuō)明本發(fā)明方法的原理。在此設(shè)定最大的壞塊處理能力為255,則需要設(shè)計(jì)一 個(gè)256 x 26bit的壞塊信息表,其中塊地址列表和替換塊地址列表各13位(由 于8192=213)。對(duì)該FLASH的壞塊處理需要一個(gè)8位(由于256=28)的壞塊 信息記錄指針,用于指示壞塊信息表當(dāng)前可以使用的壞塊記錄位置;需要一個(gè) 8位的壞塊信息操作指針,表示當(dāng)前正在使用的壞塊及其替換塊;需要一個(gè)塊 分類標(biāo)志信號(hào),表示當(dāng)前進(jìn)行編程/讀操作的是正常的存儲(chǔ)塊還是替換塊;需要 一個(gè)13位的最新替換塊寄存器,用于保存最新分配的替換塊地址。如果最新 的替換塊地址等于7937 (即8191 -255+ 1 ),則表示壞塊數(shù)量溢出。
圖2、圖3和圖4是壞塊處理過(guò)程的示意圖。
圖2已經(jīng)記錄了 3個(gè)壞塊的地址(用十進(jìn)制表示)10、 125和462。按照 替換塊地址的分配方案,第一個(gè)壞塊的替換塊地址為8191,其后依次為8190 和8189。記錄指針指到壞塊信息表的第4個(gè)存儲(chǔ)位置,表明下一個(gè)新的壞塊地 址保存到該位置。操作指針指到第2個(gè)存儲(chǔ)位置,如果此時(shí)塊分類標(biāo)志信號(hào)表 示當(dāng)前進(jìn)行編程/讀操作的是替換塊,那么當(dāng)前操作的存儲(chǔ)塊的地址為8190。 最新替換塊寄存器記錄了最后一個(gè)被分配了的替換塊是8189。
在圖2的J^f出上,如果8190存儲(chǔ)塊在操作中出現(xiàn)損壞,那么需要為125 存儲(chǔ)塊重新分配替換塊按照最新替換塊寄存器記錄的地址遞減即可。而最新 替換塊寄存器也需要相應(yīng)地更新。但是替換塊是壞塊則不需要記錄到壞塊地址 列表中,如圖3所示。
在圖3的基礎(chǔ)上,如果出現(xiàn)新的壞塊(如500),那么需要為其分配替換塊 (如8187),按照最新替換塊寄存器記錄的地址遞減即可,而最新替換塊寄存 器也需要相應(yīng)地更新。壞塊地址和替換塊地址都記錄到壞塊信息表中的第4個(gè) 存儲(chǔ)位置,記錄指針則指向第5個(gè)存儲(chǔ)位置(表明該位置還沒(méi)有記錄信息,是下一個(gè)可用的記錄位置),如圖4所示。
如果壞塊數(shù)量達(dá)到了 255,則由FLASH使用者決定是否放棄當(dāng)前使用的 FLASH芯片,改用備份FLASH。當(dāng)需要查詢壞塊數(shù)量時(shí),用8192減去最新 替換塊的地址就可以得到當(dāng)前的壞塊數(shù)量。而判斷壞塊數(shù)量是否溢出,則只需 要看最新替換塊寄存器保存的數(shù)值是否等于7937 (8191-255+1=7937)。
本發(fā)明說(shuō)明書(shū)中未作詳細(xì)描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。
權(quán)利要求
1、一種面向大容量FLASH固存的壞塊處理方法,其特征在于步驟如下(1)建立壞塊信息表,用于記錄壞塊和替換塊的地址映射關(guān)系;(2)設(shè)置壞塊信息記錄指針,用于指示當(dāng)前遇到的壞塊記錄位置,起始指向?yàn)閴膲K信息表的首記錄;設(shè)置壞塊信息操作指針,用于指示當(dāng)前正在使用的壞塊及與其對(duì)應(yīng)的替換塊,起始指向與壞塊信息記錄指針的起始指向相同;設(shè)置最新替換塊寄存器,用于保存最新分配的替換塊的地址;(3)當(dāng)存儲(chǔ)器出現(xiàn)壞塊時(shí),記錄該壞塊的地址,同時(shí)為該壞塊指定替換塊,將壞塊及其替換塊的地址添加至壞塊信息表中,最新替換塊寄存器指示所述替換塊的地址;替換塊的分配從存儲(chǔ)器的最高的塊地址開(kāi)始向最低的塊地址依次遞減;(4)若所述替換塊也為壞塊,則跳過(guò)所述替換塊重新分配新的替換塊,替換塊為壞塊的不再添加至壞塊信息表中,最新替換塊寄存器指示所述新替換塊的地址并用其替換壞塊信息表中的相應(yīng)記錄;(5)壞塊信息記錄指針指向下一記錄位置,壞塊信息操作指針指向當(dāng)前遇到的壞塊及其替換塊的記錄位置,若當(dāng)前操作塊未出現(xiàn)在壞塊信息表的記錄中,則壞塊信息操作指針保留當(dāng)前指示位置。(6)當(dāng)壞塊的數(shù)量達(dá)到了所能容忍的最大壞塊個(gè)數(shù)或替換塊的地址達(dá)到了壞塊處理能力上限地址時(shí),提示壞塊數(shù)量溢出,無(wú)法繼續(xù)處理。
2、 根據(jù)權(quán)利要求1所述的一種面向大容量FLASH固存的壞塊處理方法, 其特征在于所述的最低的塊地址為壞塊處理能力上限地址。
3、 根據(jù)權(quán)利要求1或2所述的一種面向大容量FLASH固存的壞塊處理方 法,其特征在于所述的壞塊處理能力上限地址的確定方法為壞塊處理能力 上限地址=存儲(chǔ)器最高位地址-所能容忍的最大壞塊個(gè)數(shù)+1,其中所能容忍的最 大壞塊個(gè)數(shù)由用戶設(shè)定。
全文摘要
一種面向大容量FLASH固存的壞塊處理方法,首先建立壞塊信息表,用于記錄壞塊和替換塊的地址映射關(guān)系;當(dāng)存儲(chǔ)器出現(xiàn)壞塊時(shí),記錄該壞塊的地址,同時(shí)為該壞塊指定替換塊,將壞塊及其替換塊的地址添加至壞塊信息表中,替換塊的分配從存儲(chǔ)器的最高的塊地址開(kāi)始向最低的塊地址依次遞減;若替換塊也為壞塊,則跳過(guò)所述替換塊重新分配新的替換塊,替換塊為壞塊的不再添加至壞塊信息表中;重復(fù)上述操作,當(dāng)壞塊的數(shù)量達(dá)到了所能容忍的最大壞塊個(gè)數(shù)或替換塊的地址達(dá)到了壞塊處理能力上限地址時(shí),提示壞塊數(shù)量溢出,無(wú)法繼續(xù)處理。
文檔編號(hào)G11C29/04GK101320596SQ20081011461
公開(kāi)日2008年12月10日 申請(qǐng)日期2008年6月10日 優(yōu)先權(quán)日2008年6月10日
發(fā)明者爽 姜, 俊 杜, 蘇昌明, 袁大威, 趙可成, 芳 鮑 申請(qǐng)人:北京時(shí)代民芯科技有限公司;中國(guó)航天時(shí)代電子公司第七七二研究所