專利名稱:一種固態硬盤掉電和寫異常處理方法及系統的制作方法
技術領域:
本發明涉及固態硬盤領域,尤其涉及一種固態硬盤掉電和寫異常處理方法及系統。
背景技術:
隨著MLC(multi level cell)型NAND FLASH大量應用,固態硬盤所用 NAND FLASH 也主要選擇了 MLC型NAND FLASH.而對于大多數MLC型NAND FLASH而言,具有顯著的特點 即如附圖1,同單元里面的兩個位被分配在不同的兩個頁中,即高位頁(Upper page)和低位頁(Lower page),從而這兩個頁之間具有強耦合性。其中的寫入操作會有兩個階段低位頁寫入(1st round)和高位頁寫入Ond round),如果高位頁寫入操作異常,那么低位頁的數據也將被損毀。而反之,低位頁寫入操作異常,則對高位頁無影響。目前固態硬盤都通過多個NAND FLASH控制器作為多個通道并行使用,從而達到采用高數據吞吐量,那么同一時刻存在大量的NAND FLASH讀寫操作。在系統意外掉電時,由于同一時刻存在大量的NAND FLASH寫操作,當電源不能保證NAND FLASH寫操作的完成時, 不僅會破壞當前寫入頁的數據完整性,必然會破壞跟當前頁耦合的低位頁中的數據。為了解決該問題,出現了通過備份相關低位頁的數據,從而達到抗掉電保護。圖2為一種抗掉電和寫異常處理技術結構示意圖。當固態硬盤系統中的備份檢測模塊101發現需要備份時, 通過存儲管理模塊102,將數據先寫入備份存儲器104,然后將數據寫入主數據存儲器103 中。一般而言,備份存儲器104—般是SLC(single level cell)型NAND FLASH或者NOR FLASH,這類存儲器沒有耦合頁問題,所以不會發生耦合頁數據被破壞問題。當主數據存儲器103中,發生因寫入高位頁操作異常,而導致低位頁數據被破壞時,該數據可以從備份存儲器中恢復出來。另一發明為快閃存存儲器數據寫入方法及其快閃存存儲器控制器 (200810003152. 1)中需要額外的備份存儲器,這無疑增加了硬件成本和軟件設計復雜度, 所以又出現了將主數據區劃分出一部分區域作為備份區的技術方案。該技術方案在不增加硬件成本情況下解決了耦合頁中低位頁數據被破壞的問題。如圖3所示,該技術方案將205閃存存儲器分為多個區域,包括程序存放區,主數據區,數據備份區。其中主數據區作為用戶數據存儲區域,其占用205閃存存儲器的90%以上的區域,程序存放區是用于存放系統程序代碼,對用戶不可見,而數據備份區是用于備份低位頁數據所有。201用于控制系統整體運行,202用數據暫存,203是用于管理MLC NAND Flash的指令解析,判斷是否需要備份數據,數據備份恢復等作用。圖4A描述了該技術方案使用的數據寫入時的流程圖。當步驟302收到寫入指令后,步驟303會根據寫入數據所對應的地址是否為耦合頁中的低位頁,如果是,則首先對數據進行備份,并且記錄所備份數據的所在圖2的205中的物理地址和邏輯地址的關系。然后將該數據寫入到圖2的205中主數據區。圖4B描述了該技術方案使用的上電恢復數據的流程圖。當系統啟動后,圖2的201和203會掃描所有205的所有主數據區域和備份區域。通過記錄在頁內的結構信息和 ECC保護機制,可以如步驟402恢復出所有映射關系表,以及如步驟403可以獲得上次掉電時寫入的最后一個頁的數據。步驟404會判斷是否數據被損壞,如果無損壞,則無需做數據恢復。如果步驟404發現最后頁數據被損壞,則在步驟405判斷是否高位頁數據被破壞,如果是高位頁在通過203得到相應的備份區地址,步驟406讀取備份數據后,步驟407寫入主數據區。如果405判斷,則無備份數據即無需恢復數據,結束恢復數據。由于該技術方案引入了“備份數據區”和“數據備份策略”,雖然解決了耦合頁數據被破壞的問題,也無需額外存儲器和設計復雜度。但是由于備份數據區的存在,必然引出用戶數據區大小被減少的問題,和數據的備份操作,如304,406,407的操作,也必然引出寫放大(Write Amplification)增加的問題,該問題會降低固態硬盤性能,同時由于備份區的讀寫次數遠大于主數據區的讀寫次數,導致備份區數據塊容易老化,降低了整體的磨損均衡 (Wear-Leveling),影響了固態硬盤的壽命。另外有更多的方案是通過外加超級電容或者備用電池來防止掉電情況的發生,從而阻止在寫高位頁操作異常。這類技術方案都集中解決系統中緩存的數據如何寫入閃存的問題,且只能降低電源失效而導致數據破壞的幾率,沒有真正解決耦合頁的數據被破壞的問題。事實上,主機系統允許緩存或者最后一次意外掉電導致丟失當前的數據,但是絕對不允許丟失以往寫入的數據。所以如何保護以往數據不被破壞,才是固態硬盤掉電保護的關鍵。
發明內容
為解決上述問題,本發明公開一種固態硬盤掉電和寫異常處理方法及系統。發明目的在于本發明通過動態的管理低位頁,將低位頁作為獨立的地址映射區,主機輸入的數據只會寫入該區域,而且無需另外把數據寫入備份區。當該區域耗盡時,啟用普通存儲區, 同時進行垃圾頁回收(Gartage Collection),這樣不僅保持低位頁的區域的大小,保證數據在沒有被正確寫入高位頁時,不會刪除低位頁的數據。這樣在不增加硬件設計成本和復雜度的基礎上,不僅解決因電源失效導致寫異常產生的低位頁的數據被破壞的問題,而且解決了如何無需備份數據即可達到保護低位頁數據,減低寫放大,提高固態硬盤的性能。本發明公開一種固態硬盤掉電和寫異常處理方法,包括如下步驟步驟100,對閃存陣列進行掃描,獲取存儲的管理信息,提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換;步驟200,進行數據讀寫,讀取時,通過兩個映射區,找到相應物理地址,讀取閃存上的數據;當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取;步驟300,當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理;步驟400,當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。所述步驟100,還包括步驟110,通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。所述步驟200,還包括步驟210,系統開始初始化,執行步驟220 ;步驟220,接收寫入指令之后,執行步驟230 ;步驟230,判斷第一映射區是否有空閑頁,如果有空閑頁,執行步驟,240 ;步驟M0,獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;當步驟230發現第一映射區沒有空閑頁時,執行步驟250 ;步驟250,查看是否第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;如果發現第一映射區無無效頁,執行步驟260 ;步驟沈0,啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁,執行步驟270 ;步驟270,完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。所述步驟300,還包括步驟310,磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁后,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后,將數據寫入第一映射區;步驟320,當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。所述的固態硬盤掉電和寫異常處理方法,在發生掉電和寫異常情況下所述步驟 400,還包括步驟410,上電完成初始化后,首先通過掃描閃存內的管理信息,執行步驟420 ;步驟420,恢復映射表,執行步驟430 ;步驟430,通過判斷第二映射區內是否有損毀的數據頁,如果有損毀的數據頁,執行步驟440,如果沒有損毀的數據頁,執行步驟470 ;步驟440,通過第一映射區映射表查找到相應的數據頁后,執行步驟450 ;步驟450,獲取第二映射區的空閑頁,然后執行步驟460 ;步驟460,將數據從第一映射區搬移到第二映射區,并設置第一映射區的對應頁為無效頁后結束;步驟470,判斷是否存在第一映射區與第二映射區映射重疊,如果存在,執行步驟 480 ;步驟480,設置第一映射區內的對應頁為無效頁,然后結束恢復操作。所述步驟100中動態調整映射區,還包括如下步驟步驟120,查看第二映射表的對應空閑頁狀態,執行步驟130 ;步驟130,查看第二映射區的空閑頁是否達到閾值,執行步驟140,如果未達閾值, 執行步驟150 ;步驟140,如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;
步驟150,額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,執行步驟160;步驟160,進行回收垃圾頁,根據磨損均衡算法,對回收的垃圾頁再分配,從而完成調整映射區的大小。本發明還公開一種固態硬盤掉電和寫異常處理系統,包括緩存管理模塊,用于存儲對閃存陣列進行掃描后獲取的管理信息,并提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換;數據讀寫模塊,當數據讀取時,通過兩個映射區進行數據讀取。當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取;垃圾回收管理模塊,用于當寫入數據時,如果發生第一映射區已經無空閑低位頁, 那么啟動垃圾頁回收管理和磨損均衡管理;數據恢復模塊,用于當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。所述的固態硬盤掉電和寫異常處理系統,還包括磨損均衡管理模塊,用于通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。所述數據讀寫模塊還包括初始化模塊,用于系統開始初始化;寫入指令模塊,用于接收寫入指令;判斷空閑頁模塊,用于判斷第一映射區是否有空閑頁;寫入數據模塊,用于獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;無效頁判斷模塊,用于查看第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;數據搬移模塊,用于啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁;完成寫入模塊,用于完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。所述垃圾回收管理模塊還包括映射區釋放模塊,用于磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后, 將數據寫入第一映射區;回收釋放模塊,用于當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。
所述的固態硬盤掉電和寫異常處理系統,在發生掉電和寫異常情況下所述數據恢復模塊,還包括管理信息模塊,用于上電完成初始化后,首先通過掃描閃存內的管理信息;恢復映射表模塊,用于恢復映射表;損毀判斷模塊,用于通過判斷第二映射區內是否有損毀的數據頁;映射表查找模塊,用于通過第一映射區映射表查找到相應的數據頁后;獲取空閑頁模塊,用于獲取第二映射區的空閑頁;數據映射設置模塊,用于將數據寫入第二映射區,并設置第一映射區的對應頁為無效頁后結束;映射重疊判斷模塊,用于判斷是否存在第一映射區與第二映射區映射重疊;無效頁設置模塊,用于設置第一映射區內的對應頁為無效頁,然后結束恢復操作。所述緩存管理模塊中動態調整映射區,還包括查看空閑頁模塊,用于查看第二映射表的對應空閑頁狀態;閾值判斷模塊,用于查看第二映射區的空閑頁是否大于閾值極限閾值判斷模塊,用于如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;額外提供區閾值判斷模塊,用于額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,進行回收垃圾頁,從而完成調整映射區的大小。本發明的有益效果在于,由于本發明引入了 “多映射區技術”,“映射區切換技術” 和“動態調整映射區技術”,從另一種思路解決了寫異常或者掉電而引起的低位頁數據被破壞的問題,同時利用“映射區切換技術”避免了數據備份區的出現,而利用“動態調整映射區技術”有效控制寫放大的發生,從而減少固態硬盤性能損失。
圖1為現有技術中MLC型NAND FLASH存儲數據示意圖;圖2為一現有技術中固態硬盤抗掉電和寫異常處理技術結構示意圖;圖3為另一現有技術中固態硬盤抗掉電和寫異常處理技術結構示意圖;圖4A為另一現有技術中固態硬盤抗掉電和寫異常處理流程圖;圖4B為另一現有技術中固態硬盤抗掉電和寫異常處理流程圖;圖5為本發明結構示意圖;圖6為本發明數據寫入方式的實施流程圖;圖7為本發明當第二映射區低位頁數據被破壞時恢復數據的流程圖;圖8為本發明動態調整第一映射區的示意9為本發明方法流程圖。
具體實施例方式下面給出本發明的具體實施方式
,結合附圖對本發明做出進一步的描述。如圖9所示本發明公開一種固態硬盤掉電和寫異常處理方法,包括如下步驟步驟100,對閃存陣列進行掃描,獲取存儲的管理信息,提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換。所述步驟100,還包括步驟110,通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。所述步驟100中動態調整映射區,還包括如下步驟步驟120,查看第二映射表的對應空閑頁狀態,執行步驟130 ;步驟130,查看第二映射區的空閑頁是否達到閾值,執行步驟140,如果未達閾值, 執行步驟150 ;步驟140,如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;步驟150,額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,執行步驟160;步驟160,進行回收垃圾頁,根據磨損均衡算法,對回收的垃圾頁再分配,從而完成調整映射區的大小。本發明公開了無需專門備份數據實現固態硬盤防掉電和寫異常處理的方法和系統。該方案首先通過MLC轉為SLC技術,動態地將一部分MLC轉換為類似SLC使用,其中這部分存儲區大小是根據額外提供區(Over Provision)動態調整,系統會將MLC轉換為類似 SLC的區域作為第一映射區(Mapping)。將剩余部分的存儲區作為第二映射區。當第一映射區耗盡時,通過高效的垃圾頁回收(Gartage Collection)技術,將釋放出第一映射區的無效區域和搬移部分有效區至第二映射區。即通過兩映射區的方式,可以實現無需備份區, 實現MLC閃存的寫異常導致數據被破壞的問題,同時在映射區切換時,在垃圾回收時,實現數據的搬移,減少寫放大。通過動態調整映射區,實現磨損均衡。如圖5所示,507為所用的MLC NAND FLASH,被分為多個區域,其中區域0被當作 SLC使用,所用映射區為低位頁,如508所示。區域1是作為普通MLC使用,即如509所示,所有映射區為包括高位頁和低位頁。區域2為額外提供區(Over Provision),區域3為其他使用區。區域0,區域1和區域2都是指邏輯區域,即不是固定的對應的物理地址,是動態映射分配的,對于區域0和區域1其大小是根據區域2,以及垃圾頁回收(Gartage Collection) 和磨損均衡管理(Wear-Leveling)(垃圾回收和磨損均衡管理是統一管理的,即對區域1和區域2統一實現管理)而確定其大小。當固態硬盤上電之后,微處理器501對整個系統進行初始化和上電數據恢復流程,即通過緩存管理模塊502存儲對整個閃存陣列進行掃描后獲取的管理信息,提取管理的相關信息后進行初始化第一映射區503和第二映射區504管理表。步驟200,進行數據讀寫,讀取時,通過兩個映射區,找到相應物理地址,讀取閃存上的數據;當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取。所述步驟200,還包括步驟210,系統開始初始化,執行步驟220 ;
10
步驟220,接收寫入指令之后,執行步驟230 ;步驟230,判斷第一映射區是否有空閑頁,如果有空閑頁,執行步驟,240 ;步驟M0,獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;當步驟230發現第一映射區沒有空閑頁時,執行步驟250 ;步驟250,查看是否第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;如果發現第一映射區無無效頁,執行步驟260 ;步驟沈0,啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁,執行步驟270 ;步驟270,完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。當固態硬盤開始工作時,當數據讀取時,根據第一映射區503,第二映射區504的映射表,獲得所對應的數據區,然后從507中將數據讀取。當數據寫入時,通過第一映射區 503獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內, 同時更新映射表用于后續讀取。由于第一映射區內的存儲器是類似SLC的性質(是指把MLC當成SLC使用,即通過NAND FLASH提供的命令和轉變流程,或者通過軟件技術在MLC中分離出低位頁單獨使用,從而在MLC中實現SLC的性質),所以不會發生在寫操作異常時,破壞以往的數據。當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理505 (Garbage Collection)管理磨損均衡管理模塊506,磨損均衡管理模塊506根據第一映射區503映射表中的信息,優先回收垃圾頁,由506進行垃圾頁再分配。如果回收后,仍然無法獲得足夠的空閑頁,那么進行將一定數量的有效數據搬移至第二映射區。(所述一定數量根據設定的閾值來確定,并不固定。要根據性能和寫放大需求而定。)當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的有效頁。這樣可以保證搬移過程,出現寫高位頁操作異常時,與之對應的低位頁數據被破壞,但是對應的數據仍保留在第一映射區,從而恢復該頁數據。所以在本發明中,對于系統異常掉電時,如果系統處于寫入第一映射區操作,那么無需考慮以往低位頁數據被破壞的問題。如果系統處于寫入第二映射區操作,那么由于第一映射區的數據并未被擦除,那么當系統重新上電時,必然可以恢復出被破壞的低位頁內的數據。附圖6為本發明一個數據寫入方式的實施流程圖,含有映射區切換過程。系統開始初始化完成步驟601,執行步驟602接受寫入指令之后,通過步驟603判斷第一映射區是否有空閑頁,如果有空閑頁,執行步驟604則獲取一個低位頁后,執行步驟605直接寫入數據,即將數據寫入第一映射區,然后執行步驟611完成寫操作。當步驟603發現第一映射區沒有空閑頁時,通過步驟606查看是否第一映射區是否有無效頁,如果有無效頁執行步驟 607回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作。如果步驟606發現第一映射區無無效頁,則通過步驟608啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,當步驟609操作時,通過步驟610進行第二映射區目標頁判斷,直到寫入高位頁時,才回收第一映射區的對應無效頁數據。完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。
步驟300,當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理;所述步驟300,還包括步驟310,磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁后,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后,將數據寫入第一映射區;步驟320,當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。步驟400,當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。在發生掉電和寫異常情況下所述步驟400,還包括步驟410,上電完成初始化后,首先通過掃描閃存內的管理信息,執行步驟420 ;步驟420,恢復映射表,執行步驟430 ;步驟430,通過判斷第二映射區內是否有損毀的數據頁,如果有損毀的數據頁,執行步驟440,如果沒有損毀的數據頁,執行步驟470 ;步驟440,通過第一映射區映射表查找到相應的數據頁后,執行步驟450 ;步驟450,獲取第二映射區的空閑頁,然后執行步驟460 ;步驟460,將數據從第一映射區搬移到第二映射區,并設置第一映射區的對應頁為無效頁后結束;步驟470,判斷是否存在第一映射區與第二映射區映射重疊,如果存在,執行步驟 480 ;步驟480,設置第一映射區內的對應頁為無效頁,然后結束恢復操作。附圖7是本發明一個當第二映射區低位頁數據發生被破壞時,恢復數據的流程圖。當步驟701上電完成初始化后,首先通過掃描閃存內的管理信息完成步驟702恢復映射表,通過步驟703判斷第二映射區內是否有損毀的數據頁,如果有,執行步驟704,通過第一映射表查找到相應的數據頁后,執行步驟705,獲取第二映射區的空閑頁,然后執行步驟 706,將數據寫入第二映射區,根據圖6寫入流程把該數據寫入第二映射區,并設置第一映射區的對應頁為無效頁后結束。如果步驟703沒有損毀的數據頁,需要步驟707判斷是否存在映射重疊,如果存在,執行步驟708設置第一映射區內的對應頁為無效頁,然后結束恢復操作。圖8是本發明一個動態調整第一映射區的示意圖。開始工作后,步驟802檢查第二映射區的映射表的對應空閑頁狀態,步驟803查看第二映射區的空閑頁是否大于閾值,如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小。如果未達閾值,額外提供區(Over Provision)是否大于閾值,如果大于閾值,則增加第一映射區。如果小于閾值,則進行回收垃圾頁,從而完成調整映射區的大小。回收時,并不區分是來自第一映射區還是第二映射區,在垃圾頁回收處理之后,這些成為額外提供區 (OverProvision),統一作為空閑頁對兩個映射區進行分配。本發明所公開的固態硬盤掉電和寫異常處理系統,包括緩存管理模塊,用于存儲對閃存陣列進行掃描后獲取的管理信息,并提取管理信息后進行初始化,生成多個映射區, 動態調整映射區,管理MLC到SLC的轉換;數據讀寫模塊,當數據讀取時,通過兩個映射區進行數據讀取。當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取;垃圾回收管理模塊,用于當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理;數據恢復模塊,用于當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。所述的固態硬盤掉電和寫異常處理系統,還包括磨損均衡管理模塊,用于通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。所述的固態硬盤掉電和寫異常處理系統,所述數據讀寫模塊還包括初始化模塊,用于系統開始初始化;寫入指令模塊,用于接收寫入指令;判斷空閑頁模塊,用于判斷第一映射區是否有空閑頁;寫入數據模塊,用于獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;無效頁判斷模塊,用于查看第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;數據搬移模塊,用于啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁;完成寫入模塊,用于完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。所述的固態硬盤掉電和寫異常處理系統,所述垃圾回收管理模塊還包括映射區釋放模塊,用于磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后, 將數據寫入第一映射區;回收釋放模塊,用于當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。所述的固態硬盤掉電和寫異常處理系統,在發生掉電和寫異常情況下所述數據恢復模塊,還包括管理信息模塊,用于上電完成初始化后,首先通過掃描閃存內的管理信息;恢復映射表模塊,用于恢復映射表;損毀判斷模塊,用于通過判斷第二映射區內是否有損毀的數據頁;映射表查找模塊,用于通過第一映射區映射表查找到相應的數據頁后;獲取空閑頁模塊,用于獲取第二映射區的空閑頁;
數據映射設置模塊,用于將數據寫入第二映射區,并設置第一映射區的對應頁為無效頁后結束;映射重疊判斷模塊,用于判斷是否存在第一映射區與第二映射區映射重疊;無效頁設置模塊,用于設置第一映射區內的對應頁為無效頁,然后結束恢復操作。所述的固態硬盤掉電和寫異常處理系統,所述緩存管理模塊中動態調整映射區, 還包括查看空閑頁模塊,用于查看第二映射表的對應空閑頁狀態;閾值判斷模塊,用于查看第二映射區的空閑頁是否大于閾值極限閾值判斷模塊,用于如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;額外提供區閾值判斷模塊,用于額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,進行回收垃圾頁,從而完成調整映射區的大小。本發明的有益效果為1、本發明可應用于固態硬盤的“多映射區技術”,依據MLC型NAND FLASH可以轉化SLC型NAND FLASH使用的特點。把該部分的存儲塊作為第一映射區,該區沒有耦合頁相互影響的缺點,即可以解決低位頁數據在高位頁寫操作異常時被破壞的問題,同時由于這部分區域是作為邏輯映射區的,那么無需額外的區域作為備份區。把其余普通MLC型NAND FLASH作為第二映射區,解決如果只有第一映射區,那么閃存類型轉換會導致容量減少的問題。2、本發明可應用于固態硬盤的“映射區切換技術”,根據寫入數據對應的第一映射區耗盡時,通過垃圾頁回收的方式,將第一映射區的無效頁回收或者部分有效數據移至第二映射區。把數據的搬移和垃圾回收結合在一起,從而避免了專用的數據備份過程,減少寫放大。在映射區轉換時,同時解決了第二映射區低位頁數據被破壞的問題。3、本發明可應用于固態硬盤的“動態調整映射區技術”,為了避免第一映射區的老化快于第二映射區,采用動態調整映射區的方式和統一回收垃圾頁和分配空閑頁,從而達到整體磨損均衡(Wear-Leveling)。通過動態調整映射區大小,以適應固態硬盤在其不同生命期的性能。本領域的技術人員在不脫離權利要求書確定的本發明的精神和范圍的條件下,還可以對以上內容進行各種各樣的修改。因此本發明的范圍并不僅限于以上的說明,而是由權利要求書的范圍來確定的。
權利要求
1.一種固態硬盤掉電和寫異常處理方法,其特征在于,包括如下步驟步驟100,對閃存陣列進行掃描,獲取存儲的管理信息,提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換;步驟200,進行數據讀寫,讀取時,通過兩個映射區,找到相應物理地址,讀取閃存上的數據;當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取;步驟300,當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理;步驟400,當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。
2.如權利要求1所述的固態硬盤掉電和寫異常處理方法,其特征在于,所述步驟100, 還包括步驟110,通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。
3.如權利要求1所述的固態硬盤掉電和寫異常處理方法,其特征在于,所述步驟200, 還包括步驟210,系統開始初始化,執行步驟220 ; 步驟220,接收寫入指令之后,執行步驟230 ;步驟230,判斷第一映射區是否有空閑頁,如果有空閑頁,執行步驟,240 ; 步驟M0,獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;當步驟230發現第一映射區沒有空閑頁時,執行步驟250 ;步驟250,查看是否第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;如果發現第一映射區無無效頁,執行步驟260 ;步驟沈0,啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁,執行步驟270;步驟270,完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。
4.如權利要求1所述的固態硬盤掉電和寫異常處理方法,其特征在于,所述步驟300, 還包括步驟310,磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁后,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后,將數據寫入第一映射區;步驟320,當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。
5.如權利要求1所述的固態硬盤掉電和寫異常處理方法,其特征在于,在發生掉電和寫異常情況下所述步驟400,還包括步驟410,上電完成初始化后,首先通過掃描閃存內的管理信息,執行步驟420;步驟420,恢復映射表,執行步驟430 ;步驟430,通過判斷第二映射區內是否有損毀的數據頁,如果有損毀的數據頁,執行步驟440,如果沒有損毀的數據頁,執行步驟470 ;步驟440,通過第一映射區映射表查找到相應的數據頁后,執行步驟450 ; 步驟450,獲取第二映射區的空閑頁,然后執行步驟460 ;步驟460,將數據從第一映射區搬移到第二映射區,并設置第一映射區的對應頁為無效頁后結束;步驟470,判斷是否存在第一映射區與第二映射區映射重疊,如果存在,執行步驟480 ; 步驟480,設置第一映射區內的對應頁為無效頁,然后結束恢復操作。
6.如權利要求1所述的固態硬盤掉電和寫異常處理方法,其特征在于,所述步驟100中動態調整映射區,還包括如下步驟步驟120,查看第二映射表的對應空閑頁狀態,執行步驟130 ;步驟130,查看第二映射區的空閑頁是否達到閾值,執行步驟140,如果未達閾值,執行步驟150 ;步驟140,如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;步驟150,額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,執行步驟160;步驟160,進行回收垃圾頁,根據磨損均衡算法,對回收的垃圾頁再分配,從而完成調整映射區的大小。
7.一種固態硬盤掉電和寫異常處理系統,其特征在于,包括緩存管理模塊,用于存儲對閃存陣列進行掃描后獲取的管理信息,并提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換;數據讀寫模塊,當數據讀取時,通過兩個映射區進行數據讀取。當數據寫入時,通過第一映射區獲取一個新的空閑低位頁,將數據寫入該低位頁,并且把映射關系同時帶入低位頁內,同時更新映射表用于后續讀取;垃圾回收管理模塊,用于當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理;數據恢復模塊,用于當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。
8.如權利要求7所述的固態硬盤掉電和寫異常處理系統,其特征在于,還包括 磨損均衡管理模塊,用于通過動態地將一部分MLC轉換為SLC使用,系統會將這部分區域作為第一映射區,將剩余部分的存儲區作為第二映射區,其中第一映射區大小是根據額外提供區和第二映射區的大小進行動態調整,還用于對回收的垃圾頁,進行統一管理再分配,根據磨損程度不同,分配給不同的映射區。
9.如權利要求7所述的固態硬盤掉電和寫異常處理系統,其特征在于,所述數據讀寫模塊還包括初始化模塊,用于系統開始初始化; 寫入指令模塊,用于接收寫入指令;判斷空閑頁模塊,用于判斷第一映射區是否有空閑頁;寫入數據模塊,用于獲取一個低位頁后,直接寫入數據,即將數據寫入第一映射區,然后完成寫操作;無效頁判斷模塊,用于查看第一映射區是否有無效頁,如果有無效頁回收第一映射區的無效頁,獲得低位頁,將數據寫入后完成操作;數據搬移模塊,用于啟動第二映射區,將第一映射區的部分數據搬移至第二映射區,進行第二映射區目標頁判斷,直到寫入高位頁時,回收第一映射區的無效頁;完成寫入模塊,用于完成回收后,從第一映射區獲得一個空閑的低位頁,完成數據寫入操作。
10.如權利要求8所述的固態硬盤掉電和寫異常處理系統,其特征在于,所述垃圾回收管理模塊還包括映射區釋放模塊,用于磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁,再進行空閑頁分配后,將數據寫入第一映射區;如果回收后,仍然無法獲得足夠的空閑頁,那么將一定數量的有效數據搬移至第二映射區,從而第一映射區可獲取空閑頁后,將數據寫入第一映射區;回收釋放模塊,用于當搬移過程發生寫時,當寫入目標頁為低位頁時,不立即釋放第一映射區的有效頁,一直到跟該低位頁相耦合的高位頁也被安全的寫入完成后,回收掉該低位頁對應的第一映射區的無效頁。
11.如權利要求7所述的固態硬盤掉電和寫異常處理系統,其特征在于,在發生掉電和寫異常情況下所述數據恢復模塊,還包括管理信息模塊,用于上電完成初始化后,首先通過掃描閃存內的管理信息; 恢復映射表模塊,用于恢復映射表;損毀判斷模塊,用于通過判斷第二映射區內是否有損毀的數據頁; 映射表查找模塊,用于通過第一映射區映射表查找到相應的數據頁后; 獲取空閑頁模塊,用于獲取第二映射區的空閑頁;數據映射設置模塊,用于將數據寫入第二映射區,并設置第一映射區的對應頁為無效頁后結束;映射重疊判斷模塊,用于判斷是否存在第一映射區與第二映射區映射重疊; 無效頁設置模塊,用于設置第一映射區內的對應頁為無效頁,然后結束恢復操作。
12.如權利要求7所述的固態硬盤掉電和寫異常處理系統,其特征在于,所述緩存管理模塊中動態調整映射區,還包括查看空閑頁模塊,用于查看第二映射表的對應空閑頁狀態; 閾值判斷模塊,用于查看第二映射區的空閑頁是否大于閾值極限閾值判斷模塊,用于如果大于最大閾值,則增加第一映射區大小,如果小于最小閾值,則減小第一映射區大小;額外提供區閾值判斷模塊,用于額外提供區是否大于閾值,如果大于閾值,則增加第一映射區,如果小于閾值,進行回收垃圾頁,從而完成調整映射區的大小。
全文摘要
一種固態硬盤掉電和寫異常處理方法,包括如下步驟步驟100,對閃存陣列進行掃描,獲取存儲的管理信息,提取管理信息后進行初始化,生成多個映射區,動態調整映射區,管理MLC到SLC的轉換;步驟200,進行數據讀寫,讀取時,通過兩個映射區,找到相應物理地址,讀取閃存上的數據;步驟300,當寫入數據時,如果發生第一映射區已經無空閑低位頁,那么啟動垃圾頁回收管理和磨損均衡管理,磨損均衡管理根據第一映射區映射表中的信息,優先回收垃圾頁后,再進行空閑頁分配后,將數據寫入第一映射區;步驟400,當發生掉電或者寫異常的情況,多個映射區進行相應操作恢復數據。
文檔編號G06F12/16GK102591807SQ201110455620
公開日2012年7月18日 申請日期2011年12月30日 優先權日2011年12月30日
發明者方浩俊 申請人:記憶科技(深圳)有限公司