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