MEMORY DEVICES WITH READ LEVEL CALIBRATION
Several embodiments of memory devices and systems with read level calibration are disclosed herein. In one embodiment, a memory device includes a controller operably coupled to a main memory having at least one memory region and calibration circuitry. The calibration circuitry is operably coupled to the at least one memory region and is configured to determine a read level offset value corresponding to a read level signal of the at least one memory region. In some embodiments, the calibration circuitry is configured to obtain the read level offset value internal to the main memory. The calibration circuitry is further configured to output the read level offset value to the controller.
The disclosed embodiments relate to memory devices and systems, and, in particular, to memory devices with read level calibration.
BACKGROUNDMemory devices can employ flash media to persistently store large amounts of data for a host device, such as a mobile device, a personal computer, or a server. Flash media includes “NOR flash” and “NAND flash” media. NAND-based media is typically favored for bulk data storage because it has a higher storage capacity, lower cost, and faster write speed than NOR media. The memory cells in NAND flash employ a charge storage structure, (e.g., a floating gate structure or a charge trapping structure) for storing charge to represent different data states. The cells are programmed by transferring electrons through a thin dielectric layer (e.g., a tunnel oxide) from a channel to, e.g., a floating gate or a charge trapping layer within the charge storage structure. The amount of charge stored in a memory cell represents one or more threshold voltages that are indicative of the voltage(s) required to form a conductive path within the channel, (e.g., depending on the amount of electrons stored on the floating gate or the charge trapping layer).
One drawback of flash memory and other non-volatile memory is that the threshold voltages of the individual memory cells can change as, over time, the memory device erases and writes data to the memory. For example, over multiple erase and write cycles, electrons can become trapped within the tunnel oxide of a memory cell, causing the threshold voltage(s) of the cell to gradually increase. This phenomenon, if uncorrected, can result in bit errors during a read of the data stored in the memory cell.
In some circumstances, error correcting code (ECC) techniques may be employed to detect and correct bit errors if the number of bit errors does not exceed the correction capacity of the code. Eventually, however, as more electrons are trapped within the tunnel oxide layers of more and more memory cells in a memory device, the number of memory cells with unreadable data states (e.g., due to shifted threshold voltages) may exceed the correction capacity of the ECC. When this happens, the memory controller is no longer able to efficiently or properly read out data from the affected memory regions.
As described in greater detail below, the present technology relates to memory devices and related systems with read level calibration. A person skilled in the art, however, will understand that the technology may have additional embodiments and that the technology may be practiced without several of the details of the embodiments described below with reference to
One embodiment of the present technology is a memory device comprising a controller and a main memory. The main memory includes a memory region having a plurality of memory cells. The main memory also includes calibration circuitry operably coupled to the memory region. The calibration circuitry is configured to (1) measure a performance characteristic for each of a plurality of read level test signals corresponding to portions of the memory region; (2) determine a read level offset value based on the performance characteristics; and (3) output the read level offset value to the controller.
A read level offset value may be used to update a corresponding current read level signal for a portion of the memory region. In this manner, the current read level signals for the main memory of the memory device can be calibrated to account for shifts in the threshold voltages in the memory cells of the main memory, which, in turn, decreases the occurrence of bit errors and increases the life of the memory device.
Memory cells 122 can be arranged in rows 124 (e.g., each corresponding to a word line) and columns 126 (e.g., each corresponding to a bit line). Furthermore, adjacent word lines 124 can be arranged into one or more word line groups that compose a memory block 128. Each word line 124 can span one or more memory pages, depending upon the number of data states the memory cells 122 of that word line 124 are configured to store. For example, a single word line 124 of memory cells 122 in which each memory cell 122 stores one of two data states (e.g., SLC memory cells configured to store one bit each) can span a single memory page. Alternatively, a single word line 124 of memory cells 122 in which each memory cell 122 stores one of four data states (e.g., MLC memory cells configured to store two bits each) can span two memory pages. Moreover, memory pages can be interleaved so that a word line 124 comprised of memory cells 122 configured to store one of two data states in each cell (e.g., SLC memory cells) can span two memory pages, in an “even-odd bit line architecture,” where all the memory cells 122 in odd-numbered columns 126 of a single word line 124 are grouped as a first memory page, and all the memory cells 122 in even-numbered columns 126 of the same word line 124 are grouped as a second memory page. When even-odd bit line architecture is utilized in a word line 124 of memory cells 122 that store larger numbers of data states in each cell (e.g., memory cells configured as MLC, TLC, QLC, etc.), the number of memory pages per word line 124 can be even higher (e.g., 4, 6, 8, etc.).
Each column 126 can include a string of series-coupled memory cells 122 coupled to a common source. The memory cells 122 of each string can be connected in series between a source select transistor (e.g., a field-effect transistor) and a drain select transistor (e.g., a field-effect transistor). Source select transistors can be commonly coupled to a source select line, and drain select transistors can be commonly coupled to a drain select line.
In other embodiments, the memory cells 122 can be arranged in different types of groups and/or hierarchies than those shown in the illustrated embodiments. Further, while shown in the illustrated embodiments with a certain number of memory cells, rows, columns, blocks, and memory units for purposes of illustration, in other embodiments, the number of memory cells, rows, columns, blocks, and memory units can vary, and can be larger or smaller in scale than shown in the illustrated examples. For example, in some embodiments, the memory device 100 can include only one memory unit 120. Alternatively, memory device 100 can include two, three, four, eight, ten, or more (e.g., 16, 12, 64, or more) memory units 120. While the memory units 120 are shown in
The main memory 102 further includes a calibration component, or calibration circuitry 110 (shown schematically), operably coupled to at least one of the memory units 120. In some embodiments, the calibration circuitry 110 can be located on the same memory die as an individual memory unit 120. In these and other embodiments, the calibration circuitry 110 may be dedicated to a corresponding memory unit 120 or multiple memory units, including memory units on different die. The calibration circuitry 110 can include circuit components, such as multiplexers, decoders, buffers, read/write drivers, address registers, data out/data in registers, etc. In some embodiments, the calibration circuitry 110 can be circuitry separate from other on-chip circuitry used for accessing and/or programming (e.g., reading and/or writing) the memory cells 122 and/or for providing other functionality, such as for processing information and/or communication with the controller 106.
The controller 106 can be a microcontroller, special purpose logic circuitry (e.g., a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.), or other suitable processor. The controller 106 can include a processor 130 configured to execute instructions stored in memory. In the illustrated example, the memory of the controller 106 includes an embedded memory 132 configured to perform various processes, logic flows, and routines for controlling operation of the memory device 100, including managing the main memory 102 and handling communications between the memory device 100 and the host device 108. In some embodiments, the embedded memory 132 can include memory registers storing, e.g., memory pointers, fetched data, etc. The embedded memory 132 can also include read-only memory (ROM) for storing micro-code. While the exemplary memory device 100 illustrated in
In operation, the controller 106 can directly write or otherwise program (e.g., erase) the various memory regions of the main memory 102, such as by writing to groups of memory pages and/or memory blocks 128. In NAND-based memory, a write operation often includes programming the memory cells 122 in selected memory pages with specific data values (e.g., a string of data bits having a value of either logic 0 or logic 1). An erase operation is similar to a write operation, except that the erase operation re-programs an entire memory block 128 or multiple memory blocks 128 to the same data state (e.g., logic 0).
The controller 106 communicates with the host device 108 over a host-device interface 115. In some embodiments, the host device 108 and the controller 106 can communicate over a serial interface, such as a serial attached SCSI (SAS), a serial AT attachment (SATA) interface, a peripheral component interconnect express (PCIe), or other suitable interface (e.g., a parallel interface). The host device 108 can send various requests (in the form of, e.g., a packet or stream of packets) to the controller 106. A request can include a command to write, erase, return information, and/or to perform a particular operation (e.g., a TRIM operation).
The controller 106 can also calibrate signals used to program and read from the main memory 102. In various embodiments described below, the controller 106 can send a calibration signal to the calibration circuitry 110 to instruct the calibration circuitry 110 to self-calibrate one or more memory regions of the main memory 102, which can improve or optimize the signaling (e.g., voltage signaling) used to read the data state of the individual memory cells 122, such as a selected group of memory cells 122 (e.g., multiple memory pages associated with a word line; not shown).
The controller 106 can also periodically calibrate the read level signals of one or more select memory regions within the main memory 102. The read level signals may be periodically calibrated to account for, e.g., a shift of one or more threshold voltages of memory cells within the memory regions. To calibrate the read level signals of selected memory regions within the main memory 102, the controller 106 can send a calibrate command 232 to the main memory 102. The calibrate command 232 can include physical addresses of the selected memory regions and/or current read level signals (e.g., default read level signals and/or previously calibrated read level signals) of the selected memory regions. In accordance with one embodiment of the present technology, the main memory 102 can calibrate the selected memory regions in response to the calibrate command 232. As part of the calibration, the main memory 102 can return one or more read level offset values 233 to the controller 106 that can represent calculated offsets from the current read level signals of the selected memory regions. The controller 106 can then use the read level offset values 233 to update the current read level signals to arrive at an improved read level signal for the selected memory regions. The controller 106 and the host device 108 may then continue to program and/or read the main memory 102 using the calibrated read level signals.
As shown in
In some memory devices, read level signals of a memory region are initially programmed by the manufacturer of a memory device (e.g., at the time of manufacture or initial configuration) and may thereafter remain unchanged for the life of the memory device. However, as the memory region is repeatedly programmed and/or erased, the threshold voltages of the memory cells within the memory region can change (e.g., due to the trapping of electrons in the tunnel oxides thereof).
Although the memory cell in
Referring to
After the calibration circuitry 110 obtains counts indicative of the number of memory cells that output the specified data state as each test signal is applied to the memory region, the calibration circuitry 110 can calculate count differences between the counts corresponding to adjacent test signals. For example and as shown in table 450 of
Referring now to
After the calibration circuitry 110 calculates the relative differences between the other count differences and the minimum count difference, the calibration circuitry 110 can extrapolate a value between adjacent relative differences having opposite signs (i.e., between relative differences corresponding to count differences adjacent to and surrounding the minimum count difference).
In some embodiments, the read level offset value can be rounded to a nearest offset step value (e.g., the nearest 5 mV or 10 mV offset step value) to facilitate easier storage as an integer value (e.g. a byte and/or a signed integer value). For example, in the embodiment illustrated in
In some embodiments, the memory region can be a memory page within a larger memory region (e.g., a memory block, a memory unit, etc.) and/or a memory block within a larger memory region (e.g., a memory unit). In these and other embodiments, read level calibration can be performed on more than one memory page and/or on more than one memory block within a larger memory region. As such, the calibration circuitry 110 can produce multiple read level offset values by performing read level calibration on the larger memory region (e.g., on all or a subset of the memory pages and/or on all or a subset of the memory blocks comprising the larger memory region). In such an embodiment, the calibration circuitry 110 can calculate an average read level offset value for the larger memory region from the multiple read level offset values in the manner described in greater detail with reference to
Referring to
Referring now to
After the routine 580 obtains the one or more read level offset values produced by performing read level calibration on the selected memory region(s) (block 582), the routine 580 can calculate an average read level offset value (e.g., per memory page, per word line group, per memory block, per memory unit, etc.) (block 583) from the obtained read level offset value(s). For example, the routine 580 can calculate an average read level offset value by taking the median of the obtained read level offset values (e.g., a median byte and/or a median signed integer value). In other embodiments, the routine 580 can calculate the average read level offset value using other averaging techniques (e.g., mean, mode, etc.). In these and other embodiments, the routine 580 can omit outlier read level offset values (e.g., values greater than ±10 digital to analog (DAC) offsets) obtained from performing read level calibration on the selected memory region(s) (block 582) before calculating the average read level offset value (block 583). In some embodiments, the routine 580 can calculate the average read level offset value before rounding to the nearest offset step value. In other embodiments, the routine 580 can calculate the average read level offset value after rounding the obtained read level offset values to the nearest offset step value. Furthermore, in embodiments that produce a single read level offset value after performing read level calibration on the selected memory region(s), the single read level offset value can be treated as an average read level offset value for the selected memory region(s). The routine 580 can then output the average read level offset value to the routine 570 (block 584).
Referring again to
Accordingly, in subsequent iterations of read level calibration of the selected memory region, the calibration value can be updated by adding the newly-obtained average read level offset value(s) from the routine 580 to the stored calibration value. Thus, the updated calibration value(s) can represent instructions to increase or decrease the current read level signal for the memory region (e.g., by ±5 mV, ±10 mV, ±20 mV, and/or other voltage values) relative to a previous read level signal for the selected memory region in order to arrive at an improved read level signal for the memory region. In these and other embodiments, the routine 570 can store the updated calibration value and/or the updated current read level signal in, for example, a table stored on the main memory 102 and/or embedded memory 132 of the controller 106 of the memory device 100, so that routine 570 can continue to track these values (e.g., as persistent data to be loaded upon each power up of the memory device 100).
While in the foregoing exemplary embodiments, read level calibration operations have been described as outputting values representing offsets by which read level signals can be indexed, the present technology is not limited to this arrangement. In other embodiments, the routine 570 can translate the average read level offset value into, e.g., a scalar value that can represent a scale factor to apply to the current read level signal for the memory region in order to arrive at an improved read level signal. In still other embodiments, a read level calibration operation can translate a calculated average read level offset value into other instructions to update or otherwise modify the current read level signal (e.g., as a read level signal value, instead of an offset to a stored value, etc.).
From the foregoing, it will be appreciated that specific embodiments of the invention have been described herein for purposes of illustration, but that various modifications may be made without deviating from the disclosure. For example, in one embodiment, the calibration circuitry 110 (
Claims
1. A memory device comprising:
- a controller; and
- a main memory operably coupled to the controller, wherein the main memory includes: a memory region having a plurality of memory cells, and calibration circuitry operably coupled to the memory region and configured to: measure, for a portion of the memory region, a performance characteristic for each of a plurality of read level test signals, wherein the plurality of read level test signals include a read level signal of the memory region, at least two signals offset above the read level signal, and at least two signals offset below the read level signal; and wherein measuring the performance characteristic includes— applying each of the plurality of read level test signals to a subset of memory cells within the memory region, and detecting counts of memory cells in the subset of memory cells that output a preselected data state in response to each of the read level test signals, determine a read level offset value corresponding to an extrapolated level between two of the plurality of read level test signals based on the measured performance characteristics, and output the read level offset value to the controller.
2. The memory device of claim 1, wherein the memory region comprises a memory block including a plurality of word line groups, and wherein the portion comprises a subset of the plurality of word line groups.
3. The memory device of claim 1, wherein the memory region comprises a memory block including a plurality of word line groups, each word line group having a plurality of memory pages, and wherein the portion comprises two endmost memory pages and an inner memory page from each word line group.
4. The memory device of claim 3, wherein the read level offset value is determined by averaging a plurality of offset values corresponding to the two endmost memory pages and a middle memory page.
5. The memory device of claim 1, wherein the performance characteristic comprises a number of memory cells outputting a predetermined data state in response to the corresponding read level test signal.
6. The memory device of claim 1 wherein the calibration circuitry is configured to output the read level offset value in response to a calibration command received from the controller.
7. The memory device of claim 6, wherein the controller is configured to send the calibration command when the memory region completes a first predetermined number of program cycles, a second predetermined number of erase cycles, or a third predetermined number of either program or erase cycles.
8. The memory device of claim 6, wherein the controller is configured to send the calibration command when the memory device is connected to a host, after a predetermined amount of time has elapsed since the calibration command was last sent, or after a predetermined number of read cycles have been performed on the memory region since the calibration command was last sent.
9. The memory device of claim 6, wherein the controller is configured to send the calibration command in response to a command received from a host device operably connected to the memory device.
10. The memory device of claim 1, wherein the controller is configured to update a read level corresponding to the memory region based on the read level offset value.
11. The memory device of claim 1, wherein the calibration circuitry is located on a same memory die as the memory region.
12. The memory device of claim 1, wherein
- determining the read level offset value includes: measuring count differences between adjacent counts of memory cells, calculating relative differences at least between the count differences adjacent to the smallest count difference and the smallest count difference, extrapolating the extrapolated level between the relative differences, and determining the read level offset value as a distance between the extrapolated level and the read level signal of the memory region.
13. A method for calibrating a memory region of a memory device, the method comprising:
- measuring, for a portion of the memory region, a performance characteristic for each of a plurality of read level test signals, wherein the plurality of read level test signals include a read level signal of the memory region, at least two signals offset above the read level signal, and at least two signals offset below the read level signal, and wherein measuring the performance characteristic includes— applying each of the plurality of read level test signals to a subset of memory cells within the portion of the memory region, and detecting counts of memory cells in the subset of memory cells that output a preselected data state in response to each of the plurality of read level test signals;
- determining a read level offset value corresponding to an extrapolated level between two of the plurality of read level test signals based on the measured performance characteristics; and
- outputting the read level offset value.
14. (canceled)
15. The method of claim 13, wherein determining the read level offset includes:
- measuring count differences between adjacent counts of memory cells,
- calculating relative differences at least between the count differences adjacent to the smallest count difference and the smallest count difference,
- extrapolating the extrapolated level between the relative differences, and
- determining the read level offset value as a distance between the extrapolated level and the read level signal of the memory region; and
- wherein the measuring and determining occurs internal to a main memory comprising the memory region.
16. The method of claim 13 wherein the memory region comprises a memory block including a plurality of word line groups, and wherein the portion comprises a subset of the plurality of word line groups.
17. The method of claim 13 wherein the memory region comprises a memory block including a plurality of word line groups, each word line group having a plurality of memory pages, and wherein the portion comprises two endmost memory pages and a middle memory page from each word line group.
18. The method of claim 17 wherein determining the read level offset value includes averaging a plurality of offset values corresponding to the two endmost memory pages and a middle memory page.
19. The method of claim 18 wherein the averaging includes omitting outlier offset values from the plurality of offset values before determining the read level offset value.
20. The method of claim 13 wherein the measuring, determining, and outputting are scheduled to be performed after the memory region has experienced a first predetermined number of program cycles, a second predetermined number of erase cycles, or a third predetermined number of either program cycles or erase cycles.
21. The method of claim 13 further comprising updating a read level signal of the memory region using the read level offset value.
22. The method of claim 21 wherein updating the read level signal includes updating a calibration value corresponding to the read level offset value.
23. The method of claim 22 further comprising storing the updated calibration value as persistent data in a table stored on the memory device, wherein—
- the calibration value represents a voltage value to add to or subtract from a corresponding read level signal of the memory region, and
- the persistent data is loaded upon each power up of the memory device.
24. A system comprising:
- a host device; and
- a memory device including: a controller; and a main memory operably coupled to the host device via the controller, wherein: the main memory includes a memory region comprising a plurality of memory cells, and calibration circuitry operably coupled to the memory region, and the calibration circuitry is configured to: measure, for a portion of the memory region, a performance characteristic for each of a plurality of read level test signals, wherein the plurality of read level test signals includes a read level signal of the memory region, at least two signals offset above the read level signal, and at least two signals offset below the read level signal; and wherein measuring the performance characteristic includes— applying each of the plurality of read level test to a subset of memory cells within the memory region, and detecting counts of memory cells that output a preselected data state in response to each of the read level test signals, determine a read level offset value corresponding to an extrapolated level between two of the plurality of read level test signals based on the measured performance characteristic, and output the read level offset value to the controller.
25. The system of claim 24 wherein the calibration circuitry is configured to output the read level offset value in response to a calibration command from the controller.
26. The system of claim 25 wherein the controller is configured to send the calibration command in response to a calibrate instruction from the host device.
27. (canceled)
28. The system of claim 24 wherein:
- determining the read level offset value includes: measuring count differences between adjacent counts; calculating relative differences at least between the count differences adjacent the smallest count difference and the smallest count difference; extrapolating the extrapolated level between the relative differences; and determining the read level offset value as a distance between the extrapolated level and the read level signal of the memory region.
29. The system of claim 24 wherein the memory device is configured to prevent the host device from reading, programming, and erasing the main memory of the memory device while the calibration circuitry measures the performance characteristic, determines the read level offset value, or outputs the read level offset value.
Type: Application
Filed: Aug 4, 2017
Publication Date: Feb 7, 2019
Inventors: Gary F. Besinga (Boise, ID), Peng Fei (Shanghai), Michael G. Miller (Boise, ID), Roland J. Awusie (Boise, ID), Kishore Kumar Muchherla (Fremont, CA), Renato C. Padilla (Folsom, CA), Harish R. Singidi (Fremont, CA), Jung Sheng Hoei (Newark, CA), Gianni S. Alsasua (Rancho Cordova, CA)
Application Number: 15/669,055