Maintenance operations for multi-level data storage cells
Abstract
Procedure for recovering data from a memory device (103) whose procedure comprises: - detecting a voltage level of a memory cell during a read operation, the return level corresponding to a data value comprising a binary representation, the data value comprising a first resolution; - adapting a mapping function (145) based on one or more of: a current temperature, a supply voltage, a number of read operations carried out in the memory cell and a number of write operations carried out in the memory cell, in which the analog mapping mapper function (145) with regarding digital representations of analog voltages; converting the return level into a digital representation of the voltage level using the adapted mapping function, the digital representation having a second resolution higher than the first resolution and, - determining the data value from the digital representation of the analog voltage signal , in which each data value is selected from a set of possible data values, so that each possible data value corresponds to a range of digital values and in which the determination operation compares the digital representation, at least, to one of the digital value ranges to determine the data value.

Term
0.6 yearsto projected expiry
Projected expiry 14 May 2027, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
14 claims: 6 independent, 8 dependent
- 1CLAIMS REIVINDICACIONES 1. Procedure for recovering data from a memory device (103) whose procedure comprises:1. Procedimiento para la recuperación de datos de un dispositivo de memoria (103) cuyo procedimiento comprende: - detectar un nivel de voltaje de una celda de memoria durante una operación de lectura, correspondiendo el nivel de voltaje a un valor de datos que comprende una representación binaria, comprendiendo el valor de datos una primera resolución;- detecting a voltage level of a memory cell during a read operation, the voltage level corresponding to a data value comprising a binary representation, the data value comprising a first resolution;- adapt a mapping function (145) based on one or more of: a current temperature, a supply voltage, a number of read operations carried out in the memory cell and a number of write operations carried out in the memory cell, in which the mapping function (145) maps analog voltages with respect to digital representations of the analog voltages;converting the voltage level into a digital representation of the voltage level using the adapted mapping function, the digital representation having a second resolution higher than the first resolution and, - adaptar una función de mapeado (145) basándose en una o varias de: una temperatura actual, un voltaje de alimentación, un número de operaciones de lectura llevadas a cabo en la celda de memoria y un número de operaciones de escritura llevadas a cabo en la celda de memoria, en el que la función de mapeado (145) mapea voltajes analógicos con respecto a representaciones digitales de los voltajes analógicos;convirtiendo el nivel de voltaje en una representación digital del nivel de voltaje utilizando la función de mapeado adaptada, teniendo la representación digital una segunda resolución superior a la primera resolución y, - determinar el valor de datos a partir de la representación digital de la señal de voltaje analógica, en la que cada valor de datos es seleccionado a partir de un conjunto de posibles valores de datos, de manera que cada posible valor de datos corresponde a un rango de valores digitales y en el que la operación de determinación compara la representación digital, como mínimo, a uno de los rangos de valores digitales para determinar el valor de datos. - determine the data value from the digital representation of the analog voltage signal, in which each data value is selected from a set of possible data values, so that each possible data value corresponds to a range of digital values and in which the determination operation compares the digital representation, at a minimum, to one of the digital value ranges to determine the data value.
- 5Artículo de fabricación que comprende instrucciones legibles a máquina que están almacenadas en un soporte legible y, cuando se ejecutan por un procesador (112), provocan la realización de operaciones cuyas operaciones comprenden:5. Manufacturing article comprising machine-readable instructions that are stored in a readable support and, when executed by a processor (112), cause operations whose operations include: detectar una señal de voltaje analógico a partir de una celda de memoria durante una operación de lectura, correspondiendo el voltaje analógico a un valor de datos que comprende una representación binaria, teniendo el valor de datos una primera resolución;detecting an analog voltage signal from a memory cell during a read operation, the analog voltage corresponding to a data value comprising a binary representation, the data value having a first resolution;adapt a mapping function (145) based on one or more of: current temperature, supply voltage, number of read operations carried out in the memory cell and number of write operations carried out in the memory cell, so that the mapping function (145) maps analog voltages with respect to digital representations of the analog voltages;converting the analog voltage signal into a digital representation of the analog voltage signal, using the adapted mapping function (145), the digital representation comprising a second resolution greater than the first resolution and adaptar una función de mapeado (145) basándose en una o varias de: temperatura actual, voltaje de suministro, número de operaciones de lectura llevadas a cabo en la celda de memoria y número de operaciones de escritura llevadas a cabo en la celda de memoria, de manera que la función de mapeado (145) mapea voltajes analógicos con respecto a representaciones digitales de los voltajes analógicos;convirtiendo la señal de voltaje analógico en una representación digital de la señal de voltaje analógico, utilizando la función de mapeado adaptada (145), comprendiendo la representación digital una segunda resolución mayor que la primera resolución y determinar el valor de datos de la representación digital de manera que cada valor de datos es seleccionado a partir de un conjunto de posibles valores de datos, de manera que cada posible valor de datos corresponde a un rango de valores digitales y de manera que la operación de determinación comprende la comparación de la representación digital de la señal de voltaje analógico a, como mínimo, uno de los rangos de valores digitales. determine the data value of the digital representation so that each data value is selected from a set of possible data values, so that each possible data value corresponds to a range of digital values and so that the operation Determination includes the comparison of the digital representation of the analog voltage signal to at least one of the digital value ranges.
- 8Article according to claims 5, 6 or 7, further comprising the operations:8. Artículo, según las reivindicaciones 5, 6 ó 7, comprendiendo además las operaciones: Adjust the digital representation of the analog voltage signal before determining the data value. ajustar la representación digital de la señal de voltaje analógico antes de determinar el valor de datos.
- 11Sistema de almacenamiento de información digital cuyo sistema de comprende:eleven. Digital information storage system whose system comprises: 15 una serie de celdas de memoria (124), almacenando cada memoria un valor de datos representado por un nivel de voltaje, comprendiendo cada valor de datos un primer número de bits;fifteen a series of memory cells (124), each memory storing a data value represented by a voltage level, each data value comprising a first number of bits;an analog to digital converter (142) to convert the voltage level into a digital representation of the voltage level, the digital representation comprising a second number of bits greater than the first number of bits, and a processor (112) to adjust the representation digital analog voltage based on heuristics;un convertidor analógico a digital (142) para convertir el nivel de voltaje en una representación digital del nivel de voltaje, comprendiendo la representación digital un segundo número de bits superior al primer número de bits, y 20 un procesador (112) para ajustar la representación digital del voltaje analógico basándose en heurística;caracterizado porque el convertidor analógico-digital (142) adapta una función de mapeado (145) basándose en uno characterized in that the analog-to-digital converter (142) adapts a mapping function (145) based on one o más de: temperatura actual, voltaje de alimentación, número de operaciones de lectura llevadas a cabo en la celda or more than: current temperature, supply voltage, number of reading operations carried out in the cell 25 of memory and number of write operations carried out in the memory cell, so that the mapping function (145) maps analog voltages with respect to digital representations of the analog voltages and converts the voltage level into a digital representation of the voltage level using the adapted mapping function. 25 de memoria y número de operaciones de escritura llevadas a cabo en la celda de memoria, de manera que la función de mapeado (145) mapea voltajes analógicos con respecto a representaciones digitales de los voltajes analógicos y convierte el nivel de voltaje en una representación digital del nivel de voltaje utilizando la función de mapeado adaptada. 30 12. System according to claim 11, wherein the first number of bits is greater than 4. 30 12. Sistema, según la reivindicación 11, en el que el primer número de bits es superior a 4.
- 13Sistema, según la reivindicación 11 ó 12, en el que la heurística es seleccionada del grupo que consiste en:voltaje de celda de referencia, utilización de lectura de la celda de memoria, utilización de escritura de la celda de memoria, temperatura, edad del producto, voltaje de alimentación, niveles de error detectados y combinaciones de 35 los mismos. 14. System according to claims 11, 12 or 13, wherein each data value is selected from a set of possible data values, so that each possible data value comprises a corresponding range of digital values and in which the processor also determines the data value by selecting the data value 40 Possibly it has the corresponding range of digital values that includes the adjusted digital representation of the analog voltage.
- 14Sistema, según las reivindicaciones 11, 12 ó 13, en el que cada valor de datos es seleccionado de un conjunto de posibles valores de datos, de manera que cada valor de datos posible comprende un rango correspondiente de valores digitales y en el que el procesador determina además el valor de datos al seleccionar el valor de datos 40 posible que tiene el rango correspondiente de valores digitales que incluye la representación digital ajustada del voltaje analógico. fifteen. System according to claims 11, 12, 13 or 14, wherein the series of memory cells includes cells of NAND flash memory Four. Five
Independent claims6
165 paragraphs in 5 sections, as filed
Analog to digital conversion of 8 bits or more for the determination of the value of a NAND memory cell
TECHNICAL FIELD
Several implementations may refer, in general, to non-volatile memory devices, and particular implementations may refer to systems and procedures for operating multi-level flash cells.
BACKGROUND
As computing devices have increased their capabilities and performance, the demand for data storage devices has increased. Data storage devices have been used, for example, to store program instructions (ie code) that can be executed by processors. Data storage devices have also been used to store other types of data, including audio, image and / or text information, for example. Recently, systems with data storage devices capable of storing a large amount of data content (e.g. songs, music videos, etc.) have been widely incorporated into portable devices.
Such portable devices include compact data storage devices (DSDs) that can be operated by portable power supplies, such as batteries. Some portable device DSDs may provide nonvolatile memory that can retain data when disconnected from the power source. Portable devices have used several non-volatile data storage devices, such as hard disk drives, EEPROM (programmable read-only memory that can be erased electrically) and flash memory.
Flash memory has become a widely used type of DSD. Flash memory can provide nonvolatile memory in portable electronic devices and in consumer applications, for example. Two types of flash memory are the NOR flash and the NAND flash. The NOR flash normally provides the ability to execute code in situ and is randomly accessible (i.e. as a RAM). Normally, the NAND flash can erase data faster, access data in bursts (for example, 512-byte blocks) and can provide longer-lasting erase cycles compared to the NOR flash. The NAND flash can generally provide non-volatile storage at a low cost per bit as a high density file storage medium for consumer devices, such as digital cameras and MP3 players, for example.
Typical flash memory stores an information unit by storing an electric charge in each memory cell at a voltage representative of a digital data value. Single-level cells store a bit of information depending on whether the cell is charging at a "high" voltage or is being discharged at a "low" voltage. The NAND flash memory has been developed in such a way that it stores up to two bits of information in a single cell decoding the load considering that it is within one of four different voltage ranges. The NOR flash memory has been developed in such a way that it can store up to 8 bits of information in a single cell decoding the load considering that it is within one of 256 different voltage ranges.
Document US2003 / 0217323, which is considered to be the closest state of the art, describes a memory system that operates according to the evaluated quality of the data stored therein. Then, the data can be reconstructed using an Error Correction Code or data quality statistics.
SUMMARY
The associated apparatus and systems, procedures and computer program products described refer to multi-level data storage in flash memory devices.
According to a first aspect of the invention, a method for recovering data from a memory device according to claim 1 is disclosed.
The implementations may include one or more of the following features. The memory cell or cells is the first memory cell and the operation of applying load to the first memory cell includes the application of additional load to the first memory cell to adjust the voltage drop in the first memory cell. The magnitude of the drop in the first memory cell is determined by detecting a reference voltage level stored in a reference cell. The reference cell is associated with a corresponding predetermined voltage level and the magnitude of the drop is determined by comparing the predetermined voltage level with the detected voltage level stored in the reference cell. The magnitude of the fall is determined by detecting voltage levels stored in multiple reference cells. An additional load magnitude applied to the first memory cell is determined based on a correction function.
A signal is received from a main device to initiate a maintenance operation and a load is applied to a
or several of the memory cells at a target voltage that represents the data value in response to a received signal. The signal from the main device indicates a state of power or energy supply. The signal from the main device indicates whether said main device receives AC power and / or if a battery of the main device is charged at a predetermined charge level. The signal from the main device indicates a scheduled maintenance operation.
A signal is received from a flash memory processor to initiate a maintenance operation and one or more of the memory cells is charged to a target voltage that represents the data value in response to the received signal. The signal from the flash memory processor indicates that the flash memory processor has enough bandwidth to perform a maintenance operation. The signal from the flash memory processor indicates that the flash memory processor is idle.
The resolution register entry corresponding to the first memory cell indicates a first resolution corresponding to a first number of possible data values. A signal is received to write in a second resolution corresponding to a second number of possible data values and a resolution log entry corresponding to said memory cell or cells is updated to indicate the second resolution. The target voltage is based on the second resolution. The first number of possible data values is greater than the second number of possible data values and the memory cell or cells include more than one memory cell selected from the series of memory cells. Alternatively, the first number of possible data values is equal to the second number of possible data values and the memory cell or cells include a memory cell other than the first memory cell. The second number of possible data values exceeds the first number of possible data values. The first number of possible data values does not exceed 4 bits; for example, the first number of possible data values is 2 bits or 1 bit. The second number of possible data values is at least 4 bits; for example, the second number of possible data values is at least 8 bits. The data values stored in the first memory cell in the first resolution is a result of a write operation in which data received from a main device is written to the flash memory device.
A signal is received from a main device for writing data received from a main device on the flash memory device. The data value received from the main device is written in the first memory cell in a first resolution corresponding to a first number of possible data values and the first resolution is recorded in the resolution register corresponding to the first memory cell . A signal is received for writing a second resolution corresponding to a second number of possible data values and the second number of possible data values exceeds the first number of data values. A resolution register corresponding to said memory cell or cells is updated to indicate the second resolution and the target voltage is based on the second resolution. A signal is received from the main device indicating a power situation in the main device.
The resolution register entry corresponding to the first memory cell indicates a first resolution corresponding to a first number of possible data values. The resolution record entry associated with the first memory cell is updated to indicate a second resolution corresponding to a second number of possible data values and the first number of possible data values is greater than the second number of possible data values. data. A second data value is written in the first memory cell in the second resolution. The update of the resolution log entry associated with the first memory cell and the writing in the first memory cell in the second resolution are initiated by an error situation associated with a memory cell page that includes the first memory cell. memory. The memory cell page is paired with the second page of degraded memory cells. A logical addressing software code is updated to treat the page pair of memory cells as a single page of memory cells at the first resolution.
The implementations may include one or more of the following features. The determination of whether the power supply satisfies the predetermined condition may be that the main device is receiving AC power or that the main device has a charged battery at a predetermined charge level. Determining whether to perform the maintenance operation may include determining if a processor has an unused bandwidth that exceeds a predetermined threshold.
The implementations may include one or more of the following features. The voltage level is detected in a second reference cell. The application of additional load to memory cells is further based on the voltage level detected in the second reference cell and a second predetermined reference cell voltage. Memory cells are NAND flash memory cells or NOR flash memory cells. Each of the data values includes more than 4 bits.
The implementations may include one or more of the following features. A logical addressing software code converts logical addresses received from the main device into physical addresses
which are used for data access. The main interface is also adapted to receive commands from a main device and to exchange data with the main device.
The implementations may include one or more of the following features. The determination of whether the maintenance operation should be carried out includes the determination of whether the main device has adequate power supply to a predetermined situation, such as that the main device receives AC power or that the main device has a battery charged at a predetermined load level. The determination of whether the maintenance operation should be carried out involves the determination of whether an internal processor has unused bandwidth that exceeds a predetermined threshold. The logical routing software codes for data values rewritten in different physical memory cells during one or more maintenance activities are updated.
In accordance with a second aspect of the invention, a manufacturing article is disclosed, as claimed in claim 5. According to a third aspect of the invention, a system for storing digital information is disclosed, such as claimed in claim 11.
Some implementations may provide one or more advantages. For example, some implementations may provide high performance data storage functions. Density and / or storage capacity may increase. Some examples may provide greater reliability and / or lower data error rates. Several implementations may allow higher levels of integration, miniaturization, less electromagnetic noise and / or better noise margins. Some implementations allow lower system costs in auxiliary systems, such as voltage supplies to logic circuits and / or programming / erasing circuits.
The details of one or more implementations of the invention are set forth in the accompanying drawings and in the following description. Other features of the invention will be apparent from the description, drawings and claims.
DESCRIPTION OF THE DRAWINGS
Figure 1 shows an example of a multi-chip capsule architecture that includes a NAND flash memory chip and a flash disk controller.
Figures 2A and 2B together show a mapping between cell voltages and digital values stored in a memory cell.
Figures 3A and 3B show flow charts illustrating examples of processes for reading data pages from a flash memory with multi-level cells.
Figure 4 shows a flow chart illustrating an example of a process to read a page of data from a flash memory.
Figure 5 shows a flowchart illustrating an example of a process for performing error correction operations to correct a data page containing bit errors.
Figures 6A to 6C together show examples of operations to execute an alternative value command.
Figures 7A and 7B show flow charts illustrating an example of processes for writing data on a flash memory page.
Figures 8A and 8B show flow charts illustrating examples of processes for adjusting the cell resolution of a memory page.
Figure 9 shows a flow chart illustrating an example of a maintenance process.
Figure 10 shows a flow chart illustrating an example of a logical addressing process in the flash disk controller.
Figure 11 shows an example of a system that includes a load pump and an analog-to-digital converter external to the NAND flash memory chip.
Figure 12 shows an example of a system that includes an uncoupled power input on a NAND flash memory chip.
Similar reference symbols in the different drawings indicate similar elements.
DETAILED DESCRIPTION OF ILLUSTRATIVE EXAMPLES
Several implementations refer to a flash memory that can store information in multi-level deep cells (MLC). Multi-level deep cells can encode at least several bits of data according to a cell voltage. Some implementations refer to architectures to implement systems that include deep MLC flash memory. Some implementations refer to techniques for carrying out data storage operations with deep MLC flash memories.
Figure 1 shows an example of a multi-chip capsule (MCP) -100- that provides data storage for a main device (not shown). The MCP -100- includes a NAND -103- flash memory chip for storing data and a flash disk controller (FDC) -106- that facilitates access to flash memory in response to read and / or write commands from the main device In some implementations, the NAND -103- flash memory chip stores data in deep MLC. For example, the cells of the flash memory chip -103- may include 3, 4, 5, 6, 7, 8, 9, 10 or more bits of information. The MCP -100- can provide data storage on various portable devices, such as digital cameras, other image storage devices, portable audio devices, personal digital assistants (PDAs) and digital video recorders, for example. Some implementations can also be used in other applications, the examples of which may include desktops, servers, wireless routers or integrated applications (eg, automotive), particularly in situations where rapid data access is desired. In general, the apparatus and techniques according to the examples described herein can be implemented to increase flash memory density and / or perform high-performance and / or reliable non-volatile data storage operations.
As an illustrative example, the MCP -100-can store a data file by storing an octet (i.e., 8 bits) of information in each cell of a group of cells (for example, a page or a block) of a flash memory. Other examples may have resolutions of 16 bits, 32 bits, 64 bits or higher. In some implementations, the resolution can be determined by detecting one or multiple electrons in a cell door. In other implementations, any practical number of bits of information can be encoded in a voltage to which an individual flash memory cell is loaded.
The FDC -106- includes a main interface -109-, a processor -112- and a flash interface -115-. The FDC -106-receives commands and / or data (for example, software code updates or user data) from and / or transmits data to a main device, such as a processor or desktop computer, a server or a device portable computer, through the main interface -109-. Communication with the main device can use custom or standard protocols, such as Advanced Technology Attachment (ATA), Serial ATA (SATA), Block Abstracted NAND, Secure Digital (SD) or Multi-Media Card (MMC), for example. In some implementations, the MCP -100-may be part of the same product as the main device. In other implementations, the main device may be in operational communication with the MCP -100- through a communications link (eg, USB, Firewire, Bluetooth) with at least one other processor-based device. For example, a main device can access the MCP -100- remotely by sending control messages and sending and receiving data messages through at least one network, which may include wired, wireless, fiber optic links or a combination thereof. Such networks may support packet-based communications and may include a local network or a wide area network, such as the Internet.
The main device processor can read data from and / or write data to the NAND flash memory chip -103 using a logical addressing scheme processed by the FDC -106- to identify physical addresses of the flash memory. In some implementations, the main interface -109- may be configured to communicate with the main device using an ATA / IDE interface. The -112- processor can process the received command and use the flash interface -115- to access the NAND -103- flash memory chip. The FDC -106 may be configured to provide functionalities, such as deterioration management, block management, error correction and logical addressing management functionalities, to improve the performance of the NAND -103- flash memory chip, such as increasing reliability , reduce reading and writing time, improve energy efficiency and increase capacity per chip volume. Certain techniques and devices described in this document can be applied to NAND and / or NOR flash memory, to other types of memory that can be erased electrically or in which it can be written electrically, or to memories in which the resolution of data access is given in pages or in blocks.
Although only one NAND flash memory chip -103- is shown in Figure 1, the MCP -100- can include more than one NAND flash memory chip -103-. Some implementations may include any combination of nonvolatile memories, which may include NAND flash, NOR flash or programmable read-only memories that can be erased electrically (EEPROM). In some illustrative examples, the MCP -100- may include two, three, four or at least eight NAND -103- flash memory chips. For example, the MCP -100- may include a flash disk controller -106- on a chip that is encapsulated with (for example, in a stack) four NAND -103- flash memory chips.
In some implementations, the flash disk controller -106- and the flash memory chip -103- may be implemented on a single chip. In other implementations, one or more of the components of the flash disk controller -106- may be implemented totally or partially externally to a single chip or to the MCP -100-. For example, all or part of the dynamic and synchronous random access memory (SDRAM) -151- and / or non-volatile memory (NVM) -154-may be implemented externally to the MCP -100-. In some implementations, all or part of the flash disk controller -106-may be encapsulated separately with respect to the flash memory chip -103-. In an illustrative example, the NVM -154-, the SDRAM -151-, the main interface -109- and at least a part of the processor -112- can each be implemented externally to the MCP -100-. In other implementations, the analog and / or digital signals between the flash interface -115- and the flash memory chip -103- can be routed externally to an integrated capsule.
Remote or distributed transmission structures (eg, protected and / or controlled impedance signal paths) can be implemented to transport signals to and / or from at least one flash memory chip -103-. In some implementations memory expansion may be provided by installing additional capsules of nonvolatile memory. Intermediate storage and / or routing devices can be used to support the distribution of analog and / or digital signals to a variable number of memory chips -103-. In addition, the functions of the processor -112- can be carried out externally to the MCP -100-. In several examples, the processor -112- can be implemented, totally or partially, in a circuit on the same substrate (for example, printed circuit board) or in the same product as the MCP -100-. The processor -112- can be implemented from another computing device in operational communication with the MCP -100- through a communications link (for example, wired, wireless, fiber optic or a combination thereof).
The MCP -100-can have any practical memory size, such as at least -100- gigabytes or greater. In the described example, the NAND flash memory chip -103- is organized to include a plurality of flash memory blocks -118-. In some implementations, the NAND flash memory chip -103- may include hundreds or thousands of flash memory blocks -118-. Each flash memory block -118- includes a plurality of flash memory pages -121-. As shown, each flash memory page -121-includes cells that can store data -124- and cells that can store error correction codes (ECC) -127 associated with the data. As an example, the flash memory page -121- can store 2048 bytes of data and 64 bytes of ECC data. The data cells -124- store information received from the flash disk controller -106-. ECC cells -127- store additional integrity metadata (for example, ECC data) that is associated with the data stored in data cells -124-. In several implementations, ECC data allows the flash disk controller -106- to detect and / or correct bit errors in the data.
In the illustrated example, each flash memory block -118-also includes one or more reference cells -130a-, -130b-, -130c-. In some implementations, the FDC -106-can monitor the tension of the reference cells -130a-, -130b-, -130c-to estimate the degree of variation or voltage gap in the cells -124-, -127-. In each block -118-, the reference cell -130a-may be located at the beginning of the block -118-, and the reference cell -130b- may be located at the end of the block -118-. Each flash memory page -121- can include reference cell -130c-. In some implementations, a greater or lesser number of reference cells may be distributed in any pattern through the pages, blocks and memory chips -103- to determine the possible performance of the cells -124-, -127-.
In some implementations, the reference cells may be located in or around cells that experience read / write usage levels that are representative of the level of use of certain data cells of interest. Compensation procedures may be based on comparing non-reference cells with other non-reference cells. For example, if the tensions in a plurality of cells on the same page or block are relatively low, then the compensation may include adjusting thresholds (e.g., voltage thresholds between different value levels in a cell) to lower values according to the measured values, so that reading errors can be substantially reduced. Other examples include determining a correction function based on the voltages detected in the reference cells, where the correction function adjusts the detected voltage before converting the detected voltage to the digital data value represented by the memory cell.
In some implementations, memory cells can be refreshed by applying an additional load to a plurality of cells to correct detected voltage gaps. For example, if the voltage level of one or more reference cells exceeds some threshold amount of voltage variation, then the memory cells of the
<dl><dt>(s) </dt><dd>Page (s) or block (s) associated with the reference cell (s) can be adjusted by applying an additional load or can be rewritten to restore the cells to appropriate voltage levels according to the stored data. Such adjustments can be carried out immediately after detecting the voltage variation in the reference cell (s) or as part of a subsequent maintenance operation. In some implementations an additional load may be applied or memory cells may be rewritten based on the difference between the </dd></dl>
<dl><dt>(s) </dt><dd>reference cell voltage (s) detected and the target cell voltage (s), which is supposed to indicate the approximate amount of variation or voltage gap for both cell (s) s) of reference as for the corresponding data cells. </dd></dl>
In other implementations, the application of an additional load or the rewriting of the memory cells can be carried out by reading all the cells, carrying out any necessary adjustment in the thresholds (for example, using a correction function based on the stresses of reference cell and / or using other techniques described in this document), and carrying out a correction of errors in the detected data to obtain the stored data. The data can then be used to determine appropriate voltage levels or the amount of additional load necessary for the various memory cells to correct the identified voltage gap or gap. In some implementations, the amount of additional load applied can be determined according to a correction function that is identical or similar to the correction function used to adjust the detected voltages before converting the detected voltages into digital data values.
In some implementations, flash memory cells can be reallocated adaptively. For example, reference cells can be added, removed, reassigned and / or redistributed as necessary in response to read or write usage information, temperature, product age, supply voltage (e.g. low battery, AC line power), and / or error levels detected. If there are few errors in certain blocks or pages of memory, then fewer cells can be assigned as ECC cells -127- and / or as reference cells 130, which allows a greater number of data cells -124-. Relative cell assignments to reference, data and ECC functions, as well as the determination of individual cells, can be dynamically adjusted according to the current operating conditions and / or according to predetermined conditions. For example, the determination can be adjusted based on error rates, the number of ECC cells per page can be based on error rates and reading and writing history information, and the location and distribution of the cells in the Reference may be based on error rates and the age of the product. This example simply illustrates that the controller -106- and the flash memory chip can be dynamically adjusted according to various criteria. Other criteria may include the criticality of the data, the availability of the power supply (for example, AC line power, battery power), and defined criteria on the relative importance of maximizing memory size, performance by speed and data integrity. For example, maintaining a high cell resolution that requires a large number of software fixes can result in longer access times. The criteria can be adjusted by the user, the product manufacturer or the software, according to the needs of the application.
In some implementations, data that requires a large number of software corrections may be rewritten in a maintenance operation to correct the load variations associated with the passage of time or to correct pages of memory cells that have begun to degrade. Normally, during the resolution change of one or more memory cells, the data will be written to a different page of memory cells, and can be written in the same resolution or in a different one. In some implementations, the original memory cell page will go to a lower resolution, which will often be required as memory cells age and degrade. When the rewriting of the data is carried out as a result of a variation or identified voltage gap, it is possible to write the data in the same page or block, or in different ones, of the memory cells.
The flash interface -115- provides direct control, communication establishment and data transfer access to the flash memory chip -103-. The flash interface -115-includes a control interface -133- and an analog interface -136-. In some implementations, the control interface -133- can send control, address and data signals to the flash memory chip -103-. Commands and memory addresses can be transmitted in digital signals or analog signals. The flash disk controller -106-can also receive analog signals from the flash memory chip -103-. The flash disk controller -106- may include a processor to interact with the flash memory logic of the flash memory chip -103-, and this processor to interact with the flash memory logic of the flash memory chip may be integrated into the flash interface -115-.
In response to a read command, the flash memory chip -103- can provide cell voltages representing the data stored in individual data cells -124-. The flash disk controller -106- can receive the analog voltage signals provided from each memory cell of the flash memory chip -103-. These analog cell voltages or analog voltage signals can be transmitted to the analog interface -136- of the FDC -106-. In some implementations, the flash interface -115- may also include a data bus other than the control interface -133- and the analog interface -136- to communicate with the flash memory chip -103-.
The analog interface -136- can include an analog interface module (analog FE) -139- and an analog-to-digital converter (ADC) -142-. After receiving the analog signals, the analog FE -139- can condition the signals as necessary, for example providing a mismatch, a corrective level offset, gain, intermediate storage, filtering or a controlled impedance to minimize reflections. The analog FE can provide a high impedance input to minimize the load of the flash memory cell, and a low impedance output to activate a sampling and retention or tracking and retention circuit that is coupled to an ADC -142 input -. In some implementations, the analog FE -139- may also include an analog multiplexer (not shown) to select a line from a plurality of analog output lines of one or more flash memory chips.
The ADC -142- processes the analog value to determine a corresponding digital data value representation of the voltage in the data cells -124-, -127-. The ADC -142-receives the conditioned analog signal and converts the analog signal into a digital representation of the analog voltage. Then, the ADC -142- (or an ADC processor) converts the digital representation into a digital data value represented by the voltage stored in the memory cell according to, for example, a mapping function. The -112 processor can also be used to convert the digital representation to a digital data value. The digital representation of the analog voltage may include sufficient information to allow the ADC -142- or a processor to distinguish between a plurality of analog voltage levels that each represent a particular digital data value. The digital representation may comprise a greater number of data bits than the digital data value. In some implementations, the ADC -142- may be integrated into the flash memory chip -103- instead of being included in the flash disk controller -106-. In this case, the flash interface -115- can receive digital representations of cell voltages or digital data values of the flash memory chip -103-.
An example of a mapping function -145- is shown. Depending on the mapping function -145-, the ADC -142- or processor -112- can convert an analog cell voltage into a digital representation and / or a digital data value. For example, there may be a series of analog voltage thresholds that can be used to map an analog voltage with a digital representation and / or a digital data value. Also, the mapping function -145-can also illustrate the conversion of a digital representation of the analog voltage into a digital data value. For example, one or more digital representations of the analog voltage can be mapped with a particular digital data value, where each digital data value has a corresponding different set of one or more digital representations.
In some implementations, the ADC -142- or the processor -112-may receive parameters that modify the mapping function -145-. For example, the FDC -106- can adapt the mapping function -145- according to the current temperature, the supply voltage, the number of readings and writes of the page data and / or the voltage in the reference cells -130a-, -130b- and / or -130c-. In some implementations, adaptations to the mapping function may be based on voltage characteristics of neighboring data cells -124-, ECC cells -127- and / or other cells. The mapping -145- between cell voltages and digital data values is described in greater detail with reference to Figures 2A and 2B. In some implementations, the ADC -142- or a processor can also operate according to an alternative value command to retrieve alternative values for the received analog signals or digital representations of the analog signals. Example implementations of the alternative value command are described in greater detail with reference to Figures 6A through 6C.
The flash disk controller -106-also includes an ECC -148- motor. In several implementations, the ECC -148-engine can carry out checks and corrections of hardware and / or software errors using ECC -127- cells. In some implementations, the ECC engine -148- can provide data recovery based on a state machine. For example, the ECC engine -148- can detect the number of error bits in a data page. Then, the ECC engine -148- can determine which ECC algorithm to use. As an example, the ECC engine -148- can be configured to first attempt a hardware ECC algorithm that uses, for example, Hamming or Reed-Solomon codes. If the hardware ECC algorithm is not satisfactory to retrieve the data page, then a software ECC correction can be attempted. An example procedure illustrating the use of hardware ECC, software ECC and other combined techniques is described with reference to Figure 5. In some implementations, the ECC engine -148- can provide error correction of up to minus 10% or more of the size of a data page. In some examples, a processor can determine which ECC algorithm should be used.
In some implementations, the -112 processor will rewrite or refresh the data stored on a flash memory page if an ECC algorithm is used to retrieve data that exceeds a predetermined number of error rate. In other implementations, the processor -112- will record in a maintenance record the physical and / or logical position of the data that included such errors. Then, the -112 processor will rewrite or refresh that data during a maintenance operation (see Figure 9). Maintenance operations can be carried out when the main device is operating under predetermined power conditions, when the processor -112- has a predetermined amount of excess bandwidth and / or at planned intervals.
The flash disk controller (FDC) -106- can include a dynamic random access memory (DRAM). The flash disk controller -106- in this example also includes a dynamic and synchronous random access memory (SDRAM) -151-. For example, the SDRAM -151- can be a single data transfer rate SDRAM or a double data transfer speed SDRAM. In some implementations, the FDC -106- can use SDRAM -151- as a high-speed and high-density buffer to store temporary data such as output data for the main device and alternative digital values for a data page, for example. The FDC -106- may also include other types of RAM, such as DRAM. As an example, the FDC -106- can receive analog data from the NAND -103- flash memory chip.
Then, the FDC -106- can convert the detected analog voltages into digital data, including, in some cases, alternative digital data values for one or more of the cells. Then, the ECC engine -148 checks and corrects the digital data, possibly checking multiple different combinations of data values and alternative data values for the cells of each flash memory page -121-. If the error correction is satisfactory, then the -112 processor can store the digital data in a main output buffer of the SDRAM -151-. In some implementations, the main device may recover data from the main output buffer. Alternatively, the flash disk controller -106 can forward data from the main output buffer to the main device. The SDRAM -151-, or other temporary memory, can also be used to store data to be written to the flash memory chip -103-.
The FDC -106-also includes a non-volatile memory (NVM) -154-. In this example, NVM -154-includes deterioration management software code -157-, block management software code -160-, logical addressing software code -163- and cell resolution registers -166-, each of which it contains instructions (or pointers to instructions in flash memory) that, when executed by the -112- processor, perform certain operations. In some implementations, the NVM -154- may be separated from the NAND -103- flash memory chip. For example, the NVM -154- can be a NOR flash memory or other NAND flash memory. In other implementations, the NVM -154- may be one or more pages of the NAND -103- flash memory chip. In other implementations, the NVM -154- can store pointers or memory locations to the data stored on the NAND -103- flash memory chip. In some implementations, the processor -112- can execute the deterioration management software code -157-, the block management software code -160- and the logical addressing software code -163- to improve efficiency, performance and / or the reliability of the MCP -100-.
The processor -112- can use the deterioration management software code -157- to manage the deterioration of pages -121-, blocks -118- or chip -103- of the MCP -100-. For example, the deterioration management software code -157-may include instructions that, when executed by the processor -112-, carry out operations that include load balancing operations to exchange data from the memory page more frequently used by those of a less used memory page. Exchange operations may also include an update of the logical addressing software code -163-.
The deterioration management software code -157-can be activated during a maintenance operation. In some implementations, the physical and / or logical addresses of each read operation are recorded in a maintenance log. Each write operation can also be recorded in a maintenance log. Then, the deterioration management software code -157- can use predetermined threshold values to determine how to reorder the data stored between the memory cell pages. These threshold values, for example, can include 100 or 1000 page readings of memory cells over the course of a week or a month. In other implementations, the threshold values may be based on a percentage of the total number of read operations, or a deviation from the average number of readings per page and per unit of time. An example of a maintenance operation is shown in Figure 9.
The block management software code -160- may include code for managing invalid blocks of the flash memory chip -103-. For example, the block management software code -160- may include error history information of the flash memory blocks -118-. In some implementations, error information can be used to maintain cell resolution on each of the flash memory pages. An example of the block management software code is described in greater detail with reference to Figures 8A and 8B.
The block management software code -160-, possibly together with the logical addressing software code -163- and / or the cell resolution registers -166-, It can also be used to match sets of invalid blocks or invalid pages that have reduced resolutions (updated in cell resolution registers -166-) on the flash memory chip -103- and treat the set of invalid blocks or Invalid pages for logical addressing purposes (perhaps updated in the logical addressing software code -163- and / or in cell resolution records -166-) in a manner equivalent to a single block or a single page of memory cells that have the initial higher resolution. The block management software code -157- can be activated during a maintenance operation. An example of a maintenance operation is illustrated in Figure 9.
The logical addressing software code -163- may include code to convert a logical address of a main device command into physical addresses of the NAND flash memory chip -103-. In some examples, a logical page may be associated with multiple pages of physical memory on the NAND -103- flash memory chip. The logical addressing software code -163- manages the conversion and updating of the logical address table of the NVM -154-. In one example, the logical addressing software code -163- can dynamically maintain links between logical block addresses of the main device and physical page addresses when the pages go from a resolution of 10 bits to a resolution of 8 bits, for example, or when the mapping of logical block addresses with different physical page addresses is modified for deterioration management purposes. Intermediate forms of addresses can be generated in the process of conversion between logical and physical addresses, for example. Intermediate forms of addresses can be generated, processed,
stored, used and / or otherwise handled to carry out various operations of nonvolatile memory. An example of the logical addressing software code is described in greater detail with reference to the figure
10.
The cell resolution records -166- store information about the cell resolution on each flash memory page -121-. For example, the NAND flash memory chip -103- can be an 8-bit MLC flash memory. In some implementations, part of the flash memory block -118- may be degraded or updated in response to various conditions. Illustrative examples of such conditions include erroneous performance, temperature, voltage conditions, the number of read or write cycles of individual cells, groups of cells, pages, cells in a neighboring position, reference cells, cells with a history of use of comparable reading and / or writing, or other factors, such as the age of the device. Information about all or some of these conditions may be stored in a data storage device, or it may be determined
or be estimated from one or more bits of stored information. In one example, the stored information may include read and write usage history data representing the utilization levels for at least some of the memory chip cells -103-. The processor -112- can update the cell resolution records -166- to reduce a cell resolution of a degraded memory page to, for example, 4 bits, so that the flash memory page -121- can still be used With a smaller memory size. In other implementations, the cell resolution registers -166- can also store the cell resolution for each flash memory block -118-.
In some implementations, the cell resolution registers -166- are set down to a resolution of a single bit or other resolution of a low number of bits before transferring data from a main device to the memory cells of the MCP -100-. This process is described in greater detail in Figure 7B. The reduction in value in cell resolution registers -166- before data transfer may allow higher data transfer speeds since less precision is needed to load each memory cell. The transferred data can be rewritten later in memory cells at a higher resolution. In some implementations, the transferred data may be rewritten at a higher resolution during a maintenance operation (for example, at a later time when sufficient processing resources are available and the rewriting does not interfere with other read or write operations). In some implementations, the low-resolution cell data transfer is recorded in a maintenance log.
In some implementations, the logical addressing software code -163-, the resolution records -166 and / or the block management software code -160- will group degraded memory pages (or degraded memory blocks) and treat the group for purposes of logical addressing as a single page (or block) of non-degraded memory. The memory pages in the degraded memory page group do not need to be adjacent memory pages. The group of degraded memory pages may include memory pages of different blocks and even of different memory chips. In some implementations, each degraded page or block of memory in a group of degraded pages or blocks of memory degrades in response to an error condition associated with the page or block.
Figures 2A and 2B jointly show mappings between cell voltages and digital data values stored in the memory cell. As shown in Figure 2A, an illustrative distribution of digital data values -200- of an 8-bit memory cell is shown. An 8-bit memory cell includes 256 possible digital data values; A 4-bit memory cell includes 16 possible data values. The number of possible data values is equal to 2n (where n is equal to the number of bits), but it is not necessary that the number of possible digital data values corresponds to a number of n bits of possible digital data values. Each memory cell can have any integer number of possible digital data values greater than 1, for example, some memory cells can have 10 possible data values. The digital value distribution -200- includes digital value distribution curves -205- to -210- that represent the voltage distribution for each digital data value. Each digital value distribution curve (for example, -205- to -210-) represents a range of digital voltage values corresponding to voltage levels associated with each possible digital data value.
During a write operation, each memory cell receives a load for an analog voltage corresponding to a digital data value selected from one of the possible digital data values. Normally, this corresponding voltage is within the distribution curves -205- to -210-for the desired digital data values. This corresponding voltage can also be an objective voltage corresponding to the digital data value. For example, if a cell voltage is within the distribution -207-, then the digital value stored in the cell can be 02H. During a read operation, an analog voltage signal is detected from each cell. Then, the ADC -136- converts the analog voltage signal into a digital representation of the analog voltage signal. Then, this digital representation is compared with at least one digital value distribution curve to determine the digital data value represented by the analog voltage stored in the read memory cell.
The distribution of digital data values -200-includes gray areas -215- between the distribution curves of digital data values -205- to -210-. In some implementations, when the ADC -142-receives a voltage of
cell or detects an analog voltage signal that is within one of the gray areas -215-, the ADC -142 can, for example, convert the cell voltage to the nearest adjacent digital data value. For example, if the ADC -142- receives a cell voltage substantially close to a voltage level -220-, then the ADC -142 may opt for the nearest adjacent digital data value, specifically FEH. In some implementations, the FDC -106-may also include an alternative value command that orders the ADC -142- to opt for an alternative value instead of the nearest adjacent value based on some parameters.
In some implementations, the FDC -106- can use both the nearest adjacent digital data value and one or more alternative values in an error correction process that attempts to correct a page or block of data values. In addition, the FDC -106- can assign an uncertainty to particular cell voltages or corresponding data values depending on the location of the cell voltage in the digital data value distribution curves -205- to -210- or in the gray areas -215-. The assigned uncertainty can be used by an algorithm that tries to correct a page or block of data values. Some examples of these parameters may include one or more of the temperature, the number of readings in the cell, the number of writes in the cell, the supply voltage and the voltage in the reference cells -130a-, -130b- , -130c-. In some examples, the cell voltage may fall below a minimum cell voltage (Vmin). The FDC -106 can implement a correction by adding a offset to the received cell voltage. This offset can be added by analog FE -139- or added digitally by ADC -142- or processor -112-.
In some implementations, the FDC -106- can dynamically adjust the positions and widths of gray areas -215- by alternating the distribution of digital data values -200-. For example, the FDC -106- may include maintenance software code that adjusts gray areas -215- depending on parameters such as a
or more reference cell voltages, the use of the memory cell and other heuristics that may have been previously loaded in NVM -154-. The maintenance software code can also carry out the update of the cell resolution registers -166-. For example, each chip -103-, the analog interface -135 and / or the MCP -100- can be characterized in the manufacturing time, and a linearization table, correction factors or other corrective adjustment can be stored in the non-volatile memory of the MCP -100-. In some cases, the maximum and minimum voltage levels (Vmax and Vmin) as well as the digital value distribution curves -205a -210- can be adjusted and / or redistributed based on empirical tests of the cells during their useful life.
A graph -250- that relates cell voltages to digital values is shown in FIG 2B. Graph -250 includes an ideal voltage characteristic -255- that the ADC -142- uses to convert analog voltages to digital values. In some examples, the data cell -124- can store digital values according to non-ideal voltage characteristics -260-, -265- due to, for example, temperature heuristics, age of the cell, voltage tolerance of supply or load pump, the non-linearity of the ADC -136-, the errors detected in the memory cell and / or the number of readings and writes in the cell. The FDC -106 can compensate in various ways the voltage characteristics -260-, -265- to approximate the ideal characteristics -255-. Exemplary compensation procedures are described with reference to Figures 3A, 3B, 4, 5 and 6A at 6C.
Figures 3A and 3B show flow charts illustrating examples of processes -350-and -300- for reading a data page of a NAND flash memory. The processes -350- and -300- include operations that can generally be carried out by the -112- processor. In some implementations the processes -350-and -300-can also be carried out, complemented or extended by other processing and / or control elements that can be incorporated with the ADC -142-. For example, there may be a controller or a compensator in analog interface -136- that performs all or some of the operations of processes -350-and -300-.
Figure 3A illustrates a process that converts detected voltage levels of multi-level memory cells into digital data values. The process -350- begins with the detection of an analog voltage level of a multi-level memory cell (step -355-). This voltage can be detected by analog interface -136-, for example. The analog interface -136- can include an input that can be operated to receive analog signals from a flash memory chip -103-. The flash disk controller -106- can also include a control module for selecting memory cells from which the input receives analog signals. In step -360-, the analog voltage signal is converted into a digital representation of the detected analog voltage. This conversion can be carried out by the ADC -142-. The digital representation may have enough data to allow the ADC -142- or processor -112- to distinguish the level of analog voltage stored by a memory cell from among a plurality of possible voltage levels that represent a data value digital. This can be achieved by a digital representation comprising more data bits than the digital data value represented by the voltage stored in the memory cell.
Figure 2A helps illustrate this concept. The range of possible analog cell voltages can be divided into multiple segments (for example, as represented by the voltage level -220-), each corresponding to a digital representation of the analog cell voltage. Each digital value distribution curve -205- to -210- and each gray area -215- can include multiple segments of this type, which allows the use of digital representations that have a higher resolution than the value distribution curves
digital -205- to -210-, which can provide additional information related to, for example, the place occupied by a cell voltage in a digital value distribution curve -205- to -210-or in a gray area -215 -.
In step -365-, the digital representation is converted into a digital data value based on a distribution of digital data values. The distribution of digital data values may be stored in cell resolution registers -166- and may be the distribution of digital data values -200-shown in Figure 2A. In step -335-, a processor or controller determines if there are more memory cells to read. If so, then the process returns to step -355-. Otherwise, the process -350- ends.
Figure 3B illustrates in greater detail a process that stores identified digital data values and marks the location of uncertain digital data values. The process -300- begins when, for example, processor -112- receives a command to retrieve a page of data from the NAND -103- flash memory chip. In step -305-, the processor -112-retrieves cell resolution information for a page from the cell resolution records -166-. Then, in step -310-, the processor -112-receives from the ADC -142- a digital output value for a data cell. The digital output value for the data cell is a digital representation of the voltage detected from the data cell. The ADC -142- determines in step -310- the value of digital data received based on the stored thresholds. In some implementations, processor -112- can use information from cell resolution records -166- to determine the set of thresholds used. These thresholds may be related to the digital value distribution curves -205- to -210- described above in relation to Figure 2A. For example, processor -112- can use a set of thresholds for an 8-bit cell and another set of thresholds for a 2-bit cell. In some cases, the -112 processor may use a set of thresholds for an 8-bit cell and another set of thresholds for a different 8-bit cell. Each set of thresholds may correspond to a possible distribution of digital data values and may constitute intervals of digital representations of analog voltages that correspond to possible digital data values.
In step -320-, the processor -112- determines whether the digital data values for a received analog voltage value are uncertain. In some implementations, the processor -112- may determine that a digital data value is uncertain if the cell voltage is in a gray area -215- of the digital value distribution -200- or if the cell voltage is close to the boundary between a curve of distribution of digital values -205- to -210- and a gray area -215-. In some implementations different levels of uncertainty can be assigned depending on where the cell voltage is in the distribution of digital values -200- (for example, higher voltages may tend to have greater uncertainty and / or the uncertainty may be higher for cell voltages that are closer to the central part of a gray area -215-). In step -320-, if processor -112- determines that the digital values received are not uncertain, then processor -112- stores the digital value received in a main output buffer in step -325-. If the processor -112- determines in step -320- that the received digital value is uncertain, then the processor -112- can mark the location of the uncertain digital value in a table of masks in step -330- and then execute the stage -325-. In some implementations, one or more alternative values may also be stored for later use to determine which value (for example, the uncertain value or one of the alternative values) is correct.
After the processor -112- stores the digital value received, the processor -112- determines, in step -335-, if there are more cells to read. For example, the -112 processor can check if the end of the memory page has been reached. If there are more cells to read, then the process returns to step -310-. If there are no more cells to read, the -300- process ends. In some implementations, the process will also record in a maintenance log the number of uncertain data values associated with a page or block of memory cells. In other implementations, the process will record the physical and / or logical position of a page and / or block of memory cells if the number of uncertain data values exceeds a predetermined threshold.
Figure 4 shows a flow chart illustrating an example of a process -400- to read a data page of an MLC flash memory, such as the NAND flash memory chip -103-, using a correction function to adjust the mapping of cell voltages with digital values. The -400- process can be carried out by the -112- processor, for example. The -400- process begins at step -405-when the processor -112- determines whether a read instruction has been received. For example, the FDC -106- can receive a read instruction from the main device through the main interface -109-. If, in step -405-, processor -112- determines that no read command has been received, then step -405- is repeated.
If processor -112- determines that a read command has been received in step -405-, then processor -112- updates a correction function in step -410- based on temperature, the number of readings or writes on the memory page, the voltage supplied and / or other operating conditions of the NAND -103- flash memory chip. In some implementations, the ADC -142- or the analog interface -136- can use the correction function to adjust the cell voltages measured in the analog interface module -139 before the cell voltages become digital values. In other implementations, the -112-processor can use the correction function to adjust the thresholds in the mapping function, so the ADC -142- can convert the analog voltage into adjusted digital values. The correction function can be
Different for different cells. For example, memory cells that have higher detected voltages may have a greater adjustment due to the correction function.
Next, the processor -112- selects a reference cell in step -415-. For example, the processor -112- can select one of the reference cells -130a-, -130b- or -130c-. Then, the processor -112-reads, in step -420-, a reference voltage stored in the selected reference cell. In step -425-, processor -112- updates the correction function based on the reference voltage. For example, if it seems that a reference voltage varies by ten percent, then the -112 processor can adjust the correction function to compensate for the voltage gap in the data. In some implementations, the correction function will non-linearly adjust the detected voltage levels. The correction function can further adjust the detected voltage levels higher than the lower detected voltage levels. The correction function can adjust detected voltages at different voltage levels by different adjustment amounts or by different adjustment percentages.
In some implementations, the thresholds can be dynamically adjusted on the fly during operation. In some implementations, the processor -112- can store a fixed number of previous samples, for example one hundred samples, of reference voltages read previously and use a variable average of the stored reference voltages to update the correction function. The correction function can also be updated according to other functions, which may require the average, median, mode or a weighted average, for example. For example, a weighted moving average can be used. Then, the processor -112-, in step -430-, determines whether to select another reference cell. As an example, the -112 processor can determine if there is enough information to adjust the correction function. In another example, the -112- processor can be configured to read all the reference cells in some memory blocks as well as in some memory pages depending on the read command.
If, in step -430-, processor -112- determines that there is another reference cell to read, then process -400- returns to step -415-. In some implementations, the process of adjusting the correction function by reading the voltage in reference cells is triggered by the errors detected in the data recovered from a group of memory cells. In other implementations, the errors detected will result in a mismatch of the thresholds to determine a data value associated with a detected voltage. In some implementations the value of these thresholds can be automatically reduced but, in other implementations, the thresholds are adjusted based on the voltage of one or more reference cells. The error can be detected using the ECC -127- associated with the group of memory cells.
If the processor -112-determines in step -430- that there are no more reference cells to read, then the processor, in step -435-, selects a page for reading based on the read command. Then, in step -440-, the processor -112-reads the selected data page of the flash memory using, for example, the process -300- (Figure 3B). In step -445-, the processor -112- corrects the page data using the correction function. For example, the processor -112- can set some parameters on the analog interface -136- to adjust the mapping function. As another example, the processor -112- can adjust the digital representation, provided by the ADC -142-, using the correction function. Then, the processor -112-can perform error checking operations to check, in step -450-, if there is any error on the page. In some implementations, error checking operations can be done on the ECC engine -148- using hardware error detection circuits. In other implementations, error checking operations can be done in software, where processor -112- can execute an error detection code stored in NVM -154- to check for errors on the page. After the error checking operations, in step -455-, the processor -112- can determine if an error has been detected.
If no error has been detected, then the processor -112- can transmit, in step -460-, the data read to the main device. Then, the -112-processor can determine, in step -465-, if there is another page to read. If there are more pages to read, then step -435- is repeated. Otherwise, the process -400-ends. If there are one or more errors detected in step -455-, then, in step -470-, the processor -112-may perform error correction operations, an example of which is described with reference to the figure 5. Next, processor -112-, in step -475-, can determine whether the error correction operation is satisfactory. If the error correction operation is successful, then step -460- is repeated. If the error correction operation is not satisfactory, then the processor -112- can store error information (for example, an error log) in NVM -154- in step -480- and the process can continue in the stage -465-. Error information can also be stored in a maintenance log. The stored error information can be used for block management operations, for which an example is described with reference to Figure 8A. In some implementations, the processor -112- will record the variation between the reference cells of a page or block of memory cells in a maintenance register in NVM 154-. In other implementations, the -112 processor will only record the physical and / or logical position of a page and / or block of memory cells in a maintenance register if the degree of variation in the reference cells satisfies a predetermined condition . For example, if the variation in the reference cell exceeds 10% or if the difference between the degree of variation in different reference cells exceeds 10%, the data stored in the
page and / or block of memory cells can be refreshed by applying an additional load to memory cells
or by completely rewriting the page during a maintenance operation. An example of a maintenance operation is described with reference to Figure 9.
Figure 5 shows a flowchart illustrating an example of a process -500- to perform error correction operations to correct a data page containing bit errors. The process -500-begins when, for example, processor -112- detects bit errors on a data page read from flash memory and sends a command to the ECC engine -148- to carry out a hardware ECC algorithm to correct the bit errors in step -505-. In some implementations, the ECC motor -148- and the ADC -142-, and / or the analog interface -136- can act together to correct the bit errors.
Then, the ECC engine -148- can check, in step -510-, whether the hardware ECC algorithm is satisfactory. If the hardware ECC algorithm can correct all errors on the data page, then the hardware ECC algorithm is satisfactory. Then, in step -515-, the ECC engine -148- stores the ECC result in, for example, the SDRAM -151-. Then, the ECC engine -148-generates a message indicating "successful error correction" in step -518-and process -500- ends.
If the number of existing error bits exceeds the number of error bits that the hardware ECC algorithm can correct, then the ECC engine -148- sends a message to the analog interface -136- to return to reading, in step - 520-, the flash memory data page. Then, in step -525-, the ECC engine -148- executes again a hardware ECC algorithm. In step -530-, the ECC engine -148- checks if the hardware ECC algorithm is satisfactory. If the hardware ECC algorithm can make corrections, then the hardware ECC algorithm is satisfactory, and the process continues in step -515-.
In step -530-, if the ECC engine -148- determines that the number of existing error bits exceeds the number of error bits that the hardware ECC algorithm can correct, then the ECC engine -148- executes a command alternative value to correct bit errors. Example implementations of the alternative value command are described with reference to Figures 6A through 6C. Then, the ECC engine -148- can check if the alternative value command corrects the bit errors in step -535-. If the ECC engine -148- determines that the bit errors have been corrected, then the process continues in step -515-.
If the ECC engine -148- determines that the bit errors have not been corrected, then the ECC engine -148- can execute an extended software ECC algorithm in step -540- to retrieve the data page. For example, the extended software ECC algorithm may include deeper ECC algorithms that use more ECC bits. For example, the hardware ECC algorithm may require four ECC bits and the extended software ECC algorithm may use 128 ECC bits. Then, the ECC engine -148- can check, in step -550-, whether the extended software ECC algorithm is satisfactory. If the ECC engine -148- determines that the extended software ECC algorithm is satisfactory, then the process continues in step -515-. If, in step -550-, the extended software ECC algorithm is not satisfactory, then the ECC -148 engine generates, in step -555-, a message: "Error correction not satisfactory" and the process -500 -finish
Figure 6A shows a flow chart illustrating an example of a -600- process for generating and using alternative data values. The processor -112-, the ECC engine -148-, the flash interface -115-, or other combinations of the above elements and other elements can carry out the process operations -600-. In step -605-, the processor -112- retrieves information from a mask table to identify uncertain digital data values on a data page (see, for example, Figure 3B, step -330-) and, in some cases, to retrieve information related to a degree of uncertainty.
Then, the processor -112- can, at step -610-, retrieve correction data based on parameters (for example, temperature, number of readings of the data page, number of writes on the data page, information in the data cell resolution records -166-, supply voltage, load pump voltage, reference voltage on the data page, etc.). For example, the processor -112- can calculate a correction function to determine the correction data for the data page. In addition, or as an alternative, the processor -112- uses the correction data to determine alternative digital values for each uncertain data value in step -615-. Alternative digital values for each uncertain data value will normally include the nearest adjacent digital value and the next closest adjacent digital value. The digital data values may also include two digital data values away from the digital representation of the detected analog voltage of the memory cell. Normally, not all memory cells have an uncertain data value. In step -620-, the processor -112- stores the alternative digital values identified in a buffer memory together with stored digital data values for memory cells having certain digital data values.
After the alternative digital values have been stored, the processor -112-selects, in step -625-, a combination of alternative digital values of the buffer. The combination of alternative digital values can be selected based on an algorithm that, for example, tries to identify the alternative digital values most likely to be correct. This selection algorithm can use data
related to a degree of uncertainty associated with each digital data value. In addition, regardless of whether this selection algorithm is used, the selected combination of alternative digital values does not need to include all possible alternative digital values. In other words, even among the data values identified as uncertain, some of the original data values may be used in conjunction with some subset of alternative data values.
Next, the processor -112- stores the page data in a buffer memory using the selected combination of alternative digital values in step -630-together with the digital data values determined with the appropriate certainty. Then, the processor -112- executes, in step -635-, an ECC algorithm with the stored page data. For example, processor -112- can perform the operations described in process -500-. In some cases, the execution of an ECC algorithm may result in changes in one or more of the alternative digital values and even in one or more of the digital data values determined with some degree of certainty. In step -640-, processor -112- determines whether the ECC algorithm is satisfactory. If the processor -112- determines that the ECC algorithm is satisfactory, then, in step -645-, the processor -112- stores the page data with the ECC result satisfactory and the process -600-ends.
In step -640-, if processor -112- determines that the ECC algorithm is not satisfactory, then, in step -650-, processor -112- determines whether another combination of alternative values can be tested. The number of possible combinations of alternative values will depend on the number of memory cells with uncertain digital data values and the number of alternative digital values identified. Normally, most memory cells do not have uncertain digital data values. If processor -112- determines that another combination of alternative values can be tested, then the process returns to step -625-.
If, in step -650-, processor -112- determines that all alternative combinations have been tested, then processor -112- generates an error message in step -655- and process -600-ends. In some implementations, it may also be possible to generate additional alternative values and / or adjust voltage thresholds to read the different data values and rerun the ECC algorithm to identify correct values for the page data. For example, alternative values can be identified for voltage levels that were previously determined to represent a particular value with adequate certainty but that are relatively close to a threshold for one of the digital value distribution curves -205- to -210- ( described above in relation to figure 2A). Alternatively, the voltage thresholds for the various distribution curves of digital values -205- to -210- can be adjusted in the manner described above, and the data values can be regenerated, including the identification of new alternative values.
In some implementations, the error message in step -655- is recorded in a maintenance log of NVM -154-. Then, during a maintenance operation, such as the one shown in Figure 9, it may also be possible to generate additional alternative values and / or adjust the voltage thresholds to read the various data values and rerun the ECC algorithm to identify correct values for page data. Then, the correct values identified can be used to rewrite the data.
Figure 6B shows a flow chart illustrating another example of a process -660- for generating and using alternative values. The process -660- has some common stages with the -600- process. In this example, after identifying uncertain data values using a mask table, or otherwise, in step -605-, processor -112- determines, in step -665-, an alternative value for each uncertain value using the nearest adjacent digital value. For example, the processor -112-can use the digital value distribution -200 (Figure 2A) and select the second nearest adjacent digital value instead of the closest adjacent digital value for the cell voltage. Then, processor -112-continues with the process -600- carrying out the operations described in relation to Figure 6A, starting with step -620-.
Figure 6C shows a flow chart illustrating another example of a process -670- for generating and using alternative values. In this example, processor -112- does not necessarily retrieve information from uncertain digital values from the mask table. The process -670- begins in step -672- when the processor -112 receives a command to carry out an identification of alternative values and an analysis of a selected page (see, for example, Figure 5, step -535-) .
The processor -112-starts, in step -674-, the reading of the selected page. In step -676-, processor -112- selects a cell from the page to read a cell voltage. In step -678-, the processor -112 determines if the cell voltage is uncertain. For example, the processor -112- can use the digital value distribution -200-shown in Figure 2A to determine if the received cell voltage is in one of the gray areas -220-. If processor -112- determines that the cell voltage is in the gray area, then processor -112- determines a digital data value of the cell using the second closest digital data value in step -680-. In other implementations, the -112 processor determines a digital data value of the cell using the first closest digital data value. Then, the processor -112- stores, in step -682-, the digital data values in a buffer.
If, in step -678-, processor -112- determines that the cell voltage is not in the gray area, then processor -112- determines, in step -684-, a digital data value of the cell based on the stored thresholds and the processor -112-performs step -682-. After step -682-, in step -686-, processor -112- determines whether to read another cell on the page. If processor -112- determines to read another cell, then the process returns to step -676-. If the -112 processor determines that there are no more cells to read, then the process -670-ends.
Figure 7A shows a flow chart illustrating an example of a process -700- to write data on the flash memory page -121- using reference cells -130a-, -130b-, -130c-. The process -700- can generally be carried out by the -112- processor. The process -700- begins at step -705-when the processor -112- receives a write command. For example, the write command may include a write instruction, the data to be written and a memory address in which the data is to be written, which can be received, for example, as a logical block address from the main device. Then, based on the write command, process -112- selects a flash memory page in step -710-.
Then, the processor -112- can copy, in step -715-, the data to be written to an intermediate memory, such as SDRAM -151-. Data can be transferred from an external main device or from another memory page. In some implementations, the data stored on the selected memory page is copied to the buffer to be copied back to the selected page. In other implementations, the data to be written to a selected memory page is not copied to the buffer, but is written directly from the data source (from an external main device or from other memory cells) on the page. of selected memory.
Then, the processor -112- deletes, in step -725-, the data stored on the selected page. In step -730-, the processor -112- writes the buffer data on the selected memory page, for example, by applying loads to the data cells -124- and to the reference cell -130c-. Step -730- applies different amounts of load to the memory cells depending on the desired data value and the corresponding analog voltage level for each cell. In some implementations a load pump may be used to apply loads to the memory cells of the selected memory page. Then, the processor -112-, in step -735-, reads a reference voltage from the reference cell -130c- of the selected page. The reference voltage is read by detecting a voltage level in the reference cell -130c-. The processor -112 checks, in step -740-, if the reference voltage is lower than an objective voltage. If the processor -112 determines that the reference voltage is lower than the target voltage, then the process returns to step -730 to apply an additional load and increase the voltage stored in the cells of the selected memory page. The amount of additional load applied can be scaled depending on the way in which the desired voltage level is compared by percentages with the voltage of the reference cell (s) (for example, if the detected reference cell voltage is 10% lower than a target voltage and a particular memory cell must have twice the voltage level as the reference cell, then the amount of additional load applied to the particular memory cell may be twice that applied to the reference cell).
In step -740-, if processor -112- determines that the reference voltage is not lower than the target voltage, then processor -112-, in step -745-, selects a data cell and reads, in step -750-, the voltage of the selected data cell. Then, in step -755-, the processor -112- determines if the voltage read is too high. For example, the processor -112- can compare the read cell voltage with the distribution of digital values and check if the cell voltage is within a range of voltages of the target digital value. If the processor -112- determines that the voltage is not too high, then the processor determines, in step -760-, whether to select another data cell. If the -112 processor determines that it is not necessary to select another data cell, then the -700- process ends. Otherwise, the -700- process returns to the -745 stage to test an additional data cell.
In some implementations, it may also be possible to test the data cells selected in step -745- to determine if they have too low values. If so, the -700- process can return to the -730 step to apply an additional load to one or more data cells. In some implementations, once the checking of one or more reference cells in step -740- is completed, the voltage level of all data cells can be selected in step -745- (or in iterative repetitions of the stage - 745-) to determine if the levels are too high and / or too low. In this way, the reference cells can be used to carry out an initial loading of the page or block, followed by a check and a possible adjustment of the voltage levels of the cells. In addition, in some implementations, the target voltages for the reference cells used in step -740- can be set at a somewhat lower value than the threshold voltage for a desired data value in order to avoid an overload, followed by a checking the actual data cell values and adjusting the voltage levels to obtain voltage levels corresponding to the desired data values for the actual data cell.
If, in step -755-, processor -112- determines that the voltage is too high, then processor -112 determines whether it is necessary to rewrite the selected page. For example, processor -112- can compare the number of bit errors with a threshold that is less than or equal to the number of correctable errors using one of the
Correction algorithms described with reference to Figure 5. If the number of bit errors is greater than the threshold, then the selected page is rewritten. Otherwise, the -112 processor may determine that it is not necessary to rewrite the selected page. In step -765-, if processor -112- determines that it is not necessary to rewrite the page, then the process -700- continues in step -760-. If the processor -112-, in step -765-, determines that it is necessary to rewrite the page, then the process -700- returns to step -725- to restart the writing of the memory page. In some implementations, the target voltage may be incrementally reduced after step -765-to reduce the probability of exceeding the target voltage.
Figure 7B shows a flow chart illustrating an example of a process -770- that achieves a higher data transfer rate between a main device and the MCP -100-. The process -770- begins in step -772- when the processor -112-receives a write command from a main device. For example, the write command of a main device may include a write instruction, the data to be written and a memory address in which the data is to be written, which can be received, for example, as a logical block address from The main device.
Next, the -112 processor determines whether to perform a fast write process (for example, write at a single level cell resolution or another relatively low resolution) or use a write process that requires more time, power and use the processor to write at a higher resolution. In step -774-, the processor -112- determines if there is any command from the main interface to perform a quick write. In some implementations, a main device can also specify the resolution of the quick write. If a main device does not specify a fast write, then the -112 processor can independently determine whether a quick write is required. Then, step -776- determines whether the MCP -100- or the main device connected to the MCP -100- satisfies predetermined power supply conditions. In the implementation shown, step -776- determines if the main device receives AC power. In other implementations, step -776- determines instead if a battery that supplies power to the main device is charged at a predetermined charge. In some implementations, step -776- will determine if a battery that supplies charge to the main device is charged at a maximum capacity or at least 90% of its capacity. Then, step -778- determines if processor -112- has an excess bandwidth that satisfies a predetermined bandwidth condition. In some implementations, step -778-is satisfied if processor -112- is idle. In other implementations, step -778-is satisfied if a predetermined percentage of processor bandwidth -112- is not used. If the conditions -776-and -778- are satisfied, then the process uses the -700- process to write in memory cells at a high resolution, step -780-. If one or both conditions -776- and -778- are not satisfied, then the process carries out a quick write procedure.
In a quick write procedure, the processor -112-, in step -782-, selects one or more available memory cell pages to write data from the main device a. In some implementations, the processor may copy data from the main device to an intermediate memory, such as SDRAM -151-. In other implementations, the data of the main device is not copied to the buffer, but is written directly, in step -786-, on the selected memory page, after steps -725- and -784-. In step -725-, the processor deletes the data stored on the selected page (s). In step -774-, processor -112- updates the cell resolution records associated with the selected memory page (s) at a lower resolution. In some implementations, the low resolution will be a resolution of one bit per memory cell. In other implementations, the low resolution will be 2, 3 or 4 bits per cell. Writing at a lower resolution when copying data from a main device to the MCP -100- increases the data transfer rate because less precision is needed when each memory cell is loaded and, therefore, the degree of care and The amount of voltage settings required when writing to memory cells can be reduced. After the data is written to the memory cell (s) at a low resolution, step -784 will register a maintenance log entry indicating that the data stored in the selected memory page should be rewritten to a larger resolution during a maintenance process (process -900-).
Figure 8A shows a flow chart illustrating an example of a process -800- to adjust a cell resolution of a memory page. The process -800- can carry out the process operations -800- when, for example, the processor -112- executes a maintenance program to update the cell resolution records -166-. The process -800- begins in step -805- when the processor -112-reads, in step -805-, stored error information. The error information may be stored during read errors or write errors, for example as described in step -480- of Figure 4. Next, the processor -112- selects a page in step -810-. In step -815-, processor -112- determines if the error count of the selected page is greater than a threshold. If the error count of the selected page is not greater than the threshold, then the processor -112- checks, in step -820-, if more pages have to be checked. If the -112 processor determines that there are no more pages to review, then the process -800-ends. If, in step -820-, processor -112- determines that there are more pages to review, then the process returns to step -810-. In some implementations, the -112 processor can check all memory pages with errors. In other implementations, the -112 processor can only check memory pages with new errors recorded in the error information.
In step -815-, if the computation of errors of the selected page is greater than the threshold, then processor -112- copies a page of data from the selected page to a buffer in step -825-. Then, the processor -112- updates the cell resolution records -166- to reduce the cell resolution of the selected page. For example, the flash interface -115- can check the cell resolution records -166- to determine that the cell resolution has been reduced and then the flash interface -115- can read and write on the selected page using the New reduced cell resolution.
Then, the processor -112- can assign, in step -835-, physical addresses for the copied data. Depending on the available memory pages, the -112- processor can allocate one, two, four or other number of physical memory pages to store the copied data. Then, the processor -112- updates, in step -840-, a table of logical addresses to correspond with the assigned physical addresses. The logical address table can be used to map a logical page with one or more physical pages. An example of using the logical address table during a memory access operation is described with reference to Figure 10. In step -845-, the processor -112- moves the copied data from the buffer to the pages in the assigned physical addresses. Then, processor -112- determines, in step -820-, if there are more pages to review. If so, the -800- process returns to the -810- stage. Otherwise, the -800- process ends.
Figure 8B illustrates a process similar to that of Figure 8A intended to degrade groups of pages or blocks of memory cells and to treat the group logically as a single page or block of memory cells having the original resolution. In Figure 8B, the process -860- also reads stored error information -805-, selects a page -810- and determines if an error count associated with the page exceeds a threshold -815-. If the error count associated with the page exceeds a threshold, then the data stored on the page is copied to a buffer -825- and the cell resolution record (s) associated with the page are update (n) to reduce the resolution of the page -830-. However, in the implementation illustrated in Figure 8B, a processor also selects another data page that has a reduced cell resolution -855- and updates the block management code and / or the logical addressing code to match the two pages. The two pages that have a reduced cell resolution are then treated logically as a single page with the higher original resolution. This process can group more than two pages of memory cells.
In some implementations, this process will degrade entire blocks of memory cells and match or associate them in another way. In some implementations, each paired page will have the same cell resolution set down and will include the same number of memory cells. For example, a page of memory cells degraded from memory cells that store 8 bits of data to memory cells that store 4 bits of data, is grouped with another page of memory cells in which each memory cell stores 4 bits of data. The combination of these two pages of memory cells is then treated logically by the Hash disk controller as a single page (or as a single block) that stores 8 bits of data per memory cell. These paired pages of memory cells do not need to be in the same block and may possibly be on different flash memory chips. Then, the process -860-carries out step -820- which determines if there are more pages of memory to review and proceeds in the manner described in Figure 8A.
Figure 9 is a flow chart illustrating a maintenance process -900-. A possible function of the maintenance process -900- is to rewrite, at a relatively high resolution, data stored in a flash memory at a relatively low resolution (for example, see Figure 7B). Maintenance processes can be used, for example, to maximize the battery life of a main device while maximizing data storage capacity. In some implementations, the maintenance process -900-is activated by the processor as part of a routinely planned maintenance operation. In some implementations, the maintenance process -900- is activated by a signal from a main device indicating that the main device is powered by AC power. In other implementations, other conditions may cause a main device or the -112 processor to activate the maintenance process -900-, such as an idle processor -112-.
The process -900- begins with step -905-, which can determine if the MCP -100- is operating under a predetermined power condition. In some implementations, this power condition is satisfied by a main device that receives AC power. In some implementations, this power condition is satisfied by a main device battery that satisfies a predetermined amount of charge, for example that the battery is fully charged. A fully charged battery may indicate that a main device is being powered by AC power. If the MCP -100- does not satisfy the default power condition, the -900- process ends.
Then, in step -910-, the processor -112- can determine if the processor -112-has sufficient bandwidth to fully carry out the maintenance process -900-. In some implementations, the maintenance operation simply runs as a background process that requires minimal bandwidth. In some implementations, the maintenance operation requires an idle processor -112-. In other implementations, the -900- process does not determine if the -112 processor has a
sufficient bandwidth. In some implementations, the bandwidth requirement changes depending on the need for maintenance operations, which can be measured by the time between successful maintenance processes or by the amount of available space in the flash memory. If the -112 processor does not have enough bandwidth, the -900- process ends.
If the predetermined power condition is satisfied and the -112 processor has sufficient bandwidth, the process -900- can then read stored maintenance records, step -915-. In some implementations, stored maintenance records are stored in NVM -154-. In some implementations, stored maintenance records indicate the priority of possible maintenance operations. In some implementations, stored maintenance records are used to determine if any of the maintenance stages (such as stages -920-, -925-, -930-and -935-) can be carried out in a simplified operation. For example, maintenance records may indicate the need to degrade a particular page of memory cells and rewrite the data on the same page of memory cells. In other implementations, maintenance operations are a predetermined sequence of, for example, rewriting transferred data at a higher resolution (step -920-); Degrade cell resolutions and match groups of pages, for example, by carrying out the -800- and -850 processes (step -925-); rewrite data that satisfies a predetermined error condition (for example, using the -700- process) (step -930-); exchange the most frequently accessed data for the data used less frequently using the deterioration management software code -157- (step -935-); update the logical addressing software code -163- for each maintenance operation that moved data from one physical position to another physical position (for example, using process -1000-) (step -940-); and refresh data pages that exceed a threshold amount of voltage variation by applying an additional load to the memory cell page (step -945-). Other sequences that include all, some or other additional operations can also be used. In some implementations, the process -900- repeats stage -905- and / or stage -910 between each maintenance stage -920-, -925-, -930-, -935- or -945-, and may end if change any of the conditions -905- or -910-. Then, the process -900-ends.
Figure 10 is a flowchart illustrating an example of a logical routing process -1000- in the FDC -106-. For example, the FDC -106- can map a received read or write command that includes a logical address with one or more physical pages. In some implementations, the FDC -106- can dynamically map a logical page with one or more variable physical pages. For example, the FDC -106- can modify the mapping to balance the load of a physical memory page. In some implementations, mapping between logical pages and physical pages can be stored in a logical address table. In some implementations, the process -1000- can be carried out by the processor -112-when the processor -112- is executing the logical addressing code -163-. The process -1000- begins when the FDC receives a command from the main device that indicates that a memory page is to be accessed (for example, read, write to it, or delete). Then, in step -1005-, the processor -112-receives a logical page address to access a flash memory page.
Next, the processor -112- determines, in step -1010-, one or more physical page addresses associated with the received logical address. In one example, the received logical page address can only be associated with a physical page address. In another example, the received logical page address may be associated with two or more physical pages because the physical pages have a lower cell resolution than normal, or the physical pages are not contiguous in the flash memory, or are in different blocks or on different chips.
Then, the processor -112- selects in step -1015- a first of the determined physical page addresses. In step -1020-, the processor -112- reads the page data in the selected physical address. Then, the processor -112- stores, in step -1025-, the page data in the main output buffer. In step -1030-, the processor -112- determines if it is necessary to access another memory page. For example, if there is more than one physical page address associated with the logical page address, then the -112 processor can access another memory page. If, in step -1030-, the processor -112- determines that it is necessary to access another memory page, then the processor, in step -1035-, selects the next determined physical page address and the process returns to the stage -1020-. Otherwise, the process -1000- ends.
Figure 11 shows an example system -1100- that includes multiple NAND flash memory chips -103- and the FDC -106-. The FDC -106-includes a multiplexer (MUX) -1105- in the analog interface -115- and a charge pump -1110-. Although the -1100- system is shown using NAND -103- flash chips, some of the techniques used in the -1100- system can also be applied to NOR flash chips, or a combination of NAND and NOR chips. The -1100- system can be implemented using discrete ICs, or it can be fully or partially integrated into a single capsule.
The FDC -106-receives analog data from the NAND flash memory chips -103- through the analog interface -115-. In this example, the MUX -1105-receives multiple analog inputs. In some implementations, the MUX -1105-receives multiple analog inputs from multiple flash memory chips -103-. Analog interface
-115- you can control the MUX -1105- to select an analog input to be transmitted to the ADC -142-. For example, the analog interface -115- can control MUX -1105- based on a read command received. During a write operation, the FDC -106- uses the charge pump -1110- to apply loads to the memory cells on one of the NAND -103- flash memory chips. In some implementations, the charge pump -1110- is adapted to supply load to memory cells of a plurality of flash memory chips -103-. For example, the FDC -106- can send a control signal to select a memory chip designated to receive loads from the charge pump -1110-. Then, when the charge pump 1110 applies loads, the selected memory chip receives the charges.
By sharing the ADC -1105- and the charge pump -1110- between multiple chips -103-, the storage size of the memory chips -103- can increase. In addition, flash memory chips -103- can be manufactured at a lower cost without the ADC -142- and the charge pump -1110-. In some implementations, the charge pump -1110 may be integrated in a chip with the FDC -106- or it may be mounted separately on a different chip or on a different substrate, such as a printed circuit board.
In order to facilitate the use of an ADC -1105- and a loading pump -1110- adapted for use with multiple flash memory chips -103-, some memory chips -103- may include an input adapted to receive a Programming load from an external supply node. Thus, it is not necessary that the flash memory chips -103-include an additional circuit system to alter or regulate the programming load supplied. Flash memory chips -103-may also include an output adapted to send an analog voltage signal to a flash disk controller -106-.
In some implementations, the FDC -106- may also include a load pump interleaving procedure to write data to the memory chips -103-.
Figure 12 shows an example system -1200- illustrating an architecture to separately provide logic and programming level power to the NAND -103- flash memory chip. The -1200- system includes the charge pump -1110- and a small loss of information (LDO) -1205 regulator that receive electrical power from a power supply -1210-.
As shown, the NAND -103-flash memory chip includes two power inputs. A power input for the charge pump voltage (Vcp) and a power input for the logic voltage (Vlogic). In some examples, the Vcp may be substantially greater than the Vlogic. For example, the Vcp can be between approximately 12 and 20 V or approximately between 12 and 30 V, and the Vlogic can be between approximately 1 and 3 V. In some implementations, the regulation and current requirements for the Vcp may be substantially different from the requirements for the Vlogic.
As an example, the NAND -103- flash memory chip may require that the Vlogic have a tightly regulated voltage tolerance (e.g. 0.5%, 1.0%, 5%) at a low logical voltage to minimize the power consumption, switching times, etc. In addition, the logical voltage may require a high frequency bypass capacitance at a low voltage level. On the contrary, the supply regulation requirements of the load pump can be between approximately 5% and 10%, with the need for a higher voltage and substantially low frequency capacitance.
In order to facilitate the system of Figure 12, the flash memory chip -103- may include a first interface for receiving power to selectively program each flash memory cell, and a second interface for receiving power supplied to the system. Logic level circuits to carry out the selection of flash memory cells to be fed with energy from the first input during a write operation. The flash disk controller -106- may comprise a first power supply to supply power to the first interface at a programming voltage and a second power supply to supply logic level power to the second interface. The first and second power supply can be external to the flash memory chip -103-.
Although several process and technical implementations have been described, other implementations may carry out the stages in a different sequence or in a modified arrangement to achieve the same main function. Furthermore, although it has occasionally been described that the operations of the various processes are carried out by a particular device or component, such devices or components are simply examples, and the operations can be carried out using alternative devices or components in some implementation.
In some examples, the NAND flash memory chip -103- can also have any practical number of resolution bits, such as, for example, 6, 7, 10, 12 resolution bits. Several implementations can be used to carry out ECC operations with a flash memory that may include a NAND flash memory, a NOR flash memory or a combination thereof or other non-volatile memories. Flash memory chips of one or more types may be stacked and / or mounted adjacent to each other on the MCP -100-. Those skilled in the art will recognize that some examples of the techniques described in this document can be applied in a manner
particularly advantageous with NAND flash technology, and that some procedures described herein can be applied in general to nonvolatile memories such as NAND and / or NOR flash.
Although an example of a system, which can be portable, has been described with reference to the preceding figures, other implementations may be implemented in other processing applications, such as desktop and networked installations.
Although particular features of an architecture have been described, other features may be incorporated to improve performance. For example, temporary storage techniques (for example, L1, L2, etc.) can be used in the FDC -106-. Random access memories may be included, for example, to provide temporary work memory and / or load executable code or parameter information stored in flash memory for use during runtime operations. Other hardware and software may be provided to carry out operations, such as network or other communications using one or more protocols, wireless communications (eg infrared), power supplies and stored operational energy (eg batteries). , linear and / or switching power supply circuits, software maintenance (eg, self-checks, updates, etc.) and the like. One or more communication interfaces may be provided to support data storage operations and other related operations.
In some implementations a procedure or a combination of procedures can be used to improve data integrity. For example, cell voltage errors can be treated by adjusting the thresholds and / or rewriting the cells at least once. The rewriting of the cells can be carried out in response to deviations from an ideal cell voltage and / or as a background activity. For example, multi-level cell voltages can be rewritten to refresh the tension in one or more cells with a tendency to lose on a page. For cells characterized by being prone to lose tension over time, the level of tension at which such cells are loaded can be increased to almost reach a higher threshold of the tension of each cell to compensate for anticipated load losses in such cells at the long of the time. The increased voltage level may initially be approximate or greater than the upper threshold of the expected interval, which may be in a gray area between intervals. Depending on the estimated or determined loss rates, the data can be rewritten frequently enough to substantially maintain cell tensions within a desired range. A similar compensation can be used to compensate cells characterized by increasing variation. Such rewriting procedures can be carried out, for example, as a low priority background process that runs when resources are available. For the data identified as high value data, it can be planned that the rewriting is carried out with sufficient frequency to keep the cell voltages within a desired range, the frequency being based on an expected voltage variation rate and the size of the voltage range associated with each bit level. In some implementations, rewriting may be configured to be performed more frequently when a portable device is coupled to an external power source, such as a power source coupled to the power grid. Rewriting operations can be carried out in response to the coupling to such a power supply. In addition, rewriting can be configured to be performed less frequently under certain conditions, such as, for example, during a power conservation mode, during a low battery condition or when short-lived or non-critical data is stored (by example, continuous audio / video stream).
Some systems can be implemented as a computer system that can be used with implementations of the invention. For example, several implementations may include digital and / or analog circuit systems, computer hardware, firmware, software or combinations thereof. An apparatus can be implemented in a computer program product tangibly realized in an information carrier, for example, in a machine-readable storage device or in a propagated signal, for execution by means of a programmable processor; and the procedures can be carried out by means of a programmable processor that executes an instruction program to carry out functions of the invention that are performed on input data and that generate an output. The invention can be advantageously implemented in one or more computer programs that can be executed in a programmable system that includes at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device and / or at least one output device. A computer program is a set of instructions that can be used, directly or indirectly, on a computer to carry out a certain activity or provide a certain result. A computer program can be written in any form of programming language, including compiled or interpreted languages, and can be implemented in any way, including a stand-alone program or a module, component, subroutine or other suitable unit that can be used in a computer environment.
Processors suitable for executing an instruction program include, by way of example, both general purpose and special purpose microprocessors, which may include a single processor or one of multiple processors of any type of computer. Generally, a processor will receive instructions and data from a read-only memory, from a random access memory or from both. The essential elements of a computer are a processor to execute instructions and one or more memories to store
Instructions and data. Generally, a computer will also include, or be operatively coupled to communicate with, one or more mass storage devices for storing data files; Such devices include magnetic disks, such as internal hard drives and removable disks, magneto-optical disks and optical disks. Suitable storage devices for tangibly storing computer program instructions and data include all forms of nonvolatile memory including, for example, semiconductor memory devices, such as EPROM, EEPROM and flash memory devices, magnetic disks, such as internal hard drives and removable drives, magneto-optical drives and CD-ROM and DVD-ROM discs. The processor and memory can be complemented by, or incorporated in, ASIC (application specific integrated circuits).
In some implementations, each system -100- may be programmed with the same or similar information and / or may be initialized with substantially the same information stored in volatile and / or non-volatile memory. For example, a data interface may be configured to perform automatic configuration, automatic download and / or automatic update functions when coupled to an appropriate main device, such as a desktop computer or server.
In some implementations, one or more user interface features can be configured in a custom way to perform specific functions. The invention can be implemented in a computer system that includes a graphical user interface and / or an Internet browser. To provide interaction with a user, some implementations can be implemented on a computer that has a display device, such as a CRT monitor (cathode ray tube) or LCD (liquid crystal display) to display information to the user, a keyboard and a Pointer device, such as a mouse or a tracking ball, by which the user can provide input data to the computer.
In several implementations, the system -100- can communicate using appropriate procedures, equipment and communication techniques. For example, the system -100-can communicate with compatible devices (for example, devices capable of transferring data to and / or from the -100- system) using a point-to-point communication in which a message is transported directly from the sender to the receiver through a dedicated physical link (for example, a fiber optic link, point-to-point wiring, a fragmented chain). System components can exchange information through any form or means of analog or digital data communication, including packet-based messages in a communications network. Examples of communications networks include, for example, a LAN (local area network), a WAN (wide area network), a MAN (metropolitan area network), wireless and / or optical networks, and computers and networks that They form the Internet. Other implementations may carry messages by broadcasting to all or substantially all devices that are coupled to each other by a communications network, for example, using omnidirectional radio frequency (RF) signals. Other additional implementations can carry messages characterized by high directivity, such as RF signals transmitted using directional antennas (i.e., a narrow beam) or infrared signals that can optionally be used with focusing optics. Other additional implementations are possible using appropriate interfaces and protocols such as, by way of example and not limitation, USB 2.0, Firewire, ATA / IDE, RS-232, RS-422, RS-485, 802.11 a / b / g , Wi-Fi, Ethernet, IrDA, FDDI (fiber-distributed data interface), token ring networks or multiplexing techniques based on frequency, time or code division. Some implementations may optionally include features such as error checking and correction (ECC) for data integrity, or security measures, such as encryption (for example, WEP) and password protection.
Several implementations of the invention have been described. However, it should be understood that several modifications can be made without departing from the scope of the invention. For example, advantageous results can be obtained if the stages of the disclosed techniques are carried out in a different sequence, if the components of the disclosed systems are combined differently or if the components are replaced or supplemented with other components. The functions and processes (including algorithms) can be carried out in hardware, software or in a combination thereof, and some implementations can be carried out in modules or in hardware other than those described.
Contents5
17 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17
136 members in 10 offices
Priority claims4
| Document | Office | Kind | Date |
|---|---|---|---|
| 800357P | United States of America | – | |
| 80035706 | United States of America | P | |
| 694739 | United States of America | – | |
| 69473907 | United States of America | A |
Members136
| Document | Office | Kind | |
|---|---|---|---|
| US2007262890A1 | United States of America | A1 | |
| US2007263439A1 | United States of America | A1 | |
| US2007263440A1 | United States of America | A1 | |
| US2007263441A1 | United States of America | A1 | |
| US2007263442A1 | United States of America | A1 | |
| US2007263454A1 | United States of America | A1 | |
| US2007263455A1 | United States of America | A1 | |
| US2007263469A1 | United States of America | A1 | |
| WO2007134188A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134244A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134247A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134253A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134277A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134281A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134301A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134314A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134316A2 | World Intellectual Property Organization (WIPO) | A2 | |
| WO2007134319A2 | World Intellectual Property Organization (WIPO) | A2 | |
| US2007277060A1 | United States of America | A1 | |
| US2008013380A1 | United States of America | A1 | |
| WO2007134247A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134253A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134281A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134301A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134314A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134244A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134316A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134188A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134319A3 | World Intellectual Property Organization (WIPO) | A3 | |
| WO2007134277A3 | World Intellectual Property Organization (WIPO) | A3 | |
| EP2022058A2 | European Patent Office (EPO) | A2 | |
| KR20090026283A | Republic of Korea | A | |
| US7511646B2 | United States of America | B2 | |
| US2009147570A1 | United States of America | A1 | |
| US7551486B2 | United States of America | B2 | |
| CN101484947A | China | A | |
| US7568135B2 | United States of America | B2 | |
| HK1127155A | Hong Kong, China | A | |
| US2009237994A1 | United States of America | A1 | |
| JP2009537935A | Japan | A | |
| US7613043B2 | United States of America | B2 | |
| US7639531B2 | United States of America | B2 | |
| US7639542B2 | United States of America | B2 | |
| US2009323418A1 | United States of America | A1 | |
| US2010020604A1 | United States of America | A1 | |
| US2010070798A1 | United States of America | A1 | |
| US2010070799A1 | United States of America | A1 | |
| US2010070801A1 | United States of America | A1 | |
| US7701797B2 | United States of America | B2 | |
| US2010157674A1 | United States of America | A1 | |
| EP2022058B1 | European Patent Office (EPO) | B1 | |
| US7773022B2 | United States of America | B2 | |
| AT475183T | Austria | T | |
| ATE475183T1 | Austria | T1 | |
| EP2221823A1 | European Patent Office (EPO) | A1 | |
| EP2221827A1 | European Patent Office (EPO) | A1 | |
| DE602007007938D1 | Germany | D1 | |
| US7852674B2 | United States of America | B2 | |
| US7852690B2 | United States of America | B2 | |
| US7859908B2 | United States of America | B2 | |
| US7881108B2 | United States of America | B2 | |
| US7911834B2 | United States of America | B2 | |
| EP2330592A1 | European Patent Office (EPO) | A1 | |
| EP2330593A1 | European Patent Office (EPO) | A1 | |
| EP2330595A1 | European Patent Office (EPO) | A1 | |
| EP2330597A1 | European Patent Office (EPO) | A1 | |
| EP2333780A1 | European Patent Office (EPO) | A1 | |
| EP2333781A1 | European Patent Office (EPO) | A1 | |
| EP2337030A1 | European Patent Office (EPO) | A1 | |
| KR20110069159A | Republic of Korea | A | |
| KR20110069160A | Republic of Korea | A | |
| KR20110073558A | Republic of Korea | A | |
| KR20110073559A | Republic of Korea | A | |
| KR20110073560A | Republic of Korea | A | |
| KR20110073561A | Republic of Korea | A | |
| KR20110073562A | Republic of Korea | A | |
| US7974132B2 | United States of America | B2 | |
| US2011170348A1 | United States of America | A1 | |
| US8000134B2 | United States of America | B2 | |
| US2011261618A1 | United States of America | A1 | |
| KR20120001814A | Republic of Korea | A | |
| KR20120001815A | Republic of Korea | A | |
| KR20120001816A | Republic of Korea | A | |
| US8116133B2 | United States of America | B2 | |
| KR101116512B1 | Republic of Korea | B1 | |
| KR101116554B1 | Republic of Korea | B1 | |
| KR101121493B1 | Republic of Korea | B1 | |
| US8127202B2 | United States of America | B2 | |
| EP2221823B1 | European Patent Office (EPO) | B1 | |
| KR101116468B1 | Republic of Korea | B1 | |
| AT547794T | Austria | T | |
| ATE547794T1 | Austria | T1 | |
| KR101133897B1 | Republic of Korea | B1 | |
| US8159897B2 | United States of America | B2 | |
| KR101151597B1 | Republic of Korea | B1 | |
| KR101155751B1 | Republic of Korea | B1 | |
| US2012155174A1 | United States of America | A1 | |
| ES2383588T3 | Spain | T3 | |
| HK1159305A | Hong Kong, China | A | |
| HK1159307A | Hong Kong, China | A |
Numbers
- Publication
- 2392334
- Application
- 11159445
Titles2
- Spanish
- Conversión analógica a digital de 8 bits o más para la determinación del valor de una célula de memoria NAND
- English
- Analog to digital conversion of 8 bits or more for the determination of the value of a NAND memory cell
Classification
- CPC, 11
- G11C16/26
- G11C16/04
- G11C11/5628
- G11C11/5642
- G11C16/30
- G11C16/3418
- G11C16/3431
- G11C16/349
- G11C29/00
- G11C2211/5641
- G11C16/34
- IPC, 4
- G11C7 16
- G11C11 56
- G11C16 10
- G11C16 26