TWI498724B - 保護資料免於記憶體器件中之寫入失敗的裝置及方法 - Google Patents
保護資料免於記憶體器件中之寫入失敗的裝置及方法 Download PDFInfo
- Publication number
- TWI498724B TWI498724B TW101141622A TW101141622A TWI498724B TW I498724 B TWI498724 B TW I498724B TW 101141622 A TW101141622 A TW 101141622A TW 101141622 A TW101141622 A TW 101141622A TW I498724 B TWI498724 B TW I498724B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- subset
- redundant information
- data items
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Description
本發明大體而言係關於資料儲存,且特定而言係關於用於保護資料免於記憶體器件中之寫入失敗的方法及系統。
若干類型之記憶體器件(諸如,快閃記憶體)使用類比記憶體胞之陣列來儲存資料。每一類比記憶體胞保持諸如電荷或電壓之給定物理量的特定位準,該特定位準表示儲存於記憶體胞中之資料。此物理量之位準亦稱作儲存值或類比值。舉例而言,在快閃記憶體中,每一類比記憶體胞保持特定量的電荷。通常將可能類比值之範圍劃分為區域,每一區域對應於表示一或多個資料位元值之程式化狀態。藉由寫入對應於所要(一或多個)位元之標稱類比值而將資料寫入至類比記憶體胞。
一般稱作單位階記憶體胞(SLC)器件之一些記憶體器件在每一記憶體胞中儲存單一位元之資訊,亦即,每一記憶體胞可經程式化以採取兩個可能之記憶體狀態。時常稱作多位階記憶體胞(MLC)器件之較高密度器件每一記憶體胞儲存兩個或兩個以上位元,亦即,每一記憶體胞可經程式化以採取兩個以上可能之記憶體狀態。
快閃記憶體器件(例如)由Bez等人描述於「Introduction to Flash Memory」(IEEE論文集,第91卷,第4號,2003年4月,第489-502頁)中,其以引用之方式併入本文中。多位階快閃記憶體胞及器件(例如)由Eitan等人描述於
「Multilevel Flash Cells and their Trade-Offs」(1996 IEEE國際電子器件會議(IEDM)論文集,New York,New York,第169-172頁)中,其以引用之方式併入本文中。該論文比較若干種類之多位階快閃記憶體胞,諸如,共同接地記憶體胞、DINOR記憶體胞、AND記憶體胞、NOR記憶體胞及NAND記憶體胞。
Eitan等人在「Can NROM,a 2-bit,Trapping Storage NVM Cell,Give a Real Challenge to Floating Gate Cells?」(1999年固態器件及材料(SSDM)國際會議論文集,Tokyo,Japan,1999年9月21日至24日,第522-524頁)中描述稱為氮化物唯讀記憶體(NROM)的另一類型之類比記憶體胞,該文獻以引用之方式併入本文中。NROM記憶體胞亦由Maayan等人描述於「A 512 Mb NROM Flash Data Storage Memory with 8 MB/s Data Rate」(2002 IEEE國際固態電路會議(ISSCC 2002)論文集,San Francisco,California,2002年2月3日至7日,第100-101頁)中,其以引用之方式併入本文中。其他例示性類型之類比記憶體胞為浮閘(FG)記憶體胞、鐵電RAM(FRAM)記憶體胞、磁性RAM(MRAM)記憶體胞、電荷陷阱快閃記憶體(CTF)及相變RAM(PRAM,亦稱作相變記憶體(PCM))記憶體胞。FRAM、MRAM及PRAM記憶體胞(例如)由Kim及Koh描述於「Future Memory Technology including Emerging New Memories」(第24屆國際微電子會議(MIEL)論文集,Nis,Serbia及Montenegro,2004年5月16日至19日,第1卷,第
377-384頁)中,其以引用之方式併入本文中。
此項技術中已知用於程式化及抹除類比記憶體胞之各種方法。一些記憶體器件使用一反覆程式化及驗證(P&V)程序,該程序將脈衝之一序列施加至記憶體胞之一群組且在該序列期間驗證經程式化之值。
此項技術中已知用於保護記憶體器件中之資料免於失敗的各種技術。舉例而言,美國專利5,533,190(其揭示內容以引用之方式併入本文中)揭示一種用於在中斷寫入I/O操作之執行的重設或停電條件下保證磁碟陣列系統中之資料與同位之間的一致性之方法。該方法包括以下步驟:檢查磁碟機活動以識別由於一中斷條件而未完成之寫入I/O操作;將識別該等未完成操作及與該等未完成操作相關聯之陣列冗餘群組所必要的資訊記錄至一非揮發性記憶體中;及在磁碟陣列子系統初始化或電力之恢復期間檢查非揮發性記憶體中之日誌輸入項。對於在日誌中所識別之每一未完成操作,該方法進一步包括以下步驟:對儲存於相關聯冗餘群組內之資料的對應部分執行逐位元互斥或(XOR)以計算其同位一致性;及將經計算之同位寫入至相關聯冗餘群組內之同位儲存區。對於藉由失效磁碟機部件操作之陣列(亦即,在已降級模式下),該方法亦記錄識別未完成之寫入I/O操作將新資料及同位映射至的儲存區及儲存至未完成之寫入I/O操作將新資料及同位映射至之彼等儲存區的某一形式之舊資料及同位資訊所必要的資訊。在系統重設或電力恢復之後,針對每一相關聯冗餘群組判定一致性
同位。
美國專利7,487,394(其揭示內容以引用之方式併入本文中)揭示一種方法,其中與磁碟陣列系統(諸如,RAID-6系統)中之同位更新操作之狀態相關聯的資料係在該操作之執行期間予以儲存,以使得在操作被中斷之情況下可使用經儲存資料起始恢複。經儲存資料可包括一指示同位更新操作之狀態的狀態指示符,及在同位更新操作期間擷取的快照資料(例如,指示新資料與舊資料之間的差之差量值)。
本文中所描述之一實施例提供一種方法,該方法包括計算針對資料項之一集合的冗餘資訊。發送該等資料項以用於儲存於一記憶體中。僅保留該冗餘資訊直至該等資料項被成功地寫入於該記憶體中為止。接著捨棄該冗餘資訊。在寫入該等資料項至該記憶體失敗時,使用該冗餘資訊恢復該等資料項。
在一些實施例中,保留該冗餘資訊包括僅在所有寫入操作之成功完成之後捨棄該冗餘資訊,該等寫入操作之失敗將破壞該集合中之該等資料項。在其他實施例中,保留該冗餘資訊包括僅在保持該等資料項之該集合的所有字線中之所有頁的成功程式化之後捨棄該冗餘資訊。
在一些實施例中,發送該等資料項以用於儲存及保留該冗餘資訊包括將該等資料項及該冗餘資訊皆儲存於該記憶體之同一記憶體區塊中。在其他實施例中,發送該等資料
項以用於儲存及保留該冗餘資訊包括根據由該記憶體支援之一預定義頁程式化次序將該等資料項及該冗餘資訊皆儲存於該記憶體中。在另外實施例中,保留該冗餘資訊包括將該冗餘資訊儲存於該記憶體外部之一儲存位置中。
在一些實施例中,發送該等資料項包括將該等資料項儲存於該記憶體之一第一記憶體區塊中,且保留該冗餘資訊包括將該冗餘資訊儲存於該記憶體之不同於該第一記憶體區塊的一第二記憶體區塊中。在其他實施例中,該第二記憶體區塊專用於冗餘資訊儲存且不儲存任何資料項。
在一些實施例中,發送該等資料項以用於儲存及保留該冗餘資訊包括將該等資料項之一第一子集寫入至該記憶體之各別字線的第一資料部分,且接著將針對該第一子集之該冗餘資訊寫入至一後續字線之一第一資料部分。在寫入該第一子集及該冗餘資訊之後,將該等資料項之一第二子集寫入至該等各別字線及該後續字線之第二資料部分。一旦成功寫入了該第二子集便捨棄該冗餘資訊。
根據本文中所描述之一實施例,另外提供一種裝置,該裝置包括一介面及一處理器。該介面與一記憶體通信。該處理器經組態以計算針對資料項之一集合的冗餘資訊,發送該等資料項以用於儲存於該記憶體中,僅保留該冗餘資訊直至該等資料項被成功地寫入至該記憶體中為止且接著捨棄該冗餘資訊,且在寫入該等資料項至該記憶體失敗時使用該冗餘資訊恢復該等資料項。
根據本文中所描述之一實施例,另外提供一種裝置,該
裝置包括一記憶體及一處理器。該處理器經組態以計算針對資料項之一集合的冗餘資訊,發送該等資料項以用於儲存於該記憶體中,僅保留該冗餘資訊直至該等資料項被成功地寫入至該記憶體中為止且接著捨棄該冗餘資訊,且在寫入該等資料項至該記憶體失敗時使用該冗餘資訊恢復該等資料項。
結合圖式,自本發明之實施例的以下詳細描述將更完整地理解本發明。
在諸如快閃記憶體之非揮發性記憶體中,通常藉由將各別記憶體胞程式化為表示經儲存位元值之各別類比值而將資料儲存於類比記憶體胞中。每一位元值對應於由類比值之一特定區域表示的各別程式化位準或程式化狀態。典型快閃記憶體被劃分為多個記憶體區塊,其中每一區塊包含多個記憶體頁。資料係以頁為單位寫入及讀取,而以記憶體區塊為單位(亦稱作實體區塊或抹除區塊)抹除。
每一記憶體區塊包含記憶體胞之一陣列,其中記憶體胞之列稱作字線(WL)且記憶體胞之行稱作位元線(BL)。單一程式化操作藉由將信號脈衝施加至字線上而將資料項寫入至字線列內之記憶體胞,該信號脈衝經組態以改變儲存於連接至該字線之記憶體胞中之一或多者中的電壓之類比值。
每一字線可劃分為分別進行程式化之兩個或兩個以上記
憶體胞群組。字線上之兩個不同記憶體胞群組(在單獨寫入循環中加以程式化)通常彼此交錯,且被表示為偶數及奇數記憶體胞。實體上,偶數及奇數記憶體胞為字線上之交替記憶體胞。程式化奇數及偶數頁係藉由在寫入循環期間啟用每隔一個位元線(例如,字線上之每隔一個記憶體胞)而實現。或者,在有時稱作所有位元線(ABL)之組態中,字線之所有記憶體胞可一起被程式化。在一些記憶體器件中,字線中之每一記憶體胞群組(例如,奇數記憶體胞、偶數記憶體胞或所有記憶體胞)藉由在每一記憶體胞中儲存多個位元而儲存一個以上頁。
若寫入失敗(例如,停電)在寫入循環期間發生,則當前所寫入資料通常丟失。然而,另外,有可能先前已寫入至記憶體之資料亦將丟失。舉例而言,先前寫入於與當前所寫入資料相同的字線上的資料可由於寫入失敗而丟失。
舉例而言,在寫入失敗期間,在將資料寫入至一字線之偶數頁之寫入循環期間,先前寫入至同一字線之奇數頁的資料可丟失或被破壞。在另一實例中,在將後續頁寫入至記憶體胞之同一群組中的失敗期間,已寫入至特定頁中的資料可丟失。
在許多資料儲存應用中,由於寫入失敗而丟失當前所寫入資料為合法的。然而,通常不准許且應避免先前所寫入資料之丟失。
下文中描述的本發明之實施例提供了用於程式化非揮發性記憶體中之資料以便使在寫入失敗之情況下之資料丟失
最小的經改良方法。在一些實施例中,記憶體控制器將資料項之一集合(通常為記憶體頁)儲存於記憶體中。該記憶體控制器計算針對資料項之該集合的冗餘資訊(例如,同位)。記憶體控制器將資料項儲存於記憶體中,且保留冗餘資訊(在記憶體中抑或別處)直至資料項之該集合被成功儲存為止。當成功儲存了資料項之該集合時,記憶體控制器捨棄冗餘資訊。若在資料項之該集合的儲存期間發生寫入失敗(例如,電力中斷),則記憶體控制器使用冗餘資訊重建構任何丟失資料。
不同於保留冗餘資訊用於長期儲存之一些已知方案,所揭示技術僅僅臨時地保留冗餘資訊-直至資料項之該集合成功地儲存於記憶體中為止。資料項之該集合一經儲存而無寫入失敗,便捨棄冗餘資訊。因而,所揭示技術在額外耗用(overhead)及記憶體容量方面非常有效。
換言之,所揭示技術並非旨在防止可在程式化資料之後的任何時間處發生的記憶體失敗(在此情形下有必要連同資料一起永久地儲存冗餘資訊),而旨在防止程式化操作期間的失敗(例如,電力中斷)。因而,所揭示技術僅僅臨時地保留冗餘資訊,因此節省了記憶體空間及管理額外耗用。
在一些實施例中,藉由考慮丟失先前資料之可能機制而預定義將資料項及冗餘資訊寫入至記憶體之各頁中的次序。舉例而言,考慮其中寫入失敗很有可能損壞與當前所寫入資料相同的字線中之其他頁之資料的記憶體。在此情
形下,記憶體控制器可使用一預定義程式化方案,其中資料項及冗餘資訊至記憶體頁的映射確保了在任何給定時間可使用成功儲存之資料項及冗餘資訊重建構任何丟失資料。本文中描述該等程式化方案之若干實例。
所揭示之方案提供資料保護,而同時僅引起較小數目之額外寫入操作。此外,所揭示技術中之一些能夠為在同一記憶體區塊中程式化之資料項提供資料保護。換言之,此等所揭示之程式化方案不要求記憶體控制器在多個區塊上分散資料項以用於保護。
圖1為示意性地說明根據本發明之一實施例之記憶體系統20的方塊圖。系統20可用於各種主機系統及器件中,諸如,計算器件、蜂巢式電話及智慧型電話、其他通信終端機、可移除記憶體模組(有時稱作「USB隨身碟」)、固態硬碟(SSD)、數位相機、音樂及其他媒體播放器及/或儲存及擷取資料之任何其他系統或器件。
系統20包含一記憶體器件24,其將資料儲存於記憶體胞陣列28中。該記憶體胞陣列包含多個記憶體區塊34。每一記憶體區塊包含類比記憶體胞32。在本專利申請案之上下文中,術語「類比記憶體胞」用以描述保持物理參數(諸如,電壓或電荷)的連續之類比值的任何記憶體胞。陣列28可包含任何種類之類比記憶體胞,諸如,NAND、NOR及電荷陷阱快閃記憶體(CTF)記憶體胞、相變RAM(PRAM,亦稱為相變記憶體(PCM))、氮化物唯讀記憶體
(NROM)、鐵電RAM(FRAM)、磁性RAM(MRAM)及/或動態RAM(DRAM)記憶體胞。該等記憶體胞可以任何合適之二維或三維連接性方案進行配置。
儲存於記憶體胞中之電荷位準及/或寫入至記憶體胞中及自記憶體胞讀出的電流之類比值在本文中統稱作類比值、類比儲存值或儲存值。系統20藉由程式化該等記憶體胞以採取亦稱作程式化位準的各別程式化狀態而將資料儲存於類比記憶體胞中。該等程式化狀態係選自可能狀態之一有限集,且每一程式化狀態對應於一特定標稱儲存值。
單位階記憶體胞(SLC)對應於以每一記憶體胞1個位元之密度的儲存,多位階記憶體胞(MLC)指代以每一記憶體胞2個或2個以上位元之密度的儲存,且三階記憶體胞(TLC)指代以每一記憶體胞3個位元之密度的資料儲存。藉由將八個可能類比儲存值中之一者寫入至記憶體胞中,TLC可經程式化以採取八個可能程式化狀態中之一者。
記憶體器件24包含一讀取/寫入(R/W)單元36,其將用於儲存於記憶體器件中之資料轉換為類比儲存值且將其寫入至記憶體胞32中。在替代實施例中,該R/W單元36不執行該轉換,而是被提供電壓樣本(亦即,被提供用於儲存於記憶體胞中之儲存值)。當將資料讀出陣列28時,R/W單元36將記憶體胞32之儲存值轉換為具有一或多個位元之解析度的數位樣本。資料通常以群組(其稱作頁)寫入至記憶體胞及自記憶體胞讀取。在一些實施例中,R/W單元可藉由將一或多個負抹除脈衝施加至記憶體胞而抹除記憶體胞32
之群組。通常在整個記憶體區塊中執行抹除。
資料儲存至記憶體器件24及自記憶體器件24擷取資料係由記憶體控制器40執行。該記憶體控制器包含一用於與記憶體器件24通信之介面44,及一執行各種記憶體管理功能的處理器48。詳言之,如以下將詳細解釋,處理器48執行保護資料以免於寫入失敗的程式化方案。
記憶體控制器40與主機52通信,以用於接受用於儲存於記憶體器件中之資料且用於輸出自記憶體器件擷取之資料。記憶體控制器40(且特定而言為處理器48)可以硬體實施。或者,記憶體控制器可包含一執行合適軟體之微處理器,或硬體及軟體元件之組合。
圖1之組態為一例示性系統組態,其純粹出於概念上清楚而展示。亦可使用任何其他合適記憶體系統組態。為了清楚起見,已自圖省略了對於理解本發明之原理並非必不可少的元件,諸如,各種介面、定址電路、時序及定序電路及除錯電路。
儘管圖1之實例展示單一記憶體器件24,但系統20可包含受記憶體控制器40控制之多個記憶體器件。在圖1中所展示之例示性系統組態中,將記憶體器件24及記憶體控制器40實施為兩個單獨積體電路(IC)。然而,在替代實施例中,記憶體器件及記憶體控制器可整合於單一多晶片封裝(MCP)或系統單晶片(SoC)中的單獨半導體晶粒上,且可藉由內部匯流排互連。另外,或者,記憶體控制器電路中之一些或全部可駐存於安置有記憶體陣列之同一晶粒上。另
外,或者,記憶體控制器40之功能性中的一些或全部可以軟體實施且由主機系統之處理器或其他元件執行。在一些實施例中,主機44及記憶體控制器40可製造於同一晶粒上,或製造於同一器件封裝中之單獨晶粒上。
在一些實施例中,記憶體控制器40包含通用處理器,該通用處理器係以軟體程式化以執行本文中所描述之功能。軟體可(例如)經由網路以電子形式下載至處理器,或其可(替代性地或另外)被提供及/或儲存於非暫時性有形媒體上,諸如,磁性、光學或電子記憶體。
在陣列28之一例示性組態中,記憶體胞32以多個列及行加以配置,且每一記憶體胞包含一浮閘電晶體。每一字線中之電晶體的閘極由一字線匯流排連接在一起,且每一行中之電晶體之源極由一位元線匯流排連接在一起。記憶體陣列通常劃分為多個頁,亦即,同時經程式化及讀取的記憶體胞之群組。頁有時再劃分為區段。在一些實施例中,每一頁包含陣列之一完整列。在替代實施例中,每一列(字線)可劃分為兩個或兩個以上頁。舉例而言,在一些器件中,每一列劃分為兩個頁,如先前所描述,一頁包含奇數記憶體胞且另一頁包含偶數記憶體胞。
通常,記憶體控制器40以頁為單位程式化資料,但抹除整個記憶體區塊34。儘管並非必要,通常記憶體區塊為約106
個記憶體胞,而頁為約103
-104
個記憶體胞。
當在寫入失敗期間將資料寫入至非揮發性記憶體時,當
前所寫入資料可合法地被丟失,但任何先前所寫入資料(其可被丟失)必須可擷取。在下一章節中描述之程式化方案利用將資料程式化至字線上之次序以確保在寫入失敗期間發生丟失時將可自冗餘資料擷取先前所寫入之資料。因而,冗餘資料係在資料程式化期間形成且寫入至快閃記憶體抑或其他合適儲存媒體中之一預定義位置中。一旦記憶體控制器驗證了資料寫入成功,就可捨棄冗餘資訊。
在一實例情境中,使用SLC程式化將資料寫入至分割為奇數及偶數記憶體胞的同一字線中。當(例如)來自第一先前寫入循環之資料被儲存於偶數記憶體胞中且當寫入失敗發生時在第二當前寫入循環中將資料寫入至同一字線上之奇數記憶體胞中時,偶數記憶體胞中之來自第一先前寫入循環之資料可遭破壞(可追溯之資料破壞)。
(以上實例涉及給定字線上之奇數記憶體胞在偶數記憶體胞之後程式化的情境,在該情形下,在奇數記憶體胞程式化期間的失敗可破壞儲存於偶數記憶體胞中之資料。對稱地,所揭示技術可以類似方式適用於給定字線上之偶數記憶體胞在奇數記憶體胞之後程式化的情境中。)
在另一情境中,給定字線上之偶數記憶體胞及奇數記憶體胞中之每一者可被順序地以多個頁(例如,兩個或三個頁)程式化。就MLC/TLC頁程式化方案的情形而言,該等頁一般稱作最低有效位元(LSB)頁、中心有效位元(CSB)頁及最高有效位元(MSB)頁。(CSB有時稱作上部有效頁-USB。)
在此等情境下,正被寫入新資料頁的字線上之先前所寫入資料現在在寫入失敗之情況下經受多種潛在資料破壞的機制。最有可能受破壞之該等頁被分組,如在描述於用於MLC/TLC程式化之下一章節中的程式化方案中所描述。來自此等群組之冗餘資料由記憶體控制器產生且被寫入至非揮發性記憶體或寫入至另一合適儲存媒體。一旦資料頁被成功寫入,便捨棄冗餘資訊。
在一些實施例中,記憶體控制器40之處理器48藉由獲取不同頁之邏輯XOR ⊕結果而產生針對頁之一集合的冗餘資訊。此冗餘資訊在本專利申請案中可稱作「備份」或「同位」資料項P。舉例而言,P係自表示為A、B、C之三個資料頁、按P
=A
⊕B
⊕C
計算,且經儲存直至A、B及C被安全地寫入至記憶體中為止,此後可將P捨棄。僅出於概念上清楚來展示三個頁之實例,而不是為了限制本發明之實施例。
在引起(例如)頁C遭破壞之停電的情況下,可自A、B及P、按C
=A
⊕B
⊕P
重建構頁C。此外,按預定義程式化方案來最佳化將資料項寫入至記憶體中的次序會使得用以計算及儲存同位資料或冗餘資訊之額外耗用及計算效率最佳。
為了清楚起見,本文中所描述之實施例主要涉及針對單一頁之失敗進行保護的冗餘資訊。若兩個或兩個以上頁遭破壞,則應使用更複雜之冗餘方案。所揭示技術可與任何此種冗餘方案一起使用。
本文中所描述之方法的效率及速度通常視讀取及寫入操作之數目而定,因為快閃記憶體中之讀取操作通常遠遠短於寫入操作。一旦資料項被寫入,處理器48便捨棄冗餘資訊。假設要求自冗餘資訊重建構資料的資料項之寫入失敗為罕見事件,以使得由幾個額外讀取操作所引起之潛時在整體記憶體系統效能中可忽略。
圖2為示意性地說明根據本發明之一實施例的用於寫入失敗保護之資料儲存方法的流程圖。在接受步驟100中,記憶體控制器40自主機52接受用於儲存之資料項。在寫入步驟110中,記憶體控制器根據由處理器48組態之預定義程式化方案將資料項寫入至記憶體器件24。
在第一決策步驟120中,處理器48檢查是否需要資料項之備份。若為如此,則在產生步驟130中處理器48自資料項產生諸如先前所描述之同位資料的冗餘資訊。在寫入步驟140中,處理器48將冗餘資訊寫入至記憶體器件24抑或任何其他合適儲存媒體(例如,記憶體控制器中之隨機存取記憶體)中之一預定義位置。
若不需要備份,則在第二決策步驟150中,記憶體控制器40之處理器48接著評估是否來自接受步驟100之所有經接受資料項皆已根據程式化方案寫入至記憶體。若為如此,則在捨棄步驟160處處理器48捨棄冗餘資訊。若非如此,則在第三決策步驟170處,處理器48評估是否要發送新資料項以用於儲存。若為如此,則該方法迴圈回至接受新資料項以用於儲存的步驟100。若非如此,則在終止步
驟180中終止資料儲存。
記憶體控制器之處理器48可以各種方式捨棄冗餘資訊。舉例而言,在基於快閃記憶體之系統中,處理器48通常將冗餘資訊之(該或該等)頁標記為無效。因此,記憶體控制器在壓縮或「垃圾收集」期間將不將冗餘資訊複製至新區塊,且冗餘資訊將最終被抹除。
圖3為示意性地說明根據本發明之一實施例的用於重建構由於在非揮發性記憶體中之寫入失敗而丟失的資料項之方法的流程圖。在監視步驟200中,由記憶體控制器40之處理器48監視寫入至記憶體器件24的資料項之一集合。
在決策步驟210中,處理器48驗證資料寫入失敗事件是否發生。若非如此,則記憶體控制器40繼續在監視步驟200中監視寫入至記憶體之資料。若為如此,則處理器48自用於頁之集合之冗餘資訊所寫入(圖2之寫入步驟140)的預定義位置提取該冗餘資訊。在重建構步驟230中,處理器48使用冗餘資訊重建構丟失之資料項。在寫入步驟240中,將經重建構之丟失之資料項寫入至記憶體。記憶體控制器40接著繼續在監視步驟200中監視寫入至記憶體之資料。
圖2及圖3兩者描述用於在寫入失敗之情況下寫入及重建構資料的通用方法。若發生資料丟失,則可自在預定義程式化方案期間產生的冗餘資訊重建構丟失資料。下文所描述之以下實施例說明用於眾多不同情境之預定義程式化方
案的特定實例。不同實施例考慮了每一記憶體胞之位元數目、將字線分割為奇數及偶數記憶體胞以及待寫入之資料項之大小的各種可能性。每一程式化方案指定程式化頁之集合的一特定次序,以便防止在任何時間丟失先前所寫入之資料。
換言之,下文所描述之程式化次序確保了無論何時發生寫入失敗,皆總是可使用未受失敗影響之成功儲存之資料恢復先前資料。以下實例中之假設為寫入失敗可破壞先前寫入至與當前所寫入資料相同之字線的任何資料。然而,所揭示技術並不限於此假設。在替代實施例中,可進行其他假設,且可相應地定義合適之程式化次序。
在一些實施例中,處理器48複製每一頁,且將備份頁儲存為冗餘資訊直至該頁寫入經驗證為止。然而,此技術之額外耗用很大。舉例而言,對於奇數/偶數兩位元/記憶體胞記憶體而言,針對四個外部資料寫入操作需要三個內部寫入保護操作。
在其他實施例中,處理器48將資料頁順序地寫入至不同區塊。當N個區塊已經程式化時,處理器48產生一同位備份區塊以使得寫入區塊中之資料受保護。用於備份同位區塊之記憶體額外耗用為1/N。在一實施例中,可使得額外耗用較小,因為N個區塊中的一些資料(例如,每一字線中之最末頁未必需要保護)。
考慮另一實例,其用於使用SLC儲存將不同頁儲存於每一字線之偶數記憶體胞及(接著)奇數記憶體胞中之記憶體
中。字線之奇數頁的寫入失敗可破壞同一字線之偶數頁上的先前所寫入資料。此SLC組態支援無序地程式化頁。
在此實施例中,處理器48根據以下表1程式化表示為L0...L14之十五個資料頁之集合加上一同位頁:
如在表中可見,處理器首先將頁L0...L6程式化至連續字線之偶數記憶體胞中。在偶數記憶體胞之程式化期間,寫入失敗無法破壞先前所寫入資料,因為先前資料被程式化至不同字線。接著,處理器48將同位頁程式化至下一字線(例如,WL7)之偶數記憶體胞中,且其展示為WL7中之XOR_CW(L0-L6)。
運算子XOR_CW對已編碼有ECC(諸如低密度同位檢查(LDPC)或博斯-查德胡里-霍昆格姆碼(BCH))的資料頁執行邏輯XOR運算⊕。當執行此運算子時,處理器48僅針對無ECC冗餘位元之資料頁之資料位元執行逐位元XOR,且接著以ECC編碼XOR結果以產生冗餘頁。(在一替代實施例中,處理器48可針對資料頁之所有位元(包括資料位元及
ECC冗餘位元兩者)計算逐位元XOR)。
如表1中所展示,當完成了將頁L0-L6程式化至字線WL0-WL6之偶數資料頁中時,處理器48偵測到需要一備份頁(決策步驟120),自頁L0-L6產生一同位備份頁(產生步驟130)以用於偶數頁資料保護,且將同位備份頁寫入至WL7之偶數頁(寫入步驟140)。
接著,處理器48將表示為L7-L14之LSB資料頁寫入至WL0-WL7上之連續奇數頁中。當所有資料被寫入至WL0-WL7之奇數及偶數頁中時(決策步驟150),捨棄同位資料(在此實例中為儲存於WL7之偶數記憶體胞中的XOR_CW頁)(步驟160)。
表1中之資料頁的索引命名法(例如,L1-L14)表示LSB資料(「L」),且數目表示在此處所展示之八個字線(WL0-WL7)(資料被寫入至其中)中之資料寫入序列中的步驟號。因此L0為待寫入之第一資料頁,L1為待寫入之第二資料頁,L2為待寫入之第三資料頁,等等。在描述即將到來之實施例中的額外程式化方案時的後續表中將使用用以表示寫入序列之命名法。
在一些記憶體器件中,分兩半以兩個單獨程式化操作來寫入每一偶數或奇數SLC頁。在表2中展示用於供該等器件使用之實例程式化次序:
亦在此實施例中,處理器48「無序地」程式化字線,其中所有雙偶數頁被順序地程式化,繼之以雙奇數頁。然而,同位頁係在程式化字線之一順序群組的末尾處產生,且如表2中所展示被寫入至最末字線中。
如表2中所見,處理器48將資料區段L0-L6儲存於WL0-WL6之偶數記憶體胞之第一半中,接著將L0-L6之XOR_CW儲存於WL7之偶數記憶體胞之第一半中。接著,處理器48將資料區段L7-L13儲存於WL0-WL6之偶數記憶體胞之第二半中,接著將L7-L13之XOR_CW儲存於WL7之偶數記憶體胞之第二半中。接著,處理器48將資料區段L14-L20儲存於WL0-WL6之奇數記憶體胞之第一半中,接著將L14-L20之XOR_CW儲存於WL7之奇數記憶體胞之第一半中。最後,處理器48將資料區段L21-L28儲存於WL0-WL7之奇數記憶體胞之第二半中。在此階段處,處理器48捨棄三個XOR_CW區段(例如,使三個XOR_CW區段失
效)。
應注意,表1及表2中所展示之實施例係僅為了概念上清楚而選擇。舉例而言,奇數頁可在偶數頁之前程式化。表1及表2中所展示之同位資料可儲存於一不同記憶體區塊或任何其他合適儲存媒體中,且在完成記憶體資料寫入序列時被捨棄。若該同位資料未儲存於同一記憶體區塊中,而儲存至一不同位置,則XOR_CW運算將包含寫入至偶數或奇數頁中之所有字線的資料,且現包含來自WL7之資料(例如,XOR_CW(L0-L7)),等等。
在一些實施例中,需要按次序程式化字線。在此等實施例中,處理器48可將用於頁之集合的冗餘資料程式化至一不同區塊中,且稍後在頁之該集合及可損壞頁之該集合中之資料的頁被成功寫入時捨棄該冗餘資料。
對於MLC程式化而言,當將一MSB頁程式化至一字線時,同一字線上之先前所寫入的LSB資料可在寫入失敗(例如,停電)之情況下受破壞。以下表3展示根據一實施例的用於針對該等事件進行保護的實例方案:
在表3中所展示之實例中,當程式化字線3(WL3)中之MSB頁M16或M17時,WL3上之先前所寫入LSB頁L10及/或L11可在寫入失敗之情況下受破壞。此處,根據先前所描述之命名法,例如,L2表示序列中之LSB資料頁的第二寫入步驟,且M13表示序列中之MSB資料頁的第十三寫入步驟。
在本發明之實施例中,為了使得寫入失敗中之資料破壞的風險最小,實施一MLC程式化方案,其將資料程式化至字線中,產生冗餘資訊,且將該冗餘資訊儲存於一預定義位置中(通常在另一區塊中)。
以下所描述之用於MLC程式化方案之冗餘產生流程使用以下命名法:將第i個字線表示為WL(i),其中i>0。在一實施例中,處理器48執行表3中所展示之MLC程式化次序。結合此程式化次序,處理器48執行以下冗餘方案:
1.讀取[WL(i-1)之LSB Even]
2.程式化[LSB Even WL(i)]
3.將{[LSB Even WL(i)]XOR_CW[LSB Even WL(i-1)]}程式化至Redundancy(1)
4.程式化[LSB Odd WL(i)]
5.讀取[LSB Odd WL(i)]<若資料在步驟4中經儲存,則不需要此步驟>
6.程式化[MSB Even WL(i-1)]
7.將{[MSB Even WL(i-1)]XOR_CW[LSB Odd WL(i)]}程式化至Redundancy(2)
8.程式化[MSB Odd WL(i-1)]
步驟3儲存用於偶數LSB頁之Redundancy(1),同時寫入奇數頁。類似地,步驟7儲存並非先前儲存之奇數LSB頁之Redundancy(2)。步驟7儲存用於偶數MSB頁之冗餘,同時寫入奇數頁。對於i=0之特定情形,步驟為:
1.程式化[LSB Even WL(0)]
2.將[LSB Even WL(0)]程式化至冗餘
3.程式化[LSB Odd WL(0)]
表3中之MLC程式化方案及對應之冗餘產生流程針對每四個資料程式化寫入步驟產生兩個冗餘頁(碼字)(亦即,1/2之編碼率)。為了使以上MLC程式化方案正確地操作,在任何給定時間兩個冗餘碼字應通常對於偶數記憶體胞可用且兩個冗餘碼字對於奇數記憶體胞可用。當產生第三冗餘碼字時,可捨棄第一冗餘碼字,等等。
在MLC程式化方案期間在寫入失敗之情況下可使用以下MLC資料恢復方案來恢復資料:
1. LSB Even WL(i)={[Redundancy(1)]XOR_CW[LSB Even WL(i-1)]
2. LSB Odd WL(i)={[MSB Even WL(i-2)]XOR_CW[Redundancy(2)]
3. MSB Even WL(i-1)={[Redundancy(2)]XOR_CW[LSB Odd WL(i)]
在又一實施例中,記憶體器件支援TLC程式化方案,其中LSB、CSB及MSB資料頁係根據以下次序程式化至奇數
及偶數記憶體胞中:
此處,根據先前所描述之命名法,L2表示在序列中LSB資料頁的第二寫入步驟,C9表示CSB資料頁之第九寫入步驟,且M16表示MSB資料頁之第十六寫入步驟。在此實施例中,在表4之TLC程式化流程期間,處理器48如下產生冗餘資料(對於i>1,假設偶數及奇數頁可一起程式化而無資料丟失,因為資料係儲存於別處):
1.讀取[LSB Even WL(i-1)]
2.程式化[LSB Even WL(i)]
3.程式化[LSB Odd WL(i)]
4.程式化[CSB Even WL(i-1)]
5.讀取[LSB Even WL(i)]<若資料在步驟2中經儲存,則不需要此步驟>
6.將{[LSB Even WL(i)]XOR_CW[CSB Even WL(i-1)]程式化至Redundancy(1)
7.程式化[CSB Odd WL(i-1)]
8.將{[LSB Odd WL(i)]XOR_CW[CSB Odd WL(i-1)]程式化至Redundancy(2)
9.程式化[MSB Even WL(i-2)]
10.程式化[MSB Odd WL(i-2)]
對於此TLC程式化方案而言,該程式化方案針對每六個資料程式化寫入步驟產生兩個冗餘碼字(或為1/3之編碼率)。為了使以上程式化方案正確地操作,在任何給定時間,3*2個冗餘碼字應通常可用。一旦根據該程式化方案寫入了資料,便可將冗餘碼字捨棄。
在其他實施例中,其中在程式寫入期間,在寫入失敗之情況下,在寫入奇數頁資料的同時,先前所寫入之偶數頁資料可受破壞。在該等實施例中,處理器48可如下產生冗餘資料:
1.讀取[LSB Even WL(i-1)]
2.程式化[LSB Even WL(i)]
3.將{[LSB Even WL(i)]XOR_CW[LSB Even WL(i-1)]程式化至Redundancy(1)
4.程式化[LSB Odd WL(i)]
5.程式化[CSB Even WL(i-1)]
6.將{[LSB Odd WL(i)]XOR_CW[CSB Even WL(i-1)]程式化至Redundancy(2)
7.程式化[CSB Odd WL(i-1)]
8.程式化[MSB Even WL(i-2)]
9.將{[CSB Odd WL(i-1)]XOR_CW[MSB Even WL(i-2)]程式化至Redundancy(3)
10.程式化[MSB Odd WL(i-2)]
此程式化方案針對每六個資料程式化寫入步驟產生三個冗餘碼字(或為1/2之編碼率)。為了使以上程式化方案正確地操作,在任何給定時間,3*3個冗餘碼字應通常可用。一旦根據該程式化方案寫入了資料,便可將冗餘捨棄。
在又一實施例中,記憶體器件支援TLC所有位元線(ABL)程式化方案,其中不存在字線上之偶數及奇數記憶體胞劃分。LSB、CSB及MSB資料係以如表5中所展示之步驟順序直接程式化至字線上:
在此實施例中,處理器48可執行以下冗餘產生流程:
1.讀取[LSB WL(i-1)]
2.程式化[LSB WL(i)]
3.程式化[CSB WL(i-1)]
4.讀取[LSB WL(i)]<若資料在步驟2中經儲存,則不需要此步驟>
5.將{[LSB WL(i)]XOR_CW[CSB WL(i-1)]}程式化至Redundancy(1)
6.程式化[MSB WL(i-2)]
對於此TLC ABL程式化方案而言,此程式化方案針對每三個資料程式化寫入步驟產生一個冗餘碼字(或為1/3之編碼率)。為了使以上程式化方案正確地操作,在任何給定時間,3*2個冗餘碼字應通常可用。一旦根據該程式化方案寫入了資料,便可將冗餘捨棄。
表1至表5中所展示之程式化方案係僅純粹為了概念上清楚而選擇且不用作對本發明之實施例的限制。作為在寫入失敗之情況下保護先前所寫入資料(諸如,電力丟失保護)的手段,在程式化寫入流程期間產生冗餘資訊的技術可與區塊交錯進行組合,以獲得具有較少冗餘額外耗用的新程式化方案。
本文中所描述之實施例主要涉及基於XOR之冗餘。在其他實施例中,處理器48可使用除了XOR以外之任何合適冗餘方案產生冗餘資訊。舉例而言,出於此目的,處理器48可使用一合適ECC。若(例如)ECC可校正兩個錯誤,則可將可能一起受破壞之兩個頁包括於受ECC保護之同一頁集
合中。
儘管本文中所描述之實施例主要解決在寫入失敗期間保護非揮發性記憶體中之資料,但本文中所描述之方法及系統亦可用於其他應用,諸如,用於保護經歷其他失敗機制之任何記憶體或包含其他幾何形狀(如呈三維記憶體胞陣列)的記憶體中的資料。
因此將瞭解到,藉由實例敍述了以上所描述之實施例,且本發明並不限於已特定展示且上文所描述的內容。實情為,本發明之範疇包括上文所描述之各種特徵的組合及再組合,以及熟習此項技術者在閱讀前述描述之後將想到且未揭示於先前技術中的該等各種特徵之變體及修改。以引用之方式併入本發明申請案中之文件將被視為本申請案之一整體部分,除了以下情形以外:在此等經併入文件中任何術語被定義為與本說明書中明確或隱含地進行之定義衝突的情況下,則應僅考慮本說明書中的定義。
20‧‧‧記憶體系統/系統
24‧‧‧記憶體器件
28‧‧‧陣列
32‧‧‧類比記憶體胞/記憶體胞
34‧‧‧記憶體區塊
36‧‧‧讀取/寫入(R/W)單元
40‧‧‧記憶體控制器
44‧‧‧介面
48‧‧‧處理器
52‧‧‧主機
圖1為示意性地說明根據本發明之一實施例之記憶體系統的方塊圖;圖2為示意性地說明根據本發明之一實施例的用於寫入失敗保護之資料儲存方法的流程圖;及圖3為示意性地說明根據本發明之一實施例的用於重建構由於在非揮發性記憶體中之寫入失敗而丟失的資料項之方法的流程圖。
20‧‧‧記憶體系統/系統
24‧‧‧記憶體器件
28‧‧‧陣列
32‧‧‧類比記憶體胞/記憶體胞
34‧‧‧記憶體區塊
36‧‧‧讀取/寫入(R/W)單元
40‧‧‧記憶體控制器
44‧‧‧介面
48‧‧‧處理器
52‧‧‧主機
Claims (20)
- 一種保護資料免於在複數個記憶體器件中之寫入失敗的方法,其包含:接收一資料項集合;在該複數個記憶體器件之至少一記憶體器件中儲存該資料項集合之一第一子集;計算針對資料項之該第一子集的冗餘資訊,以回應於判定儲存於該至少一記憶體器件中之該資料項集合之該第一子集由於對該資料項集合之一第二子集之一後續儲存而遭破壞;將該冗餘資訊儲存在該至少一記憶體器件中;儲存該資料項集合之該第二子集;捨棄該冗餘資訊,以回應於判定該資料項集合已被儲存;及使用該冗餘資訊恢復該資料項集合之該第一子集之至少一部分,以回應於判定該第一子集之該至少一部分已遭破壞。
- 如請求項1之方法,其中捨棄該冗餘資訊包括判定該資料項集合之該第二子集之寫入操作之成功完成(a completion of write operations)。
- 如請求項1之方法,其中捨棄該冗餘資訊包括判定該資料項集合之各資料項之一儲存完成。
- 如請求項1之方法,進一步包括儲存該資料項集合之該第一子集與該冗餘資訊兩者於該至少一記憶體器件之同一記憶體區塊中。
- 如請求項1之方法,進一步包括根據一預定義頁程式化次序將該資料項集合之該第一子集與該冗餘資訊兩者儲存於該至少一記憶體器件中。
- 如請求項1之方法,其中進一步包括將該資料項集合之該第一子集儲存於該至少一記憶體器件之一第一記憶體區塊中,及將該冗餘資訊儲存於該至少一記憶體器件之一第二記憶體區塊中,其中該第二記憶體區塊不同於該第一記憶體區塊。
- 如請求項6之方法,其中該第二記憶體區塊專用於冗餘資訊儲存。
- 如請求項1之方法,其中儲存該資料項集合之該第一子集包括將該第一子集之各資料項儲存至該至少一記憶體器件之各別字線的第一資料部分,且其中儲存該該冗餘資訊包括將該冗餘資訊儲存至一後續字線之一第一資料部分;且其中儲存該資料項集合之該第二子集包括將該第二子集之各資料項儲存寫入至該等各別字線及該後續字線之第二資料部分。
- 如請求項1之方法,其中儲存該冗餘資訊包括將該冗餘資訊儲存於該複數個記憶體以外之一儲存位置中。
- 一種保護資料免於在記憶體器件中之寫入失敗的裝置,其包含:一介面,其用於與一記憶體通信;及一處理器,其經組態以: 在該記憶體中儲存一資料項集合之一第一子集;計算針對該資料項集合之該第一子集,以回應於判定儲存於該記憶體中之該資料項集合之該第一子集由於對該資料項集合之一第二子集之一後續儲存而遭破壞;在該記憶體中儲存該冗餘資訊;在該記憶體中儲存該資料項集合之該第二子集;捨棄該冗餘資訊以回應於判定該資料項集合已被儲存;及使用該冗餘資訊恢復該資料項集合之該第一子集之至少一部分,以回應於判定該第一子集之該至少一部分已遭破壞。
- 如請求項10之裝置,其中為了捨棄該冗餘資訊,該處理器經進一步組態以判定該資料項集合之該第二子集之寫入操作之完成。
- 如請求項10之裝置,其中為了捨棄該冗餘資訊,該處理器經進一步組態以判定該資料項集合之各資料項之一儲存完成。
- 如請求項10之裝置,其中該處理器經進一步組態以將該資料項集合之該第一子集與該冗餘資訊皆儲存於該記憶體之同一記憶體區塊中。
- 如請求項10之裝置,其中該處理器經進一步組態以根據一預定義頁程式化次序將該資料項集合之該第一子集與該冗餘資訊皆儲存於該記憶體中。
- 如請求項10之裝置,其中該處理器經進一步組態以將該資料項集合之該第一子集與儲存於該記憶體之一第一記憶體區塊中,且將該冗餘資訊儲存於該記憶體之一第二記憶體區塊中,其中該第二記憶體區塊不同於該第一記憶體區塊。
- 如請求項15之裝置,其中該第二記憶體區塊專用於冗餘資訊儲存。
- 如請求項10之裝置,其中為了儲存該資料項集合之該第一子集,該處理器經進一步組態以將該第一子集之各資料項儲存至該記憶體之各別字線的第一資料部分,其中為了儲存該冗餘資訊,該處理器經進一步組態以將該冗餘資訊儲存至一後續字線之一第一資料部分;且其中為了儲存該資料項集合之該第二子集,該處理器經進一步組態以將該第二子集之各資料項儲存至該等各別字線及該後續字線之第二資料部分。
- 如請求項10之裝置,其中該處理器經進一步組態以將該冗餘資訊儲存於該記憶體外部之一儲存位置中。
- 一種保護資料免於在記憶體器件中之寫入失敗的裝置,其包含:一記憶體;及一處理器,其經組態以:在該記憶體中儲存一資料項集合之一第一子集;計算針對該資料項集合之該第一集合的冗餘資訊,以回應於判定儲存於該記憶體中之該資料項集合之該 第一子集由於對該資料項集合之一第二子集之一後續儲存而遭破壞;在該記憶體中儲存該冗餘資訊;在該記憶體中儲存該資料項集合之該第二子集;捨棄該冗餘資訊以回應於判定該資料項集合已被儲存;及使用該冗餘資訊恢復該資料項集合之該第一子集之至少一部分,以回應於判定該第一子集之該至少一部分已遭破壞。
- 如請求項19之裝置,其中為了捨棄該冗餘資訊,該處理器經進一步組態以判定該資料項集合之該第二子集之寫入操作之完成。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161557428P | 2011-11-09 | 2011-11-09 | |
US13/592,561 US9053809B2 (en) | 2011-11-09 | 2012-08-23 | Data protection from write failures in nonvolatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201333682A TW201333682A (zh) | 2013-08-16 |
TWI498724B true TWI498724B (zh) | 2015-09-01 |
Family
ID=47143035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141622A TWI498724B (zh) | 2011-11-09 | 2012-11-08 | 保護資料免於記憶體器件中之寫入失敗的裝置及方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9053809B2 (zh) |
EP (1) | EP2592625B1 (zh) |
JP (1) | JP5479562B2 (zh) |
KR (1) | KR101439641B1 (zh) |
TW (1) | TWI498724B (zh) |
WO (1) | WO2013070667A1 (zh) |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US9384125B2 (en) * | 2012-06-18 | 2016-07-05 | Silicon Motion Inc. | Method for accessing flash memory having pages used for data backup and associated memory device |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
KR20140100330A (ko) * | 2013-02-06 | 2014-08-14 | 삼성전자주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
KR20150132101A (ko) * | 2013-03-15 | 2015-11-25 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 확장 기입을 지원하는 메모리 모듈 제어기 |
US9069660B2 (en) * | 2013-03-15 | 2015-06-30 | Apple Inc. | Systems and methods for writing to high-capacity memory |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
CN108447516B (zh) | 2013-08-23 | 2020-04-24 | 慧荣科技股份有限公司 | 存取快闪存储器中存储单元的方法以及使用该方法的装置 |
CN104424040B (zh) * | 2013-08-23 | 2017-10-31 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN110175088B (zh) * | 2013-08-23 | 2022-11-11 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
CN104424127A (zh) | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9703636B2 (en) * | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
JP2015204126A (ja) | 2014-04-16 | 2015-11-16 | 株式会社東芝 | 半導体記憶装置 |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
KR102247087B1 (ko) * | 2014-07-08 | 2021-05-03 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US9696918B2 (en) | 2014-07-13 | 2017-07-04 | Apple Inc. | Protection and recovery from sudden power failure in non-volatile memory devices |
US9928149B2 (en) * | 2014-08-29 | 2018-03-27 | Cynny Space Srl | Systems and methods to maintain data integrity and redundancy in a computing system having multiple computers |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9747035B2 (en) * | 2014-12-17 | 2017-08-29 | Empire Technology Development Llc | Reducing memory overhead associated with memory protected by a fault protection scheme |
KR20160133283A (ko) * | 2015-05-12 | 2016-11-22 | 삼성전자주식회사 | 비휘발성 메모리 저장장치를 운영하는 방법 및 이를 구현한 전자장치 |
KR20160149463A (ko) * | 2015-06-18 | 2016-12-28 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법 |
KR102496988B1 (ko) | 2016-02-19 | 2023-02-09 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법 |
US10275376B2 (en) | 2016-03-02 | 2019-04-30 | Western Digital Technologies, Inc. | Efficient cross device redundancy implementation on high performance direct attached non-volatile storage with data reduction |
US10755787B2 (en) | 2018-06-28 | 2020-08-25 | Apple Inc. | Efficient post programming verification in a nonvolatile memory |
US10762967B2 (en) | 2018-06-28 | 2020-09-01 | Apple Inc. | Recovering from failure in programming a nonvolatile memory |
US10824502B2 (en) | 2018-08-08 | 2020-11-03 | Micron Technology, Inc. | Enhanced codeword for media persistence and diagnostics |
US10936455B2 (en) | 2019-02-11 | 2021-03-02 | Apple Inc. | Recovery of data failing due to impairment whose severity depends on bit-significance value |
CN111581012B (zh) * | 2019-02-15 | 2023-02-28 | 宇瞻科技股份有限公司 | 固态硬盘 |
US10915394B1 (en) | 2019-09-22 | 2021-02-09 | Apple Inc. | Schemes for protecting data in NVM device using small storage footprint |
US11550657B1 (en) | 2021-09-01 | 2023-01-10 | Apple Inc. | Efficient programming schemes in a nonvolatile memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240178B2 (en) * | 2001-07-25 | 2007-07-03 | Sony Corporation | Non-volatile memory and non-volatile memory data rewriting method |
US20100318839A1 (en) * | 2009-06-16 | 2010-12-16 | Sandisk Corporation | Data recovery in multi-level cell nonvolatile memory |
US20110228601A1 (en) * | 2010-03-17 | 2011-09-22 | Olbrich Aaron K | Mlc self-raid flash data protection scheme |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05282886A (ja) | 1992-03-31 | 1993-10-29 | Toshiba Corp | 不揮発性半導体メモリ装置 |
US5418921A (en) * | 1992-05-05 | 1995-05-23 | International Business Machines Corporation | Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes |
US5533190A (en) | 1994-12-21 | 1996-07-02 | At&T Global Information Solutions Company | Method for maintaining parity-data consistency in a disk array |
JP3675375B2 (ja) | 2001-07-25 | 2005-07-27 | ソニー株式会社 | 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法 |
US7392428B2 (en) | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for recovering from abnormal interruption of a parity update operation in a disk array system |
US8050086B2 (en) * | 2006-05-12 | 2011-11-01 | Anobit Technologies Ltd. | Distortion estimation and cancellation in memory devices |
US8751859B2 (en) * | 2007-05-10 | 2014-06-10 | International Business Machines Corporation | Monitoring lost data in a storage system |
JP5286956B2 (ja) * | 2008-06-13 | 2013-09-11 | 富士通株式会社 | 制御方法、ディスクアレイ装置 |
KR20100052041A (ko) | 2008-11-10 | 2010-05-19 | 엘지전자 주식회사 | 로더와 펌웨어 자동 복구 방법 |
US8132045B2 (en) * | 2009-06-16 | 2012-03-06 | SanDisk Technologies, Inc. | Program failure handling in nonvolatile memory |
KR101572830B1 (ko) | 2009-06-22 | 2015-11-30 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법, 비휘발성 메모리 장치 및 비휘발성 메모리 시스템 |
JP5170010B2 (ja) * | 2009-06-24 | 2013-03-27 | 日本電気株式会社 | ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム |
US8285952B2 (en) * | 2009-09-17 | 2012-10-09 | Hitachi, Ltd. | Method and apparatus to utilize large capacity disk drives |
US8266501B2 (en) * | 2009-09-29 | 2012-09-11 | Micron Technology, Inc. | Stripe based memory operation |
US8443263B2 (en) * | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8850113B2 (en) * | 2010-02-27 | 2014-09-30 | Cleversafe, Inc. | Data migration between a raid memory and a dispersed storage network memory |
TWI447739B (zh) * | 2010-03-22 | 2014-08-01 | Phison Electronics Corp | 錯誤校正方法、記憶體控制器與儲存系統 |
JP5388976B2 (ja) * | 2010-09-22 | 2014-01-15 | 株式会社東芝 | 半導体記憶制御装置 |
JP5534024B2 (ja) * | 2010-10-21 | 2014-06-25 | 富士通株式会社 | ストレージ制御装置およびストレージ制御方法 |
US8479062B2 (en) * | 2010-12-03 | 2013-07-02 | International Business Machines Corporation | Program disturb error logging and correction for flash memory |
US9058288B2 (en) * | 2011-04-03 | 2015-06-16 | Apple Inc. | Redundant storage in non-volatile memory by storing redundancy information in volatile memory |
US8732557B2 (en) * | 2011-05-31 | 2014-05-20 | Micron Technology, Inc. | Data protection across multiple memory blocks |
-
2012
- 2012-08-23 US US13/592,561 patent/US9053809B2/en not_active Expired - Fee Related
- 2012-11-07 WO PCT/US2012/063813 patent/WO2013070667A1/en active Application Filing
- 2012-11-08 TW TW101141622A patent/TWI498724B/zh not_active IP Right Cessation
- 2012-11-09 JP JP2012260307A patent/JP5479562B2/ja not_active Expired - Fee Related
- 2012-11-09 KR KR1020120126838A patent/KR101439641B1/ko active IP Right Grant
- 2012-11-09 EP EP12191949.2A patent/EP2592625B1/en not_active Not-in-force
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7240178B2 (en) * | 2001-07-25 | 2007-07-03 | Sony Corporation | Non-volatile memory and non-volatile memory data rewriting method |
US20100318839A1 (en) * | 2009-06-16 | 2010-12-16 | Sandisk Corporation | Data recovery in multi-level cell nonvolatile memory |
US20110228601A1 (en) * | 2010-03-17 | 2011-09-22 | Olbrich Aaron K | Mlc self-raid flash data protection scheme |
Also Published As
Publication number | Publication date |
---|---|
KR101439641B1 (ko) | 2014-09-11 |
KR20130051909A (ko) | 2013-05-21 |
WO2013070667A1 (en) | 2013-05-16 |
US9053809B2 (en) | 2015-06-09 |
TW201333682A (zh) | 2013-08-16 |
EP2592625B1 (en) | 2019-10-02 |
US20130117606A1 (en) | 2013-05-09 |
JP5479562B2 (ja) | 2014-04-23 |
EP2592625A1 (en) | 2013-05-15 |
JP2013101743A (ja) | 2013-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI498724B (zh) | 保護資料免於記憶體器件中之寫入失敗的裝置及方法 | |
US10061643B2 (en) | Estimating an error rate associated with memory | |
US9136879B2 (en) | Error correction coding over multiple memory pages | |
US9400710B2 (en) | Redundant data storage schemes for multi-die memory systems | |
US9996417B2 (en) | Data recovery in memory having multiple failure modes | |
US9164830B2 (en) | Methods and devices to increase memory device data reliability | |
US9465552B2 (en) | Selection of redundant storage configuration based on available memory space | |
TWI442407B (zh) | 在固態儲存系統中之資料回復 | |
US10475524B2 (en) | Recovery of data read from memory with unknown polarity | |
US10762967B2 (en) | Recovering from failure in programming a nonvolatile memory | |
US10915394B1 (en) | Schemes for protecting data in NVM device using small storage footprint | |
US9058288B2 (en) | Redundant storage in non-volatile memory by storing redundancy information in volatile memory | |
US9135113B2 (en) | Recovery from programming failure in non-volatile memory | |
US9454429B2 (en) | Protection against word line failure in memory devices | |
US8949684B1 (en) | Segmented data storage | |
US11550657B1 (en) | Efficient programming schemes in a nonvolatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |