專利名稱:四池閃存磨損均衡方法
技術領域:
本發(fā)明是關于存儲管理所提出的改進,具體是涉及與非閃存(NAND Flash,即與非快閃存儲器,簡稱與非閃存)磨損均衡方法。
背景技術:
隨著數(shù)碼技術的迅猛發(fā)展,應用于數(shù)碼設備且具有 非易失性、編程速度快、擦出時間段、省電且體積小特點的與非閃存得到了廣泛的應用。公知的,與非閃存的讀(Read)、寫(Program)和擦除(Erase)操作中讀和寫的基本單位是頁,擦除的基本單位是塊。對flash的寫操作只能在尚未寫入的空閑頁上進行,并且只能按照從低地址頁到高地址頁順序?qū)憽H绻胍薷哪硞€已經(jīng)寫過的頁,只能先擦除整個物理塊,然后再寫入。然而Flash的物理特征決定了它的可擦寫次數(shù)是有限的,當前技術條件下塊的擦除次數(shù)多在10萬次到100萬次之間,只要有一個塊的擦除次數(shù)達到了上限,數(shù)據(jù)存儲就變得不可靠,會影響整個閃存的讀寫效率和性能。為延長flash的使用壽命目前我們主要采用兩者策略,一種是應盡量減少對塊的擦除次數(shù),即當整個塊中的頁都被標記為空閑頁時再擦除。另一種策略是采用高效的磨損均衡處理(wear-levling)。這里主要涉及磨損均衡方法。國內(nèi)外有很多關于磨損均衡算法的研究被提出,例如鏈表閃存磨損均衡方法,在靜態(tài)文件與擦除次數(shù)最多的塊之間進行文件搬移,在這樣的過程中必然會增加塊的擦寫次數(shù);且在給各塊擦寫次數(shù)排序的過程中,增加了內(nèi)存的開銷,進而影響了閃存的寫入速度。兩池閃存磨損均衡方法是把閃存存儲數(shù)據(jù)分成熱數(shù)據(jù)池和冷數(shù)據(jù)池,該方法在兩池數(shù)據(jù)轉(zhuǎn)換過程中會增加了閃存塊的擦寫次數(shù),并且不能及時的處理壞塊,同時垃圾回收機制也不太好,缺少靈活性。三池閃存磨損均衡法將閃存的物理塊分成冷數(shù)據(jù)池、普通數(shù)據(jù)池和熱數(shù)據(jù)池;并對靜態(tài)均衡部分進行了改進,降低了額外的磨損,而且提高了閃存總體的執(zhí)行效率和速度。中國CN101266573B提出了一種允許覆蓋的閃存均衡磨損循環(huán)隊列方法,在這樣的方法中涉及一個記錄點或稱之為寫指針和一個讀點或者稱之為讀指針,通過對記錄點和讀點的處理,實現(xiàn)對閃存數(shù)據(jù)的均勻處理,達到均衡磨損的目的,同時在空間不夠時對最早的數(shù)據(jù)進行覆蓋。這種循環(huán)隊列方式使用起來非常簡單,但顯然的一點這種存儲管理方式可能會導致比較重要的數(shù)據(jù)的丟失。另一方面,為了避免較少使用數(shù)據(jù)的丟失,又不得不附加其他的管理策略,看似簡單的實現(xiàn)方式,在要求相對較高的條件下,管理方法實現(xiàn)起來反而很困難。一種閃存的磨損平衡方法公開在中國CN102081576A發(fā)明專利申請公開中,其說明書第0003段對所述兩池閃存磨損均衡方法中關于冷、熱數(shù)據(jù)對與非閃存使用壽命的影響的機理進行了系統(tǒng)說明,其中的Hot pool (熱池)和Cold pool (冷池)即為存儲管理中的兩池。基于兩池磨損均衡方法的缺陷,該CN102081576A提出了通過精確定義冷熱數(shù)據(jù)和閃存特別是大容量閃存產(chǎn)生的可擴展性問題。所提出的方案中是在兩池磨損方法的基礎上,維持一個已擦除次數(shù)統(tǒng)計表(Erase Count Table),對被分類的冷池和熱池進行了更具體的區(qū)分,在每個池中又分成了若干個存儲子區(qū)域,在存儲子區(qū)域間通過令牌方式實現(xiàn)磨損均衡。在所提供的方案中系統(tǒng)通過已擦除次數(shù)統(tǒng)計表來查看每個物理快的磨損情況,為每一個存儲子區(qū)域維持熱數(shù)據(jù)隊列,冷數(shù)據(jù)隊列,空閑塊隊列和垃圾塊隊列,具備四池磨損均衡機制的雛形。但其存儲區(qū)域的分配方式相對零散,管理開銷大。另外,該方案存儲管理的依據(jù)僅限于單純的對磨損均衡的考量,沒有考慮影響數(shù)據(jù)存儲穩(wěn)定性的數(shù)據(jù)出錯概率。另外,與非閃存廠商在與非閃存的生產(chǎn)制造過程中會專門分配一個備用池(一個存儲區(qū)域,Spare area)來標識壞塊,出于制造成本的考慮,壞塊在與非閃存出廠前就已經(jīng)部分(小于與非閃存總?cè)萘康?%)存在,該部分用戶不可見,可以不考慮。不過需要進行磨損均衡的與非閃存存儲區(qū)域是使用過程中出現(xiàn)的壞塊,已擦出此處統(tǒng)計表在與非閃存中都已存在,同時也都會存在一個壞塊列表,CN102081576A所提到的壞快池已經(jīng)存在,壞塊列表用于追蹤記錄那些在使用中發(fā)現(xiàn)的壞塊。
發(fā)明內(nèi)容
如果與非閃存的物理存儲單元塊中的錯誤位數(shù)超過了糾錯碼設定的最大糾錯位數(shù),糾錯碼是糾不出錯誤的,所以此塊存儲數(shù)據(jù)不可信,此塊就不可用了 ;顯然,若不考慮在閃存控制芯片中糾錯碼糾不出來碼字的情況,只根據(jù)擦寫次數(shù)來判定磨損閾值是有瑕疵的。另外,需要注意,由于與非閃存當前存在三種類型,不同類型的與非閃存可擦寫次數(shù)和出錯概率不一致,尤其是某些類型的與非閃存壽命比較短,也容易出錯。為此,本發(fā)明的目的在于提供一種四池閃存磨損均衡方法,進一步提高磨損均衡的效果。為解決上述技術問題,本發(fā)明采用以下技術方案
一種四池閃存磨損均衡方法,把與非閃存的存儲空間分成四個存儲區(qū)域,記為第一至第四存儲區(qū)域,在給定的可擦寫次數(shù)條件下,設定一個壽命閾值,把擦寫次數(shù)超過該壽命閾值的空閑塊放入第四存儲區(qū)域;再設定一個均衡閾值,從而其余的空閑塊被進一步地依據(jù)擦寫次數(shù)超過該均衡閾值的條件分入第三存儲空間;而進一步留下的空閑塊部分地留作備用塊而放入所述第四存儲區(qū)域,余者分配給第一存儲區(qū)域;
已寫入數(shù)據(jù)的塊分配給第二存儲區(qū)域;
從而,依據(jù)數(shù)據(jù)寫入和擦除操作動態(tài)的調(diào)整各塊在四個存儲區(qū)域間的分配;同時,設定一個因子,取塊的可擦寫次數(shù)與該因子的積為磨損閾值標準,那么所述均衡閾值=磨損閾值標準*A/B+可擦寫次數(shù);其中A為擦寫率,表示塊的已擦寫次數(shù)與可擦寫次數(shù)的比值;B表示磨損率,表示塊實際發(fā)生碼字錯誤率與給定的碼字錯誤率上限的比值;
當塊的平均擦寫次數(shù)達到所述均衡閾值時,調(diào)大均衡閾值。在依據(jù)本發(fā)明的四池閃存磨損均衡方法,采用多池存儲管理結構,引入磨損率的概念,用于標識某塊趨于壞塊的程度,能夠更客觀的反應塊的磨損。結合可擦寫次數(shù),能夠更加有效地反映出塊的磨損狀況,所據(jù)以確定的磨損均衡方法能夠更準確的實現(xiàn)與非閃存的磨損均衡。
上述四池閃存磨損均衡方法,調(diào)整均衡閾值的幅度為可擦寫次數(shù)與當前平均擦寫次數(shù)的差值與所述因子的積。上述四池閃存磨損均衡方法,所述因子為O. Γ0. 6。上述四池閃存磨損均衡方法,當有數(shù)據(jù)寫入時,寫入被分配的所述第一區(qū)域的塊,并將寫有數(shù)據(jù)的塊放入第二存儲區(qū)域;
而當?shù)诙鎯^(qū)域的數(shù)據(jù)塊達到所述均衡閾值時,分配一個沒有達到所述均衡閾值的空塊存放搬移過來的所述數(shù)據(jù)塊內(nèi)的數(shù)據(jù),并被放入第二存儲 區(qū)域,對應地,數(shù)據(jù)塊的數(shù)據(jù)被搬移后放入第三存儲區(qū)域;
第二存儲區(qū)域的數(shù)據(jù)塊被擦除而其擦寫次數(shù)沒有達到所述均衡閾值時,形成的空閑塊放入第一存儲區(qū)域;
第一存儲區(qū)域的塊被連續(xù)寫入時,從第四存儲區(qū)域中的備用塊被轉(zhuǎn)移給第一存儲區(qū)域,并在存儲數(shù)據(jù)完成且被轉(zhuǎn)移的備用塊沒有使用完畢,則把剩余的備用塊重新放入第四存儲區(qū)域;
當?shù)谌鎯^(qū)域內(nèi)的塊的擦寫次數(shù)達到壽命閾值時,將此塊放入第四存儲區(qū)域。上述四池閃存磨損均衡方法,與非閃存數(shù)據(jù)整理時,含有第二存儲區(qū)域的存放的冷數(shù)據(jù)與第三存儲區(qū)域的熱數(shù)據(jù)進行交換的第一方案;和
在第一存儲區(qū)域或第四存儲區(qū)域大于第二存儲區(qū)域時,在容量較大的存儲區(qū)域中查找擦寫次數(shù)最少的塊存放第三存儲區(qū)域的熱數(shù)據(jù),然后將該塊轉(zhuǎn)移到第二存儲區(qū)域的第二方案。上述四池閃存磨損均衡方法,塊的已擦寫次數(shù)由與非閃存控制器提供,具體是在與非閃存應用軟件的邏輯轉(zhuǎn)換層在初始化時加載地址映射表到主機R0M,提取塊的物理地址和塊所存放的數(shù)據(jù)的類型,以及塊的已擦寫次數(shù);依據(jù)讀取的已擦寫次數(shù)進行排序,以備調(diào)用。上述四池閃存磨損均衡方法,所述實際發(fā)生的碼字錯誤率的獲得方法是讀取閃存控制器糾錯碼中譯碼器糾正的位數(shù)得出,磨損率表示所讀取的位數(shù)與設定的最大位數(shù)的比。上述四池閃存磨損均衡方法,所述位數(shù)不能大于設定的糾錯碼最大位數(shù),若某塊的糾錯碼位數(shù)超過了最大糾錯碼位數(shù),則標定該塊為壞塊。上述四池閃存磨損均衡方法,在塊的平均擦寫次數(shù)達到塊的可擦寫次數(shù)的20%時,啟動第一次磨損均衡。
圖I為依據(jù)本發(fā)明的一個較佳實施例的塊在各持之間的轉(zhuǎn)換流轉(zhuǎn)圖。
具體實施例方式關于與非閃存,按照存儲單元或者說按照硬件架構,目前存在三種類型,分別是SLC(Single-Level Cell,單層單兀)是 lbit/cell,約 10 萬次擦寫壽命。MLC(Multi-LevelCell,多層單元)是 2bits/cell,約 3000-10000 次擦寫壽命。TLC(Trinary-Level Cell,三階單元)是3bits/cell,約500次擦寫壽命。
SLC的特點是成本高、容量小、速度快,而MLC的特點是容量大成本低,但是速度慢。由于每個MLC存儲單元中存放的資料較多,結構相對復雜,出錯的幾率會增加,必須進行錯誤修正,這個動作導致其性能大幅落后于結構簡單的SLC閃存。TLC的架構(有些地方稱3LC)已批量應用于閃存芯片上,這種架構與MLC采用近似原理,只不過MLC是I個單元2個bit,而TLC則是I個單元3個bit,MLC和SLC的差距,TLC在同樣的方面比MLC還要差上一大截。與MLC相似的是,這種技術同樣是在價格上占了優(yōu)勢,比MLC更便宜,不過壽命/速度則更差于MLC,而且TLC通常是和高制程同時出現(xiàn)的,導致目前一些采用TLC的U盤速度慘不忍睹,壽命 更是沒底,出錯概率更大,更需要進行錯誤修正。顯然,對于與非閃存,SLC架構對錯誤修正有要求,MLC和TLC架構則必須進行錯誤修正,因此,發(fā)明人認為,碼字錯誤率是磨損均衡必須要考慮的問題。另外需要注意的是,在背景技術部分已經(jīng)給出,為了降低成本,與非閃存在出廠時就已經(jīng)存在壞塊,這是當前制作工藝必然的結果。在存在壞塊的同時,本領域的技術人員也可以有這樣的理解,就是可擦寫次數(shù)實際上指的是平均可擦寫次數(shù),也可以理解為最大可擦寫次數(shù),某些塊可能在很少的擦寫次數(shù)內(nèi)就不可用,成為壞塊,而某些塊可能超過了最大的可擦寫次數(shù),仍然可用。因此,這里仍然需要考慮本文所提出的磨損率問題。在閃存控制芯片或者說閃存控制器中提供每個塊的擦寫次數(shù),嵌入式系統(tǒng)中應用軟件中的邏輯轉(zhuǎn)換層中的映射表能夠提供塊的物理地址和該塊所存儲數(shù)據(jù)的類型,根據(jù)數(shù)據(jù)類型和每個塊的擦寫次數(shù)來分各池。主要原因閃存類型不同,他們的擦寫次數(shù)也不相同,SLC的性能好一些,可擦寫次數(shù)上限高,而TLC的性能差一些,它的可擦寫次數(shù)上限低一些,而且它們存儲單元存的數(shù)據(jù)出現(xiàn)錯誤的概率也不近相同,所以磨損均衡算法也相應的復雜。 關于動態(tài)磨損均衡就是依據(jù)物理地址映射表中存放的與非閃存物理各塊的擦除次數(shù),決定將數(shù)據(jù)存放到較少擦除次數(shù)的存儲塊中,對于不是執(zhí)行數(shù)據(jù)更新的存儲塊或者說靜態(tài)數(shù)據(jù)存儲塊則不會被動態(tài)損耗平衡盯上,例如一個存放有50GB mp3音樂等靜態(tài)數(shù)據(jù)的120GB閃存可以有70 GB的空間用于動態(tài)損耗平衡。靜態(tài)磨損均衡會對所有的存儲塊執(zhí)行損耗平衡,包括那些沒有需要數(shù)據(jù)更新的存儲塊,這樣的好處是可以用于磨損均衡的存儲塊數(shù)將可能更多,減少存放靜態(tài)數(shù)據(jù)(例如mp3)存儲塊和存放動態(tài)數(shù)據(jù)(例如日志文件)存儲塊之間的不平均損耗問題,增加整個閃存的耐久度。磨損均衡的概念是需要盡量地將閃存的擦除平均地分布于閃存的各個閃存角落,容量愈大,同樣擦除量所產(chǎn)生的平均放閃周期自然越少,不過如果還是出現(xiàn)了存儲塊失效的情況,就需要將該存儲塊標記為不可用,然后從與非閃存預留的冗余區(qū)中重新分配一塊存儲塊到相應的邏輯地址。首先是關于與非閃存的存儲空間的分配,用于磨損均衡中塊的轉(zhuǎn)移。在圖I所示的架構中,與非閃存被分成四個存儲空間,分別對應為空閑池(Freeblock)、有效池(Used block)、閾值池(Wear out block)和備用池(Spare block),四個子存儲區(qū)域。關于上述四個字存儲區(qū)域的使用,空閑池中的塊已被擦除,塊中的所有頁面均為空閑狀態(tài),可寫入數(shù)據(jù)。有效池中的塊則是以進行了寫入數(shù)據(jù)的操作,所分配的塊存在有效數(shù)據(jù)。閾值池中的塊則是擦寫次數(shù)已達到設置的某個閾值。備用池中則分配了一些留作備用的空閑塊和擦寫次數(shù)快達到壽命閾值的塊,其中的留作備用的空閑塊對用戶屏蔽,即用戶不可見。關于壽命閾值,對應的與非閃存會有一個可擦寫次數(shù),針對該給定的可擦寫次數(shù)設定一個低于該可擦寫次數(shù)的閾值,記為壽命閾值,該閾值的可取范圍為可擦寫次數(shù)的80°/Γ90%,一般直接取80%比較適宜,最后等均衡閾值與該壽命閾值基本一致的時候,再行調(diào)整,在余下的壽命里再進行進一步的劃分。磨損均衡閾值,即用于磨損均衡調(diào)整的均衡閾值,其設定表現(xiàn)在以下方面因為閃存每種類型物理存儲單元在讀寫的過程中發(fā)生錯誤的概率不同,所以設定每種閃存類型的物理存儲單元塊發(fā)生碼字錯誤率的上限分別為Ps、Pm和Ρτ,腳標對應存儲單元架構的首字母。
設與非閃存的物理存儲單元塊實際發(fā)生碼字錯誤率為P。當閃存的物理存儲單元塊碼字發(fā)生錯誤率達到的設定上限時,存儲的數(shù)據(jù)將會變得極為不可靠,閃存就不能再用了,可以直接標明為壞塊,避免存儲數(shù)據(jù)的丟失。閃存物理存儲單元磨損率等于屬于該存儲子區(qū)域的所有塊的平均值,用實際發(fā)生碼字錯誤率/碼字錯誤率的上限來表示。閃存物理存儲單元的擦寫率等于屬于該存儲子區(qū)域的所有物理塊的平均值,用已擦除次數(shù)/可擦除次數(shù)來表示。磨損均衡閾值等于擦寫率除以磨損率然后乘以磨損閾值標準再加上可擦次數(shù)與磨損率的積。對應為(擦寫率/磨損率)*磨損閾值標準+可擦次數(shù)*磨損率。磨損閾值標準是根據(jù)閃存類型預設的值。每種閃存類型的物理存儲單元塊發(fā)生碼字錯誤率的上限PsIs^P Pt可以根據(jù)閃存控制芯片的糾錯碼的糾錯位數(shù)得出。閃存的物理存儲單元塊實際發(fā)生碼字錯誤率P可以根據(jù)閃存控制芯片的糾錯碼中譯碼器糾正的位數(shù)得出。在塊的平均擦寫次數(shù)達到塊的可擦寫次數(shù)的20%時,啟動第一次磨損均衡,這樣,在磨損均衡時,會產(chǎn)生足夠的擦寫次數(shù)供磨損均衡處理,在20%的條件下,可能某些塊已經(jīng)接近失效,當然,某些塊可能還從來沒有被使用過。在這個條件下,磨損均衡所使用的參量的獲得有比較好的參考價值。那么關于均衡閾值的選擇,顯然對應地在相同的計算方式下要高于所說的20%,為此,當把均衡閾值表示成允許擦寫次數(shù)與可擦寫次數(shù)之間的關系時,存在一個因子,那么均衡閾值表示為均衡閾值的幅度為可擦寫次數(shù)與當前平均擦寫次數(shù)的差值與所述因子的積。那么假如,初始階段的平均磨損為可擦寫次數(shù)的20%,壽命尚存80%,這里的均衡閾值直接取80%的可擦寫次數(shù)與所述因子的積,也是一種幅度。較佳地,所述因子為O. Γ0. 6,可以標準化的取O. 5。也可以采用其他的方式進行取舍,對于TLC,出錯的概率比較大,可以取較小值,如O. 4,對于SLC,出錯的概率比較小,可以取O. 6。關于均衡閾值的調(diào)整,根據(jù)存儲單元中數(shù)據(jù)出錯率和各個塊擦寫率的平均值指來確定,隨著存儲單元中數(shù)據(jù)出錯的概率的增加和各個塊擦寫率的平均值增加幅度動態(tài)的調(diào)整閾值池的閾值。閃存控制器取閃存物理存儲單元塊的擦寫次數(shù)最小的方法在啟動閃存時,首先要把閃存存儲的地址映射表放在主機的ROM中,閃存控制器可以根據(jù)相關擦寫次數(shù)的映射表很快計算出擦寫次數(shù)最小的物理存儲單元塊。使用硬件實現(xiàn)擦寫次數(shù)最小塊的獲取,速度更快。在各池轉(zhuǎn)換過程中,不僅依賴塊的擦寫次數(shù),而且還依賴塊中數(shù)據(jù)出錯的概率來進行各池的轉(zhuǎn)換,更具有代表性。四池的設定根據(jù)每個塊的擦寫次數(shù)建立磨損均衡表和閃存控制器給每塊中數(shù)據(jù)出錯的概率設置閾值,并根據(jù)閃存中每個塊擦寫限度和已被擦 寫的次數(shù)進行劃分各狀態(tài)池。我們根據(jù)存儲的映射表可以讀出物理塊的擦寫、次數(shù)和塊中是否存有數(shù)據(jù)來標記這四種狀態(tài)。我們通過掃描閃存存儲中塊的擦寫次數(shù)和塊的狀態(tài)來分池。依據(jù)上述內(nèi)容,首先,設置閾值池的閾值,含有壽命閾值(更多的表現(xiàn)在備用池中)和均衡閾值,后者,也就是均衡閾值根據(jù)閃存的平均擦寫次數(shù)和各池含有塊的數(shù)量、發(fā)生存儲錯誤的概率進行動態(tài)的調(diào)整。閾值池中塊達到規(guī)定的閾值,我們將會進行靜態(tài)磨損均衡操作,找到有效池中擦寫次數(shù)最少的塊,將塊中的不經(jīng)常進行讀的冷數(shù)據(jù)轉(zhuǎn)移到閾值池中擦寫次數(shù)最多的塊中,然后將這個塊轉(zhuǎn)移到有效池,同時將之前有效池中存放冷數(shù)據(jù)的擦除次數(shù)最小塊進行擦除操作后將其轉(zhuǎn)移到空閑池中。隨著各塊的擦寫次數(shù)逐漸增加,閾值池的閾值也將動態(tài)的進行調(diào)整。當進行垃圾回收操作后,將存儲被替換過的數(shù)據(jù)的垃圾塊和進行回收和擦除,這時會根據(jù)塊的擦除次數(shù)以及閾值池的均衡閾值將回收的垃圾開放入相應的空閑池或者是閾值池,如果塊的擦除次數(shù)小于均衡閾值,則會將其放入到空閑池,否則會放入閾值池??臻e池是我們在進行數(shù)據(jù)寫操作時才會進行使用的池,當對新的邏輯地址進行訪問或者是一個新的頁映射時我們會從空閑池中找出擦除次數(shù)最少的塊來對其進行寫操作。設備用池的目的主要為提高大量數(shù)據(jù)寫操作時或者閃存數(shù)據(jù)快寫滿時的數(shù)據(jù)傳輸效率,同時通過與其他池的交換可以提高整個閃存的使用壽命。那么對數(shù)據(jù)進行寫操作時,會產(chǎn)生對空閑池、有效池的操作,同時,當對大數(shù)據(jù)量的數(shù)據(jù)進行寫操作時,還可以會使用到備用池。依據(jù)上述內(nèi)容,采用硬件搜尋物理存儲單元塊的擦寫次數(shù)最小值比軟件搜尋的快。選取均衡閾值方式主要針對多種閃存類型混合使用,并且也支持單一的閃存類型。選取的用于磨損均衡的閾值是根據(jù)閃存物理存儲單元的真正磨損程度而選擇的;主要依據(jù)是閃存的控制芯片中的糾錯碼設定的糾錯位數(shù),如果閃存的物理存儲單元塊中的錯誤位數(shù)超過了糾錯碼設定的最大糾錯位數(shù),糾錯碼是糾不出錯誤的,所以此物理單元塊存儲數(shù)據(jù)不可信,此物理塊就不可用了。在圖I所示的框架中,箭頭表示塊的轉(zhuǎn)移,標號I代表當數(shù)據(jù)寫入時,主要是拿空閑池中的塊來保存輸入的數(shù)據(jù),此塊變成有效池中的塊。標號2代表有效池中的冷數(shù)據(jù)可以和閾值域池中的熱數(shù)據(jù)可以進行交換,標號3代表有效池中的塊的擦寫次數(shù)達到均衡閾值時,此塊就變成閾值中的塊。標號4代表當擦除有效池中的塊的擦寫次數(shù)未達到均衡閾值時,就把此塊放入空閑池中。標號5代表閾值池中的熱數(shù)據(jù)轉(zhuǎn)存到空閑池中的塊,如果空閑池中的塊的擦寫次數(shù)達到均衡閾值時,把此塊放入閾值池中。標號6代表閾值池中的熱數(shù)據(jù)可以轉(zhuǎn)存在備用池中的塊中。標號7代表當空閑池中的空塊迅速減少時,可以將備用池中的空塊轉(zhuǎn)移到空閑池中。標號8代表空閑池中的空閑塊穩(wěn)定時,需要把之前有借用的一部分空閑塊轉(zhuǎn)移回到備用池中。標號9代表閾值池中的塊擦除次數(shù)達到壽命閾值時,我們會將此塊放入到備用池中。依據(jù)上述塊的轉(zhuǎn)移方式更靈活,滿足對各種與非閃存的適用。更具體的內(nèi)容進一步描述為
如,當有寫入數(shù)據(jù)的請求時,根據(jù)寫入數(shù)據(jù)的邏輯地址轉(zhuǎn)換為物理地址來確定是否將數(shù)據(jù)寫入到有效池中還是需要從空閑池中拿出新的塊,如果是沒有被映射過的新的邏輯地址或者是進行新的頁映射,需要從空閑池中拿出擦除次數(shù)最小的塊寫入數(shù)據(jù)后放入有效池;當進行垃圾回收的時候,則會將有效池中的垃圾塊進行擦除,根據(jù)擦 除次數(shù)和均衡閾值放入到空閑池或者閾值池;當進行靜態(tài)磨損均衡操作時,會將有效池中的冷數(shù)據(jù)寫入到閾值池中的空塊內(nèi),然后將此塊轉(zhuǎn)移到有效池,同時將有效池中存放冷數(shù)據(jù)的塊擦除后轉(zhuǎn)移到空閑池中;當閾值池中的空塊的擦寫次數(shù)接近壽命閾值的時候我們會將其與備用池中的空塊做一個交換。
權利要求
1.一種四池閃存磨損均衡方法,把與非閃存的存儲空間分成四個存儲區(qū)域,記為第一 至第四存儲區(qū)域,其特征在于,在給定的可擦寫次數(shù)條件下,設定一個壽命閾值,把擦寫次數(shù)超過該壽命閾值的空閑塊放入第四存儲區(qū)域;再設定一個均衡閾值,從而其余的空閑塊被進一步地依據(jù)擦寫次數(shù)超過該均衡閾值的條件分入第三存儲空間;而進一步留下的空閑塊部分地留作備用塊而放入所述第四存儲區(qū)域,余者分配給第一存儲區(qū)域; 已寫入數(shù)據(jù)的塊分配給第二存儲區(qū)域; 從而,依據(jù)數(shù)據(jù)寫入和擦除操作動態(tài)的調(diào)整各塊在四個存儲區(qū)域間的分配;同時,設定一個因子,取塊的可擦寫次數(shù)與該因子的積為磨損閾值標準,那么所述均衡閾值=磨損閾值標準*A/B+可擦寫次數(shù);其中A為擦寫率,表示塊的已擦寫次數(shù)與可擦寫次數(shù)的比值;B表示磨損率,表示塊實際發(fā)生碼字錯誤率與給定的碼字錯誤率上限的比值; 當塊的平均擦寫次數(shù)達到所述均衡閾值時,調(diào)大均衡閾值。
2.根據(jù)權利要求I所述的四池閃存磨損均衡方法,其特征在于,調(diào)整均衡閾值的幅度為可擦寫次數(shù)與當前平均擦寫次數(shù)的差值與所述因子的積。
3.根據(jù)權利要求2所述的四池閃存磨損均衡方法,其特征在于,所述因子為O.Γ0. 6。
4.根據(jù)權利要求I至3任意所述的四池閃存磨損均衡方法,其特征在于,當有數(shù)據(jù)寫入時,寫入被分配的所述第一區(qū)域的塊,并將寫有數(shù)據(jù)的塊放入第二存儲區(qū)域; 而當?shù)诙鎯^(qū)域的數(shù)據(jù)塊達到所述均衡閾值時,分配一個沒有達到所述均衡閾值的空塊存放搬移過來的所述數(shù)據(jù)塊內(nèi)的數(shù)據(jù),并被放入第二存儲區(qū)域,對應地,數(shù)據(jù)塊的數(shù)據(jù)被搬移后放入第三存儲區(qū)域; 第二存儲區(qū)域的數(shù)據(jù)塊被擦除而其擦寫次數(shù)沒有達到所述均衡閾值時,形成的空閑塊放入第一存儲區(qū)域; 第一存儲區(qū)域的塊被連續(xù)寫入時,從第四存儲區(qū)域中的備用塊被轉(zhuǎn)移給第一存儲區(qū)域,并在存儲數(shù)據(jù)完成且被轉(zhuǎn)移的備用塊沒有使用完畢,則把剩余的備用塊重新放入第四存儲區(qū)域; 當?shù)谌鎯^(qū)域內(nèi)的塊的擦寫次數(shù)達到壽命閾值時,將此塊放入第四存儲區(qū)域。
5.根據(jù)權利要求4所述的四池閃存磨損均衡方法,其特征在于,與非閃存數(shù)據(jù)整理時,含有第二存儲區(qū)域的存放的冷數(shù)據(jù)與第三存儲區(qū)域的熱數(shù)據(jù)進行交換的第一方案;和 在第一存儲區(qū)域或第四存儲區(qū)域大于第二存儲區(qū)域時,在容量較大的存儲區(qū)域中查找擦寫次數(shù)最少的塊存放第三存儲區(qū)域的熱數(shù)據(jù),然后將該塊轉(zhuǎn)移到第二存儲區(qū)域的第二方案。
6.根據(jù)權利要求I所述的四池閃存磨損均衡方法,其特征在于,塊的已擦寫次數(shù)由與非閃存控制器提供,具體是在與非閃存應用軟件的邏輯轉(zhuǎn)換層在初始化時加載地址映射表到主機ROM,提取塊的物理地址和塊所存放的數(shù)據(jù)的類型,以及塊的已擦寫次數(shù);依據(jù)讀取的已擦寫次數(shù)進行排序,以備調(diào)用。
7.根據(jù)權利要求I所述的四池閃存磨損均衡方法,其特征在于,所述實際發(fā)生的碼字錯誤率的獲得方法是讀取閃存控制器糾錯碼中譯碼器糾正的位數(shù)得出,磨損率表示所讀取的位數(shù)與設定的最大位數(shù)的比。
8.根據(jù)權利要求7所述的四池閃存磨損均衡方法,其特征在于,所述位數(shù)不能大于設定的糾錯碼最大位數(shù),若某塊的糾錯碼位數(shù)超過了最大糾錯碼位數(shù),則標定該塊為壞塊。
9.根據(jù)權利要求I所述的四池閃存磨損均衡方法,其特征在于,在塊的平均擦寫次數(shù)達到塊的可擦寫次數(shù)的20%時,啟動第一次磨損均衡。
全文摘要
本發(fā)明公開了一種四池閃存磨損均衡方法,采用多池存儲管理結構,引入磨損率的概念,用于標識某塊趨于壞塊的程度,能夠更客觀的反應塊的磨損。結合可擦寫次數(shù),能夠更加有效地反映出塊的磨損狀況,所據(jù)以確定的磨損均衡方法能夠更準確的實現(xiàn)與非閃存的磨損均衡。
文檔編號G06F12/02GK102789423SQ201210237998
公開日2012年11月21日 申請日期2012年7月11日 優(yōu)先權日2012年7月11日
發(fā)明者張洪柳, 李峰, 高美洲 申請人:山東華芯半導體有限公司