本發(fā)明涉及壞塊數(shù)據(jù)搬移,尤其是一種提高壞塊管理時(shí)數(shù)據(jù)搬移性能的方法。
背景技術(shù):
半導(dǎo)體行業(yè)的蓬勃發(fā)展,出現(xiàn)了高性能的存儲(chǔ)器nandflash,nandflash存儲(chǔ)器使用半導(dǎo)體作為存儲(chǔ)介質(zhì),具有高速,低能耗和防震等優(yōu)點(diǎn),nandflash的基本存儲(chǔ)單元是由塊(block)構(gòu)成。每塊又由若干頁(yè)(page)構(gòu)成。其中,最小讀寫單元是頁(yè),最小擦除單元是塊,在對(duì)一頁(yè)進(jìn)行編程之前,需要先將該頁(yè)所在的塊進(jìn)行擦除操作。由于nandflash本身的屬性,單塊的擦除次數(shù)是有限的,隨著工藝越來(lái)越先進(jìn),容量越來(lái)越大,nandflash單塊的擦除次數(shù)越來(lái)越小,從slc型nandflash的10萬(wàn)次擦除次數(shù)到目前tlc型nandflash的幾百次的擦除次數(shù),因此,針對(duì)nandflash而言磨損均衡顯得尤為重要,好的磨損均衡管理方法不但能夠提高nandflash性能和效率,還能夠大大的延長(zhǎng)nandflash的使用壽命?;诖耍霈F(xiàn)了一系列針對(duì)nandflash的管理算法,管理算法的核心都包含地址映射、磨損均衡、垃圾回收和壞塊管理幾個(gè)大的部分組成,其中壞塊管理是nandflash管理算法一個(gè)重要的部分。
由于nandflash制造工藝的原因,生產(chǎn)廠家不能保證出廠時(shí)nandflash所有塊狀態(tài)都是好的,會(huì)有一些出廠時(shí)就已經(jīng)是壞塊,這些壞塊廠家會(huì)在出廠時(shí)進(jìn)行標(biāo)記,壞塊管理算法在初始化時(shí)會(huì)讀取該標(biāo)志位,將這些塊加入到壞塊列表中進(jìn)行管理。由于nandflash在使用過(guò)程中因?yàn)楦鞣N異常也會(huì)造成壞塊的發(fā)生,所以壞塊管理算法會(huì)將使用過(guò)程中出現(xiàn)的壞塊加入壞塊列表進(jìn)行管理。在這個(gè)過(guò)程中,若該壞塊中還存在數(shù)據(jù),則需要對(duì)數(shù)據(jù)進(jìn)行搬移的過(guò)程,搬移完成后,需要對(duì)地址映射表進(jìn)行更新處理。對(duì)于大容量固態(tài)存儲(chǔ)設(shè)備而言,為了追求高性能,所以多數(shù)采取頁(yè)映射機(jī)制,在這種映射機(jī)制下,由于nandflash映射表表示的是邏輯頁(yè)地址(lpa)到物理頁(yè)地址(ppa)的映射關(guān)系,即可以通過(guò)lpa方便的找到ppa,但是在寫入數(shù)據(jù)時(shí)出現(xiàn)壞塊后,需要將該塊中存儲(chǔ)的數(shù)據(jù)全部拷貝到新塊中,然后通過(guò)ppa反向查找到lpa,修改lpa與新ppa的映射關(guān)系才能保證數(shù)據(jù)的正常,如圖1所示。對(duì)于nandflash來(lái)說(shuō),容量越大,地址映射表也越大,例如對(duì)于l85c的系列2tb容量的nandflash有33536個(gè)塊,每個(gè)塊具有512個(gè)頁(yè),即一共包含有33536*512=17170432個(gè)頁(yè),對(duì)與頁(yè)映射表說(shuō),一共需要17170432個(gè)表項(xiàng)。對(duì)于大容量ssd來(lái)說(shuō),需要的表項(xiàng)則以成倍增加,要在如此多的表項(xiàng)中尋找到ppa對(duì)應(yīng)的lpa需要耗費(fèi)大量的時(shí)間,設(shè)為t0,對(duì)應(yīng)l85c系列的nandflash來(lái)說(shuō),每個(gè)塊具有512頁(yè),要進(jìn)行數(shù)據(jù)搬移的話,需要的時(shí)間為512t0,這對(duì)于高速數(shù)據(jù)讀寫應(yīng)用來(lái)說(shuō),是不可接受的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:針對(duì)上述存在的問(wèn)題,提供一種不需遍歷地址映射表的高效率壞塊數(shù)據(jù)搬移方法。
本發(fā)明采用的技術(shù)方案如下:
一種提高壞塊管理時(shí)數(shù)據(jù)搬移性能的方法,nandflash最小擦除單位為塊,塊由頁(yè)組成,頁(yè)分為數(shù)據(jù)段和附加段,方法包括步驟:
(1)在nandflash頁(yè)中寫入存有該物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log的步驟;
(2)回收壞塊數(shù)據(jù)的步驟:
(2-1)塊數(shù)據(jù)發(fā)生異常后,讀取塊頁(yè)中存儲(chǔ)的數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)lpa_log,獲取該物理頁(yè)地址ppa對(duì)應(yīng)的邏輯頁(yè)地址pla;
(2-2)拷貝塊頁(yè)數(shù)據(jù)至新頁(yè),并在新頁(yè)中重新寫入數(shù)據(jù)結(jié)構(gòu)lpa_log;
(2-3)修改地址映射表中邏輯頁(yè)地址pla對(duì)應(yīng)的新物理頁(yè)地址ppa’;
(2-4)完成塊所有頁(yè)數(shù)據(jù)的搬移后,標(biāo)記該塊為壞塊并將其加入壞塊列表進(jìn)行管理。
進(jìn)一步地,步驟(1)中伴隨用戶向nandflash頁(yè)中存入數(shù)據(jù),nandflash驅(qū)動(dòng)在該頁(yè)附加段中寫入存有該物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log。
進(jìn)一步地,步驟(2)中塊數(shù)據(jù)發(fā)生異常后,可先將塊標(biāo)記為待回收壞塊,優(yōu)先響應(yīng)上位機(jī)的數(shù)據(jù)讀寫請(qǐng)求再進(jìn)行頁(yè)數(shù)據(jù)搬移。
綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:伴隨用戶向nandflash頁(yè)中存入數(shù)據(jù),nandflash驅(qū)動(dòng)在該頁(yè)附加段中寫入存有該物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log,在需要對(duì)壞塊數(shù)據(jù)進(jìn)行搬移時(shí),不需遍歷地址映射表即可直接從數(shù)據(jù)結(jié)構(gòu)lpa_log中獲取物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla,有效提升了壞塊數(shù)據(jù)搬移的效率和性能。
附圖說(shuō)明
本發(fā)明將通過(guò)例子并參照附圖的方式說(shuō)明,其中:
圖1為本發(fā)明提供的回收壞塊數(shù)據(jù)的方法流程圖
具體實(shí)施方式
本說(shuō)明書中公開(kāi)的所有特征,或公開(kāi)的所有方法或過(guò)程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
本說(shuō)明書中公開(kāi)的任一特征,除非特別敘述,均可被其他等效或具有類似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只是一系列等效或類似特征中的一個(gè)例子而已。
一種提高壞塊管理時(shí)數(shù)據(jù)搬移性能的方法,nandflash最小擦除單位為塊,塊由頁(yè)組成,頁(yè)分為數(shù)據(jù)段和附加段,方法包括步驟:
(1)在nandflash頁(yè)中寫入存有該物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log的步驟;
(2)回收壞塊數(shù)據(jù)的步驟:
(2-1)塊數(shù)據(jù)發(fā)生異常后,讀取塊頁(yè)中存儲(chǔ)的數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)lpa_log,獲取該物理頁(yè)地址ppa對(duì)應(yīng)的邏輯頁(yè)地址pla;
(2-2)拷貝塊頁(yè)數(shù)據(jù)至新頁(yè),并在新頁(yè)中重新寫入數(shù)據(jù)結(jié)構(gòu)lpa_log;
(2-3)修改地址映射表中邏輯頁(yè)地址pla對(duì)應(yīng)的新物理頁(yè)地址ppa’;
(2-4)完成塊所有頁(yè)數(shù)據(jù)的搬移后,標(biāo)記該塊為壞塊并將其加入壞塊列表進(jìn)行管理。
為提高寫入性能,nandflash采用異地更新策略,即一個(gè)邏輯頁(yè)地址lpa可對(duì)應(yīng)多個(gè)物理頁(yè)地址ppa,其中只有一個(gè)物理頁(yè)地址ppa上存儲(chǔ)的是有效數(shù)據(jù),其余均為過(guò)時(shí)數(shù)據(jù),可被用作回收數(shù)據(jù),或不使用。通過(guò)查找物理頁(yè)地址ppa,找到邏輯頁(yè)地址lpa與物理頁(yè)地址ppa的對(duì)應(yīng)關(guān)系,才能獲取有效的數(shù)據(jù)。
步驟(1)中伴隨用戶向nandflash頁(yè)中存入數(shù)據(jù),nandflash驅(qū)動(dòng)在該頁(yè)附加段中寫入存有該物理頁(yè)地址ppa對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log。當(dāng)用戶不向nandflash中存入數(shù)據(jù)時(shí),nandflash驅(qū)動(dòng)不會(huì)在該頁(yè)中寫入數(shù)據(jù)結(jié)構(gòu)lpa_log。數(shù)據(jù)結(jié)構(gòu)lpa_log的寫入是伴隨用戶向nandflash頁(yè)中存入數(shù)據(jù)發(fā)生。
將頁(yè)數(shù)據(jù)從壞塊搬移出時(shí),該頁(yè)附加段中的數(shù)據(jù)結(jié)構(gòu)lpa_log并不隨頁(yè)數(shù)據(jù)搬移。將頁(yè)數(shù)據(jù)拷貝至新頁(yè)中時(shí),nandflash驅(qū)動(dòng)執(zhí)行步驟(1)過(guò)程在該新頁(yè)附加段中寫入存有新物理頁(yè)地址ppa’對(duì)應(yīng)邏輯頁(yè)地址pla的數(shù)據(jù)結(jié)構(gòu)lpa_log。
優(yōu)化地,步驟(2)中塊數(shù)據(jù)發(fā)生異常后,可先將塊標(biāo)記為待回收壞塊,優(yōu)先響應(yīng)上位機(jī)的數(shù)據(jù)讀寫請(qǐng)求,待上位機(jī)數(shù)據(jù)請(qǐng)求完成后,執(zhí)行步驟(2-1)、步驟(2-2)、步驟(2-3)進(jìn)行壞塊數(shù)據(jù)回收。數(shù)據(jù)回收前先把數(shù)據(jù)異常的塊標(biāo)記為待回收壞塊,優(yōu)先響應(yīng)上位機(jī)的數(shù)據(jù)讀寫請(qǐng)求,有效提高了壞塊數(shù)據(jù)搬移的效率和性能。
本發(fā)明并不局限于前述的具體實(shí)施方式。本發(fā)明擴(kuò)展到任何在本說(shuō)明書中披露的新特征或任何新的組合,以及披露的任一新的方法或過(guò)程的步驟或任何新的組合。