A solid state drive (SSD) is a data storage device that uses integrated circuit assemblies as memory to store data persistently. SSDs have no moving mechanical components and this distinguishes SSDs from traditional electromechanical magnetic disks, such as, hard disk drives (HDDs) or floppy disks, which contain spinning disks and movable read/write heads. Compared to electromechanical disks, SSDs are typically more resistant to physical shock, run silently, have lower access time, and less latency. Many types of SSDs use NAND-based flash memory which comprises an electronic (solid-state) non-volatile computer storage medium that can be electrically erased and reprogrammed.
NAND-based flash memory stores information (i.e., data) in individual memory cells. In single-level cell (SLC) NAND flash technology, each memory cell may exist in one of two voltage states, storing one bit of information per memory cell. A multi-level cell (MLC) is a memory cell capable of storing more than a single bit of information. For example, a MLC NAND flash memory that has four possible voltage states per memory cell may store two bits of information per memory cell, and MLC NAND flash memory that has eight possible voltage states per memory cell [typically referred to as Triple Level Cell (TLC NAND)], may store three bits of information per memory cell.
Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
In the following description, reference is made to the accompanying drawings which form a part hereof and which illustrate several embodiments. It is understood that other embodiments may be utilized and structural and operational changes may be made.
A MLC NAND device may be programmed by applying a series of program pulses with increasing magnitude of voltage, and verifying whether memory cells of the MLC NAND device reach threshold levels of voltages.
In certain situations, local defects may be present in a MLC NAND device that may cause a group of memory cells of the MLC NAND device to be slower to program than expected. Certain embodiments provide mechanisms to detect failure of programming of the MLC NAND device caused by the local defects, at lower levels of applied voltages, and prevent excessive program disturbs caused by excessive applied voltages on other memory cells that share the same local or global wordlines as the memory cells associated with the local defects. A program disturb occurs when one or more memory cells are programmed excessively.
In certain embodiments, the host 102 may be comprised of any suitable computational device, such as a personal computer, a mainframe, a telephony device, a smart phone, a storage controller, a blade computer, a processor with memory, etc. In certain embodiments, the host 102 may communicate with the SSD 104 over a bus (such as a Peripheral Component Interconnect (PCIe), Serial Advanced Technology Attachment (SATA), Serial Attached Small Computer System Interface (SAS)) or a network, such as the Internet, a storage area network (SAN), a local area network (LAN), Non-Volatile Memory Express (NVMe) a logical device interface (http://www.nvmexpress.org) for accessing non-volatile storage media attached via a PCIe bus, etc.
In certain embodiments, a controller application 110 (implemented in firmware, software, hardware or any combination thereof) that executes in the controller 106 of the SSD 104 programs the memory cells of the MLC NAND 108. The SSD 100 also receives commands from the host 102, and then the controller application 110 executes the read and/or write with respect to the NAND complex 108 by converting the read and/or write commands received from the host 102 into memory operations. The controller 106 and the controller application 110 may be implemented in Application Specific Integrated Circuit (ASIC) and/or firmware, software, or any combination thereof.
Therefore,
For example, in a TLC NAND device, each memory cell 204, 206 is programmed into one of 8 possible threshold voltage levels (L0, L1, . . . , L7) to represent 3 bits of data that is written to that memory cell. Each programming loop comprises applying a program pulse (denoted by PGM n 208, PGM n+1 210, PGM n+2 212) and a series of verify levels that may be referred to as PV1, PV2, PV3, PV4, PV5, PV6, PV7, where reference numerals 214, 216, 218 shows the verify levels applied after the program pulse PGM n 208. As the magnitude of the program pulse increases in each programming loop, the threshold voltage of the NAND memory cells that are being programmed increases. Once each memory cell's threshold voltage passes the corresponding verify level, the memory cell is inhibited in the remaining program loops by applying a higher voltage to the bitline of the memory cell.
As the magnitude of the program pulse is increased, the threshold (Vt) distribution of memory cells moves to a higher value based on the program slope of the memory cells. The Vt distribution is shown cumulatively. At a given program loop denoted by loop n1302, the programmed Vt distribution has passed the verify levels for L1 and L2, but has not reached PV3308 yet. The program operations verify the threshold voltage of cells that are targeted for L1 and L2 against PV1 and PV2, respectively and inhibit the bitlines that pass their corresponding verify levels. There is no need to verify cells that belong to L3-L7310 yet. At a later program loop denoted by loop n2312, all cells that belong to L1 and L2 have already passed their corresponding verify level and are inhibited for the rest of the program loops. There is no need to verify these cells any more. Program's Vt distribution has crossed PV3-PV5308, 314, 316, but not PV6318 as yet. As a result memory cells that belong to L3-L5 are being verified against their corresponding verify level. There is no need to verify cells that belong to L6 and L7. At a given program loop denoted by last program loop 320, all cells have passed their corresponding verify level and program operations complete successfully.
The expected loop number at which the program Vt distribution passes a given verify level (and as a result cells that belong to the corresponding level need to be verified) and expected loop number at which all cells that belong to a given level are expected to pass verify may be calculated based on the program slope of the memory cells, the gate step of increasing program pulses and spacing between the verify levels.
In this example shown in
In some embodiments, local defects may be present in a NAND device that may cause a group of cells to be slower to program than expected. One such localized defect may be electrical shorts between neighboring local wordlines that are created during fabrication process or during device operation as a result of high voltage stress applied to wordlines. This prevents the correct program or verify voltage to be applied to a group of cells and as a result they may not be programmed correctly or pass verify even if their threshold voltage is already above the corresponding PV level.
In certain embodiments, the programming operations do not have the information that these memory cells are localized to a specific region of the NAND die or does not use this information even if the information is available. As a result the programming operations may treat such localized defects merely as if some of the cells are still not passing verify and may continue to increase the magnitude of voltage of the program pulse until the maximum loop count is reached (e.g., loop count of 20 as shown via reference numeral 412). As a consequence, other memory cells that share the same local or global word line are exposed to excessive program voltage and as a result program disturb. Program disturb may cause an increase to the threshold voltage of inhibited cells and in particular threshold voltage of cells that belong to L0. This may cause a read error for cells that share the same local or global wordline even if the defective location is excluded during read operations.
In one embodiment, a set of PASS checkpoints (PCi) 602 are specified for each level, Li, 604. If at loop=PCi, the number of cells that belong to Li and that are passing PVi is less than a pre-specified threshold number, the programming is aborted and status fail is reported. The PASS checkpoints PCi are specified based on the expected loop number where some cells for a given level Li are expected to pass PVi. For example, from
A set of FAIL checkpoints (FCi) 702 are specified for each level Li 704. If at loop=FCi the number of cells that belong to Li and fail PVi is greater than a pre-specified threshold number, the programming is aborted and a failure status is reported.
The FAIL checkpoints (FCi) 702 may be specified from the loop number at which all cells from a given level Li 704 are expected to pass verify. In the example shown in
In this example shown in
In one embodiment the die 802 is divided into portions or regions referred to as tiles 804, 806, 808. Each tile is comprised of cells that share the same local wordline. A set of PASS checkpoints (PCi) 602 are specified for each level Li. If at loop PCi 602 the number of cells that belong to Li 604 and passing PVi is less than a pre-specified threshold for a given tile, that tile is excluded from programming in the rest of programming loops and program operations continue.
In an alternative embodiment, the die 802 is divided into portions or regions referred to as tiles 804, 806, 808. A set of FAIL checkpoints (FCi) 702 are specified for levels Li 704. If at loop FCi the number of cells that belong to Li and fail PVi is greater than a pre-specified threshold for a given tile, the tile is excluded from programming in the rest of programming loops and program operations continue.
Control starts at block 902 in which a programming of a memory device configurable to reach a plurality of voltage levels is initiated. In certain embodiments, the sequence of program pulses are applied in an increasing order of magnitude, wherein application of each program pulse is followed by one or more verification operations to determine whether voltage levels have been reached in the plurality of memory cells of the memory device.
From block 902 control proceeds to block 904. For each voltage level to be reached, a checkpoint is set up (at block 904) within a sequence of program pulses applied for the programming of the memory device, to determine whether a plurality of memory cells of the memory device have reached the voltage level. The programming of the memory device is aborted (also at block 904), in response to determining at the checkpoint that the plurality of memory cells have not reached the voltage level.
Therefore
The described operations may be implemented as a method, apparatus or computer program product using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as code maintained in a “computer readable storage medium”, where a processor may read and execute the code from the computer storage readable medium. The computer readable storage medium includes at least one of electronic circuitry, storage materials, inorganic materials, organic materials, biological materials, a casing, a housing, a coating, and hardware. A computer readable storage medium may comprise, but is not limited to, a magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), Solid State Devices (SSD), etc. The code implementing the described operations may further be implemented in hardware logic implemented in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The program code embedded on a computer readable storage medium may be transmitted as transmission signals from a transmitting station or computer to a receiving station or computer. A computer readable storage medium is not comprised solely of transmission signals. Those skilled in the art will recognize that many modifications may be made to this configuration, and that the article of manufacture may comprise suitable information bearing medium known in the art.
Computer program code for carrying out operations for aspects of the certain embodiments may be written in any combination of one or more programming languages. Blocks of the flowchart and block diagrams may be implemented by computer program instructions.
Certain embodiments may be directed to a method for deploying computing instruction by a person or automated processing integrating computer-readable code into a computing system, wherein the code in combination with the computing system is enabled to perform the operations of the described embodiments.
The terms “an embodiment”, “embodiment”, “embodiments”, “the embodiment”, “the embodiments”, “one or more embodiments”, “some embodiments”, and “one embodiment” mean “one or more (but not all) embodiments” unless expressly specified otherwise.
The terms “including”, “comprising”, “having” and variations thereof mean “including but not limited to”, unless expressly specified otherwise.
The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise.
The terms “a”, “an” and “the” mean “one or more”, unless expressly specified otherwise.
Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries.
A description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments.
Further, although process steps, method steps, algorithms or the like may be described in a sequential order, such processes, methods and algorithms may be configured to work in alternate orders. In other words, any sequence or order of steps that may be described does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order practical. Further, some steps may be performed simultaneously.
When a single device or article is described herein, it will be readily apparent that more than one device/article (whether or not they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether or not they cooperate), it will be readily apparent that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments need not include the device itself.
At least certain operations that may have been illustrated in the figures show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units.
The foregoing description of various embodiments has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to be limited to the precise forms disclosed. Many modifications and variations are possible in light of the above teaching.
The following examples pertain to further embodiments.
Examiner 1 is a method for detecting programming failure in which a programming of a memory device configurable to reach a plurality of voltage levels is initiated. For each voltage level to be reached, a checkpoint is set up within a sequence of program pulses applied for the programming of the memory device, to determine whether a plurality of memory cells of the memory device have reached the voltage level. The programming of the memory device is aborted, in response to determining at the checkpoint that the plurality of memory cells have not reached the voltage level.
In example 2, the subject matter of example 1 may include that programming the memory device comprises applying the sequence of program pulses in an increasing order of magnitude, wherein application of each program pulse is followed by one or more verification operations to determine whether voltage levels have been reached in the plurality of memory cells of the memory device.
In example 3, the subject matter of example 1 may include that the memory device is a multi-level cell (MLC) memory device, and wherein one checkpoint is set for each voltage level of the plurality of voltage levels.
In example 4, the subject matter of example 1 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, wherein for each checkpoint for a voltage level if a number of memory cells that reach the voltage level is less than a predetermined threshold number, then programming of the memory device is aborted and a status failure is reported.
In example 5, the subject matter of example 1 may include that a checkpoint for a voltage level is after an expected start pulse and prior to an expected end pulse for the voltage level.
In example 6, the subject matter of example 1 may include that a checkpoint is set for each voltage level of the plurality of voltage levels. A die of the memory device is segmented into a plurality of regions, wherein each region comprises memory cells that share a same local wordline. For each checkpoint for a voltage level, if a number of memory cells that reach the voltage level in a region is less than a predetermined threshold number, then excluding the region from being programmed while continuing programming of other regions of the memory device.
In example 7, the subject matter of example 1 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, wherein for each checkpoint for a voltage level if a number of memory cells that fail to reach the voltage level is more than a predetermined threshold number, then programming of the memory device is aborted and a status failure is reported.
In example 8, the subject matter of example 1 may include that a checkpoint for a voltage level is after an expected end pulse for the voltage level.
In example 9, the subject matter of example 1 may include that a checkpoint is set for each voltage level of the plurality of voltage levels. A die of the memory device is segmented into a plurality of regions, wherein each region comprises memory cells that share a same local wordline. For each checkpoint for a voltage level, if a number of memory cells that fail to reach the voltage level in a region is more than a predetermined threshold number, then excluding the region from being programmed while continuing programming of other regions of the memory device.
Example 10 is a non-volatile memory device for detecting programming failure, the non-volatile memory device comprising: a non-volatile memory; and a controller coupled to the non-volatile memory, wherein the controller is operable to: initiate a programming of the non-volatile memory, wherein the non-volatile memory is configurable to reach a plurality of voltage levels; and for each voltage level to be reached, perform: set up a checkpoint within a sequence of program pulses applied for the programming of the non-volatile memory, to determine whether a plurality of memory cells of the non-volatile memory have reached the voltage level; and abort the programming of the non-volatile memory, in response to determining at the checkpoint that the plurality of memory cells have not reached the voltage level.
In example 11, the subject matter of example 10 may include that programming the non-volatile memory comprises applying the sequence of program pulses in an increasing order of magnitude, wherein application of each program pulse is followed by one or more verification operations to determine whether voltage levels have been reached in the plurality of memory cells of the non-volatile memory.
In example 12, the subject matter of example 10 may include that the non-volatile memory device is a multi-level cell (MLC) memory device, and wherein one checkpoint is set for each voltage level of the plurality of voltage levels.
In example 13, the subject matter of example 10 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, and wherein for each checkpoint for a voltage level if a number of memory cells that reach the voltage level is less than a predetermined threshold number, then programming of the non-volatile memory is aborted and a status failure is reported.
In example 14, the subject matter of example 10 may include that a checkpoint for a voltage level is after an expected start pulse and prior to an expected end pulse for the voltage level.
In example 15, the subject matter of example 10 may include that a checkpoint is set for each voltage level of the plurality of voltage levels, wherein the controller is further operable to: segment a die of the non-volatile memory device into a plurality of regions, wherein each region comprises memory cells that share a same local wordline; and for each checkpoint for a voltage level, if a number of memory cells that reach the voltage level in a region is less than a predetermined threshold number, then exclude the region from being programmed while continuing programming of other regions of the non-volatile memory.
In example 16, the subject matter of example 10 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, and wherein for each checkpoint for a voltage level if a number of memory cells that fail to reach the voltage level is more than a predetermined threshold number, then programming of the non-volatile memory is aborted and a status failure is reported.
In example 17, the subject matter of example 10 may include that a checkpoint for a voltage level is after an expected end pulse for the voltage level.
In example 18, the subject matter of example 10 may include that a checkpoint is set for each voltage level of the plurality of voltage levels, wherein the controller is further operable to: segment a die of the non-volatile memory device into a plurality of regions, wherein each region comprises memory cells that share a same local wordline; and for each checkpoint for a voltage level, if a number of memory cells that fail to reach the voltage level in a region is more than a predetermined threshold number, then exclude the region from being programmed while continuing programming of other regions of the non-volatile memory.
Example 19 is a system detecting programming failure, the system comprising: a display; a non-volatile memory device comprising a non-volatile memory; and a controller coupled to the non-volatile memory, wherein the controller is operable to: initiate a programming of the non-volatile memory, wherein the non-volatile memory is configurable to reach a plurality of voltage levels; and for each voltage level to be reached, perform: set up a checkpoint within a sequence of program pulses applied for the programming of the non-volatile memory, to determine whether a plurality of memory cells of the non-volatile memory have reached the voltage level; and abort the programming of the non-volatile memory, in response to determining at the checkpoint that the plurality of memory cells have not reached the voltage level.
In example 20, the subject matter of example 19 may include that programming the non-volatile memory comprises: applying the sequence of program pulses in an increasing order of magnitude, wherein application of each program pulse is followed by one or more verification operations to determine whether voltage levels have been reached in the plurality of memory cells of the non-volatile memory.
In example 21, the subject matter of example 19 may include that the non-volatile memory device is a multi-level cell (MLC) memory device, and wherein one checkpoint is set for each voltage level of the plurality of voltage levels.
In example 22, the subject matter of example 19 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, and wherein for each checkpoint for a voltage level if a number of memory cells that reach the voltage level is less than a predetermined threshold number, then programming of the non-volatile memory is aborted and a status failure is reported.
In example 23, the subject matter of example 19 may include that a checkpoint for a voltage level is after an expected start pulse and prior to an expected end pulse for the voltage level.
In example 24, the subject matter of example 19 may include that a checkpoint is set for each voltage level of the plurality of voltage levels, wherein the controller is further operable to: segment a die of the non-volatile memory device into a plurality of regions, wherein each region comprises memory cells that share a same local wordline; and for each checkpoint for a voltage level, if a number of memory cells that reach the voltage level in a region is less than a predetermined threshold number, then exclude the region from being programmed while continuing programming of other regions of the non-volatile memory.
In example 25, the subject matter of example 19 may include that one checkpoint is set for each voltage level of the plurality of voltage levels, and wherein for each checkpoint for a voltage level if a number of memory cells that fail to reach the voltage level is more than a predetermined threshold number, then programming of the non-volatile memory is aborted and a status failure is reported.
Example 26 is a system detecting programming failure, the system comprising: means for initiating a programming of a memory device configurable to reach a plurality of voltage levels; and means for performing for each voltage level to be reached comprising: means for setting up a checkpoint within a sequence of program pulses applied for the programming of the memory device, to determine whether a plurality of memory cells of the memory device have reached the voltage level; and means for aborting the programming of the memory device, in response to determining at the checkpoint that the plurality of memory cells have not reached the voltage level.
All optional features of any of the systems and/or apparatus described above may also be implemented with respect to the method or process described above, and specifics in the examples may be used anywhere in one or more embodiments. Additionally, all optional features of the method or process described above may also be implemented with respect to any of the system and/or apparatus described above, and specifics in the examples may be used anywhere in one or more embodiments.