This application is based on and claims the benefit of priority from prior Japanese Patent Application No. 2010-69212, filed on Mar. 25, 2010, the entire contents of which are incorporated herein by reference.
1. Field
Embodiments described herein relate generally to a data memory device and a method of programming data into a data memory device.
2. Description of Related Art
Various types of devices have been proposed as nonvolatile semiconductor memory devices that store data in a memory cell in a nonvolatile manner. Among them, a NAND type flash memory is widely used as a data storage device because it is easy to increase their memory capacity.
The cell array of a NAND type flash memory is constructed as an array of NAND cell units. Each of the NAND cell units includes a plurality of memory cells connected in series. Both ends of each NAND cell unit are connected to a bit line and a source line respectively via select gate transistors.
Control gates of the memory cells in a NAND cell unit are connected to different word lines respectively. In the NAND type flash memory, a plurality of memory cells are connected in series such that they share sources and drains among them and also share select gate transistors as well as a bit line contact and a source line contact of the select gate transistors. Therefore, it is possible to reduce the size of the unit memory cell of the NAND type flash memory. Further, the NAND type flash memory is suitable for shrinking because the shapes of the word lines and of the device area of the memory cells are similar to a simple stripe shape, which contributes to realization of flash memories with a large memory capacity.
Data programming and erasing to the NAND type flash memory are executed by making a FN tunnel current flow through many cells simultaneously. Specifically, an aggregate of memory cells sharing one word line constitute one page or two pages. Then, data programming is executed on a page basis. Data erasing is executed on a block basis where a block is defined by an aggregate of NAND cell units sharing word lines and select gate lines.
Here, repetitive programming and erasing to one memory cell give rise to a problem that the tunnel insulating film of the memory cell gradually degenerates and the reliability of the memory decreases.
Therefore, a stress to be given on a memory cell by a programming voltage and an erasing voltage should be reduced as much as possible. Reduction of a stress on a memory cell increases the reliability of the memory and contributes to prolongation of the life of the memory cell.
A data memory device according to one embodiment of the present invention comprises a memory element array including an array of a plurality of memory elements each capable of storing M-value data (where M is a natural number not smaller than 2), a data storing unit configured to temporarily store data (program data) to be programmed into the memory elements, and a data processing unit configured to execute a data process on the program data. Among first data to M-th data constituting the M-value data, the first data is the data that gives the largest physical impact on the memory cells when programmed.
The data processing unit is configured to be capable of executing a data process on an aggregate of program data stored in the data storing unit as data to be programmed into memory elements included in an aggregate of a plurality of the memory elements. In the data process, it is determined which of the first data to the M-th data is least existing data, the number of pieces of the least existing data being the smallest in the aggregate of the program data.
When the least existing data is other than the first data, each of the least existing data included in the aggregate of program data is replaced with the first data. On the other hand, each of the first data included in the aggregate of program data is replaced with the least existing data.
When the least existing data is the first data, the aggregate of program data is maintained as it is without any data replacement thereon.
Next, the embodiments of the present invention will be explained in detail with reference to the drawings.
First, a nonvolatile device according to a first embodiment of the present invention will be explained with reference to
A host device (hereinafter, referred to as host) 1000 includes software 11 such as an application, an operating system, etc. The software 11 is instructed by a user to program data into a memory card 2000 or read data from the memory card 2000. The software 11 instructs a file system 12 to execute data programming or reading. The file system 12 is a mechanism for managing file data stored in a storage medium as an object of the control management. The file system 12 records management information in a memory area of the memory medium, and manages the file data by using the management information.
The host 1000 includes an SD interface 13. The SD interface 13 is composed of hardware and software necessary for executing interface processes between the host 1000 and the memory card 2000. The host 1000 communicates with the memory card 2000 via the SD interface 13. The SD interface 13 prescribes various rules necessary for the host 1000 and the memory card 2000 to communicate and has various command sets recognizable mutually by the SD interface 13 and by an SD interface 31 of the memory card 2000 to be described later. The SD interface 13 also includes hardware configuration (the arrangement and the number of pins, etc.) that can be connected to the SD interface 31 of the memory card 2000.
The memory card 2000 includes a NAND type flash memory 21 and a controller 22 for controlling the memory 21. The memory card 2000 executes a process corresponding to an access by the host 1000 when it is connected to the host 1000, or when it is first connected to the host 1000 in an OFF state, and then the host 1000 is turned on and finishes an initialization operation with a power source supplied thereto.
The memory 21 stores data in a nonvolatile manner, and has data written thereinto or read out therefrom on the basis of a page composed of a plurality of memory cells. Each page is assigned a physical address unique to the page. The memory 21 has data erased therefrom on the basis of a physical block (erase block) composed of a plurality of pages. In some cases, physical addresses are assigned on the physical block basis.
The controller 22 manages the state of data storage in the memory 21. The management of the state of data storage includes management of information about which physical-address page (or physical block) retains which logical-address data, and management of information about which physical-address page (or physical block) is in an erased state (a state where no data is written therein, or a state where invalid data is stored therein).
The controller 22 includes an SD interface 31, an MPU (Micro Processing Unit) 32, a ROM (Read Only Memory) 33, a RAM (Random Access Memory) 34, and a NAND interface 35.
The SD interface 31 is composed of hardware and software necessary for executing interface processes between the host 1000 and the controller 22. Like the SD interface 13, the SD interface 31 prescribes rules for enabling communication between the host 1000 and the controller 22, has various command sets, and includes hardware configuration (the arrangement and the number of pins, etc.) The memory card 2000 (controller 22) communicates with the host 1000 via the SD interface 31. The SD interface 31 includes a register 36.
The MPU 32 controls the operation of the entire memory card 2000. The MPU 32 loads firmware (a control program) stored in the ROM 33 into the RAM 34 and executes a certain process, when, for example, the memory card 2000 receives power supply. The MPU 32 generates various tables (described later) in the RAM 34 in accordance with the control program, and executes a certain process on the memory 21 in accordance with a command from the host 1000.
The ROM 33 stores the control program and the like to be controlled by the MPU 32. The RAM 34 is used as a work area of the MPU 32, and temporarily stores the control program and various tables. Such tables include a translation table (logical/physical address translation table) for translating a logical address assigned to data by the file system 12 into a physical address of the page that actually stores the data. The NAND interface 35 executes interface processes between the controller 22 and the memory 21.
In correspondence with types of data to be stored, the memory area in the memory 21 includes, for example, a system data area, a confidential data area, a protected data area, a user data area, etc. The system data area is an area secured by the controller 22 in the memory 21 in order to store data necessary for the operation of the controller 22. The confidential data area stores key information used for encryption and confidential data used for authentication, and is inaccessible by the host 1000. The protected data area stores important data and secure data. The user data area is freely accessible and usable by the host 1000, and stores user data such as an AV content file and image data, etc. Where the following explanation uses the term “memory 21” to mean “a memory space” in the memory 21, the term refers to the user data area. The controller 22 secures part of the user data area to store control data (a logical address/physical address correspondence table, etc.) necessary for its operation.
It is not essential for the present memory system that the memory card 2000 includes different chips for the memory and the controller 22 respectively.
The memory card 2000 includes a memory cell array 1 (memory element array) composed of an arrangement of a plurality of memory cells MC (memory elements). As shown in
Among the 1024+q NAND cell units NU, 1024 NAND cell units NU are used for storing effective data mainly supplied by the external host device. Meanwhile, the remaining “q” NAND cell units are used as a memory area for storing parity data described later. The parity data indicates whether data replacement to be described later has been executed or not, and when data replacement has been executed, the type of data that has been the target of data replacement among the M-value data. As will be described later, data replacement is executed in a manner that a physical impact to be given on the memory cells MC can be as small as possible in the whole memory cell array in total, specifically in a manner that as many memory cells MC as possible can be maintained in an erased state.
One block BLK constitutes a unit of a data erasing operation. When one memory cell MC stores two-bit data (two bits per cell), the memory cells MC formed along one word line WL store data amounting to two pages (an upper page UPPER and a lower page LOWER).
As shown in
A sense amplifier circuit 3a used for reading and programming of cell data is disposed at one end side of the bit lines BL, and a row decoder 2 (not illustrated in
A command, an address, and data are input through an IO control circuit 213, and a chip enable signal /CE, a write enable signal /WE, a read enable signal /RE, and other external control signals are input into a logic control circuit 214 and used for timing control. A command is decoded by a command register 8.
A control circuit 6 executes data transfer control and sequence control for programming/erasing/reading. A status register 211 outputs a Ready/Busy status of the memory card 2000 to a Ready/Busy terminal. Aside from this, a status register 212 is prepared that notifies the status (Pass/Fail, Ready/Busy, etc.) of the memory 2000 to the host 1000 via an I/O port.
An address is transferred via an address register 5 to the row decoder (the pre row decoder 2a and the main row decoder 2b) 2 and a column decoder 4. Program data is once stored temporarily in a data register 215 via the I/O control circuit 213 and the control circuit 6, and then subjected to data replacement to be described later. The program data after data replacement is loaded into the sense amplifier circuit 3 (a sense amplifier 3a and a data register 3b) to become the target of programming. Read data is externally output via the control circuit 6.
A high voltage generator 10 is provided for generating a high voltage necessary in accordance with each operation mode. The high voltage generator 10 generates a certain high voltage based on a command issued by the control circuit 6.
The data dividing process unit 216 has a function of dividing “n” number of program data (M-value data) d1, d2, . . . and dn temporarily stored in the data register 215 after supplied by the host 1000 to be programmed into “n” number of memory cells MC arranged along one word line WL in the memory cell array 1 into “m” number of data aggregates Gi (i=1 to m, m<n). Each of the plurality of data aggregates Gi includes plural pieces of M-value data di. The number of pieces of the M-value data di included in each of the aggregates Gi may be different among the aggregates Gi. Though it is preferable that the number of pieces of M-value data di included in each data aggregate Gi be an odd number, no problem will arise with an even number.
The number “m” of the data aggregates Gi is determined by weighing a demand for improving data reliability and reducing a cost per bit.
Where data di is M-value data, given data di is any of the data “0”, . . . , and “M−1”. In the present embodiment, it is assumed that the data “M−1” means data representing an erased state of a memory cell MC. On the other hand, the data “0” means data that will give the largest physical impact on a memory cell MC when it is programmed. In the present embodiment, as the memory cells MC are flash memories, the data “0” is defined as data that has the highest threshold voltage and hence the highest programming voltage is applied to the memory cell MC in order to be programmed. On the other hand, since the data “M−1” dose not require programming operation, it means data that will give the smallest physical impact on a memory cell MC.
The least existing data determining unit 217 has a function of determining types of “x” pieces of data di (M-value data) included in a given data aggregate Gi (i.e., determining which of the data “0”, . . . , and “M−1” is assigned for each of the “x” pieces of data di (M-value data)), and a function of determining which of the data “0”, . . . , and “M−1” is the fewest data (the least existing data) in the data aggregate Gi. The data replacing unit 218 is configured to be able to execute a first data process of replacing each least existing data with the data “0” when the least existing data specified by the least existing data determining unit 217 is other than the data “0”, and a second data process of maintaining the state of the data as it is without executing any data replacement when the least existing data is the data “0”.
The parity data generating unit 219 has a function of generating parity data corresponding to the least existing data when the first data process described above is executed by the data replacing unit 218.
The select gates S1 and S2 include the substrate 41 and n-type diffusion layers 47 formed in the substrate 41 as their source and drain. A control gate 49 is formed above the substrate 41 via a gate insulating film 48.
Next, a case of implementing a two-value storage scheme of storing two-value data (M=2), i.e., one-bit data per memory cell in the present embodiment will be explained with reference to
In
Though the erase verify voltage Vev is a negative value as described above, the voltage to be actually applied to the control gate of the memory cells MC during an erase verify operation is zero or a positive value and not a negative value. That is, in an actual erase verify operation, a positive voltage is supplied to the back gate of the memory cells MC and a zero voltage or a voltage having a positive value smaller than the back gate voltage is applied to the control gate of the memory cells MC. In other words, the erase verify voltage vev is a voltage that equivalently has a negative value.
The threshold voltage distribution E of the memory cells after block basis erasing is entirely negative up to the upper limit thereof and is assigned the data “1”. Memory cells storing the data “0” representing a written state have the threshold voltage distribution A.
Next, an example of implementing a four-value storage scheme (M=4, two bits per cell) in an embodiment of the present invention will be explained with reference to
A four-value NAND cell type flash memory is configured such that the threshold voltage of one memory cell MC can have four threshold voltage distributions E, A, B, and C.
A voltage Vread indicates a reading voltage to be applied to non-selected memory cells in the NAND cell during a data reading operation to make the non-selected memory cells electrically conductive regardless of the data stored therein. A voltage Vev is an erase verify voltage to be applied to the memory cells in erasing of data from the memory cells to confirm whether the erasing has been completed or not, and has a negative value, for example. The relationship of level among the above voltages is Vev<VA<VAV<VB<VBV<VC<VCV<Vread.
The threshold voltage distribution E of the memory cells MC after block basis erasing is entirely negative (an upper limit of the threshold voltage distribution E is negative) and is assigned the data “11” (“3”). Memory cells MC storing the data “01” (“2”), “10” (“1”), and “00” (“0”) representing a programmed state have positive threshold voltage distributions A, B, and C respectively (the threshold voltage distributions A, B, and C are entirely positive, and each of a lower limit of the threshold voltage distributions A, B, and C is positive). The threshold voltage distribution A of the data “01” (“2”) has the lowest voltage value in the threshold voltage distribution A, B and C. The threshold voltage distribution C of the data “00” (“0”) has the highest voltage value. The threshold voltage distribution B of the data “10” (“1”) has a voltage value lying between the data “01” and the data “00”. The threshold voltage distributions shown in
Two-bit data (four-value data) in one memory cell MC is composed of lower page data and upper page data. Lower page data and upper page data are programmed into a memory cell MC by different operations, i.e., by two programming operations. Where data is represented as “*@”, “*” represents upper page data and “@” represents lower page data.
First, programming of lower page data will be explained with reference to
On the other hand, if the value of the lower page data is “0”, a high electric field is applied to the tunnel oxide film of the memory cells to inject electrons into the floating gate electrode of the memory cells, to thereby raise the threshold voltage Vth of the memory cells by a certain amount. Specifically, a verify potential VBA, is set, and programming is repeated until the threshold voltage of the memory cells becomes equal to or higher than the verify voltage VBV′. As a result, the memory cells change to a written state (data “10” (“1”)).
Next, programming of upper page data will be explained with reference to
That is, as shown in
On the other hand, if the value of the upper page data is “0”, a high electric field is applied to the tunnel oxide film of the memory cells to inject electrons into the floating gate electrode of the memory cells to thereby raise the threshold voltage Vth of the memory cells by a certain amount. As a result, any memory cell that stores the data “11” (“3”) (the threshold voltage distribution E representing an erased state) shifts to the data “01” (“2”) corresponding to the threshold voltage distribution A, and any memory cell that stores the data “10” (“1”) shifts to the data “00” (“0”) corresponding to the threshold voltage distribution C. At this time, the verify voltages VAV and VCV are used to adjust the lower limit of the threshold voltage distributions A and C.
The above is one example of data programming in a general four-value storage scheme. An operation of a multi-value storage scheme of three bits (eight-value) or more is basically the same as the above, because it only additionally includes dividing of the threshold voltage into eight distributions in accordance with the further upper page data.
The programming scheme may perform a writing operation that straightly achieve the threshold voltage distribution of the final target, or may perform a programming operation for programming another intermediate distribution (B′ of
When such two-value data or larger-value data (four-value, eight-value) is programmed into a memory cell MC, the higher the threshold voltage corresponding to that data is, the larger physical impact is given to the memory cell MC (degeneration of the gate insulating film is accelerated). Accordingly, when program data is externally supplied to a plurality of memory cells MC, it is desired that such externally-supplied program data form a data set in which the number of pieces of data “1” (in case of two-value data) or the number of pieces of data “11” (“3”) (in case of four-value data) to be provided to the memory cells MC is as large as possible, because such data will give a small physical impact to the memory cells.
When data corresponding to a high threshold voltage is to be written, not only the programming-target memory cell MC will be given a large physical impact, but the threshold voltages of adjoining memory cells that adjoin the programming-target memory cell MC fluctuate greatly due to inter-cell interference, which is deemed as a problem (see FIG. 11). This threshold fluctuation is smaller when many memory cells remain in the threshold voltage distribution E representing an erased state than when the threshold voltage distributions A, B, and C are written in many memory cells. That is, when many of the memory cells adjoining a memory cell MCn have the threshold voltage distribution E representing an erased state as shown in
Hence, in the present embodiment, the following data process is executed. That is, data supplied by the host 1000 is subject to data replacement such that as many memory cells MC as possible are kept in the threshold voltage distribution E (or the state where the data “11” (“3”) is written is maintained). The operation of data replacement is executed by the data dividing process unit 216, the least existing data determining unit 217, and the data replacing unit 218. The operation of data replacement to be executed by the data dividing process unit 216, the least existing data determining unit 217, and the data replacing unit 218 will be explained with reference to
First, the data dividing process unit 216 divides “n” pieces of M-value data d1, d2, . . . , and dn, which is supplied from the host 1000 to be programmed into “n” pieces of memory cells MC arranged along one word line WL into “m” pieces of data aggregates Gi (i=1 to m) (step S11). Here, the data aggregate Gi is not limited to a data aggregate Gi composed of one page which is an aggregate of memory cells. For example, it may be a data aggregate Gi composed of three pages, or a data aggregate Gi composed of nine memory cells arranged in a matrix as shown in
Next, i=1 is set (step S12). Then, it is determined whether i=m is satisfied or not (step S13). When step S13 results in NO, the least existing data determining unit 217 determines which of the data “0”, . . . , and “M−1” included in the data aggregate Gi is the least existing data (step S14). Note that, in Step S11, the number of pieces of M-value data di included in each data aggregate Gi may be set at an odd number. When two-value data storage is performed in this case, for example, either the data “0” or the data “1” is determined as the least existing data, which enables to effectively reduce a physical impact on the memory cells as much as possible.
When the least existing data is determined to be the data “0” (step S15; YES), the data aggregate Gi concerned is not subjected to data replacement and the data in the data aggregate Gi is maintained as it has been when transferred from the host 1000 (step S17: second data process).
In contrast, when the least existing data is determined to be the data “1” (step S15; NO), data replacement is executed to replace each least existing data in the data aggregate Gi with the data “0” and each data “0” in the data aggregate Gi with the least existing data (step S16: first data process). After this, parity data corresponding to the replaced data is generated (step S20), and “i” is incremented (step S18). The above operation is repeated until “i” reaches “m”.
When “i” has reaches “m”, the parity data generated at step S20 is attached to the data aggregates Gi (step S21), and the process is completed. Generating and attaching the parity data in this manner is effective when the number of data aggregates Gi is small or when the capacity of the cache memory (e.g., the RAM 34) is small.
In this case, the least existing data determining unit 217 determines the type of the three pieces of two-value data bit1 to 3 included in a data aggregate Gi (whether the type is “1” or “0”) to determine which of “0” and “1” exists less (or the least) in the data aggregate Gi. That is, which of “0” and “1” is the least existing data is determined.
When the least existing data determined by the least existing data determining unit 217 is the data “1” and is not the data “0”, the data replacing unit 218 executes the first data process of data replacement of the least existing data “1” and the data “0” in the data aggregate Gi. To the contrary, when the least existing data is the data “0”, the data replacing unit 218 executes the second data process of maintaining the data as they are by not executing data replacement. Then, when the executed process is the first data process, the parity data generating unit 219 generates data “0” as parity data, and attaches the generated data to the data aggregate Gi. Conversely, when the executed process is not the first data process but the second data process (when no data replacement has been executed), the parity data generating unit 219 generates data “1” as parity data, and attaches the generated data to the data aggregate Gi. The generated parity data are stored in those memory cells constituting a parity data storing unit (“q” NAND cell units NU shown in
An effect obtained by executing this operation in the case of two-value data storage is explained in
Also in this case too, like in
When the data “0” and other data both correspond to the least existing data, data replacement is executed by defining the data “0” as the least existing data. For example, in the index 1022 of
As shown in the section of “TOTAL” of
In the examples (
Data having a high threshold distribution, e.g., a high programming voltage is applied to a memory cell when the data “0” in the four-value data is programmed into a memory cell. Here, by applying the present invention, it is possible to reduce the number pieces of data corresponding to a high threshold distribution and reduce power consumption.
In the first embodiment of the present invention, it is possible to restore the data in a data reading operation easily by using the parity data. For example, when the parity data is “0”, it is only necessary to replace the data “3” and the data “0” among the pieces of data stored in the memory cells. Likewise, when the parity data is “1”, it is only necessary to replace the data “2” and the data “0” among the pieces of data stored in the memory cells. When the parity data is “2”, it is only necessary to replace the data “1” and the data “0” among the pieces of data stored in the memory cells. When the parity data is “3”, no data replacement is executed among the pieces of data stored in the memory cells. That is, data as a target of data replacement is replaced with the data “0” that will give the largest physical impact on the memory cells. The parity data suggests the type of the data to be replaced with the data “0” that will give the largest physical impact on the memory cells.
As is clear, the data restoration according to the first embodiment of the present invention is a simple operation. It does not require any complicated operation such as plural replacement of the data that will give a physical impact. Hence, the data restoration can be accelerated.
Next, a second embodiment of the present invention will be explained with reference to
The difference in operation is that after it is determined at step S15 that the least existing data is data other than the data “0”, determination is made whether the number of pieces of the least existing data is approximately equal to the number of pieces of the data “0” (step S19). When both the numbers are approximately equal, which means that the effect of data replacement is very limited, the flow goes to the second data process in which data replacement is not executed (step S17). This can avoid an unnecessary operation of data replacement from being executed and improve the operation speed of the memory device. Further, since parity data to be attached when the flow goes to step S17 is the data “3” representing an erased state, power consumption can be reduced.
It is also possible in
While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. For example, though the above embodiments have been explained by employing a NAND type flash memory as an example, it is apparent from the above given explanation that the present invention can be widely applied to data memory devices that store data in a memory element by imposing a physical impact on the memory element.
Further, in the embodiments described above, an example has been explained in which the operation of data replacement is executed by the controller 22. The present invention is not limited to this, but the same function may be performed within the chip of the memory 21 or the host 1000 may execute the same operation.
Still further, in the embodiments described above, parity data is stored in an exclusive memory area for parity data different from a memory area for effective data. However, the present invention can also be applied to a storage scheme that stores parity data and effective data in the same memory area.
Furthermore, in the embodiments described above, an operation of dividing data to be stored in the memory cells arranged along one word line into a plurality of aggregates Gi is executed. The present invention is not limited to this, but various schemes of generating aggregates Gi are available. For example, in a memory device having a three-dimensional shape in which memories are stacked in the direction perpendicular to the substrate, it is possible to divide pieces of data to be programmed into a plurality of memory cells adjoining one another in the directions of the three dimensions into a plurality of aggregates to execute the same data processes.
Moreover, the present invention is not limited to application to NAND type flash memories. Not only NAND type flash memories but also NOR type flash memories for example can face decreased reliability of the memory due to repetitive programming and erasing operations. Further, this is not the case only with flash memories, but the situation is the same among other types of data memory devices such as ferroelectric memories, magnetic memories, hard disk drive devices, etc. That is, even when applied to any other than NAND type flash memories, the present invention can as much as possible reduce a physical impact on the memory cells, i.e., memory elements, and hence improve the reliability of the memory devices and prolong the life of the memory devices.
Number | Date | Country | Kind |
---|---|---|---|
2010-069212 | Mar 2010 | JP | national |