本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種nandflash數(shù)據(jù)校驗的方法與裝置。
背景技術(shù):
nandflash由于本身硬件的內(nèi)在特性,會導(dǎo)致偶爾出現(xiàn)位反轉(zhuǎn)的現(xiàn)象。所謂的位反轉(zhuǎn),指的是原先nandflash中的某個位發(fā)生了變化,即要么從1變成0了,要么從0變成1了。nandflash的位反轉(zhuǎn)現(xiàn)象,主要是由以下一些原因/效應(yīng)所導(dǎo)致:1、漂移效應(yīng),漂移效應(yīng)指的是nandflash中cell的電壓值慢慢地變了,變的和原始值不一樣了。2、編程干擾所產(chǎn)生的錯誤,此現(xiàn)象有時候也叫做過度編程效應(yīng)。對于某個頁面的編程操作,即寫操作,引起非相關(guān)的其他的頁面的某個位跳變了。3、讀操作干擾產(chǎn)生的錯誤(read-disturberrors),此效應(yīng)是對一個頁進行數(shù)據(jù)讀取操作,卻使得對應(yīng)的某個位的數(shù)據(jù),產(chǎn)生了永久性的變化,即nandflash上的該位的值變了。
如果恰巧是某個重要文件的某位變化了,往往會導(dǎo)致非常嚴重的后果。傳統(tǒng)方式中,一般采用ecc校驗算法來解決nandflash出現(xiàn)位反轉(zhuǎn)的問題。但是,存儲于sparearea的ecc碼本身也會存在位反轉(zhuǎn)的風(fēng)險。在nandflash的應(yīng)用中,如果恰巧是某個重要配置文件的某一位發(fā)生了位反轉(zhuǎn),并且ecc碼也發(fā)生了位反轉(zhuǎn),那么利用該ecc碼對nandflash的數(shù)據(jù)進行校驗,可能會導(dǎo)致非常嚴重的后果。此外,在nandflash中存儲的冷數(shù)據(jù)由于電荷漂移效應(yīng)產(chǎn)生位反轉(zhuǎn)的風(fēng)險更大。
可見,如何降低nandflash位反轉(zhuǎn)現(xiàn)象的風(fēng)險,是本領(lǐng)域技術(shù)人員亟待解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的是提供一種nandflash數(shù)據(jù)校驗的方法與裝置,可以有效降低nandflash位反轉(zhuǎn)現(xiàn)象的風(fēng)險。
為解決上述技術(shù)問題,本發(fā)明實施例提供一種nandflash數(shù)據(jù)校驗的方法,包括:
讀取第一數(shù)據(jù)頁中的校驗碼;其中,所述第一數(shù)據(jù)頁為第一存儲塊中的任意一頁;
利用所述校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗;所述目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一存儲塊不相鄰;
利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗。
可選的,還包括:
檢測nandflash中數(shù)據(jù)的使用頻率;
將使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)作為待處理數(shù)據(jù);
當(dāng)?shù)竭_預(yù)設(shè)時間后,對所述待處理數(shù)據(jù)進行copy-back處理。
可選的,所述對所述待處理數(shù)據(jù)進行copy-back處理包括:
判斷所述待處理數(shù)據(jù)所屬的存儲塊中是否存在空閑數(shù)據(jù)頁;
若存在,則將所述數(shù)據(jù)copy-back至所述空閑數(shù)據(jù)頁。
可選的,所述對所述待處理數(shù)據(jù)進行copy-back處理包括:
將所述待處理數(shù)據(jù)從其所在的數(shù)據(jù)頁讀取到頁寄存器,
將所述頁寄存器中的所述待處理數(shù)據(jù)寫入到所述數(shù)據(jù)頁。
本發(fā)明實施例還提供了一種nandflash數(shù)據(jù)校驗的裝置,包括讀取單元、ecc碼校驗單元和數(shù)據(jù)校驗單元,
所述讀取單元,用于讀取第一數(shù)據(jù)頁中的校驗碼;其中,所述第一數(shù)據(jù)頁為第一存儲塊中的任意一頁;
所述ecc碼校驗單元,用于利用所述校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗;所述目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一存儲塊不相鄰;
所述數(shù)據(jù)校驗單元,用于利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗。
可選的,還包括檢測單元、選取單元和處理單元,
所述檢測單元,用于檢測nandflash中數(shù)據(jù)的使用頻率;
所述選取單元,用于將使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)作為待處理數(shù)據(jù);
所述處理單元,用于當(dāng)?shù)竭_預(yù)設(shè)時間后,對所述待處理數(shù)據(jù)進行copy-back處理。
可選的,所述處理單元具體用于判斷所述待處理數(shù)據(jù)所屬的存儲塊中是否存在空閑數(shù)據(jù)頁;
若存在,則將所述數(shù)據(jù)copy-back至所述空閑數(shù)據(jù)頁。
可選的,所述處理單元具體用于將所述待處理數(shù)據(jù)從其所在的數(shù)據(jù)頁讀取到頁寄存器,
將所述頁寄存器中的所述待處理數(shù)據(jù)寫入到所述數(shù)據(jù)頁。
由上述技術(shù)方案可以看出,通過讀取第一數(shù)據(jù)頁中的校驗碼,利用該校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗,以此來提升ecc碼的正確性,其中,目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一數(shù)據(jù)頁所屬的存儲塊為兩個不相鄰的距離較遠的存儲塊,可以有效降低過度編程和讀操作干擾帶來的位反轉(zhuǎn)的風(fēng)險。利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗,由于提升了ecc碼的準確性,利用該ecc碼對數(shù)據(jù)進行校驗的準確性會更高,從而可以有效降低nandflash位反轉(zhuǎn)現(xiàn)象的風(fēng)險。
附圖說明
為了更清楚地說明本發(fā)明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種nandflash數(shù)據(jù)校驗的方法的流程圖;
圖2為本發(fā)明實施例提供的一種對待處理數(shù)據(jù)進行copy-back處理的方法的流程圖;
圖3為本發(fā)明實施例提供的一種nandflash數(shù)據(jù)校驗的裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下,所獲得的所有其他實施例,都屬于本發(fā)明保護范圍。
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。
接下來,詳細介紹本發(fā)明實施例所提供的一種nandflash數(shù)據(jù)校驗的方法。圖1為本發(fā)明實施例提供的一種nandflash數(shù)據(jù)校驗的方法的流程圖,該方法包括:
s101:讀取第一數(shù)據(jù)頁中的校驗碼。
在nandflash中可以包含有一個或多個存儲塊(block),每個存儲塊可以由一個或多個數(shù)據(jù)頁構(gòu)成。第一存儲塊可以是nandflash中包含的一個存儲塊,第一數(shù)據(jù)頁可以是第一存儲塊中的任意一個數(shù)據(jù)頁。
s102:利用所述校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗。
目標數(shù)據(jù)頁可以是需要對其數(shù)據(jù)進行校驗的一個數(shù)據(jù)頁??紤]到ecc碼本身會存在位反轉(zhuǎn)的風(fēng)險,在本發(fā)明實施例中,在利用目標數(shù)據(jù)頁的ecc碼對該數(shù)據(jù)頁中的數(shù)據(jù)進行校驗之前,為了提升ecc碼的正確性,需要先對ecc碼進行校驗。
在每個數(shù)據(jù)頁的sparearea中存儲有兩種類型的ecc碼,分別是對本頁數(shù)據(jù)進行校驗的ecc碼,以及對其他數(shù)據(jù)頁中的ecc碼進行校驗的校驗碼。
在對某一個存儲塊中的某一頁ecc碼進行校驗時,可以選用另一個存儲塊中相同頁數(shù)的校驗碼,對該ecc碼進行校驗。為了最大程度的降低過度編程和讀操作干擾帶來的位反轉(zhuǎn)風(fēng)險,這兩個存儲塊應(yīng)該選用非相鄰的距離較遠的存儲塊。
在本發(fā)明實施例中可以預(yù)先設(shè)置好存儲塊之間的對應(yīng)關(guān)系,例如,在nandflash中包含有5個存儲塊,分別為存儲塊1、存儲塊2、存儲塊3、存儲塊4和存儲塊5,可以采用存儲塊1中的校驗碼對存儲塊3中的ecc碼進行校驗,存儲塊3中的校驗碼對存儲塊5中的ecc碼進行校驗,存儲塊5中的校驗碼對存儲塊2中的ecc碼進行校驗,存儲塊2中的校驗碼對存儲塊4中的ecc碼進行校驗,存儲塊4中的校驗碼對存儲塊1中的ecc碼進行校驗。
考慮到每個存儲塊中可能包含有多個數(shù)據(jù)頁,在設(shè)置了存儲塊之間的對應(yīng)關(guān)系后,可以將相同頁數(shù)的數(shù)據(jù)頁之間建立對應(yīng)關(guān)系,例如,可以采用存儲塊1中的第1個數(shù)據(jù)頁中的校驗碼對存儲塊3中的第1個數(shù)據(jù)頁中的ecc碼進行校驗,依次類推,采用存儲塊1中的第2個數(shù)據(jù)頁中的校驗碼對存儲塊3中的第2個數(shù)據(jù)頁中的ecc碼進行校驗。
需要說明的是,對于存儲塊之間的對應(yīng)關(guān)系,可以根據(jù)實際情況,以降低過度編程和讀操作干擾帶來的位反轉(zhuǎn)風(fēng)險為準則進行設(shè)置即可,本發(fā)明實施例對存儲塊之間的具體對應(yīng)關(guān)系不做限定。
s103:利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗。
對ecc碼進行校驗后,可以有效的提升ecc碼的正確性,從而利用該ecc碼對目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗的正確性會較高。
由上述技術(shù)方案可以看出,通過讀取第一數(shù)據(jù)頁中的校驗碼,利用該校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗,以此來提升ecc碼的正確性,其中,目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一數(shù)據(jù)頁所屬的存儲塊為兩個不相鄰的距離較遠的存儲塊,可以有效降低過度編程和讀操作干擾帶來的位反轉(zhuǎn)的風(fēng)險。利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗,由于提升了ecc碼的準確性,利用該ecc碼對數(shù)據(jù)進行校驗的準確性會更高,從而可以有效降低nandflash位反轉(zhuǎn)現(xiàn)象的風(fēng)險。
考慮到存儲于nandflash中的數(shù)據(jù)長時間未被使用時,這部分數(shù)據(jù)的存儲區(qū)域由于漂移效應(yīng)帶來的位反轉(zhuǎn)風(fēng)險會較高,為了降低漂移效應(yīng)帶來的位反轉(zhuǎn)風(fēng)險,可以對這部分數(shù)據(jù)進行copy-back處理,該操作步驟如圖2所示。
s201:檢測nandflash中數(shù)據(jù)的使用頻率。
使用頻率可以用于表示數(shù)據(jù)單位時間內(nèi)被調(diào)用的次數(shù)。數(shù)據(jù)的使用頻率越低,其所在的存儲區(qū)域出現(xiàn)位反轉(zhuǎn)的風(fēng)險越高。
s202:將使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)作為待處理數(shù)據(jù)。
預(yù)設(shè)閾值可以用于表示數(shù)據(jù)使用頻率的下限值。當(dāng)數(shù)據(jù)的使用頻率低于該預(yù)設(shè)閾值,則可以說明該數(shù)據(jù)所在的存儲區(qū)域出現(xiàn)位反轉(zhuǎn)的風(fēng)險較高,需要對這部分數(shù)據(jù)進行相關(guān)處理,以降低位反轉(zhuǎn)的風(fēng)險,可以將這部分數(shù)據(jù)稱為待處理數(shù)據(jù)。
s203:當(dāng)?shù)竭_預(yù)設(shè)時間后,對所述待處理數(shù)據(jù)進行copy-back處理。
預(yù)設(shè)時間可以根據(jù)nandflash因漂移效應(yīng)出現(xiàn)較高位反轉(zhuǎn)風(fēng)險的時間確定。例如,當(dāng)nandflash使用一個月后,其由于漂移效應(yīng)出現(xiàn)位反轉(zhuǎn)的風(fēng)險會急劇增加,則可以設(shè)置一個月為周期時間。每經(jīng)過一個月的時間,則對nandflash中使用頻率較低的數(shù)據(jù)進行copy-back處理,以降低因漂移效應(yīng)帶來的位反轉(zhuǎn)風(fēng)險。
其中,對待處理數(shù)據(jù)進行copy-back處理方式可以有兩種。一種方式可以是將待處理數(shù)據(jù)存儲于空閑頁。具體的,可以判斷所述待處理數(shù)據(jù)所屬的存儲塊中是否存在空閑數(shù)據(jù)頁;若存在,則將所述數(shù)據(jù)copy-back至所述空閑數(shù)據(jù)頁。
例如,存儲塊block1中包含有5個數(shù)據(jù)頁,分別為page1、page2、page3、page4和page5,其中,page5為空閑數(shù)據(jù)頁,當(dāng)page1中的數(shù)據(jù)使用頻率低于預(yù)設(shè)閾值時,則可以將page1中的數(shù)據(jù)copy-back至page5,此時可以對page1進行清空處理,page1處于空閑狀態(tài),即page1為空閑數(shù)據(jù)頁,當(dāng)有其他數(shù)據(jù)頁,如page2中的數(shù)據(jù)使用頻率低于預(yù)設(shè)閾值時,則可以將page2中的數(shù)據(jù)copy-back至page1,依次類推,可以完成該存儲塊中使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)的copy-back處理。
另一種方式可以是將所述待處理數(shù)據(jù)從其所在的數(shù)據(jù)頁讀取到頁寄存器,再將所述頁寄存器中的所述待處理數(shù)據(jù)寫入到所述數(shù)據(jù)頁。
上述舉例中均以一個存儲塊中的數(shù)據(jù)為例展開的介紹,其他存儲塊中數(shù)據(jù)的處理方式與其類似,在此不再贅述。參照上述操作步驟,可以完成對nandflash中所有使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)copy-back處理。
采用copy-back處理的好處在于,不需要用到外部的存儲空間,不需要讀出來放到外部的buffer里面,而是可以直接讀取數(shù)據(jù)到內(nèi)部的頁寄存器然后寫到新的頁里面去。通過copy-back處理可以有效降低因為漂移效應(yīng)帶來的位反轉(zhuǎn)風(fēng)險,并且該種處理方式,可以省去數(shù)據(jù)串行讀取出來,再串行寫入進去的時間,提高了系統(tǒng)整體性能。
圖3為本發(fā)明實施例提供的一種nandflash數(shù)據(jù)校驗的裝置的結(jié)構(gòu)示意圖,包括讀取單元31、ecc碼校驗單元32和數(shù)據(jù)校驗單元33,
所述讀取單元31,用于讀取第一數(shù)據(jù)頁中的校驗碼;其中,所述第一數(shù)據(jù)頁為第一存儲塊中的任意一頁。
所述ecc碼校驗單元32,用于利用所述校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗;所述目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一存儲塊不相鄰。
所述數(shù)據(jù)校驗單元33,用于利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗。
可選的,還包括檢測單元、選取單元和處理單元,
所述檢測單元,用于檢測nandflash中數(shù)據(jù)的使用頻率。
所述選取單元,用于將使用頻率低于預(yù)設(shè)閾值的數(shù)據(jù)作為待處理數(shù)據(jù)。
所述處理單元,用于當(dāng)?shù)竭_預(yù)設(shè)時間后,對所述待處理數(shù)據(jù)進行copy-back處理。
可選的,所述處理單元具體用于判斷所述待處理數(shù)據(jù)所屬的存儲塊中是否存在空閑數(shù)據(jù)頁;
若存在,則將所述數(shù)據(jù)copy-back至所述空閑數(shù)據(jù)頁。
可選的,所述處理單元具體用于將所述待處理數(shù)據(jù)從其所在的數(shù)據(jù)頁讀取到頁寄存器,
將所述頁寄存器中的所述待處理數(shù)據(jù)寫入到所述數(shù)據(jù)頁。
圖3所對應(yīng)實施例中特征的說明可以參見圖1和圖2所對應(yīng)實施例的相關(guān)說明,這里不再一一贅述。
由上述技術(shù)方案可以看出,通過讀取第一數(shù)據(jù)頁中的校驗碼,利用該校驗碼對目標數(shù)據(jù)頁中的ecc碼進行校驗,以此來提升ecc碼的正確性,其中,目標數(shù)據(jù)頁與所述第一數(shù)據(jù)頁頁數(shù)相同,所述目標數(shù)據(jù)頁所屬的存儲塊與所述第一數(shù)據(jù)頁所屬的存儲塊為兩個不相鄰的距離較遠的存儲塊,可以有效降低過度編程和讀操作干擾帶來的位反轉(zhuǎn)的風(fēng)險。利用校驗后的ecc碼對所述目標數(shù)據(jù)頁中的數(shù)據(jù)進行校驗,由于提升了ecc碼的準確性,利用該ecc碼對數(shù)據(jù)進行校驗的準確性會更高,從而可以有效降低nandflash位反轉(zhuǎn)現(xiàn)象的風(fēng)險。
以上對本發(fā)明實施例所提供的一種nandflash數(shù)據(jù)校驗的方法與裝置進行了詳細介紹。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。
專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。