US9164829B2 - Read bias management to reduce read errors for phase change memory - Google Patents

Read bias management to reduce read errors for phase change memory Download PDF

Info

Publication number
US9164829B2
US9164829B2 US14/269,869 US201414269869A US9164829B2 US 9164829 B2 US9164829 B2 US 9164829B2 US 201414269869 A US201414269869 A US 201414269869A US 9164829 B2 US9164829 B2 US 9164829B2
Authority
US
United States
Prior art keywords
bits
read
logic
bias condition
contents
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
US14/269,869
Other versions
US20140325314A1 (en
Inventor
Ferdinando Bedeschi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
US Bank NA
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Priority to US14/269,869 priority Critical patent/US9164829B2/en
Publication of US20140325314A1 publication Critical patent/US20140325314A1/en
Application granted granted Critical
Publication of US9164829B2 publication Critical patent/US9164829B2/en
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT reassignment U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON TECHNOLOGY, INC.
Assigned to MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT reassignment MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: MICRON TECHNOLOGY, INC.
Assigned to U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT reassignment 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. Assignors: MICRON TECHNOLOGY, INC.
Assigned to JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT reassignment JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICRON SEMICONDUCTOR PRODUCTS, INC., MICRON TECHNOLOGY, INC.
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Assigned to MICRON TECHNOLOGY, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Assigned to MICRON TECHNOLOGY, INC., MICRON SEMICONDUCTOR PRODUCTS, INC. reassignment MICRON TECHNOLOGY, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0038Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/026Detection or location of defective auxiliary circuits, e.g. defective refresh counters in sense amplifiers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Definitions

  • Subject matter disclosed herein relates to a memory device, and more particularly to read performance of phase change memory.
  • Phase change memory may operate based, at least in part, on behavior and properties of one or more particular phase change materials, such as chalcogenide alloy and/or germanium antimony telluride (GST), just to name a few examples. Crystalline and amorphous states of such materials may have different electrical resistivities, thus presenting a basis by which information may be stored. An amorphous, high resistance state of such materials may represent a stored first binary state and a crystalline, low resistance state of such materials may represent a stored second binary state. Of course, such a binary representation of stored information is merely an example: PCM may also be used to store multiple memory states, represented by varying degrees of phase change material resistivity, for example.
  • phase change material resistivity for example.
  • a PCM cell may transition from an amorphous state to a crystalline state by applying a bias signal to the memory cell.
  • Characteristics of a bias signal such as peak magnitude and/or pulse width, for example, may be selected to allow a transition to a crystalline state.
  • Reading a state of a PCM cell may be performed by applying a bias current or voltage to the PCM cell to detect the cell's resistivity.
  • FIG. 1 is a plot of characteristics of bias signal waveforms, according to an embodiment.
  • FIG. 2 is a plot of characteristics of reference current or voltage values, according to an embodiment.
  • FIG. 3 is a flow diagram of a read process to read contents of a memory array, according to an embodiment.
  • FIG. 4 is a flow diagram of a read process to read contents of a memory array, according to another embodiment.
  • FIG. 5 is a schematic diagram illustrating an exemplary embodiment of a computing system.
  • Embodiments described herein include processes and/or electronic architecture involving managing read bias conditions for phase change memory (PCM) devices.
  • read bias conditions may comprise voltage or current applied to PCM cells to determine the state of the PCM cells.
  • Managing read bias conditions of PCM cells may be used to avoid read errors and/or reduce the number of such read errors that may otherwise result from, for example, a shift in state distribution of PCM cells that may occur over time, as described below.
  • a state distribution of a memory cell may correspond to one or more threshold voltages corresponding to states or logic levels stored by the memory cell. In other words, such states or logic levels may correspond to voltage ranges separated by one or more threshold voltages.
  • a first logic level may correspond to a first voltage range and a second logic level may correspond to a second voltage range.
  • Such logic levels may correspond to one-bit data, such as “0” for a first logic level, and “1” for a second logic level, for example.
  • such logic levels stored in PCM cells may be read and determined based, at least in part, on the same one or more reference cell currents used to previously program the PCM cells.
  • a cell current during a read process may result by applying a read voltage (e.g., a read bias condition, as described below) across a PCM cell so that the cell current during the read process may depend, at least in part, on a resistance of the PCM cell.
  • a read voltage e.g., a read bias condition, as described below
  • the state or logic value of a PCM cell e.g., level of resistance, may be determined by comparing such a cell current during the read process to reference cell currents applied while programming the state or logic value earlier.
  • a method of reading a memory cell programmed at a particular program current or voltage may include modifying one or more read bias conditions to compensate for such changes in physical properties of the memory cell.
  • compensating for a change in physical properties of a memory cell may be performed in response to an error correction code (ECC) overflow event, described in detail below.
  • ECC error correction code
  • Such an ECC overflow event may be indicated by an ECC engine.
  • ECC engine may be located in a memory device that includes the memory cell.
  • a memory controller located in a memory device may include an ECC engine.
  • such an ECC engine may be located outside the memory device, such as in a processor, an operating system, and/or an application, just to name a few examples.
  • the ECC engine may receive read data from a memory controller, for example, in a memory device and provide the memory controller with error correction code, as described below.
  • An ECC engine may generate ECC as part of a process to confirm validity (e.g., correctness) of data read from memory and/or to correct such read data if errors are found.
  • a read process may include reading data from memory, generating ECC based, at least in part, on the read data, and using the ECC to detect read errors, if any. In the case of detected read errors, ECC may be used to correct such read errors.
  • a write process may include writing data to memory, reading just-written data from the memory to confirm that data was correctly written, generating ECC based, at least in part, on the read data, and using the ECC to detect write errors, if any. In the case of detected write errors, ECC may be used to correct such write errors.
  • An ECC engine may be designed for a capability to correct a particular number of errors in data.
  • An ECC overflow event may result if the number of errors detected in data exceeds such a capability, wherein such errors in the data may not be corrected.
  • a method of reading a memory cell may include a process of modifying a read bias condition based, at least in part, on ECC techniques and/or occurrence of read errors.
  • contents of a memory device may be read using a bias condition, such as a read voltage or read current. Read errors resulting from reading contents of the memory device may be counted. The read bias condition may then be modified if the number of read errors exceeds a particular number.
  • such a particular number may be based, at least in part, on ECC capability to correct errors. For example, a relatively modest ECC implementation may have a capability to correct two errors while a relatively robust ECC implementation may have a capability to correct four or more errors. Accordingly, a read bias condition may be modified so as to attempt to prevent the number of read errors from exceeding a correcting-capability of an ECC implementation.
  • ECC capability to correct errors For example, a relatively modest ECC implementation may have a capability to correct two errors while a relatively robust ECC implementation may have a capability to correct four or more errors.
  • a read bias condition may be modified so as to attempt to prevent the number of read errors from exceeding a correcting-capability of an ECC implementation.
  • such numbers and details of ECC implementation are merely examples, and claimed subject matter is not so limited.
  • an ECC process may be used to supplement programmed (or write) data with parity bits that include enough extra information for the data to be reconstructed if one or more bits of the data become corrupted.
  • Such an ECC process may generate coded data (e.g., a codeword) based, at least in part, on programmed data, parity of the programmed data, details of the ECC process, and so on.
  • coded data representing stored data may be applied during a process of reading the stored data and/or a process of verify-after-writing the data.
  • coded data may be based, at least in part, on parallel encoding and decoding techniques. Such techniques may involve a 2-bit error correcting binary Bose-Chaudhuri-Hocquenghem (BCH) code, Reed-Solomon code, or a Convolutional code, just to name a few examples.
  • BCH binary Bose-Chaudhuri-Hocquenghem
  • coded data may comprise multiple bits of logic 1's or 0's.
  • the number of 1's and the number of 0's of a particular ECC word may be counted. From such counts, a determination may be made as to whether the coded data comprises more 1's than 0's or vise versa. Such a situation may be called “bit imbalance”.
  • a bit imbalance may indicate that a threshold voltage and/or resistivity of one or more memory cells drifted from the time the memory cells were programmed. For example, if coded data comprises more 1's than 0's, then a memory cell's threshold voltage may have drifted upward from the memory cell's threshold voltage level during programming.
  • a read bias condition such as a read voltage or read current may be decreased to compensate for such upward drift of threshold voltage.
  • threshold voltage may have drifted downward from the memory cell's threshold voltage level during programming.
  • a read bias condition such as a read voltage or read current may be increased to compensate for such downward drift of threshold voltage.
  • increasing or decreasing a read bias voltage or current may be performed stepwise while iteratively determining whether subsequent read error events diminish.
  • FIG. 1 is a plot 100 of characteristics of bias signal waveforms that may be used to program a PCM cell, according to an embodiment.
  • a PCM cell may be reset by melting phase change material by applying a relatively high amplitude, relatively short duration electrical programming pulse, or bias signal 120 .
  • an active region of phase change material may comprise an amorphous region that is dome-shaped, disposed adjacent to a heater element in a PCM cell, for example. Crystallized phase change material may surround such an amorphous region.
  • a PCM cell may have a relatively high electrical resistance.
  • a PCM cell may be set by crystallizing a dome-shaped amorphous region so that a substantially entire region of phase change material may be crystalline. Such a process may involve ramping down a voltage and/or current of relatively low amplitude, relatively long duration bias signal 110 applied to a PCM cell to crystallize the PCM cell's phase change material. In such a state, a PCM cell may have a relatively low electrical resistance.
  • a particular bias signal 120 may be selected to set a PCM cell to a particular state corresponding to a particular range of resistances. For example, bias signal 120 may be decreased in duration and/or amplitude.
  • PCM cells may comprise amorphous material that may drift towards higher resistivity, particularly if crystallization of the material is not complete, such as in PCM cells used in a multilevel application.
  • PCM cells may comprise amorphous material that may evolve towards a crystalline state, which may involve thermodynamically lower energy states.
  • cycling through states of a PCM cell may also affect distribution of read currents or thresholds.
  • PCM cells are merely examples, and claimed subject matter is not so limited.
  • FIG. 2 is a plot 200 of characteristics of read bias current or voltage values for a memory array, according to an embodiment.
  • plot 200 comprises plots of read bias current or voltage as a function of the number of read iterations in a process of reading a memory array.
  • read bias current or voltage will hereinafter be referred to as read voltage or read bias.
  • Plot 210 comprises increasing steps of read voltage that may be iteratively applied to one or more memory cells.
  • read voltage 212 may be applied to one or more memory cells during one iteration of a process to read contents of the memory cells, whereas read voltage 216 may be applied to the memory cells during a subsequent iteration.
  • read voltage 222 may be applied to one or more memory cells during one iteration of a process to read contents of the memory cells, whereas read voltage 226 may be applied to the memory cells during a subsequent iteration.
  • Such iterations may comprise a process of reading, counting read errors (if any), and/or determining whether to increase read voltage or decrease read voltage based, at least in part, on the number of counted read errors.
  • Step size 230 from one read voltage value to a subsequent read voltage value may vary from one implementation to another.
  • step size 230 may vary from one iteration step to another iteration step.
  • step size 230 may be remain constant from one iteration step to another iteration step.
  • step sizes may comprise a voltage in the range of tens to hundreds of millivolts.
  • plot 200 shows particular number of iterations, such a number of iterations may vary from one implementation to another.
  • such a number of iterations may be based, at least in part, on step size 230 , results of increasing or decreasing bias voltage on the number of read error events, particular algorithms used to read from memory, and so on.
  • one particular algorithm may involve determining a rate at which error events diminish as a result of stepping through values of read voltage.
  • Another particular algorithm may step through values of read voltage a particular number of times regardless of the effects on resulting read errors.
  • any number of algorithms may be involved, and claimed subject matter is not so limited.
  • FIG. 3 is a flow diagram of a read process 300 to read contents of a memory array, according to an embodiment.
  • a read process may be performed by a memory controller in response to receiving a read request from a processor.
  • a processor may execute an application resulting in a read request directed to a memory controller, which may perform read process 300 , though claimed subject matter is not so limited.
  • Read process 300 may involve an ECC engine to detect and/or correct read errors, as described above. Accordingly, subsequent to reading contents of a memory array, such an ECC engine may be used to correct read errors that may have occurred. However, an ECC engine may be limited in its capability to correct more than a particular number of errors. An ECC overflow may occur if the number of read errors exceeds such a particular number.
  • process 300 may proceed to block 315 where read process 300 may be completed with read errors (if any) being corrected by a capable ECC engine. However, if an ECC overflow has occurred, then the ECC engine is not capable of correcting any or all of the read errors that led to the ECC overflow. In such a case, process 300 may proceed to block 320 where coded data may be retrieved from the ECC engine, for example. As discussed above, such coded data may comprise multiple bits of logic 1's or 0's. In an implementation, coded data may be generated by combining a data word with parity code bits obtained by processing the data word with a deterministic algorithm, for example.
  • parity code bits may be compared to parity code bits corresponding to the original data. If the two sets of parity code bits do not match the data word may be changed accordingly until the parity bits match. Consequently, errors present in the data word may be corrected.
  • the number of 1's and the number of 0's of a particular ECC word may be counted. From such counts, a determination may be made as to whether the ECC word comprises a bit imbalance, having more 1's than 0's or vise versa.
  • a strategy to respond to an ECC overflow may be determined based, at least in part, on whether an ECC word comprises a bit imbalance.
  • process 300 may proceed to diamond 350 where a determination may be made as to whether the ECC word comprises a greater number of 0 bits than 1 bits. If so, then process 300 may proceed to block 370 , where read voltage may be increased. Such an increase may compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming, as discussed above. Such a read voltage increase may be similar to a voltage increase represented by step size 230 shown in FIG. 2 , for example.
  • a process to read contents of the memory array may be performed again, this time using a higher read voltage than that used in the previous read (e.g., performed prior to diamond 310 ).
  • Such a read process may result in read errors, which may be detected using an ECC word generated by an ECC engine involved in the read process.
  • the number of read errors may be fewer than the number of read errors that resulted from the previous read. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine.
  • Such a case may thus involve an ECC overflow, as determined at diamond 376 .
  • process 300 may return to block 370 and read voltage may be increased again to further attempt to compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming.
  • process 300 may loop through an iterative process of increasing read voltage, reading contents of a memory array, determining whether the number of resulting read errors exceeds an error-correcting capability of an ECC engine, and if so, repeating the iterative process. On the other hand, if the number of resulting read errors is within an error-correcting capability of an ECC engine, process 300 may proceed to block 380 , where an ECC word may be refreshed. This may mean that a new data code is generated following a procedure similar or the same as that described above for the ECC engine operation. A new programming phase may restore corrected content, thus nullifying drift that may have occurred for some or all bits, for example.
  • process 300 may proceed to block 360 , where read voltage may be decreased.
  • read voltage may be decreased.
  • Such a decrease may compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming, as discussed above.
  • Such a read voltage decrease may be similar to step size 230 shown in FIG. 2 , for example.
  • a process to read contents of the memory array may be performed again, this time using a lower read voltage than that used in the previous read (e.g., performed prior to diamond 310 ).
  • Such a read process may result in read errors, which may be detected using an ECC word generated by the ECC engine involved in the read process.
  • the number of read errors may be fewer than the number of read errors that resulted from the previous read. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus involve an ECC overflow, as determined at diamond 366 . In the event of an ECC overflow, process 300 may return to block 360 , and read voltage may be decreased again to further attempt to compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming.
  • process 300 may loop through an iterative process of decreasing read voltage, reading contents of a memory array, determining whether the number of resulting read errors exceeds an error-correcting capability of an ECC engine, and if so, repeating the iterative process. On the other hand, if the number of resulting read errors is within an error-correcting capability of an ECC engine, process 300 may proceed to block 380 , where new coded data may be generated by an ECC engine, as previously explained.
  • process 300 may loop through an iterative process of decreasing read voltage, reading contents of a memory array, determining whether the number of resulting read errors exceeds an error-correcting capability of an ECC engine, and if so, repeating the iterative process. On the other hand, if the number of resulting read errors is within an error-correcting capability of an ECC engine, process 300 may proceed to block 380 , where new coded data may be generated by an ECC engine, as previously explained.
  • process 300 are merely examples, and claimed subject matter is not so limited.
  • FIG. 4 is a flow diagram of a read process 400 to read contents of a memory array, according to another embodiment.
  • Process 400 may involve an ECC engine to detect and/or correct read errors, as described above. Similar to the case for process 300 , subsequent to reading contents of a memory array, such an ECC engine may be used to correct read errors that may have occurred. However, an ECC overflow may occur if the number of read errors exceeds an ability of the ECC engine to correct such read errors.
  • Process 400 begins with such an ECC overflow at oval 410 .
  • a strategy to respond to such an ECC overflow may be determined. In one implementation, for example, a processor executing an application may determine such a strategy (e.g. number of iterations, voltage steps, etc).
  • a memory controller may determine such a strategy. In any such case, such determining may be based, at least in part, on the extent of the ECC overflow (e.g., number of read errors beyond an error-correcting ability of an ECC engine), and/or based, at least in part, on whether an ECC word generated by an ECC engine comprises a bit imbalance.
  • a strategy to respond to the ECC overflow may include implementing another ECC engine that is more robust (e.g., able to correct more read errors) than the first ECC engine (which led to the ECC overflow).
  • Implementing such a relatively robust ECC engine may involve a cost:
  • Such a robust ECC engine may utilize a relatively large portion of memory and/or processing resources. For example, relatively large portions of a memory array may be occupied by data involved in ECC processes as well as being occupied by executable code comprising the ECC engine itself.
  • a relatively robust ECC engine may take a relatively long time to correct read errors.
  • a strategy to respond to an ECC overflow need not involve a more robust ECC engine.
  • a strategy to respond to an ECC overflow may be determined based, at least in part, on whether an ECC word comprises a bit imbalance. If so, process 400 may proceed to block 430 to begin a process of modifying read bias. In an implementation, to determine whether read bias is to be increased or decreased, the number of 1's and the number of 0's of a particular ECC word may be counted, for example. If the ECC word comprises a greater number of 0 bits than 1 bits, then process 400 may proceed to block 450 , where read voltage may be increased by a particular amount. As discussed above, such an increase may compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming.
  • a process to read contents of the memory array may be performed again, this time using a higher read voltage than that used in the previous read (e.g., performed prior to the ECC overflow of oval 410 ).
  • Such a read process may result in read errors, which may be detected using an ECC word generated by the read process.
  • the number of read errors may be fewer than the number of read errors that resulted from the previous read process. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus involve an ECC overflow, as determined at diamond 454 .
  • process 400 may proceed to block 460 , where coded data may be refreshed.
  • process 400 may proceed to diamond 456 where a determination may be made as to whether the number of read errors, albeit enough to result in an ECC overflow, has decreased from the number of read errors that occurred prior to increasing read voltage at block 450 . If such a decrease in the number of read errors has occurred, process 400 may return to block 450 , where read voltage may be increased again for another iterative process of modifying read voltage. Accordingly, a determination may again be made at diamond 454 as to whether or not an ECC overflow occurred as a result of recently increased read voltage.
  • process 400 may proceed to block 460 to perform a refresh operation, as described above.
  • process 400 may again proceed to diamond 456 where a determination may be made as to whether the number of read errors has decreased from the number of read errors that occurred prior to increasing read voltage at block 450 . As described above, if such a decrease in the number of read errors has occurred, process 400 may once again return to block 450 , where read voltage may be increased again for another iterative process of modifying read voltage. However, if such a decrease in the number of read errors has not occurred, process 400 may return to block 420 , where a decision process to determine a strategy to respond to the ECC overflow may be revisited.
  • strategy options may include implementing a more robust ECC engine, or any other strategy among a number of possibilities (e.g., changing step size, repeating a process of reading, applying a majority voting scheme, acquiring information from known patterns written into arrays (which may have undergone drift similar to that of read cells, such drift that may be known to a memory controller to provide information for a correction algorithm, for example))
  • process 400 may proceed to block 440 , where read voltage may be decreased by a particular amount. As discussed above, such a decrease may compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming.
  • a process to read contents of the memory array may be performed again, this time using a lower read voltage than that used in the previous read (e.g., performed prior to the ECC overflow of oval 410 ). Such a read process may result in read errors, which may be detected using an ECC word generated by the read process.
  • the number of read errors may be fewer than the number of read errors that resulted from the previous read process. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus again involve an ECC overflow, as determined at diamond 444 . If no overflow occurred, then process 400 may proceed to block 460 , where a refresh operation may occur. On the other hand, in the event of an ECC overflow, process 400 may proceed to diamond 446 where a determination may be made as to whether the number of read errors, albeit enough to result in an ECC overflow, has decreased from the number of read errors that occurred prior to decreasing read voltage at block 440 .
  • process 400 may return to block 440 , where read voltage may be decreased again for another iterative process of modifying read voltage. Accordingly, a determination may again be made at diamond 444 as to whether or not an ECC overflow occurred as a result of recently decreased read voltage. If ECC overflow did not occur, then process 400 may proceed to block 460 where a refresh operation may occur. On the other hand, process 400 may again proceed to diamond 446 where a determination may be made as to whether the number of read errors has decreased from the number of read errors that occurred prior to decreasing read voltage at block 440 .
  • process 400 may once again return to block 440 , where read voltage may be decreased once again for another iterative process of modifying read voltage. However, if such a decrease in the number of read errors has not occurred, process 400 may return to block 420 , where a decision process to determine a strategy to respond to the ECC overflow may be revisited.
  • strategy options may include implementing a more robust ECC engine, or any other strategy among a number of possibilities.
  • FIG. 5 is a schematic diagram illustrating an exemplary embodiment of a computing system 500 including a memory device 510 .
  • a computing device may comprise one or more processors, for example, to execute an application and/or other code.
  • memory device 510 may comprise a PCM program buffer, such as program buffer 710 shown in FIG. 1 .
  • a computing device 504 may be representative of any device, appliance, or machine that may be configurable to manage memory device 510 .
  • Memory device 510 may include a memory controller 515 and a memory 522 .
  • computing device 504 may include: one or more computing devices and/or platforms, such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like; one or more personal computing or communication devices or appliances, such as, e.g., a personal digital assistant, mobile communication device, or the like; a computing system and/or associated service provider capability, such as, e.g., a database or data storage service provider/system; and/or any combination thereof.
  • computing devices and/or platforms such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like
  • personal computing or communication devices or appliances such as, e.g., a personal digital assistant, mobile communication device, or the like
  • a computing system and/or associated service provider capability such as, e.g., a database or data storage service provider/system; and/or any combination thereof.
  • computing device 504 may include at least one processing unit 520 that is operatively coupled to memory 522 through a bus 540 and a host or memory controller 515 .
  • Processing unit 520 is representative of one or more circuits configurable to perform at least a portion of a data computing procedure or process.
  • processing unit 520 may include one or more processors, controllers, microprocessors, microcontrollers, application specific integrated circuits, digital signal processors, programmable logic devices, field programmable gate arrays, and the like, or any combination thereof.
  • Processing unit 520 may include an operating system configured to communicate with memory controller 515 . Such an operating system may, for example, generate commands to be sent to memory controller 515 over bus 540 .
  • memory controller 515 may include an ECC engine 570 comprising circuitry and/or executable code to detect and/or correct read errors, as discussed above.
  • an ECC process performed by ECC engine 570 may be used to supplement programmed data with parity bits that include enough extra information for the data to be reconstructed if one or more bits of the data become corrupted.
  • an ECC word representing stored data may be applied during a process of reading the stored data and/or a process of verify-after-writing the data.
  • Memory controller 515 may perform commands such as read and/or write commands initiated by processing unit 520 .
  • memory controller 515 may provide a bias signal, such as that shown in plot 210 or 220 in FIG. 2 , for example, comprising a series of read voltages having individual voltage levels that sequentially increase or decrease from one read process to the next.
  • memory controller 515 may read contents of a memory 522 using a bias condition, and consequently count read errors resulting from reading the contents. Further, memory controller 515 may modify such a bias condition if, for example, the number of read errors exceeds a particular threshold number.
  • memory controller 515 may determine a codeword representing read contents of memory 522 by using an ECC engine 570 .
  • memory controller 515 may compare the number of bits of the codeword comprising a first logic state to the number of bits of the codeword comprising a second logic state. Such comparing may lead to a determination as to whether to increase or decrease the read bias condition for memory 522 .
  • Memory 522 is representative of any data storage mechanism.
  • Memory 522 may include, for example, a primary memory 524 and/or a secondary memory 526 .
  • Memory 522 may comprise PCM, for example.
  • Primary memory 524 may include, for example, a random access memory, read only memory, etc. While illustrated in this example as being separate from processing unit 520 , it should be understood that all or part of primary memory 524 may be provided within or otherwise co-located/coupled with processing unit 520 .
  • computing system 500 may comprise a program buffer including a PCM array and a PCM reference cell portion to store one or more particular reference states.
  • System 500 may also include a controller to apply a bias pulse to a cell of the PCM array to produce a cell current in response to a read operation, and to modify the cell current based, at least in part, on a reference current resulting from the one or more particular reference states.
  • System 500 may further include a processor to host one or more applications and to initiate the read operation.
  • Secondary memory 526 may include, for example, the same or similar type of memory as primary memory and/or one or more data storage devices or systems, such as, for example, a disk drive, an optical disc drive, a tape drive, a solid state memory drive, etc.
  • secondary memory 526 may be operatively receptive of, or otherwise configurable to couple to, a computer-readable medium 528 .
  • Computer-readable medium 528 may include, for example, any medium that can carry and/or make accessible data, code, and/or instructions for one or more of the devices in system 500 .
  • Computing device 504 may include, for example, an input/output 532 .
  • Input/output 532 is representative of one or more devices or features that may be configurable to accept or otherwise introduce human and/or machine inputs, and/or one or more devices or features that may be configurable to deliver or otherwise provide for human and/or machine outputs.
  • input/output device 532 may include an operatively configured display, speaker, keyboard, mouse, trackball, touch screen, data port, etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

During a read process for a memory device, such as a phase change memory device, a bias condition can be applied to a memory cell to determine the memory cell's state. The determined state of the memory cell can depend on a threshold voltage of the memory cell. The threshold voltage of the memory cell may shift over time. The shift in threshold voltage may result in read errors. The applied bias condition may be modified based on the resulting read errors.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. application Ser. No. 13/327,673, filed Dec. 15, 2011, titled READ BIAS MANAGEMENT TO REDUCE READ ERRORS FOR PHASE CHANGE MEMORY, the entire contents of which are incorporated by reference herein and made a part of this specification.
BACKGROUND OF THE INVENTION Field of the Invention
Subject matter disclosed herein relates to a memory device, and more particularly to read performance of phase change memory.
SUMMARY OF THE INVENTION
Phase change memory (PCM) may operate based, at least in part, on behavior and properties of one or more particular phase change materials, such as chalcogenide alloy and/or germanium antimony telluride (GST), just to name a few examples. Crystalline and amorphous states of such materials may have different electrical resistivities, thus presenting a basis by which information may be stored. An amorphous, high resistance state of such materials may represent a stored first binary state and a crystalline, low resistance state of such materials may represent a stored second binary state. Of course, such a binary representation of stored information is merely an example: PCM may also be used to store multiple memory states, represented by varying degrees of phase change material resistivity, for example.
A PCM cell may transition from an amorphous state to a crystalline state by applying a bias signal to the memory cell. Characteristics of a bias signal, such as peak magnitude and/or pulse width, for example, may be selected to allow a transition to a crystalline state. Reading a state of a PCM cell may be performed by applying a bias current or voltage to the PCM cell to detect the cell's resistivity.
Over time, various parameters of a PCM cell may drift or change as a result of changing PCM temperature, re-crystallization of phase change material, drift, and/or cycling, just to name a few examples. Such effects may lead to read errors of the PCM cell.
BRIEF DESCRIPTION OF THE DRAWINGS
Non-limiting and non-exhaustive embodiments will be described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various figures unless otherwise specified.
FIG. 1 is a plot of characteristics of bias signal waveforms, according to an embodiment.
FIG. 2 is a plot of characteristics of reference current or voltage values, according to an embodiment.
FIG. 3 is a flow diagram of a read process to read contents of a memory array, according to an embodiment.
FIG. 4 is a flow diagram of a read process to read contents of a memory array, according to another embodiment.
FIG. 5 is a schematic diagram illustrating an exemplary embodiment of a computing system.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of claimed subject matter. Thus, the appearances of the phrase “in one embodiment” or “an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in one or more embodiments.
Embodiments described herein include processes and/or electronic architecture involving managing read bias conditions for phase change memory (PCM) devices. As explained in detail below, such read bias conditions may comprise voltage or current applied to PCM cells to determine the state of the PCM cells. Managing read bias conditions of PCM cells may be used to avoid read errors and/or reduce the number of such read errors that may otherwise result from, for example, a shift in state distribution of PCM cells that may occur over time, as described below. A state distribution of a memory cell, for example, may correspond to one or more threshold voltages corresponding to states or logic levels stored by the memory cell. In other words, such states or logic levels may correspond to voltage ranges separated by one or more threshold voltages. For example, a first logic level may correspond to a first voltage range and a second logic level may correspond to a second voltage range. Such logic levels may correspond to one-bit data, such as “0” for a first logic level, and “1” for a second logic level, for example.
To describe one approach among a number of techniques, such logic levels stored in PCM cells may be read and determined based, at least in part, on the same one or more reference cell currents used to previously program the PCM cells. A cell current during a read process may result by applying a read voltage (e.g., a read bias condition, as described below) across a PCM cell so that the cell current during the read process may depend, at least in part, on a resistance of the PCM cell. Accordingly, the state or logic value of a PCM cell, e.g., level of resistance, may be determined by comparing such a cell current during the read process to reference cell currents applied while programming the state or logic value earlier. Over time, however, cell current for a particular voltage applied across a PCM cell may drift or change due to changes in physical properties (e.g., resistance and/or temperature changes) of the PCM cell, for example. Such changes, for example, may result from changes in various physical phenomena, such as resistivity drift of PCM material, temperature changes, retention, and so on. Such changes may occur during a time span prior to reading the memory cell. In one implementation, read errors may be a manifestation of such a change. For example, read errors may increasingly occur as changing physical properties of a memory cell continue to shift a threshold voltage of the memory cell upward or downward. Accordingly, in an embodiment, a method of reading a memory cell programmed at a particular program current or voltage may include modifying one or more read bias conditions to compensate for such changes in physical properties of the memory cell.
In an embodiment, compensating for a change in physical properties of a memory cell, as described above, may be performed in response to an error correction code (ECC) overflow event, described in detail below. Such an ECC overflow event may be indicated by an ECC engine. In one implementation, such an ECC engine may be located in a memory device that includes the memory cell. For example, a memory controller located in a memory device may include an ECC engine. In another implementation, such an ECC engine may be located outside the memory device, such as in a processor, an operating system, and/or an application, just to name a few examples. In the latter implementation, the ECC engine may receive read data from a memory controller, for example, in a memory device and provide the memory controller with error correction code, as described below.
An ECC engine may generate ECC as part of a process to confirm validity (e.g., correctness) of data read from memory and/or to correct such read data if errors are found. For example, a read process may include reading data from memory, generating ECC based, at least in part, on the read data, and using the ECC to detect read errors, if any. In the case of detected read errors, ECC may be used to correct such read errors. In another example, a write process may include writing data to memory, reading just-written data from the memory to confirm that data was correctly written, generating ECC based, at least in part, on the read data, and using the ECC to detect write errors, if any. In the case of detected write errors, ECC may be used to correct such write errors. An ECC engine may be designed for a capability to correct a particular number of errors in data. An ECC overflow event may result if the number of errors detected in data exceeds such a capability, wherein such errors in the data may not be corrected. In particular, a method of reading a memory cell may include a process of modifying a read bias condition based, at least in part, on ECC techniques and/or occurrence of read errors. In detail, contents of a memory device may be read using a bias condition, such as a read voltage or read current. Read errors resulting from reading contents of the memory device may be counted. The read bias condition may then be modified if the number of read errors exceeds a particular number. In one implementation, such a particular number may be based, at least in part, on ECC capability to correct errors. For example, a relatively modest ECC implementation may have a capability to correct two errors while a relatively robust ECC implementation may have a capability to correct four or more errors. Accordingly, a read bias condition may be modified so as to attempt to prevent the number of read errors from exceeding a correcting-capability of an ECC implementation. Of course, such numbers and details of ECC implementation are merely examples, and claimed subject matter is not so limited.
In one implementation, an ECC process may be used to supplement programmed (or write) data with parity bits that include enough extra information for the data to be reconstructed if one or more bits of the data become corrupted. Such an ECC process may generate coded data (e.g., a codeword) based, at least in part, on programmed data, parity of the programmed data, details of the ECC process, and so on. For example, such coded data representing stored data may be applied during a process of reading the stored data and/or a process of verify-after-writing the data. In a particular implementation, coded data may be based, at least in part, on parallel encoding and decoding techniques. Such techniques may involve a 2-bit error correcting binary Bose-Chaudhuri-Hocquenghem (BCH) code, Reed-Solomon code, or a Convolutional code, just to name a few examples.
In an embodiment, coded data may comprise multiple bits of logic 1's or 0's. The number of 1's and the number of 0's of a particular ECC word may be counted. From such counts, a determination may be made as to whether the coded data comprises more 1's than 0's or vise versa. Such a situation may be called “bit imbalance”. In a number of ECC implementations, a bit imbalance may indicate that a threshold voltage and/or resistivity of one or more memory cells drifted from the time the memory cells were programmed. For example, if coded data comprises more 1's than 0's, then a memory cell's threshold voltage may have drifted upward from the memory cell's threshold voltage level during programming. In such a case, a read bias condition such as a read voltage or read current may be decreased to compensate for such upward drift of threshold voltage. On the other hand, if coded data comprises more 0's than 1's, then threshold voltage may have drifted downward from the memory cell's threshold voltage level during programming. In such a case, a read bias condition such as a read voltage or read current may be increased to compensate for such downward drift of threshold voltage. As described in detail below, such increasing or decreasing a read bias voltage or current may be performed stepwise while iteratively determining whether subsequent read error events diminish. Of course, such details describing read bias condition compensation are merely examples, and claimed subject matter is not so limited.
FIG. 1 is a plot 100 of characteristics of bias signal waveforms that may be used to program a PCM cell, according to an embodiment. A PCM cell may be reset by melting phase change material by applying a relatively high amplitude, relatively short duration electrical programming pulse, or bias signal 120. In a reset state, an active region of phase change material may comprise an amorphous region that is dome-shaped, disposed adjacent to a heater element in a PCM cell, for example. Crystallized phase change material may surround such an amorphous region. In such a state, a PCM cell may have a relatively high electrical resistance. In a subsequent process, a PCM cell may be set by crystallizing a dome-shaped amorphous region so that a substantially entire region of phase change material may be crystalline. Such a process may involve ramping down a voltage and/or current of relatively low amplitude, relatively long duration bias signal 110 applied to a PCM cell to crystallize the PCM cell's phase change material. In such a state, a PCM cell may have a relatively low electrical resistance. In an implementation, a particular bias signal 120 may be selected to set a PCM cell to a particular state corresponding to a particular range of resistances. For example, bias signal 120 may be decreased in duration and/or amplitude. However, such a particular range of resistances may vary or drift from the time that a PCM cell is programmed to the time that the PCM cell is read. For example, PCM cells may comprise amorphous material that may drift towards higher resistivity, particularly if crystallization of the material is not complete, such as in PCM cells used in a multilevel application. PCM cells may comprise amorphous material that may evolve towards a crystalline state, which may involve thermodynamically lower energy states. In addition, cycling through states of a PCM cell may also affect distribution of read currents or thresholds. Of course, such details of PCM cells are merely examples, and claimed subject matter is not so limited.
FIG. 2 is a plot 200 of characteristics of read bias current or voltage values for a memory array, according to an embodiment. In detail, plot 200 comprises plots of read bias current or voltage as a function of the number of read iterations in a process of reading a memory array. For sake of clarity, read bias current or voltage will hereinafter be referred to as read voltage or read bias. However, descriptions involving voltage may be replaced with descriptions involving current, with any proper change clear to those skilled in the art. In any case, claimed subject matter is not limited in this respect. Plot 210 comprises increasing steps of read voltage that may be iteratively applied to one or more memory cells. For example, read voltage 212 may be applied to one or more memory cells during one iteration of a process to read contents of the memory cells, whereas read voltage 216 may be applied to the memory cells during a subsequent iteration. Similarly, as shown by plot 220, read voltage 222 may be applied to one or more memory cells during one iteration of a process to read contents of the memory cells, whereas read voltage 226 may be applied to the memory cells during a subsequent iteration. Such iterations, for example, may comprise a process of reading, counting read errors (if any), and/or determining whether to increase read voltage or decrease read voltage based, at least in part, on the number of counted read errors. Step size 230 from one read voltage value to a subsequent read voltage value may vary from one implementation to another. For example, in one implementation, step size 230 may vary from one iteration step to another iteration step. In another implementation, step size 230 may be remain constant from one iteration step to another iteration step. For example, step sizes may comprise a voltage in the range of tens to hundreds of millivolts. Though plot 200 shows particular number of iterations, such a number of iterations may vary from one implementation to another. For example, such a number of iterations may be based, at least in part, on step size 230, results of increasing or decreasing bias voltage on the number of read error events, particular algorithms used to read from memory, and so on. For example, one particular algorithm may involve determining a rate at which error events diminish as a result of stepping through values of read voltage. Another particular algorithm may step through values of read voltage a particular number of times regardless of the effects on resulting read errors. Of course, any number of algorithms may be involved, and claimed subject matter is not so limited.
FIG. 3 is a flow diagram of a read process 300 to read contents of a memory array, according to an embodiment. Such a read process may be performed by a memory controller in response to receiving a read request from a processor. For example, a processor may execute an application resulting in a read request directed to a memory controller, which may perform read process 300, though claimed subject matter is not so limited. Read process 300 may involve an ECC engine to detect and/or correct read errors, as described above. Accordingly, subsequent to reading contents of a memory array, such an ECC engine may be used to correct read errors that may have occurred. However, an ECC engine may be limited in its capability to correct more than a particular number of errors. An ECC overflow may occur if the number of read errors exceeds such a particular number. At diamond 310, a determination may be made as to whether such an ECC overflow has occurred. If not, then process 300 may proceed to block 315 where read process 300 may be completed with read errors (if any) being corrected by a capable ECC engine. However, if an ECC overflow has occurred, then the ECC engine is not capable of correcting any or all of the read errors that led to the ECC overflow. In such a case, process 300 may proceed to block 320 where coded data may be retrieved from the ECC engine, for example. As discussed above, such coded data may comprise multiple bits of logic 1's or 0's. In an implementation, coded data may be generated by combining a data word with parity code bits obtained by processing the data word with a deterministic algorithm, for example. If coded data is retrieved from a memory array then these parity code bits may be compared to parity code bits corresponding to the original data. If the two sets of parity code bits do not match the data word may be changed accordingly until the parity bits match. Consequently, errors present in the data word may be corrected. In block 330, the number of 1's and the number of 0's of a particular ECC word may be counted. From such counts, a determination may be made as to whether the ECC word comprises a bit imbalance, having more 1's than 0's or vise versa. At block 340, a strategy to respond to an ECC overflow may be determined based, at least in part, on whether an ECC word comprises a bit imbalance. If so, then process 300 may proceed to diamond 350 where a determination may be made as to whether the ECC word comprises a greater number of 0 bits than 1 bits. If so, then process 300 may proceed to block 370, where read voltage may be increased. Such an increase may compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming, as discussed above. Such a read voltage increase may be similar to a voltage increase represented by step size 230 shown in FIG. 2, for example. At block 373, a process to read contents of the memory array may be performed again, this time using a higher read voltage than that used in the previous read (e.g., performed prior to diamond 310). Such a read process may result in read errors, which may be detected using an ECC word generated by an ECC engine involved in the read process. In one case, the number of read errors may be fewer than the number of read errors that resulted from the previous read. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus involve an ECC overflow, as determined at diamond 376. In the event of an ECC overflow, process 300 may return to block 370 and read voltage may be increased again to further attempt to compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming. Accordingly, process 300 may loop through an iterative process of increasing read voltage, reading contents of a memory array, determining whether the number of resulting read errors exceeds an error-correcting capability of an ECC engine, and if so, repeating the iterative process. On the other hand, if the number of resulting read errors is within an error-correcting capability of an ECC engine, process 300 may proceed to block 380, where an ECC word may be refreshed. This may mean that a new data code is generated following a procedure similar or the same as that described above for the ECC engine operation. A new programming phase may restore corrected content, thus nullifying drift that may have occurred for some or all bits, for example.
On the other hand, returning to diamond 350, if an ECC word comprises more 1's than 0's, then process 300 may proceed to block 360, where read voltage may be decreased. Such a decrease may compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming, as discussed above. Such a read voltage decrease may be similar to step size 230 shown in FIG. 2, for example. At block 363, a process to read contents of the memory array may be performed again, this time using a lower read voltage than that used in the previous read (e.g., performed prior to diamond 310). Such a read process may result in read errors, which may be detected using an ECC word generated by the ECC engine involved in the read process. In one case, the number of read errors may be fewer than the number of read errors that resulted from the previous read. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus involve an ECC overflow, as determined at diamond 366. In the event of an ECC overflow, process 300 may return to block 360, and read voltage may be decreased again to further attempt to compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming. Accordingly, process 300 may loop through an iterative process of decreasing read voltage, reading contents of a memory array, determining whether the number of resulting read errors exceeds an error-correcting capability of an ECC engine, and if so, repeating the iterative process. On the other hand, if the number of resulting read errors is within an error-correcting capability of an ECC engine, process 300 may proceed to block 380, where new coded data may be generated by an ECC engine, as previously explained. Of course, such details of process 300 are merely examples, and claimed subject matter is not so limited.
FIG. 4 is a flow diagram of a read process 400 to read contents of a memory array, according to another embodiment. Process 400 may involve an ECC engine to detect and/or correct read errors, as described above. Similar to the case for process 300, subsequent to reading contents of a memory array, such an ECC engine may be used to correct read errors that may have occurred. However, an ECC overflow may occur if the number of read errors exceeds an ability of the ECC engine to correct such read errors. Process 400 begins with such an ECC overflow at oval 410. At block 420, a strategy to respond to such an ECC overflow may be determined. In one implementation, for example, a processor executing an application may determine such a strategy (e.g. number of iterations, voltage steps, etc). In another implementation, a memory controller may determine such a strategy. In any such case, such determining may be based, at least in part, on the extent of the ECC overflow (e.g., number of read errors beyond an error-correcting ability of an ECC engine), and/or based, at least in part, on whether an ECC word generated by an ECC engine comprises a bit imbalance.
If, for example, merely a few read errors beyond an error-correcting ability of an ECC engine have occurred, then a strategy to respond to the ECC overflow may include implementing another ECC engine that is more robust (e.g., able to correct more read errors) than the first ECC engine (which led to the ECC overflow). Implementing such a relatively robust ECC engine, however, may involve a cost: Such a robust ECC engine may utilize a relatively large portion of memory and/or processing resources. For example, relatively large portions of a memory array may be occupied by data involved in ECC processes as well as being occupied by executable code comprising the ECC engine itself. In addition, a relatively robust ECC engine may take a relatively long time to correct read errors. Thus, a strategy to respond to an ECC overflow need not involve a more robust ECC engine.
As mentioned above, a strategy to respond to an ECC overflow may be determined based, at least in part, on whether an ECC word comprises a bit imbalance. If so, process 400 may proceed to block 430 to begin a process of modifying read bias. In an implementation, to determine whether read bias is to be increased or decreased, the number of 1's and the number of 0's of a particular ECC word may be counted, for example. If the ECC word comprises a greater number of 0 bits than 1 bits, then process 400 may proceed to block 450, where read voltage may be increased by a particular amount. As discussed above, such an increase may compensate for a possibility that threshold voltage of a memory array may have drifted downward from the memory array's threshold voltage level during programming. At block 452, a process to read contents of the memory array may be performed again, this time using a higher read voltage than that used in the previous read (e.g., performed prior to the ECC overflow of oval 410). Such a read process may result in read errors, which may be detected using an ECC word generated by the read process. As may be determined at diamond 456 described below, the number of read errors may be fewer than the number of read errors that resulted from the previous read process. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus involve an ECC overflow, as determined at diamond 454. If no overflow occurred, then process 400 may proceed to block 460, where coded data may be refreshed. On the other hand, in the event of an ECC overflow, process 400 may proceed to diamond 456 where a determination may be made as to whether the number of read errors, albeit enough to result in an ECC overflow, has decreased from the number of read errors that occurred prior to increasing read voltage at block 450. If such a decrease in the number of read errors has occurred, process 400 may return to block 450, where read voltage may be increased again for another iterative process of modifying read voltage. Accordingly, a determination may again be made at diamond 454 as to whether or not an ECC overflow occurred as a result of recently increased read voltage. If ECC overflow did not occur, then process 400 may proceed to block 460 to perform a refresh operation, as described above. On the other hand, process 400 may again proceed to diamond 456 where a determination may be made as to whether the number of read errors has decreased from the number of read errors that occurred prior to increasing read voltage at block 450. As described above, if such a decrease in the number of read errors has occurred, process 400 may once again return to block 450, where read voltage may be increased again for another iterative process of modifying read voltage. However, if such a decrease in the number of read errors has not occurred, process 400 may return to block 420, where a decision process to determine a strategy to respond to the ECC overflow may be revisited. As discussed above, strategy options may include implementing a more robust ECC engine, or any other strategy among a number of possibilities (e.g., changing step size, repeating a process of reading, applying a majority voting scheme, acquiring information from known patterns written into arrays (which may have undergone drift similar to that of read cells, such drift that may be known to a memory controller to provide information for a correction algorithm, for example))
Returning to diamond 430, if the ECC word comprises a greater number of 1 bits than 0 bits, then process 400 may proceed to block 440, where read voltage may be decreased by a particular amount. As discussed above, such a decrease may compensate for a possibility that threshold voltage of a memory array may have drifted upward from the memory array's threshold voltage level during programming. At block 442, a process to read contents of the memory array may be performed again, this time using a lower read voltage than that used in the previous read (e.g., performed prior to the ECC overflow of oval 410). Such a read process may result in read errors, which may be detected using an ECC word generated by the read process. As may be determined at diamond 446 described below, the number of read errors may be fewer than the number of read errors that resulted from the previous read process. Although such a number of read errors may be fewer, the number of read errors may still be in excess of an error-correcting capability of an ECC engine. Such a case may thus again involve an ECC overflow, as determined at diamond 444. If no overflow occurred, then process 400 may proceed to block 460, where a refresh operation may occur. On the other hand, in the event of an ECC overflow, process 400 may proceed to diamond 446 where a determination may be made as to whether the number of read errors, albeit enough to result in an ECC overflow, has decreased from the number of read errors that occurred prior to decreasing read voltage at block 440. If such a decrease in the number of read errors has occurred, process 400 may return to block 440, where read voltage may be decreased again for another iterative process of modifying read voltage. Accordingly, a determination may again be made at diamond 444 as to whether or not an ECC overflow occurred as a result of recently decreased read voltage. If ECC overflow did not occur, then process 400 may proceed to block 460 where a refresh operation may occur. On the other hand, process 400 may again proceed to diamond 446 where a determination may be made as to whether the number of read errors has decreased from the number of read errors that occurred prior to decreasing read voltage at block 440. As described above, if such a decrease in the number of read errors has occurred, process 400 may once again return to block 440, where read voltage may be decreased once again for another iterative process of modifying read voltage. However, if such a decrease in the number of read errors has not occurred, process 400 may return to block 420, where a decision process to determine a strategy to respond to the ECC overflow may be revisited. As discussed above, strategy options may include implementing a more robust ECC engine, or any other strategy among a number of possibilities.
FIG. 5 is a schematic diagram illustrating an exemplary embodiment of a computing system 500 including a memory device 510. Such a computing device may comprise one or more processors, for example, to execute an application and/or other code. For example, memory device 510 may comprise a PCM program buffer, such as program buffer 710 shown in FIG. 1. A computing device 504 may be representative of any device, appliance, or machine that may be configurable to manage memory device 510. Memory device 510 may include a memory controller 515 and a memory 522. By way of example but not limitation, computing device 504 may include: one or more computing devices and/or platforms, such as, e.g., a desktop computer, a laptop computer, a workstation, a server device, or the like; one or more personal computing or communication devices or appliances, such as, e.g., a personal digital assistant, mobile communication device, or the like; a computing system and/or associated service provider capability, such as, e.g., a database or data storage service provider/system; and/or any combination thereof.
It is recognized that all or part of the various devices shown in system 500, and the processes and methods as further described herein, may be implemented using or otherwise including hardware, firmware, software, or any combination thereof. Thus, by way of example but not limitation, computing device 504 may include at least one processing unit 520 that is operatively coupled to memory 522 through a bus 540 and a host or memory controller 515. Processing unit 520 is representative of one or more circuits configurable to perform at least a portion of a data computing procedure or process. By way of example but not limitation, processing unit 520 may include one or more processors, controllers, microprocessors, microcontrollers, application specific integrated circuits, digital signal processors, programmable logic devices, field programmable gate arrays, and the like, or any combination thereof. Processing unit 520 may include an operating system configured to communicate with memory controller 515. Such an operating system may, for example, generate commands to be sent to memory controller 515 over bus 540. In one implementation, memory controller 515 may include an ECC engine 570 comprising circuitry and/or executable code to detect and/or correct read errors, as discussed above. For example, an ECC process performed by ECC engine 570 may be used to supplement programmed data with parity bits that include enough extra information for the data to be reconstructed if one or more bits of the data become corrupted. For example, such an ECC word representing stored data may be applied during a process of reading the stored data and/or a process of verify-after-writing the data.
Memory controller 515 may perform commands such as read and/or write commands initiated by processing unit 520. In response to a read command, for example, memory controller 515 may provide a bias signal, such as that shown in plot 210 or 220 in FIG. 2, for example, comprising a series of read voltages having individual voltage levels that sequentially increase or decrease from one read process to the next. In particular, memory controller 515 may read contents of a memory 522 using a bias condition, and consequently count read errors resulting from reading the contents. Further, memory controller 515 may modify such a bias condition if, for example, the number of read errors exceeds a particular threshold number. In one implementation, memory controller 515 may determine a codeword representing read contents of memory 522 by using an ECC engine 570. In such a case, memory controller 515 may compare the number of bits of the codeword comprising a first logic state to the number of bits of the codeword comprising a second logic state. Such comparing may lead to a determination as to whether to increase or decrease the read bias condition for memory 522.
Memory 522 is representative of any data storage mechanism. Memory 522 may include, for example, a primary memory 524 and/or a secondary memory 526. Memory 522 may comprise PCM, for example. Primary memory 524 may include, for example, a random access memory, read only memory, etc. While illustrated in this example as being separate from processing unit 520, it should be understood that all or part of primary memory 524 may be provided within or otherwise co-located/coupled with processing unit 520.
In one embodiment, computing system 500 may comprise a program buffer including a PCM array and a PCM reference cell portion to store one or more particular reference states. System 500 may also include a controller to apply a bias pulse to a cell of the PCM array to produce a cell current in response to a read operation, and to modify the cell current based, at least in part, on a reference current resulting from the one or more particular reference states. System 500 may further include a processor to host one or more applications and to initiate the read operation.
Secondary memory 526 may include, for example, the same or similar type of memory as primary memory and/or one or more data storage devices or systems, such as, for example, a disk drive, an optical disc drive, a tape drive, a solid state memory drive, etc. In certain implementations, secondary memory 526 may be operatively receptive of, or otherwise configurable to couple to, a computer-readable medium 528. Computer-readable medium 528 may include, for example, any medium that can carry and/or make accessible data, code, and/or instructions for one or more of the devices in system 500.
Computing device 504 may include, for example, an input/output 532. Input/output 532 is representative of one or more devices or features that may be configurable to accept or otherwise introduce human and/or machine inputs, and/or one or more devices or features that may be configurable to deliver or otherwise provide for human and/or machine outputs. By way of example but not limitation, input/output device 532 may include an operatively configured display, speaker, keyboard, mouse, trackball, touch screen, data port, etc.
While there has been illustrated and described what are presently considered to be example embodiments, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from claimed subject matter. Additionally, many modifications may be made to adapt a particular situation to the teachings of claimed subject matter without departing from the central concept described herein. Therefore, it is intended that claimed subject matter not be limited to the particular embodiments disclosed, but that such claimed subject matter may also include all embodiments falling within the scope of the appended claims, and equivalents thereof.

Claims (20)

What is claimed is:
1. A method comprising:
applying a bias condition to read contents of a memory device;
determining coded data representing the read contents of the memory device; and
determining whether to increase or decrease the bias condition based on a comparison of a number of bits of the coded data in a first logic state to a number of bits of the coded data in a second logic state.
2. The method of claim 1, wherein the coded data is determined by using an error correction code (ECC) engine.
3. The method of claim 1, further comprising determining a number of read errors in the contents based on the comparison of the number of bits of the coded data in the first logic state to the number of bits of the coded data in the second logic state, wherein the bias condition is increased or decreased based on whether the number of read errors is greater than a threshold number.
4. The method of claim 3, further comprising increasing or decreasing the bias condition until the number of the read errors comprises a number less than or equal to the threshold number.
5. The method of claim 3, further comprising:
sequentially stepping through multiple values of the bias condition; and
determining whether to continue the sequential stepping based on whether the number of the read errors comprises a number less than or equal to the threshold number.
6. The method of claim 1, further comprising increasing or decreasing the bias condition in response to an ECC overflow event.
7. The method of claim 6, further comprising:
after increasing or decreasing the bias condition, reading the contents of the memory device using the increased or decreased bias condition;
determining a number of read errors resulting from the contents of the memory device; and
further increasing or further decreasing the bias condition when the number of the read errors is greater than a threshold number.
8. The method of claim 1, wherein the bias condition comprises a read bias voltage, wherein the first logic state is associated with logic “0” bits of the coded data, and wherein the second logic state is associated with logic “1” bits of the coded data, and further comprising:
comparing a number of logic “0” bits of the coded data to a number of logic “1” bits of the coded data;
increasing the bias condition when the number of logic “0” bits is greater than the number of logic “1” bits; and
decreasing the bias condition when the number of logic “1” bits is greater than the number of logic “0” bits.
9. An apparatus comprising:
a controller configured to:
apply a bias condition to read contents of a memory device;
determine a codeword representing the contents of the memory device; and
determine whether to increase or decrease the bias condition based on a comparison of a number of bits of the codeword in a first logic state to a number of bits of the codeword in a second logic state.
10. The apparatus of claim 9, wherein the codeword is determined by using an error correction code (ECC) engine.
11. The apparatus of claim 9, wherein the controller is further configured to determine a number of read errors in the contents based on the comparison of the number of bits of the codeword in the first logic state to the number of bits of the codeword in the second logic state, wherein the bias condition is increased or decreased based on whether the number of read errors is greater than a threshold number.
12. The apparatus of claim 11, wherein the controller is further configured to iteratively increase or decrease the bias condition until the number of the read errors comprises a number less than or equal to the threshold number.
13. The apparatus of claim 11, wherein the controller is further configured to:
step through multiple values of the bias condition; and
determine whether to continue the stepping based on whether the number of the read errors comprises a number less than or equal to the threshold number.
14. The apparatus of claim 9, wherein the controller is further configured to:
read, after increasing or decreasing the bias condition, the contents of the memory device using the increased or decreased bias condition;
count read errors resulting from the contents of the memory device; and
further increase or further decrease the bias condition when the count of the read errors is greater than a threshold number.
15. The apparatus of claim 9, wherein the bias condition comprises a read bias voltage, wherein the first logic state is associated with logic “0” bits of the codeword, wherein the second logic state is associated with logic “1” bits of the codeword, and wherein the controller is further configured to:
compare a number of logic “0” bits of the codeword to a number of logic “1” bits of the codeword; and
increase the bias condition when the number of logic “0” bits is greater than the number of logic “1” bits; and
decrease the bias condition when the number of logic “1” bits is greater than the number of logic “0” bits.
16. A system comprising:
a memory device comprising:
a memory controller configured to:
apply a bias condition to read contents of the memory device;
determine a codeword representing the contents of the memory device by using an error correction code (ECC) engine; and
determine whether to increase or decrease the bias condition based on a comparison of a number of bits of the codeword in a first logic state to a number of bits of the codeword in a second logic state; and
a processor to host one or more applications and to initiate reading the contents of the memory device.
17. The system of claim 16, wherein the controller is further configured to increase or decrease the bias condition when a count of read errors based on the contents is greater than a threshold number.
18. The system of claim 17, wherein the controller is further configured to:
read, after increasing or decreasing the bias condition, the contents of the memory device using the modified bias condition;
count read errors resulting from the contents of the memory device; and
further increase or further decrease the bias condition when a number of the counted read errors is greater than the threshold number.
19. The system of claim 16, wherein the memory device comprises a phase change memory (PCM) array.
20. The system of claim 16, wherein the bias condition comprises a read bias voltage, wherein the first logic state is associated with logic “0” bits of the codeword, wherein the second logic state is associated with logic “1” bits of the codeword, and wherein the controller is further configured to:
compare a number of logic “0” bits of the codeword to a number of logic “1” bits of the codeword; and
increasing the bias condition when the number of logic “0” bits is greater than the number of logic “1” bits; and
decreasing the bias condition when the number of logic “1” bits is greater than the number of logic “0” bits.
US14/269,869 2011-12-15 2014-05-05 Read bias management to reduce read errors for phase change memory Active US9164829B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/269,869 US9164829B2 (en) 2011-12-15 2014-05-05 Read bias management to reduce read errors for phase change memory

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/327,673 US8719647B2 (en) 2011-12-15 2011-12-15 Read bias management to reduce read errors for phase change memory
US14/269,869 US9164829B2 (en) 2011-12-15 2014-05-05 Read bias management to reduce read errors for phase change memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/327,673 Continuation US8719647B2 (en) 2011-12-15 2011-12-15 Read bias management to reduce read errors for phase change memory

Publications (2)

Publication Number Publication Date
US20140325314A1 US20140325314A1 (en) 2014-10-30
US9164829B2 true US9164829B2 (en) 2015-10-20

Family

ID=48611504

Family Applications (2)

Application Number Title Priority Date Filing Date
US13/327,673 Active 2032-05-16 US8719647B2 (en) 2011-12-15 2011-12-15 Read bias management to reduce read errors for phase change memory
US14/269,869 Active US9164829B2 (en) 2011-12-15 2014-05-05 Read bias management to reduce read errors for phase change memory

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/327,673 Active 2032-05-16 US8719647B2 (en) 2011-12-15 2011-12-15 Read bias management to reduce read errors for phase change memory

Country Status (6)

Country Link
US (2) US8719647B2 (en)
EP (1) EP2791942B1 (en)
JP (1) JP5735186B2 (en)
KR (1) KR101690395B1 (en)
CN (1) CN103988263B (en)
WO (1) WO2013089950A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929223B2 (en) 2018-11-19 2021-02-23 Samsung Electronics Co., Ltd. Memory controller including error correction code circuit, memory system including the memory controller, and operating method of the memory system

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719647B2 (en) 2011-12-15 2014-05-06 Micron Technology, Inc. Read bias management to reduce read errors for phase change memory
US9257203B2 (en) * 2012-12-06 2016-02-09 Micron Technology, Inc. Setting a default read signal based on error correction
US9070479B2 (en) * 2013-01-21 2015-06-30 Sandisk Technologies Inc. Systems and methods of updating read voltages
US9135993B2 (en) * 2013-02-07 2015-09-15 Seagate Technology Llc Temperature based logic profile for variable resistance memory cells
US9058869B2 (en) * 2013-02-07 2015-06-16 Seagate Technology Llc Applying a bias signal to memory cells to reverse a resistance shift of the memory cells
US9280412B2 (en) * 2013-03-12 2016-03-08 Macronix International Co., Ltd. Memory with error correction configured to prevent overcorrection
US9542258B1 (en) * 2013-03-15 2017-01-10 Western Digital Technologies, Inc. System and method for error-minimizing voltage threshold selection
US20160203877A1 (en) 2015-01-08 2016-07-14 Delphi Technologies, Inc. Memory device with data validity check
TWI569270B (en) 2015-01-22 2017-02-01 旺宏電子股份有限公司 Memory operating method and associated memory device
US9842662B2 (en) * 2015-02-16 2017-12-12 Texas Instruments Incorporated Screening for data retention loss in ferroelectric memories
JP6520576B2 (en) 2015-08-27 2019-05-29 ソニー株式会社 Memory, information processing system, and memory control method
TWI643196B (en) * 2017-06-22 2018-12-01 點序科技股份有限公司 Flash memory apparatus and data reading method thereof
US10366763B2 (en) 2017-10-31 2019-07-30 Micron Technology, Inc. Block read count voltage adjustment
CN109933424B (en) * 2019-01-22 2020-11-13 浙江工商大学 PCM memory line multiplexing method based on data cyclic shift
US10908845B1 (en) * 2019-08-27 2021-02-02 Micron Technology, Inc. Managing threshold voltage drift based on a temperature-dependent slope of the threshold voltage drift of a memory sub-system
KR20220108144A (en) * 2019-12-03 2022-08-02 마이크론 테크놀로지, 인크. Memory device and method of operation thereof
CN113284533B (en) * 2020-02-20 2023-10-13 华邦电子股份有限公司 Memory device and method of adjusting parameters for memory device
US11211122B1 (en) * 2020-08-27 2021-12-28 Micron Technology, Inc. Increase of a sense current in memory
US11494114B1 (en) * 2021-04-26 2022-11-08 Micron Technology, Inc. Read threshold adjustment techniques for non-binary memory cells
US11443828B1 (en) * 2021-04-26 2022-09-13 Micron Technology, Inc. Read threshold adjustment techniques for memory

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864573A (en) 1986-09-25 1989-09-05 Robert Bosch Gmbh Apparatus for reproducing a pcm modulated signal, comprising a muting circuit
US6486661B2 (en) * 2001-02-12 2002-11-26 Delphi Technologies, Inc. Sensor bias drift compensation
US20070011513A1 (en) 2005-06-13 2007-01-11 Intel Corporation Selective activation of error mitigation based on bit level error count
US7164596B1 (en) * 2005-07-28 2007-01-16 Texas Instruments Incorporated SRAM cell with column select line
US7333364B2 (en) 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
WO2008057822A2 (en) 2006-11-03 2008-05-15 Sandisk Corporation Nonvolatile memory with variable read threshold
US7400526B2 (en) 2005-06-28 2008-07-15 Infineon Technologies Ag Memory element, memory read-out element and memory cell
JP2009099199A (en) 2007-10-17 2009-05-07 Toshiba Corp Nonvolatile semiconductor memory device
US20090164710A1 (en) 2007-12-20 2009-06-25 Samsung Electronics Co., Ltd. Semiconductor memory system and access method thereof
US20090199074A1 (en) 2008-02-05 2009-08-06 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
KR20090089657A (en) 2008-02-19 2009-08-24 삼성전자주식회사 Memory device and memory data read method
US20090292969A1 (en) 2008-05-21 2009-11-26 Chun Fung Man Adjustable read reference for non-volatile memory
US20090290418A1 (en) 2008-05-20 2009-11-26 Jung Chul Han Method of verifying a program operation in a non-volatile memory device
US20110182119A1 (en) 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US20110219288A1 (en) 2010-03-05 2011-09-08 Samsung Electronics Co., Ltd Method of operating nonvolatile memory device, method of operating controller, and method of operating memory system including the same
US8380909B2 (en) 2009-04-08 2013-02-19 Google Inc. Multiple command queues having separate interrupts
US8719647B2 (en) 2011-12-15 2014-05-06 Micron Technology, Inc. Read bias management to reduce read errors for phase change memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004015928A1 (en) * 2004-03-31 2005-10-27 Infineon Technologies Ag Write / erase method for resistively switching memory devices
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
JP5657876B2 (en) * 2009-10-07 2015-01-21 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. Semiconductor memory device
KR101678886B1 (en) * 2009-11-25 2016-11-23 삼성전자주식회사 Multi-level Phase-change Memory Device and Operation Method thereof

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864573A (en) 1986-09-25 1989-09-05 Robert Bosch Gmbh Apparatus for reproducing a pcm modulated signal, comprising a muting circuit
US7333364B2 (en) 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US6486661B2 (en) * 2001-02-12 2002-11-26 Delphi Technologies, Inc. Sensor bias drift compensation
US20070011513A1 (en) 2005-06-13 2007-01-11 Intel Corporation Selective activation of error mitigation based on bit level error count
US7400526B2 (en) 2005-06-28 2008-07-15 Infineon Technologies Ag Memory element, memory read-out element and memory cell
US7164596B1 (en) * 2005-07-28 2007-01-16 Texas Instruments Incorporated SRAM cell with column select line
WO2008057822A2 (en) 2006-11-03 2008-05-15 Sandisk Corporation Nonvolatile memory with variable read threshold
JP2009099199A (en) 2007-10-17 2009-05-07 Toshiba Corp Nonvolatile semiconductor memory device
US20090164710A1 (en) 2007-12-20 2009-06-25 Samsung Electronics Co., Ltd. Semiconductor memory system and access method thereof
US20090199074A1 (en) 2008-02-05 2009-08-06 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
KR20090089657A (en) 2008-02-19 2009-08-24 삼성전자주식회사 Memory device and memory data read method
US7872909B2 (en) 2008-02-19 2011-01-18 Samsung Electronics Co., Ltd. Memory device and memory data read method
US20090290418A1 (en) 2008-05-20 2009-11-26 Jung Chul Han Method of verifying a program operation in a non-volatile memory device
US20090292969A1 (en) 2008-05-21 2009-11-26 Chun Fung Man Adjustable read reference for non-volatile memory
US8380909B2 (en) 2009-04-08 2013-02-19 Google Inc. Multiple command queues having separate interrupts
US20110182119A1 (en) 2010-01-27 2011-07-28 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US20110219288A1 (en) 2010-03-05 2011-09-08 Samsung Electronics Co., Ltd Method of operating nonvolatile memory device, method of operating controller, and method of operating memory system including the same
US8719647B2 (en) 2011-12-15 2014-05-06 Micron Technology, Inc. Read bias management to reduce read errors for phase change memory
CN103988263A (en) 2011-12-15 2014-08-13 美光科技公司 Read bias management to reduce read errors for phase change memory
EP2791942A1 (en) 2011-12-15 2014-10-22 Micron Technology, INC. Read bias management to reduce read errors for phase change memory

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
International Preliminary Report and Written Opinion Appln. No. PCT/US2012/064224, issued on Jun. 17, 2014.
International Search Report and Written Opinion for Appln. No. PCT/US2012/064224, mailed on Mar. 29, 2013.
Notice of Allowance issued on Mar. 31, 2015 in corresponding Japanese Patent Application No. 2014-547246.
Supplementary European Search Report dated Jun. 24, 2015 issued in corresponding European Patent Application No. 12858227.7.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10929223B2 (en) 2018-11-19 2021-02-23 Samsung Electronics Co., Ltd. Memory controller including error correction code circuit, memory system including the memory controller, and operating method of the memory system

Also Published As

Publication number Publication date
KR20140102739A (en) 2014-08-22
EP2791942B1 (en) 2019-05-15
EP2791942A4 (en) 2015-07-22
US20130159796A1 (en) 2013-06-20
KR101690395B1 (en) 2016-12-27
US20140325314A1 (en) 2014-10-30
US8719647B2 (en) 2014-05-06
EP2791942A1 (en) 2014-10-22
JP2015500548A (en) 2015-01-05
WO2013089950A1 (en) 2013-06-20
CN103988263B (en) 2017-03-08
CN103988263A (en) 2014-08-13
JP5735186B2 (en) 2015-06-17

Similar Documents

Publication Publication Date Title
US9164829B2 (en) Read bias management to reduce read errors for phase change memory
US8913426B2 (en) Read distribution management for phase change memory
KR101970450B1 (en) System and method for lower page data recovery in a solid state drive
JP5478861B2 (en) How to program phase change materials
US9007854B1 (en) Method and system for optimized soft decoding in a data storage device
US11120882B2 (en) Error recovery of data in non-volatile memory during read
US8910000B2 (en) Program-disturb management for phase change memory
US20140359202A1 (en) Reading voltage calculation in solid-state storage devices
US8391076B2 (en) Nonvolatile memory device using interleaving technology and programming method thereof
Namba et al. Non-binary orthogonal latin square codes for a multilevel phase charge memory (PCM)
CN115248744A (en) Read threshold adjustment techniques for non-binary memory cells
Kwon et al. Reliability enhanced heterogeneous phase change memory architecture for performance and energy efficiency
US8869009B2 (en) Read commands specifying error performance
US10691536B2 (en) Method to select flash memory blocks for refresh after read operations
CN115248743A (en) Read threshold adjustment techniques for memory
TWI493562B (en) Memory with error correction configured to prevent overcorrection
WO2018003050A1 (en) Device including nonvolatile memory device and method for controlling correction of errors
Liu et al. Improving multilevel PCM reliability through age-aware reading and writing strategies
Imran et al. Enrely: A reliable MLC PCM architecture based on data encoding

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001

Effective date: 20160426

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN

Free format text: SECURITY INTEREST;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038669/0001

Effective date: 20160426

AS Assignment

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT, MARYLAND

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001

Effective date: 20160426

Owner name: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:038954/0001

Effective date: 20160426

AS Assignment

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT, CALIFORNIA

Free format text: 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;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001

Effective date: 20160426

Owner name: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGEN

Free format text: 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;ASSIGNOR:MICRON TECHNOLOGY, INC.;REEL/FRAME:043079/0001

Effective date: 20160426

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, ILLINOIS

Free format text: SECURITY INTEREST;ASSIGNORS:MICRON TECHNOLOGY, INC.;MICRON SEMICONDUCTOR PRODUCTS, INC.;REEL/FRAME:047540/0001

Effective date: 20180703

Owner name: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT, IL

Free format text: SECURITY INTEREST;ASSIGNORS:MICRON TECHNOLOGY, INC.;MICRON SEMICONDUCTOR PRODUCTS, INC.;REEL/FRAME:047540/0001

Effective date: 20180703

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT;REEL/FRAME:047243/0001

Effective date: 20180629

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT;REEL/FRAME:050937/0001

Effective date: 20190731

AS Assignment

Owner name: MICRON TECHNOLOGY, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:051028/0001

Effective date: 20190731

Owner name: MICRON SEMICONDUCTOR PRODUCTS, INC., IDAHO

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT;REEL/FRAME:051028/0001

Effective date: 20190731

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8