一種維持閃存損耗均衡的方法
【專利摘要】一種維持閃存損耗均衡的方法,包含:S1、掃描閃存的所有塊,經(jīng)過統(tǒng)計(jì)分析得出掃描結(jié)果,從中挑選出可用塊;S2、對(duì)閃存中經(jīng)掃描后挑選出的可用塊,統(tǒng)計(jì)比特出錯(cuò)情況并分級(jí),針對(duì)每個(gè)級(jí)別設(shè)定相應(yīng)的擦除次數(shù)的初始值;S3、根據(jù)閃存中每個(gè)可用塊的擦除次數(shù)的初始值,將其歸類為空閑塊或數(shù)據(jù)塊,形成空閑塊組和數(shù)據(jù)塊組;S4、進(jìn)行損耗均衡處理,將數(shù)據(jù)塊組中當(dāng)前擦除次數(shù)最少的數(shù)據(jù)塊和空閑塊組中當(dāng)前擦除次數(shù)最多的空閑塊進(jìn)行交換。本發(fā)明尤其針對(duì)次片閃存,在進(jìn)行損耗均衡處理時(shí)結(jié)合考慮了閃存中每個(gè)可用塊的實(shí)際比特出錯(cuò)情況,減少了比特出錯(cuò)情況較高的可用塊的訪問次數(shù),提高了閃存的使用壽命和穩(wěn)定性。
【專利說明】一種維持閃存損耗均衡的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種維持閃存損耗均衡的方法,尤其是指一種次片閃存的損耗均衡管理方法,屬于存儲(chǔ)【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]閃存(Flash Memory)是一種長(zhǎng)壽命的非易失性存儲(chǔ)器,即在斷電情況下仍能保存所存儲(chǔ)的數(shù)據(jù)信息的存儲(chǔ)器,通常被用來保存信息,如被用于在移動(dòng)電話、數(shù)碼攝像機(jī)、游戲機(jī)、MP3播放器、個(gè)人數(shù)字助理(PDA)、數(shù)碼相機(jī)中保存資料等。
[0003]閃存在結(jié)構(gòu)上是由很多塊(Block)所組成的,每個(gè)塊中又包括很多頁(yè)(Page),而每個(gè)頁(yè)的基本存儲(chǔ)單元是比特(BH)。閃存是以塊為單位擦除的,并且是以頁(yè)為單位讀寫的。為識(shí)別閃存中的塊是否可用,需要對(duì)閃存中的全部塊進(jìn)行掃描。掃描時(shí)對(duì)閃存塊的每個(gè)頁(yè)寫入數(shù)據(jù),并讀出進(jìn)行數(shù)據(jù)校驗(yàn),通過錯(cuò)誤檢查糾正技術(shù)(ECC, Error Correcting Code)判斷每頁(yè)中有多少個(gè)比特出錯(cuò)并糾正錯(cuò)誤。當(dāng)每個(gè)頁(yè)中的錯(cuò)誤比特少于某個(gè)設(shè)定值時(shí),由于有錯(cuò)誤檢查糾正模塊支持,出錯(cuò)比特可以被糾正,所以認(rèn)為這個(gè)頁(yè)可用。當(dāng)每個(gè)塊中不可用的頁(yè)的數(shù)目少于某個(gè)設(shè)定值時(shí),認(rèn)為這個(gè)塊可用,但這個(gè)可用塊的數(shù)據(jù)出錯(cuò)幾率仍然還是要大于完好的不存在錯(cuò)誤比特的可用塊。因此通過對(duì)閃存中的每個(gè)塊掃描并統(tǒng)計(jì)分析,確認(rèn)可用頁(yè)及可用塊。
[0004]正常出廠的閃存,壞的頁(yè)和壞的塊都比較少,并且塊內(nèi)的比特出錯(cuò)也較少,但次片閃存(down-grade flash)掃描后通常能發(fā)現(xiàn)塊內(nèi)的壞比特較多。由于閃存在寫一個(gè)塊之前必需要先把塊內(nèi)數(shù)據(jù)擦除,而閃存塊的擦除次數(shù)又是有一定限制的,也就是使用壽命;因此,當(dāng)閃存塊的擦除次數(shù)大于限制時(shí),塊內(nèi)數(shù)據(jù)的讀寫就更容易出錯(cuò)。通常為了避免頻繁的對(duì)閃存中的某一個(gè)塊進(jìn)行讀寫操作,會(huì)使用損耗均衡算法(Wear-leveling)將擦除次數(shù)較多的塊和擦除次數(shù)較少的塊進(jìn)行交換,以使得閃存中各個(gè)塊的擦除次數(shù)比較均衡。但是,通常的損耗均衡算法并沒有考慮次片閃存的情況,雖然次片閃存的某些有錯(cuò)誤比特的塊經(jīng)過掃描后仍然可以使用,但使用時(shí)容易出錯(cuò),比正常塊的出錯(cuò)幾率大。因此,本發(fā)明提出一種尤其針對(duì)次片閃存的損耗均衡管理方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種維持閃存損耗均衡的方法,尤其適用于次片閃存,在進(jìn)行損耗均衡處理時(shí)結(jié)合考慮了閃存中每個(gè)可用塊的實(shí)際比特出錯(cuò)情況,減少了比特出錯(cuò)情況較高的可用塊的訪問次數(shù),提高了閃存的使用壽命和穩(wěn)定性。
[0006]為了達(dá)到上述目的,本發(fā)明提供一種維持閃存損耗均衡的方法,具體包含以下步驟:
51、掃描閃存的所有塊,經(jīng)過統(tǒng)計(jì)分析得出掃描結(jié)果,從中挑選出可用塊;
52、對(duì)閃存中經(jīng)掃描后挑選出的可用塊,統(tǒng)計(jì)比特出錯(cuò)情況并進(jìn)行分級(jí),針對(duì)每個(gè)級(jí)別設(shè)定相應(yīng)的擦除次數(shù)的初始值; 53、根據(jù)閃存中每個(gè)可用塊的擦除次數(shù)的初始值,將其歸類為空閑塊或數(shù)據(jù)塊,從而形成空閑塊組和數(shù)據(jù)塊組;
54、進(jìn)行損耗均衡處理,將數(shù)據(jù)塊組中當(dāng)前擦除次數(shù)最少的數(shù)據(jù)塊和空閑塊組中當(dāng)前擦除次數(shù)最多的空閑塊進(jìn)行交換。
[0007]所述的SI中,具體包含以下步驟:
511、對(duì)閃存的每個(gè)塊的每個(gè)頁(yè)寫入數(shù)據(jù),然后讀出數(shù)據(jù),再利用錯(cuò)誤檢查糾正技術(shù)判斷每個(gè)頁(yè)中有多少個(gè)比特出錯(cuò)并記錄下來;
512、判斷每個(gè)頁(yè)的比特出錯(cuò)數(shù)目是否小于設(shè)定值;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)小于等于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)可用;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)大于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)不可用;
513、判斷每個(gè)塊的不可用頁(yè)的數(shù)目是否小于設(shè)定值;如當(dāng)前塊的不可用頁(yè)的數(shù)目小于等于設(shè)定值,則確認(rèn)當(dāng)前塊可用;如當(dāng)前塊的不可用頁(yè)的數(shù)目大于設(shè)定值,則確認(rèn)當(dāng)前塊不可用。
[0008]所述的S2中,具體包含以下步驟:
521、統(tǒng)計(jì)每個(gè)可用塊的比特出錯(cuò)情況,并劃分錯(cuò)誤級(jí)別;
522、對(duì)每個(gè)錯(cuò)誤級(jí)別分別設(shè)定對(duì)應(yīng)的擦除次數(shù)的初始值,錯(cuò)誤級(jí)別越高,設(shè)定的擦除次數(shù)的初始值越大;
523、按照每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別,分別設(shè)定并記錄與該錯(cuò)誤級(jí)別相對(duì)應(yīng)的每個(gè)可用塊的擦除次數(shù)的初始值。
[0009]所述的S21中,具體包含以下步驟:
5211、針對(duì)閃存中的每個(gè)可用塊,將其中每個(gè)頁(yè)中的比特出錯(cuò)數(shù)目相加,計(jì)算得到每個(gè)可用塊的比特出錯(cuò)總數(shù);
5212、根據(jù)每個(gè)可用塊的比特出錯(cuò)總數(shù)劃分每個(gè)可用塊的錯(cuò)誤級(jí)別,比特出錯(cuò)總數(shù)越大,錯(cuò)誤級(jí)別越聞;
5213、記錄每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別。
[0010]所述的S22中,設(shè)定的擦除次數(shù)的初始值必須小于閃存塊預(yù)先限定的最大擦除次數(shù)。
[0011]所述的S3中,具體為:判斷每個(gè)可用塊的擦除次數(shù)的初始值是否小于設(shè)定值;若當(dāng)前塊的擦除次數(shù)的初始值小于設(shè)定值,則將其歸類為空閑塊,放入空閑塊組;若當(dāng)前塊的擦除次數(shù)的初始值大于等于設(shè)定值,則將其歸類為數(shù)據(jù)塊,放入數(shù)據(jù)塊組。
[0012]所述的S3中,還包含將數(shù)據(jù)寫入數(shù)據(jù)塊的步驟,具體為:當(dāng)要將新數(shù)據(jù)寫入數(shù)據(jù)塊組中的其中一個(gè)數(shù)據(jù)塊中時(shí),先從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最少的空閑塊,對(duì)該空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I并記錄;將新數(shù)據(jù)寫入該空閑塊中;交換所述的空閑塊與數(shù)據(jù)塊的位置,即將該寫入了新數(shù)據(jù)的空閑塊作為數(shù)據(jù)塊放入數(shù)據(jù)塊組中,而將需要寫入新數(shù)據(jù)的數(shù)據(jù)塊作為空閑塊放入空閑塊組中。
[0013]所述的S4中,具體包含以下步驟:
541、從數(shù)據(jù)塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最小的數(shù)據(jù)塊;
542、從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最大的空閑塊;
543、比較挑選出的數(shù)據(jù)塊和空閑塊的各自當(dāng)前擦除次數(shù)的大??;如空閑塊的當(dāng)前擦除次數(shù)小于等于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),結(jié)束損耗均衡處理;如空閑塊的當(dāng)前擦除次數(shù)大于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),則繼續(xù)進(jìn)行步驟S44 ;
544、計(jì)算挑選出的空閑塊的當(dāng)前擦除次數(shù)與挑選出的數(shù)據(jù)塊的當(dāng)前擦除次數(shù)的差值;
545、比較所述的差值與預(yù)先設(shè)定的損耗均衡閾值的大??;如所述的差值大于損耗均衡閾值,結(jié)束損耗均衡處理;如所述的差值大于等于損耗均衡閾值,則繼續(xù)進(jìn)行步驟S46 ;
546、對(duì)挑選出的空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I并記錄,將挑選出的數(shù)據(jù)塊中的數(shù)據(jù)讀出并寫入至空閑塊中,將該數(shù)據(jù)塊作為新的空閑塊放入空閑塊組,并將寫入了數(shù)據(jù)的空閑塊作為新的數(shù)據(jù)塊放入原數(shù)據(jù)塊在數(shù)據(jù)塊組中的位置,結(jié)束損耗均衡處理。
[0014]綜上所述,本發(fā)明所提供的維持閃存損耗均衡的方法,其在進(jìn)行損耗均衡處理時(shí)結(jié)合考慮了閃存中每個(gè)可用塊的實(shí)際比特出錯(cuò)情況,減少了比特出錯(cuò)情況較高的可用塊的訪問次數(shù),提高了閃存的使用壽命和穩(wěn)定性。尤其對(duì)于次片閃存而言,由于其含有較多比特出錯(cuò)情況較高的可用塊,本發(fā)明能更有效的提高次片閃存的數(shù)據(jù)讀寫穩(wěn)定性和使用壽命。
【專利附圖】
【附圖說明】
[0015]圖1是本發(fā)明中的維持閃存損耗均衡的方法流程圖;
圖2是本發(fā)明中的對(duì)閃存可用塊按出錯(cuò)比特情況分級(jí)的方法流程圖;
圖3是本發(fā)明中的對(duì)閃存可用塊按出錯(cuò)比特情況分級(jí)的示意圖;
圖4是本發(fā)明中的進(jìn)行損耗均衡處理的方法流程圖。
【具體實(shí)施方式】
[0016]以下根據(jù)圖1?圖4,具體說明本發(fā)明的較佳實(shí)施例。
[0017]如圖1所示,為本發(fā)明所提供的維持閃存損耗均衡的方法,具體包含以下步驟:
S1、掃描閃存的所有塊,經(jīng)過統(tǒng)計(jì)分析得出掃描結(jié)果,從中挑選出可用塊。
[0018]所述的SI中,具體包含以下步驟:
511、對(duì)閃存的每個(gè)塊的每個(gè)頁(yè)寫入數(shù)據(jù),然后讀出數(shù)據(jù),再利用錯(cuò)誤檢查糾正技術(shù)判斷每個(gè)頁(yè)中有多少個(gè)比特出錯(cuò)并記錄下來;
512、判斷每個(gè)頁(yè)的比特出錯(cuò)數(shù)目是否小于設(shè)定值;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)小于等于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)可用;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)大于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)不可用;
513、判斷每個(gè)塊的不可用頁(yè)的數(shù)目是否小于設(shè)定值;如當(dāng)前塊的不可用頁(yè)的數(shù)目小于等于設(shè)定值,則確認(rèn)當(dāng)前塊可用;如當(dāng)前塊的不可用頁(yè)的數(shù)目大于設(shè)定值,則確認(rèn)當(dāng)前塊不可用。
[0019]本實(shí)施例中,預(yù)先設(shè)定每個(gè)頁(yè)中可以有3比特出錯(cuò),并且預(yù)先設(shè)定每個(gè)塊中可以有3頁(yè)不可用,也就是說,如果當(dāng)前頁(yè)中的比特出錯(cuò)數(shù)目小于等于3的話,那么就可以確認(rèn)該頁(yè)是可用的,如果當(dāng)前塊中的不可用頁(yè)的數(shù)目小于等于3的話,同樣可以確認(rèn)該塊是可用的。
[0020]S2、為了合理使用閃存中的可用塊,對(duì)閃存中經(jīng)掃描后挑選出的被確認(rèn)為可用的塊,統(tǒng)計(jì)比特出錯(cuò)情況并進(jìn)行分級(jí),針對(duì)每個(gè)級(jí)別設(shè)定相應(yīng)的擦除次數(shù)的初始值。
[0021]如圖2所示,所述的S2中,具體包含以下步驟: 521、統(tǒng)計(jì)每個(gè)可用塊的比特出錯(cuò)情況,并劃分錯(cuò)誤級(jí)別;具體為:
5211、針對(duì)閃存中的每個(gè)可用塊,將其中每個(gè)頁(yè)中的比特出錯(cuò)數(shù)目相加,計(jì)算得到每個(gè)可用塊的比特出錯(cuò)總數(shù);
5212、根據(jù)每個(gè)可用塊的比特出錯(cuò)總數(shù)劃分每個(gè)可用塊的錯(cuò)誤級(jí)別,比特出錯(cuò)總數(shù)越大,錯(cuò)誤級(jí)別越聞;
5213、記錄每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別;
522、對(duì)每個(gè)錯(cuò)誤級(jí)別分別設(shè)定對(duì)應(yīng)的擦除次數(shù)的初始值,錯(cuò)誤級(jí)別越高,設(shè)定的擦除次數(shù)的初始值越大;并且所述的擦除次數(shù)的初始值必須小于閃存塊預(yù)先限定的最大擦除次數(shù);
523、按照每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別,分別設(shè)定并記錄與該錯(cuò)誤級(jí)別相對(duì)應(yīng)的每個(gè)可用塊的擦除次數(shù)的初始值,以便在后續(xù)步驟的損耗均衡處理時(shí)使用。
[0022]本實(shí)施例中,如圖3所示,在對(duì)閃存中的8個(gè)可用塊統(tǒng)計(jì)后發(fā)現(xiàn),其中塊Al、A2的比特出錯(cuò)總數(shù)較少(例如比特出錯(cuò)總數(shù)小于10),塊B1、B2的比特出錯(cuò)總數(shù)稍多(例如比特出錯(cuò)總數(shù)的范圍為10?20),塊C1、C2的比特出錯(cuò)總數(shù)比較多(例如比特出錯(cuò)總數(shù)的范圍為20?30),而塊Dl、D2的比特出錯(cuò)總數(shù)最多(例如比特出錯(cuò)總數(shù)大于30)。在這種情況下,將上述8個(gè)可用塊歸類為4個(gè)錯(cuò)誤級(jí)別,塊A1、A2對(duì)應(yīng)錯(cuò)誤級(jí)別1,塊B1、B2對(duì)應(yīng)錯(cuò)誤級(jí)別2,塊C1、C2對(duì)應(yīng)錯(cuò)誤級(jí)別3,而塊D1、D2則對(duì)應(yīng)錯(cuò)誤級(jí)別4。然后對(duì)這4個(gè)錯(cuò)誤級(jí)別分別設(shè)定相對(duì)應(yīng)的擦除次數(shù)的初始值,錯(cuò)誤級(jí)別I對(duì)應(yīng)設(shè)置擦除次數(shù)的初始值為A,錯(cuò)誤級(jí)別2對(duì)應(yīng)設(shè)置擦除次數(shù)的初始值為B,錯(cuò)誤級(jí)別3對(duì)應(yīng)設(shè)置擦除次數(shù)的初始值為C,錯(cuò)誤級(jí)別4對(duì)應(yīng)設(shè)置擦除次數(shù)的初始值的D,并且A、B、C、D為從小到大排列的。接著按照每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別來設(shè)置并記錄每個(gè)可用塊的擦除次數(shù)的初始值,即將塊Al、A2的擦除次數(shù)的初始值設(shè)為A,塊B1、B2的擦除次數(shù)的初始值設(shè)為B,塊Cl、C2的擦除次數(shù)的初始值設(shè)為C,塊D1、D2的擦除次數(shù)的初始值設(shè)為D,并記錄下來。也就是說,對(duì)于出錯(cuò)比特總數(shù)越少的塊,其對(duì)應(yīng)的錯(cuò)誤級(jí)別就越低,并且所設(shè)置的擦除次數(shù)的初始值也越小;而對(duì)于出錯(cuò)比特總數(shù)越多的塊,其對(duì)應(yīng)的錯(cuò)誤級(jí)別就越高,并且所設(shè)置的擦除次數(shù)的初始值也越大。
[0023]S3、對(duì)閃存中經(jīng)掃描后挑選出的被確認(rèn)為可用的塊,根據(jù)每個(gè)可用塊的擦除次數(shù)的初始值,將其歸類為空閑塊或數(shù)據(jù)塊,從而形成空閑塊組和數(shù)據(jù)塊組。
[0024]具體的、判斷每個(gè)可用塊的擦除次數(shù)的初始值是否小于設(shè)定值;若當(dāng)前塊的擦除次數(shù)的初始值小于設(shè)定值,則將其歸類為空閑塊,放入空閑塊組;若當(dāng)前塊的擦除次數(shù)的初始值大于等于設(shè)定值,則將其歸類為數(shù)據(jù)塊,放入數(shù)據(jù)塊組。
[0025]本實(shí)施例中,如圖3所示,預(yù)先設(shè)定用于歸類空閑塊和數(shù)據(jù)塊的設(shè)定值為C ;那么對(duì)于擦除次數(shù)的初始值小于該設(shè)定值C的塊將被歸類為空閑塊,也就是塊A1、A2、B1、B2被歸類為空閑塊,形成空閑塊組;而對(duì)于擦除次數(shù)的初始值大于等于該設(shè)定值C的塊將被歸類為數(shù)據(jù)塊,也就是塊Cl、C2、Dl、D2被歸類為數(shù)據(jù)塊,形成數(shù)據(jù)塊組。
[0026]所述的S3中,還包含將數(shù)據(jù)寫入數(shù)據(jù)塊的步驟,具體為:當(dāng)需要將新數(shù)據(jù)寫入數(shù)據(jù)塊組中的其中一個(gè)數(shù)據(jù)塊中時(shí),由于該數(shù)據(jù)塊中已經(jīng)存在了之前存儲(chǔ)的數(shù)據(jù),因此先從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最少的空閑塊,對(duì)該空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I (如該空閑塊是首次被使用,則此時(shí)該空閑塊的當(dāng)前擦除次數(shù)即為初始值)并記錄;將新數(shù)據(jù)寫入該空閑塊中;交換所述的空閑塊與數(shù)據(jù)塊的位置,即將該寫入了新數(shù)據(jù)的空閑塊作為數(shù)據(jù)塊放入數(shù)據(jù)塊組中,而將本該需要寫入新數(shù)據(jù)的數(shù)據(jù)塊作為空閑塊放入空閑塊組中。
[0027]本實(shí)施例中,當(dāng)需要將新的數(shù)據(jù)M寫入數(shù)據(jù)塊C2中時(shí),先從空閑塊組中挑選當(dāng)前擦除次數(shù)最少的空閑塊Al,對(duì)空閑塊Al進(jìn)行擦除操作,并增加其當(dāng)前擦除次數(shù),記錄為A+1 ;將新的數(shù)據(jù)M寫入該空閑塊Al中,并將其作為數(shù)據(jù)塊放入數(shù)據(jù)塊組,而原先的數(shù)據(jù)塊C2則被放入空閑塊組中。因此,當(dāng)完成數(shù)據(jù)寫入步驟之后,目前空閑塊組為C2、A2、B1、B2,而數(shù)據(jù)塊組為C1、A1、D1、D2。當(dāng)然,也可以按照上述方法繼續(xù)對(duì)更多的數(shù)據(jù)塊寫入數(shù)據(jù)。
[0028]S4、進(jìn)行損耗均衡處理,將數(shù)據(jù)塊組中當(dāng)前擦除次數(shù)最少的數(shù)據(jù)塊和空閑塊組中當(dāng)前擦除次數(shù)最多的空閑塊進(jìn)行交換。
[0029]損耗均衡的目的是使閃存的所有可用塊的當(dāng)前擦除次數(shù)趨向均勻,因此將其中某些頻繁進(jìn)行擦除和寫入操作的數(shù)據(jù)塊與某些使用較少的空閑塊進(jìn)行交換,從而達(dá)到提高閃存可用塊的使用壽命的目的。由于之前已經(jīng)將所有可用塊按比特出錯(cuò)總數(shù)的多少定義了錯(cuò)誤級(jí)別,并對(duì)應(yīng)設(shè)定了擦除次數(shù)的初始值,因此比較容易出錯(cuò)的可用塊的擦除次數(shù)的初始值較大,在此通過損耗均衡處理能減少對(duì)這些比較容易出錯(cuò)的可用塊的訪問(擦除寫入),從而提聞其使用壽命。
[0030]如圖4所示,所述的S4中,具體包含以下步驟:
541、從數(shù)據(jù)塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最小的數(shù)據(jù)塊;
542、從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最大的空閑塊;c
543、比較挑選出的數(shù)據(jù)塊和空閑塊的各自當(dāng)前擦除次數(shù)的大?。蝗缈臻e塊的當(dāng)前擦除次數(shù)小于等于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),說明當(dāng)前還不需要進(jìn)行損耗均衡處理,因此結(jié)束本次損耗均衡處理;如空閑塊的當(dāng)前擦除次數(shù)大于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),則繼續(xù)進(jìn)行步驟S44 ;
544、計(jì)算挑選出的空閑塊的當(dāng)前擦除次數(shù)與挑選出的數(shù)據(jù)塊的當(dāng)前擦除次數(shù)的差值;
545、比較所述的差值與預(yù)先設(shè)定的損耗均衡閾值的大??;如所述的差值大于損耗均衡閾值,說明當(dāng)前還不需要進(jìn)行損耗均衡處理,因此結(jié)束本次損耗均衡處理;如所述的差值大于等于損耗均衡閾值,則繼續(xù)進(jìn)行步驟S46 ;
546、對(duì)挑選出的空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I并記錄,將挑選出的數(shù)據(jù)塊中的數(shù)據(jù)讀出并寫入至空閑塊中,將該數(shù)據(jù)塊作為新的空閑塊放入空閑塊組,并將寫入了數(shù)據(jù)的空閑塊作為新的數(shù)據(jù)塊放入原數(shù)據(jù)塊在數(shù)據(jù)塊組中的位置,從而完成本次損耗均衡處理,使得錯(cuò)誤級(jí)別高的可用塊從空閑塊組中被交換出來,以減少錯(cuò)誤級(jí)別高的可用塊的操作次數(shù),從而提高閃存的使用壽命。
[0031]本實(shí)施例中,在進(jìn)行損耗均衡處理時(shí),首先在數(shù)據(jù)塊組Cl、Al、Dl、D2中挑選當(dāng)前擦除次數(shù)最小的數(shù)據(jù)塊Al,并在空閑塊組C2、A2、B1、B2中挑選當(dāng)前擦除次數(shù)最大的空閑塊C2,如果空閑塊C2的擦除次數(shù)大于數(shù)據(jù)塊Al的擦除次數(shù),并且如果空閑塊C2的擦除次數(shù)C與數(shù)據(jù)塊Al的擦除次數(shù)A+1之間的差值C-(A+1) >損耗均衡閾值,則對(duì)空閑塊C2進(jìn)行擦除操作,并增加其當(dāng)前擦除次數(shù),記錄為C+1 ;將數(shù)據(jù)塊Al中存儲(chǔ)的數(shù)據(jù)M讀出并寫入至空閑塊C2中,隨后將數(shù)據(jù)塊Al最為新的空閑塊放入空閑塊組,而將寫入了數(shù)據(jù)M的空閑塊C2作為數(shù)據(jù)塊放入數(shù)據(jù)塊組,此時(shí),空閑塊組為Al、A2、B1、B2,而數(shù)據(jù)塊組為C1、C2、D1、D2。
[0032]綜上所述,本發(fā)明所提供的維持閃存損耗均衡的方法,其在進(jìn)行損耗均衡處理時(shí)結(jié)合考慮了閃存中每個(gè)可用塊的實(shí)際比特出錯(cuò)情況,減少了比特出錯(cuò)情況較高的可用塊的訪問次數(shù),提高了閃存的使用壽命和穩(wěn)定性。尤其對(duì)于次片閃存而言,由于其含有較多比特出錯(cuò)情況較高的可用塊,本發(fā)明能更有效的提高次片閃存的數(shù)據(jù)讀寫穩(wěn)定性和使用壽命。
[0033]盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來限定。
【權(quán)利要求】
1.一種維持閃存損耗均衡的方法,其特征在于,該方法包含以下步驟: 51、掃描閃存的所有塊,經(jīng)過統(tǒng)計(jì)分析得出掃描結(jié)果,從中挑選出可用塊; 52、對(duì)閃存中經(jīng)掃描后挑選出的可用塊,統(tǒng)計(jì)比特出錯(cuò)情況并進(jìn)行分級(jí),針對(duì)每個(gè)級(jí)別設(shè)定相應(yīng)的擦除次數(shù)的初始值; 53、根據(jù)閃存中每個(gè)可用塊的擦除次數(shù)的初始值,將其歸類為空閑塊或數(shù)據(jù)塊,從而形成空閑塊組和數(shù)據(jù)塊組; 54、進(jìn)行損耗均衡處理,將數(shù)據(jù)塊組中當(dāng)前擦除次數(shù)最少的數(shù)據(jù)塊和空閑塊組中當(dāng)前擦除次數(shù)最多的空閑塊進(jìn)行交換。
2.如權(quán)利要求1所述的維持閃存損耗均衡的方法,其特征在于,所述的SI中,具體包含以下步驟: 511、對(duì)閃存的每個(gè)塊的每個(gè)頁(yè)寫入數(shù)據(jù),然后讀出數(shù)據(jù),再利用錯(cuò)誤檢查糾正技術(shù)判斷每個(gè)頁(yè)中有多少個(gè)比特出錯(cuò)并記錄下來; 512、判斷每個(gè)頁(yè)的比特出錯(cuò)數(shù)目是否小于設(shè)定值;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)小于等于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)可用;如當(dāng)前頁(yè)的比特出錯(cuò)數(shù)大于設(shè)定值,則確認(rèn)當(dāng)前頁(yè)不可用; 513、判斷每個(gè)塊的不可用頁(yè)的數(shù)目是否小于設(shè)定值;如當(dāng)前塊的不可用頁(yè)的數(shù)目小于等于設(shè)定值,則確認(rèn)當(dāng)前塊可用;如當(dāng)前塊的不可用頁(yè)的數(shù)目大于設(shè)定值,則確認(rèn)當(dāng)前塊不可用。
3.如權(quán)利要求2所述的維持閃存損耗均衡的方法,其特征在于,所述的S2中,具體包含以下步驟: 521、統(tǒng)計(jì)每個(gè)可用塊的比特出錯(cuò)情況,并劃分錯(cuò)誤級(jí)別; 522、對(duì)每個(gè)錯(cuò)誤級(jí)別分別設(shè)定對(duì)應(yīng)的擦除次數(shù)的初始值,錯(cuò)誤級(jí)別越高,設(shè)定的擦除次數(shù)的初始值越大; 523、按照每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別,分別設(shè)定并記錄與該錯(cuò)誤級(jí)別相對(duì)應(yīng)的每個(gè)可用塊的擦除次數(shù)的初始值。
4.如權(quán)利要求3所述的維持閃存損耗均衡的方法,其特征在于,所述的S21中,具體包含以下步驟: 5211、針對(duì)閃存中的每個(gè)可用塊,將其中每個(gè)頁(yè)中的比特出錯(cuò)數(shù)目相加,計(jì)算得到每個(gè)可用塊的比特出錯(cuò)總數(shù); 5212、根據(jù)每個(gè)可用塊的比特出錯(cuò)總數(shù)劃分每個(gè)可用塊的錯(cuò)誤級(jí)別,比特出錯(cuò)總數(shù)越大,錯(cuò)誤級(jí)別越聞; 5213、記錄每個(gè)可用塊所對(duì)應(yīng)的錯(cuò)誤級(jí)別。
5.如權(quán)利要求3或4所述的維持閃存損耗均衡的方法,其特征在于,所述的S22中,設(shè)定的擦除次數(shù)的初始值必須小于閃存塊預(yù)先限定的最大擦除次數(shù)。
6.如權(quán)利要求5所述的維持閃存損耗均衡的方法,其特征在于,所述的S3具體為:判斷每個(gè)可用塊的擦除次數(shù)的初始值是否小于設(shè)定值; 若當(dāng)前塊的擦除次數(shù)的初始值小于設(shè)定值,則將其歸類為空閑塊,放入空閑塊組; 若當(dāng)前塊的擦除次數(shù)的初始值大于等于設(shè)定值,則將其歸類為數(shù)據(jù)塊,放入數(shù)據(jù)塊組。
7.如權(quán)利要求6所述的維持閃存損耗均衡的方法,其特征在于,所述的S3中,還包含將數(shù)據(jù)寫入數(shù)據(jù)塊的步驟,具體為: 當(dāng)要將新數(shù)據(jù)寫入數(shù)據(jù)塊組中的其中一個(gè)數(shù)據(jù)塊中時(shí),先從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最少的空閑塊,對(duì)該空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I并記錄; 將新數(shù)據(jù)寫入該空閑塊中; 交換所述的空閑塊與數(shù)據(jù)塊的位置,即將該寫入了新數(shù)據(jù)的空閑塊作為數(shù)據(jù)塊放入數(shù)據(jù)塊組中,而將需要寫入新數(shù)據(jù)的數(shù)據(jù)塊作為空閑塊放入空閑塊組中。
8.如權(quán)利要求6或7所述的維持閃存損耗均衡的方法,其特征在于,所述的S4中,具體包含以下步驟: .541、從數(shù)據(jù)塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最小的數(shù)據(jù)塊; .542、從空閑塊組中挑選一個(gè)當(dāng)前擦除次數(shù)最大的空閑塊; . 543、比較挑選出的數(shù)據(jù)塊和空閑塊的各自當(dāng)前擦除次數(shù)的大小;如空閑塊的當(dāng)前擦除次數(shù)小于等于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),結(jié)束損耗均衡處理;如空閑塊的當(dāng)前擦除次數(shù)大于數(shù)據(jù)塊的當(dāng)前擦除次數(shù),則繼續(xù)進(jìn)行步驟S44 ; .544、計(jì)算挑選出的空閑塊的當(dāng)前擦除次數(shù)與挑選出的數(shù)據(jù)塊的當(dāng)前擦除次數(shù)的差值; .545、比較所述的差值與預(yù)先設(shè)定的損耗均衡閾值的大小;如所述的差值大于損耗均衡閾值,結(jié)束損耗均衡處理;如所述的差值大于等于損耗均衡閾值,則繼續(xù)進(jìn)行步驟S46 ; . 546、對(duì)挑選出的空閑塊進(jìn)行擦除操作,將該空閑塊的當(dāng)前擦除次數(shù)加I并記錄,將挑選出的數(shù)據(jù)塊中的數(shù)據(jù)讀出并寫入至空閑塊中,將該數(shù)據(jù)塊作為新的空閑塊放入空閑塊組,并將寫入了數(shù)據(jù)的空閑塊作為新的數(shù)據(jù)塊放入原數(shù)據(jù)塊在數(shù)據(jù)塊組中的位置,結(jié)束損耗均衡處理。
【文檔編號(hào)】G11C29/42GK104360957SQ201410689234
【公開日】2015年2月18日 申請(qǐng)日期:2014年11月26日 優(yōu)先權(quán)日:2014年11月26日
【發(fā)明者】周玉潔, 韋月 申請(qǐng)人:上海愛信諾航芯電子科技有限公司