TWI385512B - Method of storing data and decoding data stored in a nonvolatile semiconductor memory array, nonvolatile semiconductor and flash memory systems, and method of managing data in flash memory - Google Patents
Method of storing data and decoding data stored in a nonvolatile semiconductor memory array, nonvolatile semiconductor and flash memory systems, and method of managing data in flash memory Download PDFInfo
- Publication number
- TWI385512B TWI385512B TW96141222A TW96141222A TWI385512B TW I385512 B TWI385512 B TW I385512B TW 96141222 A TW96141222 A TW 96141222A TW 96141222 A TW96141222 A TW 96141222A TW I385512 B TWI385512 B TW I385512B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- page
- bits
- decoding
- cells
- Prior art date
Links
Classifications
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Description
本發明係關於非揮發性記憶體系統並係關於操作非揮發性記憶體系統之方法。This invention relates to non-volatile memory systems and to methods of operating non-volatile memory systems.
非揮發性記憶體系統用於各種應用。某些非揮發性記憶體系統係嵌入一更大系統內,例如一個人電腦。其他非揮發性記憶體系統係可卸除地連接至一主機系統並可在不同主機系統之間互換。此類可卸除式記憶體系統之範例包括記憶卡與USB快閃驅動器。依據若干熟知的標準,已採用商用方式實施包括非揮發性記憶卡的電子電路卡。記憶卡係與個人電腦、行動電話、個人數位助理(PDA)、數位靜態相機、數位攝影機、可攜式音訊播放器及其他主機電子裝置一起使用,以儲存大量資料。此類卡通常包含一可再程式化非揮發性半導體記憶體單元陣列以及一控制器,該控制器控制並支援該記憶體單元陣列之操作並與卡所連接的一主機介接。若干同一類型的卡可在設計用以接受該類型卡的主機卡槽中互換。然而,許多電子卡標準的發展已產生不同類型的卡,其在各種程度上彼此不相容。依據一標準所製造的卡通常不可與設計成採用另一個標準之卡操作的主機使用。記憶卡標準包含PC卡、CompactFlashTM 卡(CFTM 卡)、SmartMediaTM 卡、MultiMediaCard(MMCTM )、安全數位(SD)卡、miniSDTM 卡、用戶識別模組(SIM)、Memory StickTM 、Memory Stick Duo卡及microSD/TransFlashTM 記憶體模組標準。市面上可購得若干有SanDisk公司之商標"Cruzer®"的USB快閃驅動器產品。USB快閃驅動器通常較大且形狀不同於以上說明的記憶卡。Non-volatile memory systems are used in a variety of applications. Some non-volatile memory systems are embedded in a larger system, such as a personal computer. Other non-volatile memory systems are removably connected to a host system and can be interchanged between different host systems. Examples of such removable memory systems include memory cards and USB flash drives. Electronic circuit cards including non-volatile memory cards have been implemented commercially in accordance with a number of well-known standards. Memory cards are used with personal computers, mobile phones, personal digital assistants (PDAs), digital still cameras, digital cameras, portable audio players, and other host electronic devices to store large amounts of data. Such cards typically include a reprogrammable non-volatile semiconductor memory cell array and a controller that controls and supports the operation of the memory cell array and interfaces with a host to which the card is connected. Several cards of the same type can be interchanged in a host card slot designed to accept this type of card. However, the development of many electronic card standards has produced different types of cards that are incompatible with each other to varying degrees. Cards manufactured in accordance with a standard are generally not available for use with a host designed to operate with another standard card. Memory card standards include PC cards, CompactFlash TM card (CF TM card), SmartMedia TM card, MultiMediaCard (MMC TM), secure digital (SD) card, miniSD TM card, subscriber identity module (SIM), Memory Stick TM, Memory Stick Duo card and microSD/TransFlash TM memory module standard. A number of USB flash drives with the trademark "Cruzer®" from SanDisk are commercially available. USB flash drives are typically larger and different in shape from the memory cards described above.
在讀取資料時儲存於一非揮發性記憶體系統內之資料可能包含錯誤位元。傳統重建損壞資料的方法包括應用錯誤校正碼(ECC)。在將資料寫入記憶體系統時,簡單的錯誤校正碼藉由儲存額外同位位元來編碼資料,該等同位位元將位元群組之同位設定為一所需邏輯值。若在儲存期間資料係錯誤,則位元群組之同位可能變化。在從記憶體系統讀取資料之後,位元群組之同位旋即係再次藉由ECC來計算。因為資料損壞,所計算同位可能不匹配所需同位條件,而ECC可偵測損壞。The data stored in a non-volatile memory system when reading data may contain error bits. Traditional methods of reconstructing corrupted data include applying an error correction code (ECC). When writing data into the memory system, a simple error correction code encodes the data by storing additional parity bits that set the parity of the bit group to a desired logical value. If the data is incorrect during storage, the parity of the bit group may change. After reading the data from the memory system, the isomorphism of the bit group is again calculated by the ECC. Because the data is corrupted, the calculated parity may not match the required co-location conditions, and the ECC can detect the damage.
ECC可具有至少兩個功能:偵錯與錯誤校正。此等功能之各功能之能力通常以可偵測為錯誤的並隨後校正之位元數目來測量。偵測能力可與校正能力相同或大於其。一典型ECC可偵測的錯誤位元數目高於其可校正的錯誤位元數目。有時將一資料位元及同位位元集合稱為一字。一早期範例係(7,4)漢明碼(Hamming code),其能夠最多偵測每字(在此範例中7位元)兩個錯誤並能夠在該七位元字中校正一錯誤。The ECC can have at least two functions: debug and error correction. The capabilities of the various functions of these functions are typically measured in terms of the number of bits that can be detected as erroneous and subsequently corrected. The detection capability can be the same or greater than the correction capability. The number of error bits detectable by a typical ECC is higher than the number of error bits it can correct. A collection of data bits and parity bits is sometimes referred to as a word. An early example is the (7, 4) Hamming code, which is capable of detecting up to two errors per word (7 bits in this example) and is able to correct an error in the seven-bit word.
更複雜的ECC可校正每字一個以上單一錯誤,但重建資料在計算上變得愈加複雜。慣例係在某可接受較小錯誤復原之概率下復原資料。然而隨著錯誤數目不斷增加,可靠資料復原之機率也在迅速減小或額外硬體及/或效能的相 關聯成本變得極高。More complex ECC can correct more than one single error per word, but reconstructing data becomes more complex in computation. Conventions restore data at a probability that a small error recovery is acceptable. However, as the number of errors continues to increase, the chances of reliable data recovery are rapidly decreasing or additional hardware and/or performance phases. The associated costs become extremely high.
在半導體記憶體裝置中,包括EEPROM系統,資料可表示為電晶體之臨界電壓。一般而言,不同數位資料儲存值對應於不同電壓範圍。若由於某些原因在讀取操作期間電壓位準偏離其較佳範圍,則會發生錯誤。該錯誤可藉由ECC來偵測且在某些情況下可校正此等錯誤。In a semiconductor memory device, including an EEPROM system, the data can be represented as the threshold voltage of the transistor. In general, different digital data storage values correspond to different voltage ranges. If for some reason the voltage level deviates from its preferred range during a read operation, an error will occur. This error can be detected by ECC and can be corrected in some cases.
將資料儲存於一非揮發性半導體記憶體陣列中之一範例性方法包含:依據一第一編碼方案來編碼資料之一第一部分以獲得第一複數個經編碼資料位元;將該第一複數個經編碼資料位元儲存於該記憶體陣列的複數個單元中,該複數個單元之各單元包含該第一複數個經編碼資料位元之至少一者;以及將第二複數個資料位元儲存於具有該第一複數個經編碼資料位元之複數個單元中,該複數個單元之各單元包含該第二複數個資料位元之至少一者,該第二複數個資料位元不依據該第一編碼方案予以編碼。An exemplary method of storing data in a non-volatile semiconductor memory array includes encoding a first portion of one of the data according to a first encoding scheme to obtain a first plurality of encoded data bits; Stored data bits are stored in a plurality of cells of the memory array, each of the plurality of cells including at least one of the first plurality of encoded data bits; and a second plurality of data bits Stored in a plurality of cells having the first plurality of encoded data bits, each of the plurality of cells including at least one of the second plurality of data bits, the second plurality of data bits not being based The first coding scheme is encoded.
解碼儲存於一非揮發性半導體記憶體陣列中之資料的另一範例性方法包含:讀取儲存於複數個單元中之資料,該複數個單元之各單元包含至少一第一資料位元與一第二資料位元;使用該讀取結果來產生對應於該複數個第一資料位元的複數個第一校正資料值,該複數個第一校正資料值係藉由該複數個第一資料位元之ECC校正加以產生;以及隨後使用該讀取結果並還使用該複數個第一校正資料值來產生對應於該複數個第二資料位元的複數個第二校正資料 值。Another exemplary method of decoding data stored in a non-volatile semiconductor memory array includes reading data stored in a plurality of cells, each cell of the plurality of cells including at least a first data bit and a a second data bit; using the read result to generate a plurality of first corrected data values corresponding to the plurality of first data bits, wherein the plurality of first corrected data values are obtained by the plurality of first data bits ECC correction of the element is generated; and subsequently using the read result and also using the plurality of first corrected data values to generate a plurality of second corrected data corresponding to the plurality of second data bits value.
一範例性非揮發性半導體記憶體系統包含:一記憶體陣列,其包括複數個記憶體單元,其個別地保持一第一頁之一第一資料位元與一第二頁之一第二資料位元;以及一ECC編碼器,其在該複數個單元之儲存之前依據一第一編碼方案編碼該第一頁之資料而不在該複數個單元之儲存之前依據該第一編碼方案編碼該第二頁之資料。An exemplary non-volatile semiconductor memory system includes: a memory array including a plurality of memory cells, each of which individually holds a first data bit of a first page and a second data of a second page a bit; and an ECC encoder that encodes the data of the first page according to a first encoding scheme before storing the plurality of cells without encoding the second encoding according to the first encoding scheme before storing the plurality of cells Page information.
另一範例性非揮發性半導體記憶體系統包含:一快閃記憶體陣列,其將資料儲存於複數個單元中,一個別單元儲存一第一資料頁之至少一第一資料位元與一第二資料頁之一第二資料位元;以及一ECC解碼系統,其首先解碼該第一資料頁並隨後使用該第一資料頁之解碼結果來解碼該第二資料頁。Another exemplary non-volatile semiconductor memory system includes: a flash memory array that stores data in a plurality of cells, and a cell stores at least a first data bit and a first page of a first data page a second data bit; and an ECC decoding system that first decodes the first data page and then decodes the second data page using the decoded result of the first data page.
在許多非揮發性記憶體中,讀取自一記憶體陣列之資料可能有錯。即,程式化至一記憶體陣列之輸入資料之個別位元可能稍後係讀取為在一不同邏輯值下。圖1顯示一指示一記憶體單元狀態之實體參數(臨界電壓VT )與該記憶體單元可能係程式化之邏輯值之間的關係。在此範例中,僅將兩個狀態儲存於單元內。因而,單元儲存一資料位元。程式化至邏輯0狀態之單元一般具有一臨界電壓,其高於在邏輯1(未程式化)狀態下的單元。在一替代性方案中,邏輯1狀態係記憶體單元之未程式化狀態。圖1之垂直軸指示基於期望臨界電壓分佈在任一特定臨界電壓下讀取一單元 之概率。針對程式化至邏輯1之單元顯示一第一概率函數並針對程式化至邏輯0之單元顯示一第二概率函數。然而,此等函數在其間具有某種程度的重疊。在讀取此類單元中使用一區別電壓VD 。具有一低於VD 之臨界電壓之單元係視為處於狀態1,而該些具有一高於VD 之臨界電壓之單元係視為處於狀態0。如圖1所示,此可能不總是正確的。因為函數之間的重疊,存在一非零概率,即程式化至一邏輯1狀態之一記憶體單元將係讀取為具有一大於VD 之臨界電壓,故將讀取為處於一邏輯0狀態。同樣,存在一非零概率,即一程式化至一邏輯0狀態之一記憶體單元將係讀取為具有一邏輯1狀態。In many non-volatile memories, reading data from a memory array may be wrong. That is, individual bits of input data that are programmed into a memory array may be read later at a different logic value. Figure 1 shows the relationship between a physical parameter (threshold voltage V T ) indicating the state of a memory cell and a logical value that the memory cell may be stylized. In this example, only two states are stored in the cell. Thus, the unit stores a data bit. A unit that is programmed to a logic 0 state typically has a threshold voltage that is higher than the unit in a logic 1 (unprogrammed) state. In an alternative, the logic 1 state is the unprogrammed state of the memory cells. The vertical axis of Figure 1 indicates the probability of reading a cell at any particular threshold voltage based on the desired threshold voltage distribution. A first probability function is displayed for cells stylized to logic 1 and a second probability function is displayed for cells stylized to logic 0. However, these functions have some degree of overlap between them. A different voltage V D is used in reading such a unit. A cell having a threshold voltage below V D is considered to be in state 1, and those cells having a threshold voltage above V D are considered to be in state 0. As shown in Figure 1, this may not always be correct. Because of the overlap between functions, there is a non-zero probability that a memory cell that is programmed to a logic 1 state will read as having a threshold voltage greater than V D and will be read as being in a logic 0 state. . Similarly, there is a non-zero probability that a memory cell that is stylized to a logic 0 state will be read as having a logic one state.
函數之間的重疊由於若干原因而發生,包括記憶體陣列內的實體缺陷及稍後在記憶體陣列內進行程式化或讀取操作對已程式化單元所造成之干擾。重疊還可能由於一般不能將大量單元保持於一極緊密臨界電壓範圍內而發生。特定程式化技術可允許臨界電壓之函數變窄(具有更小的標準偏差)。然而,此類程式化可花費更多時間。在某些記憶體系統中,一個以上位元係儲存於一記憶體單元內。一般而言,需要在一記憶體單元內儘可能多地儲存位元。為有效率地使用可用臨界電壓範圍,用於相鄰狀態之函數可以係使其明顯重疊。The overlap between functions occurs for a number of reasons, including physical defects in the memory array and subsequent stylization or read operations within the memory array that interfere with the programmed unit. Overlap may also occur due to the inability to maintain a large number of cells within a very tight threshold voltage range. Specific stylization techniques allow the function of the threshold voltage to be narrowed (with a smaller standard deviation). However, such stylization can take more time. In some memory systems, more than one bit is stored in a memory unit. In general, it is desirable to store as many bits as possible within a memory unit. In order to efficiently use the available threshold voltage range, the functions for adjacent states can be made to overlap significantly.
非揮發性記憶體系統普遍採用ECC方法來克服在讀取自一記憶體陣列之資料中所發生之錯誤。此類方法一般依據一編碼系統從要儲存於一記憶體陣列內之輸入資料計算某 些額外ECC位元。其他ECC方案可採用一更複雜方式將輸入資料映射至輸出資料。該等ECC位元一般連同輸入資料一起儲存但可單獨儲存。該輸入資料與ECC位元稍後一起從非揮發性記憶體讀取且一解碼器同時使用該資料及ECC位元來檢查是否存在任何錯誤。在某些情況下,此類ECC位元還可用於識別一出錯位元。該錯誤位元係接著藉由改變其狀態(從"0"變成"1"或從"1"變成"0")加以校正。將ECC位元附著至資料位元並非用以將資料儲存於一非揮發性記憶體內之前編碼資料之唯一方式。例如,可依據一方案來編碼資料位元,該方案提供以下變換:00至1111、01至1100、10至0011及11至0000。Non-volatile memory systems commonly employ ECC methods to overcome errors that occur in reading data from a memory array. Such methods generally rely on an encoding system to calculate from an input data to be stored in a memory array. Some extra ECC bits. Other ECC schemes can map input data to output data in a more sophisticated manner. These ECC bits are typically stored with the input data but can be stored separately. The input data is later read from the non-volatile memory along with the ECC bits and a decoder uses both the data and the ECC bits to check for any errors. In some cases, such ECC bits can also be used to identify an error bit. The error bit is then corrected by changing its state (from "0" to "1" or from "1" to "0"). Attaching an ECC bit to a data bit is not the only way to encode the data before storing it in a non-volatile memory. For example, the data bits can be encoded according to a scheme that provides the following transformations: 00 to 1111, 01 to 1100, 10 to 0011, and 11 to 0000.
圖2顯示儲存於一記憶體系統200中的輸入資料之一範例。輸入資料係首先藉由一ECC單元201接收,其包括一編碼器203。該輸入資料可以係要儲存於記憶體系統200中之主機資料或可以係藉由一記憶體控制器產生之資料。圖2之範例顯示四個輸入資料位元1001。接著,編碼器203使用一編碼方案從該等輸入資料位元計算ECC位元(1111)。一編碼方案之範例係產生ECC位元,其係用於選定資料位元群組之同位位元。FIG. 2 shows an example of input data stored in a memory system 200. The input data is first received by an ECC unit 201, which includes an encoder 203. The input data may be host material to be stored in the memory system 200 or may be data generated by a memory controller. The example of Figure 2 shows four input data bits 1001. Encoder 203 then calculates an ECC bit from the input data bits using an encoding scheme (1111). An example of a coding scheme is to generate ECC bits for the co-located bits of the selected data bit group.
接著,將該等輸入資料位元與該等ECC位元兩者傳送至一調變/解調變單元205,其包括一調變器207。調變器207將藉由ECC單元201傳送之數位資料轉換成一其係寫入一記憶體陣列209之形式。在一方案中,該數位資料係轉換成複數個記憶體單元中之複數個臨界電壓值。因而,用於 將數位資料轉換成一記憶體單元中之一儲存臨界電壓的各種電路可視為形成一調變器。在圖2之範例中,每一記憶體單元可保持一資料位元。因而,每一記憶體單元可在兩個範圍之一者中具有一臨界電壓,一範圍表示一邏輯"1"狀態而另一範圍表示一邏輯"0"狀態,如圖1所示。儲存一邏輯"1"狀態的記憶體單元具有小於VD (<VD )之一臨界電壓而儲存一邏輯"0"狀態的記憶體單元具有大於VD (>VD )之一臨界電壓。單元可程式化並驗證至一高於VD 之標稱臨界電壓,以至少最初確保在程式化至該等二邏輯狀態之單元之間存在某較佳間隔。Then, the input data bits and the ECC bits are transmitted to a modulation/demodulation unit 205, which includes a modulator 207. The modulator 207 converts the digital data transmitted by the ECC unit 201 into a form that is written into a memory array 209. In one aspect, the digital data is converted into a plurality of threshold voltage values in a plurality of memory cells. Thus, various circuits for converting digital data into one of the memory cells to store the threshold voltage can be considered to form a modulator. In the example of Figure 2, each memory cell can hold a data bit. Thus, each memory cell can have a threshold voltage in one of two ranges, one range representing a logical "1" state and the other range representing a logic "0" state, as shown in FIG. A memory cell storing a logic "1" state has a threshold voltage less than one of V D (<V D ) and a memory cell storing a logic "0" state having a threshold voltage greater than V D (>V D ). The unit can be programmed and verified to a nominal threshold voltage above V D to at least initially ensure that there is a preferred spacing between units programmed to the two logic states.
資料可儲存於記憶體陣列209中某時間週期。在此時間期間,可能會發生各種事件,引起記憶體單元之臨界電壓變化。特定言之,涉及程式化及讀取之操作可能要求電壓以影響其他先前程式化單元之一方式應用至字線及位元線。此類干擾在裝置之尺寸係減小使得相鄰單元之間的交互作用較明顯之情況下尤其普遍。電荷還可能在較長時間週期內丟失。此類資料保持失效還可引起資料在讀取時變化。由於此類變化,可能讀出資料位元而具有不同於最初程式化之資料位元之狀態。在圖2之範例中,一輸入資料位元211係讀取為具有一小於VD (<VD )之臨界值,而其最初係寫入時具有一大於VD (>VD )之臨界值。The data can be stored in the memory array 209 for a certain period of time. During this time, various events may occur that cause a threshold voltage change in the memory cell. In particular, operations involving stylization and reading may require voltages to be applied to word lines and bit lines in a manner that affects one of the other previously stylized units. Such interference is especially prevalent in situations where the size of the device is reduced such that the interaction between adjacent units is more pronounced. The charge may also be lost over a longer period of time. Failure to maintain such data can also cause the data to change as it is read. Due to such changes, it is possible to read the data bits with a different state than the originally programmed data bits. In the example of FIG. 2, an input data bit 211 is read to have a threshold less than V D (<V D ), which initially has a threshold greater than V D (>V D ) when written. value.
記憶體單元之臨界電壓係藉由調變/解調變單元205中之一解調變器213轉換成資料位元。此係藉由該調變器執行之程序的反向程序。解調變器213可包括感測放大器,其 從記憶體陣列209中之一記憶體單元讀取一電壓或電流並從該讀取導出該單元之狀態。在圖2之範例中,一具有一小於VD (<VD )之臨界電壓之記憶體單元提供一解調變輸出"1"而一具有一大於VD (>VD )之臨界電壓之記憶體單元提供一解調變輸出"0"。此提供所示的輸出序列11011111。此序列之第二位元208由於儲存於記憶體陣列209中而出錯。The threshold voltage of the memory cell is converted into a data bit by one of the demodulation transformers 213 in the modulation/demodulation transformer unit 205. This is the reverse of the program executed by the modulator. The demodulation transformer 213 can include a sense amplifier that reads a voltage or current from one of the memory cells in the memory array 209 and derives the state of the cell from the read. In the example of FIG. 2, a memory cell having a threshold voltage less than V D (<V D ) provides a demodulated output "1" and a threshold voltage greater than V D (>V D ). The memory unit provides a demodulated output "0". This provides the output sequence 11011111 shown. The second bit 208 of this sequence is erroneous due to being stored in the memory array 209.
解調變器213之輸出係傳送至ECC單元201中之一解碼器215。解碼器215由資料位元與ECC位元決定是否存在任何錯誤。若存在處於該碼之校正能力內的小量錯誤,則校正該等錯誤。若存在大量錯誤,則其可以係識別但若其處於該碼之偵測能力內則不校正。若錯誤數目超過該碼之偵測能力,則無法偵測到該等錯誤,或可能造成一錯誤校正。在圖2之範例中,該第二位元中的錯誤係偵測並校正。此從解碼器215提供一輸出(1001),其與該輸入序列相同。記憶體系統200之解碼係視為硬輸入硬輸出解碼,因為解碼器215僅接收表示輸入資料位元與ECC位元之資料位元,且解碼器215輸出一校正的資料位元之序列,其對應於輸入資料位元(或若錯誤數目過高則無法提供一輸出)。The output of the demodulator 213 is transmitted to one of the decoders 215 in the ECC unit 201. The decoder 215 determines whether there are any errors by the data bit and the ECC bit. If there is a small amount of error within the corrective ability of the code, the errors are corrected. If there are a large number of errors, they can be identified but not corrected if they are within the detection capabilities of the code. If the number of errors exceeds the detection capability of the code, the error cannot be detected or an error correction may be caused. In the example of Figure 2, the errors in the second bit are detected and corrected. This slave decoder 215 provides an output (1001) which is identical to the input sequence. The decoding of the memory system 200 is considered hard input hard output decoding because the decoder 215 receives only the data bits representing the input data bits and ECC bits, and the decoder 215 outputs a sequence of corrected data bits. Corresponds to the input data bit (or an output cannot be provided if the number of errors is too high).
圖3與4顯示對記憶體系統200之一替代性記憶體系統。圖3顯示與圖1之該些函數類似的函數,其中VD =0且低於VD 之臨界電壓表示邏輯0而高於VD 之電壓表示邏輯1。代替顯示一單一電壓VD 將臨界電壓分成兩個不同範圍的係,此處藉由實際電壓數目來指示該等臨界電壓。對應於邏輯"1"之函數係在0伏特以上居中,而對應於邏輯"0"之函數係 在0伏特以下居中。3 and 4 show an alternative memory system for memory system 200. Figure 3 shows a similar function to the functions of Figure 1, where V D =0 and the threshold voltage below V D represents a logic 0 and the voltage above V D represents a logic 1. Instead of displaying a single voltage V D , the threshold voltage is divided into two different ranges, where the threshold voltages are indicated by the actual number of voltages. The function corresponding to logic "1" is centered above 0 volts, while the function corresponding to logic "0" is centered below 0 volts.
圖4顯示一記憶體系統421,其使用一與記憶體系統200之資料儲存程序類似的資料儲存程序(使用相同輸入資料位元與ECC位元),而具有一不同讀取程序。特定言之,代替簡單決定一臨界電壓是否高於或低於一特定值的係,記憶體系統421讀取臨界電壓,如圖3所示。將明白不必讀取實際臨界電壓。可使用其他單元操作之構件來儲存與擷取資料(例如電流感測)。電壓感測僅用作一範例。一般而言,臨界電壓指一電晶體開啟之一閘極電壓。圖4顯示一讀取發生,其比先前範例提供更詳細的資訊。此可視為一比圖2之讀取具有一更高解析度(及一解析超過用於程式化之狀態之解析度)之讀取。如先前範例,錯誤發生於讀取資料中。此處,對應於第二位元及第三位元之讀數出錯。第二位元及第三位元係邏輯"0"並係藉由程式化一單元以具有一小於VD 之臨界電壓來儲存,但該等單元係讀取為具有臨界電壓0.05伏特及0.10伏特,其係高於VD (VD =0伏特)。4 shows a memory system 421 that uses a data storage procedure similar to the data storage program of the memory system 200 (using the same input data bits and ECC bits) with a different read procedure. Specifically, instead of simply determining whether a threshold voltage is above or below a certain value, the memory system 421 reads the threshold voltage as shown in FIG. It will be understood that it is not necessary to read the actual threshold voltage. Other unit operated components can be used to store and retrieve data (eg, current sensing). Voltage sensing is only used as an example. In general, the threshold voltage refers to a gate voltage at which a transistor is turned on. Figure 4 shows that a read occurs, which provides more detailed information than the previous examples. This can be seen as a read that has a higher resolution than the read of Figure 2 (and a resolution that exceeds the resolution for the stylized state). As in the previous example, the error occurred in the read data. Here, the reading corresponding to the second bit and the third bit is erroneous. The second and third byte logic "0" is stored by staging a cell to have a threshold voltage less than V D , but the cells are read to have a threshold voltage of 0.05 volts and 0.10 volts. , which is higher than V D (V D =0 volts).
藉由一系列讀取操作從圖4之記憶體陣列423讀取的原始電壓係傳送至一調變/解調變單元427中之一解調變器425。該等原始電壓具有藉由該類比至數位轉換之解析度所指示之一有限解析度。此處,原始資料係轉換成概率資料。特定言之,將各單元讀數轉換成一對應位元係一或零之概率。來自該記憶體陣列之該系列讀數(0.75、0.05、0.10、0.15、1.25、1.0、3.0及0.5伏特)不僅可指示單元之 狀態,而且還可用於提供關於該狀態的一確定程度。此可表示為使用一特定位元程式化一記憶體單元之一概率。因而,接近0伏特之讀數可提供低概率值,而愈遠離0伏特之讀數提供愈高概率值。所示概率值係對數概率比(以下所詳細解釋)。此對於在一邏輯0狀態之單元提供負數,而對於在一邏輯1狀態之單元提供正數,數字量值指示正確識別狀態之概率。第二概率值及第三概率值(0.1、0.2)指示邏輯"1"。第二值及第三值指示相當低的概率。The original voltage read from the memory array 423 of FIG. 4 by a series of read operations is transferred to one of the modulation/demodulation unit 427 demodulation transformers 425. The raw voltages have a finite resolution as indicated by the resolution of the analog to digital conversion. Here, the original data is converted into probability data. In particular, the probability of converting each unit reading into a corresponding bit system of one or zero. The series of readings from the memory array (0.75, 0.05, 0.10, 0.15, 1.25, 1.0, 3.0, and 0.5 volts) not only indicate the unit State, and can also be used to provide a certain degree of certainty about the state. This can be expressed as a probability of staging a memory cell using a particular bit. Thus, readings near 0 volts provide a low probability value, while the farther away from 0 volts provides a higher probability value. The probability values shown are log probability ratios (explained in detail below). This provides a negative number for a unit in a logic 0 state and a positive value for a unit in a logic 1 state, the digital value indicating the probability of correctly identifying the state. The second probability value and the third probability value (0.1, 0.2) indicate a logical "1". The second and third values indicate a relatively low probability.
將概率值傳送至一ECC單元431中之一解碼器429(在一些情況下,從原始值獲得概率值可視為在該解碼器內執行)。ECC單元431還包括編碼器432。該解碼器429對概率值執行解碼操作。此一解碼器可視為一軟輸入解碼器。一般而言,軟輸入係指一輸入,其包括關於要解碼資料之某品質資訊。提供作為一軟輸入之額外資訊一般允許一解碼器獲得更佳結果。一解碼器可使用一軟輸入來執行解碼計算以提供計算概率值作為一輸出。此係視為一軟輸出且此一解碼器係視為一軟輸入軟輸出(SISO)解碼器。此輸出可接著再次用作對該SISO解碼器之輸入以反覆進行該解碼並改良結果。一SISO解碼器可形成一更大解碼器之部分,該更大解碼器提供一硬輸出至另一單元。SISO解碼器一般提供較佳效能且在一些情況下可提供比硬輸入硬輸出解碼更佳的效能。特定言之,對於相同附加項量(ECC位元之數目),一SISO解碼器可提供更大的錯誤校正能力。為有效率地使用一SISO解碼器,可實施一適當編碼/解碼方案, 且解調變係調適成用以有效率地獲得一軟輸入,而沒有過多複雜性且不需要過多時間用於從記憶體陣列讀取資料。The probability value is passed to one of the decoders 429 in an ECC unit 431 (in some cases, obtaining the probability value from the original value can be considered to be performed within the decoder). The ECC unit 431 also includes an encoder 432. The decoder 429 performs a decoding operation on the probability value. This decoder can be viewed as a soft input decoder. In general, soft input refers to an input that includes some quality information about the data to be decoded. Providing additional information as a soft input generally allows a decoder to achieve better results. A decoder can perform a decoding calculation using a soft input to provide a calculated probability value as an output. This is considered a soft output and this decoder is considered a soft input soft output (SISO) decoder. This output can then be used again as input to the SISO decoder to repeat the decoding and improve the results. A SISO decoder can form part of a larger decoder that provides a hard output to another unit. SISO decoders generally provide better performance and in some cases provide better performance than hard input hard output decoding. In particular, for the same amount of additional items (the number of ECC bits), a SISO decoder can provide greater error correction capabilities. In order to efficiently use a SISO decoder, an appropriate encoding/decoding scheme can be implemented. And the demodulation system is adapted to efficiently obtain a soft input without undue complexity and without undue time for reading data from the memory array.
在一具體實施例中,用於一SISO解碼器之一軟輸入係藉由使用一解析度在一非揮發性記憶體陣列中讀取資料來提供,該解析度解析比用於程式化該記憶體之狀態更大數目的狀態。因而,可藉由將一記憶體單元程式化至兩個臨界電壓範圍之一者來寫入資料並隨後藉由解析三個或更多臨界電壓範圍來讀取。一般而言,用於讀取之臨界電壓範圍之數目將係用於程式化之臨界電壓範圍之數目的數倍(例如,多達兩倍)。然而,並非永遠為該情況。In one embodiment, a soft input for a SISO decoder is provided by reading data in a non-volatile memory array using a resolution that is used to program the memory. The state of the body is a greater number of states. Thus, data can be written by staging a memory cell to one of two threshold voltage ranges and then read by parsing three or more threshold voltage ranges. In general, the number of threshold voltage ranges for reading will be a multiple of the number of programmed threshold voltage ranges (eg, up to two times). However, this is not always the case.
一ECC單元可形成為一專用電路或此功能可由一控制器中的韌體來執行。一般而言,一控制器係一特定應用積體電路(ASIC),其具有設計用於特定功能(例如ECC)之電路並還具有韌體來管理控制器操作。因而,一編碼器/解碼器可藉由記憶體控制器中之一硬體及韌體組合來形成。或者,一編碼器/解碼器(ECC單元)可位於該記憶體晶片上。該等調變/解調變單元可能在一記憶體晶片上、在一控制器晶片上、在一分離晶片或某組合上。一般而言,一調變/解調變單元將包括該記憶體晶片上之至少某些組件(例如連接至一記憶體陣列之周邊電路)。儘管圖4指示臨界電壓係讀取至一高解析度(一類比讀取),但所選擇之解析度程度可能取決於若干因素,包括所使用的非揮發性記憶體之類型。An ECC unit can be formed as a dedicated circuit or this function can be performed by a firmware in a controller. In general, a controller is an application specific integrated circuit (ASIC) that has circuitry designed for a particular function (eg, ECC) and also has firmware to manage controller operation. Thus, an encoder/decoder can be formed by a combination of hardware and firmware in the memory controller. Alternatively, an encoder/decoder (ECC unit) can be located on the memory chip. The modulation/demodulation transformer units may be on a memory wafer, on a controller wafer, on a separate wafer or some combination. In general, a modulation/demodulation unit will include at least some components of the memory chip (e.g., peripheral circuits connected to a memory array). Although Figure 4 indicates that the threshold voltage is read to a high resolution (an analog reading), the degree of resolution selected may depend on several factors, including the type of non-volatile memory used.
圖5顯示ECC單元431(尤其係解碼器429)的更詳細視圖。 解碼器429包括一SISO解碼器532與一軟硬轉換器534。SISO解碼器一般接受原始概率資料並在該原始概率資料上執行ECC計算以提供計算概率資料。該計算概率資料可視為一軟輸出。在許多情況下,接著提供此類軟輸出作為對該SISO解碼器之一輸入,使得執行一第二解碼反覆過程。一SISO解碼器可執行連續反覆過程,直至獲得至少一預定條件。例如,一預定條件可能係所有位元均具有一大於一特定最小值之概率。一預定條件還可以係概率值之一集合(例如一平均概率值)。一預定條件可能係從一反覆過程至下一反覆過程之結果之收斂(即保持反覆過程,直至幾乎不存在從額外反覆過程之改良)。一預定條件可以係完成預定數目次反覆過程。還可使用此等條件之組合。解碼係使用資料中之一編碼圖案來執行,該圖案係在儲存資料之前藉由編碼器432在資料上執行編碼之結果。編碼器432與解碼器429兩者皆係視為ECC單元431之部分。Figure 5 shows a more detailed view of ECC unit 431 (especially decoder 429). The decoder 429 includes a SISO decoder 532 and a soft and hard converter 534. The SISO decoder typically accepts raw probability data and performs an ECC calculation on the original probability data to provide computational probability data. The calculated probability data can be viewed as a soft output. In many cases, such a soft output is then provided as one of the inputs to the SISO decoder such that a second decoding iterative process is performed. A SISO decoder can perform a continuous iterative process until at least a predetermined condition is obtained. For example, a predetermined condition may be that all bits have a probability greater than a certain minimum. A predetermined condition may also be a set of one of the probability values (eg, an average probability value). A predetermined condition may converge from the result of a repetitive process to the next iterative process (i.e., the repetitive process is maintained until there is little improvement from the additional repetitive process). A predetermined condition may be to complete a predetermined number of iterations. A combination of these conditions can also be used. The decoding is performed using one of the code patterns in the material, which is the result of the encoding performed on the data by the encoder 432 prior to storing the data. Both encoder 432 and decoder 429 are considered part of ECC unit 431.
有效率的解碼取決於具有一適當編碼/解碼方案。已知各種方案係用於以適合於隨後以一SISO解碼器(例如SISO解碼器532)解碼之一方式來編碼資料。編碼/解碼方案包括但不限於渦輪碼、產品碼、BCH碼、李德-所羅門碼(Reed-Solomon codes)、迴旋碼(參見美國專利申請案第11/383,401號與第11/383,405號)、漢明碼及低密度同位檢查(LDPC)碼。LDPC碼與渦輪碼及其可如何與SISO解碼一起使用的詳細說明係提供於2006年9月28日申請的標題分別為"非揮發性記憶體之軟輸入軟輸出解碼器"與"非揮發性記憶體之 軟輸入軟輸出解碼的方法"的美國專利申請案第11/536,286號與第11/536,327號中。Efficient decoding depends on having an appropriate encoding/decoding scheme. Various schemes are known for encoding data in a manner suitable for subsequent decoding in a SISO decoder (e.g., SISO decoder 532). Encoding/decoding schemes include, but are not limited to, turbo codes, product codes, BCH codes, Reed-Solomon codes, and convolutional codes (see U.S. Patent Application Serial Nos. 11/383,401 and No. 11/383,405). Hamming code and low density parity check (LDPC) code. A detailed description of how LDPC codes and turbo codes can be used with SISO decoding is provided on September 28, 2006, entitled "Soft Input Soft Output Decoders for Non-Volatile Memory" and "Non-Volatile Memory The method of soft input soft output decoding is described in U.S. Patent Application Serial Nos. 11/536,286 and 11/536,327.
在某些情況下,可關於藉由一ECC解碼器實施之校正來收集統計。可將此類統計用於調整一記憶體陣列之操作參數。2006年9月28日申請的美國專利申請案第11/536,347號與第11/536,372號說明具有調整的操作參數之非揮發性記憶體系統及用於調整此類參數的方法。In some cases, statistics may be collected regarding corrections implemented by an ECC decoder. Such statistics can be used to adjust the operational parameters of a memory array. Non-volatile memory systems with adjusted operating parameters and methods for adjusting such parameters are described in U.S. Patent Application Serial Nos. 11/536,347 and 11/536,372, filed on Sep. 28, 2006.
在某些記憶體陣列中,個別記憶體單元保持一個以上資料位元。此類多層單元(MLC)記憶體將資料位元映射至記憶體狀態。例如,在一快閃記憶體中,可將兩個以上資料位元映射至記憶體狀態,每一狀態具有一指派的臨界電壓範圍。圖6顯示三個資料位元係儲存於一記憶體單元的範例。該等三個資料位元要求八個(23 )不同的記憶體狀態。一般而言,資料係以頁為單位予以程式化至一MLC單元,其中一單元中之各位元來自一不同頁。因而,在圖6中,最低位元636(最低有效位元或LSB)處於一頁中,中間位元638處於另一頁中而最高位元640(最高有效位元或MSB)處於另一頁中。位元至記憶體狀態的映射可依據任一方便的方案。In some memory arrays, individual memory cells maintain more than one data bit. Such multi-level cell (MLC) memory maps data bits to memory states. For example, in a flash memory, more than two data bits can be mapped to a memory state, each state having an assigned threshold voltage range. Figure 6 shows an example in which three data bits are stored in a memory unit. These three data bits require eight ( 23 ) different memory states. In general, data is programmed into an MLC unit on a page-by-page basis, where each element in a unit comes from a different page. Thus, in Figure 6, the lowest bit 636 (least significant bit or LSB) is in one page, the middle bit 638 is in another page and the highest bit 640 (most significant bit or MSB) is in another page. in. The mapping of bit to memory states can be based on any convenient scheme.
圖7A顯示將一記憶體單元之臨界電壓映射至十六個不同記憶體狀態S0至S15以儲存四個資料位元的範例。與圖6之範例不同,此處位元係映射至記憶體狀態使得該LSB針對相鄰狀態而不同。其他位元亦在相鄰狀態之間不同。在一範例中,該LSB首先係解碼並用於解碼更高的位元。因為 一特定記憶體狀態之LSB不同於其鄰近者,故決定該LSB有助於在相鄰狀態之間解析。Figure 7A shows an example of mapping the threshold voltage of a memory cell to sixteen different memory states S0 through S15 to store four data bits. Unlike the example of Figure 6, the bit map here is mapped to the memory state such that the LSB differs for neighboring states. Other bits are also different between adjacent states. In an example, the LSB is first decoded and used to decode higher bits. because The LSB of a particular memory state is different from its neighbors, so it is decided that the LSB helps resolve between adjacent states.
圖7B顯示相鄰記憶體狀態S5(1010)與S6(1001)之間的區別電壓Vreadn。額外讀取電壓V1至V6係用於提供記憶體狀態S5與S6內的額外解析度。圖7B顯示對應單元臨界電壓之四個讀數的四個不同臨界電壓讀數A至D。可將此類讀數用於提供一軟輸入用於軟輸入解碼。相鄰狀態S5與S6在兩個最低有效位元之兩者中不同。在一單元係讀取為具有一特定臨界電壓之處,此指示四個位元。然而,若該讀取電壓中存在一錯誤使得該讀取電壓對應於另一狀態,則一個以上位元(在此範例中係四個之多)可能係錯誤的並可能要求校正。在某些情況下,各頁係分離地經受ECC校正,各錯誤位元要求分離校正使得一單一錯讀狀態可能要求分離地校正四個錯誤。Figure 7B shows the difference voltage Vreadn between adjacent memory states S5 (1010) and S6 (1001). Additional read voltages V1 through V6 are used to provide additional resolution within memory states S5 and S6. Figure 7B shows four different threshold voltage readings A through D for four readings of the cell threshold voltage. Such readings can be used to provide a soft input for soft input decoding. Adjacent states S5 and S6 differ in both of the two least significant bits. Where a unit is read to have a particular threshold voltage, this indicates four bits. However, if there is an error in the read voltage such that the read voltage corresponds to another state, more than one bit (four in this example) may be erroneous and may require correction. In some cases, each page is separately subjected to ECC correction, and each error bit requires separation correction such that a single misread state may require four errors to be corrected separately.
在校正儲存資料之一替代方法中,一位元之校正可提供接著用於儲存於相同單元中的其他位元之校正的資訊。例如,可將一單元讀取為具有一臨界電壓讀數B,其指示記憶體狀態S5(1010),使得該LSB(第一位元)會係0而下一位元會係1。當在該LSB上執行ECC校正(例如在包含LSB之頁上執行校正)時,該ECC校正可指示LEB為1。給出B接近Vreadn而該LSB為1,該程式化的狀態很可能係S6(1001)。此指示該第二位元可能為0而非1。因而,在該LSB上執行的ECC校正之結果指示該第二位元之一可能值。僅基於該單元的臨界電壓,該第二位元會係錯誤地決定為1。然 而,該ECC校正的LSB指示該第二位元很可能為0。可將此關於該第二位元的額外資訊提供給決定該第二位元之一ECC解碼器。該額外資訊可允許包含一更高數目之錯誤的資料之解碼或可允許具有一更小數目之冗餘位元的解碼。同樣,可將解碼該第二位元的結果用於解碼一第三位元及更高位元。In an alternative method of correcting stored data, the one-bit correction can provide information for subsequent corrections for other bits stored in the same unit. For example, a cell can be read to have a threshold voltage reading B that indicates the memory state S5 (1010) such that the LSB (first bit) will be zero and the next bit will be one. When an ECC correction is performed on the LSB (eg, performing a correction on a page containing the LSB), the ECC correction may indicate that the LEB is one. Given that B is close to Vreadn and the LSB is 1, the stylized state is likely to be S6 (1001). This indicates that the second bit may be 0 instead of 1. Thus, the result of the ECC correction performed on the LSB indicates one of the possible values of the second bit. Based on the threshold voltage of the cell alone, the second bit is erroneously determined to be one. Of course However, the ECC corrected LSB indicates that the second bit is likely to be zero. Additional information about the second bit can be provided to the ECC decoder that determines the second bit. This additional information may allow for decoding of a higher number of erroneous data or may allow for decoding with a smaller number of redundant bits. Similarly, the result of decoding the second bit can be used to decode a third bit and higher.
在一範例中,在一單元包含一個以上資料位元之處,首先解碼一第一位元(以及其他單元中之其他編碼位元)並將此解碼之結果用於提供針對至少一隨後位元之一指示。在一方案中,使用一高確定程度來校正一第一位元並將此校正結果用於決定該單元中的額外位元。可使用不同的冗餘位準來編碼不同頁中之資料使得即使其包含大量錯誤仍可以校正至少一頁。一旦一第一頁係校正,便可將結果用於校正儲存於相同單元中的額外頁。該等額外頁不必需要相同的冗餘位準,因為第一資料頁的校正提供關於額外頁之位元的額外資訊。圖7A與7B之方案顯示位元至記憶體狀態之一適合映射使得解碼該LSB為解碼更高位元提供資訊。In an example, where a unit contains more than one data bit, a first bit (and other coded bits in other units) is first decoded and the result of the decoding is used to provide for at least one subsequent bit. One indication. In one arrangement, a high degree of certainty is used to correct a first bit and the result of the correction is used to determine additional bits in the unit. Different redundancy levels can be used to encode the data in different pages so that at least one page can be corrected even if it contains a large number of errors. Once a first page is corrected, the results can be used to correct additional pages stored in the same unit. These extra pages do not necessarily require the same redundancy level because the correction of the first data page provides additional information about the bits of the extra page. The scheme of Figures 7A and 7B shows that one of the bit-to-memory states is suitable for mapping such that decoding the LSB provides information for decoding higher bits.
圖8A顯示映射至一記憶體單元之四個位元842、844、846及848的圖7A之十六個記憶體狀態S0至S15。該等四個位元分別係來自四個不同頁(頁0至3)的842、844、846及848。可藉由使用一特定解析度決定其臨界電壓來讀取該記憶體單元。例如,該臨界電壓可處於指示該記憶體狀態為S7之一臨界電壓範圍內。在某些情況下,某些機率資訊 還在如前所述的讀取期間獲得某一機率資訊。從此單元及其他單元之頁0讀取的資訊係傳送至一ECC解碼器(例如一SISO解碼器),其中一第一ECC操作產生對應於該等單元之LSB的校正資料位元。例如,可決定該LSB 842為1,故狀態S7不正確。可將此資訊用於解碼更高的位元844、846及848。Figure 8A shows the sixteen memory states S0 through S15 of Figure 7A mapped to four bits 842, 844, 846 and 848 of a memory cell. The four bits are 842, 844, 846, and 848 from four different pages (pages 0 through 3), respectively. The memory cell can be read by determining its threshold voltage using a particular resolution. For example, the threshold voltage can be within a threshold voltage range indicating that the memory state is S7. In some cases, some chance information A certain probability information is also obtained during the reading as described above. Information read from page 0 of the unit and other units is passed to an ECC decoder (e.g., a SISO decoder), wherein a first ECC operation produces corrected data bits corresponding to the LSBs of the units. For example, it can be determined that the LSB 842 is 1, so the state S7 is incorrect. This information can be used to decode higher bits 844, 846, and 848.
因為該LSB為1,故可將所有具有一0作為LSB 842的記憶體狀態從決定該第二位元之考量消除,如圖8B所示。此意味著剩餘的八個狀態(S0、S2、S4、S6、S8、S10、S12、S14)可視為比初始的十六個狀態S0至S15具有更大的容限(可擴展映射至剩餘狀態之臨界電壓範圍以佔據消除的狀態的範圍)。可將該單元之臨界電壓與剩餘狀態之擴展臨界電壓範圍相比較。由於增加的容限所致,此提供獲得一正確結果的更高機率。因而,先前指示狀態S7的臨界電壓讀數現可指示狀態S8,因為S7係消除。一第二ECC操作針對頁1之位元產生校正資料位元。該第二ECC操作受益於在頁0之位元上之第一ECC操作之結果以使其可能不需要同樣高的冗餘位準。在圖8B之範例中,透過ECC解碼決定儲存於該單元中的頁1之位元844為1。此接著係用於決定下一位元846。Since the LSB is 1, all memory states having a 0 as the LSB 842 can be eliminated from the decision to determine the second bit, as shown in Fig. 8B. This means that the remaining eight states (S0, S2, S4, S6, S8, S10, S12, S14) can be considered to have a larger tolerance than the initial sixteen states S0 to S15 (expandable mapping to the remaining state) The threshold voltage range is in the range that occupies the eliminated state). The threshold voltage of the cell can be compared to the extended threshold voltage range of the remaining state. This provides a higher chance of achieving a correct result due to increased tolerance. Thus, the threshold voltage reading of the previously indicated state S7 can now indicate state S8 because S7 is eliminated. A second ECC operation generates a corrected data bit for the bit of page 1. This second ECC operation benefits from the result of the first ECC operation on the bit of page 0 such that it may not require the same high redundancy level. In the example of FIG. 8B, the bit 844 of page 1 stored in the cell is determined to be 1 by ECC decoding. This is used to determine the next bit 846.
圖8C顯示當決定該等兩個最低有效位元842與844為1時的剩餘狀態(S0、S4、S8、S12)。因為特定狀態係消除,故針對剩餘狀態該容限係增加。例如,對應於S7之一臨界電壓讀數會指示S8,假定S5至S7於此點係消除。因而,解 碼該等兩個最低有效位元842與844的結果提供幫助獲得下一位元846的資訊。基於增加的容限來執行解碼並針對頁2之位元846來獲得1。Figure 8C shows the remaining states (S0, S4, S8, S12) when it is determined that the two least significant bits 842 and 844 are one. Since the specific state is eliminated, the tolerance is increased for the remaining state. For example, a threshold voltage reading corresponding to S7 would indicate S8, assuming that S5 to S7 are eliminated at this point. Thus, solution The results of the two least significant bits 842 and 844 of the code provide information to help obtain the next bit 846. Decoding is performed based on the increased margin and 1 is obtained for bit 846 of page 2.
圖8D顯示當決定頁2之位元846為1時的剩餘狀態(S0、S8)。可看出剩餘狀態(S0至S8)具有寬廣的容限,其允許以一較高機率決定該MSB 848。接著,解碼此一決定之結果以獲得針對MSB 848之一校正值。例如,在該臨界電壓指示狀態S7之處,給定剩餘狀態,S8係最可能狀態而MSB 848最可能為0。Fig. 8D shows the remaining state (S0, S8) when the bit 846 of the decision page 2 is set to 1. It can be seen that the remaining states (S0 to S8) have a wide tolerance which allows the MSB 848 to be determined at a higher probability. Next, the result of this decision is decoded to obtain a correction value for one of the MSBs 848. For example, where the threshold voltage indicates state S7, given the remaining state, S8 is the most likely state and MSB 848 is most likely to be zero.
可針對該第一ECC解碼操作使用軟輸入或硬輸入來實施以上範例。隨後的ECC操作接收軟輸入,因為在該ECC解碼中考量從讀取該記憶體單元接收之資料與來自稍早ECC解碼之資料兩者。在一範例中,使用一解析度讀取一記憶體單元,該解析度解析程式化的記憶體狀態並還在該等程式化的記憶體狀態內解析以提供相對於儲存於該記憶體單元中之位元的機率值。在此一範例中,可依據解碼更低位元之結果來調整對應更高位元的機率值。此提供在一第二ECC解碼操作中使用一第一ECC解碼操作之結果的另一方式。針對剩餘狀態調整容限或針對剩餘位元調整機率係用於將來自解碼一更低位元之資訊併入一更高位元之決定的不同技術。The above examples may be implemented using soft input or hard input for this first ECC decoding operation. Subsequent ECC operations receive soft input because both the data received from reading the memory unit and the data from earlier ECC decoding are considered in the ECC decoding. In one example, a memory unit is read using a resolution that resolves the stylized memory state and is also parsed within the stylized memory states to provide for storage in the memory unit. The probability value of the bit. In this example, the probability value corresponding to the higher bit can be adjusted according to the result of decoding the lower bit. This provides another way to use the result of a first ECC decoding operation in a second ECC decoding operation. Adjusting the tolerance for the remaining state or adjusting the probability for the remaining bits is a different technique for incorporating the decision to decode a lower bit of information into a higher bit.
圖9A顯示使用一第一頁之ECC校正來提供針對一隨後頁之ECC校正的軟輸入之一記憶體系統950之一部分的範例。一記憶體陣列952包括八個記憶體單元C0至C7,各記 憶體單元儲存四個資料位元,一位元來自四頁P0至P3之各頁。儲存於頁P0至P3中的資料在儲存之前係編碼。特定言之,P0中之資料係編碼以使其可以係分離地解碼。Figure 9A shows an example of a portion of a soft input memory system 950 that provides ECC correction for a subsequent page using ECC correction of a first page. A memory array 952 includes eight memory cells C0 to C7, each record The memory unit stores four data bits, one element from each of the four pages P0 to P3. The data stored in pages P0 to P3 is encoded prior to storage. In particular, the data in P0 is encoded so that it can be decoded separately.
一解調變器954係連接至該記憶體陣列而該解調變器之一輸出係提供為對一ECC解碼器956之輸入955。該解調變器956可包括適合的讀取電路來使用至少足夠的解析度決定個別記憶體單元之臨界電壓以識別一程式化的記憶體狀態。針對一第一ECC解碼模組ECC0提供該解調變器954之輸出。該解調變器954之輸出可以係位元(硬輸入)、機率值(軟輸入)、臨界電壓或其他記憶體單元狀態之指示器。ECC0解碼儲存於頁P0中的資料。此可以係硬輸入硬輸出解碼或SISO解碼。一般而言,SISO解碼提供更佳的結果。模組ECC0提供校正資料P0',其可以係一組機率值或與儲存於頁P0中之位元相關聯的校正位元。校正資料P0'係用於提供來自該ECC解碼器956之一第一輸出O/P0 ,即來自頁P0的解碼資料。可藉由執行一軟至硬轉換(若P0'係一軟輸出)並還在將資料儲存於該記憶體陣列952之前剝離作為編碼資料之部分添加的任何冗餘資料位元來產生該輸出O/P0 。A demodulation transformer 954 is coupled to the memory array and an output of the demodulation transformer is provided as an input 955 to an ECC decoder 956. The demodulation transformer 956 can include suitable read circuitry to determine the threshold voltage of the individual memory cells using at least sufficient resolution to identify a stylized memory state. The output of the demodulation transformer 954 is provided for a first ECC decoding module ECC0. The output of the demodulator 954 can be an indicator of a bit (hard input), a probability value (soft input), a threshold voltage, or other state of the memory cell. ECC0 decodes the data stored in page P0. This can be hard input hard output decoding or SISO decoding. In general, SISO decoding provides better results. Module ECC0 provides correction data P0', which may be a set of probability values or correction bits associated with the bits stored in page P0. The correction data P0' is used to provide a first output O/P 0 from the ECC decoder 956, i.e., decoded data from page P0. The output O can be generated by performing a soft-to-hard transition (if P0' is a soft output) and also stripping any redundant data bits added as part of the encoded data before storing the data in the memory array 952. /P 0 .
校正資料P0'係提供為對一第二ECC模組ECC1之一輸入,其解碼儲存於頁P1中之資料。模組ECC1接收藉由ECC0產生之校正資料P0'並還接收來自該解調變器954之一輸入958。來自該解調變器954之輸入958可以係一組機率值或基於讀取該記憶體陣列952的位元。該校正P0'資料與 該解調變器輸入958之組合可以係視為形成對模組ECC1之一軟輸入。例如,在ECC0提供建議頁P1之一位元為1的硬輸出但來自該解調變器954之輸入958建議該位元為0之處,此等可以係組合以提供1或0之一低概率。在ECC0與來自該解調變器954之輸入958兩者皆建議為1之處,此等可以係組合為1之一高概率。在提供機率值之處,可將其以一適合方式(例如藉由平均機率值)加以組合。ECC模組ECC1基於來自ECC0之輸入與來自該解調變器954之輸入958的組合來實施解碼以提供校正資料P1'。可將校正資料P1'用於提供輸出O/P1 (來自頁P1之解碼資料),其係移除任何冗餘資料位元之一硬資料。還將校正資料P1'提供給另一ECC模組(ECC2)。The calibration data P0' is provided as input to one of the second ECC modules ECC1, which decodes the data stored in the page P1. The module ECC1 receives the correction data P0' generated by ECC0 and also receives an input 958 from the demodulation transformer 954. Input 958 from the demodulation transformer 954 can be a set of probability values or based on reading a bit of the memory array 952. The combination of the corrected P0' data and the demodulation transformer input 958 can be considered to form a soft input to the module ECC1. For example, ECC0 provides a hard output with a bit of 1 on the suggestion page P1 but input 958 from the demodulation transformer 954 suggests that the bit is 0, which may be combined to provide a low of 1 or 0. Probability. Where both ECC0 and input 958 from the demodulation transformer 954 are suggested to be 1, these may be combined to a high probability of one. Where probability values are provided, they may be combined in a suitable manner (e.g., by an average probability value). The ECC module ECC1 performs decoding based on the combination of input from ECC0 and input 958 from the demodulation transformer 954 to provide correction data P1'. The correction data P1' can be used to provide an output O/P 1 (decoded data from page P1) which removes one of the redundant data bits. The correction data P1' is also supplied to another ECC module (ECC2).
ECC模組ECC2接收P1'並還接收來自該解調變器954之輸入960,並在此等輸入之組合上執行ECC解碼以如前所述提供校正資料P2'。可將校正資料P2'用於提供輸出O/P2 (來自頁P2之解碼資料),其係移除冗餘資料位元之一硬輸出。接著,將校正資料P2'傳遞至ECC模組ECC3,其中其與來自該解調變器954之輸入962組合以決定校正資料P3',其對應於儲存於頁P3中之資料。可將校正資料P3'用於提供輸出O/P3 (來自頁P3之解碼資料),其係移除冗餘資料位元之一硬資料。The ECC module ECC2 receives P1' and also receives input 960 from the demodulation transformer 954 and performs ECC decoding on the combination of such inputs to provide correction data P2' as previously described. The correction data P2' can be used to provide an output O/P 2 (decoded data from page P2) which removes one of the redundant data bits from the hard output. Next, the calibration data P2' is passed to the ECC module ECC3, where it is combined with the input 962 from the demodulation transformer 954 to determine the calibration data P3', which corresponds to the data stored in page P3. The correction data P3' can be used to provide an output O/P 3 (decoded data from page P3) which removes one of the redundant data bits.
ECC模組ECC1至ECC3可以係任一適合類型並可使用類似編碼方案或不同編碼方案。ECC1可接收一硬輸入或一軟輸入並可使用硬輸入硬輸出解碼、SISO解碼或其他技術 來實施解碼。ECC模組ECC1至ECC3各接收兩個輸入,兩個輸入之各輸入可以係一軟輸入或一硬輸入。即使兩個輸入皆係硬輸入,其在組合上仍可以係視為提供一軟輸入。The ECC modules ECC1 to ECC3 may be of any suitable type and may use similar coding schemes or different coding schemes. ECC1 can accept a hard input or a soft input and can use hard input hard output decoding, SISO decoding or other techniques To implement decoding. Each of the ECC modules ECC1 to ECC3 receives two inputs, each of which can be a soft input or a hard input. Even if both inputs are hard inputs, they can still be considered as providing a soft input in combination.
在其他範例中,可一起編碼與解碼頁。例如,可一起解碼一第一頁與一第二頁。隨後,可讀取一第三頁與一第四頁並可將解碼該等第一與第二頁之結果用於解碼該等第三與第四頁。In other examples, pages can be encoded and decoded together. For example, a first page and a second page can be decoded together. Subsequently, a third page and a fourth page can be read and the results of decoding the first and second pages can be used to decode the third and fourth pages.
圖9B顯示可用於ECC模組ECC1至ECC3之一ECC模組964的第一範例。兩個輸入966、968係提供至該ECC模組964,藉由一解調變器提供之一輸入968反映從一記憶體陣列讀取之資料而藉由一先前ECC模組提供之另一輸入968解碼儲存於相同記憶體單元中之另一資料。該等兩個輸入966、968係提供至一組合電路970,其基於該等兩個輸入966、968產生一單一輸出972。例如,可藉由一先前ECC模組來提供增加的容限並可藉由一解調變器來提供一臨界電壓。此等係在該組合電路970中組合以提供一軟輸出。在一解調變器提供機率值之處,可組合來自該解調變器與先前ECC模組之機率值以提供一組合值,即該等機率值之平均。可藉由在該等兩個硬輸入相同之處指派一高機率與在該等兩個硬輸入不同之處指派一低機率來組合硬輸入。該組合電路970可使用一查詢表或其他適合構件來提供取決於該等兩個輸入之一輸出。接著,將藉由該組合電路產生之軟輸出972傳送至一SISO解碼器974,其執行一或多次反覆過程以決定輸出機率值(或輸出位元,若執行軟至硬 轉換)。FIG. 9B shows a first example of an ECC module 964 that may be used for one of the ECC modules ECC1 through ECC3. Two inputs 966, 968 are provided to the ECC module 964, and one input 968 is provided by a demodulator to reflect data read from a memory array and another input provided by a previous ECC module. 968 decodes another material stored in the same memory unit. The two inputs 966, 968 are provided to a combination circuit 970 that produces a single output 972 based on the two inputs 966, 968. For example, an increased tolerance can be provided by a prior ECC module and a threshold voltage can be provided by a demodulation transformer. These are combined in the combining circuit 970 to provide a soft output. Where a demodulator provides a probability value, the probability values from the demodulation transformer and the previous ECC module can be combined to provide a combined value, that is, an average of the probability values. The hard input can be combined by assigning a high probability that the two hard inputs are the same and assigning a low probability to the difference between the two hard inputs. The combinational circuit 970 can use a lookup table or other suitable component to provide an output that depends on one of the two inputs. Next, the soft output 972 generated by the combining circuit is transmitted to a SISO decoder 974, which performs one or more iterative processes to determine the output probability value (or output bit, if performing soft to hard Conversion).
圖9C顯示具有一組合電路978之一替代性ECC模組976,該組合電路組合來自一解調變器之一輸入978與來自另一ECC模組之一輸入980以提供一軟輸出982,如前所述。在此情況下,接著藉由一軟至硬轉換器986將該軟輸出982轉換成一硬輸出984(最大可能位元係提供為該輸出)。該硬輸出984接著係提供至一硬輸入硬輸出(HIHO)解碼器988,其解碼該資料以提供校正資料。或者,可一起執行組合與軟至硬轉換,例如使用針對不同輸入值(硬或軟)提供硬輸出值之一查詢表。Figure 9C shows an alternative ECC module 976 having a combination circuit 978 that combines input 978 from one of the demodulators with input 980 from one of the other ECC modules to provide a soft output 982, such as As mentioned before. In this case, the soft output 982 is then converted to a hard output 984 by a soft to hard converter 986 (the largest possible bit is provided as the output). The hard output 984 is then provided to a hard input hard output (HIHO) decoder 988 that decodes the data to provide correction data. Alternatively, combining and soft to hard conversions can be performed together, for example using a lookup table that provides one of the hard output values for different input values (hard or soft).
解碼器模組ECC0僅接收一輸入955(來自該解調變器),其可以係一軟或一硬輸入而解碼器ECC0可產生一軟或一硬輸出。例如,可類似於圖5之解碼器429來形成模組ECC0。ECC0至ECC3可如圖9B或圖9C所示。ECC模組ECC0至ECC1可以係形成為分離電路或可以係形成為一單一電路,其係經組態用以執行連續ECC操作。在一範例中,該等ECC模組係形成為一控制器ASIC之部分。The decoder module ECC0 receives only one input 955 (from the demodulation transformer), which can be a soft or a hard input and the decoder ECC0 can produce a soft or a hard output. For example, module ECC0 can be formed similar to decoder 429 of FIG. ECC0 to ECC3 can be as shown in FIG. 9B or FIG. 9C. The ECC modules ECC0 through ECC1 may be formed as separate circuits or may be formed as a single circuit configured to perform continuous ECC operations. In one example, the ECC modules are formed as part of a controller ASIC.
如上所述,可以分離的解碼步驟來解碼不同頁。解碼一第一頁之結果係提供以幫助解碼一第二頁。可提供解碼該第二頁之結果以幫助解碼一第三頁等等。為實現頁之分離解碼,可分離地編碼各頁。藉由解碼該第一頁所提供之額外資訊,可允許使用更少冗餘位元來執行該第二頁之解碼。依據一範例,針對不同頁提供不同數目之ECC位元。可針對一第一頁提供大量的冗餘位元以允許大量錯誤之校 正。因為由於解碼該第一頁所致與該第二頁之位元相關聯的更寬廣容限(或更高機率),可針對一第二頁提供更小量的冗餘位元。可將具有不同冗餘程度之不同編碼方案用於不同頁。一般而言,用於一記憶體系統的可定址單元係一區段。在一範例中,一區段係儲存以使其延伸於一MLC記憶體中之一頁以上。可將使用不同數目之冗餘位元的不同ECC方案用於相同區段的不同頁。As described above, separate decoding steps can be used to decode different pages. The result of decoding a first page is provided to aid in decoding a second page. The result of decoding the second page can be provided to help decode a third page and the like. To achieve separate decoding of pages, each page can be encoded separately. By decoding the additional information provided by the first page, decoding of the second page can be performed using fewer redundant bits. According to an example, different numbers of ECC bits are provided for different pages. A large number of redundant bits can be provided for a first page to allow for a large number of errors positive. Because of the wider tolerance (or higher probability) associated with the bits of the second page due to decoding of the first page, a smaller amount of redundant bits can be provided for a second page. Different coding schemes with different degrees of redundancy can be used for different pages. In general, the addressable unit for a memory system is a segment. In one example, a segment is stored such that it extends over one page of an MLC memory. Different ECC schemes using a different number of redundant bits can be used for different pages of the same segment.
圖10顯示儲存於單元中使得個別單元包含一單一區段之四個位元(位元0至位元3)的八個區段(區段0至7)。區段0至7係一起程式化作為對應於位元0至3之四頁。在位元係如圖7A所示分配給記憶體狀態之處,可預期頁0將係讀取為具有大量錯誤,頁1具有比頁0少的錯誤,頁2具有比頁1少的錯誤,而頁3具有比頁2少的錯誤。此係因為針對愈高頁之愈大容限(或機率)。此意味著針對愈低頁可能需要愈多錯誤校正,尤其係頁0。可相應地選擇所使用編碼方案,包括冗餘資料量。術語"頁"一般係用於表示一記憶體陣列中之一程式化單位。可使用一MLC方案來將多個頁儲存於相同單元中。在此處呈現的特定範例中,一起儲存於一單元群組中的所有頁係一起讀取並且不執行一頁之個別讀取。因而,用於此一系統的最小讀取單位可由多個頁組成。將明白,術語"頁"表示一起程式化的橫跨一單元群組處於相同有效性之一位元群組,而非可以係一特定記憶體系統中作為一單位一起讀取的位元群組。Figure 10 shows eight segments (segments 0 through 7) stored in a cell such that the individual cells contain four bits (bit 0 to bit 3) of a single segment. Sections 0 through 7 are stylized together as four pages corresponding to bits 0 through 3. Where the bit system is assigned to the memory state as shown in FIG. 7A, it can be expected that page 0 will be read as having a large number of errors, page 1 has fewer errors than page 0, and page 2 has fewer errors than page 1. Page 3 has fewer errors than page 2. This is because the greater the tolerance (or probability) for the higher the page. This means that the more error corrections may be needed for lower pages, especially page 0. The coding scheme used, including the amount of redundant data, can be selected accordingly. The term "page" is generally used to mean a stylized unit in a memory array. An MLC scheme can be used to store multiple pages in the same unit. In the particular example presented herein, all pages stored together in a group of cells are read together and no individual reads of one page are performed. Thus, the minimum read unit for this system can consist of multiple pages. It will be understood that the term "page" means a stylized group of bits that are in the same validity across a group of cells, rather than a group of bits that are read together as a unit in a particular memory system. .
圖11A顯示橫跨四頁(頁0至3)延伸並包括兩個不同編碼 方案之一區段1190的範例。頁0與頁1中的資料係使用一LDPC編碼方案予以編碼,其產生冗餘資料位元1192。可使用SISO解碼來解碼此資料,其允許大量錯誤的校正。頁2與3中的資料未使用一LDPC碼來編碼。然而,頁2至3的資料係使用一BCH碼加以編碼,其提供冗餘資料位元1194。亦可使用BCH編碼來編碼頁0至1的資料,或可將BCH編碼限制於頁2至3。在BCH編碼覆蓋頁0至1之處,首先依據BCH編碼來編碼頁0至4的資料,接著依據LDPC編碼進一步編碼頁0至1。稍後,首先使用LDPC來解碼頁0至1中之資料,接著使用BCH來解碼頁0至4。Figure 11A shows an extension across four pages (pages 0 to 3) and includes two different encodings An example of a section 1190 of one of the scenarios. The data in pages 0 and 1 is encoded using an LDPC encoding scheme that produces redundant data bits 1192. This material can be decoded using SISO decoding, which allows for a large number of erroneous corrections. The data in pages 2 and 3 are not encoded using an LDPC code. However, the pages 2 through 3 are encoded using a BCH code that provides redundant data bits 1194. The BCH code can also be used to encode the data of pages 0 to 1, or the BCH code can be limited to pages 2 to 3. Where the BCH code covers pages 0 to 1, the data of pages 0 to 4 is first encoded according to the BCH code, and then the pages 0 to 1 are further encoded according to the LDPC code. Later, LDPC is first used to decode the data in pages 0 through 1, and then BCH is used to decode pages 0 through 4.
圖11B顯示僅依據一LDPC碼來編碼頁0之一區段1195的另一範例,故僅頁0包含冗餘LDPC產生位元1196。更高頁1至3係使用一BCH碼予以編碼,其使用BCH產生冗餘位元1198。BCH編碼可延伸至除頁1至3之外還覆蓋頁0,或可僅覆蓋頁1至3。因而,依據不用於其他頁之一編碼方案來編碼頁0。FIG. 11B shows another example of encoding a sector 1195 of page 0 based on only one LDPC code, so only page 0 contains redundant LDPC generation bits 1196. Higher pages 1 through 3 are encoded using a BCH code that uses the BCH to generate redundant bits 1198. The BCH code can be extended to cover page 0 in addition to pages 1 to 3, or can only cover pages 1 to 3. Thus, page 0 is encoded in accordance with an encoding scheme that is not used for one of the other pages.
圖11C顯示不同編碼方案係用於各頁0至3之一區段1199的另一範例。依據一第一編碼方案針對頁0產生冗餘資料ECCA ,依據一第二編碼方案針對頁1產生冗餘資料ECCB ,依據一第三編碼方案針對頁2產生冗餘資料ECCC 並依據一第四編碼方案針對頁3產生冗餘資料ECCD 。頁0比其他頁具有更多的冗餘資料ECCA ,使得頁0係首先解碼並用於提供解碼其他頁之資訊。針對不同頁之編碼方案可以係相同類型(例如全部LDPC方案)或不同類型(例如LDPC與BCH方 案)。相同類型之方案在其使用不同冗餘資料數量之處可以係視為不同方案。在某些情況下,更高頁之編碼方案亦可覆蓋更低頁。因而,ECCB可覆蓋頁0與1以使得此等頁係依據該第二編碼方案一起解碼。ECCC可覆蓋頁0至2以使得此等頁係依據該第三編碼方案一起解碼等等。此類頁亦必須係一起編碼。Figure 11C shows another example of a different coding scheme for one of the pages 1 to 99 of each page 0 to 3. Generating redundant data ECC A for page 0 according to a first coding scheme, generating redundant data ECC B for page 1 according to a second coding scheme, and generating redundant data ECC C for page 2 according to a third coding scheme and according to one The fourth coding scheme generates redundant data ECC D for page 3. Page 0 has more redundant material ECC A than the other pages, so that page 0 is first decoded and used to provide information for decoding other pages. The coding scheme for different pages may be of the same type (eg, all LDPC schemes) or different types (eg, LDPC and BCH schemes). The same type of scheme can be considered as different schemes when it uses different amounts of redundant data. In some cases, higher page encoding schemes can also cover lower pages. Thus, the ECCB can cover pages 0 and 1 such that the pages are decoded along with the second encoding scheme. The ECCC may cover pages 0 through 2 such that the pages are decoded together according to the third encoding scheme and the like. Such pages must also be coded together.
儘管圖11A至11C之範例顯示冗餘資料與其他資料分離,但在其他方案中可將未編碼資料以如前所述之更複雜方式映射至編碼資料。與未編碼資料相比較用於編碼資料的額外位元之數目可以係視為冗餘位元之數目,即使在不存在可分離識別的冗餘位元之處。以上範例之頁3中顯示標頭資訊1101。然而,亦可將標頭資訊提供於其他位置。Although the examples of Figures 11A through 11C show that redundant data is separated from other data, in other aspects uncoded data can be mapped to encoded data in a more sophisticated manner as previously described. The number of extra bits used to encode the data compared to the uncoded material can be considered as the number of redundant bits, even where there are no detachably identified redundant bits. Header information 1101 is displayed on page 3 of the above example. However, header information can also be provided in other locations.
圖12顯示針對不同頁使用不同編碼方案之一記憶體系統1203的範例。特定言之,該記憶體系統顯示一編碼器1205,其將LDPC編碼應用至某些資料並將BCH編碼應用至其他資料(在其他範例中,BCH編碼應用於所有資料而LDPC編碼僅應用於某些資料)。該經編碼資料接著係傳送至一調變器1207,其將資料儲存於一記憶體陣列1208中。特定言之,調變器1207將LDPC編碼的資料儲存於一第一頁中並將BCH編碼的資料儲存於相同記憶體單元中之更高頁中。該調變器依據一適合方案(例如圖7A之方案)將資料位元映射至記憶體狀態,使得一第一位元(第一頁中之一位元)從一記憶體狀態替換至下一記憶體狀態。Figure 12 shows an example of a memory system 1203 using one of different coding schemes for different pages. In particular, the memory system displays an encoder 1205 that applies LDPC encoding to certain data and applies BCH encoding to other data (in other examples, BCH encoding is applied to all data and LDPC encoding is applied only to some Some information). The encoded data is then passed to a modulator 1207 which stores the data in a memory array 1208. In particular, the modulator 1207 stores the LDPC encoded data in a first page and stores the BCH encoded data in a higher page in the same memory unit. The modulator maps the data bits to the memory state according to a suitable scheme (such as the scheme of FIG. 7A), so that a first bit (one bit in the first page) is replaced from one memory state to the next. Memory status.
資料係藉由一解調變器1209從該記憶體陣列讀取並係提 供至一解碼器1211,其在來自頁0之資料上實施LDPC解碼並在來自其他頁之資料上實施BCH解碼。來自LDPC解碼器1215之一輸出1213係提供至該BCH解碼器1217使得該BCH解碼器1217可使用藉由該LDPC解碼器1215之校正來幫助執行BCH解碼。還可存在某種從一BCH解碼操作之一隨後BCH解碼操作之輸出。The data is read and extracted from the memory array by a demodulator 1209. It is supplied to a decoder 1211 which performs LDPC decoding on the material from page 0 and performs BCH decoding on the material from other pages. An output 1213 from LDPC decoder 1215 is provided to the BCH decoder 1217 such that the BCH decoder 1217 can use the correction by the LDPC decoder 1215 to assist in performing BCH decoding. There may also be some sort of output from a BCH decoding operation followed by a BCH decoding operation.
在某些情況下,來自一BCH解碼器之輸出亦係回授至LDPC解碼器以用於LDPC解碼。例如,LDPC解碼可以係反覆式解碼,其執行若干反覆過程並接著將一輸出提供至該BCH解碼器。若該BCH解碼器不能校正所提供資料,則其可將一信號返回至該LDPC解碼器來指示應執行更多反覆過程。In some cases, the output from a BCH decoder is also fed back to the LDPC decoder for LDPC decoding. For example, LDPC decoding may be repeated decoding, which performs a number of iterative processes and then provides an output to the BCH decoder. If the BCH decoder is unable to correct the provided data, it can return a signal to the LDPC decoder to indicate that more iterative processes should be performed.
圖13顯示包括一編碼器1321之一記憶體系統1319,該編碼器依據一第一編碼方案在一第一編碼器1323中編碼第一資料並依據一第二編碼方案在一第二編碼器1325中編碼第二資料,該等第一與第二資料係藉由一調變器1329程式化以共用記憶體陣列1327中之單元。資料係藉由一解調變器1331從記憶體陣列1327讀取並藉由解碼器1333予以解碼。依據該第一方案在一第一解碼器1335中解碼對應於第一資料之讀取資料,並依據該第二方案在一第二解碼器1337中解碼對應於第二資料之讀取資料。來自第一解碼器1335之一輸出1339係提供至第二解碼器1337使得可將解碼第一資料之結果用於解碼第二資料。同樣,來自第二解碼器1337之一輸出1341係提供至第一解碼器1335使得可將解碼第二 資料之結果用於解碼第一資料。因而,第一解碼器1335與第二解碼器1337交互作用以共同解碼資料。第一與第二編碼方案可係LDPC方案,其在一範例中具有不同的冗餘資料量。在另一範例中,該第一編碼方案係一LDPC方案而該第二編碼方案係一BCH方案。13 shows a memory system 1319 including an encoder 1321 that encodes a first data in a first encoder 1323 in accordance with a first encoding scheme and a second encoder 1325 in accordance with a second encoding scheme. The second data is encoded, and the first and second data are programmed by a modulator 1329 to share the cells in the memory array 1327. The data is read from the memory array 1327 by a demodulation transformer 1331 and decoded by the decoder 1333. According to the first scheme, the read data corresponding to the first data is decoded in a first decoder 1335, and the read data corresponding to the second data is decoded in a second decoder 1337 according to the second scheme. The output 1339 from the first decoder 1335 is provided to the second decoder 1337 such that the result of decoding the first data can be used to decode the second material. Similarly, an output 1341 from the second decoder 1337 is provided to the first decoder 1335 such that the second decoding can be performed. The result of the data is used to decode the first data. Thus, the first decoder 1335 interacts with the second decoder 1337 to collectively decode the material. The first and second coding schemes may be LDPC schemes, which in one example have different amounts of redundant data. In another example, the first coding scheme is an LDPC scheme and the second coding scheme is a BCH scheme.
上述各種範例參照快閃記憶體。然而,各種其他非揮發性記憶體目前在使用中且本文所述技術可應用於任一適當非揮發性記憶體系統。此類記憶體系統可包括(但不限於)基於鐵電儲存器(FRAM或FeRAM)之記憶體系統、基於磁阻儲存器(MRAM)之記憶體系統及基於相變(PRAM或"OUM"("相變化記憶體"))之記憶體。The various examples above refer to flash memory. However, various other non-volatile memory are currently in use and the techniques described herein are applicable to any suitable non-volatile memory system. Such memory systems may include, but are not limited to, ferroelectric memory (FRAM or FeRAM) based memory systems, magnetoresistive memory (MRAM) based memory systems, and phase change based (PRAM or "OUM" ( "phase change memory")) memory.
本文參照之所有專利、專利申請案、文章、書籍、說明書、其他公開案、文件及事物由於所有目的全部以引用方式併入本文中。在任何併入之公開案、文件或事物與本文件之正文間之一術語之定義或使用之任何不一致或衝突之範圍內,應優先採用該術語在本文件中之定義或使用。All patents, patent applications, articles, books, descriptions, other publications, documents, and articles herein are hereby incorporated by reference in their entirety for all purposes. In the event of any inconsistency or conflict between the definition or use of a term between any incorporated publication, document or thing and the body of this document, the definition or use of that term in this document shall prevail.
雖然已就特定較佳具體實施例而說明本發明之各種態樣,但是應明白本發明有權在所附申請專利範圍之全部範疇內受到保護。While the invention has been described with respect to the preferred embodiments thereof, it will be understood that
200‧‧‧記憶體系統200‧‧‧ memory system
201‧‧‧ECC單元201‧‧‧ECC unit
203‧‧‧編碼器203‧‧‧Encoder
205‧‧‧調變/解調變單元205‧‧‧Modulation/demodulation unit
207‧‧‧調變器207‧‧‧ modulator
208‧‧‧第二位元208‧‧‧ second bit
209‧‧‧記憶體陣列209‧‧‧ memory array
211‧‧‧輸入資料位元211‧‧‧Input data bits
213‧‧‧解調變器213‧‧‧Demodulation Transducer
215‧‧‧解碼器215‧‧‧Decoder
421‧‧‧記憶體系統421‧‧‧ memory system
423‧‧‧記憶體陣列423‧‧‧ memory array
425‧‧‧解調變器425‧‧‧Demodulation Transducer
427‧‧‧調變/解調變單元427‧‧‧Modulation/demodulation unit
429‧‧‧解碼器429‧‧‧Decoder
431‧‧‧ECC單元431‧‧‧ECC unit
432‧‧‧編碼器432‧‧‧Encoder
532‧‧‧SISO解碼器532‧‧SISO decoder
534‧‧‧軟硬轉換器534‧‧‧Soft and hard converters
636‧‧‧最低位元636‧‧‧ Lowest bit
638‧‧‧中間位元638‧‧‧ intermediate bits
640‧‧‧最高位元640‧‧‧ highest bit
842‧‧‧位元/LSB842‧‧‧ bits/LSB
844‧‧‧位元844‧‧‧ bits
846‧‧‧位元846‧‧ ‧ bits
848‧‧‧位元/MSB848‧‧‧ bits/MSB
950‧‧‧記憶體系統950‧‧‧ memory system
952‧‧‧記憶體陣列952‧‧‧ memory array
954‧‧‧解調變器954‧‧‧Demodulation Transducer
955‧‧‧輸入955‧‧‧Enter
956‧‧‧ECC解碼器956‧‧‧ECC decoder
958‧‧‧輸入958‧‧‧Enter
960‧‧‧輸入960‧‧‧Enter
962‧‧‧輸入962‧‧‧Enter
964‧‧‧ECC模組964‧‧‧ECC module
966‧‧‧輸入966‧‧‧Enter
968‧‧‧輸入968‧‧‧Enter
970‧‧‧組合電路970‧‧‧Combined circuit
972‧‧‧輸出972‧‧‧ output
974‧‧‧SISO解碼器974‧‧‧SISO decoder
976‧‧‧ECC模組976‧‧‧ECC module
978‧‧‧組合電路978‧‧‧Combined circuit
980‧‧‧輸入980‧‧‧Enter
982‧‧‧軟輸出982‧‧‧Soft output
984‧‧‧硬輸出984‧‧‧hard output
986‧‧‧軟至硬轉換器986‧‧‧Soft to hard converter
988‧‧‧硬輸入硬輸出(HIHO)解碼器988‧‧‧hard input hard output (HIHO) decoder
1190‧‧‧區段Section 1190‧‧‧
1192‧‧‧冗餘資料位元1192‧‧‧Redundant data bits
1194‧‧‧冗餘資料位元1194‧‧‧Redundant data bits
1195‧‧‧區段Section 1195‧‧
1196‧‧‧冗餘LDPC產生位元1196‧‧‧Redundant LDPC generating bits
1198‧‧‧BCH產生冗餘位元1198‧‧‧BCH generates redundant bits
1199‧‧‧區段Section 1199‧‧
1203‧‧‧記憶體系統1203‧‧‧Memory System
1205‧‧‧編碼器1205‧‧‧Encoder
1207‧‧‧調變器1207‧‧‧ modulator
1208‧‧‧記憶體陣列1208‧‧‧Memory array
1209‧‧‧解調變器1209‧‧‧Demodulation transformer
1211‧‧‧解碼器1211‧‧‧Decoder
1213‧‧‧輸出1213‧‧‧ Output
1215‧‧‧LDPC解碼器1215‧‧‧LDPC decoder
1217‧‧‧BCH解碼器1217‧‧‧BCH decoder
1319‧‧‧記憶體系統1319‧‧‧ memory system
1321‧‧‧編碼器1321‧‧‧Encoder
1323‧‧‧第一編碼器1323‧‧‧First encoder
1325‧‧‧第二編碼器1325‧‧‧Second encoder
1327‧‧‧記憶體陣列1327‧‧‧Memory array
1329‧‧‧調變器1329‧‧‧Transformer
1331‧‧‧解調變器1331‧‧‧Demodulation Transducer
1333‧‧‧解碼器1333‧‧‧Decoder
1335‧‧‧第一解碼器1335‧‧‧First decoder
1337‧‧‧第二解碼器1337‧‧‧Second decoder
1339‧‧‧輸出1339‧‧‧ Output
1341‧‧‧輸出1341‧‧‧ Output
圖1顯示在一非揮發性記憶體中程式化至一邏輯1狀態及一邏輯0狀態之單元之臨界電壓之概率函數,包括用於區別邏輯1與邏輯0狀態之一電壓VD 。Figure 1 shows the probability function of the threshold voltage of a unit programmed into a logic 1 state and a logic 0 state in a non-volatile memory, including a voltage V D for distinguishing between a logic 1 and a logic 0 state.
圖2顯示一記憶體系統之組件,其包括一記憶體陣列、 調變器/解調變器電路及編碼器/解碼器電路。Figure 2 shows a component of a memory system including a memory array, Modulator/demodulator circuit and encoder/decoder circuit.
圖3顯示程式化至一邏輯1狀態及一邏輯0狀態之單元之讀取臨界電壓之概率函數,顯示臨界電壓值。Figure 3 shows the probability function of the read threshold voltage of a unit programmed to a logic 1 state and a logic 0 state, showing the threshold voltage value.
圖4顯示一記憶體系統之組件,其包括一記憶體陣列、調變器/解調變器電路及編碼器/解碼器電路,一解調變器提供概率值至一解碼器。4 shows a component of a memory system including a memory array, a modulator/demodulator circuit, and an encoder/decoder circuit, a demodulator providing a probability value to a decoder.
圖5顯示一ECC單元,其具有一軟輸入軟輸出(SISO)解碼器。Figure 5 shows an ECC unit with a soft input soft output (SISO) decoder.
圖6顯示儲存三個資料位元之一記憶體單元之臨界電壓範圍並顯示該等三個位元係如何映射至八個記憶體狀態。Figure 6 shows the threshold voltage range for storing one of the three data bits and showing how the three bit fields map to eight memory states.
圖7A顯示儲存四個資料位元之一記憶體單元之臨界電壓範圍並顯示該等三個位元係如何映射至十六個記憶體狀態以使得相鄰狀態之最低有效位元不同。Figure 7A shows the threshold voltage range for storing one of the four data bits and showing how the three bit fields map to sixteen memory states such that the least significant bits of the adjacent states are different.
圖7B顯示用於讀取圖7A之記憶體單元以針對ECC解碼提供一軟輸入的電壓之範例。Figure 7B shows an example of a voltage used to read the memory cell of Figure 7A to provide a soft input for ECC decoding.
圖8A顯示在決定一第一位元(LSB)中考量的一記憶體單元之十六個記憶體狀態。Figure 8A shows the sixteen memory states of a memory cell considered in determining a first bit (LSB).
圖8B顯示在決定一第二位元中考量的記憶體單元之八個剩餘記憶體狀態,其他八個狀態係由於該第一位元之ECC解碼所致而消除。Figure 8B shows the eight remaining memory states of the memory cells considered in determining a second bit, the other eight states being eliminated due to ECC decoding of the first bit.
圖8C顯示在決定一第三位元中考量的記憶體單元之四個剩餘記憶體狀態,額外四個狀態係由於該第二位元之ECC解碼所致而消除。Figure 8C shows the four remaining memory states of the memory cells considered in determining a third bit, the additional four states being eliminated due to ECC decoding of the second bit.
圖8D顯示在決定一第四位元中考量的記憶體單元之兩個 剩餘記憶體狀態,額外兩個狀態係由於該第三位元之ECC解碼所致而消除。Figure 8D shows two of the memory cells considered in determining a fourth bit. The remaining memory state, the other two states are eliminated due to the ECC decoding of the third bit.
圖9A顯示包括具有解碼四個資料頁的四個ECC模組之一ECC解碼器的一記憶體系統之一部分,由解碼一頁之輸出傳送至一隨後解碼模組,其中其係用於解碼下一資料頁。9A shows a portion of a memory system including an ECC decoder having one of four ECC modules for decoding four data pages, which is transmitted from the output of the decoded page to a subsequent decoding module, where it is used for decoding. A data page.
圖9B顯示可用於圖9A之記憶體系統中的一解碼模組之一範例。Figure 9B shows an example of a decoding module that can be used in the memory system of Figure 9A.
圖9C顯示可用於圖9A之記憶體系統中的一解碼模組之另一範例。Figure 9C shows another example of a decoding module that can be used in the memory system of Figure 9A.
圖10顯示在一記憶體陣列中可如何儲存資料區段以使得一個別區段係使用四頁之各頁中的位元儲存。Figure 10 shows how a data section can be stored in a memory array such that one sector is stored using bits in each of the four pages.
圖11A顯示以四頁儲存的一區段之一範例,兩頁係使用LDPC編碼予以編碼而另兩頁係使用BCH編碼予以編碼。Figure 11A shows an example of a section stored in four pages, two pages encoded using LDPC encoding and the other two pages encoded using BCH encoding.
圖11B顯示以四頁儲存的一區段之一範例,一頁係使用LDPC編碼予以編碼而其他三頁係使用BCH編碼予以編碼。Figure 11B shows an example of a section stored in four pages, one page encoded using LDPC encoding and the other three pages encoded using BCH encoding.
圖11C顯示以四頁儲存的一區段之一範例,各頁係編碼以具有不同的冗餘資料之數量。Figure 11C shows an example of a section stored in four pages, each page being encoded to have a different amount of redundant data.
圖12顯示具有依據一BCH碼來編碼某些資料並使用一LDPC碼來編碼其他資料之一編碼器的記憶體系統,該記憶體系統具有一解碼器,其解碼LDPC編碼的資料並提供由該LDPC解碼之一輸出用於解碼BCH編碼的資料。Figure 12 shows a memory system having an encoder that encodes certain data in accordance with a BCH code and encodes other data using an LDPC code, the memory system having a decoder that decodes and provides LDPC encoded data. One of the LDPC decoding outputs is used to decode the BCH encoded material.
圖13顯示在將資料儲存於記憶體中之前依據兩個不同的編碼方案來編碼儲存於相同記憶體單元中的資料之不同部 分的另一記憶體系統,該資料係使用針對該等兩個方案之兩個解碼器予以解碼,並且來自各解碼器之一輸出係提供至另一解碼器。Figure 13 shows the encoding of different parts of the data stored in the same memory unit according to two different coding schemes before storing the data in memory. Another memory system of the segment, which is decoded using two decoders for the two schemes, and one output from each decoder is provided to the other decoder.
1319‧‧‧記憶體系統1319‧‧‧ memory system
1321‧‧‧編碼器1321‧‧‧Encoder
1323‧‧‧第一編碼器1323‧‧‧First encoder
1325‧‧‧第二編碼器1325‧‧‧Second encoder
1327‧‧‧記憶體陣列1327‧‧‧Memory array
1329‧‧‧調變器1329‧‧‧Transformer
1331‧‧‧解調變器1331‧‧‧Demodulation Transducer
1333‧‧‧解碼器1333‧‧‧Decoder
1335‧‧‧第一解碼器1335‧‧‧First decoder
1337‧‧‧第二解碼器1337‧‧‧Second decoder
1339‧‧‧輸出1339‧‧‧ Output
1341‧‧‧輸出1341‧‧‧ Output
Claims (43)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/556,636 US8001441B2 (en) | 2006-11-03 | 2006-11-03 | Nonvolatile memory with modulated error correction coding |
US11/556,632 US7904780B2 (en) | 2006-11-03 | 2006-11-03 | Methods of modulating error correction coding |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200839503A TW200839503A (en) | 2008-10-01 |
TWI385512B true TWI385512B (en) | 2013-02-11 |
Family
ID=39275803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW96141222A TWI385512B (en) | 2006-11-03 | 2007-11-01 | Method of storing data and decoding data stored in a nonvolatile semiconductor memory array, nonvolatile semiconductor and flash memory systems, and method of managing data in flash memory |
Country Status (2)
Country | Link |
---|---|
TW (1) | TWI385512B (en) |
WO (1) | WO2008057820A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI654615B (en) | 2014-12-18 | 2019-03-21 | 南韓商愛思開海力士有限公司 | Operating method of memory system |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8001441B2 (en) | 2006-11-03 | 2011-08-16 | Sandisk Technologies Inc. | Nonvolatile memory with modulated error correction coding |
US7904780B2 (en) | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of modulating error correction coding |
US8458114B2 (en) | 2009-03-02 | 2013-06-04 | Analog Devices, Inc. | Analog computation using numerical representations with uncertainty |
US8107306B2 (en) | 2009-03-27 | 2012-01-31 | Analog Devices, Inc. | Storage devices with soft processing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279133B1 (en) * | 1997-12-31 | 2001-08-21 | Kawasaki Steel Corporation | Method and apparatus for significantly improving the reliability of multilevel memory architecture |
US6807610B2 (en) * | 2002-11-01 | 2004-10-19 | Silicon Storage Technology, Inc. | Method and apparatus for virtually partitioning an integrated multilevel nonvolatile memory circuit |
CN1201325C (en) * | 2000-03-23 | 2005-05-11 | 索尼公司 | Data reproducing method and appts., and method and/or appts. for reproducing data |
TW200601041A (en) * | 2003-12-30 | 2006-01-01 | Sandisk Corp | Non-volatile memory and method with control data management |
-
2007
- 2007-10-29 WO PCT/US2007/082823 patent/WO2008057820A1/en active Application Filing
- 2007-11-01 TW TW96141222A patent/TWI385512B/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6279133B1 (en) * | 1997-12-31 | 2001-08-21 | Kawasaki Steel Corporation | Method and apparatus for significantly improving the reliability of multilevel memory architecture |
CN1201325C (en) * | 2000-03-23 | 2005-05-11 | 索尼公司 | Data reproducing method and appts., and method and/or appts. for reproducing data |
US6807610B2 (en) * | 2002-11-01 | 2004-10-19 | Silicon Storage Technology, Inc. | Method and apparatus for virtually partitioning an integrated multilevel nonvolatile memory circuit |
TW200601041A (en) * | 2003-12-30 | 2006-01-01 | Sandisk Corp | Non-volatile memory and method with control data management |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI654615B (en) | 2014-12-18 | 2019-03-21 | 南韓商愛思開海力士有限公司 | Operating method of memory system |
Also Published As
Publication number | Publication date |
---|---|
TW200839503A (en) | 2008-10-01 |
WO2008057820A1 (en) | 2008-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001441B2 (en) | Nonvolatile memory with modulated error correction coding | |
US7904780B2 (en) | Methods of modulating error correction coding | |
JP5297380B2 (en) | Statistical unit and adaptive operation in non-volatile memory with soft input soft output (SISO) decoder | |
TWI390533B (en) | Method of managing a flash memory array, method of reading data from a flash memory array, and flash memory system | |
US7805663B2 (en) | Methods of adapting operation of nonvolatile memory | |
US7904783B2 (en) | Soft-input soft-output decoder for nonvolatile memory | |
US7818653B2 (en) | Methods of soft-input soft-output decoding for nonvolatile memory | |
US20080092015A1 (en) | Nonvolatile memory with adaptive operation | |
US7558109B2 (en) | Nonvolatile memory with variable read threshold | |
US7904788B2 (en) | Methods of varying read threshold voltage in nonvolatile memory | |
TWI353521B (en) | Soft-input soft-output decoder for nonvolatile mem | |
US8065583B2 (en) | Data storage with an outer block code and a stream-based inner code | |
US8266495B2 (en) | Systems and methods for performing concatenated error correction | |
US8996950B2 (en) | Erasure correction using single error detection parity | |
US20080294935A1 (en) | Data structure for flash memory and data reading/writing method thereof | |
TWI385512B (en) | Method of storing data and decoding data stored in a nonvolatile semiconductor memory array, nonvolatile semiconductor and flash memory systems, and method of managing data in flash memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |