專利名稱:一種提高閃存使用壽命的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種提高閃存使用壽命的方法,具體是一種通過錯(cuò)誤矯正增加錯(cuò)誤糾正能力提高閃存使用壽命的方法。
背景技術(shù):
隨著嵌入式技術(shù)發(fā)展,NAND (與非)閃存的應(yīng)用越來越廣泛。閃存是一種常用的存儲(chǔ)介質(zhì),具有體積小、容量大、成本低、掉電數(shù)據(jù)不丟失等一系列優(yōu)點(diǎn)。通常,一個(gè)閃存是由若干個(gè)閃存組塊組成,每個(gè)閃存塊又分為若干物理頁。閃存塊是擦除操作的最小單位,而讀寫都是以頁為單位進(jìn)行,對(duì)于每個(gè)物理頁進(jìn)行重寫之前,必須先對(duì)該頁所在的塊執(zhí)行擦除操作。由于在NAND閃存的生產(chǎn)及使用過程中會(huì)產(chǎn)生壞塊,為了檢測(cè)數(shù)據(jù)的可靠性,在應(yīng)用閃存的系統(tǒng)中都會(huì)采用一定的壞區(qū)管理策略。因此,在不影響正常使用情況下如何延長閃存使用壽命,成為目前的一個(gè)研究熱點(diǎn)。在本領(lǐng)域,對(duì)于ECC (Error Correcting Code,錯(cuò)誤檢查和糾正,簡稱錯(cuò)誤校正碼或糾錯(cuò)碼)的一般認(rèn)識(shí)是,由于存儲(chǔ)于閃存的數(shù)據(jù)的碼元有可能產(chǎn)生錯(cuò)誤,為保證讀寫的正確性,在閃存中寫入數(shù)據(jù)時(shí),會(huì)根據(jù)與寫入的數(shù)據(jù)產(chǎn)生一個(gè)錯(cuò)誤校正碼,該錯(cuò)誤校正碼會(huì)被存放在閃存的相應(yīng)頁預(yù)先分配的存儲(chǔ)空間中,該部分存儲(chǔ)空間不能被數(shù)據(jù)所占用。依據(jù)錯(cuò)誤碼,當(dāng)讀取閃存中存放的數(shù)據(jù)時(shí),即可根據(jù)所對(duì)應(yīng)的頁面的錯(cuò)誤碼對(duì)所讀取的數(shù)據(jù)進(jìn)行錯(cuò)誤校正。然而,隨著閃存的使用或者產(chǎn)品的某些區(qū)塊本身的制造缺陷,使得其錯(cuò)誤位數(shù)超出最大矯正位數(shù),使得數(shù)據(jù)不能被正確讀出時(shí),相應(yīng)塊就會(huì)被標(biāo)記為壞塊,當(dāng)壞塊數(shù)到達(dá)預(yù)定閾值時(shí),閃存便被報(bào)廢。由此可知,糾錯(cuò)碼的位數(shù)對(duì)閃存使用壽命有至關(guān)重要的影響,更具體地,以三星某款MLC (Mult1-level,多層單元)芯片為例,官方對(duì)該閃存芯片的要求是24bits/lKB,壽命是3000次EP (擦除),當(dāng)我們配置為24bit/lKB的糾錯(cuò)時(shí),擦寫某塊超過3000次后便會(huì)出現(xiàn)ECC無法糾錯(cuò),該塊達(dá)到壽命,如果將NFC配置改為30bit/lKB,擦寫某塊超過5000次后還可以正常工作,由此可知,ECC的糾錯(cuò)數(shù)對(duì)閃存的壽命影響重大。從而,提高糾錯(cuò)碼必然能夠提高閃存的使用壽命。然而,如前所述,糾錯(cuò)碼必然要占據(jù)一定的存儲(chǔ)空間。通常閃存芯片都會(huì)預(yù)留一定的存儲(chǔ)空間(sqare)備用,比如這款三星的flash空閑區(qū)的大小為448bit,允許最多采用32bit/lKB的ECC糾錯(cuò),加之還要用一些作為軟件的預(yù)留區(qū)來存放數(shù)據(jù),糾錯(cuò)碼的位數(shù)通常被固定設(shè)置。如果將閃存中每個(gè)頁犧牲IK容量作為增加的spare空間,可以增加ECC的糾錯(cuò)位數(shù)。但普通的閃存每頁大小如為8K,如果犧牲IK即犧牲產(chǎn)品容量的1/8,這樣很難讓用戶接受。中國CN102693760A號(hào)發(fā)明專利申請(qǐng)公開即涉及ECC位數(shù)對(duì)閃存使用壽命的討論,其錯(cuò)誤校正碼是動(dòng)態(tài)配置的,具體是當(dāng)以NAND快閃存儲(chǔ)器中的第一頁被寫入第一數(shù)據(jù)時(shí),根據(jù)該第一頁發(fā)生位錯(cuò)誤的機(jī)率,決定該第一頁所對(duì)應(yīng)的錯(cuò)誤校正碼的類型,然后根據(jù)該第一頁對(duì)應(yīng)的錯(cuò)誤校正碼的類型與該第一數(shù)據(jù),產(chǎn)生第一錯(cuò)誤校正碼。如此,針對(duì)發(fā)生位錯(cuò)誤的機(jī)率較高的頁可使用矯正能力較強(qiáng)的錯(cuò)誤校正碼,從而減少該NAND快閃存儲(chǔ)器中不可使用的區(qū)塊的數(shù)目,來延長其使用壽命。上述動(dòng)態(tài)調(diào)整方式能夠在整體上有效地降低糾錯(cuò)碼所占用的空間。然而,該文獻(xiàn)并沒有提供針對(duì)糾錯(cuò)碼如何分配存儲(chǔ)空間的策略,如果是傳統(tǒng)的分配方式,后期較大的糾錯(cuò)碼仍然需要占據(jù)較大的存儲(chǔ)空間。因此,有必要尋找新的途徑,在提高糾錯(cuò)碼大小的同時(shí),使所被占用空間能夠被接受。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種新的提高閃存使用壽命的方法,在通過提聞糾錯(cuò)碼糾錯(cuò)位數(shù)以提聞閃存使用壽命的同時(shí),減少糾錯(cuò)碼對(duì)存儲(chǔ)空間的占用率。本發(fā)明采用以下技術(shù)方案:
一種提高閃存使用壽命的方法,將閃存頁進(jìn)行分組,并通過閃存邏輯轉(zhuǎn)換層基于并行讀寫的方法將組內(nèi)頁面映射為一個(gè)總頁面,分配該總頁面的一個(gè)存儲(chǔ)空間用于存放糾錯(cuò)碼,用于對(duì)所屬組的頁面進(jìn)行讀寫時(shí)的糾錯(cuò)。從以上方案可以看出,依據(jù)本發(fā)明,閃存的物理頁被分組,組內(nèi)的物理頁被映射為一個(gè)邏輯頁,所分配的用于存放糾錯(cuò)碼的存儲(chǔ)空間平均給每個(gè)物理頁后,對(duì)該其存儲(chǔ)空間的影響減少,使較大的糾錯(cuò)碼存放的約束減少,使使用壽命與存儲(chǔ)空間的性耗比得到較大幅度的提升,從而在提聞閃存使用壽命的同時(shí),減少了糾錯(cuò)碼對(duì)存儲(chǔ)空間的占用率。上述提高閃存使用壽命的方法,所適用閃存的閃存控制器支持多片自動(dòng)跳轉(zhuǎn)功能,從而通過所述邏輯轉(zhuǎn)換層將多片相同偏移地址頁映射為一個(gè)總頁面。
圖1閃存中ECC糾錯(cuò)位數(shù)及存儲(chǔ)改變的圖例。
具體實(shí)施例方式為使本領(lǐng)域的技術(shù)人員更清楚的理解本發(fā)明,參照說明書附圖1,以單頁8K兩兩映射為一個(gè)16K頁為例進(jìn)行說明。當(dāng)前,正常情況下ECC可以糾正的錯(cuò)誤為24bits/lKB,需要的校驗(yàn)位數(shù)為14*24=336bits。如果我們將兩個(gè)片(plane)相同地址映射為(以下簡稱合并)為16K的頁,則整個(gè)頁中所需要的糾錯(cuò)位數(shù)為336bits*16=5376bits。對(duì)于單頁大小為16K,取出IK作為增加的ECC保護(hù)時(shí),總的糾錯(cuò)位數(shù)可以擴(kuò)充為5376+1024*8=13568 bits。對(duì)于每個(gè)IK的糾正的錯(cuò)誤大概為13586bits/ (15*14)=64bits/lKB。如圖1所示,使用兩個(gè)8K的頁,每個(gè)頁為8* (lK+24bits),將兩個(gè)8K頁合并后可以視為16*(lK+24bits)。合并后的頁取出IK作為增加的ECC保護(hù),每頁存儲(chǔ)15K的數(shù)據(jù),每頁為15*(lK+64bits)。具體的實(shí)現(xiàn)方法如下:首先當(dāng)上位機(jī)的寫命令經(jīng)過FTL (閃存轉(zhuǎn)換層)后,每個(gè)mult1-plane 的 page 已經(jīng)在物理上已經(jīng)變?yōu)?15KB,當(dāng) NFC (NAND Flash Controller,閃存控制器)接到對(duì)閃存的寫命令后,會(huì)將下發(fā)閃存的program (程序)命令,同時(shí)數(shù)據(jù)會(huì)經(jīng)過ECC硬件模塊,ECC糾錯(cuò)在這里以IKB為單位,這時(shí)采用64bits/lKB的ECC糾錯(cuò),每次向閃存寫IKB的數(shù)據(jù),后面都會(huì)跟112Byte的ECC校驗(yàn)位,依此寫入15KB的數(shù)據(jù),總共的ECC校驗(yàn)位是1680Byte,而這時(shí)所擁有的空閑區(qū)是1024+448X2為1920Byte,滿足需求。當(dāng)上位機(jī)發(fā)送讀命令的時(shí)候,同樣先經(jīng)過FTL層,然后通過NFC對(duì)閃存發(fā)送讀命令,閃存在將IKB數(shù)據(jù)送給NFC和ECC糾錯(cuò)模塊的同時(shí),也將112Byte的校驗(yàn)數(shù)據(jù)傳送給ECC糾錯(cuò)模塊,ECC模塊在解碼后對(duì)數(shù)據(jù)進(jìn)行糾錯(cuò),當(dāng)IKB的數(shù)據(jù)錯(cuò)誤位小于64bit的時(shí)候能完全糾錯(cuò)恢復(fù)出之前的寫入數(shù)據(jù),從而保證了數(shù)據(jù)的正確性,而且64bit的糾錯(cuò)能力比起之前的24bit糾錯(cuò)能力,大大提高了閃存的壽命。該方法與之前的的糾錯(cuò)方式相比在大幅增加了閃存壽命的同時(shí)只損失了 1/16的容量。該方法采用硬件與軟件相結(jié)合的方式來實(shí)現(xiàn)。硬件用來實(shí)現(xiàn)IKB數(shù)據(jù)對(duì)應(yīng)的ECC糾錯(cuò)碼在閃存頁位置的定位,而軟件則用來實(shí)現(xiàn)FTL層中關(guān)于mult1-plane物理頁的容量從16Kbyte到15Kbyte的轉(zhuǎn)換,主要是上位機(jī)傳送的LBA (Logical Block Addressing,邏輯塊尋址)與邏輯頁的關(guān)系轉(zhuǎn)換。通過以上實(shí)現(xiàn)可以看出,其是以犧牲合并頁的一小部分空間來換取了閃存的使用壽命。以合并頁大小為16K計(jì)算,每合并頁只包含15K的數(shù)據(jù)區(qū),但ECC卻增加了 40bits,是24bits的一倍多。采用mult1-plane操作的另一個(gè)優(yōu)點(diǎn)就是可以提高閃存的讀寫操作速度,這與閃存的內(nèi)部結(jié)構(gòu)有關(guān)系。以上內(nèi)容只是表明兩個(gè)頁合并為一個(gè)頁的操作,其實(shí)而每個(gè)閃存芯片由2 4個(gè)片(plane)或者更多個(gè)片組成,因而針對(duì)如單頁8K的閃存可以擴(kuò)展單頁大小為16K或更高,方法跟之前一樣,同樣取出一部分閃存頁的內(nèi)部空間來用存放多出位數(shù)的ECC的糾錯(cuò)碼。在一些應(yīng)用中,最好使用NFC支持multi_plane自動(dòng)跳轉(zhuǎn)功能的閃存,以達(dá)到更容易將multiplane相同偏移地址頁合并為單個(gè)page的目的,減少不同片上頁進(jìn)行邏輯轉(zhuǎn)換的系統(tǒng)消耗。依據(jù)上述內(nèi)容,針對(duì)提高閃存ECC位數(shù)來提高閃存的使用壽命。將兩個(gè)或多個(gè)小的plane合并為一個(gè)大的page,在單個(gè)頁中拿出IK來作為增加的ECC保護(hù),只是犧牲了一小部分的容量,而每頁中增加的校正位數(shù)卻很明顯,提高了數(shù)據(jù)的錯(cuò)誤檢測(cè)及糾錯(cuò)能力,增加了閃存的擦寫次數(shù),能明顯增加閃存的使用壽命。術(shù)語:閃存轉(zhuǎn)換層FTL (flashtranslation layer) , FTL是一種軟件中間層,最初是由intel提出的,用于將閃存模擬成為虛擬塊設(shè)備,從而能夠在閃存上實(shí)現(xiàn)FAT (FileAllocation Table,文件分配表)等塊設(shè)備類文件系統(tǒng)。主要是將閃存模擬成磁盤設(shè)備,為上層應(yīng)用提供與磁盤一樣的接口,而不需要修改應(yīng)用軟件和文件系統(tǒng)。并行調(diào)度是FTL的關(guān)鍵技術(shù)之一,這種技術(shù)可以有效地提高設(shè)備的I/O帶寬。如閃存固態(tài)盤(FlashSSD)中有大量的閃存芯片(chip),而每個(gè)閃存芯片由2 4個(gè)片(plane)組成。并行調(diào)度可以實(shí)現(xiàn)各個(gè)Plane間的負(fù)載均衡和損耗均衡,這就保證了讀操作的低延時(shí)。那么并行調(diào)度也更有利于本文中替提出方案的實(shí)現(xiàn),不僅有效地減少對(duì)存儲(chǔ)空間的占用,而且是的存取速度更快。
權(quán)利要求
1.一種提高閃存使用壽命的方法,其特征在于,將閃存頁進(jìn)行分組,并通過閃存邏輯轉(zhuǎn)換層基于并行讀寫的方法將組內(nèi)頁面映射為一個(gè)總頁面,分配該總頁面的一個(gè)存儲(chǔ)空間用于存放糾錯(cuò)碼,用于對(duì)所屬組的頁面進(jìn)行讀寫時(shí)的糾錯(cuò)。
2.根據(jù)權(quán)利要求1所述的提高閃存使用壽命的方法,其特征在于,所適用閃存的閃存控制器支持多片自動(dòng)跳轉(zhuǎn)功能,從而通過所述邏輯轉(zhuǎn)換層將多片相同偏移地址頁映射為一個(gè)總頁面。
全文摘要
本發(fā)明公開了一種提高閃存使用壽命的方法,將閃存頁進(jìn)行分組,并通過閃存邏輯轉(zhuǎn)換層基于并行讀寫的方法將組內(nèi)頁面映射為一個(gè)總頁面,分配該總頁面的一個(gè)存儲(chǔ)空間用于存放糾錯(cuò)碼,用于對(duì)所屬組的頁面進(jìn)行讀寫時(shí)的糾錯(cuò)。依據(jù)本發(fā)明在通過提高糾錯(cuò)碼糾錯(cuò)位數(shù)以提高閃存使用壽命的同時(shí),減少糾錯(cuò)碼對(duì)存儲(chǔ)空間的占用率。
文檔編號(hào)G06F12/02GK103198020SQ201310085719
公開日2013年7月10日 申請(qǐng)日期2013年3月18日 優(yōu)先權(quán)日2013年3月18日
發(fā)明者張洪柳, 張青, 李峰, 王璞, 高美洲 申請(qǐng)人:山東華芯半導(dǎo)體有限公司