HK1200589A1 - Flash memory system - Google Patents
Flash memory system Download PDFInfo
- Publication number
- HK1200589A1 HK1200589A1 HK15100786.1A HK15100786A HK1200589A1 HK 1200589 A1 HK1200589 A1 HK 1200589A1 HK 15100786 A HK15100786 A HK 15100786A HK 1200589 A1 HK1200589 A1 HK 1200589A1
- Authority
- HK
- Hong Kong
- Prior art keywords
- page
- data
- memory device
- mbc
- storage mode
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5641—Multilevel memory having cells with different number of storage levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
A method and system for controlling an MBC configured flash memory device to store data in an SBC storage mode, or a partial MBC storage mode. In a full MBC storage mode, pages of data are programmed sequentially from a first page to an Nth page for each physical row of memory cells. Up to N virtual page addresses per row of memory cells accompany each page to be programmed for designating the virtual position of the page in the row. For SBC or partial MBC data storage, a flash memory controller issues program command(s) to the MBC memory device using less than the maximum N virtual page addresses for each row. The MBC memory device sequentially executes programming operations up to the last received virtual page address for the row.
Description
Cross Reference to Related Applications
This application claims priority to U.S. provisional patent application No. 61/538,540 filed on 23/9/2011 and U.S. patent application No. 13/455,780 filed on 25/4/2012, the contents of both of which are incorporated herein by reference in their entirety.
Technical Field
The present embodiments generally relate to non-volatile memories.
Background
Flash memory is a common type of non-volatile memory that is widely used as mass storage for consumer electronics devices such as digital cameras and portable digital music players). The density of currently available flash memory chips can be as high as several Gigabytes (GB) in size, which is suitable for use in popular USB flash drives because of the small size of one flash memory chip. Another emerging application for flash memory is solid state drives, which are used to replace traditional hard disk drives used in laptop and desktop computers. These applications typically use multi-level cell (MLC) flash memory devices with limited lifetimes. Other types of flash memory, single-level cell (SLC) flash memory devices, are also used in applications for reliable data storage. A disadvantage of SLC flash devices is cost compared to MLC flash devices.
Disclosure of Invention
In a first aspect, a method is provided for programming a multi-bit per cell (MBC) flash memory device configured to store up to N pages of data per physical row, N being an integer greater than 1. The method includes issuing a set of program commands for programming a plurality of pages of data to a subsection of the flash memory device having at least one physical row. The set of programming commands is restricted to addressing a subset of logical page addresses selected from all possible logical page addresses corresponding to each of the at least one physical row. The method also includes programming less than N pages to each of at least one physical row of the flash memory device in response to the subset of logical page addresses in the program command. According to this embodiment, the method further includes accessing a mapping table containing storage mode information for each subsection of the flash memory device prior to issuing the set of programming commands, wherein accessing the mapping table includes selecting the subsection with a partial MBC storage mode in which less than N data pages are stored per physical row.
The method may also include selecting a subset of logical page addresses corresponding to the partial MBC storage mode, and all possible logical page addresses corresponding to each of the at least one physical row include consecutive page addresses beginning with a lower page address and ending with an upper page address. The subset of logical page addresses may include lower page addresses up to an intermediate page address between an upper page address and a lower page address of each of the at least one physical row. Alternatively, the subset of logical page addresses may include only the lower page addresses of each of the at least one physical row.
In another implementation of the first aspect, issuing the set of programming commands includes: repeatedly providing program command packets, each program command packet containing one of the plurality of data pages and one of a subset of logical page addresses; and providing M program command packets for programming M pages of a plurality of data pages to one physical row of the flash memory device, wherein M is an integer value less than N. Optionally, issuing a set of program commands includes repeatedly providing a program command packet for programming one of the plurality of pages of data to one physical row of the flash memory device.
In another embodiment of the first aspect, the method further comprises receiving a host request to program a plurality of pages of data in the partial MBC storage mode prior to issuing the set of programming commands. In yet another embodiment, the method further includes receiving a host request to program a plurality of pages of data in a full MBC storage mode before issuing the set of programming commands, determining that a maximum number of MBC program/erase cycles of a subsection has been reached, and selecting another subsection configured to program the plurality of pages of data in the full MBC storage mode and setting the subsection to a partial MBC storage mode. In this current embodiment, the full MBC storage mode includes a two-bit-per-cell storage mode, while the partial MBC storage mode includes a one-bit-per-cell storage mode.
In a second aspect, a system is provided that includes a memory controller. The memory controller is configured to issue a program command that is restricted to addressing a subset of logical page addresses selected from all possible logical page addresses corresponding to each physical row of the memory device. The memory device includes a multi-bit per cell (MBC) memory device configured to store a maximum of N pages of data per physical row, where N is an integer greater than 1. The memory device is also configured to program less than N pages per physical row in response to a subset of logical page addresses in a program command received from the memory controller. In this embodiment, the memory controller includes a mapping table for storing metadata corresponding to the subdivisions of the memory device, where the mapping table is configured to include storage mode information for each subdivision and address binding information associated with the storage mode for each subdivision.
In this embodiment, the memory controller includes control circuitry for accessing the mapping table and providing the program command in response to metadata of the mapping table. Each program command includes a page of data, address information for selecting a subsection of the memory device and a physical row within the subsection, and a logical page address of the page of data to be programmed in the physical row. In this embodiment, the memory device is configured to store at most N2 pages per physical row, and each of the two pages of each physical row is addressable by an upper page address having a first least significant bit and a lower page address having a second least significant bit different from the first least significant bit. According to further embodiments of the present aspect, the subdivisions of the memory device include a memory block, a sub-block of a memory block, or a physical row of a memory block.
In a third aspect, a method is provided for programming a multi-bit per cell (MBC) flash memory device configured to store up to N bits per cell, where N is an integer greater than 1. The method includes receiving a host request to program a page of data; determining that the data page is to be programmed in a partial MBC storage mode in which fewer than N virtually addressable data pages are stored in each physical row of the flash memory device; accessing a mapping table containing metadata for flash memory devices to select subsections of the MBC flash memory devices configured in a partial MBC storage mode; and issuing at least one program command for programming a page of data to the subsection using a virtual page address limited to a subset of less than N possible virtual page addresses for programming a page to each physical row. In this aspect, N-2, and the possible virtual page addresses include a lower page address and an upper page address, and issuing at least one program command includes repeatedly issuing program commands, each program command including a page of data and a lower page address. Optionally, N >2, and the possible virtual page addresses include a lower page address, an upper page address, and at least one intermediate page address between the lower page address and the upper page address, and issuing at least one program command includes repeatedly issuing program commands, each program command including a page of data, and one of the lower page address and the at least one intermediate page address.
Other aspects and features of particular embodiments of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of such embodiments in conjunction with the accompanying figures.
Drawings
Embodiments will now be described, by way of example only, with reference to the accompanying drawings, in which:
FIG. 1 is a block diagram of a flash memory device to which the present invention is applicable;
FIG. 2 is a schematic diagram illustrating the organization of one bank of the flash memory device of FIG. 1;
FIG. 3 is a circuit schematic showing a per cell unit (SBC) mapping of a data page to a row of flash memory cells;
figure 4 is a diagram of threshold voltage distributions for SBC data storage;
FIG. 5 is a circuit schematic showing a multi-bit per cell (SBC) mapping of two pages of data to a row of flash memory cells;
FIG. 6 is a diagram of threshold voltage distributions for a two-bit MBC data storage;
FIG. 7 is a circuit schematic showing MBC mapping of three pages of data to a row of flash memory cells;
FIG. 8 is a graph of threshold voltage distributions for a three-bit MBC data storage;
FIG. 9 is a block diagram of a flash memory system according to an embodiment of the present invention;
FIG. 10 is a block diagram of a flash memory system according to another embodiment of the present invention;
FIG. 11 is a table illustrating an exemplary mapping of virtual page addresses to physical rows;
12A and 12B are diagrams of threshold voltage distributions for a two-bit MBC programming sequence;
13A, 13B, and 13C are graphs of threshold voltage distributions for a three-bit MBC programming sequence;
FIG. 14 is a diagram illustrating an example of an SBC programming operation of a two-bit MBC memory device according to an embodiment of the present invention;
FIG. 15 is a diagram illustrating an example of a two-bit MBC programming operation of a three-bit MBC memory device according to an embodiment of the invention;
FIG. 16 is a diagram illustrating an example of an N-bit MBC flash memory controller in which an exemplary mapping table is stored, according to an embodiment of the invention;
FIG. 17 is a flow chart of a method of operating a memory controller to issue a program command to an MBC memory device according to an embodiment of the invention;
FIG. 18 is a flow diagram of a method for operating an MBC memory device in response to a program command received from a memory controller, according to an embodiment of the invention; and
FIG. 19 is a flowchart illustrating a method of detailed exemplary operation of a memory system according to an embodiment of the present invention.
Detailed Description
FIG. 1 depicts a typical flash memory device to which embodiments of the present invention may be applied. Referring to fig. 1, a flash memory device 10 includes an input/output interface circuit, a control circuit, a memory circuit, and a memory array. The input/output interface circuit of the flash memory device 10 includes a ready/busy signal buffer 12, a control signal buffer 14, and a global data buffer 16. In a particular example, the ready/busy signal buffer 12 is an output buffer that drives the ready/busy signal R/B # via a respective pin or port. Control signal buffer 14 is an input buffer that receives flash control signals CE #, CLE, ALE, WE #, RE #, and WP # from respective pins or ports. In the following, a signal name ending with "#" should be understood as an active low signal, wherein an active low signal corresponds to a "0" logic level or, for example, a VSS voltage level. In contrast, an active high logic level signal corresponds to a "1" logic level or a voltage level of, for example, VDD or VCC. The following is a brief description of the aforementioned control signals.
● Command Latch Enable (CLE): the CLE input signal is used to control loading of the operating mode command into the internal command register. When CLE is high, a command is latched into the command register from the I/O port on the rising edge of the WE # signal.
● Address Latch Enable (ALE): the ALE signal is used to control loading of address information into the internal address register. When ALE is high, address information is latched into the address register from the I/O port on the rising edge of the WE # signal.
● chip enable (CE #): the device transitions into a low power standby mode when CE # goes high during the device is in a ready state. When the device is in a busy state (R/B # ═ L), such as during a program or erase or read operation, the CE # signal is ignored and does not enter standby mode even if the CE # input goes high.
● write enable (WE #): the WE # signal is used to control the retrieval of data from the I/O port.
● read enable (RE #): the RE signal controls the serial data output. Data is available after the falling edge of RE #. The internal column address counter is also incremented on this falling edge (address + 1).
● I/O Port (I/O0 to 7): the I/O0 to 7 pins serve as ports for transferring addresses, commands, and input/output data to and from the devices.
● write protection (WP #): the WP # signal is used to protect the device from accidental programming or erasure. When WP # is low, the internal voltage regulator (high voltage generator) is reset. This signal is typically used to protect data during power on/power off sequences when the input signal is inactive.
● ready/busy (R/B #): R/B # is an open drain pin, and the output signal is used to indicate the operating condition of the device. The R/B # signal is in a busy state (R/B # ═ L) during program, erase, and read operations, and will return to a ready state (R/B # ═ H) after the operations are completed.
The global data buffer 16 is a bidirectional buffer that receives write data on corresponding input/output (I/O) pins or ports and provides read data. Flash device 10 is shown with eight such ports I/O0 through I/O7, but may have more or fewer than eight in alternative data width configurations. These I/O ports are also used to receive address and command information.
The control circuitry of flash memory device 10 includes a controller 18, a command register 20, an address register 22, and a status register 24. The controller 18 controls various functions of other circuitry in the flash memory device 10, including, for example, reading, programming, and program verification. Although not shown, the controller 18 may include a command decoder for performing functions in response to received commands. The registers 22, 24 store various types of information received by the flash memory device 10 or to be provided to an external host system (not shown), including, for example, a memory controller (not shown). The registers described are not intended to represent all registers, and may include other registers, such as data registers.
The circuitry primarily controlled by the controller 18 is memory circuitry including row and column pre-decoders 26 and 28, row and column decoders 30 and 32, sense amplifier and page buffer block 34, and high voltage generator 36. The memory cell array 38 of the flash memory device 10 includes a NAND (NAND) cell string connected to a bit line, where each memory cell of the NAND cell string is connected to a word line. More details of the NAND cell string are shown later in figure 3. Row predecoder 26, row decoder 30, and high voltage generator 36 are controlled in a programming operation to drive a selected word line to a high voltage that is effective to change the threshold voltage of the connected memory cell from the default erase threshold voltage to a desired voltage level. Note that high voltages can be used in the storage array 38 to erase memory cells by changing their threshold voltages to a default value. Different combinations of high voltage and high voltage application times may be used to set a particular threshold voltage of a flash memory cell. The combination used to program a particular threshold voltage may be referred to as a programming profile. The page buffer 34 stores a page of data to be programmed to cells connected to a selected word line. Typically, memory cells connected to a bit line are either inhibited from programming or enabled for programming via a selected word line, depending on the logic level to which the bit line is biased or set. The data bits stored in the page buffer are used to bias the bit lines. The memory cell array 38 has any number of banks (banks) that are selected design parameters for a particular flash memory device.
Fig. 2 shows the organization of one bank 40 of the memory cell array 38 of fig. 1. The banks 40 are organized into k blocks, and each block has i pages. k and i are both integer values. Each page corresponds to a row of memory cells coupled to a common word line. The following is a detailed description of the memory cells of the block.
Each block includes NAND memory cell strings having up to i flash memory cells 42 arranged in series and electrically coupled to each other. Thus, word lines WL1 through WLi are coupled to the gates of each flash memory cell in the string of memory cells. A string select device 44 coupled to signal SSL (string select line) selectively connects the memory cell string to a bitline 46, while a ground select device 48 coupled to signal GSL (ground select line) selectively connects the memory cell string to a source line, such as VSS. The string select device 44 and the ground select device 48 are N-channel transistors.
There are j bit lines 46 common to all blocks of the bank 40, and each bit line 46 is coupled to one NAND memory cell string of each of the blocks [1] to [ k ]. The variable j is an integer value. Each word line (WL 1-WLi), SSL and GSL signal is coupled to the same respective transistor device in each NAND memory cell string in the block. As will be understood by those skilled in the art, data stored in flash memory cells along one word line is referred to as a data page.
Coupled to each bit line outside of the memory bank 40 is a page buffer 50 for storing a page of write data to be programmed into a page of flash memory cells. The page buffer 50 corresponds to the sense amplifier and page buffer block 34 shown in fig. 1. Accordingly, the page buffer 50 further includes a sensing circuit for sensing data read out from one page of the flash memory cells. During a program operation, the page buffer performs a program verify operation to ensure that data is properly programmed into the flash memory cells coupled to the selected word line. Programming within a block generally begins at the page corresponding to WL1 and continues continuously to WLi to fill the current block. Alternatively, programming may begin at WLi and continue continuously to WL 1. Programming then continues with WL1 of the new block.
Flash memory 10 may be configured to store data in one of two different ways. Data can be stored in a single-bit-per-cell (SBC) storage mode or a multiple-bit-per-cell (MBC) storage mode. In the SBC storage mode, exactly one bit of information is stored in one cell to represent one of two possible states. In the MBC storage mode, at least two bits are stored in a cell to represent one of four possible states.
FIG. 3 shows the same two NAND cell strings of FIG. 2, with additional comments to help illustrate that the data page is stored in an SLC configuration flash memory device. Each memory cell connected to the same physical word line (i.e., WL1, for example) stores one bit of data of a page of data. Thus, as shown in FIG. 3, the cells connected to physical word line WL1 store the "first page", while the cells connected to the last physical word line WLi store the "ith page".
Figure 4 shows threshold voltage (Vt) distributions for erased memory cells and programmed memory cells in the SBC storage mode. Due to process and voltage supply variations, erased and programmed threshold voltages are distributed within a voltage range. As shown in FIG. 3, erased memory cells have a negative threshold voltage between-3V to-1V, while programmed memory cells have a positive threshold voltage between 1V to 3V. The range depends on the desired threshold voltage of the memory cell. The threshold voltage ranges illustrate possible threshold voltages that may be used in a particular flash memory device, however, those skilled in the art will appreciate that the selection of threshold voltages for erased and programmed memory cells depends on the design and manufacturing process of the flash memory device. Those skilled in the art will appreciate that different flash memory devices have different threshold voltage ranges to suit a particular design or application.
Fig. 5 shows the same circuit as that of fig. 3, except that two bits of data are stored in each memory cell of the flash memory device in a two-bit-per-cell MLC configuration. Thus, each physical word line stores two pages of data. As shown in fig. 5, the physical row addressed by WL1 stores logical first and second pages. The last word line WLi stores page 2i and page 2i-1, where "i" is an integer value.
FIG. 6 illustrates a threshold voltage distribution graph of possible states that may be stored in each memory cell and the corresponding two bit combinations that each state represents.
Fig. 7 shows the same circuit as that of fig. 3, except that three bits of data are stored in each memory cell of the flash memory device in a three-bit-per-cell MLC configuration. Thus, each physical word line stores three pages of data. As shown in fig. 7, the physical row addressed by WL1 stores logical first, second, and third pages. The last word line WLi stores page 3i, page 3i-1 and page 3i-2, where "i" is an integer value. It should be noted that pages 3i, 3i-1 and 3i-2 are general mathematical expressions for representing page numbers of upper, middle and lower pages of each word line, respectively.
FIG. 8 illustrates a threshold voltage distribution diagram of possible states that may be stored in each memory cell, where each state represents a possible three-bit combination.
An advantage of storing data in the MBC storage mode (two or more bits per cell) is at least twice the storage capacity relative to the SBC storage mode when the same number of cells is used. Generally, flash memory manufacturers apply mask options during the manufacturing process to configure flash memory device 10 to perform either SBC-specific algorithms or MBC-specific algorithms, because the flash memory circuitry is controlled differently between SBC and MBC read and program operations.
It is known that flash memory devices have a limited number of erase-program cycles before they are no longer available to reliably store data. For example, the typical nominal erase-program cycle of current SBC flash memories is about 100000 cycles. However, current MBC flash memories have a smaller rating limit of 10000 cycles due to the fact that the cells are subjected to higher stress. The erase-program cycle limits mentioned above are examples only, but it is fully understood that MBC flash memory devices have significantly lower erase-program cycles than SBC configured flash memory devices.
Although MBC flash memory is suitable for most consumer applications, the 10000 cycle program-erase limit may not be sufficient for other applications where data programming and erasing is frequent or where data is mission critical. Therefore, this problem is more critical for commercial applications (e.g., HDD applications) where there are more frequent program-erase cycles. Because HDD applications require higher data integrity than most consumer applications, MBC flash memory is not suitable for use due to its relatively short 10000 cycle life. A dedicated dual mode SBC/MBC flash memory device is proposed, in which the operating mode is set statically or changed dynamically at runtime. Different command sets and/or logic circuits are required for such dual mode devices.
Finally, the cost of SBC flash memory devices currently exceeds that of higher density MBC flash memory devices, as vendors recognize that consumers who require high reliability will pay for higher cost devices. A dedicated dual mode SBC/MBC flash memory device may also cost more than an MBC flash memory device.
It is therefore desirable to provide a low cost flash memory system in which MBC flash memory devices can be used to store data in the SBC storage mode.
In general, at least some example embodiments provide methods and systems for controlling a flash memory device of an MBC configuration to store data in an SBC storage mode or a partial MBC storage mode of less than full MBC storage mode capacity. In a full MBC storage mode, for each physical row of memory cells, pages of data are programmed sequentially from a first page to an Nth page, where N is the total number of pages that can be stored in one physical row. Up to N virtual page addresses per physical row of memory cells are applied to the virtual locations of a specified page in the physical row, as opposed to each page to be programmed. For SBC or partial MBC data storage, the flash controller issues a program command to the MBC storage device using less than a maximum of N virtual page addresses for each physical row. The MBC memory device performs the programming operation continuously until the last received virtual page address of the physical row.
The presently described embodiments may be used in the memory systems shown in fig. 9 and 10.
Fig. 9 illustrates a flash memory system according to an embodiment of the present invention. Referring to fig. 9, a flash memory system 100 is integrated with a host system 102. The flash memory system 100 includes a flash controller 104 in communication with a host system 102 and a plurality of MBC flash memory devices 106-1-106-4. The host system 102 includes a processing device, such as a microcontroller, microprocessor, or computer system (not shown). Flash memory system 100 is configured to include one channel 108, wherein MBC flash memory devices 106-1-106-4 are coupled in parallel to channel 108. Channel 108 includes a set of common buses (not shown) that include data and control lines coupled to all of memory devices 106-1-106-4. Although not shown, each memory device is enabled/disabled using a respective chip select signal provided by the flash controller 104. The flash controller 104 is responsible for issuing commands and data to a selected one of the memory devices 106-1-106-4 via the channel 108 based on the operation of the host system 102. Data read from a selected one of the memory devices 106-1-106-4 is transferred back to the flash controller 104 via the channel 108, which in turn provides the read data to the host system 102. Those skilled in the art will appreciate that the memory system 100 may have more or fewer memory devices coupled to the channel 108.
Flash memory system 100 is commonly referred to as a multi-drop configuration, in which MBC flash memory devices 106-1-106-4 are coupled in parallel with respect to channel 108. The flash controller 104 may have multiple channels, each with flash devices 106-1-106-4 coupled in a multi-drop configuration. Each MBC flash memory device 106-1-106-4 may be a NAND flash memory device having the bank memory organization previously shown in FIG. 2. The flash memory devices 106-1-106-4 may have the same capacity or different capacities.
Fig. 10 shows a flash memory system according to another embodiment of the present invention. Referring to fig. 10, a flash memory system 120 includes a flash memory controller 122 in communication with a host system 124 and a plurality of flash memories connected in series. In this particular example, four MBC flash memory devices 126-1-126-4 are coupled in series. Each of the four flash memory devices 126-1-126-4 has input/output circuitry for facilitating operations between the memory devices. Those skilled in the art will appreciate that memory system 120 may have more or fewer memory devices coupled in series with flash controller 122. Examples of such flash memory devices are described in commonly-owned U.S. patent application serial No. 11/324,023, filed on 30/2005 and 11/496,278, filed on 31/2006, the contents of which are incorporated herein by reference.
According to the present embodiment, the MBC memory device of the system of FIGS. 9 and 10 has an internal controller configured to identify the received page address and determine which particular programming algorithm is required. For example, a page address corresponding to a first page to be programmed to a physical row is programmed using a different algorithm than a second page to be programmed to the physical row. The memory controllers 104 and 122 are configured using an address binding scheme that limits the available virtual address space for programming a page of data to a physical row of memory cells. This address binding scheme is used to program data in SBC mode or partial MBC mode. In the partial MBC storage mode, more than one page of data is stored in a physical row of memory cells, but less than the maximum number of pages that can be stored in a physical row of memory cells. For example, if an MBC memory device can store more than three bits/cell (or more than three pages of data per physical row), the memory controller can be configured to have a first address binding scheme for programming data in the SBC storage mode and a second address binding scheme for programming data in the two-bit/cell MBC storage mode.
In an embodiment, the address binding scheme may be applied to any subsection of a storage array, where the subsection may include a storage block, a sub-block or portion of a storage block, or a physical row. Thus, for increased system flexibility, a combination of different subsections and different address binding schemes may be implemented.
FIG. 11 is a table showing an exemplary mapping of virtual page addresses to physical rows or word lines of a NAND flash memory array for an SBC storage mode in which one bit of data is stored per cell, an MBC storage mode in which two bits of data are stored per cell, and an MBC storage mode in which three bits of data are stored per cell.
In the presently illustrated example, assume that a NAND cell string includes 32 word lines (WL1-WL32), each of which is referred to as a physical row. The second column from the left side of the table shows the virtual address mapping for a one-bit-per-cell data storage mode. Thus, in a one-bit-per-cell storage mode, one page of data (page 1-page 32) is stored in each physical row. Appearing in brackets next to each numbered page is an 8-bit virtual page address with the Least Significant Bit (LSB) at the rightmost bit position. In this example, the first seven bits of each virtual page address are shown as "x" and the LSB is shown as either "0" or "1". Assume in this example that the pages are programmed in sequential order from WL1 to WL32, so the virtual addresses are also ordered sequentially.
In the column labeled "2 bits/cell", 2 pages of data are stored in each physical row. Due to the sequential programming, the first page to be programmed is referred to as the Lower Page (LP), while the second and last page to be programmed is referred to as the Upper Page (UP).
FIG. 12A shows exemplary threshold voltage distributions for possible threshold voltages of a two-bit MBC memory after the lower page is programmed. FIG. 12B shows an exemplary threshold voltage distribution of possible threshold voltages after the upper page is programmed, which takes into account the previously programmed lower page data of FIG. 12A. The arrows in FIG. 12A show that erasing a state 0 cell can change its threshold to state 1 after the lower page is programmed. The arrows in FIG. 12B show where the threshold voltages corresponding to state 0 and state 1 can be changed after upper page programming.
It should be noted that the LSB of the lower page of each physical row is "0", while the LSB of the upper page of each physical row is "1". In alternative embodiments, the LSBs of the upper and lower pages may be different than those shown in the table of FIG. 11. However, the lower page of each physical row will have the same LSBs, while the upper page of each physical row will have the same LSBs.
Referring to FIG. 11, in the column labeled "3 bits/cell", 3 pages of data are stored in each physical row. In this 3-bit per cell MBC storage mode, the lower page is programmed first, then the middle page (IP), and finally the upper page.
FIG. 13A shows exemplary threshold voltage distributions for possible threshold voltages of a three-bit MBC memory after the lower page is programmed. FIG. 13B shows an exemplary threshold voltage distribution of possible threshold voltages after the middle page is programmed, which takes into account the previously programmed lower page data of FIG. 13A. FIG. 13C shows an exemplary threshold voltage distribution of possible threshold voltages after the upper page is programmed, which takes into account the previously programmed lower page data of FIG. 13B.
In an MBC storage mode that stores more than three bits per cell, there may be at least two intermediate pages between the lower page and the upper page. It should be noted that the last two LSBs of the lower page of each physical row are "00", the last two LSBs of the middle page of each physical row are "01", and the last two LSBs of the upper page of each physical row are "10". In an alternative embodiment, the last two LSBs of the lower, middle and upper pages may be different than shown in the table of FIG. 11. However, the lower page of each physical row will have the same last two LSBs, the middle page of each physical row will have the same last two LSBs, and the upper page of each physical row will have the same last two LSBs.
According to an embodiment, an MBC memory device for storing up to N pages per physical row and having a virtual page address scheme as shown in fig. 11 may be controlled to program data into subsections of a storage array in a less than N pages per physical row storage mode. This is accomplished using a memory controller configured to issue program commands using only a subset of the available virtual page addresses that would otherwise be used to address all N pages per physical row. More specifically, the subset of virtual page addresses is limited to the lowest contiguous set of virtual page addresses available per physical line. The number of virtual page addresses of the subset determines the storage mode of the MBC memory device. This is referred to as an address binding scheme for limiting virtual page addresses to only those page addresses for a particular storage mode.
Referring to the table of fig. 11 as an example, a three-bit MBC memory device may store up to N-3 pages of data addressable using N-3 virtual page addresses per physical row. As an example, to store data to a memory block in the SBC storage mode, the memory controller issues a program command for each page of data, with a corresponding virtual page address provided for the lower page of each physical row. As shown in FIG. 13A, after each lower page is programmed to the corresponding physical row, the resulting possible threshold voltages correspond to either state 1 or state 2. In a partial MBC storage mode where two pages are stored in each physical row, the program command issued for each physical row includes the lower page and intermediate page addresses. After the middle page of data is programmed, each physical row will have four possible states as shown in FIG. 13B.
Figure 14 shows an example of an SBC programming operation for a two-bit MBC memory device according to an embodiment of the present invention. Referring to FIG. 14, a two-bit MBC memory device 200 is controlled to store data into memory blocks in the SBC storage mode. The memory device 200 includes a memory array 202 having NAND cell strings forming a memory block 204 and may have a block diagram of a flash memory device as shown in fig. 1. In the example shown in FIG. 14, only one NAND cell string of memory block 204 is shown. Furthermore, the virtual page addressing scheme shown in the table of FIG. 11 is for a two-bit MBC memory device 200. A program command packet issued to the memory device 200 includes an initial program Operation (OP) code field (PGM)206, a block address field (BA)208, a row address field (RA)210, a column address field (CA)212, a DATA field (DATA)214, and a confirmation program OP Code Field (CFRM) 216. In this example, OP code segment 206 comprises a predetermined binary sequence that indicates to memory device 200 that information related to the programming operation will follow. The block address field 208 contains a block address for selecting a particular storage block within the storage array 202. The row address field 210 contains the virtual page address of the selected physical row, with higher order bits, which are not LSBs, used to address the physical word line. The column address field 212 contains a starting column address for storage of data. The data field 214 contains the page of data to be programmed. The confirm program OP code field 216 comprises a predetermined binary sequence that indicates to the memory device 200 that the programming operation may proceed.
The currently displayed program command packets may be provided as a continuous bit stream or in parallel via an input port. The program command packet may be different for different memory systems and, therefore, OP code segments 206 and/or 216 may be omitted, or additional protocol information may be included. The order and format of the program command packets may vary. The program command packet requires address information for programming of a page of data.
In the current SBC storage mode example, the row address field 210 is limited to include virtual page addresses corresponding only to the lower page of each physical row. In FIG. 14, these virtual page addresses are boxed to illustrate that the virtual page addresses are bound to those addresses corresponding to the lower pages of memory block 204. Thus, to program a page of data to all physical rows of the memory block 204 in the SBC storage mode, successive program command packets are provided to the memory device 200, where each program command packet includes a page of data to be programmed and a lower page virtual page address. Although the memory device 200 is configured to program up to two pages of data per physical row, resulting in one of the four possible states as shown in FIG. 12B, programming only the lower page results in the two possible threshold voltage distributions shown in FIG. 12A. Thus, SBC storage mode programming is implemented in a two-bit MBC memory device.
Thus, when a subsection of the storage array 202 no longer reliably stores data in the full MBC storage mode (because it reaches the number of predetermined program/erase cycles), the subsection of the storage array 202 may be degraded to storing data in the SBC storage mode. The transition of subsegments from full MBC storage to SBC storage is referred to as "destaging" if the primary purpose of the subsegment is to maximize data storage capacity. Alternatively, such a conversion may be referred to as an "upgrade" if the primary purpose of the sub-segments is to reliably store data.
The same address binding principles are applicable to a three-bit MBC memory device, where the subsections are used to store data in the SBC storage mode. However, a three-bit or more-bit MBC memory device has an increased advantage in that the sub-segments may be gradually changed from a full MBC storage mode to the next lower partial MBC storage mode when the number of program/erase cycles of a particular storage mode is reached.
FIG. 15 illustrates an exemplary two-bit MBC programming operation of a three-bit MBC memory device, according to an embodiment of the invention. Referring to fig. 15, a three-bit MBC memory device 300 is controlled to store data into memory blocks in a two-bit MBC storage mode. The memory device 300 includes a memory array 302 having NAND cell strings forming a memory block 304. Only one NAND cell string of memory block 304 is shown. The virtual page addressing scheme shown in the table of FIG. 11 is for a three-bit MBC memory device. In this example, three consecutive program command packets 306, 308, and 310 are provided to the memory device 300. Each of the program command packets 306, 308, and 310 may have the same format as the program command packet previously shown in fig. 14. The program command packet 306 contains the data for page 1 and the corresponding lower page virtual address. The program command packet 308 contains the data for page 2 and the corresponding intermediate page virtual address. The program command packet 310 contains the data for page 4 and the corresponding lower page virtual address. In the case of a three-bit MBC memory device, a controller (e.g., controller 18 of memory device 10 of FIG. 1) will look at the last two valid bits of the virtual page address in order to determine which programming algorithm to use. This is due to the fact that: there are three page addresses per physical row and using only the LSBs is not sufficient to determine which programming algorithm to use.
Thus, when memory device 300 receives program command packet 306, a program operation is performed to program page 1 to the memory cells connected to WL 1. The resulting possible threshold voltage distributions for these memory cells are shown in either FIG. 12A or FIG. 13A. After memory device 300 receives program command packet 308, a program operation is performed to program page 1 to the memory cells connected to WL 1. Because the second page of data is programmed to the memory cells connected to WL1, a different programming algorithm is used than that used to program page 1. The resulting possible threshold voltage distributions for these memory cells are shown in FIG. 12B or FIG. 13B. The two-bit MBC programming of the memory cell connected to WL1 is now complete. A third program command packet 310 is received by the memory device 300 for programming a new lower page, page 4, to the next word line WL 2. Once programmed, the memory cells connected to WL1 have the possible threshold voltage distributions shown in fig. 12A or fig. 13A. Although not shown, additional program command packets are received by memory device 300 for programming data to the remaining physical rows of memory block 304. An advantage of using a three or more bit MBC memory device is that the subsegments can be used in a two-bit MBC storage mode and then later in an SBC storage mode.
FIG. 16 shows an example of an N-bit MBC flash memory controller. Referring to FIG. 16, an N-bit MBC flash memory controller 400 is configured using at least one address binding scheme for programming data in less than N-bit storage modes. Memory controller 400 generally includes a CPU and clock control block 402, a flash control block 404, and a mapping table 406. Although not shown, CPU and clock control block 402 includes a central processing unit for communicating with other subsystems via a common bus, a clock generator for providing the necessary clock signals to the other circuits of memory controller 400, and other circuits as may be necessary to achieve proper operation of the device. Flash control block 404 includes a file and memory management sub-block, an ECC (error correction code) sub-block, and a physical flash interface sub-block. The flash memory device is accessed through the physical flash interface sub-block. The accessed data from the flash memory device is checked and corrected by the ECC sub-block. The file and memory management sub-block provides logical to physical address translation and executes a wear leveling algorithm.
In general, flash control block 404 accurately tracks and updates attributes (information) of the memory devices, such as erase cycles, valid/empty, etc. per page or block of each flash device in the system to which it is connected. This information is stored in a local memory and constructed as a mapping table. An exemplary mapping table 408 is shown in fig. 16. Mapping table 408 stores information, referred to as metadata, for each memory device, which may include SBC/MBC status bits indicating the data storage mode of each block and the number of program/erase cycles for each block. An SBC/MBC status bit of "0" may indicate that the subsegment stores data in the MBC storage mode, and a "1" may indicate that the subsegment stores data in the SBC storage mode. It should be understood that for MBC memory devices that store more than three bits per cell, at least two status bits are used to indicate each possible data storage mode. Note that the flash controller also records the virtual page address range for each memory device, and for each address binding scheme, the flash controller is programmed using an algorithm to use only the allowed virtual page addresses for the particular storage mode.
The flash control block 404 continuously updates and monitors the mapping table 408 during the lifetime of the memory system. Note that the mapping table may be populated with information at power-up of the memory system, and information such as persistence and SBC/MBC states may be stored in additional data fields in the memory device associated with each physical row and/or memory block. If the page or block reaches the maximum number of program/erase cycles (10K cycles in MLC flash), then flash control block 404 may decide to change the storage mode to the SBC storage mode, thereby extending the program/erase cycles to 100K.
When the memory controller 400 receives a host request to program data, the flash control block 404 looks up the mapping table 406 to determine where the data should be programmed. If the selected memory block is configured for the SBC memory mode, a pre-programmed address binding scheme for using only the lower page virtual address of each physical row is applied. Assuming that multiple pages are to be programmed, command packets are prepared by the memory controller 400 and sent to the selected MBC memory devices, each command packet having a row address field containing only the lower page virtual address.
FIG. 17 is a flowchart of a method of operating a memory controller to issue commands in the SBC, full MBC, or partial MBC storage mode for the purpose of controlling an MBC memory device to store data, according to the present embodiment.
Referring to fig. 16 and 17, the method begins by powering on the memory system (step 500). The memory system includes a memory controller configured similarly to the memory controller 400 and at least one N-bit MBC memory device. This memory system may have the configuration shown in fig. 9 or fig. 10. As part of the power-up sequence, the memory controller performs a scan of at least one N-bit MBC memory device for device metadata, such as the persistence and SBC/MBC state information of its subsections (step 502). This information is collected and stored in a mapping table in the memory controller 400. Once the power-up sequence is complete, the memory controller 400 may receive a command from the host device. A host programming request is received by the memory controller 400 (step 504). This request may include a certain priority of the data to be programmed. For example, low priority data may be non-critical media data, while high priority data may be data indicated as requiring high reliability storage. Other algorithms of the memory controller 400 may be executed to determine the appropriate wear leveling technique to use based on parameters such as the size of the data to be programmed, the availability of free space in the memory device, and priorities such as those described previously.
The memory controller accesses its mapping table to identify where the data should be stored based on the aforementioned algorithm executed by the memory controller 400 (step 506). The memory controller then determines whether SLC storage is required for the host program request (step 508). If SLC storage is required, the memory controller 400 issues a command at step 510 to store data in the selected sub-segments using the SBC address binding scheme, wherein only the lower page virtual address of each physical row is used. Otherwise, the method continues to step 512, where the memory controller determines whether full MLC programming is required. If full MLC programming is required, the memory controller issues a command with a full virtual page address range for each physical row (step 514). Otherwise, a command is issued using a partial MLC address binding scheme in which a subset of the full range of virtual page addresses per physical row is used to program the data (step 516).
The commands issued by the memory controller according to the method of FIG. 17 do not require special commands to be issued for configuring the operation of the selected MBC memory device in another storage mode. This ensures higher performance of the memory system because commands are issued at runtime, so no clock cycles are wasted for configuring the MBC memory device. Furthermore, no reset of the memory device is required for setting it to the required storage mode.
FIG. 18 illustrates the operation of an N-bit MBC memory device receiving commands from a memory controller operating using the method outlined in FIG. 17. Referring to FIG. 18, the method begins, where a program command issued by the memory controller 400 is received by the MBC memory device (step 600). Collectively, these commands are used to program a set of data requested by the host, which may span multiple pages. It should be noted that the memory device may receive interleaved commands for programming different sets of data to different subsections of the memory device. In other words, one command may be received to begin programming data to one sub-segment, and a subsequent received command may be received to begin programming data to another sub-segment. A third command may then be received to continue programming more data to the first subsection. Subsequently, the MBC memory device checks at least the LSBs of the virtual page addresses associated with each page of data (step 602). The last two LSBs are checked if, for example, the MBC memory device is configured for up to three bits of data storage per cell. If, for example, the MBC memory device is configured for up to two bits of data storage per cell, then the last LSB is checked. Regardless of the maximum number of bits per cell that the memory device is configured to store, there will be a minimum number of virtual page addresses LSBs required to identify each virtual page of a physical row. These are the LSBs that were checked in step 602. The internal controller (also referred to as a command decoder) of the MBC memory device then executes the appropriate programming sequence or algorithm in response to the LSB at step 604. More specifically, the internal controller executes a partial MLC programming algorithm that includes less than the maximum number of bits per cell for the MBC memory device. This internal controller is shown, for example, as controller 18 in the flash memory device block diagram of fig. 1.
For example, if the LSB of the virtual page address is "0," the internal controller of the MBC memory device may execute the SBC programming algorithm. If no additional program command is received with a virtual page address of "1," the page is programmed to a physical row in the SBC storage mode. The resulting possible threshold voltages of the cells of a physical row may occur, for example, as shown in fig. 12A or 13A. In another example, a pair of program commands is received, wherein a first program command includes a dummy page address LSB of "0" and a second program command includes a dummy page address LSB of "1". In this case, the first page data is programmed using the SBC programming algorithm. The second page of data having LSBs of "1" is then programmed for the same physical row according to a 2-bit MBC programming algorithm executed by an internal controller of the memory device. The resulting possible threshold voltages of the cells of the physical row appear as shown in fig. 12B or 13B.
Fig. 19 illustrates a detailed exemplary operation of the memory system according to the embodiment. Beginning at step 700, assume that all of its subsections (e.g., memory blocks as an example) of an MBC memory device are configured for full N-bit MBC storage, where N is the maximum number of bits that can be stored per cell. In this example, N is assumed to be 2. Thus, the memory controller's mapping table will have the SLC/MLC status bit of each sub-segment set to indicate a full MLC data storage mode. A host request is received by the memory controller at step 702 and the memory controller determines whether the request is a program request or an erase request at step 704. If the host request is not both, then the request is executed at step 706 and the system waits for another host request. Otherwise, the method continues to step 708, where the memory controller further determines whether the data should be programmed in the MBC mode. If the data should be programmed in the MBC storage mode, the number of program/erase cycles of the selected memory block is checked in step 710. At step 712, a determination is made whether the maximum number of program/erase cycles for the selected memory block is reached. If not, an MLC program operation is performed in step 714 by issuing the required program command to the memory device.
On the other hand, if the maximum number of program/erase cycles for the selected memory block has been reached, the memory controller executes a block life extension algorithm. This algorithm begins at step 716, where new data is programmed into the available MLC or SLC configured memory blocks. Any resident data in the initially selected memory block is later copied to an available MLC or SLC configured memory block during background operations, which may be the same memory block to which new data was most recently programmed. This background operation may be scheduled by the memory controller.
At step 718, the selected block in the memory array is converted for use as an SLC memory block by updating its corresponding SLC/MLC tag bits. The memory controller's mapping table is updated at step 720 to reflect this change in the storage pattern of the selected memory block. This updating may also include resetting the number of program/erase cycles of the converted SLC memory block to the appropriate SLC program/erase limit. This limit may be, for example, between 10K and 100K cycles.
Returning to the determination at step 708, if the program request is for SLC storage, then at step 722 the number of program/erase cycles of the selected SLC memory block is checked to determine if the maximum number of cycles has been reached. If the maximum number of cycles has not been reached for the selected SLC memory block at step 724, then the SLC programming operation is performed at step 706 by sending the desired program command to the memory device. As discussed previously, the SLC address binding scheme is used by the memory controller to issue program commands having a virtual page address that is limited to the address of the lower page of each physical row. Otherwise, the SLC memory block cannot reliably store SLC data and the method continues to step 726 in which an SLC programming operation is performed for another available SLC memory block and any resident data in the originally selected SLC memory block is copied to the same available SLC memory block or another available SLC memory block. The initially selected SLC memory block is marked as invalid in the memory device at step 728 and the mapping table in the memory controller is updated accordingly at step 720. Marking a memory block as invalid has the effect that the memory block is no longer used in the future.
An advantage of the presently shown embodiments is that any mode of storage operation of the memory device that is less than the full MBC storage mode can be performed without the need to set any registers, reboot the memory device, or any other interruption to its normal operation.
In all of the previously discussed embodiments, the selective MBC or SBC process performed by the flash controller is done transparently to the user. No additional instructions or modification of instructions from the user are required because all determinations of SBC/MBC storage mode operation are made by the flash controller. Thus, there is minimal overhead required to implement the presently described flash memory system with a host system.
In the previous description, for purposes of explanation, numerous details were set forth in order to provide a thorough understanding of the embodiments. However, it will be apparent to one skilled in the art that these specific details are not required in order to practice the embodiments. In other instances, well-known electrical structures and circuits are shown in block diagram form in order not to obscure aspects of the embodiments. For example, specific details are not provided as to whether the embodiments described herein are implemented as software routines, hardware circuits, firmware, or a combination thereof.
The above embodiments are intended to be examples only. Alterations, modifications and variations may be effected to the particular embodiments by those of skill in the art without departing from the scope, which is defined solely by the claims appended hereto.
Claims (29)
1. A method for programming a multi-bit per cell (MBC) flash memory device configured to store up to N pages of data per physical row, N being an integer greater than 1, the method comprising:
issuing a set of program commands for programming a plurality of pages of data to a subsection of the flash memory device having at least one physical row,
the set of programming commands is restricted to be associated with each of the at least one physical row
Addressing a selected logical page address subset of all the corresponding possible logical page addresses; and
programming less than N pages to each of the at least one physical row of the flash memory device in response to the subset of logical page addresses in the program command.
2. The method of claim 1, further comprising:
accessing a mapping table prior to issuing the set of programming commands, wherein the mapping table contains storage mode information for each subsection of the flash memory device.
3. The method of claim 2, wherein accessing the mapping table comprises:
a subsection is selected having a partial MBC storage mode in which less than N pages of data are stored per physical row.
4. The method of claim 3, further comprising:
selecting the subset of logical page addresses corresponding to the partial MBC storage mode.
5. The method of claim 4, wherein all possible logical page addresses corresponding to each of the at least one physical row comprise consecutive page addresses beginning with a lower page address and ending with an upper page address.
6. The method of claim 5, wherein the subset of logical page addresses includes the lower page address up to an intermediate page address, wherein the intermediate page address is between the upper page address and the lower page address of each of the at least one physical row.
7. The method of claim 5, wherein the subset of logical page addresses includes only lower page addresses of each of the at least one physical row.
8. The method of claim 5, wherein issuing a set of program commands comprises repeatedly providing program command packets, each program command packet containing one of the plurality of pages of data and one of the subset of logical page addresses.
9. The method of claim 8, wherein issuing a set of programming commands comprises:
m program command packets are provided for programming M pages of the plurality of pages of data to one physical row of the flash memory device, where M is an integer value less than N.
10. The method of claim 8, wherein issuing a set of programming commands comprises:
repeatedly providing a program command packet for programming one of the plurality of pages of data to one physical row of the flash memory device.
11. The method of claim 1, further comprising:
prior to issuing the set of program commands, receiving a host request to program the plurality of pages of data in a partial MBC storage mode.
12. The method of claim 1, further comprising:
prior to issuing the set of program commands, receiving a host request to program the plurality of pages of data in a full MBC storage mode.
13. The method of claim 12, comprising determining that a maximum number of MBC program/erase cycles for the subsection has been reached.
14. The method of claim 13, further comprising:
selecting another subsection configured to program the plurality of pages of data in the full MBC storage mode and setting the subsection to a partial MBC storage mode.
15. The method of claim 14, wherein the full MBC storage mode comprises a two-bit-per-cell storage mode and the partial MBC storage mode comprises a one-bit-per-cell storage mode.
16. A system, comprising:
a memory controller configured to issue a program command that is restricted to addressing a subset of logical page addresses selected from all possible logical page addresses corresponding to each physical row of a memory device, the memory device comprising:
a multi-bit per cell (MBC) memory device configured to:
storing a maximum of N pages per physical row, where N is an integer greater than 1, an
Programming less than N pages per physical row in response to the subset of logical page addresses in the program command received from the memory controller.
17. The system of claim 16, wherein the memory controller comprises:
a mapping table for storing metadata corresponding to subsections of the memory device.
18. The system of claim 17, wherein the mapping table is configured to include storage mode information for each of the subsections.
19. The system of claim 18, wherein the mapping table is configured to include address binding information associated with a storage mode of each of the subsections.
20. The system of claim 19, wherein the memory controller comprises:
control circuitry for accessing the mapping table and providing the programming command in response to the metadata in the mapping table.
21. The system of claim 20, wherein each of the programming commands comprises:
a page of data, address information for selecting subsections of the memory device and physical rows within the subsections, an
A logical page address of the page of data to be programmed into the physical row.
22. The system of claim 21, wherein:
the memory device is configured to store at most N-2 pages per physical row, and each of the two pages of each physical row is addressable by an upper page address and a lower page address.
23. The system of claim 22, wherein:
the upper page address has a first least significant bit, an
The lower page address has a second least significant bit different from the first least significant bit.
24. The system of claim 17, wherein the subdivisions of the memory device include memory blocks.
25. The system of claim 17, wherein the subdivisions of the memory device include sub-blocks of a memory block.
26. The system of claim 17, wherein the subdivisions of the memory device include physical rows of memory blocks.
27. A method for programming a multi-bit per cell (MBC) flash memory device configured to store up to N bits per cell, where N is an integer greater than 1, the method comprising:
receiving a host request to program a page of data;
determining that the data page is to be programmed in a partial MBC storage mode in which fewer than N virtually addressable data pages are stored in each physical row of the flash memory device;
accessing a mapping table containing metadata for the flash memory device to select subsections of the MBC flash memory device configured in the partial MBC storage mode; and
issuing at least one program command for programming the page of data to the subsection using a virtual page address limited to a subset of less than N possible virtual page addresses for programming a page to each physical row.
28. The method of claim 27, wherein:
n-2, and the possible virtual page addresses include a lower page address and an upper page address, an
Issuing at least one program command includes repeatedly issuing program commands, each program command including a page of data and a lower page address.
29. The method of claim 27, wherein:
n >2, and possible virtual page addresses include a lower page address, an upper page address, and at least one intermediate page address between the lower page address and the upper page address, an
Issuing at least one program command includes repeatedly issuing program commands, each program command including a page of data, and one of the lower page address and the at least one intermediate page address.
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161538540P | 2011-09-23 | 2011-09-23 | |
| US61/538540 | 2011-09-23 | ||
| US13/455,780 US9588883B2 (en) | 2011-09-23 | 2012-04-25 | Flash memory system |
| US13/455780 | 2012-04-25 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| HK1200589A1 true HK1200589A1 (en) | 2015-08-07 |
Family
ID=47912557
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| HK15100786.1A HK1200589A1 (en) | 2011-09-23 | 2012-09-19 | Flash memory system |
Country Status (9)
| Country | Link |
|---|---|
| US (5) | US9588883B2 (en) |
| EP (1) | EP2758964A4 (en) |
| JP (1) | JP2014530421A (en) |
| KR (1) | KR20140072118A (en) |
| CN (1) | CN103946923A (en) |
| CA (1) | CA2849862A1 (en) |
| HK (1) | HK1200589A1 (en) |
| TW (1) | TW201329987A (en) |
| WO (1) | WO2013040681A1 (en) |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8719664B1 (en) * | 2011-04-12 | 2014-05-06 | Sk Hynix Memory Solutions Inc. | Memory protection cache |
| US9588883B2 (en) | 2011-09-23 | 2017-03-07 | Conversant Intellectual Property Management Inc. | Flash memory system |
| KR102053953B1 (en) * | 2013-02-04 | 2019-12-11 | 삼성전자주식회사 | Memory system comprising nonvolatile memory device and program method thereof |
| US10042750B2 (en) | 2013-03-15 | 2018-08-07 | Micron Technology, Inc. | Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor |
| CN104217762B (en) * | 2013-05-31 | 2017-11-24 | 慧荣科技股份有限公司 | Data storage device and error correction method and data reading method thereof |
| TWI514141B (en) * | 2013-08-08 | 2015-12-21 | Phison Electronics Corp | Memory address management method, memory controller and memory storage device |
| KR102274280B1 (en) * | 2015-06-22 | 2021-07-07 | 삼성전자주식회사 | Method of operating a non-volatile memory device |
| KR20170011645A (en) * | 2015-07-23 | 2017-02-02 | 에스케이하이닉스 주식회사 | Memory system including semiconductor memory device and operating method thereof |
| US10096355B2 (en) * | 2015-09-01 | 2018-10-09 | Sandisk Technologies Llc | Dynamic management of programming states to improve endurance |
| JP6457364B2 (en) | 2015-09-11 | 2019-01-23 | 東芝メモリ株式会社 | Memory system |
| KR102606468B1 (en) * | 2015-11-26 | 2023-11-29 | 삼성전자주식회사 | Nonvolatile memory device, storage device including nonvolatile memory device and programming method for programming data into nonvolatile memory device |
| KR102456490B1 (en) * | 2016-01-12 | 2022-10-20 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
| US9811269B1 (en) * | 2016-12-30 | 2017-11-07 | Intel Corporation | Achieving consistent read times in multi-level non-volatile memory |
| CN106980799B (en) * | 2017-03-10 | 2019-05-14 | 华中科技大学 | A Wear-Level Aware Non-Volatile Memory Encryption System |
| US10289561B2 (en) * | 2017-08-08 | 2019-05-14 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices and methods of controlling the same |
| KR102431238B1 (en) * | 2017-10-11 | 2022-08-11 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
| TWI687809B (en) * | 2018-02-13 | 2020-03-11 | 點序科技股份有限公司 | Flash memory storage device and programming management method thereof |
| KR20190099570A (en) * | 2018-02-19 | 2019-08-28 | 에스케이하이닉스 주식회사 | Data storage device and operating method thereof |
| KR102565913B1 (en) * | 2018-06-12 | 2023-08-11 | 에스케이하이닉스 주식회사 | Memory system having storage device and memory controller and operating method thereof |
| KR102811446B1 (en) * | 2019-01-15 | 2025-05-22 | 에스케이하이닉스 주식회사 | Storage device and operating method thereof |
| US11194473B1 (en) * | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
| US10817187B2 (en) * | 2019-01-24 | 2020-10-27 | Western Digital Technologies, Inc. | Balancing the block wearing leveling for optimum SSD endurance |
| US11016781B2 (en) * | 2019-04-26 | 2021-05-25 | Samsung Electronics Co., Ltd. | Methods and memory modules for enabling vendor specific functionalities |
| WO2020220246A1 (en) | 2019-04-30 | 2020-11-05 | Yangtze Memory Technologies Co., Ltd. | Electronic apparatus and method of managing read levels of flash memory |
| US11288007B2 (en) * | 2019-05-16 | 2022-03-29 | Western Digital Technologies, Inc. | Virtual physical erase of a memory of a data storage device |
| US11157379B2 (en) * | 2019-10-30 | 2021-10-26 | International Business Machines Corporation | Managing blocks of memory based on block health using hybrid controllers |
| US11094372B1 (en) | 2020-05-07 | 2021-08-17 | Powerchip Semiconductor Manufacturing Corporation | Partial writing method of dram memoryl device to reduce power consumption associated with large voltage swing of internal input/output lines |
| KR20210142981A (en) * | 2020-05-19 | 2021-11-26 | 에스케이하이닉스 주식회사 | Memory controller and operating method thereof |
| DE102020123220A1 (en) * | 2020-09-04 | 2022-03-10 | Harman Becker Automotive Systems Gmbh | Storage system, method of operating the same |
| US11934675B2 (en) * | 2020-09-12 | 2024-03-19 | Western Digital Technologies, Inc. | Mixed mode block cycling for intermediate data |
| US11861212B2 (en) | 2022-02-24 | 2024-01-02 | Silicon Motion, Inc. | Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence |
| US11977776B2 (en) | 2022-02-24 | 2024-05-07 | Silicon Motion, Inc. | Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes |
| US11977752B2 (en) | 2022-02-24 | 2024-05-07 | Silicon Motion, Inc. | Flash memory controller and method capable of sending data toggle set-feature signal to enable, disable, or configure data toggle operation of flash memory device |
| US12164805B2 (en) | 2022-02-24 | 2024-12-10 | Silicon Motion, Inc. | Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence |
| US11935595B2 (en) | 2022-02-24 | 2024-03-19 | Silicon Motion, Inc. | Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence |
| US11972146B2 (en) | 2022-02-24 | 2024-04-30 | Silicon Motion, Inc. | Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes |
| CN119905131B (en) * | 2025-02-10 | 2025-08-29 | 珠海妙存科技有限公司 | Asynchronous reread error correction method for storage media |
Family Cites Families (106)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR930000869B1 (en) | 1989-11-30 | 1993-02-08 | 삼성전자 주식회사 | Page-Erasable Flash YPIROM Device |
| US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
| KR950000273B1 (en) | 1992-02-21 | 1995-01-12 | 삼성전자 주식회사 | Nonvolatile Semiconductor Memory Device and Optimal Writing Method |
| US5396459A (en) | 1992-02-24 | 1995-03-07 | Sony Corporation | Single transistor flash electrically programmable memory cell in which a negative voltage is applied to the nonselected word line |
| JP2968906B2 (en) | 1992-04-07 | 1999-11-02 | 三菱電機株式会社 | Nonvolatile semiconductor memory device |
| KR960000616B1 (en) | 1993-01-13 | 1996-01-10 | 삼성전자주식회사 | Nonvolatile Semiconductor Memory Device |
| JP3181454B2 (en) | 1993-12-13 | 2001-07-03 | 株式会社東芝 | Nonvolatile semiconductor memory device |
| KR0142367B1 (en) | 1995-02-04 | 1998-07-15 | 김광호 | Erase verifying circuit for nonvolatile semiconductor memory having dolumn redundancy |
| US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
| JP3980094B2 (en) | 1995-09-13 | 2007-09-19 | 株式会社東芝 | Nonvolatile semiconductor memory device |
| KR0169418B1 (en) | 1995-10-30 | 1999-02-01 | 김광호 | Nonvolatile Semiconductor Memory Having Self-Storage Circuit of Data During Page Erasing |
| KR0172408B1 (en) | 1995-12-11 | 1999-03-30 | 김광호 | Non-volatile semiconductor memory and method driving the same |
| JP3740212B2 (en) | 1996-05-01 | 2006-02-01 | 株式会社ルネサステクノロジ | Nonvolatile semiconductor memory device |
| KR100205240B1 (en) | 1996-09-13 | 1999-07-01 | 윤종용 | Nonvolatile Semiconductor Memory Device with Single and Multiple Bit Cells |
| KR100252476B1 (en) | 1997-05-19 | 2000-04-15 | 윤종용 | Non-volatile semiconductor memory device having electrically erasable and programmable memory cells of plate cell structure and program method thereof |
| JPH1145986A (en) | 1997-07-28 | 1999-02-16 | Sony Corp | Nonvolatile semiconductor memory device |
| US6442644B1 (en) | 1997-08-11 | 2002-08-27 | Advanced Memory International, Inc. | Memory system having synchronous-link DRAM (SLDRAM) devices and controller |
| JP3805867B2 (en) | 1997-09-18 | 2006-08-09 | 株式会社東芝 | Nonvolatile semiconductor memory device |
| US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
| US5953255A (en) | 1997-12-24 | 1999-09-14 | Aplus Flash Technology, Inc. | Low voltage, low current hot-hole injection erase and hot-electron programmable flash memory with enhanced endurance |
| US5912844A (en) | 1998-01-28 | 1999-06-15 | Macronix International Co., Ltd. | Method for flash EEPROM data writing |
| US6118705A (en) | 1998-03-13 | 2000-09-12 | Atmel Corporation | Page mode erase in a flash memory array |
| US6359810B1 (en) | 1998-03-13 | 2002-03-19 | Atmel Corporation | Page mode erase in a flash memory array |
| US6128224A (en) | 1998-07-29 | 2000-10-03 | Motorola, Inc. | Method and apparatus for writing an erasable non-volatile memory |
| US5995417A (en) | 1998-10-20 | 1999-11-30 | Advanced Micro Devices, Inc. | Scheme for page erase and erase verify in a non-volatile memory array |
| CN100359601C (en) | 1999-02-01 | 2008-01-02 | 株式会社日立制作所 | Semiconductor integrated circuits and nonvolatile memory elements |
| KR100347866B1 (en) | 1999-03-08 | 2002-08-09 | 삼성전자 주식회사 | Nand flash memory device |
| KR100295598B1 (en) | 1999-05-03 | 2001-07-12 | 윤종용 | Semiconductor memory device and decoder of this device |
| US6552580B2 (en) | 1999-05-24 | 2003-04-22 | Level One Communications Inc. | Bias technique for operating point control in multistage circuits |
| US6111787A (en) | 1999-10-19 | 2000-08-29 | Advanced Micro Devices, Inc. | Address transistion detect timing architecture for a simultaneous operation flash memory device |
| US7082056B2 (en) | 2004-03-12 | 2006-07-25 | Super Talent Electronics, Inc. | Flash memory device and architecture with multi level cells |
| US6351429B1 (en) * | 2000-06-29 | 2002-02-26 | International Business Machines Corp. | Binary to binary-encoded-ternary (BET) decoder using reordered logic |
| TW540053B (en) | 2000-07-13 | 2003-07-01 | Samsung Electronics Co Ltd | Row decoder of a NOR-type flash memory device |
| FR2816751A1 (en) | 2000-11-15 | 2002-05-17 | St Microelectronics Sa | Flash memory erasable by page and method for data storaage, comprising array with counter and sectors, and circuits for reading page address and incrementing counter |
| US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
| JP3875570B2 (en) | 2001-02-20 | 2007-01-31 | 株式会社東芝 | Data writing method for semiconductor memory device and semiconductor memory device |
| US6990535B1 (en) * | 2001-02-26 | 2006-01-24 | 3Com Corporation | Device and method for multi-ported, single bus-mastering data buffer management |
| US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
| US6522580B2 (en) | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
| US6671204B2 (en) | 2001-07-23 | 2003-12-30 | Samsung Electronics Co., Ltd. | Nonvolatile memory device with page buffer having dual registers and methods of using the same |
| US7042770B2 (en) | 2001-07-23 | 2006-05-09 | Samsung Electronics Co., Ltd. | Memory devices with page buffer having dual registers and method of using the same |
| US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
| US6714457B1 (en) | 2001-09-19 | 2004-03-30 | Aplus Flash Technology, Inc. | Parallel channel programming scheme for MLC flash memory |
| KR100454119B1 (en) | 2001-10-24 | 2004-10-26 | 삼성전자주식회사 | Non-volatile semiconductor memory device with cache function and program, read and page copy-back operations thereof |
| US6977847B2 (en) * | 2001-11-23 | 2005-12-20 | M-Systems Flash Disk Pioneers Ltd. | Detecting partially erased units in flash devices |
| US6894931B2 (en) | 2002-06-20 | 2005-05-17 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device |
| JP4270832B2 (en) | 2002-09-26 | 2009-06-03 | 株式会社東芝 | Nonvolatile semiconductor memory |
| ITMI20022240A1 (en) | 2002-10-22 | 2004-04-23 | Atmel Corp | FLASH MEMORY ARCHITECTURE WITH MODE CANCELLATION |
| US6847550B2 (en) | 2002-10-25 | 2005-01-25 | Nexflash Technologies, Inc. | Nonvolatile semiconductor memory having three-level memory cells and program and read mapping circuits therefor |
| JP3866650B2 (en) | 2002-11-29 | 2007-01-10 | 株式会社東芝 | Nonvolatile semiconductor memory device and erase verify method thereof |
| US7308524B2 (en) | 2003-01-13 | 2007-12-11 | Silicon Pipe, Inc | Memory chain |
| KR100514415B1 (en) | 2003-01-22 | 2005-09-09 | 주식회사 하이닉스반도체 | Page buffer for NAND flash memory |
| JP2004348789A (en) | 2003-05-20 | 2004-12-09 | Sharp Corp | Semiconductor storage device and portable electronic device |
| US6922770B2 (en) * | 2003-05-27 | 2005-07-26 | Sony Corporation | Memory controller providing dynamic arbitration of memory commands |
| US6947331B1 (en) | 2003-06-16 | 2005-09-20 | National Semiconductor Corporation | Method of erasing an EEPROM cell utilizing a frequency/time domain based erased signal |
| JP4315767B2 (en) | 2003-09-04 | 2009-08-19 | 株式会社ルネサステクノロジ | Nonvolatile semiconductor memory device |
| JP4287235B2 (en) | 2003-10-09 | 2009-07-01 | 株式会社東芝 | Nonvolatile semiconductor memory device |
| US7730368B2 (en) * | 2003-10-31 | 2010-06-01 | Sandisk Il Ltd. | Method, system and computer-readable code for testing of flash memory |
| US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
| KR100562134B1 (en) | 2004-01-09 | 2006-03-21 | 주식회사 하이닉스반도체 | Page Buffers in Flash Memory Devices |
| US7350044B2 (en) * | 2004-01-30 | 2008-03-25 | Micron Technology, Inc. | Data move method and apparatus |
| US8019928B2 (en) * | 2004-02-15 | 2011-09-13 | Sandisk Il Ltd. | Method of managing a multi-bit-cell flash memory |
| US7716413B2 (en) * | 2004-02-15 | 2010-05-11 | Sandisk Il Ltd. | Method of making a multi-bit-cell flash memory |
| JP4405405B2 (en) | 2004-04-15 | 2010-01-27 | 株式会社東芝 | Nonvolatile semiconductor memory device |
| KR100575336B1 (en) | 2004-04-20 | 2006-05-02 | 에스티마이크로일렉트로닉스 엔.브이. | Page buffer having a dual register, a semiconductor memory device having the same and a program method thereof |
| KR100567912B1 (en) | 2004-05-28 | 2006-04-05 | 주식회사 하이닉스반도체 | Page buffer of flash memory device and data program method using same |
| US7251158B2 (en) | 2004-06-10 | 2007-07-31 | Spansion Llc | Erase algorithm for multi-level bit flash memory |
| US7148742B2 (en) | 2004-07-07 | 2006-12-12 | Micron Technology, Inc. | Power supply voltage detection circuitry and methods for use of the same |
| KR100609568B1 (en) | 2004-07-15 | 2006-08-08 | 에스티마이크로일렉트로닉스 엔.브이. | Page buffer of nonvolatile memory device, program method and read method using same |
| US7272050B2 (en) | 2004-08-10 | 2007-09-18 | Samsung Electronics Co., Ltd. | Non-volatile memory device and erase method of the same |
| JP2006164408A (en) | 2004-12-08 | 2006-06-22 | Toshiba Corp | Nonvolatile semiconductor memory device and data erasing method thereof. |
| JP4768256B2 (en) | 2004-12-16 | 2011-09-07 | 株式会社東芝 | Semiconductor memory device |
| US7970984B2 (en) * | 2004-12-23 | 2011-06-28 | Sandisk Il Ltd. | Method for using a multi-bit cell flash device in a system not designed for the device |
| US7308525B2 (en) * | 2005-01-10 | 2007-12-11 | Sandisk Il Ltd. | Method of managing a multi-bit cell flash memory with improved reliablility and performance |
| KR100672122B1 (en) | 2005-03-10 | 2007-01-19 | 주식회사 하이닉스반도체 | A page buffer circuit of a flash memory device with reduced power consumption |
| JP4928752B2 (en) | 2005-07-14 | 2012-05-09 | 株式会社東芝 | Semiconductor memory device |
| KR100732628B1 (en) * | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | Flash memory device for storing multi-bit data and single-bit data |
| US20070076502A1 (en) | 2005-09-30 | 2007-04-05 | Pyeon Hong B | Daisy chain cascading devices |
| US7652922B2 (en) | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
| US7583545B2 (en) * | 2006-05-21 | 2009-09-01 | Sandisk Il Ltd | Method of storing data in a multi-bit-cell flash memory |
| US7561472B2 (en) | 2006-09-11 | 2009-07-14 | Micron Technology, Inc. | NAND architecture memory with voltage sensing |
| US7593259B2 (en) * | 2006-09-13 | 2009-09-22 | Mosaid Technologies Incorporated | Flash multi-level threshold distribution scheme |
| KR100809320B1 (en) * | 2006-09-27 | 2008-03-05 | 삼성전자주식회사 | Mapping information management apparatus and method for nonvolatile memory supporting heterogeneous cell types |
| WO2008042403A2 (en) * | 2006-10-03 | 2008-04-10 | Inapac Technologies, Inc. | Memory accessing circuit system |
| KR100773400B1 (en) * | 2006-10-26 | 2007-11-05 | 삼성전자주식회사 | Multi-bit flash memory device |
| KR20070057716A (en) | 2007-04-02 | 2007-06-07 | 김경섭 | Program method of flash memory device having multi-level cells |
| US7646636B2 (en) * | 2007-02-16 | 2010-01-12 | Mosaid Technologies Incorporated | Non-volatile memory with dynamic multi-mode operation |
| US7747903B2 (en) * | 2007-07-09 | 2010-06-29 | Micron Technology, Inc. | Error correction for memory |
| US8001316B2 (en) * | 2007-12-27 | 2011-08-16 | Sandisk Il Ltd. | Controller for one type of NAND flash memory for emulating another type of NAND flash memory |
| US8068365B2 (en) * | 2008-02-04 | 2011-11-29 | Mosaid Technologies Incorporated | Non-volatile memory device having configurable page size |
| US7843725B2 (en) | 2008-06-11 | 2010-11-30 | Micron Technology, Inc. | M+L bit read column architecture for M bit memory cells |
| US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
| KR20100010355A (en) * | 2008-07-22 | 2010-02-01 | 삼성전자주식회사 | Multi-bit flash memory device and program and erase methods for the same |
| KR20100013847A (en) * | 2008-08-01 | 2010-02-10 | 삼성전자주식회사 | Memory device and memory programming method |
| US8407400B2 (en) * | 2008-11-12 | 2013-03-26 | Micron Technology, Inc. | Dynamic SLC/MLC blocks allocations for non-volatile memory |
| EP2317442A1 (en) * | 2009-10-29 | 2011-05-04 | Thomson Licensing | Solid state memory with reduced number of partially filled pages |
| US8656256B2 (en) * | 2010-07-07 | 2014-02-18 | Stec, Inc. | Apparatus and method for multi-mode operation of a flash memory device |
| JP2013534685A (en) * | 2010-07-21 | 2013-09-05 | モサイド・テクノロジーズ・インコーポレーテッド | Multi-page programming method for flash memory |
| US20120155167A1 (en) * | 2010-12-21 | 2012-06-21 | Kabushiki Kaisha Toshiba | Non-volatile storage device, information processing system and write control method of non-volatile storage device |
| US9588883B2 (en) | 2011-09-23 | 2017-03-07 | Conversant Intellectual Property Management Inc. | Flash memory system |
| US9417958B2 (en) * | 2012-06-06 | 2016-08-16 | Silicon Motion Inc. | Flash memory control method, controller and electronic apparatus |
| US20160019161A1 (en) * | 2013-03-12 | 2016-01-21 | Hewlett-Packard Development Company, L.P. | Programmable address mapping and memory access operations |
| US9607696B2 (en) * | 2013-04-25 | 2017-03-28 | Technion Research And Development Foundation Ltd. | Minimal maximum-level programming |
| US9099185B2 (en) * | 2013-12-20 | 2015-08-04 | Seagate Technology Llc | Using different programming modes to store data to a memory cell |
| US9696935B2 (en) * | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
| US10410724B2 (en) * | 2016-04-08 | 2019-09-10 | SK Hynix Inc. | Erase page indicator |
-
2012
- 2012-04-25 US US13/455,780 patent/US9588883B2/en active Active
- 2012-09-19 CA CA2849862A patent/CA2849862A1/en not_active Abandoned
- 2012-09-19 EP EP12834560.0A patent/EP2758964A4/en not_active Withdrawn
- 2012-09-19 CN CN201280057055.5A patent/CN103946923A/en active Pending
- 2012-09-19 WO PCT/CA2012/000860 patent/WO2013040681A1/en not_active Ceased
- 2012-09-19 HK HK15100786.1A patent/HK1200589A1/en unknown
- 2012-09-19 KR KR1020147010728A patent/KR20140072118A/en not_active Withdrawn
- 2012-09-19 JP JP2014531051A patent/JP2014530421A/en active Pending
- 2012-09-20 TW TW101134476A patent/TW201329987A/en unknown
-
2017
- 2017-01-30 US US15/419,246 patent/US9996274B2/en active Active
-
2018
- 2018-05-10 US US15/976,255 patent/US10303370B2/en active Active
-
2019
- 2019-04-18 US US16/387,875 patent/US10705736B2/en active Active
-
2020
- 2020-06-03 US US16/891,402 patent/US11150808B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US9588883B2 (en) | 2017-03-07 |
| JP2014530421A (en) | 2014-11-17 |
| KR20140072118A (en) | 2014-06-12 |
| EP2758964A1 (en) | 2014-07-30 |
| US20130080730A1 (en) | 2013-03-28 |
| US20180329627A1 (en) | 2018-11-15 |
| US20190303004A1 (en) | 2019-10-03 |
| US20200363953A1 (en) | 2020-11-19 |
| CN103946923A (en) | 2014-07-23 |
| US10303370B2 (en) | 2019-05-28 |
| US11150808B2 (en) | 2021-10-19 |
| TW201329987A (en) | 2013-07-16 |
| US10705736B2 (en) | 2020-07-07 |
| EP2758964A4 (en) | 2015-07-15 |
| US20170206009A1 (en) | 2017-07-20 |
| CA2849862A1 (en) | 2013-03-28 |
| US9996274B2 (en) | 2018-06-12 |
| WO2013040681A1 (en) | 2013-03-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11150808B2 (en) | Flash memory system | |
| US7660166B2 (en) | Method of improving programming precision in flash memory | |
| JP5421127B2 (en) | Nonvolatile memory with dynamic multimode operation | |
| KR100902008B1 (en) | Memory system including flash memory to store multi-bit data in memory cells | |
| US9281068B2 (en) | Nonvolatile memory and related reprogramming method | |
| US8611150B2 (en) | Flash memory device including flag cells and method of programming the same | |
| TWI859181B (en) | Memory controller, memory system and operating method thereof | |
| CN112420109B (en) | Non-volatile memory devices and storage systems | |
| US20210334000A1 (en) | Memory system, memory controller and memory device for configuring super blocks | |
| US20210248032A1 (en) | Memory system, memory controller, and method for operating memory system | |
| US11709610B2 (en) | Memory system, memory controller and operating method | |
| US12436685B2 (en) | Memory device for performing program operation according to incremental step pulse programming method, storage device including the same, and operating method of the memory device | |
| EP3783614B1 (en) | Nonvolatile memory device including a fast read page and a storage device including the same | |
| US20250014658A1 (en) | Storage device and operating method thereof | |
| KR20090110648A (en) | How to write data to flash memory, how to read data recorded in flash memory, and flash memory system | |
| CN118447900A (en) | Memory device, memory device operation method, and memory system |