3)將用戶數(shù)據(jù)緩沖區(qū)bufferO添加到RAID計算任務(wù)的buffer列表中,并判斷是否達(dá)到啟動RAID計算的條件:buf f er列表中的用戶數(shù)據(jù)緩沖區(qū)個數(shù)達(dá)到RAID計算閾值或該條帶的所有用戶數(shù)據(jù)頁全部寫入到NAND Flash;顯然,用戶數(shù)據(jù)緩沖區(qū)buffer O未達(dá)到RAID計算條件;
4)主機繼續(xù)向盤片下發(fā)寫命令,盤片進而分別完成對SuperPage O的die 2、die 3、die 4的用戶數(shù)據(jù)緩沖區(qū)buffer Kbuffer 2、buffer 3的填充、寫入到NAND Flash和RAID計算任務(wù)的buffer列表添加;當(dāng)buffer 3的用戶數(shù)據(jù)填充完成后,RAID計算任務(wù)的buffer列表中buffer數(shù)達(dá)到RAID計算閾值,因而啟動RAID異或引擎進行異或運算,然后將計算結(jié)果寫入到RAID校驗數(shù)據(jù)緩沖區(qū),此外,由于Super Page O是第一次計算RAID校驗數(shù)據(jù),因而RAID異或引擎的輸入通道中不包含RAID校驗數(shù)據(jù)緩沖區(qū);RAID校驗數(shù)據(jù)計算完成后,將用戶數(shù)據(jù)緩沖區(qū)buffer 0、1、2、3釋放以用于新數(shù)據(jù)的接收;
5)主機繼續(xù)向盤片下發(fā)寫命令,由于die5所在的物理頁為壞頁,因此盤片將該物理頁跳過而分別完成對Super Page O的die 6、die 7、die 8、die 9白勺用戶數(shù)據(jù)緩沖區(qū)bufferO、1、2、3的填充、寫入到NAND Flash和RAID計算任務(wù)的buffer列表添加;當(dāng)buffer 3的用戶數(shù)據(jù)填充完成后,RAID計算任務(wù)的buffer列表中buffer數(shù)達(dá)到RAID計算閾值,因而啟動RAID異或引擎進行異或運算,然后將計算結(jié)果寫入到RAID校驗數(shù)據(jù)緩沖區(qū)。由于此次不是Super Page O第一次計算RAID校驗數(shù)據(jù),因而RAID異或引擎的輸入數(shù)據(jù)包含RAID校驗數(shù)據(jù)緩沖區(qū);此外,由于die 9為Super Page中最后一個用戶數(shù)據(jù)頁,因而將RAID校驗數(shù)據(jù)寫入到Super Page O的die O中;至此,Super Page O條帶完成;
6)主機繼續(xù)向盤片下發(fā)寫命令,盤片按照步驟2到5順序使用SuperPage 0、1、2……。
[0023]實施例3:
本實施例采用Super Page中為了提高某些數(shù)據(jù)(如映射表)的可靠性而采用的RAID 6條帶,具體實施步驟如下:
1)在獲取到空白SuperBlock后,挑選出兩個物理塊以存放RAID校驗數(shù)據(jù),并將物理塊的Die號(本例中為Die O和Die I)記錄在Super Block的塊狀態(tài)表中;
2)盤片在執(zhí)行主機的寫命令時將所接收的數(shù)據(jù)存放到用戶數(shù)據(jù)緩沖區(qū)中,而用戶數(shù)據(jù)緩沖區(qū)按照NAND Flash物理頁大小劃分,當(dāng)一個緩沖區(qū)所接收的用戶數(shù)據(jù)量達(dá)到物理頁中所能存放的最大用戶數(shù)據(jù)量(物理頁大小減去用戶數(shù)據(jù)所需的錯誤糾錯數(shù)據(jù)量)后,該用戶數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)將被寫入到Super Page O的Die 2;
3)將用戶數(shù)據(jù)緩沖區(qū)bufferO添加到RAID計算任務(wù)的buffer列表中,并判斷是否達(dá)到啟動RAID計算的條件:buf f er列表中的用戶數(shù)據(jù)緩沖區(qū)個數(shù)達(dá)到RAID計算閾值或該條帶的所有用戶數(shù)據(jù)頁全部寫入到NAND Flash;顯然,用戶數(shù)據(jù)緩沖區(qū)O未達(dá)到RAID計算條件;
4)主機繼續(xù)向盤片下發(fā)寫命令,盤片進而分別完成對SuperPage O的die 3、die 4、die 5的用戶數(shù)據(jù)緩沖區(qū)buffer Kbuffer 2、buffer 3的填充、寫入到NAND Flash和RAID計算任務(wù)的buffer列表添加;當(dāng)buffer 3的用戶數(shù)據(jù)填充完成后,RAID計算任務(wù)的buffer列表中buffer數(shù)達(dá)到RAID計算閾值,因而啟動RAID異或引擎進行異或運算,然后將計算結(jié)果寫入到RAID校驗數(shù)據(jù)緩沖區(qū)(其中RAID 6 I和RAID 6 II數(shù)據(jù)寫入到校驗數(shù)據(jù)緩沖區(qū)RAID buffer O和RAID buffer I中)。此外,由于Super Page O是第一次計算RAID校驗數(shù)據(jù),因而RAID異或引擎的輸入通道中不包含RAID校驗數(shù)據(jù)緩沖區(qū);RAID校驗數(shù)據(jù)計算完成后,將用戶數(shù)據(jù)緩沖區(qū)buffer 0、1、2、3釋放以用于新數(shù)據(jù)的接收;
5)主機繼續(xù)向盤片下發(fā)寫命令,盤片進而分別完成對SuperPage O的die 6、die 7、die 8,die 9的用戶數(shù)據(jù)緩沖區(qū)buffer O、1、2、3的填充、寫入到NAND Flash和RAID計算任務(wù)的buffer列表添加;當(dāng)buffer 3的用戶數(shù)據(jù)填充完成后,由于die 9為Super Page中最后一個用戶數(shù)據(jù)頁,因而啟動RAID異或引擎進行異或運算,然后將計算結(jié)果寫入到RAID校驗數(shù)據(jù)緩沖區(qū)。由于此次不是Super Page O第一次計算RAID校驗數(shù)據(jù),因而RAID異或引擎的輸入數(shù)據(jù)包含RAID校驗數(shù)據(jù)緩沖區(qū);當(dāng)校驗數(shù)據(jù)計算完成后,分別將RAID 6校驗數(shù)據(jù)RAID6 I和RAID 6 II寫入到Super Page O的die O和die I;至此,Super Page O條帶完成;
6)主機繼續(xù)向盤片下發(fā)寫命令,盤片按照步驟2到5順序使用SuperPage 0、1、2……。
【主權(quán)項】
1.一種SSD盤片內(nèi)部RAID組建方法,其特征在于,該方法主要實現(xiàn)過程如下:將SSD盤片上所有通道內(nèi)所有die上塊號相同的物理塊抽象為邏輯塊Super Block;將Super Block內(nèi)所有頁號相同的物理頁抽象為邏輯頁Super Page;以Super Page作為RAID條帶,在SuperPage上進行RAID組建;對于每個Super Block,SSD盤片內(nèi)部的FTL轉(zhuǎn)換層記錄其中的baddie和RAID die,在RAID組建寫入數(shù)據(jù)時跳過bad die;在RAID條帶內(nèi)所有用戶數(shù)據(jù)寫入完成后,確定最終的RAID校驗數(shù)據(jù)并寫入到RAID die上;所述RAID組建原則為:FTL轉(zhuǎn)換層將Super Block內(nèi)的各個物理塊等效為Nand Flash Block:在寫入操作時按照Super Page號從小到大依次進行數(shù)據(jù)寫入,在擦除操作時對Super Block內(nèi)的各個Nand Flash Block同時擦除;FTL轉(zhuǎn)換層將Super Page內(nèi)的各個物理頁等效為Nand Flash Page:在寫入操作時按照die號從小到大對Super Page內(nèi)的各個Nand Flash Page依次進行數(shù)據(jù)寫入。2.根據(jù)權(quán)利要求1所述的SSD盤片內(nèi)部RAID組建方法,其特征在于,確定最終的RAID校驗數(shù)據(jù)并寫入到RAID die上的具體實現(xiàn)過程包括以下步驟: 1)確定RAID計算閾值; 2)SuperPage內(nèi)每寫入一個用戶數(shù)據(jù)物理頁后,將該用戶數(shù)據(jù)物理頁所對應(yīng)的用戶數(shù)據(jù)緩沖區(qū)添加到RAID計算任務(wù)的buffer列表中; 3)SuperPage內(nèi)寫入的用戶數(shù)據(jù)物理頁數(shù)量達(dá)到RAID計算閾值后,啟動RAID異或引擎進行一次RAID校驗數(shù)據(jù)計算,將計算結(jié)果保留在RAID校驗數(shù)據(jù)緩沖區(qū)中,并在RAID計算任務(wù)的buffer列表中將相應(yīng)用戶數(shù)據(jù)緩沖區(qū)刪除;如果Super Page內(nèi)所有的用戶數(shù)據(jù)物理頁都已經(jīng)被寫入,但RAID計算任務(wù)的buffer列表中的用戶數(shù)據(jù)緩沖區(qū)數(shù)未達(dá)到RAID計算閾值,則繼續(xù)進行RAID校驗數(shù)據(jù)計算; 4)當(dāng)SuperPage內(nèi)所有用戶數(shù)據(jù)物理頁都完成寫入、RAID校驗數(shù)據(jù)計算完成后,將最終的RAID校驗數(shù)據(jù)寫入到RAID die上。3.根據(jù)權(quán)利要求2所述的SSD盤片內(nèi)部RAID組建方法,其特征在于,RAID計算閾值為4。4.一種SSD盤片內(nèi)部RAID組建系統(tǒng),其特征在于,包括: 邏輯塊Super Block:由SSD盤片上所有通道內(nèi)所有die上塊號相同的物理塊抽象而成; 邏輯頁Super Page:由Super Block內(nèi)所有頁號相同的物理頁抽象而成,并用于進行RAID組建; FTL轉(zhuǎn)換層:記錄Super Block中的bad die和RAID die,在RAID組建寫入數(shù)據(jù)時跳過bad die;用于在RAID條帶內(nèi)所有用戶數(shù)據(jù)寫入完成后,確定最終的RAID校驗數(shù)據(jù)并寫入到RAID die上。
【專利摘要】本發(fā)明公開了一種SSD盤片內(nèi)部RAID組建方法,該方法主要實現(xiàn)過程如下:將Nand?Flash?Block抽象為Super?Block,將Page抽象為Super?Page,以Super?Page作為RAID條帶單元,在Super?Page上進行RAID組建;FTL轉(zhuǎn)換層將Super?Block等效為Nand?Flash?Block:在寫入操作時按照Super?Page號從小到大依次寫入,在擦除操作時對Super?Block內(nèi)的各個Nand?Flash?Block同時擦除;FTL轉(zhuǎn)換層將Super?Page等效為Nand?Flash?Page:在寫入操作時按照die號從小到大對Super?Page內(nèi)的各個Nand?Flash?Page依次寫入;此外,F(xiàn)TL轉(zhuǎn)換層還記錄各個Super?Block內(nèi)的bad?die和RAID?die,在進行RAID組建寫入數(shù)據(jù)時,跳過bad?page所在的die;在RAID條帶內(nèi)所有用戶數(shù)據(jù)寫入完成后確定該條帶的最終RAID校驗數(shù)據(jù),并將RAID校驗數(shù)據(jù)寫入到Super?Page的RAID?die上。本發(fā)明所需DRAM資源減少、成本低、效率高。
【IPC分類】G06F3/06
【公開號】CN105573681
【申請?zhí)枴緾N201511023235
【發(fā)明人】陳意, 馬翼, 田達(dá)海, 彭鵬, 楊萬云, 姜黎, 向平, 周士兵
【申請人】湖南國科微電子股份有限公司
【公開日】2016年5月11日
【申請日】2015年12月31日