專利名稱:跟蹤非易失性存儲器系統(tǒng)中最不頻繁擦除區(qū)塊的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大致涉及海量數(shù)字數(shù)據(jù)存儲系統(tǒng)。更明確地說,本發(fā)明涉及使與非易失性存儲系統(tǒng)中的存儲區(qū)域相關(guān)聯(lián)的損耗大體上在所有存儲區(qū)域中擴展的系統(tǒng)和方法。
背景技術(shù):
歸因于存儲系統(tǒng)壓縮的物理尺寸和非易失性存儲器可反復重編程的能力,非易失性存儲器系統(tǒng)(例如閃存存儲系統(tǒng))的使用日漸增長。閃存存儲系統(tǒng)的壓縮的物理尺寸促使在裝置中使用所述存儲系統(tǒng)變得越來越流行。使用閃存存儲系統(tǒng)的裝置包括(但不限于)數(shù)字相機、數(shù)字攝像機、數(shù)字音樂播放器、手提式個人計算機和全球定位裝置。對閃存存儲系統(tǒng)中所含的非易失性存儲器進行反復重編的能力使得使用和再使用閃存存儲系統(tǒng)成為可能。
一般來說,閃存存儲系統(tǒng)可包括閃存卡和閃存芯片組。閃存芯片組一般包括閃存組件和控制器組件。通??膳渲瞄W存芯片組組裝成一個嵌入式系統(tǒng)。所述組裝件或主機系統(tǒng)的制造商通常要求組件形式的閃存以及其它組件,然后將閃存和其它組件組裝成一個主機系統(tǒng)。
盡管非易失性存儲器,或者更具體地說閃存系統(tǒng)中的閃存存儲區(qū)塊,可以反復地編程及擦除,但是該區(qū)塊損壞之前,也就是存儲器開始變小之前每一區(qū)塊或物理位置僅可擦除一定的次數(shù)。即每一區(qū)塊都具有編寫和擦除循環(huán)極限。在某些存儲器中,在認為區(qū)塊不能使用之前可以將區(qū)塊擦除約一萬次。在其他存儲器中,在認為區(qū)塊損壞之前該區(qū)塊可擦除高達約十萬次或者甚至一百萬次。當一個區(qū)塊損壞時,由此導致閃存系統(tǒng)的整個存儲容量的一部分的使用損失或性能顯著下降,例如存儲數(shù)據(jù)損失或不能存儲數(shù)據(jù)可能對閃存系統(tǒng)的用戶產(chǎn)生不利影響。
在閃存系統(tǒng)內(nèi)的區(qū)塊上或物理位置上的損耗根據(jù)每一個區(qū)塊的編寫次數(shù)而變化。如果將一個區(qū)塊,更一般地說一個存儲元件編寫一次就不能再有效地重編程,那么編寫和擦除循環(huán)的次數(shù)以及由此與所述區(qū)塊相關(guān)聯(lián)的損耗通常相對低。然而,如果重復寫入和擦除(例如循環(huán))一個區(qū)塊,則與所述區(qū)塊相關(guān)聯(lián)的損耗通常將相對高。當主機(例如訪問或使用閃存系統(tǒng)的系統(tǒng))使用邏輯區(qū)塊地址(LBA)訪問存儲在閃存系統(tǒng)中的數(shù)據(jù)時,所屬領(lǐng)域的技術(shù)人員已了解如果主機重復地使用相同LBA寫入和重寫數(shù)據(jù),則在閃存系統(tǒng)內(nèi)的相同物理位置或區(qū)塊重復地寫入和擦除。
當某些區(qū)塊已經(jīng)實際損壞而其它區(qū)塊相對地未損耗時,已經(jīng)損壞區(qū)塊的存在通常使閃存系統(tǒng)的整體性能大打折扣。除了與損壞的區(qū)塊自身相關(guān)聯(lián)的性能降級之外,當未損壞區(qū)塊的數(shù)目不足以用于存儲所要的數(shù)據(jù)時,閃存系統(tǒng)的整體性能也會大打折扣。通常,當閃存系統(tǒng)中存在臨界數(shù)目的損壞區(qū)塊時,甚至當閃存系統(tǒng)中的許多其它單元相對地未損壞時認為閃存系統(tǒng)已經(jīng)不可用。當認為包括相對數(shù)目的相對損壞的區(qū)塊的閃存系統(tǒng)已經(jīng)不可用時,實際上浪費了許多與該閃存系統(tǒng)相關(guān)聯(lián)的資源。
為了使閃存系統(tǒng)中的區(qū)塊盡可能均勻損耗,通常執(zhí)行損耗平衡操作。所屬領(lǐng)域的技術(shù)人員將會了解,通常配置損耗平衡操作以允許與特定LBA相關(guān)聯(lián)的物理位置或區(qū)塊發(fā)生改變,使得相同的LBA不總是與相同的物理位置或區(qū)塊相關(guān)聯(lián)。通過改變LBA的區(qū)塊關(guān)聯(lián),就會使一個特定區(qū)塊在其它區(qū)塊損壞前就完全損壞的可能性降低。
一種常規(guī)損耗平衡處理涉及交換用戶或主機LBA的兩個相對大的部分所映射到的物理位置。即,交換與存儲單元的相對大的區(qū)相關(guān)聯(lián)的所述LBA。通過來自用戶系統(tǒng)的手動指令(例如通過使用主機)來啟動這一交換,且因此所述交換對用戶不透明。而且,涉及在存儲單元的兩個相對大的區(qū)之間移動數(shù)據(jù)的交換操作耗時,且因此效率低。此外,通過消耗與整個閃存系統(tǒng)相關(guān)的重要資源的相對長持續(xù)時間的交換操作,對整個閃存系統(tǒng)的性能會產(chǎn)生不利影響。所屬領(lǐng)域的技術(shù)人員應了解,從第一位置移動數(shù)據(jù)通常涉及將所述數(shù)據(jù)復制到另一位置和從第一位置擦除所述數(shù)據(jù)。
其它常規(guī)的損耗平衡處理涉及允許區(qū)塊損耗。一旦區(qū)塊已實際損壞,存儲有扇區(qū)的區(qū)塊已經(jīng)損壞或已經(jīng)變得不可用,通過將與所述扇區(qū)相關(guān)聯(lián)的地址映射到備用區(qū)域可重新指派已指派到區(qū)塊的扇區(qū)。由于備用區(qū)域或區(qū)塊的數(shù)目有限且重要,所以并非始終都存在與不可用區(qū)塊相關(guān)聯(lián)的扇區(qū)可映射的備用區(qū)域。另外,僅在區(qū)塊變得不可用時有效重新映射扇區(qū)通常使整個閃存系統(tǒng)的性能降級。
因此,需要一種用于有效地且大體上“透明地”(transparently)在閃存存儲系統(tǒng)中執(zhí)行損耗平衡的方法和設備。即,需要一種損耗平衡處理,其促使與閃存存儲系統(tǒng)相關(guān)聯(lián)的物理位置的損耗更加平均而不需要顯著使用計算資源。
發(fā)明內(nèi)容
本發(fā)明揭示一種在一非易失性存儲器系統(tǒng)中執(zhí)行損耗平衡的方法和設備。根據(jù)本發(fā)明的一個方面,一種用于處理存儲器系統(tǒng)的非易失性存儲器中包括的元件的方法包括獲得與復數(shù)個擦除元件相關(guān)聯(lián)的擦除計數(shù)并且將若干元件組成第一組。每個元件都具有關(guān)聯(lián)擦除計數(shù),所述計數(shù)大體指示該元件已經(jīng)被擦除的次數(shù)。將所述第一組的所述若干擦除元件分組通常包括選擇所述復數(shù)個元件中包括的元件,所述擦除元件具有與所述復數(shù)個元件相關(guān)聯(lián)的擦除計數(shù)中的最低關(guān)聯(lián)擦除計數(shù)。所述方法也包括將與所述第一組關(guān)聯(lián)的所述擦除計數(shù)存儲到大體位于一表格內(nèi)的存儲器組件中。在一個實施例中,根據(jù)與每個元件關(guān)聯(lián)擦除計數(shù)將第一組中的元件分類。在此實施例中,所述方法也可以包括識別具有與第一組關(guān)聯(lián)的最低擦除計數(shù)的第一組中包括的擦除元件,從所述第一組中分離所述元件,并且使復數(shù)個元件的不同擦除元件與所述第一組關(guān)聯(lián)。
為了維護一組損耗元件中非易失性存儲器的已損耗的元件(例如擴充區(qū)塊),通過防止已損耗元件被分配使用直到損耗較小的元件最終變的損耗更大來管理已損耗元件的損耗。因為有效地防止了擦除更頻繁的元件的使用及由此再次擦除直到其它元件被更多地使用和擦除,所以可使所有元件的損耗平均化,當一個含有無效數(shù)據(jù)的區(qū)塊被擦除時或者當需要一個區(qū)塊代替大體已損耗區(qū)塊時,如果將具有相對低的擦除計數(shù)的區(qū)塊用作備用區(qū)塊,那么通常可延長媒體的整體壽命。在使用存儲于系統(tǒng)存儲器中的表格有效跟蹤的一組最小擦除區(qū)塊中維持備用區(qū)塊有助于分配損耗較小的區(qū)塊覆蓋損耗較大的區(qū)塊。
根據(jù)本發(fā)明的另一方面,存儲器系統(tǒng)包括一個存儲表格的第一存儲器,配置所述表格以包括與具有小于平均擦除計數(shù)的關(guān)聯(lián)擦除計數(shù)的第一組擦除存儲元件關(guān)聯(lián)的項。配置第一組存儲單元的每個存儲單元的關(guān)聯(lián)擦除計數(shù)器以大體指示存儲單元擦除的次數(shù)。所述存儲器系統(tǒng)也包括一個包括復數(shù)個存儲元件的第二存儲器,所述復數(shù)個元件包括所述第一組存儲元件。使用與所述復數(shù)個存儲元件關(guān)聯(lián)的擦除計數(shù)器判斷平均擦除計數(shù)。最后,存儲器系統(tǒng)包括可以訪問第一存儲器和第二存儲器的處理器。在一個實施例中,使用所述表格可識別第一組存儲單元。
根據(jù)本發(fā)明的又一個方面,一種用于管理包括復數(shù)個區(qū)塊的存儲器的方法包括識別所述復數(shù)個區(qū)塊中包含的一組擦除區(qū)塊,并且識別所述擦除區(qū)塊組中包含的第一組擦除區(qū)塊。第一組擦除區(qū)塊包括具有與所述擦除區(qū)塊組中大體所有其它存儲區(qū)塊相比較低擦除計數(shù)的擦除區(qū)塊。在一個存儲器組件中創(chuàng)建一個包含復數(shù)個項的結(jié)構(gòu)。所述項包括第一組中包含的擦除區(qū)塊的擦除計數(shù)。使用所述已分類項存儲所述項并且識別第一區(qū)塊。在第一組擦除區(qū)塊中包含的其它擦除區(qū)塊之前配置第一區(qū)塊以從第一組擦除區(qū)塊中移除。換句話說,如果需要所述第一區(qū)塊可為從第一組中換出的第一區(qū)塊。
在一個實施例中,將所述復數(shù)個項分類包括使用所述第一組中包含的擦除區(qū)塊的擦除計數(shù)將所述復數(shù)個項分類。在此實施例中,使用已分類項識別第一區(qū)塊可包括識別具有與第一組中包括的大體所有其它擦除區(qū)塊相比較低擦除計數(shù)的第一區(qū)塊。
通過閱讀以下詳細描述及研究附圖的各種圖,本發(fā)明的這些和其它優(yōu)點將變得顯而易見。
通過結(jié)合附圖參考以下描述可最佳理解本發(fā)明,其中圖1a是根據(jù)本發(fā)明的一個實施例包括非易失性存儲器裝置的通用主機系統(tǒng)的圖形表示。
圖1b是根據(jù)本發(fā)明的一個實施例的存儲器裝置(例如圖1a的存儲器裝置120)的圖形表示。
圖2是根據(jù)本發(fā)明的一個實施例的閃存的一部分的圖形表示。
圖3是根據(jù)本發(fā)明的一個實施例說明處理關(guān)于一個閃存系統(tǒng)的初始化請求的步驟的處理流程圖。
圖4是根據(jù)本發(fā)明的一個實施例說明與處理靜態(tài)區(qū)塊的一種方法相關(guān)聯(lián)的步驟的處理流程圖。
圖5a是根據(jù)本發(fā)明的一個實施例的系統(tǒng)存儲器的圖形結(jié)構(gòu)圖表示。
圖5b是根據(jù)本發(fā)明的一個實施例的正常區(qū)塊、最不頻繁擦除區(qū)塊和最頻繁擦除區(qū)塊的圖形表示。
圖6是根據(jù)本發(fā)明的一個實施例執(zhí)行區(qū)塊交換或者更新系統(tǒng)存儲器中的整個存儲器系統(tǒng)以使區(qū)塊損耗更加平均的方法的圖形表示。
圖7是根據(jù)本發(fā)明的一個實施例的系統(tǒng)架構(gòu)的圖形結(jié)構(gòu)圖表示。
具體實施例方式
盡管在區(qū)塊損壞前每個區(qū)塊通常僅可被擦除有限次,但閃存存儲系統(tǒng)中的非易失性存儲器存儲區(qū)塊可以反復編寫和擦除。當區(qū)塊損壞時,與包括損壞區(qū)塊的閃存存儲系統(tǒng)的總存儲量的部分相關(guān)聯(lián)的性能會發(fā)生相對地顯著降級,而且存儲在該部分的數(shù)據(jù)會丟失,或不能在該部分存儲數(shù)據(jù)。
為了使區(qū)塊在閃存存儲系統(tǒng)中的損壞盡可能平均,要更為平均地利用區(qū)塊。通過跟蹤每個區(qū)塊擦除的次數(shù)(例如通過利用擦除計數(shù)),可以更平均地使用系統(tǒng)中的存儲器。一種擦數(shù)計數(shù)管理技術(shù)可以存儲擦除計數(shù),其跟蹤在與區(qū)塊相關(guān)聯(lián)的冗余區(qū)域中的特定區(qū)塊的擦除次數(shù)。可在系統(tǒng)存儲器中建立表格,其大體上使區(qū)塊在使用時與具有相對高的擦除計數(shù)的區(qū)塊和具有相對低的擦除計數(shù)的區(qū)塊有效隔離。當擦除使用中的區(qū)塊時,該區(qū)塊可適當?shù)乇弧疤砑印钡骄哂邢鄬Ω卟脸嫈?shù)的區(qū)塊表或具有相對低擦除計數(shù)的區(qū)塊表中。同樣,可從具有相對高擦除計數(shù)的區(qū)塊表或者具有相對低擦除計數(shù)的區(qū)塊表中將區(qū)塊“移動”到區(qū)塊映射表,即,使用一組區(qū)塊表以大體上代替從區(qū)塊映射表重新指派的任何區(qū)塊。
通過對區(qū)塊進行分類,由于更有效地管理每個區(qū)塊的使用而使與區(qū)塊相關(guān)聯(lián)的損耗平均化從而可以更平均地利用區(qū)塊。另外,將區(qū)塊分類成表格使得容易識別具有低擦除計數(shù)的區(qū)塊和具有高擦除計數(shù)的區(qū)塊成為可能,而且因此不必利用大量的計算資源。因此,損耗平衡變得相對有效。結(jié)果大體上延長了閃存系統(tǒng)的壽命而沒有顯著影響閃存系統(tǒng)的性能。
閃存系統(tǒng),或者更一般而言,非易失性存儲器系統(tǒng)裝置通常包括閃存卡和芯片組,典型地,閃存系統(tǒng)與一主機系統(tǒng)一同使用,以使所述主機系統(tǒng)可將數(shù)據(jù)寫入閃存系統(tǒng)或者從閃存系統(tǒng)讀取數(shù)據(jù)。然而,某些閃存系統(tǒng)包括嵌入式閃存系統(tǒng)和軟件,該軟件在主機上執(zhí)行來大體上充當嵌入式閃存的控制器。先參考圖1a,將描述包括一個非易失性存儲器裝置(例如,緊湊快閃卡或嵌入式系統(tǒng))的一般主機系統(tǒng)。一主機或計算機系統(tǒng)100通常包括系統(tǒng)總線104,總線104允許微處理器108、隨機訪問存儲器(RAM)112和輸入/輸出電路116進行通信。應了解,主機系統(tǒng)100一般可以包括其它組件,例如顯示裝置和網(wǎng)絡連接裝置(出于說明的目的而未展示)。
一般而言,主機系統(tǒng)100能夠獲取以下信息,其包括(但不限于)靜態(tài)圖像信息、音頻信息和視頻圖像信息。這些信息可以實時獲取,且能以無線方式傳輸?shù)街鳈C系統(tǒng)100。雖然主機系統(tǒng)100大體上可以是任何系統(tǒng),但主機系統(tǒng)100一般是諸如數(shù)字相機、攝像機、蜂巢通信裝置、音頻播放器或視頻播放器等系統(tǒng)。然而,應了解主機系統(tǒng)100通常大體上可以是存儲數(shù)據(jù)或信息并檢索數(shù)據(jù)或信息的任何系統(tǒng)。
應了解,主機系統(tǒng)100也可以是只能獲取數(shù)據(jù)或只能檢索數(shù)據(jù)的系統(tǒng)。即,主機系統(tǒng)100可以是存儲數(shù)據(jù)的專用系統(tǒng),或主機系統(tǒng)100可以是讀取數(shù)據(jù)的專用系統(tǒng)。舉例而言,主機系統(tǒng)100可以是經(jīng)配置僅用于寫入或存儲數(shù)據(jù)的存儲寫入器?;蛘撸鳈C系統(tǒng)100可以是例如MP3播放器的裝置,其通常經(jīng)配置來讀取或檢索數(shù)據(jù)但不獲取數(shù)據(jù)。
非易失性存儲器裝置120(在一個實施例中是一個可移除非易失性存儲裝置)經(jīng)配置與總線104連接來存儲信息。一種可選的輸入/輸出塊116可以允許非易失性存儲器裝置120與總線104間接連接。所屬領(lǐng)域的技術(shù)人員將了解,當輸入/輸出塊116存在時,其用于減少總線104上的負載。非易失性存儲器裝置120包括非易失性存儲器124和一可選的存儲器控制系統(tǒng)128。在一個實施例中,可在一個單一芯片或電路小片上構(gòu)建非易失性存儲器裝置120?;蛘撸稍谝粋€多芯片模塊上或在多個離散組件上構(gòu)建非易失性存儲裝置120,所述離散組件可以形成一個芯片組且可以一起使用作為非易失性存儲器裝置120。下文將參照圖1b更詳細地描述非易失性存儲器裝置120的一個實施例。
配置非易失性存儲器124(例如)如NAND閃存的閃存,以存儲數(shù)據(jù)使得需要時可以訪問和讀取數(shù)據(jù)。盡管應了解非易失性存儲器124中的某些數(shù)據(jù)是不可擦除的,但是適當時可以擦除存儲在非易失性存儲器124上的數(shù)據(jù)。一般可通過存儲器控制系統(tǒng)128控制存儲數(shù)據(jù)、讀取數(shù)據(jù)和擦除數(shù)據(jù)的過程,或當沒有存儲器控制系統(tǒng)128時,可通過由微處理器108執(zhí)行的軟件來控制??梢怨芾矸且资源鎯ζ?24的運行,使得通過實質(zhì)促使非易失性存儲器124的區(qū)大體平均的損壞而充分地最大化非易失性存儲器124的壽命。
通常將非易失性存儲器裝置120描述為包括一可選的存儲器控制系統(tǒng)128(即,控制器)。通常,非易失性存儲器裝置120可以包括用于非易失性存儲器124和存儲器控制系統(tǒng)128(即,控制器)功能的獨立芯片。舉例而言,雖然包括(但不限于)PC卡、壓縮快閃卡、多媒體卡和安全數(shù)字卡的非易失性存儲器裝置包括可以在獨立芯片上實施的控制器,但是其他非易失性存儲器裝置可以不包括在獨立芯片上實施的控制器。在一個實施例中,如所屬領(lǐng)域的技術(shù)人員將會了解,其中非易失性存儲器裝置120不包括獨立的存儲器和控制器芯片,可將存儲器和控制器功能集成在一個單一芯片中?;蛘?,可由微處理器108提供存儲器控制系統(tǒng)128的功能,例如在一個實施例中非易失性存儲器裝置120不包括如上文所討論的存儲器控制器128。
參考圖1b,根據(jù)本發(fā)明的一個實施例將更詳細地描述非易失性存儲器裝置120。如上所述,非易失性存儲器裝置120包括非易失性存儲器124且可包括存儲器控制系統(tǒng)128。雖然當存儲器124是一個嵌入式NAND裝置時,例如,非易失性存儲器裝置120可不包括控制系統(tǒng)128,但是存儲器124和控制系統(tǒng)128,或控制器,可以是非易失性存儲器裝置120的主要組件。存儲器124可以是在半導體基板上形成的存儲器單元的陣列,其中通過在存儲器單元的個別存儲元件上存儲兩個或兩個以上等級的電荷中的一個,一個或一個以上的位數(shù)據(jù)存儲在個別的存儲器單元上。對于所述系統(tǒng)而言,非易失性快閃電可擦除可編程只讀存儲器(EEPROM)是用于所述系統(tǒng)的普通類型存儲器的一個實例。
當控制系統(tǒng)128存在時,其通過總線15與正在使用存儲器系統(tǒng)來存儲數(shù)據(jù)的主機計算機或其它系統(tǒng)通信??偩€15通常是圖1a的總線104的一部分??刂葡到y(tǒng)128還控制存儲器124(其可包括存儲器單元陣列11)的運行來寫入由主機提供的數(shù)據(jù),讀取由主機請求的數(shù)據(jù)并執(zhí)行操作存儲器124的各種內(nèi)務管理功能??刂葡到y(tǒng)128通常包括一個通用微處理器,其具有關(guān)聯(lián)的非易失性軟件存儲器、各種邏輯電路及其相似物。通常還包括用于控制特定例行程序的性能的一個或一個以上狀態(tài)機。
一般由控制系統(tǒng)128或微處理器108通過地址解碼器17尋址存儲器單元陣列11。解碼器17向門極和陣列11的位線施加校正電壓以將數(shù)據(jù)編寫到由控制系統(tǒng)128尋址的一存儲器單元組中,自所述存儲器單元組讀取數(shù)據(jù)或擦除所述存儲器單元組。額外的電路19包括控制施加到陣列元件的電壓的編程驅(qū)動器,其取決于待編寫入尋址的單元組的數(shù)據(jù)。電路19還包括感應放大器和從尋址存儲器單元組讀取數(shù)據(jù)所必要的其它電路。待編寫入陣列11的數(shù)據(jù)或最近從陣列11讀取的數(shù)據(jù)通常存儲在控制系統(tǒng)128內(nèi)的緩存21中??刂葡到y(tǒng)128通常還含有用于臨時存儲命令和狀態(tài)數(shù)據(jù)等的各種寄存器。
陣列11被劃分為大量的區(qū)塊0-N存儲器單元。對于快閃EEPROM系統(tǒng)來說,普遍將區(qū)塊作為最小擦除單元。也就是說,每個區(qū)塊包含最小數(shù)目的一起擦除存儲器單元。如圖2所示,每個區(qū)塊通常被劃分為若干頁面。頁面通常是編寫的最小單元。即,一個基本的編寫操作將數(shù)據(jù)寫入存儲器單元的最小量一個頁面中或從其中讀取數(shù)據(jù)。數(shù)據(jù)的一個或一個以上區(qū)段通常存儲在每個頁面內(nèi)。如圖1b所示,一個區(qū)段包括用戶數(shù)據(jù)和耗用數(shù)據(jù)。耗用數(shù)據(jù)通常包括錯誤校正代碼(ECC),從頁面的用戶數(shù)據(jù)和耗用數(shù)據(jù)計算出所述錯誤校正代碼。當將數(shù)據(jù)編入陣列11時,控制系統(tǒng)128的一部分23計算ECC,且當從陣列11讀取數(shù)據(jù)時也會檢查ECC?;蛘?,將ECC存儲在與其所從屬的用戶數(shù)據(jù)不同的頁面或不同的區(qū)塊中。
用戶數(shù)據(jù)的區(qū)段通常是512個字節(jié),對應于磁盤驅(qū)動中的區(qū)段的大小。耗用數(shù)據(jù)通常是附加的16個字節(jié)。數(shù)據(jù)的一個區(qū)段最一般包括在每個頁面中,但兩個或兩個以上的區(qū)段可形成一個頁面。任何數(shù)目的頁面通??尚纬梢粋€區(qū)塊。舉例而言,可由8個到512個、1024個頁面或更多的頁面形成一個區(qū)塊。選擇一定數(shù)目的區(qū)塊來為存儲器系統(tǒng)提供所要的數(shù)據(jù)存儲容量。陣列11通常被劃分為一些子陣列(未圖示),每個子陣列含有一定比例的區(qū)塊,其在某種程度上相互獨立運作以增加執(zhí)行各種存儲器操作的并行度。在美國專利第5,890,192號中描述了使用復數(shù)個子陣列的實例,其全文以引用的方式并入本文中。
當非易失性存儲器124的一個特定區(qū)段(例如存儲元件)連續(xù)地編寫時,例如重復地寫入和擦除時,與并非連續(xù)編寫的區(qū)域相比所述特定區(qū)域的損耗通常較快。為了有效地“平均化”非易失性存儲器124中的不同區(qū)域的損耗,可大體上自動地執(zhí)行損耗平衡使得連續(xù)編寫的區(qū)域進行較少的編寫,而不連續(xù)編寫的區(qū)域進行更多的編寫。
一般地,為了執(zhí)行損耗平衡,將一個被重復地編寫區(qū)塊(例如,與物理位置相關(guān)聯(lián)的一組區(qū)段)與未重復編寫的物理位置相關(guān)聯(lián)的區(qū)塊進行交換。即,已編寫且因此重復擦除的物理區(qū)塊可以與已編寫并更不經(jīng)常擦除的物理區(qū)塊進行交換。
在本發(fā)明的一個實施例中,為了易于判斷一個特定的物理區(qū)塊是否經(jīng)過反復編寫和擦除,可存儲一個對應所述區(qū)塊的擦除計數(shù)。即,維持跟蹤一區(qū)塊擦除次數(shù)的計數(shù)器且在每次擦除區(qū)塊時增加。這樣的擦除計數(shù)可以用來促進判斷一個特定的區(qū)塊是否應該和一個不經(jīng)常擦除的區(qū)塊發(fā)生交換。圖2是根據(jù)本發(fā)明的一個實施例的一部分閃存的圖形表示。閃存200可被劃分為復數(shù)個頁面204。一般含有大約512個字節(jié)用戶數(shù)據(jù)的每個頁面204實際上包括一個冗余區(qū)域206,例如頁面204a包括冗余區(qū)域206a。每個冗余區(qū)域206或耗用區(qū)域可包括約16個字節(jié)的信息,該信息通常包括(但不限于)群識別符216、更新索引212和擦除計數(shù)214。
通常,區(qū)塊210中可包括任何數(shù)目的頁面204。盡管應了解區(qū)塊210中包括的頁面數(shù)204可以廣泛變化,但是為了便于說明,展示了包括在區(qū)塊210中的頁面204a、204b。在所述實施例中,區(qū)塊210可經(jīng)配置以包括約32個頁面。舉例而言,當閃存200包括約512兆位(MB)時,閃存200可實際被劃分為約4096個區(qū)塊,每個區(qū)塊具有32個頁面。
如上文提到的,每次從關(guān)聯(lián)的區(qū)塊擦除用戶數(shù)據(jù)時擦除計數(shù)214會增加。舉例而言,與區(qū)塊210相關(guān)聯(lián)的擦除計數(shù)214會在每次從區(qū)塊210擦除數(shù)據(jù)增加。因為區(qū)塊210中所包括的每個頁面204a、204b通常具有擦除計數(shù)214,所以與每個頁面204a、204b相關(guān)聯(lián)的擦除計數(shù)214會在擦除區(qū)塊210時增加。當擦除含有數(shù)據(jù)的區(qū)塊時,數(shù)據(jù)區(qū)域和冗余區(qū)域通常被擦除或清空。將擦除區(qū)塊添加到備用區(qū)塊庫中,其含有與其它表格的擦除區(qū)塊相比含有較小擦除計數(shù)的擦除區(qū)塊。備用區(qū)塊表實質(zhì)上為最不頻繁擦除區(qū)塊表。在本發(fā)明的一個實施例中,將具有相對大擦除計數(shù)的擦除區(qū)塊添加到含有擦除區(qū)塊的庫,所述擦除區(qū)塊具有比其它表中所含擦除區(qū)塊更大的擦除計數(shù)。所述庫(即含有具有更大擦除計數(shù)的擦除區(qū)塊的庫)為最頻繁擦除區(qū)塊表。剛擦除的區(qū)塊的擦除計數(shù)增加1,并且根據(jù)所述擦除計數(shù)的值將其保存在最不頻繁擦除區(qū)塊表或者最頻繁擦除區(qū)塊表中。
在初始化請求期間可訪問擦除計數(shù)(例如擦除計數(shù)214)。當出現(xiàn)下列情況時,例如當向系統(tǒng)(例如包括嵌入式閃存的系統(tǒng))供電時,當系統(tǒng)內(nèi)的備用區(qū)塊運行減慢時,當用戶發(fā)出平衡區(qū)塊分配的請求時,以及當用戶發(fā)出使區(qū)塊使用更平均的請求時,可發(fā)出初始化請求。圖3是根據(jù)本發(fā)明的一個實施例說明處理關(guān)于一個閃存系統(tǒng)的初始化請求的步驟的處理流程圖。一般來說,可以通過用戶開始或通過與閃存系統(tǒng)相關(guān)聯(lián)的控制器,例如定期地或當滿足觸發(fā)條件時大體上自動地開始初始化請求。響應初始化請求的程序300從步驟304開始,其中實際接收初始化請求。通過與待初始化的閃存通信的處理器或控制器可以接收初始化請求。例如,可通過用戶在打開主機電源時或當平衡區(qū)塊分配時提出此請求。
一旦接收初始化請求,在步驟306中獲得平均擦除計數(shù)。在一個實施例中,平均擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中,將其寫入與所述系統(tǒng)相關(guān)聯(lián)的NAND存儲器中。含有平均擦除計數(shù)的擦除計數(shù)區(qū)塊和每一區(qū)塊的擦除計數(shù)存儲于閃存的一個區(qū)塊中。應了解當創(chuàng)建擦除計數(shù)區(qū)塊時,例如,當開始格式化所述系統(tǒng)時,通常將平均擦除計數(shù)和每一區(qū)塊的擦除計數(shù)初始化為零值。獲得平均擦除計數(shù)之后,獲得在該系統(tǒng)中的實質(zhì)上所有區(qū)塊的擦除計數(shù)。如上文關(guān)于圖2所述,含有數(shù)據(jù)的特定區(qū)塊的擦除計數(shù)存儲在與該區(qū)塊相關(guān)聯(lián)的冗余區(qū)域中存儲。因此,含有數(shù)據(jù)的大體所有區(qū)塊的擦除計數(shù)可以包括訪問與每個區(qū)塊相關(guān)聯(lián)的冗余區(qū)域,并且在初始化請求時將每個擦除計數(shù)存儲在該擦除計數(shù)區(qū)塊中。
在初始化請求的處理完成后,在擦除計數(shù)區(qū)塊中更新擦除區(qū)塊的擦除計數(shù)并非必要。因為擦除區(qū)塊的冗余區(qū)域已被擦除,所以擦除計數(shù)區(qū)塊一般保持其值。當關(guān)閉整個系統(tǒng)時,產(chǎn)生一個終止請求,使擦除計數(shù)區(qū)塊更新以包含大體上所有區(qū)塊的最新擦除計數(shù)。從最不頻繁擦除區(qū)塊表中檢索屬于最不頻繁擦除區(qū)塊的擦除區(qū)塊的擦除計數(shù)。從最頻繁擦除區(qū)塊表中檢索屬于最頻繁擦除區(qū)塊的擦除區(qū)塊的擦除計數(shù)??蓮牟脸嫈?shù)區(qū)塊中檢索大體任何剩余擦除區(qū)塊的擦除計數(shù)。
在步驟320中,在NAND存儲器中分配區(qū)塊映射表。所屬領(lǐng)域的技術(shù)人員應了解,可以配置區(qū)塊映射表以提供在邏輯區(qū)塊地址(LBA)與物理區(qū)塊地址之間的映射。此外,在步驟320中也分配最頻繁擦除區(qū)塊表和最不頻繁擦除區(qū)塊表。
通常確定最頻繁擦除區(qū)塊表的大小或另外配置最頻繁擦除區(qū)塊表以有效地持有與最頻繁擦除的擦除區(qū)塊有關(guān)的信息。即,配置最頻繁擦除區(qū)塊以持有在系統(tǒng)中有關(guān)具有最高擦除計數(shù)的擦除區(qū)塊的信息,例如擦除計數(shù)和映射信息。類似地,通常確定最不頻繁擦除區(qū)塊表的大小或另外配置最頻繁擦除區(qū)塊表以有效地容納具有最低擦除計數(shù)的擦除區(qū)塊的信息。盡管最頻繁擦除區(qū)塊表的大小和最不頻繁擦除區(qū)塊表的大小會有很大變化,但是所述大小取決于待指派為最頻繁擦除的區(qū)塊數(shù)和待指派為最不頻繁擦除的區(qū)塊數(shù)。通常,一般確定擦除最頻繁的擦除區(qū)塊表的大小能容納比最不頻繁擦除區(qū)塊表更小的擦除區(qū)塊的信息。舉例而言,可以確定最不頻繁擦除區(qū)塊表的大小以容納大約七十個擦除區(qū)塊的信息,而確定最頻繁擦除區(qū)塊表的大小以容納大約十八個擦除區(qū)塊的信息?;蛘?,可以確定最不頻繁擦除區(qū)塊表的大小以容納大約五十個擦除區(qū)塊的信息,而確定最頻繁擦除區(qū)塊表的大小以容納有關(guān)大約十個擦除區(qū)塊的信息。
在步驟320分配表格之后,在步驟324中識別擦除區(qū)塊。接著,在步驟328中,可以將“N”擦除區(qū)塊指派給最頻繁擦除區(qū)塊并大體上將其指派給擦除最頻繁的表格。在一個實施例中,“N”擦除區(qū)塊可以是具有通過比較所有擦除計數(shù)而判斷的最高擦除計數(shù)的“N”擦除區(qū)塊?;蛘撸谂c在步驟306中獲得的平均擦除計數(shù)的比較可以判斷存儲在最頻繁擦除區(qū)塊表中的“N”個擦除區(qū)塊。例如,“N”擦除區(qū)塊可以是具有至少比平均擦除計數(shù)高一個給定百分比(例如約百分之二十五)的擦除計數(shù)的“N”擦除區(qū)塊。
一旦有效填充最頻繁擦除區(qū)塊表,就可以識別“M”擦除區(qū)塊且在步驟332中將其有效指派給最不頻繁擦除區(qū)塊表。所述“M”擦除區(qū)塊一般可以是具有與該系統(tǒng)相關(guān)聯(lián)的所有擦除區(qū)塊的最低擦除計數(shù)的“M”擦除區(qū)塊,或所述“M”擦除區(qū)塊可以是具有至少比平均擦除計數(shù)低一個給定百分比的擦除計數(shù)的“M”擦除區(qū)塊。所述”M”擦除區(qū)塊實際上是適當時將指派給該區(qū)塊映射表的備用區(qū)塊。
在步驟336中將剩余擦除區(qū)塊(即,未指派給最不頻繁擦除區(qū)塊表或最頻繁擦除區(qū)塊表)與“未擦除”區(qū)塊一起指派給區(qū)塊映射表。換句話說,將剩余擦除區(qū)塊及含有不同于與冗余區(qū)域相關(guān)聯(lián)的數(shù)據(jù)的區(qū)塊與區(qū)塊映射表相關(guān)聯(lián)。
例如,用與對應區(qū)塊相關(guān)的擦除計數(shù)和映射信息有效填充區(qū)塊映射表、最不頻繁擦除區(qū)塊表及最頻繁擦除區(qū)塊表之后,在步驟338中可以判斷平均擦除計數(shù)。判斷平均擦除計數(shù)通常涉及對在步驟308中獲得的單個區(qū)塊的擦除計數(shù)求和,并用區(qū)塊總數(shù)除以所述總和。
將在步驟338中計算的平均擦除計數(shù)存儲在與所述系統(tǒng)相關(guān)聯(lián)的擦除計數(shù)區(qū)塊中。如上文所提及,將所述平均擦除計數(shù)存儲在一個擦除計數(shù)區(qū)塊中,將其寫入與該系統(tǒng)相關(guān)聯(lián)的NAND存儲器中。當將平均擦除計數(shù)存儲在所述擦除計數(shù)區(qū)塊中時,可以在步驟342中處理靜態(tài)區(qū)塊或含有數(shù)據(jù)并具有相對低的相關(guān)擦除計數(shù)的區(qū)塊。下文相關(guān)圖4將描述與一種處理一靜態(tài)區(qū)塊的方法相關(guān)聯(lián)的步驟。一旦處理所述靜態(tài)區(qū)塊,初始化請求的處理就完成了。
在與閃存相關(guān)聯(lián)的一組區(qū)塊中,在任何給定時刻,通常存在被擦除的區(qū)塊和含有數(shù)據(jù)(例如,用戶數(shù)據(jù))的區(qū)塊。含有數(shù)據(jù)的某些區(qū)塊可認為是“普通”區(qū)塊,而其他區(qū)塊可認為是靜態(tài)區(qū)塊。靜態(tài)區(qū)塊是含有很少改變的數(shù)據(jù)的區(qū)塊。換句話說,很少擦除靜態(tài)區(qū)塊。通常,靜態(tài)區(qū)塊可以與存儲在閃存中的相對舊的文件、存儲在閃存中的可執(zhí)行程序或存儲在閃存中的操作系統(tǒng)相關(guān)聯(lián)。靜態(tài)區(qū)塊一般具有大體上比在閃存內(nèi)的大部分區(qū)塊的擦除計數(shù)低的擦除計數(shù)。在一個實施例中,如果區(qū)塊的擦除計數(shù)低于與閃存系統(tǒng)相關(guān)聯(lián)的平均擦除計數(shù)的一個給定的百分比,例如約百分之二十,就可以認為含有數(shù)據(jù)的區(qū)塊是靜態(tài)區(qū)塊。
由于靜態(tài)區(qū)塊含有的數(shù)據(jù)很少改變,所以可以將包含在靜態(tài)區(qū)塊的數(shù)據(jù)復制到具有相對高的擦除計數(shù)的區(qū)塊中。即,當特定物理區(qū)塊的內(nèi)容相對靜態(tài)且因此一般不改變時,實際上可以將所述內(nèi)容重新指派給具有相對高的擦除計數(shù)的不同物理區(qū)塊以便使得具有相對低的擦除計數(shù)的原物理區(qū)塊用于存儲更頻繁改變的內(nèi)容。參考圖4,根據(jù)本發(fā)明的一個實施例將描述與處理靜態(tài)區(qū)塊相關(guān)聯(lián)的步驟,即圖3的步驟342。在步驟404開始處理系統(tǒng)的靜態(tài)區(qū)塊的程序342,其中訪問區(qū)塊(例如,區(qū)塊“A”)的擦除計數(shù)。一旦訪問了區(qū)塊“A”的擦除計數(shù),在步驟408中作出有關(guān)區(qū)塊“A”的擦除計數(shù)和與所述系統(tǒng)相關(guān)聯(lián)的平均擦除計數(shù)相比是否低的判斷。
盡管可以大體上基于任何適當?shù)臉藴逝c平均擦除計數(shù)相比判斷非擦除區(qū)塊“A”的擦除計數(shù)是否低,但是在一實施例中,基于區(qū)塊“A”的擦除計數(shù)是否具有比與平均擦除計數(shù)的一部分相關(guān)聯(lián)的值低的值作出該判斷。例如,當該擦除計數(shù)比平均擦除計數(shù)的預定百分比少時,可以認為區(qū)塊“A”的擦除計數(shù)低。
如果在步驟408中判斷區(qū)塊“A”的擦除計數(shù)與平均擦除計數(shù)相比并不低,就指示所述區(qū)塊“A”很可能不是靜態(tài)區(qū)塊。應了解雖然即使不認為區(qū)塊“A”的擦除計數(shù)極低,區(qū)塊“A”也可以是靜態(tài)區(qū)塊,但是在此中情況下的區(qū)塊“A”的擦除計數(shù)實際上不觸發(fā)區(qū)塊“A”與另一區(qū)塊的交換。從而,完成處理靜態(tài)區(qū)塊的程序。
或者,如果在步驟408中判斷與平均擦除計數(shù)相比區(qū)塊“A”的擦除計數(shù)低,就暗示可以將區(qū)塊“A”的內(nèi)容寫入具有相對高的擦除計數(shù)的區(qū)塊中,使得具有其低擦除計數(shù)的區(qū)塊“A”可以自由的用于存儲相對頻繁地改變的數(shù)據(jù)。換句話說,當與平均擦除計數(shù)相比區(qū)塊“A”的擦除計數(shù)極低時指示該區(qū)塊“A”是靜態(tài)區(qū)塊。如此,程序流程從步驟408移到步驟412,其中將區(qū)塊“A”識別為靜態(tài)區(qū)塊。一旦將區(qū)塊“A”識別為靜態(tài)區(qū)塊,在步驟416中,從由最頻繁擦除區(qū)塊表識別的一組最頻繁擦除區(qū)塊中獲得一個區(qū)塊,即區(qū)塊“B”。
獲得區(qū)塊“B”之后,在步驟420中將區(qū)塊“A”的內(nèi)容復制到區(qū)塊“B”中。即,在步驟420中將在區(qū)塊“A”中獲得的內(nèi)容復制到區(qū)塊“B”中。一旦將區(qū)塊“A”的內(nèi)容復制到區(qū)塊“B”中,就在步驟424擦除區(qū)塊“A”。通常,當擦除區(qū)塊“A”時,與區(qū)塊“A”相關(guān)的擦除計數(shù)增加。一個區(qū)塊,例如區(qū)塊“C”,在步驟428中可以從最不頻繁擦除區(qū)塊組移到最頻繁擦除區(qū)塊組中,使得區(qū)塊“C”的關(guān)聯(lián)從最不頻繁擦除區(qū)塊表實際改變成最頻繁擦除區(qū)塊表。換句話說,從最不頻繁擦除區(qū)塊表將區(qū)塊“C”分離出來且將其與最頻繁擦除區(qū)塊表相關(guān)聯(lián)。此移動運促有效地打開在最不頻繁擦除區(qū)塊表中的一個空間以容納區(qū)塊“A”,其具有低擦除計數(shù)并因此是該系統(tǒng)中最不頻繁擦除區(qū)塊的一個。通常,區(qū)塊“C”為具有最不頻繁擦除區(qū)塊的最高擦除計數(shù)的區(qū)塊。
當將區(qū)塊“C”從最不頻繁擦除區(qū)塊組中移出或否則將區(qū)塊“C”從最不頻繁擦除區(qū)塊表中分離時,程序流程從步驟428移到432,其中在步驟432中實際上將區(qū)塊“A”從區(qū)塊映射表移到擦除最不頻繁的表格。接著在步驟434中,將包括先前在區(qū)塊“A”中含有的內(nèi)容的區(qū)塊“B”與區(qū)塊映射表相關(guān)聯(lián)。所屬領(lǐng)域的技術(shù)人員應了解,將區(qū)塊“B”“移動”到區(qū)塊映射表通常包括將與區(qū)塊“A”相關(guān)聯(lián)的邏輯區(qū)塊地址的映射更新為目前與區(qū)塊“B”相關(guān)聯(lián)的邏輯區(qū)塊地址的映射。當在最頻繁擦除區(qū)塊表中出現(xiàn)有關(guān)區(qū)塊“C”的信息,在區(qū)塊映射表中出現(xiàn)有關(guān)區(qū)塊“B”的信息,且在最不頻繁擦除區(qū)塊表中出現(xiàn)有關(guān)區(qū)塊“A”的信息時,完成處理靜態(tài)區(qū)塊的程序。應了解,可以重復過程342直到已識別并處理完與系統(tǒng)相關(guān)聯(lián)的大體上所有的靜態(tài)區(qū)塊。
一般來說,當將初始化請求發(fā)送到整個閃存系統(tǒng)時,可以在存儲器系統(tǒng)(例如,圖1a的RAM 112)中創(chuàng)建區(qū)塊映射表、最不頻繁擦除區(qū)塊表和最頻繁擦除區(qū)塊表。如上所述,產(chǎn)生初始化請求的任何時候大體上也可建立所述表格。為了建立所述表格,可以先在系統(tǒng)存儲器中分配空間以容納所述表格。
如上文所提及,在系統(tǒng)存儲器中創(chuàng)建區(qū)塊映射表、最不頻繁擦除區(qū)塊表和最頻繁擦除區(qū)塊表,以及平均擦除計數(shù)。在一個實施例中,每個區(qū)塊的平均擦除計數(shù)和擦除計數(shù)也會寫入擦除計數(shù)區(qū)塊。圖5a是根據(jù)本發(fā)明的一個實施例的系統(tǒng)存儲器的圖形結(jié)構(gòu)圖表示。系統(tǒng)存儲器454和閃存460包括在整個系統(tǒng)中,而且(例如)可為存儲卡的組件或嵌入閃存460的主機裝置的組件。系統(tǒng)存儲器454經(jīng)配置以存儲區(qū)塊可能相關(guān)聯(lián)的區(qū)塊映射表462。通常,可以使用區(qū)塊映射表462以便將LBA與和閃存460相關(guān)聯(lián)的物理區(qū)塊關(guān)聯(lián)。
系統(tǒng)存儲器454還保持有最不頻繁擦除區(qū)塊表466和最頻繁擦除區(qū)塊表470,所述表格和區(qū)塊映射表462一樣,一般響應初始化請求而形成當格式化整個閃存系統(tǒng)時創(chuàng)建平均擦除計數(shù)474,將其配置以容納在閃存460內(nèi)的區(qū)塊平均擦除計數(shù)。在一個實施例中,也配置擦除計數(shù)區(qū)塊480以含有在閃存460中的大體上所有區(qū)塊的擦除計數(shù)。每發(fā)出初始化請求一次,可以計算已更新的平均擦除計數(shù),并將其存儲在擦除計數(shù)區(qū)塊480中。
圖5b是根據(jù)本發(fā)明的實施例的“普通”區(qū)塊組、最不頻繁擦除區(qū)塊組和最頻繁擦除區(qū)塊組的圖形表示。如下文所述,一組區(qū)塊502包括可為正常區(qū)塊或者靜態(tài)區(qū)塊514,其通常包括可以被擦除但是并不屬于最不頻繁擦除區(qū)塊或者最頻繁擦除區(qū)塊的用戶數(shù)據(jù)。最不頻繁擦除區(qū)塊組506通常包括在整個系統(tǒng)中具有最低的擦除計數(shù)的區(qū)塊518,而最頻繁擦除區(qū)塊組510通常包括在整個系統(tǒng)中具有最高的擦除區(qū)塊的擦除計數(shù)的區(qū)塊522。一般來說,區(qū)塊518實際用作備用區(qū)塊。
當擦除區(qū)塊514時,可判斷擦除區(qū)塊514是否具有相對低的關(guān)聯(lián)的擦除計數(shù)或相對高的關(guān)聯(lián)的擦除計數(shù)。當擦除區(qū)塊514具有相對低的關(guān)聯(lián)的擦除計數(shù)時,可將擦除區(qū)塊514添加到最不頻繁擦除區(qū)塊組506。另一方面,當擦除區(qū)塊514具有相對高的關(guān)聯(lián)的擦除計數(shù)時,可將擦除區(qū)塊514重新指派到最頻繁擦除區(qū)塊組510。
可大體上具有任何大小的最不頻繁擦除區(qū)塊組506可以是一個分類組。也就是說,可基于擦除計數(shù)來大體上將區(qū)塊518分類。通常在一個對應的最不頻繁擦除區(qū)塊表中(未圖示)反映該分類,該表中含有與區(qū)塊518相關(guān)聯(lián)的項。舉例而言,每次新的區(qū)塊518被移到或添加到最不頻繁擦除區(qū)塊組506中或以其他方式與其相關(guān)聯(lián)時,可基于擦除計數(shù)實質(zhì)上將區(qū)塊518分類,使得最不頻繁擦除區(qū)塊506組中的最不頻繁擦除區(qū)塊518可以是將被重新指派到(例如)組502的下一個區(qū)塊518。換句話說,當需要其中將復制數(shù)據(jù)的一新區(qū)塊時,使用一最不頻繁擦除區(qū)塊表識別區(qū)塊518的擦除最少的區(qū)塊518,且將其從最不頻繁擦除區(qū)塊組506中取出。典型地,當擦除含有無用數(shù)據(jù)的區(qū)塊514時,所述區(qū)塊514可存儲到最不頻繁擦除區(qū)塊組506中,且可相應地更新最不頻繁擦除區(qū)塊表,也就是說,一對應于所添加區(qū)塊的項可被包含于最不頻繁擦除區(qū)塊表中。
類似于存儲在最不頻繁擦除區(qū)塊組506中的區(qū)塊518,也可基于擦除計數(shù)大體上分類最頻繁擦除區(qū)塊組510中的區(qū)塊522。通??赏ㄟ^對用于識別區(qū)塊522的最頻繁擦除區(qū)塊表中(未圖示)的項進行分類來實施分類。在一個實施例中,可計算與區(qū)塊522相關(guān)聯(lián)的平均擦除計數(shù),也就是說,可判定最頻繁擦除區(qū)塊510的平均擦除計數(shù)。當擦除區(qū)塊組502中的區(qū)塊514,且發(fā)現(xiàn)擦除區(qū)塊514的擦除計數(shù)超過最頻繁擦除區(qū)塊組510的平均擦除計數(shù)的一個給定百分比(例如大于約百分之二十)時,所述擦除區(qū)塊514可被添加到最頻繁擦除區(qū)塊組510中。當一新區(qū)塊522被實際上添加到最頻繁擦除區(qū)塊組510中時,區(qū)塊組510中具有最低擦除計數(shù)的擦除頻繁的區(qū)塊522可被重新指派到組502中。通??赏ㄟ^更新關(guān)聯(lián)區(qū)塊映射表、最不頻繁擦除區(qū)塊表和最頻繁擦除區(qū)塊表(未圖示)來反映所述重新指派。
當擬擦除或更新組502中所包括的區(qū)塊514時,通常發(fā)生組502、最不頻繁擦除區(qū)塊組506和最頻繁擦除區(qū)塊組510之間的區(qū)塊交換。或者,區(qū)塊的交換或更新可大體上在期望分配一備用區(qū)塊供用于組502中的任何時候發(fā)生。下面參考圖6,將根據(jù)本發(fā)明的一個實施例描述在一個總存儲器系統(tǒng)中(例如具有嵌入式閃存的主機系統(tǒng))執(zhí)行區(qū)塊交換以允許區(qū)塊的更為平均的損耗的方法。一個執(zhí)行區(qū)塊交換或者更新的過程600從步驟604開始,在步驟604中從一區(qū)塊映射表“獲得”或者以其他方式使用所述區(qū)塊映射表識別一個區(qū)塊(例如區(qū)塊“Y”)。所獲得的區(qū)塊是將被實際上從區(qū)塊映射表中交換出用于復制或更新其內(nèi)容的區(qū)塊。
一旦獲得區(qū)塊“Y”,則在步驟608可從最不頻繁擦除區(qū)塊表中有效地獲得一個區(qū)塊,例如區(qū)塊“X”。也就是說,使用最不頻繁擦除區(qū)塊表來識別適當?shù)膫溆脜^(qū)塊以從最不頻繁擦除區(qū)塊組中獲得備用區(qū)塊。一般來說,盡管應了解區(qū)塊“X”可以大體上可為與最不頻繁擦除區(qū)塊組以及最不頻繁擦除區(qū)塊表相關(guān)聯(lián)的任何區(qū)塊,但是區(qū)塊“X”是在最不頻繁擦除區(qū)塊組中具有最低擦除計數(shù)的區(qū)塊。在步驟612中,將內(nèi)容或者更明確的說存儲在區(qū)塊“Y”中的數(shù)據(jù)內(nèi)容或者新的內(nèi)容復制到區(qū)塊“X”中,所述內(nèi)容將替代“Y”的初始內(nèi)容。
在步驟616中,在將區(qū)塊“Y”的內(nèi)容復制到區(qū)塊“X”中之后,將區(qū)塊“X”實際上移到區(qū)塊映射表中或與其相關(guān)聯(lián)。換句話說,有效更新與區(qū)塊“Y”和區(qū)塊“X”相關(guān)聯(lián)的映射,使得先前映射到區(qū)塊“Y”的LBA重新映射到區(qū)塊“X”。當區(qū)塊“X”被實際上移到區(qū)塊映射表中時,在步驟620中擦除區(qū)塊“Y”。具體而言,使用任何適當?shù)募夹g(shù)可擦除存儲在區(qū)塊“Y”中的數(shù)據(jù)內(nèi)容(例如用戶數(shù)據(jù))。存儲在與區(qū)塊“Y”相關(guān)聯(lián)的冗余區(qū)域中的與區(qū)塊“Y”相關(guān)聯(lián)的擦除計數(shù)在步驟624中增加以指示區(qū)塊“Y”已再一次被擦除。應了解,在一個實施例中,實際存儲在擦除計數(shù)表中的“Y”的擦除計數(shù)可以更新。
在步驟628中,識別在最頻繁擦除區(qū)塊表中具有最低擦除計數(shù)的區(qū)塊。如上所述,在一個實施例中,在最頻繁擦除區(qū)塊表中參考的區(qū)塊根據(jù)其各自的擦除計數(shù)進行分類。對區(qū)塊分類可包括在最頻繁擦除區(qū)塊表中根據(jù)區(qū)塊的擦除計數(shù)定位區(qū)塊的參考。因此,識別具有最低擦除計數(shù)的區(qū)塊通常涉及訪問經(jīng)配置以容納具有最低擦除計數(shù)的區(qū)塊參考的最頻繁擦除區(qū)塊表中的位置區(qū)塊參考。
一旦識別到具有在最頻繁擦除區(qū)塊表中參考的最低擦除計數(shù)的區(qū)塊,處理流程從步驟628移到步驟632,在該步驟中,判定區(qū)塊“Y”的擦除計數(shù)是否大于具有在最頻繁擦除區(qū)塊表中參考的最低擦除計數(shù)的區(qū)塊的擦除計數(shù)。如果判定區(qū)塊“Y”的擦除計數(shù)不大于具有在最頻繁擦除區(qū)塊表中參考的最低擦除計數(shù)的區(qū)塊的擦除計數(shù),那么指示區(qū)塊“Y”不能認為是頻繁存儲的。因此,處理流程從步驟632繼續(xù)到步驟636,在步驟636中將區(qū)塊“Y”移到最不頻繁擦除區(qū)塊組中并且有效地移到最不頻繁擦除區(qū)塊表中,例如,將對應于區(qū)塊“Y”的項添加到最不頻繁擦除區(qū)塊表中。應了解,在一個實施例中,將區(qū)塊“Y”移到最不頻繁擦除區(qū)塊組中可包括使用每個區(qū)塊的擦除計數(shù)大體上重新對最不頻繁擦除區(qū)塊表中的所有區(qū)塊參考進行分類。在將區(qū)塊“Y”實際上移到最不頻繁擦除區(qū)塊表中之后,便完成交換或更新區(qū)塊的過程。
回到步驟632,如果步驟632的判定是區(qū)塊“Y”的擦除計數(shù)超過了與最頻繁擦除區(qū)塊表相關(guān)聯(lián)的最低擦除計數(shù),那么指示區(qū)塊“Y”應該被移到最頻繁擦除區(qū)塊組中且實際上移到最頻繁擦除區(qū)塊表中。為了給最頻繁擦除區(qū)塊表中待參考的區(qū)塊“Y”留出空間,需要從最頻繁擦除區(qū)塊表中移除一個區(qū)塊,例如最頻繁擦除區(qū)塊表中參考的具有最低擦除計數(shù)的區(qū)塊。同樣,在步驟640中,具有在最頻繁擦除區(qū)塊表中參考的最低的擦除計數(shù)的區(qū)塊被移到存儲最不頻繁的區(qū)塊組中,且實際上被移到最不頻繁擦除區(qū)塊表中。將區(qū)塊移到最不頻繁擦除區(qū)塊組中可包括根據(jù)每個區(qū)塊的擦除計數(shù)對最不頻繁擦除區(qū)塊表中的區(qū)塊參考重新分類。
在將具有最頻繁擦除區(qū)塊表中的最低擦除計數(shù)的區(qū)塊移到最頻繁擦除區(qū)塊表外之后,在步驟644中,將區(qū)塊“Y”實際上移到最頻繁擦除區(qū)塊表中。在一個實施例中,將區(qū)塊“Y”移到最頻繁擦除區(qū)塊中且因此實際上移到最頻繁擦除區(qū)塊表中可包括根據(jù)每個區(qū)塊的擦除計數(shù)對最頻繁擦除區(qū)塊重新分類,包括區(qū)塊“Y”。當區(qū)塊“Y”實際上被移到最頻繁擦除區(qū)塊表中時,便完成交換區(qū)塊的過程。
一般地,在軟件中提供與維護表、處理初始化請求和執(zhí)行損耗平衡(例如,響應交換區(qū)塊的請求)相關(guān)聯(lián)的功能,例如作為程序編碼裝置或作為主機系統(tǒng)的固件。圖7顯示與供予一個主機系統(tǒng)以實施損耗平衡的軟件或固件相關(guān)聯(lián)的一個合適的系統(tǒng)架構(gòu)的一個實施例。一個系統(tǒng)架構(gòu)700通常包括各種模塊,所述模塊可包括(但不限于)應用接口模塊704、系統(tǒng)管理器模塊708、數(shù)據(jù)管理器模塊712、數(shù)據(jù)完整性管理器716和裝置管理器和接口模塊720。一般來說,可使用可由處理器(例如圖1a的處理器108)訪問的軟件代碼裝置或固件來實施系統(tǒng)架構(gòu)700。
一般來說,應用接口模塊704經(jīng)配置以與主機、操作系統(tǒng)或直接與用戶進行通信。應用接口模塊704還與系統(tǒng)管理器模塊708和數(shù)據(jù)管理器模塊712進行通信。當用戶要讀取、寫入或格式化閃存時,用戶發(fā)送請求到操作系統(tǒng),所述請求傳到應用接口模塊704。應用接口模塊704依據(jù)請求而將請求引導到系統(tǒng)管理器模塊708或數(shù)據(jù)管理器模塊712。
系統(tǒng)管理器模塊708包括系統(tǒng)初始化子模塊724、擦除計數(shù)區(qū)塊管理子模塊726和電源管理區(qū)塊子模塊730。系統(tǒng)初始化子模塊724通常經(jīng)配置以能處理起始請求,且通常與擦除計數(shù)區(qū)塊管理子模塊726進行通信。在一個實施例中,系統(tǒng)初始化子模塊724允許更新區(qū)塊的擦除計數(shù),且大體上負責創(chuàng)建最不頻繁擦除區(qū)塊表和最頻繁擦除區(qū)塊表。
擦除計數(shù)區(qū)塊管理子模塊726包括促使存儲區(qū)塊的擦除計數(shù)的功能和促使計算平均的擦除計數(shù)的功能和使用個別的擦除計數(shù)進行更新的功能。換句話說,擦除計數(shù)區(qū)塊管理子模塊726實際上允許維持一個平均的擦除計數(shù)。另外,在一個實施例中,在整個系統(tǒng)加電期間擦除計數(shù)區(qū)塊管理子模塊726也大體上同步于擦除計數(shù)區(qū)塊中大體所有區(qū)塊的擦除計數(shù)。雖然可配置擦除計數(shù)區(qū)塊管理子模塊726使平均擦除計數(shù)存儲于擦除計數(shù)區(qū)塊中,但是應意識到電源管理區(qū)塊子模塊730可用于存儲平均擦除計數(shù)。除了與應用接口模塊704通信之外,系統(tǒng)管理器模塊708還與數(shù)據(jù)管理器模塊712和裝置管理器和接口模塊720進行通信。與系統(tǒng)管理器模塊708和應用接口模塊704通信的數(shù)據(jù)管理器模塊712可包括提供頁面或區(qū)塊映射的功能。數(shù)據(jù)管理器模塊712還可包括與操作系統(tǒng)和文檔系統(tǒng)接口層相關(guān)聯(lián)的功能。
裝置管理器和接口模塊720通常提供一個閃存存儲器接口,且包括與硬件提取相關(guān)聯(lián)的功能性,例如一個I/O接口,所述裝置管理器和接口模塊與系統(tǒng)管理器模塊708、數(shù)據(jù)管理器712和數(shù)據(jù)完整性管理器716進行通信。數(shù)據(jù)完整性管理器模塊716提供ECC處理及其它功能。
雖然已經(jīng)描述了本發(fā)明的一些實施例,但是應了解在不偏離本發(fā)明的精神或范疇情況下可以許多其它具體形式來體現(xiàn)本發(fā)明。舉例而言,在基于將每個區(qū)塊和平均擦除計數(shù)作比較而將區(qū)塊指派到最頻繁擦除區(qū)塊表和最不頻繁擦除區(qū)塊表的場所中,分別基于大體上絕對判定哪個區(qū)塊具有最高的擦除計數(shù)且哪個區(qū)塊具有最低的擦除計數(shù)而將區(qū)塊指派到最頻繁擦除區(qū)塊表和最不頻繁擦除區(qū)塊表作為替代。換句話說,不用將個別的區(qū)塊擦除計數(shù)和平均擦除計數(shù)作比較,區(qū)塊擦除計數(shù)可實際上相互比較來判斷其中可以插入?yún)^(qū)塊的適當?shù)谋怼?br>
通常將最不頻繁擦除區(qū)塊表描述成保持具有和備用區(qū)塊一樣的相對低的擦除計數(shù)的區(qū)塊的參考。實際分配備用區(qū)塊以用于使用區(qū)塊映射表的整個過程中,使得大體上任何時候都需要備用區(qū)塊,提供具有在最不頻繁擦除區(qū)塊中參考的最低擦除計數(shù)的區(qū)塊用于使用。換句話說,當區(qū)塊映射表中識別的區(qū)塊換出時,將在最不頻繁擦除區(qū)塊組中具有最小擦除計數(shù)的區(qū)塊的參考移到區(qū)塊映射表中。然而,應意識到在區(qū)塊交換或更新處理期間,通常可從最不頻繁擦除區(qū)塊組中取出任何一個區(qū)塊。使用最不頻繁擦除區(qū)塊表從最不頻繁擦除區(qū)塊中選擇任何一個區(qū)塊以移到區(qū)塊映射表中可減少與整個系統(tǒng)關(guān)聯(lián)的耗用,而最不頻繁擦除區(qū)塊表中的區(qū)塊沒有必要進行分類。
識別和處理靜態(tài)區(qū)塊通常增強了使整個存儲器系統(tǒng)內(nèi)的區(qū)塊平均地損耗能力。然而,在一個實施例中,沒有必要識別和處理靜態(tài)區(qū)塊。例如,如果系統(tǒng)內(nèi)預先占用了相對少的靜態(tài)區(qū)塊,那么在不偏離本發(fā)明的精神或范疇的情況下可大體上排除靜態(tài)區(qū)塊的識別和處理。
雖然將非易失性存儲器系統(tǒng)描述為通過關(guān)聯(lián)存儲器控制器來控制或使用與主機系統(tǒng)相關(guān)聯(lián)的軟件或固件來控制,但是應了解包括擦除計數(shù)管理的損耗平衡處理可應用于下述非易失性存儲器系統(tǒng),其與大體上位于非易失性存儲器系統(tǒng)外部的控制器進行通信。使用控制器的合適存儲器系統(tǒng)包括(但不限于)PC卡、壓縮快閃卡、安全數(shù)字卡、多媒體卡和包含閃存和閃存控制器的嵌入式芯片組。通過使用加載到主機系統(tǒng)上的軟件或固件來控制的存儲器系統(tǒng)包括嵌入式存儲器裝置。在一個實施例中,使用上文描述的擦除管理計數(shù)而且不使用與存儲器系統(tǒng)關(guān)聯(lián)的控制器的存儲器系統(tǒng)可使用與主機,例如,主計算機系統(tǒng)相關(guān)聯(lián)的控制器來實現(xiàn)損耗平衡。也就是說主機可直接尋址和管理存儲器,其中通過使用主機上的控制器來達到損耗平衡。
一般來說,與損耗平衡的各種不同的處理和方法相關(guān)聯(lián)的步驟也大不相同。在不偏離本發(fā)明的范疇的精神下,通常可添加、移除、改變和重新排序步驟。以實例說明之,在處理起始請求時不必包含處理靜態(tài)區(qū)塊。同樣,在一個實施例中,是否將一個新的擦除元件區(qū)塊有效地放入最頻繁擦除區(qū)塊表中的判斷可基于所述擦除區(qū)塊是否具有大于與最頻繁擦除區(qū)塊表關(guān)聯(lián)的最小擦除計數(shù)的擦除計數(shù)。例如,此判斷可基于擦除區(qū)塊的擦除計數(shù)是否超過與最頻繁擦除區(qū)塊表關(guān)聯(lián)的所有區(qū)塊的平均擦除計數(shù)某一百分比,例如大約百分之二十。當擦除區(qū)塊的擦除計數(shù)超過平均擦除計數(shù)的某一百分比時,將最頻繁擦除區(qū)塊中具有最小擦除計數(shù)的區(qū)塊移到最不頻繁擦除區(qū)塊表中,同時將所述擦除區(qū)塊移到最頻繁擦除區(qū)塊表中。因此,應認為本發(fā)明的實例僅具說明性而非限制性,而且本發(fā)明并不限于本文給出的細節(jié),在權(quán)利要求范圍的范疇內(nèi)可對本發(fā)明進行修改。
權(quán)利要求
1.一種用于處理一存儲器系統(tǒng)的一非易失性存儲器中包括的元件的方法,所述方法包含獲得與復數(shù)個元件相關(guān)聯(lián)的擦除計數(shù),其中所述復數(shù)個元件中包括的每個元件都具有一關(guān)聯(lián)擦除計數(shù),每個元件的所述關(guān)聯(lián)擦除計數(shù)經(jīng)配置以指示所述元件被擦除的次數(shù);將所述復數(shù)個元件中包括的若干元件組成第一組,其中將若干擦除元件組成所述第一組包含選擇所述復數(shù)個元件包括的元件,其具有與所述復數(shù)個擦除元件相關(guān)聯(lián)的所述擦數(shù)計數(shù)的最低關(guān)聯(lián)擦除計數(shù);和將與所述第一組相關(guān)聯(lián)的擦除計數(shù)存儲到大體位于一表格內(nèi)的一存儲器組件中,其中所述存儲器組件與所述存儲器相關(guān)聯(lián)。
2.根據(jù)權(quán)利要求1所述的方法,其中將所述若干元件分組包括比較與所述復數(shù)個元件相關(guān)聯(lián)的所述擦除計數(shù);和將元件的預定數(shù)目識別為從所述復數(shù)個擦除元件中選擇出的所述元件數(shù)目,所述復數(shù)個擦除元件具有與所述復數(shù)個擦除元件相關(guān)聯(lián)的所述擦除計數(shù)的最低關(guān)聯(lián)擦除計數(shù)。
3.根據(jù)權(quán)利要求1所述的方法,其進一步包括根據(jù)與每個元件相關(guān)聯(lián)的所述擦除計數(shù)將所述第一組中的所述元件分類。
4.根據(jù)權(quán)利要求3所述的方法,其中將所述第一組中的所述元件分類包括將所述表格內(nèi)的所述擦除計數(shù)分類。
5.根據(jù)權(quán)利要求3所述的方法,其進一步包括識別所述第一組中包括的一第一元件,所述第一元件具有與所述第一組相關(guān)聯(lián)的最低擦除計數(shù)。
6.根據(jù)權(quán)利要求5所述的方法,其進一步包括解除所述第一組與所述第一元件的關(guān)聯(lián);和使所述復數(shù)個元件的一第二元件與所述第一組相關(guān)聯(lián)。
7.根據(jù)權(quán)利要求6所述的方法,其進一步包括解除所述第二元件與所述第二組的關(guān)聯(lián)。
8.根據(jù)權(quán)利要求1所述的方法,其中所述非易失性存儲器為閃存。
9.根據(jù)權(quán)利要求8所述的方法,其中所述復數(shù)個元件為區(qū)塊,且所述第一組為一組最不頻繁擦除區(qū)塊。
10.根據(jù)權(quán)利要求9所述的方法,其中所述第一組元件包括備用區(qū)塊。
11.根據(jù)權(quán)利要求9所述的方法,其中獲得所述擦除計數(shù)包括從一擦除計數(shù)區(qū)塊獲得所述擦除計數(shù)。
12.根據(jù)權(quán)利要求9所述的方法,其中所述閃存為NAND閃存。
13.一種存儲器系統(tǒng),其包含一第一存儲器,所述第一存儲器經(jīng)配置以存儲一個表格,所述表格經(jīng)配置以包括與一第一組擦除存儲元件相關(guān)聯(lián)的項,所述擦除存儲元件具有小于與所述存儲器系統(tǒng)關(guān)聯(lián)的平均擦除計數(shù)的關(guān)聯(lián)擦除計數(shù),所述第一組存儲元件的每個存儲元件的所述關(guān)聯(lián)擦除計數(shù)器經(jīng)配置以大體指示所述存儲元件已被擦除的次數(shù);一第二存儲器,所述第二存儲器經(jīng)配置以包括復數(shù)個擦除存儲元件,所述復數(shù)個存儲元件包括所述第一組存儲元件,其中使用與所述復數(shù)個存儲元件相關(guān)聯(lián)的擦除計數(shù)器判定所述平均擦除計數(shù);和一處理器,所述處理器經(jīng)配置以訪問所述第一存儲器和所述第二存儲器。
14.根據(jù)權(quán)利要求13所述的存儲器系統(tǒng),其中使用所述表格大體識別所述第一組存儲元件。
15.根據(jù)權(quán)利要求13所述的存儲器系統(tǒng),其中所述第二存儲器為閃存且所述第一組存儲元件包括一第一組區(qū)塊。
16.一種用于處理一存儲器系統(tǒng)的一非易失性存儲器中包括的元件的方法,所述方法包含識別一第一組元件,其中所述第一組元件中包括的所述擦除元件的損耗小于所述第一組元件中未包括的所述擦除元件的損耗;將與所述第一組元件相關(guān)聯(lián)的項放入一數(shù)據(jù)結(jié)構(gòu)中;對所述數(shù)據(jù)結(jié)構(gòu)內(nèi)的所述項進行分類;和使用所述已分類的項識別所述第一組元件內(nèi)的一第一元件,其中所述第一元件的損耗小于所述第一組元件中包括的其它元件的損耗。
17.根據(jù)權(quán)利要求16所述的方法,其中每個元件具有一關(guān)聯(lián)擦除計數(shù),且識別所述第一組元件包括識別所述關(guān)聯(lián)擦除計數(shù)相對低的若干擦除元件;和將所述關(guān)聯(lián)擦除計數(shù)相對低的所述若干擦除元件組成所述第一組。
18.根據(jù)權(quán)利要求17所述的方法,其中所述項包括所述第一組中所述元件的所述關(guān)聯(lián)擦除計數(shù)。
19.根據(jù)權(quán)利要求17所述的方法,其進一步包含判定未包括的一第二元件的關(guān)聯(lián)擦除計數(shù)何時被擦除;當判定所述第二元件被擦除時,從所述第一組中移除所述第一元件;將所述第二元件的所述內(nèi)容和擬代替所述第二元件的所述內(nèi)容的新內(nèi)容之一復制到所述第一元件內(nèi);從所述第二元件中擦除所述內(nèi)容;和將所述第二元件添加到所述第一組。
20.根據(jù)權(quán)利要求19所述的方法,其中從所述第一組中移除所述第一元件包括從所述數(shù)據(jù)結(jié)構(gòu)中移除與所述第一元件相關(guān)聯(lián)的項,且將所述第二元件添加到所述第一組包括將與所述第一組元件相關(guān)聯(lián)的項放入一數(shù)據(jù)結(jié)構(gòu)中。
21.根據(jù)權(quán)利要求20所述的方法,其進一步包括將所述數(shù)據(jù)結(jié)構(gòu)內(nèi)的所述項重新分類;和使用所述已分類項識別所述第一組元件內(nèi)的一第三元件,其中所述第三元件的損耗小于所述第一組元件中包括的其它元件的損耗。
22.根據(jù)權(quán)利要求16所述的方法,其中所述第一元件經(jīng)配置以代替被擦除的所述第一組中未包括的一第二元件。
23.根據(jù)權(quán)利要求16所述的方法,其中所述元件的每一個包括一經(jīng)配置含有數(shù)據(jù)的區(qū)段,且其中所述第一組元件中包括的所述元件的每一個中包括的所述區(qū)段大體上是空的。
24.根據(jù)權(quán)利要求16所述的方法,其中所述第一組元件中包括的所述元件的每一個大體上被擦除。
25.根據(jù)權(quán)利要求16所述的方法,其中所述非易失性存儲器為閃存,且所述元件為區(qū)塊。
26.一種存儲器系統(tǒng),其包括存儲器元件;一系統(tǒng)存儲器組件;用于識別一第一組所述擦除存儲器元件的構(gòu)件,其中所述第一組存儲器元件中包括的所述存儲器元件的損耗小于未包含于所述第一組存儲器元件中的所述擦除存儲器元件的損耗;用于將與所述第一組存儲器元件相關(guān)聯(lián)的項放入與所述系統(tǒng)存儲器組件關(guān)聯(lián)的一數(shù)據(jù)結(jié)構(gòu)中的構(gòu)件;用于將所述數(shù)據(jù)結(jié)構(gòu)內(nèi)的所述項分類的構(gòu)件;和使用所述已分類項識別所述第一組存儲器元件內(nèi)的一第一存儲器元件的構(gòu)件,其中所述第一存儲器元件的損耗小于所述第一組存儲器元件中包括的其它擦除存儲器元件的損耗。
27.根據(jù)權(quán)利要求26所述的存儲器系統(tǒng),其中每個存儲器元件具有一個關(guān)聯(lián)擦除計數(shù),而且用于識別所述第一組元件的所述構(gòu)件包括用于識別所述關(guān)聯(lián)擦除計數(shù)相對低的若干元件的構(gòu)件;和用于將所述關(guān)聯(lián)擦除計數(shù)相對低的所述若干元件組成所述第一組的構(gòu)件。
28.根據(jù)權(quán)利要求27所述的存儲器系統(tǒng),其中所述項包括所述第一組中所述存儲器元件的所述關(guān)聯(lián)擦除計數(shù)。
29.根據(jù)權(quán)利要求27所述的存儲器系統(tǒng),其進一步包括用于判斷一第一平均擦除計數(shù)的構(gòu)件,使用每個存儲器元件的所述關(guān)聯(lián)擦除計數(shù)判定所述第一平均擦除計數(shù),其中用于識別所述第一組存儲器元件的構(gòu)件包括用于將所述第一組存儲器元件包括的每個存儲器元件的所述擦除計數(shù)與所述第一平均擦除計數(shù)進行比較的構(gòu)件。
30.根據(jù)權(quán)利要求26所述的存儲器系統(tǒng),其進一步包括用于從所述第一組中移除所述第一存儲器元件的構(gòu)件;和用于將所述第一組中未包含的第二存儲器元件添加到所述第一組的構(gòu)件。
31.根據(jù)權(quán)利要求30所述的存儲器系統(tǒng),其中用于從所述第一組移除所述第一存儲器元件的所述構(gòu)件包括用于從所述數(shù)據(jù)結(jié)構(gòu)移除與所述第一存儲器元件相關(guān)聯(lián)的項的構(gòu)件,且用于將所述第二存儲器元件添加到所述第一組中的所述構(gòu)件包括用于將與所述第一組存儲器元件相關(guān)聯(lián)的項放入一數(shù)據(jù)結(jié)構(gòu)的構(gòu)件。
32.根據(jù)權(quán)利要求26所述的存儲器系統(tǒng),其中所述第一組存儲器元件中包括的所述存儲器元件為備用存儲器元件。
33.根據(jù)權(quán)利要求26所述的存儲器系統(tǒng),其中所述第一組存儲器元件中包括的所述存儲器元件的每一個大體上已被擦除。
34.根據(jù)權(quán)利要求26所述的存儲器系統(tǒng),其中所述存儲器元件為非易失性存儲器區(qū)塊。
35.一種用于處理與一非易失性存儲器系統(tǒng)相關(guān)聯(lián)的一組存儲器元件的方法,所述方法包含將所述存儲器元件組的所述擦除存儲器元件的至少一個組成第一組,其中所述存儲器元件的所述至少一個大體上不多于來自未分組到所述第一組中的所述存儲器元件組的存儲器元件;和使組成所述第一組的所述存儲器元件能被分配使用,其中使組成所述第一組的所述存儲器元件能被分配使用包括大體上防止分配使用組成所述第一組的所述存儲器元件,直到所述第一組中未包含的一第一存儲器元件包含與所述第一存儲器元件解除關(guān)聯(lián)的內(nèi)容。
36.根據(jù)權(quán)利要求35所述的方法,其中所述存儲器元件組的每個存儲器元件都具有一所述存儲器元件組的所述存儲器元件已被擦除的次數(shù)的關(guān)聯(lián)指示,并且將所述存儲器元件的所述至少一個組成所述第一組包括基于所述存儲器元件的所述至少一個的所述關(guān)聯(lián)指示將所述存儲器元件的所述至少一個組成所述第一組。
37.根據(jù)權(quán)利要求36所述的方法,其中所述存儲器元件的所述至少一個具有一關(guān)聯(lián)指示,其小于未分組到所述第一組的所述存儲器元件的所述關(guān)聯(lián)指示。
38.一種存儲器管理系統(tǒng),其包含用于獲得與復數(shù)個元件相關(guān)聯(lián)的擦除計數(shù)的編碼裝置,其中所述復數(shù)個元件中包括的每個元件都具有一關(guān)聯(lián)擦除計數(shù),每個元件的所述關(guān)聯(lián)擦除計數(shù)經(jīng)配置以指示所述元件被擦除的次數(shù);用于將所述復數(shù)個元件中包含的若干元件組成一第一組的編碼裝置,其中用于將所述若干元件組成所述第一組的所述編碼裝置包含用于選擇包含于所述復數(shù)個元件中的擦除元件的裝置,其具有與所述復數(shù)個擦除元件關(guān)聯(lián)的擦數(shù)計數(shù)的最低關(guān)聯(lián)擦除計數(shù);和用于將與所述第一組相關(guān)聯(lián)的所述擦除計數(shù)大體分類到一存儲器組件中的一表格內(nèi)的編碼裝置。
39.根據(jù)權(quán)利要求38所述的方法,其中用于將所述若干元件分組的所述編碼裝置包括用于比較與所述復數(shù)個元件相關(guān)聯(lián)的所述擦除計數(shù)的編碼裝置;和用于將一元件預定數(shù)目識別為從所述復數(shù)個擦除元件中選擇的元件的數(shù)目的編碼裝置,其具有與所述復數(shù)個擦除元件相關(guān)聯(lián)的所述擦除計數(shù)的最低關(guān)聯(lián)擦除計數(shù)。
40.根據(jù)權(quán)利要求38所述的存儲器管理系統(tǒng),其進一步包括用于根據(jù)與每個元件相關(guān)聯(lián)的所述擦除計數(shù)將將所述第一組中的所述元件分類的編碼裝置。
41.根據(jù)權(quán)利要求40所述的存儲器管理系統(tǒng),其中用于將所述第一組中的所述元件分類的編碼裝置包括用于將所述表格內(nèi)的所述擦除計數(shù)分類的編碼裝置。
42.根據(jù)權(quán)利要求40所述的存儲器管理系統(tǒng),其進一步包括用于識別所述第一組中包含的一第一元件的編碼裝置,所述第一元件具有與所述第一組相關(guān)聯(lián)的最低擦除計數(shù)。
43.根據(jù)權(quán)利要求42所述的存儲器管理系統(tǒng),其進一步包括用于解除所述第一元件與所述第一組的關(guān)聯(lián)的編碼裝置;用于使所述復數(shù)個元件的一第二元件與所述第一組相關(guān)聯(lián)的編碼裝置;和用于解除所述第二元件與第二組的關(guān)聯(lián)的編碼裝置。
44.根據(jù)權(quán)利要求38所述的存儲器管理系統(tǒng),其中所述非易失性存儲器為閃存且所述復數(shù)個元件為區(qū)塊,所述第一組為一組最不頻繁擦除的區(qū)塊。
45.根據(jù)權(quán)利要求44所述的存儲器管理系統(tǒng),其中所述第一組元件包括備用區(qū)塊。
45.根據(jù)權(quán)利要求44所述的存儲器管理系統(tǒng),其中獲得所述擦除計數(shù)包括從一擦除計數(shù)區(qū)塊中獲得所述擦除計數(shù)。
46.一種用于管理存儲器的方法,所述存儲器包括復數(shù)個區(qū)塊,所述方法包含識別所述復數(shù)個區(qū)塊中包括的一組擦除區(qū)塊;識別所述擦除區(qū)塊組中包括的一第一組擦除區(qū)塊,其中所述第一組擦除區(qū)塊包括具有比所述擦除區(qū)塊組中大體所有其它擦除區(qū)塊更低的擦除計數(shù)的擦除區(qū)塊;在一存儲器組件中創(chuàng)建一結(jié)構(gòu),其中所述結(jié)構(gòu)包括數(shù)個項,所述數(shù)個項包括所述第一組中包括的所述擦除區(qū)塊的擦除計數(shù);將所述數(shù)個項分類;和使用所述已分類的數(shù)個項識別一第一區(qū)塊,其中所述第一區(qū)塊被配置成在所述第一組擦除區(qū)塊中包括的所述其它擦除區(qū)塊之前從所述第一組擦除區(qū)塊中被移除。
47.根據(jù)權(quán)利要求46所述的方法,其中將所述數(shù)個項分類包括使用所述第一組中包括的所述擦除區(qū)塊的所述擦除計數(shù)將所述數(shù)個項分類。
48.根據(jù)權(quán)利要求47所述的方法,其中使用所述已分類的項識別所述第一區(qū)塊包括將所述第一區(qū)塊識別為具有比所述第一組中包括的大體上所有其它擦除區(qū)塊更低的擦除計數(shù)。
49.根據(jù)權(quán)利要求46所述的方法,其中所述擦除區(qū)塊為擦除非易失性存儲器區(qū)塊,且所述存儲器組件是一NAND存儲器。
全文摘要
本發(fā)明揭示一種在一非易失性存儲器系統(tǒng)中執(zhí)行損耗平衡的方法和設備。根據(jù)本發(fā)明的一個方面,一種用于處理一存儲器系統(tǒng)的非易失性存儲器中包括的元件的方法包括獲得與復數(shù)個擦除元件相關(guān)聯(lián)的擦除計數(shù)并且將若干元件組成第一組。每個元件都具有關(guān)聯(lián)擦除計數(shù),所述計數(shù)大體指示該元件已經(jīng)被擦除的次數(shù)。將所述第一組的所述若干元件分組通常包括選擇所述復數(shù)個元件中包括的元件,所述擦除元件具有與所述復數(shù)個元件相關(guān)聯(lián)的擦除計數(shù)中的最低關(guān)聯(lián)擦除計數(shù)。所述方法也包括將與所述第一組關(guān)聯(lián)的所述擦除計數(shù)存儲到大體位于一表格內(nèi)的一存儲器組件中。
文檔編號G06F12/02GK1698036SQ03824780
公開日2005年11月16日 申請日期2003年9月10日 優(yōu)先權(quán)日2002年10月28日
發(fā)明者羅伯特·C·張, 巴赫曼·卡瓦邁, 法施德·薩伯特-沙吉 申請人:桑迪士克股份有限公司