US10564900B2 - Temperature variation compensation - Google Patents
Temperature variation compensation Download PDFInfo
- Publication number
- US10564900B2 US10564900B2 US16/004,806 US201816004806A US10564900B2 US 10564900 B2 US10564900 B2 US 10564900B2 US 201816004806 A US201816004806 A US 201816004806A US 10564900 B2 US10564900 B2 US 10564900B2
- Authority
- US
- United States
- Prior art keywords
- temperature
- memory
- read
- data
- parameter
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 506
- 238000013500 data storage Methods 0.000 claims abstract description 116
- 238000012937 correction Methods 0.000 claims abstract description 64
- 238000005259 measurement Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims description 98
- 238000009826 distribution Methods 0.000 claims description 26
- 230000000116 mitigating effect Effects 0.000 claims description 17
- 230000010354 integration Effects 0.000 claims description 16
- 230000002596 correlated effect Effects 0.000 claims description 14
- 238000003860 storage Methods 0.000 description 49
- 239000013598 vector Substances 0.000 description 31
- 238000010586 diagram Methods 0.000 description 30
- 238000012512 characterization method Methods 0.000 description 27
- 230000004044 response Effects 0.000 description 27
- 238000003491 array Methods 0.000 description 25
- 230000002159 abnormal effect Effects 0.000 description 22
- 230000008569 process Effects 0.000 description 22
- 230000008859 change Effects 0.000 description 21
- 239000000758 substrate Substances 0.000 description 17
- 230000000875 corresponding effect Effects 0.000 description 14
- 239000004065 semiconductor Substances 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 238000009529 body temperature measurement Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000033590 base-excision repair Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100124609 Caenorhabditis elegans zyg-12 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000011370 conductive nanoparticle Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000006903 response to temperature Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002277 temperature effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/021—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/04—Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
Definitions
- This disclosure is generally related to data storage devices and more particularly to improved data storage devices compensating for temperature variations.
- Non-volatile data storage devices such as flash solid state drive (SSD) memory devices or removable storage cards, have allowed for increased portability of data and software applications.
- Flash memory devices can enhance data storage density by storing multiple bits in each flash memory cell.
- Multi-Level Cell (MLC) flash memory devices provide increased storage density by storing 2 bits per cell, 3 bits per cell, 4 bits per cell, or more.
- MLC Multi-Level Cell
- BER bit error rate
- each storage element of a non-volatile data storage device may have a distinct cross temperature coefficient (TCO)
- TCO cross temperature coefficient
- each storage element may exhibit a different threshold voltage (Vt) shift due to a temperature change relative to the temperature at which the storage element was programmed and verified.
- Vt shift per storage element is a function of the temperature difference.
- reading a page at a different temperature than the programming temperature of the page results in shifting and widening of the cell voltage distributions (CVDs) of the different states of the storage devices and in an increased BER. Shifting and widening of the CVDs and increased BER arises in both temperature change directions, such as when data is read from storage elements at a higher temperature than the data was written to the storage elements, and also when the data is read from storage elements at a lower temperature than the data was written to the storage elements.
- CVDs cell voltage distributions
- a data storage device includes a non-volatile memory and a controller coupled to the non-volatile memory.
- the controller is operable to measure a first Vt of a memory cell under a first parameter at a read temperature and measure a second Vt of the memory cell under a second parameter at the read temperature in which the first parameter is different from the second parameter.
- a Vt correction term for the memory cell is determined based upon the first Vt measurement and the second Vt measurement.
- a read Vt of the memory cell is adjusted by using the Vt correction term.
- a method of accessing data from a data storage device includes measuring a first plurality of threshold voltages (Vts) of a page of memory cells under a first parameter at a read temperature.
- the first parameter includes a first bit line voltage and a first sense amplifier integration time.
- a second plurality of Vts of the page of memory cell under a second parameter at the read temperature is measured.
- the second parameter includes a second bit line voltage and a second sense amplifier integration time.
- a Vts correction term is estimated for each memory cell of the page of memory cells based upon the measured Vts under the first parameter and the measured Vts under the second parameter.
- a read Vt for each memory cell of the page of memory cells is adjusted by using the Vt correction term.
- a non-transitory computer readable storage medium containing instructions that, when executed by a controller, perform a method of accessing data from a data storage device.
- the method includes measuring a first Vt and a second Vt of a memory cell at different read parameters.
- a TCO proxy for the memory cell is determined.
- An estimated TCO value correlated to the TCO proxy of the memory cell is retrieved.
- a read Vt of the memory cell is adjusted by using the estimated TCO value.
- a data storage device in still another embodiment, includes a non-volatile memory and a cell voltage distribution mitigating means for adjusting a Vt of a memory cell of the non-volatile memory.
- the cell voltage distribution mitigation means operable to measure the Vt of the memory cell at two different read parameters at a read temperature.
- a method of mitigating cell voltage distribution widening due to cross temperature conditions in a data storage device includes characterizing an estimated TCO value for each memory cell of one or more memory arrays, where the characterization generates an offline look-up table, and where the look-up table correlates a single proxy to a single TCO value, measuring a Vt at a read temperature with one or more read parameters to determine one or more proxy vectors, applying the proxy vector to determine a corrected Vt, and applying the corrected Vt to a read/write operation.
- FIG. 1A is a block diagram of an illustrative example of a system including a data storage device configured to adjust memory access parameters based on temperature, according to one embodiment.
- FIG. 1B is a schematic diagram of one example of a 3D memory array, according to one embodiment.
- FIG. 1C illustrates an example of a sense module sensing the current and/or voltage of a bit line at node SEN 2 , according to one embodiment.
- FIG. 2 is a diagram illustrating two particular examples of temperature ranges associated with the data storage device of FIG. 1A , according to one embodiment.
- FIG. 3 is a diagram illustrating a particular example of tables that may be used by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 4 is a diagram illustrating a particular example of a first configuration of multiple memory dies of the data storage device of FIG. 1A , according to one embodiment.
- FIG. 5 is a diagram illustrating a particular example of a second configuration of multiple memory dies of the data storage device of FIG. 1A , according to one embodiment.
- FIG. 6 is a block diagram of an illustrative example of the data storage device of FIG. 1A , according to one embodiment.
- FIG. 7 is a block diagram of another illustrative example of the data storage device of FIG. 1A , according to one embodiment.
- FIG. 8 is a diagram illustrating a particular example of a configuration of a memory device of the data storage device of FIG. 1A , according to one embodiment.
- FIG. 9 is a flow diagram of a particular example of a method of refreshing data that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 10 is a flow diagram of a particular example of a method of temperature-based control that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 11 is a flow diagram of another particular example of a method of temperature-based control that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 12 is a flow diagram of another particular example of a method of determining a read voltage value that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 13 is a flow diagram of another particular example of a method of temperature-based control that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 14 is a flow diagram of another particular example of a method of determining a temperature range that may be performed by the data storage device of FIG. 1A , according to one embodiment.
- FIG. 15 is a schematic diagram of one embodiment of an offline characterization of a group of memory cells of a memory array, according to one embodiment.
- FIG. 16 is a schematic diagram of one embodiment of a look-up table with proxies correlated to estimated TCO values or correction terms, according to one embodiment.
- FIG. 17 is a flowchart of one embodiment of a method of accessing data from a memory storage device in operation by compensating for cross-temperature induced CVD widening, according to one embodiment.
- FIG. 18 is schematic diagram illustrating embodiments of a method of mitigating cross-temperature induced CVD widening, according to one embodiment.
- FIG. 19 is a graph illustrating one embodiment of TCO characterization and correction of a memory cell, according to one embodiment.
- a “write temperature” may be measured and stored during programming of data.
- a write temperature may be stored once for each programmed block (e.g., an erase block of an NAND flash memory) or once for each programmed word line (WL), as non-limiting examples.
- a compensation scheme may be performed if the programming temperature is in an “abnormal” range.
- a “read temperature” for each read block or WL may be measured.
- One or more memory access parameters, such as read Vts may be adjusted based on tracking the CVD, based on BER, based on tables that are based on the difference between the write temperature and the read temperature, or any combination thereof, as illustrative, non-limiting examples.
- the “abnormal” programmed data may be marked for “urgent” refresh.
- marking the data for “urgent” refresh may cause a data storage device to refresh the marked data as a high priority task in response to detecting that the memory temperature has returned to the “normal” temperature range.
- the “abnormal” programmed data may be stored using a slower and more reliable trim (e.g., a set of write parameters that cause data to be written with increased accuracy).
- the “abnormal” programmed data may be stored using a SLC mode instead of using an MLC mode, may be stored as multiple redundant copies, may be protected using a greater number of parity bits, or any combination thereof.
- non-volatile memory (NVM) cell Vt shifting may be compensated by adjusting read thresholds. Adjusting read thresholds may be performed based on the difference between the temperature measured during reading compared to the temperature logged during writing or programming (which may be measured and stored per block or per word line (WL)). The read thresholds adjustment value may also be a function of the logged programming temperature (and not only of the temperature difference), in case the shifting is different when programming at low temperature vs. high temperature. The read thresholds adjustment may be performed using a predefined table as a function of the temperature difference and optionally as a function of the programming temperature. Alternatively, read thresholds adjustment may be performed by running a read thresholds calibration algorithm, such as CVD tracking or BER Estimation Scan (BES), on representative page(s) from the block(s) that were programmed at the same temperature.
- a read thresholds calibration algorithm such as CVD tracking or BER Estimation Scan (BES)
- the foreground CVD tracking or the BES method may provide accurate results with relatively low complexity because logging and managing the programming temperature per WL or per block may be omitted. If such extreme temperature differences are expected to occur more frequently, accurate results with enhanced performance may be provided by measuring and storing write temperatures and adjusting for temperature differences as compared to performing foreground CVD tracking or BES operations. Alternatively, groups of blocks or WLs that were programmed at approximately the same time and temperature may be associated with a certain time & temperature tag for which an appropriate set of read or memory access parameters may be maintained.
- the read or memory access parameters of the group associated with a given time & temperature tag may be adjusted from time to time by running a read thresholds calibration algorithm, such as CVD tracking or BES, on representative page(s) from the group. This may be performed as a background maintenance process or triggered when suboptimal read or memory access parameters are encountered (e.g. high BER encountered during a host read).
- a read thresholds calibration algorithm such as CVD tracking or BES
- Vt distribution widening may be compensated as disclosed in the following example.
- the maximal temperature difference that the memory allows is 80 degrees Celsius (80° C.). Because the maximum allowed temperature difference is 80° C., successful reading of any data experiencing a write/read temperature difference greater than 80° C. is not guaranteed, even after read thresholds adjustment/shifting.
- a “normal” operating temperature range may be defined as the temperature range spanning from 5° C. to 65° C. Anything programmed outside of this normal temperature range receives “special treatment,” such as one or more of the operations described above (e.g., marked for urgent refresh, stored using a slower and more reliable trim, stored using a SLC mode instead of using an MLC mode, stored as multiple redundant copies, protected using a greater number of parity bits). Because programming data outside the “normal” temperature range may be expected to be a rare event, the “special treatment” may be implemented for a small fraction of the traffic and therefore has minor overall impact on device performance.
- Additional temperature ranges may be implemented. For example, there may be a “normal” temperature range and several “abnormal” temperature ranges, from a slightly out-of-range temperature to an extreme out-of-range temperature.
- the countermeasures (“special treatment”) taken when programming outside of the “normal” temperature range may be adjusted based on the specific temperature range (i.e. based on how different it is from the “normal” temperature range). For example, a nominal programming trim (“trim0”) may be used for programming when in the “normal” temperature range.
- a slower and finer trim (“trim1”) may be used for programming when in a slightly “abnormal” temperature range.
- An even slower and finer trim (“trim2”) may be used for programming when in an extreme “abnormal” temperature range.
- the temperature ranges may be predefined. Alternatively, they may be adjusted dynamically, either per region of the memory or adaptively by a controller of the memory. For example, the controller may track the temperature range at which most of the traffic is being programmed and define this range as the “normal” temperature range.
- a hybrid partition may be used to store one or more additional copies of data stored at an “extreme” temperature instead of moving the data if the amount of data written at the “extreme” temperature is relatively small.
- a decoder that includes an error correction coding (ECC) engine may be used to decode the two or more copies and retrieve the data.
- ECC error correction coding
- the LLR inputs for the decoder may be based on the two copies, such as be summing the LLRs of the two copies. This is equivalent to assigning high reliability to bits for which the two copies agree and low reliability (or zero reliability, if both copies have same reliability) whenever the two copies disagree.
- partially-written open blocks may be closed in response to a change in programming temperature changes above a predetermined value. Closing the blocks avoids a mixture of data programmed in various temperatures that may be problematic, and especially in an abnormal temperature region, such as described in further detail with reference to FIGS. 4-5 .
- Boundary word lines/string lines may be “padded” by writing dummy data isolating the boundary WLs and thus protecting the boundary WLs from temperature cross effect, as described with reference to FIG. 4 .
- affected boundary string lines/WLs may be evacuated immediately or within a short time after a decision is made to prematurely close a block with high priority.
- offset values may instead be used. For example, when programming data at a given temperature, there is a set of read parameters that is “optimum” for reading the data at the given temperature. This temperature can be recorded at the system level, and the “optimum” read condition can also be calculated or determined (e.g., by means of CVD tracking or BES). When the data is read, the read temperature can be measured.
- a read offset may be applied to the original read condition (e.g., as an adjustment from the “optimum” read parameter) so that the resulting read parameters enable a more accurate read of the data based on the temperature difference. If the temperature difference is relatively small, then the data may be accessed with the original reading condition without any offset compensation.
- a BER for the data may be determined. If the BER is above a threshold (e.g., exceeds an error correction capacity of the ECC scheme that encodes the data), then the original read condition may be inadequate, or the offset may be inadequate.
- read parameters may be calibrated via CVD tracking or BES and data may be read again with the calibrated parameters with a reduced number of errors.
- temperature compensation may not be applied other than during “heroics” when a BER of data read from the memory renders the data undecodable. In such cases, application of offset values to read parameters based on the temperature difference may enable the data to be read with reduced BER.
- temperature compensation may be applied in response to detecting a pattern of relatively-high BER during a sequence of read operations. For example, in response to a sequence of reads from the memory resulting in high (but still correctable) BER, a memory controller may read a write temperature associated with the data and may apply a read voltage offset based on the temperature difference for remaining read operations of the sequence, as described in further detail with reference to FIG. 7 .
- an ordinal term e.g., “first,” “second,” “third,” etc.
- an element such as a structure, a component, an operation, etc.
- indefinite articles (“a” and “an”) may indicate “one or more” rather than “one.”
- a structure or operation that “comprises” or “includes” an element may include one or more other elements not explicitly recited.
- an operation performed “based on” a condition or event may also be performed based on one or more other conditions or events not explicitly recited.
- FIG. 1A depicts an illustrative example of a system 100 that includes a data storage device 102 and an access device 180 (e.g., a host device or another device).
- the data storage device 102 includes a temperature-based adjuster 122 that is configured to perform compensation based on temperature differences between writing data to a memory 104 and reading the data from the memory 104 .
- the temperature-based adjuster 122 is also configured to perform compensation based on a programming temperature (e.g., a temperature of the memory 104 that is measured just before, during, or after data is written into the memory 104 ) being outside of a “normal” temperature range.
- a programming temperature e.g., a temperature of the memory 104 that is measured just before, during, or after data is written into the memory 104
- the data storage device 102 and the access device 180 may be coupled via a connection (e.g., a communication path), such as a bus or a wireless connection.
- the data storage device 102 may include a first interface 124 (e.g., an access device or host interface) that enables communication via the communication path between the data storage device 102 and the access device 180 .
- the data storage device 102 may include or correspond to a SSD which may be included in, or distinct from (and accessible to), the access device 180 .
- the data storage device 102 may include or correspond to an SSD, which may be used as an embedded storage drive (e.g., a mobile embedded storage drive), an enterprise storage drive (ESD), a client storage device, or a cloud storage drive, as illustrative, non-limiting examples.
- the data storage device 102 is coupled to the access device 180 indirectly, e.g., via a network.
- the network may include a data center storage system network, an enterprise storage system network, a storage area network, a cloud storage network, a local area network (LAN), a wide area network (WAN), the Internet, and/or another network.
- the data storage device 102 may be a network-attached storage (NAS) device or a component (e.g., a SSD device) of a data center storage system, an enterprise storage system, or a storage area network.
- NAS network-attached storage
- the data storage device 102 may be embedded within the access device 180 , such as in accordance with a Joint Electron Devices Engineering Council (JEDEC) Solid State Technology Association Universal Flash Storage (UFS) configuration.
- JEDEC Joint Electron Devices Engineering Council
- UFS Universal Flash Storage
- the data storage device 102 may be configured to be coupled to the access device 180 as embedded memory, such as eMMC® (trademark of JEDEC Solid State Technology Association, Arlington, Va.) and eSD, as illustrative examples.
- the data storage device 102 may correspond to an eMMC (embedded MultiMedia Card) device.
- the data storage device 102 may correspond to a memory card, such as a Secure Digital (SD®) card, a microSD® card, a miniSDTM card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCardTM (MMCTM) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.).
- SD® Secure Digital
- MMCTM MultiMediaCardTM
- CF CompactFlash®
- the data storage device 102 may be removable from the access device 180 (i.e., “removably” coupled to the access device 180 ).
- the data storage device 102 may be removably coupled to the access device 180 in accordance with a removable universal serial bus (USB) configuration.
- USB universal serial bus
- the data storage device 102 may operate in compliance with an industry specification.
- the data storage device 102 may include a SSD and may be configured to communicate with the access device 180 using a small computer system interface (SCSI)-type protocol, such as a serial attached SCSI (SAS) protocol.
- SAS serial attached SCSI
- the data storage device 102 may be configured to communicate with the access device 180 using a NVM Express (NVMe) protocol or a serial advanced technology attachment (SATA) protocol.
- NVM Express NVM Express
- SATA serial advanced technology attachment
- the data storage device 102 may operate in compliance with a JEDEC eMMC specification, a JEDEC Universal Flash Storage (UFS) specification, one or more other specifications, or a combination thereof, and may be configured to communicate using one or more protocols, such as an eMMC protocol, a universal flash storage (UFS) protocol, a USB protocol, and/or another protocol, as illustrative, non-limiting examples.
- a JEDEC eMMC specification a JEDEC Universal Flash Storage (UFS) specification
- UFS Universal Flash Storage
- the access device 180 may include a memory interface (not shown) and may be configured to communicate with the data storage device 102 via the memory interface to read data from and write data to a memory device 103 of the data storage device 102 .
- the access device 180 may be configured to communicate with the data storage device 102 using a SAS, SATA, or NVMe protocol.
- the access device 180 may operate in compliance with a Joint Electron Devices Engineering Council (JEDEC) industry specification, such as a Universal Flash Storage (UFS) Access Controller Interface specification.
- JEDEC Joint Electron Devices Engineering Council
- UFS Universal Flash Storage
- the access device 180 may communicate with the memory device 103 in accordance with any other suitable communication protocol.
- the access device 180 may include a processor and a memory.
- the memory may be configured to store data and/or instructions that may be executable by the processor.
- the memory may be a single memory or may include multiple memories, such as one or more non-volatile memories, one or more volatile memories, or a combination thereof.
- the access device 180 may issue one or more commands to the data storage device 102 , such as one or more requests to erase data, read data from, or write data to the memory device 103 of the data storage device 102 .
- the access device 180 may be configured to provide data, such as data 182 , to be stored at the memory device 103 or to request data to be read from the memory device 103 .
- the access device 180 may include a mobile telephone, a computer (e.g., a laptop, a tablet, or a notebook computer), a music player, a video player, a gaming device or console, an electronic book reader, a personal digital assistant (PDA), a portable navigation device, a computer, such as a laptop computer or notebook computer, a network computer, a server, any other electronic device, or any combination thereof, as illustrative, non-limiting examples.
- a computer e.g., a laptop, a tablet, or a notebook computer
- PDA personal digital assistant
- the memory device 103 of the data storage device 102 may include one or more memory dies (e.g., one memory die, two memory dies, eight memory dies, or another number of memory dies).
- the memory device 103 includes the memory 104 , such as a non-volatile memory of storage elements included in a memory die of the memory device 103 .
- the memory 104 may include a flash memory, such as a NAND flash memory, or a resistive memory, such as a resistive random access memory (ReRAM), as illustrative, non-limiting examples.
- the memory 104 may include or correspond to a memory die of the memory device 103 .
- the memory 104 may have a three-dimensional (3D) memory configuration.
- the memory 104 may have a 3D vertical bit line (VBL) configuration.
- VBL vertical bit line
- the memory 104 is a non-volatile memory having a 3D memory configuration that is monolithically formed in one or more physical levels of arrays of memory cells having an active area disposed above a silicon substrate, such as a BiCS memory array.
- the memory 104 may have another configuration, such as a two-dimensional (2D) memory configuration or a non-monolithic 3D memory configuration (e.g., a stacked die 3D memory configuration).
- the data storage device 102 may include multiple memory devices that may be configured in a similar manner as described with respect to the memory device 103 .
- the data storage device 102 may include multiple memory devices, with each memory device including one or more packages of memory dies, each package of memory dies including one or more memories such as the memory 104 .
- Data striping and error recovery as described with respect to pages of the memory 104 may be extended to include data striping and error recovery across multiple dies, across multiple packages, across multiple memory devices, or any combination thereof.
- the memory 104 may include one or more blocks, such as a NAND flash erase group of storage elements. Each storage element of the memory 104 may be programmable to a state (e.g., a Vt in a flash configuration or a resistive state in a resistive memory configuration) that indicates one or more values. Each block of the memory 104 may include one or more word lines. Each word line may include one or more pages, such as one or more physical pages. In some implementations, each page may be configured to store a codeword.
- a word line may be configurable to operate as a single-level-cell (SLC) word line, as a multi-level-cell (MLC) word line, or as a tri-level-cell (TLC) word line, as illustrative, non-limiting examples.
- SLC single-level-cell
- MLC multi-level-cell
- TLC tri-level-cell
- the memory device 103 may include support circuitry, such as read/write circuitry 105 , to support operation of one or more memory dies of the memory device 103 .
- the read/write circuitry 105 may be divided into separate components of the memory device 103 , such as read circuitry and write circuitry.
- the read/write circuitry 105 may be external to the one or more dies of the memory device 103 .
- one or more individual memory dies of the memory device 103 may include corresponding read/write circuitry 105 that is operable to read data from and/or write data to storage elements within the individual memory die independent of any other read and/or write operations at any of the other memory dies.
- the controller 120 is coupled to the memory device 103 via a bus, an interface (e.g., interface circuitry), another structure, or a combination thereof.
- the bus may include one or more channels to enable the controller 120 to communicate with a single memory die of the memory device 103 .
- the bus may include multiple distinct channels to enable the controller 120 to communicate with each memory die of the memory device 103 in parallel with, and independently of, communication with other memory dies of the memory device 103 .
- the controller 120 is configured to receive data and instructions from the access device 180 and to send data to the access device 180 .
- the controller 120 may send data to the access device 180 via the first interface 124
- the controller 120 may receive data from the access device 180 via the first interface 124 .
- the controller 120 is configured to send data and commands to the memory 104 and to receive data from the memory 104 .
- the controller 120 is configured to send data and a write command to cause the memory 104 to store data to a specified address of the memory 104 .
- the write command may specify a physical address of a portion of the memory 104 (e.g., a physical address of a word line of the memory 104 ) that is to store the data.
- the controller 120 may also be configured to send data and commands to the memory 104 associated with background scanning operations, garbage collection operations, and/or wear leveling operations, etc., as illustrative, non-limiting examples.
- the controller 120 is configured to send a read command to the memory 104 to access data from a specified address of the memory 104 .
- the read command may specify the physical address of a portion of the memory 104 (e.g., a physical address of a word line of the memory 104 ).
- the memory device 103 may also include a temperature sensor 112 .
- the temperature sensor 112 may be configured to measure a temperature and to provide an indication of the measured temperature to the controller 120 , such as a read temperature 162 .
- the temperature sensor 112 may be responsive to one or more commands 160 , such as a command to measure temperature.
- the memory device 103 may include a single temperature sensor 112 , or may include multiple temperatures sensors.
- each of the multiple memory dies may include a separate temperature sensor 112 such as described with reference to FIG. 8 .
- Each of the temperature sensors 112 may be independently polled by the controller 120 to provide a respective temperature 162 for the associated memory die.
- the memory 104 is illustrated as including representative data 106 .
- the data 106 may include encoded data, such as an ECC codeword, that is written to one or more word lines in one or more blocks of the memory 104 .
- the memory 104 may also store a write temperature 108 associated with the data 106 .
- the write temperature 108 may indicate a temperature measurement corresponding to the memory device 103 at a time the data 106 was written to the memory 104 .
- the write temperature 108 may be determined currently with, prior to, or following programming of the data 106 to the memory 104 .
- the write temperature 108 may be stored in a block or word line as metadata in the block header or the word line header.
- the memory 104 also includes a refresh flag 110 associated with the data 106 .
- the refresh flag 110 may indicate that the data 106 was stored when the write temperature 108 at the memory 104 was in an abnormal temperature range.
- the refresh flag 110 may be accessed by the controller 120 to identify the data 106 as a target for refresh when the temperature of the memory 104 falls below a particular threshold temperature.
- the controller 120 includes the temperature-based adjuster 122 , a marked data list 126 , an ECC engine 170 , a temperature history 130 , and a data structure (e.g., a table 128 ) that associates temperature differences to read voltage 164 parameters.
- the ECC engine 170 is configured to receive data to be stored to the memory 104 and to generate a codeword.
- the ECC engine 170 may include an encoder configured to encode data using an ECC scheme, such as a Reed Solomon encoder, a Bose-Chaudhuri-Hocquenghem (BCH) encoder, a low-density parity check (LDPC) encoder, a Turbo Code encoder, an encoder configured to encode one or more other ECC encoding schemes, or any combination thereof.
- the ECC engine 170 may include one or more decoders configured to decode data read from the memory 104 to detect and correct, up to an error correction capability of the ECC scheme, any bit errors that may be present in the data.
- the temperature-based adjuster 122 is configured to perform one or more operations to adjust for differences between write temperatures and read temperatures of data written into and/or read from the memory 104 .
- the temperature-based adjuster 122 includes a comparator 132 configured to compare a measured temperature 140 to one or more thresholds, illustrated as a first threshold 142 and a second threshold 144 .
- an abnormal temperature engine 134 may be activated when the measured temperature 140 corresponds to a temperature at the time of writing data to the memory 104 , such as a temperature retrieved from the temperature sensor 122 in response to receiving the data 106 at the controller 120 to be written to the memory device 103 , in response to the comparator 132 determining that the measured temperature 140 exceeds the first threshold 132 .
- the abnormal temperature engine 134 may be configured to perform one or more operations associated with writing data to the memory 104 when a temperature of the memory 104 is in an abnormal range.
- the abnormal temperature engine 134 may be responsive to the comparator 132 to add the refresh flag 110 to be stored at the memory 104 in conjunction with the data 106 , to store an indication of the data 106 to the marked data list 126 , to initiate one or more other actions, or any combination thereof.
- the one or more other actions that may be initiated by the abnormal temperature engine 134 may correspond to designating that the data to be stored needs to be encoded using a higher number of parity bits at the ECC engine 170 than data that is stored when the temperature is not in the abnormal temperature range.
- the abnormal temperature engine 134 may cause data to be stored in the memory 104 in a single level cell (SLC) mode instead of a multilevel cell (MLC) mode, with multiple copies of the data rather than a single copy, and/or with a slower and more reliable trim, e.g. an increased number of program pulses, a reduced programming voltage step size, or one or more other adjustments to cause programming to be more reliable than during normal operation.
- SLC single level cell
- MLC multilevel cell
- a trim adjuster 136 may be configured to adjust one or more parameters used during writing data to or reading data from the memory 104 .
- the trim adjuster 136 may be configured to retrieve one or more offset values from the table 128 based on the difference between a temperature that the data is written to the memory 104 and a temperature at which the data is to be read from the memory 104 .
- the controller 120 may retrieve the write temperature 108 from the memory 104 and may further instruct the temperature sensor 112 to perform a measurement operation and to provide the read temperature 162 to the controller 120 .
- the trim adjuster 136 may be configured to use a difference between the read temperature 162 and the write temperature 108 to determine an index into the table 128 .
- a temperature difference 150 (illustrated as ⁇ T 1 ) may correspond to a first change in read voltages 152 ( ⁇ VR 1 ).
- Different amounts of temperature difference may correspond to different amounts of read voltage offset values that may be retrieved from the table 128 .
- the trim adjuster 136 may be configured to adjust a default value of one or more trim parameters based on offset values retrieved from table 128 and to provide the adjusted values to the memory device 103 for use during data retrieval from memory 104 .
- the description above refers to a change in read parameters.
- the trim adjuster 136 may change for example the programming pulse step size or width, the starting programming voltage or the verify levels. This may be done as a function of the programming temperature.
- the comparator 132 may indicate to the controller 120 that the marked data list 126 is to be refreshed (e.g., the second threshold 144 may be equal to the first threshold 142 or may be less than the first threshold 142 ).
- the controller 120 may access the marked data list 126 and, for each entry in the marked data list 126 , the controller 120 may instruct a data read of data corresponding to the entry from the memory 104 and a subsequent data write of the data to the memory 104 .
- the controller 120 may also cause the ECC engine 170 to perform a data error correction operation to correct one or more errors that may occur in the data prior to storing the data back to the memory 104 at the lower temperature.
- a range adjuster 138 may be configured to adjust one or more temperature thresholds, such as the first threshold 142 and the second threshold 144 , based on the temperature history 130 . For example, when the temperature history 130 indicates that a “normal” historical operating temperature range of the data storage device 102 has increased since setting the first threshold 142 , the range adjuster 138 may adjust a value of the first threshold 142 . Similarly, the range adjuster 138 may adjust one or more other temperature thresholds based on a history of the temperature measurements associated with the memory device 103 . An example of range adjustment is described with reference to FIG. 2 .
- an accuracy of reading data from the memory 104 may be increased.
- data correction provided by the ECC engine 170 may be enhanced, enabling a less powerful ECC engine to be used to accomplish an equivalent amount of data correction.
- an increased error correction capability and therefore an increased useful life of the data storage device 102 may be obtained.
- FIG. 1B is a schematic diagram of one example of a 3D memory array 1310 , such as a 3D or vertical NAND memory array or a BiCS2 cell array as shown.
- Memory array 1310 is made up of a plurality of pages 1390 .
- Each page 1390 includes a set of NAND strings 1350 (four NAND strings are shown).
- Each set of NAND strings 1350 is connected in common to a global bit line 1380 .
- Each page 1390 has its own global bit line 1380 which number from BL 0 to BLM depending on the number of pages 1390 .
- Each NAND string 1350 includes a select gate drain transistor 1320 (SGD), a plurality of memory cells 1360 A- 1360 N, and a select gate source transistor (SGS) 1330 .
- SGD select gate drain transistor
- SGS select gate source transistor
- a common source 1385 is shared between each shared NAND string 1350 .
- a row of memory cells 1360 A- 1360 N are connected in common to a word line (WL) 1370 .
- the number of word lines 1370 (WL 0 , WL 1 , etc.) is dependent upon on the number of memory cells 1360 A- 1360 N in a NAND string 1350 .
- Memory cells 1360 A- 1360 N are made up of a transistor that has a charge storage element to store a given amount of charge representing a memory state.
- the memory cells 1360 A- 1360 N may be operated in a single-level cell (SLC) storing 1 bit of memory per cell, a X2 cell storing 2 bits of memory per cell, a X3 cell storing 3 bits of memory per cell, a X4 cell storing 4 bits of memory per cell, or any type of memory cell storing any number of bits per cell.
- Page 1390 of FIG. 1B is a group of memory cells 1360 A- 1360 N that are programmed as a group. Multiple pages 1390 make up a block 1395 .
- the memory cells 1360 A- 1360 N in an individual block 1395 are typically erased together.
- a page is the smallest write unit, and a block is the smallest erasure unit.
- Embodiments described herein are not limited to three dimensional memory arrays described in FIG. 1B but cover all relevant memory structures as understood by one skilled in the art. Other arrays are possible, such as a three-dimensional NAND string formed in a U-shape, two-dimensional memory arrays, memory arrays in a NOR configuration, memory arrays made of ReRAM memory cells, or other memory arrays made of storage class memory. Multiple memory arrays may be formed on separate chips and then packaged together to form a stacked-chip memory device. Multiple memory arrays, including mixed types of memory arrays, may be coupled together to form the non-volatile memory of a SSD.
- FIG. 10 illustrates a schematic diagram 50 of a sense module amplifier 60 sensing the current and/or voltage of BL 62 at node SEN 2 64 .
- Sense amplifier integration time of node SEN 2 64 is the time period in which the voltage or current is measured.
- a first graph 202 may indicate a distribution of historical temperature measures 230 associated with storage of data or retrieval of data from the memory device 103 of FIG. 1A .
- the historical temperature measures 230 may be considered an “older” set of historical temperature measures as compared to a “newer” (e.g., more recent) set of historical temperature measures 232 .
- three or more temperature ranges may be determined, such as a first temperature range 220 , a second temperature range 222 , and a third temperature range 224 .
- the first temperature range 220 may correspond to a “normal” temperature range.
- the second temperature range 222 may correspond to an “abnormal” temperature range of temperatures that exceed a highest temperature of the first temperature range 220 .
- the third temperature range 224 may be considered an “abnormal” temperature range of temperatures that are less than the first temperature of the first temperature range 220 .
- the first temperature range 220 may have an upper boundary indicated by a first threshold 210 .
- the first threshold 210 may correspond to the first threshold 142 of FIG. 1A .
- a second threshold 212 is also illustrated, which may correspond to the second threshold 144 of FIG. 1A .
- Temperatures exceeding the first threshold 210 may be considered to be in the “abnormal” temperature range indicated by the second temperature range 220 .
- the second temperature range 220 may have an upper bound 216 , beyond which reliability of the data storage device 102 may be jeopardized.
- design of the data storage device 102 may be determined to satisfy performance based metrics when operating at a temperature between the upper bound 216 and a lower bound 218 .
- a third threshold 214 may indicate a boundary between the first temperature range 220 and the third temperature range 224 .
- FIG. 2 continues with a graph 204 of a distribution of historical temperature measures after a range adjustment 250 .
- the range adjuster 138 may adjust one or more of the thresholds 210 - 214 .
- the range adjustment 250 may result in the first threshold 210 being increased to a first updated threshold 260 .
- the first updated threshold 260 may be positioned such that a particular percentage of the newer historical temperature measures 232 are at lower temperatures than the first updated threshold 260 .
- the first updated threshold 260 may be selected so that one percent, two percent, one-half of a percent, 10 percent, or any other portion of the newer historical temperature measures 232 exceed the first updated threshold 260 .
- the second updated threshold 262 may also be adjusted. For example, an offset amount that is applied to the first threshold 210 to generate the first updated threshold 260 may also be applied to the second threshold 212 to generate the second updated threshold 262 . Alternatively, one or more or other techniques may be used to determine the second updated threshold 262 , such as by selecting the second updated threshold 262 based on a proportion of the new historical measurement data 232 being greater than the second updated threshold 262 .
- the first updated threshold 260 may decrease the second temperature range 222 to form a second updated temperature range 272 .
- the first temperature range 220 may be updated to form the first updated temperature range 270 that spans from the first updated threshold 260 to a third updated threshold 264 .
- the first temperature range 220 may be shifted based on the shift of the first threshold 210 to the updated first threshold 260 .
- a temperature difference between the first updated threshold 260 and the third updated threshold 264 may be equal to a temperature difference between the first threshold 210 and the third threshold 214 .
- the third temperature range 224 may be adjusted to form the updated third temperature range 274 .
- the lower bound 218 may remain unadjusted, and the updated third temperature range 274 may span between the lower bound 202 and the third updated threshold 264 .
- temperature effects on data storage and retrieval may be primarily based on a temperature difference between write temperatures and read temperatures
- a proportion of data write and/or data reads occurring in the abnormal temperature range(s) may be reduced, resulting in a higher performance and lower error rates as compared to operation using the unadjusted temperature ranges 220 - 224 .
- FIG. 3 depicts an example 300 of an implementation that may be used in the data storage device 102 of FIG. 1A .
- An adjusted read voltage may be generated by or based on a sum of a default value of the read voltage 301 and an offset retrieved from an offset table 302 .
- the offset table 302 may correspond to the table 128 of FIG. 1A .
- the offset table 302 includes multiple columns, each column corresponding to a respective read temperature range.
- the offset table 302 also includes a number of rows, each row corresponding to a respective write temperature range.
- range 0 may span from a temperature of ⁇ 25 degrees (e.g., degrees Celsius) to a temperature of 0 degrees.
- Range 1 may correspond to a temperature in the range from one degree to 25 degrees.
- Range 2 may correspond to a temperature between 26 and 50 degrees.
- Range 3 may correspond to a temperature from 51 degrees to 75 degrees.
- Range 4 may correspond to a temperature from 76 degrees to 100 degrees.
- the offset table 302 omits values for entries that correspond to matching temperature ranges and read temperature ranges.
- an entry of the offset table 302 corresponding to a read temperature in range 1 and a write temperature in range 1 includes a value “N/A”, meaning that the entry may be omitted from the table, may be empty of data, or may include zero values (e.g., zero offset to the default value 301 ).
- Other entries of the offset table 302 include offset values that may be negative values or may be positive values.
- the offset stored in the table entries may have negative values, such as Offset_Neg_1.
- values in the table entries may be positive, such as Offset_Pos_1.
- Offset_Pos_1-4 and Offset_Neg_1-4 may be stored in a data structure having a non-table format and may be selectively accessed based on differences between the read temperature range and the write temperature range.
- FIG. 4 illustrates an example 400 of the memory device 103 of FIG. 1A after the controller 120 has closed partially-written open blocks in response to programming temperature changes exceeding a threshold amount.
- data written to the memory device 103 may be striped across multiple dies including a first die 402 and a second die 404 .
- the first die 402 may include a first plane 410 and a second plane 412
- the second die 404 may include a first plane 414 and a second plane 416 .
- Each of the planes 410 , 412 , 414 , 416 may include multiple strings, illustrated as string 0, string 1, string 2 and string 3.
- Each string may correspond to a physical page and may be sized to include a sufficient number of storage elements of the memory 104 to store a sector of data, such as an ECC codeword.
- Each plane 410 , 412 , 414 , 416 is illustrated as including a single representative block having 24 word lines and that may be operated as a 4-block “metablock” by the controller 120 . Although a single block is illustrated for each plane 410 , 412 , 414 , 416 , it should be understood that each plane 410 , 412 , 414 , 416 may have any number of blocks.
- Data may be stored to the memory device 103 according to an order of page writes indicated as page numbers within the respective planes 410 , 412 , 414 , 416 .
- a first page of data (“page 0”) may be written to string 0 of the first plane 410 of the first die 402 .
- a second page of data may be written to a first string of the second plane 412 of the first die 402 .
- a third page of data may be written to a first string of the first plane 414 of the second die 404
- a fourth page of data may be written to a first string of the second plane 416 of the second die 404 .
- the controller 120 may monitor a temperature and compare a change in temperature to a block variation threshold. For example, in response to detecting a temperature change that exceeds a block variation threshold after writing data to a block, such as a the illustrated block of the second plane 416 of the second die 404 that includes the data storing page 327 , the controller 120 may be configured to close the block to prevent further write operations to an unused portion of the block (or of the multiple blocks when operated as a metablock). For example, each block may initially include all erased word lines, and as data is received, the word lines may be written as illustrated in FIG. 4 , until page 327 is written to the memory.
- a temperature measurement associated with page 327 may exceed a temperature measurement associated with writing page 0 to the memory 103 by more than a block variation threshold.
- the controller 120 may be configured to write dummy data to pages labeled 344 - 359 to form a boundary that isolates the last written valid data of each block, illustrated as pages 328 - 343 , from erased word lines that remain unwritten after closing the block.
- FIG. 5 depicts another example of closing one or more blocks in response to the temperature variation within the block exceeding a particular amount.
- the example 500 differs from the example 400 in that the controller 120 does not write dummy data at the boundary following the last valid data written to the memory 103 .
- closing the block according to the example 500 may be performed more quickly than the example 400 because less data is written (i.e., the dummy data is omitted), an improved data retention and reduced error rate may be obtained in the example 400 by use of the dummy data.
- FIG. 6 depicts an example of a system 600 that may be implemented in the data storage device 102 of FIG. 1A .
- the system 600 includes the memory device 103 and the controller 120 of FIG. 1A .
- the controller 120 includes a time and temperature group manager 602 that is configured to access a data structure 604 , such as a table or array that associates indicators of groups of data to memory access parameters associated with the groups of data.
- a group of data 620 labeled group “N” may be associated with a first set of access parameters 630 , such as a first set of read voltage parameters, a first set of write voltage parameters, a first set of erase parameters, or combination thereof.
- a second group indicator 622 is labeled group “N+1” and is associated with a second set of memory access parameters 632 .
- the time and temperature group manager 602 may be configured to maintain a group indication pointer 604 that indicates a current group to be used as storage data to the memory device 103 .
- group indication pointer 640 points to group indicator N 620
- data received from the access device 180 to be stored in the memory device 103 may be associated with group N and the first set of parameters 630 may be used for data write and data retrieval at the memory device 103 .
- the time and temperature group manager 602 may be configured to update the group indication pointer 640 to point to a next group based on detecting one or more events.
- a group may have a time threshold 606 that is compared against a time measurement (e.g., a current time).
- a time measurement e.g., a current time
- the time and temperature group manager 602 may cause a new group to be generated by a new group generator 610 .
- an upper and/or lower temperature range of the current group may be indicated based on a current group temperature threshold 608 .
- a measured temperature of the memory device 103 may be obtained and used to generate a current group temperature threshold 608 .
- the current group temperature threshold 608 may be used to constrain an amount of temperature variation that occurs while data is written.
- the current group may be constrained to a particular temperature range, such as a 20 degree range that is centered on a write temperature for the group.
- a temperature T_new of the memory device 103 may be measured.
- the current group temperature threshold 608 may include multiple elements (e.g., a vector) including T_lo and T_hi. In this case, the current group temperature threshold is “exceeded” when a measured temperature is greater than T_hi or when the measured temperature is less than T_lo.
- the current group temperature threshold 608 may represent a difference threshold, such as 10 degrees, and may be “exceeded” when an absolute value of a difference between a measured temp T_meas and T_new (e.g.,
- the new group generator 610 may be configured to populate a next group indicator and a next set of memory access parameters in the data structure 604 . For example, when the current group is group N 620 and the current group time threshold 606 or the current group temperature threshold 608 is exceeded, the time and temperature group manager 602 may cause the new group generator 610 to generate the new group indicator N+1 622 and to determine the second memory access parameters 632 associated with group N+1.
- the group indication pointer 640 may point to the first group indicator 620 .
- Data that is received at the controller 120 to be written to the memory device 103 may be associated with time data and temperature data.
- first data 650 may be received, associated with first time data 652 and first temperature data 654 .
- the first time data 652 may correspond to a chronological time, a count of memory accesses or write/erase cycles, a memory health metric, a count of power cycles, or some other indicator of time passage or memory usage.
- the first temperature data 654 may be received from a temperature sensor of the memory device 103 , such as the temperature sensor 112 of FIG. 1A .
- the time and temperature group manager 602 may compare the first time data 652 to the current group time threshold 606 and compare the first temperature data 654 to the current group temperature threshold 608 . In response to determining that the first time data 652 does not exceed the current group time threshold 606 and that the first temperature data 654 does not exceed the current group temperature threshold 608 , the time and group temperature manager 602 may associate the first data 650 with the current group N, and may provide the first access memory parameter 630 to the memory device 103 for storage of the first data 650 .
- the controller 120 may receive second data 660 associated with second time data 662 and second temperature data 664 . Although the second time data 662 may not exceed the current group time threshold 606 , the second temperature data 664 may exceed the current group temperature threshold 608 .
- the time and temperature group manager 602 may generate a new group N+1, may generate the second group indicator 662 , may determine the second memory access parameters 632 , and may provide the second memory access parameters 632 to the memory device 103 for storing the second data 660 to the memory device 103 .
- the time and temperature group manager 602 may update the group indication pointer 640 to point to the second group indication 662 .
- Another method that may be used for deciding whether to open a new time and temperature tag is that whenever new data is programmed (e.g., a new block) then the block may be read with the read parameters associated with the current time & temperature tag. In case the BER measured for the read result does not fit to the BER indicated by the time & temperature tag, then a new time & temperature group may be created and the current block may be associated with the new group. For example, in cases where there was a power drop at the data storage device, and when the memory is powered up again, the data storage device may not know how much time has elapsed. Thus, the controller 120 may be configured to check whether the parameters associated the last time & temperature group/tag fit the newly programmed block.
- an applicability of the memory access parameters associated with the group may be maintained. For example, a variation of data characteristics of stored memory device 103 may remain relatively constrained such that the memory access parameters associated with the group may enable reliable reading and writing of data using the memory access parameters for the group. Adjustment of the memory access parameters, such as due to device usage or in response to temperature variation of the data storage device, may be performed by adjustment of the memory access parameters associated with the groups as opposed to adjustment of memory access parameters for individual data accesses to the memory device 103 . This may be done by calibrating the parameters on representative pages of the group, instead of calibrating them on each page within the group, thus saving time and reducing maintenance complexity. The updating of the parameters of the different time and temperature groups may be done as maintenance operations performed in the background. Alternatively, the updating of parameters may be triggered by some event in the foreground (e.g., high BER observed during a host read).
- FIG. 7 is a block diagram of another illustrative example of the data storage device 102 of FIG. 1A .
- FIG. 7 illustrates a data storage device 700 that includes the memory device 103 that is coupled to the controller 120 .
- the memory device 103 and the controller 120 may include or correspond to the memory device 103 and the controller 120 of FIG. 1A .
- the controller 120 may include the ECC engine 170 and the temperature-based adjuster 122 .
- the controller 120 may be configured to read multiple codewords of data from the memory device 103 .
- the controller 120 may be configured to read a first codeword 702 , a second codeword 704 , and a third codeword 706 from the memory device 103 . In other implementations, more than three codewords or fewer than three codewords may be read from the memory device 103 .
- the controller 120 may be configured to determine an error rate associated with reading the multiple codewords of data.
- the ECC engine 170 of the controller 120 may be configured to determine a first error rate (e.g., a first bit error rate (BER) associated with reading the first codeword 702 , a second error rate associated with reading the second codeword 704 , and a third error rate associated with reading the third codeword 706 .
- the controller 120 may be configured to maintain determined error rates as history of error rates data 708 that includes multiple error rates (e.g., multiple BERs).
- the ECC engine 170 of the controller 120 may be configured to maintain the history of error rates data 708 (e.g., in a controller memory) that includes a first error rate 710 (e.g., BER 1 ) and an n-th error rate 712 (e.g., BER n).
- the number n of error rates included in the history of error rates data 708 may correspond to the number of codewords read from the memory device 103 during a particular operation (or set of operations).
- the temperature-based adjuster 122 of the controller 120 may be configured to compare the error rate to a threshold error rate for a threshold number of codewords.
- the temperature-based adjuster 122 may include a comparator 718 that is configured to compare one or more error rates from the history of error rates data 708 to an error rate threshold 714 .
- the error rate threshold 714 is less than a threshold correctable error rate of the ECC engine 170 .
- the temperature-based adjuster 122 may initiate the temperature compensation operation 136 .
- the number of codewords threshold 716 may be three, and in response to detecting that the first BER 710 (corresponding to the first codeword 702 ), a second BER (corresponding to the second codeword 704 ), and the n-th BER 712 (corresponding to the third codeword 706 ) each exceed the error rate threshold 714 , the temperature-based adjuster 122 may initiate the temperature compensation operation 136 .
- the temperature compensation operation 136 may cause one or more memory access parameters (such as the read voltage 164 of FIG.
- a temperature difference between a first temperature associated with writing the multiple codewords 702 , 704 , 706 to the memory device 103 e.g., the first temperature is associated with a first time period, the first time period includes a write operation of the multiple codewords 702 , 704 , 706 to the memory 104
- a second temperature associated with reading the multiple codewords 702 , 704 , 706 from the memory device 103 e.g., the second temperature is associated with a second time period, the second time period includes a read operation of multiple codewords 702 , 704 , 706 from the memory 104 ).
- the controller 120 may read multiple codewords including the first codeword 702 , the second codeword 704 , and the third codeword 706 from the memory device 103 .
- the controller 120 e.g., the ECC engine 170
- the controller 120 may detect error rates associated with the codewords 702 , 704 , 706 .
- the error rates may be included in the history of error rates data 708 .
- the controller 120 e.g., the temperature-based adjuster 122 ) may compare the history of error rates data 708 to the error rate threshold 714 .
- the controller 120 may initiate the temperature compensation operation 136 that modifies one or more memory access parameters based on a temperature difference between a first temperature associated with writing the multiple codewords 702 , 704 , 706 to the memory device 103 and a second temperature associated with reading the multiple codewords 702 , 704 , 706 from the memory device 103 .
- FIG. 8 is a diagram illustrating a particular example of a configuration of a memory device of the data storage device 102 of FIG. 1A .
- FIG. 8 illustrates a data storage device 800 that includes the memory device 103 .
- the memory device 103 may include or correspond to the memory device 103 of FIG. 1A .
- the memory device 103 includes a stack 820 of memory dies.
- the stack 820 may include multiple memory dies, such as a first memory die 802 , a second memory die 804 , an i-th memory die 806 , and an n-th memory die 808 . In other implementations, the stack 820 may include more than n or fewer than n memory dies.
- the first memory die 802 is a top die of the stack 820
- the n-th memory die 808 is a bottom memory die of the stack 820
- other memory dies such as the second memory die 804 and the i-th memory die 806 are “central” memory dies of the stack 820 .
- central memory dies refer to memory dies that are neither the top memory die nor the bottom memory die of the stack 820 , such as to dies in a center of a stack, e.g., die 3 in a 5-die stack or dies 4 and 5 in an 8-die stack.
- Each memory die of the stack 820 may include a corresponding temperature sensor.
- the first memory die 802 may include a first die temperature sensor 812
- the second memory die 804 may include a second die temperature sensor 814
- the i-th memory die 806 may include an i-th die temperature sensor 816
- the n-th memory die 808 may include an n-th die temperature sensor 818 .
- Each die temperature sensor of the die temperature sensors 812 , 814 , 816 , 818 may be configured to generate an indicator of a temperature of the corresponding memory die.
- the first die temperature sensor 812 may be configured to generate a first indicator 832 (T 1 ) of a first temperature of the first memory die 802
- the second die temperature sensor 814 may be configured to generate a second indicator 834 (T 2 ) of a second temperature of the second memory die 804
- the i-th die temperature sensor 816 may be configured to generate a third indicator 836 (T 3 ) of a third temperature of the i-th memory die 806
- the n-th die temperature sensor 818 may be configured to generate a fourth indicator 838 (T 4 ) of a fourth temperature of the n-th memory die 808
- the memory device 103 may be configured to provide the indicators 832 , 834 , 836 , 838 to the controller 120 for processing.
- the controller 120 may be configured to receive multiple indicators from the memory device 103 and to determine an average based on the multiple indicators 832 , 834 , 836 , 838 .
- the controller 120 may be configured to receive the first indicator 832 of the first temperature from the first die temperature sensor 812 and the third indicator 836 of the third temperature from the i-th die temperature sensor 816 .
- the controller 120 may be configured to determine an average temperature 840 of the first temperature and the third temperature. In this manner, the average temperature may be determined based on a temperature of a non-center memory die (e.g., the first memory die 802 ) and a central memory die (e.g., the i-th memory die 806 ). Because the first memory die 802 is the coolest and the central die (e.g., the i-th memory die 806 ) is the hottest, the average temperature 840 may be representative of a range of temperatures of memory dies in the stack 820 .
- the average temperature 840 may be further based on indications (e.g., the second indication 834 , the n-th indication 838 , or both) of temperatures of other memory dies.
- the average temperature 840 may be determined based on the first indicator 832 and the second indicator 834 , the n-th indicator 838 and the second indicator 834 , the n-th indicator 838 and the i-th indicator 836 , or some other combination of two or more of the indicators 832 , 834 , 836 , 838 .
- the average temperature 840 may include or correspond to a mean temperature, a weighted mean temperature, a median temperature, a mode of the temperatures, or another statistical measure of central accuracy.
- the controller 120 may be further configured to determine a temperature range associated with a memory access based on the average temperature 840 .
- the memory device 103 may be configured to perform the above-described actions of the controller 120 .
- the memory device 103 may determine the average temperature 840 and a temperature range of the stack 820 based on the average temperature 840 .
- temperature sensors of memory dies of the stack 820 may generate indications of a temperature of a corresponding memory die.
- the first die temperature sensor 812 may generate the first indicator 832 of the first temperature of the first memory die 802
- the second die temperature sensor 814 may generate the second indicator 834 of the second temperature of the second memory die 804
- the i-th die temperature sensor 816 may generate the third indicator 836 of the third temperature of the i-th memory die 806
- the n-th die temperature sensor 818 may generate the fourth indicator 838 of the fourth temperature of the n-th memory die 808 .
- the controller e.g., the controller 120 of FIG. 1A
- the controller 120 may receive the first indicator 832 of the first temperature and the i-th indicator 836 of the third temperature and the controller 120 may determine the average temperature 840 for the first and third temperatures.
- the controller 120 may determine a temperature range associated with a memory access based on the average temperature 840 .
- the memory device 103 may determine the temperature range and the average temperature 840 , and the memory device 103 may send an indication of the temperature range to the controller 120 .
- FIG. 9 is a flow diagram of a particular example of a method 900 of refreshing data.
- the method 900 may be performed at a data storage device that includes a controller and a non-volatile memory.
- the method 900 may be performed by the data storage device 102 of FIG. 1A .
- the method 900 includes, at block 902 , marking data stored at the non-volatile memory for refresh in response to determining that a first measured temperature associated with writing the data to the non-volatile memory exceeds a first threshold.
- the temperature-based adjuster 122 of FIG. 1A may determine that the write temperature 108 (e.g., a first measured temperature associated with writing the data 106 to the memory 104 ) exceeds the first threshold 142 .
- the temperature-based adjuster 122 may mark the data 106 by storing the refresh flag 110 .
- the temperature-based adjuster 122 may store an indicator (or an identifier) of the data 106 in the marked data list 126 .
- the method 900 includes, at block 904 , refreshing the marked data in response to determining that a second measured temperature associated with the non-volatile memory is below a second threshold.
- the temperature-based adjuster 122 of FIG. 1A may receive the measured temperature 140 (e.g., the second measured temperature) from the temperature sensor 112 .
- the comparator 132 may compare the measured temperature 140 to the second threshold 144 . If a value of the measured temperature 140 is below a value of the second threshold 144 , the temperature-based adjuster 122 may cause the marked data to be refreshed.
- the controller 120 may access the marked data list 126 to identify marked data. The controller 120 may also initiate data refresh operations, such as by sending the command 160 to cause the data 106 to be refreshed.
- FIG. 10 is a flow diagram of a particular example of a method 1000 of temperature-based control.
- the method 1000 may be performed at a data storage device that includes a controller 120 and a non-volatile memory.
- the method 1000 may be performed by the data storage device 102 of FIG. 1A .
- the method 1000 includes, at block 1002 , writing data to a block of the non-volatile memory.
- the data 106 of FIG. 1A may be written to a particular block of the memory 104 .
- the method 1000 also includes, at block 1004 , in response to detecting a temperature change that exceeds a block variation threshold after writing the data to the block, closing the block.
- the temperature-based adjuster 122 may detect a temperature change (e.g., based on the measured temperature 140 and the temperature history 130 ).
- the comparator 132 may determine whether the temperature change exceeds a threshold.
- the controller 120 may close the block, such as described with reference to FIGS. 4-5 . Closing the block may prevent write operations to an unused portion of the block.
- the controller 120 may write dummy data to a word line of the block prior to closing the block.
- FIG. 11 is a flow diagram of another particular example of a method 1100 of temperature-based control.
- the method 1100 may be performed at a data storage device that includes a controller and a non-volatile memory.
- the method 1100 may be performed by the data storage device 102 of FIG. 1A .
- the method 1100 includes, at block 1102 , associating first data that is stored in the non-volatile memory with a first group indicator, and, at block 1104 , associating first memory access parameter values with the first group indicator.
- the time and temperature group manager 602 of FIG. 6 may associate the first data 650 with the first group 620 .
- the time and temperature group manager 602 may also associate the first parameters 630 with the first group 620 .
- the method 1100 also includes, at block 1106 , in response to detecting a temperature change that exceeds a group temperature threshold associated with the first group indicator, associating second data to be stored in the non-volatile memory with a second group indicator, and, at block 1108 , associating second memory access parameters with the second group indicator.
- the time and temperature group manager 602 of FIG. 6 may detect a temperature change (e.g., by comparing the first temperature data 654 and the second temperature data 664 to a first stored temperature for the first group 620 ).
- the time and temperature group manager 602 may generate a new group (e.g., the second group 622 ) and may associate the second data 660 with the second group 622 .
- the time and temperature group manager 602 may also associate the second parameters 632 with the second group 622 .
- the time and temperature group manager 602 may store the group indicator pointer 640 which may indicate a group indicator (e.g., an indicator of the first group 620 or an indicator of the second group 622 ) to be associated with data (e.g., data received from the access device 180 ) that is to be written to the non-volatile memory.
- the time and temperature group manager 602 may update the group indicator pointer 640 to indicate the indicator of the second group 622 .
- FIG. 12 is a flow diagram of another particular example of a method 1200 of determining a read voltage value.
- the method 1200 may be performed at a data storage device that includes a controller and a non-volatile memory.
- the method 1200 may be performed by the data storage device 102 of FIG. 1A .
- the method 1200 may include, at block 1202 , determining a read voltage offset value based on data structure that maps read voltage offset values to differences between write temperatures and read temperatures.
- the data structure may include the table 128 and temperature-based adjuster 122 may perform a look-up operation to read the table 128 to determine a read voltage offset value, such as the first read voltage offset value 152 , which corresponds to a particular temperature difference, such as the first temperature difference 150 .
- each entry of the table is accessible according to a write temperature range and a read temperature range.
- the table omits read voltage offset values for entries that correspond to matching write temperature ranges and read temperature ranges.
- an offset value can be determined from the offset table 302 based on a write temperature range and a read temperature range.
- the offset table 302 omits read voltage offset values for table entries that correspond to matching write temperature ranges and read temperature ranges.
- the method 1200 may also include, at block 1204 , determining an adjusted value of a read voltage associated with reading data from the non-volatile memory. The adjusted value determined based on a default value of the read voltage and based on the read voltage offset value.
- the trim adjuster 136 may use the read voltage offset value determined from the table 128 and a default value of the read voltage (e.g., the default value 301 of FIG. 3 ) to determine the adjusted value of the read voltage.
- FIG. 13 is a flow diagram of another particular example of a method 1300 of temperature-based control.
- the method 1300 may be performed at a data storage device that includes a controller and a non-volatile memory.
- the method 1300 may be performed by the data storage device 102 of FIG. 1A .
- the method 1300 includes, at block 1302 , reading multiple codewords of data from the non-volatile memory.
- the controller 120 may read multiple codewords, such as the first codeword 702 , the second codeword 704 , and the third codeword 706 from the memory device 103 .
- the method 1300 also includes, at block 1304 , in response to detecting an error rate exceeding a threshold error rate for a threshold number of the codewords, initiating a temperature compensation operation that modifies one or more memory access parameters based on a temperature difference between a first temperature and a second temperature.
- the ECC engine 180 may generate the history of error rates data 708 .
- the temperature-based adjuster 122 may compare the history of error rates data 708 to the error rate threshold 714 and to the number of codewords threshold 716 .
- the threshold error rate is less than a threshold correctable error rate of the ECC engine 180 .
- the temperature-based adjuster 122 In response to detecting that an error rate exceeds a threshold error rate for a threshold number of the codewords, the temperature-based adjuster 122 initiates a temperature compensation operation 136 .
- the temperature compensation operation 136 may cause one or more memory access parameters (such as the read voltage 164 of FIG. 1A ) to be modified based on a temperature difference between a first temperature associated with writing the multiple codewords to the non-volatile memory and a second temperature associated with reading the multiple codewords from the non-volatile memory.
- FIG. 14 is a flow diagram of another particular example of a method 1400 of determining a temperature range.
- the method 1400 may be performed at a data storage device that includes a controller and a non-volatile memory.
- the method 1400 may be performed by the data storage device 102 of FIG. 1A .
- the method 1400 includes, at block 1402 , receiving a first indicator of a first temperature from a first die temperature sensor of a first die of the non-volatile memory.
- the memory device 103 may include a stack 820 of memory die as in FIG. 8 .
- the first memory die 802 may include the first die temperature sensor 812 which may generate and send the first indication 832 , which indicates a temperature of the first memory die 802 .
- the method 1400 includes, at block 1404 , receiving a second indicator of a second temperature from a second die temperature sensor of a second die of the non-volatile memory.
- the second memory die may correspond to the i-th memory die 806 that includes the i-th die temperature sensor 816 .
- the i-th die temperature sensor 816 may generate and send the i-th indication 836 , which indicates a temperature of the i-th memory die 806 .
- the stack 820 may also include other memory dies, one or more of which may include another temperature sensor. To illustrate, the stack 820 in FIG.
- the first memory die 802 and the i-th memory die 804 may represent different portions of the stack 820 .
- the first memory die 802 is the top die of the stack 820 and the i-th memory die 804 is a central die (e.g., a memory die that is neither the top memory die nor the bottom memory die of the stack 820 ).
- the method 1400 also includes, at block 1406 , determining a temperature range based on an average of the first temperature and the second temperature.
- the controller 120 or the memory device 103 may determine the average temperature 840 based on the first indication 832 of the first temperature and based on the i-th indication 836 of the second temperature.
- the average temperature 840 may be further based on indications (such as the second indication 834 , the nth indication 838 , or both) of temperatures of other memory dies.
- the average temperature 840 may include or correspond to a mean temperature, a weighted mean temperature, a median temperature, a mode of the temperatures, or another statistical measure of central tendency.
- the average temperature may be associated with a memory access, such as indicating a temperature condition prior to, during, or upon completion of reading data from the memory 104 or writing data to the memory 104 .
- Each memory cell such as from memory 104 or memory array 1310 of FIG. 1B , may have different cross temperature-induced CVD widening due to different physical characteristics and different locations of each memory cell in the memory.
- memory cells 360 in different layers or word line levels of a monolithic 3D flash memory array 1310 may experience different cross temperature-induced CVD widening due to variations during formation of the memory cells and due to different locations in the 3D array.
- data storage devices are operable to compensation for the cross temperature-induced CVD widening by correcting the Vt per cell. Estimated TCOs or correction terms are determined per cell based upon Vt measurements per cell under different read parameters at a read temperature in operation.
- FIG. 15 is a schematic diagram of one embodiment of an offline characterization 1500 of a group of memory cells of a memory array.
- the group of memory cells characterized offline may by from one or more NAND strings, from one or more word lines, from one or more pages, from one or blocks, from one or more dies, or combinations thereof.
- the offline characterization 1500 includes processes for determining actual TCOs of the group of memory cells.
- the group of memory cells are programmed with a selected soft bit or hard bit at a first temperature (referred to as program temperature in FIG. 15 ), and the Vts of each memory cell are measured at the first temperature.
- the group of memory cells are heated or cooled to a second temperature (referred to read temperature in FIG. 15 ), and the Vts of each memory cell are measured at the second temperature.
- an actual TCO of each memory cell i.e., the threshold voltage change ⁇ Vt measured from the first temperature to the second temperature
- ⁇ Vt measured from the first temperature to the second temperature
- the programming at a first temperature and measurements of the Vt at the first temperature and the second temperature can occur over a number of programming/erase cycles. Each memory cell may be programmed with a certain selected soft bit or hard bit in each cycle.
- the Vts of the memory cells over the number of cycles at the first temperature are represented in Vt histogram 1511 .
- the Vts of the memory cells over the number of cycles at the second temperature are represented in Vt histogram 1521 .
- the actual TCOs of the memory cells over the number of cycles are represented in TCO histogram 1531 .
- the first temperature may be a low temperature of 0° C. or below (such as negative ⁇ 30° C. for example) and the second temperature may be a high temperature of 50° C.
- the first temperature may be a high temperature of 50° C. or above (such as positive +85° C. for example), and the second temperature may be a low temperature of 0° C. or below (such as negative ⁇ 30° C. for example).
- the offline characterization 1500 includes processes for determining proxies to be correlated to the actual TCOs to be used in providing an estimated TCO for a memory cell in operation.
- the Vts of each memory cell is measured at the second temperature under a first read parameter, which may be the same measurement at process 1520 .
- the Vts of each memory cell is measured at the second temperature under a second read parameter different from the first read parameter.
- a proxy of each memory cell of a threshold voltage change ⁇ Vt measured from first read parameter to the second read parameter (in which both read parameters are conducted at the second temperature) may be determined.
- Processes 1540 , 1550 may be conducted with processes 1510 , 1520 over a number of programming/erase cycles.
- the Vts of the memory cells over the number of cycles at the second temperature at a first read parameter are represented in Vt histogram 1541 .
- the Vts of the memory cells over the number of cycles at the second temperature at a second read parameter are represented in Vt histogram 1551 .
- the proxies for the TCOs of the memory cells over the number of cycles are represented in proxy histogram 1561 .
- the different read parameters of processes 1540 , 1550 at the same second temperature include changing at least one of the following read parameters: bit line voltage (Vblc), sense amplifier integration time (SEN 2 ), and other read parameters.
- Vblc bit line voltage
- SEN 2 sense amplifier integration time
- the measurement of the Vt of a memory cell at two different read parameters may serve as a proxy to the actual TCO measured for a memory cell's specific physical characteristics, such as a cell's sub-threshold slope.
- proxy i,j measurement (Vblc i ,SEN2 i ) ⁇ measurement (Vblc j ,SEN2 j )
- the offline characterization 1500 may include a single proxy (i.e., two measurements of the Vt of a memory cell at two different read parameters at the second temperature) associated with each TCO measurement.
- the offline characterization 1500 may include multiple proxies (i.e., three or more measurements of the Vt of a memory cell at three different read parameters at the second temperature) associated with each TCO measurement.
- a single estimated TCO value or correction term ⁇ V i,j may be correlated for each proxy value or range.
- the estimated TCO value or correction term ⁇ V i,j based upon single proxies may be estimated using conditional expectation estimation, also called minimum mean square error (MMSE) estimation, but other estimations are possible.
- MMSE minimum mean square error
- ⁇ V i,j MMSE E [ ⁇ V
- E is the average value of all actual TCOs or ⁇ Vs with the same single proxy value measured in offline characterization.
- FIG. 16 an example LUT 1600 is shown where each proxy value is correlated with a single estimated TCO value stored in a LUT 1610 .
- LUT 1610 contains N number of proxy values 1620 correlated to N number of estimated TCO value or correction terms ⁇ V and N number of resultant MMSE values 1630 .
- a single estimated TCO value or correction term ⁇ V may be correlated for each proxy vector.
- the estimated TCO value correction term ⁇ V based upon multiple proxies may be estimated using linear estimation using 2nd order statistics, but other estimations are possible.
- Each proxy vector may be correlated with a single estimated TCO value stored in a LUT 1610 .
- FIG. 17 is a flowchart 1700 of one embodiment of a method of accessing data from a memory storage device in operation (i.e., connected to or embedded in an access device) by compensating for cross temperature-induced CVD widening.
- Flowchart 1700 will be described in reference to data storage device data storage device 102 and memory array 1310 of FIGS. 1A and 1B , respectively, but other storage devices and memory arrays are applicable.
- controller 120 receives a read operation request from access device 180 .
- the controller 120 retrieves data stored in memory array 1310 and performs an error correcting decoding process known in the art. If controller 120 detects or determines that decoding of one or more pages 1390 of memory array 1310 from the read operation is uncorrectable due to cross temperature conditions, the controller 120 proceeds to block 1720 .
- the controller 120 determines a proxy vector (i.e., a single component proxy vector or multiple component proxy vector) for each memory cell identified at block 1710 .
- the proxy vectors are determined in operation of data storage device 102 .
- the proxy vectors are determined at the start of operations by making two or more measurements of Vts of each memory cell under two or more different read parameters. For example, two measurements of Vts of each memory cell under two different read parameters are made for a single component proxy vector, and three or more measurements of Vts of each memory cell under three or more different read parameters are made for a multiple component proxy vector.
- the proxy vectors measured in operation are related to a memory cell's specific physical characteristics, such as a cell's sub-threshold slope.
- the set of different read parameters in operation may be the same as or approximate to the set of different read parameters made in offline characterization.
- Vts measured at the default parameter may serve as baseline Vts corrected at block 1740 . If a default read parameter at the read temperature is not used at one of the proxies at block 1720 , then Vts of the memory cells at a default read parameter at the read temperature are measured to serve as the baseline Vts corrected at block 1740 .
- an estimated TCO or correction term ⁇ V per memory cell is determined based upon the proxy vectors at block 1720 .
- a correction term is determined by retrieving the correction term correlated to the proxy in a look-up table (LUT) stored in non-volatile memory (such as ROM) of controller 120 or memory 104 .
- the LUT may be generated offline as disclosed in the offline characterization 1500 in reference to FIG. 15 or generated by other processes.
- the controller 120 may calculate a correction term per memory cell from proxy vectors at block 1730 .
- a matrix W and b may be obtained during offline memory characterization, such as offline characterization 1500 in reference to FIG. 15 and in reference to equation (6), and stored in non-volatile memory (such as ROM) of controller 120 or memory 104 .
- the controller 120 may calculate a correction term based upon the stored matrix W and b.
- a correction term may be determined based upon a sub-set of the components of the multiple component proxy vector. For example, there may be an optimal proxy vector component of two optimal reads from three or more reads. In another example, there may be two optimal proxy vector components based upon three or four more optimal reads.
- the controller 120 may determine the sub-set or optimal proxy vector component(s) during operation of the data storage device 102 . For example, the controller 120 , in operation, may search over the multiple proxies components correlated to different correction terms from offline characterization 1500 .
- the correction terms from block 1730 are used to correct each memory cell's Vt as appropriate.
- the change in temperature during operation from a write operation at temperature T write to read operation at temperature T read may be used to correct the Vt of each memory cell to provide the following new Vts expressed as follows based upon a linear dependency on temperature:
- Vt new Vt + ⁇ ⁇ ⁇ V ⁇ ⁇ ⁇ T characterization ⁇ ⁇ ⁇ ⁇ T write , read ( 8 )
- the memory cells with corrected or new Vts may be decoded with lower BER in comparison to Vts without any cross temperature mitigation.
- the proxy vector, subset of the proxy vector, and/or correction term may be stored as a tag associated to the physical address of the memory cell. This tag may be used to speed up next the next recovery flow in case of another decoding failure of memory associated to the physical address.
- the tag can be used as a starting point in accessing data to the memory cell in repeating one or more blocks of flowchart 1700 .
- FIG. 18 is schematic diagram illustrating embodiments of a method 1800 of mitigating cross temperature-induced CVD widening.
- the actual TCO characterization of a memory array may occur offline.
- a LUT may be generated offline correlating a single proxy to a single estimated TCO value.
- a LUT may be generated offline correlating multiplies proxies to a single estimated TCO value.
- the LUT generated at process 1820 A or 1820 may be stored in a memory device to provide Vt correction in operation of the memory device at process 1840 in conjunction measuring Vt at a read temperature with different read parameters for determining proxy vectors at process 1830 .
- each memory array is characterized offline.
- one memory array is characterized offline and this characterization is used for other memory arrays of the same design, of the same specifications, from the same manufacturing lot, or from the same wafer.
- corrected Vts have narrower CVD state distributions may be achieved providing lower BERs with higher probability to allow decoding.
- SSD may operate in more extreme temperature requirements since cross-temperature induced CVD widening is mitigated. Tolerating more extreme cross-temperatures with increased system reliability may be used in automotive application due to its extreme operating requirements ( ⁇ 40° C. to 105° C.).
- controller 120 and certain other components described herein are illustrated as block components and described in general terms, such components may include one or more microprocessors, state machines, and/or other circuits configured to enable the data storage device 102 (or one or more components thereof) to perform operations described herein.
- Components described herein may be operationally coupled to one another using one or more nodes, one or more buses (e.g., data buses and/or control buses), one or more other structures, or a combination thereof.
- One or more components described herein may include one or more physical components, such as hardware controllers, state machines, logic circuits, one or more other structures, or a combination thereof, to enable the data storage device 102 to perform one or more operations described herein.
- the data storage device 102 may be implemented using a microprocessor or microcontroller programmed (e.g., by executing instructions) to perform one or more operations described herein, such as one or more operations or blocks of the methods 900 - 1500 , 1700 , and 1800 .
- the data storage device 102 includes machine-executing instructions (e.g., firmware) in a non-transitory readable medium by a computer, hardware, a process (e.g., a microprocessor), and/or machine.
- instructions that are executed by the processor may be retrieved memory device 103 or other memory, such as at a read-only memory (ROM) that is external to the memory device 103 .
- ROM read-only memory
- one or more operations described herein as being performed by the controller 120 may be performed at the memory device 103 .
- in-memory ECC operations e.g., encoding operations and/or decoding operations
- the data storage device 102 may be configured to be coupled to the access device 180 as embedded memory, such as in connection with an embedded MultiMedia Card (eMMC®) (trademark of JEDEC Solid State Technology Association, Arlington, Va.) configuration, as an illustrative example.
- eMMC embedded MultiMedia Card
- the data storage device 102 may correspond to an eMMC device.
- the data storage device 102 may correspond to a memory card, such as a Secure Digital (SD®) card, a microSD® card, a miniSDTM card (trademarks of SD-3C LLC, Wilmington, Del.), a MultiMediaCardTM (MMCTM) card (trademark of JEDEC Solid State Technology Association, Arlington, Va.), or a CompactFlash® (CF) card (trademark of SanDisk Corporation, Milpitas, Calif.).
- SD® Secure Digital
- MMCTM MultiMediaCardTM
- CF CompactFlash®
- the data storage device 102 may operate in compliance with a JEDEC industry specification.
- the data storage device 102 may operate in compliance with a JEDEC eMMC specification, a JEDEC Universal Flash Storage (UFS) specification, one or more other specifications, or a combination thereof.
- the memory device 103 may include a three-dimensional (3D) memory, such as a resistive random access memory (ReRAM), a flash memory (e.g., a NAND memory, a NOR memory, a single-level cell (SLC) flash memory, a multi-level cell (MLC) flash memory, a divided bit-line NOR (DINOR) memory, an AND memory, a high capacitive coupling ratio (HiCR) device, an asymmetrical contactless transistor (ACT) device, or another flash memory), an erasable programmable read-only memory (EPROM), an electrically-erasable programmable read-only memory (EEPROM), a read-only memory (ROM), a one-time programmable memory (OTP), or a combination thereof.
- 3D three-dimensional
- ReRAM resistive random access memory
- a flash memory e.g., a NAND memory, a NOR memory, a single-level cell (SLC) flash memory, a multi-level cell (MLC
- the memory device 103 may include another type of memory.
- the data storage device 102 is indirectly coupled to an access device (e.g., the access device 180 ) via a network.
- the data storage device 102 may be a network-attached storage (NAS) device or a component (e.g., a SSD component) of a data center storage system, an enterprise storage system, or a storage area network.
- the memory device 103 may include a semiconductor memory device.
- Semiconductor memory devices include volatile memory devices, such as dynamic random access memory (“DRAM”) or static random access memory (“SRAM”) devices, non-volatile memory devices, such as resistive random access memory (“ReRAM”), magnetoresistive random access memory (“MRAM”), electrically erasable programmable read only memory (“EEPROM”), flash memory (which can also be considered a subset of EEPROM), ferroelectric random access memory (“FRAM”), and other semiconductor elements capable of storing information.
- volatile memory devices such as dynamic random access memory (“DRAM”) or static random access memory (“SRAM”) devices
- non-volatile memory devices such as resistive random access memory (“ReRAM”), magnetoresistive random access memory (“MRAM”), electrically erasable programmable read only memory (“EEPROM”), flash memory (which can also be considered a subset of EEPROM), ferroelectric random access memory (“FRAM”), and other semiconductor elements capable of storing information.
- ReRAM resistive random access memory
- MRAM magnetoresistive random access memory
- the memory devices can be formed from passive and/or active elements, in any combinations.
- passive semiconductor memory elements include ReRAM device elements, which in some embodiments include a resistivity switching storage element, such as an anti-fuse, phase change material, etc., and optionally a steering element, such as a diode, etc.
- active semiconductor memory elements include EEPROM and flash memory device elements, which in some embodiments include elements containing a charge region, such as a floating gate, conductive nanoparticles, or a charge storage dielectric material.
- Multiple memory elements may be configured so that they are connected in series or so that each element is individually accessible.
- flash memory devices in a NAND configuration typically contain memory elements connected in series.
- a NAND memory array may be configured so that the array is composed of multiple strings of memory in which a string is composed of multiple memory elements sharing a single bit line and accessed as a group.
- memory elements may be configured so that each element is individually accessible, e.g., a NOR memory array.
- NAND and NOR memory configurations are exemplary, and memory elements may be otherwise configured.
- the semiconductor memory elements located within and/or over a substrate may be arranged in two or three dimensions, such as a two dimensional memory structure or a three dimensional memory structure.
- the semiconductor memory elements are arranged in a single plane or a single memory device level.
- memory elements are arranged in a plane (e.g., in an x-z direction plane) which extends substantially parallel to a major surface of a substrate that supports the memory elements.
- the substrate may be a wafer over or in which the layer of the memory elements are formed or it may be a carrier substrate which is attached to the memory elements after they are formed.
- the substrate may include a semiconductor such as silicon.
- the memory elements may be arranged in the single memory device level in an ordered array, such as in a plurality of rows and/or columns. However, the memory elements may be arrayed in non-regular or non-orthogonal configurations.
- the memory elements may each have two or more electrodes or contact lines, such as bit lines and word lines.
- a three dimensional memory array is arranged so that memory elements occupy multiple planes or multiple memory device levels, thereby forming a structure in three dimensions (i.e., in the x, y and z directions, where the y direction is substantially perpendicular and the x and z directions are substantially parallel to the major surface of the substrate).
- a three dimensional memory structure may be vertically arranged as a stack of multiple two dimensional memory device levels.
- a three dimensional memory array may be arranged as multiple vertical columns (e.g., columns extending substantially perpendicular to the major surface of the substrate, i.e., in the y direction) with each column having multiple memory elements in each column.
- the columns may be arranged in a two dimensional configuration, e.g., in an x-z plane, resulting in a three dimensional arrangement of memory elements with elements on multiple vertically stacked memory planes.
- Other configurations of memory elements in three dimensions can also constitute a three dimensional memory array.
- the memory elements may be coupled together to form a NAND string within a single horizontal (e.g., x-z) memory device levels.
- the memory elements may be coupled together to form a vertical NAND string that traverses across multiple horizontal memory device levels.
- Other three dimensional configurations can be envisioned wherein some NAND strings contain memory elements in a single memory level while other strings contain memory elements which span through multiple memory levels.
- Three dimensional memory arrays may also be designed in a NOR configuration and in a ReRAM configuration.
- a monolithic three dimensional memory array typically, one or more memory device levels are formed above a single substrate.
- the monolithic three dimensional memory array may also have one or more memory layers at least partially within the single substrate.
- the substrate may include a semiconductor such as silicon.
- the layers constituting each memory device level of the array are typically formed on the layers of the underlying memory device levels of the array.
- layers of adjacent memory device levels of a monolithic three dimensional memory array may be shared or have intervening layers between memory device levels.
- this disclosure may be used to advantage in non-monolithic stacked 3D arrays and monolithic three dimensional (3D) arrays, such as BiCS memory arrays, to address shifting and widening of CVD due the layers of memory cells formed vertically and due to charge trapping based technology.
- Each memory cells of a 3D array may have different CVD distributions and exhibit different Vt shifts due to temperatures changes at programming versus at reading.
- two dimensional arrays may be formed separately and then packaged together to form a non-monolithic memory device having multiple layers of memory.
- non-monolithic stacked memories can be constructed by forming memory levels on separate substrates and then stacking the memory levels atop each other. The substrates may be thinned or removed from the memory device levels before stacking, but as the memory device levels are initially formed over separate substrates, the resulting memory arrays are not monolithic three dimensional memory arrays.
- multiple two dimensional memory arrays or three dimensional memory arrays may be formed on separate chips and then packaged together to form a stacked-chip memory device.
- Associated circuitry is typically required for operation of the memory elements and for communication with the memory elements.
- memory devices may have circuitry used for controlling and driving memory elements to accomplish functions such as programming and reading.
- This associated circuitry may be on the same substrate as the memory elements and/or on a separate substrate.
- a controller for memory read-write operations may be located on a separate controller chip and/or on the same substrate as the memory elements.
- Table 1 below provides an example of offline TCO characterization and correlation with a single proxy to provide correction term ⁇ V i,j MMSE utilizing estimation equation (4).
- seven TCO measurement are made along with a single proxy measurement in an offline TCO characterization of memory 102 or memory array 1310 although any number of TCO measurements may be made.
- Table 1 below provides an example of offline TCO characterization and correlation with a single proxy to provide correction term ⁇ V i,j MMSE utilizing estimation equation (4).
- seven TCO measurement are made along with a single proxy measurement in an offline TCO characterization of memory 102 or memory array 1310 although any number of TCO measurements may be made.
- TCO Proxy 50 50 100 100 150 50 50 100 10 50 200 100 130 50 four actual TCO measurements have the same proxy value 50. The actual TCO measurements having the same proxy value 50 are averaged providing an estimated TCO value of 85 for the proxy value 50. In Table 1, three actual TCO measurements have the same proxy value 100. The actual TCO measurements having the same proxy value 100 are averaged providing an estimated TCO value of 116.7 for the proxy value 100.
- FIG. 19 is a graph 1900 illustrating one embodiment of TCO characterization and correction of a group of memory cells.
- a curve 1910 is the Vt distribution in a program temperature at ⁇ 30° C. (low temperature) programming a plurality of softbits under a number of cycles.
- a curve 1920 is the Vt distribution in a read temperature at 85° C. (high temperature) and has 1.15% cell error rate (CER).
- a curve 1930 is the Vt distribution after TCO correction obtained using a linear estimator based on multiple proxies for each actual TCO measurement and has 0.7% CER.
- a curve 1940 is the Vt distribution after TCO correction obtained using optimal conditional expectation estimator based a single proxy for each actual TCO measurement and has 0.73% CER.
- curve 1930 and curve 1940 are much narrower than the curve 1920 indicating that the Vt correction of curve 1930 and curve 1940 reduced the BER.
- the BER reduction of curve 1930 using multiple proxies has slightly better BER reduction than curve 1940 using a single proxy.
- the present disclosure describes devices and methods for mitigating increased BER due to temperature changes between programming and reading memory locations.
- each memory cell can have a different TCO, each cell may have a different Vt.
- reading a memory page may result in the shifting and widening of CVDs and a significantly increased BER.
- Vt By correcting the Vt for each cell by estimating the TCO per cell and correcting each cell's Vt. This will result in narrowing the CVD and a corresponding reduction in BER.
- a data storage device that includes a non-volatile memory, a controller coupled to the non-volatile memory, the controller operable to measure a first Vt of a memory cell under a first parameter at a read temperature, measure a second Vt of the memory cell under a second parameter at the read temperature, where the first parameter is different from the second parameter, determine a Vt correction term for the memory cell based upon the first Vt measurement and the second Vt measurement, and adjust a read Vt of the memory cell by using the Vt correction term.
- the device may also include where the first parameter of measuring the first Vt is a default read parameter.
- the device may also include where the first parameter and the second parameter are different than a default read parameter, the controller further operable to measure a third Vt of the memory cell under the default read parameter at the read temperature.
- the device may also include where the read Vt of the memory cell is measured under a default read parameter at the read temperature.
- the device may also include where the Vt correction term is retrieved from a look-up table.
- the device may also include where the measured first Vt and the measured second Vt serve as a proxy.
- the device may also include where the Vt correction term is retrieved from a look-up table, the look-up table correlating the proxy to the Vt correction term.
- the device may also include where the Vt correction term is determined by measurements of one or more proxies at a temperature proximate the read temperature and by measurements of an actual temperature coefficient at the temperature proximate the read temperature.
- the device may also include where the Vt correction term is determined by measurements of one or more proxies at a temperature different than the read temperature and by measurements of an actual temperature coefficient at the temperature different than the read temperature.
- the device may also include where the look-up table is stored in a non-volatile memory of the controller.
- a method of accessing data from a data storage device that includes measuring a first plurality of Vts of a page of memory cells under a first parameter at a read temperature, the first parameter including a first bit line voltage and a first sense amplifier integration time, measuring a second plurality of Vts of the page of memory cell under a second parameter at the read temperature, the second parameter including a second bit line voltage and a second sense amplifier integration time, retrieving a Vt correction term for each memory cell of the page of memory cells based upon the measured Vts under the first parameter and upon the measured Vts under the second parameter, and adjusting a read Vt for each memory cell of the page of memory cells by using the Vt correction term.
- the method may also include where the first parameter of measuring the first Vt is a default read parameter.
- the method may also include where the first parameter and the second parameter are different than a default read parameter, the method further including measuring a third Vt of the memory cell under the default read parameter.
- the method may also include where the read Vt of the memory cell is measured under a default read parameter at the read temperature.
- the method may also include where the first bit line voltage and the second bit line voltage are different.
- the method may also include where the first sense amplifier integration time and the second sense amplifier integration time are different.
- the method may also include where the first bit line voltage and the second bit line voltage are different and where the first sense amplifier integration time and the second sense amplifier integration time are different.
- the method may also include where the Vt correction term is retrieved from a look-up table.
- a non-transitory computer readable storage medium containing instructions that, when executed by a controller, perform a method of accessing data from a data storage device that includes measuring a first Vt and a second Vt of a memory cell at different read parameters, determining a temperature coefficient proxy for the memory cell, retrieving an estimated temperature coefficient value correlated to the temperature coefficient proxy of the memory cell, and adjusting a read Vt of the memory cell by using the estimated temperature coefficient value.
- the medium may also include where the first parameter of measuring the first Vt is a default read parameter.
- the medium may also include where the first parameter and the second parameter are different than a default read parameter, the method further including measuring a third Vt of the memory cell under the default read parameter.
- the medium may also include where the read Vt of the memory cell is measured under a default read parameter at the read temperature.
- the medium may also include where the estimated temperature coefficient value is based upon an estimation of actual temperature coefficient measurements and single proxy measurements.
- the medium may also include where the estimation is a conditional expectation estimation.
- the medium may also include where the estimated temperature coefficient value is based upon an estimation of actual temperature coefficient measurements and multiple proxy measurements.
- the medium may also include where the estimation is a linear estimation.
- a data storage device that includes a non-volatile memory and a cell voltage distribution mitigating means for adjusting a Vt of a memory cell of the non-volatile memory, the cell voltage distribution mitigation means operable to measure the Vt of the memory cell at two different read parameters at a read temperature.
- the device may also include the means is further operable to retrieve from a look-up table a Vt correction term correlated to the measured Vt at two different read parameters.
- the device may also include the means is further operable to adjust a read Vt using the Vt correction term.
- the device may also include where the look-up table is stored in the cell voltage distribution mitigating means.
- the device may also include the means is further operable to adjust the Vt of the memory cell after detecting uncorrectable decoding of the memory cell.
- a method of mitigating cell voltage distribution widening due to cross temperature conditions in a data storage device including characterizing an estimated temperature coefficient (TCO) value for each memory cell of one or more memory arrays, where the characterization generates an offline look-up table, and where the look-up table correlates a single proxy to a single TCO value, measuring a Vt at a read temperature with one or more read parameters to determine one or more proxy vectors, applying the proxy vector to determine a corrected Vt, and applying the corrected Vt to a read/write operation.
- TCO estimated temperature coefficient
- the method may also include where the look-up table correlates multiple proxies to a single TCO value.
- the method may also include where one memory array is characterized offline and the characterization is applied to other related memory arrays, where other related memory arrays include at least one of a memory array of a same design, of a same specifications, from a same manufacturing lot, and from a same wafer.
- the method may also include where memory access parameters include at least one of a read temperature of a block of data, read temperature of a word line, read Vts, write temperature of a block of data, and write temperature of a word line.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
Abstract
Description
proxyi,j=measurement (Vblci,SEN2i)−measurement (Vblcj,SEN2j) (1)
Other equations/definitions of a single component proxy vector based upon measurements of the Vt of a memory cell at two different read parameters are possible.
proxy=(proxyi,j,proxyj,k) (2)
Other equations/definitions of a multiple component proxy vector based upon measurements of the Vt of a memory cell at three or more different read parameters are possible.
ΔV i,j MMSE =E[ΔV|proxyi,j ,T read ,T write] (3)
Assuming a linear temperature dependency this correction term may be simplified and expressed as follows:
In which E is the average value of all actual TCOs or ΔVs with the same single proxy value measured in offline characterization. As shown in
ΔV lin =W·proxies+b (5)
in which,
W=C ΔV,proxies C −1 proxies,proxies
b=E(ΔV)−W·E(proxies) (6)
where C is the covariance matrix and E is the average value of all actual TCO or ΔV with the same proxy vector measured in offline characterization. Each proxy vector may be correlated with a single estimated TCO value stored in a
Vt new =Vt+ΔV (7)
The memory cells with corrected or new Vts may be decoded with lower BER in comparison to Vts without any cross temperature mitigation.
TABLE 1 | |||
| Proxy | ||
50 | 50 | ||
100 | 100 | ||
150 | 50 | ||
50 | 100 | ||
10 | 50 | ||
200 | 100 | ||
130 | 50 | ||
four actual TCO measurements have the
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/004,806 US10564900B2 (en) | 2016-03-04 | 2018-06-11 | Temperature variation compensation |
US16/751,615 US11194523B2 (en) | 2016-03-04 | 2020-01-24 | Temperature variation compensation |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662303891P | 2016-03-04 | 2016-03-04 | |
US15/167,316 US9996281B2 (en) | 2016-03-04 | 2016-05-27 | Temperature variation compensation |
US15/619,157 US10446242B2 (en) | 2016-05-27 | 2017-06-09 | Temperature variation compensation |
US201762518548P | 2017-06-12 | 2017-06-12 | |
US16/004,806 US10564900B2 (en) | 2016-03-04 | 2018-06-11 | Temperature variation compensation |
Related Parent Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/167,316 Continuation-In-Part US9996281B2 (en) | 2016-03-04 | 2016-05-27 | Temperature variation compensation |
US15/619,157 Continuation-In-Part US10446242B2 (en) | 2016-03-04 | 2017-06-09 | Temperature variation compensation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/751,615 Division US11194523B2 (en) | 2016-03-04 | 2020-01-24 | Temperature variation compensation |
Publications (2)
Publication Number | Publication Date |
---|---|
US20180293029A1 US20180293029A1 (en) | 2018-10-11 |
US10564900B2 true US10564900B2 (en) | 2020-02-18 |
Family
ID=63711555
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/004,806 Active US10564900B2 (en) | 2016-03-04 | 2018-06-11 | Temperature variation compensation |
US16/751,615 Active US11194523B2 (en) | 2016-03-04 | 2020-01-24 | Temperature variation compensation |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/751,615 Active US11194523B2 (en) | 2016-03-04 | 2020-01-24 | Temperature variation compensation |
Country Status (1)
Country | Link |
---|---|
US (2) | US10564900B2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10740101B2 (en) * | 2018-03-19 | 2020-08-11 | Toshiba Memory Corporation | Memory system |
US20220291849A1 (en) * | 2020-09-11 | 2022-09-15 | Micron Technology, Inc. | Selective partitioning of sets of pages programmed to memory device |
US11494261B2 (en) | 2020-07-01 | 2022-11-08 | Western Digital Technologies, Inc. | Machine learning for temperature compensation |
US20230061037A1 (en) * | 2021-09-01 | 2023-03-02 | Micron Technology, Inc. | Apparatus with power-based data protection mechanism and methods for operating the same |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068186B2 (en) * | 2018-02-09 | 2021-07-20 | Micron Technology, Inc. | Providing recovered data to a new memory cell at a memory sub-system based on an unsuccessful error correction operation |
US10671298B2 (en) | 2018-03-06 | 2020-06-02 | Micron Technology, Inc. | Storing page write attributes |
US11061606B2 (en) * | 2018-06-29 | 2021-07-13 | Micron Technology, Inc. | NAND temperature-aware operations |
US10755783B2 (en) * | 2018-08-27 | 2020-08-25 | Silicon Storage Technology | Temperature and leakage compensation for memory cells in an analog neural memory system used in a deep learning neural network |
US10672452B2 (en) | 2018-09-21 | 2020-06-02 | Micron Technology, Inc. | Temperature informed memory refresh |
US10726926B2 (en) | 2018-09-29 | 2020-07-28 | Sandisk Technologies Llp | Hot-cold VTH mismatch using VREAD modulation |
US10658047B1 (en) * | 2018-10-31 | 2020-05-19 | Micron Technology, Inc. | Implementing sticky read using error control success rate associated with a memory sub-system |
US11321008B2 (en) | 2018-11-15 | 2022-05-03 | Micron Technology, Inc. | Temperature-based memory management |
WO2020107766A1 (en) * | 2018-11-28 | 2020-06-04 | 北京知存科技有限公司 | Flash memory chip and calibration method and apparatus therefor |
US10790860B2 (en) * | 2018-11-30 | 2020-09-29 | Kabushiki Kaisha Toshiba | Dynamic detection for flash memory |
JP2020144589A (en) * | 2019-03-06 | 2020-09-10 | キオクシア株式会社 | Memory system |
JP2020178010A (en) | 2019-04-17 | 2020-10-29 | キオクシア株式会社 | Semiconductor storage device |
CN113906511A (en) * | 2019-05-31 | 2022-01-07 | 美光科技公司 | Improvements in security and correctness of data read and programming in non-volatile memory devices |
US11449245B2 (en) | 2019-06-13 | 2022-09-20 | Western Digital Technologies, Inc. | Power target calibration for controlling drive-to-drive performance variations in solid state drives (SSDs) |
KR102716349B1 (en) | 2019-06-14 | 2024-10-11 | 삼성전자주식회사 | Method of operating storage device and storage device performing the same |
US11017864B2 (en) * | 2019-06-26 | 2021-05-25 | Seagate Technology Llc | Preemptive mitigation of cross-temperature effects in a non-volatile memory (NVM) |
DE112019007657T5 (en) | 2019-08-23 | 2022-05-19 | Micron Technology, Inc. | TEMPERATURE-BASED MEMORY MANAGEMENT |
KR20210036593A (en) * | 2019-09-26 | 2021-04-05 | 삼성전자주식회사 | Storage device |
US11177277B2 (en) | 2019-11-06 | 2021-11-16 | Sandisk Technologies Llc | Word line architecture for three dimensional NAND flash memory |
TWI694456B (en) * | 2019-12-03 | 2020-05-21 | 華騰國際科技股份有限公司 | Nand flash controlling system and method thereof |
US20210182166A1 (en) * | 2019-12-12 | 2021-06-17 | Western Digital Technologies, Inc. | Zoned namespace management of non-volatile storage devices |
US11940892B2 (en) * | 2019-12-19 | 2024-03-26 | Micron Technology, Inc. | Closing block family based on soft and hard closure criteria |
US11762585B2 (en) * | 2020-03-23 | 2023-09-19 | Micron Technology, Inc. | Operating a memory array based on an indicated temperature |
CN113451309A (en) * | 2020-03-25 | 2021-09-28 | 长鑫存储技术有限公司 | Semiconductor structure and preheating method thereof |
US11294819B2 (en) * | 2020-03-31 | 2022-04-05 | Western Digital Technologies, Inc. | Command optimization through intelligent threshold detection |
US11488682B2 (en) * | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
CN113945293B (en) | 2020-06-30 | 2023-04-18 | 长鑫存储技术有限公司 | Semiconductor device with a plurality of semiconductor chips |
US11200939B1 (en) | 2020-07-06 | 2021-12-14 | Micron Technology, Inc. | Memory with per die temperature-compensated refresh control |
CN113948117B (en) * | 2020-07-17 | 2024-10-15 | 长鑫存储技术有限公司 | Semiconductor device with a semiconductor device having a plurality of semiconductor chips |
EP3968324B1 (en) * | 2020-07-17 | 2023-07-05 | Changxin Memory Technologies, Inc. | Semiconductor device |
EP3965105B1 (en) | 2020-07-17 | 2024-02-07 | Changxin Memory Technologies, Inc. | Calibration of temperature detection module in semiconductor memory comprising a plurality of memory chips |
KR20220130826A (en) | 2020-07-17 | 2022-09-27 | 창신 메모리 테크놀로지즈 아이엔씨 | semiconductor device |
US11340981B2 (en) * | 2020-08-13 | 2022-05-24 | Micron Technology, Inc. | Modifying conditions for memory device error connection operations |
US11842061B2 (en) * | 2020-08-19 | 2023-12-12 | Micron Technology, Inc. | Open block family duration limited by temperature variation |
JP2022038392A (en) * | 2020-08-26 | 2022-03-10 | キオクシア株式会社 | Semiconductor storage device and command processing method in semiconductor storage device |
CN112037845B (en) * | 2020-08-31 | 2021-08-17 | 深圳大学 | Temperature change calculation method of three-dimensional stacked memory chip |
US11886313B2 (en) * | 2020-09-21 | 2024-01-30 | Innogrit Technologies Co., Ltd. | Temperature assisted NAND flash management |
US11429769B1 (en) * | 2020-10-30 | 2022-08-30 | Xilinx, Inc. | Implementing a hardware description language memory using heterogeneous memory primitives |
KR20220067282A (en) * | 2020-11-17 | 2022-05-24 | 삼성전자주식회사 | Storage device, Server comprising the storage device and method for operation the storage device |
US20220229580A1 (en) * | 2021-01-20 | 2022-07-21 | Micron Technology, Inc. | Temperature tracking for a memory system |
US11935796B2 (en) * | 2021-03-23 | 2024-03-19 | Cisco Technology, Inc. | Temperature control for multiple die types in a common package |
US11922049B2 (en) * | 2021-08-20 | 2024-03-05 | Micron Technology, Inc. | Trim values for multi-plane operations |
JP2023079292A (en) * | 2021-11-29 | 2023-06-08 | ラピステクノロジー株式会社 | Semiconductor storage device, data writing method, and manufacturing method of semiconductor storage device |
US11940831B2 (en) * | 2021-12-07 | 2024-03-26 | Infineon Technologies LLC | Current generator for memory sensing |
US12094537B2 (en) | 2021-12-13 | 2024-09-17 | Sandisk Technologies Llc | Non-volatile memory with differential temperature compensation for super page programming |
US11894071B2 (en) | 2021-12-13 | 2024-02-06 | Sandisk Technologies Llc | Non-volatile memory with differential temperature compensation for bulk programming |
US12027211B2 (en) * | 2022-05-26 | 2024-07-02 | Micron Technology, Inc. | Partial block handling protocol in a non-volatile memory device |
US12046306B2 (en) * | 2022-05-27 | 2024-07-23 | Sandisk Technologies Llc | Temperature dependent programming techniques in a memory device |
US12055996B2 (en) * | 2022-10-25 | 2024-08-06 | Dell Products L.P. | Storage device write-read error reduction system |
CN116881619B (en) * | 2022-12-01 | 2024-05-14 | 中国矿业大学(北京) | Atmospheric weighted average temperature refinement method taking surface air temperature and water vapor pressure into consideration |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060104140A1 (en) | 2004-11-16 | 2006-05-18 | Elpida Memory, Inc. | Semiconductor memory device and refresh method thereof |
US7205758B1 (en) * | 2004-02-02 | 2007-04-17 | Transmeta Corporation | Systems and methods for adjusting threshold voltage |
US20100157672A1 (en) * | 2008-12-19 | 2010-06-24 | Barkley Gerald J | Wordline Temperature Compensation |
US7782674B2 (en) | 2007-10-18 | 2010-08-24 | Micron Technology, Inc. | Sensing of memory cells in NAND flash |
US7881120B2 (en) | 2008-03-25 | 2011-02-01 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US20110121795A1 (en) * | 2009-11-23 | 2011-05-26 | Intersil Americas Inc. | Programmable power supply controller and methodology for automatic phase adjustment of a pwm output signal |
US20110145521A1 (en) | 2009-12-11 | 2011-06-16 | Renesas Electronics Corporation | Data processing semiconductor device |
US20110302353A1 (en) | 2008-12-30 | 2011-12-08 | Emanuele Confalonieri | Non-volatile memory with extended operating temperature range |
US20120134213A1 (en) | 2010-11-25 | 2012-05-31 | Samsung Electronics Co., Ltd. | Method compensation operating voltage, flash memory device, and data storage device |
US20120144270A1 (en) | 2007-09-06 | 2012-06-07 | Western Digital Technologies, Inc. | Storage subsystem capable of adjusting ecc settings based on monitored conditions |
US20120224425A1 (en) | 2011-03-02 | 2012-09-06 | Apple Inc. | Using Temperature Sensors with a Memory Device |
US20130290600A1 (en) | 2012-04-25 | 2013-10-31 | Sandisk Technologies Inc. | Data storage based upon temperature considerations |
US20140035560A1 (en) | 2012-08-03 | 2014-02-06 | Freescale Semiconductor, Inc. | Method and apparatus for limiting access to an integrated circuit (ic) |
US8687421B2 (en) | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
US20140226412A1 (en) | 2012-08-13 | 2014-08-14 | Phison Electronics Corp. | Data writing method, and memory control circuit unit and memory storage apparatus using the same |
US20150235706A1 (en) | 2014-02-20 | 2015-08-20 | Phison Electronics Corp. | Data transmitting method, memory control circuit unit and memory storage apparatus |
US20150310938A1 (en) | 2014-04-25 | 2015-10-29 | Seagate Technology Llc | Temperature Tracking to Manage Threshold Voltages in a Memory |
US9202579B2 (en) | 2013-03-14 | 2015-12-01 | Sandisk Technologies Inc. | Compensation for temperature dependence of bit line resistance |
US20160117216A1 (en) | 2014-10-24 | 2016-04-28 | Micron Technology, Inc. | Temperature related error management |
US20170117033A1 (en) | 2015-10-22 | 2017-04-27 | Samsung Electronics Co., Ltd. | Refresh method of controlling self-refresh cycle with temperature |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765825B2 (en) | 2005-12-16 | 2010-08-03 | Intel Corporation | Apparatus and method for thermal management of a memory device |
US7441949B2 (en) | 2005-12-16 | 2008-10-28 | Micron Technology, Inc. | System and method for providing temperature data from a memory device having a temperature sensor |
US7773413B2 (en) * | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US9465732B2 (en) | 2013-03-15 | 2016-10-11 | Sandisk Technologies Llc | Binning of blocks for dynamic linking |
US9792175B2 (en) | 2015-10-21 | 2017-10-17 | Sandisk Technologies Llc | Bad column management in nonvolatile memory |
US20170117053A1 (en) * | 2015-10-27 | 2017-04-27 | Sandisk Technologies Inc. | Systems and methods to compensate for threshold voltage shifts |
-
2018
- 2018-06-11 US US16/004,806 patent/US10564900B2/en active Active
-
2020
- 2020-01-24 US US16/751,615 patent/US11194523B2/en active Active
Patent Citations (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7205758B1 (en) * | 2004-02-02 | 2007-04-17 | Transmeta Corporation | Systems and methods for adjusting threshold voltage |
US20060104140A1 (en) | 2004-11-16 | 2006-05-18 | Elpida Memory, Inc. | Semiconductor memory device and refresh method thereof |
US8296625B2 (en) | 2007-09-06 | 2012-10-23 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US20120144270A1 (en) | 2007-09-06 | 2012-06-07 | Western Digital Technologies, Inc. | Storage subsystem capable of adjusting ecc settings based on monitored conditions |
US7782674B2 (en) | 2007-10-18 | 2010-08-24 | Micron Technology, Inc. | Sensing of memory cells in NAND flash |
US7881120B2 (en) | 2008-03-25 | 2011-02-01 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
US20100157672A1 (en) * | 2008-12-19 | 2010-06-24 | Barkley Gerald J | Wordline Temperature Compensation |
US20110302353A1 (en) | 2008-12-30 | 2011-12-08 | Emanuele Confalonieri | Non-volatile memory with extended operating temperature range |
US20110121795A1 (en) * | 2009-11-23 | 2011-05-26 | Intersil Americas Inc. | Programmable power supply controller and methodology for automatic phase adjustment of a pwm output signal |
US20110145521A1 (en) | 2009-12-11 | 2011-06-16 | Renesas Electronics Corporation | Data processing semiconductor device |
US20120134213A1 (en) | 2010-11-25 | 2012-05-31 | Samsung Electronics Co., Ltd. | Method compensation operating voltage, flash memory device, and data storage device |
US20120224425A1 (en) | 2011-03-02 | 2012-09-06 | Apple Inc. | Using Temperature Sensors with a Memory Device |
US8472274B2 (en) | 2011-03-02 | 2013-06-25 | Apple Inc. | Using temperature sensors with a memory device |
US8687421B2 (en) | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
US20130290600A1 (en) | 2012-04-25 | 2013-10-31 | Sandisk Technologies Inc. | Data storage based upon temperature considerations |
US20140035560A1 (en) | 2012-08-03 | 2014-02-06 | Freescale Semiconductor, Inc. | Method and apparatus for limiting access to an integrated circuit (ic) |
US20140226412A1 (en) | 2012-08-13 | 2014-08-14 | Phison Electronics Corp. | Data writing method, and memory control circuit unit and memory storage apparatus using the same |
US9202579B2 (en) | 2013-03-14 | 2015-12-01 | Sandisk Technologies Inc. | Compensation for temperature dependence of bit line resistance |
US20150235706A1 (en) | 2014-02-20 | 2015-08-20 | Phison Electronics Corp. | Data transmitting method, memory control circuit unit and memory storage apparatus |
US20150310938A1 (en) | 2014-04-25 | 2015-10-29 | Seagate Technology Llc | Temperature Tracking to Manage Threshold Voltages in a Memory |
US20160117216A1 (en) | 2014-10-24 | 2016-04-28 | Micron Technology, Inc. | Temperature related error management |
US20170117033A1 (en) | 2015-10-22 | 2017-04-27 | Samsung Electronics Co., Ltd. | Refresh method of controlling self-refresh cycle with temperature |
Non-Patent Citations (2)
Title |
---|
International Preliminary Report on Patentability and Written Opinion issued in corresponding International Patent Application No. PCT/US2017/019612, dated Sep. 4, 2018 (11 pages). |
International Search Report issued in International Patent Application No. PCT/US2017/019612, dated Jul. 14, 2017 (14 pages). |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10740101B2 (en) * | 2018-03-19 | 2020-08-11 | Toshiba Memory Corporation | Memory system |
US11494261B2 (en) | 2020-07-01 | 2022-11-08 | Western Digital Technologies, Inc. | Machine learning for temperature compensation |
US20220291849A1 (en) * | 2020-09-11 | 2022-09-15 | Micron Technology, Inc. | Selective partitioning of sets of pages programmed to memory device |
US11995326B2 (en) * | 2020-09-11 | 2024-05-28 | Micron Technology, Inc. | Selective partitioning of sets of pages programmed to memory device |
US20230061037A1 (en) * | 2021-09-01 | 2023-03-02 | Micron Technology, Inc. | Apparatus with power-based data protection mechanism and methods for operating the same |
Also Published As
Publication number | Publication date |
---|---|
US20180293029A1 (en) | 2018-10-11 |
US20200159465A1 (en) | 2020-05-21 |
US11194523B2 (en) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11194523B2 (en) | Temperature variation compensation | |
US11385802B2 (en) | Temperature variation compensation | |
US10446242B2 (en) | Temperature variation compensation | |
US10304559B2 (en) | Memory write verification using temperature compensation | |
US10191799B2 (en) | BER model evaluation | |
US10374639B2 (en) | Adaptive bit-flipping decoder based on dynamic error information | |
US9740425B2 (en) | Tag-based wear leveling for a data storage device | |
US9710329B2 (en) | Error correction based on historical bit error data | |
US10284233B2 (en) | ECC adjustment based on dynamic error information | |
US9483339B2 (en) | Systems and methods for fast bit error rate estimation | |
US9583183B2 (en) | Reading resistive random access memory based on leakage current | |
US10402117B2 (en) | Memory health monitoring | |
US20170117053A1 (en) | Systems and methods to compensate for threshold voltage shifts | |
US9411669B2 (en) | Selective sampling of data stored in nonvolatile memory | |
US20180047444A1 (en) | Memory system with read threshold estimation and operating method thereof | |
US9865360B2 (en) | Burn-in memory testing | |
US9583207B2 (en) | Adaptive data shaping in nonvolatile memory | |
WO2015171315A1 (en) | Structure variation detection for a memory having a three-dimensional memory configuration | |
WO2015171316A1 (en) | Memory access techniques for a memory having a three-dimensional memory configuration | |
US9734903B2 (en) | Disturb condition detection for a resistive random access memory | |
US9524794B1 (en) | Constrained data shaping | |
WO2015171314A1 (en) | Error correcting code techniques for a memory having a three-dimensional memory configuration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ACHTENBERG, STELLA;SHARON, ERAN;ROZMAN, DAVID;AND OTHERS;SIGNING DATES FROM 20180711 TO 20181010;REEL/FRAME:047218/0377 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566 Effective date: 20200113 |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001 Effective date: 20220203 |
|
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: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067567/0682 Effective date: 20240503 |
|
AS | Assignment |
Owner name: SANDISK TECHNOLOGIES, INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:067982/0032 Effective date: 20240621 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS THE AGENT, ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT;ASSIGNOR:SANDISK TECHNOLOGIES, INC.;REEL/FRAME:068762/0494 Effective date: 20240820 |