At least one example embodiment relates to memory devices and/or methods of operating memory devices.
Random read access time is an important performance parameter in nonvolatile memory devices such as solid state disk (SSD) devices, embedded multimedia card (eMMC) devices, etc. The increase in storage capacity of these memory devices has created a desire for higher write and read bandwidth so that the memory devices can be used more effectively. Sequential operations may be improved by extending the length of a word line to include more memory cells or by including additional layers of memory cells. However, these methods result in products where the number of cells in a word line (i.e., page size) exceeds a system's logical sectorsize. For example, a 3 bit/cell memory array may store data in 8 KB pages while the operating system reads data in 4 KB sectors. While executing a page read operation, the number of sensing operations is the same for both the page and the sector.
In the following example, allow WZ to be the number of cells per word line and SZ the amount of bits in a sector. In typical operating systems, SZ=4 KB. Further, allow NS to be the number of sectors per word line. When considering L levels per cell:
Allow NSR to be the average amount of reference voltages (or sensing operations) desired for a sector read operation (e.g., an array-to-buffer sector read operation). Given {S1, S2, . . . , SN} sectors per word line, and denoting NREF(Si) as the number of sensing operations to read sector Si, the expected reference voltages (or sensing operations) per sector read operation is:
Allow tSR to be the expected duration of a sector read operation. This time consists of a sensing time (e.g., the amount of reference voltages multiplied by a single reference duration, denoted as tREF) and a sector output operation. Since each sector is read with a different number of reference voltages, the expected duration tsR is the sum over all sectors in a word line divided by the number of references:
Because the number of sensing operations is related to the duration of a sector read operation and power consumed by the memory controller, reducing the amount of sensing operations per sector read operation is desired.
According to at least one example embodiment, a memory device includes a memory including memory cells, each of the memory cells being configured to store multiple bits of data. The memory device includes a controller configured to map the levels of the memory cells to bits such that a first half of the levels have a bit with a first binary value in a desired bit position and a second half of the levels have a bit with a second binary value in the desired bit position. The first half of the levels are a first group of consecutive levels, and the second half of the levels are a second group of consecutive levels. The first binary value is opposite the second binary value. The controller may generate a distribution for writing the data to the memory cells based on the mapping, and write the data to the memory cells based on the determined distribution.
According to at least one example embodiment, the controller is configured to map such that the consecutive levels of the first and second groups differ by a single bit.
According to at least one example embodiment, the controller is configured to generate the distribution by counting a number of the memory cells where the desired bit position in at least one page of the distribution is the second binary value.
According to at least one example embodiment, the controller is configured to generate the distribution by padding the at least one page with a memory cell associated with a level that has the second binary value in the desired bit position if the counted number of memory cells is less than a sector size in which the data is readable.
According to at least one example embodiment, the controller is configured to generate the distribution by padding the at least one page with a memory cell associated with a level that has the first binary value in the desired bit position if the counted number of memory cells is greater than a sector size in which the data is readable.
According to at least one example embodiment, the controller is configured to write the data by writing a first sector of bits of the data to memory cells where the generated distribution indicates that the desired bit position has the first binary value, and writing a second sector of bits of the data to memory cells where the generated distribution indicates that the desired bit position has the second binary value.
According to at least one example embodiment, the memory is a nonvolatile flash memory.
According to at least one example embodiment, the nonvolatile flash memory is a three-dimensional memory array.
According to at least one example embodiment, a memory device includes a memory including memory cells, each of the memory cells storing multiple bits of data. The memory device includes a controller configured to receive a request to read the memory cells. The controller reads the memory cells by applying a first reference voltage to the memory cells. The first reference voltage is a reference voltage from among a plurality of reference voltages used to determine program states of the memory cells, and a number of the plurality of reference voltages is equal to a number of the program states for each of the memory cells. The controller reads the memory cells by applying remaining ones of the plurality of reference voltages based on an address of the request such that less than all of the plurality of reference voltages are used to read the multiple bits of data.
According to at least one example embodiment, the first reference voltage is a median ference voltage from among the plurality of reference voltages.
According to at least one example embodiment, the controller is configured to determine whether the request to read the memory cells is for a first or second sector associated with a least significant bit of the multiple bits by checking an address of the request.
According to at least one example embodiment, if the address indicates a request to read the first sector, the controller is configured to ignore memory cells in the first sector that have a mapping value of a first binary value in a desired bit position and set the first sector of memory cells as the memory cells with a mapping value of a second binary mapping value in the desired bit position.
According to at least one example embodiment, the controller is configured to apply second and third reference voltages to the memory cells in the first sector and mark all memory cells in the first sector that are below the second reference voltage and above the third reference voltage with the first binary value.
According to at least one example embodiment, the second and third reference voltages are less than the first reference voltage.
According to at least one example embodiment, the controller is configured to output the first sector of data.
According to at least one example embodiment, if the controller determines that the read request is for the second sector, the controller is configured to ignore memory cells in the second sector with a mapping value a first binary value in the desired bit position and set memory cells of the second sector as the memory cells with a mapping value of a second binary value in the desired bit position.
According to at least one example embodiment, the controller is configured to apply fourth and fifth reference voltages to the memory cells in the second sector and mark all memory cells in the second sector below the fourth reference voltage and above the fifth reference voltage with the first binary value.
According to at least one example embodiment, the fourth and fifth reference voltages are greater than the first reference voltage.
According to at least one example embodiment, the controller is configured to output the second sector of data.
According to at least one example embodiment, a method includes mapping levels of memory cells to bits such that a first half of the levels have a bit with a first binary value in a desired bit position and a second half of the levels have a bit with a second binary value in the desired bit position. The first half of the levels are a first group of consecutive levels, and the second half of the levels are a second group of consecutive levels. The first binary value is opposite the second binary value, and each of the memory cells is configured to store multiple bits of data. The method includes generating a distribution for writing the data to the memory cells based on the mapping, and writing the data to the memory cells based on the determined distribution.
The above and other aspects and features of the inventive concepts will become more apparent by describing in detail example embodiments thereof with reference to the attached drawings, in which:
Inventive concepts rill now be described more fully with reference to the accompanying drawings, in which example embodiments of are shown. These example embodiments are provided so that this disclosure will be thorough and complete, and will fully convey inventive concepts of to those skilled in the art. Inventive concepts may be embodied in many different forms with a variety of modifications, and a few embodiments will be illustrated in drawings and explained in detail. However, this should not be construed as being limited to example embodiments set forth herein, and rather, it should be understood that changes may be made in these example embodiments without departing from the principles and spirit of inventive concepts, the scope of which are defined in the claims and their equivalents. Like numbers refer to like elements throughout. In the drawings, the thicknesses of layers and regions are exaggerated for clarity.
It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element, without departing from the scope of example embodiments. As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items.
It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent,” etc.).
Unless specifically stated otherwise, or as is apparent from the discussion, terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical, electronic quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Specific details are provided in the following description to provide a thorough understanding of example embodiments. However, it will be understood by one of ordinary skill in the art that example embodiments may be practiced without these specific details. For example, systems may be shown in block diagrams so as not to obscure exam embodiments in unnecessary detail. In other instances, well-known processes, structures and techniques may be shown without unnecessary detail in order to avoid obscuring example embodiments.
In the following description, illustrative embodiments will be described with reference to acts and symbolic representations of operations (e.g., in the form of flow charts, flow diagrams, data flow diagrams, structure diagrams, block diagrams, etc.) that may be implemented as program modules or functional processes include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types and may be implemented using existing hardware in existing electronic systems (e.g., electronic imaging systems, image processing systems, digital point-and-shoot cameras, personal digital assistants (PDAs , smartphones, tablet personal computers (PCs), laptop computers, etc.). Such existing hardware may include one or more Central Processing Units (CPUs), digital signal processors (DSPs), application-specific-integrated-circuits (ASICs), field programmable gate arrays (FPGAs) computers or the like.
Although a flow chart may describe the operations as a sequential process, many of the operations may be performed in parallel, concurrently or simultaneously. In addition, the order of the operations may be re-arranged. A process may be terminated when its operations are completed, but may also have additional steps not included in the figure. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling; function or the main function.
As disclosed herein, the term “storage medium”, “computer readable storage medium” or “non-transitory computer readable storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other tangible or non-transitory machine readable mediums for storing information. The term “computer-readable medium” may include, but is not limited to, portable or fixed storage devices, optical storage devices, and various other tangible or non-transitory mediums capable of storing, containing or carrying instruction(s) and/or data.
Furthermore, example embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine or computer readable medium such as a computer readable storage medium. When implemented in software, a processor or processors may be programmed to perform the necessary tasks, thereby being transformed into special purpose processor(s) or computer(s).
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “includes”, “including”, “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which inventive concepts belong. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
As used herein, the term “and/or” includes any and all combinations of one or more of the associated listed items. Expressions such as “at least one of,” when preceding a list of elements, modify the entire list of elements and do not modify the individual elements of the list.
As shown in
The transmitter 152, receiver 154, memory 156, and processor 158 may send data to and/or receive data from one another using the data bus 159. The transmitter 152 is a device that includes hardware and any necessary software for transmitting signals including, for example, data signals and control signals to the memory 120 and/or a host (not shown).
The receiver 154 is a device that includes hardware and any necessary software for receiving signals including, for example, data signals and control signals to and from the memory 120 and a host (not shown).
The memory 156 may be any device capable of storing data including magnetic storage, flash storage, etc.
The processor 158 may be any device capable of processing data including, for example, a special purpose processor configured to carry out specific operations based on input data, or capable of executing instructions included in computer readable code stored on the memory 156. For example, it should be understood that the modifications and methods described below may be stored on the memory 156 and implemented by the processor 158.
Further, it should be understood that the below modifications and methods may be carried out by one or more of the above described elements of the controller 110. For example, the receiver 154 may carry out steps of “receiving,” “acquiring,” and the like; transmitter 152 may carry out steps of “transmitting,” “outputting,” “sending” and the like; processor 158 may carry out steps of “determining,” “generating”, “correlating,” “calculating,” and the like; and memory 156 may carry out steps of “storing,” “saving,” and the like.
In operation 300, the controller 110 maps levels of memory cells to bits that correspond to each level. The levels may correspond to program states of the memory cells in memory 120. Thus, in the 3 bit/cell memory array, there are eight levels (or program states) for the memory cells. In an example, the controller 110 maps the levels to the bits such that a first half of the levels have a bit with a first binary value in a desired bit position and a second half of the levels have a bit with a second binary value in the desired bit position. The first half of the levels may be a first group of consecutive levels the second half of the levels may be a second group of consecutive levels. The first binary value may be opposite the second binary value. The controller 110 performs the mapping in operation 300 such that the consecutive levels of the first and second groups differ by a single hit so that the mapping adheres to a Gray code (see most left column of
In operation 310, the controller 110 generates a distribution for writing pages of data to the memory cells based on the mapping in operation 300. For example, the controller 110 generates the distribution based on the first binary values, the second binary values, and the desired hit position. The controller 110 may generate the distribution such that each level (or program state) is associated with a substantially same number of memory cells in a word line, which may reduce unequal cell degradation. Operation 310 is described in further detail below with reference to
In operation 320, the controller 110 writes the pages of data to the memory cells of memory 120 based on the generated distribution. For example, the controller 110 may write a first sector of bits of the data to memory cells where the generated distribution indicates that the desired bit position has the first binary value. The controller 110 may write a second sector of bits of the data to memory cells where the determined distribution indicates that the desired bit position has the second binary value. As discussed in detail below with reference to
In operation 330, the controller 110 receives at least one page of the pages of data to be programed to the memory 120. For example, the controller 110 receives most significant bit (MSB) and central significant bit (CSB) pages of data. As mentioned with respect to operation 310, each level (or program state) is associated with a substantially same number of memory cells in a word line (or a page) of the generated distribution.
Thus, in operation 340, the controller 110 counts a number of the memory cells in a page of the distribution determined in operation 310 where the desired bit position of an associated level is the second binary value. For example, if the desired bit position is the MSB, the controller 110 counts a number of memory cells having an associated level where the MSB is a ‘1.’
In operation 350, the controller 110 determines whether the counted number of memory cells is equal to a sector size in which data is written and read by the controller 110. If not, the controller 110 determines whether the counted number of memory cells is less than the sector size in operation 355.
If the counted number of memory cells is less than the sector size, then in operation 360, the controller 110 pads the page in the distribution from operation 310 with a memory cell associated with a level that has the second binary value (or ‘1’) in the desired bit position (e.g., the MSB position) and in a bit position adjacent to the desired bit positon (e.g., the CSB position), and returns to operation 340.
If, in operation 355, the controller 110 determines that the counted number of memory cells is not less than the sector size (i.e., that the counted number of memory cells is greater than the sector size), then in operation 370, the controller 110 pads the page in the distribution from operation 310 with a memory cell associated with a level that has the first binary value (or ‘0’) in the desired bit positon (e.g., the MSB position) and the second binary value (or ‘1’) in an adjacent bit positon (e.g., the CSB position), and returns to operation 340.
If, in operation 350, the controller 110 determines that the counted number of memory cells equals the sector size, the controller 110 performs operation 380. In this example for a 3 bit/cell memory array with a 9 KB page size and a 4.5 KB sector size, the controller 110, in operation 380, writes a first sector of bits of a LSB page (e.g., sector 5 bits) to memory cells that have an associated level where an MSB is the second binary value (or ‘1’). In operation 390, the controller 110 writes a second sector of bits of the LSB page (e.g., sector 6 bits) to memory cells where an associated level where an MSB is the first binary value (or ‘0’).
With reference to
The operations in
In operation 420, the controller 110 applies a first reference voltage to the memory cells. The first reference voltage may be a median reference voltage from among the plurality of reference voltages since the memory cells were programmed in accordance with the mapping in operation 300. For example, with reference to
In operation 430, the controller 110 determines whether the request to read a sector in operation 400 is for a first or second sector (e.g., sector 5 or sector 6) associated with a least significant bit of the multiple bits by checking an address of the request.
If the address indicates a request to read the first sector (e.g., sector 5), the controller 110 proceeds to operation 440 to ignore memory cells with a mapping value of a first binary value in a desired bit position (e.g., an MSB mapping value of 0, the ignoring being indicated by “null” in
In operation 450, the controller 110 applies second and third reference voltages to the memory cells and marks all memory cells of the first sector (e.g., sector 5) that are below the second reference voltage and above the third reference voltage with the first binary value (e.g., a value of 0). The second and third reference voltages may be less than the first reference voltage. For example, with reference to
In operation 460, the controller. 110 outputs the first sector of data (e.g., sector 5 data) to complete the read operation for the first sector.
If the controller 110 determines that the read request is for the second sector (e.g., the sector 6) data in operation 430, then the controller 110 proceeds to operation 470 to ignore memory cells with a mapping value of a first binary value in the desired hit position (e.g., an MSB mapping value of 1, indicated by “null” in
In operation 480, the controller 110 applies fourth and fifth reference voltages to the memory cells of the second sector and marks all memory cells in the second sector below the fourth reference voltage and above the fifth reference voltage with the first binary value (e.g., a value of 1). The fourth and fifth reference voltages may be greater than the first reference voltage. For example, with reference to
In operation 490, the controller 110 outputs data of the second sector (e.g., sector 6 data) to complete the read operation for the second sector.
Because the sector data were programmed to the memory cells according to the operations and examples shown in
This is an improvement compared to the number of sensing operations per sector read operation for sectors 5 or 6 in
In view of the above, it should be appreciated that a memory device writing and reading data in accordance with example embodiments may reduce the amount of time of a sector read operation and reduce power consumption of the memory device. Although example embodiments have been discussed with respect to a 3 bit/cell memory with a 9 KB page size and a 4.5 KB sector size, example embodiments are not limited thereto. For example, example embodiments of inventive concepts may apply to a 2 bit/ cell memory array, 4 bit/cell memory array (see
While example embodiments have been shown and described above, it will be apparent to those skilled in the art that modifications and variations could be made without departing from the spirit and scope of the inventive concepts as defined by the appended claims.