一種提高混合映射中日志塊數(shù)據(jù)整理性能的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)器NAND Flash數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其是一種提高混合映射中日志塊數(shù)據(jù)整理性能的方法。
【背景技術(shù)】
[0002]半導(dǎo)體行業(yè)的蓬勃發(fā)展,出現(xiàn)了高性能的存儲(chǔ)器NAND Flash, NAND Flash存儲(chǔ)器使用半導(dǎo)體作為存儲(chǔ)介質(zhì),具有高速,低能耗和防震等優(yōu)點(diǎn),但NAND Flash存儲(chǔ)器本身也存在一些不足。首先,它的存儲(chǔ)塊的擦除次數(shù)是有限的;其次,NAND Flash必須要擦除之后才能重新寫入,導(dǎo)致寫入性能較低。因此,磨損均衡顯得尤為重要,好的磨損均衡管理方法不但能夠提高NAND Flash性能和效率,還能夠大大的延長(zhǎng)NAND Flash的使用壽命?;诖耍霈F(xiàn)了專門為NAND Flash存儲(chǔ)器所使用的文件系統(tǒng),如JFFS、JFFS2、YAFFS等,這些NANDFlash專用的文件系統(tǒng)進(jìn)行存儲(chǔ)管理為NAND Flash設(shè)備提供專門的驅(qū)動(dòng)和更好的數(shù)據(jù)管理。但是對(duì)于一個(gè)小型的S0C,由于資源的限制,想采用以上的文件系統(tǒng)對(duì)NAND Flash進(jìn)行管理不太現(xiàn)實(shí),所以亟需一個(gè)輕量級(jí)的管理方法,能夠在有限資源的條件下,滿足對(duì)NANDFlash的磨損均衡控制。
[0003]目前對(duì)于小型的系統(tǒng),常米用的管理方法為FTL(Flash Translat1n Layer)。典型的FTL管理機(jī)制采用以頁為單位進(jìn)行存儲(chǔ)管理的方式,如圖1所示,將物理頁地址與邏輯頁地址來進(jìn)行一一對(duì)應(yīng),讀、寫操作都是按頁進(jìn)行,數(shù)據(jù)存儲(chǔ)時(shí)存儲(chǔ)在空白的頁面存儲(chǔ)區(qū)中,數(shù)據(jù)寫入完成后需更新地址映射表中的轉(zhuǎn)換信息。這種管理算法比較直接,但是由于采用的頁映射機(jī)制,對(duì)于容量小、頁數(shù)少的存儲(chǔ)器,是極為方便的一種方法。但是,對(duì)于大容量NAND Flash來說,就顯得比較吃力因?yàn)槠湫枰艽蟮膬?nèi)存空間來保存當(dāng)前的映射表。
[0004]為了解決這個(gè)問題,提出了混合映射(Hybrid mapping)算法,它是基于塊和頁的混合映射的機(jī)制,如圖2所示,在該算法中,將NAND Flash分為數(shù)據(jù)塊和日志塊兩個(gè)部分,日志塊是有N個(gè)空閑塊組成;同時(shí),在內(nèi)存中存儲(chǔ)著兩個(gè)表:基于塊映射的數(shù)據(jù)塊地址映射表DBMT和基于頁映射的日志塊頁映射表LPMT。由于該算法采用塊映射和頁映射相結(jié)合的方式,所需要消耗的系統(tǒng)內(nèi)存空間比較小,滿足一般小型S0C的需求。根據(jù)混合映射機(jī)制,寫入數(shù)據(jù)先按頁映射的方式先寫入日志塊中,當(dāng)日志塊滿時(shí),需要對(duì)日志塊數(shù)據(jù)進(jìn)行整理,將有效數(shù)據(jù)合并到數(shù)據(jù)塊中,更新數(shù)據(jù)塊地址映射表DBMT,然后釋放日志塊。該過程如圖3所示,在數(shù)據(jù)整理合并過程中,需要對(duì)數(shù)據(jù)進(jìn)行讀寫和塊擦除操作,消耗大量的時(shí)間成本,在大數(shù)據(jù)量寫入時(shí)會(huì)出現(xiàn)寫入性能突然降低的情況,這點(diǎn)對(duì)于目前接口性能要求比較高的應(yīng)用來說很難接受。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是:針對(duì)現(xiàn)有技術(shù)存在的問題,提供一種提高混合映射中日志塊數(shù)據(jù)整理性能的方法,提升了當(dāng)混合映射中日志塊寫滿時(shí)需要對(duì)日志塊進(jìn)行整理合并這個(gè)過程的性能,提供了一個(gè)地址映射表,對(duì)日志塊映射表的進(jìn)行記錄,減少了冗余的塊擦除、塊數(shù)據(jù)拷貝過程,可廣泛應(yīng)用于片上系統(tǒng)的NAND Flash存儲(chǔ)器的管理。
[0006]本發(fā)明采用的技術(shù)方案如下:
一種提高混合映射中日志塊數(shù)據(jù)整理性能的方法包括:
步驟1:根據(jù)ADDR對(duì)日志塊映射表LPMT進(jìn)行分析,判斷日志塊中的數(shù)據(jù)是否全部為有效數(shù)據(jù),若是,則執(zhí)行步驟2 ;否則,按頁讀取日志塊中的數(shù)據(jù),然后寫入對(duì)應(yīng)數(shù)據(jù)塊,執(zhí)行步驟4 ;其中一個(gè)日志塊對(duì)應(yīng)存儲(chǔ)多個(gè)數(shù)據(jù)塊的數(shù)據(jù),其中ADDR為需要寫入數(shù)據(jù)的地址;步驟2:判斷日志塊中存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊個(gè)數(shù)是否小于等于2,若是,則執(zhí)行步驟3;否貝1J,按頁讀取日志塊中的數(shù)據(jù),然后寫入對(duì)應(yīng)數(shù)據(jù)塊,執(zhí)行步驟4 ;
步驟3:修改數(shù)據(jù)塊地址映射表中對(duì)應(yīng)數(shù)據(jù)塊的PAGE_0FFSET,執(zhí)行步驟4 ;
步驟4:更新數(shù)據(jù)塊地址映射表DBMT。
[0007]進(jìn)一步的,所述步驟3中修改數(shù)據(jù)塊地址映射表中對(duì)應(yīng)數(shù)據(jù)塊的PAGE_0FFSET的具體過程是:
當(dāng)日志塊存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊個(gè)數(shù)為1時(shí),說明此時(shí)該日志塊的數(shù)據(jù)全部有效且屬于一個(gè)數(shù)據(jù)塊,則將PAGE_0FFSET設(shè)置為0,根據(jù)當(dāng)前日志塊號(hào)更新數(shù)據(jù)塊地址映射表,將該日志塊從邏輯屬性上轉(zhuǎn)換為數(shù)據(jù)塊;當(dāng)日志塊存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊個(gè)數(shù)為2時(shí),若日志塊第一個(gè)表項(xiàng)值為X,則PAGE_OFFSET=X%PPB,其中PPB為NANDFlash每一個(gè)物理塊中包含的頁數(shù),然后將PAGE_0FFSET設(shè)置為X%PPB,根據(jù)當(dāng)前日志塊號(hào)更新數(shù)據(jù)塊地址映射表,將該日志塊從邏輯屬性上轉(zhuǎn)換為數(shù)據(jù)塊。
[0008]—種提高混合映射中日志塊數(shù)據(jù)整理性能的方法還包括步驟5:根據(jù)日志塊中存儲(chǔ)的數(shù)據(jù)讀取數(shù)據(jù)。
[0009]所述步驟5具體包括:
步驟51:當(dāng)需要讀取數(shù)據(jù)時(shí),根據(jù)ADDR分析日志塊映射表LPMT,判斷該日志塊中是否存在ADDR對(duì)應(yīng)的數(shù)據(jù),若存在,則直接從日志塊中讀取數(shù)據(jù);否則,執(zhí)行步驟52 ;其中ADDR是需要讀取數(shù)據(jù)的對(duì)應(yīng)的地址;
步驟52:查找數(shù)據(jù)塊映射表DBMT,根據(jù)ADDR計(jì)算出需要查找的表項(xiàng)n=ADDR/PPB,執(zhí)行步驟53 ;
步驟53:解析數(shù)據(jù)塊映射表DBMT中第η項(xiàng)的PAGE_0FFSET,若PAGE_0FFSET值為offset, DBMT [η]的值為ΡΑ,則實(shí)際的數(shù)據(jù)存放地址為PA* PPB+offset,從該地址讀取數(shù)據(jù)。
[0010]綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
能夠在數(shù)據(jù)合并時(shí)處理冗余的操作,減少該過程的時(shí)間成本消耗,提升系統(tǒng)的性能。另外針對(duì)零散的數(shù)據(jù)寫入提供了一種定時(shí)的策略,在系統(tǒng)空閑時(shí)段對(duì)日志塊進(jìn)行整理,主動(dòng)對(duì)數(shù)據(jù)進(jìn)行整理合并,保證了系統(tǒng)的性能。
[0011]在本發(fā)明中,提供了一種定時(shí)策略,在系統(tǒng)空閑時(shí)段,主動(dòng)對(duì)日志塊進(jìn)行整理,保證日志塊的空閑率大于80%,使得在零散寫入時(shí)不需要進(jìn)行日志塊的合并,保證了寫入時(shí)性會(huì)泛。
[0012]在本發(fā)明中,采用如圖4所示數(shù)據(jù)結(jié)構(gòu),減少了大數(shù)據(jù)寫入時(shí)日志塊合并時(shí)額外的讀、寫、擦除操作,減少了時(shí)間消耗,提升了系統(tǒng)的實(shí)時(shí)性能。
【附圖說明】
[0013]本發(fā)明將通過例子并參照附圖的方式說明,其中:
圖1基于頁映射的映射表示意圖;
圖2基于混合映射的映射表不意圖;
圖3混合映射數(shù)據(jù)合并示意圖;
圖4 PAGE_0FFSET數(shù)據(jù)結(jié)構(gòu)示意圖;
圖5大數(shù)據(jù)量寫入時(shí)日志塊數(shù)據(jù)示意圖;
圖6a數(shù)據(jù)合并流程圖;
圖6b數(shù)據(jù)讀取流程圖;
圖7 NAND Flash結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0014]本說明書中公開的所有特征,或公開的所有方法或過程中的步驟,除了互相排斥的特征和