国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種閃存裝置的臟塊回收方法

      文檔序號:6758404閱讀:115來源:國知局
      專利名稱:一種閃存裝置的臟塊回收方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及半導(dǎo)體存儲領(lǐng)域,尤其涉及一種閃存裝置的臟塊回收方法。
      背景技術(shù)
      閃速存儲器(Flash Memory)具有高密度和良好的存取速度等優(yōu)點,是嵌入式領(lǐng)域應(yīng)用最為廣泛的存儲設(shè)備,屬于EEPROM(電擦除可編程只讀存儲器)類型。常用的閃存介質(zhì)有nand flash和nor flash兩種,他們都將存儲空間劃分為特定大小的擦除塊,如16KB、64KB等。它們在讀取方面與普通的SRAM存儲器類似,一般可以實現(xiàn)完全隨機的讀取,最大的不同在于寫操作方面。Flash存儲器的寫操作需要經(jīng)過“擦除——寫入”兩個操作過程。如果希望對某一個單元進行寫入時,首先必須對這個存儲單元所在的扇區(qū)(Sector)或塊(Block)執(zhí)行擦除操作,執(zhí)行擦除操作時一次性將一個擦除塊的位全部置為“1”,擦除操作成功完成后,整個扇區(qū)或塊的數(shù)據(jù)內(nèi)容都被清空,將被擦除的塊稱為臟塊,擦除操作過程稱為回收。然后對目的單元所在的扇區(qū)或塊執(zhí)行寫入操作,執(zhí)行寫操作時可以將單個位的“1”寫為“0”,但不可以將“0”寫成“1”。所以通常的寫閃存動作要先擦除整個擦除塊原來的內(nèi)容,再寫入新的數(shù)據(jù)。
      一般flash都提供了扇區(qū)擦除(Sector-Erase)、塊擦除(Block-Erase)和芯片擦除(Chip-Erase)三種擦除方式。Chip-Erase是把整個Flash擦除,內(nèi)容設(shè)置為1;Block-Erase和Sector-Erase分別以塊和扇區(qū)為單位刪除flash。flash的擦除次數(shù)是有限的,通常上限為每個塊可擦除100,000~1,000,000次。當(dāng)一個塊或扇區(qū)提前達到擦除次數(shù)的上限時將導(dǎo)致整個flash無法使用。為了避免任意一個塊在其它塊之前達到這個極限,文件系統(tǒng)或FMM(Flash Media manager,即閃存存儲管理,其作用主要是針對Flash自身的物理特性,利用一些特定的算法來提高Flash的使用效率,加快操作速度和管理Flash各單元的使用頻率)必須保證擦除次數(shù)在各擦除塊之間盡可能均勻分布,這一過程稱為“均衡磨損(WearLeveling)”。
      現(xiàn)在,人們都采取搬塊的方法,即先將原塊中的有效內(nèi)容搬到另一個塊,然后再將原塊擦除。其中,在向新塊搬遷和寫入數(shù)據(jù)的時候,都要通過加標(biāo)注信息,以做到掉電保護和恢復(fù)數(shù)據(jù)。但是,到底該選擇哪一個塊進行回收,不同廠家有不同的策略,但都只偏重某一方面,要么盡可能減少塊的擦除次數(shù),要么做到均勻擦除,以使所有物理塊的壽命均衡。這樣導(dǎo)致閃存設(shè)備的整體利用效率不高。

      發(fā)明內(nèi)容本發(fā)明的主要目的就是為了解決現(xiàn)有技術(shù)的問題,提供一種閃存裝置的臟塊回收方法,既能盡可能減少塊的擦除次數(shù),又能做到均勻擦除,以使所有物理塊的壽命均衡。
      為實現(xiàn)上述目的,本發(fā)明公開了一種閃存裝置的臟塊回收方法,包括寫扇區(qū)時進行的強制回收步驟和刪除扇區(qū)后進行的條件回收步驟。
      本發(fā)明的進一步改進是所述強制回收步驟包括以下步驟A1、閃存裝置接收寫操作指令;B1、閃存裝置中的閃存存儲管理模塊查找可寫入的空閑扇區(qū);C1、如果沒有足夠的空閑扇區(qū),則閃存存儲管理模塊查找出臟扇區(qū)最多的塊進行回收。
      所述條件回收步驟包括以下步驟A2、閃存裝置接收刪除指令,閃存存儲管理模塊對指定扇區(qū)進行刪除;B2、閃存存儲管理模塊隨機產(chǎn)生一0~99內(nèi)的隨機數(shù);C2、將該隨機數(shù)與預(yù)先設(shè)定的概率分界點進行比較,如果該隨機數(shù)大于或等于概率分界點,則執(zhí)行步驟E2,如果該隨機數(shù)小于概率分界點,則執(zhí)行步驟D2,其中概率分界點的取值范圍為1~100;D2、將各塊的臟扇區(qū)數(shù)與預(yù)先設(shè)定的臟扇區(qū)閾值進行比較,對于臟扇區(qū)數(shù)大于臟扇區(qū)閾值的塊執(zhí)行步驟F2,其中臟扇區(qū)閾值為小于每個塊所包含的扇區(qū)數(shù)的正整數(shù);E2、閃存存儲管理模塊查找出擦除次數(shù)最少的塊并執(zhí)行步驟F2;F2、對該塊進行回收。
      在步驟A2之后還包括將該被刪除扇區(qū)加上“臟”標(biāo)記的步驟。
      優(yōu)選的,所述概率分界點是97。
      在步驟D2或E2之后、步驟F2之前還包括返回該塊的塊號的步驟。
      在步驟F2之后還包括將該塊的擦除次數(shù)加1的步驟。
      本發(fā)明既能夠盡可能減少塊的擦除次數(shù),又能做到均勻擦除,以使所有物理塊的壽命均衡,從而延長了閃存裝置的使用壽命,理由如下首先,本方案采用兩種回收模式確定待回收的塊,強制回收下找臟扇區(qū)最多的塊進行回收。條件回收下,又細(xì)分了兩種情況,即在絕大部分概率下對臟扇區(qū)數(shù)達到臟扇區(qū)閾值的塊進行回收,這考慮了盡可能少的塊擦除次數(shù);而在很小機會下回收擦除次數(shù)最小的塊,這考慮了均勻磨損。
      其次,以上兩種回收模式又在不同的情況下使用。強制回收是在寫扇區(qū)過程中無空閑扇區(qū)可用情況下采用的,而在刪除扇區(qū)后才采用條件回收進行臟塊回收。
      最后,在條件回收模式下的概率分界點和臟扇區(qū)閾值,是經(jīng)過大量實驗得到的,都能代表閃存裝置正常使用情況,準(zhǔn)確、可靠。
      本發(fā)明的特征及優(yōu)點將通過實施例結(jié)合附圖進行詳細(xì)說明。

      圖1是閃存裝置的組成示意圖;圖2是閃存裝置存儲塊和扇區(qū)的組織結(jié)構(gòu)示意圖;圖3是本發(fā)明的條件回收流程圖;圖4是本發(fā)明的強制回收流程圖。
      具體實施方式閃存裝置包括MCU(微控制器)、存儲陣列、底層驅(qū)動模塊、閃存存儲管理模塊和文件系統(tǒng),如圖1所示,文件系統(tǒng)接收外部(例如外部應(yīng)用程序)的讀、寫、擦除請求,通過閃存存儲管理模塊、底層驅(qū)動模塊到達存儲陣列,MCU根據(jù)底層驅(qū)動模塊的設(shè)定輸出信號對存儲陣列執(zhí)行讀、寫、擦除操作。閃存存儲管理模塊負(fù)責(zé)完成各塊之間的擦寫次數(shù)均衡和壞塊管理等工作,它通過底層驅(qū)動模塊對存儲陣列執(zhí)行各種操作。存儲陣列包括多個塊,每個塊由多個扇區(qū)構(gòu)成,有時也被稱為“頁”,每個扇區(qū)分為存儲區(qū)和冗余區(qū),如圖2所示。每個塊中有一個特定區(qū)域存儲該塊的擦除次數(shù)、各扇區(qū)的狀態(tài)和各扇區(qū)的邏輯號等信息,例如各扇區(qū)是否被刪除而加上“臟”標(biāo)記、是否被標(biāo)記為空閑扇區(qū)等。
      為了盡可能減少塊的擦除次數(shù),又能做到均勻擦除,本實施例通過兩種回收方式來對塊進行回收,即強制回收和條件回收。強制回收用于寫操作時,當(dāng)沒有足夠的空閑扇區(qū)寫入數(shù)據(jù)的時候,閃存存儲管理模塊控制底層驅(qū)動模塊對存儲陣列中臟扇區(qū)數(shù)最多的塊執(zhí)行擦除。條件回收用于在執(zhí)行扇區(qū)刪除后,閃存存儲管理模塊根據(jù)設(shè)定的條件控制底層驅(qū)動模塊對存儲陣列中符合條件的塊執(zhí)行擦除。
      其中,條件回收的具體流程如圖3所示在步驟201,閃存存儲管理模塊接收外部的刪除指定扇區(qū)的信號,對指定的扇區(qū)進行刪除,并對該扇區(qū)加上“臟”標(biāo)記,表示該扇區(qū)內(nèi)的數(shù)據(jù)無效,具備了回收的必要條件;然后執(zhí)行步驟202;在步驟202,閃存存儲管理模塊隨機產(chǎn)生一正的數(shù)值,將該數(shù)值用100去除,取其余數(shù),則該余數(shù)是位于0~99內(nèi)的一個隨機數(shù),然后執(zhí)行步驟203;在步驟203,閃存存儲管理模塊判斷該隨機數(shù)是否小于預(yù)先設(shè)定的概率分界點,概率分界點一般為大于50的值,如果該隨機數(shù)小于概率分界點,則執(zhí)行步驟204;如果該隨機數(shù)大于或等于概率分界點,則執(zhí)行步驟205;在步驟205,閃存存儲管理模塊讀取各塊中的擦除次數(shù),將所有塊的擦除次數(shù)進行比較,查找出擦除次數(shù)最少的塊,將這個塊作為待回收的臟塊,然后執(zhí)行步驟207;在步驟204,閃存存儲管理模塊讀取各塊中的扇區(qū)是否有“臟”標(biāo)記,統(tǒng)計各塊中帶有“臟”標(biāo)記的扇區(qū)數(shù)量,然后執(zhí)行步驟206;在步驟206,判斷每個塊中的臟扇區(qū)數(shù)量是否大于或等于臟扇區(qū)閾值,如果臟扇區(qū)數(shù)量大于或等于臟扇區(qū)閾值,則將這個或這些塊作為待回收的臟塊,然后執(zhí)行步驟207;如果臟扇區(qū)數(shù)量小于臟扇區(qū)閾值,則執(zhí)行步驟210;在步驟207,返回待回收臟塊的塊號,然后執(zhí)行步驟208;在步驟208,閃存存儲管理模塊將與返回的塊號相對應(yīng)的塊的位全部置為“1”,對該塊執(zhí)行回收,然后執(zhí)行步驟209;在步驟209,閃存存儲管理模塊將執(zhí)行回收的塊的擦除次數(shù)加1,并保存在該塊的特定區(qū)域,然后執(zhí)行步驟210;在步驟210,結(jié)束條件回收操作。
      上述步驟中的概率分界點和臟扇區(qū)閾值都是實驗結(jié)論值,再結(jié)合數(shù)理統(tǒng)計分析方法和Flash實際運行效果確定,可通過以下方法取得兩個變化參數(shù)中首先暫定一個,比如先將概率分界點設(shè)為97,讓文件系統(tǒng)在不同的臟扇區(qū)閾值下(假定1Block=128Sectors,那么臟扇區(qū)閾值可取127、126、125、124等等)運行一段時間,打印每個塊的擦除次數(shù),并統(tǒng)計最大擦除次數(shù)、最小擦除次數(shù)、平均擦除次數(shù)。如此反復(fù),在平均擦除次數(shù)較小,并且最大擦除次數(shù)、最小擦除次數(shù)與平均擦除次數(shù)比較接近的情況下,確定臟扇區(qū)閾值。然后,改變概率分界點(可取99、98、97、96等等),重復(fù)上面的操作。最終得到一個實驗最佳值。
      上面得到的實驗最佳值還可用數(shù)學(xué)方法進行分析驗證。用上面的大量測量值構(gòu)造一個二元隨機函數(shù),以概率分界點和臟扇區(qū)閾值為兩變量,以平均擦除次數(shù)為函數(shù)值。利用數(shù)據(jù)分析軟件,如SPSS或SAS,得到理論最佳值,使得平均擦除次數(shù)最小。然后,比較理論最佳值與實驗最佳值,看兩者的偏差大小。
      概率分界點和臟扇區(qū)閾值確定后可輸入到閃存存儲管理模塊中。
      下面舉例對概率分界點和臟扇區(qū)閾值的應(yīng)用進行說明經(jīng)過實驗,先設(shè)定概率分界點為97。1個塊(block)是64KB,1個扇區(qū)(sector)按512字節(jié)計算的話,該塊一共有128個扇區(qū)。在此,設(shè)定臟扇區(qū)閾值為120,也就是說,只要一個block中臟扇區(qū)數(shù)等于或大于120,則說明該塊達到了條件回收的條件。隨機生成一個數(shù),用100去模,則得到0~99內(nèi)的數(shù)。若模后的數(shù)小于97,也即在97%的概率下,尋找塊內(nèi)臟扇區(qū)數(shù)等于或大于120的塊,找到后返回塊號進行回收,若沒找到,不做處理。反之,若模后的數(shù)大于或等于97,也即在3%的概率下,尋找擦除次數(shù)最小的塊,找到后返回塊號進行回收?;厥找淮卧搲K,將該塊的擦除次數(shù)加1,此值保存在塊的特定位置。
      強制回收的具體流程如圖4所示在步驟301,閃存存儲管理模塊接收外部的寫操作指令,然后執(zhí)行步驟302;在步驟302,閃存存儲管理模塊讀取各個扇區(qū)的狀態(tài),查找出空閑的扇區(qū),然后執(zhí)行步驟303;在步驟303,閃存存儲管理模塊判斷是否有足夠的空閑扇區(qū)供寫入,如果有則執(zhí)行步驟308,如果找遍整個存儲陣列都沒有足夠的空閑扇區(qū)供寫入,則執(zhí)行步驟304;在步驟304,閃存存儲管理模塊閃存存儲管理模塊讀取各塊中的扇區(qū)是否有“臟”標(biāo)記,統(tǒng)計各塊中帶有“臟”標(biāo)記的扇區(qū)數(shù)量,查找出臟扇區(qū)最多的塊,將該塊作為待回收的臟塊,然后執(zhí)行步驟305;在步驟305,返回待回收臟塊的塊號,然后執(zhí)行步驟306;在步驟306,閃存存儲管理模塊將與返回的塊號相對應(yīng)的塊的位全部置為“1”,對這個塊執(zhí)行回收,然后執(zhí)行步驟307;在步驟307,閃存存儲管理模塊將執(zhí)行回收的塊的擦除次數(shù)加1,并保存在該塊的特定區(qū)域,然后執(zhí)行步驟308;在步驟308,結(jié)束條件回收操作。
      在對塊進行回收后,在回收的可用塊內(nèi)寫入數(shù)據(jù),同時進行邏輯地址到物理地址對應(yīng)表的修改。在回收臟塊和寫數(shù)據(jù)的過程中,為防止意外掉電,都通過加標(biāo)記的方法,進行掉電后的數(shù)據(jù)恢復(fù)。
      權(quán)利要求
      1.一種閃存裝置的臟塊回收方法,其特征在于包括寫扇區(qū)時進行的強制回收步驟和刪除扇區(qū)后進行的條件回收步驟。
      2.如權(quán)利要求1所述的閃存裝置的臟塊回收方法,其特征在于所述強制回收步驟包括以下步驟A1、閃存裝置接收寫操作指令;B1、閃存裝置中的閃存存儲管理模塊查找可寫入的空閑扇區(qū);C1、如果沒有足夠的空閑扇區(qū),則閃存存儲管理模塊查找出臟扇區(qū)最多的塊進行回收。
      3.如權(quán)利要求2所述的閃存裝置的臟塊回收方法,其特征在于所述條件回收步驟包括以下步驟A2、閃存裝置接收刪除指令,閃存存儲管理模塊對指定扇區(qū)進行刪除;B2、閃存存儲管理模塊隨機產(chǎn)生一0~99內(nèi)的隨機數(shù);C2、將該隨機數(shù)與預(yù)先設(shè)定的概率分界點進行比較,如果該隨機數(shù)大于或等于概率分界點,則執(zhí)行步驟E2,如果該隨機數(shù)小于概率分界點,則執(zhí)行步驟D2,其中概率分界點的取值范圍為1~100;D2、將各塊的臟扇區(qū)數(shù)與預(yù)先設(shè)定的臟扇區(qū)閾值進行比較,對于臟扇區(qū)數(shù)大于臟扇區(qū)閾值的塊執(zhí)行步驟F2,其中臟扇區(qū)閾值為小于每個塊所包含的扇區(qū)數(shù)的正整數(shù);E2、閃存存儲管理模塊查找出擦除次數(shù)最少的塊并執(zhí)行步驟F2;F2、對該塊進行回收。
      4.如權(quán)利要求3所述的閃存裝置的臟塊回收方法,其特征在于在步驟A2之后還包括將該被刪除扇區(qū)加上“臟”標(biāo)記的步驟。
      5.如權(quán)利要求3所述的閃存裝置的臟塊回收方法,其特征在于所述隨機數(shù)的產(chǎn)生方法是生成一任意正整數(shù),然后用100去除,取其余數(shù)作為隨機數(shù)。
      6.如權(quán)利要求3所述的閃存裝置的臟塊回收方法,其特征在于所述概率分界點是97。
      7.如權(quán)利要求3至6中任一項所述的閃存裝置的臟塊回收方法,其特征在于在步驟D2或E2之后、步驟F2之前還包括返回該塊的塊號的步驟。
      8.如權(quán)利要求7所述的閃存裝置的臟塊回收方法,其特征在于在步驟F2之后還包括將該塊的擦除次數(shù)加1的步驟。
      全文摘要
      本發(fā)明公開了一種閃存裝置的臟塊回收方法,包括寫扇區(qū)時進行的強制回收步驟和刪除扇區(qū)后進行的條件回收步驟,其中強制回收是回收臟扇區(qū)最多的塊,條件回收又分為回收臟扇區(qū)數(shù)達到臟扇區(qū)閾值的塊和擦除次數(shù)最小的塊。利用本發(fā)明既能夠盡可能減少塊的擦除次數(shù),又能做到均勻擦除,以使所有物理塊的壽命均衡。
      文檔編號G11C16/14GK1815629SQ20051010185
      公開日2006年8月9日 申請日期2005年11月25日 優(yōu)先權(quán)日2005年11月25日
      發(fā)明者張建文 申請人:康佳集團股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1