專利名稱:檢測(cè)存儲(chǔ)設(shè)備壞塊的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)技術(shù),尤其涉及一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法和裝置。
背景技術(shù):
Nand閃存是一種比硬盤驅(qū)動(dòng)器更好的存儲(chǔ)方案,由于其編程速度快、擦除時(shí)間短,在現(xiàn)有產(chǎn)品的應(yīng)用中極具吸引力。根據(jù)技術(shù)方式,Nand閃存分為單層單元(Single LayerCell,簡(jiǎn)稱 SLC)Nand 閃存和多層單兀(Multi-Level Cell,簡(jiǎn)稱 MLC)Nand 閃存。SLC Nand閃存的每個(gè)存儲(chǔ)單元中只有Ibit數(shù)據(jù),而MLC Nand閃存的每個(gè)存儲(chǔ)單元存儲(chǔ)2bit數(shù)據(jù)。與SLC Nand閃存相比,MLC Nand閃存的容量大、成本低,但由于MLC Nand閃存的存儲(chǔ)單元 中存放的資料較多,結(jié)構(gòu)復(fù)雜,出錯(cuò)的幾率大,容易發(fā)生位翻轉(zhuǎn),在使用MLCNand閃存時(shí),需要使用糾錯(cuò)算法進(jìn)行數(shù)據(jù)的校驗(yàn)和糾錯(cuò)?,F(xiàn)有技術(shù)中,針對(duì)Nand閃存的使用過程中新增壞塊的檢測(cè)主要采用以下兩種方案。方案一只有在擦除失敗的時(shí)候,將塊標(biāo)記為壞塊,如果在寫的過程中出現(xiàn)位翻轉(zhuǎn)現(xiàn)象,直接返回失敗給上層文件系統(tǒng)處理,如果在讀的過程中出現(xiàn)糾錯(cuò)算法不能糾正的情況,也直接返回失敗給上層文件系統(tǒng)處理。方案二 在擦除失敗的時(shí)候,將塊標(biāo)記為壞塊,并且,如果在寫的過程中出現(xiàn)位翻轉(zhuǎn)現(xiàn)象,將塊標(biāo)記為壞塊,如果在讀的過程中出現(xiàn)糾錯(cuò)算法不能糾正的情況,也將塊標(biāo)記為壞塊。采用上述兩種檢測(cè)壞塊的方法,容易造成由于壞塊太多而找不到可用塊進(jìn)行寫操作或數(shù)據(jù)無(wú)法讀出的現(xiàn)象,甚至由于壞塊數(shù)量太多使得芯片報(bào)廢,從而導(dǎo)致存儲(chǔ)設(shè)備的可
靠性差。
發(fā)明內(nèi)容
本發(fā)明的第一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法,用以解決現(xiàn)有技術(shù)中的缺陷,提高存儲(chǔ)設(shè)備的可靠性。本發(fā)明的另一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置,用以解決現(xiàn)有技術(shù)中的缺陷,提高存儲(chǔ)設(shè)備的可靠性。本發(fā)明的第一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法,包括向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記。
如上所述的方法,其中,向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼包括獲取一個(gè)空閑塊;判斷空閑塊是否攜帶壞塊標(biāo)記;如果是,返回獲取一個(gè)空閑塊的步驟;否則,以空閑塊作為目標(biāo)塊,向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量包括從目標(biāo)塊中讀取存儲(chǔ)的目標(biāo)數(shù)據(jù),比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。本發(fā)明的另一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法,包括當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo) 數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù);當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。如上所述的方法,其中,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)之后,還包括根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù);當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于第一校驗(yàn)水線時(shí),向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。如上所述的方法,其中,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)之后,還包括根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記,向目標(biāo)塊的下一個(gè)空閑塊中寫入并向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。本發(fā)明的又一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置,包括寫入單元,用于向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的校驗(yàn)碼;比較單元,用于比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;標(biāo)記單元,用于當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記。如上所述的裝置,其中,寫入單元具體用于獲取一個(gè)空閑塊,判斷空閑塊是否攜帶壞塊標(biāo)記,如果是,再次獲取一個(gè)空閑塊,否則,以空閑塊作為目標(biāo)塊,向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;比較單元具體用于從目標(biāo)塊中讀取存儲(chǔ)的目標(biāo)數(shù)據(jù),比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。本發(fā)明的再一個(gè)方面是提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置,包括讀取單元,用于當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 校驗(yàn)單元,用于在目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),并用于在目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。如上所述的裝置,其中,還包括比較單元,用于在目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;標(biāo)記單元,用于在目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;收發(fā)單元,用于向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。如上所述的裝置,其中,還包括比較單元還用于在目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;標(biāo)記單元還用于在目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記,向目標(biāo)塊的下一個(gè)空閑塊中寫入采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù);收發(fā)單元還用于向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。由上述發(fā)明內(nèi)容可見,本發(fā)明所提供的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法和裝置,通過在系統(tǒng)中為Nand Flash的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出,有效提高了存儲(chǔ)設(shè)備的可靠性。
圖I為本發(fā)明實(shí)施例一的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖;圖2為本發(fā)明實(shí)施例二的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖;圖3為本發(fā)明實(shí)施例三的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例四的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例六的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖;圖6為本發(fā)明實(shí)施例七的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖;
圖7為本發(fā)明實(shí)施例八的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例九的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖I為本發(fā)明實(shí)施例一的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖。如圖I所示,本實(shí)施例的方法包括步驟101 :向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。在本步驟中,具體的,寫入的目標(biāo)數(shù)據(jù)存放于該目標(biāo)塊的數(shù)據(jù)存儲(chǔ)區(qū);所生成的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼存儲(chǔ)于該目標(biāo)塊的空閑存儲(chǔ)區(qū)。優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。步驟102 比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,可將步驟I中寫入目標(biāo)塊中的目標(biāo)數(shù)據(jù)讀出,然后,與目標(biāo)數(shù)據(jù)進(jìn)行對(duì)比統(tǒng)計(jì),得到目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)發(fā)生翻轉(zhuǎn)的位的位數(shù)。步驟103 :判斷目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位數(shù)是否大于或等于第二校驗(yàn)水線。步驟104 :若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線,為目標(biāo)塊添加壞塊標(biāo)記。具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。例如,可設(shè)置第二校驗(yàn)水線為8bit/512Byte。表示若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過此值,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi)。優(yōu)選地,可存儲(chǔ)在空閑區(qū)的第6個(gè)字節(jié)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。步驟105 :若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),繼續(xù)判斷該翻轉(zhuǎn)的位數(shù)是否大于或等于第一校驗(yàn)水線。步驟106 :若翻轉(zhuǎn)的位數(shù)大于或等于預(yù)設(shè)的第一校驗(yàn)水線,為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并更新;步驟107 :若翻轉(zhuǎn)的位數(shù)小于預(yù)設(shè)的第一校驗(yàn)水線,向文件系統(tǒng)返回寫入成功消
肩、O在該步驟中,具體地,第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值就為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),可以為此目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,具體地,該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),且優(yōu)選地,可以存儲(chǔ)在存儲(chǔ)壞塊標(biāo)記的位置的后面。同時(shí),生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。當(dāng)目標(biāo)塊為準(zhǔn)壞塊時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。在本發(fā)明實(shí)施例一中,通過在系統(tǒng)中為寫入數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出,有效提高了存儲(chǔ)設(shè)備的可靠性。
圖2為本發(fā)明實(shí)施例二的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖。如圖2所示,該方法可以包括步驟201 :獲取一個(gè)空閑塊。具體地,在有待寫入數(shù)據(jù)時(shí),文件系統(tǒng)會(huì)首先查找Nand閃存中的空閑塊,然后選擇一個(gè)空閑塊。步驟202 :判斷所選擇的空閑塊是否攜帶壞塊標(biāo)記。具體地,若該塊攜帶壞塊標(biāo)記,則表明該塊已不能存儲(chǔ)數(shù)據(jù),則返回步驟201,繼續(xù)獲取下一個(gè)空閑塊。具體地,所選擇的空閑塊所攜帶的壞塊標(biāo)記可以為出廠壞塊標(biāo)記,也可以為新增壞塊標(biāo)記。因Nand flash生產(chǎn)工藝的問題,芯片在出廠的時(shí)候允許有一定的壞塊,這些壞塊被稱為固有壞塊。這些固有壞塊會(huì)被廠家打上出廠壞塊標(biāo)記,在有數(shù)據(jù)寫入時(shí),便不會(huì)存儲(chǔ)進(jìn)這些壞塊中。而這些新增壞塊標(biāo)記則是在數(shù)據(jù)的讀寫過程中添加進(jìn)去的。步驟203 :若該塊不攜帶壞塊標(biāo)記,則以該空閑塊作為目標(biāo)塊,向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。具體地,寫入的目標(biāo)數(shù)據(jù)存放于該目標(biāo)塊的數(shù)據(jù)存儲(chǔ)區(qū);所生成的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼存儲(chǔ)于該目標(biāo)塊的空閑存儲(chǔ)區(qū)。優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。步驟204 :比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,可以包括從目標(biāo)塊中讀取存儲(chǔ)的目標(biāo)數(shù)據(jù),然后比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),并統(tǒng)計(jì)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。步驟205 :判斷目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位數(shù)是否大于或等于第二校驗(yàn)水線。步驟206 :若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線,則為目標(biāo)塊添加壞塊標(biāo)記。具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。例如,可設(shè)置第二校驗(yàn)水線為8bit/512Byte。即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過此值,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。為目標(biāo)塊添加壞塊標(biāo)記之后,向文件系統(tǒng)返回寫入失敗消息,并返回步驟201,繼續(xù)獲取下一個(gè)空閑塊。具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存的空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在空閑區(qū)的第6個(gè)字節(jié)內(nèi)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。步驟207 :若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),繼續(xù)判斷該翻轉(zhuǎn)的位數(shù)是否大于或等于預(yù)設(shè)的第一校驗(yàn)水線。步驟208 :若翻轉(zhuǎn)的位數(shù)大于或等于預(yù)設(shè)的第一校驗(yàn)水線,則為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新。在該步驟中,具體地,第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值就為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。
當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第一校驗(yàn)水線時(shí),可以為此目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,具體地,該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi)存儲(chǔ)壞塊標(biāo)記的位置的后面。同時(shí),生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。當(dāng)目標(biāo)塊為準(zhǔn)壞塊時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。步驟209 :向文件系統(tǒng)返回寫入成功消息。具體地,可以在采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,向文件系統(tǒng)返回寫入成功消息;或者,當(dāng)數(shù)據(jù)翻轉(zhuǎn)位數(shù)小于第一校驗(yàn)水線的時(shí)候,直接向文件系統(tǒng)返回寫入成功消息。在本發(fā)明實(shí)施例二中,通過在系統(tǒng)中為數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出;且在寫入數(shù)據(jù)之前,先判斷塊的狀態(tài),保證了數(shù)據(jù)不會(huì)被寫入壞塊,有效提高了設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性。圖3為本發(fā)明實(shí)施例三的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖。如圖3所示,檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置300可包括寫入單元301,比較單元302和標(biāo)記單元303。具體地,寫入單元301用于向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的校驗(yàn)碼。具體地,寫入的目標(biāo)數(shù)據(jù)存放于該目標(biāo)塊的數(shù)據(jù)存儲(chǔ)區(qū);目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的校驗(yàn)碼存儲(chǔ)于該目標(biāo)塊的空閑存儲(chǔ)區(qū)。該校驗(yàn)碼可以為普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,也可以為高級(jí)校驗(yàn)強(qiáng)度對(duì)應(yīng)的校驗(yàn)碼。優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度,高級(jí)校驗(yàn)強(qiáng)度可以為略高于普通校驗(yàn)強(qiáng)度的的校驗(yàn)強(qiáng)度。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。比較單元302用于比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,通過獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量,可判斷塊的狀態(tài),并可根據(jù)塊的不同狀態(tài)選取不同的校驗(yàn)強(qiáng)度對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。
標(biāo)記單元303用于當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記。具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過此值,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值就為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。具體地,該添加的壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該區(qū)的第6個(gè)字節(jié)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。準(zhǔn)壞塊標(biāo)記也可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可以存儲(chǔ)在壞塊標(biāo)記的后邊一個(gè)字節(jié)。即,若壞塊標(biāo)記存儲(chǔ)在第6個(gè)字節(jié)內(nèi),則準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在第7字節(jié)。在本發(fā)明實(shí)施例三中,通過比較單元和標(biāo)記單元對(duì)寫入數(shù)據(jù)的位翻轉(zhuǎn)的判斷以及對(duì)目標(biāo)塊狀態(tài)的判斷,并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出,有效提高了存儲(chǔ)設(shè)備的可靠性。圖4為本發(fā)明實(shí)施例四的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖。如圖4所示,在上述實(shí)施例三的基礎(chǔ)上,檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置400還可以包括收發(fā)單元304。具體地,在上述實(shí)施例三的基礎(chǔ)上,寫入單元301具體還用于獲取一個(gè)空閑塊,判斷空閑塊是否攜帶壞塊標(biāo)記,如果是,再次獲取一個(gè)空閑塊,否則,以空閑塊作為目標(biāo)塊,向·目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。具體地,在文件系統(tǒng)有待寫入數(shù)據(jù)時(shí),會(huì)首先查找Nand閃存中的空閑塊,然后選擇一個(gè)空閑塊。若所選擇的空閑塊攜帶壞塊標(biāo)記,則表明此空閑塊是一個(gè)壞塊,不能存儲(chǔ)數(shù)據(jù),系統(tǒng)需返回獲取下一個(gè)空閑塊。所選擇的空閑塊所攜帶的壞塊標(biāo)記可以為出廠壞塊標(biāo)記,也可以為新增壞塊標(biāo)記。因Nand flash生產(chǎn)工藝的問題,芯片在出廠的時(shí)候允許有一定的壞塊,這些壞塊被稱為固有壞塊。這些固有壞塊會(huì)被廠家打上出廠壞塊標(biāo)記,在有數(shù)據(jù)寫入時(shí),便不會(huì)存儲(chǔ)進(jìn)這些壞塊中。而這些新增壞塊標(biāo)記則是在數(shù)據(jù)的讀寫過程中添加進(jìn)去的。比較單元302具體還用于從目標(biāo)塊中讀取存儲(chǔ)的目標(biāo)數(shù)據(jù),比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,通過獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量,可判斷塊的狀態(tài),以選取不同的校驗(yàn)強(qiáng)度對(duì)數(shù)據(jù)進(jìn)行保護(hù)。收發(fā)單元304用于在采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼之后向文件系統(tǒng)返回寫入成功消息,即報(bào)告數(shù)據(jù)寫入成功;收發(fā)單元304還用于在標(biāo)記單元303為目標(biāo)塊添加壞塊標(biāo)記之后向文件系統(tǒng)返回寫入失敗消息。即報(bào)告數(shù)據(jù)寫入失敗,寫入單元301會(huì)繼續(xù)選擇下一個(gè)空閑塊,并進(jìn)行判斷以重新寫入。在本發(fā)明實(shí)施例四中,通過比較單元和標(biāo)記單元對(duì)寫入數(shù)據(jù)的位翻轉(zhuǎn)的判斷以及對(duì)目標(biāo)塊狀態(tài)的判斷,并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出;且寫入單元對(duì)所選擇空閑塊狀態(tài)的判斷,保證了數(shù)據(jù)不會(huì)被寫入壞塊,有效提高了設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性。在本發(fā)明上述實(shí)施例技術(shù)方案的基礎(chǔ)上,進(jìn)一步地,在本發(fā)明實(shí)施例五中,可以包括寫入單元301首先獲取一個(gè)空閑塊,然后判斷該空閑塊是否攜帶壞塊標(biāo)記。具體地,該壞塊標(biāo)記可以為出廠壞塊標(biāo)記,也可以為新增壞塊標(biāo)記。如果該空閑塊攜帶壞塊標(biāo)記,則表示該塊為壞塊,不能存儲(chǔ)數(shù)據(jù),則寫入單元501再次獲取一個(gè)空閑塊。若該塊不攜帶壞塊標(biāo)記,則以該空閑塊作為目標(biāo)塊,向該目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。具體的,寫入的目標(biāo)數(shù)據(jù)存放于該目標(biāo)塊的數(shù)據(jù)存儲(chǔ)區(qū);所生成的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼存儲(chǔ)于該目標(biāo)塊的空閑存儲(chǔ)區(qū)。優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。在寫入單元301寫入數(shù)據(jù)后,比較單元302從目標(biāo)塊中讀取剛寫入的目標(biāo)數(shù)據(jù),比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。然后,比較單元302將目標(biāo)塊中存儲(chǔ)數(shù)據(jù)發(fā)生位翻轉(zhuǎn)的個(gè)數(shù)與預(yù)設(shè)的第二校驗(yàn)水線 向比較,判斷該翻轉(zhuǎn)的位數(shù)是否大于或等于第二校驗(yàn)水線。若翻轉(zhuǎn)的位數(shù)大于或等于第二校驗(yàn)水線,則標(biāo)記單元303為目標(biāo)塊添加壞塊標(biāo)記,且由收發(fā)單元304向文件系統(tǒng)返回寫入失敗消息,并由寫入單元301再次獲取一個(gè)空閑塊。具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。例如,可設(shè)置第二校驗(yàn)水線為8bit/512Byte。即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過此值,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)的第6個(gè)字節(jié)內(nèi)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),比較單元302繼續(xù)判斷該翻轉(zhuǎn)的位數(shù)是否大于或等于預(yù)設(shè)的第一校驗(yàn)水線。若是,則標(biāo)記單元303為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。具體地,第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值就為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),標(biāo)記單元303可以為此目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,具體地,該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū),優(yōu)選地,可存儲(chǔ)在存儲(chǔ)壞塊標(biāo)記的位置的后面。同時(shí),標(biāo)記單元303生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。當(dāng)目標(biāo)塊為準(zhǔn)壞塊時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。
在標(biāo)記單元303采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,由收發(fā)單元304向文件系統(tǒng)返回寫入成功消息。在本發(fā)明實(shí)施例五中,通過比較單元和標(biāo)記單元對(duì)寫入數(shù)據(jù)的位翻轉(zhuǎn)的判斷以及對(duì)目標(biāo)塊狀態(tài)的判斷,并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可保證塊由正常塊變?yōu)閴膲K時(shí)期中的數(shù)據(jù)可以被正確讀出;且寫入單元對(duì)所選擇空閑塊狀態(tài)的判斷,保證了數(shù)據(jù)不會(huì)被寫入壞塊,有效提高了設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性。圖5為本發(fā)明實(shí)施例六的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖。如圖5所示,本實(shí)施例的方法,可以包括步驟501 :判斷目標(biāo)塊是否攜帶準(zhǔn)壞塊標(biāo)記;通過判斷是否攜帶準(zhǔn)壞塊標(biāo)記,可知目標(biāo)塊的狀態(tài),以便后續(xù)讀取中校驗(yàn)強(qiáng)度的選擇。具體地,該準(zhǔn)壞塊標(biāo)記存儲(chǔ)在閃存空閑區(qū)內(nèi)。步驟502 :若目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記且未攜帶壞塊標(biāo)記,讀取目標(biāo)數(shù)據(jù)及對(duì)應(yīng) 的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,并采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),即該目標(biāo)塊是個(gè)好塊,只需進(jìn)行普通的校驗(yàn)即可。首先從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。如,優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte。步驟503 :若目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記,讀取目標(biāo)數(shù)據(jù)及對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,并采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。首先從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。在本發(fā)明實(shí)施例六中,通過在系統(tǒng)中為Nand Flash的塊狀態(tài)及其對(duì)應(yīng)校驗(yàn)強(qiáng)度的設(shè)置,可保證塊中的數(shù)據(jù)能被正確讀出,有效提高了設(shè)備中存儲(chǔ)數(shù)據(jù)的可靠性。圖6為本發(fā)明實(shí)施例七的檢測(cè)存儲(chǔ)設(shè)備壞塊的方法的流程圖。如圖6所示,該方法可以包括步驟601 :文件系統(tǒng)獲取到塊地址。具體地,在系統(tǒng)在讀取數(shù)據(jù)時(shí),文件系統(tǒng)會(huì)首先獲取到一個(gè)存儲(chǔ)數(shù)據(jù)的塊地址。步驟602 :判斷目標(biāo)塊是否攜帶準(zhǔn)壞塊標(biāo)記。步驟603 :若目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記,讀取目標(biāo)數(shù)據(jù)及對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,并采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。首先從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可以存儲(chǔ)在空閑區(qū)內(nèi)存儲(chǔ)壞塊標(biāo)記的位置的后面。具體地,該目標(biāo)數(shù)據(jù)存儲(chǔ)在閃存的數(shù)據(jù)存儲(chǔ)區(qū),目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼存儲(chǔ)在閃存的空閑區(qū)。在采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)之后,還包括步驟604 :根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,在從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,可進(jìn)行對(duì)比統(tǒng)計(jì),獲得目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。
步驟605 :判斷目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)位數(shù)是否大于或等于第二校驗(yàn)水線。具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。例如,可設(shè)置第二校驗(yàn)水線為 8bit/512Byte。步驟606 :當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記,向目標(biāo)塊的下一個(gè)空閑塊中寫入。具體地,即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過第二校驗(yàn)水線,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該空閑區(qū)的第6個(gè)字節(jié)內(nèi)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。當(dāng)該目標(biāo)塊為壞塊,則向目標(biāo)塊的下一個(gè)空閑塊中寫入讀取到的經(jīng)高級(jí)校驗(yàn)強(qiáng)度校驗(yàn)過的目標(biāo)數(shù)據(jù)。步驟607 :向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記,向目標(biāo)塊的下一個(gè)空閑塊中寫入后向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)?;蛘撸?dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),直接向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),即說明該目標(biāo)塊中存儲(chǔ)的數(shù)據(jù)出錯(cuò)后還可以被完全糾正,該目標(biāo)還可以存儲(chǔ)數(shù)據(jù),因此直接向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)即可。步驟608 :如上述步驟502,若目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記且未攜帶壞塊標(biāo)記時(shí),讀取目標(biāo)數(shù)據(jù)及其所對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,并采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),即該目標(biāo)塊是個(gè)好塊,只需進(jìn)行普通的校驗(yàn)即可。首先從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。如,優(yōu)選地,該普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte。步驟609 :根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,在從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,可進(jìn)行對(duì)比統(tǒng)計(jì),獲得目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。步驟610 :判斷目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)位數(shù)是否大于或等于第一校驗(yàn)水線。
在該步驟中,具體地,第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值可以設(shè)為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。步驟611 :當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中的校驗(yàn)碼。具體地,即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過第一校驗(yàn)水線,則表示該塊已經(jīng)接近于一個(gè)壞塊,雖然還可以存儲(chǔ)數(shù)據(jù),但需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。此時(shí),給該塊添加準(zhǔn)壞塊標(biāo)記。具體地,該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該空閑區(qū)內(nèi)存儲(chǔ)壞塊標(biāo)記的位置的后面。即若壞塊標(biāo)記存儲(chǔ)在閃存空閑區(qū)的第6個(gè)字節(jié)內(nèi),則準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在空閑區(qū)的第7個(gè)字節(jié)內(nèi)。當(dāng)目標(biāo)塊為準(zhǔn)壞塊時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即要提高其校驗(yàn)強(qiáng)度。該提高的校驗(yàn)強(qiáng)度即為高級(jí)校驗(yàn)強(qiáng)度。因此,在為目標(biāo)快添加準(zhǔn)壞塊標(biāo)記的同時(shí),生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為 10bit/512Byte。步驟612 :向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于第一校驗(yàn)水線時(shí),向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。此時(shí),該目標(biāo)數(shù)據(jù)發(fā)生翻轉(zhuǎn)的位數(shù)還可以被完全糾正過來(lái),因此,可直接向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)?;蛘?,當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,由于在讀取數(shù)據(jù)時(shí),數(shù)據(jù)位數(shù)的翻轉(zhuǎn)并不會(huì)一次增加很多位,而是一位一位增加,所以在非準(zhǔn)壞塊中存儲(chǔ)的數(shù)據(jù)在讀取過程中發(fā)生翻轉(zhuǎn)的位的數(shù)量不會(huì)超過第二校驗(yàn)水線,此時(shí),普通校驗(yàn)強(qiáng)度完全可將發(fā)生翻轉(zhuǎn)的位糾正過來(lái)。因此,當(dāng)判斷目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),仍向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。在本發(fā)明實(shí)施例七中,通過在系統(tǒng)中為Nand Flash的塊狀態(tài)及其對(duì)應(yīng)校驗(yàn)強(qiáng)度的設(shè)置,可保證塊中的數(shù)據(jù)能被正確讀出,有效提高了設(shè)備中存儲(chǔ)數(shù)據(jù)的可靠性。另外,通過在系統(tǒng)中為Nand Flash的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可有效提高設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性及存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性。圖7為本發(fā)明實(shí)施例八的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖。如圖7所示,本發(fā)明提供的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置700可以包括讀取單元701和校驗(yàn)單元702。具體地,讀取單元701用于當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;·
具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該區(qū)的第6個(gè)字節(jié)內(nèi)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。準(zhǔn)壞塊標(biāo)記也可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可以存儲(chǔ)在壞塊標(biāo)記的后邊一個(gè)字節(jié)。即,若壞塊標(biāo)記存儲(chǔ)在第6個(gè)字節(jié)內(nèi),則準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在第7字節(jié)內(nèi)。校驗(yàn)單元702用于在目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),并用于在目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),即該目標(biāo)塊是個(gè)好塊,只需進(jìn)行普通的校驗(yàn)即可。首先讀取單元701從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后校驗(yàn)單元702根據(jù)普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該普通校驗(yàn)強(qiáng)度可以為芯片要求的校驗(yàn)強(qiáng)度。具體地,當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),需對(duì)該準(zhǔn)壞塊進(jìn)行加強(qiáng)保護(hù),即利用高級(jí)校驗(yàn)強(qiáng)度對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。首先讀取單元701從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼;然后校驗(yàn)單元702根據(jù)高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。具體地,該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)強(qiáng)度略高于普通校驗(yàn)強(qiáng)度,以保證當(dāng)目標(biāo)塊中的位翻轉(zhuǎn)數(shù)量剛超過第二校驗(yàn)水線時(shí),還可以將數(shù)據(jù)完全糾正過來(lái)。具體地,可以設(shè)置該高級(jí)校驗(yàn)強(qiáng)度為普通校驗(yàn)強(qiáng)度的125%。如,普通校驗(yàn)強(qiáng)度可以設(shè)為8bit/512Byte,則高級(jí)校驗(yàn)強(qiáng)度可以為10bit/512Byte。在本發(fā)明實(shí)施例八中,通過讀取單元和校驗(yàn)單元根據(jù)塊的不同狀態(tài)對(duì)讀取數(shù)據(jù)的不同強(qiáng)度的校驗(yàn),保證了塊中的數(shù)據(jù)能被正確讀出,有效提高了設(shè)備中存儲(chǔ)數(shù)據(jù)的可靠性。圖8為本發(fā)明實(shí)施例九的檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置的結(jié)構(gòu)示意圖。如圖8所示,在上述實(shí)施例七的基礎(chǔ)上,該檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置800還可以包括比較單元703,標(biāo)記單元704和收發(fā)單元705。進(jìn)一步地,在上述實(shí)施例七的基礎(chǔ)上,比較單元703還用于在目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。
具體地,在從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,可進(jìn)行對(duì)比統(tǒng)計(jì),獲得目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。標(biāo)記單元704還用于在目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記,向目標(biāo)塊的下一個(gè)空閑塊中寫入采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù);具體地,該第二校驗(yàn)水線可以為芯片所要求的校驗(yàn)強(qiáng)度。例如,可設(shè)置第二校驗(yàn)水線為8bit/512Byte。具體地,即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過第二校驗(yàn)水線,則表示該塊已經(jīng)是一個(gè)壞塊,不能再存儲(chǔ)數(shù)據(jù)。此時(shí),給該塊添加壞塊標(biāo)記。具體地,該壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該空閑區(qū)的第6個(gè)字節(jié)內(nèi)。若該字節(jié)內(nèi)是非OxFF的值,則表示此塊為壞塊。
若該目標(biāo)塊為壞塊,則向目標(biāo)塊的下一個(gè)空閑塊中寫入讀取到的經(jīng)高級(jí)校驗(yàn)強(qiáng)度校驗(yàn)過的目標(biāo)數(shù)據(jù)。收發(fā)單元705還用于向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),即將采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)讀出。進(jìn)一步地,在上述實(shí)施例的基礎(chǔ)上,比較單元703還用于在目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。具體地,在從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼之后,可進(jìn)行對(duì)比統(tǒng)計(jì),獲得目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。標(biāo)記單元704用于在目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;具體地,第一校驗(yàn)水線的值可以為一個(gè)低于第二校驗(yàn)水線且接近第二校驗(yàn)水線的值,比如,可以設(shè)置為第二校驗(yàn)水線的值的75%,即若第二校驗(yàn)水線的值為8bit/512Byte,則第一校驗(yàn)水線的值可以設(shè)為6bit/512Byte。第一校驗(yàn)水線表示一個(gè)塊已經(jīng)接近壞塊了,還可以存儲(chǔ)數(shù)據(jù),但是需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。具體地,即若一個(gè)目標(biāo)塊中所存儲(chǔ)的數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量超過第一校驗(yàn)水線,則表示該塊已經(jīng)接近于一個(gè)壞塊,雖然還可以存儲(chǔ)數(shù)據(jù),但需要對(duì)數(shù)據(jù)進(jìn)行加強(qiáng)保護(hù)。此時(shí),給該塊添加準(zhǔn)壞塊標(biāo)記。具體地,該準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在閃存空閑區(qū)內(nèi),優(yōu)選地,可存儲(chǔ)在該空閑區(qū)內(nèi)存儲(chǔ)壞塊標(biāo)記的位置的后面。即若壞塊標(biāo)記存儲(chǔ)在閃存空閑區(qū)的第6個(gè)字節(jié)內(nèi),則準(zhǔn)壞塊標(biāo)記可以存儲(chǔ)在空閑區(qū)的第7個(gè)字節(jié)內(nèi)。收發(fā)單元705用于向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),即讀出正確的數(shù)據(jù)。在本發(fā)明實(shí)施例九中,通過讀取單元和校驗(yàn)單元根據(jù)塊的不同狀態(tài)對(duì)讀取數(shù)據(jù)的不同強(qiáng)度的校驗(yàn),保證了塊中的數(shù)據(jù)能被正確讀出,有效提高了設(shè)備中存儲(chǔ)數(shù)據(jù)的可靠性。另外,通過比較單元對(duì)讀取數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可有效提高設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性及存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性。在本發(fā)明上述實(shí)施例技術(shù)方案的基礎(chǔ)上,進(jìn)一步地,在本發(fā)明實(shí)施例十中,可以包括
首先,讀取單元701獲取到塊地址,然后判斷該目標(biāo)塊是否攜帶準(zhǔn)壞塊標(biāo)記。若該塊攜帶準(zhǔn)壞塊標(biāo)記,則讀取單元701從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼。然后校驗(yàn)單元702根據(jù)該高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。然后,比較單元703根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線,則標(biāo)記單元704為該目標(biāo)塊添加壞塊標(biāo)記,并向目標(biāo)塊的下一個(gè)空閑塊中寫入采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù);最后由收發(fā)單元705向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。若目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線,則直接由收發(fā)單元705向文件系統(tǒng)返回采用最高校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。當(dāng)目標(biāo)塊未攜帶準(zhǔn)壞塊標(biāo)記并且未攜帶壞塊標(biāo)記時(shí),讀取單元701從該目標(biāo)塊中 讀取目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。校驗(yàn)單元702采用普通校驗(yàn)強(qiáng)度的糾正算法糾正目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。然后,比較單元703根據(jù)從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。之后,在目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),標(biāo)記單元704為該目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新所述目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼。最后,收發(fā)單元705向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度糾正的目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。在本發(fā)明實(shí)施例十中,通過讀取單元和校驗(yàn)單元根據(jù)塊的不同狀態(tài)對(duì)讀取數(shù)據(jù)的不同強(qiáng)度的校驗(yàn),保證了塊中的數(shù)據(jù)能被正確讀出,有效提高了設(shè)備中存儲(chǔ)數(shù)據(jù)的可靠性。另外,通過比較單元對(duì)讀取數(shù)據(jù)的位翻轉(zhuǎn)數(shù)量設(shè)置水線,區(qū)分出塊的不同狀態(tài),并針對(duì)不同狀態(tài)設(shè)置不同的數(shù)據(jù)校驗(yàn)強(qiáng)度,可有效提高設(shè)備存儲(chǔ)數(shù)據(jù)的可靠性及存儲(chǔ)數(shù)據(jù)的準(zhǔn)確性。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說明的是以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法,其特征在于,包括 向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 比較所述目標(biāo)數(shù)據(jù)與所述目標(biāo)塊中存儲(chǔ)的所述目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新所述目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于所述第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加壞塊標(biāo)記。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于, 所述向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼包括獲取一個(gè)空閑塊;判斷所述空閑塊是否攜帶壞塊標(biāo)記;如果是,返回所述獲取一個(gè)空閑塊的步驟;否則,以所述空閑塊作為所述目標(biāo)塊,向所述目標(biāo)塊中寫入所述目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 所述比較所述目標(biāo)數(shù)據(jù)與所述目標(biāo)塊中存儲(chǔ)的所述目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量包括從所述目標(biāo)塊中讀取存儲(chǔ)的所述目標(biāo)數(shù)據(jù),比較所述目標(biāo)數(shù)據(jù)與所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。
3.—種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法,其特征在于,包括 當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),從所述目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,根據(jù)所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù); 當(dāng)所述目標(biāo)塊未攜帶所述準(zhǔn)壞塊標(biāo)記并且未攜帶所述壞塊標(biāo)記時(shí),從所述目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,根據(jù)所述普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述采用普通校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)之后,還包括 根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為所述目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新所述目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù); 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于所述第一校驗(yàn)水線時(shí),向文件系統(tǒng)返回采用普通校驗(yàn)強(qiáng)度的糾正算法糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)之后,還包括 根據(jù)從目標(biāo)塊中讀取的目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加壞塊標(biāo)記,向所述目標(biāo)塊的下一個(gè)空閑塊中寫入并向文件系統(tǒng)返回所述采用最高校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù); 當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),向所述文件系統(tǒng)返回所述采用最高校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
6.一種檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置,其特征在于,包括 寫入單元,用于向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的校驗(yàn)碼; 比較單元,用于比較所述目標(biāo)數(shù)據(jù)與所述目標(biāo)塊中存儲(chǔ)的所述目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 標(biāo)記單元,用于當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新所述目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于所述第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加壞塊標(biāo)記。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述寫入單元具體用于獲取一個(gè)空閑塊,判斷所述空閑塊是否攜帶壞塊標(biāo)記,如果是,再次獲取一個(gè)空閑塊,否則,以所述空閑塊作為所述目標(biāo)塊,向所述目標(biāo)塊中寫入所述目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 所述比較單元具體用于從所述目標(biāo)塊中讀取存儲(chǔ)的所述目標(biāo)數(shù)據(jù),比較所述目標(biāo)數(shù)據(jù)與所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),統(tǒng)計(jì)所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量。
8.—種檢測(cè)存儲(chǔ)設(shè)備壞塊的裝置,其特征在于,包括 讀取單元,用于當(dāng)目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),從所述目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,當(dāng)所述目標(biāo)塊未攜帶所述準(zhǔn)壞塊標(biāo)記并且未攜帶所述壞塊標(biāo)記時(shí),從所述目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼; 校驗(yàn)單元,用于在所述目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用高級(jí)校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),并用于在所述目標(biāo)塊未攜帶所述準(zhǔn)壞塊標(biāo)記并且未攜帶所述壞塊標(biāo)記時(shí),根據(jù)所述普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,采用普通校驗(yàn)強(qiáng)度的糾正算法糾正所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括 比較單元,用于在所述目標(biāo)塊未攜帶所述準(zhǔn)壞塊標(biāo)記并且未攜帶所述壞塊標(biāo)記時(shí),根據(jù)所述從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 標(biāo)記單元,用于在所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線時(shí),為所述目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用所述高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新所述目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;收發(fā)單元,用于向文件系統(tǒng)返回所述采用普通校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述之后,還包括 所述比較單元還用于在所述目標(biāo)塊攜帶準(zhǔn)壞塊標(biāo)記時(shí),根據(jù)所述從目標(biāo)塊中讀取目標(biāo)數(shù)據(jù)和所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼,獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量; 所述標(biāo)記單元還用于在所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為所述目標(biāo)塊添加壞塊標(biāo)記,向所述目標(biāo)塊的下一個(gè)空閑塊中寫入所述采用最高校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù); 所述收發(fā)單元還用于向所述文件系統(tǒng)返回所述采用最高校驗(yàn)強(qiáng)度糾正的所述目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)。
全文摘要
本發(fā)明提供一種檢測(cè)存儲(chǔ)設(shè)備壞塊的方法和裝置,該方法包括向目標(biāo)塊中寫入目標(biāo)數(shù)據(jù)和目標(biāo)數(shù)據(jù)對(duì)應(yīng)的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;比較目標(biāo)數(shù)據(jù)與目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù),獲取目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于預(yù)設(shè)的第一校驗(yàn)水線并小于預(yù)設(shè)的第二校驗(yàn)水線時(shí),為目標(biāo)塊添加準(zhǔn)壞塊標(biāo)記,生成目標(biāo)數(shù)據(jù)對(duì)應(yīng)的高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼并采用高級(jí)校驗(yàn)強(qiáng)度的校驗(yàn)碼更新目標(biāo)塊中寫入的普通校驗(yàn)強(qiáng)度的校驗(yàn)碼;當(dāng)目標(biāo)塊中存儲(chǔ)的目標(biāo)數(shù)據(jù)中發(fā)生翻轉(zhuǎn)的位的數(shù)量大于或等于第二校驗(yàn)水線時(shí),為目標(biāo)塊添加壞塊標(biāo)記。檢測(cè)存儲(chǔ)設(shè)備壞塊的方法可保證存儲(chǔ)數(shù)據(jù)能被正確讀出,有效提高了存儲(chǔ)設(shè)備的可靠性。
文檔編號(hào)G06F11/08GK102929740SQ201210413308
公開日2013年2月13日 申請(qǐng)日期2012年10月25日 優(yōu)先權(quán)日2012年10月25日
發(fā)明者劉婷 申請(qǐng)人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司