Erasing multiple blocks in a memory device

文档序号:1600061 发布日期:2020-01-07 浏览:29次 中文

阅读说明:本技术 存储器装置中多个块的擦除 (Erasing multiple blocks in a memory device ) 是由 F·罗里 G·卡列洛 于 2019-06-28 设计创作,主要内容包括:本申请案涉及存储器装置中的多个块的擦除。各种应用可包含具有一或多个存储器装置的存储器系统,所述存储器装置能够响应于来自主机的命令而对多个存储器块执行存储器操作。举例来说,可通过若干种方法中的一种擦除多个存储器块来实现擦除性能的改进。这些方法可包含响应于单个命令而进行并行擦除,随后接着进行串行验证。其它方法可包含响应于单个命令而对所述多个块进行依序擦除及验证操作。本发明还揭示额外设备、系统及方法。(The present application relates to the erasure of multiple blocks in a memory device. Various applications may include memory systems having one or more memory devices capable of performing memory operations on a plurality of memory blocks in response to commands from a host. For example, improvements in erase performance may be achieved by erasing multiple memory blocks in one of several ways. These methods may include parallel erase followed by serial verification in response to a single command. Other methods may include performing sequential erase and verify operations on the plurality of blocks in response to a single command. Additional apparatus, systems, and methods are also disclosed.)

1. A system, comprising:

a controller;

a memory device; and

firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of:

generating an initial set of parameters for erasing a plurality of memory blocks of the memory device; and

the erase and verify operations are performed on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to the controller receiving a command to perform the erase and verify operations on the plurality of blocks.

2. The system of claim 1, wherein the operation of generating the initial set of parameters comprises: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when the plurality of blocks are erased.

3. The system of claim 2, wherein the operation of performing the erase and verify operation includes: generating an erase pulse followed by a verify pulse for each of the successive blocks, then proceeding to a next one of the successive blocks; and terminating the erase and verify operations after erasing the second block.

4. The system of claim 1, wherein the operation of generating the initial set of parameters comprises:

identifying the plurality of blocks by entries in a block list, the list having a number of blocks;

identifying a first block of the number of blocks for erasing; and

a count limit equal to the number of blocks to be erased is generated.

5. The system of claim 4, wherein the operation of performing the erase and verify operation includes:

starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block of the list;

after each block is erased and verified, the count of the block counter is incremented by 1; and

terminating the erase and verify operations on the plurality of blocks when the count of the block counter is greater than the count limit.

6. The system of claim 1, wherein the operation of generating the initial set of parameters comprises: a chip erase operation is identified in which a starting block in the sequential erase and verify is a block zero of the memory device and an ending block in the sequential erase is a last block of the memory device.

7. The system of claim 1, wherein the system is a solid state drive.

8. The system of claim 1, wherein the system comprises:

a host operable to generate the command operatively received by the controller; and

a communication interface coupled to the host and the controller, the communication interface arranged to transmit the command from the host to the controller.

9. A method, comprising:

generating an initial set of parameters for erasing a plurality of memory blocks of a memory device; and

the erase and verify operations are performed on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to receiving a command to perform the erase and verify operations on the plurality of blocks.

10. The method of claim 9, wherein generating the initial set of parameters comprises: identifying a first block of the consecutive blocks as a starting block for erasing and verifying the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when erasing and verifying the plurality of blocks.

11. The method of claim 10, wherein performing the erase and verify operation includes: generating an erase pulse followed by a verify pulse for each of the successive blocks, then proceeding to a next one of the successive blocks; and terminating the erase and verify operations after erasing the second block.

12. The method of claim 9, wherein generating the initial set of parameters comprises:

identifying the plurality of blocks by entries in a block list, the list having a number of blocks;

identifying a first block of the number of blocks for erase and verification; and

a count limit equal to the number of blocks to be erased and verified is generated.

13. The method of claim 12, wherein performing the erase and verify operation includes:

starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block in the list;

incrementing the count of the block counter by 1 after each block is erased and verified; and

terminating the erase and verify operation when the count of the block counter is greater than the count limit.

14. The method of claim 10, wherein generating the initial set of parameters includes identifying a chip erase operation, wherein a starting block in the sequential erase and verify is a block zero and an ending block is a last block of the memory device.

15. A system, comprising:

a controller;

a memory device; and

firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of:

generating an initial set of parameters for erasing a plurality of memory blocks of the memory device;

simultaneously providing an erase pulse to each of the plurality of blocks; and

after issuing the erase pulse, serially verifying erasure of each of the plurality of blocks.

16. The system of claim 15, wherein the operations comprise operations of: while erasing the plurality of blocks, setting one of the plurality of blocks as unusable to receive another erase pulse in response to determining that the block passes verification.

17. The system of claim 15, wherein the operations comprise operations of: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse.

18. The system of claim 17, wherein the operations include an iterator:

maintaining blocks that fail verification after erase as usable blocks to receive another erase pulse;

generating an additional erase pulse for the usable block and serially verifying the usable block after generating the additional erase pulse; and

each available block that passes verification after the additional erase is marked as a bad block to be unavailable to receive another additional erase pulse.

19. The system of claim 18, wherein the iterative procedure is ended immediately after determining that each block of the plurality of blocks is marked as a bad block or after determining that a maximum loop count of the iterative procedure is reached.

20. The system of claim 15, wherein the generating the initial set of parameters comprises: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks.

21. The system of claim 15, wherein said generating said initial set of parameters comprises identifying said plurality of blocks for erasure by a list of blocks.

22. The system of claim 15, wherein the generating the initial set of parameters comprises: a chip erase operation is identified, wherein a starting block in the erase is a block zero and an ending block is a last block of the memory device.

23. A method, comprising:

generating an initial set of parameters for erasing a plurality of memory blocks of a memory device;

simultaneously providing an erase pulse to each of the plurality of blocks;

after issuing the erase pulse, serially verifying erasure of each of the plurality of blocks.

24. The method of claim 23, wherein the method includes: while the erasing the plurality of blocks, setting one of the plurality of blocks as unusable to receive another erase pulse in response to determining that the block passes verification.

25. The method of claim 23, wherein the method includes: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse after passing the verification.

26. The method of claim 25, wherein the method comprises performing an iterative procedure comprising:

maintaining blocks that fail verification after erase as usable blocks to receive another erase pulse;

generating an additional erase pulse for the usable block and serially verifying the usable block after generating the additional erase pulse; and

each usable block that passes verification after the additional erase pulse is marked as a bad block to be unavailable to receive another additional erase pulse.

27. The method of claim 26, wherein the iterative procedure is ended immediately after determining that each block of the plurality of blocks is marked as a bad block or determining that a maximum loop count of the iterative procedure is reached.

28. The method of claim 23, wherein generating the initial set of parameters comprises: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks.

29. The method of claim 23, wherein generating the initial set of parameters includes identifying the plurality of blocks in a block list for erasure.

30. The method of claim 23, wherein generating the initial set of parameters comprises: a chip erase operation is identified in which the starting block in the sequential erase is block zero and the ending block is the last block of the memory device.

Technical Field

The present application relates generally to memory devices.

Background

Memory devices are typically provided in computers or other electronic devices as internal semiconductor integrated circuits. There are many different types of memory, including volatile memory and non-volatile memory. Volatile memory requires power to maintain its data, and examples of volatile memory include random accessMemory (RAM), Dynamic Random Access Memory (DRAM), and Synchronous Dynamic Random Access Memory (SDRAM), among others. Non-volatile memory can retain stored data when not powered, and examples of non-volatile memory include flash memory, Read Only Memory (ROM), Electrically Erasable Programmable ROM (EEPROM), Static RAM (SRAM), Erasable Programmable ROM (EPROM), resistance variable memory such as Phase Change Random Access Memory (PCRAM), Resistive Random Access Memory (RRAM), Magnetoresistive Random Access Memory (MRAM), and three-dimensional (3D) XPointTMMemory, and the like.

Flash memory is used as non-volatile memory for a wide variety of electronic applications. Flash memory devices typically include one or more groups of single transistor, floating gate, or charge trapping memory cells that allow for high memory density, high reliability, and low power consumption. Two common types of flash memory array architectures include the NAND (NAND) architecture and the and or (NOR) architecture, which are named in logical form, arranging the basic memory cell configuration of each. The memory cells of a memory array are typically arranged in a matrix. In an example, the gate of each floating gate memory cell in a row in the array is coupled to an access line (e.g., a word line). In the NOR architecture, the drain of each memory cell in a column in the array is coupled to a data line (e.g., a bit line). In a NAND architecture, memory cells in strings of an array are coupled together in series, source to drain, between a source line and a bit line.

NOR architecture and NAND architecture semiconductor memory arrays are accessed by a decoder that activates a particular memory cell by selecting the word line coupled to the gate of the memory cell. In a NOR architecture semiconductor memory array, once activated, selected memory cells place their data values on bit lines, causing different currents to flow depending on the state in which a particular cell is programmed. In a NAND architecture semiconductor memory array, a high bias voltage is applied to a drain side Select Gate (SGD) line. The word lines coupled to the gates of each group of unselected memory cells are driven at a specified pass voltage (e.g., Vpass) to use each group of unselected memory cells as pass transistors (e.g., to pass current in a manner that is unrestricted by the data values stored by the unselected memory cells). Current then flows from the source line through each series-coupled group to the bit lines, limited only by the selected memory cells of each group, placing the current-encoded data values of the selected memory cells on the bit lines.

Each flash memory cell in a NOR architecture or NAND architecture semiconductor memory array can be programmed individually or collectively to one or a number of program states. For example, a Single Level Cell (SLC) may represent one of two programmed states (e.g., 1 or 0), representing one bit of data. However, flash memory cells can also represent one of more than two program states, allowing higher density memory to be fabricated without increasing the number of memory cells, as each cell can represent more than one binary digit (e.g., more than one bit). These cells may be referred to as multi-state memory cells, multi-digit cells, or multi-level cells (MLCs). In some examples, MLC may refer to a memory cell that may store two data bits per cell (e.g., one of four programmed states), a three-level cell (TLC) may refer to a memory cell that may store three data bits per cell (e.g., one of eight programmed states), and a four-level cell (QLC) may store four data bits per cell. MLC is used herein in its broader context to refer to any memory cell that can store more than one bit of data per cell (i.e., can represent more than two programmed states).

Conventional memory arrays are two-dimensional (2D) structures arranged on a surface of a semiconductor substrate and may be referred to as planar memory arrays. To increase the memory capacity of a given area and to reduce cost, the size of individual memory cells has been reduced. However, there are technical limitations to reducing the size of individual memory cells, and thus, there are technical limitations to the memory density of 2D memory arrays. In response, three-dimensional (3D) memory structures, such as 3D NAND architecture semiconductor memory devices, are being developed to further increase memory density and reduce memory cost.

These 3D NAND devices typically include strings of memory cells coupled in series (e.g., drain to source) between one or more source side Select Gates (SGS) proximate the source and one or more drain side Select Gates (SGD) proximate the bit line. In an example, the SGS or SGD may include one or more Field Effect Transistors (FETs), or Metal Oxide Semiconductor (MOS) structure devices, or the like. In some examples, the strings will extend vertically through multiple vertical spacers containing respective word lines. A semiconductor structure (e.g., a polysilicon structure) may extend adjacent a string of memory cells to form a channel for the memory cells in the string. In the example of a vertical string, the polysilicon structures may be in the form of vertically extending pillars. In some examples, the string may be "folded" and thus arranged relative to the U-shaped post. In other examples, multiple vertical structures may be stacked on top of each other to form a stacked array of memory cell strings.

Memory arrays or devices can be combined together to form a storage volume of a memory system, such as a Solid State Drive (SSD), Universal Flash (UFS)TM) Device, multi-media card (MMC) solid state memory device, embedded MMC device (eMMC)TM) And the like. SSDs can be used as the main storage device for computers, etc., which have benefits over traditional hard disk drives with moving parts, e.g., in terms of performance, size, weight, durability, operating temperature range, and power consumption. For example, SSDs may have shortened search times, latencies, or other delays associated with disk drives (e.g., electromechanical, etc.). SSDs use non-volatile memory cells (e.g., flash memory cells) to eliminate the internal battery supply need, thus allowing the drive to be more versatile and compact.

An SSD may include a number of memory devices, thus a number of dies or logic units (e.g., a number of logic units or LUNs), and may include one or more processors or other controllers that perform the logical functions needed to operate the memory devices or interface with external systems. These SSDs may include one or more flash memory dies on which a number of memory arrays and peripheral circuitry are included. A flash memory array may include a number of block memory cells organized into a number of physical pages. In many examples, an SSD will also include DRAM or SRAM (or other forms of memory die or other memory structures). The SSD can receive commands associated with memory operations from the host, such as read or write operations to transfer data (e.g., user data and associated integrity data, such as error data and address data, etc.) between the memory device and the host; or an erase operation to erase data from the memory device.

To perform an operation in a memory device, a significant amount of time associated with completing the operation is consumed. The longer it takes for a single operation of a memory device to perform its task, the slower an application using the memory device will run. Thus, the memory industry is being driven toward structural memory devices to perform operations in a manner that shortens the time for many memory operations as much as possible.

Disclosure of Invention

In one aspect, the present application provides a system comprising: a controller; a memory device; and firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of: generating an initial set of parameters for erasing a plurality of memory blocks of the memory device; and performing erase and verify operations on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to the controller receiving a command to perform the erase and verify operations on the plurality of blocks.

In another aspect, the present application provides a method comprising: generating an initial set of parameters for erasing a plurality of memory blocks of a memory device; and performing erase and verify operations on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to receiving a command to perform the erase and verify operations on the plurality of blocks.

In another aspect, the present application provides a system comprising: a controller; a memory device; and firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of: generating an initial set of parameters for erasing a plurality of memory blocks of the memory device; simultaneously providing an erase pulse to each of the plurality of blocks; and serially verifying the erase of each of the plurality of blocks after issuing the erase pulse.

In another aspect, the present application provides a method comprising: generating an initial set of parameters for erasing a plurality of memory blocks of a memory device; simultaneously providing an erase pulse to each of the plurality of blocks; after issuing the erase pulse, serially verifying erasure of each of the plurality of blocks.

Drawings

The drawings, which are not necessarily to scale, illustrate generally the various embodiments discussed in this document by way of example and not by way of limitation.

FIG. 1 illustrates an example of an environment including a memory device, in accordance with various embodiments.

Figures 2 and 3 illustrate schematic diagrams of examples of three-dimensional NAND architecture semiconductor memory arrays, according to various embodiments.

FIG. 4 illustrates an example block diagram of a memory module in accordance with various embodiments.

Fig. 5 is a block diagram illustrating an example machine on which one or more embodiments may be implemented, in accordance with various embodiments.

FIG. 6 is a block diagram illustrating an example system having a host coupled to a memory system, in accordance with various embodiments.

FIG. 7 is a flow diagram of features of an example method of erasing a plurality of memory blocks of a memory device, according to various embodiments.

FIG. 8 is a flow diagram of features of an example method of erasing a plurality of memory blocks of a memory device, according to various embodiments.

FIG. 9 is a flow diagram of features of an example method of sequentially erasing a plurality of memory blocks of a memory device, according to various embodiments.

FIG. 10 is a flow diagram of features of an example method of erasing a plurality of memory blocks of a memory device, the method having parallel erase operations, according to various embodiments.

FIG. 11 is a block diagram illustrating an embodiment of a block disable latch, according to various embodiments.

FIG. 12 is an erase time simulation for two different types of memory components using an example method with parallel erase operations that erases multiple memory blocks of a memory device, according to various embodiments.

FIG. 13 illustrates an example command structure for a list-wise multi-block erase, in accordance with various embodiments.

FIG. 14 illustrates an example command structure for range multi-block erase, in accordance with various embodiments.

Detailed Description

The following detailed description refers to the accompanying drawings that show, by way of illustration, various embodiments of the present invention. These embodiments are described in sufficient detail to enable those skilled in the art to practice these and other embodiments. Other embodiments may be utilized and structural, logical, and electrical changes may be made to these embodiments. The various embodiments are not necessarily mutually exclusive, as some embodiments may be combined with one or more other embodiments to form new embodiments. The following detailed description is, therefore, not to be taken in a limiting sense.

In various embodiments, improvements in memory device capabilities may be achieved by reducing the time it takes for a memory device to perform functions associated with storage elements of the memory device by performing functions on multiple storage elements of the memory device using a single command. For example, improvements in erase performance can be achieved by erasing multiple memory blocks in several ways with respect to multi-block erase (MBE) and with respect to Chip Erase (CE). Each of these methods of operation may include a parallel erase operation in response to a single command or a sequential erase operation in response to a single command. These methods can be implemented with a number of different algorithms. An algorithm is simply a program that performs a task based on performing a certain number of prescribed actions. These algorithms may be executed using firmware operating in a memory device.

The range mbe (rmbe) provides a method of erasing a set of contiguous memory blocks within start and stop limits. A tabular mbe (lmbe) provides a method of erasing a set of memory blocks within a block list. The CE of the memory device provides a method of erasing all storage elements accessible to a user of the memory device, wherein the storage elements used for maintenance and operation of the memory device are effectively masked out of the erase operation. The storage elements may be configured as an array of memory elements. The implementation algorithms of these methods may include sequentially performing erase and verify operations on each block of the memory device in the range for RMBE, in the list for LMBE, or in the user-available blocks to achieve CE. Another implementation algorithm of these methods may include issuing erase pulses in parallel for all blocks of the memory device in the range for RMBE, in the list for LMBE, or in the user-available blocks to achieve CE. After the pulses are issued, the blocks may be sequentially verified, with the verified blocks being prohibited from receiving additional pulses. Inhibiting an operation may include using a flag for a block that passes the verify operation. Feature Addresses (FAs) can be used to enable and manage MBE and CE algorithms.

Systems implementing these or similar algorithms may experience latency improvements with respect to user mode commands. For example, the execution time for an erase device command may be shortened, where all blocks in the user area of the memory device are erased at once. In another example, the execution time for a clear command, a delete command, or a secure erase may be shortened, where all blocks in the garbage list are erased at once. In addition, in a memory system in which the capacity of the memory device is full, performance improvement of the write workload of the memory device can be achieved. Firmware associated with such a memory system may accumulate and erase blocks of useless cells in parallel.

These algorithms, or similar algorithms, to erase multiple memory blocks are easily implemented in memory-based systems. These algorithms for erasing multiple memory blocks in a system can be performed using firmware in response to a single command rather than a series of commands. This may be particularly useful in early software development stages or in the case of testers with slow interfaces and/or sequential access to Devices Under Test (DUTs). In the case of a memory system where multiple memory devices are structured as NAND memory devices, these algorithms coded in the firmware of the memory system can offload the tasks of the host of the memory system to manage the different NAND geometries. In managed NAND applications, this property can be used for ROM implementations. Commands for conducting a CE as taught herein may have hard coded values for the first and last blocks in the NAND.

These or similar algorithms that use firmware associated with a memory controller to erase multiple memory blocks in a system may include an Erase Verify (EV) as part of the algorithm that effectively enables the EV prior to execution of the erase option. This can significantly reduce the task of associating host trace block states. This efficient enabling prior to the erase option enables fast automated inspection and reduces charge buildup. These or similar algorithms allow for an easy implementation of a loop flow that alternates erase and preconditioning phases.

These or similar algorithms that use firmware associated with a memory controller to erase multiple memory blocks in a system may provide test time improvements in manufacturing and when planning a test flow. For example, manufacturing and planning may be performed with a NAND memory system reset to factory settings and including NAND cycles. The MBE method, which involves applying erase pulses in parallel, provides higher parallelism in the erase phase than conventional methods. For a floating gate NAND (FG-NAND) memory array, this approach can provide an estimated improvement of 40%. For a replacement gate NAND (RG-NAND) memory array, this approach can provide an estimated improvement of 90%.

These or similar algorithms that use firmware associated with a memory controller to erase multiple memory blocks in a system may result in less traffic on the memory system bus. The memory bus of a NAND-based memory system may use an Open NAND Flash Interface (ONFI). Less ONFI traffic may be associated with an estimated improvement of 2% to 10%, depending on the tester speed.

These or similar algorithms to erase multiple memory blocks in a system may provide high synchronicity in a multi-die environment. This can be attributed to the time variation of block erase across blocks (tBERS). When issuing a single block erase command, the host waits for each block on a slower die and wastes a number of cycles if a bad block is encountered. Using the MBE or CE method with the corresponding MBE or CE command, the erase time is automatically averaged at the die level, which can provide an estimated improvement of 2 to 10%.

Electronic devices such as mobile electronic devices (e.g., smartphones, tablet computers, etc.), electronic devices used in automotive applications (e.g., automotive sensors, control units, driver assistance systems, passenger safety or comfort systems, etc.), and internet-connected appliances or devices (e.g., internet of things (IoT) devices, etc.) have different storage needs depending on the type of electronic device, the use environment, performance expectations, and so forth.

The electronic device can be broken down into several major components: a processor (e.g., a Central Processing Unit (CPU) or other main processor); memory (e.g., one or more volatile or non-volatile Random Access Memory (RAM) memory devices such as dynamic RAM (dram), mobile or low power double data rate synchronous dram (ddr sdram), etc.); and a storage device (e.g., a non-volatile memory (NVM) device such as flash memory, Read Only Memory (ROM), SSD, MMC or other memory card structure or assembly, etc.). In some examples, the electronic device may include a user interface (e.g., a display, a touchscreen, a keyboard, one or more buttons, etc.), a Graphics Processing Unit (GPU), a power management circuit, a baseband processor, or one or more transceiver circuits, etc.

FIG. 1 illustrates an example of an environment 100 including a host device 105 and a memory device 110, the host device 105 and the memory device 110 configured to communicate via a communication interface. The host device 105 or the memory device 110 may be included in various products 150, such as internet of things (IoT) devices (e.g., refrigerators or other appliances, sensors, motors or actuators, mobile communication devices, automobiles, aircraft, etc.) to support the products 150 for processing, communication, or control.

Memory device 110 includes a memory controller 115 and a memory array 120, memory array 120 including, for example, a number of individual memory dies (e.g., a stack of three-dimensional (3D) NAND dies). With 3D architecture semiconductor memory technology, vertical structures are stacked, increasing the number of layers, physical pages, and thus increasing the density of memory devices (e.g., storage devices). In an example, memory device 110 may be a discrete memory or storage device component of host device 105. In other examples, memory device 110 may be part of an integrated circuit (e.g., a system on a chip (SOC), etc.) that stacks or otherwise includes one or more other components of host device 105.

One or more communication interfaces may be used to communicate data between the memory device 110 and one or more other components of the host device 105, such as a Serial Advanced Technology Attachment (SATA) interface, a peripheral component interconnect express (PCIe) interface, a Universal Serial Bus (USB) interface, a universal flash memory (UFS) interface, an eMMCTMAn interface, or one or more other connectors or interfaces. Host device 105 may include a host system, an electronic device, a processor, a memory card reader, or one or more other electronic devices external to memory device 110. In some examples, host device 105 may be a machine having some or all of the components discussed with reference to machine 500 of fig. 5.

The memory controller 115 may receive instructions from the host device 105 and may communicate with the memory array 120, for example, to transfer data to (e.g., write or erase) one or more of the memory cells, planes, sub-blocks, or pages of the memory array 120, or to transfer data from (e.g., read) one or more of the memory cells, planes, sub-blocks, or pages. Memory controller 115 may include, among other things, circuitry or firmware including one or more components or integrated circuits. For example, the memory controller 115 may include one or more memory control units, circuits, or components configured to control access across the memory array 120 and provide a translation layer between the host device 105 and the memory device 110. Memory controller 115 may include one or more input/output (I/O) circuits, lines, or interfaces that transfer data to memory array 120 or transfer data from memory array 120. Memory controller 115 may include memory manager 125 and array controller 135.

Memory manager 125 may include circuitry or firmware, etc., such as a number of components or integrated circuits associated with various memory management functions. For purposes of this specification, example memory operation and management functions will be described in the context of a NAND memory. Those skilled in the art will recognize that other forms of non-volatile memory may have similar memory operation or management functions. These NAND management functions include wear leveling (e.g., garbage collection or reclamation), error detection or correction, block logging, or one or more other memory management functions. The memory manager 125 may parse or format host commands (e.g., commands received from a host) into device commands (e.g., commands associated with operation of a memory array, etc.), or generate device commands for the array controller 135 or one or more other components of the memory device 110 (e.g., to implement various memory management functions).

The memory manager 125 may include a set of management tables 130, the management tables 130 configured to maintain various information associated with one or more components of the memory device 110 (e.g., various information associated with the memory array 120 or one or more memory cells coupled to the memory controller 115). For example, the management table 130 may include information regarding block lifetimes, block erase counts, error histories, or one or more error counts (e.g., write operation error counts, read bit error counts, read operation error counts, erase error counts, etc.) of one or more blocks of memory cells coupled to the memory controller 115. In some examples, a bit error may be referred to as an uncorrectable bit error if the number of detected errors of one or more of the error counts is above a threshold. The management table 130 may hold a count of correctable bit errors or uncorrectable bit errors, and the like.

The array controller 135 may include, among other things, circuitry or components configured to control memory operations associated with writing data to, reading data from, or erasing one or more memory cells of a memory device 110 coupled to the memory controller 115. Memory operations may be based on host commands (e.g., associated with wear leveling, error detection or correction, etc.), such as received from host device 105 or generated internally by memory manager 125.

The array controller 135 may include an Error Correction Code (ECC) component 140, the error correction code component 140 may include an ECC engine or other circuitry configured to detect or correct errors associated with writing data to or reading data from one or more memory cells of a memory device 110 coupled to the memory controller 115, and so on. The memory controller 115 may be configured to actively detect and recover from error occurrences (e.g., bit errors, operational errors, etc.) associated with various operations or storage of data, while maintaining the integrity of data transferred between the host device 105 and the memory devices 110, or maintaining the integrity of stored data (e.g., using redundant RAID storage, etc.), and may remove (e.g., log out) failed memory resources (e.g., memory units, memory arrays, pages, blocks, etc.) to prevent future errors.

Memory array 120 may include a number of memory cells arranged, for example, in a number of devices, planes, sub-blocks, or pages. For example, a 48GB TLC NAND memory device may include 18,592 bytes (B) of data/page (16,384+2208 bytes), 1536 pages/blocks, 548 blocks/planes and four or more planes/devices. By way of another example, a 32GB MLC memory device (storing two data bits/cells (i.e., four programmable states)) may include 18,592 bytes (B) of data/page (16,384+2208 bytes), 1024 pages/block, 548 blocks/plane, and 4 planes/devices, but the required write time is half that of the corresponding TLC memory device and the program/erase (P/E) cycle is twice that of the corresponding TLC memory device. Other examples may include other numbers or arrangements. In some examples, the memory device or a portion thereof may selectively operate in SLC mode or in a desired MLC mode (e.g., TLC, QLC, etc.).

In operation, data is typically written to or read from the memory device 110 in units of pages and erased in units of blocks. However, one or more memory operations (e.g., read, write, erase, etc.) may be performed on larger or smaller groups of memory cells, as desired. The data transfer size of the memory device 110 is commonly referred to as a page; and the data transfer size of the host is commonly referred to as a sector.

Although a page of data may include a number of bytes of user data (e.g., the data payload includes a number of sectors of data) and their corresponding metadata, the size of a page typically refers only to the number of bytes used to store user data. For example, a page of data having a 4KB page size may include 4KB of user data (e.g., 8 sectors assuming a sector size of 512B) and a number of bytes (e.g., 32B, 54B, 224B, etc.) of metadata corresponding to the user data, such as integrity data (e.g., error detection or correction code data), address data (e.g., logical address data, etc.), or other metadata associated with the user data.

Different types of memory cells or memory arrays 120 may provide different page sizes, or may require different amounts of metadata associated therewith. For example, different memory device types may have different bit error rates, which may cause a different amount of metadata to be needed to ensure the integrity of a page of data (e.g., a memory device with a higher bit error rate may require more bytes of error correction code data than a memory device with a lower bit error rate). For example, a multi-level cell (MLC) NAND flash device may have a higher bit error rate than a corresponding single-level cell (SLC) NAND flash device. As such, MLC devices may require more bytes of metadata for erroneous data than corresponding SLC devices.

FIG. 2 illustrates an example schematic diagram of a 3D NAND architecture semiconductor memory array 200, the 3D NAND architecture semiconductor memory array 200 including a number of memory cell strings (e.g., a first A0Memory string 205A0To the third A0Memory string 207A0First AnMemory string 205AnTo the third AnMemory string 207AnFirst B0Memory string 205B0To the third B0Memory string 207B0First BnMemory string 205BnTo the third BnMemory string 207BnEtc.), the strings are organized into blocks (e.g., block a 201A, block B201B, etc.) and sub-blocks (e.g., sub-block a)0 201A0Subblock An201Ansub-Block B0 201B0sub-Block Bn201BnEtc.). Memory array 200 represents a portion of a larger number of similar structures that would typically be present in a block, device, or other memory device unit.

Each memory cell string includes a source line (SRC)235 or a source side Select Gate (SGS) (e.g., a first a)0 SGS 231A0To the third A0SGS 233A0First An SGS 231AnTo the third An SGS 233AnFirst B0SGS231B0To the third B0SGS 233B0First Bn SGS 231BnTo the third Bn SGS 233BnEtc.) and a drain-side Select Gate (SGD) (e.g., first a)0SGD 226A0To the third A0SGD 228A0First An SGD 226AnTo the third An SGD228AnFirst B0SGD 226B0To the third B0SGD 228B0First Bn SGD 226BnTo the third Bn SGD 228BnEtc.) stacked source-to-drain in the Z-directionPolar transistors, charge trapping structures, etc.). Each memory cell string in the 3D memory array 200 can be arranged as data lines (e.g., Bit Lines (BL) BL 0220-BL 2222) along the X-direction and as physical pages along the Y-direction.

Within a physical page, each layer represents a row of memory cells and each string of memory cells represents a column. A sub-block may include one or more physical pages. A block may include a number of sub-blocks (or physical pages) (e.g., 128, 256, 384, etc.). Although illustrated herein as having two blocks, each block having two sub-blocks, each sub-block having a single physical page, each physical page having three strings of memory cells, and each string having 8 layers of memory cells, in other examples, the memory array 200 may include more or fewer blocks, sub-blocks, physical pages, strings of memory cells, or layers. For example, each memory cell string may optionally include more or fewer layers (e.g., 16, 32, 64, 128, etc.) and one or more additional layers of semiconductor material above or below the charge storage transistors (e.g., select gates, data lines, etc.). For example, a 48GB TLC NAND memory device may include 18,592 bytes (B) of data/page (16,384+2208 bytes), 1536 pages/blocks, 548 blocks/planes and four or more planes/devices.

Each memory cell in memory array 200 optionally includes a Word Line (WL) 0 coupled to (e.g., electrically or operatively connected to) an access line (e.g., Word Line (WL) WL0 0210A to WL70 217A、WL0 1210B to WL71217B, etc.), the access line being operatively coupled with the Control Gate (CG) across a particular layer or portion of a layer. A particular layer in the 3D memory array 200, and thus a particular memory cell in a string, may be accessed or controlled using a respective access line. Various select lines may be used to access groups of select gates. For example, A may be used0 SGD line SGDA 0225A0To access the first A0SGD 226A0To the third A0SGD 228A0May use An SGD line SGDA n 225AnTo access the first An SGD 226AnTo the third An SGD 228AnMay use B0SGD line SGDB0 225B0To access the first B0SGD 226B0To the third B0SGD 228B0And may use BnSGD line SGDBn 225BnTo access the first Bn SGD226BnTo the third Bn SGD 228Bn. Gate select line SGS may be used0230A to access a first a0 SGS 231A0To the third A0SGS 233A0And a first An SGS 231AnTo the third An SGS 233AnAnd a gate select line SGS may be used1230B to access the first B0SGS 231B0To the third B0SGS 233B0And a first Bn SGS 231BnTo the third Bn SGS233Bn

In an example, the memory array 200 can include a number of levels of semiconductor material (e.g., polysilicon, etc.) configured to couple with a Control Gate (CG) of each memory cell or a select gate (or a portion of a CG or select gate) of a respective layer of the array. A particular string of memory cells in the array can be accessed, selected, or controlled using a combination of Bit Lines (BL) and select gates, etc., and a particular memory cell at one or more levels in the particular string can be accessed, selected, or controlled using one or more access lines (e.g., word lines).

Fig. 3 illustrates an example schematic diagram of a portion of a NAND architecture semiconductor memory array including a plurality of memory cells 302 arranged in a two-dimensional array of strings (e.g., first string 305 through third string 307) and layers (e.g., illustrated as respective Word Lines (WL) WL 0310 through WL7317, drain side Select Gate (SGD) line 325, source side Select Gate (SGS) line 330, etc.), and a sense amplifier or device 360. For example, the memory array 300 may illustrate an example schematic of a portion of one physical page of memory cells of a 3D NAND architecture semiconductor memory device, such as illustrated in FIG. 2.

Each memory cell string is coupled to a source line (SRC)335 using a respective source side Select Gate (SGS) (e.g., first SGS 331-third SGS 333) and to a respective data line (e.g., first Bit Line (BL) BL 0320-third bit line BL2322) using a respective drain side Select Gate (SGD) (e.g., first SGD 326-third SGD 328). Although illustrated in the example of fig. 3 as having 8 layers (e.g., using Word Lines (WL) WL 0310-WL 7317) and three data lines (BL 0326-BL 2328), other examples may optionally include memory cell strings having more or fewer layers or data lines.

In a NAND architecture semiconductor memory array, such as the exemplary memory array 300, the state of a selected memory cell 302 can be accessed by sensing a change in current or voltage associated with a particular data line containing the selected memory cell. The memory array 300 may be accessed (e.g., by control circuitry, one or more processors, digital logic, etc.) using one or more drivers. In an example, the one or more drivers may activate a particular memory cell or group of memory cells by driving a particular potential to one or more data lines (e.g., bit lines BL0-BL2), access lines (e.g., word lines WL 0-WL 7), or select gates, depending on the type of operation desired to be performed on the particular memory cell or group of memory cells.

To program or write data to the memory cells, a program voltage (Vpgm) (e.g., one or more program pulses, etc.) may be applied to the selected word line (e.g., WL4), and thus to the control gates of each memory cell coupled to the selected word line (e.g., first Control Gate (CG)341 through third control gate 343 of the memory cell coupled to WL 4). The programming pulses may start at 15V or near 15V, for example, and may increase in magnitude during each programming pulse application in some examples. When a program voltage is applied to the selected word line, a potential, such as a ground potential (e.g., Vss), may be applied to the data line (e.g., bit line) and substrate (and thus to the channel between the source and drain) of the memory cell targeted for programming, causing charge to be transferred (e.g., direct injection or Fowler-Nordheim (FN) tunneling, etc.) from the channel to the floating gate of the targeted memory cell.

In contrast, a pass voltage (Vpass) may be applied to one or more word lines having memory cells not targeted for programming, or an inhibit voltage (e.g., Vcc) may be applied to data lines (e.g., bit lines) having memory cells not targeted for programming, e.g., to inhibit charge transfer from the channel to the gates of floating these non-targeted memory cells. The channel voltage may vary depending on, for example, the proximity of the applied channel voltage to the word line targeted for programming. The inhibit voltage may include a supply voltage (Vcc) relative to a ground potential (e.g., Vss), such as a voltage from an external source or supply (e.g., a battery, an analog-to-digital converter, etc.).

For example, if a program voltage (e.g., 15V or greater) is applied to a particular word line (e.g., WL4), a channel voltage of 10V may be applied to one or more other word lines (e.g., WL3, WL5, etc.) to inhibit programming of non-target memory cells, or to retain values stored on these memory cells not targeted for programming. As the distance between the applied programming voltage and the non-target memory cells increases, the channel voltage required to inhibit programming of the non-target memory cells may decrease. For example, with a programming voltage of 15V applied to WL4, a channel voltage of 10V may be applied to WL3 and WL5, a channel voltage of 8V may be applied to WL2 and WL6, a channel voltage of 7V may be applied to WL1 and WL7, and so on. In other examples, the channel voltage may be higher or lower, or the number of word lines may be greater or less, etc.

Sense amplifiers or devices 360 coupled to one or more of the data lines (e.g., first, second, or third bit lines (BL0-BL2)320-322) can detect the state of each memory cell in the respective data line by sensing the voltage or current on the particular data line.

Between the application of one or more programming pulses (e.g., Vpgm), a verify operation can be performed to determine whether the selected memory cell has reached its intended programmed state. If the selected memory cell has reached its intended programmed state, further programming may be inhibited. Additional programming pulses may be applied if the selected memory cell has not reached its intended programmed state. If the selected memory cells have not reached their intended programmed state after a certain number of programming pulses (e.g., a maximum number), the selected memory cells, or the strings, blocks, or pages associated with these selected memory cells, can be marked as "defective".

To erase a memory cell or group of memory cells (e.g., erase is typically performed in blocks or sub-blocks), an erase voltage (Vers) (e.g., typically Vpgm) may be applied to the substrate (and thus to the channel between the source and drain) of the memory cell targeted for erase (e.g., using one or more bit lines, select gates, etc.) while the word line of the targeted memory cell is held at, for example, a ground potential (e.g., Vss) potential, causing charge to be transferred (e.g., directly such as or fowler-nordheim (FN) tunneling, etc.) from the floating gate of the targeted memory cell to the channel.

Fig. 4 illustrates an example block diagram of a memory device 400, the memory device 400 including a memory array 402 having a plurality of memory cells 404 and one or more circuits or components that provide communication with the memory array 402 or perform one or more memory operations on the memory array 402. The memory device 400 may include a row decoder 412, a column decoder 414, sense amplifiers 420, page buffers 422, selectors 424, input/output (I/O) circuits 426, and a memory control unit 430.

The memory cells 404 of the memory array 402 may be arranged into blocks, such as a first block 402A and a second block 402B. Each block may include a number of sub-blocks. For example, the first block 402A may include a first sub-block 402A0And a second sub-block 402AnAnd the second block 402B may comprise the first sub-block 402B0And a second sub-block 402Bn. Each sub-block may include a number of physical pages, each page including a number of memory cells 404. Although illustrated herein as having two blocks, each block having two sub-blocks, and each sub-block having a number of memory cells 404, in other examples, the memory array 402 may includeContaining more or fewer blocks, sub-blocks, memory cells, etc. In other examples, memory cells 404 may be arranged in a number of rows, columns, pages, sub-blocks, etc., and accessed using access lines 406, first data lines 410, or one or more select gates, source lines, etc.

Memory control unit 430 may control memory operations of memory device 400 according to one or more signals or instructions received via control lines 432 (e.g., including one or more clock signals or control signals indicative of desired operations (e.g., write, read, erase, etc.) or address signals (a0-AX) received via one or more address lines 416. One or more devices external to the memory device 400 may control the value of a control signal on a control line 432 or an address signal on an address line 416. Examples of devices external to memory device 400 may include, but are not limited to, a host, a memory controller, a processor, or one or more circuits or components not illustrated in fig. 4.

The memory device 400 may use the access lines 406 and the first data lines 410 to transfer (e.g., write or erase) data to one or more of the memory cells 404, or to transfer (e.g., read) data from one or more of the memory cells 404. Row decoder 412 and column decoder 414 may receive and decode address signals (a0-AX) from address lines 416, may determine which of memory cells 404 are to be accessed, and may provide signals to one or more of access lines 406 (e.g., one or more of a plurality of word lines (WL 0-WLm)) or first data lines 410 (e.g., one or more of a plurality of bit lines (BL 0-BLn)), such as described above.

Memory device 400 may include sense circuitry, such as sense amplifier 420, configured to determine a value (e.g., read) of data on memory cell 404, or to determine a value of data to be written to memory cell 404, using first data line 410. For example, in the selected memory cell string 404, one or more of the sense amplifiers 420 may read a logic level in the selected memory cell 404 in response to a read current flowing through the selected string to the data line 410 in the memory array 402.

One or more devices external to memory device 400 may communicate with memory device 400 using I/O lines (DQ0-DQN)408, address lines 416(A0-AX), or control lines 432. Input/output (I/O) circuitry 426 may use I/O lines 408 to transfer data values in or out of memory device 400, such as in or out of page buffer 422 or memory array 402, according to, for example, control lines 432 and address lines 416, for example. The page buffer 422 may first store data received from one or more devices external to the memory device 400 and then program the data into the relevant portion of the memory array 402, or may first store data read from the memory array 402 and then transmit the data to one or more devices external to the memory device 400.

Column decoder 414 may receive and decode address signals (A0-AX) into one or more column select signals (CSEL 1-CSELn). Selector 424 (e.g., a selection circuit) may receive the column selection signal (CSEL1-CSELn) and select data in page buffer 422 that represents a data value read from memory cell 404 or to be programmed into memory cell 404. Selected data may be transferred between page buffer 422 and I/O circuitry 426 using second data line 418.

The memory control unit 430 may receive positive and negative power supply signals, such as a power supply voltage (Vcc)434 and a negative power supply (Vss)436 (e.g., ground potential), from an external source or supply (e.g., an internal or external battery, an analog-to-digital-to-analog converter, etc.). In some examples, the memory control unit 430 may include a regulator 428 to provide a positive or negative power supply signal internally.

Fig. 5 illustrates a block diagram of an example machine 500 on which any one or more of the techniques (e.g., methods) discussed herein may be performed. In alternative embodiments, the machine 500 may operate as a standalone device or may be connected (e.g., networked) to other machines. In a network-connected deployment, the machine 500 may operate in the capacity of a server machine, a client machine, or in a server-client network environment. In an example, the machine 500 may operate in a peer-to-peer (P2P) (or other distributed) network environment as a peer machine. The machine 500 may be a Personal Computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a mobile telephone, a web appliance, an IoT device, an automotive system, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term "machine" shall also be taken to include any group of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.

Examples described herein may include or be operable with logic, components, devices, packages, or mechanisms. A circuit system is a group (e.g., set) of circuits implemented in a tangible entity that includes hardware (e.g., simple circuits, gates, logic, etc.). The circuitry composition can be flexibly changed over time and has potential hardware variability. The circuitry includes components that, when operated, may perform particular tasks either individually or in combination. In an example, the hardware of the device circuitry may be permanently designed to implement a particular operation (e.g., hardwired). In an example, hardware of a circuitry may include variably connected physical components (e.g., execution units, transistors, simple circuits, etc.) including computer-readable media physically modified (e.g., magnetically modified, electrically modified, movably placed mass invariant particles, etc.) to encode instructions for a particular operation. When physical components are connected, the underlying electrical properties of the hardware components change, for example, from an insulator to a conductor or vice versa. The instructions enable the participating hardware (e.g., execution units or loading mechanisms) to form components of the circuitry in hardware via the variable connections to perform portions of specific tasks in operation. Thus, when the device is operating, the computer-readable medium is the other component communicatively coupled to the circuitry. In an example, any of the physical components may be used in more than one component of more than one circuitry. For example, in operation, an execution unit may be used at one point in time for a first circuit of a first circuitry, and reused at a different time by a second circuit of the first circuitry or by a third circuit in a second circuitry.

A machine (e.g., computer system) 500 (e.g., host device 105, memory device 110, etc.) may include a hardware processor 502 (e.g., a Central Processing Unit (CPU), a Graphics Processing Unit (GPU), a hardware processor core, or any combination thereof, such as memory controller 115, etc.), a main memory 504, and a static memory 506, some or all of which may communicate with each other via an interconnection link (e.g., bus) 508. The machine 500 may further include a display unit 510, an alphanumeric input device 512 (e.g., a keyboard), and a User Interface (UI) navigation device 514 (e.g., a mouse). In an example, the display unit 510, the input device 512, and the UI navigation device 514 may be a touch screen display. The machine 500 may additionally include a storage device (e.g., drive unit) 521, a signal generation device 518 (e.g., a speaker), a network interface device 520, and one or more sensors 516, such as a Global Positioning System (GPS) sensor, compass, accelerometer, or other sensor. The machine 500 may include an output controller 528 that communicates with or controls one or more peripheral devices, such as a serial communication (e.g., Universal Serial Bus (USB), parallel communication, or other wired or wireless (e.g., Infrared (IR), Near Field Communication (NFC), etc.) connection.

The storage 521 may include a machine-readable medium 522 having stored thereon one or more sets of data structures or instructions 524 (e.g., software), the data structures or instructions 524 embodying or being utilized by one or more of the techniques or functions described herein. The instructions 524 may also reside, completely or at least partially, within the main memory 504, within static memory 506, or within the hardware processor 502 during execution thereof by the machine 500. In an example, one or any combination of the hardware processor 502, the main memory 504, the static memory 506, or the storage device 521 may constitute the machine-readable medium 522.

While the machine-readable medium 522 is illustrated as a single medium, the term "machine-readable medium" can include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) configured to store the one or more instructions 524.

The term "machine-readable medium" may include any medium that is capable of storing, encoding or carrying instructions for execution by the machine 500 and that cause the machine 500 to perform any one or more of the techniques of this disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with these instructions. Non-limiting examples of machine-readable media can include solid-state memory as well as optical and magnetic media. In an example, a quality machine-readable medium includes a machine-readable medium having a plurality of particles with an invariant quality (e.g., a stationary quality). Thus, a quality machine-readable medium is not a transitory propagating signal. Specific examples of quality machine-readable media may include: non-volatile memory, such as semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; a magneto-optical disc; and CD-ROM and DVD-ROM disks.

Instructions 524 (e.g., software, programs, an Operating System (OS), etc.) or other data stored on the storage 521 may be accessed by the memory 504 for use by the processor 502. The memory 504 (e.g., DRAM) is typically fast, but volatile, and thus a different type of storage device than the storage 521 (e.g., SSD) which is suitable for long-term storage (including when in an "off" condition). Instructions 524 or data used by a user or the machine 500 are typically loaded into memory 504 for use by the processor 502. When the memory 504 becomes full, virtual space from the storage 521 may be allocated to supplement the memory 504; however, since storage 521 is typically slower than memory 504, and write speeds are typically at least twice as slow as read speeds, using virtual memory can greatly reduce user experience (in contrast to memory 504 (e.g., DRAM)) due to storage latency. Furthermore, using the storage device 521 as virtual memory can greatly shorten the usable life of the storage device 521.

In contrast to virtual memory, virtual memory compression (e.g.,

Figure BDA0002111603500000161

core feature "ZRAM") uses a portion of memory as a compressed block storage device to avoid paging to storage 521. Paging occurs in compressed blocks until such data must be written to storage 521. Virtual memory compression increases the usable size of memory 504 while reducing wear on storage 521.

Storage devices optimized for mobile electronic devices or mobile storage devices typically include MMC solid state storage devices (e.g., micro secure digital (micro SD)TM) Card, etc.). MMC devices include a number of parallel interfaces (e.g., 8-bit parallel interfaces) that connect with a host device, and are typically components that are removable and separable from the host device. In contrast, eMMCTMThe device is attached to a circuit board and is considered as a component of a host device, having a connection to an ATA-basedTMSSD devices (serial AT (advanced technology) attachment or SATA) have comparable read speeds. However, there is an increasing demand for mobile device performance, for example, to fully enable virtual devices or augmented reality devices, take advantage of increasing network speeds, and the like. In response to this request, the memory device has been transitioned from a parallel communication interface to a serial communication interface. A universal flash memory (UFS) device, including a controller and firmware, communicates with a host device using a Low Voltage Differential Signaling (LVDS) serial interface with a dedicated read/write path, further facilitating greater read/write speeds.

The instructions 524 may further be transmitted or received over a communication network 526 that uses a transmission media over the network interface device 520 utilizing any one of a number of transfer protocols, such as frame relay, Internet Protocol (IP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), hypertext transfer protocol (HTTP), etc. Example communication networks may include a Local Area Network (LAN), a Wide Area Network (WAN), a packet data network (e.g.,the internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., known as

Figure BDA0002111603500000162

Of the Institute of Electrical and Electronics Engineers (IEEE)802.11 family of standards, referred to as

Figure BDA0002111603500000163

IEEE 802.16 family of standards), IEEE 802.15.4 family of standards, peer-to-peer (P2P) networks, and so forth. In an example, the network interface device 520 may include one or more physical jacks (e.g., ethernet jacks, coaxial jacks, or telephone jacks) or one or more antennas connected to the communication network 526. In an example, network interface device 520 may include multiple antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques.

FIG. 6 is a block diagram of a system 600 including a host 605 and a memory system 610. The host 605 is coupled to the memory system 610 through an interface 620. The memory system 610 may include a controller 615 coupled to memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6 by a bus 627. Although 6 memory devices are shown in fig. 6, memory system 610 may be implemented with more or less than 6 memory devices, i.e., memory system 610 may include one or more memory devices. The controller 615 may include or may be structured as one or more processors. The controller 615 may include firmware 625 having code to manage at least the memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6. Alternatively, firmware 625 may reside on memory system 610 separate from controller 615 but coupled to controller 615, or firmware 625 may be distributed in memory system 610 with firmware components, such as, but not limited to, code, including one or more components in controller 615. The firmware 625 may include code having instructions executable by the controller to operate on the memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6. The instructions may include instructions of one or more types to execute an algorithm to perform a variety of block erasures, as taught herein.

The system 600 and its components may be structured in a number of different arrangements. For example, the system 600 may be arranged with various types of components including a host 605, an interface 620, a memory system 610, memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6, a controller 615, and a bus 627. The host 605 may include one or more processors, which may be of different types. Interface 620 may be arranged as, but is not limited to, a peripheral component interconnect express (PCIe) interface. The memory system 610 may be, but is not limited to, an SSD. Memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6 can be NAND memory devices. The controller 615 may include or be structured to be compatible with one or more types of processors of the memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6. The bus 627 may be an ONFI bus for memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6 that are NAND flash memory devices.

In various embodiments, firmware 625 may have instructions executable by controller 615 to operate one of memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6, which may be extended to a combination of memory devices, where the instructions may include operations to generate an initial set of parameters for erasing a plurality of memory blocks of the memory device and performing erase and verify operations on the plurality of blocks.

In various embodiments, the erase and verify operations may be performed by the plurality of blocks in response to the controller 615 receiving a command to perform the erase and verify operations on the plurality of blocks to sequentially erase and verify each block. The command may be a single command having identification codes of a plurality of blocks to be erased associated therewith. The host 605 may be arranged to be operable to generate commands that are operatively received by the controller 615, and the communication interface 620 is arranged to transmit the commands from the host 605 to the controller 615.

Operations for performing erase and verify operations in sequence based on instructions in firmware 625 may include instructions on a plurality of memory blocks identified in a list, in a range, or per all user specified memory blocks. The operation of generating the initial set of parameters may include: identifying the plurality of blocks by entries in a block list, the list having a number of blocks; identifying a first block of the number of blocks for erasing; and generating a count limit equal to the number of blocks to be erased.

Operations to perform erase and verify operations may include: starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block in the list; after each block is erased and verified, the count of the block counter is incremented by "1"; and terminating the erase and verify operations on the plurality of blocks when the count of the block counter is greater than the count limit. Operations for performing erase and verify operations in sequence based on instructions in firmware 625 may include instructions on a plurality of memory blocks identified in a list, in a range, or per all user specified memory blocks. The operation of generating the initial set of parameters may include: identifying a plurality of blocks according to entries in a block list, the list having a number of blocks; identifying a first block of the number of blocks for erasing; and generating a count limit equal to the number of blocks to be erased.

Operations to perform erase and verify operations may include: starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block of the list; after each block is erased and verified, the count of the block counter is incremented by "1"; and terminating the erase and verify operations on the plurality of blocks when the count of the block counter is greater than the count limit.

The operation of generating the initial set of parameters when performing erase and verify operations in sequence may include: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when erasing the plurality of blocks. The operation of performing the erase and verify operations while sequentially performing the erase and verify operations includes: generating an erase pulse followed by a verify pulse for each of the successive blocks, then proceeding to a next one of the successive blocks; and terminating the erase and verify operations after erasing the second block.

The operation of generating the initial set of parameters when performing erase and verify operations in sequence may include: a chip erase operation is identified in which the starting block in the sequential erase is block zero of the memory device and the ending block in the sequential erase is the last block of the memory device. The block zero and the end block may be associated with a user accessible memory block.

In various embodiments, firmware 625 may have instructions executable by controller 615 to operate one of memory devices 612-1, 612-2, 612-3, 612-4, 612-5, and 612-6, which may be extended to a combination of memory devices, where the instructions may include the following operations: generating an initial set of parameters for erasing a plurality of blocks of a memory device; simultaneously supplying an erase pulse to each of a plurality of blocks; and serially verifying erasure of each of the plurality of blocks after issuing the erase pulse.

Generating the initial set of parameters may include: multiple blocks for erase are identified in several different formats that can support the method of performing the erase operation. Generating the initial set of parameters may include: a plurality of blocks are identified for erasure by a block list. Generating the initial set of parameters may include: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks. Generating the initial set of parameters may include: a chip erase operation is identified, where at erase time, the starting block is block zero and the ending block is the last block of the memory device. The block zero and the end block may be associated with a user accessible memory block.

The operations may include the following operations: in erasing the plurality of blocks, one of the plurality of blocks is set to be unusable in response to determining that the block passes verification to receive another erase pulse. The operations may include the following operations: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse. The operations may include the following iterative procedure: maintaining the block that failed verification after erase as a usable block to receive another erase pulse; generating an additional erase pulse for an available block and serially verifying the available block after generating the additional erase pulse; and marking each usable block that passes verification after the additional erase pulse as a bad block to be unavailable to receive another additional erase pulse. The iterative procedure may be ended immediately after determining that each of the plurality of blocks is marked as a bad block or after determining that a maximum loop count for the iterative procedure is reached.

Firmware 625 may include instructions that identify multiple blocks for erasure in a number of different formats, such as, but not limited to, the different formats discussed herein. Firmware 625 may include instructions for identifying each of the different formats of multiple memory blocks for erasing, performing erase operations in a sequential erase and verify method, performing erase operations in a parallel erase and serial verify method, and performing erase operations in a chip erase method. Firmware 625 may include one or more parameters that may be used as selection options to selectively select a presentation format of a plurality of blocks for erasure and to selectively select an algorithm for the erasure options. These parameters, which may be stored in the memory system 610, allow the firmware 625 to directly erase different sets of multiple blocks using different methods defined by code stored for different algorithms executed by the controller 615. The plurality of blocks may be a plurality of blocks on one or more memory devices of the memory system 610.

FIG. 7 is a flow diagram of features of an embodiment of an example method 700 of erasing a plurality of memory blocks of a memory device. Method 700 may be performed via instructions in firmware directed to and executed by a controller of a memory system. The controller may be or may include one or more processors. The controller may be arranged as a memory controller for the memory device or the memory device and other memory devices in the memory system. Method 700 or a method similar to method 700 may be performed with respect to a block of memory of a memory device of a system associated with any of fig. 1-6.

At 710, an initial set of parameters for erasing a plurality of memory blocks of a memory device is generated. At 720, the erase and verify operations are performed on a plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to receiving a command to perform the erase and verify operations on the plurality of blocks.

Method 700, or variations of methods similar to method 700, may include a number of different embodiments that may be combined depending on the application of the methods and/or the system architecture in which the methods are implemented. These methods may include: generating the set of initial parameters including identifying a plurality of blocks by entries in a block list, wherein the list has a number of blocks; identifying a first block of the number of blocks for erase and verification; and generating a count limit equal to the number of blocks to be erased and verified. An erase pulse may be generated for each block in the list followed by a verify pulse, then proceeding to the next block in the list, with erase and verify operations beginning at the first block. The method may include: incrementing the count of the block counter by "1" after each block is erased and verified; and terminating the erase and verify operation when the count of the block counter is greater than the count limit.

Method 700 or a variation of a method similar to method 700 may include: generating the set of initial parameters including identifying a first block of consecutive blocks as a starting block for erasing and verifying the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when the plurality of blocks are erased and verified. An erase pulse may be generated for each of the consecutive blocks followed by a verify pulse, then proceeding to the next of the consecutive blocks. The erase and verify operations may be terminated after erasing the second block.

Method 700 or a variation of a method similar to method 700 may include: the initial set of parameters is generated, including identifying a chip erase operation, where the starting block in sequential erase and verify is block zero and the ending block is the last block of the memory device.

FIG. 8 is a flow diagram of features of an embodiment of an example method 800 of erasing a plurality of memory blocks of a memory device. The method may be performed via instructions in firmware for a controller of a memory system and the memory executing. The controller may be or may include one or more processors. The controller may be arranged as a memory controller for a memory device or a memory device and other memory devices in a memory system. Method 800 or a method similar to method 800 may be performed with respect to a block of memory of a memory device of a system associated with any of figures 1-6.

At 810, an initial set of parameters for erasing a plurality of memory blocks of a memory device is generated. At 820, an erase pulse is simultaneously provided for each of the plurality of blocks. At 830, erase of each of the plurality of blocks is serially verified after the erase pulse is issued.

Method 800, or a variation of a method similar to method 800, may include a number of different embodiments that may be combined depending on the application of the methods and/or the system architecture in which the methods are implemented. These methods may include generating the initial set of parameters including identifying in a block list for a plurality of blocks to erase. These methods may include generating the initial set of parameters including identifying a first block of consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks. These methods may include: the initial set of parameters is generated including identifying a chip erase operation, where a starting block when sequentially erased is block zero and an ending block is a last block of the memory device.

A variation of method 800 or a method similar to method 800 may comprise: a plurality of blocks is set to be unavailable to receive another erase pulse in response to determining that one of the blocks passes verification when the blocks are erased. These methods may include: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse after passing verification. These methods with labeling processes may include performing an iterative procedure, wherein the iterative procedure includes: maintaining the block that failed verification after erase as a usable block to receive another erase pulse; generating additional erase pulses for the usable blocks and serially verifying usable blocks after generating additional erase pulses; and marking each usable block that passes verification after the additional erase pulse as a bad block to be unavailable to receive another additional erase pulse. The iterative procedure may be ended immediately upon determining that each of the plurality of blocks is marked as a bad block or determining that a maximum loop count for the iterative procedure is reached.

FIG. 9 is a flow diagram of features of an embodiment of an example method 900 of sequentially erasing a plurality of memory blocks of a memory device. Erasing the plurality of blocks may occur after a command is received at the memory system (e.g., at the memory system 610) from the host 605 illustrated in fig. 6. The received command may be a single command having associated control signals for erasing a plurality of blocks, but no further commands are received regarding erasing the plurality of blocks. The erase procedure may be executed using an algorithm stored in firmware and executed by a controller of the memory system after receiving the command, for example, such algorithm may be stored in the FW 625 and may be executed by the controller 615 of fig. 6.

At 905, parameters of the erase operation are initialized. Internal variables are initialized for start and stop limits or for addresses in a list of multiple blocks to be erased. The identification codes of the blocks may be provided with the command to perform the erasure. Initialization may also include arranging for erase operations on the plurality of blocks to use a sequential erase and verify algorithm and/or to choose to use RMBE, LMBE, or CE. In RMBE, the start block address and stop block address can be identified to define the start and stop of RMBE operations. In LMBE, a list of memory blocks to be erased is identified, and the number of blocks in the list is determined, and a block counter is established that sets the number of blocks to a threshold value to define the end of the erase operation using the block counter. In CE, among the algorithms stored in firmware, which consider memory blocks allocated as user memory, the algorithms may have memory addresses starting from zero block to the last block. In a sequential erase operation, the starting block of an erase may be set equal to the "zero" block of the user block and the ending block may be set equal to the last block of the user block. The last block of the user block may be hard-coded in firmware. When running CE, the host is independent of NAND geometry, i.e. number of blocks, since all user blocks are erased.

After initializing the parameters with the sequential erase and verify method selected, execution of the algorithm is done in the algorithm loop for the blocks included in the list, in the range, or for all user blocks. Since the external device or apparatus provides the identification codes of the blocks to the memory system for RMBE or LMBE, the list or range may be referred to as a user list or user range.

At 910, it is determined whether all blocks of the user list, all blocks in the range, or all user blocks have been erased according to the use of RMBE, LMBE, or CE. If the determination is "yes," i.e., all blocks are erased, then at 930, execution of the sequential erase and verify algorithm is ended and the processor returns to performing other functions of the memory system, which may include an additional plurality of block erases or chip erases in response to another command received. During an erase operation in a memory device, the processor may perform other functions of the memory device or functions of other memory devices in a memory system in which the memory device is located. If the determination is "no," the processor continues to execute the loop of the selected algorithm. In some embodiments, if the selected algorithm is the only MBE algorithm in the firmware of the memory system, then this algorithm is the actual choice. In the case of an initial pass through the loop, the block operated on as the first block in the range, or the first block, is associated with the beginning of the block counter in the order in which the range is processed.

At 915, the identification of the block address of the current block to be processed is obtained from the list or range, and this updates the current block for processing. Updating the current block may include marking this current block and/or removing previously processed blocks from the list or range (which for the CE is all user blocks). At 920, the block with the current block address is erased and verified before proceeding to the next block in the list or range.

At 925, the next block that may be processed is marked and the loop proceeds to 910. For RMBE, a block address equal to the next block address in memory may be generated and used to further erase a block of the plurality of blocks, or as an interrupt condition when processing the loop. For LMBE, a block counter may be updated for identifying the next block to be processed, or as an interrupt condition when processing the loop. For a CE, a block address equal to the next block address in memory may be generated and used to further erase a block of the plurality of blocks, or as an interrupt condition when processing the loop. For the CE, if the currently erased block is the last block, the next block may be set to the last block address or to an address beyond the last block address even though the memory may not have such an address, or may be set to an address beyond the address of the last user block if a block address larger than the address of the last block of the user block exists in the memory.

At 910, it is determined whether all blocks in the user list, all blocks in the range, or all user blocks have been erased as part of an iterative process in a loop based on the use of RMBE, LMBE, or CE. This determination provides an interrupt condition to exit the loop. For RMBE, the interrupt condition is to determine that the actual block set at 925 in the loop is greater than the end block of the identified range of the plurality of blocks being erased. That is, the pointers for the blocks in the range indicate the range in terms of the next block set at 925. For LMBE, an interrupt condition occurs when the count in the block counter set at 925 is greater than the threshold count at initialization, where the threshold is the number of block entries in the list of block entries. For the CE, the interrupt condition is to determine that the actual block set at 925 in the loop is the last block of the user block or has an address greater than the address of the last user block.

FIG. 10 is a flow diagram of features of an embodiment of an example method 1000, the example method 1000 erasing a plurality of memory blocks of a memory device having parallel erase operations. Erasing of the plurality of blocks may occur after a command is received at the memory system, such as at the memory system 610, from the host 605 illustrated in fig. 6. The received command may be a single command with associated control signals for erasing multiple blocks, but no further commands are received regarding erasing these multiple blocks. After receiving the command, the erase procedure may be executed using an algorithm stored in firmware and executed by a controller of the memory system, for example, such algorithm may be stored in the FW 625 and executed by the controller 615 of fig. 6.

In embodiments that include parallel erase operations, erase pulses may be applied simultaneously to a series of blocks (which are multiple blocks designated for erase) so that the blocks are erased in parallel. After the erase pulse is issued, the block may be serially verified. Serial verification is the process of verifying blocks one by one from a start block to an end block. The verified block may be prevented from receiving another erase pulse for verification. Blocks that pass erase verification may be marked as bad. This allows the use of Block Disable Latches (BDLs) in parallel erase operations, similar to some processes that make it impossible to write or read unselected blocks (e.g., bad blocks) while a user is operating. For these blocks that pass erase verification, a BDL may be set for each such block, and the blocks act as unselected blocks, where these blocks do not receive another erase pulse issued for the non-verified blocks. Furthermore, pass-through blocks may still be in the validation loop because their BDL state (e.g., BDL ═ 1) does not allow actions to be performed on these blocks.

The set of initially identified blocks of the plurality of blocks that failed its erase verify process may be given another erase pulse. If one or more BDLs remain zero, allowing the operation to access its corresponding block, the algorithm may continue to loop, where the loop includes applying erase pulses and erase verifications. The algorithm for parallel erase and serial verify may end when all BDLs are set to the disable output state or when the maximum loop count is reached, which may define an interrupt condition for the algorithm. If the algorithm ends due to a timeout condition, the failed verification block may be retrieved by reading back its BDL information.

At 1005, parameters for the erase operation are initialized. Internal variables are initialized for start and stop limits or for addresses in a list of multiple blocks to be erased. The identification codes of the plurality of blocks may be provided with a command to perform an erasure. These restrictions may be used in the serial verify portion of the operation selected for the erase operation on multiple blocks. Initialization may choose to use RMBE, LMBE or CE. In RMBE, start and stop block addresses may be identified to define the start and stop of a range of blocks for which RMBE operations are performed. In LMBE, a list of memory blocks to be erased is identified. In CE, the algorithm considers memory blocks allocated as user memory, which may have memory addresses starting from zero block to the last block. In the CE, the start block for erasure may be set equal to the zero block of the user block, and the end block may be set equal to the last block of the user block. The last block of the user block may be hard-coded in firmware.

At 1007, all blocks are marked as bad, where the block is a user block. In CE, marking all blocks as bad may be skipped since all blocks are erased. At 1009, all blocks in the list of blocks or in the range of blocks are unmarked. Skipping the marking procedure in the CE undoes marking all blocks. During execution of the parallel erase/serial verify algorithm, combining the operations at 1007 and 1009 provides a memory block of the memory device that is not in the erase list or erase range, which is not selected for a memory operation. The marking of the memory block provides an input signal to the BDL of the memory block that deselects the memory block for the memory operation. For example, the BDL of a marked memory block may have a value of "1" in an unselected state, similar to a bad block state in other processes of the memory device.

At 1010, it is determined whether all blocks, blocks of the range, or all user blocks of the user list have been erased. The determination may be based on determining whether all BDLs of all memory blocks not tagged at 1009 are now in a tagged state, which may correspond to a BDL equal to "1". Alternatively, the BDL may be structured as a logic circuit that provides an unselected state corresponding to a "0". All BDLs in the flag state provide an interrupt condition for the algorithm loop. If the determination is "yes," i.e., all blocks are erased, the processor executing the algorithm stored in the firmware may begin operation to end the algorithm. The end of the algorithm may also be initiated by an interrupt condition set into the algorithm, the interrupt condition being the attainment of a maximum loop count. To begin the end of the erase process, the flags on all blocks on the memory device may be reset at 1029 immediately after determining that all blocks identified for erase have been erased. With the reset at 1029 unmarking the memory block, all memory blocks of the memory are placed in a condition of normal use as memory blocks. Beginning at 1019, execution of the parallel erase and serial verify algorithms ends, and the processor returns to performing other functions of the memory system at 1030, which may include additional multiple block erases or chip erases received in response to another command. During an erase operation in a memory device, the processor may perform other functions of the memory device, or of other memory devices of a memory system in which the memory device is located.

If the determination is "no" at 1010, the processor continues to execute the loop of the selected parallel erase/serial verification algorithm. In some embodiments, if the selected algorithm is the only MBE algorithm in the firmware of the memory system, then this algorithm is the actual choice. At 1013, all blocks of memory are selected. At 1014, an erase pulse is applied. Although all blocks are selected at 1013, only the unmarked blocks receive erase pulses applied to them in parallel. After the erase pulse is applied in parallel, it is determined at 1002 whether all blocks that receive the erase pulse have been verified. If the determination is "yes," the algorithm again checks whether all blocks have been erased at 1010.

If the determination as to whether all blocks have been verified is "no" at 1002, then at 1015, the block address of the current block to be processed is obtained from the list or range and this current block is updated for processing. At 1020, the block with the current block address is subjected to erase verification. At 1035, it is determined whether the block At the current block address passes erase verification.

If the determination at 1035 is "yes," i.e., the current block passes erase verification, then the current block is marked so that the current block will not be erase verified. The current block may be marked as a bad block. After marking the current block, at 1045, the current block may be removed from the list subject to erase verification. Beginning at 1045, the next block in the list may be selected to continue the verification process at 1025. Starting at 1025, the algorithm may again determine whether all blocks have been verified at 1002.

If the further determination at 1002 is "yes," the iterative procedure may again determine whether all blocks have been erased at 1010. If the further determination at 1002 is "NO," the iterative procedure proceeds to get the next block address again at 1015 and update the next block address as the current block address for the erase verification at 1020, and determine whether the erase verification was successful at 1035.

FIG. 11 is a block diagram illustrating an embodiment of a block disable latch 1100 used in a parallel erase/serial verify algorithm to erase multiple blocks. The block disable latch 1100 may include an AND logic gate 1134 to receive an inverted value of a block flag for a block, the block flag being made by performing a successful erase verify on a plurality of blocks after an erase pulse is applied to the blocks. AND logic gate 1134 may have an input to receive a block selection from address decoder 1123. The block address corresponding to the block flag input to AND logic gate 1134 is provided to address decoder 1123 to generate a block selection to AND logic gate 1134. The AND logic gate 1134 may output a block enable signal having one of two values, with one value enabling the block AND the other value enabling the block involved in the memory operation.

FIG. 12 simulates two using an example method of erasing multiple memory blocks of a memory device having parallel erase operationsErase times for different types of memory components. Curve 1250 shows that the erase time in percent is reduced for replacement gate NAND versus the number of blocks erased in parallel. Curve 1255 shows the erase time in percent is reduced for floating gate NAND versus the number of blocks erased in parallel. The erase time savings is often the ratio tPULSE/tBERS, where tPULSE is the pulse width of the erase pulse and tBERS is the block erase time. Consider that tBERS

Figure BDA0002111603500000251

t pulse + tVFY, where tVFY is the time for erase verify.

FIG. 13 illustrates an embodiment of an example command structure 1360 for list-wise multi-block erase. Exemplary command structure 1360 may include block addresses for a number (N) of blocks to be erased, where N is greater than or equal to an integer of 2. In the example command structure 1360, the set feature command field 1361 and the feature address field 1362 precede each block address slot 1363-0, 1363-1, 1363-2 … by setting the feature command field 1361 and the feature address field 1362 to separate the block addresses from one another. The Feature Address (FA) is the address where the feature is identified using the set feature command or get feature command to modify or return parameters, respectively.

Using the set feature command, a user (e.g., host 605 or other device of fig. 6) that generates data to a memory system (e.g., memory system 610) may populate a scratch space 1365 in the memory system with a list of blocks to be erased. The scratch pad space 1365 contains status flags. A set flag (SETF) command for a given address in the list may be used to initialize a status flag to valid (V) to communicate that the given address is valid and that the block corresponding to this given address is to be erased. The implemented LMBE algorithm may update the status flags to pass (P) or fail (F) for a given address based on the results of an erase operation performed from the given address. At the conclusion of the algorithm executed by the processor with respect to instructions stored in firmware in the form of code for multiple erase of a memory block, the host may retrieve the erase results of an erase operation on the memory block by accessing scratch space 1365 as a function of the get characteristics command.

FIG. 14 illustrates an embodiment of an example command structure 1470 for a range multi-block erase. An example command structure 1470 may include block addresses for a start block and a stop block that define a range of blocks to be erased. In the exemplary command structure 1470, the feature command field 1471 and feature address field 1472 are set before the block address slots 1473-0 and 1473-1.

Using the set feature command, a user (e.g., host 605 or other device of fig. 6) generating data to a memory system (e.g., memory system 610) can fill the scratch space in the memory system with the results of erase operations on a plurality of blocks defined by a range of start and stop block addresses. After the last verify operation, the scratch space may be filled with block addresses of failed verify blocks by instructions that execute the erase algorithm for multiple blocks, which are stored in the form of code in the firmware of the memory system. The flag may be set to a special value if the number of failed verifications exceeds the size of the scratch pad space. This may be an extreme case of a memory device crash, or operating conditions are out of specification and these block addresses of the verification block are not useful for error handling. When the multi-block erase algorithm is finished, the host can retrieve the erase result by accessing the temporary storage space according to the obtained characteristic command.

The firmware may comprise instructions, such as microcode, which when executed by a controller or processor, may cause operations to be performed, including operations associated with multiple block erase operations of a memory device of a memory system coupled to a host associated with any of fig. 1-6, methods 700-1000, methods similar to methods 700-1000, other methods, and associated device structures and data structures taught herein.

In various examples, a component, controller, processor, unit, engine, or table described herein may include physical circuitry or firmware stored on a physical device, and so forth. "processor" as used herein means any type of computational circuitry, such as, but not limited to: a microprocessor, a microcontroller, a graphics processor, a Digital Signal Processor (DSP), or any other type of processor or processing circuit, including a group of processors or multi-core devices.

As used herein, operating a memory cell includes reading, writing, or erasing the memory cell. The operation of placing a memory cell in an intended state is referred to herein as "programming," and may include writing to or erasing from the memory cell (e.g., the memory cell may be programmed to an erased state).

According to one or more embodiments, a memory controller (e.g., processor, controller, firmware, etc.) located inside or outside of a memory device is able to determine (e.g., select, set, adjust, calculate, change, clear, communicate, adapt, derive, define, utilize, modify, apply, etc.) a number of wear cycles or a wear state (e.g., record wear cycles, count operations of the memory device as they occur, track operations of the memory device initiated by the controller, evaluate memory device characteristics corresponding to the wear state, etc.).

According to one or more embodiments, a memory access device may be configured to provide wear cycle information to a memory device with each memory operation. Memory device control circuitry (e.g., control logic) can be programmed to compensate for memory device performance changes corresponding to wear cycle information. The memory device may receive wear cycle information and determine one or more operating parameters (e.g., values, characteristics) in response to the wear cycle information.

The method examples described herein may be implemented at least in part by a machine or by a computer. Some examples may include a computer-readable medium or machine-readable medium encoded with instructions operable to configure an electronic device to perform the methods described in the above examples. Implementations of such methods may include code, such as microcode, assembly language code, higher level language code, and the like. This code may include computer readable instructions for performing various methods. The code may form part of a computer program product. Further, the code can be tangibly stored on one or more volatile or non-volatile tangible computer-readable media, e.g., during execution or at other times. Examples of such tangible computer-readable media may include, but are not limited to: hard disk, removable magnetic disk, removable optical disk (e.g., compact disk and digital video disk), magnetic tape cartridge, memory card or stick, Random Access Memory (RAM), Read Only Memory (ROM), Solid State Drive (SSD), universal flash memory (UFS) device, embedded mmc (emmc), etc.

The following are example embodiments of methods, apparatuses, and systems according to the teachings herein.

Exemplary system 1 may include: a controller; a memory device; and firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of: generating an initial set of parameters for erasing a plurality of memory blocks of the memory device; and performing erase and verify operations on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to the controller receiving a command to perform the erase and verify operations on the plurality of blocks.

Example system 2 may include the features of example system 1 and may include operations to generate the initial set of parameters, including: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when the plurality of blocks are erased.

Example system 3 may include features of any of the foregoing example systems and may include operations to perform erase and verify operations, including: generating an erase pulse followed by a verify pulse for each of the successive blocks, then proceeding to a next one of the successive blocks; and terminating the erase and verify operations after erasing the second block.

Exemplary system 4 may include features of any of the preceding exemplary systems and may include operations to generate the initial set of parameters, including: identifying the plurality of blocks by entries in a block list, the list having a number of blocks; identifying a first block of the number of blocks for erasing; and generating a count limit equal to the number of blocks to be erased.

Exemplary system 5 may include features of any of the foregoing exemplary systems and may include: starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block of the list; after each block is erased and verified, the count of the block counter is incremented by 1; and terminating the erase and verify operations on the plurality of blocks when the count of the block counter is greater than the count limit.

Example system 6 may include features of any of the foregoing example systems and may include operations to generate the initial set of parameters, including: a chip erase operation is identified in which a starting block in the sequential erase and verify is a block zero of the memory device and an ending block in the sequential erase is a last block of the memory device.

Example system 7 may include features of any of the foregoing example systems and may include a system that is a solid state drive.

Example system 8 may include features of any of the foregoing example systems and may include a system including: a host operable to generate the command operatively received by the controller; and a communication interface coupled to the host and the controller, the communication interface arranged to transmit the command from the host to the controller.

Exemplary method 1 may comprise: generating an initial set of parameters for erasing a plurality of memory blocks of a memory device; and performing erase and verify operations on the plurality of blocks by sequentially erasing and verifying each block of the plurality of blocks in response to receiving a command to perform the erase and verify operations on the plurality of blocks.

Example method 2 may include the features of example method 1 and may include generating the set of initial parameters including identifying a first block of the consecutive blocks as a starting block for erasing and verifying the plurality of blocks; and identifying a second block of the consecutive blocks as an end block when erasing and verifying the plurality of blocks.

Example method 3 may include features of any of the foregoing example methods and may include performing erase and verify operations including: generating an erase pulse followed by a verify pulse for each of the successive blocks, then proceeding to a next one of the successive blocks; and terminating the erase and verify operations after erasing the second block.

Example method 4 may include features of any of the foregoing example methods and may include generating the set of initial parameters, including: identifying the plurality of blocks by entries in a block list, the list having a number of blocks; identifying a first block of the number of blocks for erase and verification; and generating a count limit equal to the number of blocks to be erased and verified.

Example method 5 may include features of any of the foregoing example methods and may include performing erase and verify operations including: starting with the first block, generating an erase pulse followed by a verify pulse for each block in the list, and then proceeding to the next block in the list; incrementing the count of the block counter by 1 after each block is erased and verified; and terminating the erase and verify operation when the count of the block counter is greater than the count limit.

Example method 6 may include features of any of the foregoing example methods and may include generating the set of initial parameters including identifying a chip erase operation, wherein a starting block in the sequential erase and verify is a block zero and an ending block is a last block of the memory device.

Exemplary system 9 may include: a controller; a memory device; and firmware storing instructions executable by the controller to operate the memory device, the instructions including the operations of: generating an initial set of parameters for erasing a plurality of memory blocks of the memory device; simultaneously providing an erase pulse to each of the plurality of blocks; and serially verifying the erase of each of the plurality of blocks after issuing the erase pulse.

Example system 10 may include the features of example system 9 and may include the following operations: while the erasing the plurality of blocks, setting one of the plurality of blocks as unusable to receive another erase pulse in response to determining that the block passes verification.

Exemplary system 11 may include features of any of the foregoing exemplary systems 9 and 10 and may include operations comprising: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse.

Example system 12 may include features of any of the foregoing example systems 9-11 and may include operations comprising an iterative procedure that is: maintaining blocks that fail verification after erase as usable blocks to receive another erase pulse; generating an additional erase pulse for the usable block and serially verifying the usable block after generating the additional erase pulse; and marking each available block that passes verification after the additional erase as a bad block to be unavailable to receive another additional erase pulse.

Exemplary system 13 may include features of any of the foregoing exemplary systems 9-12 and may include: ending the iterative procedure immediately after determining that each block of the plurality of blocks is marked as a bad block or after determining that a maximum loop count of the iterative procedure is reached.

Exemplary system 14 may include features of any of the foregoing exemplary systems 9-13 and may include generating the initial set of parameters including: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks.

Exemplary system 15 may include features of any of the foregoing exemplary systems 9-14 and may include generating the initial set of parameters including identifying the plurality of blocks for erasure by a list of blocks.

Exemplary system 16 may include features of any of the foregoing exemplary systems 9-12 and may include generating the initial set of parameters including: a chip erase operation is identified, wherein a starting block in the erase is a block zero and an ending block is a last block of the memory device.

Exemplary method 7 may include: generating an initial set of parameters for erasing a plurality of memory blocks of a memory device; simultaneously providing an erase pulse to each of the plurality of blocks; serially verifying the erase of each of the plurality of blocks.

Example method 8 may include features of example method 7 and may include: while the erasing the plurality of blocks, setting one of the plurality of blocks as unusable to receive another erase pulse in response to determining that the block passes verification.

Example method 9 may include features of any of the foregoing example methods 7 and 8 and may include: each block that passes verification after erase is marked as a bad block to make the respective block unavailable to receive another erase pulse after passing the verification.

Example method 10 may include features of any of the foregoing example methods 7 and 9 and may include performing an iterative procedure including: maintaining blocks that fail verification after erase as usable blocks to receive another erase pulse; generating an additional erase pulse for the usable block and serially verifying the usable block after generating the additional erase pulse; and marking each usable block that passes verification after the additional erase pulse as a bad block to be unavailable to receive another additional erase pulse.

Example method 11 may include features of any of the foregoing example methods 7-10 and may include: ending the iterative procedure immediately upon determining that each block of the plurality of blocks is marked as a bad block or determining that a maximum loop count of the iterative procedure is reached.

Exemplary method 12 may include features of any of the foregoing exemplary methods 7-11 and may include generating the initial set of parameters, including: identifying a first block of the consecutive blocks as a starting block for erasing the plurality of blocks; and identifying a second block of the consecutive blocks as an end block of the erasing of the plurality of blocks.

Example method 13 may include features of any of the foregoing example methods 7-12 and may include generating the initial set of parameters including identifying the plurality of blocks in a block list for erasure.

Exemplary method 14 may include features of any of the foregoing exemplary methods 7-13 and may include generating the initial set of parameters, including: a chip erase operation is identified in which the starting block in the sequential erase is block zero and the ending block is the last block of the memory device.

Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiments shown. Various embodiments use permutations and/or combinations of the embodiments described herein. It is to be understood that the above description is intended to be illustrative, and not restrictive, and that the phraseology or terminology employed herein is for the purpose of description. In addition, in the foregoing detailed description, it can be appreciated that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Thus the following claims are hereby incorporated into the detailed description, with each claim standing on its own as a separate embodiment.

39页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种NOR FLASH的高温应用方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!