專利名稱:閃存文件管理系統(tǒng)及方法
技術領域:
本發(fā)明涉及一種閃存文件管理系統(tǒng)及方法,尤指一種可平衡閃存存儲單元損耗的閃存文件管理系統(tǒng)及方法。
背景技術:
目前的個人便攜式電子產品主要采用兩種方式來儲存用戶資料,一種是采用隨機儲存器(Random Access Memory,RAM)存儲,另外一種就是采用閃存(Flash Memory)來儲存。由于隨機儲存器存儲只能在保持供電的狀態(tài)下才能保存資料,否則資料將會丟失。故隨機儲存器一般用于保存臨時資料。閃存是最常見的一種非揮發(fā)性內存(Non-Volatile Memory,NVM),在使用閃存保存資料時,一般可避免系統(tǒng)在電池沒電的情況下發(fā)生丟失已存儲的用戶資料的情形。但是,由于閃存本身隨機讀、按扇區(qū)寫和按塊刪除的特點,在突然掉電的瞬間,如果系統(tǒng)正在執(zhí)行閃存塊的擦除操作,則原來塊上的內容也將全部丟失,如果系統(tǒng)是采用FAT的文件系統(tǒng),在掉電的瞬間系統(tǒng)恰好正在更新文件分配表或ROOT表,則閃存上的資料可能全部丟失。
如中國國家知識產權局于2003年1月29日公開的,公開號為CN1393781A的專利,其專利名稱為“閃存文件的管理方法”,該專利即揭示了一種穩(wěn)定的閃存數據管理的方法,在閃存擦除過程中出現掉電時,其可將資料的損失減少到最低。但該方法不能提供對閃存存儲單元的損耗平衡的解決方案,可能會因為對閃存的某一局部擦寫過頻,而導致閃存的局部壞塊過多以致影響其使用壽命。
為此,希望提供了一種存儲文件安全,且使用壽命長的閃存文件管理系統(tǒng)及其管理方法,以消除上述的缺失。
發(fā)明內容本發(fā)明的目的是提供一種能夠平衡閃存存儲單元的損耗的閃存文件管理系統(tǒng)及方法。
本發(fā)明提供一種閃存文件管理系統(tǒng),是將閃存內部的每一存儲塊設為一節(jié)點單元,每個節(jié)點單元設有節(jié)點頭信息區(qū)、數據區(qū)及節(jié)點狀態(tài)信息區(qū),其中,節(jié)點狀態(tài)信息區(qū)包含有一節(jié)點版本訊息,該節(jié)點版本訊息用于表征該節(jié)點單元被擦除或被寫入的次數,其為一數值,每當對該節(jié)點進行一次擦除或寫入動作時,該節(jié)點版本數值即會相應增加一固定權值;每次對閃存進行寫入操作之前,會先掃描所有可用的節(jié)點單元,選擇一節(jié)點版本數值最小的節(jié)點單元進行寫入操作。
其中,該節(jié)點狀態(tài)信息區(qū)用于保存節(jié)點狀態(tài)信息,該節(jié)點狀態(tài)信息還包括有節(jié)點索引訊息、節(jié)點可用標志、節(jié)點刪除標志、節(jié)點鏈接訊息。
本發(fā)明另外提供一種閃存文件管理方法,用于向閃存中寫入新文件內容,并可平衡閃存的磨損,其包括有以下步驟(a)掃描閃存,在閃存中查找可用的節(jié)點單元;(b)依節(jié)點單元的版本數值對可用的節(jié)點單元進行排序;(c)將文件內容依次寫入至少一個可用的節(jié)點單元中;(d)建立這些已寫入文件內容的可用的節(jié)點單元間的節(jié)點鏈接關系;(e)更新該已寫入文件內容的可用的節(jié)點單元的版本訊息。
本發(fā)明還提供一種閃存文件管理方法,是用于更新閃存中文件內容并可平衡閃存的磨損,該方法包括如下內容(a)尋找需更新內容的第一節(jié)點單元;(b)掃描閃存中可用的第二節(jié)點單元并依該第二節(jié)點單元的節(jié)點版本訊息排序;(c)將第一節(jié)點單元的更新后的內容依序寫入第二節(jié)點單元中;(d)建立已寫入內容的第二節(jié)點單元之間的節(jié)點鏈接關系;(e)更新已寫入內容的第二節(jié)點單元的版本訊息;(f)刪除第一節(jié)點單元數據區(qū)中的內容。
由于本發(fā)明在更新節(jié)點單元的內容過程中,沒有采用覆蓋的方法,而是采用擦除操作在寫入操作之后進行的方法,這樣就很大程度保證了閃存中文件的安全性。另外,在本發(fā)明中,每次對節(jié)點單元進行寫入操作之前,均會先判斷該節(jié)點單元的節(jié)點版本訊息中的數值,優(yōu)先對低版本數值的節(jié)點單元進行操作,這樣,會盡可能平均每一節(jié)點單元的擦除與寫入的次數,從而可平衡閃存存儲單元損耗,達到延長閃存整體使用壽命的功效。
圖1是本發(fā)明閃存文件管理系統(tǒng)的文件結構設置示意圖。
圖2是圖1中節(jié)點頭信息區(qū)的示意圖。
圖3是圖1中節(jié)點狀態(tài)信息區(qū)的示意圖。
圖4是本發(fā)明閃存文件管理方法的向閃存中寫入新文件的流程圖。
圖5是本發(fā)明閃存文件管理方法的更新閃存中已有文件的流程圖。
具體實施方式請參閱圖1所示,是本發(fā)明閃存文件管理系統(tǒng)的文件結構設置示意圖。在本發(fā)明中,是將閃存內部的每一存儲塊(block)設為一節(jié)點單元1,這些節(jié)點單元1可以有大小之分,但其中每一個節(jié)點單元1都設有節(jié)點頭信息區(qū)10、數據區(qū)11和節(jié)點狀態(tài)信息區(qū)12。在本發(fā)明中的實施例中,閃存文件依其大小存放于一個或多個節(jié)點單元1中。其中數據區(qū)12用于存放這些閃存文件的具體內容。
請參閱圖2所示,是圖1中節(jié)點頭信息區(qū)的示意圖。該節(jié)點頭信息區(qū)10用于保存該節(jié)點單元的基本信息,這些信息包括有節(jié)點類型100、節(jié)點長度101及一個節(jié)點頭循環(huán)冗余校驗訊息102。
請參閱圖3所示,是圖1中節(jié)點狀態(tài)信息區(qū)的示意圖。節(jié)點狀態(tài)信息區(qū)12用于保存該節(jié)點的狀態(tài)信息,該節(jié)點狀態(tài)信息至少包括有節(jié)點版本訊息120、節(jié)點索引訊息121、節(jié)點可用標志122、節(jié)點刪除標志123、節(jié)點鏈接訊息124和備用區(qū)125。其中,節(jié)點版本訊息120是用于表征該節(jié)點單元被擦除或被寫入的次數的多寡,其為一數值,每當對該節(jié)點進行一次擦除或寫入動作時,該節(jié)點版本數值即會相應增加一固定權值(如1)。節(jié)點索引訊息121是用于表征閃存中該節(jié)點單元的邏輯位置。節(jié)點可用標志122是用于表征該節(jié)點單元是否可被使用,即該節(jié)點單元是否還有可用的存儲空間,如果該節(jié)點為可用狀態(tài)時,則該節(jié)點可用標志122會標記一預定的標志(如“1”),相反,如果該節(jié)點不可用,則其會標記另外的標志,而節(jié)點不可用又包括兩種情形,其一為該節(jié)點數據區(qū)已寫滿了資料,該種情形下,只能對其進行擦除操作,而不能進行寫入操作;其二為該節(jié)點單元已損壞,該種情形下,不能對其進行任何擦除與寫入的操作;該兩種情形(“滿”或“壞”狀態(tài))又可用相應的標志進行標記(如“F”或“S”)。當節(jié)點單元中的文件內容需要擦除時,則刪除標志123中會標記一特定標志(如“C”),當刪除標志為“C”時,則該節(jié)點的文件內容會在一預定的時間間隔后,或在下一次激活該文件時擦除。節(jié)點鏈接訊息124是用于提供記錄訊息,以記錄該節(jié)點單元與其在前節(jié)點單元及其在后節(jié)點單元之間的邏輯鏈接關系,其一般記錄有在前節(jié)點單元的節(jié)點索引訊息及其在后節(jié)點單元的節(jié)點索引訊息,利用節(jié)點鏈接訊息124,可以為寫入不同的節(jié)點單元的閃存文件建立一邏輯上的鏈接關系及先后順序,當某一節(jié)點的內容被擦除時,節(jié)點鏈接訊息125中的內容隨之取消。備用區(qū)125是用于存儲該節(jié)點的新增或臨時的狀態(tài)訊息。
該閃存文件管理系統(tǒng)中的每一閃存文件存放于至少一個包含上述特征的節(jié)點單元中,其是通過該節(jié)點鏈接訊息125來保證這些節(jié)點單元邏輯上連結的正確性。另外,每次對節(jié)點單元進行寫入操作之前,均會先判斷該節(jié)點單元的節(jié)點版本訊息中的數值,優(yōu)先對低版本數值的節(jié)點單元進行寫入操作,這樣,會盡可能平均每一節(jié)點單元的擦寫次數,從而達到延長整體閃存使用壽命的功效。
請參閱圖4所示,是本發(fā)明閃存文件管理方法的向閃存中寫入新文件的流程圖。系統(tǒng)首先掃描整個閃存,尋找是否有可用的節(jié)點單元,即找出節(jié)點可用標志122為“1”的所有節(jié)點單元(步驟S410)。對這些所找出的節(jié)點單元,依照其節(jié)點版本訊息120中節(jié)點版本數值的大小進行排序,在本實施例中采用升冪排序(步驟S420)。將文件內容最先寫入版本數值最小的一節(jié)點單元的數據區(qū)11中,如果文件大小超過該節(jié)點數據區(qū)容量的大小,則將剩下的文件內容寫入下一低版本數值的節(jié)點單元的數據區(qū)11中,直至將文件內容全部寫入閃存中(步驟S430)。建立這些已寫入文件內容的節(jié)點單元之間的節(jié)點鏈接關系,舉例來說,假設該閃存文件被寫入了三個節(jié)點單元中,即節(jié)點單元一、節(jié)點單元二和節(jié)點單元三,該三個節(jié)點單元在物理位置上可能是離散的而非順序相連,則需通過節(jié)點鏈接訊息來建立他們之間的邏輯聯系和先后順序,在本實施例中是采用如下方法來實現即在節(jié)點單元一的節(jié)點鏈接訊息中記錄其在后節(jié)點單元為節(jié)點單元二,并記錄節(jié)點單元二的節(jié)點索引訊息(邏輯地址訊息);在節(jié)點單元二的節(jié)點鏈接訊息中記錄其在前節(jié)點單元為節(jié)點單元一,并記錄節(jié)點單元一的索引訊息,記錄其在后節(jié)點單元為節(jié)點單元三,并記錄節(jié)點單元三的索引訊息;在節(jié)點單元三的節(jié)點鏈接訊息中記錄其在前節(jié)點單元為節(jié)點單元二,并記錄節(jié)點單元二的索引訊息,藉此,可知該閃存文件在邏輯上是順序存儲于節(jié)點單元一、二、三中(步驟S440)。更新寫入文件內容的節(jié)點單元的版本訊息,即在這些節(jié)點單元版本數值分別加上一固定的權值,例如,在上例中,可將節(jié)點單元一、二、三的節(jié)點版本數分別加1(步驟S450),并把上述節(jié)點單元的節(jié)點可用標志標記為“滿”狀態(tài)。則整個流程結束。
請參閱圖5所示,是本發(fā)明閃存文件管理方法的更新閃存中已有文件的流程圖。該流程是用于實現對閃存中已有的文件進行更新操作,其中有一些步驟與圖4中所提及的步驟相類似。當需要對閃存中的某一閃存文件進行更新操作時,首先,找到該閃存文件在閃存中所對應的節(jié)點單元,該節(jié)點單元可以為多個,為便于敘述,稱其為第一節(jié)點單元(步驟S510)。接著掃描該閃存,尋找其中的可用的節(jié)點單元并依這些節(jié)點版本數值升冪排序(步驟S520)。將更新后的內容最先寫入版本數值最小的一節(jié)點單元的數據區(qū)中,所述更新后的內容包括原閃存文件中不需更新的部份及需要更新且已更新的部份,如果更新后的內容大小超過該節(jié)點數據區(qū)容量的大小,則將剩下的文件內容寫入下一最小版本數值的節(jié)點單元的數據區(qū)11中,直至將文件內容全部寫入閃存中,為便于敘述,稱這些寫入更新內容的節(jié)點單元為第二節(jié)點單元(步驟S430)。建立第二節(jié)點單元之間的鏈接關系,該步驟與圖4中的步驟S440同(步驟S540)。更新第二節(jié)點單元的版本訊息,將第二節(jié)點單元的節(jié)點版本數值分別加上一固定權值,并將第二節(jié)點單元的節(jié)點可用標志標記為“滿”狀態(tài)(步驟S550)。將第一節(jié)點單元的刪除標志標記為預定的“C”(步驟S560)。則在一預定的時間間隔后,或在下一次激活該文件時,將該第一節(jié)點單元的文件內容刪除,并取消這些節(jié)點單元間的鏈接關系(步驟S570)。更新該第一節(jié)點單元的版本訊息,將第一節(jié)點單元的節(jié)點版本數值分別加上一固定權值,并將第一節(jié)點單元的節(jié)點可用標志標記為“可用”狀態(tài)(步驟S580)。
由于本發(fā)明的更新節(jié)點單元的內容過程中,沒有采用覆蓋的方法,而是采用擦除操作在寫入操作之后進行的方法,避免了以往當向閃存更新資料時,出現掉電情形,則導致閃存文件中的新資料和舊資料同時丟失的缺失,這樣就很大程度保證了閃存中文件的安全性。另外,在本發(fā)明中,每次對節(jié)點單元進行寫入操作之前,均會先判斷該節(jié)點單元的節(jié)點版本訊息中的數值,優(yōu)先對低版本數值的節(jié)點單元進行操作,這樣,會盡可能平均每一節(jié)點單元的擦除與寫入的次數,從而可平衡閃存存儲單元損耗,達到延長整體閃存使用壽命的功效。
權利要求
1.一種閃存文件管理系統(tǒng),其將閃存內部的每一存儲塊設為一節(jié)點單元,每個節(jié)點單元設有節(jié)點頭信息區(qū)、數據區(qū)及節(jié)點狀態(tài)信息區(qū),其特征在于,其中節(jié)點狀態(tài)信息區(qū)包含有一節(jié)點版本訊息,該節(jié)點版本訊息用于表征該節(jié)點單元被擦除或被寫入的次數,其為一數值,每當對該節(jié)點單元進行一次擦除或寫入動作時,該節(jié)點版本數值即會相應增加一固定權值;每次對閃存進行寫入操作之前,該閃存文件管理系統(tǒng)會先掃描所有可用的節(jié)點單元,選擇一節(jié)點版本數值最小的節(jié)點單元進行寫入操作。
2.如權利要求1所述的閃存文件管理系統(tǒng),其特征在于,其中該節(jié)點頭信息區(qū)用于保存節(jié)點基本信息,該基本信息至少包括有節(jié)點類型、節(jié)點長度及一個節(jié)點頭循環(huán)冗余校驗信息。
3.如權利要求1所述的閃存文件管理系統(tǒng),其特征在于,其中該節(jié)點狀態(tài)信息區(qū)用于保存節(jié)點狀態(tài)信息,該節(jié)點狀態(tài)信息還包括有節(jié)點索引訊息、節(jié)點可用標志、節(jié)點刪除標志、節(jié)點鏈接訊息。
4.如權利要求3所述的閃存文件管理系統(tǒng),其特征在于,其中,節(jié)點刪除標志標記節(jié)點單元的數據區(qū)中的數據處于需刪除狀態(tài)。
5.如權利要求3所述的閃存文件管理系統(tǒng),其特征在于,其中該節(jié)點鏈接訊息用來為寫入不同的節(jié)點單元的閃存文件建立一邏輯上的鏈接關系及先后順序。
6.一種閃存文件管理方法,用于向閃存中寫入新文件內容并可平衡閃存的磨損,其特征在于包括有以下步驟(a)掃描閃存,在閃存中查找可用的節(jié)點單元;(b)依節(jié)點單元的版本數值對可用的節(jié)點單元進行排序;(c)將文件內容依次寫入至少一個可用的節(jié)點單元中;(d)建立這些已寫入文件內容的可用的節(jié)點單元間的節(jié)點鏈接關系;(e)更新這些已寫入文件內容的可用的節(jié)點單元的版本訊息。
7.如權利要求6所述的閃存文件管理方法,其特征在于,其中步驟(c)包括首先向節(jié)點版本數值最小的可用節(jié)點單元寫入文件內容的步驟。
8.如權利要求7所述的閃存文件管理方法,其特征在于,其中步驟(d)還包括在該節(jié)點單元的節(jié)點鏈接訊息中記錄其在前節(jié)點單元的索引訊息及其在后節(jié)點單元的索引訊息的步驟。
9.如權利要求8所述的閃存文件管理方法,其特征在于,其中更新版本訊息的步驟(e)包括給所述的節(jié)點單元的節(jié)點版本數值加上一固定權值的步驟。
10.如權利要求9所述的閃存文件管理方法,其特征在于,其中在步驟(c)之后還包括將這些節(jié)點單元的節(jié)點可用標志標記為“滿”狀態(tài)的步驟。
11.一種閃存文件管理方法,用于更新閃存中文件內容,并可平衡閃存的磨損,其特征在于包括如下內容(a)尋找需更新內容的第一節(jié)點單元;(b)掃描閃存中可用的第二節(jié)點單元,并依該第二節(jié)點單元的節(jié)點版本訊息排序;(c)將第一節(jié)點單元的更新后的內容依序寫入第二節(jié)點單元中;(d)建立已寫入內容的第二節(jié)點單元之間的節(jié)點鏈接關系;(e)更新已寫入內容的第二節(jié)點單元的版本訊息;(f)刪除第一節(jié)點單元數據區(qū)中的內容。
12.如權利要求11所述的閃存文件管理方法,其特征在于,其中步驟(b)中包括依所述第二節(jié)點單元的節(jié)點版本數值大小進行升冪排序的步驟。
13.如權利要求12所述的閃存文件管理方法,其特征在于,其中步驟(c)包括首先向節(jié)點版本數值最小的第二節(jié)點單元中寫入更新后的文件內容,然后按節(jié)點版本數值的升冪順序依次將文件內容寫入第二節(jié)點單元中的步驟。
14.如權利要求11所述的閃存文件管理方法,其特征在于,在步驟(c)之后還包括將該第一節(jié)點單元中的節(jié)點可用標志標記為“滿”狀態(tài)的步驟。
15.如權利要求11所述的閃存文件管理方法,其特征在于,其中步驟(d)還包括在該第二節(jié)點單元的節(jié)點鏈接訊息中記錄其在前節(jié)點單元的索引訊息及其在后節(jié)點單元的索引訊息的步驟。
16.如權利要求11所述的閃存文件管理方法,其特征在于,其中步驟(e)包括給所述的第二節(jié)點單元的節(jié)點版本數值加上一固定權值的步驟。
17.如權利要求11的閃存文件管理方法,其特征在于,其在步驟(c)和步驟(f)之間還包括將第一節(jié)點單元標記一預定的刪除標志的步驟。
18.如權利要求11的閃存文件管理方法,其特征在于,其中在步驟(f)之后還包括如下步驟刪除該第一節(jié)點單元中的節(jié)點鏈接訊息;更新該已刪除內容的第一節(jié)點單元中的版本訊息;將該第一節(jié)點單元中的節(jié)點可用標志標記為“可用”狀態(tài)。
全文摘要
一種閃存文件管理系統(tǒng)及方法,其可管理對閃存文件的寫入及更新操作,并能平衡閃存存儲單元的損耗。該方法包括如下步驟尋找需更新內容的第一節(jié)點單元;掃描閃存中可用的第二節(jié)點單元并依該第二節(jié)點單元的節(jié)點版本訊息排序;將第一節(jié)點單元的更新后的內容依序寫入第二節(jié)點單元中;建立已寫入內容的第二節(jié)點單元之間的節(jié)點鏈接關系;更新已寫入內容的第二節(jié)點單元的版本訊息;刪除第一節(jié)點單元數據區(qū)中的內容。利用本發(fā)明提供的系統(tǒng)與方法,可延長閃存的使用壽命。
文檔編號G06F17/30GK1619533SQ20031011227
公開日2005年5月25日 申請日期2003年11月17日 優(yōu)先權日2003年11月17日
發(fā)明者婁長劍, 何唐 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司