專利名稱:管理擦除計數(shù)區(qū)塊的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及大規(guī)模數(shù)字數(shù)據(jù)存儲系統(tǒng)。更明確地說,本發(fā)明涉及有效地允許維護擦除計數(shù)的系統(tǒng)和方法,所述擦除計數(shù)被用于允許與非易失性存儲系統(tǒng)中的存儲區(qū)域相關(guān)聯(lián)的損耗分散到大體上所有存儲區(qū)域中。
背景技術(shù):
由于非易失性存儲系統(tǒng)的物理尺寸十分緊湊且非易失性存儲器可被反復重編程,對諸如閃存存儲系統(tǒng)的非易失性存儲系統(tǒng)的使用日漸增長。閃存存儲系統(tǒng)的緊湊的物理尺寸促進了其在愈加流行的裝置中的應(yīng)用。使用閃存存儲系統(tǒng)的裝置包括(但不限于)數(shù)字相機、數(shù)字攝像機、數(shù)字音樂播放器、手提式個人電腦和全球定位裝置。將包括于閃存存儲系統(tǒng)中的非易失性存儲器反復重編程的能力使得可使用和再使用閃存存儲系統(tǒng)。
一般來說,閃存存儲系統(tǒng)可包括閃存卡和閃存芯片組。閃存芯片組一般包括閃存組件和控制器組件。通常閃存芯片組可經(jīng)配置以裝配在嵌入式系統(tǒng)中。該等裝配件或主機系統(tǒng)的制造商通常獲取組件形式的閃存和其它組件,然后將閃速存儲器和其它組件裝配入主機系統(tǒng)。
盡管非易失性存儲器或(更明確地說)閃存系統(tǒng)中的閃存存儲區(qū)塊可被反復地重編程及擦除,但是在區(qū)塊用壞之前(即,存儲量開始變小之前)每個區(qū)塊或物理位置僅可被擦除一定的次數(shù)。也就是說,每個區(qū)塊具有一個編程和擦除循環(huán)限度。在某些存儲器中,在認為區(qū)塊不能使用之前可將區(qū)塊擦除高達約一萬次。在其它存儲器中,認為區(qū)塊損壞之前該區(qū)塊可被擦除高達約十萬次或者甚至一百萬次。當區(qū)塊損壞,從而使閃存系統(tǒng)的總存儲容量的一部分發(fā)生使用量損失或性能顯著下降時,閃存系統(tǒng)的使用者可能受到不利影響,例如丟失存儲的數(shù)據(jù)或不能存儲數(shù)據(jù)。
閃存系統(tǒng)內(nèi)的區(qū)塊或物理位置上的損耗取決于將各個區(qū)塊編程的次數(shù)不同而不同。如果區(qū)塊或(更一般地說)存儲元件被編程一次,則其實際上未經(jīng)重編程,編程和擦除循環(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ù),如果主機反復地使用相同LBA寫入和重寫數(shù)據(jù),那么閃存系統(tǒng)內(nèi)的相同物理位置或區(qū)塊就被反復地寫入和擦除,其應(yīng)為所屬領(lǐng)域的技術(shù)人員所了解。
當某些區(qū)塊已實際上損壞而其它區(qū)塊相對完好時,已經(jīng)損壞的區(qū)塊的存在通常使閃存系統(tǒng)的整體性能大打折扣。除了與損壞的區(qū)塊自身相關(guān)聯(lián)的性能降級之外,當僅有不足量的未損壞區(qū)塊可用于存儲所要的數(shù)據(jù)時,閃存系統(tǒng)的整體性能也會大打折扣。通常,即使閃存系統(tǒng)中的許多其它單元相對完好,當閃存系統(tǒng)中存在臨界數(shù)目的已經(jīng)損壞的區(qū)塊時,就認為閃存系統(tǒng)已經(jīng)不可用了。當認為包括相當數(shù)目的相對完好區(qū)塊的閃存系統(tǒng)已經(jīng)不可用時,與該閃存系統(tǒng)相關(guān)聯(lián)的許多資源實際上就浪費了。
為了增加閃存系統(tǒng)中的區(qū)塊相對平均地發(fā)生損耗的可能性,經(jīng)常要執(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ū)塊損壞前就完全損壞的可能性降低。
一種常用損耗平衡方法涉及交換用戶或主機LBA的兩個較大的部分所映射到的物理位置。也就是說,交換與較大的存儲單元部分相關(guān)聯(lián)的LBA。通過來自用戶的手動指令(例如,通過使用主機)來起始這種交換,結(jié)果,這種交換對用戶是不透明的。而且,涉及在兩個較大的存儲單元部分之間移動數(shù)據(jù)的交換操作耗時且(因此)效率低下。此外,較長持續(xù)時間的交換操作會消耗大量與整個閃存系統(tǒng)相關(guān)聯(lián)的資源,從而對整個閃存系統(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)的性能降級。
因此,所需要的是用于有效地且大體上透明地在閃存存儲系統(tǒng)中執(zhí)行損耗平衡的方法和設(shè)備。也就是說,所需要的是一種促進損耗平衡處理的系統(tǒng),其促使在與閃存存儲系統(tǒng)關(guān)聯(lián)的物理位置中損耗更為平均,而不需要顯著使用計算資源。
發(fā)明內(nèi)容
本發(fā)明涉及一種用于管理非易失性存儲系統(tǒng)中的擦除計數(shù)的系統(tǒng)和方法。根據(jù)本發(fā)明的一個方面,一種用于初始化非易失性存儲系統(tǒng)的系統(tǒng)存儲器中的一個擦除計數(shù)區(qū)塊的方法(所述非易失性存儲系統(tǒng)包括非易失性存儲器)涉及分配系統(tǒng)存儲器中的被分割成復數(shù)個項的復數(shù)個頁面。該等復數(shù)個項的每一項在該非易失性存儲器中具有一個相關(guān)聯(lián)區(qū)塊。該方法還包括識別適用于接收使用者數(shù)據(jù)的可用區(qū)塊,及將值存儲在與可用區(qū)塊相關(guān)聯(lián)的每一項中。將所述值存儲在與可用區(qū)塊相關(guān)聯(lián)的每一項中會實質(zhì)上將該可用區(qū)塊識別為可用的。
在一個實施例中,識別可用區(qū)塊包括識別不可用區(qū)塊。在此實施例中,所述方法還包括將一個指示符存儲在所述復數(shù)個項中的與一個不可用區(qū)塊相關(guān)聯(lián)的每一項中。將所述指示符存儲在與不可用區(qū)塊相關(guān)聯(lián)的每一項中實質(zhì)上會將所述不可用區(qū)塊識別為不可用的。
通過將擦除計數(shù)放入擦除計數(shù)區(qū)塊中,接著當需要時更新擦除計數(shù)來管理擦除計數(shù)使得可易于識別可用區(qū)塊的最新擦除計數(shù),因此促進了對頻繁使用的區(qū)塊的識別。通過允許從擦除計數(shù)區(qū)塊中獲得擦除計數(shù),可以容易地判定當前所擦除的可用區(qū)塊的先前擦除次數(shù)。
根據(jù)本發(fā)明的另一方面,一種用于處理與包括復數(shù)個區(qū)塊的存儲系統(tǒng)的非易失性存儲器相關(guān)聯(lián)的擦除區(qū)塊的方法涉及獲得擦除區(qū)塊和識別存儲在存儲系統(tǒng)的非易失性存儲器中的擦除計數(shù)區(qū)塊中的第一項,其對應(yīng)于擦除區(qū)塊。該方法還包括判斷何時該第一項為該擦除區(qū)塊的擦除次數(shù)的指示,并當判定該第一項為已擦除區(qū)塊的擦除次數(shù)的指示時實質(zhì)上將該第一項復制到所述擦除區(qū)塊中。在一個實施例中,該方法還包括當判定所述第一項不是擦除區(qū)塊的擦除次數(shù)的指示時實質(zhì)上將一個第二項復制到所述擦除區(qū)塊中。存儲在系統(tǒng)存儲器中的所述第二項指示所述復數(shù)個區(qū)塊的平均擦除次數(shù)。
根據(jù)本發(fā)明的另一方面,一種用于更新在系統(tǒng)存儲器的擦除計數(shù)區(qū)塊中的第一項的方法包括識別存儲在非易失性存儲器中的區(qū)塊并判斷何時該區(qū)塊可用。當判定該區(qū)塊不可用時設(shè)定在該第一項中的位以指示該區(qū)塊不可用,且如果判定該區(qū)塊可用就判斷何時該區(qū)塊未擦除。所述方法還包括當判定該區(qū)塊未擦除時讀取存儲在該區(qū)塊中的指示所述區(qū)塊的擦除次數(shù)的位,且當判定該區(qū)塊未擦除時將在第一項中的位設(shè)定成對應(yīng)于存儲在該區(qū)塊中的所述位。
通過閱讀下文詳細描述及研究圖式中的各種圖樣,本發(fā)明的這些和其它優(yōu)點將會變得顯而易見。
參考與隨附圖式相結(jié)合的以下描述可最佳理解本發(fā)明,其中圖1a為根據(jù)本發(fā)明的一個實施例包括非易失性存儲裝置的通用主機系統(tǒng)的圖解表示。
圖1b為根據(jù)本發(fā)明的一個實施例的存儲裝置,例如,圖1a的存儲裝置120的圖形表示。
圖1c為包括一個嵌入式非易失性存儲器的主機系統(tǒng)的圖解表示。
圖2為根據(jù)本發(fā)明的一個實施例的閃速存儲器的一部分的圖解表示。
圖3為根據(jù)本發(fā)明的一個實施例的處理流程圖,其說明與處理有關(guān)閃存系統(tǒng)的初始化請求相關(guān)聯(lián)的步驟。
圖4為根據(jù)本發(fā)明的一個實施例的處理流程圖,其說明與一種處理靜態(tài)區(qū)塊的方法相關(guān)聯(lián)的步驟。
圖5a為根據(jù)本發(fā)明的一個實施例的系統(tǒng)存儲器的圖解方塊圖表示。
圖5b為根據(jù)本發(fā)明的一個實施例的普通區(qū)塊、最不頻繁擦除區(qū)塊和最頻繁擦除區(qū)塊的圖解表示。
圖6為根據(jù)本發(fā)明的一個實施例的一種方法的圖解表示,該方法在整個存儲系統(tǒng)中執(zhí)行區(qū)塊交換/更新以允許區(qū)塊具有更平均的損耗。
圖7為根據(jù)本發(fā)明的一個實施例的系統(tǒng)架構(gòu)的圖解方塊圖表示。
圖8a為根據(jù)本發(fā)明的一個實施例的擦除計數(shù)區(qū)塊的圖解方塊圖表示。
圖8b為根據(jù)本發(fā)明的一個實施例的在一個擦除計數(shù)區(qū)塊中的頁面的圖解表示,例如,圖8a的擦除計數(shù)區(qū)塊800的頁面810a,該頁面大體上被分成若干位置。
圖8c為根據(jù)本發(fā)明的一個實施例的在一個擦除計數(shù)區(qū)塊中的頁面的圖解表示,例如,圖8a的擦除計數(shù)區(qū)塊800的頁面810a,該頁面大體上被分成若干字節(jié)。
圖8d為根據(jù)本發(fā)明的一個實施例的在一個擦除計數(shù)區(qū)塊中的頁面的圖解表示,例如,圖8a的擦除計數(shù)區(qū)塊800的頁面810a,其含有擦除計數(shù)和指示特定區(qū)塊已不可用的一個項。
圖9為根據(jù)本發(fā)明的一個實施例的一個擦除計數(shù)區(qū)塊的標頭的圖解表示,例如,圖8a的擦除計數(shù)區(qū)塊800的標頭820。
圖10為根據(jù)本發(fā)明的一個實施例說明與一種方法相關(guān)聯(lián)的步驟的處理流程圖,當初次格式化非易失性存儲系統(tǒng)的非揮發(fā)性存儲器時,該方法初始化一個擦除計數(shù)區(qū)塊。
圖11為根據(jù)本發(fā)明的一個實施例說明與一種方法相關(guān)聯(lián)的步驟的處理流程圖,該方法響應(yīng)初始化請求而更新一個擦除計數(shù)區(qū)塊。
圖12為根據(jù)本發(fā)明的一個實施例說明與一種方法相關(guān)聯(lián)的步驟的處理流程圖,該方法獲得一個備用區(qū)塊的擦除計數(shù)。
具體實施例方式
盡管在區(qū)塊損壞之前通常每個區(qū)塊僅可被擦除有限的次數(shù),但是可反復地編程和擦除閃存存儲系統(tǒng)中的非易失性存儲器存儲區(qū)塊。當區(qū)塊損壞時,會出現(xiàn)與包括損壞的區(qū)塊的閃存存儲系統(tǒng)的整體存儲容量的一部分相關(guān)聯(lián)的較顯著的性能降級,且存儲在該部分的數(shù)據(jù)可能丟失,或者可能無法在該部分存儲數(shù)據(jù)。
為了增加閃存存儲系統(tǒng)中區(qū)塊損耗地更平均的可能性,可更為平均地利用區(qū)塊。通過跟蹤每個區(qū)塊已被擦除了多少次(例如通過利用擦除計數(shù)),可更平均地使用系統(tǒng)中的存儲器。一種擦數(shù)計數(shù)管理技術(shù)可將擦除計數(shù)存儲在與一特定區(qū)塊相關(guān)聯(lián)的冗余區(qū)域中,該擦除計數(shù)可跟蹤該特定區(qū)塊的擦除次數(shù)。可在存儲器中建立表格,其實質(zhì)上使使用中的區(qū)塊可有效地隔離于具有相對高的擦除計數(shù)的區(qū)塊與具有相對低的擦除計數(shù)的區(qū)塊。當使用中的區(qū)塊被擦除時,該區(qū)塊可適當?shù)乇弧疤砑印钡骄哂邢鄬Ω叩牟脸嫈?shù)的區(qū)塊的表或具有相對低的擦除計數(shù)的區(qū)塊的表中。同樣,可從具有相對高的擦除計數(shù)的區(qū)塊的表或者具有相對低的擦除計數(shù)的區(qū)塊的表中將區(qū)塊“移動”到區(qū)塊映射表,即,一組使用中區(qū)塊表,以便實質(zhì)上替換任何已從該區(qū)塊映射表重新指派的區(qū)塊。
通過對區(qū)塊進行分類,由于可更有效地管理每個區(qū)塊的使用,所以可更平均地利用區(qū)塊以平均化與區(qū)塊相關(guān)聯(lián)的損耗。另外,將區(qū)塊以表格進行分類使得易于識別具有低擦除計數(shù)的區(qū)塊和具有高擦除計數(shù)的區(qū)塊,且,因此不必利用大量的計算資源。因此,損耗平衡可較有效地進行。結(jié)果大大延長了閃存系統(tǒng)的壽命而沒有顯著影響閃存系統(tǒng)的性能。
為了促進對區(qū)塊分類,在閃速存儲器中可分配一個擦除計數(shù)區(qū)塊。此區(qū)塊可經(jīng)配置以含有大體上所有可用于存儲閃速存儲器內(nèi)的數(shù)據(jù)的區(qū)塊的擦除計數(shù)。當擦除區(qū)塊時,一般擦除該區(qū)塊的擦除計數(shù)。通過將大體所有具有相關(guān)擦除計數(shù)的區(qū)塊的擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中,可易于獲得擦除區(qū)塊的擦除計數(shù),例如,通過從擦除計數(shù)區(qū)塊讀取擦除計數(shù)。
閃存系統(tǒng)或(更一般地)非易失性存儲裝置一般包括閃存卡和芯片組。通常閃存系統(tǒng)和主機系統(tǒng)結(jié)合使用,使得主機系統(tǒng)可將數(shù)據(jù)寫入閃存系統(tǒng)或從閃存系統(tǒng)讀取數(shù)據(jù)。然而,某些閃存系統(tǒng)包括嵌入式閃速存儲器和軟件,該軟件在主機上執(zhí)行以大體上充當嵌入式閃速存儲器的控制器。開始參考圖1a,將描述包括非易失性存儲裝置(例如,緊湊閃存卡或嵌入式系統(tǒng))的一般主機系統(tǒng)。主機或計算機系統(tǒng)100通常包括系統(tǒng)總線104,其允許微處理器108、隨機訪問存儲器(RAM)112和輸入/輸出電路116進行通信。應(yīng)了解主機系統(tǒng)100一般可包括其它組件,例如,顯示裝置和網(wǎng)絡(luò)連接裝置,為了說明的目的未展示。
一般來說,主機系統(tǒng)100可以獲取以下信息,其包括(但不限于)靜態(tài)圖像信息、音頻信息和視頻圖像信息。這些信息可以實時獲取,并可以以無線方式傳輸?shù)街鳈C系統(tǒng)100。雖然主機系統(tǒng)100大體上可以是任何系統(tǒng),主機系統(tǒng)100一般是諸如數(shù)字相機、攝像機、蜂窩式通信裝置、音頻播放器或視頻播放器的系統(tǒng)。然而,應(yīng)了解,主機系統(tǒng)100通??梢允谴鎯?shù)據(jù)或信息并檢索數(shù)據(jù)或信息的大體任何系統(tǒng)。
應(yī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ù)的存儲寫入器?;蛘?,主機系統(tǒng)100可以是一例如MP3播放器的裝置,其通常被配置成讀取或檢索數(shù)據(jù)而不獲取數(shù)據(jù)。
非易失性存儲裝置120(在一個實施例中是一個可移除的非易失性存儲裝置)經(jīng)配置成與總線104連接來存儲信息。一可選的接口塊130可允許非易失性存儲裝置120間接地和總線104連接。當存在時,輸入/輸出塊116用于減少總線104上的負載,如所屬領(lǐng)域的技術(shù)人員將會了解的。非易失性存儲裝置120包括非易失性存儲器124和一個可選的存儲器控制系統(tǒng)128。在一個實施例中,非易失性存儲裝置120可設(shè)置于一個單一芯片或電路小片上?;蛘撸稍谝粋€多芯片模塊上或在多個離散組件上設(shè)置非易失性存儲裝置120,該等離散組件可形成一個芯片組并可以一起用作非易失性存儲裝置120。下文將參照圖1b更詳細地描述非易失性存儲裝置120的一個實施例。
非易失性存儲器124(例如,諸如NAND閃速存儲器的閃速存儲器)被配置為存儲數(shù)據(jù),以便可按需訪問和讀取數(shù)據(jù)。應(yīng)了解,盡管非易失性存儲器124中的某些數(shù)據(jù)是不可擦除的,但適當時也可以擦除存儲在非易失性存儲器124中的數(shù)據(jù)。一般可通過存儲器控制系統(tǒng)128來控制存儲數(shù)據(jù)、讀取數(shù)據(jù)和擦除數(shù)據(jù)的過程,或當沒有存儲器控制系統(tǒng)128時,可通過由微處理器108執(zhí)行的軟件來控制。可管理非易失性存儲器124的運作,以通過使非易失性存儲器124的區(qū)域?qū)嵸|(zhì)上平均損耗而使非易失性存儲器124的壽命基本上最大化。
通常非易失性存儲裝置120被描述為包括一個可選的存儲器控制系統(tǒng)128,即一個控制器。通常,非易失性存儲裝置120可包括用于非易失性存儲器124和存儲器控制系統(tǒng)128的獨立芯片,即控制器、功能。舉例而言,盡管包括(但不限于)PC卡、緊湊快閃卡,多媒體卡和安全數(shù)字卡的非易失性存儲裝置包括可設(shè)置在獨立芯片上的控制器,但是其它非易失性存儲裝置可不包括設(shè)置在獨立芯片上的控制器。在一個其中非易失性存儲裝置120不包括獨立存儲器和控制器芯片的實施例中,可將存儲器和控制器功能集成在一個單一芯片中,如所屬領(lǐng)域的技術(shù)人員將會了解的。或者,可由微處理器108提供存儲器控制系統(tǒng)128的功能,如(例如)在一個其中非易失性存儲裝置120不包括存儲器控制器128的實施例中,如上文所述。
參考圖1b,根據(jù)本發(fā)明的一個實施例將更詳細地描述非易失性存儲裝置120。如上所述,非易失性存儲裝置120包括非易失性存儲器124且可包括存儲器控制系統(tǒng)128。存儲器124和控制系統(tǒng)128(或控制器)可以是非易失性存儲裝置120的主要組件,盡管當存儲器124是嵌入式NAND裝置時,如參考圖1c將論述的,非易失性存儲裝置120可不包括控制系統(tǒng)128。存儲器124可以是形成于半導體基板上的存儲器單元的陣列,其中通過在存儲器單元的個別存儲元件上存儲兩個或兩個以上電荷電平之一,可將一或多位數(shù)據(jù)存儲在該等個別的存儲器單元上。非易失性電可擦除可編程只讀閃存(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ù)并在操作存儲器124時執(zhí)行各種內(nèi)部管理功能??刂葡到y(tǒng)128通常包括一個通用微處理器,其具有關(guān)聯(lián)的非易失性軟件存儲器,各種邏輯電路等。通常還包括一個或多個用于控制特定例行程序的執(zhí)行的狀態(tài)機。
一般由控制系統(tǒng)128或微處理器108通過地址解碼器17來尋址存儲器單元陣列11。解碼器17對陣列11的門極線和位線施加校正電壓,以將數(shù)據(jù)編程到由控制系統(tǒng)128尋址的存儲器單元群中,自其中讀取數(shù)據(jù)或?qū)ζ溥M行擦除操作。額外電路19包括可取決于待編程入已尋址單元群的數(shù)據(jù)而控制施加到陣列的元件的電壓的編程驅(qū)動器。電路19還包括從已尋址存儲器單元群讀取數(shù)據(jù)所需的感應(yīng)放大器和其它電路。待編程入陣列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ù)目的一起擦除的存儲器單元。每個區(qū)塊通常被劃分為一定數(shù)目的頁面,如圖2的說明。頁面通常是編程的最小單元。也就是說,一個基本的編程操作將數(shù)據(jù)寫入或讀出最小一個頁面的存儲器單元。通常每個頁面內(nèi)存儲一個或一個以上數(shù)據(jù)區(qū)段。如圖1b所示,一個區(qū)段包括使用者數(shù)據(jù)和耗用數(shù)據(jù)。耗用數(shù)據(jù)通常包括錯誤校正代碼(ECC),其從區(qū)段的使用者數(shù)據(jù)中計算得出。當數(shù)據(jù)編程入陣列11時,控制系統(tǒng)128的一部分23計算ECC,且當從陣列11讀取數(shù)據(jù)時也會檢查ECC?;蛘?,ECC被存儲在與其所從屬的使用者數(shù)據(jù)不同的頁面或不同的區(qū)塊中。
使用者數(shù)據(jù)的區(qū)段通常是512個字節(jié),對應(yīng)于磁盤驅(qū)動器中的扇區(qū)的大小。耗用數(shù)據(jù)通常是額外的16個字節(jié)。最通常的情況下,在每個頁面中包括一個數(shù)據(jù)區(qū)段,但兩個或兩個以上的區(qū)段也可形成一個頁面。任何數(shù)目的頁面通??尚纬梢粋€區(qū)塊。舉例而言,可由8個到512、1024個頁面或更多的頁面形成一個區(qū)塊。區(qū)塊數(shù)被選定來為存儲器系統(tǒng)提供所要的數(shù)據(jù)存儲容量。陣列11通常被劃分為一些子陣列(未圖示),每個子陣列含有一定比例的區(qū)塊,其在某種程度上相互獨立運作以增加執(zhí)行各種存儲器操作的并行度。在美國專利第5,890,192號中描述了使用多個子陣列的實例,其全文以引用的方式并入本文中。
在一個實施例中,將如NAND閃速存儲器的非易失性存儲器嵌入系統(tǒng)中,例如,主機系統(tǒng)。圖1c是包括一個嵌入式非易失性存儲器的主機系統(tǒng)的圖解表示。主機或計算機系統(tǒng)150通常包括系統(tǒng)總線154,其允許微處理器158、RAM 162和輸入/輸出電路166、主機系統(tǒng)150的其它組件(未圖示),進行通信。非易失性存儲器174,例如,閃速存儲器,允許將信息存儲在主機系統(tǒng)150中。在非易失性存儲器174與總線154之間可提供接口180以使信息可以從非易失性存儲器174中讀取或?qū)⑵鋵懭敕且资源鎯ζ?74中。
通過微處理器158可管理非易失性存儲器174,該微處理器有效地執(zhí)行經(jīng)配置以控制非易失性存儲器174的軟件和固件。也就是說,微處理器158可以運行允許控制非易失性存儲器174的代碼裝置(未圖示),即,軟件代碼裝置或固件代碼裝置。此種可為和微處理器158內(nèi)部的CPU封裝在一起的閃速存儲器、獨立的閃存ROM或在非易失性存儲器174內(nèi)的代碼裝置(將在下文中描述)使得可尋址非易失性存儲器174中的物理區(qū)塊,并使得可將信息存儲在物理區(qū)塊中,且從其中讀取或自其擦除該信息。
當連續(xù)對特定區(qū)域(例如,圖1a的非易失性存儲器124的存儲元件)編程時,例如,反復地寫入和擦除,該特定區(qū)域一般比未被連續(xù)編程的區(qū)域損耗地更快。為了有效地“平均化”非易失性存儲器124中的不同區(qū)域的損耗,可大體上自動地執(zhí)行損耗平衡,使得被連續(xù)編程的區(qū)域經(jīng)受較少的編程,而未被連續(xù)編程的區(qū)域經(jīng)受更多的編程。
通常,為了執(zhí)行損耗平衡,一個區(qū)塊(例如,與被反復地編程的物理位置相關(guān)聯(lián)的一組區(qū)段)可以和與未被反復地編程的物理位置相關(guān)聯(lián)的區(qū)塊進行交換。也就是說,已編程且因此被反復地擦除的物理區(qū)塊可以和已編程并較少被擦除的物理區(qū)塊相交換。
在本發(fā)明的一個實施例中,為了易于判斷一個特定的物理區(qū)塊是否經(jīng)過反復編程和擦除,將一個擦除計數(shù)存儲在該區(qū)塊中。也就是說,可維護一個跟蹤區(qū)塊的擦除次數(shù)的計數(shù)器且在每次擦除區(qū)塊時加1。這樣的擦除計數(shù)可用來促進判斷一個特定的區(qū)塊是否應(yīng)該和另一個不經(jīng)常擦除的區(qū)塊進行交換。圖2是根據(jù)本發(fā)明的一個實施例的閃速存儲器的一部分的圖解表示。閃速存儲器200可被劃分為多個頁面204。每個頁面204,其一般含有約512字節(jié)的使用者數(shù)據(jù),實際上包括一個冗余區(qū)域206,例如,頁面204a包括冗余區(qū)域206a。每個冗余區(qū)域206或耗用區(qū)域可包括多達約16個字節(jié)的信息,該信息通常包括(但不限于)一個群識別符216、一個更新索引212和一個擦除計數(shù)214。
通常,在區(qū)塊210中包括任何數(shù)目的頁面204。盡管應(yīng)了解包括在區(qū)塊210中的頁面204的數(shù)目可以有很大變化,為了便于說明,展示了包括在區(qū)塊210中的頁面204a、204b。在所述實施例中,區(qū)塊210可經(jīng)配置以包括約64個頁面。舉例而言,當閃速存儲器200包括約512兆位(Mb)時,閃速存儲器200實際可被劃分為約2048個區(qū)塊,每個區(qū)塊具有64個頁面。
如先前提到的,每次從關(guān)聯(lián)區(qū)塊擦除使用者數(shù)據(jù)時擦除計數(shù)214會加1。舉例而言,與區(qū)塊210關(guān)聯(lián)的擦除計數(shù)214會在每次從區(qū)塊210擦除數(shù)據(jù)的時候加1。因為區(qū)塊210中所包括的每個頁面204a、204b通常具有擦除計數(shù)214,所以與每個頁面204a,204b關(guān)聯(lián)的擦除計數(shù)214會在擦除區(qū)塊210時加1。
一般來說,當擦除含有數(shù)據(jù)的區(qū)塊時,區(qū)塊的數(shù)據(jù)區(qū)域和冗余區(qū)域都被擦除或清空。通常將已擦除區(qū)塊添加到備用區(qū)塊池中,所述備用區(qū)塊池含有與其它已擦除區(qū)塊(例如,其它表格的已擦除區(qū)塊)的擦除計數(shù)相比具有較小擦除計數(shù)的已擦除區(qū)塊。備用區(qū)塊表實質(zhì)上可以是最不頻繁擦除區(qū)塊表,在下文會有所描述。在本發(fā)明的一個實施例中,將具有大擦除計數(shù)的擦除區(qū)塊添加到含有擦除區(qū)塊的池中,該等擦除區(qū)塊含有比其它表的擦除區(qū)塊更大的擦除計數(shù)。含有具有大擦除計數(shù)的擦除區(qū)塊的池可以是最不頻繁擦除區(qū)塊表,其在下文也有所描述。一個剛擦除的區(qū)塊的擦除計數(shù)會加1,且取決于計數(shù)值而保存在最不頻繁擦除區(qū)塊表或最頻繁擦除區(qū)塊表中。
返回到圖2,在初始化請求期間可訪問如擦除計數(shù)214的擦除計數(shù)。當出現(xiàn)下列情況時可發(fā)出初始化請求,例如,當系統(tǒng)(例如包括嵌入式閃存的系統(tǒng))加電時,當系統(tǒng)內(nèi)的備用區(qū)塊短缺時,當使用者發(fā)出平衡區(qū)塊分配的請求時,以及當使用者發(fā)出使區(qū)塊使用更平均的請求時。圖3是根據(jù)本發(fā)明的一個實施例的處理流程圖,其說明與處理有關(guān)閃存系統(tǒng)的初始化請求相關(guān)聯(lián)的步驟。一般來說,可由使用者起始初始化請求,或由與閃存系統(tǒng)關(guān)聯(lián)的控制器大體上自動地起始初始化請求,(例如)定期地或當滿足觸發(fā)條件時。響應(yīng)初始化請求的過程300在步驟304開始,其中實際接收初始化請求??捎膳c待初始化閃存通信的處理器或控制器接收初始化請求。例如,可由使用者經(jīng)由主機在加電時或當要平衡區(qū)塊分配時提供此請求。
一旦接收初始化請求,就在步驟306中獲得平均擦除計數(shù)。在一個實施例中,平均擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中,其被寫入與該系統(tǒng)關(guān)聯(lián)的NAND存儲器中。所述擦除計數(shù)區(qū)塊(ECB)含有平均擦除計數(shù)且每個區(qū)塊的擦除計數(shù)被存儲于閃速存儲器的一個區(qū)塊中。應(yīng)了解當產(chǎn)生擦除計數(shù)區(qū)塊時,例如,當最初格式化該系統(tǒng)時,通常將平均擦除計數(shù)和在表格中的每個區(qū)塊的擦除計數(shù)初始化為零值。在下文將關(guān)于圖8a描述擦除計數(shù)區(qū)塊。獲得平均擦除計數(shù)之后,獲得在該系統(tǒng)中的大體所有區(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ū)塊表、最不頻繁擦除區(qū)塊表或區(qū)塊映射表。閃速存儲器中具有相關(guān)擦除計數(shù)的大體所有物理區(qū)塊的擦除計數(shù)可存儲在閃速存儲器的擦除計數(shù)區(qū)塊中。含有數(shù)據(jù)的區(qū)塊的擦除計數(shù)通常屬于區(qū)塊映射表并存儲在冗余或耗用區(qū)域。屬于區(qū)塊映射表的擦除區(qū)塊的擦除計數(shù)具有零擦除計數(shù),因為該區(qū)塊實際從未使用。從最不頻繁擦除區(qū)塊表或最頻繁擦除區(qū)塊表中獲得擦除計數(shù)涉及從該表中得到所述值,因為該等表的每一項一般含有擦除區(qū)塊的區(qū)塊號與其擦除計數(shù)。當完成初始化請求的處理時,通常用所有區(qū)塊的當前擦除計數(shù)來更新該擦除計數(shù)區(qū)塊。
在步驟320中,在系統(tǒng)存儲器(例如,主機系統(tǒng)存儲器)中分配區(qū)塊映射表。如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,區(qū)塊映射表可經(jīng)配置以提供在邏輯區(qū)塊地址(LBA)與物理區(qū)塊地址之間的映射。此外,在步驟320中還分配最頻繁擦除區(qū)塊表和最不頻繁擦除區(qū)塊表。
通常,最頻繁擦除區(qū)塊表的大小被設(shè)定或以其它方式配置成可有效地保持有關(guān)被最頻繁地擦除的擦除區(qū)塊的信息。也就是說,最頻繁擦除區(qū)塊經(jīng)配置以保持有關(guān)系統(tǒng)中的具有最高擦除計數(shù)的擦除區(qū)塊的信息,例如,擦除計數(shù)和映射信息。類似地,通常最不頻繁擦除區(qū)塊表的大小被設(shè)定或以其它方式配置成可有效地容納具有最低擦除計數(shù)的擦除區(qū)塊的信息。盡管最頻繁擦除區(qū)塊表的大小和最不頻繁擦除區(qū)塊表的大小可以有很大變化,但是所述表的大小取決于待指派為最頻繁擦除的區(qū)塊數(shù)和待指派為最不頻繁擦除的區(qū)塊數(shù)。通常,與最不頻繁擦除區(qū)塊表相比,最頻繁擦除區(qū)塊表的大小一般被設(shè)定成容納較少擦除區(qū)塊的信息。舉例而言,最頻繁擦除區(qū)塊表的大小可設(shè)定成容納約十八個擦除區(qū)塊的信息,而最不頻繁擦除區(qū)塊表的大小可設(shè)定成容納有關(guān)約七十個擦除區(qū)塊的信息。或者,最頻繁擦除區(qū)塊表的大小可設(shè)定成容納約十個擦除區(qū)塊的信息,而最不頻繁擦除區(qū)塊表的大小可設(shè)定成容納約五十個擦除區(qū)塊的信息。
在步驟320分配了表之后,在步驟324中識別擦除區(qū)塊。接著,在步驟328中,可將“N”個擦除區(qū)塊指派給最頻繁擦除區(qū)塊并實質(zhì)上指派給最頻繁擦除的表。在一個實施例中,“N”個擦除區(qū)塊可以是具有通過比較所有擦除計數(shù)而判定的最高擦除計數(shù)的“N”個擦除區(qū)塊?;蛘?,基于與在步驟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ū)塊和含有數(shù)據(jù)且不在相關(guān)冗余區(qū)域中的區(qū)塊與區(qū)塊映射表相關(guān)聯(lián)。
在(例如)用與對應(yīng)區(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ū)塊??烧J為含有數(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ū)塊的擦除計數(shù)一般大大低于閃速存儲器內(nèi)的大部分區(qū)塊的擦除計數(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ū)塊(即,圖3的步驟342)相關(guān)聯(lián)的步驟。在步驟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ù)的分數(shù)相關(guān)聯(lián)的值更低來作出該判斷。例如,當該擦除計數(shù)比平均擦除計數(shù)的預定百分比更少時,可認為區(qū)塊“A”的擦除計數(shù)低。
如果在步驟408中判定區(qū)塊“A”的擦除計數(shù)與平均擦除計數(shù)相比不是很低,就指示區(qū)塊“A”很可能不是靜態(tài)區(qū)塊。應(yīng)了解盡管即使不認為區(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”中含有的使用者數(shù)據(jù)復制到區(qū)塊“B”中。一旦將區(qū)塊“A”的內(nèi)容復制到區(qū)塊“B”中,就在步驟424擦除區(qū)塊“A”。通常,當擦除區(qū)塊“A”時,與區(qū)塊“A”相關(guān)的擦除計數(shù)遞增1。在步驟428中,一個區(qū)塊,例如,區(qū)塊“C”,可以從最不頻繁擦除區(qū)塊群被移到最頻繁擦除區(qū)塊群中,以使得區(qū)塊“C”的關(guān)聯(lián)從最不頻繁擦除區(qū)塊表實際上改變到最頻繁擦除區(qū)塊表。換句話說,解除區(qū)塊“C”與最不頻繁擦除區(qū)塊表的關(guān)聯(lián)而與最頻繁擦除區(qū)塊表相關(guān)聯(lián)。此移動允許實際地打開最不頻繁擦除區(qū)塊表中的一個空間以容納區(qū)塊“A”,區(qū)塊“A”具有低擦除計數(shù)并因此是該系統(tǒng)中最不頻繁擦除區(qū)塊之一。通常,區(qū)塊“C”是最不頻繁擦除區(qū)塊表中具有最高擦除計數(shù)的區(qū)塊。
在將區(qū)塊“C”從最不頻繁擦除區(qū)塊群中移出或以其它方式解除區(qū)塊“C”與最不頻繁擦除區(qū)塊群的關(guān)聯(lián),處理流程從步驟428移到步驟432,其中在步驟432中實際上將區(qū)塊“A”從區(qū)塊映射表移到最不頻繁擦除區(qū)塊表中。接著,在步驟434中,使包括先前包含于區(qū)塊“A”中的內(nèi)容的區(qū)塊“B”與區(qū)塊映射表相關(guān)聯(lián)。如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,將區(qū)塊“B”“移動”到區(qū)塊映射表中通常包括將過去與區(qū)塊“A”相關(guān)聯(lián)的邏輯區(qū)塊地址映射更新為現(xiàn)在與區(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ū)塊的過程即告完成。應(yīng)了解,可重復過程342直到已識別并處理了與一系統(tǒng)相關(guān)聯(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ù)也是如此。也將平均擦除計數(shù)和每個區(qū)塊的擦除計數(shù)寫入擦除計數(shù)區(qū)塊。圖5a為根據(jù)本發(fā)明的一個實施例的系統(tǒng)存儲器的圖解方塊圖表示。在整個系統(tǒng)中包括系統(tǒng)存儲器454和閃速存儲器460,且其實際上可以是(例如)存儲卡的組件或主機裝置的組件,其中嵌入如NAND存儲器的閃速存儲器460。系統(tǒng)存儲器454經(jīng)配置以存儲區(qū)塊映射表462,通過該表可將區(qū)塊關(guān)聯(lián)。通常,可使用區(qū)塊映射表462以便將LBA和與閃速存儲器460關(guān)聯(lián)的物理區(qū)塊相關(guān)聯(lián)。
系統(tǒng)存儲器454還保持有最不頻繁擦除區(qū)塊表466和最頻繁擦除區(qū)塊表470,其一般響應(yīng)初始化請求而形成,和區(qū)塊映射表一樣462。當格式化整個閃存系統(tǒng)時創(chuàng)建平均擦除計數(shù)474,其經(jīng)配置以保持閃速存儲器460內(nèi)的區(qū)塊的平均擦除計數(shù)。在一個實施例中,擦除計數(shù)區(qū)塊480經(jīng)配置以含有閃速存儲器460中的大體所有區(qū)塊465的擦除計數(shù)。每發(fā)出一次初始化請求,可計算更新的平均擦除計數(shù),并將其存儲在擦除計數(shù)區(qū)塊480中。
圖5b為根據(jù)本發(fā)明的實施例的“普通”區(qū)塊群、最不頻繁擦除區(qū)塊群和最頻繁擦除區(qū)塊群的圖解表示。區(qū)塊群502包括區(qū)塊514,其可以是通常含有使用者數(shù)據(jù)的普通或靜態(tài)區(qū)塊,或其可以被擦除但不是最頻繁擦除區(qū)塊或最不頻繁擦除區(qū)塊。最不頻繁擦除區(qū)塊群506一般包括整個系統(tǒng)中的擦除區(qū)塊中的具有最低擦除計數(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進行排序。該排序通常反映在一個對應(yīng)的最不頻繁擦除區(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ū)塊群506中取出。通常,當擦除含有無用數(shù)據(jù)的區(qū)塊514時,所述區(qū)塊514可存儲到最不頻繁擦除區(qū)塊群506中,且從而可更新最不頻繁擦除區(qū)塊表,即,可將對應(yīng)于所添加區(qū)塊的項包含于最不頻繁擦除區(qū)塊表中。
和存儲在最不頻繁擦除區(qū)塊群506中的區(qū)塊518類似的,最頻繁擦除區(qū)塊群510中的區(qū)塊522也可基于擦除計數(shù)而大體上被排序。通常通過對在用于識別區(qū)塊522的最頻繁擦除區(qū)塊表(未圖示)中的項進行排序而實施排序過程。在一個實施例中,可計算與區(qū)塊522關(guān)聯(lián)的平均擦除計數(shù),即,可判定最頻繁擦除區(qū)塊群510的平均擦除計數(shù)。當從群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ū)塊分配用于群502中的時候,皆會發(fā)生區(qū)塊的交換或更新。接著參考圖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ū)塊群中具有最低擦除計數(shù)的區(qū)塊,盡管應(yīng)了解,區(qū)塊“X”可以是和最不頻繁擦除區(qū)塊群(且因此,最不頻繁擦除區(qū)塊表)相關(guān)聯(lián)的大體上任何區(qū)塊。在步驟612中,將存儲在區(qū)塊“Y”中的數(shù)據(jù)或即將替換區(qū)塊“Y”的初始內(nèi)容的新內(nèi)容復制到區(qū)塊“X”中。
在將區(qū)塊“Y”的內(nèi)容復制到區(qū)塊“X”中之后,在步驟616中,將區(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)容(例如,使用者內(nèi)容)。接著在步驟624中,與區(qū)塊“Y”關(guān)聯(lián)的擦除計數(shù)(其存儲在與區(qū)塊“Y”關(guān)聯(lián)的冗余區(qū)域中)加1以指示區(qū)塊“Y”已再一次被擦除。應(yīng)了解,在一個實施例中,實際存儲在擦除計數(shù)區(qū)塊中的“Y”的擦除計數(shù)可更新。
在步驟628中,識別在最頻繁擦除區(qū)塊表中的具有最低擦除計數(shù)的區(qū)塊。如上所述,在一個實施例中,在最頻繁擦除區(qū)塊表中所參考的區(qū)塊根據(jù)其各自的擦除計數(shù)被排序。對區(qū)塊進行排序可包括根據(jù)區(qū)塊的擦除計數(shù)來定位對最頻繁擦除區(qū)塊表中的區(qū)塊的參考。因此,識別具有最低擦除計數(shù)的區(qū)塊通常涉及訪問在最頻繁擦除區(qū)塊表中的位置上的區(qū)塊參考,該位置被配置成容納具有最低擦除計數(shù)的區(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ū)塊表中,即,將對應(yīng)于區(qū)塊“Y”的項添加到最不頻繁擦除區(qū)塊表中。應(yīng)了解,在一個實施例中,將區(qū)塊“Y”移到最不頻繁擦除區(qū)塊群中可包括使用每個區(qū)塊的擦除計數(shù)來重新對最不頻繁擦除區(qū)塊表中的大體上所有區(qū)塊參考進行排序。在將區(qū)塊“Y”實際上移到最不頻繁擦除區(qū)塊表中之后,便完成交換或更新區(qū)塊的過程。
返回步驟632,如果在步驟632中判定區(qū)塊“Y”的擦除計數(shù)超過了與最頻繁擦除區(qū)塊表關(guān)聯(lián)的最低擦除計數(shù),那么指示區(qū)塊“Y”應(yīng)該被移到最頻繁擦除區(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ū)塊(包括區(qū)塊“Y”)的擦除計數(shù)來對最頻繁擦除區(qū)塊重新排序。當區(qū)塊“Y”實際上被移到最頻繁擦除區(qū)塊表中時,便完成交換或更新區(qū)塊的過程。
一般來說,以軟件形式(例如作為程序代碼裝置或作為固件)向主機系統(tǒng)提供與維護表、處理初始化請求和執(zhí)行損耗平衡(例如,響應(yīng)于交換或者更新區(qū)塊的請求)相關(guān)聯(lián)的功能。圖7顯示與提供到一個主機系統(tǒng)以實現(xiàn)損耗平衡的軟件或固件相關(guān)聯(lián)的合適系統(tǒng)架構(gòu)的一個實施例。系統(tǒng)架構(gòu)700通常包括各種模塊,該等模塊可包括(但不限于)應(yīng)用程序接口模塊704、系統(tǒng)管理器模塊708、數(shù)據(jù)管理器模塊712、數(shù)據(jù)完整性管理器(data integritymanager)716和裝置管理器及接口模塊720。一般來說,可使用可由處理器(例如圖1a的處理器108)訪問的軟件代碼裝置或固件來實施系統(tǒng)架構(gòu)700。
一般來說,應(yīng)用程序接口模塊704可配置成與主機、操作系統(tǒng)或直接與使用者進行通信。應(yīng)用程序接口模塊704還與系統(tǒng)管理器模塊708和數(shù)據(jù)管理器模塊712進行通信。當使用者要讀取、寫入或格式化閃速存儲器時,使用者發(fā)送請求到操作系統(tǒng),該等請求被傳到應(yīng)用程序接口模塊704。應(yīng)用程序接口模塊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ù)區(qū)塊中)的功能和使用個別的擦除計數(shù)計算并更新平均擦除計數(shù)的功能。換句話說,擦除計數(shù)區(qū)塊管理子模塊726實際上允許對擦除計數(shù)進行分類并允許維護一個平均擦除計數(shù)。另外,在一個實施例中,在整個系統(tǒng)的初始化請求期間,擦除計數(shù)區(qū)塊管理子模塊726還大體上與擦除計數(shù)區(qū)塊中的大體所有區(qū)塊的擦除計數(shù)同步。雖然擦除計數(shù)區(qū)塊管理子模塊726可經(jīng)配置使平均擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中,但是應(yīng)了解電源管理區(qū)塊子模塊730可代替其用于允許存儲平均擦除計數(shù)。
除了與應(yīng)用程序接口模塊704通信之外,系統(tǒng)管理器模塊708還與數(shù)據(jù)管理器模塊712和裝置管理器及接口模塊720進行通信。與系統(tǒng)管理器模塊708和應(yīng)用程序接口模塊704通信的數(shù)據(jù)管理器模塊712可包括提供頁面或區(qū)塊映射的功能。數(shù)據(jù)管理器模塊712還可包括與操作系統(tǒng)和文件系統(tǒng)接口層相關(guān)聯(lián)的功能。
與系統(tǒng)管理器模塊708、數(shù)據(jù)管理器712和數(shù)據(jù)完整性管理器716進行通信的裝置管理器和接口模塊720通常提供一個閃速存儲器接口,并且包括與硬件抽象(例如一個I/O接口)關(guān)聯(lián)的功能。數(shù)據(jù)完整性管理器模塊716提供ECC處理功能。
如上所述,在非易失性存儲系統(tǒng)中的每個區(qū)塊的擦除計數(shù)可存儲在擦除計數(shù)區(qū)塊中,其為存儲在與該非易失性存儲器系統(tǒng)關(guān)聯(lián)的系統(tǒng)或NAND存儲器中的保留區(qū)塊。所述擦除計數(shù)區(qū)塊除含有每個區(qū)塊的擦除計數(shù)之外還可含有平均擦除計數(shù)。圖8a是根據(jù)本發(fā)明的一個實施例的擦除計數(shù)區(qū)塊的圖解表示。一般擦除計數(shù)區(qū)塊800的大小經(jīng)設(shè)定使得擦除計數(shù)區(qū)塊800包括確定數(shù)目的位,該等位用于包括擦除計數(shù)區(qū)塊800的整個非易失性系統(tǒng)中的每個區(qū)塊,即物理區(qū)塊。可選擇實際上分配給每個區(qū)塊的位之數(shù)目使得已分配的位可容納區(qū)塊的整個擦除計數(shù)。在一個實施例中,擦除計數(shù)區(qū)塊800對于每個區(qū)塊可包括約三個字節(jié),因為三個字節(jié)一般足以容納約為十萬的擦除計數(shù)。當為每個區(qū)塊分配三個字節(jié)時,在包括約2048個區(qū)塊(每區(qū)塊約64個頁面)的512Mb系統(tǒng)中,擦除計數(shù)區(qū)塊800的大小可設(shè)定成包括約12個頁面,例如,約六千個字節(jié)。
擦除計數(shù)區(qū)塊800包括頁面810,如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,該等頁面通常包括可用于存儲如擦除計數(shù)的數(shù)據(jù)的512個字節(jié)。如圖所示,第一個頁面810a可經(jīng)配置以含有區(qū)塊‘0’到‘169’的擦除計數(shù)項,而第二個頁面810b可經(jīng)配置以含有區(qū)塊‘170’到‘339’的擦除計數(shù)項。
如下文將有關(guān)圖8b和8c所描述的,因為第一個頁面810a的第三到五個字節(jié)經(jīng)配置以含有對應(yīng)于區(qū)塊‘1’的擦除計數(shù)項,所以當要寫入或讀取區(qū)塊‘1’(即,物理區(qū)塊‘1’)的擦除計數(shù)時,可以訪問第一個頁面810a的第三到五個字節(jié)。
除包括頁面810之外,擦除計數(shù)區(qū)塊800還包括一般可處于擦除計數(shù)區(qū)塊800中的大體任何地方的標頭820。下文將參考圖9加以論述的標頭820可以是擦除計數(shù)區(qū)塊800中的頁面,其包括有關(guān)非易失性閃速存儲器的信息,該非易失性閃速存儲器包括與存儲在頁面810中的擦除計數(shù)相關(guān)聯(lián)的區(qū)塊。
圖8b為根據(jù)本發(fā)明的一個實施例的在擦除計數(shù)區(qū)塊中的一個頁面(例如,圖8a的擦除計數(shù)區(qū)塊800的頁面810a)的圖解表示。頁面810經(jīng)配置以保持對應(yīng)于約一百七十個物理區(qū)塊的項830。如圖示,項830含有區(qū)塊的擦除計數(shù)使得頁面810a中的第一項830a經(jīng)配置以含有區(qū)塊‘0’的擦除計數(shù),且第二項830b經(jīng)配置以含有區(qū)塊‘1’的擦除計數(shù)。頁面810a的最末項830d經(jīng)配置以保持區(qū)塊‘169’的擦除計數(shù)。
每一項830包括大體上相同字節(jié)數(shù)。如圖8c所示,對應(yīng)于區(qū)塊‘0’的項830a可以是在頁面810a中的第零到二個字節(jié),而對應(yīng)于區(qū)塊‘2’的項830c可以是在頁面810a中的第六到八個字節(jié)。如先前提到的,每一項830可包括約三個字節(jié),盡管應(yīng)了解在每一項830中的字節(jié)數(shù)及因此在頁面810a的項830數(shù)會有所變化。舉例而言,在一個實施例中,每一項830可包括約四個字節(jié)。
盡管頁面810a中的每一項830經(jīng)配置以含有擦除計數(shù),但是項830可不必含有擦除計數(shù)。例如,當由于制造或工廠缺陷導致特定區(qū)塊不能使用且不可寫入或從其中讀取,該區(qū)塊一般將不具有擦除計數(shù)。如此,如圖8a的擦除計數(shù)區(qū)塊800的擦除計數(shù)區(qū)塊一般將不具有含有不可用區(qū)塊的擦除計數(shù)的項?;蛘?,代替保持擦除計數(shù),不可用區(qū)塊的項830可以保持經(jīng)配置以將區(qū)塊識別為不可用的指示符或標記。
圖8d為根據(jù)本發(fā)明的一個實施例的在一個擦除計數(shù)區(qū)塊中的一個頁面(例如,圖8a的擦除計數(shù)區(qū)塊800的頁面810a)的圖解表示,其含有擦除計數(shù)和指示特定區(qū)塊為不可用的項。當一個區(qū)塊可使用,或可寫入或讀取時,該區(qū)塊一般將具有一個擦除計數(shù)。舉例而言,當已擦除區(qū)塊‘0’一百次時,頁面810a的項830a可含有值‘100’,該頁面經(jīng)配置以含有對應(yīng)于區(qū)塊‘0’的擦除計數(shù)。類似地,當已擦除區(qū)塊‘1’三十次時,頁面810a的項830b可含有值‘30’。
如果例如通過存儲在區(qū)塊‘2’中的標記已經(jīng)將區(qū)塊‘2’識別為不可用的區(qū)塊,那么對應(yīng)于區(qū)塊‘2’的頁面810a的項830c可含有經(jīng)配置以指示區(qū)塊‘2’不能使用的標記。在一個實施例中,在項830c中的標記‘FFFFFF’可指示由于工廠缺陷,區(qū)塊‘2’不可用。應(yīng)了解大體上任何標記皆可用于指示區(qū)塊不可用。
如上所述,如圖8a中的擦除計數(shù)區(qū)塊800的擦除計數(shù)區(qū)塊一般包括標頭820,在一個實施例中,標頭820為擦除計數(shù)區(qū)塊800中的頁面,其包含一般有關(guān)于非易失性存儲系統(tǒng)中的區(qū)塊的信息。接著參考圖9,根據(jù)本發(fā)明的一個實施例,將描述擦除計數(shù)區(qū)塊的標頭,例如,圖8a的擦除計數(shù)區(qū)塊800的標頭820??商幱诓脸嫈?shù)區(qū)塊中的大體任何地方的標頭820可包括可用于存儲信息的約512個字節(jié)。存儲在標頭820中的信息一般包括簽名850a,其可用于安全核查。除涉及非易失性存儲器中的保留區(qū)塊850d的數(shù)目的信息850d之外,涉及非易失性存儲器中的隱藏區(qū)塊數(shù)的信息850c也可包括在標頭820中。信息850f可包括包含在非易失性存儲器中的區(qū)塊的總數(shù),且平均擦除計數(shù)被存儲為標頭820中的信息850g。雖然平均擦除計數(shù)可存儲在非易失性存儲系統(tǒng)的系統(tǒng)存儲器中的大體上任何地方,但是,在所述實施例中,將平均擦除計數(shù)存儲為標頭820中的信息850g。
在一個實施例中,也可將有關(guān)不可用區(qū)塊總數(shù)的信息850e包括在標頭820中。不可用區(qū)塊的總數(shù)可包括包含工廠缺陷的不可用區(qū)塊的總數(shù)和包含成長缺陷的不可用區(qū)塊的總數(shù)。雖然應(yīng)了解標頭820的內(nèi)容一般可以有很大變化,但是標頭820還可包括額外信息850b。額外信息850b可包括(但不限于)分區(qū)信息850b,其可包括有關(guān)在非易失性存儲器(例如,在NAND閃速存儲器芯片或MLC NAND閃速存儲器)中的分區(qū)的大小的信息。如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,分區(qū)信息還可包括(但不限于)柱面、磁頭和區(qū)段信息。
應(yīng)了解標頭820一般可包括其它內(nèi)容。舉例而言,標頭820可包括有關(guān)使用中的或可供使用的可用區(qū)塊總數(shù)的信息?;蛘撸瑯祟^820可維護有關(guān)具有工廠缺陷的區(qū)塊數(shù)和具有成長缺陷的區(qū)塊數(shù)的信息。包括在標頭820中的其它內(nèi)容可包括(但不限于)經(jīng)配置以大體上識別擦除計數(shù)區(qū)塊的修訂或版本的修訂號。
當最初將功率提供給包括擦除計數(shù)區(qū)塊的非易失性存儲系統(tǒng)時,一般初始化或以其它方式創(chuàng)建擦除計數(shù)區(qū)塊。換句話說,當初次格式化非易失性存儲系統(tǒng)的非易失性存儲器時通常會初始化擦除計數(shù)區(qū)塊。參考圖10,根據(jù)本發(fā)明的一個實施例描述與一種方法相關(guān)聯(lián)的步驟,當初次格式化非易失性存儲系統(tǒng)的非揮發(fā)性存儲器時,該方法初始化擦除計數(shù)區(qū)塊。過程1000在步驟1004開始,在該步驟中將檢查在非易失性存儲系統(tǒng)中的所有區(qū)塊,或更明確地說,所有物理區(qū)塊。檢查該等區(qū)塊可包括檢查所述區(qū)塊的內(nèi)容以判斷哪一個區(qū)塊可能不可用(即,由非易失性存儲器的制造商識別為不可用)。從而,在步驟1008中,識別在非易失性存儲器中的不可用的區(qū)塊。識別該等不可用的區(qū)塊可涉及識別含有標記(例如,如‘FFFFFF’的特定標記)的每個區(qū)塊,已知該標記將區(qū)塊識別為具有或以其它方式包括工廠缺陷。
一旦大體上識別了所有不可用的區(qū)塊,就在步驟1012中,在擦除計數(shù)區(qū)塊中將不可用的區(qū)塊標記為或以另外方式識別為不可用的。將特定區(qū)塊標記為不可用的可包括將特定標記或代碼(其將該區(qū)塊識別為不可用)放入擦除計數(shù)區(qū)塊的為該區(qū)塊保留的部分中。應(yīng)了解在擦除計數(shù)區(qū)塊中標記不可用區(qū)塊通常還包括更新該擦除計數(shù)區(qū)塊的標頭以包括非易失性存儲器中的不可用區(qū)塊的總數(shù)的計數(shù)。
在擦除計數(shù)區(qū)塊中標記不可用區(qū)塊之后,在步驟1016中初始化未經(jīng)擦除的可用區(qū)塊或不具有工廠缺陷的區(qū)塊的擦除計數(shù)。初始化所述擦除計數(shù)可包括將未擦除的每個區(qū)塊的擦除計數(shù)設(shè)定為零值。區(qū)塊的擦除計數(shù)一般存儲在與該區(qū)塊關(guān)聯(lián)的冗余或耗用區(qū)域中的至少一個區(qū)域中。在步驟1020中接著可在擦除計數(shù)區(qū)塊中設(shè)定對應(yīng)于可用區(qū)塊(已擦除和未擦除的可用區(qū)塊)的擦除計數(shù)。通常,可將存儲在擦除計數(shù)區(qū)塊中的擦除計數(shù)設(shè)定或以其它方式初始化為零值,或在未擦除的區(qū)塊的情況下,將擦除計數(shù)設(shè)定為存儲在其對應(yīng)未擦除區(qū)塊中的擦除計數(shù)相同的值。換句話說,未擦除的區(qū)塊的擦除計數(shù)一般與存儲在擦除計數(shù)區(qū)塊中的對應(yīng)于該區(qū)塊的位置中的擦除計數(shù)相同。一旦將所述擦除計數(shù)設(shè)定為在擦除計數(shù)區(qū)塊中的項時,就可在步驟1034中在擦除計數(shù)區(qū)塊中設(shè)定平均擦除計數(shù)。如先前所述,平均擦除計數(shù)可存儲在擦除計數(shù)區(qū)塊的標頭中。當將可用區(qū)塊的擦除計數(shù)都初始化為零值時,就最初可將平均擦除計數(shù)設(shè)定為零值。在設(shè)定所述平均擦除計數(shù)之后就完成了包括在非易失性存儲系統(tǒng)中的非易失性存儲器的格式化過程。
在非易失性存儲系統(tǒng)中每處理初始化過程一次,就可更新擦除計數(shù)區(qū)塊中的項。接著參考圖11,根據(jù)本發(fā)明的一個實施例將描述與一種方法關(guān)聯(lián)的步驟,該方法響應(yīng)一個初始化請求而更新一個擦除計數(shù)區(qū)塊。更新擦除計數(shù)區(qū)塊的過程1100在步驟1108開始,其中獲得一個未擦除的可用區(qū)塊。如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,未擦除的可用區(qū)塊一般含有數(shù)據(jù),且其實際上在使用。在步驟1108中獲得在擦除計數(shù)區(qū)塊中所存儲的用于未擦除的可用區(qū)塊的擦除計數(shù)。換句話說,讀取擦除計數(shù)區(qū)塊中的對應(yīng)于未擦除的可用區(qū)塊的擦除計數(shù)的項。一旦讀取了用于在步驟1108中獲得的未擦除的可用區(qū)塊的擦除計數(shù)的項,就在步驟1116中判斷所述擦除計數(shù)項的值是否小于存儲在未擦除的可用區(qū)塊中的擦除計數(shù)。
如果在步驟1116中判定存儲在擦除計數(shù)區(qū)塊中的用于未擦除的可用區(qū)塊的擦除計數(shù)項小于存儲在未擦除的可用區(qū)塊中的擦除計數(shù),那么指示存儲在擦除計數(shù)區(qū)塊中的擦除計數(shù)項不是最新的。因此,處理流程自步驟1116移到步驟1120,在該步驟中更新作為對應(yīng)于未擦除的可用區(qū)塊的項而存儲在擦除計數(shù)區(qū)塊中的擦除計數(shù)。更新擦除計數(shù)項一般涉及將未擦除的可用區(qū)塊的當前擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中。一旦更新了擦除計數(shù)項,在步驟1124中作出有關(guān)是否有更多的未擦除的可用區(qū)塊要處理的判斷。
當在步驟1124中判定有更多未擦除的可用區(qū)塊要處理時,處理流程就返回到步驟1108,在其中獲得另一個未擦除的可用區(qū)塊?;蛘?,當判定已處理大體上所有未擦除的可用區(qū)塊時,例如,已更新擦除計數(shù)區(qū)塊中的用于大體所有未擦除的可用區(qū)塊的擦除計數(shù)項時,在步驟1128中重新計算在非易失性存儲器中的所有可用區(qū)塊的平均擦除計數(shù)。如所屬領(lǐng)域的技術(shù)人員應(yīng)了解的,可通過對存儲在擦除計數(shù)區(qū)塊中的所有擦除計數(shù)取和,接著將該和除以存儲在擦除計數(shù)區(qū)塊中的擦除計數(shù)的數(shù)目來判定平均擦除計數(shù)。在重新計算平均擦除計數(shù)之后,在步驟1132中將重新計算的平均擦除計數(shù)存儲在擦除計數(shù)區(qū)塊中。如先前提到的,平均擦除計數(shù)可存儲在擦除計數(shù)區(qū)塊的標頭中。一旦存儲了平均擦除計數(shù),就完成了響應(yīng)初始化請求而更新擦除計數(shù)區(qū)塊的過程。
返回到步驟1116,當判定擦除計數(shù)區(qū)塊中的用于所獲得的未擦除可用區(qū)塊的擦除計數(shù)項不少于存儲在所獲得的未擦除的可用區(qū)塊中的擦除計數(shù)時,就暗示著在擦除計數(shù)區(qū)塊中的擦除計數(shù)項是最新的。如此,處理流程大體上自步驟1116直接移到步驟1124,在該步驟中判斷是否有更多未擦除的可用區(qū)塊要處理。
如先前所述,區(qū)塊的擦除計數(shù)存儲在與該區(qū)塊關(guān)聯(lián)的冗余或耗用區(qū)域中的至少一個區(qū)域中。舉例而言,區(qū)塊的擦除計數(shù)可至少存儲在與區(qū)塊內(nèi)的第一頁面相關(guān)聯(lián)的冗余區(qū)域中。然而,當擦除區(qū)塊時,通常擦除區(qū)塊的包括擦除計數(shù)的大體所有的內(nèi)容。因此,當獲得擦除區(qū)塊以供使用時,即,當從諸如最不頻繁擦除區(qū)塊表的備用區(qū)塊池中獲得擦除區(qū)塊時,擦除區(qū)塊將不包括擦除計數(shù)。
通常,可從擦除計數(shù)區(qū)塊中讀取從供使用的備用區(qū)塊池中獲得的擦除區(qū)塊(即,備用區(qū)塊)的擦除計數(shù)。圖12為根據(jù)本發(fā)明的一個實施例說明與一種方法相關(guān)聯(lián)的步驟的處理流程圖,該方法獲得一個備用區(qū)塊的擦除計數(shù)。在步驟1204開始獲得備用區(qū)塊的擦除計數(shù)1200的過程,其中從擦除計數(shù)區(qū)塊中讀取所獲得的備用區(qū)塊的擦除計數(shù)項。明確地說,讀取存儲在擦除計數(shù)區(qū)塊中的對應(yīng)于備用區(qū)塊的擦除計數(shù)的該等位。接著在步驟1208中作出有關(guān)在擦除計數(shù)項中的該等位是否有效的判斷。也就是說,判斷用于備用區(qū)塊的擦除計數(shù)項中的該等位是否表示先前所存儲的擦除計數(shù),或用于備用區(qū)塊的擦除計數(shù)項中的該等位是否表示其它事物,例如,該等位是否由于成長缺陷而將備用區(qū)塊識別為先前不可用的。如果在步驟1208中判定從擦除計數(shù)區(qū)塊中讀取的擦除計數(shù)項、或擦除計數(shù)實際上不是有效的擦除計數(shù),那么處理流程從步驟1208移到步驟1212,其中將該區(qū)塊從備用區(qū)塊池中移除。一旦從備用區(qū)塊池中移除該區(qū)塊,實際上就完成了獲得備用區(qū)塊的擦除計數(shù)的過程。
或者,如果在步驟1208中判定擦除計數(shù)區(qū)塊中的用于備用區(qū)塊的擦除計數(shù)項的內(nèi)容用作擦除計數(shù)有效,那么處理流程從步驟1208繼續(xù)到步驟1216,其中將擦除計數(shù)項的內(nèi)容設(shè)定為備用區(qū)塊的擦除計數(shù)。換句話說,如果從擦除計數(shù)區(qū)塊中讀取的用于備用區(qū)塊的擦除計數(shù)是有效的擦除計數(shù),那么將從擦除計數(shù)區(qū)塊中讀取的擦除計數(shù)設(shè)定為備用區(qū)塊的實際擦除計數(shù)。在將備用區(qū)塊的擦除計數(shù)設(shè)定為從擦除計數(shù)區(qū)塊中讀取的擦除計數(shù)之后,完成獲得備用區(qū)塊的擦除計數(shù)的過程。
雖然僅描述了本發(fā)明的一些實施例,但是應(yīng)了解在不偏離本發(fā)明的精神或范疇情況下可通過許多其它具體形式來體現(xiàn)本發(fā)明。舉例而言,擦除計數(shù)區(qū)塊的大小和在該擦除計數(shù)區(qū)塊中的標頭的位置會有很大變化。另外,擦除計數(shù)區(qū)塊的標頭中的內(nèi)容也可根據(jù)特定系統(tǒng)的要求而變化。
雖然將非易失性存儲系統(tǒng)描述為通過相關(guān)聯(lián)存儲器控制器來控制或使用與主機系統(tǒng)相關(guān)聯(lián)的軟件或固件來控制,但是應(yīng)了解包括擦除計數(shù)管理的損耗平衡處理可應(yīng)用于非易失性存儲系統(tǒng),其與大體上位于所述非易失性存儲系統(tǒng)外部的控制器進行通信。使用控制器的合適的存儲系統(tǒng)包括(但不限于)PC卡、緊湊快閃卡、多媒體卡、安全數(shù)字卡和包括閃速存儲器和閃存控制器的嵌入式芯片組。通過使用加載到主機系統(tǒng)上的軟件或固件來控制的存儲系統(tǒng)包括嵌入式存儲裝置。在一個實施例中,可使用上文描述的擦除管理技術(shù)和擦除計數(shù)區(qū)塊管理技術(shù)而不使用與存儲系統(tǒng)相關(guān)聯(lián)的控制器的存儲系統(tǒng)可使用與主機(例如,主機計算機系統(tǒng))相關(guān)聯(lián)的控制器來實施損耗平衡。也就是說,主機可直接尋址和管理存儲器,其中通過使用主機上的控制器來實現(xiàn)損耗平衡。
一般將擦除計數(shù)區(qū)塊描述成包括大量頁面的區(qū)塊。然而,應(yīng)了解,整體非易失性存儲器中的系統(tǒng)存儲器中的大體任何合適的數(shù)據(jù)結(jié)構(gòu)都可經(jīng)配置以保持擦除計數(shù)和平均擦除計數(shù)。
在一個實施例中,擦除計數(shù)區(qū)塊大體上可僅包括對應(yīng)于非易失性存儲系統(tǒng)中的區(qū)塊的擦除計數(shù)的項。在此實施例中,一般包含在擦除計數(shù)的標頭中的信息可存儲在與擦除計數(shù)區(qū)塊隔離的數(shù)據(jù)結(jié)構(gòu)或區(qū)塊中。也就是說,當大體上配置擦除計數(shù)區(qū)塊使其僅含有有關(guān)與區(qū)塊相關(guān)聯(lián)的擦除計數(shù)的項時,諸如平均擦除計數(shù)的信息可不必存儲在擦除計數(shù)區(qū)塊中,或更明確地說,不必存儲在擦除計數(shù)區(qū)塊的標頭中?;蛘撸娲鎯υ诓脸嫈?shù)區(qū)塊的標頭中,平均擦除計數(shù)可替代地存儲在擦除計數(shù)區(qū)塊中的大體上任何地方。
通常,與損耗平衡的各種處理和方法關(guān)聯(lián)的步驟可以有很大變化。在不偏離本發(fā)明的范疇的精神下,通??商砑?、移除、改變和重新排序步驟。因此,應(yīng)認為本發(fā)明的實例僅具說明性而非限制性,而且本發(fā)明并不限于本文給出的細節(jié),而是在附加的權(quán)利要求范圍的范疇內(nèi)可對本發(fā)明進行修改。
權(quán)利要求
1.一種用于初始化一非易失性存儲系統(tǒng)的一系統(tǒng)存儲器中的一擦除計數(shù)區(qū)塊的方法,所述非易失性存儲系統(tǒng)包括一個非易失性存儲器,該方法包含分配所述系統(tǒng)存儲器中的復數(shù)個頁面,其中所述復數(shù)個頁面大體上被劃分成復數(shù)個項,所述復數(shù)個項中的每一項與該非易失性存儲器中的復數(shù)個區(qū)塊中的一個對應(yīng)區(qū)塊相關(guān)聯(lián);識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊,該等可用區(qū)塊適用于接收使用者數(shù)據(jù);以及將值存儲在所述復數(shù)個項中的與所述復數(shù)個區(qū)塊中的一個對應(yīng)可用區(qū)塊相關(guān)聯(lián)的所述復數(shù)個項的每一項中,其中將所述值存儲在與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中實質(zhì)上將所述對應(yīng)可用區(qū)塊識別為可用。
2.根據(jù)權(quán)利要求1所述的方法,其中識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊包括識別包括在所述復數(shù)個區(qū)塊中的不可用區(qū)塊,所述方法進一步包括將一個指示符存儲在所述復數(shù)個項中與一個對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中,其中將所述指示符存儲在與所述對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中實質(zhì)上將所述對應(yīng)不可用區(qū)塊識別為不可用。
3.根據(jù)權(quán)利要求1所述的方法,其進一步包含分配所述系統(tǒng)存儲器中的一個標頭,該標頭與所述復數(shù)個頁面相關(guān)聯(lián);以及將一第二值存儲在該標頭中,其中所述第二值經(jīng)配置以指示所述復數(shù)個區(qū)塊中的每個可用區(qū)塊的平均擦除次數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其中將所述值存儲在所述復數(shù)個項中與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中包括將一第一值存儲在所述復數(shù)個項中的一第一項中,所述第一項與一第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)。
5.根據(jù)權(quán)利要求4所述的方法,其中所述第一值經(jīng)配置以指示所述第一對應(yīng)可用區(qū)塊的擦除次數(shù)。
6.根據(jù)權(quán)利要求5所述的方法,其中所述第一值是一個與所述第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)的擦除計數(shù)。
7.根據(jù)權(quán)利要求1所述的方法,其中所述值是擦除計數(shù)且所述方法進一步包括通過實質(zhì)上將所述值平均來判定一平均值;以及將該平均值存儲在一第一頁面中,所述第一頁面與所述復數(shù)個頁面相關(guān)聯(lián)。
8.根據(jù)權(quán)利要求1所述的方法,其中所述非易失性存儲器是一個NAND閃速存儲器。
9.一種存儲系統(tǒng),其包含一系統(tǒng)存儲器;一非易失性存儲器;用于分配所述系統(tǒng)存儲器中的復數(shù)個頁面的代碼裝置,其中所述復數(shù)個頁面大體上被分成復數(shù)個項,所述復數(shù)個項中的每一項與所述非易失性存儲器中的復數(shù)個區(qū)塊中的一對應(yīng)區(qū)塊相關(guān)聯(lián);用于識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊的代碼裝置,所述可用區(qū)塊適用于接收使用者數(shù)據(jù);用于將值存儲在所述復數(shù)個項中與所述復數(shù)個區(qū)塊中的一對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的代碼裝置,其中用于將所述值存儲在與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的所述代碼裝置實質(zhì)上將所述對應(yīng)可用區(qū)塊識別為可用;和一用于存儲所述代碼裝置的存儲區(qū)域。
10.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其中用于識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊的所述代碼裝置包括識別包括在所述復數(shù)個區(qū)塊中的不可用區(qū)塊的代碼裝置,所述存儲系統(tǒng)進一步包括用于將一個指示符存儲在所述復數(shù)個項中與一對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中的代碼裝置,其中用于將所述指示符存儲在與所述對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中的所述代碼裝置實質(zhì)上將所述對應(yīng)不可用區(qū)塊識別為不可用。
11.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其進一步包括用于分配所述系統(tǒng)存儲器中的一個標頭的代碼裝置,該標頭與所述復數(shù)個頁面相關(guān)聯(lián);和用于將一第二值存儲在所述標頭中的代碼裝置,其中該第二值經(jīng)配置以指示所述復數(shù)個區(qū)塊中的每個可用區(qū)塊的平均擦除次數(shù)。
12.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其中用于將所述值存儲在所述復數(shù)個項中與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的所述代碼裝置包括用于將一第一值存儲在所述復數(shù)個項中的一第一項中的代碼裝置,所述第一項與一第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)。
13.根據(jù)權(quán)利要求12所述的存儲系統(tǒng),其中所述第一值是一個與所述第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)的擦除計數(shù)。
14.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其中所述值是擦除計數(shù)且所述存儲系統(tǒng)進一步包括用于通過將所述值基本上平均來判定一平均值的代碼裝置;和將所述平均值存儲在一第一頁面中的代碼裝置,所述第一頁面與所述復數(shù)個頁面相關(guān)聯(lián)。
15.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其中所述代碼裝置是固件代碼裝置和軟件代碼裝置之一。
16.根據(jù)權(quán)利要求9所述的存儲系統(tǒng),其中所述非易失性存儲器是一個NAND閃速存儲器。
17.一種用于處理與一存儲系統(tǒng)的一非易失性存儲器相關(guān)聯(lián)的一擦除區(qū)塊的方法,所述非易失性存儲器包括復數(shù)個區(qū)塊,所述方法包含獲得所述擦除區(qū)塊;識別在一個擦除計數(shù)區(qū)塊中對應(yīng)于所述擦除區(qū)塊的一第一項,其中所述擦除計數(shù)區(qū)塊存儲在所述非易失性存儲器的一系統(tǒng)存儲器中;判定何時所述第一項是所述擦除區(qū)塊的擦除次數(shù)的一個指示;以及當判定所述第一項是所述擦除區(qū)塊的擦除次數(shù)的一個指示時,實質(zhì)上將所述第一項復制到所述擦除區(qū)塊中。
18.根據(jù)權(quán)利要求17所述的方法,其進一步包括當判定所述第一項不是所述擦除區(qū)塊的擦除次數(shù)的一個指示時,實質(zhì)上將一第二項復制到所述擦除區(qū)塊中,所述第二項儲存在所述系統(tǒng)存儲器中,其中所述第二項經(jīng)配置以指示所述復數(shù)個區(qū)塊的平均擦除次數(shù)。
19.根據(jù)權(quán)利要求18所述的方法,其中所述第二項存儲在所述擦除計數(shù)區(qū)塊中。
20.根據(jù)權(quán)利要求17所述的方法,其中實質(zhì)上將所述第一項復制到所述擦除區(qū)塊中包括將所述第一項復制到所述擦除區(qū)塊的一個開銷區(qū)域中。
21.一種存儲系統(tǒng),其包括一非易失性存儲器,所述非易失性存儲器包括復數(shù)個區(qū)塊,其中所述復數(shù)個區(qū)塊包括一個擦除區(qū)塊;一系統(tǒng)存儲器;用于獲得所述擦除區(qū)塊的代碼裝置;識別一擦除計數(shù)區(qū)塊中對應(yīng)于所述擦除區(qū)塊的一第一項的代碼裝置,其中所述擦除計數(shù)區(qū)塊存儲在所述系統(tǒng)存儲器中;用于判定何時所述第一項是所述擦除區(qū)塊的擦除次數(shù)的一個指示的代碼裝置;當判定所述第一項是所述擦除區(qū)塊的擦除次數(shù)的一個指示時用于實質(zhì)上將所述第一項復制到所述擦除區(qū)塊中的代碼裝置;和一存儲所述代碼裝置的存儲區(qū)域。
22.根據(jù)權(quán)利要求21所述的存儲系統(tǒng),其進一步包括當判定所述第一項不是所述擦除區(qū)塊的擦除次數(shù)的一個指示時用于實質(zhì)上將一第二項復制到所述擦除區(qū)塊中的代碼裝置,所述第二項存儲在所述擦除計數(shù)區(qū)塊中,其中所述第二項經(jīng)配置以指示所述復數(shù)個區(qū)塊的平均擦除次數(shù)。
23.根據(jù)權(quán)利要求21所述的存儲系統(tǒng),其中實質(zhì)上將所述第一項復制到所述擦除區(qū)塊中的所述代碼裝置包括用于將所述第一項復制到所述擦除區(qū)塊的一開銷區(qū)域中的代碼裝置。
24.根據(jù)權(quán)利要求21所述的存儲系統(tǒng),其中所述代碼裝置是固件代碼裝置和軟件代碼裝置之一。
25.一種用于更新一非易失性存儲器的一系統(tǒng)存儲器的一擦除計數(shù)區(qū)塊中的一第一項的方法,所述擦除計數(shù)區(qū)塊包括復數(shù)個頁面,所述復數(shù)個頁面的每一個頁面包括復數(shù)個項,其中所述第一項包括在所述復數(shù)個項中,所述方法包含識別一個區(qū)塊,所述區(qū)塊存儲在一非易失性存儲器中;判定何時所述區(qū)塊可用;當判定所述區(qū)塊不可用時,設(shè)定所述第一項中的位以指示所述區(qū)塊不可用;當判定所述區(qū)塊可用時,判定何時所述區(qū)塊未擦除;當判定所述區(qū)塊未擦除時,讀取存儲在所述區(qū)塊中的位,所述位經(jīng)配置以指示所述區(qū)塊的擦除次數(shù);以及當判定所述區(qū)塊未擦除時,將所述第一項中的所述位設(shè)定成對應(yīng)于存儲在所述區(qū)塊中的所述位。
26.根據(jù)權(quán)利要求25所述的方法,其進一步包括讀取所述第一項中的所述位;以及判定何時所述第一項中的所述位實質(zhì)上不對應(yīng)于存儲在所述區(qū)塊中的所述位,其中當判定所述第一項中的所述位實質(zhì)上不對應(yīng)于存儲在所述區(qū)塊中的所述位時,將所述第一項中的所述位設(shè)定成對應(yīng)于存儲在所述區(qū)塊中的所述位。
27.根據(jù)權(quán)利要求25所述的方法,其中判定何時所述區(qū)塊可用包括判斷何時所述區(qū)塊具有一成長缺陷,且其中設(shè)定所述第一項中的所述位以指示所述區(qū)塊不可用包括設(shè)定所述第一項中的所述位以指示所述區(qū)塊具有一成長缺陷。
28.一種存儲系統(tǒng),其包括一系統(tǒng)存儲器,所述系統(tǒng)存儲器包括一個擦除計數(shù)區(qū)塊,所述擦除計數(shù)區(qū)塊包括復數(shù)個頁面,所述復數(shù)個頁面的每個頁面包括復數(shù)個項,其中所述第一項包括在所述復數(shù)個項中;一非易失性存儲器;用于識別一區(qū)塊的代碼裝置,所述區(qū)塊存儲在所述非易失性存儲器中;用于判斷何時所述區(qū)塊可用的代碼裝置;當判定所述區(qū)塊不可用時用于設(shè)定所述第一項中的位以指示所述區(qū)塊不可用的代碼裝置;當判定所述區(qū)塊可用時用于判定何時所述區(qū)塊未擦除的代碼裝置;當判定所述區(qū)塊未擦除時用于讀取存儲在所述區(qū)塊中的位的代碼裝置,所述位經(jīng)配置以指示所述區(qū)塊的擦除次數(shù);當判定所述區(qū)塊未擦除時用于將所述第一項中的所述位設(shè)定成對應(yīng)于存儲在所述區(qū)塊中的所述位的代碼裝置;和一存儲所述代碼裝置的存儲區(qū)域。
29.根據(jù)權(quán)利要求28所述的存儲系統(tǒng),其進一步包括用于讀取所述第一項中的所述位的代碼裝置;和用于判定何時所述第一項中的所述位實質(zhì)上不對應(yīng)于存儲在所述區(qū)塊中的所述位的代碼裝置,其中當判定所述第一項中的所述位實質(zhì)上不對應(yīng)于存儲在所述區(qū)塊中的所述位時,將所述第一項中的所述位設(shè)定成對應(yīng)于存儲在所述區(qū)塊中的所述位。
30.根據(jù)權(quán)利要求28所述的存儲系統(tǒng),其中用于判定何時所述區(qū)塊可用的所述代碼裝置包括用于判斷何時所述區(qū)塊具有一成長缺陷的代碼裝置,且其中用于設(shè)定所述第一項中的所述位以指示所述區(qū)塊不可用的所述代碼裝置包括用于設(shè)定所述第一項中的所述位以指示所述區(qū)塊具有一成長缺陷的代碼裝置。
31.一種用于處理與一存儲系統(tǒng)的一非易失性存儲器相關(guān)聯(lián)的一第一區(qū)塊的方法,所述非易失性存儲器包括復數(shù)個區(qū)塊,所述方法包含判定何時所述第一區(qū)塊可用;當判定所述第一區(qū)塊可用時,讀取所述第一區(qū)塊的位,所述位經(jīng)配置以指示所述第一區(qū)塊的擦除次數(shù);識別一擦除計數(shù)區(qū)塊中對應(yīng)于所述第一區(qū)塊的一第一項,其中所述擦除計數(shù)區(qū)塊存儲在所述存儲系統(tǒng)的一系統(tǒng)存儲器中;判定何時所述第一區(qū)塊的所述位具有一個比所述第一項的一個值小的值;以及當判定所述第一區(qū)塊的位具有一個比所述第一項的所述值小的值時,實質(zhì)上將所述第一項復制到所述第一區(qū)塊的所述位中。
32.根據(jù)權(quán)利要求31所述的方法,其進一步包括當判定所述第一區(qū)塊不可用時,更新所述第一項以指示所述第一區(qū)塊不可用。
33.根據(jù)權(quán)利要求32所述的方法,其中更新所述第一項以指示所述第一區(qū)塊不可用包括更新所述第一項以指示所述第一區(qū)塊具有一成長缺陷。
34.根據(jù)權(quán)利要求31所述的方法,其中所述第一區(qū)塊的所述位位于所述第一區(qū)塊的一個冗余區(qū)域中。
35.根據(jù)權(quán)利要求34所述的方法,其中所述第一區(qū)塊的所述位是所述第一區(qū)塊的一個擦除計數(shù)。
36.一種存儲系統(tǒng),其包含一非易失性存儲器,所述非易失性存儲器包括復數(shù)個區(qū)塊,所述復數(shù)個區(qū)塊包括一第一區(qū)塊;一系統(tǒng)存儲器,所述系統(tǒng)存儲器包括一個擦除計數(shù)區(qū)塊,所述擦除計數(shù)區(qū)塊包括復數(shù)個頁面,所述復數(shù)個頁面實質(zhì)上被劃分成復數(shù)個項;用于判定何時所述第一區(qū)塊可用的代碼裝置;當判定所述第一區(qū)塊可用時用于讀取所述第一區(qū)塊的位的代碼裝置,所述位經(jīng)配置以指示所述第一區(qū)塊的擦除次數(shù);用于識別所述擦除計數(shù)區(qū)塊中對應(yīng)于所述第一區(qū)塊的一第一項的代碼裝置;用于判定何時所述第一區(qū)塊的所述位具有一個比所述第一項的一個值小的值的代碼裝置;當判定所述第一區(qū)塊的位具有一個比所述第一項的所述值小的值時用于實質(zhì)上將所述第一項復制到所述第一區(qū)塊的所述位中的代碼裝置;和一存儲所述代碼裝置的存儲區(qū)域。
37.根據(jù)權(quán)利要求36所述的存儲系統(tǒng),其進一步包括當判定所述第一區(qū)塊不可用時用于更新所述第一項以指示所述第一區(qū)塊不可用的代碼裝置,其中用于更新所述第一項以指示所述第一區(qū)塊不可用的所述代碼裝置包括用于更新所述第一項以指示所述第一區(qū)塊具有一成長缺陷的代碼裝置。
38.根據(jù)權(quán)利要求36所述的存儲系統(tǒng),其中所述第一區(qū)塊的所述位位于所述第一區(qū)塊的一個冗余區(qū)域中。
39.一種存儲系統(tǒng),其包含一系統(tǒng)存儲器;一非易失性存儲器;用于分配所述系統(tǒng)存儲器中的復數(shù)個頁面的構(gòu)件,其中所述復數(shù)個頁面實質(zhì)上被劃分成復數(shù)個項,所述復數(shù)個項中的每一項與所述非易失性存儲器中的復數(shù)個區(qū)塊中的一個對應(yīng)區(qū)塊相關(guān)聯(lián);用于識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊的構(gòu)件,所述可用區(qū)塊適用于接收使用者數(shù)據(jù);以及用于將值存儲在所述復數(shù)個項中與所述復數(shù)個區(qū)塊中的一對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的構(gòu)件,其中用于將所述值存儲在與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的所述構(gòu)件實質(zhì)上將所述對應(yīng)可用區(qū)塊識別為可用。
40.根據(jù)權(quán)利要求39所述的存儲系統(tǒng),其中用于識別包括在所述復數(shù)個區(qū)塊中的可用區(qū)塊的所述構(gòu)件包括用于識別包括在所述復數(shù)個區(qū)塊中的不可用區(qū)塊的構(gòu)件,所述存儲系統(tǒng)進一步包括用于將一個指示符存儲在所述復數(shù)個項中與一對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中的構(gòu)件,其中用于將所述指示符存儲在與所述對應(yīng)不可用區(qū)塊相關(guān)聯(lián)的每一項中的所述構(gòu)件實質(zhì)上將所述對應(yīng)不可用區(qū)塊識別為不可用。
41.根據(jù)權(quán)利要求39所述的存儲系統(tǒng),其進一步包括用于分配所述系統(tǒng)存儲器中的一個標頭的構(gòu)件,所述標頭與所述復數(shù)個頁面相關(guān)聯(lián);和用于將一第二值存儲在所述標頭中的構(gòu)件,其中所述第二值經(jīng)配置以指示所述復數(shù)個區(qū)塊中的每個可用區(qū)塊的平均擦除次數(shù)。
42.根據(jù)權(quán)利要求39所述的存儲系統(tǒng),其中用于將所述值存儲在所述復數(shù)個項中與所述對應(yīng)可用區(qū)塊相關(guān)聯(lián)的每一項中的所述構(gòu)件包括用于將一第一值存儲在所述復數(shù)個項的一第一項中的構(gòu)件,所述第一項與一第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)。
43.根據(jù)權(quán)利要求42所述的存儲系統(tǒng),其中所述第一值是一個與所述第一對應(yīng)可用區(qū)塊相關(guān)聯(lián)的擦除計數(shù)。
44.根據(jù)權(quán)利要求39所述的存儲系統(tǒng),其中所述值是擦除計數(shù)且所述存儲系統(tǒng)進一步包括用于通過實質(zhì)上將所述值平均來判定一平均值的構(gòu)件;和用于將所述平均值存儲在一第一頁面中的構(gòu)件,所述第一頁面與所述復數(shù)個頁面相關(guān)聯(lián)。
45.根據(jù)權(quán)利要求39所述的存儲系統(tǒng),其中所述非易失性存儲器是一個NAND閃速存儲器。
全文摘要
本發(fā)明揭示了用于管理非易失性存儲系統(tǒng)中的擦除計數(shù)的方法和設(shè)備。根據(jù)本發(fā)明的一個方面,一種用于初始化非易失性存儲系統(tǒng)的系統(tǒng)存儲器中的一擦除計數(shù)區(qū)塊的方法(所述非易失性存儲系統(tǒng)包括非易失性存儲器)涉及分配系統(tǒng)存儲器中的被劃分成復數(shù)個項的復數(shù)個頁面。所述復數(shù)個項的每一項在該非易失性存儲器中具有一個相關(guān)區(qū)塊。該方法還包括識別適用于接收使用者數(shù)據(jù)的可用區(qū)塊及將值存儲在與可用區(qū)塊相關(guān)聯(lián)的每一項中。將所述值存儲在與可用區(qū)塊相關(guān)聯(lián)的每一項中會實質(zhì)上將該可用區(qū)塊識別為可用。
文檔編號G06F12/02GK1701307SQ03824764
公開日2005年11月23日 申請日期2003年9月10日 優(yōu)先權(quán)日2002年10月28日
發(fā)明者羅伯特·C·張, 巴赫曼·卡瓦邁, 法施德·薩伯特-沙吉 申請人:桑迪士克股份有限公司