專利名稱:具有自適應(yīng)容量的存儲設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及存儲設(shè)備,具體涉及具有自適應(yīng)存儲容量的存儲設(shè)備。
背景技術(shù):
多種存儲設(shè)備,例如閃存和動態(tài)隨機存取存儲器(DRAM),使用模擬存儲單元陣列來存儲數(shù)據(jù)。例如,在2003年4月在IEEE學報,第91卷,第4期,第489-502頁由Bez等人發(fā)表的“Introduction to Flash Memory”中,描述了閃存設(shè)備,該文獻在此處以援引方式全部納入本文。在此類存儲設(shè)備中,每個模擬存儲單元通常包括一個晶體管,該晶體管保持了一定數(shù)量的電荷,所述電荷表示存儲在所述存儲單元中的信息。寫入一特定存儲單元的電荷影響所述存儲單元的“門限電壓”,也即,需要施加電壓到存儲單元以使得所述存儲單元可以導(dǎo)通電流?!┐鎯υO(shè)備,通常稱為“單層單元”(SLC)設(shè)備,在每個存儲單元中存儲單比特信息。通常,所述存儲單元的可能的門限電壓的范圍被分為兩個區(qū)域。落入這兩個區(qū)域中的一個區(qū)域的電壓值代表比特值“0”,而屬于另一個區(qū)域的電壓值代表“1”。更高密度設(shè)備, 通常稱為“多層單元”(MLC)設(shè)備,每個存儲單元存儲兩個或更多個比特。在多層單元中,門限電壓的范圍被分為多于兩個區(qū)域,其中每個區(qū)域代表多于一個比特。例如,在紐約州紐約市舉辦的1996年IEEE國際電子器件大會(IEDM)的學報上第 169-172 頁上由 Eitan 等人發(fā)表的“Multilevel Flash Cells and their Trade-Offs,,,描述了多層閃存單元和設(shè)備,該文獻在此以援引方式全部納入本文。該文獻對數(shù)種多層閃存單元進行比較,例如共地型、DINOR型、AND型、NOR型和NAND型存儲單元。Eitan等人在1999年9月21至對日在日本東京舉行的固態(tài)器件與材料國際會議(SSDM)的學報的第522至524頁發(fā)表的“Can NROM,a 2-bit,Trapping Storage NVM Cell, Give a Real Challenge to Floating Gate Cells ?”描述了另一種模擬存儲單元,稱為氮化物只讀存儲器(NROM),該文獻在此以援引方式納入本文。在2002年2月3日 7日在美國加州舊金山市舉辦的IEEE國際固態(tài)電子器件學會(ISSCC 2002)的學報的第100-101 頁由 Maayan 等人發(fā)表的"A 512 Mb NROM Flash Data Storage Memory with 8MB/s Data Rate”中,描述了 NROM存儲單元,其在此處以援引方式納入本文。模擬存儲單元的其他示例性類型為,鐵電RAM(FRAM)單元、磁RAM(MRAM)單元和相變RAM(PRAM,也稱為相變存儲器PCM)單元。例如,在2004年5月16日至19日在塞爾維亞和黑山的Nis舉辦的第M屆微電子國際學會(MIEL)學報第一卷的第377-484頁上由Kim 禾口 Koh 發(fā)表的"Future Memory Technology including Emerging New Memories,,中,描述了 FRAM、MRAM和PRAM單元,其在此處以援引方式納入本文。在一些應(yīng)用中,數(shù)據(jù)以可變密度存儲在存儲單元中。例如,以援引方式將其公開內(nèi)容納入本文的美國專利6,363,008,描述了一種包括多個存儲陣列的每單元多比特 (multiple-bit-per-cell)存儲器,其中每個存儲單元存儲的比特數(shù)是針對每個存儲陣列單獨設(shè)定。在讀、寫和存儲每單元較多比特數(shù)的時候,經(jīng)測試證明精確的存儲陣列被設(shè)置為存儲每單元較多的比特數(shù),而經(jīng)測試證明不能精確地讀、寫和存儲每單元同樣多比特數(shù)的存儲陣列被設(shè)置為存儲每單元較少的比特數(shù)。作為替代,在其公開內(nèi)容以援引方式納入本文的美國專利6,456,528中,為通常在多個存儲狀態(tài)下操作其存儲單元的一種閃存非易失性存儲系統(tǒng),提供了在兩個狀態(tài)下操作其存儲單元塊的某些所選塊或所有塊的能力。這兩個狀態(tài)被選擇為所述多個狀態(tài)中相距最遠的狀態(tài),從而在雙態(tài)操作中提供增大的裕度。美國專利5,930,167,其公開內(nèi)容以援引方式納入本文,描述了一種存儲系統(tǒng),其包括配置在可共同擦除的存儲單元塊中的閃速可電擦除可編程只讀存儲(EEPROM)單元陣列。單個存儲單元能存儲多于一比特的數(shù)據(jù),原因在于其以多于兩個的可檢測的門限范圍或狀態(tài)來操作該單個存儲單元。所述陣列的任何未存儲數(shù)據(jù)的部分可被用作寫緩存,其中這些存儲單元的單獨一個通過僅以兩個可檢測的門限范圍來操作以存儲單獨一比特數(shù)據(jù)。 進入存儲器的數(shù)據(jù)初始以兩個狀態(tài)寫入可用的塊中。隨后,在背景(background)中,以多個狀態(tài)將所述被緩存的數(shù)據(jù)讀取、壓縮并且寫回到所述存儲器的較少的塊中。美國專利6,466,476,其公開內(nèi)容以援引方式納入本文,描述了每單元多比特非易失性存儲器,其使用不同的每單元比特數(shù)來存儲數(shù)據(jù)流的不同部分。具體地,使用相對小的每單元比特數(shù)來存儲要求高度數(shù)據(jù)完整性的數(shù)據(jù)(例如,數(shù)據(jù)幀的幀頭)。使用相對大的每單元比特數(shù)來存儲具有較高錯誤容忍度的數(shù)據(jù)(例如,表示音樂、圖像或視頻的主要數(shù)據(jù))。美國專利6,643,169,其公開內(nèi)容以援引方式納入本文,描述了一種根據(jù)所涉及的數(shù)據(jù)的類型以可變的每單元比特數(shù)存儲數(shù)據(jù)的方法。當保真度不太重要時,可以增大每單元比特數(shù)。當保真度較為重要時,可以減小每單元比特數(shù)。在一些實施方案中,存儲器可以基于逐個存儲單元而在存儲模式之間進行改變。
發(fā)明內(nèi)容
7
本發(fā)明的實施方案提供一種用于在包括多個模擬存儲單元的存儲器中存儲數(shù)據(jù)的方法,所述方法包括估計所述模擬存儲單元的相應(yīng)的可達到的存儲容量;基于所估計的可達到的存儲容量,為所述存儲單元分配定義待要存儲在該存儲單元中的數(shù)據(jù)量的相應(yīng)的存儲配置;根據(jù)相應(yīng)的分配的存儲配置,將數(shù)據(jù)存儲在所述存儲單元中;以及在所述存儲器已經(jīng)被安裝在主機系統(tǒng)中并用于在該主機系統(tǒng)中存儲數(shù)據(jù)之后,重新估計模擬存儲單元的相應(yīng)的可達到的存儲容量,并且響應(yīng)于所重新估計的可達到的容量,修改所述存儲配置。在一些實施方案中,存儲數(shù)據(jù)包括使用糾錯碼(ECC)對數(shù)據(jù)進行編碼,將已編碼的數(shù)據(jù)轉(zhuǎn)換為選自一標稱模擬值的集合中的模擬值并且將所述模擬值寫入相應(yīng)的存儲單元,且每個存儲配置指定相應(yīng)的ECC碼率和用于存儲數(shù)據(jù)的所述標稱模擬值的集合的大小。在一個實施方案中,對于每個模擬存儲單元,存儲數(shù)據(jù)包括將數(shù)據(jù)轉(zhuǎn)換成選自一標稱模擬值的集合中的模擬值并將所述模擬值寫入所述存儲單元,且每個存儲配置均指定用于在所述模擬存儲單元中存儲所述數(shù)據(jù)的標稱模擬值。在另一實施方案中,存儲數(shù)據(jù)包括將數(shù)據(jù)轉(zhuǎn)換成模擬值,并且將所述模擬值寫入相應(yīng)的存儲單元中,且估計可達到的存儲容量包括對影響寫入存儲單元的模擬值的相應(yīng)的失真度(distortion level)作估計,并且響應(yīng)于所述失真度確定可達到的存儲容量。估計失真度可以包括從存儲單元讀取模擬值,并且基于從所述存儲單元讀取的模擬值來估計所述失真度。估計失真度可以包括從讀取自存儲單元的模擬值來重構(gòu)數(shù)據(jù),并且基于所重構(gòu)的數(shù)據(jù)來計算所述失真度。在一些實施方案中,計算失真度可以包括對讀取自所述存儲單元的模擬值的標量函數(shù)求和。對標量函數(shù)的求和可以包括響應(yīng)于數(shù)據(jù)對在讀取自存儲單元的模擬值和存儲在存儲單元中的數(shù)據(jù)的相應(yīng)的期望值之間的差的平方求和。 在另一實施方案中,計算失真度包括對如下存儲單元的數(shù)量進行計數(shù),在該存儲單元中,讀取自所述存儲單元的模擬值和存儲在所述存儲單元中的數(shù)據(jù)的相應(yīng)的期望值之間的差響應(yīng)于所述數(shù)據(jù)而超過一預(yù)定值。在公開的實施方案中,存儲數(shù)據(jù)包括將模擬值寫入存儲單元并且使用迭代的編程與驗證(P&V)過程來驗證已寫入的模擬值,而估計失真度包括基于由所述P&V過程驗證的模擬值來計算所述失真度。在另一實施方案中,存儲數(shù)據(jù)包括將模擬值寫入存儲單元并且使用迭代的編程和驗證(P&V)過程驗證已寫入的模擬值,該過程通過編程步驟迭代地增量所述模擬值,且存儲配置定義由所述迭代的P&V過程使用的編程步驟的大小。在又一實施方案中,存儲數(shù)據(jù)包括對待要存儲在一組存儲單元內(nèi)的數(shù)據(jù)用糾錯碼 (ECC)編碼,并且將已編碼的數(shù)據(jù)轉(zhuǎn)換成模擬值以用于存儲在該組存儲單元中的相應(yīng)的模擬存儲單元中,估計可達到的存儲容量包括從所述組中的存儲單元讀取模擬值并且對介于讀取的模擬值和最接近于所述模擬值的有效的ECC碼字之間的距離度量作估算,并且修改存儲配置包括響應(yīng)于所估算的距離度量適配該組存儲單元的存儲配置。在又一實施方案中,重新估計可達到的存儲容量包括讀取存儲在所述存儲單元中的數(shù)據(jù),而修改存儲配置包括響應(yīng)于在已讀取的數(shù)據(jù)中的檢測錯誤來適配所述存儲配置。 存儲數(shù)據(jù)可以包括使用糾錯碼(ECC)對數(shù)據(jù)編碼,而適配所述存儲配置可以包括修改ECC 的碼率。在一些實施方案中,估計存儲單元可達到的容量包括對施加到相應(yīng)的存儲單元的先前的編程和擦除操作進行追蹤并且響應(yīng)于已追蹤的先前的編程和擦除操作來估計所述可達到的容量。估計可達到的容量可以包括響應(yīng)于先前的編程和擦除操作以來流逝的時間段的長度來計算可達到的容量。在一個實施方案中,存儲數(shù)據(jù)包括將所述數(shù)據(jù)的初始部分轉(zhuǎn)換成模擬值并且將所述模擬值寫入相應(yīng)的存儲單元,且隨后通過增大寫入到所述存儲單元的模擬值而不擦除該存儲單元,將所述數(shù)據(jù)的另外部分存儲在所述存儲單元的至少一些之中。在另一實施方案中,存儲數(shù)據(jù)包括使用為所述數(shù)據(jù)增加冗余位的糾錯碼(ECC)對數(shù)據(jù)進行編碼,并且將所述冗余位存儲在一些模擬存儲單元中,且修改存儲配置包括修改多個由所述ECC增加的冗余位而不擦除所述存儲單元。存儲冗余位可以包括與數(shù)據(jù)分離地存儲冗余位。在又一實施方案中,分配存儲配置包括預(yù)定義一個可能的存儲配置的集合,且修改存儲配置包括從所述預(yù)定義的集合中選擇更新的存儲配置。由至少一個所述存儲配置所定義的所述數(shù)據(jù)量指定每單元非整數(shù)的比特數(shù)。在又一實施方案中,存儲數(shù)據(jù)包括在將數(shù)據(jù)寫入存儲單元之前對數(shù)據(jù)進行壓縮, 且存儲配置定義將對數(shù)據(jù)進行壓縮所采用的相應(yīng)的壓縮比。在一個公開的實施方案中,分配存儲配置包括為所述存儲單元的相應(yīng)組定義存儲配置。在一個實施方案中,在存儲單元中存儲數(shù)據(jù)包括接受用于存儲在所述存儲器中的數(shù)據(jù)項,選擇存儲單元子集以在其中響應(yīng)于所分配的存儲配置存儲所述數(shù)據(jù)項,并且將所述數(shù)據(jù)項存儲在所選擇的存儲單元子集中。在一些實施方案中,重新估計可達到的存儲容量是在不對所述數(shù)據(jù)進行存儲和讀取的空閑時間段期間執(zhí)行。在另一實施方案中,分配和修改存儲配置包括將所述存儲配置存儲在配置表中。 在一些實施方案中,可以在將存儲器已經(jīng)安裝在主機系統(tǒng)之前,在存儲配置表中存儲存儲配置的初始值。在又一實施方案中,分配和修改存儲配置包括在存儲在存儲單元中的數(shù)據(jù)量和相應(yīng)的估計可達到的容量之間維持預(yù)定的裕度。在又一實施方案中,至少一些失真是由模擬存儲單元中的泄漏電流所導(dǎo)致,且估計失真包括估計泄漏電流。根據(jù)本發(fā)明的一實施方案,還提供一種用于在包括多個模擬存儲單元的存儲器中進行數(shù)據(jù)存儲的方法,該方法包括估計在相應(yīng)的模擬存儲單元之中的失真度;基于所估計的失真度,估計所述模擬存儲單元的相應(yīng)的可達到的存儲容量,基于所估計的可達到的容量,為所述存儲單元分配定義待要存儲在所述存儲單元中的數(shù)據(jù)量的相應(yīng)的存儲配置;并且根據(jù)相應(yīng)的分配的存儲配置將所述數(shù)據(jù)存儲在所述存儲單元中。根據(jù)本發(fā)明的一實施方案,還提供一種用于在包括多個模擬存儲單元的存儲器中進行數(shù)據(jù)存儲的方法,所述方法包括當所述存儲器在主機系統(tǒng)中處于使用狀態(tài)時,追蹤所述模擬存儲單元的相應(yīng)的可達到的存儲容量;接受用于存儲在所述存儲器中的數(shù)據(jù);基于所追蹤的可達到的容量選擇一用于存儲所述數(shù)據(jù)的存儲單元子集;并且將所述數(shù)據(jù)存儲在所述子集的存儲單元中。在一些實施方案中,選擇子集包括選擇其可達到的總?cè)萘颗c所接受的數(shù)據(jù)的大小最佳匹配的存儲單元。在另一實施方案中,接受數(shù)據(jù)包括接受用于存儲所述數(shù)據(jù)的要求的可靠性等級,且選擇子集包括響應(yīng)于所要求的可靠性等級選擇存儲單元。附加地或替代地, 接受數(shù)據(jù)包括接受所要求的用于存儲數(shù)據(jù)的保持期,且選擇子集包括響應(yīng)于所要求的保持期而選擇存儲單元。選擇子集可以包括選擇相對于其他存儲單元具有低失真度的存儲單兀。在另一實施方案中,追蹤可達到的存儲容量包括對施加到存儲單元的先前的編程和存儲操作進行追蹤,而選擇子集包括響應(yīng)于先前的編程和擦除操作來選擇存儲單元。選擇子集可以包括通過選擇在所述存儲單元內(nèi)的相對于其他存儲單元具有較少次數(shù)的先前的編程和擦除操作的存儲單元,將多個編程和擦除操作均勻分布在所述存儲單元中。分布編程和擦除操作的次數(shù)可以包括選擇在預(yù)定的最近時間段內(nèi)相對于其他存儲單元執(zhí)行較少次數(shù)的先前的編程和擦除操作的存儲單元。在公開的實施方案中,追蹤可達到的存儲容量包括通過對可用于存儲數(shù)據(jù)的存儲單元的可達到的容量求和,來計算可用的存儲空間的大小并且報告給所述主機系統(tǒng)。在另一實施方案中,存儲器被分成多個擦除塊,每個擦除塊包括在單次擦除操作中擦除的一組存儲單元,所述方法還包括通過如下方式從所述存儲器中擦除數(shù)據(jù)項識別存儲有所述數(shù)據(jù)項的一個或多個擦除塊;當存儲有所述數(shù)據(jù)項的擦除塊包含另一數(shù)據(jù)項的已存儲數(shù)據(jù)時,基于所追蹤的所述存儲單元的可達到的容量和另一數(shù)據(jù)項的大小,識別在所述擦除塊之外的存儲有所述數(shù)據(jù)項的另外的存儲單元,并且將所述另一數(shù)據(jù)項的數(shù)據(jù)復(fù)制到所述另外的存儲單元;并且擦除存儲有所述數(shù)據(jù)項的擦除塊。在一個實施方案中,接受用于存儲的數(shù)據(jù)包括以固定容量塊接受來自主機系統(tǒng)的數(shù)據(jù),并且基于所追蹤的可變?nèi)萘拷M的可達到的容量,將數(shù)據(jù)存儲在存儲單元的可變?nèi)萘拷M中。在另一實施方案中,在可變?nèi)萘拷M中存儲數(shù)據(jù)包括識別兩個或更多個其容量小于固定容量塊的容量的可變?nèi)萘拷M,并且將接受在一個或多個固定容量塊中的數(shù)據(jù)存儲在所識別的兩個或更多個可變?nèi)萘拷M中。在又一實施方案中,在可變?nèi)萘拷M中存儲數(shù)據(jù)包括將一個或多個可變?nèi)萘拷M分配為用作逾額存儲器存儲區(qū)域,將接受在固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中, 并且,當一個可變?nèi)萘拷M的可達到的容量小于所述固定容量塊的容量時,將接受在相應(yīng)的固定容量塊中的數(shù)據(jù)中的一些存儲在所分配的逾額存儲器存儲區(qū)域中。在又一實施方案中,在可變?nèi)萘拷M中存儲數(shù)據(jù)包括將接受在固定容量塊中的數(shù)據(jù)循序地存儲在存儲單元中,而與可變?nèi)萘拷M之間的邊界無關(guān)。存儲數(shù)據(jù)可以包括,初始將接受在每個固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中,且隨后對初始存儲的數(shù)據(jù)循序重新編程,而與所述可變?nèi)萘拷M之間的邊界無關(guān)。在一些實施方案中,所述方法包括從可變?nèi)萘拷M中取出數(shù)據(jù),重構(gòu)固定容量塊,并且使用固定容量塊向主機系統(tǒng)輸出數(shù)據(jù)。所述方法可以包括通過緩存所述數(shù)據(jù)中的至少一些,來減少施加到所述存儲器的存儲器存取操作的次數(shù)。緩存所述數(shù)據(jù)中的至少一些可以包括一旦檢測到瞬時存儲事件,就將被緩存的數(shù)據(jù)傳送到存儲器。瞬時存儲事件可以包括選自即將到來的電源故障、超時和接受自主機系統(tǒng)的文件結(jié)束(EOF)命令的事件中的至少
一個事件。根據(jù)本發(fā)明的一實施方案,還提供一種數(shù)據(jù)存儲裝置,包括接口,其被布置為與包括多個模擬存儲單元的存儲器通信;和存儲器信號處理器(MSP),其被布置為估計所述存儲單元的相應(yīng)的可達到的存儲容量,基于所估計的可達到的容量為所述存儲單元分配定義待要存儲在所述存儲單元中的數(shù)據(jù)量的相應(yīng)的存儲配置,根據(jù)相應(yīng)的分配的存儲配置將數(shù)據(jù)存儲在所述存儲單元中,在所述存儲器已經(jīng)被安裝在主機系統(tǒng)中并用于在該主機系統(tǒng)中存儲數(shù)據(jù)之后重新估計模擬存儲單元的相應(yīng)的可達到的存儲容量,并且響應(yīng)于所重新估計的可達到的容量來修改所述存儲配置。根據(jù)本發(fā)明的一個實施方案,還提供一種數(shù)據(jù)存儲裝置,包括接口,其被布置為與包括多個模擬存儲單元的存儲器通信;和存儲器信號處理器(MSP),其被布置為估計在相應(yīng)的模擬存儲單元之中的失真度, 基于所估計的失真度估計所述模擬存儲單元的相應(yīng)的可達到的存儲容量,基于所估計的可達到的容量為所述存儲單元分配定義待要存儲在所述存儲單元中的數(shù)據(jù)量的存儲配置,并且根據(jù)相應(yīng)的分配的存儲配置將所述數(shù)據(jù)存儲在所述存儲單元中。根據(jù)本發(fā)明的一個實施方案,還提供一種數(shù)據(jù)存儲裝置,包括接口,其被布置為與包括多個模擬存儲單元的存儲器通信;和存儲器信號處理器(MSP),其被布置為當所述存儲器在主機系統(tǒng)中處于使用狀態(tài)時追蹤所述存儲單元的相應(yīng)的可達到的存儲容量,接受用于存儲在所述存儲器中的數(shù)據(jù), 基于所追蹤的可達到的容量選擇一用于存儲所述數(shù)據(jù)的存儲單元子集,并且將數(shù)據(jù)存儲在所述子集的存儲單元中。根據(jù)本發(fā)明的一實施方案,還提供一種數(shù)據(jù)存儲裝置,包括存儲器,其包括多個模擬存儲單元;和存儲器信號處理器(MSP),其連接到所述存儲器并且被布置為估計所述存儲單元的相應(yīng)的可達到的存儲容量,基于所估計的可達到的存儲容量為所述存儲單元分配定義待要存儲在所述存儲單元中的數(shù)據(jù)量的相應(yīng)的存儲配置,根據(jù)相應(yīng)的分配的存儲配置將數(shù)據(jù)存儲在所述存儲單元中,在所述存儲器已經(jīng)被安裝在主機系統(tǒng)中并用于在該主機系統(tǒng)中存儲數(shù)據(jù)之后重新估計模擬存儲單元的相應(yīng)的可達到的存儲容量,并且響應(yīng)于所重新估計的可達到的容量來修改所述存儲配置。在一些實施方案中,存儲器位于第一集成電路(IC)中,且MSP位于不同于第一 IC 的第二 IC中。在一個替代性的實施方案中,存儲器和MSP被集成在單個設(shè)備之中。也作為替代,MSP被實施在主機系統(tǒng)的處理器中。在一些實施方案中,存儲單元可以包括閃存單元、 動態(tài)隨機存取存儲(DRAM)單元、相變存儲(PCM)單元、氮化物只讀存儲(NROM)單元、磁隨機存取存儲(MRAM)單元或者鐵電隨機存取存儲(FRAM)單元。根據(jù)本發(fā)明的一個實施方案,還提供一種數(shù)據(jù)存儲裝置,包括
存儲器,其包括多個模擬存儲單元;以及 存儲器信號處理器(MSP),其被連接到所述存儲器,并被布置為當所述存儲器在主機系統(tǒng)中處于使用中時,追蹤所述存儲單元的相應(yīng)的可達到的存儲容量,接受用于存儲在存儲器中的數(shù)據(jù),基于所追蹤到的可達到的容量來選擇用于存儲所述數(shù)據(jù)的存儲單元子集,并且將所述數(shù)據(jù)存儲在所述子集的存儲單元中。從下面對實施例的詳細說明,并結(jié)合以下附圖,可以更充分地理解本發(fā)明。
圖1是示意性地示出了根據(jù)本發(fā)明的一個實施方案的存儲系統(tǒng)的框圖;圖2是示意性地示出了根據(jù)本發(fā)明的一個實施方案的存儲單元陣列的示意圖;圖3是示出了根據(jù)本發(fā)明的一個實施方案的在多層存儲單元陣列中的電壓分布的曲線圖;圖4是示出了根據(jù)本發(fā)明的一個實施方案的在存儲單元陣列中的存儲單元容量分布的曲線圖;圖5是示出了根據(jù)本發(fā)明的一個實施方案的在存儲單元陣列中的塊和頁結(jié)構(gòu)的示意圖;圖6至11是示意性地示出了根據(jù)本發(fā)明的實施方案的用于自適應(yīng)地修改存儲設(shè)備存儲密度的方法的流程圖;圖12是示意性地示出了根據(jù)本發(fā)明的一個實施方案的一種用于在可變?nèi)萘康拇鎯υO(shè)備中存儲數(shù)據(jù)的方法的流程圖;圖13是示意性地示出了根據(jù)本發(fā)明的一個實施方案的一種用于從可變?nèi)萘康拇鎯υO(shè)備擦除數(shù)據(jù)的方法的流程圖;以及圖14至17是示意性地示出了根據(jù)本發(fā)明的實施方案的用于在可變?nèi)萘康拇鎯υO(shè)備中存儲固定大小的數(shù)據(jù)塊的方法的示意圖。
具體實施例方式概述諸如閃存之類的模擬存儲單元陣列可達到的存儲容量,隨著時間的流逝而變化。 在許多情況下,由于反復(fù)的編程與擦除操作、老化以及其他效應(yīng),存儲單元陣列可達到的容量隨著時間的流逝而減小。容量變化程度經(jīng)常對于陣列中各個不同的存儲單元而言有所區(qū)別。另一方面,存儲設(shè)備通常被規(guī)定為在某一可靠性等級提供某一容量,并且在某一數(shù)量的數(shù)據(jù)保持期中滿足這些規(guī)定。某些公知的存儲設(shè)備和相關(guān)聯(lián)的存儲方法,通過過設(shè)計或過規(guī)定存儲單元陣列的尺寸和性能來應(yīng)付變化的存儲單元容量。在此類設(shè)備中,存儲單元的數(shù)量和它們的性能被規(guī)定具有裕度,在期望的保持期之內(nèi)的給定預(yù)期退化程度的情況下,所述裕度大得足以將所述設(shè)備保持在規(guī)定之內(nèi)。此類設(shè)計方法通常缺乏效率,增加了成本和復(fù)雜度并且減少了存儲設(shè)備的可用容量。本發(fā)明的實施方案通過自適應(yīng)地修改數(shù)據(jù)存儲的密度,提供了用于在存儲設(shè)備中存儲數(shù)據(jù)的改進的方法和系統(tǒng)。
在一些實施方案中,存儲器信號處理器(MSP)將數(shù)據(jù)存儲在諸如閃存或DRAM設(shè)備之類的存儲設(shè)備中,該存儲設(shè)備包括多個模擬存儲單元。所述MSP持續(xù)地對所述存儲單元可達到的存儲容量進行估計。所述MSP可以基于如下因素來估計可達到的容量,所述因素例如存儲單元中的失真度、針對數(shù)據(jù)規(guī)定的可靠性和/或保持要求、在被編程在存儲單元中的數(shù)據(jù)中檢測到的錯誤和/或所述存儲單元已經(jīng)經(jīng)歷的先前的編程和擦除操作的歷史?;谒烙嫷目蛇_到的容量,所述MSP為各存儲單元分配相應(yīng)的存儲配置。每種存儲配置定義可存儲在各存儲單元中的數(shù)據(jù)量。例如,所述存儲配置可以定義多個標稱電壓電平以及用于將數(shù)據(jù)存儲在存儲單元中的糾錯編碼(ECC)方案。在一些實施方案中,所述MSP從預(yù)定配置的有限集合中選擇適當?shù)拇鎯ε渲谩K鯩SP根據(jù)分配給存儲單元的存儲配置,將數(shù)據(jù)存儲在存儲單元中。在存儲設(shè)備的整個使用壽命中,所述MSP隨著時間的推移而自適應(yīng)地修改存儲配置,以使得存儲單元中的數(shù)據(jù)存儲密度和存儲單元可達到的容量相匹配。與一些已知的對存儲密度進行先驗規(guī)定的存儲設(shè)備和數(shù)據(jù)存儲方法不同,此處所描述的方法和系統(tǒng),在存儲陣列的整個使用壽命中,追蹤不同存儲單元可達到的容量,并據(jù)此不斷地適應(yīng)數(shù)據(jù)存儲密度。因此,存儲設(shè)備可達到的容量可以由于其隨著時間的推移而變化而得以充分利用,從而減小了尺寸和成本。MSP和存儲器控制器或其他主機交互,也即,從存儲器控制器接受用于存儲的數(shù)據(jù),并且當存儲器控制器請求時,取出存儲在存儲器中的數(shù)據(jù)。在一些實施方案中,MSP對存儲器控制器模仿固定容量操作,盡管它將數(shù)據(jù)存儲在具有可變?nèi)萘康亩鄠€存儲單元組中。 例如,當MSP與舊式存儲器控制器交互時,使用此類方法,所述舊式存儲器控制器被設(shè)計為具有固定容量和固定頁尺寸。從而,通過在存儲器控制器的固定容量操作和此處描述的存儲方法的自適應(yīng)容量特性之間進行調(diào)解,舊式存儲器控制器可以不經(jīng)修改而使用。系統(tǒng)描述圖1是示意性地示出了根據(jù)本發(fā)明的一個實施方案的存儲系統(tǒng)20的框圖。系統(tǒng) 20可用于不同的主機系統(tǒng)和設(shè)備中,例如用于計算設(shè)備、蜂窩電話或其他通信終端、可移除存儲器模塊(例如“U盤”設(shè)備)、數(shù)碼相機、音樂及其他媒體播放器、和/或任何其他存儲和取出數(shù)據(jù)的系統(tǒng)或設(shè)備。在典型的應(yīng)用中,存儲系統(tǒng)20與存儲器控制器22交互,也即, 接受來自存儲器控制器的用于存儲的數(shù)據(jù),并且當被請求時將存儲在存儲器中的數(shù)據(jù)輸出到存儲器控制器。系統(tǒng)20包括存儲設(shè)備M,其將數(shù)據(jù)存儲在存儲單元陣列觀中。存儲陣列觀包括多個模擬存儲單元32。在本專利申請的上下文中以及在權(quán)利要求書中,術(shù)語“模擬存儲單元”用于描述保持諸如電壓或電荷之類的物理參數(shù)的連續(xù)模擬值的任意的存儲元件。陣列 28可以包括任何種類的模擬存儲單元,舉例而言,例如,NAND和NOR閃存單元、PCM、NR0M、 FRAM、MRAM和DRAM單元。存儲在存儲單元中的電荷電平和/或?qū)懭肱c讀出存儲單元的模擬電壓在本文中被統(tǒng)稱為模擬值。用于存儲在存儲設(shè)備M中的數(shù)據(jù)被提供給所述設(shè)備并且緩存在數(shù)據(jù)緩沖器36 中。然后所述數(shù)據(jù)被轉(zhuǎn)換成模擬電壓并且使用讀/寫(R/W)單元40寫入存儲單元32中, 該讀/寫單元40的功能將在下文中進行更為詳細的描述。當從陣列觀中讀出數(shù)據(jù)時,單元40將電荷以及由此的存儲單元32的模擬電壓轉(zhuǎn)換成數(shù)字樣本,每個數(shù)字樣本具有一個或多個比特的分辨率。由單元40產(chǎn)生的樣本被緩存在緩沖器36中。存儲設(shè)備M的操作和時序均由控制邏輯48管理。存儲器信號處理器(MSP) 52執(zhí)行將數(shù)據(jù)存入存儲設(shè)備M以及從存儲設(shè)備M取出數(shù)據(jù)。MSP 52介于存儲設(shè)備M和存儲器控制器22或其他主機之間。如下文將會更詳細地描述,MSP 52使用新穎的方法,用于自適應(yīng)地估計存儲單元32的可達到的容量,并用于基于所估計的存儲單元容量來管理存儲陣列觀中的數(shù)據(jù)的存儲和取出。MSP 52自適應(yīng)地修改陣列觀中的數(shù)據(jù)存儲密度,從而在所述系統(tǒng)的使用壽命期間提供最佳的容量。MSP 52能根據(jù)存儲單元可達到的容量,以不同的密度將數(shù)據(jù)寫入存儲單元32。在本專利申請的上下文中以及在權(quán)利要求書中,術(shù)語“容量”用于描述給定存儲單元或存儲單元組能夠可靠保持的信息量(通常以每單元比特數(shù)為單位來表達)。術(shù)語“密度”用來描述實際存儲在存儲單元或存儲單元組中的通常以每單元比特數(shù)計算的信息量。從而,只要未超過容量,就能夠?qū)⑿畔⒁圆煌芏瓤煽康卮鎯υ谝唤M存儲單元中。從而,假定數(shù)據(jù)被可靠存儲,那么一個存儲單元或者一組存儲單元的存儲密度根據(jù)定義就不大于其容量。例如通過改變用于將數(shù)據(jù)寫入存儲單元32的電壓電平的數(shù)量,MSP 52能夠改變存儲單元32中的數(shù)據(jù)存儲密度。使用較多數(shù)量的電壓電平能夠使信息密度較高。在一些實施方案中,MSP 52使用糾錯碼(ECC)將存儲在設(shè)備M中的數(shù)據(jù)編碼。MSP 52包括編碼器/解碼器64,該編碼器/解碼器64將待要寫入設(shè)備M的數(shù)據(jù)編碼,并且將從設(shè)備M讀出的數(shù)據(jù)解碼。在一些實現(xiàn)中,MSP 52通過選擇不同的碼或改變ECC的碼率來改變信息密度。信號處理單元60處理寫入設(shè)備M并從設(shè)備M取出的數(shù)據(jù)。特別地,信號處理單元60對存在于從存儲單元32中讀出的電壓中的失真進行估計。所估計的失真用于估計存儲單元32的可達到的容量,并且用于確定待要使用的期望存儲密度。MSP 52包括數(shù)據(jù)緩沖器72,該數(shù)據(jù)緩沖器72由單元60用于存儲數(shù)據(jù),并且用作與存儲設(shè)備M通信的接口。MSP 52還包括輸入/輸出(I/O)緩沖器56,該輸入/輸出(I/O)緩沖器56形成在所述MSP和存儲器控制器之間的接口。存儲器管理單元76管理MSP 52的操作和定時。具體而言,存儲器管理單元76追蹤每個存儲單元或存儲單元組的估計容量和狀態(tài),以使得MSP 52在每個存儲單元中或存儲單元組中以與其估計容量相匹配的密度存儲數(shù)據(jù)。信號處理單元60和管理單元76可以以硬件形式實現(xiàn)。替代地,單元60和/或單元76可以包括運行適合的軟件的微處理器,或者硬件和軟件元素的組合。在一些實施方案中,編碼器/解碼器64或其局部,也可以以軟件實現(xiàn)。在一些實施方案中,MSP 52的功能有時可以以軟件實現(xiàn)并且由適當?shù)奶幚砥骰蛑鳈C系統(tǒng)的其他元件執(zhí)行。圖1的配置是示例性的系統(tǒng)配置,該圖示純粹用于使概念清晰。也可以使用任意其他適合的配置。為清晰起見,從附圖中已經(jīng)省略了對于理解本發(fā)明的原理非必要的元素, 例如各種接口、尋址電路、定時和定序電路、數(shù)據(jù)置亂電路和調(diào)試電路。在一些實施方案中,存儲設(shè)備M和MSP 52被實現(xiàn)為兩個單獨的集成電路(IC)。 然而,在替代的實施方案中,存儲設(shè)備和MSP可被集成在單個IC中或片上系統(tǒng)(SoC)中。在一些實現(xiàn)中,單個MSP 52可被連接到多個存儲設(shè)備M。實現(xiàn)系統(tǒng)20的某些實施方案的另外的架構(gòu)性方面,在上文所引用的美國臨時專利申請60/867,399中得到更詳細地描述。替代地,存儲器控制器的一些功能或所有功能可以在MSP 52中實現(xiàn),如下文將進一步詳述。在典型的寫操作中,待要寫入存儲設(shè)備M的數(shù)據(jù)是接受自存儲器控制器22,并且緩存在I/O緩沖器56中。存儲器管理單元76確定待要寫入數(shù)據(jù)的存儲單元。單元76也基于指定的存儲單元的估計容量,確定待要使用的存儲配置(例如,多個電壓電平以及碼率)。編碼器/解碼器64編碼所述數(shù)據(jù),且所編碼的數(shù)據(jù)通過數(shù)據(jù)緩沖器72傳送到存儲設(shè)備M。在設(shè)備M中,所述數(shù)據(jù)臨時地存儲在緩沖器36中。讀/寫單元40將所述數(shù)據(jù)轉(zhuǎn)換成模擬電壓值,并且將數(shù)據(jù)寫入陣列觀的適當?shù)拇鎯卧?2中。在典型的讀操作中,讀/寫單元40從適當?shù)拇鎯卧?2讀出模擬電壓值并且將所述電壓轉(zhuǎn)換為數(shù)字樣本。所述樣本被緩存在緩沖器36中,并且傳送到MSP 52的緩沖器 72。數(shù)據(jù)塊從緩沖器72傳送到單元60,而編碼器/解碼器64將這些數(shù)據(jù)塊的ECC解碼。 已解碼的數(shù)據(jù)經(jīng)由I/O緩沖器56傳送到存儲器控制器22。存儲器控制器22有時可以包括已知的設(shè)備,例如由Phison Electronics Corp. (在臺灣新竹縣竹東鎮(zhèn))提供的PS8000NAND閃速控制器設(shè)備。該設(shè)備在2007年3月觀日發(fā)布的“PS8000 Controller Specif ication (PS8000控制器規(guī)格)”第1. 2修訂版中被詳述,在此處以援引方式納入本文。另一種已知的存儲器控制器是DatabahnTM閃存控制器 IP,其由Denali Software, Inc.(在加利福尼亞州的帕洛阿爾托市)所提供。關(guān)于此產(chǎn)品的詳情請參見 www. denali. com/products/databahn_f lash, html 又一實例是由 Datalight, he (在華盛頓州的博塞爾市)提供的FlashFXPro 閃速媒體管理器。此設(shè)備在2006年11 月 16 日發(fā)表的"FlashFXPro3. IHigh Performance Flash Manager for Rapid Development of Reliable Products”中得以描述,該文獻在此以援引方式納入本文。當存儲器控制器22包括傳統(tǒng)存儲器控制器設(shè)備時,其通常具有預(yù)定的用于與存儲設(shè)備通信的接口和協(xié)議。這些接口和協(xié)議通常被設(shè)計用于與具有固定存儲容量的存儲設(shè)備通信。在一些實施方案中,MSP 52模仿由存儲器控制器22所使用的數(shù)據(jù)結(jié)構(gòu)、接口和協(xié)議,從而在系統(tǒng)20的自適應(yīng)容量特性和存儲器控制器22的固定容量特性之間起中介作用。 在下文的圖14-17中,描述了多種示例性的方法。在替代的實施方案中,在MSP 52中實現(xiàn)一些存儲器管理功能。在這些實施方案中,MSP接受用于存儲的數(shù)據(jù)項,且可以將它們分區(qū)并且存儲在可變?nèi)萘康捻撝?,而不必模仿固定容量操作。在MSP 52和存儲設(shè)備M之間的接口,和/或在MSP 52和存儲器控制器22之間的接口,可以遵循公知的標準或協(xié)議。例如,這些接口中的一類或兩類可以遵循開放式NAND 閃存接口(ONFI)規(guī)格。ONFI 規(guī)格在 2006 年 12 月發(fā)布的 “Open NAND Flash Interface Specification"修訂第1. 0版中定義,其在此處以援引方式納入本文。存儲陣列結(jié)構(gòu)和失真機制圖2是示意性地示出了根據(jù)本發(fā)明的一個實施方案的存儲單元陣列觀的示意圖。 雖然圖2涉及連接在特定陣列配置中的閃存單元,但本發(fā)明的原理也可應(yīng)用于其他類型的存儲單元和其他陣列配置。在上文背景技術(shù)部分中所引用的參考文獻中,描述了一些示例性的存儲單元類型和陣列配置。陣列觀的存儲單元32被布置在具有多個行和多個列的柵格中。每個存儲單元32 包括浮置柵極金屬氧化物半導(dǎo)體(M0Q晶體管。通過向晶體管的柵極、源極和漏極施加適當?shù)碾妷弘娖?,可以將一定?shù)量的電荷(電子或空穴)存儲在一特定的存儲單元中。存儲在所述存儲單元中的值可通過測量所述存儲單元的門限電壓來讀取,所述門限電壓被定義為使所述晶體管導(dǎo)通而需要向所述晶體管的柵極施加的最小電壓。所讀取的門限電壓與存儲在所述存儲單元中的電荷成比例。在圖2的示例性配置中,每一行中的晶體管的柵極由字線80連接。每一列中的晶體管的源極由位線84連接。在一些實施方案中,例如在一些NOR單元設(shè)備中,源極被直接連接到位線。在替代的實施方案中,例如在一些NAND單元設(shè)備中,位線被連接到多串浮置柵極單元。通常,讀/寫單元40,通過將變化的電壓電平施加到一特定存儲單元32的柵極 (也即,施加到所述存儲單元所連接到的字線),并且檢查所述存儲單元的漏極電流是否超過了某一門限(也即,所述晶體管是否導(dǎo)通),來讀取該特定的存儲單元32的門限電壓。讀 /寫單元40通常向所述存儲單元所連接到的字線施加一系列的不同的電壓值,并且確定為使漏極電流超過所述門限的最低柵極電壓值。通常,單元40從某一行同時讀取一組存儲單兀。在一些實施方案中,讀/寫單元40通過將所述存儲單元的位線預(yù)充電到某一電壓電平來測量漏極電流。一旦柵極電壓被設(shè)定到期望值,漏極電流就使得位線電壓經(jīng)存儲單元放電。在施加?xùn)艠O電壓之后的數(shù)毫秒,讀/寫單元40測量位線電壓,并且將位線電壓與門限進行比較。在一些實施方案中,每個位線84被連接到相應(yīng)的讀出放大器,該讀出放大器將位線電流放大并將該電流轉(zhuǎn)換成電壓。使用比較器將所述電壓與門限進行比較。上文所描述的電壓讀取方法是一種示例性方法。作為替代,讀/寫單元40可以使用任何其他適合的方法來用于讀取存儲單元32的門限電壓。例如,讀/寫單元40可以包括一個或多個模數(shù)轉(zhuǎn)換器(ADC),該模數(shù)轉(zhuǎn)換器將位線電壓轉(zhuǎn)換成數(shù)字樣本。在一些實施方案中,整個頁(行)被并行讀寫。對存儲單元的擦除通常在包含多個頁的塊中執(zhí)行。典型的存儲設(shè)備可以包括數(shù)十萬個頁,每個頁包括成千上萬個存儲單元 (例如,每頁16K個或3 個存儲單元)。典型的擦除塊是1 頁的數(shù)量級,盡管也可以使用其它塊尺寸。由讀/寫單元40數(shù)字化的電壓可以包含多種失真,這些失真是由陣列觀中的不同的失真機制所導(dǎo)致的。一些失真機制影響了存儲在存儲單元中的實際電荷,而其他機制使得所讀出的電壓失真。例如,陣列中的相鄰存儲單元之間的電耦合會修改特定存儲單元中的門限電壓。這種效應(yīng)被稱為干擾噪聲。作為另一實例,電荷會隨著時間的推移而從單元中泄漏。這種老化效應(yīng)的結(jié)果是,所述存儲單元的門限電壓將隨著時間的推移而從最初寫入的值漂移。另一種類的失真,通常被稱為擾動噪聲,是由陣列中某一存儲單元上的讀、寫或擦除操作所導(dǎo)致的,這引起了對其他存儲單元的非預(yù)期的擦除或編程。作為又一實例,通過一種稱為背景圖案相關(guān)性(back pattern dependency)的效應(yīng),特定存儲單元的源極-漏極電流可以被相鄰存儲單元中(例如在同一 NAND單元串中)的電荷所影響。失真/容量權(quán)衡圖3是示出了根據(jù)本發(fā)明的一個實施方案的存儲單元陣列觀中的電壓分布的曲線圖。圖3被用于演示在存儲單元的可達到的容量上的失真效應(yīng)。在圖3中被示出了其電
16壓分布的存儲單元,均被配置為使用四個標注為90A至90D的標稱電壓電平來存儲兩個比特的信息。為了在一個存儲單元中存儲兩個數(shù)據(jù)位,讀/寫單元40將四個標稱電壓電平之一寫入該存儲單元。在當前實例中,電壓電平90A對應(yīng)于位值“ 11”,而電壓電平90B至90D各自對應(yīng)于位值“ 01 ”、“ 00 ”和“ 10 ”。雖然讀/寫單元所寫的是特定的標稱電壓電平,但因為失真機制不同,并且對存儲單元所做的編程和擦除的精確性有限,所以存儲單元的實際門限電壓電平通常偏離該標稱電平。圖92A至92D示出了示例性的電壓分布。圖92A示出了存儲“11”位值的存儲單元中的電壓的分布。圖92B、92C和92D各自示出了存儲“ 01 ”、“ 00,,和"10"位值的存儲單元中的電壓的分布。注意,由于老化和其他失真機制,讀取時的電壓分布可能不同于寫入時的電壓分布。通過限定三個門限94A至94C,將門限電壓的總范圍分為四個區(qū)間96A至96D。當讀取存儲單元的門限電壓電平時,落入?yún)^(qū)間96A的電壓電平被假定為對應(yīng)于“11”位值。類似地,落入?yún)^(qū)間96B至96D的電壓電平被假定各自對應(yīng)于位值“01,,、“00 ”和“ 10 ”。因此區(qū)間96A至96D通常被稱為判決區(qū)間,而門限94A至94C被稱為判決門限。當根據(jù)某一數(shù)據(jù)位值而寫入的電壓落入錯誤的判決區(qū)間時,從存儲單元讀出的數(shù)據(jù)與寫入的數(shù)據(jù)不同,導(dǎo)致讀取錯誤。對于給定的失真度,在存儲單元的錯誤執(zhí)行和可達到的容量之間存在一種權(quán)衡。當標稱電壓電平的數(shù)量增加(也即,存儲密度增加)時,判決區(qū)間的大小將會由于失真效應(yīng)而變得更小。因此,讀取電壓更可能漂移或落入錯誤的判決區(qū)間,且錯誤概率增加。對于給定錯誤概率,存儲單元可達到的容量隨著失真度的增大而減整個存儲單元陣列中的變動的存儲單元容量如上所述,存儲單元可達到的容量(也即,在存儲單元中可被可靠編程的信息位的數(shù)量)取決于該特定存儲單元的失真度。在許多實際情況下,可達到的容量從一個存儲單元到另一個存儲單元的變化相當大。陣列觀中的不同的存儲單元32通常具有不同的失真特性。例如,一些存儲單元, 例如位于擦除塊的外邊界上的存儲單元,具有更少的相鄰存儲單元,因此經(jīng)常具有來自相鄰存儲單元的較低的交叉耦合噪聲電平。作為另一實例,由于正在編程的存儲單元對先前的編程的存儲單元導(dǎo)致了干擾、擾動和背景圖案相關(guān)性錯誤,因此較遲編程的存儲單元與較早編程的存儲單元相比,可能遭受較小的錯誤電平。作為又一實例,某一讀出放大器或 ADC可以引入特別高的噪聲電平,其導(dǎo)致沿著特定位線的存儲單元與其他位線相比,具有更高的失真。其他失真特性可以取決于在特定存儲單元中或在其環(huán)境中執(zhí)行的編程和擦除操作的歷史。因為這些和其他因素,存儲單元32中的失真,以及因此的這些存儲單元中可達到的容量,通常在整個陣列觀的范圍內(nèi)顯著變化。圖4是示出了根據(jù)本發(fā)明的一個實施方案的存儲單元陣列中的示例性的存儲單元容量分布的曲線圖。圖示100示出了不同的存儲單元可達到的容量。在當前實例中,可達到的容量在大約每單元4. 2到7. 3比特之間變化。圖示104示出了可用于對存儲單元編程的實際存儲密度,假設(shè)了某一安全裕度以保證在整個期望的數(shù)據(jù)保持期內(nèi)的可靠性能。如圖中可見,當根據(jù)圖示104對每個存儲單元單獨地分配存儲密度的時候,所達到的平均存儲密度高于每單元5比特。如果圖4中的陣列的存儲單元被分配了固定的存儲密度,則整個陣列將不得不被規(guī)定為每個存儲單元僅僅具有三個比特,盡管大多數(shù)存儲單元能夠達到高得多的存儲容量。在使用了壞塊管理(BBM)方法的一些已知的存儲設(shè)備中,陣列可被指定為 4比特/單元的陣列,其中一些組的存儲單元被認定為有瑕疵。BBM方法在例如由ST Microelectronics (瑞士,日內(nèi)瓦)在2004年11月四日的操作說明書AN-1819上發(fā)表的 "Bad Block Management in NAND Flash Memories”中得以描述,其在此處以援引方式納入本文。本文所描述的方法和系統(tǒng)將數(shù)據(jù)以和存儲單元可達到的容量相匹配的密度存儲在每個存儲單元或存儲單元組中。具有較低失真度的存儲單元被分配較高的容量,而遭受較強失真的存儲單元被分配較低的容量。在陣列的整個使用壽命中,本文所描述的方法和系統(tǒng)追蹤失真和容量的改變,且因此自適應(yīng)地修改在不同存儲單元中存儲數(shù)據(jù)的密度??梢怨烙嫶鎯卧萘?,也可以將存儲密度分配到單獨的存儲單元或共同地分配到多組存儲單元。向較小的多組存儲單元分配單獨的密度,以更加復(fù)雜的管理為代價來允許更精密地將存儲密度匹配于可達到的容量,并且反之亦然。圖5是示出了根據(jù)本發(fā)明的一個實施方案的存儲單元陣列110中的塊和頁結(jié)構(gòu)的示意圖。陣列Iio包括多個行114。存儲器頁被定義為被同時寫(編程)的一組存儲單元。 在一些情況中,每個頁都包括一整行存儲單元。在其他情況中,每個行可以分為數(shù)個頁。通過同時擦除多組頁(稱為擦除塊118)來從陣列110擦除數(shù)據(jù)。例如,一個典型頁可包括 16,384個存儲單元,而典型的擦除塊可包括1 個頁,不過也可使用其他尺寸。在一些實施方案中,每個頁可被分為數(shù)個扇區(qū)(圖中未示出)。在下文的說明中,基本的容量和密度分配單位是頁。換言之,在一個特定頁中的所有存儲單元均使用相同數(shù)量的電壓電平以及使用相同的ECC來編程??梢酝ㄟ^對電壓電平的數(shù)量和/或ECC進行適配,來向不同的頁分配不同的密度。在替代的實施方案中,容量估計和密度分配可以使用具有任何期望的粒度的多組存儲單元來執(zhí)行,例如基于逐頁、逐塊、 逐扇區(qū)、甚至逐存儲單元的粒度。在一些實施方案中,容量估計和密度分配是針對連接到特定位線84或字線80的存儲單元而一同執(zhí)行的。自適應(yīng)密度分配方法根據(jù)本發(fā)明的實施方案,下文的說明中描述了數(shù)種示例性方法,用于估計多組存儲單元32 (即多個頁)的可達到的容量,并且用于自適應(yīng)地修改存儲設(shè)備M的存儲密度。在一些實施方案中,MSP 52中的管理單元76保持一個存儲配置表,該存儲配置表為每個頁保持被稱為存儲配置的一組參數(shù)。特定頁的存儲配置確定了如何將數(shù)據(jù)存儲在頁中,且可包括如下參數(shù),例如用于將數(shù)據(jù)存儲在頁的存儲單元中的電壓電平的數(shù)量、這些電壓電平的值、用于在頁中對數(shù)據(jù)編碼的ECCjn /或任意其他適合的參數(shù)。在一些情況下, 例如當使用網(wǎng)格編碼調(diào)制(TCM)或其他編碼調(diào)制方法時,組合了對ECC和電壓電平的選擇。 除了存儲配置之外,存儲配置表還可以保持諸如該頁的估計失真度和估計可達到的容量之類的參數(shù)。在一些實施方案中,存儲配置的初始值可以在產(chǎn)生過程中存儲在存儲配置表中。當向一個特定頁寫入數(shù)據(jù)時,MSP 52查詢該頁的存儲配置。所述MSP使用適當?shù)?ECC進行編碼,并且將已編碼的數(shù)據(jù)映射到適當?shù)碾妷弘娖降臄?shù)量,如該頁的存儲配置所指示的。在一些實施方案中,當從特定頁讀取數(shù)據(jù)時,所述MSP根據(jù)由該頁的存儲配置所指示的電平的數(shù)量,將由讀/寫單元40產(chǎn)生的樣本轉(zhuǎn)換成硬比特判決。然后所述MSP將ECC解碼器配置成存儲配置中所指示的ECC,以解碼ECC。作為替代,例如,當所述解碼器包括軟解碼器時,所述MSP使用軟解碼器解碼由讀/寫單元40產(chǎn)生的樣本,而不生成硬判決。使用不同數(shù)量的電壓電平可能對讀/寫單元40的設(shè)計造成影響,例如對比較器、 ADC、DAC、讀出放大器和相關(guān)電路的設(shè)計造成影響。在一些實施方案中,讀/寫單元的靈敏度和分辨率被設(shè)計為匹配所使用的電壓電平的最大數(shù)量。在替代的實施方案中,單元40可以在逐漸增大的分辨率的幾次迭代中(例如,通過在每次迭代中使用不同的門限),從一個頁讀取多個門限電壓?;谟糜谠谔囟撝羞M行存儲的電平的數(shù)量,管理單元76可以確定迭代的期望次數(shù),以及作為結(jié)果的分辨率。圖6是示意性地示出了根據(jù)本發(fā)明的一個實施方案的一種自適應(yīng)修改存儲設(shè)備 M的存儲密度的方法的流程圖。在失真估計步驟130,該方法始于MSP 52對在存儲單元32 中的失真度進行估計。MSP 52可以使用估計存儲單元失真的不同方法。例如,為了估計在特定目標存儲單元中的失真,MSP可以讀取來自相鄰存儲單元的電壓,估計目標存儲單元和相鄰存儲單元之間的交叉耦合比,并且計算由相鄰存儲單元貢獻的累積耦合噪聲。在一些實施方案中,在對某頁施加的編程操作之后,MSP可以對在該頁中的失真進行估計。下面的圖7示出了示例性的寫后(post-writing)估計方法。作為替代,在對某頁施加的讀操作之后,MSP可以對在該頁中的失真進行估計。下面的圖8示出示例性的讀后 (post-reading)估計方法。也可以通過變化編程數(shù)據(jù)的可靠性來估計容量,例如通過施加漸強的糾錯碼直到實現(xiàn)無誤存儲。下文在圖9中描述此類方法。進一步作為替代,可以基于該頁已經(jīng)歷過的編程和擦除操作歷史來估計失真度。 編程和擦除歷史可以以多種方式影響失真度。通常,人們認為,較舊的存儲單元(也即,當前已經(jīng)經(jīng)歷了較多次數(shù)的編程和擦除操作的存儲單元)與經(jīng)歷了較少次數(shù)的編程和擦除操作的較新的存儲單元相比,具有更高的泄漏電流電平。從而,失真也受到自先前的編程和擦除操作以來所流逝的時間的影響。在下面的圖11中,描述了一種基于編程和擦除操作歷史來估計存儲單元容量的示例性方法。在存儲配置計算步驟134,MSP 52估計頁容量并且確定待要在每個頁所使用的存儲配置。所述MSP可以使用任何適當?shù)姆椒?,用于基于估計的失真來估計可達到的頁容量, 并用于選擇適當?shù)拇鎯ε渲?例如,電壓電平的數(shù)量和ECC)。通常,所述MSP在估計容量和其設(shè)定的存儲密度之間留有某一安全裕度。所述安全裕度,也被稱為性能裕度,是被設(shè)定來保證在期望的數(shù)據(jù)保持期內(nèi)的可靠操作。下文進一步描述用于確定適當?shù)拇鎯ε渲玫臄?shù)種示例性方法。MSP 52的單元76用新計算的存儲配置來更新存儲配置表。在寫步驟138,MSP 52用更新的存儲配置來將隨后的數(shù)據(jù)寫到陣列 28的頁。P&V輔助密度分配圖7是示意性地示出了根據(jù)本發(fā)明的另一實施方案的在編程和驗證(P&V)過程之后,自適應(yīng)地修改存儲設(shè)備M的存儲密度的方法的流程圖。P&V過程通常用于對存儲單元編程。在典型的P&V過程中,通過施加一系列電壓脈沖來對存儲單元編程,這些電壓脈沖的電壓電平逐個脈沖地增大。被編程的電壓電平在每個脈沖之后被讀取(“驗證”),迭代過程繼續(xù)進行,直到達到期望電壓電平或直到操作超時。P&V過程例如由Jung等人于1996年11月在IEEE固態(tài)電路雜志(IEEE Journal of Solid State Circuits) (11 31)的 1575-1583 頁發(fā)表的 “A 117mm23. 3V Only 128Mb Multilevel NAND Flash Memory for Mass Storage Applications", 1 ^ Takeuchi ^A 于1998年8月在IEEE固態(tài)電路雜志(33 :8)的1228-1238頁上發(fā)表的“A Multipage Cell Architecture for High-Speed Programming Multilevel NAND Flash Memories,,中進行了描述,這兩篇文獻均以援引方式納入本文。圖7的方法可以與系統(tǒng)20的正常操作相結(jié)合。在此操作模式下,在對特定組的頁 (例如,單個頁或者包括數(shù)個NAND串的NAND存儲塊)編程之后,對其失真度進行估計,且將其存儲配置更新以便在下一個編程操作中使用。在P&V編程步驟150,該方法始于由MSP 52 使用P&V過程對特定組的頁編程。在后P&V計算步驟154,在上一次P&V迭代之后,MSP計算失真統(tǒng)計。上一次P&V迭代固有地涉及讀取該頁內(nèi)的不同存儲單元的已編程電壓電平。 MSP可以使用這些讀取的電壓電平來計算該頁內(nèi)的失真度。在一些情況下,用于編程驗證的讀取分辨率不足以用于可靠失真估計。在這些情況下,所述MSP可以在高于驗證操作的讀取分辨率的分辨率下讀取被編程的該組的頁的電壓電平。在后P&V更新步驟158,MSP 52更新對頁的估計可達到的容量。所述MSP使用計算的失真度來更新該頁的存儲配置,也即,適當?shù)碾妷弘娖綌?shù)量和ECC。所述MSP在存儲配置表中存儲更新的數(shù)據(jù),以便在該頁的下一編程操作中使用。在一些實施方案中,MSP 52可以在編程之后嘗試增加頁密度。在這些實施方案中, 所述MSP確定已編程的數(shù)據(jù)是否足夠可靠(也即,在步驟IM計算的失真統(tǒng)計表明該裕度足夠高以保證低錯誤概率)。如果存在足夠的性能裕度,該MSP就通過增大電壓電平數(shù)量和 /或碼率,來修改該頁的存儲配置以反映較高的密度。當結(jié)合P&V過程來確定頁存儲配置時,可以在P&V過程的參數(shù)和頁存儲配置之間作出不同的權(quán)衡。在P&V過程中,可以通過改變在連續(xù)的P&V迭代之間的電壓增量或電壓步長,來用編程速度換取精確度。設(shè)置較高的P&V步長,就能夠以較低的編程精確性為代價來允許以較少的迭代次數(shù)對頁進行編程,且反之亦然。這樣的權(quán)衡例如由Suh等人于1995 年11月在IEEE固態(tài)電路雜志的第3卷第11期的1149-1156頁發(fā)表的“A 3. 3V 32Mb NAND Flash Memory with Incremental Step Pulse Programming Scheme,,中描述,其在此處以援引方式納入本文。在一些實施方案中,MSP 52為每個頁設(shè)置具體的P&V步長值。P&V步長被作為在存儲配置表中頁的存儲配置的一部分而存儲。當對具體頁編程時,所述MSP查詢該頁的存儲配置并且使用適當?shù)腜&V步長。可以通過選擇P&V步長、電壓電平的數(shù)量和ECC來提供不同的性能權(quán)衡。例如, 較大的P&V步長以更高的錯誤概率為代價來使得編程能夠更快。又例如,降低的電壓電平也能夠以較高的錯誤概率為代價來使得編程能夠更快,以及能夠得到更低的擾動電平 (disturb level)、干擾電平和磨損電平。可以通過減少電壓電平數(shù)量或通過引入更強的 ECC,以降低存儲密度為代價來降低錯誤概率。ECC的選擇可以影響MSP的復(fù)雜度。從而,可
20以犧牲存儲密度和/或糾錯性能來換取編程速度。判決導(dǎo)向的密度分配圖8是示意性地示出了根據(jù)本發(fā)明的又一實施方案的用于在讀操作之后自適應(yīng)地修改存儲設(shè)備M的存儲密度的方法的流程圖。在頁讀取步驟170,該方法始于MSP 52從設(shè)備M讀取具體的存儲器頁。在讀后計算步驟174,所述MSP計算假設(shè)無錯誤存在的頁內(nèi)的失真度。典型地,MSP計算在每個軟樣本和相應(yīng)的硬判決之間的差。因為假設(shè)是不存在解碼錯誤,所以這個差歸因于失真。注意, 可以由ECC解碼器產(chǎn)生硬判決??梢酝ㄟ^計算在軟樣本和對應(yīng)的硬判決之間的差的標量函數(shù)的和(例如,差的平方和)來估計失真度。也可以通過計算其中該差超過某一門限的存儲單元的數(shù)量來估計失真。如果這些門限是在讀取這些存儲單元以得到硬判決時所使用的門限電平,則失真估計包括由所述ECC校正的錯誤的數(shù)量。在讀后更新步驟178,所述MSP更新對該頁估計的可達到的容量。所述MSP使用所計算的失真度以更新在存儲配置表中該頁的存儲配置,以用于該頁的下一編程操作。圖8 所示的方法可以和系統(tǒng)20的正常操作相結(jié)合。在這種操作模式下,在讀取數(shù)據(jù)之后,對一具體頁進行編程,估計該頁的失真度,并且更新其存儲密度,以用于下一編程操作。在一些實施方案中,所述MSP能夠在系統(tǒng)空閑的時間段內(nèi)執(zhí)行失真估計任務(wù),以免減緩讀操作。在一些實施方案中,所述MSP可以進行盲估計失真度,也即,不作硬判決不含錯誤的假設(shè)。例如,當寫入存儲單元的標稱電壓電平是IV和3V時,如果較大量的讀取電壓在2V 周圍,則即便不對數(shù)據(jù)進行編碼,所述MSP也可以斷定失真度為高。基于已編程數(shù)據(jù)的可靠性的密度自適應(yīng)在一些實施方案中,MSP 52通過評估寫在給定頁內(nèi)的數(shù)據(jù)的可靠性,來估計該頁的可達到的容量。在一些情況下,所述MSP對頁的存儲配置進行適配而不擦除這些存儲單元。在這些情況下,可以在不擦除已存在的頁的情況下在隨后的編程循環(huán)中向該頁內(nèi)寫入另外的數(shù)據(jù)。通過修改電壓電平的數(shù)量和/或修改ECC,實現(xiàn)對密度的改變。圖9是示意性地示出了根據(jù)本發(fā)明的一個實施方案的自適應(yīng)地修改存儲設(shè)備M 的存儲配置的示例性方法的流程圖。在當前實例中,使用系統(tǒng)ECC(也即,一種基于未編碼信息位添加冗余位而不修改該未編碼位的ECC)對數(shù)據(jù)進行編程。通過適配冗余位數(shù)來修改存儲密度和錯誤性能。在未編碼編程步驟190,該方法始于由MSP 52不經(jīng)過編碼而對一具體頁進行編程。通常地但非必要地,選擇電壓電平的數(shù)量以使得存儲密度略超過預(yù)定性能裕度,也即, 該頁可以包含一些錯誤。在解碼步驟194,MSP從頁讀取數(shù)據(jù)且可選地解碼該數(shù)據(jù),并且在失真度檢查步驟 198,檢查存儲單元中的失真度。MSP可以使用不同的方法和判據(jù),以確定失真對于當前分配給所述頁的存儲配置而言是否過高、過低還是可接受。例如,MSP可以檢查已解碼的頁是否包含未被ECC校正的錯誤。替代地,所述MSP可以估算在讀取自頁的存儲單元的電壓集合與所述ECC的有效碼字之間的距離度量。所述MSP可以將讀取電壓距正確碼字(也即,實際上寫到存儲單元的碼字)的距離與距其他碼字的距離作比較。為此目的,可以使用任何適當?shù)木嚯x度量,例如Hamming度量或Euclidean度量。所述MSP基于在步驟198所評估的失真來對分配給頁的存儲配置進行適配。如果失真度可接受,則在終止步驟202,MSP維持當前存儲配置且該方法終止。如果失真度過高, 則在冗余度增加步驟204,所述MSP增加ECC的冗余度(也即,增加冗余位)。隨之,頁的密度降低。在配置更新步驟206,所述MSP據(jù)此更新存儲配置表。然后該方法循環(huán)回到上面的步驟194。如果失真度過低(也即,可增加存儲密度而不使性能無法接受地降低),則在冗余度減少步驟208,所述MSP減少ECC的冗余度。在步驟206,所述MSP更新存儲配置表,且所述方法循環(huán)回到上面的步驟194。所述迭代繼續(xù),直到該方法收斂于和當前失真度相匹配的適當?shù)娜哂辔粩?shù)。在設(shè)備M的使用壽命中,可以例如使用上面圖8的方法,不定期地執(zhí)行對已編程數(shù)據(jù)的可靠性的檢查,如有必要,可以執(zhí)行對冗余位數(shù)的增加。因為失真度隨著時間推移而變化,故可以據(jù)此適配存儲配置以維持期望的錯誤性能。在一些實施方案中,可以用圖9的方法適配存儲配置而不對存儲單元進行擦除。 例如,當ECC包括系統(tǒng)碼時,冗余位可與未編碼位分開存儲。可以增加或減少冗余位的數(shù)量而不對存儲未編碼位的存儲單元進行擦除或重新編程。用于增加一組存儲單元(例如,一個頁)的存儲密度而不擦除存儲單元或者對另外的存儲單元編程的一種替代技術(shù),涉及在已編程的存儲單元上進行另外的編程操作。例如,考慮一個存儲單元陣列,在其中存儲單元可被編程為電平0至On-I),其中對應(yīng)于電平 i的已存儲的電荷電平小于與電平i+Ι相關(guān)的電荷電平。在一些實施方案中,初始將m個存儲單元編程為偶數(shù)階電平,也即,編程為電平0, 2,...2n-2。在對存儲單元中的失真度進行估計后,所述MSP使用二進制編碼器將另外的信息位編碼,所述二進制編碼器生成m個已編碼位。所述編碼器的碼率依賴于估計的失真。 所述MSP將已編碼位為“1”的存儲單元重新編程(不經(jīng)擦除)為奇數(shù)階電平,也即,電平1, 3,...2n-l。例如,新存儲單元的電平可被寫為y(m) = χ (m)+b (m),其中y (m)表示存儲單元m的新電平,x(m)表示該存儲單元的先前電平,而b(m)表示第m個已編碼位的值(“0” 或“1”)。這種方案可以認為是根據(jù)估計的失真而適配的自適應(yīng)速率網(wǎng)格編碼調(diào)制(TCM)。存儲配置的有限集在一些實施方案中,MSP 52從存儲配置的預(yù)定集合中為每個頁選擇適當?shù)拇鎯ε渲?例如,電平的數(shù)量以及ECC方案)。對存儲配置的有限集的使用降低了 MSP的復(fù)雜度, 且尤其簡化了單元76中的存儲配置表。圖10是示意性地示出了根據(jù)本發(fā)明的一個實施方案的一種使用存儲配置的有限集以自適應(yīng)地修改存儲設(shè)備M的存儲密度的方法的流程圖。在定義步驟210,該方法始于預(yù)定義一組存儲配置。每種存儲配置均指定電壓電平的具體數(shù)量和具體的ECC方案。從而, 每種存儲配置定義某一存儲密度,也即,某個每單元比特值。注意到每單元比特數(shù)并不需要是整數(shù),因為(1)數(shù)據(jù)位向電壓電平的映射可以對多組存儲單元聯(lián)合執(zhí)行而不是對單獨存儲單元執(zhí)行,并且O)電壓電平的數(shù)量可以不是2 的冪。下文進一步描述實現(xiàn)每單元小數(shù)比特的存儲密度的示例性方法。下表示出了一個示例性的十個存儲配置的集合
權(quán)利要求
1.一種用于在存儲器中進行數(shù)據(jù)存儲的方法,該存儲器包括多個模擬存儲單元,所述方法包括當所述存儲器在主機系統(tǒng)中處于使用狀態(tài)時,追蹤所述模擬存儲單元的相應(yīng)的可達到的存儲容量;接受用于存儲在所述存儲器中的數(shù)據(jù);基于所追蹤的可達到的容量選擇一用于存儲所述數(shù)據(jù)的存儲單元子集;并且將所述數(shù)據(jù)存儲在所述子集的存儲單元中。
2.根據(jù)權(quán)利要求1所述的方法,其中選擇子集包括選擇其可達到的總?cè)萘颗c所接受的數(shù)據(jù)的大小最佳匹配的存儲單元。
3.根據(jù)權(quán)利要求1所述的方法,其中接受數(shù)據(jù)包括接受用于存儲所述數(shù)據(jù)的要求的可靠性等級,且其中選擇子集包括響應(yīng)于所要求的可靠性等級選擇所述存儲單元。
4.根據(jù)權(quán)利要求1所述的方法,其中接受數(shù)據(jù)包括接受所要求的用于存儲所述數(shù)據(jù)的保持期,且其中選擇子集包括響應(yīng)于所要求的保持期而選擇所述存儲單元。
5.根據(jù)權(quán)利要求1所述的方法,其中選擇子集包括選擇相對于其他存儲單元具有低失真度的存儲單元。
6.根據(jù)權(quán)利要求1所述的方法,其中追蹤可達到的存儲容量包括對施加到所述存儲單元的先前的編程和存儲操作進行追蹤,且其中選擇子集包括響應(yīng)于先前的編程和擦除操作來選擇存儲單元。
7.根據(jù)權(quán)利要求6所述的方法,其中選擇子集包括通過選擇在所述存儲器內(nèi)的相對于其他存儲單元具有較少次數(shù)的先前的編程和擦除操作的存儲單元,將多個編程和擦除操作均勻分布在所述存儲單元中。
8.根據(jù)權(quán)利要求7所述的方法,其中分布編程和擦除操作的次數(shù)包括選擇在預(yù)定的最近時間段內(nèi)相對于其他存儲單元執(zhí)行較少次數(shù)的先前的編程和擦除操作的存儲單元。
9.根據(jù)權(quán)利要求1所述的方法,其中追蹤可達到的存儲容量包括通過對可用于存儲數(shù)據(jù)的存儲單元的可達到的容量求和,來計算可用的存儲空間的大小并且報告給所述主機系統(tǒng)。
10.根據(jù)權(quán)利要求1所述的方法,其中所述存儲器被分成多個擦除塊,每個擦除塊包括在單次擦除操作中擦除的一組存儲單元,所述方法還包括通過如下方式從所述存儲器中擦除數(shù)據(jù)項識別存儲有所述數(shù)據(jù)項的一個或多個擦除塊;當存儲有所述數(shù)據(jù)項的擦除塊包含另一數(shù)據(jù)項的已存儲數(shù)據(jù)時,基于所追蹤的所述存儲單元的可達到的容量和另一數(shù)據(jù)項的大小,識別在所述擦除塊之外的存儲有所述數(shù)據(jù)項的另外的存儲單元,并且將所述另一數(shù)據(jù)項的數(shù)據(jù)復(fù)制到所述另外的存儲單元;并且擦除存儲有所述數(shù)據(jù)項的擦除塊。
11.根據(jù)權(quán)利要求1所述的方法,其中接受用于存儲的數(shù)據(jù)包括以固定容量塊接受來自主機系統(tǒng)的數(shù)據(jù),并且基于所追蹤的可變?nèi)萘拷M的可達到的容量,將所述數(shù)據(jù)存儲在所述存儲單元的可變?nèi)萘拷M中。
12.根據(jù)權(quán)利要求11所述的方法,在可變?nèi)萘拷M中存儲數(shù)據(jù)包括識別兩個或更多個其容量小于固定容量塊的容量的可變?nèi)萘拷M,并且將接受在一個或多個固定容量塊中的數(shù)據(jù)存儲在所識別的兩個或更多個可變?nèi)萘拷M中。
13.根據(jù)權(quán)利要求11所述的方法,其中在可變?nèi)萘拷M中存儲數(shù)據(jù)包括將一個或多個可變?nèi)萘拷M分配為用作逾額存儲器存儲區(qū)域,將接受在固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中,并且,當一個可變?nèi)萘拷M的可達到的容量小于所述固定容量塊的容量時,將接受在相應(yīng)的固定容量塊中的數(shù)據(jù)中的一些存儲在所分配的逾額存儲器存儲區(qū)域中。
14.根據(jù)權(quán)利要求11所述的方法,其中在可變?nèi)萘拷M中存儲數(shù)據(jù)包括將接受在固定容量塊中的數(shù)據(jù)循序地存儲在所述存儲單元中,而與可變?nèi)萘拷M之間的邊界無關(guān)。
15.根據(jù)權(quán)利要求14所述的方法,其中存儲數(shù)據(jù)包括,初始將接受在每個固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中,且隨后對初始存儲的數(shù)據(jù)循序重新編程,而與所述可變?nèi)萘拷M之間的邊界無關(guān)。
16.根據(jù)權(quán)利要求11所述的方法,還包括從所述可變?nèi)萘拷M中取出所述數(shù)據(jù),重構(gòu)所述固定容量塊,并且使用所述固定容量塊向所述主機系統(tǒng)輸出數(shù)據(jù)。
17.根據(jù)權(quán)利要求1所述的方法,還包括通過緩存所述數(shù)據(jù)中的至少一些,來減少施加到所述存儲器的存儲器存取操作的次數(shù)。
18.根據(jù)權(quán)利要求17所述的方法,其中緩存所述數(shù)據(jù)中的至少一些包括一旦檢測到瞬時存儲事件,就將被緩存的數(shù)據(jù)傳送到所述存儲器。
19.根據(jù)權(quán)利要求18所述的方法,其中所述瞬時存儲事件包括選自即將到來的電源故障、超時和接受自所述主機系統(tǒng)的文件結(jié)束(EOF)命令的事件中的至少一個事件。
20.一種數(shù)據(jù)存儲裝置,包括接口,其被布置為與包括多個模擬存儲單元的存儲器通信;和存儲器信號處理器(MSP),其被布置為當所述存儲器在主機系統(tǒng)中處于使用狀態(tài)時追蹤所述存儲單元的相應(yīng)的可達到的存儲容量,接受用于存儲在所述存儲器中的數(shù)據(jù),基于所追蹤的可達到的容量選擇一用于存儲所述數(shù)據(jù)的存儲單元子集,并且將所述數(shù)據(jù)存儲在所述子集的存儲單元中。
21.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為選擇其可達到的總?cè)萘颗c所接受的數(shù)據(jù)的大小最佳匹配的存儲單元。
22.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為接受用于存儲所述數(shù)據(jù)的要求的可靠性等級,且響應(yīng)于所要求的可靠性等級選擇所述存儲單元。
23.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為接受所要求的用于存儲所述數(shù)據(jù)的保持期,并響應(yīng)于所要求的保持期而選擇所述存儲單元。
24.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為選擇相對于其他存儲單元具有低失真度的存儲單元。
25.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為對施加到所述存儲單元的先前的編程和擦除操作進行追蹤,并響應(yīng)于先前的編程和擦除操作來選擇存儲單元。
26.根據(jù)權(quán)利要求25所述的裝置,其中所述MSP被布置為通過選擇在所述存儲器內(nèi)的相對于其他存儲單元具有較少次數(shù)的先前的編程和擦除操作的存儲單元,將多個編程和擦除操作均勻分布在所述存儲單元中。
27.根據(jù)權(quán)利要求沈所述的裝置,其中所述MSP被布置為選擇在預(yù)定的最近時間段內(nèi)相對于其他存儲單元具有較少次數(shù)的先前的編程和擦除操作執(zhí)行的存儲單元。
28.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為通過對可用于存儲數(shù)據(jù)的存儲單元的可達到的容量求和,來計算可用的存儲空間的大小并且報告給所述主機系統(tǒng)。
29.根據(jù)權(quán)利要求20所述的裝置,其中所述存儲器被分成多個擦除塊,每個擦除塊包括在單次擦除操作中擦除的一組存儲單元,且其中所述MSP被布置為通過如下方式從所述存儲器中擦除數(shù)據(jù)項識別存儲有所述數(shù)據(jù)項的一個或多個擦除塊;當存儲有所述數(shù)據(jù)項的擦除塊包含另一數(shù)據(jù)項的已存儲數(shù)據(jù)時,基于所追蹤的所述存儲單元的可達到的容量和另一數(shù)據(jù)項的大小,識別在所述擦除塊之外的存儲有所述數(shù)據(jù)項的另外的存儲單元,并且將所述另一數(shù)據(jù)項的數(shù)據(jù)復(fù)制到所述另外的存儲單元;并且擦除存儲有所述數(shù)據(jù)項的擦除塊。
30.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為從所述主機系統(tǒng)以固定容量塊接受數(shù)據(jù),并且基于所追蹤的所述可變?nèi)萘拷M的可達到的容量,將所述數(shù)據(jù)存儲在所述存儲單元的可變?nèi)萘拷M中。
31.根據(jù)權(quán)利要求30所述的裝置,其中所述MSP被布置為識別兩個或更多個其容量小于固定容量塊的容量的可變?nèi)萘拷M,并且將接受在一個或多個固定容量塊中的數(shù)據(jù)存儲在所識別的兩個或更多個可變?nèi)萘拷M中。
32.根據(jù)權(quán)利要求30所述的裝置,其中所述MSP被布置為將一個或多個可變?nèi)萘拷M分配為用作逾額存儲器存儲區(qū)域,將接受在固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中,并且,當一個可變?nèi)萘拷M的可達到的容量小于所述固定容量塊的容量時,將接受在相應(yīng)的固定容量塊中的數(shù)據(jù)中的一些存儲在所分配的逾額存儲器存儲區(qū)域中。
33.根據(jù)權(quán)利要求30所述的裝置,其中所述MSP被布置為將接受在固定容量塊中的數(shù)據(jù)循序地存儲在所述存儲單元中,而與可變?nèi)萘拷M之間的邊界無關(guān)。
34.根據(jù)權(quán)利要求33所述的裝置,其中所述MSP被布置為初始將接受在每個固定容量塊中的數(shù)據(jù)存儲在相應(yīng)的可變?nèi)萘拷M中,且隨后對初始存儲的數(shù)據(jù)循序重新編程,而與所述可變?nèi)萘拷M之間的邊界無關(guān)。
35.根據(jù)權(quán)利要求30所述的裝置,其中所述MSP被布置為從可變?nèi)萘拷M中取出所述數(shù)據(jù),重構(gòu)所述固定容量塊,并且使用所述固定容量塊向所述主機系統(tǒng)輸出數(shù)據(jù)。
36.根據(jù)權(quán)利要求20所述的裝置,其中所述MSP被布置為通過緩存所述數(shù)據(jù)中的至少一些,以減少施加到所述存儲器的存儲器存取操作的次數(shù)。
37.根據(jù)權(quán)利要求36所述的裝置,其中所述MSP被布置為一旦檢測到瞬時存儲事件,就將被緩存的數(shù)據(jù)傳送到所述存儲器。
38.根據(jù)權(quán)利要求37所述的裝置,其中所述瞬時存儲事件包括選自即將到來的電源故障、超時和接受自所述主機系統(tǒng)的文件結(jié)束(EOF)命令的事件中的至少一個事件。
39.一種數(shù)據(jù)存儲裝置,包括存儲器,其包括多個模擬存儲單元;以及存儲器信號處理器(MSP),其被連接到所述存儲器,并被布置為當所述存儲器在主機系統(tǒng)中處于使用中時,追蹤所述存儲單元的相應(yīng)的可達到的存儲容量,接受用于存儲在存儲器中的數(shù)據(jù),基于所追蹤的可達到的容量來選擇用于存儲所述數(shù)據(jù)的存儲單元子集,并且將所述數(shù)據(jù)存儲在所述子集的存儲單元中。
40.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲器位于第一集成電路(IC)中,且其中所述MSP位于不同于所述第一 IC的第二 IC中。
41.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲器和所述MSP被集成在單個設(shè)備中。
42.根據(jù)權(quán)利要求39所述的裝置,其中所述MSP被實施在所述主機系統(tǒng)的處理器中。
43.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括閃存單元。
44.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括動態(tài)隨機存取存儲(DRAM)單兀。
45.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括相變存儲(PCM)單元。
46.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括氮化物只讀存儲(NROM)單兀。
47.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括磁隨機存取存儲(MRAM)單兀。
48.根據(jù)權(quán)利要求39所述的裝置,其中所述存儲單元包括鐵電隨機存取存儲(FRAM)單兀。
全文摘要
一種用于在包括多個模擬存儲單元(32)的存儲器(28)中進行數(shù)據(jù)存儲的方法,包括估計模擬存儲單元相應(yīng)的可達到的存儲容量。基于所估計的可達到的存儲容量,將定義待要存儲在存儲單元中的數(shù)據(jù)量的相應(yīng)的存儲配置分配給該存儲單元。根據(jù)相應(yīng)的分配的存儲配置,將數(shù)據(jù)存儲在存儲單元中。在所述存儲器被安裝在主機系統(tǒng)中并用于在該主機系統(tǒng)中存儲數(shù)據(jù)之后,重新估計所述模擬存儲單元的可達到的存儲容量。響應(yīng)于重新估計的可達到的容量,修改所述存儲配置。
文檔編號G11C16/06GK102394101SQ201110294868
公開日2012年3月28日 申請日期2007年5月10日 優(yōu)先權(quán)日2006年5月12日
發(fā)明者A·梅斯羅斯, D·索科洛夫, E·格吉, G·西莫, O·沙爾維, Z·科恩 申請人:愛諾彼得技術(shù)有限責任公司