Embodiments of the present disclosure provide methods, systems, and apparatuses related to calculating an error correction code for a program page dependent on guard values that correspond to words of the program page. Other embodiments may be described and claimed.
|
1. A method comprising:
storing data into a plurality of words of a page of words of a non-volatile memory such that each word of the plurality of words contains a corresponding actual value;
storing a plurality of guard values into a plurality of guard fields corresponding to the plurality of words, wherein each word of the plurality of words corresponds to a corresponding guard value of the plurality of guard values, wherein each guard value has one of at least two states comprising a first state and a second state; and
calculating an error correction code for the page, wherein the calculating is dependent on the corresponding guard values of the plurality of words of the page, wherein the calculating uses the actual values of the words corresponding to the guard values in the first state and does not use the actual values of the words corresponding to the guard values in the second state.
13. A computer readable medium having associated instructions that, when executed, cause the computer to:
store data as a plurality of words of a page of words in a nonvolatile memory such that each word of the plurality of words comprises a corresponding actual value;
store a plurality of guard values into a plurality of guard fields corresponding to the plurality of words, wherein each word of the plurality of words corresponds to a corresponding guard value of the plurality of guard values, wherein each guard value has one of at least two states comprising a first state and a second state; and
calculate an error correction code for the page based at least in part on the guard values that correspond to the plurality of words of the page by using the actual values for the words corresponding to the guard values in the first state and not using the actual values for the words corresponding to the guard values in the second state.
5. An apparatus comprising:
a matrix of memory cells; and
a controller coupled to the matrix of memory cells and configured to store data as a plurality of words of a page of words in the matrix of memory cells, such that each word of the plurality of words comprises a corresponding actual value, wherein the controller is further configured to store a plurality of guard values into a plurality of guard fields corresponding to the plurality of words, wherein each word of the plurality of words corresponds to a corresponding guard value of the plurality of guard values, wherein each guard value has one of at least two states comprising a first state and a second state, and wherein the controller is further configured to calculate an error correction code for the page based at least in part on the guard values that correspond to the plurality of words of the page by using the actual values of words corresponding to the guard values in the first state and not using the actual values of words corresponding to the guard values in the second state.
2. The method of
3. The method of
4. The method of
6. The apparatus of
word logic configured to store the data as the plurality of words; and
error correction code logic configured to calculate the error correction code.
7. The apparatus of
8. The apparatus of
9. The apparatus of
10. The apparatus of
11. The apparatus of
a word sense amplifier (SA) configured to read the plurality of words;
a guard SA configured to read the guard values; and
an error correction code SA configured to read the error correction code.
12. The apparatus of
a register configured to store a mask value; and
a selector coupled to the register, the word SA, and the guard SA, and configured to output an actual value for a word, received from the word SA, or the mask value, received from the register, based at least in part on a guard value, received from the guard SA.
14. The computer readable medium of
15. The computer readable medium of
16. The computer readable medium of
|
Embodiments of the present disclosure relate to the field of memory, and more particularly, to memory with guard value dependent error correction.
Advances in non-volatile memory (NVM) are reducing the size of individual memory cells and enabling some memory cells, referred to as multilevel cells, to represent more than two states. Each state of a multilevel cell is associated with a corresponding logic value and is defined by a respective range of a specific physical quantity, e.g., a voltage. Each of these advances is associated with its own reliability issues. For example, increasing the number of possible states for a multilevel cell involves a reduction of the voltage ranges between each logic value, which makes the device more sensitive to noise. For another example, reducing the size of the memory cell may be associated with issues relating to retention, drain disturbances, floating gate coupling, etc.
Control codes, e.g., error correction codes (ECCs), have been used to improve the reliability of these advanced NVM devices. ECCs add redundant information to every predetermined set of bits, e.g., a page. Such redundant information is used to detect and correct, if possible, any errors in the page. This allows some defective cells to be accepted in the memory device without jeopardizing its operation. In this way, the production cost of the memory device can be significantly reduced.
Using known techniques to embed ECCs into NVM devices may limit subsequent manipulation of data. For example, NVM such as flash memory cannot program a “1” data on a selected cell with “0” content without erasing and rewriting a whole block of data. As a consequence, manipulation of the ECC bits and page data may be severely restricted.
Embodiments will be readily understood by the following detailed description in conjunction with the accompanying drawings. To facilitate this description, like reference numerals designate like structural elements. Embodiments are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings.
In the following detailed description, reference is made to the accompanying drawings which form a part hereof wherein like numerals designate like parts throughout, and in which is shown by way of illustration embodiments in which the disclosure may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be taken in a limiting sense, and the scope of embodiments in accordance with the present disclosure is defined by the appended claims and their equivalents.
Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding embodiments of the present disclosure; however, the order of description should not be construed to imply that these operations are order dependent.
For the purposes of the present disclosure, the phrase “A and/or B” means “(A), (B), or (A and B).” For the purposes of the present disclosure, the phrase “A, B, and/or C” means “(A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C).”
Various logic blocks may be introduced and described in terms of an operation provided by the blocks. These logic blocks may include hardware, software, and/or firmware elements in order to provide the described operations. While some of these logic blocks may be shown with a level of specificity, e.g., providing discrete elements in a set arrangement, other embodiments may employ various modifications of elements/arrangements in order to provide the associated operations within the constraints/objectives of a particular embodiment.
The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “comprising,” “including,” “having,” and the like, as used with respect to embodiments of the present disclosure, are synonymous.
Data stored in the cell matrix 112 may be organized as a collection of bits that make up words, with a collection of words that make up a program page, or simply “page.” An ECC may be calculated on each page. Given an “n” bit page, an ECC of “m” bits may be desired. The relationship between “n” and “m” may depend on the number of errors to be detected/corrected and may differ in various embodiments.
In various embodiments, a guard field may be associated with each word of a page. Values within these guard fields may be used in the calculation of an ECC value for the page in a manner that may allow for subsequent bit manipulation of data within the page without having to engage in a block rewrite.
The controller 104 may include word logic 116, guard logic 120, and ECC logic 124 configured to manage the words, guard fields, and ECC fields, respectively, as will be described. The word logic 116, guard logic 120, and ECC logic 124 may be collectively referred to as word management logic 126.
The controller 104 may erase a block of memory cells at 304. An erase operation of the NVM device 100 may set all the bits of the block to one.
At 308, the word logic 116 may store data into words of a page of words of the NVM device 100. The word logic 116 may store the data into the words by performing various writing, or programming, operations on selected words.
At 312, the guard logic 120 may set guard values and store the guard values in the guard fields associated with the words. Setting a guard value for each word of the page may allow the ECC to selectively cover the words. This may, in turn, allow for independent updating of the data in selected words of the page.
At 316, the ECC logic 124 may calculate an ECC value for the page and store the ECC value in the ECC field 228. In the calculation of the ECC value, the ECC logic 124 may determine whether the guard value is set in an enabled state or a disabled state. If the guard value is set in an enabled state, the ECC logic 124 may use the actual value of the corresponding word in the ECC calculation. That is, ECC coverage of the word is enabled. If the guard value is set to a disabled state, the ECC logic 124 may use a mask value in place of the actual value of the corresponding word in the ECC calculation.
At 320, the word logic 116 may independently update data within one or more of the words that are associated with a guard value that is set to a disabled state. As used herein, “independently updating data” means that data of a particular word or words of a page may be updated without rewriting data within other words of the same page.
Page 500 is shown in
In this embodiment, a guard value of “3” may be considered an enabled state and a guard value of “0” may be considered a disabled state. It may be noted that while this embodiment contemplates two states of enablement, other embodiments may use other guard values to represent additional states of enablement, e.g., partially enabled states.
The second condition B may result from a first programming iteration in which a first word 504 and a third word 508 are updated, e.g., programmed. The first word 504 may be programmed from “FFFF” to “F5AC,” the third word 508 may be programmed from “FFFF” to “FF0F,” and the remaining words may remain unprogrammed.
In this embodiment, the guard fields corresponding to the second through eighth words may be programmed to the disabled status, while the guard field 512 associated with the first word 504 may remain set at the enabled status. Thus, the ECC value, given as “XY” in condition B, may only cover the first word 504. A mask value, e.g., “FFFF,” may be used in the ECC calculation for each word whose guard field is in a disabled state, e.g., the second through eighth words. In the subsequent programming iteration that results in condition C, any of the words whose guard fields are set to a disabled state may be updated without having to change the ECC value. For example, the third word 508 may be updated from “FF0F” to “3F0F” in the second programming iteration, but because it is not covered by the ECC, the ECC value does not change.
It may be noted that while both the first word 504 and the third word 508 are programmed in the first programming iteration, only the guard field 512 remains in the enabled state. This may be due to differences in the content of the corresponding words in condition B.
The first word 504 and the third word 508 may both have single-level content (SLC), e.g., “FFFF,” in condition A. A word may have SLC when all of the bits of a given pair of memory cells have the same value, e.g., “1” or “0.”
The first programming iteration may involve a multilevel programming operation with respect to the first word 504, which results in multilevel content (MLC), e.g., “F5AC,” in condition B. A word may have MLC when at least two of the bits of a given pair of memory cells have different values.
The first programming iteration may also involve a single level programming operation with respect to the third word 508, which results in single-level content, e.g., “FF0F,” in condition B.
In this embodiment, the setting of the guard value may be based at least in part on whether a corresponding word has SLC or MLC. For example, guard field 512, which is associated with first word 504, may have a guard value set to the enabled state, “3,” in condition B due to its MLC. Conversely, guard field 516, which is associated with third word 508, may have a guard value set to the disabled state, “0,” in condition B due to its SLC.
In some embodiments, applications accessing the NVM device 100 may save data as SLC (or MLC) words based on whether it will be desirable for the data to be independently updateable. For example, an application may store metadata in an SLC form due to its high likelihood that it will need to be updated. With the metadata stored in the words as SLC, it may not be covered by the ECC and, therefore, may be manipulated on a bit basis.
The word SA 604 and the guard SA 612 may be coupled to a selector 620. The selector 620 may receive the word value from the word SA 604; a mask value (e.g., “FFFF”) from register 624; and a guard value from the guard SA 612. Depending on whether the guard value represents an enabled or disabled state, the selector 620 may transmit the word value or the mask value to ECC logic 124.
The ECC logic 124, in addition to receiving a value from the selector 620, may receive an ECC value from the ECC SA 616. The ECC logic 124 may verify the accuracy of the covered words of the page 608 and, whenever possible, correct words that are determined to have inaccurate information.
A selector 628 may be coupled to the word SA 604, the ECC logic 124, and the guard SA 612 and may output words. Depending on whether the guard state is enabled or disabled, the output word will come from the word SA 604 or the ECC logic 124. For example, if the guard bit of a word is 0, ECC coverage on that word may be disabled and the output word may come directly from the word SA 604 and, if the guard bit is 1, ECC coverage may be active on that word and the output word may come from ECC logic 124.
System control logic 708 for one embodiment may include any suitable interface controllers to provide for any suitable interface to the components with which it is coupled.
System memory 712 may be used to load and/or store data/instructions, for example, for the host device 700. System memory 712 may include any suitable volatile memory, such as, but not limited to, suitable dynamic random access memory (DRAM).
The NVM device 100 may be used to load and/or store data/instructions, for example. The NVM device 100 may include any suitable non-volatile memory, such as, but not limited to, NOR flash memory, NAND flash memory, phase change memory, etc.
In some embodiments, the word management logic 126 may include instructions 724 that when executed by the processor(s) 704 result in the host device 700 performing at least some of the word management operations described herein. The instructions may be located in the NVM device 100 and/or the system memory 712. In some embodiments, the instructions 724 may additionally/alternatively be located in the system control logic 708.
Communications interface(s) 720 may provide an interface for the host device 700 to communicate over one or more networks and/or with any other suitable device. Communications interface(s) 720 may include any suitable hardware and/or firmware. Communications interface(s) 720 for one embodiment may include, for example, a network adapter, a wireless network adapter, a telephone modem, and/or a wireless modem. For wireless communications, communications interface(s) 720 for one embodiment may use one or more antennas.
For one embodiment, at least one of the processor(s) 704 may be packaged together with logic for one or more controllers of system control logic 708. For one embodiment, at least one processor of the processor(s) 704 may be packaged together with logic for one or more controllers of system control logic 708 to form a System in Package (SiP). For one embodiment, at least one processor of the processor(s) 704 may be integrated on the same die with logic for one or more controllers of system control logic 708. For one embodiment, at least one processor of the processor(s) 704 may be integrated on the same die with logic for one or more controllers of system control logic 708 to form a System on Chip (SoC).
In various embodiments, the host device 700 may be a desktop or laptop computer, a server, a set-top box, a digital recorder, a game console, a personal digital assistant, a mobile phone, a digital media player, a digital camera, etc. The host device 700 may have more or less components and/or different architectures.
Although certain embodiments have been illustrated and described herein for purposes of description of the preferred embodiment, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent embodiments or implementations calculated to achieve the same purposes may be substituted for the embodiments shown and described without departing from the scope of the present disclosure. Similarly, memory devices of the present disclosure may be employed in host devices having other architectures. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that embodiments in accordance with the present disclosure be limited only by the claims and the equivalents thereof.
Confalonieri, Emanuele, Villa, Sara
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
3573728, | |||
6731557, | Jun 21 2001 | STMICROELECTRONICS S R L | Method of refreshing an electrically erasable and programmable non-volatile memory |
6958949, | Dec 28 2001 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Decoding structure for a memory device with a control code |
8111554, | Jun 03 2005 | SanDisk Technologies LLC | Starting program voltage shift with cycling of non-volatile memory |
8522121, | Feb 19 2010 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Low complexity error correction using cyclic redundancy check (CRC) |
20030012064, | |||
20030149831, | |||
20060259847, | |||
20080212369, | |||
20110066902, | |||
20110141818, | |||
20110182121, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 15 2008 | VILLA, SARA | NUMONYX B V | CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYANCE DOCUMENT BY INCLUDING THE SERIAL NUMBER OF THE APPLICATION ON THE FACE OF THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 024597 FRAME 0473 ASSIGNOR S HEREBY CONFIRMS THE INCLUSION OF SAID SERIAL NUMBER | 024856 | /0861 | |
Dec 15 2008 | CONFALONIERI, EMANUELE | NUMONYX B V | CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYANCE DOCUMENT BY INCLUDING THE SERIAL NUMBER OF THE APPLICATION ON THE FACE OF THE ASSIGNMENT PREVIOUSLY RECORDED ON REEL 024597 FRAME 0473 ASSIGNOR S HEREBY CONFIRMS THE INCLUSION OF SAID SERIAL NUMBER | 024856 | /0861 | |
Dec 15 2008 | VILLA, SARA | NUMONYX B V | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024597 | /0473 | |
Dec 15 2008 | CONFALONIERI, EMANUELE | NUMONYX B V | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 024597 | /0473 | |
Dec 16 2008 | Micron Technology, Inc. | (assignment on the face of the patent) | / | |||
Sep 30 2011 | NUMONYX B V | Micron Technology, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027126 | /0176 | |
Apr 26 2016 | Micron Technology, Inc | MORGAN STANLEY SENIOR FUNDING, INC , AS COLLATERAL AGENT | PATENT SECURITY AGREEMENT | 038954 | /0001 | |
Apr 26 2016 | Micron Technology, Inc | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 038669 | /0001 | |
Apr 26 2016 | Micron Technology, Inc | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001 ASSIGNOR S HEREBY CONFIRMS THE SECURITY INTEREST | 043079 | /0001 | |
Jun 29 2018 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Micron Technology, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 047243 | /0001 | |
Jul 03 2018 | MICRON SEMICONDUCTOR PRODUCTS, INC | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 047540 | /0001 | |
Jul 03 2018 | Micron Technology, Inc | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | SECURITY INTEREST SEE DOCUMENT FOR DETAILS | 047540 | /0001 | |
Jul 31 2019 | MORGAN STANLEY SENIOR FUNDING, INC , AS COLLATERAL AGENT | Micron Technology, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 050937 | /0001 | |
Jul 31 2019 | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | MICRON SEMICONDUCTOR PRODUCTS, INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 051028 | /0001 | |
Jul 31 2019 | JPMORGAN CHASE BANK, N A , AS COLLATERAL AGENT | Micron Technology, Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 051028 | /0001 |
Date | Maintenance Fee Events |
Jan 09 2014 | ASPN: Payor Number Assigned. |
Jul 24 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jul 27 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Feb 04 2017 | 4 years fee payment window open |
Aug 04 2017 | 6 months grace period start (w surcharge) |
Feb 04 2018 | patent expiry (for year 4) |
Feb 04 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Feb 04 2021 | 8 years fee payment window open |
Aug 04 2021 | 6 months grace period start (w surcharge) |
Feb 04 2022 | patent expiry (for year 8) |
Feb 04 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Feb 04 2025 | 12 years fee payment window open |
Aug 04 2025 | 6 months grace period start (w surcharge) |
Feb 04 2026 | patent expiry (for year 12) |
Feb 04 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |