Source: https://patents.google.com/patent/JP5069127B2/en
Timestamp: 2020-03-29 05:21:27
Document Index: 614429803

Matched Legal Cases: ['art 400', 'art 400', 'Application No. 10', 'art 500', 'art 600', 'art 600', 'art 335', 'art 700', 'art 700', 'art 600', 'art 800', 'art 800', 'art 800', 'art 700', 'art 900', 'art 900']

JP5069127B2 - Method for copying data in a reprogrammable non-volatile memory - Google Patents
Method for copying data in a reprogrammable non-volatile memory Download PDF
JP5069127B2
JP5069127B2 JP2007548357A JP2007548357A JP5069127B2 JP 5069127 B2 JP5069127 B2 JP 5069127B2 JP 2007548357 A JP2007548357 A JP 2007548357A JP 2007548357 A JP2007548357 A JP 2007548357A JP 5069127 B2 JP5069127 B2 JP 5069127B2
JP2007548357A
JP2008524750A (en
トムリン，アンドリュー
2005-12-15 Application filed by サンディスク テクノロジィース インコーポレイテッド filed Critical サンディスク テクノロジィース インコーポレイテッド
2005-12-15 Priority to PCT/US2005/045909 priority patent/WO2006068993A2/en
2008-07-10 Publication of JP2008524750A publication Critical patent/JP2008524750A/en
2012-11-07 Publication of JP5069127B2 publication Critical patent/JP5069127B2/en
The present invention relates to a reprogrammable nonvolatile memory system and its operation, and more particularly to a technique for copying data.
The reprogrammable non-volatile memory products, in particular, San CompactFlash are produced by various vendors including disk Corporation (registered trademark) card (CF), Secure Digital Card (SD), MultiMediaCard (MMC) and Today it is commercially successful and widely available in the form of small factor cards such as memory stick cards. Such cards typically use an array of flash EEPROM (electrically erasable programmable read only memory) memory cells. Flash EEPROM memory cell arrays are typically produced as NOR arrays or NAND arrays.
NOR Array In a typical NOR array, memory cells are connected between adjacent bit line source and drain diffusions extending in the column direction, and control gates are connected to word lines extending along the row of cells. One typical memory cell has an “isolation channel” between the source and drain diffusions. The charge storage element of the cell is disposed on a portion of the channel, and a word line (also referred to as a control gate) is disposed on another channel portion and on the charge storage element. This effectively forms a cell with two transistors in series, one of which (the memory transistor) is a word that controls the amount of charge on the charge storage element and the amount of current that can flow through that portion of the channel. It has a combination with the voltage on the line, the other (select transistor) has only the word line acting as its gate. The word line extends over the row of charge storage elements. Examples of such cells, their use in memory systems, and methods of manufacturing them are described in US Pat. Nos. 5,070,032 (Patent Document 1) and 5,095,344 (Patent Document 2). 5,315,541 (Patent Document 3), 5,343,063 (Patent Document 4), and 5,661,053 (Patent Document 5), and filed on Jan. 27, 1999 Co-pending U.S. patent application Ser. No. 09 / 239,073.
One variation of this isolated channel flash EEPROM cell adds a steering gate disposed between the charge storage element and the word line. Each steering gate of the array extends over one column of charge storage elements perpendicular to the word lines. The effect is that the word line does not have to perform two functions simultaneously when reading or programming a selected cell. These two functions are: (1) acting as the gate of the select transistor, requiring an appropriate voltage to turn the select transistor on and off, and (2) between the word line and the charge storage element. The voltage of the charge storage element is pushed to a desired level through the electric field (capacitance) coupling. It is often difficult to optimally perform both of these functions with a single voltage. By adding a steering gate, the word line only needs to perform function (1), while the added steering gate performs function (2). The use of steering gates in flash EEPROM arrays is described, for example, in U.S. Pat. Nos. 5,313,421 and 6,222,762.
There are various programming techniques for injecting electrons from the substrate into the floating gate storage element through the gate dielectric. A very common programming mechanism is the book “Nonvolatile Semiconductor Memory Technology” edited by Brown and Brewer, IEEE Press, Section 1.2, pages 9-25 (1998) (A Book edited by Brown and Brewer, “Nonvolatile Semiconductor Memory Technology,” described in IEEE Press, section 1.2, pages 9-25 (1998), referred to as the channel “hot electron injection” (section 1.2.3). One approach is to inject electrons from the channel of the cell into the region of the floating gate adjacent to the drain of the cell, and another approach, referred to as “source side injection” (section 1.2.4), is away from the drain. The substrate surface potential is controlled along the length of the memory cell channel so as to create conditions for electron injection in the region of the channel. "EPROM cell with high gate injection efficiency", IEDM Technology Digest, 1982, pages 741-744 (Kamiya et al., "EPROM Cell with High Gate Injection Efficiency," IEDM Technical Digest, 1982, pages 741-744 (Non-Patent Document 2) and U.S. Pat. Nos. 4,622,656 (Patent Document 9) and 5,313,421 (Patent Document 7).
Two approaches for removing charge from charge storage elements to erase memory cells are used in both of the two types of NOR memory cell arrays described above. One is to erase to the substrate by applying appropriate voltages to the source, drain and other gates that allow electrons to pass through the portion of the dielectric layer between the storage element and the substrate by the tunnel effect. Another erase technique is to move electrons from the storage element to the other gate through the tunnel dielectric layer located between them. In the first type cell described above, a third erase gate is provided for that purpose. In the second type cell described above, which already has three gates because of the use of the steering gate, the charge storage element is erased down to the word line without the need to add a fourth gate. This latter approach goes back and adds a second function to be performed by the word line, but these functions are performed at separate times, thus avoiding the need to compromise for the two functions. To do. Regardless of which erase method is used, a large number of memory cells are grouped together so that they are erased “in a moment”. In one approach, the group includes enough memory cells to store the amount of user data stored in the disk sector, ie 512 bytes plus some overhead data. In another approach, each group contains enough cells to hold thousands of bytes of user data equal to the data for multiple disk sectors. Multi-block erase, defect management and other flash EEPROM system functions are described in US Pat. No. 5,297,148.
As is the case with almost all integrated circuit applications, pressure exists for flash EEPROM systems to reduce the silicon substrate area required to implement certain integrated circuit functions. Increasing the amount of digital data that can be stored in a given area of a silicon substrate to increase the storage capacity of a given size memory card and other types of packages, or to increase capacity and reduce size Is often desired. One way to increase the data storage capacity is to store more than one bit of data per memory cell. This is accomplished by dividing the storage element charge level voltage range window into more than two states. By using four such states, each cell can store 2 bits of data, 8 states can store 3 bits per cell, and so on. Multi-state flash EEPROM structures and operations are described in US Pat. Nos. 5,043,940 and 5,172,338.
Another type of memory cell includes two storage elements that can be operated in multiple states in each storage element. In this type of cell, two storage elements are included on the channel between the source and drain diffusions, with a select transistor between them. A steering gate is included along each column of storage elements, and a word line is provided thereon along each row of storage elements. When accessing a given storage element for reading or programming, the steering gate on the other storage element of the cell containing the storage element of interest will cause the channel below the other storage element to Even if a charge level is present, it is raised enough to turn it on. This effectively removes the other storage element as an element when reading or programming the storage element of interest within the same memory cell. For example, the amount of current that flows through a cell that can be used to read its state is a function of the amount of charge on the storage element of interest rather than the other storage element in the same cell. Examples of this cell array structure and operation technique are disclosed in US Pat. Nos. 5,712,180 (Patent Document 13), 6,103,573 (Patent Document 14), and 6,151,248 (Patent Document 15). )It is described in.
One flash EEPROM structure different NAND array using the NAND array, in the array, and 16 or such as 32, each of the bit lines with one series string of more than two memory cells or more select transistors Connected to a reference potential to form a column of cells. A word line extends across the cell in a number of these columns. Individual cells in the column can be programmed during programming by making it difficult to turn on the remaining cells in the string so that the current through the string depends on the level of charge stored in the addressed cell. Read and verify. An example of an array of NAND structures as part of a memory system and its operation are shown in US Pat. Nos. 5,570,315, 5,774,397, and 6, 046,935 (patent document 18).
Current flash EEPROM array charge storage elements, discussed in previously incorporated patents and papers, are most commonly conductive floating gates, usually formed from doped polysilicon material. . Another type of memory cell useful in flash EEPROM systems utilizes a non-conductive dielectric material instead of a conductive floating gate to store charge in a non-volatile manner. Such a cell is described by Chang et al., “True Single Transistor Oxide-Nitride-Oxide EEPROM Device”, IEEE Electronic Device Letters, EDL-8, No. 3, March 1987, 93- 95 (Chan et al., “A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device”, IEEE Electron Device Letters, Vol. EDL-8, No. 3, March 1987, pp. 93-95) Reference 3). A three-layer dielectric (“ONO”) consisting of silicon oxide, silicon nitride and silicon oxide is sandwiched between the conductive control gate and the surface of the semiconductive substrate over the channel of the memory cell. The cell is programmed by injecting electrons from the cell channel into the nitride, where they are trapped and stored in a limited area. This accumulated charge changes the threshold voltage of a portion of the cell's channel in a detectable manner. The cell is erased by injecting hot holes into the nitride. Nozaki et al., “1 Mb EEPROM with MONOS Memory Cells for Semiconductor Disk Applications”, IEEE Solid Circuit Journal, Vol. 26, No. 4, April 1991, pages 497-501 (Nozaki et al., “A 1 See also -Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application, "IEEE Journal of Solid-State Circuits, Vol. 26, No. 4, April 1991, pp. 497-501) (Non-Patent Document 4). This describes a similar cell in an isolated gate configuration in which a doped polysilicon gate extends over a portion of the memory cell channel to form another select transistor.
US Pat. No. 5,851,881 describes the use of two storage elements placed adjacent to each other on the channel of a memory cell, one of which is such a dielectric element. The other is a conductive floating gate. Two bits of data are stored, one in the dielectric element and the other in the floating gate. The memory cell is programmed to one of four different threshold level combinations representing one of the four storage states by programming each of the two gates to one of two different charge level ranges. .
Another approach for storing 2 bits in each cell utilizing a dielectric storage element is Eitan et al., “NROM: Novel Local Trapping, 2 Bit Nonvolatile Memory Cell”, IEEE Electronic Device Letters, Vol. 21, No. 11, November 2000, pp. 543-545 (Eitan et al., “NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell,” IEEE Electron Device Letters, Vol. 21, No. 11, November 2000 , pp. 543-545) (Non-Patent Document 5). An ONO dielectric layer extends across the channel between the source and drain diffusions. The charge for one data bit is localized in the dielectric layer adjacent to the drain, and the charge for the other data bit is localized in the dielectric layer adjacent to the source. Multi-state data storage is obtained by separately reading the binary states of the spatially separated charge storage regions in the dielectric.
Large Erase Block The typical nonvolatile flash array memory cells are divided into separate blocks of cells that are erased together. That is, a block is an erase unit. Each block typically stores more than one page of data, and a page is a unit of programming and reading, but more than one page may be programmed or read in a single operation. Each page normally stores data of one sector or more, and the size of the sector is determined by the host system. An example is a sector of 512 bytes of user data according to an established standard for magnetic disk drives, plus several bytes of overhead information about the user data and / or blocks in which it is stored. .
Sometimes it is necessary to erase a block in order to release a write operation block. In this case, valid pages of data in the block to be erased (original block) are merged and copied to another block (update block) before erasing the original block. This process is called “garbage collection”. During garbage collection, the remaining valid pages of data from the original block are copied from the original block to the update block. When the copy operation is completed, the original block is erased, and then the update block becomes the original block.
Usually, copy operations such as those described above for garbage collection require the involvement of a memory controller. One approach to improving the speed of operations that copy data from one location to another is to reduce the controller's involvement in the copy operation by using a function called on-chip copy. On-chip copy provides a function that allows all data to be transferred to the controller and then read, modified, and written back to memory without returning to memory. On-chip copy provides the functionality to copy data from one location to another in the memory cell array without requiring the data to be transferred to the controller. This technique is described in US Pat. No. 6,266,273 (Patent Document 20) and assigned to SanDisk Corporation, the assignee of the present invention.
The previously identified patents, patent applications, papers and book portions are hereby expressly incorporated by reference in this “Background” section.
US Pat. No. 5,070,032 US Pat. No. 5,095,344 US Pat. No. 5,315,541 US Pat. No. 5,343,063 US Pat. No. 5,661,053 US patent application Ser. No. 09 / 239,073 US Pat. No. 5,313,421 US Pat. No. 6,222,762 U.S. Pat. No. 4,622,656 US Pat. No. 5,297,148 US Pat. No. 5,043,940 US Pat. No. 5,172,338 US Pat. No. 5,712,180 US Pat. No. 6,103,573 US Pat. No. 6,151,248 US Pat. No. 5,570,315 US Pat. No. 5,774,397 US Pat. No. 6,046,935 US Pat. No. 5,851,881 US Pat. No. 6,266,273 US patent application Ser. No. 09 / 793,370 US Pat. No. 5,887,145 US patent application Ser. No. 10 / 846,289 US patent application Ser. No. 10 / 841,379 US Pat. No. 6,345,001 Edited by Brown and Brewer, "Nonvolatile Semiconductor Memory Technology", IEEE Press, Section 1.2, pages 9-25 (1998) A paper by Kamiya et al. "EPROM cell with high gate injection efficiency", IEDM Technology Digest, 1982, pages 741-744. Chang et al., "True Single Transistor Oxide-Nitride-Oxide EEPROM Devices", IEEE Electronic Device Letters, EDL-8, No. 3, March 1987, 93-95. Nozaki et al., "1Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Applications", IEEE Solid Circuit Journal, Vol. 26, No. 4, April 1991, p. 497-501. Eitan et al., "NROM: Novel Local Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electronic Device Letters, Vol. 21, No. 11, November 2000, pages 543-545
In general, the present invention provides methods for data relocation operations in which data is copied from a first storage location of a reprogrammable non-volatile memory system to a second storage location. Data is read from the first location to a register or buffer memory on the memory and then copied directly to the second location or transferred to the system controller where the data can be examined and needed Then it can be corrected based on its associated error correcting code (ECC). In the first aspect of the invention, it is not necessary to check the ECC for each data copy to improve performance. Rather, the ECC can be selectively examined based on predetermined selection criteria. If ECC checking is not selected, the memory is caused to perform an on-chip copy of the data from the first location to the second location, otherwise continue as described above based on whether an ECC error is found. Is done. The predetermined selection criterion may be a sampling mechanism, which may be random based or deterministic.
Another aspect of the present invention can be used in combination with or independently from the first aspect, in which the transfer flag method is employed. A transfer flag value is set based on whether data is transferred to the controller for error detection and correction operations. If the data is transferred to the host and it is determined that error correction is not required, the flag is not set, and if the error correction operation is required and executed successfully, the transfer flag is set. The determination of whether the corrected form of data needs to be returned to memory for copying to the second location is based on the flag value.
In yet another aspect of the invention, when the data consists of a user data portion and a header or overhead portion, each of which has its own associated ECC, the overhead portion error detection and correction operations are performed by the user. It can be processed separately from that of the data part. In an exemplary embodiment, overhead is first transferred to the controller for error detection and correction. If user data should also be processed, it follows. In particular, one example of a sampling mechanism used to determine whether to transfer user data is based on overhead content.
Additional aspects, features and advantages of the present invention are included in the following description of specific exemplary embodiments that should be considered in conjunction with the accompanying drawings.
FIG. 1 is a block diagram of a first non-volatile memory system in which the present invention may be implemented. Although a number of individually addressable memory cells 11 are arranged in a regular array of rows and columns, other physical arrangements of cells are certainly possible. This system is particularly suitable because the array 11 is of the NOR type, as previously described in the background section and in the references incorporated herein by reference. The bit lines, referred to herein as extending along the columns of the array of cells 11, are electrically connected to the bit line decoder / driver circuit 13 through lines 15. The word lines are referred to herein as extending along the rows of the array of cells 11 and are electrically connected through lines 17 to the word line decoder and driver circuit 19. The steering gate extends along the column of memory cells in the array 11 and is electrically connected to the steering gate decoder and driver circuit 21 through line 23. Each of the decoders 13, 19 and 21 receives a memory cell address from the memory controller 27 via the bus 25. This decoder / driver circuit is also connected to the controller 27 via the respective control and status signal lines 29, 31 and 33. The voltage applied to the steering gate and bit line is regulated through a bus 22 that interconnects the decoder and driver circuits 13 and 21. The controller includes various types of registers and other memory including volatile random access memory (RAM) 28.
The controller 27 can be connected to a host device (not shown) through a line 35. The host can be a personal computer, notebook computer, digital camera, audio player, various other handheld electronic devices, and the like. The memory system of FIG. 1 is a card that conforms to one of several existing physical and electrical standards, such as those from PCMCIA, CompactFlash® Association, MMC® Association, and others. In general. When in card format, the end of line 35 is a connector on the card that interfaces with a complementary connector on the host device. The electrical interface of many cards follows the ATA standard, where the memory system appears to the host as if it were a magnetic disk drive. There are other memory card interface standards. As an alternative to the card format, a memory system of the type shown in FIG. 1 may be permanently incorporated into the host device.
In order to perform the programming, reading and erasing functions, the decoder and driver circuits 13, 19 and 21 connect to each line of the array 11 addressed via the bus 25 with a respective control and status line 29, 31. And an appropriate voltage is generated according to the control signal of 33. Status signals including voltage levels and other array parameters are provided by the array 11 to the controller 27 via the same control and status lines 29, 31 and 33. A plurality of sense amplifiers in circuit 13 receive current or voltage levels indicative of the states of the addressed memory cells in array 11 and provide information about those states to controller 27 via line 41 during a read operation. provide. Multiple sense amplifiers are commonly used so that the states of multiple memory cells can be read in parallel. During read and programming operations, one row of cells is normally addressed through circuit 19 at a time to access a certain number of cells in the addressed row selected by circuits 13 and 21. During an erase operation, all the cells in each of the multiple rows are typically addressed together for simultaneous erase as a block.
The operation of the memory system as shown in FIG. 1 is the same as that of the patents and papers previously identified in the NOR Array section of the Background section and other assignments of SanDisk Corporation, the assignee of the present application. And further described in the patent. In addition, US patent application Ser. No. 09 / 793,370, filed Feb. 26, 2001, describes a data programming method. This patent application is incorporated herein by reference in its entirety.
FIG. 2 is a block diagram of another non-volatile memory system in which the present invention may be implemented. The memory cell array 1 includes a plurality of memory cells M arranged in a matrix and is controlled by a column control circuit 2, a row control circuit 3, a c source control circuit 4 and a cp well control circuit 5. The memory cell array 1 may be of the NAND type described previously in the background section and in the references incorporated by reference in its entirety. The control circuit 2 reads the data stored in the memory cell (M), determines the state of the memory cell (M) during the programming operation, and promotes the programming or suppresses the programming of the bit line (BL). In order to control the potential level, it is connected to the bit line (BL) of the memory cell array 1. The row control circuit 3 selects one of the word lines (WL), applies a read voltage, applies a programming voltage combined with a bit line potential level controlled by the column control circuit 2, and selects a memory cell ( M) is connected to the word line (WL) for applying an erase voltage combined with the voltage of the p-type region formed thereon. The c source control circuit 4 controls a common source line (referred to as “c source” in FIG. 2) connected to the memory cell (M). The cp well control circuit 5 controls the cp well voltage.
Data stored in the memory cell (M) is read by the column control circuit 2 and output to the external I / O line via the I / O line and the data input / output buffer 6. Program data to be stored in the memory cell is input to the data input / output buffer 6 via the external I / O line and transferred to the column control circuit 2. The external I / O line is connected to the controller 43. The controller 43 typically includes various types of registers and other memory within volatile random access memory (RAM) 50.
Command data for controlling the flash memory device is input to a command circuit 7 connected to an external control line connected to the controller 43. The command data informs the flash memory what operation is required. The input command is transferred to the state machine 8 that controls the column control circuit 2, row control circuit 3, c source control circuit 4, cp well control circuit 5, and data input / output buffer 6. The state machine 8 can output flash memory status data such as READY / BUSY (ready / busy) or PASS / FAIL (pass / fail). The state machine 8 also includes several registers and other volatile random access memory 45.
The controller 43 is connected to or connectable to a host system such as a personal computer, a digital camera, or a personal digital assistant (PDA). It is the host that initiates commands such as storing data in the memory array 1 or reading data from the memory array 1 and provides or receives such data. The controller converts such commands into command signals that can be interpreted and executed by the command circuit 7. The controller typically also includes a buffer memory for user data that is written to or read from the memory array. A typical memory system includes one integrated circuit chip 47 that includes a controller 43 and one or more integrated circuit chips 49 that each include a memory array and associated control circuitry, input / output circuitry, and state machine circuitry. Of course, the trend is to integrate the system memory array and controller circuitry into one or more integrated circuit chips.
Either of the memory systems of FIGS. 1 and 2 may be incorporated as part of the host system or may be included in a memory card that can be removably inserted into a plug-in socket of the host system. Such a card may encompass the entire memory system, or the controller and memory array may be provided on separate cards with associated peripheral circuitry. Several card embodiments are described, for example, in US Pat. No. 5,887,145. This patent is expressly incorporated herein by reference in its entirety.
FIG. 3 is a block diagram illustrating an exemplary system for copying data having an associated error correction code (ECC) in either of the memory systems of FIGS. FIG. 3 shows the interaction between the controllers 27 and 43 and one block 320 of memory when one page of data is written from one location to another. Memory block 320 includes a plurality of pages at locations 310, 315, 325. The page shown at location 325 shows the contents of a representative page in memory and includes user data 330 and overhead 335. The overhead 335, also referred to as a header, includes a header ECC 340 and data ECC 345. In other embodiments, a single ECC is used to cover both the header and data. Overhead 335 also includes additional data 350 relating to user data or indicating characteristics of the page or block, such as programming voltage, for example. Although the pages of locations 310 and 315 similarly include user data and overhead data, these data are not shown for convenience of illustration.
The data relocation operation consists of moving a unit of data from a first location in memory 320 to a second location, as indicated by arrow 365. In the exemplary embodiment, this moves the page of data from location 1 310 to memory register 390 as indicated by arrow 365a, followed by location 2 315 as indicated by arrow 365b. Consists of. If the data page is not examined, no data is sent to the controller. If the page is to be examined, after transfer to the register, data from one page in the first location 310 is transferred to a buffer or cache (28, 50) in the controller circuit 27, where the ECC circuit An ECC check is performed using 305. Data transfer from the first location in the memory to the controller is indicated by arrow 355. The command / status signals between the controllers 27, 43 and the memory arrays 11, 1 of the system shown in FIGS. 1 and 2, respectively, provide a means for performing transactions and can be implemented, for example, in firmware.
If there is an ECC error, the error is corrected and the corrected data is transferred to the second location 315 in memory as indicated by arrow 360 and then to the second location 315. However, if there is no ECC error, on-chip copy can be performed, thus avoiding the need to write the read data back to the memory from the controller. The on-chip copy operation is indicated by arrows 365a and 365b, and the page residing at location 310 is copied to location 315 in block 320 of memory array 1,11. (Depending on the structure used, there may be several such registers or buffers 390 on the memory, for example, each memory plane has a master-slave configuration for data caching during reads and writes. be able to.)
FIG. 4 is a flowchart 400 illustrating an exemplary copy operation of either one of the memory systems of FIGS. 1 or 2 when copying data having an associated error correction code (ECC). Flowchart 400 illustrates a method for copying data from a first location to a second location in a reprogrammable non-volatile memory of a system that includes memory controllers 27 and 43. The data has an associated error correction code (ECC). ECC is used to correct errors that occur during data transfer in memory.
The copy operation starts at (401) and the data to be copied is read from the first location into the memory register at (405) and then read out to the controller. The data read into the controller includes ECC that is calculated from the data and programmed with them on the same page or elsewhere. In the example system shown in FIG. 3, the ECC is programmed on the same page, but the ECC may be stored elsewhere. The ECC for the read data is inspected at 410 to account for possible ECC errors. At (415), it is determined whether an ECC error has been found. If an ECC error is found, at (425) the error on the read data in the controller is corrected and at (430) the controller writes the corrected data to a second location in memory. Thus, the copy operation is completed in (499). If the error cannot be corrected, the copy operation is interrupted or retried several times before being interrupted. If no ECC error is found, at (420) the memory is caused to copy the data from the first location to the second location. Thus, if there is no ECC error and the data does not require correction, the copy held in memory can be written directly to the second location. This provides the advantage that the controller does not have to be involved in the process of writing data back to memory, thus speeding up the copy operation while maintaining the benefits of examining the ECC.
The present invention has several aspects that further improve the data relocation process. This aspect and various combinations thereof are illustrated in the flowcharts of FIGS. FIG. 5 adds the aspect that the ECC is not examined on every relocation operation, but only on a subset of the relocations. The subset can be determined, for example, on a deterministic or random (or pseudo-random) basis. This eliminates the need to transfer data to the controller for each data set to be relocated. FIG. 6 utilizes the case where separate ECC codes are used for user data and overhead in each sector as shown in FIG. This allows the header ECC and data ECC to be processed separately. FIG. 7 adds several features to FIG. 6 to improve its performance, including the introduction of a flag structure that indicates whether data is transferred from the controller back to the host. FIG. 8 adds a sampling mechanism to the embodiment of FIG. 6 to further improve performance. The sampling mechanism is a modification of the technique of FIG. 5, and the decision whether to inspect the data ECC is made based on sampling. FIG. 9 combines the processes of FIGS. Finally, FIG. 10 is a diagram similar to FIG. 8, but for the case where only a single ECC is used for the entire sector. Thus, FIG. 10 is similar to FIG. 5, but here the decision whether to examine a given data set is based on sampling.
All of the aforementioned relocation methods are implemented by incorporating the technique of US patent application Ser. No. 10 / 846,289 filed May 13, 2004, which is incorporated herein by reference. Further improvements can be made. Further, although various aspects of the present invention are presented with respect to the exemplary flash EEPROM memory shown in FIGS. 1 and 2, those aspects are incorporated herein by reference as of May 7, 2004. The present invention is generally applicable to various nonvolatile memory systems described in U.S. Patent Application No. 10 / 841,379 filed on the same day.
FIG. 5 is a flowchart 500 illustrating an exemplary copy operation of either of the memory systems of FIGS. 1 or 2 when copying data having an associated ECC. This copy operation provides an additional function to determine (535) whether to examine the ECC after reading (405) the data from the first location into the data register. The decision (535) may be made based on predetermined selection criteria. In an exemplary embodiment of the invention, the predetermined selection criterion may be a sampling mechanism. The sampling mechanism can be random based or implemented using a deterministic algorithm. For example, a random-based sampling mechanism can use a random-based algorithm that specifies that the ECC is examined at random intervals. Such random based algorithms are well known. For example, see US Pat. No. 6,345,001. This patent is hereby incorporated by reference in its entirety, in which case such an algorithm is applied to non-volatile memory in a slightly different environment. For deterministic sampling, the sampling mechanism can specify that the ECC is examined, for example, once every four copy operations. Alternatively, the ECC can be checked without exception for all copy operations. Checking ECC on every copy operation provides high reliability and prevents copy errors, but requires a trade-off with respect to speed of execution.
In an exemplary embodiment of the invention, the sampling mechanism may use bits that are available to the system, such as bits and flags included in overhead data 335, for example. In the example shown in FIG. 3, user data ECC and header data ECC are included in overhead data 335, but overhead data 335 also includes portion 350 in addition to ECC. The overhead data portion 350 includes a logical block address (LBA) and a time stamp, and may include various flags such as a data flag, a block type flag, a use specific flag, and a block flag. The LBA includes a page tag and a logical block number (LBN). A page tag indicates a logical page within a block and can be associated with a plane or memory sub-array. The LBN is a field used for associating data in a physical block with its logical block address. This allows the host system to locate and retrieve previously written data. The time stamp indicates the relative age of the data and is associated with the logical block address field. Each time a logical block is assigned to a new physical block, the timestamp for that block is incremented. This value can be used to identify which of the blocks having the same logical block address is the most recently written block. Other information related to the block or page can be used for sampling purposes, including, for example, hot counts and information related to how many times the block needs to be scrubbed. Alternatively, the sampling mechanism may include a tracking mechanism that is not included with the actual data but is stored separately but still associated with the page.
In an exemplary embodiment of the invention, the sampling mechanism compares the last 2 bits of the LBA with the last 2 bits of the time stamp. An ECC test is selected according to the comparison result. In practice, this provides one in four samplings and the ECC is examined in one of four copy operations. This sampling further improves memory performance.
The sampling mechanism used in (535) determines whether to check the ECC associated with the read data. If the determination at (535) indicates that the ECC should not be checked, then at (420) the memory is caused to copy the data from the first location to the second location, so that the copy operation is performed at (599). Complete. If the determination indicates that the ECC should be checked at (535), processing continues at (410), (415), (425), (430) as described above with respect to FIG.
FIG. 6 is a flowchart 600 illustrating an exemplary copy operation of either the memory system of FIG. 1 or 2 when copying data having an associated ECC. In this example, the contents of the first and second locations of the reprogrammable non-volatile memory include user data and header data associated with the user data, where the header data is associated with user data such as, for example, ECC information. Contains information. Although user data ECC and header data ECC may be stored on a page or elsewhere, in this particular example, both user data ECC and header data ECC are shown in FIG. Stored in the overhead part. Although this particular example describes separate header and data ECC, this approach is equally applicable when a single ECC covers both header and data. In the example shown in FIGS. 6-9, the ECC of the header data is tested separately as a preliminary step to determine whether the ECC of the user data deserves a test. An example of how these approaches are applied in the case of a common ECC for headers and data is discussed below with respect to FIG. In the example memory system shown in FIGS. 1 and 2, if the header data is found to have an uncorrectable ECC error, the user data associated with the header data is considered invalid.
The copy operation shown in the flowchart 600 is started at (601), and a read command is issued at (605). A read command is sent to the controllers 27 and 43 to start reading the first location in the memory cell arrays 11 and 1. The contents of the first location can include user data and header data associated with the user data. The controllers 27 and 43 interpret the read command and transfer the header data to the random access memories (RAM) 28 and 50 of the controllers 27 and 43. The controller's RAM is used as a temporary storage location for the contents of the location to be copied. The controller RAM used in this way is also called a scratch pad RAM or SPR.
The header data is examined at (615) to determine if the header data has an ECC error, and if so, at (620) it is determined whether the header data ECC error can be corrected. Is done. If the header data ECC error is not correctable, an indicator is set at (650) to inform the controller that the user data is invalid. An example of such an indicator is a data flag bit that is set or cleared depending on whether user data is valid or invalid. The data flag bit may be included in the overhead part 335 or may be stored elsewhere.
If the header data ECC error can be corrected, it is corrected in (623), and user data is read or transferred to the controller RAM in (625). In a standard on-chip copy operation, user data is not transferred to the controllers 27, 43 but is copied from a first location in the memory array 1, 11 to a second location in the memory array 1, 11. The After a number of on-chip copy operations, the data may contain a number of multi-bit errors over time that cannot be corrected by ECC.
The operation of transferring user data to the controller RAMs 28 and 50 at (625) generates an ECC status relating to the user data. The ECC status check at this point is used to prevent the user data stored in the storage location from being read and copied many times without undergoing an ECC check on the user data.
If an ECC error is found in the user data in (630), it is determined in (635) whether or not the ECC error can be corrected. If the ECC error is not correctable, an indicator is set at (650) to inform the controller that the user data is invalid. As described above, this indicator is a data flag bit used for this purpose. This data bit is set or cleared depending on the status of the user data as valid or invalid (and vice versa).
If the ECC error can be corrected, the user data is corrected in (637) and then transferred to the memory chip in (640) and returned. The controller is allowed to complete the transfer of data (640) back to the memory chip at (640). After the data transfer, a new header is transferred back to the memory chip at (645). The header data is new in the sense that it appears to have been updated as a result of the copy operation. If the ECC error is not correctable in either (620) or (635), the new header will contain the data flag bit set in (650) to indicate the error, so reverse in (645) Copied. This allows the error flag to be stored in the defective sector, so this information is available when the sector is accessed. A new address and write command are issued at (646) prior to completion of the current copy operation at (699).
If it is determined in (630) that no ECC error is found in the user data, the user data is not written back to the memory. One reason for not writing the user data portion back to memory unless an ECC error is found is to take advantage of the on-chip copy operation.
FIG. 7 is a flowchart 700 illustrating an exemplary copy operation of either of the memory systems of FIGS. 1 or 2 when copying data having an associated error correction code (ECC). Flowchart 700 adds to the method shown in flowchart 600, including a retry mechanism for multiple ECC check attempts and a flag set / clear mechanism that indicates when to transfer data back to the memory chip. Functional functions.
The retry mechanism provides a decision point (721) where the retry count is examined. When the header ECC error is not correctable at (620) or when the user data ECC error is not correctable at (635), the determination point (721) is reached. When the total number of retries is exhausted at (721), processing continues at (650) where a data flag bit is set to indicate invalid data. Otherwise, if the total number of retries has not been exhausted, the retry count is incremented at (722) and processing continues at (605) with another read command. The retry count provides for multiple retries when it is determined that the header ECC is uncorrectable. The retry count may be predetermined or may be based on some criteria suitable for the copy operation.
If an ECC error is found in the user data (630), it is determined whether the user data ECC error can be corrected (635). If the ECC error is not correctable, the retry count is checked at (721), and if the total number of retries is exhausted, an indicator is sent at (650) to inform the controller that the data is invalid. Set. The data invalid indicator has been described previously. If it is determined in (635) that the data ECC error can be corrected, the ECC error is corrected in (736), and the data transfer flag is set in (756). The data transfer flag is an indicator that the data is correct and should be transferred back to the memory chip. This data transfer flag may be stored in the controller as one of the code flags, or may be stored elsewhere. A new or updated header is transferred back to the memory chip at (645). Thereafter, at (755), the data transfer flag is checked. If the data transfer flag is set in (755), the data is transferred back to the memory chip in (640). If more than one sector is copied, it is determined in (741) whether there are more sectors to be processed, and if so, the header of the next sector is stored in the controller RAM in (610). Transferred. Thereafter, the next sector is processed as described above. If no more sectors are found in (741), the process ends in (799).
If no data ECC error is found at (630), the data transfer flag is cleared at (757) to indicate that the data should not be transferred back to the memory chip. Clearing the data transfer flag at (757) in a scenario where no data ECC error is found provides performance optimization by not requiring the data to be transferred back to the memory chip. If there is no ECC error in the data, it is likely that the data being copied is likely to be correct in an on-chip copy and that the memory is allowed to copy the data from the first location to the second location. Performance is improved by not involving the controller in the transaction, and instead using the chip to copy data from the first location to the second location on the chip.
FIG. 8 is a flowchart 800 illustrating an exemplary copy operation of either of the memory systems of FIGS. 1 or 2 when copying data having an associated error correction code (ECC). The flowchart 800 adds the feature of continuing to optimize the correctable header and the feature of performing a sampling mechanism to determine whether to check the ECC. These features are described in detail below. In other respects, flowchart 800 includes many of the features of flowchart 700 described above, such as a retry mechanism, but does not include a flag set / clear mechanism that indicates when to transfer data back to the memory chip. . Only the additional features are described in detail. For further information, please refer to the description of FIGS.
If it is determined in (620) that the header ECC error can be corrected, the header ECC is corrected in (723). At this stage, it can be determined to continue optimizing the correctable header at (870). If the header is correctable, it can be assumed that the ECC need not be checked for every single copy operation, and that a sampling mechanism can be utilized to provide optimal performance. If header optimization is selected at (870), the data ECC is not checked during every copy operation, but according to the sampling mechanism described further below. In one variation of the exemplary embodiment, even if the header is not correctable in step (620), the sector may still be able to recover the header so that the data is still in error detection / correction operation. Can be transferred to the controller.
If header optimization is selected at (870), the retry threshold may be checked at (875). This retry threshold is performed at a different processing stage than the retry count discussed with respect to (721) and (722) and may be set to a different number based on what conditions are appropriate. One use of the (875) retry threshold is to optionally prevent header optimization of the copy process in error conditions. The retry threshold may be predetermined or may be based on some criteria appropriate for the copy operation. The retry threshold check at (875) is for determining whether to apply the sampling mechanism at (860). If the retry threshold is exceeded at (875), the sampling mechanism is not selected and processing continues with the transfer of data to the controller RAM at (625).
If the header optimization is selected at (870) and the retry threshold is not exceeded at (875), the sampling mechanism is performed at (860). The sampling mechanism is an example of a predetermined selection criterion that can be used to determine whether to check the ECC for data. The sampling mechanism may be random based or deterministic and is described in more detail in the discussion of FIG.
The result of applying the sampling mechanism is tested and it is determined at (865) whether the data ECC needs to be examined. If it is determined at (865) that the data ECC should be examined, processing continues with the transfer of data to the controller RAM at (625). If the data ECC is not to be examined at (865), the data ECC is not examined in this case, so there is no data transfer to or from the controller memory at (625). If the data ECC needs to be inspected, it is not necessary to transfer the data to the controller.
The remaining processing steps are the same as those described with reference to FIGS.
FIG. 9 is a flowchart 900 illustrating an exemplary copy operation of either of the memory systems of FIGS. 1 or 2 when copying data having an associated error correction code (ECC). The flowchart 900 combines the features of FIGS. 6-8 described above, including a selective on-chip copy operation and a selective ECC check where a sampling mechanism can be used to determine when to perform the ECC check. Provides improved performance. More specifically, this adds the optimization and sampling of steps (860), (865), (870), (875) of FIG. 8 to the flowchart of FIG.
FIGS. 6-9 are all for the case where separate ECC is used for the header and user data. Many of the features introduced in FIGS. 7-9 can also be applied in the case of complex ECC (or when having separate ECC is not utilized). For example, FIG. 10 introduces many of the features found in FIG. 8, but uses only a single ECC.
More specifically, the process starts at (1001), initially at (605) a read command is issued and the retry count is set to zero. A sampling mechanism is used at (860) to determine whether to examine the relocated sector (865). If not, an on-chip copy of the sector is performed and at (741) the process proceeds to another sector if there are others, or ends at (1099) if not. If it is determined that the sector must be examined, both header and user data are transferred from the memory register to the controller at (610) / (625). The rest of the process is the same as (630) in FIG. 8 from (615) / (630) except that the header and user data are handled together instead of handling the header ECC separately. Continue.
Although various aspects of the invention have been described with reference to specific exemplary embodiments, it will be understood that the invention is entitled to protection within the full scope of the appended claims. Previously identified patents, patent applications, papers and book portions are hereby expressly incorporated by reference in this background section.
1 is a block diagram of a first non-volatile memory system in which the present invention may be implemented. FIG. 6 is a block diagram of another non-volatile memory system in which the present invention may be implemented. FIG. 3 is a block diagram illustrating an exemplary system for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. 3 is a flow chart illustrating an exemplary method for copying data having an associated error correction code (ECC) in either of the memory systems of FIG. 1 or 2. FIG. 3 is a flowchart illustrating an exemplary method of copying data having an associated error correction code (ECC) covering both header and data in either the memory system of FIG. 1 or 2.
A memory system comprising a controller portion and a memory portion having a programmable non-volatile memory array , wherein a user data portion having an associated error correction code (ECC) and an overhead portion having another associated error correction code (ECC) data with a method for relocating from a first location of the memory array to a second location of the memory array,
Reading out data from a first location to a register on the memory part,
While maintaining the data in subsequent to the register, without transferring a copy of said user data portion to the controller portion, and transferring a copy of the overhead portion to the controller portion,
And performing error detection and correction operation by the controller portion with respect to the overhead portion, based on the relevant to that E CC of the overhead portion,
When said overhead section Rue error detection and correction operation against the requests correction of the overhead portion, in particular in response and the Rue error detection and correction operation against the overhead unit successfully completed, corrected Subsequently transferring the overhead part back to the register;
After the step of performing error detection and correction operation on the overhead portion, whether or not to perform error detection and correction operation for the previous SL user data unit comprises, determining in the controller portion,
The method of determining is performed without transferring a copy of the user data portion to the controller portion .
Determining whether to perform the error detection and correction operation for the previous SL user data portion,
And transferring in response to the request result determined correction of the overhead portion, while maintaining the data in the register, a copy of the user data portion to the controller portion,
And performing error detection and correction operation by the controller portion for the previous SL user data portion,
Wherein in response to determining not to perform error detection and correction operation on the user data section, how the data from the register further comprises a step of writing to said second location.
And forwarding said response to determining to perform the error detection and correction operation on the user data section, while maintaining the data in the register, a copy of the user data portion to the controller portion,
A method further comprising :
5. A method according to claim 2 or 4 ,
The Rue error detection and correction operation against the user data portion,
Determining whether the user data portion contains an error based on an associated ECC of the user data portion;
A step of said user data portion in response to determining that contains the error, execute a correction operation on the data,
If Rue error correction operation against the user data portion has been completed successfully,
A step of the user data unit is transferred from the controller portion to the memory portion that is revised Tadashisa,
And writing revised Tadashisa the data to the second location,
Be completed well error correction operation is successful for the user data unit, further comprising the step of setting an error flag associated with the data.
The method of claim 7, wherein,
Error flag, the method to be written to the overhead section.
The method according to claim 3 or 4 ,
The method of determining whether to perform error detection and correction operations on the user data portion is a deterministic mechanism.
The method of determining whether to perform an error detection and correction operation on the user data portion is a random base or a pseudo random base.
Determining whether to perform error detection and correction operations on the user data portion is a method based on a sampling mechanism.
It said sampling mechanism is based methods Luo over bar head data related to data.
The sampling mechanism, the method comprising comparing a time stamp associated with the data and logical address information of data.
The method of claim 4 , wherein
As part of the Luz steps to perform the error detection and correction operation, a step of setting a flag value based on whether the data has been corrected,
If flag value to indicate that the data has been corrected is set, and returning to transfer revised Tadashisa the data in the register,
A step of subsequently writing the contents of said register to said second location,
The method of claim 14, wherein,
Data has the E C C that are related,
The error detection and correction operations are :
Determining whether data includes an error based on the ECC to the related,
It includes a step of correcting data, via the use of an ECC that the related,
Flag value, a method which is set in response to the successful completion of the step of the correcting.
The method of claim 15 , wherein
Method steps in response to did not complete successfully, further comprising the step of setting an error flag associated with the data for the correction.
The method of claim 16, wherein,
Data is, and an overhead portion and a user data portion,
Data has an overhead portion having a user data portion and another related ECC with associated ECC,
The step of performing pre-said error detection and correction operation step of transferring Kiko copy,
While maintaining the data in the previous SL register, and transferring a copy of the overhead portion to the controller portion from said register,
In response to the error detection and correction operation with respect to the front SL overhead portion based on the associated ECC overhead portion running in the controller portion, correction operation for the previous SL overhead portion is completed successfully, corrected Transferring the overhead portion back to the register ; and
In response to a successful error detection and correction operation for the previous SL overhead portion,
While maintaining the data in the previous SL register, and transferring a copy of said user data portion to the controller portion from said register,
Comprises the steps of performing error detection and correction operation by the controller portion for the associated SL before on the basis of the ECC user data portion of the user data portion,
Flag value, wherein said user data portion is set based on whether it is correct.
Method for copying data having an associated error correction code (ECC) from a first location to a second location of the memory array of a system comprising a memory controller and a memory portion having a reprogrammable non-volatile memory array there is,
A step of reading the data from said first location in a cache on the memory unit,
The step of determining in the memory controller whether or not to check the ECC based on a predetermined selection criterion, and if the ECC check is not selected , the data is transferred to the system without transferring the data to the memory controller. Copying data from the cache to the second location;
If ECC checking is selected, comprising the steps of checking the ECC on was Desa read data in the memory controller, and
Inspecting the ECC comprises :
If an ECC error is found, the steps of correcting the ECC error on was Desa read data in the memory controller, write the corrected data to the memory controller to a second location of the memory array ,
If an ECC error is found, without transferring the data to the memory controller, the method comprising the steps of: copying the data into the system in the second place from the cache.
The method of claim 19, wherein,
Jo Tokoro selection criteria, the method is the sampling mechanism.
The method of claim 20 , wherein
The sampling mechanism is a random basis.
The method wherein the sampling mechanism is deterministic.
The sampling mechanism is
Comparing a plurality of bits related to the number of logical sectors in the reprogrammable non-volatile memory array with a timestamp to produce a comparison result ;
Selecting a checking the ECC according to comparison result,
The sampling mechanism is based on overhead data associated with data.
The sampling mechanism includes comparing a time stamp associated with data with logical address information of the data.
The method of determining whether to inspect the ECC is a random base or a pseudo-random base.
A method further comprising setting an error flag associated with the data if the error correction was not successfully completed.
The data has a header part and a user data part,
The error flag is written in the header part.
The method of determining whether to inspect the ECC is a deterministic mechanism.
Setting a flag value based on whether the data has been corrected as part of the operation of correcting the ECC error;
If a flag value is set to indicate that the data has been corrected, transferring the corrected data back to the cache; and
Then writing the contents of the cache to the second location;
Correcting the ECC error includes correcting the data read using the associated ECC;
How the flag value is set in response to successful completion of the correction.
The data has a user data part with an associated ECC and an overhead part with another associated ECC;
Checking the ECC and correcting the ECC error
Transferring a copy of the overhead portion from the cache to the memory controller while maintaining data in the cache;
Based on the associated ECC of the overhead part, error detection and correction operations are performed on the overhead part in the memory controller, and in response to successful completion of the correction operation on the overhead part, the corrected overhead Transfer back to the cache, and
In response to successful error detection and correction operations on the overhead portion,
Transferring a copy of the user data portion from the cache to the memory controller while maintaining data in the cache; and
Performing error detection and correction operations on the user data portion based on an associated ECC of the user data portion in the memory controller;
A flag value is set based on whether or not the user data portion is corrected.
JP2007548357A 2004-12-21 2005-12-15 Method for copying data in a reprogrammable non-volatile memory Active JP5069127B2 (en)
JP2008524750A JP2008524750A (en) 2008-07-10
JP5069127B2 true JP5069127B2 (en) 2012-11-07
JP2007548357A Active JP5069127B2 (en) 2004-12-21 2005-12-15 Method for copying data in a reprogrammable non-volatile memory
KR100915650B1 (en) * 2004-12-28 2009-09-04 인터내셔널 비지네스 머신즈 코포레이션 Information recording device, data-flow controller for the device, and control method for the data-flow
WO2008068706A1 (en) * 2006-12-07 2008-06-12 Nxp B.V. Method and device for reconfiguration of reliability data in flash eeprom storage pages
JP3323869B2 (en) 1992-03-31 2002-09-09 株式会社東芝 Nonvolatile semiconductor memory device
JP3897388B2 (en) 1996-12-27 2007-03-22 シャープ株式会社 Serial access semiconductor memory device
DE60043805D1 (en) 1999-04-29 2010-03-25 Nxp Bv Chtung and as a slave device in a bus system
DE60037417D1 (en) 1999-07-28 2008-01-24 Sony Corp Recording system, data recording device, memory device, and data recording method
JP4454896B2 (en) 2001-09-27 2010-04-21 シャープ株式会社 Virtual ground type nonvolatile semiconductor memory device
JP4225749B2 (en) 2002-08-07 2009-02-18 株式会社ルネサステクノロジ Semiconductor memory device
JP4550479B2 (en) 2004-04-30 2010-09-22 ルネサスエレクトロニクス株式会社 Electronic control device and data adjustment method
KR20140035916A (en) 2014-03-24 Non-volatile memory and method having block management with hot/cold data sorting
2012-06-16 A711 Notification of change in applicant