本發(fā)明涉及固態(tài)硬盤控制技術(shù),特別涉及一種固態(tài)硬盤數(shù)據(jù)保護方法及固態(tài)硬盤。
背景技術(shù):
圖1是典型的nand組成示意圖:die,可獨立并發(fā)操作的單元;block,可獨立擦除的單元,其內(nèi)各個物理位置的數(shù)據(jù)寫入后在下一次寫之前必須要將整個block擦除;page,讀寫單元。
ssd(固態(tài)硬盤)已經(jīng)被廣泛應用于各種場合,其逐步在替換傳統(tǒng)的hdd存儲設(shè)備。為了獲取最大的nand并發(fā)寫入速度,需要在內(nèi)存(dram)中維護用戶數(shù)據(jù)cache,在緩存足夠的數(shù)據(jù)后發(fā)起對nand的并發(fā)寫入,從而獲取最高的性能。
由于nand的特性,以mlc為例,當某個頁面(uppage)正在編程時,如果出現(xiàn)programfail,不但該頁面會損壞,對應的coupling頁面(lowpage)也會損壞,導致數(shù)據(jù)丟失。
同時還存在當系統(tǒng)在往nand寫入數(shù)據(jù)的過程中,發(fā)生系統(tǒng)掉電的異常是正在寫入的數(shù)據(jù)將發(fā)生損壞,且系統(tǒng)重新上電還無法恢復。特別是進一步地,如果在lowpage編程完成后,系統(tǒng)發(fā)生過掉電,重新上電后,在編程對應的uppage發(fā)生programfail,由于存儲lowpage的dram掉電易失性問題,使得lowpage數(shù)據(jù)恢復變得不可行。
圖2是編程出錯對其它page的影響示意圖,以mlc顆粒為例說明,每個數(shù)據(jù)塊都由page0~page255構(gòu)成,pagen-2和pagen為一對耦合頁couplingpage,且pagen-2為lowpage,n為uppage。page0–n-1已經(jīng)完成數(shù)據(jù)寫入,pagen正在編程,發(fā)生編程錯誤,pagen-2的drambuffer在完成pagen-2編程后即已經(jīng)釋放,因此當pagen正在編程,發(fā)生編程錯誤時造成pagen-2數(shù)據(jù)的損壞,該數(shù)據(jù)無法恢復。因此出現(xiàn)了當pagen編程出錯時,可能導致pagen-2已經(jīng)寫入的數(shù)據(jù)損壞的問題。
如果在pagen-1編程完成后發(fā)生掉電,緩存在dram中的pagen-2的數(shù)據(jù)已經(jīng)丟失。重新上電后,在進行pagen編程時發(fā)生錯誤,則pagen-2的數(shù)據(jù)也無法恢復。
技術(shù)實現(xiàn)要素:
針對以上缺陷,本發(fā)明目的避免某個頁編程出錯時造成已存儲的其它耦合頁數(shù)據(jù)損壞且無法恢復的問題。
為了解決以上問題本發(fā)明提出了一種固態(tài)硬盤數(shù)據(jù)保護方法,其特征在于在固態(tài)硬盤中增加scm,硬盤控制器將scm作為固態(tài)硬盤數(shù)據(jù)緩存,后臺設(shè)置更新程序,主動或者被動觸發(fā)將數(shù)據(jù)緩存中的數(shù)據(jù)寫入到nand中,記錄緩存數(shù)據(jù)的邏輯地址,將該緩存的有效性標志設(shè)置為y;在向nand寫入前增加判斷當前寫入的nand所在的物理頁是否為lowpage,如果是則將有效性標志valid設(shè)置為t,表示該頁數(shù)據(jù)對應的數(shù)據(jù)緩存為不可釋放狀態(tài);否則將有效性標志valid設(shè)置為n,表示該頁數(shù)據(jù)對應的數(shù)據(jù)緩存為可釋放狀態(tài);當數(shù)據(jù)寫入發(fā)生錯誤時,如果是uppage,則將該數(shù)據(jù)頁對應在數(shù)據(jù)緩存中可能存在的lowpage讀出重新寫入nand中。
所述的固態(tài)硬盤數(shù)據(jù)保護方法,其特征在于在固態(tài)硬盤重新上電時,掃描scm數(shù)據(jù)緩存的數(shù)據(jù),檢測各個數(shù)據(jù)的有效標志,將有效標志為y的緩存數(shù)據(jù)寫入到nand中;將有效標志為的緩存數(shù)據(jù)繼續(xù)保持。
所述的固態(tài)硬盤數(shù)據(jù)保護方法,其特征在于當向nand寫入的數(shù)據(jù)為uppage時,如果成功寫入nand,則將數(shù)據(jù)緩存中可能存在的lowpage的有效標志設(shè)置為n。
任意一項所述的固態(tài)硬盤數(shù)據(jù)保護方法,其特征在于將主機數(shù)據(jù)寫入scm實現(xiàn)數(shù)據(jù)緩存時,將主機數(shù)據(jù)的地址信息、邏輯地址和有效性標志validflag按照預先設(shè)定的格式寫入scm,有效性標志初始狀態(tài)設(shè)為y。
所述的固態(tài)硬盤數(shù)據(jù)保護方法,其特征在于按照如下步驟完成數(shù)據(jù)寫入操作:
步驟1:硬盤控制器接收到主機下發(fā)的寫數(shù)據(jù)指令;
步驟2:在scm中的空閑空間中分配緩存內(nèi)存,將主機數(shù)據(jù)、地址信息和有效性標志寫入緩存內(nèi)存;
步驟3:更新程序在后臺運行,定時或隨機被觸發(fā)判定scm中緩存的數(shù)據(jù)是否滿足nand并發(fā)編程條件或則預先設(shè)定的條件,如果滿足則觸發(fā)將scm中緩存的數(shù)據(jù)更新到固態(tài)硬盤的nand存儲單元。
一種固態(tài)硬盤,其特征在于采用了權(quán)利要求1至5任意一項所述的固態(tài)硬盤數(shù)據(jù)保護方法。
本發(fā)明通過增加對已完成編程的lowpage繼續(xù)保存到其coupling頁面數(shù)據(jù)的也正常寫入后再釋放,在編程uppage時或異常掉電造成數(shù)據(jù)破壞時可以對數(shù)據(jù)進行恢復,起到了對固態(tài)硬盤數(shù)據(jù)保護的作用。
附圖說明
圖1是典型的nand組成示意圖;
圖2是編程出錯對其它page的影響示意圖;
圖3是增加數(shù)據(jù)保護后編程出錯的處理示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
scm(storage-classmemory),儲存級存儲器,能夠提供比快閃存儲器更快速的讀寫速度,在成本上則比動態(tài)隨機存取存儲器(dram)更為便宜.即使是在失去電源的狀態(tài)下依舊可以不間斷保存資料,支持字節(jié)級別的操作。寫入、寫操作和編程都是指的像nand寫入數(shù)據(jù)的操作。
圖3是增加數(shù)據(jù)保護后編程出錯的處理示意圖;在固態(tài)硬盤中增加scm,硬盤控制器將scm作為固態(tài)硬盤數(shù)據(jù)緩存,后臺設(shè)置更新程序,主動或者被動觸發(fā)將數(shù)據(jù)緩存中的數(shù)據(jù)寫入到nand中,記錄緩存數(shù)據(jù)的邏輯地址,將該緩存的有效性標志設(shè)置為y;在向nand寫入前增加判斷當前寫入的nand所在的物理頁是否為lowpage,如果是則將有效性標志valid設(shè)置為t,表示該頁數(shù)據(jù)對應的數(shù)據(jù)緩存為不可釋放狀態(tài);則將有效性標志valid設(shè)置為n,表示該頁數(shù)據(jù)對應的數(shù)據(jù)緩存為可釋放狀態(tài);當數(shù)據(jù)寫入發(fā)生錯誤時,如果是uppage,則將該數(shù)據(jù)頁對應在數(shù)據(jù)緩存中可能存在的lowpage讀出重新寫入nand中。
具體為當主機新寫入用戶數(shù)據(jù)時,在scm中分配空余的空間寫入用戶數(shù)據(jù)、邏輯地址、并且標志validflag為y。當拼湊起足夠多的數(shù)據(jù)或者其他特定的策略觸發(fā),將scm中的數(shù)據(jù)寫入到nand上完成nand成功寫入后,如果所在的nand物理頁是lowpage,則將對應的valid標志修改為t,表示該數(shù)據(jù)尚不可釋放;如果所在的nand物理頁是uppage,則將該數(shù)據(jù)以及l(fā)owpage對應的數(shù)據(jù)的valid標志修改為n,表示該數(shù)據(jù)可釋放。若發(fā)生nand寫入錯誤,則將該筆數(shù)據(jù)以及可能存在的couplinglowpage的數(shù)據(jù)重新寫入到新的nand物理地址。
若在編程uppage前發(fā)生掉電,重新上電后,scm中的數(shù)據(jù)仍然存在,此時只需要掃描scm,將validflag標志為y的緩存數(shù)據(jù)cacheentry繼續(xù)轉(zhuǎn)移到nand上即可,同時validflag標志為t的緩存數(shù)據(jù)cacheentry繼續(xù)保持到關(guān)聯(lián)的uppageprogram成功后再釋放。
因此無論是正常寫入是發(fā)生寫數(shù)據(jù)錯誤造成的數(shù)據(jù)破壞,還是系統(tǒng)異常掉電造成的數(shù)據(jù)破壞,都可以得到恢復,大大提高了數(shù)據(jù)的安全性,起到了對固態(tài)硬盤數(shù)據(jù)保護的效果。
以上所揭露的僅為本發(fā)明一種實施例而已,當然不能以此來限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。