專利名稱:一種閃存塊磨損平衡的方法和系統的制作方法
技術領域:
本發明涉及存儲技術領域,特別涉及一種閃存塊磨損平衡的方法和系統。
背景技術:
隨著計算機的普及,各種存儲介質越來越受到人們的關注。而閃存由于其 存儲的便捷性和傳輸速率的高速性受到了人們的重視,并被很塊地應用到了各 個領域。閃存釆用的是半導體技術,與普通硬盤、光盤類的存儲介質相比,閃
存是相對靜態的;并且擁有較小的體積,便于攜帶;而且隨著半導體技術的發 展,閃存的價格也在不斷地下降,因此,目前大多存儲介質采用閃存技術。
閃存也可以稱為Flash ROM,它是一種電擦除非易失性(在斷電的情況下 仍能夠保持所存儲的數據信息)存儲器,由浮;敗型場效應管構成。寫入數據時, 利用熱電子注入,使浮柵帶電;擦除數據時,利用高壓下的隧道效應,使浮柵 失去電子。通過改變浮柵的狀態進行數據的存儲,具有可多次擦寫的特點。
閃存的存儲方式通常是這樣的為了增加傳輸的速度,大部分閃存都不是 采用單字節的方式進行數據傳輸,而是以(邏輯)塊為單位進行的。由于閃存 的工作方式是通過采用熱電子注入使浮柵帶電來存儲信息的,因此其存儲信息 的過程具有一定的特殊性。閃存在寫入數據時,所要寫入的塊的寫入區必須是 空白的,存儲有信息的閃存都不能滿足這個條件。所以在寫入數據之前,必須 先進行塊的擦除操作,將塊中寫入區域存儲的信息變為空白,然后才能進行寫 操作,這就是一個寫的生命周期。由于數據的傳輸、訪問是以塊為單位進行的, 因此每次修改,即使是一個字節數據的修改,也要將數據所在的邏輯塊擦除干 凈,再將新的信息寫入。因此,如果頻繁的更改某一塊的數據就會造成該塊的 壽命減少,最終使該塊成為壞塊。現有技術中,閃存的邏輯塊通常都是被編號的。假設一個閃存共有100個 邏輯塊,每個邏輯塊的大小是512字節,但是在閃存實際工作過程中,每個邏 輯塊的實際存儲量是511字節,因為每個邏輯塊的首字節是不存儲數據的,這 個字節用來存儲邏輯塊的邏輯塊號信息。
在存儲一個文件時,閃存會查找一系列空的邏輯塊,并用邏輯塊號將這一 系列邏輯塊聯系起來。假設創建一個大小為1024字節的文件,需要三個邏輯塊 才能存儲下,該文件數據區的存儲可以如圖1所示。每個邏輯塊塊頭標志該邏 輯塊的邏輯塊號。需要說明的是,在一個文件所包含的邏輯塊中,邏輯塊號不 一定按順序相連。
為了操作簡單,閃存進行擦除寫入時都是先將編號靠前的塊進行擦寫,久 而久之就會影響閃存的壽命。經過實驗證明,閃存的可擦寫壽命一般是十萬次。 如果我們每次都利用編號靠前的邏輯塊進行寫操作而忽視了編號靠后的邏輯 塊,導致的后果就是,編號靠前的邏輯塊在不斷的加電失電的過程中被大大的 磨損,而編號靠后的邏輯塊卻幾乎沒有被應用,這必然會大大減少閃存的壽命, 造成資源的極大浪費,同時也會使閃存使用者的利益受到損害。
目前出現了利用平衡的方法增加閃存壽命的技術,所謂平衡就是將對邏輯 塊擦寫的次數平均到每一個邏輯塊,使其受到的磨損狀況大致相同,避免壞塊 的提早產生。
現在所采取的平衡技術, 一般都是這樣進行的在每一個邏輯塊上取兩個 字節單位,第一個字節對邏輯塊進行編號,記錄其邏輯塊的ID;另一個字節為 計數器,記錄該ID的邏輯塊擦寫的次數。在每次將要進行擦寫操作時,系統尋 找計數器中被擦寫次數最小的邏輯塊進行擦寫,使每個邏輯塊受到的磨損的幾 率相同,能夠延長閃存的壽命。
發明人認為現有技術至少存在以下缺點
1、需要為計數器單獨設置一個空間,造成了存儲空間的額外開支,實際上 減少了存儲空間;2、 由于每次都是尋找計數器最小的邏輯塊,而不是連續的進行擦除寫入,
導致了存儲信息的不連貫,不便于管理;
3、 存儲過程中需要對計數器進行查找等操作,程序控制復雜,降低了執行 效率;
4、 在發生異常的情況下,邏輯塊中用來存儲計數器擦寫次數的信息容易發 生丟失,不能完全保障達到磨損平衡。
發明內容
為了提高閃存的使用壽命、達到閃存存儲空間的磨損平衡,本發明提供了 一種閃存塊磨損平衡的方法和系統。所述技術方案如下 一種閃存塊磨損平衡的方法,包括 接收到向第 一邏輯塊寫入新數據的指令; 獲取備份塊的位置;
將所述第一邏輯塊中的數據讀入內存,在所述內存中將所述第一邏輯塊中 的數據更新為欲寫入所述第一邏輯塊中的寫入數據; 將所述寫入數據寫入所述備份塊; 擦除所述第一邏輯塊;
按照預先設定的規則獲取第二邏輯塊的位置; 將所述第二邏輯塊中的凄t據寫入所述第一邏輯塊; 擦除所述第二邏輯塊,并設置所述第二邏輯塊為新的備份塊。 所述獲取備份塊的位置之前,所述方法還包括 判斷所述第一邏輯塊的寫入區域是否為空;
當判斷結果為所述第一邏輯塊的寫入區域為空時,在所述第一邏輯塊的寫 入區域中寫入新數據,完成一次寫入操作;
相應地,所述獲取備份塊的位置,具體包括
當判斷結果為所述第一邏輯塊的寫入區域不為空時,獲取所述備份塊的位置。
將所述第 一邏輯塊中的數據讀入內存,在所述內存中將所述第 一邏輯塊的
數據更新為欲寫入所述第 一邏輯塊中的寫入數據,具體包括
將所述第一邏輯塊中的數據讀入內存,所述第一邏輯塊中的數據包括邏輯
塊號和所述第一邏輯塊寫入區域的數據;
在所述內存中將所述第一邏輯塊中的數據進行拆分,將所述第一邏輯塊的
邏輯塊號和所述新數據結合生成所述寫入數據。 將所述寫入數據寫入所述備份塊,具體包括
擦除所述備份塊中存儲的邏輯塊號信息,將所述新數據寫入所述備份塊的 寫入區域;
所述新數據寫入完成后,在所述備份塊存儲邏輯塊號的區域寫入所述第一 邏輯塊的邏輯塊號。
所述擦除所述第一邏輯塊,具體包括
擦除所述第 一邏輯模塊中存儲的邏輯塊號和寫入區域的數據。 所述按照預先設定的規則獲取第二邏輯塊的位置,具體包括 獲取所述備份塊對應的物理塊; 尋找所述物理塊的下一個或者上一個物理塊; 獲取所述下一個或者上一個物理塊對應的邏輯塊;
記錄所述下一個或者上一個物理塊對應的邏輯塊,并將所述下一個或者上 一個物理塊對應的邏輯塊作為第二邏輯塊。
一種閃存塊磨損平衡的系統,包括主機和閃存; 所述主機包括
發送模塊,用于向第一邏輯塊發送寫入新數據的指令; 內存模塊,用于為所述閃存提供內存存儲數據; 所述閃存包括
接收模塊,用于接收向第一邏輯塊寫入新數據的指令;第一獲取模塊,用于獲取備份塊的位置;
更新模塊,用于將所述第一邏輯塊中的數據讀入內存,在所述內存中將所 述第一邏輯塊中的數據更新為欲寫入所述第一邏輯塊中的寫入數據; 第一寫入模塊,用于將所述寫入數據寫入所述備份塊;
第一擦除模塊,用于擦除所述第一邏輯塊;
第二獲取模塊,用于按照預先設定的規則獲取第二邏輯塊的位置;
第二寫入模塊,用于將所述第二邏輯塊中的&據寫入所述第一邏輯塊;
第二擦除模塊,用于擦除所述第二邏輯塊;
設置模塊,用于設置擦除后的所述第二邏輯塊為新的備份塊。
所述閃存還包括
判斷模塊,用于判斷所述第 一邏輯塊的寫入區域是否為空; 相應的,所述第一獲取模塊具體用于
當所述判斷模塊的判斷結果為所述第一邏輯塊的寫入區域不為空時,獲取 所述備份塊的位置。
所述更新模塊具體包括
讀入單元,用于將所述第一邏輯塊中的數據讀入內存,所述第一邏輯塊中 的數據包括邏輯塊號和所述第一邏輯塊寫入區域的數據;
拆分組合單元,用于在所述內存中將所述第一邏輯塊中的數據進行拆分, 將所述第一邏輯塊的邏輯塊號和所述新數據結合生成所述寫入數據。
所述第 一寫入模塊具體用于
擦除所述備份塊中存儲的邏輯塊號信息,將所述新數據寫入所述備份塊的 寫入區域;
寫入完成后,在所述備份塊存儲邏輯塊號的區域寫入所述第一邏輯塊的邏 輯塊號。
所述第一擦除模塊具體用于
擦除所述第一邏輯模塊中存儲的邏輯塊號信息和寫入區域的數據。所述第二獲取模塊具體包括
第一獲取單元,用于獲取所述備份塊對應的物理塊; 尋找單元,用于尋找所述物理塊的下一個或者上一個物理塊; 第二獲取單元,用于獲取所述下一個或者上一個物理塊對應的邏輯塊; 記錄單元,用于記錄所述邏輯塊的邏輯塊號,并將所述邏輯塊作為第二邏 輯塊。
本發明實施例提供的技術方案帶來的有益效果是
通過設立一個空白的備份塊,并通過不斷移動備份塊的方法,達到了閃存 塊真正的磨損平衡。另外,本發明不需要使用計數器,節省閃存的空間,實現 簡單,可以達到掉電保護的目的。
圖l是本發明實施例1中提供的閃存塊磨損平衡的方法流程圖2是本發明實施例1中提供的閃存塊的內部結構示意圖3是本發明實施例1中提供的閃存塊存儲的信息示意圖4是本發明實施例1中提供的一種備份塊移動的示意圖5是本發明實施例1中提供的另一種備份塊移動的示意圖6是本發明實施例1中提供的第三種備份塊移動的示意圖7是本發明實施例2中提供的閃存塊磨損平衡的系統結構示意圖。
具體實施例方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明 實施方式作進一步地詳細描述。
實施例1參見圖1,本實施例提供了一種閃存塊磨損平衡的方法,該方法包括 101:接收到將新數據寫入到第 一邏輯塊的指令; 102:判斷第一邏輯塊的寫入區域是否為空白區域; 如果不為空白區域,則執行步驟103;
如果為空白區域,直接將新數據寫入第一邏輯塊的寫入區域,完成操作; 103:尋找備份塊的位置;
104:將第一邏輯塊中存儲的數據讀入主機的內存,并在內存中更新為欲寫 入第 一邏輯塊中的寫入數據;
這里需要說明的是,將第一邏輯塊中存儲的內容讀入主機的內存時,需要 包括第一邏輯塊中第一字節所存儲的邏輯塊號信息和第一邏輯塊的寫入區域存 儲的數據;
在內存中進行數據更新時,邏輯塊號的信息不變,只需要將除邏輯塊號信
息之外的其他數據部分更新為新數據。
其中,欲寫入第一邏輯模塊中的寫入數據包括邏輯塊號信息和新數據。 105:將內存中更新后的寫入數據寫入備份塊,備份塊成為新的第一邏輯塊; 其中,將內存中更新后的寫入數據寫入備份塊,是將邏輯塊號信息和新數
據都寫入備份塊,在寫入時,先擦除備份塊的邏輯塊號,在備份塊的寫入區域
寫入新數據,最后寫入第一邏輯塊的邏輯塊號。
更新后的寫入數據寫入備份塊之后,原備份塊對應的物理塊,現在對應第
一邏輯塊。
在本發明實施例中,在寫入新數據時,閃存并不是將第一邏輯塊擦除后將 新數據和邏輯塊號直接寫入第一邏輯塊中,而是在內存中更新好后,先將更新 好的寫入數據寫入備份塊后再擦除第 一邏輯塊,這樣做可以防止突然掉電造成 數據丟失。
當然,在將寫入數據寫入備份塊的過程中也可能突然掉電,產生邏輯塊號 相同的邏輯塊。那么在閃存每次上電時,自動查找相同的邏輯塊號,如果有邏輯塊號相同的邏輯塊,將數據不完整的邏輯塊擦除,使其成為備份塊,這樣就 可以解決掉電產生兩個相同邏輯塊號的邏輯塊的問題。
106:擦除原第一邏輯塊,并使其成為新的備份塊;
107:閃存按照預先設定的規則找到第二邏輯塊,并將第二邏輯塊中存儲的 數據寫入新的備份塊,即原第一邏輯塊中,使原第一邏輯塊成為新的第二邏輯 塊,將原第二邏輯塊擦除,并設置為最新的備份塊,完成操作。
其中,預先設定的規則可以是確定原備份塊的位置后,找到與原備份塊 對應的物理塊,根據物理地址找到該物理塊的下一個物理塊,選擇與該下一個 物理塊對應的邏輯塊,并記錄下來,將該下一個物理塊對應的邏輯塊作為第二 邏輯塊;
或者,確定原備份塊的位置后,找到與原備份塊對應的物理塊,根據物理 地址找到該物理塊的上一個物理塊,選擇與該上一個物理塊對應的邏輯塊,并 記錄下來,將該上一個物理塊對應的邏輯塊作為第二邏輯塊。
當按照上述預先設定的規則記錄下來的第二邏輯塊與第一邏輯塊重合時, 則將內存中更新完畢的寫入數據寫入備份塊,擦除第一邏輯塊,并將第一邏輯 塊設置為新的備份塊。
以存儲容量為4K,包含8個物理塊的閃存為例,將這個閃存劃分為8個邏 輯塊,每個邏輯塊只有一個物理塊,如圖2所示,8個邏輯塊的邏輯塊號分別為 FF、 01、 02、 03、 04、 05、 06、 07,每個塊的大小都是512字節。閃存初始化 時,將每個邏輯塊的邏輯塊號寫入每個塊的第一個字節中。在閃存中設置一備 份塊,備份塊是一個空白塊,寫入區域不存儲任何數據。在本實施例中,如圖3 所示,設定邏輯塊FF為備份塊,其他的塊中都存有數據。
(1 )以接收到將數據Datal寫入邏輯塊02的指令為例,參見圖4:
判斷邏輯塊02的寫入區域是否為空白區域;
結果為否,尋找備^f分塊FF的位置;將邏輯塊02中的數據(包括邏輯塊號0x02和寫入區域的原數據)讀入主 機的內存,并將寫入區域的原it據更新為Datal;
將在內存中更新后的數據(包括邏輯塊號0x02和Datal )寫入備份塊FF; 擦除原邏輯塊02;
找到邏輯塊01,將邏輯塊01中的數據寫入原邏輯塊02后,將邏輯塊01作 為新的備份塊。
完成上述l喿作后,備^f分塊FF與物理塊01相對應。
(2 )在(1)的基礎上,以接收到將數據Data2寫入邏輯塊02的指令為例, 參見圖5:
判斷判斷邏輯塊02的寫入區域是否為空白區域; 結果為否,尋找備份塊FF的位置;
將邏輯塊02中的數據(包括邏輯塊號0x02和Datal )讀入主機的內存,并 將Datal更新為Data2;
將在內存中更新后的數據(包括邏輯塊號0x02和Data2 )寫入備份塊FF; 擦除原邏輯塊02;
找到遝輯塊Ol,將邏輯塊Ol中的數據寫入原邏輯塊02后,將邏輯塊01作 為新的備份塊。
完成上述操作后,備份塊FF與物理塊02相對應。
(3 )在(2 )的基礎上,以又接收到將數據Data3寫入邏輯塊05的指令為 例,參見圖6:
判斷判斷邏輯塊05的寫入區域是否為空白區域; 結果為否,尋找備份塊FF的位置;
將邏輯塊05中的數據(包括邏輯塊號0x05和寫入區域的原數據)讀入主 機的內存,并將邏輯塊05中寫入區域的原數據更新為Data3;
將在內存中更新后的數據(包括邏輯塊號0x05和Data3 )寫入備份塊FF; 擦除原邏輯塊05;
14找到邏輯塊03,將邏輯塊03中的數據寫入原邏輯塊05后,將邏輯塊03作 為新的備份塊。
完成上述操作后,備份塊FF與物理塊03相對應。
從上述的內容可以看出,通過重復寫入某一邏輯塊或寫入不同的邏輯塊, 在實際的寫入過程中物理塊是順序寫入的,實現了物理塊的循環移動,因此可 以達到真正的磨損平衡。
本發明實施例通過設立一個空白的備份塊,并控制該備份塊在邏輯上不斷 移動,節省了內存的存儲空間,實現簡單,達到了閃存塊真正的磨損平衡。同 時,還可以進行掉電保護。
實施例2
參見圖7,本發明實施例提供了一種內存磨損平衡的系統,包括主機701 和閃存702;
主機701包括
發送模塊701A,用于發送向第一邏輯模塊寫入新數據的指令; 內存模塊701B,用于為閃存702提供內存存儲數據; 閃存702包括
接收模塊702A,用于接收向第一邏輯塊寫入新數據的指令; 第一獲取模塊702B,用于獲取備份塊的位置;
更新模塊702C,用于將第一邏輯塊中的數據讀入內存,在所述內存中將所 述第 一邏輯塊中的數據更新為欲寫入第 一邏輯塊中的寫入數據;
第一寫入模塊702D,用于將內存中的更新后的寫入數據寫入備份塊; 第一擦除模塊702E,用于擦除第 一邏輯塊;
第二獲取模塊702F,用于按照預先設定的規則獲取第二邏輯塊的位置; 第二寫入模塊702G,用于將第二邏輯塊中的數據寫入第一邏輯塊; 第二擦除模塊702H,用于擦除第二邏輯塊;設置模塊7021,用于設置擦除后的第二邏輯塊為新的備份塊。 進一步地,閃存702還包括
判斷模塊702J,用于判斷第一邏輯塊的寫入區域是否為空; 相應的,第 一獲取模塊702B具體用于
當判斷模塊的判斷結果為第 一邏輯塊的寫入區域不為空時,獲取備份塊的 位置。
其中,更新模塊702C具體包括
讀入單元,用于將第一邏輯塊中的數據讀入內存,改第一邏輯塊中的數據 包括邏輯塊號和第一邏輯塊寫入區域的數據;
拆分組合單元,用于在內存中將第一邏輯塊中的數據進行拆分,將第一邏 輯塊的邏輯塊號和名欠寫入第一邏輯塊的新數據結合生成寫入數據。
第一寫入4莫塊702D具體用于
擦除備份塊中存儲的邏輯塊號信息,將所述新數據寫入所述備份塊的寫入 區域,所述新數據寫入完成后,在所述備份塊存儲邏輯塊號的區域寫入所述第 一邏輯塊的邏輯塊號。
第一擦除模塊702E具體用于
擦除第 一邏輯^t塊中存儲的邏輯塊號信息和和寫入區域的數據。
第二獲取模塊702F具體包括
第一獲取單元,用于獲取備份塊對應的物理塊;
尋找單元,用于尋找物理塊的下一個或者上一個物理塊;
第二獲取單元,用于獲取下一個或者上一個物理塊對應的邏輯塊;
記錄單元,用于記錄邏輯塊,并將邏輯塊作為第二邏輯塊。
本發明實施例通過內存磨損平衡的系統設立一個空白的備份塊,并控制該
備份塊不斷移動,節省了內存的存儲空間,實現簡單,達到了閃存塊真正的磨
損平衡。以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的 精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的 保護范圍之內。
權利要求
1、一種閃存塊磨損平衡的方法,其特征在于,包括接收到向第一邏輯塊寫入新數據的指令;獲取備份塊的位置;將所述第一邏輯塊中的數據讀入內存,在所述內存中將所述第一邏輯塊中的數據更新為欲寫入所述第一邏輯塊中的寫入數據;將所述寫入數據寫入所述備份塊;擦除所述第一邏輯塊;按照預先設定的規則獲取第二邏輯塊的位置;將所述第二邏輯塊中的數據寫入所述第一邏輯塊;擦除所述第二邏輯塊,并設置所述第二邏輯塊為新的備份塊。
2、 如權利要求1所述的閃存塊磨損平衡的方法,其特征在于,所述獲取備 份塊的位置之前,所述方法還包括判斷所述第 一邏輯塊的寫入區域是否為空;當判斷結果為所述第 一邏輯塊的寫入區域為空時,在所述第一邏輯塊的寫 入區域中寫入新數據,完成一次寫入操作;相應地,所述獲取備份塊的位置,具體包括當判斷結果為所述第一邏輯塊的寫入區域不為空時,獲取所述備份塊的位置。
3、 如權利要求1所述的閃存塊磨損平衡的方法,其特征在于,將所述第一 邏輯塊中的數據讀入內存,在所述內存中將所述第一邏輯塊的數據更新為欲寫 入所述第一邏輯塊中的寫入數據,具體包括將所述第一邏輯塊中的數據讀入內存,所述第一邏輯塊中的數據包括邏輯 塊號和所述第一邏輯塊寫入區域的數據;在所述內存中將所述第 一邏輯塊中的數據進行拆分,將所述第 一邏輯塊的 邏輯塊號和所述新數據結合生成所述寫入數據。
4、 如權利要求3所述的閃存塊磨損平衡的方法,其特征在于,將所述寫入 數據寫入所述備份塊,具體包括擦除所述備份塊中存儲的邏輯塊號信息,將所述新數據寫入所述備份塊的 寫入區域;所述新數據寫入完成后,在所述備份塊存儲邏輯塊號的區域寫入所述第一 邏輯塊的邏輯塊號。
5、 如權利要求1所述的閃存塊磨損平衡的方法,其特征在于,所述擦除所 述第一邏輯塊,具體包括擦除所述第一邏輯模塊中存儲的邏輯塊號和寫入區域的數據。
6、 如權利要求1所述的閃存塊磨損平衡的方法,其特征在于,所述按照預 先設定的規則獲取第二邏輯塊的位置,具體包括獲取所述備份塊對應的物理塊;尋找所述物理塊的下一個或者上一個物理塊;獲取所述下一個或者上一個物理塊對應的邏輯塊;記錄所述下一個或者上一個物理塊對應的邏輯塊,并將所述下一個或者上 一個物理塊對應的邏輯塊作為第二邏輯塊。
7、 一種閃存塊磨損平衡的系統,其特征在于,包括主機和閃存; 所述主機包括發送模塊,用于向第一邏輯塊發送寫入新數據的指令; 內存模塊,用于為所述閃存提供內存存儲數據;所述閃存包括接收模塊,用于接收向第一邏輯塊寫入新數據的指令; 第一獲^^莫塊,用于獲取備份塊的位置;更新模塊,用于將所述第一邏輯塊中的數據讀入內存,在所述內存中將所 述第 一邏輯塊中的數據更新為欲寫入所述第 一邏輯塊中的寫入數據; 第一寫入模塊,用于將所述寫入數據寫入所述備份塊; 第一擦除模塊,用于擦除所述第一邏輯塊; 第二獲取模塊,用于按照預先設定的規則獲取第二邏輯塊的位置; 第二寫入模塊,用于將所述第二邏輯塊中的數據寫入所述第 一邏輯塊; 第二擦除模塊,用于擦除所述第二邏輯塊; 設置模塊,用于設置擦除后的所述第二邏輯塊為新的備份塊。
8、 如權利要求7所述的閃存塊磨損平衡的系統,其特征在于,所述閃存還 包括判斷模塊,用于判斷所述第 一邏輯塊的寫入區域是否為空; 相應的,所述第一獲取^f莫塊具體用于當所述判斷模塊的判斷結果為所述第一邏輯塊的寫入區域不為空時,獲取 所述備份塊的位置。
9、 如權利要求7所述的閃存塊磨損平衡的系統,其特征在于,所述更新才莫 塊具體包括讀入單元,用于將所述第一邏輯塊中的數據讀入內存,所述第一邏輯塊中 的數據包括邏輯塊號和所述第一邏輯塊寫入區域的數據;拆分組合單元,用于在所述內存中將所述第 一邏輯塊中的數據進行拆分, 將所述第一邏輯塊的邏輯塊號和所述新數據結合生成所述寫入數據。
10、 如權利要求9所述的閃存塊磨損平衡的系統,其特征在于,所述第一 寫入模塊具體用于擦除所述備份塊中存儲的邏輯塊號信息,將所述新數據寫入所述備份塊的 寫入區域;所述新數據寫入完成后,在所述備份塊存儲邏輯塊號的區域寫入所述第一 邏輯塊的邏輯塊號。
11、 如權利要求7所述的閃存塊磨損平衡的系統,其特征在于,所述第一 擦除模塊具體用于擦除所述第一邏輯模塊中存儲的邏輯塊號信息和寫入區域的數據。
12、 如權利要求7所述的閃存塊磨損平衡的系統,其特征在于,所述第二 獲取模塊具體包括第一獲取單元,用于獲取所述備份塊對應的物理塊; 尋找單元,用于尋找所述物理塊的下一個或者上一個物理塊; 第二獲取單元,用于獲取所述下一個或者上一個物理塊對應的邏輯塊;記錄單元,用于記錄所述邏輯塊的邏輯塊號,并將所述邏輯塊作為第二邏 輯塊。
全文摘要
本發明公開了一種閃存塊磨損平衡的方法和系統,屬于存儲技術領域。所述方法包括接收到向第一邏輯塊寫入新數據的指令;獲取備份塊的位置;將所述第一邏輯塊中的數據讀入內存,在所述內存中將所述數據更新為欲寫入所述第一邏輯塊中的寫入數據;將所述寫入數據寫入所述備份塊;擦除所述第一邏輯塊;按照預先設定的規則獲取第二邏輯塊的位置;將所述第二邏輯塊中的數據寫入所述第一邏輯塊;擦除所述第二邏輯塊,并設置所述第二邏輯塊為新的備份塊。所述系統包括主機和閃存。通過設立一個空白的備份塊,并控制該備份塊不斷移動,節省了內存的存儲空間,實現簡單,達到了閃存塊真正的磨損平衡。
文檔編號G06F12/06GK101458661SQ20081024665
公開日2009年6月17日 申請日期2008年12月29日 優先權日2008年12月29日
發明者于華章, 舟 陸 申請人:北京飛天誠信科技有限公司