專利名稱:非易失性存儲器系統(tǒng)內糾錯碼的混合實現的制作方法
技術領域:
本發(fā)明一般涉及大量數字數據存儲系統(tǒng),尤其涉及能使算法動態(tài)切換的方法和裝置,其中算法用于對要被寫入非易失性存儲器的塊中的數據進行編碼。
(2)背景技術諸如閃存存儲系統(tǒng)等非易失性存儲器系統(tǒng)的使用日益增加,這是由于這種存儲器系統(tǒng)的小型物理尺寸以及對非易失性存儲器重復再次編程的能力。閃存存儲系統(tǒng)的小型物理尺寸便于使用設備內日益普及的這種存儲系統(tǒng)。使用閃存存儲系統(tǒng)的設備包括、但不限于數碼相機、數碼攝像機、數字音樂播放器、手持個人電腦、以及全球定位設備。對閃存存儲系統(tǒng)內包括的非易失性存儲器重復再次編程的能力使閃存存儲系統(tǒng)能被使用和重復使用。
通常,閃存存儲系統(tǒng)可能包括閃存卡和閃存芯片裝置。閃存芯片裝置一般包括閃存組件和控制器組件。一般而言,可能安排閃存芯片裝置裝配在嵌入式系統(tǒng)內。這種部件或主機系統(tǒng)的制造商一般要求組件形式的閃存、以及其它組件,然后把閃存及其它組件裝配到主機系統(tǒng)內。
通常,為了確保存儲在閃存物理塊內數據的準確性,可能使用糾錯碼(ECC)算法或檢錯及糾錯碼算法來對數據進行編碼以用于存儲,并且對已存儲的數據進行解碼。一般而言,ECC算法用專用電路或軟件對數據進行編碼和解碼。許多ECC算法或方法可能添加一或多個一致校驗位,用于既檢測和糾正與已存儲數據相關的差錯。
對用于存儲的數據進行編碼和解碼的某些ECC算法稱為1位ECC算法和2位ECC算法。1位ECC算法能夠表示一組符號,使得如果表示內容內有一比特不正確,如被翻轉,則符號仍能被正確地識別,而如果兩比特不正確,如被翻轉,則符號還是能被糾正。2位ECC算法能夠顯示一組符號,使得如果顯示內容的兩比特被翻轉或不正確,則這兩比特會被糾正,而如果多于兩比特被翻轉,則仍能正確地識別符號。
通常,2位ECC算法的使用可能優(yōu)于1位ECC算法,這是由于2位ECC算法可能檢測多于兩個錯誤比特并糾正兩比特,而1位ECC僅能檢測兩個錯誤比特并糾正一比特。然而,雖然2位ECC算法提供了對已存儲數據增加了的糾錯能力,然而它的實現一般涉及更多計算,并因此比1位ECC算法的實現涉及更多計算開銷。當要求更多計算開銷時,非易失性存儲器可能消耗更多功率,如電池功率。因此,存儲器系統(tǒng)的總性能可能被折衷,尤其因為已被擦除相對少次數的塊中所存儲的數據的完整性一般相對較高。
為了減少與實現2位ECC算法相關的計算和功率要求,某些系統(tǒng)可能使用1位ECC算法來對數據進行編碼和解碼。然而,1位ECC算法通常比2位ECC算法不準確。而且,對于數據在其使用壽命結束附近存入其中的塊而言,存儲在這種塊內的數據更可能包含差錯。這樣,當使用1位ECC算法對存儲在已被擦除相對多次數的塊內的數據進行編碼并對這種數據進行解碼時,數據完整性可能被損害,并且可能損害與這些塊相關的性能。
因此,需要一種方法和裝置,它能改進已被擦除相對多次數的塊的性能,而不要求在對存儲在已被擦除相對少次數的塊內的數據編碼和解碼時相對高的計算開銷和性能惡化。即,所需要的是一種方法和裝置,它允許用不同的ECC算法對塊的內容進行編碼,而ECC算法可能根據塊已被擦除的次數來選擇。
(3)發(fā)明內容本發(fā)明涉及用不同的糾錯碼算法對非易失性存儲器內塊的內容進行編碼和解碼的系統(tǒng)和方法。按照本發(fā)明一方面,用于在非易失性存儲器內存儲數據的一種方法包括識別數據要被存儲其中的第一塊、并且獲得與第一塊相關的指示符。然后作出關于該指示符是否指明了數據要用第一算法來編碼的判決。當確定數據要用第一算法來編碼時,用第一算法對數據進行編碼,用第一算法編碼的數據在該點后被寫入第一塊。
在一實施例中,該方法還包括在確定不用第一算法對數據編碼時用第二算法對數據進行編碼,并且把用第二算法編碼的數據寫入第一塊。在這種實施例中,第一算法可能是1位糾錯碼(ECC)算法,而第二算法可能是2位ECC算法。
通過允許根據塊與塊的不同而用不同的ECC算法對存儲在非易失性存儲器系統(tǒng)的塊內的數據進行編碼,存儲器系統(tǒng)內的某些塊可能用1位ECC算法來編碼,而其它塊可能用2位ECC算法來編碼。1位ECC算法(即較低計算強度的算法)用于對要被存儲到尚未經過相對多次擦除操作的塊中的數據進行編碼,而2位ECC算法(即較高計算強度的算法)用于對要被存儲到已經過相對多次擦除操作的塊中的數據進行編碼。由于2位ECC算法一般比1位ECC算法能更準確地對數據進行編碼和解碼,因此用2位ECC算法對要被存儲到接近于其可用性盡頭的塊中的數據進行編碼能使與塊相關的性能得到改進。當塊未在其可用性盡頭時未使用1位ECC算法時,存儲并從這種塊中讀取數據所需的計算次數可能減少,從而能夠改進讀和寫過程的總速度并且降低與存儲器系統(tǒng)相關的功率要求。
按照本發(fā)明另一方面,在存儲器系統(tǒng)的非易失性存儲器內讀取數據的一種方法包括識別要從中讀取數據的第一塊、獲得與第一塊相關的指示符、以及確定指示符何時指明已經用第一算法對存儲在第一塊中的數據進行編碼。該方法還包括在確定已經用第一算法對數據進行編碼時用第一算法對數據進行解碼。在一實施例中,該方法還包括在確定尚未用第一算法對數據進行編碼時用第二算法對數據進行解碼。
在另一實施例中,指示符用于指明塊在何時為回收塊。當塊為回收塊時,指示符還用于指明已經用第二算法對數據進行編碼。在還有一實施例中,指示符用于指明塊已被擦除的次數。在這種實施例中,確定指示符何時指明已經用第一算法對數據進行編碼可能還包括確定指示符何時低于一閾值。當指示符低于閾值時,意味著已經用第一算法對數據進行編碼。
按照本發(fā)明還有一方面,存儲器系統(tǒng)包括非易失性存儲器,它包括第一塊和第二塊。第一塊包括用第一算法編碼的第一組內容,而第二塊包括用第二算法編碼的第二組內容。非易失性存儲器還包括數據結構,如擦除計數塊,它用于指示已經用第一算法對第一組內容進行編碼并且已經用第二算法對第二組內容進行編碼。存儲器系統(tǒng)還包括用于存取數據結構的編碼裝置。這種編碼裝置包括確定已經用第一算法對第一組內容進行編碼的編碼裝置;以及確定已經用第二算法對第二組內容進行編碼的編碼裝置。
從閱讀下面詳細描述并研究附圖各圖,本發(fā)明的這些及其它優(yōu)點將變得更顯而易見。
(4)
通過結合附圖參考下列描述可以最好地理解本發(fā)明,附圖中圖1a是包括非易失性存儲器的通用主機系統(tǒng)的圖解表示。
圖1b是存儲器裝置的圖解表示,如圖1a的存儲器裝置120。
圖1c是包括嵌入式非易失性存儲器的主機系統(tǒng)的圖解表示。
圖2a是說明了按照本發(fā)明實施例或用1位或用2位ECC把用戶數據寫入塊中的方法流程圖。
圖2b是說明了按照本發(fā)明實施例從系統(tǒng)內塊中讀取內容的方法流程圖,其中或用1位ECC算法或用2位ECC算法對內容進行編碼。
圖3是說明按照本發(fā)明實施例初始化存儲器系統(tǒng)的方法流程圖,其中用混合ECC實現對塊內容進行編碼。
圖4a是按照本發(fā)明實施例再生不可用塊的過程的圖解框圖表示。
圖4b是按照本發(fā)明實施例的一部分擦除計數塊的圖解表示。
圖5a是按照本發(fā)明實施例說明向系統(tǒng)內塊中寫入的方法流程圖,其中可能有回收塊,并且可能或用1位ECC算法或用2位ECC算法對數據進行編碼。
圖5b是按照本發(fā)明實施例說明從塊中讀取內容的方法流程圖,其中塊可能是回收塊并且可能帶有或用1位ECC算法或用2位ECC算法編碼的內容。
圖6是按照本發(fā)明實施例說明用包括回收塊的混合ECC實現初始化存儲器系統(tǒng)的方法流程圖。
圖7是按照本發(fā)明實施例的系統(tǒng)結構的圖解框圖表示。
(5)具體實施方式
諸如1位ECC算法或2位ECC算法這樣的糾錯碼(ECC)通常用于對要被存儲到非易失性存儲器的物理塊內的數據進行編碼,并且對已存儲數據進行解碼。ECC算法的使用一般能夠改進物理塊內存儲的數據準確性。較高計算強度的2位ECC算法的使用可能由于較低計算強度的1位ECC算法,由于2位ECC算法能比1位ECC算法糾正更多的差錯比特。然而,雖然2位ECC算法提供了增加的糾錯能力,然而就計算次數和功率要求而言,它的實現比1位ECC算法昂貴。
在許多情況下,當要存儲數據的塊比較新并因此未遭受較多擦除周期時,1位ECC算法可能足以確保大量數據的完整性。這樣,2位ECC算法的實現可能不必要。然而,隨著塊漸漸變老并且遭受了相對多次擦除周期后,1位ECC算法可能不足以確保期望級別的數據完整性,而2位ECC算法的使用可能大大改進了數據的完整性。
混合ECC實現能夠用ECC算法對要動態(tài)切換的數據進行編碼和解碼。特別是在一實施例中,已經歷了相對少擦除周期的塊中所存儲的數據可能用較低計算強度且較不準確的算法來編碼,如1位ECC算法,而已經歷了相對多次擦除周期的塊中所存儲的數據可能用較高計算強度且較準確的算法來編碼,如2位ECC算法。通過動態(tài)地確定何時用如2位ECC算法而非“缺省”算法(如,如1位ECC算法這樣的較不準確的算法)這樣的較準確算法對數據進行編碼,為對存儲在特定塊內的數據進行編碼所選的算法可能根據特定塊的特性而選擇,而在較準確的算法會提供實質好處時它可能被有效地使用。例如,如果塊接近于其計劃使用壽命的盡頭,則用2位ECC算法對要被存儲到該塊中的數據進行編碼可能改進存儲在塊內的數據的準確性和完整性,并且可能還允許潛在地延長塊的使用壽命。而且,通過用較低計算強度的算法對要被存儲到不接近于其使用壽命盡頭的塊中的數據進行編碼,可能降低總存儲器系統(tǒng)的功率要求,從而改進總存儲器系統(tǒng)的耐久性。
在一實施例中,閾值擦除計數或閾值擦除周期數可能被用作指示符,指明是用較低計算強度且較不準確的ECC算法還是用較高計算強度且較準確的ECC算法對要被寫入塊中的數據進行編碼。當塊所經歷的擦除周期次數的比較指明塊所經歷的擦除周期大于閾值次數時,則可能使用較準確的ECC算法,因為塊可能被視作接近于其使用壽命的盡頭。
閃存系統(tǒng),尤其是可能使用允許用不同ECC算法對系統(tǒng)內的塊編碼的混合ECC實現的非易失性存儲器裝置,一般包括閃存,如NAND或MLC NAND、卡和芯片組。一般而言,閃存系統(tǒng)與主機系統(tǒng)結合使用,使得主機系統(tǒng)可能把數據接入閃存系統(tǒng)或從中讀取數據。然而,某些閃存系統(tǒng)包括嵌入式閃存和軟件,它在主機上執(zhí)行,實質上充當嵌入式閃存的控制器,下面將參考圖1進行討論。參考圖1a,將討論包括如小型閃存卡等非易失性存儲器裝置的通用主機系統(tǒng)。主機或計算機系統(tǒng)100一般包括系統(tǒng)總線104,它允許微處理器108、隨機存取存儲器(RAM)112和輸入/輸出電路116進行通信。應該理解,主機系統(tǒng)100可能一般包括其它組件,如顯示裝置和網絡裝置,它們未為了說明目的而示出。
通常,主機系統(tǒng)100也許能夠捕捉信息,包括但不限于靜態(tài)圖像信息、音頻信息和視頻圖像信息。這種信息可能實時地被捕捉,并可能以無線方式被發(fā)射到主機系統(tǒng)100。雖然主機系統(tǒng)100可能實質上是任何系統(tǒng),然而主機系統(tǒng)100一般是諸如數碼相機、攝像機、蜂窩通信裝置、音頻播放器或視頻播放器這樣的系統(tǒng)。然而應該理解,主機系統(tǒng)100一般實質上是存儲數據或信息并且檢取數據或信息的任何系統(tǒng)。
主機系統(tǒng)100可能是或僅捕捉數據、或僅檢取數據的系統(tǒng)。即,在一實施例中,主機系統(tǒng)100可能是存儲數據的專用系統(tǒng),或主機系統(tǒng)100可能是讀取數據的專用系統(tǒng)。通過示例,主機系統(tǒng)100可能是存儲器記錄器,它僅用于寫入或存儲數據?;蛘撸鳈C系統(tǒng)100可能是諸如MP3播放器這樣的裝置,它一般用于讀取或檢取數據,而不捕捉數據。
在一實施例中,非易失性存儲器裝置120是可移動的非易失性存儲器裝置,它用于與總線104接口以存儲信息。任選的接口塊130可能允許非易失性存儲器裝置120間接地與總線104相接。如本領域技術人員所能理解的,現行的輸入/輸出電路塊116用來減少總線104上的負載。非易失性存儲器裝置120包括非易失性存儲器124和任選的存儲器控制系統(tǒng)128。在一實施例中,非易失性存儲器裝置20可能在單芯片或一個晶片上實現。非易失性存儲裝置20可能在多芯片模塊上實現或者可能形成芯片組的多個離散組件可能在一起被用作非易失性存儲器裝置120。下面將參考圖1b更詳細的描述非易失性存儲器裝置120的一實施例。
非易失性存儲器124,例如像NAND閃存或MLC NAND閃存這樣的閃存,用于存儲數據,使得可能根據需要被訪問并讀取數據。存儲在非易失性存儲器124內的數據也可能被適當擦除,盡管應該理解,非易失性存儲器124內的某些數據可能是不可擦除的。存儲數據、讀取數據以及擦除數據的過程一般有存儲器控制系統(tǒng)128所控制,或者當沒有存儲器控制系統(tǒng)128時由微處理器108所執(zhí)行的軟件來控制??赡芄芾矸且资源鎯ζ?24的操作,使得非易失性存儲器124的壽命實質上通過基本上使非易失性存儲器124的扇區(qū)相等地損耗而最大化。
非易失性存儲器裝置120已經被描述為包括任選的存儲器控制系統(tǒng)128,即控制器。通常,非易失性存儲器裝置120可能為非易失性存儲器124和存儲器控制系統(tǒng)128包括獨立的芯片,即,控制器、功能。通過示例,雖然非易失性存儲器裝置包括但不限于PC卡、小型閃存卡、多媒體卡,且安全數字卡包括可以在獨立芯片上實現的控制器,然而其它非易失性存儲器裝置可能不包括在獨立芯片上實現的控制器。在非易失性存儲器裝置120不包括獨立存儲器和控制器芯片的實施例中,存儲器和控制器功能可能被集成到單一芯片上,這是本領域技術人員所能理解的?;蛘?,可能由微處理器108提供存儲器控制系統(tǒng)128的功能,例如在上述非易失性存儲器裝置120不包括存儲器控制器128的實施例中。
參考圖1b,將按照本發(fā)明實施例更詳細地討論非易失性存儲器裝置120。如上所述,非易失性存儲器裝置120包括非易失性存儲器124并可能包括存儲器控制系統(tǒng)128。存儲器124和控制系統(tǒng)128(即控制器)可能是非易失性存儲器裝置120的主要組件,盡管當存儲器124是諸如嵌入式MLC NAND存儲器這樣的嵌入式NAND裝置時,例如,非易失性存儲器裝置120可能不包括控制系統(tǒng)128。存儲器124可能是在半導體襯底上形成的存儲器單元陣,其中通過把兩個或多個電荷電平之一存儲在存儲器單元的單獨存儲元件上而把一個或多個數據比特存儲在單獨的存儲器單元中。非易失性快閃電氣可擦除可編程只讀存儲器(EEPROM)是這種系統(tǒng)的通用存儲器類型的一例。
當存在時,控制系統(tǒng)128在總線15上與用存儲器系統(tǒng)存儲數據的主機計算機或其它系統(tǒng)進行通信??偩€15一般是圖1a的總線104的一部分??刂葡到y(tǒng)128還控制存儲器124的操作,存儲器124可能包括存儲器單元陣11,用于寫入由主機所提供的數據、讀取由主機所請求的數據、并且執(zhí)行工作中存儲器124內的各種內務處理功能??刂葡到y(tǒng)128一般包括通用微處理器,它具有相關的非易失性軟件存儲器、各種邏輯電路、等等。通常還包括一個或多個狀態(tài)機,用于控制特定例程的性能。
存儲器單元陣11一般由控制系統(tǒng)128或微處理器108通過地址解碼器17來定址。為了把數據編程到由控制系統(tǒng)128定址的一組存儲器單元中,或從中讀取數據、或擦除它們,解碼器17把正確的電壓應用于陣11的門和位線。附加電路19包括編程驅動器,它控制應用于陣元件的電壓,陣元件取決于被編程到已定址單元組內的數據。電路19還包括傳感放大器以及從已定址存儲器單元組中讀取數據所必須的其它電路。要被編程到陣11中的數據、或者最近從陣11中讀取的數據,一般存儲在控制系統(tǒng)128內的緩沖存儲器21中??刂葡到y(tǒng)128通常還包含各種寄存器,用于暫時存儲命令和狀態(tài)數據等。
陣11被分成大量的塊O-N存儲器單元。通常對于快閃EEPROM系統(tǒng)而言,塊一般是擦除的最小單元。即,每塊都包含一起被擦除的最小量存儲器單元。每塊一般都被分成許多頁面。本領域的技術人員可以理解,一頁面可能是編程的最小單元。即,基本編程操作把數據寫入最少一頁存儲單元中,或從中讀取數據。數據的一個或多個扇區(qū)一般存儲在每一頁面內。如圖1b所示,一個扇區(qū)包括用戶數據和開銷數據。開銷數據一般包括已經從扇區(qū)的用戶數據中計算出的ECC??刂葡到y(tǒng)128的一部分23在數據被編程到陣11中時計算ECC,而且還檢查從陣11中讀取數據時的ECG?;蛘?,ECC被存儲在與它們所屬的用戶數據不同的頁面、或不同的塊內。
用戶數據的扇區(qū)一般為512字節(jié),對應于磁盤驅動器內扇區(qū)的尺寸。開銷數據(即冗余數據)一般為附加的16字節(jié)。數據的一扇區(qū)最常被包括在每一頁面內,但可能由兩個或多個扇區(qū)形成一頁面。任意數量的頁面可能形成一塊。通過示例,可能由八頁到512、1024或更多頁形成一塊。選擇塊的數量為存儲器系統(tǒng)提供期望的數據存儲容量。陣11一般被分成幾個子陣(未示出),每個都包含一定比例的塊,它們彼此稍微獨立地工作,以便增加執(zhí)行各種存儲器操作時的平行程度。多個子陣的使用示例已在美國專利號5890192中描述,該專利通過引用被結合于此。
在一實施例中,諸如MLC 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中讀取信息并將其寫入其中。
非易失性存儲器174可能由微處理器158管理,后者有效地執(zhí)行用于控制非易失性存儲器174的軟件或固件中的任一或兩者。即,微處理器158可能充當運行編碼裝置(即,軟件編碼裝置或固件編碼裝置)的控制器,這些編碼裝置能夠控制非易失性存儲器174。下面將描述的這種編碼裝置也許能定址非易失性存儲器174內的物理塊,并且能把信息存儲的物理塊中,或從中讀取以及擦除信息。
在使用混合ECC實現的存儲器系統(tǒng)中,在數據可能被寫入塊內之前,一般獲得與塊相關的數據并對其研究以確定適當的ECC算法,用來對要被寫入塊內的數據進行編碼。參考圖2a,將按照本發(fā)明實施例描述或用1位或用2位ECC把用戶數據寫入塊內的步驟。寫入數據的過程200在步驟204開始,其中識別要被寫入的塊。該塊可能是未使用的塊,如從備用塊池中獲得的塊,或該快可能是當前在使用中并且用于接收附加內容的塊。一旦識別了該塊,就在步驟208中從擦除計數塊中讀取塊的擦除計數。如待批美國專利申請?zhí)?0/281626中所述的擦除計數塊是存儲在非易失性存儲器中的數據結構,它包含實質上與非易失性存儲器內所有可用塊相關的擦除計數。擦除計數一般指明了給定塊已被擦除的次數,因而提供了對塊壽命的指示。
在讀取了塊的擦除計數之后,在步驟212中確定該擦除計數是否低于閾值擦除計數。閾值擦除計數可能是由非易失性存儲器系統(tǒng)的用戶所指定的擦除計數,或者該閾值擦除計數可能是一系統(tǒng)參數。閾值擦除計數的值可能廣泛地改變。通過示例,在塊已被擦除10000次后不再能使用的實施例中,閾值擦除計數可能被設為約9500和約9800間的一值。更明確地說,閾值擦除計數可能被設為比用于確定塊壽命的擦除計數低約二個百分點到約五個百分點間的一值。
如果在步驟212中確定塊的擦除計數低于閾值擦除計數,則指明了要被存儲的塊中的內容(如用戶數據)要用1位ECC算法來編碼。因而,在步驟224中,用1位ECG算法對要被存儲到塊中的內容進行編碼。一旦內容已被編碼,則已編碼內容在步驟228中被寫入塊中,并且完成把內容寫入塊中的過程。
返回步驟212,如果確定擦除計數不低于閾值擦除計數,則指明了塊正接近于其使用壽命盡頭。這樣,在步驟216中用2位ECC算法對要被存儲到塊中的數據進行編碼。在塊內容已被編碼后,在步驟220中,已編碼內容被寫入塊中,并且完成把內容寫入塊中的過程。
當存儲器系統(tǒng)內塊的內容(即,物理塊)可能或用1位或用2位ECC算法來編碼時,在內容被準確地解碼之前,作出關于使用哪個ECC算法對內容進行編碼的判決。換言之,讀取塊內容的過程一般包括識別內容使用1位ECC算法還是用2位ECC算法來編碼的。圖2b是說明按照本發(fā)明實施例從系統(tǒng)內的塊中讀取內容的方法流程圖,其中內容可能或用1位ECC算法或用2位ECC算法來編碼。從塊中讀取內容的過程240從步驟244開始,其中識別要被讀取的塊。該塊一般可以從當前在使用中(即,當前用于存儲信息)的塊池中獲得。在識別了該塊之后,在步驟248中在擦除計數塊內識別對應于該塊的表項。一般而言,擦除計數塊內塊的表項包括塊的擦除計數。
在步驟252中,確定塊的擦除計數是否低于擦除計數閾值,即確定要用1位ECC算法還是2位ECC算法對塊內容進行編碼的閾值。如果確定塊的擦除計數低于該閾值,則在步驟256中用1位ECC算法對塊內數據進行解碼。一旦用1位ECC算法對數據進行解碼,就完成了從塊中讀取內容的過程?;蛘?,如果在步驟252中確定擦除計數不低于閾值,則指明了數據使用2位ECC算法編碼的。因而,在步驟260中,塊內的數據用2位ECC算法來解碼。在數據已解碼之后,完成從塊中讀取數據的過程。
在存儲器系統(tǒng)的操作過程期間,為了延長存儲器系統(tǒng)的非易失性存儲器的壽命,可能識別靜態(tài)塊,即極少被更新或被擦除的塊。這種靜態(tài)塊可能被標識為不可能被更新,因而,這種靜態(tài)塊的內容可能被復制到具有相對高擦除計數的塊中。通過把靜態(tài)塊的內容復制到具有相對高擦除計數的塊中,可能有效地重復利用靜態(tài)塊。而且,把靜態(tài)塊的內容存儲到具有相對高擦除計數的塊中可能證明是對具有相對高擦除計數的塊的有效使用,這是由于內容不可能被更新或被擦除,從而延長了具有相對高擦除計數的塊的壽命。靜態(tài)塊與具有相對高擦除計數的塊的交換在待批美國專利申請?zhí)?0/281739中已作討論。
通常,可能在初始化存儲器系統(tǒng)時進行靜態(tài)塊與具有相對高擦除次數的塊的交換,例如當存儲器系統(tǒng)在已經被斷電后又被接通時。參考圖3,將按照本發(fā)明實施例描述存儲器系統(tǒng)的初始化過程,其中可能或用1位ECC算法或用2位ECC算法對塊的內容進行編碼。初始化存儲器系統(tǒng)的過程300包括在步驟304中識別靜態(tài)塊。識別靜態(tài)塊可能一般包括識別實際上目前未被有效使用的塊。一旦識別了靜態(tài)塊,就在步驟308中識別具有相對高擦除計數的未使用塊。一般而言,識別具有相對高擦除計數的未使用塊包括識別一組未使用塊,它們具有與存儲器系統(tǒng)的非易失性存儲器相關的所有未使用塊的最高擦除計數。
在識別了具有相對高擦除計數的未使用塊之后,在步驟312中確定與非易失性存儲器的塊相關的平均擦除計數是否大于擦除計數閾值。平均擦除計數指明了非易失性存儲器內未使用塊已被擦除的平均次數,它在待批美國專利申請?zhí)?0/281823中已作討論。如果確定平均擦除計數不大于擦除計數閾值,則指明了可能用1位ECC算法對靜態(tài)塊的內容編碼,用于存儲到具有相對高擦除計數的未使用塊中。這樣,過程進行到步驟328,其中靜態(tài)塊的內容被解碼。應該理解,與從靜態(tài)塊的解碼和讀取相關的步驟可能是上面參考圖2b描述的步驟。
在對靜態(tài)塊的內容進行解碼后,已解碼內容在步驟332中用1位ECC算法來編碼。然后在步驟336中,已編碼內容被復制或被存儲到具有相對高擦除計數的未使用塊中,并且完成初始化存儲器系統(tǒng)的過程。
返回步驟312,如果確定平均擦除計數大于擦除計數閾值,則指明了具有相對高擦除計數的未使用塊都可能具有大于擦除計數閾值的擦除計數。這樣,過程從步驟312進行到步驟316,在步驟316中,靜態(tài)塊的內容根據需要或用1位ECC算法或用2位ECC算法來解碼。一旦靜態(tài)塊的內容被解碼,則在步驟320中用2位ECC算法對內容進行編碼。在內容被編碼之后,內容在步驟324中被復制或被存儲到具有相對高擦除計數的塊中,并且完成初始化存儲器系統(tǒng)的過程。
在本發(fā)明一實施例中,可能使用回收塊。即先前被視作不可用塊的塊可能在嚴格測試過程后被回收使用,特別是在備用、可使用塊的池不足夠的情況下。對被標識為不可用塊的管理以及對被標識為不可用塊的回收在待批美國臨時專利申請?zhí)?0/421965中已作討論。嚴格測試過程可能包括通過用2位ECC算法把測試內容寫入塊并且用2位ECC算法從塊中讀出測試內容,從而測試已被標識為具有增長缺陷的塊,即以前可用但不再被視為可用的塊。如果被標識為具有增長缺陷的塊通過嚴格的測試過程,則該塊可能再次被視為可用。然而,如果這種塊被使用,則它們一般被用2位ECC算法來讀寫,以改進塊內所存儲的內容的完整性。
圖4a是按照本發(fā)明實施例回收不可用塊的過程的圖解框圖表示。當企圖回收至少某些不可用塊406時,用測試器410對被標識為不可用的塊406的組和池402進行測試。不可用塊406可能在擦除計數塊內被標識為不可用。一般而言,像塊406c這樣具有工廠缺陷的塊未被測試用于可能的回收,由于這種塊一般是不可回收的。這種塊,如塊406c,通常被制造商標識為不可用,并可能還包括經歷過失敗回收過程的塊。
像塊406a、406b這樣具有增長缺陷的塊可能經歷由測試器410的測試,以確定是否至少某些這種塊是可用的。如圖所示,塊406a被回收為塊406a’。通過把塊406a回收為塊406a’,在所述實施例中指明了塊406a’已經通過了使用2位ECC算法的編碼和解碼測試。
一旦已經回收了塊,該塊就在擦除計數塊內被標識為已被回收。圖4b是按照本發(fā)明實施例的一部分擦除計數塊的圖解表示。擦除計數塊440包括表項442、444、446,它們對應于非易失性存儲器內的不同物理塊。在所述實施例中,盡管每個表項442、444、446內的字節(jié)數大約為三,然而與每個表項442、444、446相關的字節(jié)數可能改變。
如圖所示,與表項442相關的最高有效位被設為“0”以指明塊442是可用的。與表項442相關的最低有效位是與表項442相關的塊的擦除計數。因此,與表項442相關的塊被標識為可用,并且具有擦除計數200。一般而言,HEX值可能用于指明擦除計數,盡管為了討論簡便,用字符來示出擦除計數。應該理解,表項442內的比特一般以各種不同方式被組織,即,可能設定除最高有效位之外的一比特以指明與表項442相關的塊是可用的,并且可能把除最低有效位之外的一比特設為塊的擦除計數。
表項444內的最高有效位識別了對應于已被回收的表項444的塊。表項444的最低有效位識別相應的塊具有擦除計數9870。
如前所述,當用回收塊來存儲數據時,存儲在回收塊內的數據一般用2位ECC算法來編碼以確保數據的完整性,無論回收塊的擦除計數是否高于擦除計數閾值。因而,當塊要被寫入可能有回收塊的系統(tǒng)中或從中被讀取時,回收塊被標識。接著參考圖5a,將按照本發(fā)明實施例描述向系統(tǒng)內的塊寫入的一種方法,系統(tǒng)中可能有回收塊,且數據可能或用1位ECC算法或用2位ECC算法來編碼。寫入數據的過程500在步驟504開始,其中標識了要被寫入的塊。在步驟508中從擦除計數塊中讀取對應于所述塊的表項。一般而言,該表項包括塊的擦除計數以及對塊是否已被回收的指示。
一旦在步驟508中讀取了對應于塊的表項,就在步驟512中確定該塊是否是一回收塊。如果確定該塊是一回收塊,則在步驟516中用2位ECC算法對要被寫入或存儲在塊中的內容進行編碼。在內容被編碼之后,已編碼內容在步驟520中被寫入塊中,并且完成把內容寫入塊中的過程。
返回步驟512,如果確定塊不是回收塊,則流程移動到步驟524,在其中確定塊的擦除計數是否低于閾值擦除計數,其中塊的擦除計數可能在步驟508中從擦除計數塊中讀取。當確定塊的擦除計數不低于閾值擦除計數時,就指明了要用2位ECC算法對要被存儲到在步驟504中被標識的塊中的內容進行編碼。這樣,流程從步驟524移至步驟516,在步驟516中用2位ECC算法對內容進行編碼。
或者,如果在步驟524中確定擦除計數不低于閾值擦除計數,則在步驟528中,要被寫入被標識塊的內容用1位ECC算法來編碼。然后,已編碼內容在步驟532中被存儲到或被寫入塊中,并且完成把內容寫入塊中的過程。
圖5b說明按照本發(fā)明實施例從塊中讀取內容的方法流程圖,塊可能是回收塊并可能具有用1位ECC算法或2位ECC算法編碼的內容。讀取過程550從步驟554開始,其中標識具有要讀取內容的塊。然后,在步驟558中在擦除計數塊內標識對應于該塊的表項。該表項一般包括對塊是否是回收塊的指示,以及該塊的擦除計數。
在標識了對應于該塊的表項之后,在步驟562中確定該塊是否是回收塊。一般而言,這種判決可能通過研究在步驟558中標識或從擦除計數塊內讀取的表項而作出。如果確定塊是回收塊,則在步驟574中,存儲在塊中的內容用2位ECC算法來解碼。一旦內容被解碼,就完成了從塊中讀取數據或內容的過程。
或者,如果在步驟562中確定塊不是回收塊,則在步驟566中確定塊的擦除計數是否低于閾值擦除計數。如果確定塊的擦除計數不低于閾值,則指明內容用2位ECC算法來編碼。這樣,在步驟574中用2位ECC算法對數據進行解碼。相反,如果確定塊的擦除計數低于閾值,則在步驟570中用1位ECC算法對數據進行解碼。在數據被解碼之后,完成從塊中讀取數據或內容的過程。
通常,允許靜態(tài)塊交換并包括可能回收的塊的系統(tǒng)初始化過程與允許靜態(tài)塊交換但不考慮回收塊的系統(tǒng)初始化過程不同。參考圖6,將按照本發(fā)明實施例描述用包括回收塊的混合ECC實現初始化存儲器系統(tǒng)的方法。初始化過程600從步驟604開始,其中標識靜態(tài)塊。一旦靜態(tài)塊被標識,則在步驟608中標識具有相對高擦除計數的未使用塊。具有相對高擦除計數的未使用塊一般用于與靜態(tài)塊交換,使的靜態(tài)塊可以被回收或再次利用,而靜態(tài)塊的內容被存儲到具有相對高擦除計數的未使用塊中。
在步驟612中確定可能從擦除計數塊中獲得的與存儲器系統(tǒng)相關的平均擦除計數是否大于擦除計數閾值。如果確定平均擦除計數大于閾值擦除計數,則在步驟616中標識是回收塊的任何靜態(tài)塊。這種標識可能或通過研究與靜態(tài)塊相關的冗余區(qū)域、或通過研究擦除計數塊內的相關表項而作出。
在已被回收的靜態(tài)塊被標識之后,在步驟620中用2位ECC算法對回收塊的內容進行解碼。然后,在步驟624中,剩余靜態(tài)塊的內容被適當解碼。即,其擦除計數比閾值擦除計數低的剩余靜態(tài)塊的內容用1位ECC算法來解碼,而其擦除計數比閾值擦除計數高的剩余靜態(tài)塊的內容用2位ECC算法來解碼。一旦靜態(tài)塊的所有內容都被解碼,則在步驟628中用2位ECC算法對內容進行編碼,且已編碼內容在步驟632中被存儲到或被復制到具有相對高擦除計數的塊中。在把已編碼內容復制到塊中之后,完成系統(tǒng)初始化過程。
返回步驟612以及對平均擦除計數是否大于閾值擦除計數的判決,當確定平均擦除計數不大于閾值擦除計數時,則指明了具有相對高擦除計數的未使用塊可能具有比閾值擦除計數低的擦除計數。這樣,流程從步驟612移至步驟636,在步驟636中標識是回收塊的未使用塊。即,標識了先前回收的具有相對高擦除計數的未使用塊。一旦標識了先前回收的具有相對高擦除計數的未使用塊,則在步驟640中標識是回收塊的任何靜態(tài)塊。
流程從步驟640進行到步驟644,在步驟644中用2位ECC算法對回收靜態(tài)塊的內容進行解碼。在回收靜態(tài)塊的內容被解碼之后,在步驟648中對剩余靜態(tài)塊的內容適當解碼。一般而言,某些靜態(tài)塊可能用1位ECC算法來解碼,而其它靜態(tài)塊可能用2位ECC算法來解碼。在對剩余靜態(tài)塊的內容進行解碼之后,在步驟652中用2位ECC算法對要被存儲到回收未使用塊中的任何內容進行編碼。在步驟656中,用1位ECC算法對要被存儲到先前未回收的未使用塊中的內容進行編碼。一旦實質上所有內容都已被編碼,已編碼內容就在步驟660中被復制到具有相對高擦除計數的它們所傾向的未使用塊中,并且完成初始化過程。
通常,以軟件(如,程序編碼裝置)或固件形式把與實現混合ECC實現相關的功能提供給主機系統(tǒng),主機系統(tǒng)包括非易失性存儲器或非易失性存儲器組件。圖7示出與提供給主機系統(tǒng)的軟件或固件相關的適當系統(tǒng)結構的一實施例。系統(tǒng)結構700一般包括各種模塊,它們可能包括但不限于應用程序接口模塊704、系統(tǒng)管理器模塊708、數據管理器模塊712、數據完整性管理器716、以及設備管理器和接口模塊720。通常,系統(tǒng)結構700可能用可由處理器(如,圖1a的處理器108)存取的軟件編碼裝置或固件來實現。
通常,應用程序接口模塊704可能用于與像閃存(未示出)、尤其是媒質這樣的非易失性存儲器進行通信,從而在初始化、或系統(tǒng)格式化、請求期間初始化媒質。應用程序接口模塊704可能從與媒質相關的扇區(qū)、簇或頁面中讀取以及向其中寫入。一般而言,除了與媒質通信之外,應用程序接口704還與系統(tǒng)管理器模塊708和數據管理器模塊712通信。
系統(tǒng)管理器模塊708包括系統(tǒng)初始化子模塊724、擦除計數塊管理子模塊726、以及功率管理塊子模塊730。系統(tǒng)初始化子模塊724一般用于允許處理初始化請求、且一般與擦除計數塊管理子模塊726進行通信。系統(tǒng)初始化模塊724還用于解決一到多的邏輯到物理的塊分配。
擦除計數塊管理子模塊726包括對被存儲塊的擦除計數的功能、以及用單獨擦除計數計算并更新平均擦除計數的功能。換言之,擦除計數塊管理子模塊726有效地允許對擦除計數分類并允許保持平均擦除計數。而且,在一實施例中,擦除計數塊管理子模塊726還在總系統(tǒng)的初始化請求期間實質上同步擦除計數塊內實質上所有塊的擦除計數。雖然擦除計數塊管理子模塊726可能用于把平均擦除計數存儲在擦除計數塊內,然而應該理解,也可以使用功率管理塊子模塊730來存儲平均擦除計數。
除了與應用程序接口模塊704通信之外,系統(tǒng)管理器模塊708還與數據管理器模塊712以及設備管理器和接口模塊720進行通信。數據管理器模塊712與系統(tǒng)管理器模塊708和應用程序接口模塊704兩者通信,它可能包括提供扇區(qū)映射的功能,這能有效地把邏輯扇區(qū)轉化成物理扇區(qū)。即,數據管理器模塊712用于把邏輯塊映射到物理塊中。數據管理器模塊712可能還包括與操作系統(tǒng)和文件系統(tǒng)接口層相關的功能,并且能夠管理塊內的組,正如待批美國專利申請?zhí)?0/281855中所述的,該申請通過引用被完全結合于此。在一實施例中,數據管理器模塊712可能用于允許實質上失序的寫過程的發(fā)生。
設備管理器和接口模塊720與系統(tǒng)管理器模塊708、數據管理器712和數據完整性管理器716進行通信,它一般提供閃存接口,并且包括與硬件抽象相關的功能,如I/O接口。數據完整性模塊716提供的功能之一為ECC處理。
盡管僅描述了本發(fā)明的少量實施例,然而應該理解,本發(fā)明可能包含在許多其它特定形式中,而不背離本發(fā)明的精神和范圍。通過示例,已經描述了1位ECC算法適用于對具有比擦除計數閾值低的擦除計數的塊的內容進行編碼,已經描述了2位ECC算法適用于對具有比擦除計數閾值高的擦除計數的塊的內容進行編碼。然而應該理解,在某些實施例中,可能用2位ECC算法對具有比擦除計數閾值低的擦除計數的塊的內容進行編碼,而可能用比2位ECC算法具有更高準確性的算法,如3位ECC算法,對具有比擦除計數閾值高的擦除計數的塊的內容進行編碼。
此外,雖然所述的ECC算法一般是1位ECC算法或2位ECC算法,然而這些ECC算法也可以分別用1碼元ECC算法或2碼元ECC算法來取代。而且,實際所使用的ECC算法可能廣泛地改變。適當的ECC算法可能包括、但不限于Reed-Solomon算法、漢明碼算法、以及二進制漢明碼算法。例如,在一實施例中,適當的1位ECC算法可能是漢明碼算法,而適當的2位ECC算法可能是Reed-Solomon算法。
與本發(fā)明各方法相關的步驟可能廣泛地改變。通常,步驟可能被添加、移去、重新排列或改變,而不背離本發(fā)明的精神或范圍。例如,包括混合ECC實現的初始化存儲器系統(tǒng)的過程可能包括擦除靜態(tài)塊。此外,對于可能用回收塊來存儲數據的實施例而言,在確定塊已被回收之前,可能首先確定考慮中的塊的擦除計數是否超出擦除計數閾值。因此,當前的示例應被視作說明性的而非限制性的,且本發(fā)明不限于這里給出的細節(jié),而可能在所附權利要求的范圍內被修改。
權利要求
1.一種在存儲器系統(tǒng)的非易失性存儲器內存儲數據的方法,該方法包括識別數據要被存儲其中的第一塊;獲得與第一塊相關的指示符;確定指示符何時指明要用第一算法對數據進行編碼;當確定要用第一算法對數據進行編碼時,用第一算法對數據進行編碼;以及把用第一算法編碼的數據寫入第一塊。
2.如權利要求1所述的方法,其特征在于還包括當確定數據未用第一算法來編碼時,用第二算法對數據進行編碼;以及把用第二算法編碼的數據寫入第一塊。
3.如權利要求2所述的方法,其特征在于,所述第一算法是1位糾錯碼(ECC)算法,而第二算法是2位ECC算法。
4.如權利要求2所述的方法,其特征在于,所述指示符用于指示塊何時為回收塊,其中當塊為回收塊時,指示符還用于指明要用第二算法對數據進行編碼。
5.如權利要求2所述的方法,其特征在于,所述指示符用于指明塊已被擦除的次數。
6.如權利要求5所述的方法,其特征在于,確定指示符何時指明要用第一算法對數據進行編碼包括確定指示符何時低于一閾值,其中當指示符低于閾值時,要用第一算法對數據進行編碼。
7.如權利要求2所述的方法,其特征在于,所述指示符用于指明非易失性存儲器內的塊已被擦除的大致平均次數。
8.如權利要求2所述的方法,其特征在于,所述指示符被存儲在數據結構中,該數據結構大致與第一塊分開,而獲得與塊相關的指示符包括從數據結構中獲得指示符。
9.如權利要求1所述的方法,其特征在于,所述非易失性存儲器是閃存。
10.如權利要求9所述的方法,其特征在于,所述閃存是NAND閃存和MLC NAND閃存之一。
11.一種在存儲器系統(tǒng)的非易失性存儲器內讀取數據的方法,該方法包括識別要從中讀取數據的第一塊;獲得與第一塊相關的指示符;確定指示符何時指明存儲器第一塊內的數據已經用第一算法來編碼;以及當確定數據已經用第一算法來編碼時用第一算法對數據進行解碼。
12.如權利要求11所述的方法,其特征在于還包括當確定數據尚未用第一算法來編碼時用第二算法對數據進行解碼。
13.如權利要求12所述的方法,其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
14.如權利要求12所述的方法,其特征在于,所述指示符用于指示塊何時為回收塊,其中當塊為回收塊時,指示符還用于指明已經用第二算法對數據進行編碼。
15.如權利要求12所述的方法,其特征在于,所述指示符用于指明塊已被擦除的次數。
16.如權利要求15所述的方法,其特征在于,確定指示符何時指明已用第一算法對數據進行編碼包括確定指示符何時低于一閾值,其中當指示符低于閾值時,已經用第一算法對數據進行編碼。
17.如權利要求12所述的方法,其特征在于,所述指示符用于指明非易失性存儲器內的塊已被擦除的大致平均次數。
18.如權利要求12所述的方法,其特征在于,所述指示符被存儲在數據結構中,該數據結構大致與第一塊分開,而獲得與塊相關的指示符包括從數據結構中獲得指示符。
19.如權利要求11所述的方法,其特征在于,所述非易失性存儲器是閃存。
20.如權利要求19所述的方法,其特征在于,所述閃存是NAND閃存和MLC NAND閃存之一。
21.一種存儲器系統(tǒng),包括包括多個塊的非易失性存儲器,所述多個塊包括第一塊;用于識別數據要被存儲其中的第一塊的編碼裝置;用于獲得與第一塊相關的指示符的編碼裝置;用于確定指示符何時指明要用第一算法對數據進行編碼的編碼裝置;用于在確定要用第一算法對數據進行編碼時用第一算法對數據編碼的編碼裝置;把用第一算法編碼的數據寫入第一塊的編碼裝置;以及存儲編碼裝置的存儲器區(qū)域。
22.如權利要求21所述的存儲器系統(tǒng),其特征在于還包括當確定數據不要用第一算法來編碼時用第二算法對數據進行編碼的編碼裝置;以及把用第二算法編碼的數據寫入第一塊的編碼裝置。
23.如權利要求22所述的存儲器系統(tǒng),其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
24.如權利要求22所述的存儲器系統(tǒng),其特征在于,所述指示符用于指示塊何時為回收塊,其中當塊為回收塊時,指示符還用于指明要用第二算法對數據進行編碼。
25.如權利要求22所述的存儲器系統(tǒng),其特征在于,所述指示符用于指明塊已被擦除的次數。
26.如權利要求25所述的存儲器系統(tǒng),其特征在于,確定指示符何時指明要用第一算法對數據進行編碼包括確定指示符何時低于一閾值,其中當指示符低于閾值時,要用第一算法對數據進行編碼。
27.如權利要求21所述的存儲器系統(tǒng),其特征在于,所述閃存是NAND閃存和MLC NAND閃存之一。
28.一種存儲器系統(tǒng),包括包括多個塊的非易失性存儲器,所述多個塊包括第一塊,所述第一塊包括數據;用于識別第一塊的編碼裝置;用于獲得與第一塊相關的指示符的編碼裝置;用于確定指示符何時指明已經用第一算法對數據進行編碼的編碼裝置;用于在確定已經用第一算法對數據進行編碼時用第一算法對數據解碼的編碼裝置;以及存儲編碼裝置的存儲器區(qū)域。
29.如權利要求28所述的存儲器系統(tǒng),其特征在于還包括當確定數據尚未用第一算法來編碼時用第二算法對數據進行解碼的編碼裝置。
30.如權利要求29所述的存儲器系統(tǒng),其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
31.如權利要求29所述的存儲器系統(tǒng),其特征在于,所述指示符用于指示塊何時為回收塊,其中當塊為回收塊時,指示符還用于指明已經用第二算法對數據進行編碼。
32.如權利要求29所述的存儲器系統(tǒng),其特征在于,所述指示符用于指明塊已被擦除的次數。
33.如權利要求32所述的存儲器系統(tǒng),其特征在于,確定指示符何時指明已經用第一算法對數據進行編碼包括確定指示符何時低于一閾值,其中當指示符低于閾值時,已經用第一算法對數據進行編碼。
34.如權利要求28所述的存儲器系統(tǒng),其特征在于,所述非易失性存儲器是NAND閃存和MLC NAND閃存之一。
35.一種存儲器系統(tǒng),包括包括多個塊的非易失性存儲器,所述塊包括第一塊和第二塊,第一塊包括用第一算法編碼的第一組內容,第二塊包括用第二算法編碼的第二組內容,其中非易失性存儲器還包括一數據結構,它用于指明第一組內容用第一算法來編碼而第二組內容用第二算法來編碼;用于存取數據結構的編碼裝置,其中用于存取數據結構的編碼裝置包括確定用第一算法編碼第一組內容的編碼裝置;以及確定用第二算法編碼第二組內容的編碼裝置;以及存儲編碼裝置的存儲器區(qū)域。
36.如權利要求35所述的存儲器系統(tǒng),其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
37.如權利要求36所述的存儲器系統(tǒng),其特征在于,所述非易失性存儲器是NAND閃存和MLC NAND閃存之一。
38.一種存儲器系統(tǒng),包括非易失性存儲器,包括數據要存儲其中的第一塊;用于識別第一塊的裝置;用于獲得與第一塊相關的指示符的裝置;用于確定指示符何時指明要用第一算法對數據進行編碼的裝置;以及用于在確定要用第一算法對數據進行編碼時用第一算法對數據編碼的裝置。
39.如權利要求38所述的存儲器系統(tǒng),其特征在于還包括在確定不要用第一算法對數據進行編碼時用第二算法對數據編碼的裝置;以及把用第二算法編碼的數據寫入第一塊的裝置。
40.如權利要求39所述的存儲器系統(tǒng),其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
41.如權利要求38所述的存儲器系統(tǒng),其特征在于,所述非易失性存儲器是NAND閃存和MLC NAND閃存之一。
42.一種存儲器系統(tǒng),包括非易失性存儲器,包括要從中讀取數據的第一塊;用于識別第一塊的裝置;用于獲得與第一塊相關的指示符的裝置;用于確定指示符何時指明已經用第一算法對存儲在第一塊內的數據進行編碼的裝置;以及用于在確定已經用第一算法對數據進行編碼時用第一算法對數據解碼的裝置。
43.如權利要求42所述的存儲器系統(tǒng),其特征在于還包括在確定尚未用第一算法對數據進行編碼時用第二算法對數據進行解碼的裝置。
44.如權利要求43所述的存儲器系統(tǒng),其特征在于,所述第一算法是1位ECC算法,而第二算法是2位ECC算法。
45.如權利要求38所述的存儲器系統(tǒng),其特征在于,所述非易失性存儲器是NAND閃存和MLC NAND閃存之一。
全文摘要
公開了用不同糾錯碼算法對非易失性存儲器內塊的內容進行編碼和解碼的方法和裝置。按照本發(fā)明一方面,一種用于在非易失性存儲器內存儲數據的方法包括識別數據要被存儲于其中的第一塊、以及獲得與第一塊相關的指示符。然后可能作出關于該指示符是否指明數據要用第一算法來編碼的判決。當確定數據要用第一算法來編碼時,用第一算法對數據進行編碼,用第一算法編碼的數據在該點后被寫入第一塊。
文檔編號G06F12/02GK1499532SQ20031010464
公開日2004年5月26日 申請日期2003年10月28日 優(yōu)先權日2002年10月28日
發(fā)明者張欽澤, B·卡瓦米, F·薩比特—沙希, 咼, 忍亍 誠 申請人:三因迪斯克公司