US20200192807A1 - Mapping for multi-state programming of memory devices - Google Patents

Mapping for multi-state programming of memory devices Download PDF

Info

Publication number
US20200192807A1
US20200192807A1 US16/221,378 US201816221378A US2020192807A1 US 20200192807 A1 US20200192807 A1 US 20200192807A1 US 201816221378 A US201816221378 A US 201816221378A US 2020192807 A1 US2020192807 A1 US 2020192807A1
Authority
US
United States
Prior art keywords
data
mapped
mapped data
mapping
transitions
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.)
Granted
Application number
US16/221,378
Other versions
US10705966B1 (en
Inventor
Bernie Rub
Mostafa EL GAMAL
Niranjay RAVINDRAN
Richard David Barndt
Henry Chin
Ravi J. Kumar
James Fitzpatrick
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Priority to US16/221,378 priority Critical patent/US10705966B1/en
Assigned to WESTERN DIGITAL TECHNOLOGIES, INC. reassignment WESTERN DIGITAL TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FITZPATRICK, JAMES, BARNDT, RICHARD DAVID, CHIN, HENRY, KUMAR, Ravi J., EL GAMAL, MOSTAFA, RAVINDRAN, NIRANJAY, RUB, BERNARDO
Priority to DE102019125059.5A priority patent/DE102019125059A1/en
Priority to CN201910884317.9A priority patent/CN111324299B/en
Assigned to JPMORGAN CHASE BANK, N.A., AS AGENT reassignment JPMORGAN CHASE BANK, N.A., AS AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WESTERN DIGITAL TECHNOLOGIES, INC.
Publication of US20200192807A1 publication Critical patent/US20200192807A1/en
Priority to US16/905,789 priority patent/US11372765B2/en
Publication of US10705966B1 publication Critical patent/US10705966B1/en
Application granted granted Critical
Assigned to WESTERN DIGITAL TECHNOLOGIES, INC. reassignment WESTERN DIGITAL TECHNOLOGIES, INC. RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Assignors: JPMORGAN CHASE BANK, N.A.
Priority to US17/746,849 priority patent/US11636039B2/en
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Assignors: WESTERN DIGITAL TECHNOLOGIES, INC.
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Assignors: WESTERN DIGITAL TECHNOLOGIES, INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/10Decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Definitions

  • the subject application relates generally to data storage systems, devices and methods. More specifically, the subject application relates to, for example, without limitation, multi-state programming for writing data to memory devices.
  • the description provided in the background section should not be assumed to be prior art merely because it is mentioned in or associated with the background section.
  • the background section may include information that describes one or more aspects of the subject technology, and the description in this section does not limit the invention.
  • FIG. 1 is a block diagram illustrating components of a flash storage system according to aspects of the subject technology
  • FIG. 2 conceptually illustrates an example of multi-state programming provided by various components of a flash storage system in accordance with one or more implementations of the subject technology
  • FIG. 3 conceptually illustrates an example of mapping in accordance with one or more implementations of the subject technology
  • FIG. 4 conceptually illustrates an example of mapping and subsequently performing an inverse mapping in accordance with one or more implementations of the subject technology
  • FIG. 5 conceptually illustrates an example data in an initial table and an example mapped data in a second table
  • FIG. 6 shows a flowchart of a process for performing multi-state programming in accordance with one or more implementations.
  • Some flash memory and other solid-state storage devices may implement multi-level cell (MLC) memory, triple-level cell (TLC) memory, quadruple-level cell (QLC) memory, or the like to store multiple bits of data in the same memory cell.
  • MLC, TLC and/or QLC memory cells are programmable to multiple states, which are each characterized by separate voltage thresholds. For example, a two-bit MLC memory cell can be programmed to one of four different states, a three-bit TLC memory cell can be programmed to one of eight different states, or a four-bit QLC memory cell can be programmed to one of sixteen different states, with each state corresponding to a unique voltage range.
  • MLC, TLC, and QLC memory may have different write times, read times, programming requirements, reliability, error rates, or the like.
  • foggy and fine programming techniques for multi-bit per cell NAND flash memory may refer to a two stage or multi-state programming technique (e.g., “foggy/fine programming”) where NAND cell voltages are quickly brought close to desired voltage levels (e.g., as determined by the bit pattern stored in each cell) in a first wordline programming operation (e.g., foggy programming operation), then programmed to their final voltage levels in a second programming operation where the program step size is much smaller (e.g., fine programming operation).
  • a two stage or multi-state programming technique e.g., “foggy/fine programming”
  • Quadruple-level cell (QLC) technology requires a very precise programming process to place sixteen distributions in a small voltage range ( ⁇ 6.2 v), with a QLC state width of ⁇ 0.4 v.
  • two programming passes are used, namely, the aforementioned foggy and fine programming passes.
  • a drawback of this approach is that the foggy programming pass is unreadable, and hence, four pages of host data need to be cached until the fine pass is finished.
  • the data caching reduces the drive capacity available to the host and system management algorithms. Therefore, finding an alternative to foggy fine programming that requires less caching can reduce the drive cost per gigabyte, or allow for more over-provisioning that increases the drive endurance.
  • the subject technology advantageously reduces the data buffering requirements in the controller, which improves the functionality of a given computing device.
  • programming of a memory may be carried out in multiple passes (e.g., two passes).
  • programming can be performed in a TLC mode, using mapping techniques described herein, then be extended to a QLC mode, using inverse mapping techniques described herein.
  • the mapping from TLC to QLC is critical as this mapping affects the programming speed, and whether the bit error rate (BER) and read latency are balanced across the four QLC pages (when assuming no vertical coding).
  • a mapping involves programming standard TLC in a first programming pass, then splitting each TLC state to two adjacent QLC states in a second programming pass.
  • This mapping achieves the highest program speed (e.g., wide TLC states), the lowest program disturb (low voltage change in the second program pass), but can result in an unbalanced QLC Gray code (e.g., 2328), and hence, the read latency and BER varies across the four pages (lower, middle, upper, and top).
  • the page with eight read levels may have the highest BER and read latency.
  • a Gray code is an encoding of information in which for a defined sequence, only a single bit changes state with each step through the sequence.
  • a conventional binary counter does not have this property since for example, the four-bit encoding for the number three is 0011 and the four-bit encoding for the number four is 0100. In this example, transitioning from 0011 to 0100 requires changing three bits, namely the three least significant bits, from 1 to 0 or 0 to 1.
  • Table 1 An example of a four-bit Gray code is shown in the Table 1 below.
  • One or more implementations of the subject technology provide various advantages over other methods (e.g., foggy/fine programming), including, without limitation: 1) significantly reducing the size of program caching (only 25% of the size required by foggy/fine programming), which can reduce the drive cost per gigabytes (GB), or allow for more over provisioning that increases the drive endurance, 2) achieving high programming speed, and 3) balancing the BER and read latency across all pages.
  • other methods e.g., foggy/fine programming
  • One or more implementations of the subject technology provide several performance benefits that improve the functionality of a computer (e.g., computing device).
  • the subject technology enables multi-state programming techniques to be utilized without a large increase in memory requirements for the controller.
  • implementations of the subject technology improve the functionality of a computing device, including a flash storage system as described herein, by at least reducing memory requirements which can also improve processing burdens of such a computing device.
  • latency in writing data, when using the multi-state programming techniques described herein, to a flash memory device may be improved, which further improves the functionality of such a computing device.
  • the implementations described herein may improve decoding latency and reduce decoding complexity of data when using multi-state programming thereby improving the performance of the computing device.
  • FIG. 1 is a block diagram illustrating components of a flash storage system 110 according to aspects of the subject technology.
  • the flash storage system 110 includes an interface 115 , a controller 120 , a memory 125 , a cache 126 , an encoder 160 , an ECC encoder 162 , a mapping component 164 , a decoder 170 , an inverse mapping component 172 , an ECC decoder 174 , and flash memory devices 130 .
  • the interface 115 facilitates communication of data, commands, and/or control signals between the flash storage system 110 and a host 150 .
  • the controller 120 controls the operation of the flash storage system 110 to store and retrieve data in the flash memory devices 130 (e.g., illustrated as flash memory device 130 ( a ), 130 ( b ) to 130 ( n ) to depict at least several devices) in accordance with commands received from the host 150 .
  • the controller 120 may include a single core processor or a multi-core processor which includes several separate computing cores for executing instructions.
  • the computing cores in the multi-core implementation can run respective instructions in parallel including portions of the firmware of the flash storage system 110 .
  • the memory 125 which may be a random access memory (RAM), provides temporary storage space for the controller 120 to process commands and transfer data between the host 150 and the flash memory devices 130 .
  • RAM random access memory
  • the decoder 170 which may include memory, registers, one or more processors, a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof, and may be integrated with or separate from the controller 120 , decodes data using various decoding schemes.
  • the memory 125 may include the cache 126 .
  • the cache 126 may be implemented separately from the memory 125 as a separate volatile memory (e.g., random access memory), which could be faster memory than the memory 125 .
  • the cache 126 may also be included with one or more of the flash memory devices 130 .
  • the encoder 160 which may include memory, registers, one or more processors, a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof, and may be integrated with or separate from the controller 120 , encodes data to be written to the flash memory device 130 using various encoding schemes. The operation of each of these components is described in more detail below.
  • SoC system-on-a-chip
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • the interface 115 provides physical and electrical connections between the host 150 and the flash storage system 110 .
  • the interface 115 is configured to facilitate communication of data, commands, and/or control signals between the host 150 and the flash storage system 110 via the physical and electrical connections.
  • the connection and the communications with the interface 115 may be based on a standard interface such as Universal Serial Bus (USB), Small Computer System Interface (SCSI), Serial Advanced Technology Attachment (SATA), Mini-SATA (mSATA), PCIe, etc.
  • USB Universal Serial Bus
  • SCSI Small Computer System Interface
  • SATA Serial Advanced Technology Attachment
  • mSATA Mini-SATA
  • PCIe PCIe
  • the connection and/or communications may be based on a proprietary interface, although the subject technology is not limited to any particular type of interface.
  • the host 150 may be a computing device, such as a computer/server, a smartphone, or any other electronic device that reads data from and writes data to the flash storage system 110 .
  • the host 150 may have an operating system or other software that issues read and write commands to the flash storage system 110 .
  • the flash storage system 110 may be integrated with the host 150 or may be external to the host 150 .
  • the flash storage system 110 may be wirelessly connected to the host 150 , or may be physically connected to the host 150 .
  • the controller 120 may also include an internal management processor, which may run on one of the cores of the controller 120 in a multi-core implementation.
  • the internal management processor may use the interface 115 to communicate with other components illustrated in FIG. 1 , including the host 150 , the memory 125 , the controller 120 , and the flash memory devices 130 .
  • FIG. 1 shows multiple flash memory devices 130 .
  • the flash storage system 110 may include one or more flash memory devices 130 and is not limited to a particular number of flash memory devices 130 .
  • the flash memory devices 130 may each include a single flash memory chip or die.
  • the flash memory devices 130 may be organized among multiple channels through which data is read from and written to the flash memory devices 130 by the controller 120 , or coupled to a single channel.
  • the flash memory devices 130 may be implemented using NAND flash memory including 3D NAND memory, where memory cells are stacked into multiple layers, using triple-level cells (TLC) and/or quadruple-level cells (QLC) which can store three and four bits per cell, respectively.
  • the flash memory devices may include NAND flash memory composed of memory cells that can be programmed to store multiple bits or multiple levels, being termed multi-level cells (MLC) such as the aforementioned TLC and/or QLC.
  • MLC multi-level cells
  • the flash memory devices 130 may each include one or more registers for storing operating parameters of the respective flash memory devices 130 .
  • operating parameters may include: read operation parameters such as read voltages; write operation parameters such as initial pulse value, incremental pulse value, and pulse width; and erase operation parameters such as initial pulse value, incremental pulse value, and pulse width.
  • the flash memory devices 130 comprise multiple memory cells distributed into storage blocks such as flash memory blocks 140 (e.g., illustrated as flash memory blocks 140 ( a ), 140 ( b ) to 140 ( n ) to depict at least several blocks in respective flash memory devices).
  • the flash memory devices 130 may have one or more flash memory blocks 140 , and the flash memory devices 130 may each have the same or different numbers of flash memory blocks 140 .
  • the flash memory blocks 140 may be referred to as data blocks or memory blocks and are addressable by the controller 120 using a physical block address.
  • Each of the flash memory blocks 140 is further divided into multiple data segments or pages addressable by the controller 120 using a physical page address or offset from a physical block address of the storage block containing the referenced page.
  • the pages may store sectors or other host data units.
  • the flash memory blocks 140 represent the units of data that are erased within the flash memory devices 130 in a single erase operation.
  • the pages represent the units of data that are read from or written to the flash memory devices 130 in a read or write operation.
  • the flash memory devices 130 are described in terms of blocks and pages, other terminology may be used to refer to these data units within a flash storage device.
  • storage blocks may each comprise 32, 64, 128, or 512 pages, or any other number of pages.
  • pages may each comprise 512 bytes, 2 KB, 4 KB, or 32 KB, for example.
  • the sectors may each comprise, for example, 512 bytes, 4 KB, or other sizes. There may be one or more sectors per page.
  • the memory 125 and the cache 126 represent volatile memory coupled to and used by the controller 120 during operation of the flash storage system 110 .
  • the controller 120 may buffer commands and/or data in the memory 125 and/or the cache 126 .
  • the controller 120 also may use the memory 125 and/or the cache 126 to store address mapping tables or lookup tables used to convert logical addresses used by the host 150 into virtual and/or physical addresses corresponding to blocks and pages of the flash memory devices 130 .
  • Other types of tables, data, status indicators, etc., used to manage the flash memory devices 130 may also be stored in the memory 125 by the controller 120 .
  • the memory 125 and/or the cache 126 may be implemented using dynamic random access memory (DRAM), static random access memory (SRAM), or other types of volatile random access memory without departing from the scope of the subject technology.
  • the controller 120 may also periodically store the contents of the memory 125 and/or the cache 126 into one or more designated flash memory blocks 140 , such as before the flash storage system 110 is powered down.
  • the controller 120 manages the flow of data between the host 150 and the flash memory devices 130 .
  • the controller 120 is configured to receive commands and data from the host 150 via the interface 115 .
  • the controller 120 may receive data and a write command (also referred to as a “programming” or “program” command herein) from the host 150 to write the data in the flash memory devices 130 .
  • the controller 120 is further configured to send data to the host 150 via the interface 115 .
  • the controller 120 may read data from the flash memory devices 130 and send the data to the host 150 in response to a read command.
  • the controller 120 is further configured to manage data stored in the flash memory devices 130 , the memory 125 , and the cache 126 based on internal control algorithms or other types of commands that may be received from the host 150 .
  • the controller 120 is configured to perform operations such as garbage collection (GC), error correction coding techniques (e.g., LDPC), wear leveling, security techniques (e.g., encryption), compression techniques, redundancy techniques (e.g., redundant array of independent disks (RAID) techniques), multi-state programming, etc.
  • the controller 120 may use error correction coding to provide protection to data written to the flash memory devices 130 .
  • the ECC encoder 162 and may encode data received from the host 150 .
  • the controller 114 (or component(s) thereof) then writes the encoded data to the one or more of the flash memory devices 130 and/or buffers the encoded data in the memory 125 and/or the cache 126 .
  • the ECC decoder 174 decodes the data from the one or more of the flash memory devices 130 and/or buffered data in the memory 125 and/or the cache 126 .
  • the controller 114 (or component(s) thereof) then writes the decoded data to the one or more of the flash memory devices 130 as part of the second programming pass.
  • the cache 126 is separate and distinct from the flash memory devices 130 , and the cache 126 is not part of the flash memory devices 130 .
  • the controller 120 When the controller 120 (or component(s) thereof) subsequently reads the data from the one or more of the flash memory devices 130 , the data is provided by the controller 120 to the host 150 via the interface 115 .
  • the controller 120 or component(s) thereof
  • the data is provided by the controller 120 to the host 150 via the interface 115 .
  • Those skilled in the art will be familiar with other operations performed by a controller in a flash storage device, which will not be described in detail herein.
  • the controller 120 may be implemented with a general purpose processor, multi-core processor, micro-controller, digital signal processor (DSP), a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof designed and configured to perform the operations and functions described herein.
  • DSP digital signal processor
  • SoC system-on-a-chip
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • each of the several computing cores can run respective instructions in parallel including portions of the firmware of the flash storage system 110 .
  • the controller 120 may perform the operations and functions described herein by executing one or more sequences of instructions stored on a machine/computer readable medium.
  • the machine/computer readable medium may be the flash memory devices 130 , the memory 125 , the cache 126 or other types of media from which the controller 120 can read instructions or code.
  • flash storage system 110 may include a read only memory (ROM), such as an EPROM or EEPROM, encoded with firmware/software comprising one or more sequences of instructions read and executed by the controller 120 during the operation of the flash storage system 110 .
  • ROM read only memory
  • FIG. 2 conceptually illustrates an example of multi-state programming provided by various components of a flash storage system in accordance with one or more implementations of the subject technology.
  • FIG. 2 is discussed by reference to components of the flash storage system 110 in FIG. 1 .
  • host data 255 from a host device is received by the ECC encoder 162 .
  • the ECC encoder 162 for programming data into NAND flash memory (one or more of the flash memory devices 130 ), three pages of data are written, as part of a first programming pass, to flash memory that uses TLC cells, and four pages of data are written, as part of a second programming pass, to flash memory that uses QLC cells (e.g., four bits per cell).
  • three and four pages of data are described in this example, the subject technology can write different numbers of pages based on the type of flash memory.
  • the ECC encoder 162 encodes the host data 255 generating four pages of encoded data.
  • the ECC encoder 162 sends the four pages of encoded data to the mapping component 164 .
  • the mapping component 164 receives the four pages of encoded data and performs a mapping operation to convert the encoded data to mapped data in the form of Gray code. Examples of mapping data to Gray code are described in further detail, for example, in FIGS. 3-5 below.
  • the result of the mapping operation generates three pages of data for storing in flash memory and an additional page of data to be stored in a cache.
  • the controller 120 (or alternatively the ECC encoder 162 ) performs a first programming operation 250 to write the three pages of mapped data to one or more of the flash memory devices 130 (e.g., NAND flash memory) as part of a first programming pass.
  • the controller 120 (or alternatively the mapping component 164 ) writes the one page of data into a cache (e.g., the cache 126 ).
  • the cache 126 is separate from the flash memory devices 130 (e.g., NAND).
  • the cache 126 is not in the same location as where the first mapped data is written but could be stored in the flash memory devices 130 (e.g., in NAND but at a different location).
  • the controller 120 (or inverse mapping component 172 ) performs a read operation for the one page of data stored in the cache 126 .
  • the controller 120 (or inverse mapping component 172 ) performs a second read operation for the three pages of data stored in the flash memory devices 130 .
  • the inverse mapping component 172 performs an inverse mapping operation on the three pages of data based at least in part on the one page of data from the cache 126 to generate four pages of data.
  • the four pages of data correspond to the four pages of data received from the host in an example.
  • An example of inverse mapping of data is discussed in more detail in FIGS. 4 and 5 below.
  • the inverse mapping component 172 sends the four pages of data to the ECC decoder 174 for ECC decoding.
  • the ECC decoder 174 uses an ECC decoding scheme, further decodes the four pages of data in order to eliminate errors from the data and prepare the data for writing to one or more of the flash memory devices 130 .
  • the controller 120 (or ECC decoder 174 ) performs a programming operation 254 to write the ECC decoded four pages of data into one or more of the flash memory devices 130 .
  • FIG. 3 conceptually illustrates an example of mapping in accordance with one or more implementations of the subject technology.
  • FIG. 3 is discussed with reference to components of the flash storage system 110 in FIG. 1 .
  • a first programming pass three pages of a mapped version of the host data is programmed to standard TLC ( 232 ), while one page is stored to a cache (e.g., the cache 126 ).
  • a second programming pass the three TLC pages are read along with the cached page to recover the host data through an inverse mapping operation.
  • the host data are used to extend the already programmed TLC into QLC distributions as shown in FIG. 3 .
  • FIG. 3 illustrate multiple sets of three bits including bits 311 , bits 312 , bits 313 , bits 314 , bits 315 , bits 316 , bits 317 , bits 318 , bits 319 , bits 320 , bits 321 , bits 322 , bits 323 , bits 324 , and bits 325 .
  • These bits may correspond to data that was written, in a first mode for TLC memory, in the flash memory devices 130 as discussed before.
  • the aforementioned sets of three bits may be logically organized into columns 350 , 352 , and 354 , which are discussed in more detail in an example mapping table of FIG. 5 .
  • the flash memory uses TLC memory that can store eight possible states per cell (e.g., values from 000 to 111), yielding three bits of information per cell. Reading data stored in TLC memory therefore can require reading up to seven distributions.
  • the flash memory uses a quad-level memory cell (QLC) that can store sixteen possible states per cell (e.g., values from 0000 to 1111), yielding four bits of information per cell. Reading data stored in QLC memory therefore can require reading fifteen distributions.
  • QLC quad-level memory cell
  • the inverse mapping component 172 reads the three pages of data from the flash memory devices 130 and the one page of data from the cache 126 .
  • multiple sets of four bits including bits 311 , bits 332 , bits 333 , bits 334 , bits 335 , bits 336 , bits 337 , bits 338 , bits 339 , bits 340 , bits 341 , bits 342 , bits 343 , bits 344 , bits 345 , and bits 346 .
  • FIG. 4 conceptually illustrates an example of mapping and subsequently performing an inverse mapping in accordance with one or more implementations of the subject technology.
  • FIG. 4 is discussed with reference to components of the flash storage system 110 in FIG. 1 .
  • Implementations of the subject technology advantageously provides mapping of a given TLC Gray code to QLC Gray code that only caches one page of data.
  • the subject technology can also be applied to map MLC to TLC or QLC with one or two cached pages, respectively.
  • mapping component 164 caches one bit of data from the host data 410 into the cache 126 .
  • mapping component 164 performs a mapping operation to generate three bits of balanced Gray code 430 (e.g., mapped data) for storing into the flash memory devices 130 in accordance with a 232 balanced Gray code scheme.
  • the three bits of balanced Gray code 430 are received by the inverse mapping component 172 .
  • the mapping component 164 performs a mapping operation to generate four bits of balanced Gray code 440 for storing into the flash memory devices 130 in accordance with a 4344 balanced Gray code scheme.
  • FIG. 5 conceptually illustrates an example data in an initial table and an example mapped data in a second table.
  • the host data table 510 includes representations of data corresponding to the column 360 , the column 362 , the column 364 , and the column 366 in FIG. 3 .
  • FIG. 5 is discussed with reference to components of the flash storage system 110 in FIG. 1 .
  • the mapping component 164 performs a mapping operation 530 to generate the three bits of balanced Gray code 430 (e.g., mapped data) for storing into the flash memory devices 130 in accordance with a 232 balanced Gray code scheme.
  • the table 520 includes representations of data corresponding to the column 350 , the column 352 , and the column 354 in FIG. 3 . Further, the table 520 includes a column corresponding to the one page of cached data 420 . As can be seen, the column 350 includes two transitions, the column 352 includes three transitions, and the column 354 includes two transitions. The column corresponding to the one page of cached data 420 includes eight transitions. Since the cached data 420 is not stored in TLC flash memory, the cached data 420 can include more transitions than the column 350 , the column 352 , and the column 354 .
  • the inverse mapping component 172 performs an inverse mapping operation 540 to generate the four bits of balanced Gray code 410 (e.g., inverse mapped data) for storing into the flash memory devices 130 in accordance with a 4344 balanced Gray code scheme.
  • the host data table 510 includes data represented in the 4344 balanced Gray code scheme for the column 360 , the column 362 , the column 364 , and the column 366 .
  • the column 360 includes four transitions
  • the column 362 includes three transitions
  • the column 364 includes four transitions
  • the column 366 includes four transitions.
  • FIG. 6 shows a flowchart of a process 600 for performing multi-state programming in accordance with one or more implementations. Further for explanatory purposes, the blocks of the process 600 are described herein as occurring in serial, or linearly. However, multiple blocks of the process 600 may occur in parallel. In addition, the blocks of the process 600 need not be performed in the order shown and/or one or more blocks of the process 600 need not be performed and/or can be replaced by other operations. One or more blocks of FIG. 6 may be executed by a flash storage system (including, e.g., a controller of a flash memory device, a data storage controller of a data storage system or a solid state storage device (SSD), a processor, or the like).
  • a flash storage system including, e.g., a controller of a flash memory device, a data storage controller of a data storage system or a solid state storage device (SSD), a processor, or the like.
  • Examples of a flash storage system or a controller may be the flash storage system 110 and/or the controller 120 .
  • a non-transitory machine-readable medium may include machine-executable instructions thereon that, when executed by a computer or machine, perform the blocks of FIG. 6 .
  • the steps of process 600 may be implemented as hardware/firmware or software. FIG. 6 will be described by reference to components of the flash storage system 110 .
  • the process 600 may initiate when host data (e.g., from host 150 ) is received by the ECC encoder 162 .
  • host data e.g., from host 150
  • four pages of data may be received from the host for programming to the flash memory device.
  • the ECC encoder 162 encodes data based on a first encoding operation to generate an encoded set of data.
  • the first encoding operation may be based on an ECC encoding scheme.
  • the controller 120 (or mapping component 164 ) generates a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data.
  • an amount of the first mapped data is greater than an amount of the second mapped data.
  • generating the mapping of data based on the set of data may further include: generating the first mapped data and the second mapped data based on a Gray code encoding of the set of data, where the first mapped data includes a first data representable in rows and columns, the first data is represented by balanced Gray codes, and the second mapped data includes a second data. The data in every two rows of the first data are an identical pair.
  • a number of transitions for the first mapped data can include seven transitions, and a number of transitions for the second mapped data includes eight transitions, where each transition corresponds to a change between neighboring data. Further, the first mapped data includes at least a most significant bit (MSB), and the second mapped data includes at least a least significant bit (LSB).
  • MSB most significant bit
  • LSB least significant bit
  • the balanced Gray codes include a sum of transitions for each column, in the first plurality of data, where a total of the sums of the transitions for all of the columns is not greater than a maximum number of read levels for writing in the first mode to the flash memory device. Moreover, a sum of the transitions for one of the columns and a sum of the transitions for a next one of the columns are the same or differ by not more than one. Further, each of the transitions for a column represents a change in values between adjacent rows within the column.
  • the controller 120 (or the mapping component 164 ) performs a first programming operation to write, in a first mode, the first mapped data to the memory device.
  • the controller 120 (or the mapping component 164 ) stores the second mapped data to a cache (e.g., the cache 126 ).
  • a cache e.g., the cache 126
  • the controller 120 (or inverse mapping component 172 ) generates a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, where the second set of data includes the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • generating the second set of data includes performing a first read operation on the second mapped data from the cache, and performing a second read operation on the first mapped data from the memory device.
  • generating the second set of data includes performing a first read operation on the second mapped data from the cache, performing a second read operation on the first mapped data from the memory device, and generating the second set of data, represented by a set of balanced Gray codes, based on a combination of the first mapped data and the second mapped data, where the set of balanced Gray codes includes a sum of transitions that is not greater than a maximum number of read levels for writing in the second mode to the memory device.
  • the ECC decoder 174 performs a decoding operation, based on the second set of data, to generate a decoded set of data, and performs a second programming operation to write, in the second mode, the decoded set of data to the memory device.
  • the aforementioned the first mode is related to programming for triple-level cell (TLC) memory
  • the second mode is related to programming for quadruple-level cell (QLC) memory.
  • a method may include generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data.
  • the method may also include performing a first programming operation to write, in a first mode, the first mapped data to the memory device.
  • the method may also include storing the second mapped data to a cache.
  • the method may also include generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • a system may include flash memory devices and a controller.
  • the controller may be configured to generate a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data.
  • the controller may also be configured to perform a first programming operation to write, in a first mode, the first mapped data to at least one of the plurality of flash memory devices.
  • the controller may be configured to store the second mapped data to a cache.
  • the controller may be configured to generate a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the at least one of the plurality of flash memory devices.
  • a system may include means for generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data.
  • the system may also include means for performing a first programming operation to write, in a first mode, the first mapped data to a memory device.
  • the system may also include means for storing the second mapped data to a cache.
  • the system may also include means for generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • a non-transitory machine-readable medium may include machine-executable instructions thereon that, when executed by a processor, perform a method.
  • the method may include generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data.
  • the method may also include performing a first programming operation to write, in a first mode, the first mapped data to the memory device.
  • the method may also include storing the second mapped data to a cache.
  • the method may also include generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • a phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology.
  • a disclosure relating to an aspect may apply to all configurations, or one or more configurations.
  • An aspect may provide one or more examples.
  • a phrase such as an aspect may refer to one or more aspects and vice versa.
  • a phrase such as an “embodiment” does not imply that such embodiment is essential to the subject technology or that such embodiment applies to all configurations of the subject technology.
  • a disclosure relating to an embodiment may apply to all embodiments, or one or more embodiments.
  • An embodiment may provide one or more examples.
  • a phrase such as an “embodiment” may refer to one or more embodiments and vice versa.
  • a phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology.
  • a disclosure relating to a configuration may apply to all configurations, or one or more configurations.
  • a configuration may provide one or more examples.
  • a phrase such as a “configuration” may refer to one or more configurations and vice versa.

Abstract

Storage device programming methods, systems and devices are described. A method may generate a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data. The method may include performing a first programming operation to write, in a first mode, the first mapped data to the memory device. The method may include storing the second mapped data to a cache. The method may include generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data includes the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.

Description

    BACKGROUND
  • The subject application relates generally to data storage systems, devices and methods. More specifically, the subject application relates to, for example, without limitation, multi-state programming for writing data to memory devices.
  • The description provided in the background section should not be assumed to be prior art merely because it is mentioned in or associated with the background section. The background section may include information that describes one or more aspects of the subject technology, and the description in this section does not limit the invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • A detailed description will be made with reference to the accompanying drawings:
  • FIG. 1 is a block diagram illustrating components of a flash storage system according to aspects of the subject technology;
  • FIG. 2 conceptually illustrates an example of multi-state programming provided by various components of a flash storage system in accordance with one or more implementations of the subject technology;
  • FIG. 3 conceptually illustrates an example of mapping in accordance with one or more implementations of the subject technology;
  • FIG. 4 conceptually illustrates an example of mapping and subsequently performing an inverse mapping in accordance with one or more implementations of the subject technology;
  • FIG. 5 conceptually illustrates an example data in an initial table and an example mapped data in a second table;
  • FIG. 6 shows a flowchart of a process for performing multi-state programming in accordance with one or more implementations.
  • DETAILED DESCRIPTION
  • The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, it will be apparent to those skilled in the art that the subject technology may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology. Like components are labeled with identical element numbers for ease of understanding.
  • Some flash memory and other solid-state storage devices may implement multi-level cell (MLC) memory, triple-level cell (TLC) memory, quadruple-level cell (QLC) memory, or the like to store multiple bits of data in the same memory cell. Generally, MLC, TLC and/or QLC memory cells are programmable to multiple states, which are each characterized by separate voltage thresholds. For example, a two-bit MLC memory cell can be programmed to one of four different states, a three-bit TLC memory cell can be programmed to one of eight different states, or a four-bit QLC memory cell can be programmed to one of sixteen different states, with each state corresponding to a unique voltage range. MLC, TLC, and QLC memory may have different write times, read times, programming requirements, reliability, error rates, or the like.
  • In one or more examples, foggy and fine programming techniques for multi-bit per cell NAND flash memory may refer to a two stage or multi-state programming technique (e.g., “foggy/fine programming”) where NAND cell voltages are quickly brought close to desired voltage levels (e.g., as determined by the bit pattern stored in each cell) in a first wordline programming operation (e.g., foggy programming operation), then programmed to their final voltage levels in a second programming operation where the program step size is much smaller (e.g., fine programming operation).
  • Quadruple-level cell (QLC) technology requires a very precise programming process to place sixteen distributions in a small voltage range (˜6.2 v), with a QLC state width of ˜0.4 v. In an example, two programming passes are used, namely, the aforementioned foggy and fine programming passes. A drawback of this approach is that the foggy programming pass is unreadable, and hence, four pages of host data need to be cached until the fine pass is finished. The data caching reduces the drive capacity available to the host and system management algorithms. Therefore, finding an alternative to foggy fine programming that requires less caching can reduce the drive cost per gigabyte, or allow for more over-provisioning that increases the drive endurance. In one or more implementations described herein, the subject technology advantageously reduces the data buffering requirements in the controller, which improves the functionality of a given computing device.
  • In one or more implementations, programming of a memory may be carried out in multiple passes (e.g., two passes). For example, programming can be performed in a TLC mode, using mapping techniques described herein, then be extended to a QLC mode, using inverse mapping techniques described herein. In one or more implementations, the mapping from TLC to QLC is critical as this mapping affects the programming speed, and whether the bit error rate (BER) and read latency are balanced across the four QLC pages (when assuming no vertical coding).
  • In an example, a mapping involves programming standard TLC in a first programming pass, then splitting each TLC state to two adjacent QLC states in a second programming pass. This mapping achieves the highest program speed (e.g., wide TLC states), the lowest program disturb (low voltage change in the second program pass), but can result in an unbalanced QLC Gray code (e.g., 2328), and hence, the read latency and BER varies across the four pages (lower, middle, upper, and top). The page with eight read levels may have the highest BER and read latency.
  • As referred to herein, a Gray code is an encoding of information in which for a defined sequence, only a single bit changes state with each step through the sequence. A conventional binary counter does not have this property since for example, the four-bit encoding for the number three is 0011 and the four-bit encoding for the number four is 0100. In this example, transitioning from 0011 to 0100 requires changing three bits, namely the three least significant bits, from 1 to 0 or 0 to 1. An example of a four-bit Gray code is shown in the Table 1 below.
  • TABLE 1
    State Pattern
    0 0000
    1 0001
    2 0011
    3 0111
    4 1110
    5 1100
    6 1000
    7 1000
  • Note that in Table 1, a single bit changes state in all cases of stepping from one state to the next in the defined sequence. For a given number of bits, it is understood that there can be multiple encoding schemes that constitute Gray codes.
  • One or more implementations of the subject technology provide various advantages over other methods (e.g., foggy/fine programming), including, without limitation: 1) significantly reducing the size of program caching (only 25% of the size required by foggy/fine programming), which can reduce the drive cost per gigabytes (GB), or allow for more over provisioning that increases the drive endurance, 2) achieving high programming speed, and 3) balancing the BER and read latency across all pages.
  • One or more implementations of the subject technology provide several performance benefits that improve the functionality of a computer (e.g., computing device). For example, the subject technology enables multi-state programming techniques to be utilized without a large increase in memory requirements for the controller. As a result, it is appreciated that implementations of the subject technology improve the functionality of a computing device, including a flash storage system as described herein, by at least reducing memory requirements which can also improve processing burdens of such a computing device. Further, latency in writing data, when using the multi-state programming techniques described herein, to a flash memory device may be improved, which further improves the functionality of such a computing device. In addition, the implementations described herein may improve decoding latency and reduce decoding complexity of data when using multi-state programming thereby improving the performance of the computing device.
  • FIG. 1 is a block diagram illustrating components of a flash storage system 110 according to aspects of the subject technology. As depicted in FIG. 1, the flash storage system 110 includes an interface 115, a controller 120, a memory 125, a cache 126, an encoder 160, an ECC encoder 162, a mapping component 164, a decoder 170, an inverse mapping component 172, an ECC decoder 174, and flash memory devices 130. The interface 115 facilitates communication of data, commands, and/or control signals between the flash storage system 110 and a host 150. The controller 120 controls the operation of the flash storage system 110 to store and retrieve data in the flash memory devices 130 (e.g., illustrated as flash memory device 130(a), 130(b) to 130(n) to depict at least several devices) in accordance with commands received from the host 150. The controller 120 may include a single core processor or a multi-core processor which includes several separate computing cores for executing instructions. For example, the computing cores in the multi-core implementation can run respective instructions in parallel including portions of the firmware of the flash storage system 110. The memory 125, which may be a random access memory (RAM), provides temporary storage space for the controller 120 to process commands and transfer data between the host 150 and the flash memory devices 130.
  • The decoder 170, which may include memory, registers, one or more processors, a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof, and may be integrated with or separate from the controller 120, decodes data using various decoding schemes. The memory 125 may include the cache 126. Alternatively, the cache 126 may be implemented separately from the memory 125 as a separate volatile memory (e.g., random access memory), which could be faster memory than the memory 125. In another example, the cache 126 may also be included with one or more of the flash memory devices 130. The encoder 160, which may include memory, registers, one or more processors, a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof, and may be integrated with or separate from the controller 120, encodes data to be written to the flash memory device 130 using various encoding schemes. The operation of each of these components is described in more detail below.
  • The interface 115 provides physical and electrical connections between the host 150 and the flash storage system 110. The interface 115 is configured to facilitate communication of data, commands, and/or control signals between the host 150 and the flash storage system 110 via the physical and electrical connections. The connection and the communications with the interface 115 may be based on a standard interface such as Universal Serial Bus (USB), Small Computer System Interface (SCSI), Serial Advanced Technology Attachment (SATA), Mini-SATA (mSATA), PCIe, etc. Alternatively, the connection and/or communications may be based on a proprietary interface, although the subject technology is not limited to any particular type of interface.
  • The host 150 may be a computing device, such as a computer/server, a smartphone, or any other electronic device that reads data from and writes data to the flash storage system 110. The host 150 may have an operating system or other software that issues read and write commands to the flash storage system 110. The flash storage system 110 may be integrated with the host 150 or may be external to the host 150. The flash storage system 110 may be wirelessly connected to the host 150, or may be physically connected to the host 150.
  • The controller 120 may also include an internal management processor, which may run on one of the cores of the controller 120 in a multi-core implementation. The internal management processor may use the interface 115 to communicate with other components illustrated in FIG. 1, including the host 150, the memory 125, the controller 120, and the flash memory devices 130.
  • FIG. 1 shows multiple flash memory devices 130. The flash storage system 110 may include one or more flash memory devices 130 and is not limited to a particular number of flash memory devices 130. The flash memory devices 130 may each include a single flash memory chip or die. The flash memory devices 130 may be organized among multiple channels through which data is read from and written to the flash memory devices 130 by the controller 120, or coupled to a single channel. The flash memory devices 130 may be implemented using NAND flash memory including 3D NAND memory, where memory cells are stacked into multiple layers, using triple-level cells (TLC) and/or quadruple-level cells (QLC) which can store three and four bits per cell, respectively. For example, the flash memory devices may include NAND flash memory composed of memory cells that can be programmed to store multiple bits or multiple levels, being termed multi-level cells (MLC) such as the aforementioned TLC and/or QLC.
  • Additionally, the flash memory devices 130 may each include one or more registers for storing operating parameters of the respective flash memory devices 130. In an example, such operating parameters may include: read operation parameters such as read voltages; write operation parameters such as initial pulse value, incremental pulse value, and pulse width; and erase operation parameters such as initial pulse value, incremental pulse value, and pulse width.
  • As illustrated, the flash memory devices 130 comprise multiple memory cells distributed into storage blocks such as flash memory blocks 140 (e.g., illustrated as flash memory blocks 140(a), 140(b) to 140(n) to depict at least several blocks in respective flash memory devices). The flash memory devices 130 may have one or more flash memory blocks 140, and the flash memory devices 130 may each have the same or different numbers of flash memory blocks 140. The flash memory blocks 140 may be referred to as data blocks or memory blocks and are addressable by the controller 120 using a physical block address. Each of the flash memory blocks 140 is further divided into multiple data segments or pages addressable by the controller 120 using a physical page address or offset from a physical block address of the storage block containing the referenced page. The pages may store sectors or other host data units. The flash memory blocks 140 represent the units of data that are erased within the flash memory devices 130 in a single erase operation. The pages represent the units of data that are read from or written to the flash memory devices 130 in a read or write operation. Although the flash memory devices 130 are described in terms of blocks and pages, other terminology may be used to refer to these data units within a flash storage device.
  • It is further understood that the subject technology is not limited to any particular capacity of flash memory. For example, storage blocks may each comprise 32, 64, 128, or 512 pages, or any other number of pages. Additionally, pages may each comprise 512 bytes, 2 KB, 4 KB, or 32 KB, for example. The sectors may each comprise, for example, 512 bytes, 4 KB, or other sizes. There may be one or more sectors per page.
  • In FIG. 1, the memory 125 and the cache 126 represent volatile memory coupled to and used by the controller 120 during operation of the flash storage system 110. The controller 120 may buffer commands and/or data in the memory 125 and/or the cache 126. The controller 120 also may use the memory 125 and/or the cache 126 to store address mapping tables or lookup tables used to convert logical addresses used by the host 150 into virtual and/or physical addresses corresponding to blocks and pages of the flash memory devices 130. Other types of tables, data, status indicators, etc., used to manage the flash memory devices 130 may also be stored in the memory 125 by the controller 120. The memory 125 and/or the cache 126 may be implemented using dynamic random access memory (DRAM), static random access memory (SRAM), or other types of volatile random access memory without departing from the scope of the subject technology. The controller 120 may also periodically store the contents of the memory 125 and/or the cache 126 into one or more designated flash memory blocks 140, such as before the flash storage system 110 is powered down.
  • The controller 120 manages the flow of data between the host 150 and the flash memory devices 130. The controller 120 is configured to receive commands and data from the host 150 via the interface 115. For example, the controller 120 may receive data and a write command (also referred to as a “programming” or “program” command herein) from the host 150 to write the data in the flash memory devices 130. The controller 120 is further configured to send data to the host 150 via the interface 115. For example, the controller 120 may read data from the flash memory devices 130 and send the data to the host 150 in response to a read command.
  • The controller 120 is further configured to manage data stored in the flash memory devices 130, the memory 125, and the cache 126 based on internal control algorithms or other types of commands that may be received from the host 150. For example, the controller 120 is configured to perform operations such as garbage collection (GC), error correction coding techniques (e.g., LDPC), wear leveling, security techniques (e.g., encryption), compression techniques, redundancy techniques (e.g., redundant array of independent disks (RAID) techniques), multi-state programming, etc. For example, the controller 120 may use error correction coding to provide protection to data written to the flash memory devices 130. In this regard, the ECC encoder 162 and may encode data received from the host 150. The controller 114 (or component(s) thereof) then writes the encoded data to the one or more of the flash memory devices 130 and/or buffers the encoded data in the memory 125 and/or the cache 126. In a second programming pass or state, the ECC decoder 174 decodes the data from the one or more of the flash memory devices 130 and/or buffered data in the memory 125 and/or the cache 126. The controller 114 (or component(s) thereof) then writes the decoded data to the one or more of the flash memory devices 130 as part of the second programming pass. In one or more implementations, the cache 126 is separate and distinct from the flash memory devices 130, and the cache 126 is not part of the flash memory devices 130.
  • When the controller 120 (or component(s) thereof) subsequently reads the data from the one or more of the flash memory devices 130, the data is provided by the controller 120 to the host 150 via the interface 115. Those skilled in the art will be familiar with other operations performed by a controller in a flash storage device, which will not be described in detail herein.
  • The controller 120 may be implemented with a general purpose processor, multi-core processor, micro-controller, digital signal processor (DSP), a system-on-a-chip (SoC), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic device, discrete hardware components, or any combination thereof designed and configured to perform the operations and functions described herein. In the multi-core processor implementation, each of the several computing cores can run respective instructions in parallel including portions of the firmware of the flash storage system 110. The controller 120 may perform the operations and functions described herein by executing one or more sequences of instructions stored on a machine/computer readable medium. The machine/computer readable medium may be the flash memory devices 130, the memory 125, the cache 126 or other types of media from which the controller 120 can read instructions or code. For example, flash storage system 110 may include a read only memory (ROM), such as an EPROM or EEPROM, encoded with firmware/software comprising one or more sequences of instructions read and executed by the controller 120 during the operation of the flash storage system 110.
  • FIG. 2 conceptually illustrates an example of multi-state programming provided by various components of a flash storage system in accordance with one or more implementations of the subject technology. FIG. 2 is discussed by reference to components of the flash storage system 110 in FIG. 1.
  • As illustrated, host data 255 from a host device (e.g., the host 150) is received by the ECC encoder 162. In the example of FIG. 2, for programming data into NAND flash memory (one or more of the flash memory devices 130), three pages of data are written, as part of a first programming pass, to flash memory that uses TLC cells, and four pages of data are written, as part of a second programming pass, to flash memory that uses QLC cells (e.g., four bits per cell). Although three and four pages of data are described in this example, the subject technology can write different numbers of pages based on the type of flash memory.
  • Using an ECC encoding scheme (e.g., Reed-Solomon, BCH, LDPC, etc.), the ECC encoder 162 encodes the host data 255 generating four pages of encoded data. The ECC encoder 162 sends the four pages of encoded data to the mapping component 164. The mapping component 164 receives the four pages of encoded data and performs a mapping operation to convert the encoded data to mapped data in the form of Gray code. Examples of mapping data to Gray code are described in further detail, for example, in FIGS. 3-5 below. The result of the mapping operation generates three pages of data for storing in flash memory and an additional page of data to be stored in a cache. The controller 120 (or alternatively the ECC encoder 162) performs a first programming operation 250 to write the three pages of mapped data to one or more of the flash memory devices 130 (e.g., NAND flash memory) as part of a first programming pass. The controller 120 (or alternatively the mapping component 164) writes the one page of data into a cache (e.g., the cache 126). In an example, the cache 126 is separate from the flash memory devices 130 (e.g., NAND). In another example, the cache 126 is not in the same location as where the first mapped data is written but could be stored in the flash memory devices 130 (e.g., in NAND but at a different location).
  • The controller 120 (or inverse mapping component 172) performs a read operation for the one page of data stored in the cache 126. The controller 120 (or inverse mapping component 172) performs a second read operation for the three pages of data stored in the flash memory devices 130.
  • The inverse mapping component 172 performs an inverse mapping operation on the three pages of data based at least in part on the one page of data from the cache 126 to generate four pages of data. The four pages of data correspond to the four pages of data received from the host in an example. An example of inverse mapping of data is discussed in more detail in FIGS. 4 and 5 below. The inverse mapping component 172 sends the four pages of data to the ECC decoder 174 for ECC decoding.
  • The ECC decoder 174, using an ECC decoding scheme, further decodes the four pages of data in order to eliminate errors from the data and prepare the data for writing to one or more of the flash memory devices 130. As a second pass of programming for writing to TLC memory, the controller 120 (or ECC decoder 174) performs a programming operation 254 to write the ECC decoded four pages of data into one or more of the flash memory devices 130.
  • FIG. 3 conceptually illustrates an example of mapping in accordance with one or more implementations of the subject technology. FIG. 3 is discussed with reference to components of the flash storage system 110 in FIG. 1.
  • In a first programming pass, three pages of a mapped version of the host data is programmed to standard TLC (232), while one page is stored to a cache (e.g., the cache 126). In a second programming pass, the three TLC pages are read along with the cached page to recover the host data through an inverse mapping operation. The host data are used to extend the already programmed TLC into QLC distributions as shown in FIG. 3.
  • FIG. 3 illustrate multiple sets of three bits including bits 311, bits 312, bits 313, bits 314, bits 315, bits 316, bits 317, bits 318, bits 319, bits 320, bits 321, bits 322, bits 323, bits 324, and bits 325. These bits may correspond to data that was written, in a first mode for TLC memory, in the flash memory devices 130 as discussed before. As further illustrated the aforementioned sets of three bits may be logically organized into columns 350, 352, and 354, which are discussed in more detail in an example mapping table of FIG. 5. In this example, the flash memory uses TLC memory that can store eight possible states per cell (e.g., values from 000 to 111), yielding three bits of information per cell. Reading data stored in TLC memory therefore can require reading up to seven distributions.
  • In this example, the flash memory uses a quad-level memory cell (QLC) that can store sixteen possible states per cell (e.g., values from 0000 to 1111), yielding four bits of information per cell. Reading data stored in QLC memory therefore can require reading fifteen distributions.
  • In an example of using TLC memory, the inverse mapping component 172 reads the three pages of data from the flash memory devices 130 and the one page of data from the cache 126. Using this mapping technique, multiple sets of four bits including bits 311, bits 332, bits 333, bits 334, bits 335, bits 336, bits 337, bits 338, bits 339, bits 340, bits 341, bits 342, bits 343, bits 344, bits 345, and bits 346.
  • FIG. 4 conceptually illustrates an example of mapping and subsequently performing an inverse mapping in accordance with one or more implementations of the subject technology. FIG. 4 is discussed with reference to components of the flash storage system 110 in FIG. 1.
  • Implementations of the subject technology advantageously provides mapping of a given TLC Gray code to QLC Gray code that only caches one page of data. For example, the subject technology can also be applied to map MLC to TLC or QLC with one or two cached pages, respectively.
  • As illustrated, four bits of host data 410 are received by the mapping component 164. The mapping component 164 caches one bit of data from the host data 410 into the cache 126. For each set of four bits of data, the mapping component 164 performs a mapping operation to generate three bits of balanced Gray code 430 (e.g., mapped data) for storing into the flash memory devices 130 in accordance with a 232 balanced Gray code scheme.
  • As illustrated, the three bits of balanced Gray code 430 are received by the inverse mapping component 172. For each set of the three bits of balanced Gray code 430, the mapping component 164 performs a mapping operation to generate four bits of balanced Gray code 440 for storing into the flash memory devices 130 in accordance with a 4344 balanced Gray code scheme.
  • FIG. 5 conceptually illustrates an example data in an initial table and an example mapped data in a second table. The host data table 510, as illustrated, includes representations of data corresponding to the column 360, the column 362, the column 364, and the column 366 in FIG. 3. FIG. 5 is discussed with reference to components of the flash storage system 110 in FIG. 1.
  • The mapping component 164 performs a mapping operation 530 to generate the three bits of balanced Gray code 430 (e.g., mapped data) for storing into the flash memory devices 130 in accordance with a 232 balanced Gray code scheme. The table 520, as illustrated, includes representations of data corresponding to the column 350, the column 352, and the column 354 in FIG. 3. Further, the table 520 includes a column corresponding to the one page of cached data 420. As can be seen, the column 350 includes two transitions, the column 352 includes three transitions, and the column 354 includes two transitions. The column corresponding to the one page of cached data 420 includes eight transitions. Since the cached data 420 is not stored in TLC flash memory, the cached data 420 can include more transitions than the column 350, the column 352, and the column 354.
  • The inverse mapping component 172 performs an inverse mapping operation 540 to generate the four bits of balanced Gray code 410 (e.g., inverse mapped data) for storing into the flash memory devices 130 in accordance with a 4344 balanced Gray code scheme. As illustrated, the host data table 510 includes data represented in the 4344 balanced Gray code scheme for the column 360, the column 362, the column 364, and the column 366. For example, the column 360 includes four transitions, the column 362 includes three transitions, the column 364 includes four transitions, and the column 366 includes four transitions.
  • FIG. 6 shows a flowchart of a process 600 for performing multi-state programming in accordance with one or more implementations. Further for explanatory purposes, the blocks of the process 600 are described herein as occurring in serial, or linearly. However, multiple blocks of the process 600 may occur in parallel. In addition, the blocks of the process 600 need not be performed in the order shown and/or one or more blocks of the process 600 need not be performed and/or can be replaced by other operations. One or more blocks of FIG. 6 may be executed by a flash storage system (including, e.g., a controller of a flash memory device, a data storage controller of a data storage system or a solid state storage device (SSD), a processor, or the like). Examples of a flash storage system or a controller may be the flash storage system 110 and/or the controller 120. Similarly, a non-transitory machine-readable medium may include machine-executable instructions thereon that, when executed by a computer or machine, perform the blocks of FIG. 6. The steps of process 600 may be implemented as hardware/firmware or software. FIG. 6 will be described by reference to components of the flash storage system 110.
  • The process 600 may initiate when host data (e.g., from host 150) is received by the ECC encoder 162. In an example where a given flash memory device uses QLC memory, four pages of data may be received from the host for programming to the flash memory device. The ECC encoder 162 encodes data based on a first encoding operation to generate an encoded set of data. The first encoding operation may be based on an ECC encoding scheme.
  • At 610, the controller 120 (or mapping component 164) generates a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data. In an example, an amount of the first mapped data is greater than an amount of the second mapped data. In addition, generating the mapping of data based on the set of data may further include: generating the first mapped data and the second mapped data based on a Gray code encoding of the set of data, where the first mapped data includes a first data representable in rows and columns, the first data is represented by balanced Gray codes, and the second mapped data includes a second data. The data in every two rows of the first data are an identical pair. A number of transitions for the first mapped data can include seven transitions, and a number of transitions for the second mapped data includes eight transitions, where each transition corresponds to a change between neighboring data. Further, the first mapped data includes at least a most significant bit (MSB), and the second mapped data includes at least a least significant bit (LSB).
  • In an implementation, the balanced Gray codes include a sum of transitions for each column, in the first plurality of data, where a total of the sums of the transitions for all of the columns is not greater than a maximum number of read levels for writing in the first mode to the flash memory device. Moreover, a sum of the transitions for one of the columns and a sum of the transitions for a next one of the columns are the same or differ by not more than one. Further, each of the transitions for a column represents a change in values between adjacent rows within the column.
  • At 612, the controller 120 (or the mapping component 164) performs a first programming operation to write, in a first mode, the first mapped data to the memory device.
  • At 614, the controller 120 (or the mapping component 164) stores the second mapped data to a cache (e.g., the cache 126).
  • At 616, the controller 120 (or inverse mapping component 172) generates a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, where the second set of data includes the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device. In an implementation, generating the second set of data includes performing a first read operation on the second mapped data from the cache, and performing a second read operation on the first mapped data from the memory device. Moreover, generating the second set of data includes performing a first read operation on the second mapped data from the cache, performing a second read operation on the first mapped data from the memory device, and generating the second set of data, represented by a set of balanced Gray codes, based on a combination of the first mapped data and the second mapped data, where the set of balanced Gray codes includes a sum of transitions that is not greater than a maximum number of read levels for writing in the second mode to the memory device.
  • In addition, the ECC decoder 174 performs a decoding operation, based on the second set of data, to generate a decoded set of data, and performs a second programming operation to write, in the second mode, the decoded set of data to the memory device. In an example, the aforementioned the first mode is related to programming for triple-level cell (TLC) memory, and the second mode is related to programming for quadruple-level cell (QLC) memory.
  • Various examples of aspects of the disclosure are described below. These are provided as examples, and do not limit the subject technology.
  • One or more aspects of the subject technology provide methods for providing an improved multi-stage programming with a reduced memory requirement for buffering data. According to some aspects, a method may include generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data. The method may also include performing a first programming operation to write, in a first mode, the first mapped data to the memory device. The method may also include storing the second mapped data to a cache. The method may also include generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • In other aspects, a system may include flash memory devices and a controller. The controller may be configured to generate a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data. The controller may also be configured to perform a first programming operation to write, in a first mode, the first mapped data to at least one of the plurality of flash memory devices. The controller may be configured to store the second mapped data to a cache. The controller may be configured to generate a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the at least one of the plurality of flash memory devices.
  • In further aspects, a system may include means for generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data. The system may also include means for performing a first programming operation to write, in a first mode, the first mapped data to a memory device. The system may also include means for storing the second mapped data to a cache. The system may also include means for generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • In further aspects, a non-transitory machine-readable medium may include machine-executable instructions thereon that, when executed by a processor, perform a method. The method may include generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data. The method may also include performing a first programming operation to write, in a first mode, the first mapped data to the memory device. The method may also include storing the second mapped data to a cache. The method may also include generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
  • Those of skill in the art would appreciate that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. Various components and blocks may be arranged differently (for example, arranged in a different order, or partitioned in a different way) all without departing from the scope of the subject technology.
  • It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Some of the steps may be performed simultaneously. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
  • The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. The previous description provides various examples of the subject technology, and the subject technology is not limited to these examples. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (for example, his) include the feminine and neuter gender (for example, her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the invention.
  • A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. An aspect may provide one or more examples. A phrase such as an aspect may refer to one or more aspects and vice versa. A phrase such as an “embodiment” does not imply that such embodiment is essential to the subject technology or that such embodiment applies to all configurations of the subject technology. A disclosure relating to an embodiment may apply to all embodiments, or one or more embodiments. An embodiment may provide one or more examples. A phrase such as an “embodiment” may refer to one or more embodiments and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A configuration may provide one or more examples. A phrase such as a “configuration” may refer to one or more configurations and vice versa.
  • The word “exemplary” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
  • All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. § 112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.” Furthermore, to the extent that the term “include,” “have,” or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim.

Claims (20)

What is claimed is:
1. A method implemented using one or more controllers for a memory device, the method comprising:
generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data;
performing a first programming operation to write, in a first mode, the first mapped data to the memory device;
storing the second mapped data to a cache; and
generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
2. The method of claim 1, wherein generating the mapping of data based on the set of data further comprises:
generating the first mapped data and the second mapped data based on a Gray code encoding of the set of data,
wherein the first mapped data comprises a first plurality of data representable in rows and columns, the first plurality of data is represented by balanced Gray codes, and the second mapped data comprises a second plurality of data.
3. The method of claim 2, wherein:
the balanced Gray codes include a sum of transitions for each column, in the first plurality of data, wherein a total of the sums of the transitions for all of the columns is not greater than a maximum number of read levels for writing in the first mode to the memory device,
a sum of the transitions for one of the columns and a sum of the transitions for a next one of the columns are the same or differ by not more than one, and
each of the transitions for a column represents a change in values between adjacent rows within the column.
4. The method of claim 2, wherein data in every two rows of the first plurality of data are an identical pair.
5. The method of claim 2, wherein a number of transitions for the first mapped data comprises seven transitions, and a number of transitions for the second mapped data comprises eight transitions, wherein each transition corresponds to a change between neighboring data.
6. The method of claim 1, wherein the first mapped data comprises at least a most significant bit (MSB), and the second mapped data comprises at least a least significant bit (LSB).
7. The method of claim 1, wherein generating the second set of data comprises:
performing a first read operation on the second mapped data from the cache;
performing a second read operation on the first mapped data from the memory device; and
generating the second set of data, represented by a set of balanced Gray codes, based on a combination of the first mapped data and the second mapped data, wherein the set of balanced Gray codes includes a sum of transitions that is not greater than a maximum number of read levels for writing in the second mode to the memory device.
8. The method of claim 1, further comprising:
encoding data, received from a host device, based on a first encoding operation to generate an encoded set of data comprising the set of data.
9. The method of claim 7, further comprising:
performing a decoding operation, based on the second set of data, to generate a decoded set of data; and
performing a second programming operation to write, in the second mode, the decoded set of data to the memory device.
10. The method of claim 1, wherein the first mode is related to programming for triple-level cell (TLC) memory, and the second mode is related to programming for quadruple-level cell (QLC) memory.
11. A system comprising:
a plurality of flash memory devices; and
a controller configured to:
generate a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data;
perform a first programming operation to write, in a first mode, the first mapped data to at least one of the plurality of flash memory devices;
store the second mapped data to a cache; and
generate a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the at least one of the plurality of flash memory devices.
12. The system of claim 11, wherein the controller is further configured to:
generate the first mapped data and the second mapped data based on a Gray code encoding of the set of data,
wherein the first mapped data comprises a first plurality of data representable in rows and columns, the first plurality of data is represented by balanced Gray codes, and the second mapped data comprises a second plurality of data.
13. The system of claim 12, wherein the balanced Gray codes include a sum of transitions for each column, in the first plurality of data, wherein a total of the sums of the transitions for all of the columns is not greater than a maximum number of read levels for writing in the first mode to the memory device,
a sum of the transitions for one of the columns and a sum of the transitions for a next one of the columns are the same or differ by not more than one, and
each of the transitions for a column represents a change in values between adjacent rows within the column.
14. The system of claim 12, wherein data in every two rows of the first plurality of data are an identical pair.
15. The system of claim 12, wherein a number of transitions for the first mapped data comprises seven transitions, and a number of transitions for the second mapped data comprises eight transitions, wherein each transition corresponds to a change between neighboring data.
16. The system of claim 11, wherein the first mapped data comprises at least a most significant bit (MSB), and the second mapped data comprises at least a least significant bit (LSB).
17. The system of claim 11, wherein the controller is further configured to:
encode data, received from a host device, based on a first encoding operation to generate an encoded set of data comprising the set of data.
18. The system of claim 17, wherein the controller is further configured to:
perform a decoding operation, based on the second set of data, to generate a decoded set of data; and
perform a second programming operation to write, in the second mode, the decoded set of data to the memory device.
19. A flash storage system comprising:
means for generating a mapping of data based on a set of data, the mapping of data including a first mapped data and a second mapped data, wherein an amount of the first mapped data is greater than an amount of the second mapped data;
means for performing a first programming operation to write, in a first mode, the first mapped data to a memory device;
means for storing the second mapped data to a cache; and
means for generating a second set of data, based on an inverse mapping of the mapping of data including the second mapped data from the cache and the first mapped data from the memory device, for writing, in a second mode, to the memory device, wherein the second set of data comprises the set of data, and the first mode and the second mode correspond to different modes of writing to the memory device.
20. The flash storage system of claim 19, wherein the means for generating the mapping of data further comprises:
means for generating the first mapped data and the second mapped data based on a Gray code encoding of the set of data,
wherein the first mapped data comprises a first plurality of data representable in rows and columns, the first plurality of data is represented by balanced Gray codes, and the second mapped data comprises a second plurality of data.
US16/221,378 2018-12-14 2018-12-14 Mapping for multi-state programming of memory devices Active 2039-02-20 US10705966B1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US16/221,378 US10705966B1 (en) 2018-12-14 2018-12-14 Mapping for multi-state programming of memory devices
DE102019125059.5A DE102019125059A1 (en) 2018-12-14 2019-09-18 ILLUSTRATION FOR MULTI-STATE PROGRAMMING OF STORAGE DEVICES
CN201910884317.9A CN111324299B (en) 2018-12-14 2019-09-19 Mapping for multi-state programming of memory devices
US16/905,789 US11372765B2 (en) 2018-12-14 2020-06-18 Mapping for multi-state programming of memory devices
US17/746,849 US11636039B2 (en) 2018-12-14 2022-05-17 Mapping for multi-state programming of memory devices

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US16/221,378 US10705966B1 (en) 2018-12-14 2018-12-14 Mapping for multi-state programming of memory devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/905,789 Continuation US11372765B2 (en) 2018-12-14 2020-06-18 Mapping for multi-state programming of memory devices

Publications (2)

Publication Number Publication Date
US20200192807A1 true US20200192807A1 (en) 2020-06-18
US10705966B1 US10705966B1 (en) 2020-07-07

Family

ID=70858439

Family Applications (3)

Application Number Title Priority Date Filing Date
US16/221,378 Active 2039-02-20 US10705966B1 (en) 2018-12-14 2018-12-14 Mapping for multi-state programming of memory devices
US16/905,789 Active 2039-01-30 US11372765B2 (en) 2018-12-14 2020-06-18 Mapping for multi-state programming of memory devices
US17/746,849 Active US11636039B2 (en) 2018-12-14 2022-05-17 Mapping for multi-state programming of memory devices

Family Applications After (2)

Application Number Title Priority Date Filing Date
US16/905,789 Active 2039-01-30 US11372765B2 (en) 2018-12-14 2020-06-18 Mapping for multi-state programming of memory devices
US17/746,849 Active US11636039B2 (en) 2018-12-14 2022-05-17 Mapping for multi-state programming of memory devices

Country Status (3)

Country Link
US (3) US10705966B1 (en)
CN (1) CN111324299B (en)
DE (1) DE102019125059A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11367502B2 (en) * 2018-12-20 2022-06-21 Micron Technology, Inc Bad block management for memory sub-systems
WO2022205198A1 (en) * 2021-03-31 2022-10-06 Yangtze Memory Technologies Co., Ltd. Program and read operations using different gray codes and memory device for performing the same
US11495296B2 (en) 2021-01-20 2022-11-08 Western Digital Technologies, Inc. Read threshold calibration for nonvolatile memory with encoded foggy-fine programming
US11650756B2 (en) 2020-12-28 2023-05-16 Western Digital Technologies, Inc. Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11914886B2 (en) 2020-10-02 2024-02-27 Western Digital Technologies, Inc. Nonvolatile memory with on-chip encoding for foggy-fine programming

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748606B2 (en) 2018-12-14 2020-08-18 Western Digital Technologies, Inc. Multi-state programming for memory devices
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US11733994B2 (en) * 2019-05-03 2023-08-22 EMC IP Holding Company LLC System and method for state management
CN111831999B (en) * 2020-07-13 2022-08-19 中国银行股份有限公司 Method and system for aggregating multi-station operation
CN113254372A (en) * 2020-08-07 2021-08-13 广东高云半导体科技股份有限公司 Method and system for providing a programmable microcontroller with a two-stage configuration process
US11507303B2 (en) 2021-04-21 2022-11-22 Western Digital Technologies, Inc. User controlled data-in for lower and middle page in MLC-fine QLC memories

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170192902A1 (en) * 2015-12-30 2017-07-06 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US20180314448A1 (en) * 2017-03-21 2018-11-01 Western Digital Technologies, Inc. Storage System and Method for Efficient Pipeline Gap Utilization for Background Operations
US20200090759A1 (en) * 2018-09-17 2020-03-19 Western Digital Technologies, Inc. Pre-program read to counter wordline failures

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103026346B (en) * 2010-07-27 2016-01-20 国际商业机器公司 For reading and write method and the storage system of data from solid-state memory device
US9318166B2 (en) * 2011-07-22 2016-04-19 SanDisk Technologies, Inc. Systems and methods of storing data
US8885410B2 (en) 2012-08-29 2014-11-11 Sandisk Technologies Inc. Direct multi-level cell programming
CN105612499B (en) * 2013-10-29 2018-11-13 华中科技大学 hybrid cache management
US9400713B2 (en) 2014-10-02 2016-07-26 Sandisk Technologies Llc System and method for pre-encoding of data for direct write to multi-level cell memory
MA44821A (en) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh PROCESS FOR ALLOCATING A STACK OF VIRTUAL REGISTERS IN A BATTERY MACHINE
US9792998B1 (en) 2016-03-29 2017-10-17 Sandisk Technologies Llc System and method for erase detection before programming of a storage device
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US11133067B2 (en) * 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170192902A1 (en) * 2015-12-30 2017-07-06 Samsung Electronics Co., Ltd. Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device
US20180314448A1 (en) * 2017-03-21 2018-11-01 Western Digital Technologies, Inc. Storage System and Method for Efficient Pipeline Gap Utilization for Background Operations
US20200090759A1 (en) * 2018-09-17 2020-03-19 Western Digital Technologies, Inc. Pre-program read to counter wordline failures

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11367502B2 (en) * 2018-12-20 2022-06-21 Micron Technology, Inc Bad block management for memory sub-systems
US20220254436A1 (en) * 2018-12-20 2022-08-11 Micron Technology, Inc. Bad block management for memory sub-systems
US11749373B2 (en) * 2018-12-20 2023-09-05 Micron Technology, Inc. Bad block management for memory sub-systems
US11914886B2 (en) 2020-10-02 2024-02-27 Western Digital Technologies, Inc. Nonvolatile memory with on-chip encoding for foggy-fine programming
US11650756B2 (en) 2020-12-28 2023-05-16 Western Digital Technologies, Inc. Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11495296B2 (en) 2021-01-20 2022-11-08 Western Digital Technologies, Inc. Read threshold calibration for nonvolatile memory with encoded foggy-fine programming
WO2022205198A1 (en) * 2021-03-31 2022-10-06 Yangtze Memory Technologies Co., Ltd. Program and read operations using different gray codes and memory device for performing the same
US11854613B2 (en) 2021-03-31 2023-12-26 Yangtze Memory Technologies Co., Ltd. Program and read operations using different gray codes and memory device for performing the same

Also Published As

Publication number Publication date
CN111324299A (en) 2020-06-23
US20200320009A1 (en) 2020-10-08
CN111324299B (en) 2023-06-09
DE102019125059A1 (en) 2020-06-18
US11636039B2 (en) 2023-04-25
US20220283950A1 (en) 2022-09-08
US11372765B2 (en) 2022-06-28
US10705966B1 (en) 2020-07-07

Similar Documents

Publication Publication Date Title
US11636039B2 (en) Mapping for multi-state programming of memory devices
US11562787B2 (en) Multi-state programming for memory devices
US11798627B2 (en) Multi-phased programming with balanced gray coding
US9390774B2 (en) Systems and methods of storing data
US10275541B2 (en) Proactive corrective actions in memory based on a probabilistic data structure
CN108399109B (en) Soft decoding scheduling
CN108399108B (en) Read operation and soft decode timing
US10095424B2 (en) Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
US11609855B2 (en) Bit masking valid sectors for write-back coalescing

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

AS Assignment

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RUB, BERNARDO;EL GAMAL, MOSTAFA;RAVINDRAN, NIRANJAY;AND OTHERS;SIGNING DATES FROM 20181206 TO 20181211;REEL/FRAME:048223/0222

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

STCF Information on status: patent grant

Free format text: PATENTED CASE

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

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

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