《一種基於局部採樣的存儲器的磨損平衡方法》是炬力積體電路設計有限公司於2007年7月5日申請的發明專利,該專利的公布號為:CN101067800,專利公布日:2007年11月7日,發明人:陳黎明、陳誠。
《一種基於局部採樣的存儲器的磨損平衡方法》涉及了一種基於局部採樣原理的存儲器的磨損平衡實現方法,具體來講是快閃記憶體的磨損平衡方法。該發明包括:建立快閃記憶體的生命周期模型;將整個生命周期按具體的使用規律分成一定個數的生命採樣階段;在某個採樣階段的終點,採集該採樣階段內的歷史數據並進行分析,將任務最繁重的存儲單元調配到最安靜的區域,將最安靜的區域對應的存儲單元調配到任務最繁重的存儲單元原先所在的區域。該發明可以達到磨損平衡,提高存儲器的使用壽命,適用於所有易受損的存儲器。
2017年12月11日,《一種基於局部採樣的存儲器的磨損平衡方法》獲得第十九屆中國專利優秀獎。
(概述圖為《一種基於局部採樣的存儲器的磨損平衡方法》摘要附圖)
基本介紹
- 中文名:一種基於局部採樣的存儲器的磨損平衡方法
- 公布號:CN101067800
- 公布日:2007年11月7日
- 申請號:2007101274530
- 申請日:2007年7月5日
- 申請人:炬力積體電路設計有限公司
- 地址:廣東省珠海市唐家灣鎮哈工大路1號15棟1單元1號
- 發明人:陳黎明、陳誠
- Int. Cl.:G06F12/02(2006.01)
- 專利代理機構:中國國際貿易促進委員會專利商標事務所
- 代理人:秦晨
- 類別:發明專利
專利背景,發明內容,專利目的,技術方案,改善效果,附圖說明,技術領域,權利要求,實施方式,榮譽表彰,
專利背景
嵌入式系統是指面向特定套用設計、執行專用功能並被內部計算機控制的設備或者系統。隨著計算機科學技術和網路通信技術的迅猛發展,嵌入式系統的開發和套用得到飛速發展和普及。快閃記憶體(Flash Memory)存儲介質是一種非易失性的存儲器,具有掉電後內部信息仍可保留,以及可被反覆擦除再編程等特點。
快閃記憶體具有如下的物理特性:當快閃記憶體處於乾淨的狀態時(被擦除過,但還未發生寫操作),它的每一個位(bit)都是1;快閃記憶體上的每一位可以被寫操作置成0,但把0置成1卻不能按寫操作來進行,只能通過擦除操作進行,一般擦除操作只能以塊(Block)為單位進行;快閃記憶體的使用壽命是有限的,快閃記憶體的使用壽命是由擦寫塊的最大可擦寫次數來決定的,當擦寫塊超過了最大可擦寫次數,這個擦寫塊就成為壞塊,以後再無法使用。
快閃記憶體系統內的存儲單元的磨損程度依據每個存儲單元的被擦除編程的頻率而變化。如果對一個存儲單元進行一次編程寫入數據然後實際上永不對其進行再編程,那么該存儲單元的磨損一般較低;而如果反覆地對一個存儲單元進行擦除和編程,那么該存儲單元的磨損一般較高。由於嵌入式系統自身的特點,主機可能需要對固定範圍內的邏輯地址區域進行反覆的寫入數據操作,那么便可能對快閃記憶體內相同區域的存儲單元進行反覆地寫入及擦除。當某些存儲單元因擦寫動作超過最大可擦寫次數被磨壞而其它存儲單元相對未被磨損時,磨壞單元的存在通常使快閃記憶體系統的總體性能受損。通常,當快閃記憶體系統中存在較多已經磨壞的存儲單元,且所占的比例已經達到或超過快閃記憶體系統能正常使用所允許的極限,即使快閃記憶體系統中的許多其它存儲單元相對仍未磨損壞,仍可認為所述快閃記憶體系統不可用。因此,為了避免某些存儲單元被過度擦寫,以致於它們先於其它的存儲單元達到最大可擦寫次數,我們應該在儘量不影響系統性能的前提下,使擦寫操作儘量均勻地分布在每個存儲單元上。這個過程叫磨損平衡。
2007年前的常規磨損平衡方法,是把每個存儲單元的擦寫次數等信息記錄在每個存儲單元內,根據各個存儲單元的擦寫次數,在擦寫次數比較多和擦寫次數比較少的存儲單元之間作決策,通常是要涉及交換不同的邏輯地址所對應的物理單元,並交換這些物理單元對應的數據,以此來處理存儲單元之間的擦寫均勻度。常規方法雖然可以滿足基本的磨損平衡要求,但也存在一些缺點和不足:
(1)一般將存儲單元的擦寫次數等信息存放在存儲單元的特殊空間內,造成存儲空間資源的浪費。
(2)在系統異常掉電的情況下,存儲單元的擦寫次數等信息容易丟失,造成磨損平衡不徹底。
(3)對擦除次數等信息在存儲單元中的存放受新型存儲器(如MLC快閃記憶體)的特性的制約,給存儲設備軟硬體對存儲空間的管理造成不便。
因此,需要一種在存儲系統內有效地執行磨損平衡的方法和裝置。即,需要一種自動磨損平衡處理,在促進存儲系統內相關存儲單元更均勻磨損的同時,不會不利地影響存儲系統的整體性能。
發明內容
專利目的
《一種基於局部採樣的存儲器的磨損平衡方法》涉及了一種基於局部採樣原理的存儲器的磨損平衡實現方法,具體來講是快閃記憶體的磨損平衡方法。該發明包括:建立快閃記憶體的生命周期模型;將整個生命周期按具體的使用規律分成一定個數的局部生命採樣階段;在某個採樣階段的終點,採集該採樣階段內的歷史數據並進行分析;某個採樣階段內的歷史數據能反映該採樣階段內對快閃記憶體所進行操作的規律,能找到存儲空間內最安靜的區域以及任務最繁重的存儲單元;對歷史數據進行分析後,進行磨損平衡的決策,將任務最繁重的存儲單元調配到最安靜的區域,將最安靜的區域對應的存儲單元調配到任務最繁重的存儲單元原先所在的區域;在某個所述生命採樣階段的起點,快閃記憶體系統已經基本上處於磨損均勻狀態,該狀態是在前一個採樣階段的終點實施的;從整個生命周期來看,快閃記憶體均是處於磨損平衡狀態。
技術方案
《一種基於局部採樣的存儲器的磨損平衡方法》所述引導方法和裝置可以套用於各種存儲器的啟動過程中,下面為了方便說明,僅採用快閃記憶體進行描述。該發明可以套用於所有類型的存儲介質。該發明的核心思想是:根據快閃記憶體的具體使用規律,建立快閃記憶體的生命周期模型;在生命周期模型中建立局部採樣點,把整個生命周期分成一定個數的局部採樣階段;在局部採樣階段的起點,開始採集與存儲單元磨損相關的歷史數據,在局部採樣階段的終點,對該採樣階段內採集到的歷史數據進行分析;在分析歷史數據的基礎上,進行進一步的決策措施。參照圖1是所建立的快閃記憶體生命周期模型。將整個生命周期分為生命初期106、生命中期108和生命晚期109,在快閃記憶體出廠後進入生命前期,這期間大部分存儲塊的磨損程度較低,快閃記憶體系統的整體性能較好;在經過生命中期比較頻繁的磨損後,進入生命晩期,這時大部分存儲塊的磨損程度都比較高,為了儘量延長快閃記憶體的使用壽命,磨損平衡的執行顯得尤為重要。再將生命周期分成n個局部採樣階段,即在生命初期106所包含的採樣階段1(101)、採樣階段2(102)和採樣階段3(103),以及在生命晚期所包含的採樣階段n-1(104)、採用階段n(105)等。在第i個採樣階段(107)內,當該階段開始後,每隔一定的時間周期就採集歷史數據,在該採樣階段的終點,對採集到的歷史數據進行分析,作進一步的決策,是否要執行磨損平衡的措施。在第i個採樣階段已經完成,進入第i+1個採樣階段時,此時快閃記憶體系統已經基本上處於磨損均勻狀態,即,某個採樣階段內的磨損平衡狀態是在上個採樣階段的終點實施的。
參照圖2,是該發明所述的快閃記憶體型嵌入式系統的系統結構圖,它主要包括主機系統206和快閃記憶體207。快閃記憶體型嵌入式系統內部的主要功能部件及相關配合如圖2所示。主機系統206,可以集成在IC晶片內部,也可以是分離的。圖中雙向箭頭表示flash數據流向,包括命令字和flash中具體數據內容。
在套用系統206中,包括唯讀存儲器ROM201、隨機讀寫存儲器RAM202、微控制器(MCU)203、Flash硬體接口205等。唯讀存儲器ROM201用於存放啟動代碼,可由微控制器203直接取指令執行,用於硬體初始化以及從Flash存儲器207讀出後續的代碼。RAM202用於存儲臨時數據和動態系統代碼,可由微控制器203直接讀取指令執行其中的動態系統代碼。微控制器203用於直接從ROM201或RAM202中讀取代碼執行,還具有計算、控制等功能。在主機系統206中,還可以包括FLASH控制器,用於加快flash信號傳輸。當然,可以將FLASH控制器集成設定在微控制器203中,也可以將FLASH控制器和微控制器203設定為通過接口相連。在套用系統206中,還可以包括直接存儲器存取控制器(DMA控制器)204,用於控制Flash存儲器207與RAM202之間的數據或系統代碼存取,當然,此功能還可以由該領域技術人員熟知的其他可行的存取控制方式實現。DMA(Direct Memory Access),即直接存儲器存取,是一種快速傳送數據的機制。數據傳遞可以從設備到記憶體,從記憶體到設備或從一段記憶體到另一段記憶體。Flash接口(flashinterface)205為Flash存儲器207與主機系統206的硬體接口,其接口信號皆為Flash存儲器的硬體接口的標準信號,可以在I/O數據線上傳輸Flash存儲器的命令字、地址序列、數據等信息。
參照圖3是Flash存儲器207具體數據的空間分布圖。Flash存儲器在嵌入式系統中既作為程式存儲器,又作為數據存儲器。它由物理空間和邏輯空間兩大部分組成。物理空間即301所示,它是在Flash存儲器的地址最起始開始預留幾個物理塊,主要用於系統的啟動和作業系統的初始化等。邏輯空間由系統代碼區302和用戶數據區303組成,系統代碼區302用於存放作業系統和應用程式相關的代碼和數據,用戶看不到這部分空間;用戶數據區303用於存放用戶自己可以訪問的數據。
由於Flash存儲器的不穩定性,它有一定的使用壽命,以及為了磨損平衡的需要,在實際的快閃記憶體型嵌入式系統中,主機訪問快閃記憶體時所傳遞的邏輯地址和快閃記憶體實際的物理地址並非一一對應,而是在邏輯地址和物理地址之間建立一張隨機的映射表,並把相應的映射關係記錄在物理單元的特殊空間。以一個表項表示一個物理塊為例,當上層要訪問第0個邏輯塊的數據時,要根據映射表找到第0個表項的內容,即實際的物理塊,再對該物理塊進行操作。在圖3所示的快閃記憶體空間分布中,所有對邏輯空間302和303的訪問都要經過該映射表進行。參照圖4為以物理塊為表項的映射表建立的流程示意圖,401會執行系統初始化的動作,設定一些系統參數;402對各個物理塊逐個掃描,得到相關的信息;403和404會根據402的掃描結果,判斷當前物理的使用狀態,是否好塊,是否系統預留塊等,如果壞塊,則將壞塊剔除,如果是預留塊,則跳過預留的物理塊,繼續對剩下的物理塊逐個掃描;405判斷當前物理塊中是否已經有對應的邏輯表的映射信息,如果有,則在407中建立該物理單元和對應邏輯單元的映射關係。在掃描完快閃記憶體的所有物理單元後,一張邏輯映射表就建立了。
參照圖5是一張邏輯塊和物理塊的映射表,假設快閃記憶體共有1024個物理塊,那么這張映射表總共有1024個表項。假設映射給邏輯塊的有1000個物理塊,即501所示的這張表的前1000項,如果上層訪問快閃記憶體的邏輯地址位於第0個邏輯塊單元,那么根據索引可以在501中找到對應的物理單元是物理塊1(504)。502表示的一些塊是備用塊,用於前1000個表項中對應的物理塊損壞時的替換使用。另外還有一個臨時備份塊503,進行寫操作時,要寫入的數據和邏輯表中對應目標塊的內容都寫入備份邏輯塊,並將備份邏輯塊和目標塊的位置交換。
所以進行寫操作時,邏輯表的內容會發生變化。參照圖6表示對連續對邏輯塊0和邏輯塊1進行寫操作時邏輯表的具體變化情況。601表示對邏輯塊0進行寫之前邏輯表的內容,從604可以看出邏輯塊0和邏輯塊1分別對應的表項是物理塊A和物理塊B,從605可知此時的臨時備份塊是物理塊Z。在對邏輯塊0的寫操作完成後,需要將臨時備份塊和邏輯表中對應目標塊的位置交換。602表示對邏輯塊0寫操作完成後,在對邏輯塊1寫操作之前邏輯表的內容,此時邏輯塊0對應邏輯表項已經變成物理塊乙而臨時備份塊是物理塊A。在對邏輯塊1進行寫操作後,同樣需要將臨時備份塊和邏輯表中對應目標塊的位置交換。603表示對邏輯塊1寫操作完成後邏輯表的內容,此時邏輯塊1對應邏輯表項已經變成物理塊A,而臨時備份塊是物理塊B。由示意圖6也可以看出,邏輯塊2對應的表項始終為物理塊C,沒有發生變化。所以,在一定的採樣階段內,如果沒有對某一區域進行擦寫操作,則該區域對應的邏輯表內容不會發生變化。
同時可以看出,一定採樣時間段內,如果邏輯表內容的變化發生的越劇烈,說明該時間段內對Flash存儲器的操作越頻繁。因此,可以把存儲空間對應的映射表作為該發明在各個局部採樣階段內所需要採集的數據,在各個採樣階段的終點對採集到的該階段內的所有歷史數據,即映射表進行分析,然後作進一步的決策。對數據進行分析時,根據映射表的動態活躍屬性,找到異常活躍的區域和比較安靜的區域,然後再在異常活躍的區域中找到操作比較頻繁的物理塊,將這些物理塊與比較安靜的區域對應的物理塊進行位置調配,並互相交換數據。參照圖7是對採集到的歷史數據進行分析後得到的快閃記憶體區域磨損程度示意圖。701表示比較吵鬧的區域,702表示最安靜的區域,703表示任務最輕鬆的物理單元,704表示任務最繁重的物理單元。如果在該局部採樣階段內,存儲器沒有受到磨損操作或受到的磨損操作分布比較均勻,相應地在對歷史數據進行分析時,沒有找到比較活躍的區域,所以區域都相對比較安靜,則不需要採取進一步措施實現磨損平衡,直接進入下個採樣階段,在下個採樣階段的終點再做分析和決策。因此在每個採樣階段的起點,存儲系統都是處於較好的磨損均勻狀態,這一狀態是在上一個採樣階段的終點實施的,以此來一個局部採樣階段內的磨損平衡。總體的來看,通過一個採樣階段內實現的磨損平衡,來保證整個生命周期記憶體儲器的整體磨損平衡。
《一種基於局部採樣的存儲器的磨損平衡方法》的客觀依據是:從一個事物的整個生命周期模型來看,在兩個相鄰的局部採樣階段內所採集到的數據,它們所表現的該事物的特徵規律基本是相近的。以此類推,在局部採樣階段所體現的事物特徵規律大體上可以反映整個生命周期內的事物特徵規律。因此,在兩個相鄰的局部採樣階段內所找到的區域磨損程度特徵是相近的,在整個生命周期內這些特徵的變化是連續的,所以在連續的局部採樣階段內實施的磨損平衡算法,能保證存儲器在整個生命周期內處於磨損平衡的狀態。
改善效果
與2007年前常規的存儲器磨損平衡方法相比,《一種基於局部採樣的存儲器的磨損平衡方法》具有以下優點:
1、不需要將與磨損平衡算法相關的特殊信息存放在存儲單元的特殊空間內,不占用存儲器的空間資源;
2、有良好的掉電保護功能,不受系統異常斷電的影響;
3、不受新的存儲器特性的制約,適用於所有易受損的存儲器;
4、實現機制可靠簡單。
《一種基於局部採樣的存儲器的磨損平衡方法》涉及了一種基於局部採樣原理的存儲器的磨損平衡實現方法,它可以避免對某些存儲單元的過度擦寫操作,以致於它先於其它存儲單元到達最大可擦寫次數,從而達到磨損平衡,提高存儲器的使用壽命,提高系統的性能,且它的實現機制可靠簡單。同時,該發明可以克服常規的存儲器磨損平衡方法存在的缺點,不占用存儲器的空間資源;有良好的掉電保護功能,不受系統異常斷電的影響;不受新的存儲器特性的制約,適用於所有易受損的存儲器。
附圖說明
圖1是所建立的快閃記憶體生命周期模型的示意圖;
圖2是《一種基於局部採樣的存儲器的磨損平衡方法》所述的快閃記憶體型嵌入式系統的系統結構圖;
圖3是Flash存儲器存儲數據的空間分布圖;
圖4是Flash存儲器的邏輯映射表建立的流程示意圖;
圖5是Flash存儲器的邏輯映射表的結構示意圖;
圖6是對Flash存儲器進行寫操作時邏輯表的變化示意圖;
圖7是對歷史數據進行分析後得到的快閃記憶體區域磨損程度示意圖;
圖8是整個生命周期內的磨損平衡算法的運行流程圖。
技術領域
《一種基於局部採樣的存儲器的磨損平衡方法》涉及存儲器的磨損平衡方法,具體來講,是涉及一種基於局部採用的磨損平衡方法,尤其適用於快閃記憶體這樣易受損的存儲器的磨損平衡。
權利要求
1、一種基於局部採樣原理的存儲器的磨損平衡實現方法,其特徵在於,包括:
(1)建立存儲器的生命周期模型;
(2)在生命周期的某個局部採樣階段內,從採樣階段起點開始一直到採樣階段終點,採集當前局部採樣階段內的所有歷史數據,所述歷史數據為存儲空間對應的映射表;
(3)在當前採樣階段的終點,分析採集到的所有歷史數據;
(4)根據分析結果判斷是否實施磨損平衡算法,所述磨損平衡算法為根據映射表的動態活動屬性,找到異常活躍的區域和比較安靜的區域,然後再在異常活躍的區域中找到操作比較頻繁的物理塊,將這些物理塊與比較安靜的區域對應的物理塊進行位置調配,並互相交換數據;
如果分析結果顯示所有區域都相對比較安靜,則不需要採取進一步措施實施磨損平衡算法;否則在當前採樣階段的終點實施磨損平衡算法,此後存儲器就進入磨損均勻狀態,下個採樣階段在當前採樣階段實施的磨損平衡算法的基礎上,繼續進行同樣的磨損平衡算法,由此在各個局部採樣階段內實施磨損平衡算法,保證了在整個生命周期記憶體儲器處於磨損均勻狀態。
2、根據權利要求1所述的方法,其特徵在於,根據一定的採樣頻率,從採樣階段起點開始一直到採樣階段終點,採集當前局部採樣階段內的所有歷史數據。
3、根據權利要求1所述的方法,其特徵在於,所採集的歷史數據反映該採樣階段內對存儲器所進行操作的規律。
4、根據權利要求3所述的方法,其特徵在於,採集的歷史數據可以看到磨損操作所在的區域,當對存儲器的某一物理單元進行磨損操作時,歷史數據中該物理單元所對應的部分會發生變動,這種變動越頻繁,說明磨損操作的程度越高。
5、根據權利要求1所述的方法,其特徵在於,通過對採集的歷史數據進行具體分析,找到過去一個採樣階段記憶體儲器的各個區域的磨損操作程度的分布曲線,再根據該分布曲線進行磨損平衡的決策和實施措施。
6、根據權利要求5所述的方法,其特徵在於,在局部採樣階段的終點,根據反映磨損操作程度的所述分布曲線,找到該採樣階段內任務最繁重的單元和最安靜區域,將最安靜的區域對應的存儲單元調配到任務最繁重的存儲單元原先所在的區域,並進行存儲單元間的數據交換;
7、根據權利要求1所述的方法,其特徵在於,兩個相鄰的局部採樣階段內所採集到的數據,它們所表現的各自採樣階段內的存儲器磨損的特徵上基本上是相近的,在連續的局部採樣階段內實施的磨損平衡算法,能保證存儲器在整個生命周期內處於磨損平衡的狀態。
8、根據權利要求1-7中任一項所述的方法,其特徵在於,所述存儲器為快閃記憶體存儲器。
實施方式
為了清楚說明《一種基於局部採樣的存儲器的磨損平衡方法》的思想和實現步驟,現舉例說明該磨損平衡算法的實現操作方法。假設當前快閃記憶體處於生命周期的第i個局部採樣階段的起點,它已經基本上處於各物理單元的磨損均勻狀態,該狀態是在第i-1個局部採樣階段的終點實施的。從該狀態點開始,一直到該採樣階段的終點,按一定的採樣率逐點採集各個採樣時刻對應的當前歷史數據,即快閃記憶體的邏輯映射表。為了便於說明,在第i個採樣階段內設點5個採樣點。表1表示在第i個採樣階段起點採集到的歷史數據,此時快閃記憶體已經處於比較好的磨損平衡狀態。
0x3ff | 0x3fe | 0x3fd | 0x3fc | 0x3fb | 0x3fa | 0x3f9 |
0x3f8 | 0x3f7 | 0x3f6 | 0x3f5 | 0x3f4 | 0x3f3 | 0x3f2 |
0x3fl | 0x3f0 | 0x3ef | 0x3ee | 0x3ed | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x2fc | 0x2f9 | 0x2f0 | 0x278 | 0x25c | 0x222 | 0x30c |
0x21c | 0x1fc | 0x18c | 0x17f | 0x187 | 0x156 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x64 | 0x50 | 0x44 | 0x45 | 0x43 | 0x40 | 0x33 |
表2是在第i個採樣階段的第2個數據採集點採到的歷史數據,對比表1可以看出,快閃記憶體的某些區域發生了擦寫操作。
0x16 | 0x3ff | 0x3fe | 0x3fd | 0x3fc | 0x3fb | 0x3fa |
0x3f9 | 0x3f8 | 0x3f7 | 0x3f6 | 0x3f5 | 0x3f4 | 0x3f3 |
0x3f1 | 0x3f0 | 0x3f2 | 0x3ee | 0x3ef | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x3ed | 0x2fc | 0x2f9 | 0x278 | 0x25c | 0x222 | 0x30c |
0x21c | 0x1fc | 0x18c | 0x17f | 0x187 | 0x156 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x64 | 0x50 | 0x44 | 0x45 | 0x43 | 0x40 | 0x33 |
表3是在第i個採樣階段的第3個數據採集點採到的歷史數據,對比表2可以看出,快閃記憶體的某些區域發生了擦寫操作。
0x2f0 | 0x16 | 0x3ff | 0x3fe | 0x3fd | 0x3fc | 0x3fb |
0x3fa | 0x3f9 | 0x3f8 | 0x3f7 | 0x3f6 | 0x3f5 | 0x3f4 |
0x3f1 | 0x3f0 | 0x3f3 | 0x3ee | 0x3f2 | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x3ed | 0x2fc | 0x2f9 | 0x3ef | 0x278 | 0x25c | 0x30c |
0x21c | 0x1fc | 0x18c | 0x17f | 0x187 | 0x156 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x64 | 0x50 | 0x44 | 0x45 | 0x43 | 0x40 | 0x33 |
表4是在第i個採樣階段的第4個數據採集點採到的歷史數據,對比表3可以看出,快閃記憶體的某些區域發生了擦寫操作。
0x222 | 0x2f0 | 0x16 | 0x3ff | 0x3fe | 0x3fd | 0x3fc |
0x3fb | 0x3fa | 0x3f9 | 0x3f8 | 0x3f7 | 0x3f6 | 0x3f5 |
0x3f1 | 0x3f0 | 0x3f4 | 0x3ee | 0x3f3 | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x3ed | 0x2fc | 0x2f9 | 0x3ef | 0x278 | 0x25c | 0x30c |
0x3f2 | 0x21c | 0x1fc | 0x17f | 0x187 | 0x156 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x64 | 0x50 | 0x44 | 0x45 | 0x43 | 0x40 | 0x33 |
表5是在第i個採樣階段的第5個數據採集點採到的歷史數據,對比表4可以看出,快閃記憶體的某些區域發生了擦寫操作。
0x18c | 0x222 | 0x2f0 | 0x16 | 0x3ff | 0x3fe | 0x3fd |
0x3fc | 0x3fb | 0x3fa | 0x3f9 | 0x3f8 | 0x3f7 | 0x3f6 |
0x3f1 | 0x3f0 | 0x3f5 | 0x3ee | 0x3f4 | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x3ed | 0x2fc | 0x2f9 | 0x3ef | 0x278 | 0x25c | 0x30c |
0x3f2 | 0x21c | 0x1fc | 0x3f3 | 0x17f | 0x187 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x64 | 0x50 | 0x44 | 0x45 | 0x43 | 0x40 | 0x33 |
根據表1-5所示的數據,我們對歷史數據進行具體的分析,分析第i個採樣階段內快閃記憶體各個區域的磨損情況,再決定進一步的磨損平衡措施。針對表1-5所示的歷史數據,為了找到過去一個採樣階段內快閃記憶體各區域的磨損程度,
分別主要進行兩個方面的數據統計,一方面對各個位置上的表項內容的變化情況進行統計,從而找到過去一個時間段內快閃記憶體中最安靜和最吵鬧的區域;另一方面對具體每個表項的位置跳躍情況進行統計,從而找到過去一個時間段內快閃記憶體中任務最繁重和最輕鬆的物理單元。
首先,對各個位置的表項內容的變化情況進行統計。遍歷整個邏輯映射表的各個位置,比較它們在各個歷史數據採樣點所採集到的表項內容,計算出過去一個歷史採樣階段該位置上對應的表項變化的次數。變化次數越少,則所在的區域越安靜;變化此時越多,則所在的區域越吵鬧。由表1-表5可以得知,邏輯地址最前面的十幾個邏輯塊所作區域相對比較吵鬧,而邏輯地址靠後的幾十個邏輯塊所在區域相對比較安靜。
接著,對具體每個表項的位置跳躍情況進行統計。按物理地址從小到大遍歷整個快閃記憶體的物理塊,根據邏輯映射表反向查找該物理塊對應的區域位置,比較它在各個歷史數據採樣點所採集到的映射位置,計算出過去一個歷史採樣階段內該物理塊在邏輯映射表內的位置跳躍次數。跳躍次數越多,則該物理單元任務越繁重;跳躍次數越少,則該物理單元任務越輕鬆。
根據以上兩個方面的統計結果,可以找到過去一個歷史採樣階段內最安靜的區域和任務最繁重的物理塊集合。然後,進行具體的磨損平衡的實施措施,將任務最繁重的物理塊由邏輯映射表當前的區域調到最安靜的區域,再將最安靜的區域原先對應的表項調到任務最繁重的物理塊原先所在的區域,然後再進行區域之間的數據交換。在實施完前面所述的磨損平衡措施後,此時的邏輯映射表如表6所示。因為在兩個相鄰的局部採樣階段內所找到的區域磨損程度特徵是相近的,在第i個採樣階段的終點實施的磨損平衡算法,能保證存儲器在經過第i+1個採樣階段的磨損,在第i+1個採樣階段終點實施磨損平衡措施後,仍能保持存儲器磨損均勻的狀態,從而保證在整個存儲器的生命周期內都能保持磨損平衡的狀態。
0x18c | 0x120 | 0xfc | 0xf6 | 0xf0 | 0xee | 0xe4 |
0xdc | 0xcc | 0xa0 | 0x89 | 0x88 | 0x85 | 0x66 |
0x3f1 | 0x3f0 | 0x44 | 0x3ee | 0x43 | 0x3ec | 0x3eb |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x3ed | 0x2fc | 0x2f9 | 0x3ef | 0x278 | 0x25c | 0x30c |
0x3f2 | 0x21c | 0x1fc | 0x3f3 | 0x17f | 0x187 | 0x16d |
........ | ........ | ........ | ........ | ........ | ........ | ........ |
0x100 | 0x222 | 0x2f0 | 0x16 | 0x3ff | 0x3fe | 0x3fd |
0x3fc | 0x3fb | 0x3fa | 0x3f9 | 0x3f8 | 0x3f7 | 0x3f6 |
0x64 | 0x50 | 0x3f5 | 0x45 | 0x3f4 | 0x40 | 0x33 |
參照圖8是整個生命周期內的磨損平衡算法的運行流程圖。從採樣階段的起點801開始,802就會按一定的採樣頻率在各個採樣點實時採集歷史數據,一直到採樣階段的終點803;採集完歷史數據後,804會對歷史數據進行具體分析,根據804的分析結果,再作進一步的決策和措施;805和806會判斷過去一個局部採樣階段內是否存在磨損操作或存在不均勻的磨損操作,如果不存在磨損操作或不存在不均勻的磨損操作,則不進行磨損平衡的實施措施,進入下個採樣階段;否則將會實施807的磨損平衡措施。
榮譽表彰
2017年12月11日,《一種基於局部採樣的存儲器的磨損平衡方法》獲得第十九屆中國專利優秀獎。