ES2392334T3 - 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 - Google Patents

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 Download PDF

Info

Publication number
ES2392334T3
ES2392334T3 ES11159445T ES11159445T ES2392334T3 ES 2392334 T3 ES2392334 T3 ES 2392334T3 ES 11159445 T ES11159445 T ES 11159445T ES 11159445 T ES11159445 T ES 11159445T ES 2392334 T3 ES2392334 T3 ES 2392334T3
Authority
ES
Spain
Prior art keywords
digital
data
voltage
processor
data value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES11159445T
Other languages
English (en)
Inventor
Michael J. Cornwell
Christopher P. Dudte
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Application granted granted Critical
Publication of ES2392334T3 publication Critical patent/ES2392334T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

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 devoltaje a un valor de datos que comprende una representación binaria, comprendiendo el valor de datos una primeraresolución;- adaptar una función de mapeado (145) basándose en una o varias de: una temperatura actual, un voltaje dealimentación, un número de operaciones de lectura llevadas a cabo en la celda de memoria y un número deoperaciones de escritura llevadas a cabo en la celda de memoria, en el que la función de mapeado (145) mapeavoltajes analógicos con respecto a representaciones digitales de los voltajes analógicos; convirtiendo el nivel devoltaje en una representación digital del nivel de voltaje utilizando la función de mapeado adaptada, teniendo larepresentació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 cadavalor de datos es seleccionado a partir de un conjunto de posibles valores de datos, de manera que cada posiblevalor de datos corresponde a un rango de valores digitales y en el que la operación de determinación compara larepresentación digital, como mínimo, a uno de los rangos de valores digitales para determinar el valor de datos.

Description

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
CAMPO TÉCNICO
Varias implementaciones pueden referirse, en general, a dispositivos de memoria no volátiles, e implementaciones particulares pueden referirse a sistemas y a procedimientos para hacer funcionar celdas flash de múltiples niveles.
ANTECEDENTES
A medida que los dispositivos informáticos han aumentado sus capacidades y prestaciones, ha crecido la demanda de dispositivos de almacenamiento de datos. Los dispositivos de almacenamiento de datos se han utilizado, por ejemplo, para almacenar instrucciones de programa (es decir, código) que puede ejecutarse por procesadores. Los dispositivos de almacenamiento de datos también se han utilizado para almacenar otros tipos de datos, incluyendo información de audio, de imagen y/o de texto, por ejemplo. Recientemente, los sistemas con dispositivos de almacenamiento de datos capaces de almacenar una gran cantidad de contenido de datos (por ejemplo, canciones, vídeos musicales, etc.) se han incorporado de manera generalizada en dispositivos portátiles.
Tales dispositivos portátiles incluyen dispositivos de almacenamiento de datos (DSD) compactos y que pueden hacerse funcionar mediante fuentes de alimentación portátiles, tales como baterías. Algunos DSD de dispositivos portátiles pueden proporcionar memoria no volátil que puede conservar los datos cuando se desconecta de la fuente de alimentación. Los dispositivos portátiles han utilizado varios dispositivos de almacenamiento de datos no volátiles, tales como unidades de disco duro, EEPROM (memoria de solo lectura programable que puede borrarse eléctricamente) y memoria flash.
La memoria flash se ha convertido en un tipo de DSD ampliamente utilizado. La memoria flash puede proporcionar una memoria no volátil en dispositivos electrónicos portátiles y en aplicaciones de consumidor, por ejemplo. Dos tipos de memoria flash son la flash NOR y la flash NAND. La flash NOR proporciona normalmente la capacidad de ejecutar código in situ y es accesible de manera aleatoria (es decir, como una RAM). Normalmente, la flash NAND puede borrar datos más rápidamente, acceder a datos en ráfagas (por ejemplo, bloques de 512 bytes) y puede proporcionar ciclos de borrado de mayor duración en comparación con la flash NOR. La flash NAND puede proporcionar generalmente un almacenamiento no volátil a un bajo coste por bit como un medio de almacenamiento de archivos de alta densidad para dispositivos de consumidores, tales como cámaras digitales y reproductores MP3, por ejemplo.
La memoria flash típica almacena una unidad de información almacenando una carga eléctrica en cada celda de memoria a una tensión representativa de un valor de datos digital. Las celdas de un solo nivel almacenan un bit de información en función de si la celda está cargándose a una tensión "alta" o está descargándose a una tensión "baja". La memoria flash NAND se ha desarrollado de tal manera que almacena hasta dos bits de información en una única celda descodificando la carga considerando que está dentro de uno de cuatro intervalos de tensión diferentes. La memoria flash NOR se ha desarrollado de tal manera que puede almacenar hasta 8 bits de información en una única celda descodificando la carga considerando que está dentro uno de 256 intervalos de tensión diferentes.
El documento US2003/0217323, que se considera como el estado de la técnica más próximo, describe un sistema de memoria que funciona de acuerdo con la calidad evaluada de los datos almacenados en la misma. Entonces, los datos pueden ser reconstruidos utilizando un Código de corrección de Error o estadísticas de la calidad de los datos.
RESUMEN
Los aparatos y sistemas asociados, procedimientos y productos de programa de ordenador descritos se refieren a almacenamiento de datos en niveles múltiples en dispositivos de memoria flash.
De acuerdo con un primer aspecto de la invención, se da a conocer un procedimiento para recuperación de datos de un dispositivo de memoria, según la reivindicación 1.
Las implementaciones pueden incluir una o varias de las siguientes características. La celda o celdas de memoria es la primera celda de memoria y la operación de aplicar carga a la primera celda de memoria incluye la aplicación de carga adicional a la primera celda de memoria para ajustar la caída de voltaje en la primera celda de memoria. La magnitud de la caída en la primera celda de memoria se determina detectando un nivel de voltaje de referencia almacenado en una celda de referencia. La celda de referencia está asociada con un correspondiente nivel predeterminado de voltaje y la magnitud de la caída se determina comparando el nivel predeterminado de voltaje con el nivel de voltaje detectado almacenado en la celda de referencia. La magnitud de la caída es determinada detectando niveles de voltaje almacenados en múltiples celdas de referencia. Una magnitud de carga adicional aplicada a la primera celda de memoria se determina basándose en una función de corrección.
Se recibe una señal de un dispositivo principal para iniciar una operación de mantenimiento y se aplica carga a una
o varias de las celdas de memoria a un voltaje objetivo que representa el valor de datos como respuesta a una señal recibida. La señal procedente del dispositivo principal indica un estado de suministro de potencia o energía. La señal procedente del dispositivo principal indica si dicho dispositivo principal recibe energía CA y/o si una batería del dispositivo principal está cargada a un nivel de carga predeterminado. La señal procedente del dispositivo principal indica una operación de mantenimiento programada.
Una señal es recibida desde un procesador de la memoria flash para iniciar una operación de mantenimiento y se aplica carga a una o varias de las celdas de memoria a un voltaje objetivo que representa el valor de datos como respuesta a la señal recibida. La señal procedente del procesador de la memoria flash indica que el procesador de la memoria flash tiene suficiente ancho de banda para llevar a cabo una operación de mantenimiento. La señal procedente del procesador de memoria flash indica que el procesador de memoria flash se encuentra inactivo.
La entrada del registro de resolución que corresponde a la primera celda de memoria indica una primera resolución que corresponde a un primer número de posibles valores de datos. Se recibe una señal para escribir en una segunda resolución que corresponde a un segundo número de posibles valores de datos y una entrada de registro de resolución que corresponde a dicha celda o celdas de memoria es actualizada para indicar la segunda resolución. El voltaje objetivo se basa en la segunda resolución. El primer número de valores de datos posibles es superior al segundo número de valores de datos posibles y la celda o celdas de memoria incluyen más de una celda de memoria seleccionada entre la serie de celdas de memoria. De manera alternativa, el primer número de posibles valores de datos es igual al segundo número de posibles valores de datos y la celda o celdas de memoria incluyen una celda de memoria distinta a la primera celda de memoria. El segundo número de posibles valores de datos supera el primer número de posibles valores de datos. El primer número de posibles valores de datos no supera 4 bits; por ejemplo, el primer número de posibles valores de datos es de 2 bits o 1 bit. El segundo número de posibles valores de datos es, como mínimo, 4 bits; por ejemplo, el segundo número de posibles valores de datos es, como mínimo, 8 bits. Los valores de datos almacenados en la primera celda de memoria en la primera resolución es un resultado de una operación de escritura en la que los datos recibidos de un dispositivo principal son escritos en el dispositivo de memoria flash.
Una señal es recibida desde un dispositivo principal para la escritura de datos recibidos desde un dispositivo principal en el dispositivo de memoria flash. El valor de datos recibido desde el dispositivo principal es escrito en la primera celda de memoria en una primera resolución que corresponde a un primer número de posibles valores de datos y la primera resolución es registrada en el registro de resolución correspondiente a la primera celda de memoria. Se recibe una señal para la escritura de una segunda resolución correspondiente a un segundo número de posibles valores de datos y el segundo número de posibles valores de datos supera el primer número de valores de datos. Un registro de resolución que corresponde a dicha celda o celdas de memoria es actualizado para indicar la segunda resolución y el voltaje objetivo es basado en la segunda resolución. Se recibe una señal procedente del dispositivo principal indicando una situación de potencia en el dispositivo principal.
La entrada del registro de resolución correspondiente a la primera celda de memoria indica una primera resolución que corresponde a un primer número de posibles valores de datos. La entrada del registro de resolución asociada con la primera celda de memoria es actualizada para indicar una segunda resolución que corresponde a un segundo número de posibles valores de datos y el primer número de posibles valores de datos es superior que el segundo número de posibles valores de datos. Un segundo valor de datos es escrito en la primera celda de memoria en la segunda resolución. La actualización de la entrada del registro de resolución asociada con la primera celda de memoria y la escritura en la primera celda de memoria en la segunda resolución son iniciadas por una situación de error asociada con una página de celdas de memoria que incluye la primera celda de memoria. La página de celdas de memoria es apareada con la segunda página de celdas de memoria degradadas. Un código de software de direccionado lógico es actualizado para tratar el par de página de celdas de memoria como página única de celdas de memoria en la primera resolución.
Las implementaciones pueden incluir una o más de las siguientes características. La determinación de si la fuente de alimentación satisface la condición predeterminada puede ser que el dispositivo principal esté recibiendo energía de CA o que el dispositivo principal tenga una batería cargada a un nivel de carga predeterminado. La determinación de si llevar a cabo la operación de mantenimiento puede incluir determinar si un procesador tiene un ancho de banda no utilizado que supera un umbral predeterminado.
Las implementaciones pueden incluir una o varias de las siguientes características. Se detecta el nivel de voltaje en una segunda celda de referencia. La aplicación de carga adicional a las celdas de memoria se basa además en el nivel de voltaje detectado en la segunda celda de referencia y un segundo voltaje de celda de referencia predeterminado. Las celdas de memoria son celdas de memoria flash NAND o celdas de memoria flash NOR. Cada uno de los valores de datos incluye más de 4 bits.
Las implementaciones pueden incluir una o más de las siguientes características. Un código software de direccionamiento lógico convierte direcciones lógicas recibidas desde el dispositivo principal en direcciones físicas
que se utilizan para el acceso a los datos. La interfaz principal está adaptada además para recibir comandos desde un dispositivo principal y para intercambiar datos con el dispositivo principal.
Las implementaciones pueden incluir una o varias de las siguientes características. La determinación de si se debe llevar a cabo la operación de mantenimiento incluye la determinación de si el dispositivo principal tiene suministro de potencia adecuado a una situación predeterminada, tal como que el dispositivo principal recibe potencia CA o que el dispositivo principal tiene una batería cargada a un nivel de carga predeterminado. La determinación de si se debe llevar a cabo la operación de mantenimiento comporta la determinación de si un procesador interno tiene ancho de banda no utilizado que supera un umbral predeterminado. Los códigos de software de direccionado lógico para valores de datos reescritos en diferentes celdas de memoria física durante una o varias actividades en mantenimiento son actualizados.
De acuerdo con un segundo aspecto de la invención, se da a conocer un artículo de fabricación, tal como se reivindica en la reivindicación 5. De acuerdo con un tercer aspecto de la invención, se da a conocer un sistema para almacenar información digital, tal como se reivindica en la reivindicación 11.
Algunas implementaciones pueden proporcionar una o más ventajas. Por ejemplo, algunas implementaciones pueden proporcionar funciones de almacenamiento de datos a gran rendimiento. La densidad y/o la capacidad de almacenamiento pueden aumentar. Algunos ejemplos pueden proporcionar una mayor fiabilidad y/o menores tasas de error de datos. Varias implementaciones pueden permitir mayores niveles de integración, miniaturización, menos ruido electromagnético y/o mejores márgenes de ruido. Algunas implementaciones permiten menores costes de sistema en sistemas auxiliares, tales como suministros de tensión a circuitos lógicos y/o circuitos de programación/borrado.
Los detalles de una o más implementaciones de la invención se exponen en los dibujos adjuntos y en la siguiente descripción. Otras características de la invención resultarán evidentes a partir de la descripción, los dibujos y las reivindicaciones.
DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 muestra un ejemplo de una arquitectura de una cápsula de múltiples chips que incluye un chip de memoria flash NAND y un controlador de disco flash.
Las figuras 2A y 2B muestran de manera conjunta un mapeo entre tensiones de celda y valores digitales almacenados en una celda de memoria.
Las figuras 3A y 3B muestran diagramas de flujo que ilustran ejemplos de procesos para leer páginas de datos de una memoria flash con celdas de múltiples niveles.
La figura 4 muestra un diagrama de flujo que ilustra un ejemplo de un proceso para leer una página de datos desde una memoria flash.
La figura 5 muestra un diagrama de flujo que ilustra un ejemplo de un proceso para llevar a cabo operaciones de corrección de errores para corregir una página de datos que contiene errores de bits.
Las figuras 6A a 6C muestran de manera conjunta ejemplos de operaciones para ejecutar un comando de valor alternativo.
Las figuras 7A y 7B muestran diagramas de flujo que ilustran un ejemplo de procesos para escribir datos en una página de memoria flash.
Las figuras 8A y 8B muestran diagramas de flujo que ilustran ejemplos de procesos para ajustar la resolución de celda de una página de memoria.
La figura 9 muestra un diagrama de flujo que ilustra un ejemplo de un proceso de mantenimiento.
La figura 10 muestra un diagrama de flujo que ilustra un ejemplo de un proceso de direccionamiento lógico en el controlador de disco flash.
La figura 11 muestra un ejemplo de un sistema que incluye una bomba de carga y un convertidor de analógico a digital externos al chip de memoria flash NAND.
La figura 12 muestra un ejemplo de un sistema que incluye una entrada de energía desacoplada en un chip de memoria flash NAND.
Los símbolos de referencia similares en los diferentes dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA DE EJEMPLOS ILUSTRATIVOS
Varias implementaciones se refieren a una memoria flash que puede almacenar información en celdas profundas de múltiples niveles (MLC). Las celdas profundas de múltiples niveles pueden codificar al menos varios bits de datos según una tensión de celda. Algunas implementaciones se refieren a arquitecturas para implementar sistemas que incluyen memoria flash de MLC profundas. Algunas implementaciones se refieren a técnicas para llevar a cabo operaciones de almacenamiento de datos con memorias flash de MLC profundas.
La figura 1 muestra un ejemplo de una cápsula de múltiples chips (MCP) -100-que proporciona almacenamiento de datos para un dispositivo principal (no mostrado). La MCP -100- incluye un chip de memoria flash NAND -103- para almacenar datos y un controlador de disco flash (FDC) -106- que facilita el acceso a la memoria flash en respuesta a comandos de lectura y/o escritura procedentes del dispositivo principal. En algunas implementaciones, el chip de memoria flash NAND -103- almacena datos en MLC profundas. Por ejemplo, las celdas del chip de memoria flash -103- pueden incluir 3, 4, 5, 6, 7, 8, 9, 10 o más bits de información. La MCP -100- puede proporcionar almacenamiento de datos en varios dispositivos portátiles, tales como cámaras digitales, otros dispositivos de almacenamiento de imágenes, dispositivos de audio portátiles, asistentes personales digitales (PDA) y grabadores de vídeo digitales, por ejemplo. Algunas implementaciones también pueden utilizarse en otras aplicaciones, cuyos ejemplos pueden incluir ordenadores de sobremesa, servidores, encaminadores inalámbricos o aplicaciones integradas (por ejemplo, de automoción), particularmente en situaciones en las que se desea un acceso rápido a los datos. En general, el aparato y las técnicas según los ejemplos descritos en este documento pueden implementarse para aumentar la densidad de la memoria flash y/o llevar a cabo operaciones de almacenamiento no volátil de datos a gran rendimiento y/o fiables.
Como ejemplo ilustrativo, la MCP -100-puede almacenar un archivo de datos almacenando un octeto (es decir, 8 bits) de información en cada celda de un grupo de celdas (por ejemplo, una página o un bloque) de una memoria flash. Otros ejemplos pueden tener resoluciones de 16 bits, 32 bits, 64 bits o superiores. En algunas implementaciones, la resolución puede determinarse mediante la detección de uno o de múltiples electrones en una puerta de una celda. En otras implementaciones, cualquier número práctico de bits de información puede codificarse en una tensión a la que está cargada una celda individual de memoria flash.
El FDC -106- incluye una interfaz principal -109-, un procesador -112- y una interfaz flash -115-. El FDC -106-recibe comandos y/o datos (por ejemplo, actualizaciones de código software o datos de usuario) desde y/o transmite datos a un dispositivo principal, tal como un procesador o un ordenador de sobremesa, un servidor o un dispositivo informático portátil, a través de la interfaz principal -109-. La comunicación con el dispositivo principal puede utilizar protocolos personalizados o estándar, tales como Advanced Technology Attachment (ATA), Serial ATA (SATA), Block Abstracted NAND, Secure Digital (SD) o Multi-Media Card (MMC), por ejemplo. En algunas implementaciones, la MCP -100-puede ser parte del mismo producto que el dispositivo principal. En otras implementaciones, el dispositivo principal puede estar en comunicación operativa con la MCP -100- a través de un enlace de comunicaciones (por ejemplo, USB, Firewire, Bluetooth) con al menos otro dispositivo basado en procesador. Por ejemplo, un dispositivo principal puede acceder a la MCP -100- de manera remota enviando mensajes de control y enviando y recibiendo mensajes de datos a través de al menos una red, la cual puede incluir enlaces cableados, inalámbricos, de fibra óptica o una combinación de los mismos. Tales redes pueden soportar comunicaciones basadas en paquetes y pueden incluir una red local o una red de área extensa, tal como Internet.
El procesador del dispositivo principal puede leer datos de y/o escribir datos en el chip de memoria flash NAND -103utilizando un esquema de direccionamiento lógico procesado por el FDC -106- para identificar direcciones físicas de la memoria flash. En algunas implementaciones, la interfaz principal -109- puede estar configurada para comunicarse con el dispositivo principal utilizando una interfaz ATA/IDE. El procesador -112- puede procesar el comando recibido y utilizar la interfaz flash -115- para acceder al chip de memoria flash NAND -103-. El FDC -106puede estar configurado para proporcionar funcionalidades, tales como gestión del deterioro, gestión de bloques, corrección de errores y funcionalidades de gestión de direccionamiento lógico, para mejorar el rendimiento del chip de memoria flash NAND -103-, tal como aumentar la fiabilidad, reducir el tiempo de lectura y de escritura, mejorar la eficiencia energética y aumentar la capacidad por volumen de chip. Determinadas técnicas y aparatos descritos en este documento pueden aplicarse a la memoria flash NAND y/o NOR, a otros tipos de memoria que pueden borrarse eléctricamente o en las que puede escribirse eléctricamente, o a memorias en las que la resolución del acceso a datos viene dada en páginas o en bloques.
Aunque en la figura 1 solo se muestra un chip de memoria flash NAND -103-, la MCP -100- puede incluir más de un chip de memoria flash NAND -103-. Algunas implementaciones pueden incluir cualquier combinación de memorias no volátiles, que pueden incluir flash NAND, flash NOR o memorias de solo lectura programables que pueden borrase eléctricamente (EEPROM). En algunos ejemplos ilustrativos, la MCP -100- puede incluir dos, tres, cuatro o al menos ocho chips de memoria flash NAND -103-. Por ejemplo, la MCP -100- puede incluir un controlador de disco flash -106- en un chip que está encapsulado con (por ejemplo, en una pila) cuatro chips de memoria flash NAND -103-.
En algunas implementaciones, el controlador de disco flash -106-y el chip de memoria flash -103- pueden estar implementados en un único chip. En otras implementaciones, uno o más de los componentes del controlador de disco flash -106- pueden estar implementados de manera total o parcialmente externa a un único chip o a la MCP -100-. Por ejemplo, toda o parte de la memoria dinámica y síncrona de acceso aleatorio (SDRAM) -151- y/o de la memoria no volátil (NVM) -154-puede estar implementada de manera externa a la MCP -100-. En algunas implementaciones, todo o parte del controlador de disco flash -106-puede estar encapsulado por separado con respecto al chip de memoria flash -103-. En un ejemplo ilustrativo, la NVM -154-, la SDRAM -151-, la interfaz principal -109- y al menos una parte del procesador -112- pueden estar implementados cada uno de manera externa a la MCP -100-. En otras implementaciones, las señales analógicas y/o digitales entre la interfaz flash -115- y el chip de memoria flash -103- pueden encaminarse externamente a una cápsula integrada.
Pueden implementarse estructuras de transmisión remotas o distribuidas (por ejemplo, trayectorias de señales de impedancia protegidas y/o controladas) para transportar señales a y/o desde al menos un chip de memoria flash -103-. En algunas implementaciones puede proporcionarse expansión de memoria instalando cápsulas adicionales de memoria no volátil. Pueden utilizarse dispositivos de almacenamiento intermedio y/o de encaminamiento para soportar la distribución de señales analógicas y/o digitales hacia un número variable de chips de memoria -103-. Además, las funciones del procesador -112- pueden llevarse a cabo de manera externa a la MCP -100-. En varios ejemplos, el procesador -112- puede implementarse, total o parcialmente, en un circuito sobre el mismo sustrato (por ejemplo, placa de circuito impreso) o en el mismo producto que la MCP -100-. El procesador -112- puede implementarse a partir de otro dispositivo informático en comunicación operativa con la MCP -100- a través de un enlace de comunicaciones (por ejemplo, cableado, inalámbrico, de fibra óptica o una combinación de cualquiera de los mismos).
La MCP -100-puede tener cualquier tamaño de memoria práctico, tal como hasta al menos -100- gigabytes o superior. En el ejemplo descrito, el chip de memoria flash NAND -103- está organizado para incluir una pluralidad de bloques de memoria flash -118-. En algunas implementaciones, el chip de memoria flash NAND -103- puede incluir cientos o miles de bloques de memoria flash -118-. Cada bloque de memoria flash -118- incluye una pluralidad de páginas de memoria flash -121-. Tal y como se muestra, cada página de memoria flash -121-incluye celdas que pueden almacenar datos -124- y celdas que pueden almacenar códigos de corrección de errores (ECC) -127asociados con los datos. Como un ejemplo, la página de memoria flash -121- puede almacenar 2048 bytes de datos y 64 bytes de datos ECC. Las celdas de datos -124- almacenan información recibida desde el controlador de disco flash -106-. Las celdas ECC -127- almacenan metadatos de integridad adicional (por ejemplo, datos ECC) que están asociados con los datos almacenados en las celdas de datos -124-. En varias implementaciones, los datos ECC permiten que el controlador de disco flash -106- detecte y/o corrija errores de bits en los datos.
En el ejemplo ilustrado, cada bloque de memoria flash -118-incluye además una o más celdas de referencia -130a-, -130b-, -130c-. En algunas implementaciones, el FDC -106-puede supervisar la tensión de las celdas de referencia -130a-, -130b-, -130c-para estimar el grado de variación o hueco de tensión en las celdas -124-, -127-. En cada bloque -118-, la celda de referencia -130a-puede estar situada al principio del bloque -118-, y la celda de referencia -130b- puede estar situada al final del bloque -118-. Cada página de memoria flash -121- puede incluir la celda de referencia -130c-. En algunas implementaciones, un número mayor o menor de celdas de referencia puede estar distribuido en cualquier patrón a través de las páginas, bloques y chips de la memoria -103- para determinar el posible rendimiento de las celdas -124-, -127-.
En algunas implementaciones, las celdas de referencia pueden estar situadas en o alrededor de celdas que experimentan niveles de uso de lectura/escritura que son representativos del nivel de uso de determinadas celdas de datos de interés. Los procedimientos de compensación pueden basarse en comparar celdas que no son de referencia con otras celdas que no son de referencia. Por ejemplo, si las tensiones en una pluralidad de celdas de la misma página o bloque son relativamente bajas, entonces la compensación puede incluir ajustar umbrales (por ejemplo, umbrales de tensión entre diferentes niveles de valor en una celda) hacia valores más bajos según los valores medidos, de manera que los errores de lectura pueden reducirse sustancialmente. Otros ejemplos incluyen determinar una función de corrección según las tensiones detectadas en las celdas de referencia, donde la función de corrección ajusta la tensión detectada antes de convertir la tensión detectada en el valor de datos digital representado por la celda de memoria.
En algunas implementaciones, las celdas de memoria pueden refrescarse aplicando una carga adicional a una pluralidad de celdas para corregir huecos de tensión detectados. Por ejemplo, si el nivel de tensión de una o más celdas de referencia supera alguna cantidad umbral de variación de tensión, entonces las celdas de memoria de la
(s)
página (s) o bloque (s) asociado (s) con la (s) celda (s) de referencia pueden ajustarse aplicando una carga adicional o pueden reescribirse para restaurar las celdas a niveles de tensión apropiados según los datos almacenados. Tales ajustes pueden llevarse a cabo inmediatamente tras detectarse la variación de tensión en la (s) celda (s) de referencia o como parte de una operación de mantenimiento posterior. En algunas implementaciones puede aplicarse una carga adicional o las celdas de memoria pueden reescribirse en función de la diferencia entre la
(s)
tensión (es) detectada (s) de celda de referencia y la (s) tensión (es) objetivo de celda de referencia, lo que se supone que indica la cantidad aproximada de variación o hueco de tensión tanto para la (s) celda (s) de referencia como para las celdas de datos correspondientes.
En otras implementaciones, la aplicación de una carga adicional o la reescritura de las celdas de memoria puede llevarse a cabo leyendo todas las celdas, llevando a cabo cualquier ajuste necesario en los umbrales (por ejemplo, usando una función de corrección basada en las tensiones de celda de referencia y/o usando otras técnicas descritas en este documento), y llevando a cabo una corrección de errores en los datos detectados para obtener los datos almacenados. Después, los datos pueden usarse para determinar niveles de tensión apropiados o la cantidad de carga adicional necesaria para las diversas celdas de memoria para corregir la variación o hueco de tensión identificado. En algunas implementaciones, la cantidad de carga adicional aplicada puede determinarse según una función de corrección que es idéntica o similar a la función de corrección utilizada para ajustar las tensiones detectadas antes de convertir las tensiones detectadas en valores de datos digitales.
En algunas implementaciones, las celdas de la memoria flash pueden reasignarse de manera adaptativa. Por ejemplo, las celdas de referencia pueden añadirse, eliminarse, reasignarse y/o redistribuirse según sea necesario en respuesta a información de uso de lectura o escritura, la temperatura, la antigüedad del producto, la tensión de suministro (por ejemplo, baja batería, energía de línea de CA), y/o los niveles de error detectados. Si hay pocos errores en determinados bloques o páginas de la memoria, entonces pueden asignarse menos celdas como celdas ECC -127- y/o como celdas de referencia 130, lo que permite un mayor número de celdas de datos -124-. Las asignaciones relativas de celdas a funciones de referencia, de datos y ECC, así como la determinación de celdas individuales, pueden ajustarse dinámicamente en función de las condiciones de funcionamiento actuales y/o según condiciones predeterminadas. Por ejemplo, la determinación puede ajustarse en función de las tasas de error, el número de celdas ECC por página puede basarse en las tasas de error y en la información del histórico de lectura y escritura, y la ubicación y la distribución de las celdas de referencia pueden basarse en tasas de error y en la antigüedad del producto. Este ejemplo simplemente ilustra que el controlador -106-y el chip de memoria flash pueden ajustarse dinámicamente según varios criterios. Otros criterios pueden incluir la criticidad de los datos, la disponibilidad de la fuente de alimentación (por ejemplo, energía de línea de CA, energía de batería), y criterios definidos sobre la importancia relativa de maximizar el tamaño de la memoria, las prestaciones por velocidad y la integridad de los datos. Por ejemplo, mantener una alta resolución de celda que requiere un gran número de correcciones de software puede dar como resultado tiempos de acceso más largos. Los criterios pueden ajustarse por el usuario, el fabricante de producto o el software, según las necesidades de la aplicación.
En algunas implementaciones, los datos que requieren un elevado número de correcciones de software pueden reescribirse en una operación de mantenimiento para corregir las variaciones de carga asociadas con el paso del tiempo o para corregir páginas de celdas de memoria que han empezado a degradarse. Normalmente, durante el cambio de resolución de una o más celdas de memoria, los datos se escribirán en una página diferente de celdas de memoria, y pueden escribirse en la misma resolución o en otra diferente. En algunas implementaciones, la página original de celdas de memoria pasará a una resolución inferior, lo que se requerirá con frecuencia a media que las celdas de memoria envejecen y se degradan. Cuando se lleva a cabo la reescritura de los datos como resultado de una variación o hueco de tensión identificado, es posible escribir los datos en la misma página o bloque, o en otros diferentes, de las celdas de memoria.
La interfaz flash -115- proporciona control directo, establecimiento de comunicaciones y acceso de transferencia de datos al chip de memoria flash -103-. La interfaz flash -115-incluye una interfaz de control -133- y una interfaz analógica -136-. En algunas implementaciones, la interfaz de control -133- puede enviar señales de control, de direcciones y de datos al chip de memoria flash -103-. Los comandos y las direcciones de memoria pueden transmitirse en señales digitales o en señales analógicas. El controlador de disco flash -106-también puede recibir señales analógicas desde el chip de memoria flash -103-. El controlador de disco flash -106- puede incluir un procesador para interactuar con la lógica de memoria flash del chip de memoria flash -103-, y este procesador para interactuar con la lógica de memoria flash del chip de memoria flash puede estar integrado en la interfaz flash -115-.
En respuesta a un comando de lectura, el chip de memoria flash -103- puede proporcionar tensiones de celda que representan los datos almacenados en celdas de datos individuales -124-. El controlador de disco flash -106- puede recibir las señales de tensión analógicas proporcionadas desde cada celda de memoria del chip de memoria flash -103-. Estas tensiones de celdas analógicas o señales de tensión analógicas pueden transmitirse a la interfaz analógica -136- del FDC -106-. En algunas implementaciones, la interfaz flash -115- también puede incluir un bus de datos distinto de la interfaz de control -133- y de la interfaz analógica -136- para comunicarse con el chip de memoria flash -103-.
La interfaz analógica -136- puede incluir un módulo de interfaz analógico (FE analógico) -139-y un convertidor de analógico a digital (ADC) -142-. Tras recibirse las señales analógicas, el FE analógico -139- puede acondicionar las señales según sea necesario, por ejemplo proporcionar un desajuste, un desfase de nivel correctivo, ganancia, almacenamiento intermedio, filtrado o una impedancia controlada para minimizar las reflexiones. El FE analógico puede proporcionar una entrada de alta impedancia para minimizar la carga de la celda de memoria flash, y una salida de baja impedancia para activar un circuito de muestreo y retención o de seguimiento y retención que está acoplado a una entrada del ADC -142-. En algunas implementaciones, el FE analógico -139- puede incluir además un multiplexor analógico (no mostrado) para seleccionar una línea de entre una pluralidad de líneas de salida analógicas de uno o más chips de memoria flash.
El ADC -142- procesa el valor analógico para determinar una representación de valor de datos digital correspondiente de la tensión en las celdas de datos -124-, -127-. El ADC -142-recibe la señal analógica acondicionada y convierte la señal analógica en una representación digital de la tensión analógica. Después, el ADC -142- (o un procesador del ADC) convierte la representación digital en un valor de datos digital representado por la tensión almacenada en la celda de memoria según, por ejemplo, una función de mapeo. El procesador -112también puede usarse para convertir la representación digital en un valor de datos digital. La representación digital de la tensión analógica puede incluir suficiente información para permitir que el ADC -142- o un procesador distingan entre una pluralidad de niveles de tensión analógicos que representan cada uno un valor de datos digital particular. La representación digital puede comprender un mayor número de bits de datos que el valor de datos digital. En algunas implementaciones, el ADC -142- puede estar integrado en el chip de memoria flash -103- en lugar de estar incluido en el controlador de disco flash -106-. En este caso, la interfaz flash -115- puede recibir representaciones digitales de tensiones de celda o valores de datos digitales del chip de memoria flash -103-.
Se muestra un ejemplo de una función de mapeo -145-. Según la función de mapeo -145-, el ADC -142- o el procesador -112- puede convertir una tensión de celda analógica en una representación digital y/o en un valor de datos digital. Por ejemplo, puede haber una serie de umbrales de tensión analógica que pueden usarse para mapear una tensión analógica con una representación digital y/o un valor de datos digital. Asimismo, la función de mapeo -145-también puede ilustrar la conversión de una representación digital de la tensión analógica en un valor de datos digital. Por ejemplo, una o más representaciones digitales de la tensión analógica pueden mapearse con un valor de datos digital particular, donde cada valor de datos digital tiene un conjunto diferente correspondiente de una o más representaciones digitales.
En algunas implementaciones, el ADC -142- o el procesador -112-pueden recibir parámetros que modifican la función de mapeo -145-. Por ejemplo, el FDC -106- puede adaptar la función de mapeo -145- en función de la temperatura actual, la tensión de suministro, el número de lecturas y escrituras de los datos de página y/o la tensión en las celdas de referencia -130a-, -130b- y/o -130c-. En algunas implementaciones, las adaptaciones a la función de mapeo pueden basarse en características de tensión de celdas de datos vecinas -124-, celdas ECC -127- y/u otras celdas. El mapeo -145- entre tensiones de celda y valores de datos digitales se describe en mayor detalle con referencia a las figuras 2A y 2B. En algunas implementaciones, el ADC -142- o un procesador también pueden funcionar según un comando de valor alternativo para recuperar valores alternativos para las señales analógicas recibidas o representaciones digitales de las señales analógicas. Implementaciones de ejemplo del comando de valor alternativo se describen en mayor detalle con referencia a las figuras 6A a 6C.
El controlador de disco flash -106-incluye además un motor ECC -148-. En varias implementaciones, el motor ECC -148-puede llevar a cabo comprobaciones y correcciones de errores de hardware y/o software utilizando celdas ECC -127-. En algunas implementaciones, el motor ECC -148- puede proporcionar una recuperación de datos basada en una máquina de estados. Por ejemplo, el motor ECC -148- puede detectar el número de bits de error en una página de datos. Después, el motor ECC -148- puede determinar qué algoritmo ECC utilizar. Como un ejemplo, el motor ECC -148- puede configurarse para intentar en primer lugar un algoritmo ECC de hardware que utiliza, por ejemplo, códigos de Hamming o de Reed-Solomon. Si el algoritmo ECC de hardware no es satisfactorio para recuperar la página de datos, entonces puede intentarse una corrección ECC de software. Un procedimiento de ejemplo que ilustra el uso de ECC de hardware, de ECC de software y de otras técnicas combinadas se describe con referencia a la figura 5. En algunas implementaciones, el motor ECC -148- puede proporcionar una corrección de errores de hasta al menos el 10% o más del tamaño de una página de datos. En algunos ejemplos, un procesador puede determinar qué algoritmo ECC se debe utilizar.
En algunas implementaciones, el procesador -112- reescribirá o refrescará los datos almacenados en una página de memoria flash si se utiliza un algoritmo ECC para recuperar datos que superan un número predeterminado de porcentaje de error. En otras implementaciones, el procesador -112- registrará en un registro de mantenimiento la posición, física y/o lógica, de los datos que incluyeron tales errores. Después, el procesador -112-reescribirá o refrescará esos datos durante una operación de mantenimiento (véase la figura 9). Las operaciones de mantenimiento pueden llevarse a cabo cuando el dispositivo principal está funcionando bajo unas condiciones de energía predeterminadas, cuando el procesador -112- tiene una cantidad predeterminada de exceso de ancho de banda y/o a intervalos planificados.
El controlador de disco flash (FDC) -106- puede incluir una memoria de acceso aleatoria dinámica (DRAM). El controlador de disco flash -106- de este ejemplo incluye además una memoria de acceso aleatoria dinámica y síncrona (SDRAM) -151-. Por ejemplo, la SDRAM -151- puede ser una SDRAM de velocidad de transferencia datos única o una SDRAM de doble velocidad de transferencia datos. En algunas implementaciones, el FDC -106- puede utilizar la SDRAM -151- como una memoria intermedia de alta velocidad y de alta densidad para almacenar datos temporales tales como datos de salida para el dispositivo principal y valores digitales alternativos para una página de datos, por ejemplo. El FDC -106- puede incluir además otros tipos de RAM, tales como DRAM. Como un ejemplo, el FDC -106- puede recibir datos analógicos desde el chip de memoria flash NAND -103-.
Después, el FDC -106- puede convertir las tensiones analógicas detectadas en datos digitales, incluyendo, en algunos casos, valores de datos digitales alternativos para una o más de las celdas. Después, el motor ECC -148comprueba y corrige los datos digitales, comprobando posiblemente múltiples combinaciones diferentes de valores de datos y valores de datos alternativos para las celdas de cada página de memoria flash -121-. Si la corrección de errores es satisfactoria, entonces el procesador -112-puede almacenar los datos digitales en una memoria intermedia principal de salida de la SDRAM -151-. En algunas implementaciones, el dispositivo principal puede recuperar datos de la memoria intermedia principal de salida. Como alternativa, el controlador de disco flash -106puede reenviar datos desde la memoria intermedia principal de salida al dispositivo principal. La SDRAM -151-, u otra memoria temporal, puede utilizarse además para almacenar datos que van a escribirse en el chip de memoria flash -103-.
El FDC -106-incluye además una memoria no volátil (NVM) -154-. En este ejemplo, la NVM -154-incluye código software de gestión de deterioro -157-, código software de gestión de bloques -160-, código software de direccionamiento lógico -163- y registros de resolución de celda -166-, cada uno de los cuales contiene instrucciones (o punteros a instrucciones en la memoria flash) que, cuando se ejecutan mediante el procesador -112-, llevan a cabo determinadas operaciones. En algunas implementaciones, la NVM -154- puede estar separada del chip de memoria flash NAND -103-. Por ejemplo, la NVM -154- puede ser una memoria flash NOR u otra memoria flash NAND. En otras implementaciones, la NVM -154- puede ser una o más páginas del chip de memoria flash NAND -103-. En otras implementaciones, la NVM -154- puede almacenar punteros o posiciones de memoria a los datos almacenados en el chip de memoria flash NAND -103-. En algunas implementaciones, el procesador -112- puede ejecutar el código software de gestión de deterioro -157-, el código software de gestión de bloques -160-y el código software de direccionamiento lógico -163- para mejorar la eficacia, el rendimiento y/o la fiabilidad de la MCP -100-.
El procesador -112- puede utilizar el código software de gestión de deterioro -157- para gestionar el deterioro de las páginas -121-, los bloques -118- o el chip -103- de la MCP -100-. Por ejemplo, el código software de gestión de deterioro -157-puede incluir instrucciones que, cuando se ejecutan por el procesador -112-, llevan a cabo operaciones que incluyen operaciones de equilibrado de carga para intercambiar los datos de la página de memoria más frecuentemente utilizada por los de una página de memoria menos utilizada. Las operaciones de intercambio también pueden incluir una actualización del código software de direccionamiento lógico -163-.
El código software de gestión de deterioro -157-puede activarse durante una operación de mantenimiento. En algunas implementaciones, las direcciones físicas y/o lógicas de cada operación de lectura se registran en un registro de mantenimiento. Cada operación de escritura también puede registrarse en un registro de mantenimiento. Después, el código software de gestión de deterioro -157- puede utilizar valores umbral predeterminados para determinar el modo de reordenar los datos almacenados entre las páginas de celdas de memoria. Estos valores umbral, por ejemplo, pueden incluir 100 ó 1000 lecturas de la página de celdas de memoria durante el transcurso de una semana o un mes. En otras implementaciones, los valores umbral pueden estar basados en un porcentaje del número total de operaciones de lectura, o en una desviación con respecto al número medio de lecturas por página y por unidad de tiempo. En la figura 9 se muestra un ejemplo de una operación de mantenimiento.
El código software de gestión de bloques -160- puede incluir código para gestionar bloques no válidos del chip de memoria flash -103-. Por ejemplo, el código software de gestión de bloques -160- puede incluir información del histórico de errores de los bloques de memoria flash -118-. En algunas implementaciones, la información de errores puede utilizarse para mantener la resolución de celda en cada una de las páginas de memoria flash. Un ejemplo del código software de gestión de bloques se describe en mayor detalle con referencia a las figuras 8A y 8B.
El código software de gestión de bloques -160-, posiblemente junto con el código software de direccionamiento lógico -163- y/o los registros de resolución de celda -166-, también puede utilizarse para emparejar conjuntos de bloques no válidos o páginas no válidas que tienen resoluciones reducidas (actualizadas en los registros de resolución de celda -166-) en el chip de memoria flash -103- y tratar el conjunto de bloques no válidos o de páginas no válidas para fines de direccionamiento lógico (quizá actualizados en el código software de direccionamiento lógico -163- y/o en los registros de resolución de celda -166-) de una manera equivalente a un único bloque o una única página de celdas de memoria que tienen la resolución superior inicial. El código software de gestión de bloques -157- puede activarse durante una operación de mantenimiento. Un ejemplo de una operación de mantenimiento se ilustra en la figura 9.
El código software de direccionamiento lógico -163- puede incluir código para convertir una dirección lógica de un comando de dispositivo principal en direcciones físicas del chip de memoria flash NAND -103-. En algunos ejemplos, una página lógica puede estar asociada con múltiples páginas de memoria física en el chip de memoria flash NAND -103-. El código software de direccionamiento lógico -163- gestiona la conversión y la actualización de la tabla de direcciones lógicas de la NVM -154-. En un ejemplo, el código software de direccionamiento lógico -163- puede mantener dinámicamente enlaces entre direcciones de bloque lógicas del dispositivo principal y direcciones de página físicas cuando las páginas pasan de una resolución de 10 bits a una resolución de 8 bits, por ejemplo, o cuando el mapeo de direcciones de bloque lógicas con direcciones de página físicas diferentes se modifica para fines de gestión de deterioro. Formas intermedias de direcciones pueden generarse en el proceso de conversión entre direcciones lógicas y físicas, por ejemplo. Formas intermedias de direcciones pueden generarse, procesarse,
almacenarse, utilizarse y/o manipularse de otro modo para llevar a cabo varias operaciones de memoria no volátil. Un ejemplo del código software de direccionamiento lógico se describe en mayor detalle con referencia a la figura
10.
Los registros de resolución de celda -166- almacenan información sobre la resolución de celda en cada página de memoria flash -121-. Por ejemplo, el chip de memoria flash NAND -103- puede ser una memoria flash MLC de 8 bits. En algunas implementaciones, parte del bloque de memoria flash -118- puede degradarse o actualizarse en respuesta a varias condiciones. Ejemplos ilustrativos de tales condiciones incluyen un rendimiento erróneo, la temperatura, condiciones de tensión, el número de ciclos de lectura o escritura de celdas individuales, grupos de celdas, páginas, celdas en una posición vecina, celdas de referencia, celdas con un histórico de uso de lectura y/o escritura comparable, u otros factores, tales como la antigüedad del dispositivo. Información sobre todas o algunas de estas condiciones puede estar almacenada en un dispositivo de almacenamiento de datos, o puede determinarse
o estimarse a partir de uno o más bits de información almacenada. En un ejemplo, la información almacenada puede incluir datos del histórico de uso de lectura y escritura que representan los niveles de utilización para al menos algunas de las celdas del chip de memoria -103-. El procesador -112- puede actualizar los registros de resolución de celda -166- para reducir una resolución de celda de una página de memoria degradada a, por ejemplo, 4 bits, de manera que la página de memoria flash -121- todavía puede utilizarse con un tamaño de memoria más pequeño. En otras implementaciones, los registros de resolución de celda -166- también pueden almacenar la resolución de celda para cada bloque de memoria flash -118-.
En algunas implementaciones, los registros de resolución de celda -166- se ajustan a la baja hasta una resolución de un solo bit u otra resolución de un número bajo de bits antes de transferir datos desde un dispositivo principal hasta las celdas de memoria de la MCP -100-. Este proceso se describe en mayor detalle en la figura 7B. La reducción de valor en los registros de resolución de celda -166- antes de la transferencia de datos puede permitir mayores velocidades de transferencia de datos ya que se necesita menos precisión para cargar cada celda de memoria. Los datos transferidos pueden reescribirse posteriormente en celdas de memoria a una mayor resolución. En algunas implementaciones, los datos transferidos pueden reescribirse a una mayor resolución durante una operación de mantenimiento (por ejemplo, en un momento posterior cuando hay disponibles suficientes recursos de procesamiento y la reescritura no interfiere con otras operaciones de lectura o escritura). En algunas implementaciones, la transferencia de datos de baja resolución de celda se registra en un registro de mantenimiento.
En algunas implementaciones, el código software de direccionamiento lógico -163-, los registros de resolución -166y/o el código software de gestión de bloques -160- agruparán páginas de memoria degradadas (o bloques de memoria degradados) y tratará el grupo para fines de direccionamiento lógico como una única página (o bloque) de memoria no degradada. No es necesario que las páginas de memoria del grupo de páginas de memoria degradadas sean páginas de memoria adyacentes. El grupo de páginas de memoria degradadas puede incluir páginas de memoria de diferentes bloques e incluso de diferentes chips de memoria. En algunas implementaciones, cada página o bloque de memoria degradados de un grupo de páginas o bloques de memoria degradados se degrada en respuesta a una condición de error asociada con la página o bloque.
Las figuras 2A y 2B muestran de manera conjunta mapeos entre tensiones de celda y valores de datos digitales almacenados en la celda de memoria. Tal y como se muestra en la figura 2A, se muestra una distribución ilustrativa de valores de datos digitales -200- de una celda de memoria de 8 bits. Una celda de memoria de 8 bits incluye 256 valores de datos digitales posibles; una celda de memoria de 4 bits incluye 16 valores de datos posibles. El número de valores de datos posibles es igual a 2n (donde n es igual al número de bits), pero no es necesario que el número de valores de datos digitales posibles corresponda a un número de n bits de valores de datos digitales posibles. Cada celda de memoria puede tener cualquier número entero de posibles valores de datos digitales mayor que 1, por ejemplo, algunas celdas de memoria pueden tener 10 valores de datos posibles. La distribución de valores digitales -200- incluye curvas de distribución de valores digitales -205- a -210- que representan la distribución de tensión para cada valor de datos digital. Cada curva de distribución de valores digitales (por ejemplo, -205- a -210-) representa un intervalo de valores de tensión digitales correspondientes a niveles de tensión asociados con cada posible valor de datos digital.
Durante una operación de escritura, cada celda de memoria recibe una carga para una tensión analógica correspondiente a un valor de datos digital seleccionado entre uno de los posibles valores de datos digitales. Normalmente, esta tensión correspondiente está dentro de las curvas de distribución -205- a -210-para los valores de datos digitales deseados. Esta tensión correspondiente también puede ser una tensión objetivo correspondiente al valor de datos digital. Por ejemplo, si una tensión de celda está dentro de la distribución -207-, entonces el valor digital almacenado en la celda puede ser 02H. Durante una operación de lectura, una señal de tensión analógica se detecta desde cada celda. Después, el ADC -136- convierte la señal de tensión analógica en una representación digital de la señal de tensión analógica. Después, esta representación digital se compara con al menos una curva de distribución de valores digitales para determinar el valor de datos digital representado por la tensión analógica almacenada en la celda de memoria leída.
La distribución de valores de datos digitales -200-incluye áreas grises -215- entre las curvas de distribución de valores de datos digitales -205- a -210-. En algunas implementaciones, cuando el ADC -142-recibe una tensión de
celda o detecta una señal de tensión analógica que está dentro de una de las áreas grises -215-, el ADC -142puede, por ejemplo, convertir la tensión de celda al valor de datos digital adyacente más cercano. Por ejemplo, si el ADC -142- recibe una tensión de celda sustancialmente cercana a un nivel de tensión -220-, entonces el ADC -142puede optar por el valor de datos digital adyacente más cercano, en concreto FEH. En algunas implementaciones, el FDC -106-también puede incluir un comando de valor alternativo que ordena al ADC -142- optar por un valor alternativo en lugar de por el valor adyacente más cercano en función de algunos parámetros.
En algunas implementaciones, el FDC -106- puede utilizar tanto el valor de datos digital adyacente más cercano como uno o más valores alternativos en un proceso de corrección de errores que intenta corregir una página o bloque de valores de datos. Además, el FDC -106- puede asignar una incertidumbre a tensiones de celda particulares o a valores de datos correspondientes en función de la ubicación de la tensión de celda en las curvas de distribución de valores de datos digitales -205- a -210- o en las áreas grises -215-. La incertidumbre asignada puede utilizarse por un algoritmo que trate de corregir una página o bloque de valores de datos. Algunos ejemplos de estos parámetros pueden incluir uno o más de entre la temperatura, el número de lecturas en la celda, el número de escrituras en la celda, la tensión de suministro y la tensión en las celdas de referencia -130a-, -130b-, -130c-. En algunos ejemplos, la tensión de celda puede caer por debajo de una tensión mínima de celda (Vmin). El FDC -106puede implementar una corrección añadiendo un desfase a la tensión de celda recibida. Este desfase puede añadirse por el FE analógico -139-o añadirse digitalmente por el ADC -142- o el procesador -112-.
En algunas implementaciones, el FDC -106- puede ajustar dinámicamente las posiciones y las anchuras de las áreas grises -215- alternando la distribución de valores de datos digitales -200-. Por ejemplo, el FDC -106- puede incluir código software de mantenimiento que ajusta las áreas grises -215- en función de parámetros tales como una
o más tensiones de celdas de referencia, el uso de la celda de memoria y otros heurísticos que pueden haberse cargado previamente en la NVM -154-. El código software de mantenimiento también puede llevar a cabo la actualización de los registros de resolución de celda -166-. Por ejemplo, cada chip -103-, la interfaz analógica -135y/o la MCP -100- pueden caracterizarse en el tiempo de fabricación, y una tabla de linealización, factores de corrección u otro ajuste correctivo pueden almacenarse en la memoria no volátil de la MCP -100-. En algunos casos, los niveles de tensión máximo y mínimo (Vmax y Vmin) así como las curvas de distribución de valores digitales -205a -210- pueden ajustarse y/o redistribuirse en función de pruebas empíricas de las celdas durante su vida útil.
En la FIG 2B se muestra un gráfico -250- que relaciona tensiones de celda con valores digitales. El gráfico -250incluye una característica de tensión ideal -255- que el ADC -142- utiliza para convertir tensiones analógicas en valores digitales. En algunos ejemplos, la celda de datos -124- puede almacenar valores digitales según características de tensión no ideales -260-, -265-debido a, por ejemplo, los heurísticos de temperatura, la antigüedad de la celda, tolerancias de la tensión de suministro o de la bomba de carga, la no linealidad del ADC -136-, los errores detectados en la celda de memoria y/o el número de lecturas y escrituras en la celda. El FDC -106puede compensar de varias formas las características de tensión -260-, -265- para que se aproximen a las características ideales -255-. Procedimientos de compensación a modo de ejemplo se describen con referencia a las figuras 3A, 3B, 4, 5 y 6A a 6C.
Las figuras 3A y 3B muestran diagramas de flujo que ilustran ejemplos de procesos -350-y -300- para leer una página de datos de una memoria flash NAND. Los procesos -350- y -300- incluyen operaciones que pueden llevarse a cabo generalmente por el procesador -112-. En algunas implementaciones los procesos -350-y -300-también pueden llevarse a cabo, complementarse o ampliarse por otros elementos de procesamiento y/o de control que pueden incorporarse con el ADC -142-. Por ejemplo, puede haber un controlador o un compensador en la interfaz analógica -136- que lleve a cabo todas o algunas de las operaciones de los procesos -350-y -300-.
La figura 3A ilustra un proceso que convierte niveles de tensión detectados de celdas de memoria de múltiples niveles en valores de datos digitales. El proceso -350- empieza con la detección de un nivel de tensión analógica de una celda de memoria de múltiples niveles (etapa -355-). Esta tensión puede detectarse por la interfaz analógica -136-, por ejemplo. La interfaz analógica -136- puede incluir una entrada que puede hacerse funcionar para recibir señales analógicas de un chip de memoria flash -103-. El controlador de disco flash -106- puede incluir además un módulo de control para seleccionar celdas de memoria a partir de las cuales la entrada recibe señales analógicas. En la etapa -360-, la señal de tensión analógica se convierte en una representación digital de la tensión analógica detectada. Esta conversión puede llevarse a cabo por el ADC -142-. La representación digital puede tener suficientes datos como para permitir que el ADC -142- o el procesador -112- distingan el nivel de la tensión analógica almacenada por una celda de memoria de entre una pluralidad de posibles niveles de tensión que representan un valor de datos digital. Esto puede conseguirse mediante una representación digital que comprende más bits de datos que el valor de datos digital representado por la tensión almacenada en la celda de memoria.
La figura 2A ayuda a ilustrar este concepto. El intervalo de tensiones de celda analógicas posibles pueden dividirse en múltiples segmentos (por ejemplo, tal y como se representa mediante el nivel de tensión -220-), correspondiendo cada uno a una representación digital de la tensión de celda analógica. Cada curva de distribución de valores digitales -205- a -210- y cada área gris -215- puede incluir múltiples segmentos de este tipo, lo que permite la utilización de representaciones digitales que tienen una mayor resolución que las curvas de distribución de valores
digitales -205- a -210-, que pueden proporcionar información adicional relacionada con, por ejemplo, el lugar que ocupa una tensión de celda en una curva de distribución de valores digitales -205- a -210-o en un área gris -215-.
En la etapa -365-, la representación digital se convierte en un valor de datos digital en función de una distribución de valores de datos digitales. La distribución de valores de datos digitales puede almacenarse en los registros de resolución de celda -166- y puede ser la distribución de valores de datos digitales -200-mostrada en la figura 2A. En la etapa -335-, un procesador o controlador determina sí hay más celdas de memoria que leer. Si es así, entonces el proceso vuelve a la etapa -355-. De otro modo, el proceso -350- finaliza.
La figura 3B ilustra en mayor detalle un proceso que almacena valores de datos digitales identificados y que marca la ubicación de valores de datos digitales inciertos. El proceso -300- comienza cuando, por ejemplo, el procesador -112- recibe un comando para recuperar una página de datos del chip de memoria flash NAND -103-. En la etapa -305-, el procesador -112-recupera información de resolución de celda para una página desde los registros de resolución de celda -166-. Después, en la etapa -310-, el procesador -112-recibe desde el ADC -142- un valor de salida digital para una celda de datos. El valor de salida digital para la celda de datos es una representación digital de la tensión detectada desde la celda de datos. El ADC -142- determina en la etapa -310- el valor de datos digital recibido en función de los umbrales almacenados. En algunas implementaciones, el procesador -112- puede utilizar información de los registros de resolución de celda -166- para determinar el conjunto de umbrales utilizado. Estos umbrales pueden estar relacionados con las curvas de distribución de valores digitales -205- a -210- descritas anteriormente con relación a la figura 2A. Por ejemplo, el procesador -112- puede usar un conjunto de umbrales para una celda de 8 bits y otro conjunto de umbrales para una celda de 2 bits. En algunos casos, el procesador -112puede usar un conjunto de umbrales para una celda de 8 bits y otro conjunto de umbrales para una celda de 8 bits diferente. Cada conjunto de umbrales puede corresponder a una distribución de valores de datos digitales posible y puede constituir intervalos de representaciones digitales de tensiones analógicas que corresponden a valores de datos digitales posibles.
En la etapa -320-, el procesador -112- determina si los valores de datos digitales para un valor de tensión analógica recibido son inciertos. En algunas implementaciones, el procesador -112- puede determinar que un valor de datos digital es incierto si la tensión de celda está en una zona gris -215- de la distribución de valores digitales -200- o si la tensión de celda está cerca del límite entre una curva de distribución de valores digitales -205- a -210- y una zona gris -215-. En algunas implementaciones pueden asignarse diferentes niveles de incertidumbre dependiendo de dónde esté la tensión de celda en la distribución de valores digitales -200-(por ejemplo, las tensiones más altas pueden tender a tener una mayor incertidumbre y/o la incertidumbre puede ser mayor para tensiones de celda que están más próximas a la parte central de una zona gris -215-). En la etapa -320-, si el procesador -112- determina que los valores digitales recibidos no son inciertos, entonces el procesador -112- almacena el valor digital recibido en una memoria intermedia principal de salida en la etapa -325-. Si el procesador -112- determina en la etapa -320- que el valor digital recibido es incierto, entonces el procesador -112- puede marcar la ubicación del valor digital incierto en una tabla de máscaras en la etapa -330- y después ejecutar la etapa -325-. En algunas implementaciones, también pueden almacenarse uno o más valores alternativos para su uso posterior para determinar qué valor (por ejemplo, el valor incierto o uno de los valores alternativos) es correcto.
Después de que el procesador -112- almacene el valor digital recibido, el procesador -112- determina, en la etapa -335-, si hay más celdas que leer. Por ejemplo, el procesador -112- puede comprobar si se ha llegado al final de la página de memoria. Si hay más celdas que leer, entonces el proceso vuelve a la etapa -310-. Si no hay más celdas que leer, el proceso -300- finaliza. En algunas implementaciones, el proceso también registrará en un registro de mantenimiento el número de valores de datos inciertos asociados con una página o bloque de celdas de memoria. En otras implementaciones, el proceso registrará la posición, física y/o lógica, de una página y/o bloque de celdas de memoria si el número de valores de datos inciertos supera un umbral predeterminado.
La figura 4 muestra un diagrama de flujo que ilustra un ejemplo de un proceso -400- para leer una página de datos de una memoria flash MLC, tal como el chip de memoria flash NAND -103-, usando una función de corrección para ajustar el mapeo de las tensiones de celda con los valores digitales. El proceso -400- puede llevarse a cabo por el procesador -112-, por ejemplo. El proceso -400- comienza en la etapa -405-cuando el procesador -112- determina si se ha recibido una instrucción de lectura. Por ejemplo, el FDC -106- puede recibir una instrucción de lectura desde el dispositivo principal a través de la interfaz principal -109-. Si, en la etapa -405-, el procesador -112- determina que no se ha recibido ningún comando de lectura, entonces se repite la etapa -405-.
Si el procesador -112- determina que se ha recibido un comando de lectura en la etapa -405-, entonces el procesador -112- actualiza una función de corrección en la etapa -410- basándose en la temperatura, el número de lecturas o escrituras en la página de memoria, la tensión suministrada y/u otras condiciones de funcionamiento del chip de memoria flash NAND -103-. En algunas implementaciones, el ADC -142- o la interfaz analógica -136- puede utilizar la función de corrección para ajustar las tensiones de celda medidas en el módulo de interfaz analógico -139antes de que las tensiones de celda se conviertan en valores digitales. En otras implementaciones, el procesador -112-puede utilizar la función de corrección para ajustar los umbrales en la función de mapeo, por lo que el ADC -142- puede convertir la tensión analógica en valores digitales ajustados. La función de corrección puede ser
diferente para distintas celdas. Por ejemplo, las celdas de memoria que tienen tensiones detectadas más altas pueden tener un mayor ajuste debido a la función de corrección.
A continuación, el procesador -112- selecciona una celda de referencia en la etapa -415-. Por ejemplo, el procesador -112- puede seleccionar una de las celdas de referencia -130a-, -130b- ó -130c-. Después, el procesador -112-lee, en la etapa -420-, una tensión de referencia almacenada en la celda de referencia seleccionada. En la etapa -425-, el procesador -112- actualiza la función de corrección basándose en la tensión de referencia. Por ejemplo, si parece que una tensión de referencia varía en un diez por ciento, entonces el procesador -112- puede ajustar la función de corrección para compensar el hueco de tensión en los datos. En algunas implementaciones, la función de corrección ajustará de manera no lineal los niveles de tensión detectados. La función de corrección puede ajustar en mayor medida los niveles de tensión detectados más altos que los niveles de tensión detectados más bajos. La función de corrección puede ajustar tensiones detectadas a niveles de tensión diferentes mediante diferentes cantidades de ajuste o mediante diferentes porcentajes de ajuste.
En algunas implementaciones, los umbrales pueden ajustarse dinámicamente sobre la marcha durante el funcionamiento. En algunas implementaciones, el procesador -112- puede almacenar un número fijo de muestras anteriores, por ejemplo cien muestras, de tensiones de referencia leídas anteriormente y utilizar un promedio variable de las tensiones de referencia almacenadas para actualizar la función de corrección. La función de corrección también puede actualizarse según otras funciones, lo que puede requerir el promedio, la mediana, la moda o un promedio ponderado, por ejemplo. Por ejemplo, puede utilizarse un promedio móvil ponderado. Después, el procesador -112-, en la etapa -430-, determina si seleccionar otra celda de referencia. Como ejemplo, el procesador -112- puede determinar si hay suficiente información para ajustar la función de corrección. En otro ejemplo, el procesador -112- puede configurarse para leer todas las celdas de referencia en algunos bloques de memoria así como en algunas páginas de memoria en función del comando de lectura.
Si, en la etapa -430-, el procesador -112- determina que hay otra celda de referencia que leer, entonces el proceso -400- vuelve a la etapa -415-. En algunas implementaciones, el proceso de ajustar la función de corrección leyendo la tensión en celdas de referencia se activa por los errores detectados en los datos recuperados a partir de un grupo de celdas de memoria. En otras implementaciones, los errores detectados darán como resultado un desajuste de los umbrales para determinar un valor de datos asociado con una tensión detectada. En algunas implementaciones puede reducirse automáticamente el valor de estos umbrales pero, en otras implementaciones, los umbrales se ajustan en función de la tensión de una o más celdas de referencia. El error puede detectarse utilizando el ECC -127- asociado con el grupo de celdas de memoria.
Si el procesador -112-determina en la etapa -430- que no hay más celdas de referencia que leer, entonces el procesador, en la etapa -435-, selecciona una página para su lectura basándose en el comando de lectura. Después, en la etapa -440-, el procesador -112-lee la página de datos seleccionada de la memoria flash utilizando, por ejemplo, el proceso -300- (figura 3B). En la etapa -445-, el procesador -112- corrige los datos de página utilizando la función de corrección. Por ejemplo, el procesador -112- puede fijar algunos parámetros en la interfaz analógica -136- para ajustar la función de mapeo. Como otro ejemplo, el procesador -112- puede ajustar la representación digital, proporcionada por el ADC -142-, utilizando la función de corrección. Después, el procesador -112-puede llevar a cabo operaciones de comprobación de errores para comprobar, en la etapa -450-, si hay algún error en la página. En algunas implementaciones, las operaciones de comprobación de errores pueden hacerse en el motor ECC -148- utilizando circuitos de detección de errores de hardware. En otras implementaciones, las operaciones de comprobación de errores pueden hacerse en software, donde el procesador -112- puede ejecutar un código de detección de errores almacenado en la NVM -154- para comprobar si hay errores en la página. Después de las operaciones de comprobación de errores, en la etapa -455-, el procesador -112- puede determinar si se ha detectado algún error.
Si no se ha detectado ningún error, entonces el procesador -112- puede transmitir, en la etapa -460-, los datos leídos al dispositivo principal. Después, el procesador -112-puede determinar, en la etapa -465-, si hay otra página que leer. Si hay más páginas que leer, entonces se repite la etapa -435-. En caso contrario, el proceso -400-finaliza. Si hay uno o más errores detectados en la etapa -455-, entonces, en la etapa -470-, el procesador -112-puede llevar a cabo operaciones de corrección de errores, un ejemplo de las cuales se describe con referencia a la figura 5. Después, el procesador -112-, en la etapa -475-, puede determinar si la operación de corrección de errores es satisfactoria. Si la operación de corrección de errores es satisfactoria, entonces se repite la etapa -460-. Si la operación de corrección de errores no es satisfactoria, entonces el procesador -112- puede almacenar información de error (por ejemplo, un registro de errores) en la NVM -154- en la etapa -480- y el proceso puede continuar en la etapa -465-. La información de error también puede almacenarse en un registro de mantenimiento. La información de error almacenada puede utilizarse para operaciones de gestión de bloques, para las cuales se describe un ejemplo con referencia a la figura 8A. En algunas implementaciones, el procesador -112- registrará la variación entre las celdas de referencia de una página o bloque de celdas de memoria en un registro de mantenimiento en la NVM 154-. En otras implementaciones, el procesador -112- solo registrará la posición, física y/o lógica, de una página y/o bloque de celdas de memoria en un registro de mantenimiento si el grado de variación en las celdas de referencia satisface una condición predeterminada. Por ejemplo, si la variación en la celda de referencia supera el 10% o si la diferencia entre el grado de variación en diferentes celdas de referencia supera el 10%, los datos almacenados en la
página y/o bloque de celdas de memoria pueden refrescarse aplicando una carga adicional a las celdas de memoria
o reescribiendo completamente la página durante una operación de mantenimiento. Un ejemplo de una operación de mantenimiento se describe con referencia a la figura 9.
La figura 5 muestra un diagrama de flujo que ilustra un ejemplo de un proceso -500- para llevar a cabo operaciones de corrección de errores para corregir una página de datos que contiene errores de bit. El proceso -500-comienza cuando, por ejemplo, el procesador -112- detecta errores de bit en una página de datos leída de la memoria flash y envía un comando al motor ECC -148- para llevar a cabo un algoritmo ECC de hardware para corregir los errores de bit en la etapa -505-. En algunas implementaciones, el motor ECC -148- y el ADC -142-, y/o la interfaz analógica -136- pueden actuar conjuntamente para corregir los errores de bit.
Después, el motor ECC -148- puede comprobar, en la etapa -510-, si el algoritmo ECC de hardware es satisfactorio. Si el algoritmo ECC de hardware puede corregir todos los errores de la página de datos, entonces el algoritmo ECC de hardware es satisfactorio. Después, en la etapa -515-, el motor ECC -148- almacena el resultado ECC en, por ejemplo, la SDRAM -151-. Después, el motor ECC -148-genera un mensaje que indica "corrección de errores satisfactoria" en la etapa -518-y el proceso -500- finaliza.
Si el número de bits de error existentes supera el número de bits de error que el algoritmo ECC de hardware puede corregir, entonces el motor ECC -148- envía un mensaje a la interfaz analógica -136- para volver al leer, en la etapa -520-, la página de datos de la memoria flash. Después, en la etapa -525-, el motor ECC -148- ejecuta de nuevo un algoritmo ECC de hardware. En la etapa -530-, el motor ECC -148- comprueba si el algoritmo ECC de hardware es satisfactorio. Si el algoritmo ECC de hardware puede llevar a cabo correcciones, entonces el algoritmo ECC de hardware es satisfactorio, y el proceso continúa en la etapa -515-.
En la etapa -530-, si el motor ECC -148- determina que el número de bits de error existente supera el número de bits de error que el algoritmo ECC de hardware puede corregir, entonces el motor ECC -148- ejecuta un comando de valor alternativo para corregir los errores de bits. Implementaciones de ejemplo del comando de valor alternativo se describen con referencia a las figuras 6A a 6C. Después, el motor ECC -148- puede comprobar si el comando de valor alternativo corrige los errores de bit en la etapa -535-. Si el motor ECC -148- determina que se han corregido los errores de bit, entonces el proceso continúa en la etapa -515-.
Si el motor ECC -148- determina que no se han corregido los errores de bit, entonces el motor ECC -148- puede ejecutar un algoritmo ECC de software extendido en la etapa -540- para recuperar la página de datos. Por ejemplo, el algoritmo ECC de software extendido puede incluir algoritmos ECC más profundos que utilizan más bits ECC. Por ejemplo, el algoritmo ECC de hardware puede necesitar cuatro bits ECC y el algoritmo ECC de software extendido puede utilizar 128 bits ECC. Después, el motor ECC -148- puede comprobar, en la etapa -550-, si el algoritmo ECC de software extendido es satisfactorio. Si el motor ECC -148- determina que el algoritmo ECC de software extendido es satisfactorio, entonces el proceso continúa en la etapa -515-. Si, en la etapa -550-, el algoritmo ECC de software extendido no es satisfactorio, entonces el motor ECC -148-genera, en la etapa -555-, un mensaje: "Corrección de errores no satisfactoria" y el proceso -500-finaliza.
La figura 6A muestra un diagrama de flujo que ilustra un ejemplo de un proceso -600- para generar y utilizar valores de datos alternativos. El procesador -112-, el motor ECC -148-, la interfaz flash -115-, u otras combinaciones de los elementos anteriores y de otros elementos pueden llevar a cabo las operaciones del proceso -600-. En la etapa -605-, el procesador -112- recupera información de una tabla de máscaras para identificar valores de datos digitales inciertos en una página de datos (véase, por ejemplo, la figura 3B, etapa -330-) y, en algunos casos, para recuperar información relacionada con un grado de incertidumbre.
Entonces, el procesador -112- puede, en la etapa -610-, recuperar datos de corrección basándose en parámetros (por ejemplo, temperatura, número de lecturas de la página de datos, número de escritas en la página de datos, información en los registros de resolución de celda -166-, tensión de suministro, tensión de bomba de carga, la tensión de referencia en la página de datos, etc.). Por ejemplo, el procesador -112- puede calcular una función de corrección para determinar los datos de corrección para la página de datos. Además, o como alternativa, el procesador -112- utiliza los datos de corrección para determinar valores digitales alternativos para cada valor de datos incierto en la etapa -615-. Los valores digitales alternativos para cada valor de datos incierto incluirán normalmente el valor digital adyacente más cercano y el siguiente valor digital adyacente más cercano. También pueden incluir los valores de datos digitales dos valores de datos digitales alejados de la representación digital de la tensión analógica detectada de la celda de memoria. Normalmente, no todas las celdas de memoria tienen un valor de datos incierto. En la etapa -620-, el procesador -112- almacena los valores digitales alternativos identificados en una memoria intermedia junto con valores de datos digitales almacenados para celdas de memoria que tienen valores de datos digitales ciertos.
Después de que se hayan almacenado los valores digitales alternativos, el procesador -112-selecciona, en la etapa -625-, una combinación de valores digitales alternativos de la memoria intermedia. La combinación de valores digitales alternativos puede seleccionarse en función de un algoritmo que, por ejemplo, trata de identificar los valores digitales alternativos con mayor probabilidad de ser correctos. Este algoritmo de selección puede utilizar datos
relacionados con un grado de incertidumbre asociado con cada valor de datos digital. Además, independientemente de si se usa este algoritmo de selección, la combinación seleccionada de valores digitales alternativos no necesita incluir todos los valores digitales alternativos posibles. Dicho de otro modo, incluso entre los valores de datos identificados como inciertos, algunos de los valores de datos originales pueden utilizarse junto con algún subconjunto de valores de datos alternativos.
A continuación, el procesador -112- almacena los datos de página en una memoria intermedia utilizando la combinación seleccionada de valores digitales alternativos en la etapa -630-junto con los valores de datos digitales determinados con la certeza adecuada. Después, el procesador -112- ejecuta, en la etapa -635-, un algoritmo ECC con los datos de página almacenados. Por ejemplo, el procesador -112- puede llevar a cabo las operaciones descritas en el proceso -500-. En algunos casos, la ejecución de un algoritmo ECC puede dar como resultado cambios en uno o más de los valores digitales alternativos e incluso en uno o más de los valores de datos digitales determinados con algún grado de certeza. En la etapa -640-, el procesador -112- determina si el algoritmo ECC es satisfactorio. Si el procesador -112- determina que el algoritmo ECC es satisfactorio, entonces, en la etapa -645-, el procesador -112- almacena los datos de página con el resultado del ECC satisfactorio y el proceso -600-finaliza.
En la etapa -640-, si el procesador -112- determina que el algoritmo ECC no es satisfactorio, entonces, en la etapa -650-, el procesador -112- determina si puede probarse otra combinación de valores alternativos. El número de posibles combinaciones de valores alternativos dependerá del número de celdas de memoria con valores de datos digitales inciertos y del número de valores digitales alternativos identificados. Normalmente, la mayoría de las celdas de memoria no tienen valores de datos digitales inciertos. Si el procesador -112- determina que puede probarse otra combinación de valores alternativos, entonces el proceso vuelve a la etapa -625-.
Si, en la etapa -650-, el procesador -112- determina que se han probado todas las combinaciones alternativas, entonces el procesador -112- genera un mensaje de error en la etapa -655- y el proceso -600-finaliza. En algunas implementaciones, también puede ser posible generar valores alternativos adicionales y/o ajustar umbrales de tensión para leer los diferentes valores de datos y volver a ejecutar el algoritmo ECC para identificar valores correctos para los datos de página. Por ejemplo, pueden identificarse valores alternativos para niveles de tensión que se determinaron anteriormente para representar un valor particular con la certeza adecuada pero que están relativamente cerca de un umbral para una de las curvas de distribución de valores digitales -205- a -210- (descritas anteriormente con relación a la figura 2A). Como alternativa, los umbrales de tensión para las diversas curvas de distribución de valores digitales -205- a -210- pueden ajustarse de la manera descrita anteriormente, y los valores de datos pueden volver a generarse, incluyendo la identificación de nuevos valores alternativos.
En algunas implementaciones, el mensaje de error en la etapa -655- se registra en un registro de mantenimiento de la NVM -154-. Después, durante una operación de mantenimiento, como la mostrada en la figura 9, también puede ser posible generar valores alternativos adicionales y/o ajustar los umbrales de tensión para leer los diversos valores de datos y volver a ejecutar el algoritmo ECC para identificar valores correctos para los datos de página. Después, los valores correctos identificados pueden usarse para reescribir los datos.
La figura 6B muestra un diagrama de flujo que ilustra otro ejemplo de un proceso -660- para generar y utilizar valores alternativos. El proceso -660- tiene algunas etapas comunes con el proceso -600-. En este ejemplo, después de identificar valores de datos inciertos utilizando una tabla de máscaras, o de otra manera, en la etapa -605-, el procesador -112- determina, en la etapa -665-, un valor alternativo para cada valor incierto utilizando el valor digital adyacente más cercano. Por ejemplo, el procesador -112-puede utilizar la distribución de valores digitales -200(figura 2A) y seleccionar el segundo valor digital adyacente más cercano en lugar del valor digital adyacente más cercano para la tensión de celda. Después, el procesador -112-continúa con el proceso -600- llevando a cabo las operaciones descritas con relación a la figura 6A, empezando por la etapa -620-.
La figura 6C muestra un diagrama de flujo que ilustra otro ejemplo de un proceso -670- para generar y utilizar valores alternativos. En este ejemplo, el procesador -112- no recupera necesariamente información de valores digitales inciertos de la tabla de máscaras. El proceso -670- empieza en la etapa -672- cuando el procesador -112recibe un comando para llevar a cabo una identificación de valores alternativos y un análisis de una página seleccionada (véase, por ejemplo, la figura 5, etapa -535-).
El procesador -112-inicia, en la etapa -674-, la lectura de la página seleccionada. En la etapa -676-, el procesador -112- selecciona una celda de la página para leer una tensión de celda. En la etapa -678-, el procesador -112determina si la tensión de celda es incierta. Por ejemplo, el procesador -112- puede utilizar la distribución de valores digitales -200-mostrada en la figura 2A para determinar si la tensión de celda recibida está en una de las áreas grises -220-. Si el procesador -112- determina que la tensión de celda está en el área gris, entonces el procesador -112-determina un valor de datos digital de la celda utilizando el segundo valor de datos digital más cercano en la etapa -680-. En otras implementaciones, el procesador -112-determina un valor de datos digital de la celda utilizando el primer valor de datos digital más cercano. Después, el procesador -112- almacena, en la etapa -682-, los valores de datos digitales en una memoria intermedia.
Si, en la etapa -678-, el procesador -112- determina que la tensión de celda no está en el área gris, entonces el procesador -112- determina, en la etapa -684-, un valor de datos digital de la celda basándose en los umbrales almacenados y el procesador -112-lleva a cabo la etapa -682-. Después de la etapa -682-, en la etapa -686-, el procesador -112- determina si leer otra celda de la página. Si el procesador -112- determina leer otra celda, entonces el proceso vuelve a la etapa -676-. Si el procesador -112- determina que no hay más celdas que leer, entonces el proceso -670-finaliza.
La figura 7A muestra un diagrama de flujo que ilustra un ejemplo de un proceso -700- para escribir datos en la página de memoria flash -121- utilizando las celdas de referencia -130a-, -130b-, -130c-. El proceso -700- puede llevarse a cabo generalmente mediante el procesador -112-. El proceso -700- comienza en la etapa -705-cuando el procesador -112- recibe un comando de escritura. Por ejemplo, el comando de escritura puede incluir una instrucción de escritura, los datos a escribir y una dirección de memoria en la que van a escribirse los datos, que puede recibirse, por ejemplo, como una dirección de bloque lógica desde el dispositivo principal. Después, basándose en el comando de escritura, el proceso -112- selecciona una página de memoria de la memoria flash en la etapa -710-.
A continuación, el procesador -112- puede copiar, en la etapa -715-, los datos que van a escribirse en una memoria intermedia, tal como la SDRAM -151-. Los datos pueden transferirse desde un dispositivo principal externo o desde otra página de memoria. En algunas implementaciones, los datos almacenados en la página de memoria seleccionada se copian en la memoria intermedia para volver a copiarse en la página seleccionada. En otras implementaciones, los datos que van a escribirse en una página de memoria seleccionada no se copian en la memoria intermedia, sino que se escriben directamente desde la fuente de datos (desde un dispositivo principal externo o desde otras celdas de memoria) en la página de memoria seleccionada.
Entonces, el procesador -112- borra, en la etapa -725-, los datos almacenados en la página seleccionada. En la etapa -730-, el procesador -112- escribe los datos de la memoria intermedia en la página de memoria seleccionada, por ejemplo, aplicando cargas a las celdas de datos -124-y a la celda de referencia -130c-. La etapa -730- aplica diferentes cantidades de carga a las celdas de memoria dependiendo del valor de datos deseado y del nivel de tensión analógica correspondiente para cada celda. En algunas implementaciones puede usarse una bomba de carga para aplicar cargas a las celdas de memoria de la página de memoria seleccionada. Entonces, el procesador -112-, en la etapa -735-, lee una tensión de referencia de la celda de referencia -130c- de la página seleccionada. La tensión de referencia se lee detectando un nivel de tensión en la celda de referencia -130c-. El procesador -112comprueba, en la etapa -740-, si la tensión de referencia es inferior a un tensión objetivo. Si el procesador -112determina que la tensión de referencia es inferior a la tensión objetivo, entonces el proceso vuelve a la etapa -730para aplicar una carga adicional y aumentar la tensión almacenada en las celdas de la página de memoria seleccionada. La cantidad de carga adicional aplicada puede escalarse dependiendo del modo en el que el nivel de tensión deseado se compara mediante porcentajes con la tensión de la (s) celda (s) de referencia (por ejemplo, si la tensión de celda de referencia detectada es un 10% inferior a una tensión objetivo y una celda de memoria particular debe tener el doble de nivel de tensión que la celda de referencia, entonces la cantidad de carga adicional aplicada a la celda de memoria particular puede ser el doble que la aplicada a la celda de referencia).
En la etapa -740-, si el procesador -112-determina que la tensión de referencia no es inferior a la tensión objetivo, entonces el procesador -112-, en la etapa -745-, selecciona una celda de datos y lee, en la etapa -750-, la tensión de la celda de datos seleccionada. Después, en la etapa -755-, el procesador -112- determina si la tensión leída es demasiado alta. Por ejemplo, el procesador -112- puede comparar la tensión de celda leída con la distribución de valores digitales y comprobar si la tensión de celda está dentro de un intervalo de tensiones del valor digital objetivo. Si el procesador -112- determina que la tensión no es demasiado alta, entonces el procesador determina, en la etapa -760-, si seleccionar otra celda de datos. Si el procesador -112- determina que no es necesario seleccionar otra celda de datos, entonces el proceso -700- finaliza. En caso contrario, el proceso -700- vuelve a la etapa -745para probar una celda de datos adicional.
En algunas implementaciones, también puede ser posible probar las celdas de datos seleccionadas en la etapa -745- para determinar si tienen valores demasiados bajos. Si es así, el proceso -700- puede volver a la etapa -730para aplicar una carga adicional a una o más celdas de datos. En algunas implementaciones, una vez finalizada la comprobación de una o más celdas de referencia en la etapa -740-, el nivel de tensión de todas las celdas de datos puede seleccionarse en la etapa -745-(o en repeticiones iterativas de la etapa -745-) para determinar si los niveles son demasiado altos y/o demasiado bajos. De esta manera, las celdas de referencia pueden utilizarse para llevar a cabo una carga inicial de la página o bloque, seguida de una comprobación y de un posible ajuste de los niveles de tensión de las celdas. Además, en algunas implementaciones, las tensiones objetivo para las celdas de referencia utilizadas en la etapa -740- pueden fijarse con un valor algo más bajo que la tensión umbral para un valor de datos deseado con el fin de evitar una sobrecarga, seguido de una comprobación de los valores de celda real de datos y de un ajuste de los niveles de tensión para obtener niveles de tensión correspondientes a los valores de datos deseados para la celda de datos real.
Si, en la etapa -755-, el procesador -112- determina que la tensión es demasiado alta, entonces el procesador -112determina si es necesario reescribir la página seleccionada. Por ejemplo, el procesador -112- puede comparar el número de errores de bit con un umbral que es inferior o igual al número de errores corregibles utilizando uno de los
algoritmos de corrección descritos con referencia a la figura 5. Si el número de errores de bit es mayor que el umbral, entonces la página seleccionada se reescribe. En caso contrario, el procesador -112- puede determinar que no es necesario reescribir la página seleccionada. En la etapa -765-, si el procesador -112- determina que no es necesario reescribir la página, entonces el proceso -700- continúa en la etapa -760-. Si el procesador -112-, en la etapa -765-, determina que es necesario reescribir la página, entonces el proceso -700- vuelve a la etapa -725- para reiniciar la escritura de la página de memoria. En algunas implementaciones, la tensión objetivo puede reducirse incrementalmente después de la etapa -765-para reducir la probabilidad de superar la tensión objetivo.
La figura 7B muestra un diagrama de flujo que ilustra un ejemplo de un proceso -770-que consigue una mayor velocidad de transferencia de datos entre un dispositivo principal y la MCP -100-. El proceso -770- comienza en la etapa -772- cuando el procesador -112-recibe un comando de escritura desde un dispositivo principal. Por ejemplo, el comando de escritura de un dispositivo principal puede incluir una instrucción de escritura, los datos a escribir y una dirección de memoria en la que van a escribirse los datos, que puede recibirse, por ejemplo, como una dirección de bloque lógica desde el dispositivo principal.
A continuación, el procesador -112- determina si llevar a cabo un proceso de escritura rápida (por ejemplo, escribir a una resolución de celda de un solo nivel o a otra resolución relativamente baja) o utilizar un proceso de escritura que requiere más tiempo, potencia y uso del procesador para escribir a una resolución superior. En la etapa -774-, el procesador -112- determina si hay algún comando de la interfaz principal para llevar a cabo una escritura rápida. En algunas implementaciones, un dispositivo principal también puede especificar la resolución de la escritura rápida. Si un dispositivo principal no especifica una escritura rápida, entonces el procesador -112- puede determinar de manera independiente si se requiere una escritura rápida. Después, la etapa -776- determina si la MCP -100- o el dispositivo principal conectado a la MCP -100- satisface condiciones de fuente de alimentación predeterminadas. En la implementación mostrada, la etapa -776- determina si el dispositivo principal recibe energía de CA. En otras implementaciones, la etapa -776- determina en cambio si una batería que suministra energía al dispositivo principal está cargada a una carga predeterminada. En algunas implementaciones, la etapa -776- determinará si una batería que suministra carga al dispositivo principal está cargada a una capacidad máxima o al menos al 90% de su capacidad. Después, la etapa -778- determina si el procesador -112- tiene un exceso de ancho de banda que satisface una condición de ancho de banda predeterminada. En algunas implementaciones, la etapa -778-se satisface si el procesador -112- está inactivo. En otras implementaciones, la etapa -778-se satisface si no se utiliza un porcentaje predeterminado de ancho de banda del procesador -112-. Si se satisfacen las condiciones -776-y -778-, entonces el proceso utiliza el proceso -700- para escribir en celdas de memoria a una alta resolución, etapa -780-. Si no se satisface una o ambas condiciones -776- y -778-, entonces el proceso lleva a cabo un procedimiento de escritura rápida.
En un procedimiento de escritura rápida, el procesador -112-, en la etapa -782-, selecciona una o más páginas de celda de memoria disponibles para escribir datos desde el dispositivo principal a. En algunas implementaciones, el procesador puede copiar datos desde el dispositivo principal hasta una memoria intermedia, tal como la SDRAM -151-. En otras implementaciones, los datos del dispositivo principal no se copian en la memoria intermedia, sino que se escriben directamente, en la etapa -786-, en la página de memoria seleccionada, después de las etapas -725- y -784-. En la etapa -725-, el procesador borra los datos almacenados en la (s) página (s) seleccionada (s). En la etapa -774-, el procesador -112- actualiza los registros de resolución de celda asociados con la (s) página (s) de memoria seleccionada (s) a una menor resolución. En algunas implementaciones, la baja resolución será una resolución de un bit por celda de memoria. En otras implementaciones, la baja resolución será de 2, 3 ó 4 bits por celda. La escritura a una resolución más baja cuando se copian datos desde un dispositivo principal hasta la MCP -100- aumenta la velocidad de transferencia de datos porque se necesita menos precisión cuando se carga cada celda de memoria y, por tanto, el grado de cuidado y la cantidad de ajustes de tensión necesarios cuando se escribe en las celdas de memoria pueden reducirse. Después de escribirse los datos en la (s) celda (s) de memoria a una baja resolución, la etapa -784-registrará una entrada de registro de mantenimiento que indica que los datos almacenados en la página de memoria seleccionada deben reescribirse a una mayor resolución durante un proceso de mantenimiento (proceso -900-).
La figura 8A muestra un diagrama de flujo que ilustra un ejemplo de un proceso -800- para ajustar una resolución de celda de una página de memoria. El proceso -800- puede llevar a cabo las operaciones del proceso -800- cuando, por ejemplo, el procesador -112- ejecuta un programa de mantenimiento para actualizar los registros de resolución de celda -166-. El proceso -800- comienza en la etapa -805- cuando el procesador -112-lee, en la etapa -805-, información de error almacenada. La información de error puede almacenarse durante errores de lectura o errores de escritura, por ejemplo como se describe en la etapa -480- de la figura 4. Después, el procesador -112- selecciona una página en la etapa -810-. En la etapa -815-, el procesador -112- determina si el cómputo de errores de la página seleccionada es mayor que un umbral. Si el cómputo de errores de la página seleccionada no es mayor que el umbral, entonces el procesador -112- comprueba, en la etapa -820-, si hay que revisar más páginas. Si el procesador -112- determina que no hay más páginas que revisar, entonces el proceso -800-finaliza. Si, en la etapa -820-, el procesador -112- determina que hay más páginas que revisar, entonces el proceso vuelve a la etapa -810-. En algunas implementaciones, el procesador -112- puede revisar todas las páginas de memoria con errores. En otras implementaciones, el procesador -112- sólo puede revisar páginas de memoria con nuevos errores registrados en la información de error.
En la etapa -815-, si el cómputo de errores de la página seleccionada es mayor que el umbral, entonces el procesador -112- copia una página de datos de la página seleccionada en una memoria intermedia en la etapa -825-. Después, el procesador -112- actualiza los registros de resolución de celda -166- para reducir la resolución de celda de la página seleccionada. Por ejemplo, la interfaz flash -115- puede revisar los registros de resolución de celda -166- para determinar que la resolución de celda se ha reducido y, después, la interfaz flash -115- puede leer y escribir en la página seleccionada utilizando la nueva resolución de celda reducida.
Entonces, el procesador -112- puede asignar, en la etapa -835-, direcciones físicas para los datos copiados. Dependiendo de las páginas de memoria disponibles, el procesador -112- puede asignar una, dos, cuatro u otro número de páginas de memoria física para almacenar los datos copiados. Después, el procesador -112- actualiza, en la etapa -840-, una tabla de direcciones lógicas para corresponder con las direcciones físicas asignadas. La tabla de direcciones lógicas puede utilizarse para mapear una página lógica con una o más páginas físicas. Un ejemplo de uso de la tabla de direcciones lógicas durante una operación de acceso a memoria se describe con referencia a la figura 10. En la etapa -845-, el procesador -112- desplaza los datos copiados desde la memoria intermedia hasta las páginas en las direcciones físicas asignadas. Después, el procesador -112- determina, en la etapa -820-, si hay más páginas que revisar. Si es así, el proceso -800- vuelve a la etapa -810-. En caso contrario, el proceso -800- finaliza.
La figura 8B ilustra un proceso similar al de la figura 8A destinado a degradar grupos de páginas o bloques de celdas de memoria y a tratar el grupo de manera lógica como una única página o bloque de celdas de memoria que tiene la resolución original. En la figura 8B, el proceso -860- también lee información de error almacenada -805-, selecciona una página -810- y determina si un cómputo de errores asociado con la página supera un umbral -815-. Si el cómputo de errores asociado con la página supera un umbral, entonces los datos almacenados en la página se copian en una memoria intermedia -825- y el (los) registro (s) de resolución de celda asociado (s) con la página se actualiza (n) para reducir la resolución de la página -830-. Sin embargo, en la implementación ilustrada en la figura 8B, un procesador también selecciona otra página de datos que tiene una resolución de celda reducida -855-y actualiza el código de gestión de bloques y/o el código de direccionamiento lógico para emparejar las dos páginas. Las dos páginas que tienen una resolución de celda reducida se tratan después de manera lógica como una única página con la resolución original superior. Este proceso puede agrupar más de dos páginas de celdas de memoria.
En algunas implementaciones, este proceso degradará bloques enteros de celdas de memoria y los emparejará o asociará de otra manera. En algunas implementaciones, cada página emparejada tendrá la misma resolución de celda ajustada a la baja e incluirá el mismo número de celdas de memoria. Por ejemplo, una página de celdas de memoria degradada desde celdas de memoria que almacenan 8 bits de datos hasta celdas de memoria que almacenan 4 bits de datos, se agrupa con otra página de celdas de memoria en la que cada celda de memoria almacena 4 bits de datos. La combinación de estas dos páginas de celdas de memoria se trata después de manera lógica por el controlador de disco Hash como una única página (o como un único bloque) que almacena 8 bits de datos por celda de memoria. Estas páginas emparejadas de celdas de memoria no necesitan estar en el mismo bloque y pueden estar posiblemente en diferentes chips de memoria flash. Después, el proceso -860-lleva a cabo la etapa -820- que determina si hay más páginas de memoria que revisar y procede de la manera descrita en la figura 8A.
La figura 9 es un diagrama de flujo que ilustra un proceso de mantenimiento -900-. Una posible función del proceso de mantenimiento -900- es reescribir, a una resolución relativamente alta, datos almacenados en una memoria flash a una resolución relativamente baja (por ejemplo, véase la figura 7B). Los procesos de mantenimiento pueden utilizarse, por ejemplo, para maximizar la vida de la batería de un dispositivo principal a la vez que se maximiza la capacidad de almacenamiento de datos. En algunas implementaciones, el proceso de mantenimiento -900-se activa por el procesador como parte de una operación de mantenimiento planificada de manera rutinaria. En algunas implementaciones, el proceso de mantenimiento -900- se activa por una señal procedente de un dispositivo principal que indica que el dispositivo principal está alimentado con energía de CA. En otras implementaciones, otras condiciones pueden hacer que un dispositivo principal o que el procesador -112- activen el proceso de mantenimiento -900-, tal como un procesador inactivo -112-.
El proceso -900- comienza con la etapa -905-, que puede determinar si la MCP -100- está funcionando bajo una condición de energía predeterminada. En algunas implementaciones, esta condición de energía se satisface por un dispositivo principal que recibe energía de CA. En algunas implementaciones, esta condición de energía se satisface por una batería de dispositivo principal que satisface una cantidad de carga predeterminada, por ejemplo que la batería está totalmente cargada. Una batería totalmente cargada puede indicar que un dispositivo principal está siendo alimentado con energía de CA. Si la MCP -100- no satisface la condición de energía predeterminada, el proceso -900- finaliza.
A continuación, en la etapa -910-, el procesador -112- puede determinar si el procesador -112-tiene un ancho de banda suficiente como para llevar a cabo completamente el proceso de mantenimiento -900-. En algunas implementaciones, la operación de mantenimiento simplemente se ejecuta como un proceso en segundo plano que requiere un ancho de banda mínimo. En algunas implementaciones, la operación de mantenimiento necesita un procesador inactivo -112-. En otras implementaciones, el proceso -900- no determina si el procesador -112- tiene un
ancho de banda suficiente. En algunas implementaciones, el requisito de ancho de banda cambia en función de la necesidad de las operaciones de mantenimiento, lo que puede medirse por el tiempo entre procesos de mantenimiento satisfactorios o por la cantidad de espacio disponible en la memoria flash. Si el procesador -112- no tiene el suficiente ancho de banda, el proceso -900- finaliza.
Si se satisface la condición de potencia predeterminada y el procesador -112- tiene un ancho de banda suficiente, el proceso -900- puede leer entonces registros de mantenimiento almacenados, etapa -915-. En algunas implementaciones, los registros de mantenimiento almacenados están almacenados en la NVM -154-. En algunas implementaciones, los registros de mantenimiento almacenados indican la prioridad de posibles operaciones de mantenimiento. En algunas implementaciones, los registros de mantenimiento almacenados se utilizan para determinar si alguna de las etapas de mantenimiento (tales como las etapas -920-, -925-, -930-y -935-) puede llevarse a cabo en una operación simplificada. Por ejemplo, los registros de mantenimiento pueden indicar la necesidad de degradar una página particular de celdas de memoria y de reescribir los datos en la misma página de celdas de memoria. En otras implementaciones, las operaciones de mantenimiento son una secuencia predeterminada de, por ejemplo, reescribir datos transferidos a una resolución más alta (etapa -920-); degradar resoluciones de celda y emparejar grupos de páginas, por ejemplo, llevando a cabo los procesos -800- y -850(etapa -925-); reescribir datos que satisfagan una condición de error predeterminada (por ejemplo, usando el proceso -700-) (etapa -930-); intercambiar los datos a los que se accede con más frecuencia por los datos usados con menor frecuencia utilizando el código software de gestión de deterioro -157-(etapa -935-); actualizar el código software de direccionamiento lógico -163- para cada operación de mantenimiento que movió datos desde una posición física hasta otra posición física (por ejemplo, usando el proceso -1000-) (etapa -940-); y refrescar páginas de datos que superan una cantidad umbral de variación de tensión aplicando una carga adicional a la página de celdas de memoria (etapa -945-). También pueden usarse otras secuencias que incluyen todas, algunas u otras operaciones adicionales. En algunas implementaciones, el proceso -900- repite la etapa -905- y/o la etapa -910entre cada etapa de mantenimiento -920-, -925-, -930-, -935- ó -945-, y puede finalizar si cambia alguna de las condiciones -905- ó -910-. Después, el proceso -900-finaliza.
La figura 10 es un diagrama de flujo que ilustra un ejemplo de un proceso -1000- de direccionamiento lógico en el FDC -106-. Por ejemplo, el FDC -106- puede mapear un comando de lectura o de escritura recibido que incluye una dirección lógica con una o más páginas físicas. En algunas implementaciones, el FDC -106- puede mapear de manera dinámica una página lógica con una o más páginas físicas variables. Por ejemplo, el FDC -106- puede modificar el mapeo para equilibrar la carga de una página de memoria física. En algunas implementaciones, el mapeo entre páginas lógicas y páginas físicas puede almacenarse en una tabla de direcciones lógicas. En algunas implementaciones, el proceso -1000- puede llevarse a cabo por el procesador -112-cuando el procesador -112- está ejecutando el código de direccionamiento lógico -163-. El proceso -1000- comienza cuando el FDC recibe un comando desde el dispositivo principal que indica que va a accederse a una página de memoria (por ejemplo, leerse, escribir en la misma o borrarse). Después, en la etapa -1005-, el procesador -112-recibe una dirección de página lógica para acceder a una página de la memoria flash.
A continuación, el procesador -112- determina, en la etapa -1010-, una o más direcciones de página físicas asociadas con la dirección lógica recibida. En un ejemplo, la dirección de página lógica recibida puede asociarse solamente con una dirección de página física. En otro ejemplo, la dirección de página lógica recibida puede asociarse con dos o más páginas físicas porque las páginas físicas tienen una menor resolución de celda de lo normal, o las páginas físicas no son contiguas en la memoria flash, o están en diferentes bloques o en chips diferentes.
Entonces, el procesador -112- selecciona en la etapa -1015- una primera de las direcciones de página físicas determinadas. En la etapa -1020-, el procesador -112- lee los datos de página en la dirección física seleccionada. Después, el procesador -112- almacena, en la etapa -1025-, los datos de página en la memoria intermedia principal de salida. En la etapa -1030-, el procesador -112-determina si es necesario acceder a otra página de memoria. Por ejemplo, si hay más de una dirección de página física asociada con la dirección de página lógica, entonces el procesador -112- puede acceder a otra página de memoria. Si, en la etapa -1030-, el procesador -112- determina que es necesario acceder a otra página de memoria, entonces el procesador, en la etapa -1035-, selecciona la siguiente dirección de página física determinada y el proceso vuelve a la etapa -1020-. En caso contrario, el proceso -1000- finaliza.
La figura 11 muestra un sistema de ejemplo -1100- que incluye múltiples chips de memoria flash NAND -103- y el FDC -106-. El FDC -106-incluye un multiplexor (MUX) -1105- en la interfaz analógica -115- y una bomba de carga -1110-. Aunque el sistema -1100- se muestra utilizando chips de memoria flash NAND -103-, algunas de las técnicas utilizadas en el sistema -1100- también pueden aplicarse a chips de memoria flash NOR, o a una combinación de chips NAND y NOR. El sistema -1100- puede implementarse utilizando CI discretos, o puede estar integrado total o parcialmente en una sola cápsula.
El FDC -106-recibe datos analógicos desde los chips de memoria flash NAND -103- a través de la interfaz analógica -115-. En este ejemplo, el MUX -1105-recibe múltiples entradas analógicas. En algunas implementaciones, el MUX -1105-recibe las múltiples entradas analógicas desde múltiples chips de memoria flash -103-. La interfaz analógica
-115- puede controlar el MUX -1105- para seleccionar una entrada analógica que va a transmitirse al ADC -142-. Por ejemplo, la interfaz analógica -115- puede controlar el MUX -1105- en función de un comando de lectura recibido. Durante una operación de escritura, el FDC -106- utiliza la bomba de carga -1110- para aplicar cargas a las celdas de memoria en uno de los chips de memoria flash NAND -103-. En algunas implementaciones, la bomba de carga -1110- está adaptada para suministrar carga a celdas de memoria de una pluralidad de chips de memoria flash -103-. Por ejemplo, el FDC -106- puede enviar una señal de control para seleccionar un chip de memoria designado para recibir cargas desde la bomba de carga -1110-. Entonces, cuando la bomba de carga -1110-aplica cargas, el chip de memoria seleccionado recibe las cargas.
Compartiendo el ADC -1105- y la bomba de carga -1110- entre múltiples chips -103-, el tamaño de almacenamiento de los chips de memoria -103- puede aumentar. Además, los chips de memoria flash -103- pueden fabricarse con un menor coste sin el ADC -142- y la bomba de carga -1110-. En algunas implementaciones, la bomba de carga -1110puede estar integrada en un chip con el FDC -106- o puede estar montada por separado en un chip diferente o en un sustrato diferente, tal como una placa de circuito impreso.
Con el fin de facilitar el uso de un ADC -1105- y de una bomba de carga -1110- adaptados para utilizarse con múltiples chips de memoria flash -103-, algunos chips de memoria -103- pueden incluir una entrada adaptada para recibir una carga de programación desde un nodo de suministro externo. De este modo no es necesario que los chips de memoria flash -103-incluyan un sistema de circuitos adicional para alterar o regular la carga de programación suministrada. Los chips de memoria flash -103-también pueden incluir una salida adaptada para enviar una señal de tensión analógica a un controlador de disco flash -106-.
En algunas implementaciones, el FDC -106- también puede incluir un procedimiento de intercalado de bomba de carga para escribir datos en los chips de memoria -103-.
La figura 12 muestra un sistema de ejemplo -1200-que ilustra una arquitectura para proporcionar por separado potencia de nivel lógico y de programación al chip de memoria flash NAND -103-. El sistema -1200- incluye la bomba de carga -1110- y un regulador de pequeña pérdida de información (LDO) -1205- que reciben energía eléctrica desde una fuente de alimentación -1210-.
Tal y como se muestra, el chip de memoria flash NAND -103-incluye dos entradas de energía. Una entrada de energía para la tensión de la bomba de carga (Vcp) y una entrada de energía para la tensión lógica (Vlogic). En algunos ejemplos, la Vcp puede ser sustancialmente mayor que la Vlogic. Por ejemplo, la Vcp puede estar comprendida aproximadamente entre 12 y 20 V o aproximadamente entre 12 y 30 V, y la Vlogic puede estar comprendida aproximadamente entre 1 y 3 V. En algunas implementaciones, los requisitos de regulación y de corriente para la Vcp pueden ser sustancialmente diferentes de los requisitos para la Vlogic.
Como ejemplo, el chip de memoria flash NAND -103- puede requerir que la Vlogic tenga una tolerancia a la tensión estrechamente regulada (por ejemplo, 0, 5%, 1, 0%, 5%) a una baja tensión lógica para minimizar el consumo de energía, los tiempos de conmutación, etc. Además, la tensión lógica puede requerir una capacitancia de derivación de alta frecuencia a un bajo nivel de tensión. Por el contrario, los requisitos de regulación de suministro de la bomba de carga pueden estar entre el 5% y el 10% aproximadamente, con la necesidad de una capacitancia de mayor tensión y de frecuencia sustancialmente baja.
Con el fin de facilitar el sistema de la figura 12, el chip de memoria flash -103- puede incluir una primera interfaz para recibir energía para programar de manera selectiva cada celda de memoria flash, y una segunda interfaz para recibir energía suministrada al sistema de circuitos de nivel lógico para llevar a cabo la selección de celdas de memoria flash que van a alimentarse con energía procedente de la primera entrada durante una operación de escritura. El controlador de disco flash -106- puede comprender una primera fuente de alimentación para suministrar energía a la primera interfaz a una tensión de programación y una segunda fuente de alimentación para suministrar energía de nivel lógico a la segunda interfaz. La primera y la segunda fuente de alimentación pueden ser externas al chip de memoria flash -103-.
Aunque se han descrito varias implementaciones de procesos y de técnicas, otras implementaciones pueden llevar a cabo las etapas en una secuencia diferente o en una disposición modificada para lograr la misma función principal. Además, aunque en ocasiones se ha descrito que las operaciones de los diversos procesos se llevan a cabo por un dispositivo o componente particular, tales dispositivos o componentes son simplemente ejemplos, y las operaciones pueden llevarse a cabo utilizando dispositivos o componentes alternativos en alguna implementación.
En algunos ejemplos, el chip de memoria flash NAND -103- también puede tener cualquier número práctico de bits de resolución, tal como, por ejemplo, 6, 7, 10, 12 bits de resolución. Varias implementaciones pueden utilizarse para llevar a cabo operaciones ECC con una memoria flash que puede incluir una memoria flash NAND, una memoria flash NOR o una combinación de las mismas u otras memorias no volátiles. Chips de memoria flash de uno o más tipos pueden estar apilados y/o montados de manera adyacente entre sí en la MCP -100-. Los expertos en la técnica reconocerán que algunos ejemplos de las técnicas descritas en este documento pueden aplicarse de una manera
particularmente ventajosa con tecnología flash NAND, y que algunos procedimientos descritos en este documento pueden aplicarse en general a memorias no volátiles tales como flash NAND y/o NOR.
Aunque un ejemplo de un sistema, que puede ser portátil, se ha descrito con referencia a las figuras anteriores, otras implementaciones pueden implantarse en otras aplicaciones de procesamiento, tales como instalaciones de sobremesa y conectadas en red.
Aunque se han descrito características particulares de una arquitectura, otras características pueden incorporase para mejorar el rendimiento. Por ejemplo, pueden utilizarse técnicas de almacenamiento temporal (por ejemplo, L1, L2, etc.) en el FDC -106-. Pueden incluirse memorias de acceso aleatorio, por ejemplo, para proporcionar una memoria de trabajo temporal y/o cargar código ejecutable o información de parámetro almacenada en la memoria flash para su utilización durante operaciones en tiempo de ejecución. Puede proporcionarse otro hardware y software para llevar a cabo operaciones, tales como comunicaciones de red o de otro tipo que utilizan uno o más protocolos, comunicaciones inalámbricas (por ejemplo, infrarrojas), fuentes de alimentación y de energía operativa almacenada (por ejemplo baterías), circuitos de fuente de alimentación lineales y/o de conmutación, mantenimiento de software (por ejemplo, autoverificaciones, actualizaciones, etc.) y similares. Pueden proporcionarse una o más interfaces de comunicación para dar soporte a operaciones de almacenamiento de datos y otras operaciones relacionadas.
En algunas implementaciones puede utilizarse un procedimiento o una combinación de procedimientos para mejorar la integridad de los datos. Por ejemplo, los errores de tensión de celda pueden tratarse ajustando los umbrales y/o reescribiendo las celdas al menos una vez. La reescritura de las celdas puede llevarse a cabo en respuesta a desviaciones con respecto a una tensión de celda ideal y/o como una actividad en segundo plano. Por ejemplo, las tensiones de celda de múltiples niveles pueden reescribirse para refrescar la tensión en una o más celdas con tendencia a pérdidas en una página. Para celdas caracterizadas por ser propensas a perder tensión a lo largo de tiempo, el nivel de tensión a la que tales celdas se cargan puede aumentarse hasta casi alcanzar un umbral superior de la tensión de cada celda para compensar pérdidas de carga anticipadas en tales celdas a lo largo del tiempo. El nivel de tensión aumentado puede ser inicialmente aproximado o mayor que el umbral superior del intervalo previsto, el cual puede estar en una zona gris entre intervalos. En función de las tasas de pérdida estimadas o determinadas, los datos pueden reescribirse con la suficiente frecuencia como para mantener sustancialmente las tensiones de celda dentro de un intervalo deseado. Una compensación similar puede utilizarse para compensar celdas caracterizadas por tener una variación creciente. Tales procedimientos de reescritura pueden llevarse a cabo, por ejemplo, como un proceso en segundo plano de baja prioridad que se ejecuta cuando los recursos están disponibles. Para los datos identificados como datos de valor elevado, puede planificarse que la reescritura se lleve a cabo con la suficiente frecuencia como para mantener las tensiones de celda dentro de un intervalo deseado, estando basada la frecuencia en una tasa de variación de tensión esperada y en el tamaño del intervalo de tensiones asociado con cada nivel de bits. En algunas implementaciones, la reescritura puede configurarse para llevarse a cabo más frecuentemente cuando un dispositivo portátil está acoplado a una fuente de alimentación externa, tal como una fuente de alimentación acoplada a la red eléctrica. Las operaciones de reescritura pueden llevarse a cabo en respuesta al acoplamiento a una fuente de alimentación de este tipo. Además, la reescritura puede configurarse para llevarse a cabo con menos frecuencia en determinadas condiciones, tales como, por ejemplo, durante un modo de conservación de energía, durante una condición de baja batería o cuando se almacenan datos de corta duración o no críticos (por ejemplo, flujo continuo de audio/vídeo).
Algunos sistemas pueden implementarse como un sistema informático que puede utilizarse con implementaciones de la invención. Por ejemplo, varias implementaciones pueden incluir sistemas de circuitos digitales y/o analógicos, hardware informático, firmware, software o combinaciones de los mismos. Un aparato puede implementarse en un producto de programa informático realizado de manera tangible en un portador de información, por ejemplo, en un dispositivo de almacenamiento legible por máquina o en una señal propagada, para su ejecución mediante un procesador programable; y los procedimientos pueden llevarse a cabo mediante un procesador programable que ejecuta un programa de instrucciones para llevar a cabo funciones de la invención que se efectúan sobre datos de entrada y que generan una salida. La invención puede implementarse de manera ventajosa en uno o más programas informáticos que pueden ejecutarse en un sistema programable que incluye al menos un procesador programable acoplado para recibir datos e instrucciones desde, y para transmitir datos e instrucciones a, un sistema de almacenamiento de datos, al menos un dispositivo de entrada y/o al menos un dispositivo de salida. Un programa informático es un conjunto de instrucciones que puede utilizarse, directa o indirectamente, en un ordenador para llevar a cabo una determinada actividad o proporcionar un determinado resultado. Un programa informático puede escribirse en cualquier forma de lenguaje de programación, incluyendo lenguajes compilados o interpretados, y puede implantarse de cualquier forma, incluyendo un programa autónomo o un módulo, componente, subrutina u otra unidad adecuada que pueda utilizarse en un entorno informático.
Procesadores adecuados para la ejecución de un programa de instrucciones incluyen, a modo de ejemplo, microprocesadores tanto de propósito general como de propósito especial, que pueden incluir un único procesador o uno de múltiples procesadores de cualquier tipo de ordenador. Generalmente, un procesador recibirá instrucciones y datos desde una memoria de solo lectura, desde una memoria de acceso aleatorio o desde ambas. Los elementos esenciales de un ordenador son un procesador para ejecutar instrucciones y una o más memorias para almacenar
instrucciones y datos. Generalmente, un ordenador incluirá además, o estará acoplado de manera operativa para comunicarse con, uno o más dispositivos de almacenamiento masivos para almacenar archivos de datos; tales dispositivos incluyen discos magnéticos, tales como discos duros internos y discos extraíbles, discos magneto-ópticos y discos ópticos. Dispositivos de almacenamiento adecuados para almacenar de manera tangible instrucciones y datos de programa informático incluyen todas las formas de memoria no volátil incluyendo, a modo de ejemplo, dispositivos de memoria de semiconductor, tales como EPROM, EEPROM y dispositivos de memoria flash, discos magnéticos, tales como discos duros internos y discos extraíbles, discos magneto-ópticos y discos CD-ROM y DVD-ROM. El procesador y la memoria pueden complementarse por, o estar incorporados en, ASIC (circuitos integrados de aplicación específica).
En algunas implementaciones, cada sistema -100- puede estar programado con la misma información o con otra similar y/o puede inicializarse con sustancialmente la misma información almacenada en memoria volátil y/o no volátil. Por ejemplo, una interfaz de datos puede estar configurada para llevar a cabo una configuración automática, una descarga automática y/o funciones de actualización automáticas cuando está acoplada a un dispositivo principal apropiado, tal como un ordenador de sobremesa o un servidor.
En algunas implementaciones, una o más características de interfaz de usuario pueden configurarse de manera personalizada para llevar a cabo funciones específicas. La invención puede implementarse en un sistema informático que incluye una interfaz gráfica de usuario y/o un navegador de Internet. Para proporcionar interacción con un usuario, algunas implementaciones pueden implementarse en un ordenador que tenga un dispositivo de visualización, tal como un monitor CRT (tubo de rayos catódicos) o LCD (pantalla de cristal líquido) para mostrar información al usuario, un teclado y un dispositivo de puntero, tal como un ratón o una bola de seguimiento, mediante los cuales el usuario puede proporcionar datos de entrada al ordenador.
En varias implementaciones, el sistema -100- puede comunicarse utilizando procedimientos, equipos y técnicas de comunicación adecuados. Por ejemplo, el sistema -100-puede comunicarse con dispositivos compatibles (por ejemplo, dispositivos capaces de transferir datos a y/o desde el sistema -100-) utilizando una comunicación punto a punto en la que un mensaje se transporta directamente desde el emisor hasta el receptor a través de un enlace físico dedicado (por ejemplo, un enlace de fibra óptica, un cableado de punto a punto, una cadena fragmentada). Los componentes del sistema pueden intercambiar información mediante cualquier forma o medio de comunicación de datos analógico o digital, incluyendo mensajes basados en paquetes en una red de comunicaciones. Ejemplos de redes de comunicaciones incluyen, por ejemplo, una LAN (red de área local), una WAN (red de área extensa), una MAN (red de área metropolitana), redes inalámbricas y/u ópticas, y los ordenadores y redes que forman Internet. Otras implementaciones pueden transportar mensajes mediante radiodifusión a todos o sustancialmente todos los dispositivos que están acoplados entre sí por una red de comunicaciones, por ejemplo, usando señales de radiofrecuencia (RF) omnidireccionales. Otras implementaciones adicionales pueden transportar mensajes caracterizados por una alta directividad, tales como señales de RF transmitidas usando antenas direccionales (es decir, un haz estrecho) o señales infrarrojas que pueden utilizarse opcionalmente con óptica de enfoque. Otras implementaciones adicionales son posibles utilizando interfaces apropiadas y protocolos tales como, a modo de ejemplo y de manera no limitativa, USB 2.0, Firewire, ATA/IDE, RS-232, RS-422, RS-485, 802.11 a/b/g, Wi-Fi, Ethernet, IrDA, FDDI (interfaz de datos distribuidos por fibra), redes de anillo con testigo o técnicas de multiplexación basadas en división de frecuencia, tiempo o código. Algunas implementaciones pueden incluir opcionalmente características tales como comprobación y corrección de errores (ECC) para la integridad de los datos, o medidas de seguridad, tales como cifrado (por ejemplo, WEP) y protección mediante contraseña.
Se han descrito varias implementaciones de la invención. Sin embargo, debe entenderse que pueden llevarse a cabo varias modificaciones sin apartarse del alcance de la invención. Por ejemplo, pueden obtenerse resultados ventajosos si las etapas de las técnicas divulgadas se llevan a cabo en una secuencia diferente, si los componentes de los sistemas divulgadas se combinan de diferente manera o si los componentes se sustituyen o se complementan con otros componentes. Las funciones y procesos (incluyendo algoritmos) pueden llevarse a cabo en hardware, software o en una combinación de los mismos, y algunas implementaciones pueden llevarse a cabo en módulos o en hardware diferentes a los descritos.

Claims (14)

  1. REIVINDICACIONES
    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;
    -
    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.
  2. 2.
    Procedimiento, según la reivindicación 1, que comprende además:
    acondicionar el nivel de voltaje antes de la conversión del nivel de voltaje en la representación digital.
  3. 3.
    Procedimiento, según la reivindicación 1 ó 2, que comprende además:
    ajustar la representación digital del nivel de voltaje antes de determinar el valor de datos.
  4. 4.
    Procedimiento, según la reivindicación 3, en el que la operación de ajuste ajusta la representación digital basándose, como mínimo, en un parámetro seleccionado 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 y niveles de error detectados.
  5. 5.
    Artí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:
    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;
    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.
  6. 6.
    Artículo, según la reivindicación 5, que comprende además las operaciones:
    ajustar, como mínimo, uno de los rangos de valores digitales basándose en la comparación de la representación digital a, como mínimo, uno de los rangos de valores digitales.
  7. 7.
    Artículo, según la reivindicación 5 ó 6, que comprende además las operaciones:
    acondicionar la señal de voltaje analógico anterior a la conversión de la señal de voltaje analógico en una representación digital.
  8. 8.
    Artículo, según las reivindicaciones 5, 6 ó 7, comprendiendo además las operaciones:
    ajustar la representación digital de la señal de voltaje analógico antes de determinar el valor de datos.
  9. 9.
    Artículo, según la reivindicación 8, en el que la operación de ajuste ajusta la representación digital basándose en, como mínimo, un parámetro seleccionado entre el grupo que consiste en: voltaje de la celda de referencia, utilización de lectura de la celda de memoria, utilización de escritura de la celda de memoria, temperatura, edad del
    5 producto, voltaje de alimentación y nivel de errores detectados.
  10. 10. Artículo, según la reivindicación 8 ó 9, en el que cada valor de datos es seleccionado entre un conjunto de posibles valores de datos, de manera que cada valor posible de datos comprende un valor digital medio correspondiente dentro de un rango de valores digitales correspondientes y de manera que la operación de ajuste
    10 ajusta la representación digital en respuesta a una lectura de voltaje de otra celda de memoria con un valor de datos conocido.
  11. 11. Sistema de almacenamiento de información digital cuyo sistema de comprende:
    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;
    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
    o más de: temperatura actual, voltaje de alimentación, número de operaciones de lectura llevadas a cabo en la celda
    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. Sistema, según la reivindicación 11, en el que el primer número de bits es superior a 4.
  12. 13. Sistema, 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.
  13. 14. Sistema, 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.
  14. 15. Sistema, según las reivindicaciones 11, 12, 13 ó 14, en el que la serie de celdas de memoria incluye celdas de
    memoria flash NAND. 45
ES11159445T 2006-05-15 2007-05-14 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 Active ES2392334T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US80035706P 2006-05-15 2006-05-15
US800357P 2006-05-15
US694739 2007-03-30
US11/694,739 US7639542B2 (en) 2006-05-15 2007-03-30 Maintenance operations for multi-level data storage cells

Publications (1)

Publication Number Publication Date
ES2392334T3 true ES2392334T3 (es) 2012-12-07

Family

ID=38684942

Family Applications (2)

Application Number Title Priority Date Filing Date
ES11159445T Active ES2392334T3 (es) 2006-05-15 2007-05-14 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
ES10164179T Active ES2383588T3 (es) 2006-05-15 2007-05-14 Operaciones de mantenimiento para celdas de almacenamiento de datos de múltiples niveles

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES10164179T Active ES2383588T3 (es) 2006-05-15 2007-05-14 Operaciones de mantenimiento para celdas de almacenamiento de datos de múltiples niveles

Country Status (9)

Country Link
US (3) US7639542B2 (es)
EP (10) EP2022058B1 (es)
JP (1) JP5358431B2 (es)
KR (16) KR101173721B1 (es)
CN (3) CN102768853B (es)
AT (2) ATE547794T1 (es)
DE (1) DE602007007938D1 (es)
ES (2) ES2392334T3 (es)
WO (1) WO2007134277A2 (es)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
US7800951B2 (en) * 2007-08-20 2010-09-21 Marvell World Trade Ltd. Threshold voltage digitizer for array of programmable threshold transistors
US7948802B2 (en) 2007-12-04 2011-05-24 Micron Technology, Inc. Sensing memory cells
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
WO2009090731A1 (ja) * 2008-01-16 2009-07-23 Fujitsu Limited 半導体記憶装置、制御装置、制御方法
KR101378365B1 (ko) * 2008-03-12 2014-03-28 삼성전자주식회사 하이브리드 메모리 데이터 검출 장치 및 방법
JP5057340B2 (ja) * 2008-03-31 2012-10-24 株式会社ジャパンディスプレイウェスト 光検出装置、電気光学装置及び電子機器
US7768832B2 (en) * 2008-04-07 2010-08-03 Micron Technology, Inc. Analog read and write paths in a solid state memory device
KR101407361B1 (ko) * 2008-04-14 2014-06-13 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US20090292971A1 (en) * 2008-05-21 2009-11-26 Chun Fung Man Data recovery techniques
US8365039B2 (en) * 2008-05-21 2013-01-29 Intel Corporation Adjustable read reference for non-volatile memory
US8276028B2 (en) * 2008-05-23 2012-09-25 Intel Corporation Using error information from nearby locations to recover uncorrectable data in non-volatile memory
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
US8406048B2 (en) * 2008-08-08 2013-03-26 Marvell World Trade Ltd. Accessing memory using fractional reference voltages
JP5504507B2 (ja) * 2008-10-20 2014-05-28 国立大学法人 東京大学 集積回路装置
JP5422976B2 (ja) * 2008-11-19 2014-02-19 富士通株式会社 半導体記憶装置
US8645792B2 (en) * 2008-12-16 2014-02-04 Micron Technology, Inc. Memory with guard value dependent error correction
US7653779B1 (en) 2009-02-04 2010-01-26 Gene Fein Memory storage using a look-up table
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
US8259506B1 (en) * 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8407564B2 (en) * 2009-07-15 2013-03-26 Intel Corporation Prediction and cancellation of systematic noise sources in non-volatile memory
JPWO2011013351A1 (ja) * 2009-07-30 2013-01-07 パナソニック株式会社 アクセス装置およびメモリコントローラ
US8189357B2 (en) * 2009-09-09 2012-05-29 Macronix International Co., Ltd. Memory with multiple reference cells
US9003153B2 (en) * 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
CN102222099A (zh) * 2011-06-21 2011-10-19 中兴通讯股份有限公司 一种数据存储、查找方法及装置
US8713404B2 (en) * 2011-07-01 2014-04-29 Apple Inc. Controller interface providing improved data reliability
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
KR101882853B1 (ko) * 2011-12-21 2018-08-27 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US8884679B2 (en) 2012-05-10 2014-11-11 Sandisk Technologies Inc. Apparatus and method for high voltage switches
US8910000B2 (en) * 2012-05-17 2014-12-09 Micron Technology, Inc. Program-disturb management for phase change memory
US9064575B2 (en) 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
US8848453B2 (en) 2012-08-31 2014-09-30 Micron Technology, Inc. Inferring threshold voltage distributions associated with memory cells via interpolation
US9063879B2 (en) 2012-12-13 2015-06-23 Sandisk Technologies Inc. Inspection of non-volatile memory for disturb effects
KR102089613B1 (ko) * 2013-01-02 2020-03-16 삼성전자주식회사 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
US9367246B2 (en) * 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9367391B2 (en) * 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
US9324438B2 (en) 2013-08-05 2016-04-26 Jonker Llc Method of operating incrementally programmable non-volatile memory
US9342401B2 (en) 2013-09-16 2016-05-17 Sandisk Technologies Inc. Selective in-situ retouching of data in nonvolatile memory
US9570198B2 (en) * 2014-05-16 2017-02-14 SK Hynix Inc. Read disturb detection
US10552043B2 (en) * 2014-09-09 2020-02-04 Toshiba Memory Corporation Memory system
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US10839086B2 (en) 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US20160225459A1 (en) * 2015-01-30 2016-08-04 Micron Technology, Inc. Apparatuses operable in multiple power modes and methods of operating the same
US9502129B1 (en) 2015-09-10 2016-11-22 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
US11216323B2 (en) 2015-09-16 2022-01-04 Samsung Electronics Co., Ltd. Solid state memory system with low power error correction mechanism and method of operation thereof
US10241701B2 (en) * 2015-09-16 2019-03-26 Samsung Electronics Co., Ltd. Solid state memory system with power management mechanism and method of operation thereof
KR102643916B1 (ko) * 2016-10-18 2024-03-08 삼성전자주식회사 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
FR3065826B1 (fr) * 2017-04-28 2024-03-15 Patrick Pirim Procede et dispositif associe automatises aptes a memoriser, rappeler et, de maniere non volatile des associations de messages versus labels et vice versa, avec un maximum de vraisemblance
US10354732B2 (en) * 2017-08-30 2019-07-16 Micron Technology, Inc. NAND temperature data management
US20190102105A1 (en) * 2017-09-29 2019-04-04 Burlywood, LLC Variable configuration media controller
US10446246B2 (en) * 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
KR102532084B1 (ko) * 2018-07-17 2023-05-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10573390B1 (en) * 2018-11-30 2020-02-25 Samsung Electronics Co., Ltd. High-density storage system
JP2020113347A (ja) 2019-01-08 2020-07-27 キオクシア株式会社 半導体記憶装置
US10983852B2 (en) * 2019-01-30 2021-04-20 Micron Technology, Inc. Power management component for memory sub-system voltage regulation
US10742227B1 (en) * 2019-02-25 2020-08-11 Intel Corporation Differential source follower with current steering devices
CN113874942B (zh) * 2019-05-26 2025-01-17 华为技术有限公司 一种数据读取方法、存储控制器及电子设备
US11886987B2 (en) * 2019-06-25 2024-01-30 Arm Limited Non-volatile memory-based compact mixed-signal multiply-accumulate engine
WO2021002176A1 (ja) * 2019-07-02 2021-01-07 ローム株式会社 不揮発性記憶装置
CN110333770B (zh) 2019-07-10 2023-05-09 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
TWI722490B (zh) 2019-07-16 2021-03-21 大陸商合肥兆芯電子有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
KR102678472B1 (ko) * 2019-07-17 2024-06-27 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN110706735B (zh) * 2019-09-30 2021-09-14 中国科学院微电子研究所 一种NAND Flash存储器读阈值电压修复方法
CN112906071B (zh) * 2020-12-01 2023-07-14 深圳安捷丽新技术有限公司 一种基于页温动态冷热切换的数据保护方法和装置
JP2022146460A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 半導体回路、受信装置及びメモリシステム
KR20230096554A (ko) * 2021-12-23 2023-06-30 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US12444476B2 (en) * 2022-03-14 2025-10-14 Micron Technology, Inc. Host controlled media testing of memory
CN115527587A (zh) * 2022-10-18 2022-12-27 长江存储科技有限责任公司 存储系统及其操作方法、存储器控制器和存储器
US12468374B2 (en) 2023-06-27 2025-11-11 Western Digital Technologies, Inc. Storage power reduction in battery-operated devices

Family Cites Families (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5570986A (en) 1978-11-24 1980-05-28 Hitachi Ltd Semiconductor intergrated circuit device
DE3341564A1 (de) 1983-11-17 1985-05-30 Messerschmitt-Bölkow-Blohm GmbH, 8012 Ottobrunn Gekruemmtes flaechenbauteil, insbesondere fuer luftfahrzeuge und vorrichtung zu deren herstellung
JPS61137846A (ja) * 1984-11-21 1986-06-25 アトランテイツク・リツチフイールド・カンパニー アルコキシル化第四級アンモニウム化合物
US4831403A (en) * 1985-12-27 1989-05-16 Minolta Camera Kabushiki Kaisha Automatic focus detection system
DE69033438T2 (de) * 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5109496A (en) * 1989-09-27 1992-04-28 International Business Machines Corporation Most recently used address translation system with least recently used (LRU) replacement
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
WO1993022770A1 (en) 1992-05-01 1993-11-11 Motorola, Inc. Method and apparatus for storage of digital information
US5412601A (en) * 1992-08-31 1995-05-02 Nippon Steel Corporation Non-volatile semiconductor memory device capable of storing multi-value data in each memory cell
US5812814A (en) 1993-02-26 1998-09-22 Kabushiki Kaisha Toshiba Alternative flash EEPROM semiconductor memory system
US5424978A (en) * 1993-03-15 1995-06-13 Nippon Steel Corporation Non-volatile semiconductor memory cell capable of storing more than two different data and method of using the same
US5394450A (en) * 1993-04-13 1995-02-28 Waferscale Integration, Inc. Circuit for performing arithmetic operations
US7137011B1 (en) * 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
JP3205658B2 (ja) * 1993-12-28 2001-09-04 新日本製鐵株式会社 半導体記憶装置の読み出し方法
US5440524A (en) * 1994-02-01 1995-08-08 Integrated Device Technology, Inc. Method and apparatus for simuilataneous long writes of multiple cells of a row in a static ram
US5563838A (en) * 1994-02-01 1996-10-08 Micron Electronics, Inc. Module having voltage control circuit to reduce surges in potential
US5629890A (en) * 1994-09-14 1997-05-13 Information Storage Devices, Inc. Integrated circuit system for analog signal storing and recovery incorporating read while writing voltage program method
US5590104A (en) * 1994-09-30 1996-12-31 Martin Marietta Energy Systems, Inc. Method of pedestal and common-mode noise correction for switched-capacitor analog memories
US5838603A (en) 1994-10-11 1998-11-17 Matsushita Electric Industrial Co., Ltd. Semiconductor device and method for fabricating the same, memory core chip and memory peripheral circuit chip
US5541886A (en) * 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5867721A (en) * 1995-02-07 1999-02-02 Intel Corporation Selecting an integrated circuit from different integrated circuit array configurations
KR100239870B1 (ko) * 1995-09-28 2000-03-02 다카노 야스아키 기억 분해능을 가변할 수 있는 불휘발성 다치 메모리 장치
US5745409A (en) * 1995-09-28 1998-04-28 Invox Technology Non-volatile memory with analog and digital interface and storage
KR0157122B1 (ko) * 1995-12-23 1999-02-18 김광호 디지탈 보상형 아날로그 디지탈 변환기
JPH09205615A (ja) * 1996-01-25 1997-08-05 Canon Inc 記録装置
US5726934A (en) 1996-04-09 1998-03-10 Information Storage Devices, Inc. Method and apparatus for analog reading values stored in floating gate structures
US5712815A (en) * 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US5946257A (en) * 1996-07-24 1999-08-31 Micron Technology, Inc. Selective power distribution circuit for an integrated circuit
JP3709246B2 (ja) * 1996-08-27 2005-10-26 株式会社日立製作所 半導体集積回路
US5754566A (en) 1996-09-06 1998-05-19 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using interleaving
US6023781A (en) * 1996-09-18 2000-02-08 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
JP3930074B2 (ja) * 1996-09-30 2007-06-13 株式会社ルネサステクノロジ 半導体集積回路及びデータ処理システム
JPH10124381A (ja) 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
US6097638A (en) * 1997-02-12 2000-08-01 Kabushiki Kaisha Toshiba Semiconductor memory device
US5828592A (en) 1997-03-12 1998-10-27 Information Storage Devices, Inc. Analog signal recording and playback integrated circuit and message management system
JP3189740B2 (ja) * 1997-06-20 2001-07-16 日本電気株式会社 不揮発性半導体メモリのデータ修復方法
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) * 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
JP4074697B2 (ja) * 1997-11-28 2008-04-09 株式会社ルネサステクノロジ 半導体装置
JPH11176178A (ja) * 1997-12-15 1999-07-02 Sony Corp 不揮発性半導体記憶装置およびそれを用いたicメモリカード
US6072676A (en) 1998-04-13 2000-06-06 Analog Devices, Inc. Protection circuit for an excitation current source
US6208542B1 (en) * 1998-06-30 2001-03-27 Sandisk Corporation Techniques for storing digital data in an analog or multilevel memory
EP1005213A3 (en) 1998-11-02 2000-07-05 Information Storage Devices, Inc. Multiple message multilevel analog signal recording and playback system containing configurable analog processing functions
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6058060A (en) 1998-12-31 2000-05-02 Invox Technology Multi-bit-per-cell and analog/multi-level non-volatile memories with improved resolution and signal-to noise ratio
US6134141A (en) * 1998-12-31 2000-10-17 Sandisk Corporation Dynamic write process for high bandwidth multi-bit-per-cell and analog/multi-level non-volatile memories
US7139196B2 (en) * 1999-01-14 2006-11-21 Silicon Storage Technology, Inc. Sub-volt sensing for digital multilevel flash memory
TW417381B (en) * 1999-04-01 2001-01-01 Mustek Systems Inc Conversion method for increasing the bits of scanning signals of scanner
JP2000298992A (ja) * 1999-04-13 2000-10-24 Hitachi Ltd 多値記憶不揮発性半導体メモリの制御装置
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
JP2001052476A (ja) 1999-08-05 2001-02-23 Mitsubishi Electric Corp 半導体装置
JP2001067884A (ja) * 1999-08-31 2001-03-16 Hitachi Ltd 不揮発性半導体記憶装置
JP3937214B2 (ja) * 1999-09-17 2007-06-27 株式会社ルネサステクノロジ エラー訂正回数を記録する記憶装置
US6166960A (en) 1999-09-24 2000-12-26 Microchip Technology, Incorporated Method, system and apparatus for determining that a programming voltage level is sufficient for reliably programming an eeprom
JP2001110184A (ja) * 1999-10-14 2001-04-20 Hitachi Ltd 半導体装置
US6259627B1 (en) * 2000-01-27 2001-07-10 Multi Level Memory Technology Read and write operations using constant row line voltage and variable column line load
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
US6297988B1 (en) * 2000-02-25 2001-10-02 Advanced Micro Devices, Inc. Mode indicator for multi-level memory
JP2002074999A (ja) 2000-08-23 2002-03-15 Sharp Corp 不揮発性半導体記憶装置
US6538922B1 (en) 2000-09-27 2003-03-25 Sandisk Corporation Writable tracking cells
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6552929B1 (en) * 2001-02-08 2003-04-22 Advanced Micro Devices, Inc. Piggyback programming using an extended first pulse for multi-level cell flash memory designs
US6434044B1 (en) * 2001-02-16 2002-08-13 Sandisk Corporation Method and system for generation and distribution of supply voltages in memory systems
US6577535B2 (en) 2001-02-16 2003-06-10 Sandisk Corporation Method and system for distributed power generation in multi-chip memory systems
US6738289B2 (en) * 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6785180B2 (en) * 2001-03-15 2004-08-31 Micron Technology, Inc. Programmable soft-start control for charge pump
JP3829088B2 (ja) * 2001-03-29 2006-10-04 株式会社東芝 半導体記憶装置
JP3828376B2 (ja) * 2001-05-07 2006-10-04 株式会社東芝 記憶システム
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US6643169B2 (en) * 2001-09-18 2003-11-04 Intel Corporation Variable level memory
GB0123422D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
US6678192B2 (en) * 2001-11-02 2004-01-13 Sandisk Corporation Error management for writable tracking storage units
US6850441B2 (en) * 2002-01-18 2005-02-01 Sandisk Corporation Noise reduction technique for transistors and small devices utilizing an episodic agitation
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
JP3796457B2 (ja) * 2002-02-28 2006-07-12 富士通株式会社 不揮発性半導体記憶装置
US7031196B2 (en) * 2002-03-29 2006-04-18 Macronix International Co., Ltd. Nonvolatile semiconductor memory and operating method of the memory
US6721820B2 (en) * 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
JP4086583B2 (ja) * 2002-08-08 2008-05-14 シャープ株式会社 不揮発性半導体メモリ装置およびデータ書き込み制御方法
JP2004086991A (ja) * 2002-08-27 2004-03-18 Renesas Technology Corp 不揮発性記憶装置
US6963505B2 (en) 2002-10-29 2005-11-08 Aifun Semiconductors Ltd. Method circuit and system for determining a reference voltage
JP4129170B2 (ja) 2002-12-05 2008-08-06 シャープ株式会社 半導体記憶装置及びメモリセルの記憶データ補正方法
US6735114B1 (en) * 2003-02-04 2004-05-11 Advanced Micro Devices, Inc. Method of improving dynamic reference tracking for flash memory unit
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
EP1609048A4 (en) * 2003-03-27 2009-01-14 Milsys Ltd DATA STORAGE DEVICE HAVING COMPLETE ACCESS FOR ALL USERS
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
US7240219B2 (en) * 2003-05-25 2007-07-03 Sandisk Il Ltd. Method and system for maintaining backup of portable storage devices
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7752380B2 (en) * 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
US7212067B2 (en) * 2003-08-01 2007-05-01 Sandisk Corporation Voltage regulator with bypass for multi-voltage storage system
US6970395B2 (en) * 2003-09-08 2005-11-29 Infineon Technologies Ag Memory device and method of reading data from a memory device
US7019998B2 (en) * 2003-09-09 2006-03-28 Silicon Storage Technology, Inc. Unified multilevel cell memory
US6937513B1 (en) * 2003-10-16 2005-08-30 Lsi Logic Corporation Integrated NAND and nor-type flash memory device and method of using the same
JP2005141811A (ja) * 2003-11-05 2005-06-02 Renesas Technology Corp 不揮発性メモリ
US7085152B2 (en) * 2003-12-29 2006-08-01 Intel Corporation Memory system segmented power supply and control
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7164561B2 (en) * 2004-02-13 2007-01-16 Sandisk Corporation Voltage regulator using protected low voltage devices
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
DE102005009700B4 (de) * 2004-02-26 2009-02-05 Samsung Electronics Co., Ltd., Suwon Programmierverfahren und nichtflüchtiger Speicher
US7218137B2 (en) * 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7109750B2 (en) * 2004-04-30 2006-09-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-controller
US7233532B2 (en) * 2004-04-30 2007-06-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-system monitor interface
US7222224B2 (en) * 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
CN100595923C (zh) * 2004-05-27 2010-03-24 株式会社瑞萨科技 集成半导体非易失性存储器的控制方法
US7535759B2 (en) * 2004-06-04 2009-05-19 Micron Technology, Inc. Memory system with user configurable density/performance option
JPWO2005122177A1 (ja) * 2004-06-09 2008-04-10 松下電器産業株式会社 半導体集積回路
JP2006031795A (ja) * 2004-07-14 2006-02-02 Renesas Technology Corp 不揮発性半導体記憶装置
US7817469B2 (en) 2004-07-26 2010-10-19 Sandisk Il Ltd. Drift compensation in a flash memory
US7493457B2 (en) * 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7218570B2 (en) * 2004-12-17 2007-05-15 Sandisk 3D Llc Apparatus and method for memory operations using address-dependent conditions
US7391193B2 (en) * 2005-01-25 2008-06-24 Sandisk Corporation Voltage regulator with bypass mode
KR100704628B1 (ko) 2005-03-25 2007-04-09 삼성전자주식회사 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
JP4772363B2 (ja) * 2005-04-12 2011-09-14 株式会社東芝 不揮発性半導体記憶装置
WO2006129339A1 (ja) 2005-05-30 2006-12-07 Spansion Llc 記憶装置、および記憶装置の制御方法
US20060294295A1 (en) 2005-06-24 2006-12-28 Yukio Fukuzo DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device
US7317630B2 (en) * 2005-07-15 2008-01-08 Atmel Corporation Nonvolatile semiconductor memory apparatus
US7631245B2 (en) * 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7954037B2 (en) * 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
KR101224919B1 (ko) * 2006-02-07 2013-01-22 삼성전자주식회사 온도 변화에 따라 고전압 발생 회로의 출력 전압 레벨을조절하는 반도체 메모리 장치
US7483327B2 (en) * 2006-03-02 2009-01-27 Freescale Semiconductor, Inc. Apparatus and method for adjusting an operating parameter of an integrated circuit
KR101208312B1 (ko) * 2006-05-12 2012-12-05 애플 인크. 조절가능한 용량을 가진 메모리 디바이스
US7672161B2 (en) * 2007-04-30 2010-03-02 Spansion Llc Adaptive detection of threshold levels in memory

Also Published As

Publication number Publication date
KR101193696B1 (ko) 2012-10-22
US20070263454A1 (en) 2007-11-15
ATE547794T1 (de) 2012-03-15
EP2330592A1 (en) 2011-06-08
CN101484947A (zh) 2009-07-15
HK1159305A1 (en) 2012-07-27
KR20110073560A (ko) 2011-06-29
EP2330592B1 (en) 2012-08-22
KR20120098963A (ko) 2012-09-05
EP2333780B1 (en) 2013-03-27
EP2221823B1 (en) 2012-02-29
KR101217438B1 (ko) 2013-01-02
ES2383588T3 (es) 2012-06-22
EP2022058B1 (en) 2010-07-21
EP2221823A1 (en) 2010-08-25
KR20120098962A (ko) 2012-09-05
ATE475183T1 (de) 2010-08-15
KR101116554B1 (ko) 2012-02-28
JP5358431B2 (ja) 2013-12-04
KR101151597B1 (ko) 2012-05-31
KR101184554B1 (ko) 2012-09-20
HK1127155A1 (en) 2009-09-18
EP2330593A1 (en) 2011-06-08
EP2330597A1 (en) 2011-06-08
KR101116512B1 (ko) 2012-02-28
WO2007134277A2 (en) 2007-11-22
KR20090026283A (ko) 2009-03-12
US20100070798A1 (en) 2010-03-18
KR101217416B1 (ko) 2013-01-02
EP2221827B1 (en) 2013-09-25
CN101484947B (zh) 2012-08-15
WO2007134277A3 (en) 2008-08-14
EP2022058A2 (en) 2009-02-11
KR20110069159A (ko) 2011-06-22
KR101173721B1 (ko) 2012-08-13
US7881108B2 (en) 2011-02-01
KR101283145B1 (ko) 2013-07-05
KR20120001814A (ko) 2012-01-04
EP2333781A1 (en) 2011-06-15
KR101206630B1 (ko) 2012-11-29
EP2337030A1 (en) 2011-06-22
KR20120098961A (ko) 2012-09-05
KR101121493B1 (ko) 2012-02-28
KR101184557B1 (ko) 2012-09-19
HK1159307A1 (en) 2012-07-27
KR20120098964A (ko) 2012-09-05
DE602007007938D1 (de) 2010-09-02
KR20110073562A (ko) 2011-06-29
US7639542B2 (en) 2009-12-29
JP2009537935A (ja) 2009-10-29
CN102779554B (zh) 2015-12-16
CN102768853B (zh) 2015-07-15
EP2221827A1 (en) 2010-08-25
CN102779554A (zh) 2012-11-14
KR101155751B1 (ko) 2012-06-12
KR20120001816A (ko) 2012-01-04
US8116133B2 (en) 2012-02-14
US20100070801A1 (en) 2010-03-18
KR20120001815A (ko) 2012-01-04
KR20110073561A (ko) 2011-06-29
CN102768853A (zh) 2012-11-07
EP2337030B1 (en) 2016-03-23
KR101206714B1 (ko) 2012-11-29
EP2333780A1 (en) 2011-06-15
KR101133897B1 (ko) 2012-04-09
KR20110073558A (ko) 2011-06-29
EP2330595A1 (en) 2011-06-08
KR20110069160A (ko) 2011-06-22
KR20120098965A (ko) 2012-09-05
KR101116468B1 (ko) 2012-03-07
KR20110073559A (ko) 2011-06-29

Similar Documents

Publication Publication Date Title
ES2392334T3 (es) 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
US7852690B2 (en) Multi-chip package for a flash memory
US7773022B2 (en) Operating NAND cells using multiple levels for each data value
US8127202B2 (en) Use of alternative value in cell detection
US7859908B2 (en) Iterative memory cell charging based on reference cell value
US7911834B2 (en) Analog interface for a flash memory die
US7701797B2 (en) Two levels of voltage regulation supplied for logic and data programming voltage of a memory device
HK1159304A (en) Iterative charging of a memory cell based on a reference cell value
HK1159306A (en) Analog interface for a flash memory chip
HK1158809A (en) Maintenance operations for multi-level data storage cells
HK1158810A (en) Maintenance operations for multi-level data storage cells
HK1159303A (en) Supply of a memory device with regulated voltages for logic and programming voltage
HK1159305B (en) 8-bit or more a/d conversion for the determination of a nand memory cell value
HK1127155B (en) Maintenance operations for multi-level data storage cells
HK1159307B (en) Maintenance operations for multi-level data storage cells