ES2262782T3 - Operaciones de programacion y lectura de bloques de datos parciales en una memoria no volatil. - Google Patents
Operaciones de programacion y lectura de bloques de datos parciales en una memoria no volatil.Info
- Publication number
- ES2262782T3 ES2262782T3 ES02703078T ES02703078T ES2262782T3 ES 2262782 T3 ES2262782 T3 ES 2262782T3 ES 02703078 T ES02703078 T ES 02703078T ES 02703078 T ES02703078 T ES 02703078T ES 2262782 T3 ES2262782 T3 ES 2262782T3
- Authority
- ES
- Spain
- Prior art keywords
- pages
- data
- block
- blocks
- updated
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
- G11C16/105—Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/12—Reading and writing aspects of erasable programmable read-only memories
- G11C2216/16—Flash programming of all the cells in an array, sector or block simultaneously
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Non-Volatile Memory (AREA)
Abstract
Un método para sustituir nuevos datos por datos reemplazados en un sistema de memoria no volátil con una matriz de elementos de almacenamiento de memoria no volátil (400) organizados en bloques (35, 39), estando los bloques organizados en páginas y conteniendo cada bloque el grupo más pequeño de elementos de almacenamiento que puede borrarse; cuyo método comprende escribir nuevos datos como páginas actualizadas en páginas de dicho bloque, siendo dichos nuevos datos menores de todas las páginas originales de otro de dichos bloques; direccionar las páginas originales y las páginas actualizadas con la misma dirección lógica; y leer y distinguir las páginas actualizadas de las páginas originales, que se caracteriza por el hecho de que dicha lectura es en relación con el tiempo relativo de escritura en las páginas de dichos bloques, leyendo las páginas de dicho bloque y a continuación de dicho otro bloque en orden inverso del que han sido escritas las páginas e ignora las páginas que tengan la misma dirección lógica como páginas que ya ha leído.
Description
Operaciones de programación y lectura de bloques
de datos parciales en una memoria no volátil.
Esta invención pertenece al campo de las
arquitecturas de sistemas de almacenamiento de datos no volátiles
semiconductores y a sus métodos de funcionamiento, y es aplicable a
sistemas de almacenamiento de datos basados en memorias flash de
solo lectura borrables y programables eléctricamente (EEPROM).
Una aplicación de dispositivos flash EEPROM es
como subsistema de almacenamiento de datos en masa para
dispositivos electrónicos. Dichos subsistemas se implantan
comúnmente como tarjetas de memoria extraíble que pueden
introducirse en múltiples sistemas principales o como
almacenamiento integrado no extraíble dentro del sistema central.
En ambas implantaciones, el subsistema incluye uno o más
dispositivos flash y frecuentemente un controlador de
subsistema.
Los dispositivos flash EEPROM están compuestos
por una o más matrices de células transistores, siendo cada célula
capaz de almacenar permanentemente uno o más bits de datos. De este
modo, la memoria flash no requiere voltaje para retener los datos en
ella programados. Sin embargo, una vez programada la célula debe
borrarse antes de ser reprogramada con un nuevo valor de datos.
Estas matrices de células están divididas en grupos para
proporcionar una implantación eficiente de las funciones de lectura,
programación y borrado. Una arquitectura de memoria flash típica
para almacenamiento en masa dispone grandes grupos de células en
bloques borrables, en donde un bloque contiene el número mínimo de
células (unidad de borrado) que se borran a la vez.
En una forma comercial, cada bloque contiene
suficientes células para almacenar un sector de datos de usuario más
algunos datos de cabecera relacionados con los datos del usuario
y/o con el bloque en el que se almacenan. La cantidad de datos del
usuario incluidos en un sector son los 512 bytes estándar en una
clase de dichos sistemas de memoria, sin embargo pueden tener otro
tamaño. Debido a que el aislamiento de los bloques individuales de
células entre ellos necesario para que puedan borrarse
individualmente se produce en el chip de circuito integrado, otra
clase de memorias flash hace los bloques significativamente mayores
de modo que es necesario menos espacio para dicho aislamiento. Pero
puesto que también es deseable manipular datos de usuario en
sectores mucho más pequeños, cada bloque grande está a menudo
dividido en páginas individualmente direccionables que son la
unidad básica de lectura y programación de datos de usuario (unidad
de programación y/o lectura). Cada página almacena normalmente un
sector de datos de usuario, sin embargo una página puede almacenar
un sector parcial o múltiples sectores. Según se utiliza en la
presente memoria, un "sector" se usa para hacer referencia a
una cantidad de datos de usuario que se transfieren hacia y desde
la unidad principal como una unidad.
El controlador de subsistema en un gran sistema
de bloques realiza una serie de funciones entre las que se incluye
la traducción entre direcciones lógicas (LBA) recibidas por el
subsistema de memoria de una unidad principal, números de bloque
físico (PBN) y direcciones de página dentro de la matriz de células
de memoria. Esta traducción implica a menudo el uso de términos
intermedios para un número de bloque lógico (LBN) y página lógica.
El controlador también gestiona el nivel de bajo funcionamiento
del circuito flash a través de una serie de comandos que emite a
los dispositivos de memoria flash a través de un bus de interfaz.
Otra función que realiza el controlador es mantener la integridad
de los datos almacenados en el subsistema a través de diversos
medios, tales como utilizar un código de corrección de error
(ECC).
En un caso ideal, los datos de todas las páginas
de un bloque se actualizan a la vez escribiendo los datos
actualizados en las páginas dentro de un bloque borrado sin
asignar, y se actualiza una tabla de número de bloque
lógico-a-físico con la nueva
dirección. A continuación puede borrarse el bloque original. Sin
embargo, es más habitual que deban actualizarse los datos
almacenados en un número de páginas menor de todas las páginas de
un bloque determinado. Los datos almacenados en las páginas
restantes del bloque determinado permanecen sin cambiar. La
posibilidad de que esto ocurra es superior en los sistemas en donde
el número de sectores de datos almacenados por bloque es superior.
Una técnica ahora utilizada para cumplir dicha actualización
parcial de bloque es escribir los datos de las páginas que van a
ser actualizadas en un número correspondiente de páginas de un
bloque borrado sin usar y a continuación copiar las páginas del
nuevo bloque. A continuación puede borrarse el bloque original y
añadirse a un inventario de bloques usados en los que
posteriormente pueden programarse datos. Otra técnica escribe de
forma similar las páginas actualizadas en un nuevo bloque pero
elimina la necesidad de copiar las otras páginas de datos en el
nuevo bloque modificando los indicadores de las páginas del bloque
original que están siendo actualizadas para indicar que contienen
datos obsoletos. A continuación, cuando se leen los datos, los
datos actualizados leídos de páginas del nuevo bloque se combinan
con los datos sin cambiar leídos de páginas del bloque original que
no están marcadas como
obsoletas.
obsoletas.
Se hace referencia a la patente estadounidense
núm. 5.598.370 en donde se describe una memoria no volátil con
capacidad flash de grupo borrable. Esto puede usarse para almacenar
simultáneamente datos originales y de sustitución identificando
ambos datos mediante la misma dirección lógica y distinguir los
datos de sustitución de los datos originales con los números de
secuencia a ellos asignados. El preámbulo de la reivindicación 1 se
basa en dicho documento.
La presente invención se dirige hacia un método
para sustituir nuevos datos por datos reemplazados en un sistema
de memoria no volátil con una matriz de elementos de almacenamiento
de memoria no volátil organizados en bloques, estando los bloques
organizados en páginas y conteniendo cada bloque el grupo más
pequeño de elementos de almacenamiento que puede borrarse. El
método comprende escribir nuevos datos como páginas actualizadas en
páginas de dicho bloque, siendo dichos nuevos datos menores de
todas las páginas originales de otro de dichos bloques; direccionar
las páginas originales y las páginas actualizadas con la misma
dirección lógica; y leer y distinguir las páginas actualizadas de
las páginas originales. Según la invención, la lectura es en
relación con el tiempo relativo de escritura en las páginas de
dichos bloques, leyendo las páginas de dicho bloque y a
continuación de dicho otro bloque en orden inverso del que han sido
escritas las páginas e ignora las páginas que tengan la misma
dirección lógica como páginas que ya ha leído.
Un sistema de memoria no volátil según la
invención comprende una matriz de elementos de almacenamiento de
memoria no volátil organizados en bloques, estando dichos bloques
organizados en páginas, en donde un bloque contiene el grupo más
pequeño de elementos de almacenamiento que puede borrarse; un
mecanismo de programación que escribe en páginas de un bloque una
versión actualizada menor de cualquiera de las páginas originales
de dicho otro bloque; un mecanismo de direccionamiento que
direcciona las páginas originales y las páginas actualizadas con la
misma dirección lógica; y un mecanismo de lectura que distingue las
páginas actualizadas de las páginas originales. El mecanismo de
lectura lee en relación con el tiempo relativo de escritura en las
páginas de dichos bloques, leyendo las páginas de dicho bloque y a
continuación de dicho otro bloque en orden inverso del que han sido
escritas las páginas e ignora las páginas que tengan la misma
dirección lógica como páginas que ya ha leído.
Al usar la presente invención, puede evitarse
tanto el copiado de datos sin modificar desde el bloque original al
nuevo bloque, como la necesidad de actualizar los indicadores del
bloque original cuando los datos de menos que todas las páginas de
un bloque están siendo actualizadas. Esto se consigue manteniendo
tanto las páginas con datos reemplazados y las páginas actualizadas
de datos con una dirección lógica común. Las páginas de datos
originales y reemplazados se distinguen por el orden relativo en el
que fueron programadas. Durante la lectura, los datos más recientes
almacenados en las páginas con la misma dirección lógica se
combinan con las páginas de datos sin modificar, mientras que se
ignoran los datos de las versiones originales de de las páginas
actualizadas. Los datos actualizados pueden escribirse en páginas
dentro de un bloque diferente del de los datos originales o en
páginas disponibles sin utilizar dentro del mismo bloque. En una
implantación específica, una forma de sello de tiempo se almacena
en cada página de datos, lo cual permite determinar el orden
relativo según el cual se escribieron las páginas con la misma
dirección lógica. En otra implantación específica en un sistema en
el que las páginas se programan en un orden determinado dentro de
los bloques, se almacena una forma de sello de tiempo con cada
bloque de datos, y la copia más reciente de una página dentro de un
bloque se establece por su ubicación física dentro del
bloque.
bloque.
Estas técnicas evitan la necesidad de copiar
datos no modificados del bloque original al nuevo y la necesidad de
modificar un indicador u otros datos en las páginas del bloque
original cuyos datos no han sido actualizados. Al no tener que
cambiar un indicador u otros datos en las páginas reemplazadas, se
elimina el potencial de perturbar los datos escritos previamente en
páginas adyacentes de ese mismo bloque que puede producirse de
dicha operación de escritura. Asimismo, se evita un fallo de
ejecución del funcionamiento adicional del programa.
Una característica operativa adicional, que
puede usarse en conjunción con las técnicas anteriormente
resumidas, registra el desplazamiento lógico de páginas
individuales de datos dentro de los bloques de células de memoria
individuales, de modo que no es necesario almacenar los datos
actualizados con la misma compensación de página física como en los
datos reemplazados. Esto permite un uso más eficiente de las
páginas de los nuevos bloques e incluso permite almacenar los datos
actualizados en cualquier página borrada del mismo bloque al igual
que los datos reemplazados.
Dos o más bloques colocados en unidades
independientes de la matriz de memoria (también llamados
("submatrices") pueden agruparse para programar y leer juntos
como parte de una sola operación. En la presente memoria se hace
referencia a ese tipo de grupo de bloques como "metabloque".
Los bloques que lo forman pueden estar situados en un solo chip de
circuito integrado de memoria, o, en sistemas que utilizan más de
uno de dichos chips, situados en dos o más chips diferentes.
Cuando se actualizan los datos en menos de todas las páginas de uno
de dichos bloques, con frecuencia es necesario el uso de otro
bloque en la misma unidad. En efecto, las técnicas descritas
anteriormente pueden emplearse por separado con cada bloque del
metabloque. Por lo tanto, cuando se actualizan los datos en páginas
de más de un bloque del metabloque, es necesario usar las páginas
de más de un bloque. Por ejemplo, si hay cuatro bloques de
diferentes unidades de memoria que forman el metabloque, existe
cierta probabilidad de que se usen hasta cuatro bloques
adicionales, uno en cada una de las unidades, para almacenar
páginas actualizadas de bloques originales. Un bloque de
actualización es potencialmente necesario en cada unidad para cada
bloque del metabloque original. Los datos actualizados de páginas
de más de un bloque del metabloque pueden almacenarse en páginas de
un bloque común en solo una de las unidades. Esto reduce
significativamente el número de bloques borrados sin usar que son
necesarios para almacenar datos actualizados, haciendo un uso más
eficiente de los bloques de la célula de memoria disponibles para
el almacenamiento de datos. Esta técnica resulta especialmente útil
cuando el sistema de memoria actualiza con frecuencia páginas
únicas de un meta-
bloque.
bloque.
Aspectos, características y ventajas de la
presente invención se incluyen en la siguiente descripción de
realizaciones ejemplares, cuya descripción debe leerse en
conjunción con los dibujos que la acompañan, en donde:
La Figura 1 es un diagrama de bloque de una
matriz de memoria Flash EEPROM de la técnica anterior con lógica de
control, registros de datos y de direccionamiento;
La Figura 2 ilustra una arquitectura que utiliza
memorias de la Figura 1 con un controlador de sistema;
La Figura 3 es un diagrama de temporización en
el que se muestra una operación de copiado típica del sistema de
memoria de la Figura 2;
La Figura 4 ilustra un proceso existente de
actualización de datos en reducir todas las páginas de un bloque de
páginas múltiples;
Las Figuras 5A y 5B son tablas de direcciones
lógicas y físicas de bloques correspondientes para los bloques
originales y los nuevos bloques de la Figura 4,
respectivamente.
La Figura 6, ilustra otro proceso existente de
actualizar datos en reducir todas las páginas de un bloque de
páginas múltiples;
Las Figuras 7A y 7B son tablas de direcciones de
página lógica y física correspondientes para los bloques originales
y nuevos de la Figura 6, respectivamente;
La Figura 8 ilustra un ejemplo de un proceso
mejorado para actualizar datos en reducir todas las páginas de un
bloque de páginas múltiples.
La Figura 9 es una tabla con los números de
página lógicos y físicos correspondientes del nuevo bloque de la
Figura 8;
La Figura 10 proporciona un ejemplo de una
distribución de los datos en una página mostrada en la Figura
8;
La Figura 11 ilustra un desarrollo adicional del
ejemplo de la Figura 8;
La Figura 12 es una tabla con los números de
página lógicos y físicos correspondientes del nuevo bloque de la
Figura 11;
La Figura 13 ilustra una forma de leer los datos
actualizados en los bloques de la Figura 11;
La Figura 14 es un diagrama de flujo de un
proceso para programar los datos en un sistema de memoria
organizado como se ilustra en las Figuras 8 y 9;
La Figura 15 ilustra una memoria de unidades
múltiples con bloques de las unidades individuales enlazadas en un
metabloque y
la Figura 16 ilustra un método mejorado de
actualizar datos de un metabloque en la memoria de unidades
múltiples de la Figura 12 cuando la cantidad de datos actualizados
es menor de la capacidad de almacenamiento de datos del
metabloque.
La Figura 1 muestra la arquitectura interna de
un dispositivo de memoria flash típico. Las características
principales incluyen un bus de entrada/salida (I/O) 411 y señales
de control 412 para su interconexión a un controlador externo, un
circuito de control de memoria 450 para controlar las operaciones
de la memoria interna de control con registros para comandos,
direcciones y señales de estado. Se incluyen una o más matrices 400
de células flash EEPROM, cada una con su propio decodificador de
filas (XDEC) 401 y decodificador de columnas (YDEC) 402, un grupo
de amplificadores sensores y circuitos de control del programa
(SA/PROG) 454 y registro de datos 404. En la presente memoria, las
células de datos incluyen normalmente una o más puertas flotantes
conductivas como elementos de almacenamiento, aunque pueden usarse
otros elementos de almacenamiento de carga de electrones a largo
plazo en su lugar. La matriz de células de memoria puede operarse
con dos niveles de carga definidos para cada elemento de
almacenamiento para almacenar un bit de datos con cada elemento.
Alternativamente, pueden definirse más de dos estados de
almacenamiento para cada elemento de almacenamiento, en tal caso se
almacena más de un bit de datos en cada elemento.
De desearlo, una pluralidad de matrices 400
junto con decodificadores X, decodificadores Y, circuitos de
programación/verificación, registros de datos relacionados, entre
otros, se proporcionan, por ejemplo como se describe en la patente
estadounidense 5.890.192, publicada el 30 de marzo de 1999 y
asignada a Sandisk Corporation, el asignatario de esta solicitud,
que se incorpora a la presente memoria como referencia.
Características relacionadas del sistema de memoria se describen en
la solicitud de patente pendiente de publicación con núm. de serie
09/505,555, presentada el 7 de febrero de 2000 por Kevin Conley
et al., solicitud que se incorpora de forma expresa a la
presente memoria como referencia.
El bus de interfaz I/O externo 411 y las señales
de control 412 pueden incluir lo siguiente:
- CS - Selección de chip.
- Usado para activar la interfaz de memoria flash
- RS - Señal lectura.
- Usado para indicar el bus I/O está siendo usado para transferir datos de la matriz de memoria.
- WS - Señal de escritura.
- Usado para indicar que el bus I/O está siendo usado para transferir datos a la matriz de memoria.
- AS - Señal de dirección.
- Indica que el bus I/O está siendo usado para transferir información de dirección.
- AD[7:0] - Bus de dirección/datos
- Este bus I/O se usa para transferir datos entre el controlador y el comando de la memoria flash, registros de dirección y datos del control de memoria 450.
Esta interfaz se proporciona solo como ejemplo
puesto que pueden usarse otras configuraciones de señal para
proporcionar la misma funcionalidad. La Figura 1 muestra una sola
matriz de memoria flash 400 con sus componentes relacionados, pero
puede existir una multiplicidad de dichas matrices en un solo chip
de memoria flash que comparten una interfaz común y unos circuitos
de control de memoria, pero poseen unos circuitos XDEC, YDEC,
SA/PROG y DATA REG independientes para permitir la lectura paralela
y las operaciones del programa.
Los datos se transfieren desde la matriz de
memoria a través del registro de datos 404 hacia un controlador
externo a través del acoplamiento de los registros de datos del bus
I/O AD_[7:_0] 411. El registro de datos 404 también está
acoplado al amplificador de detección/circuito de programación 454.
El número de elementos del registro de datos acoplado a cada
elemento de amplificador de detección/circuito de programación
dependerán del número de bits almacenados en cada elemento de
almacenamiento de las células de memoria, las células flash EEPROM
que contienen una o más puertas flotantes como elementos de
almacenamiento. Cada elemento de almacenamiento puede almacenar una
pluralidad de bits, tal como 2 o 4, si las células se operan en un
modo multiestado. Alternativamente, las células de memoria pueden
estar operadas en un modo binario para almacenar un bit de datos
por elemento de almacenamiento.
El decodificador de filas 401 descodifica
direcciones de filas de la matriz 400 para seleccionar la página
física a la que debe accederse. El decodificador de filas 401
recibe direcciones de filas a través de las líneas internas de
dirección de filas 419 desde la lógica de control de memoria 450.
Un decodificador de columna 402 recibe direcciones de columna a
través de líneas de dirección de columna 429 desde la lógica de
control de memoria 450.
La Figura 2 muestra una arquitectura de un
sistema típico de almacenamiento de datos no volátil, en este caso
empleando células de memoria flash como medio de almacenamiento. En
una forma, este sistema está encapsulado dentro de una tarjeta
extraíble con un conector eléctrico que se extiende a lo largo de
un lado para proporcionar conexión a la unidad principal cuando se
introduce en un receptáculo de la unidad principal.
Alternativamente, el sistema de la Figura 2 puede incorporarse a un
sistema principal en la forma de un circuito integrado instalado
permanentemente o de otro modo. El sistema utiliza un solo
controlador 301 que ejecuta funciones de unidad principal de alto
nivel y de control de la memoria. El medio de la memoria flash está
compuesto por uno o más dispositivos de memoria flash, cada uno
formado a menudo en su propio chip de circuito integrado. El
controlador del sistema y la memoria flash están conectados
mediante un bus 302 que permite al controlador 301 cargar comandos,
direcciones y datos de transferencia de y hacia la matriz de
memoria flash. El controlador 301 se interconecta con un sistema
principal (no mostrado) con el que se transfieren datos de usuario
de y hacia la matriz de memoria flash. En el caso en donde el
sistema de la Figura 2 se incluye en una tarjeta, la interconexión
con el principal incluye un conjunto de toma y conector (no
mostrado) en la tarjeta y en el equipo de la unidad principal.
El controlador 301 recibe un comando de la
unidad principal para leer o escribir uno o más sectores de datos
de usuario que comienzan en una dirección lógica determinada. Esta
dirección puede o no alinearse con un límite del bloque físico de
células de memoria.
En algunos sistemas de la técnica anterior con
bloques de células de memoria de gran capacidad que están divididos
en múltiples páginas tal y como se ha descrito anteriormente, los
datos de un bloque que no está siendo actualizado necesitan ser
copiados desde el bloque original hacia un nuevo bloque que también
contiene los nuevos datos actualizados escritos por la unidad
principal. Esta técnica se ilustra en la Figura 4, en donde se
incluyen dos de un gran número de bloques de memoria. Un bloque 11
(PBN0) se ilustra como dividido en 8 páginas para almacenar un
sector de datos de usuario en cada una de sus páginas. Los campos
de datos de cabecera contenidos en cada página incluyen un campo
13 que contiene el LBN del bloque 11. El orden de las páginas
lógicas dentro de un bloque lógico se fija en relación con las
páginas físicas correspondientes dentro de un bloque físico. Un
segundo bloque de configuración similar 15 (PBN1) se selecciona de
un inventario de bloques borrados, sin usar. Los datos de las
páginas 3-5 del bloque original 11 están siendo
actualizados con tres páginas de nuevos datos 17. Los nuevos datos
se escriben en las páginas correspondientes 3-5 del
nuevo bloque 15 y se copian los datos de usuario de las páginas
0-2, 6 y 7 del bloque 11 en las páginas
correspondientes del nuevo bloque 15. Todas las páginas del nuevo
bloque 15 se programan preferiblemente en una sola secuencia de
operaciones de programación. Tras programar el bloque 15, el bloque
original 11 puede borrarse y colocarse en el inventario para su
posterior uso. El copiado de datos entre los bloques 11 y 15, que
implica la lectura de los datos de una o más páginas del bloque
original y programar posteriormente los mismos datos en páginas en
un nuevo bloque asignado, reduce significativamente la realización
de la escritura y vida útil utilizable del sistema de
almacenamiento.
En relación con las Figuras 5A y 5B, tablas
parciales en las que se muestran mapas de bloques lógicos en
bloques originales y nuevos bloques físicos 11 y 15 antes (Figura
5A) y después (Figura 5B), se describe la actualización de datos
en relación con la Figura 4. Antes de la actualización de datos, el
bloque original 11, en este ejemplo, almacena páginas
0-7 de LBNO en las páginas correspondientes
0-7 de LBNO. Tras la actualización de datos, el
nuevo bloque 15 almacena páginas 0-7 de LBNO en las
páginas correspondientes 0-7 de PBN1. La recepción
de una solicitud para leer datos de LBNO se direccionan entonces
hacia el bloque físico 15 en lugar de un bloque físico 11. En una
operación de controlador típica, se construye una tabla en la forma
de la mostrada en las Figuras 5A y 5B desde el campo 13 leído de
una página física y reconocido por el PBN que se direcciona al leer
el campo de datos 13. La tabla se almacena normalmente en una
memoria volátil del controlador para una mayor facilidad de acceso,
a pesar de que solo se almacena en un momento dado una porción de
una tabla completa para el sistema completo. Una porción de la
tabla se forma normalmente antes de una operación de lectura o de
programación que implica los bloques incluidos en la porción de
tabla.
En otros sistemas de la técnica anterior, se
registran los indicadores con los datos del usuario en páginas y se
usan para indicar que las páginas de datos del bloque original
reemplazadas por los datos recién escritos no son válidas. Solo los
datos nuevos se escriben en el bloque recién asignado. De este
modo, los datos de las páginas del bloque no implicados en la
operación de escritura pero contenidos en el mismo bloque físico
que los datos reemplazados no deben ser copiados en el nuevo
bloque. Esta operación se ilustra en la Figura 6, en donde las
páginas 3-5 de datos dentro de un bloque original
21 (PBN0) se vuelven a actualizar. Páginas actualizadas
3-5 de datos 23 se escriben en las páginas
correspondientes de un nuevo bloque 25. Como parte de la misma
operación, se escribe un indicador 27 nuevo/antiguo en cada una de
las páginas 3-5 para indicar que los datos de
dichas páginas son antiguos, mientras que el indicador 27 para las
páginas restantes 0-2, 6 y 7 permanece como
"nuevo". De forma similar, el nuevo PBN1 se escribe en otro
campo de datos de cabecera de cada una de las páginas 3- 5 del
bloque 21 para indicar donde se ubican los datos actualizados. El
LBN y la página se almacenan en un campo 31 dentro de cada una de
las páginas físicas.
Las Figuras 7A y 7B son tablas de
correspondencia entre los datos LBN/página y el PBN/página antes
(Figura 7A) y después (Figura 7B) de completar la actualización de
datos. Las páginas sin modificar 0-2, 6 y 7 del LBN
permanecen asignados a PBN0 mientras que las páginas actualizadas
3-5 se muestran como que residen en PBN1. La tabla
de la Figura 7B está construida por el controlador de memoria al
leer los campos de datos de cabecera 27, 29 y 31 de las páginas
dentro del bloque PBN0 después de la actualización de datos. Puesto
que el indicador 27 se ajusta en "antiguo" en cada una de las
páginas 3-5 del bloque PBN0 original, ese bloque no
volverá a aparecer en la tabla de dichas páginas. En lugar de ello,
aparecerá un nuevo número de bloque PBN1, leído de los campos de
cabecera 29' de las páginas actualizadas. Cuando se leen datos de
LBNO, los datos de usuario almacenados en las páginas enumeradas en
la columna de la derecha de la Figura 7B se leen y a continuación
se montan en el orden mostrado para su transferencia a la unidad
principal.
Diversos indicadores están normalmente situados
en la misma página física que los otros datos de cabecera
asociados, tales como LBN y un ECC. Por lo tanto, para programar
los indicadores antiguos/nuevos 27, y otros, en páginas que las que
los datos han sido reemplazados requieren que una página soporte
múltiples ciclos de programación. Es decir, la matriz de memoria
debe tener la capacidad de que sus páginas puedan programarse en al
menos dos etapas entre borrados. Además, el bloque debe soportar la
capacidad para programar una página cuando han sido programadas las
otras páginas del bloque con compensaciones o direcciones más
elevadas. Sin embargo, una limitación de algunas memorias flash
evita la utilización de dichos indicadores especificando que las
páginas en un bloque tan solo puedan programarse de modo
físicamente secuencial. Además, las páginas soportan un número
finito de ciclos de programa y en algunos casos no se permite la
programación adicional de páginas programadas.
Lo que es necesario es un mecanismo mediante el
cual los datos que reemplazan parcialmente datos almacenados en un
bloque existente puedan ser escritos sin copiar datos no
modificados del bloque existente o programar indicadores en páginas
que han sido programadas previamente.
Existen muchos tipos diferentes de flash EEPROM,
cada uno de los cuales presenta sus propias limitaciones que deben
ser trabajadas para accionar un sistema de memoria de alto
rendimiento formado sobre una pequeña cantidad del área del
circuito integrado. Algunos no proporcionan escritura en datos de
una página que ya ha sido programada, de modo que no es posible
actualizar los indicadores en una página que contiene datos
reemplazados, tal y como se ha descrito anteriormente. Otros
permiten que se escriban dichos indicadores, pero al hacerlo en
páginas cuyos datos están siendo reemplazados se pueden
desestabilizar los datos de otras páginas del mismo bloque que
permanecen intactas.
Un ejemplo de sistema de memoria en donde se ha
determinado que esto es un problema es un tipo NAND, en donde se
forma una columna de células de memoria como una cadena de
circuitos en serie entre una línea de bits y un potencial común.
Cada línea de palabras se extiende a través de una fila de células
de memoria formadas por una célula en cada una de dichas cadenas.
Este tipo de memoria es especialmente susceptible a dichas
alteraciones del estado de memoria al ser operadas en modo
multiestado para almacenar más de un bit de datos en cada una de
dichas células. Dicha operación divide una ventana disponible de un
intervalo de voltaje umbral del transistor de células de memoria en
intervalos de nivel de voltaje no sobrepuestos más estrechos,
haciendo que cada intervalo sea más estrecho a medida que aumenta
el número de niveles, y así el número de bits almacenados en cada
célula. Por ejemplo, si se usan cuatro intervalos umbrales, dos
bits de datos se almacenan en el elemento de almacenamiento de cada
célula. Y puesto que cada uno de los cuatro intervalos de voltaje
umbral es necesariamente pequeño, el cambio de estado de una célula
que está siendo alterada por la programación de otras células del
mismo bloque aumenta con el funcionamiento multiestado. En este
caso, no puede tolerarse la escritura de los indicadores
antiguos/nuevos u otros, según se describe en relación con las
Figuras 6, 7A y 7B.
Una característica común de cada una de las
técnicas de gestión de memoria existentes descritas anteriormente
en relación con las Figuras 4-7B es que se asigna
un número de bloque lógico (LBN) y una compensación de página
dentro del sistema hasta un máximo de dos números de bloque físico
(PBN). Un bloque es el bloque original y el otro contiene los datos
de página actualizada. Los datos se escriben en la ubicación de
página del bloque que corresponde al bajo orden de bits de su
dirección lógica (LBA). Esta correspondencia es típica en diversos
tipos de sistemas memoria. En la técnica descrita a continuación, a
las páginas que contienen datos actualizados también se les asigna
el mismo LBN y las compensaciones de página en las páginas cuyos
datos han sido reemplazados. Pero en lugar de marcar las páginas
que contienen datos originales mientras se los reemplaza, el
controlador de memoria distingue las páginas que contienen los
datos reemplazados de las que contienen la versión nueva,
actualizada mediante (1) siguiendo el orden en que se han escrito
las páginas con la misma dirección lógica, tal como usando un
contador, y/o (2) desde las direcciones de página física en donde,
cuando se escriben las páginas en orden dentro de los bloques desde
la dirección de página más baja hasta la más alta, la dirección
física más alta contiene la copia más reciente de los datos. Por lo
tanto, cuando se accede a los datos para su lectura, aquellos en
las páginas más actuales se usan en los casos en los que hay páginas
que contienen los datos reemplazados que tienen las mismas
direcciones lógicas, mientras que se ignoran los datos
reemplazados.
Una primera implantación específica de esta
técnica se describe en relación a las Figuras 8 y 9. La situación
en este ejemplo es igual a la de las técnicas de la técnica
anterior descritas en relación con las Figuras 4-7B,
es decir la reescritura parcial de los datos dentro de un bloque
35, a pesar de que ahora cada bloque muestra que contiene 16
páginas. Se escriben nuevos datos 37 para cada una de las páginas
3-5 del bloque 35 (PBN 35) en tres páginas de un
nuevo bloque 39 (PBN1) que ha sido previamente borrado, similar a
lo descrito anteriormente. Un LBN y un campo de datos de cabecera
de compensación de página 41 escritos en las páginas de PBN1 que
contienen los datos actualizados es el mismo que el de páginas de
los datos reemplazados en el bloque inicial PBN0. La tabla de la
Figura 9, formada de datos dentro de los campos 41 y 41', lo
muestra. El LBN lógico y las compensaciones de página, de la
primera columna, están asignados en el primer bloque físico (PBN0),
en la segunda columna y, para las páginas que han sido
actualizadas, también en el segundo bloque físico (PBN1) de la
tercera columna. El LBN y las compensaciones de página lógica 41'
escritos en cada una de las tres páginas de datos actualizados
dentro del nuevo bloque PBN1 son los mismos que los 41 escritos en
cada una de la página lógica correspondiente del bloque original
PBN0.
Para determinar cuál de las dos páginas con los
mismos LBN y compensación de página contiene los datos
actualizados, cada página contiene otro campo de cabecera 43 que
proporciona una indicación de su hora de programación, al menos
relativa a la hora en que se programaron otras páginas con la misma
dirección lógica. De este modo se permite al controlador
determinar, cuando lee los datos de la memoria, la antigüedad
relativa de las páginas de datos que se asignan a la misma
dirección lógica.
Hay diversas formas en las que el campo 43, que
contiene una forma de sello de tiempo, puede escribirse. La forma
más directa es registrar en dicho campo, cuando se programan los
datos de su página asociada, la producción de un reloj en tiempo
real en el sistema. Las páginas programadas posteriormente con la
misma dirección lógica tienen un tiempo posterior registrado en el
campo 43. Pero cuando dicho reloj en tiempo real no está disponible
en el sistema, pueden usarse otras técnicas. Una técnica específica
es almacenar la producción de un contador módulo-N
como valor del campo 43. El intervalo del contador debe ser uno más
que el número de páginas que se contemplan almacenadas con el mismo
número de página lógica. Al actualizar los datos de una página
determinada en el bloque original PBN0, por ejemplo; el controlador
primero lee el recuento almacenado en el campo 43 de la página
cuyos datos están siendo actualizados, incrementos del recuento en
cierta cantidad, tal como uno, y a continuación escribe ese
recuento incrementado en el nuevo bloque PBN1 como el campo 43'. El
contador, al alcanzar N+1, regresará a 0. Puesto que el número de
bloques con el mismo LBN es menor a N, siempre existe un punto de
discontinuidad en los valores de los recuentos almacenados.
Entonces resulta sencillo manipular el regreso con normalizado al
punto de discontinuidad.
El controlador, cuando se le indica que lea los
datos, distingue fácilmente entre los datos nuevos y reemplazados
de las páginas comparando los recuentos de los campos 43 y 43' de
las páginas con el mismo LBA y compensación de página. En respuesta
a la necesidad de leer la versión más reciente de un archivo de
datos, los datos de las páginas nuevas identificadas se montan,
junto con páginas originales que no han sido actualizadas, en la
versión más reciente del archivo de datos.
Se percibirá que, en el ejemplo de la Figura 8,
las páginas de nuevos datos 37 se almacenan en las primeras tres
páginas 0-2 del nuevo bloque PBN1, en lugar de
hacerlo en las mismas páginas 3-5 a las que
sustituyen del bloque original PBN0. Al mantener un registro de los
números de páginas lógicas individuales, los datos actualizados no
necesitan ser almacenados necesariamente en la misma compensación
de página del bloque antiguo que contiene los datos reemplazados.
Página(s) de datos actualizados también pueden escribirse en
páginas borradas del mismo bloque como la página de datos siendo
reemplazada.
Como resultado de ello, las técnicas descritas
no presentan restricciones que limiten en qué página física pueden
escribirse los nuevos datos. Pero el sistema de memoria en el que
se implantan estas técnicas puede presentar algunas restricciones.
Por ejemplo, un sistema NAND requiere que las páginas de los
bloques se programen en orden secuencial. Eso significa que la
programación de las páginas centrales 3-5, como se
hace en el nuevo bloque 25 (Figura 6), agota las páginas
0-2, que no pueden programarse posteriormente. Al
almacenar los nuevos datos 37 en las primeras páginas disponibles
del nuevo bloque 39 (Figura 8) en dicho sistema restrictivo, las
páginas restantes 3-7 están disponibles para su
posterior uso para almacenar otros datos. En efecto, si el bloque
39 poseía otros datos almacenados en sus páginas
0-4 en el momento en que se almacenan tres páginas
de nuevos datos 37, los nuevos datos pueden almacenarse en las
páginas sin usar restantes 5-7. Esto crea un uso
máximo de la capacidad de almacenamiento disponible para dicho
sistema.
Un ejemplo de la estructura de datos almacenados
en una página individual de los bloques de la Figura 8 se muestra
en la Figura 10. La parte más grande son los datos de usuario 45.
Un código de corrección de error (ECC) 47 calculado a partir de los
datos de usuario también se almacena en la página. También se
almacenan en la página los datos de cabecera 49, incluido el LBN y
el indicador de página 41 (desplazamiento de página lógica), el
sello de tiempo 43 y un ECC 51 calculado a partir de los datos de
cabecera. Pero al tener un ECC 50 que cubre los datos de cabecera
diferente del ECC 47 de datos de usuario, la cabecera 49 puede
leerse por separado de los datos de usuario y evaluarse como válido
sin la necesidad de transferir todos los datos almacenados en la
página. Sin embargo, alternativamente donde la lectura separada de
los datos de cabecera 49 no es un evento frecuente, todos los datos
de la página pueden estar cubiertos por un solo ECC para reducir el
número total de bits de ECC en una página.
Una segunda implantación específica de la
técnica de la inventiva también puede describirse en relación con
la Figura 8. En este ejemplo, el sello de tiempo se usa solo para
determinar la antigüedad relativa de los datos almacenados en
bloques, mientras que las páginas más recientes entre las que
llevan el mismo LBN y número de página están determinadas por sus
ubicaciones físicas relativas. Entonces, no es necesario que el
sello de tiempo 43 no se almacene como parte de cada página. En
lugar de eso, un solo sello de tiempo puede registrarse para cada
bloque, como parte del bloque o en cualquier otro lugar de la
memoria no volátil y se actualiza cada vez que una página de datos
se escribe en el bloque. Entonces los datos se leen de páginas en
un orden de dirección física descendente, comenzando desde la
última página del bloque actualizado más recientemente que contiene
páginas de datos con el mismo LBN.
Por ejemplo, en la Figura 8 las páginas primero
se leen en el nuevo bloque PBN1 desde la última (página 15) a la
primera (página 0), seguido por la lectura de las páginas del
bloque original PBN0 en el mismo orden inverso. Una vez se han
leído las páginas lógicas 3, 4 y 5 del nuevo bloque PBN1, los datos
reemplazados en dichas páginas del bloque original PBN0 que se
identifican por los mismos números de página lógica pueden saltarse
durante el proceso de lectura. Específicamente, se saltan las
páginas físicas 3, 4 y 5 del bloque antiguo PBN0 durante la
lectura, en este ejemplo, cuando el controlador determina que su
LBN/páginas 41 son los mismos que los de las páginas ya leídas del
nuevo bloque PBN1. Este proceso puede aumentar la velocidad de la
lectura y reducir el número de bits de cabecera 49 que es necesario
almacenar para cada página. Además, cuando se emplea esta técnica
de lectura inversa de página, la tabla de la Figura 9 usada por el
controlador durante una operación de lectura puede simplificarse en
la forma de las Figuras 5A y 5B. Solo una identidad de dichos
bloques físicos que contienen datos de un bloque lógico común y las
horas relativas a las que fueron programados los bloques físicos
deben ser conocidas para efectuar este eficiente proceso de
lectura.
La Figura 11 ilustra una ampliación del ejemplo
de la Figura 8 que incluye una segunda actualización de los datos
escritos originalmente en el bloque PBN0. Nuevos datos 51 para las
páginas lógicas 5, 6, 7 y 8 se escriben en las páginas físicas
respectivas 3, 4, 5 y 6 del nuevo bloque PBN1, junto con su LBN y
número de página. Téngase en cuenta, que en este ejemplo, los datos
de la página lógica 5 están siendo actualizados por segunda vez.
Durante una operación de lectura que comienza desde la última
página del nuevo bloque PBN1, las páginas lógicas escritas más
recientemente 8, 7, 6 y 5 de los datos de interés se leen en primer
lugar en ese orden. A continuación, se tendrá en cuenta que el
LBN/campo de cabecera de página de la página física 2 de PBN1 es la
misma que la leída de la página física 3, de modo que no se leen
los datos de usuario de la página 2. A continuación se leen las
páginas físicas 1 y 0 se leen. A continuación, se leen las páginas
del bloque PBN0, comenzado por la página física 15. Tras leer las
páginas físicas 15-9, el controlador tendrá en
cuenta que el LBN/campos de página de cada una de las páginas
8-3 se corresponden con los de las páginas cuyos
datos ya han sido leídos, de modo que los datos antiguos no tienen
que ser leídos en dichas páginas. De este modo, se mejora la
eficiencia del proceso de lectura. Finalmente, los datos originales
de las páginas físicas 2-0 se leen puesto que esos
datos no han sido actualizados.
Se notará que este ejemplo de lectura de páginas
en orden inverso clasifica eficientemente las páginas de nuevos
datos de las páginas de datos reemplazados debido a que los datos
se escriben en ubicaciones de página física de un bloque borrado en
orden a partir de la página 0 en adelante. Sin embargo, esta
técnica no se limita a su utilización con un sistema de memoria con
tales restricciones específicas de programación. Mientras se
conozca el orden en el que se programan las páginas dentro de un
bloque determinado, los datos de dichas páginas pueden leerse en
orden inverso del que fueron escritos. Lo que se desea que es que
se lean primero las páginas programadas más recientemente con un LBN
común con otras que fueron programadas anteriormente, y esas son
las páginas programadas más recientemente. Las versiones más
recientes de páginas actualizadas se leen primero de modo que las
versiones reemplazadas pueden ser identificadas fácilmente.
En la Figura 12 se proporciona una tabla en la
que se muestra la correspondencia entre los datos lógicos y las
direcciones de página física para el ejemplo de la Figura 11. A
pesar de que ha habido dos actualizaciones de datos, ambas se
representan mediante la columna única del segundo bloque PBN1. La
página física indicada en PBN1 para la página lógica 5 simplemente
cambia tras la segunda actualización sufrida por dicha página. Si
la actualización implica un tercer bloque, entonces se añade otra
columna para dicho otro bloque. Puede usarse La tabla de la Figura
12, construida mediante la lectura de los datos de cabecera de cada
una de las páginas de los bloques en los que se han escrito datos
de un LBN común, mediante la primera implantación cuando no se usa
la técnica de lectura de página inversa. Cuando se usa la técnica
de lectura de página inversa descrita anteriormente, la tabla de la
Figura 12 necesita ser construida solo para identificar una
correspondencia entre un LBN y todos los PBN que contenían datos de
ese LBN.
Una forma eficiente de organizar las páginas de
datos leídas de un bloque físico, en donde una o más de las páginas
han sido actualizadas, se ilustra en la Figura 13. Se proporciona
suficiente espacio en una memoria volátil del controlador al buffer
en al menos varias páginas de datos a la vez, y preferiblemente un
bloque de datos completo. Eso es lo que se muestra en la Figura 13.
En la memoria del controlador se almacenan dieciséis páginas de
datos, igual a la cantidad almacenada en un bloque de memoria no
volátil. Puesto que normalmente las páginas se leen fuera de orden,
cada página de datos se almacena en su posición correcta en
relación con las otras páginas. Por ejemplo, en la operación de
lectura inversa de página de la Figura 11, la página lógica 8 es la
primera en ser leída, de modo que está almacenada en la posición 8
de la memoria del controlador, tal y como se indica con el "1"
en un círculo. La siguiente es la página lógica 7, y así
sucesivamente, hasta que todas las páginas de datos deseados por la
unidad principal se leen y almacenan en la memoria del controlador.
A continuación, el juego completo de datos de página se transfiere
a la unidad principal sin tener que manipular el orden de datos de
la memoria del buffer. Las páginas de datos ya han sido
organizadas escribiéndolas en la ubicación adecuada de la memoria
del controlador.
Un método para programar un sistema de memoria
no volátil que utiliza las técnicas descritas en relación con las
Figuras 8 y 9 se ilustra en el diagrama de flujo de la Figura 14.
Los datos de las páginas de un archivo existente que deben
actualizarse, se reciben desde un sistema principal, tal y como
indica el bloque 52. Mediante un paso 53, primero se determina si
el número de páginas de datos actualizados que deben ser
almacenados es igual o mayor que la capacidad de almacenamiento de
un bloque del sistema, mostrándose 16 páginas como la capacidad del
bloque en el ejemplo descrito anteriormente, para mayor
simplicidad. En tal caso, se direccionan uno o más bloques sin
usar, borrados en un paso 55, y las páginas de nuevos datos se
escriben en el bloque(s) direccionado(s), en un paso
57. Normalmente, la actualización de uno o más bloques de datos
tendrá como resultado que uno o más bloques almacenen los datos que
han sido reemplazados por los nuevos datos. En tal caso, como se
indica mediante un paso 59, se identifican los bloques con datos
reemplazados para su borrado. Con el objeto de aumentar el
rendimiento, es preferible que las operaciones de borrado se
produzcan de fondo, o cuando no se estén realizando operaciones de
programación o lectura en la unidad principal seleccionada. Tras el
borrado, los bloques se devuelven al inventario de bloques borrados
sin usar para su posterior uso. Alternativamente, el borrado de los
bloques puede diferirse hasta que sean necesarios para operaciones
de programación.
Si, por otro lado, en el paso 53 se determina
que hay menos páginas de datos nuevos que utilizan la capacidad
total de almacenamiento de un bloque, el siguiente paso 61
determina si hay suficientes páginas sin usar en un bloque con
algunas páginas programadas con otros datos. En tal caso, dicho
bloque se direcciona en un paso 65. De lo contrario, se direcciona
un bloque borrado totalmente sin usar, en un paso 65. En cualquier
caso, en un paso 67, los nuevos datos se programan en páginas sin
usar del bloque direccionado. Como parte de este proceso de
programación, el LBN y el desplazamiento de página se escriben en
los campos 41, y el sello de tiempo en los campos 43 de cada una de
las páginas (Figura 8) de los datos actualizados, de la forma
descrita anteriormente.
Una característica deseable del proceso de
programación es hacer disponibles para la programación futura todos
los bloques que almacenan solo datos reemplazados. De modo que, en
un paso 69, se formula la pregunta de si el proceso de
actualización de datos ha tenido como resultado que quede un bloque
completo solo con datos reemplazados. En tal caso, dicho bloque se
pone en la cola para su borrado, en un paso 71, y a continuación se
completa el proceso. De lo contrario, se omite el paso 71 y se
finaliza la actualización de datos.
Para mejorar el rendimiento reduciendo el tiempo
de programación, un objetivo es programar tantas células en
paralelo como sea posible sin incurrir en otros fallos. Una
implantación divide la matriz de memoria en grandes submatrices de
unidades independientes, tales como las unidades múltiples
80-83 de la Figura 15, cada unidad dividida a su
vez en un gran número de bloques, como se muestra en la figura. A
continuación se programan páginas de datos al mismo tiempo en más
de una de las unidades. Otra configuración combina además una o más
de dichas unidades de chips múltiples de memoria. Estos chips
múltiples pueden conectarse en un solo bus (como se muestra en la
Figura 2) o en múltiples buses independientes para una mayor
producción de datos. Una ampliación de esto es vincular bloques de
diferentes unidades para la programación, lectura y borrado a la
vez, de lo cual se muestra un ejemplo en la Figura 15. Los bloques
85-88 respectivos de las unidades
80-83 pueden operarse a la vez como metabloque, por
ejemplo. Al igual que con las realizaciones de memoria descritas
anteriormente, cada bloque, el grupo de matriz de memoria más
pequeño borrable, está normalmente dividido en páginas múltiples,
conteniendo una página el número de células más pequeño que pueden
programarse a la vez dentro de un bloque. Por lo tanto, una
operación de programación del metabloque mostrado en la Figura 15
incluirá normalmente la programación simultánea de datos en al
menos una página de cada uno de los bloques 85-88
que forman el metabloque, que se repite hasta que metabloque está
completo o hasta que se han programado todos los datos entrantes.
Otros metabloques se forman de diferentes bloques de las unidades
matriciales, un bloque de cada unidad.
En el transcurso de la operación de dicha
memoria, al igual que con otras, páginas de datos menores de un
bloque completo necesitan ser actualizadas con frecuencia. Esto
puede realizarse para los bloques individuales de un metabloque del
mismo modo que el descrito anteriormente en relación con las
Figuras 4 ó 6, pero preferiblemente con el uso de la técnica
mejorada descrita en relación con la Figura 8. Cuando se usan
cualquiera de estas tres técnicas para actualizar datos de un
bloque del metabloque, también se usa un bloque adicional de
memoria dentro de la misma unidad. Además, una actualización de
datos puede requerir escribir nuevos datos para una o más páginas
de dos o más de los bloques de un metabloque. Esto puede requerir
el uso de hasta cuatro bloques adicionales 90-93,
uno en cada una de las cuatro unidades, para actualizar un archivo
de datos almacenado en el metabloque, incluso aunque solo se
actualicen los datos de unas pocas de páginas.
Para reducir el número de bloques necesarios
para dichas actualizaciones parciales de bloques, según otro
aspecto de la presente invención, se realizan actualizaciones de
las páginas de datos dentro de cualquiera de los bloques de los
metabloques ilustrados, como ilustra la Figura 16, en un solo
bloque adicional 90 de la unidad de memoria 80, siempre que queden
páginas sin usar en el bloque 80. Si, por ejemplos, se actualizan a
la vez datos en tres páginas del bloque 86 y dos páginas del bloque
88, las cinco páginas de nuevos datos se escriben en el bloque 90.
De este modo se ahorra la utilización de un bloque de memoria,
aumentando efectivamente el número de bloques borrados disponibles
en un bloque. Esto ayuda a evitar, o al menos a posponer, el tiempo
en que se agota un inventario de bloques borrados. Si se actualizan
una o más páginas de cada uno de los cuatro bloques
85-88, todas las páginas de datos nuevos se
programan en un solo bloque 90, evitando vincular tres bloques
adicionales de memoria para realizar la actualización Si el número
de páginas de datos nuevos sobrepasa la capacidad de un bloque sin
usar, las páginas que el bloque 90 no puede aceptar se escribirán
en otro bloque sin usar que puede estar en la misma unidad 80 o una
de las otras
unidades 81-83.
unidades 81-83.
Claims (6)
1. Un método para sustituir nuevos datos por
datos reemplazados en un sistema de memoria no volátil con una
matriz de elementos de almacenamiento de memoria no volátil (400)
organizados en bloques (35,39), estando los bloques organizados en
páginas y conteniendo cada bloque el grupo más pequeño de elementos
de almacenamiento que puede borrarse; cuyo método comprende
escribir nuevos datos como páginas actualizadas en páginas de dicho
bloque, siendo dichos nuevos datos menores de todas las páginas
originales de otro de dichos bloques;
direccionar las páginas originales y las páginas
actualizadas con la misma dirección lógica; y leer y distinguir las
páginas actualizadas de las páginas originales, que se
caracteriza por el hecho de que dicha lectura es en relación
con el tiempo relativo de escritura en las páginas de dichos
bloques, leyendo las páginas de dicho bloque y a continuación de
dicho otro bloque en orden inverso del que han sido escritas las
páginas e ignora las páginas que tengan la misma dirección lógica
como páginas que ya ha leído.
2. Un método según la Reivindicación 1 donde las
páginas de bloques individuales de memoria del sistema de memoria
se programan en un orden designado.
3. Un método según la Reivindicación 1 o la
Reivindicación 2 que incluye el paso de accionar los elementos de
almacenamiento individuales de la memoria (400) con más de dos
estados de almacenamiento, almacenando más de un bit de datos en
cada elemento de almacenamiento y en donde la lectura de las
páginas de datos incluye la lectura de más de dos estados de
almacenamiento de los elementos de almacenamiento individuales de
la memoria.
4. Un sistema de memoria no volátil, que
comprende:
una matriz de elementos de almacenamiento de
memoria no volátil (400) organizados en bloques (35,39), estando
dichos bloques organizados en páginas, donde cada bloque contiene
el grupo más pequeño de elementos de almacenamiento que puede
borrarse; un mecanismo de programación que escribe en páginas de un
bloque una versión actualizada menor de cualquiera de las páginas
originales de dicho otro bloque; un mecanismo de direccionamiento
(401,402,450) que direcciona las páginas originales y las páginas
actualizadas con la misma dirección lógica; y un mecanismo de
lectura (404,450,454) que distingue las páginas actualizadas de las
páginas originales, que se caracteriza por el hecho de que
el mecanismo de lectura lee en relación con el tiempo relativo de
escritura en las páginas de dichos bloques, leyendo las páginas de
dicho bloque y a continuación de dicho otro bloque en orden inverso
del que han sido escritas las páginas e ignora las páginas que
tengan la misma dirección lógica como páginas que ya ha leído.
5. Un sistema de memoria según la
Reivindicación 4 donde los elementos de almacenamiento de memoria
incluyen puertas flotantes individuales.
6. Un sistema de memoria según la
Reivindicación 4 o la Reivindicación 5 formado dentro de una
tarjeta adjunta con contactos eléctricos para conectarla a un
sistema principal.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/766,436 US6763424B2 (en) | 2001-01-19 | 2001-01-19 | Partial block data programming and reading operations in a non-volatile memory |
US766436 | 2001-01-19 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2262782T3 true ES2262782T3 (es) | 2006-12-01 |
Family
ID=25076410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES02703078T Expired - Lifetime ES2262782T3 (es) | 2001-01-19 | 2002-01-07 | Operaciones de programacion y lectura de bloques de datos parciales en una memoria no volatil. |
Country Status (11)
Country | Link |
---|---|
US (6) | US6763424B2 (es) |
EP (4) | EP2953030A1 (es) |
JP (3) | JP4155824B2 (es) |
KR (2) | KR100944996B1 (es) |
CN (3) | CN1290021C (es) |
AT (1) | ATE327556T1 (es) |
AU (1) | AU2002236723A1 (es) |
DE (1) | DE60211653T2 (es) |
ES (1) | ES2262782T3 (es) |
TW (1) | TWI221217B (es) |
WO (1) | WO2002058074A2 (es) |
Families Citing this family (452)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657332A (en) * | 1992-05-20 | 1997-08-12 | Sandisk Corporation | Soft errors handling in EEPROM devices |
JP3215237B2 (ja) * | 1993-10-01 | 2001-10-02 | 富士通株式会社 | 記憶装置および記憶装置の書き込み/消去方法 |
KR100544175B1 (ko) * | 1999-05-08 | 2006-01-23 | 삼성전자주식회사 | 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법 |
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 |
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
WO2003005203A2 (en) * | 2001-07-03 | 2003-01-16 | Research In Motion Limited | System and method of object-oriented persistence |
US7108975B2 (en) * | 2001-09-21 | 2006-09-19 | Regents Of The University Of Michigan | Atlastin |
KR100449708B1 (ko) * | 2001-11-16 | 2004-09-22 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6871257B2 (en) | 2002-02-22 | 2005-03-22 | Sandisk Corporation | Pipelined parallel programming operation in a non-volatile memory system |
JP2004062554A (ja) * | 2002-07-30 | 2004-02-26 | Oki Electric Ind Co Ltd | フラッシュメモリの管理方法 |
JP4358111B2 (ja) * | 2002-08-29 | 2009-11-04 | パナソニック株式会社 | 半導体メモリ装置、及び、フラッシュメモリへのデータ書き込み方法 |
CN100483552C (zh) * | 2002-10-28 | 2009-04-29 | 桑迪士克股份有限公司 | 在非易失性存储系统中执行自动磨损平衡的方法 |
US7234036B1 (en) | 2002-10-28 | 2007-06-19 | Sandisk Corporation | Method and apparatus for resolving physical blocks associated with a common logical block |
US7254668B1 (en) * | 2002-10-28 | 2007-08-07 | Sandisk Corporation | Method and apparatus for grouping pages within a block |
US7039788B1 (en) | 2002-10-28 | 2006-05-02 | Sandisk Corporation | Method and apparatus for splitting a logical block |
DE10252059B3 (de) * | 2002-11-08 | 2004-04-15 | Infineon Technologies Ag | Verfahren zum Betreiben einer Speicheranordnung |
US7478248B2 (en) * | 2002-11-27 | 2009-01-13 | M-Systems Flash Disk Pioneers, Ltd. | Apparatus and method for securing data on a portable storage device |
EP1435576B1 (en) * | 2003-01-03 | 2013-03-20 | Austria Card Plastikkarten und Ausweissysteme GmbH | Method and apparatus for block-oriented memory management provided in smart card controllers |
US6944063B2 (en) | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
JP2004265162A (ja) * | 2003-03-03 | 2004-09-24 | Renesas Technology Corp | 記憶装置およびアドレス管理方法 |
KR100526178B1 (ko) * | 2003-03-31 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리 액세스 장치 및 방법 |
US20040228411A1 (en) * | 2003-05-12 | 2004-11-18 | Sony Corporation | Method and system for decoder clock control in presence of jitter |
US7117326B2 (en) * | 2003-06-26 | 2006-10-03 | Intel Corporation | Tracking modifications to a memory |
US6891740B2 (en) * | 2003-08-29 | 2005-05-10 | Hitachi Global Storage Technologies Netherlands B.V. | Method for speculative streaming data from a disk drive |
US7188228B1 (en) * | 2003-10-01 | 2007-03-06 | Sandisk Corporation | Hybrid mapping implementation within a non-volatile memory system |
US7173852B2 (en) * | 2003-10-03 | 2007-02-06 | Sandisk Corporation | Corrected data storage and handling methods |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
JP2005128771A (ja) * | 2003-10-23 | 2005-05-19 | Fujitsu Ltd | データファイルシステム、データアクセスサーバ、およびデータアクセスプログラム |
DE10349595B3 (de) * | 2003-10-24 | 2004-12-09 | Hyperstone Ag | Verfahren zum Schreiben von Speichersektoren in einem blockweise löschbaren Speicher |
KR100608602B1 (ko) * | 2003-12-10 | 2006-08-03 | 삼성전자주식회사 | 플래시 메모리, 이를 위한 사상 제어 장치 및 방법 |
JP2005190288A (ja) * | 2003-12-26 | 2005-07-14 | Tdk Corp | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
EP1704483A2 (en) * | 2003-12-30 | 2006-09-27 | SanDisk Corporation | Non-volatile memory and method with memory planes alignment |
US7383375B2 (en) * | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
KR100526188B1 (ko) * | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
US20050144516A1 (en) * | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US8504798B2 (en) * | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
DE102004005290B3 (de) * | 2004-02-03 | 2005-07-21 | Giesecke & Devrient Gmbh | Verfahren und Vorrichtung zur Absicherung von Daten in einem nichtflüchtigen Datenspeicher |
US7136973B2 (en) | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US7127549B2 (en) | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
KR100526190B1 (ko) * | 2004-02-06 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 재사상 방법 |
US7529904B2 (en) * | 2004-03-31 | 2009-05-05 | International Business Machines Corporation | Storing location identifier in array and array pointer in data structure for write process management |
US7325090B2 (en) | 2004-04-29 | 2008-01-29 | Sandisk Il Ltd. | Refreshing data stored in a flash memory |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US8429313B2 (en) * | 2004-05-27 | 2013-04-23 | Sandisk Technologies Inc. | Configurable ready/busy control |
JP4253272B2 (ja) | 2004-05-27 | 2009-04-08 | 株式会社東芝 | メモリカード、半導体装置、及び半導体メモリの制御方法 |
US7395384B2 (en) | 2004-07-21 | 2008-07-01 | Sandisk Corproation | Method and apparatus for maintaining data on non-volatile memory systems |
US8607016B2 (en) * | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US8375146B2 (en) | 2004-08-09 | 2013-02-12 | SanDisk Technologies, Inc. | Ring bus structure and its use in flash memory systems |
JP3942612B2 (ja) * | 2004-09-10 | 2007-07-11 | 東京エレクトロンデバイス株式会社 | 記憶装置、メモリ管理方法及びプログラム |
JP4586469B2 (ja) * | 2004-09-15 | 2010-11-24 | ソニー株式会社 | メモリ制御装置、メモリ制御方法、プログラム |
KR100624960B1 (ko) * | 2004-10-05 | 2006-09-15 | 에스티마이크로일렉트로닉스 엔.브이. | 반도체 메모리 장치 및 이의 패키지 및 이를 이용한메모리 카드 |
US7441067B2 (en) | 2004-11-15 | 2008-10-21 | Sandisk Corporation | Cyclic flash memory wear leveling |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7315916B2 (en) * | 2004-12-16 | 2008-01-01 | Sandisk Corporation | Scratch pad block |
US7386655B2 (en) * | 2004-12-16 | 2008-06-10 | Sandisk Corporation | Non-volatile memory and method with improved indexing for scratch pad and update blocks |
US7412560B2 (en) * | 2004-12-16 | 2008-08-12 | Sandisk Corporation | Non-volatile memory and method with multi-stream updating |
US7395404B2 (en) * | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
US7366826B2 (en) * | 2004-12-16 | 2008-04-29 | Sandisk Corporation | Non-volatile memory and method with multi-stream update tracking |
US7409473B2 (en) | 2004-12-21 | 2008-08-05 | Sandisk Corporation | Off-chip data relocation |
KR100669342B1 (ko) * | 2004-12-21 | 2007-01-16 | 삼성전자주식회사 | 낸드 플래시 메모리 장치의 프로그램 방법 |
US7849381B2 (en) * | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
KR100684887B1 (ko) * | 2005-02-04 | 2007-02-20 | 삼성전자주식회사 | 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법 |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7212440B2 (en) | 2004-12-30 | 2007-05-01 | Sandisk Corporation | On-chip data grouping and alignment |
KR100698655B1 (ko) * | 2005-01-04 | 2007-03-23 | 주식회사 팬택앤큐리텔 | 이동통신 단말기의 파일 업데이트 시스템과, efs 영역헤더 손실로 인한 치명적인 에러를 방지하는 이동통신단말기의 부팅 관리 시스템과, 이동통신 단말기의 파일업데이트 방법 및 efs 영역 헤더 손실로 인한 치명적인에러를 방지하는 이동통신 단말기의 부팅 방법 |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US7877539B2 (en) * | 2005-02-16 | 2011-01-25 | Sandisk Corporation | Direct data file storage in flash memories |
US20060184719A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct data file storage implementation techniques in flash memories |
US20060184718A1 (en) * | 2005-02-16 | 2006-08-17 | Sinclair Alan W | Direct file data programming and deletion in flash memories |
US9104315B2 (en) | 2005-02-04 | 2015-08-11 | Sandisk Technologies Inc. | Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
EP1712984A1 (en) * | 2005-04-15 | 2006-10-18 | Deutsche Thomson-Brandt Gmbh | Method and system for accessing logical data blocks in a storage system that includes multiple memories which are connected to at least one common bus |
US9384818B2 (en) | 2005-04-21 | 2016-07-05 | Violin Memory | Memory power management |
KR101271245B1 (ko) | 2005-04-21 | 2013-06-07 | 바이올린 메모리 인코포레이티드 | 상호접속 시스템 |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
JP5130646B2 (ja) | 2005-06-06 | 2013-01-30 | ソニー株式会社 | 記憶装置 |
US7797479B2 (en) * | 2005-06-30 | 2010-09-14 | Intel Corporation | Technique to write to a non-volatile memory |
US7558906B2 (en) | 2005-08-03 | 2009-07-07 | Sandisk Corporation | Methods of managing blocks in nonvolatile memory |
US7949845B2 (en) * | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7984084B2 (en) * | 2005-08-03 | 2011-07-19 | SanDisk Technologies, Inc. | Non-volatile memory with scheduled reclaim operations |
US7552271B2 (en) | 2005-08-03 | 2009-06-23 | Sandisk Corporation | Nonvolatile memory with block management |
US7627733B2 (en) | 2005-08-03 | 2009-12-01 | Sandisk Corporation | Method and system for dual mode access for storage devices |
US7480766B2 (en) * | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7669003B2 (en) * | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
KR100714873B1 (ko) * | 2005-09-06 | 2007-05-07 | 삼성전자주식회사 | 비휘발성 메모리에서 데이터 갱신 방법 및 이를 위한 장치 |
US8429326B2 (en) | 2005-09-12 | 2013-04-23 | Mediatek Inc. | Method and system for NAND-flash identification without reading device ID table |
CN100375026C (zh) * | 2005-09-13 | 2008-03-12 | 联想(北京)有限公司 | 快速存储设备软件的安装/更新方法 |
US20070089023A1 (en) * | 2005-09-30 | 2007-04-19 | Sigmatel, Inc. | System and method for system resource access |
US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US7814262B2 (en) * | 2005-10-13 | 2010-10-12 | Sandisk Corporation | Memory system storing transformed units of data in fixed sized storage blocks |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7509471B2 (en) * | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US7634585B2 (en) * | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
US20070106842A1 (en) * | 2005-11-04 | 2007-05-10 | Conley Kevin M | Enhanced first level storage caching methods using nonvolatile memory |
US7379330B2 (en) * | 2005-11-08 | 2008-05-27 | Sandisk Corporation | Retargetable memory cell redundancy methods |
US7730453B2 (en) * | 2005-12-13 | 2010-06-01 | Microsoft Corporation | Runtime detection for invalid use of zero-length memory allocations |
US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
US20070156998A1 (en) * | 2005-12-21 | 2007-07-05 | Gorobets Sergey A | Methods for memory allocation in non-volatile memories with a directly mapped file storage system |
US7769978B2 (en) * | 2005-12-21 | 2010-08-03 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
US20070143566A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with data alignment in a directly mapped file storage system |
EP1966701A2 (en) * | 2005-12-21 | 2008-09-10 | Nxp B.V. | Memory with block-erasable locations |
US20070143378A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Non-volatile memories with adaptive file handling in a directly mapped file storage system |
US20070143567A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for data alignment in non-volatile memories with a directly mapped file storage system |
US7793068B2 (en) | 2005-12-21 | 2010-09-07 | Sandisk Corporation | Dual mode access for non-volatile storage devices |
US20070143561A1 (en) * | 2005-12-21 | 2007-06-21 | Gorobets Sergey A | Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system |
US7747837B2 (en) | 2005-12-21 | 2010-06-29 | Sandisk Corporation | Method and system for accessing non-volatile storage devices |
WO2007072317A2 (en) | 2005-12-21 | 2007-06-28 | Nxp B.V. | Non-volatile memory with block erasable locations |
US7536627B2 (en) * | 2005-12-27 | 2009-05-19 | Sandisk Corporation | Storing downloadable firmware on bulk media |
US7546515B2 (en) * | 2005-12-27 | 2009-06-09 | Sandisk Corporation | Method of storing downloadable firmware on bulk media |
KR100772863B1 (ko) * | 2006-01-13 | 2007-11-02 | 삼성전자주식회사 | 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치 |
US7609561B2 (en) * | 2006-01-18 | 2009-10-27 | Apple Inc. | Disabling faulty flash memory dies |
US7793059B2 (en) * | 2006-01-18 | 2010-09-07 | Apple Inc. | Interleaving policies for flash memory |
US7752391B2 (en) * | 2006-01-20 | 2010-07-06 | Apple Inc. | Variable caching policy system and method |
US20070174641A1 (en) * | 2006-01-25 | 2007-07-26 | Cornwell Michael J | Adjusting power supplies for data storage devices |
US7702935B2 (en) * | 2006-01-25 | 2010-04-20 | Apple Inc. | Reporting flash memory operating voltages |
TWI311327B (en) * | 2006-01-26 | 2009-06-21 | Nuvoton Technology Corporatio | Method for page random write and read in the block of flash memory |
US7912994B2 (en) * | 2006-01-27 | 2011-03-22 | Apple Inc. | Reducing connection time for mass storage class peripheral by internally prefetching file data into local cache in response to connection to host |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
US7594043B2 (en) * | 2006-01-27 | 2009-09-22 | Apple Inc. | Reducing dismount time for mass storage class devices |
JP2007280108A (ja) * | 2006-04-07 | 2007-10-25 | Sony Corp | 記憶媒体制御装置、記憶媒体制御方法、プログラム |
US7849302B2 (en) * | 2006-04-10 | 2010-12-07 | Apple Inc. | Direct boot arrangement using a NAND flash memory |
US7467253B2 (en) * | 2006-04-13 | 2008-12-16 | Sandisk Corporation | Cycle count storage systems |
US7451264B2 (en) * | 2006-04-13 | 2008-11-11 | Sandisk Corporation | Cycle count storage methods |
US7639531B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Dynamic cell bit resolution |
US7568135B2 (en) | 2006-05-15 | 2009-07-28 | Apple Inc. | Use of alternative value in cell detection |
US7639542B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Maintenance operations for multi-level data storage cells |
US7852690B2 (en) * | 2006-05-15 | 2010-12-14 | Apple Inc. | Multi-chip package for a flash memory |
US7701797B2 (en) * | 2006-05-15 | 2010-04-20 | Apple Inc. | Two levels of voltage regulation supplied for logic and data programming voltage of a memory device |
US7613043B2 (en) * | 2006-05-15 | 2009-11-03 | Apple Inc. | Shifting reference values to account for voltage sag |
US8000134B2 (en) | 2006-05-15 | 2011-08-16 | Apple Inc. | Off-die charge pump that supplies multiple flash devices |
US7551486B2 (en) * | 2006-05-15 | 2009-06-23 | Apple Inc. | Iterative memory cell charging based on reference cell value |
US7911834B2 (en) * | 2006-05-15 | 2011-03-22 | Apple Inc. | Analog interface for a flash memory die |
US7511646B2 (en) * | 2006-05-15 | 2009-03-31 | Apple Inc. | Use of 8-bit or higher A/D for NAND cell value |
JP4153535B2 (ja) * | 2006-05-30 | 2008-09-24 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
US7567461B2 (en) * | 2006-08-18 | 2009-07-28 | Micron Technology, Inc. | Method and system for minimizing number of programming pulses used to program rows of non-volatile memory cells |
US8001314B2 (en) | 2006-09-12 | 2011-08-16 | Apple Inc. | Storing a driver for controlling a memory |
US7593259B2 (en) * | 2006-09-13 | 2009-09-22 | Mosaid Technologies Incorporated | Flash multi-level threshold distribution scheme |
US7696044B2 (en) * | 2006-09-19 | 2010-04-13 | Sandisk Corporation | Method of making an array of non-volatile memory cells with floating gates formed of spacers in substrate trenches |
US7646054B2 (en) * | 2006-09-19 | 2010-01-12 | Sandisk Corporation | Array of non-volatile memory cells with floating gates formed of spacers in substrate trenches |
US7716538B2 (en) * | 2006-09-27 | 2010-05-11 | Sandisk Corporation | Memory with cell population distribution assisted read margining |
US7886204B2 (en) * | 2006-09-27 | 2011-02-08 | Sandisk Corporation | Methods of cell population distribution assisted read margining |
US20080091901A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Method for non-volatile memory with worst-case control data management |
US20080091871A1 (en) * | 2006-10-12 | 2008-04-17 | Alan David Bennett | Non-volatile memory with worst-case control data management |
KR100771521B1 (ko) | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US8074011B2 (en) * | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
JP2008152464A (ja) * | 2006-12-15 | 2008-07-03 | Toshiba Corp | 記憶装置 |
KR101354152B1 (ko) * | 2006-12-18 | 2014-01-27 | 삼성전자주식회사 | 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치 |
US7554855B2 (en) * | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US7800161B2 (en) * | 2006-12-21 | 2010-09-21 | Sandisk Corporation | Flash NAND memory cell array with charge storage elements positioned in trenches |
US7642160B2 (en) * | 2006-12-21 | 2010-01-05 | Sandisk Corporation | Method of forming a flash NAND memory cell array with charge storage elements positioned in trenches |
US8370561B2 (en) * | 2006-12-24 | 2013-02-05 | Sandisk Il Ltd. | Randomizing for suppressing errors in a flash memory |
US8127200B2 (en) * | 2006-12-24 | 2012-02-28 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US8046522B2 (en) * | 2006-12-26 | 2011-10-25 | SanDisk Technologies, Inc. | Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks |
US20080155175A1 (en) * | 2006-12-26 | 2008-06-26 | Sinclair Alan W | Host System That Manages a LBA Interface With Flash Memory |
US8209461B2 (en) | 2006-12-26 | 2012-06-26 | Sandisk Technologies Inc. | Configuration of host LBA interface with flash memory |
US7917686B2 (en) * | 2006-12-26 | 2011-03-29 | Sandisk Corporation | Host system with direct data file interface configurability |
US8166267B2 (en) * | 2006-12-26 | 2012-04-24 | Sandisk Technologies Inc. | Managing a LBA interface in a direct data file memory system |
US7739444B2 (en) | 2006-12-26 | 2010-06-15 | Sandisk Corporation | System using a direct data file system with a continuous logical address space interface |
KR100825802B1 (ko) * | 2007-02-13 | 2008-04-29 | 삼성전자주식회사 | 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법 |
US7577059B2 (en) * | 2007-02-27 | 2009-08-18 | Mosaid Technologies Incorporated | Decoding control with address transition detection in page erase function |
US20090088088A1 (en) * | 2007-02-28 | 2009-04-02 | Crick Information Technologies | Personal Information Communication Device and Method |
US20080209079A1 (en) * | 2007-02-28 | 2008-08-28 | Ty Joseph Caswell | Personal information communication device and method |
US7804718B2 (en) * | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
US7613051B2 (en) | 2007-03-14 | 2009-11-03 | Apple Inc. | Interleaving charge pumps for programmable memories |
US7814304B2 (en) * | 2007-03-14 | 2010-10-12 | Apple Inc. | Switching drivers between processors |
US7573773B2 (en) * | 2007-03-28 | 2009-08-11 | Sandisk Corporation | Flash memory with data refresh triggered by controlled scrub data reads |
US7477547B2 (en) * | 2007-03-28 | 2009-01-13 | Sandisk Corporation | Flash memory refresh techniques triggered by controlled scrub data reads |
US9632870B2 (en) * | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US11010076B2 (en) | 2007-03-29 | 2021-05-18 | Violin Systems Llc | Memory system with multiple striping of raid groups and method for performing the same |
US7913032B1 (en) | 2007-04-25 | 2011-03-22 | Apple Inc. | Initiating memory wear leveling |
US7870327B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Controlling memory operations using a driver and flash memory type tables |
US20080288712A1 (en) | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
US7996599B2 (en) | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US7869277B1 (en) | 2007-04-25 | 2011-01-11 | Apple Inc. | Managing data writing to memories |
JP4702703B2 (ja) * | 2007-04-26 | 2011-06-15 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8332574B2 (en) * | 2007-04-30 | 2012-12-11 | Sandisk Il Ltd. | Method for efficient storage of metadata in flash memory |
US7577029B2 (en) | 2007-05-04 | 2009-08-18 | Mosaid Technologies Incorporated | Multi-level cell access buffer with dual function |
US8073648B2 (en) * | 2007-05-14 | 2011-12-06 | Sandisk Il Ltd. | Measuring threshold voltage distribution in memory using an aggregate characteristic |
US20080294813A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
WO2008146475A1 (ja) | 2007-06-01 | 2008-12-04 | Panasonic Corporation | 記録装置 |
US8713283B2 (en) * | 2007-06-08 | 2014-04-29 | Sandisk Technologies Inc. | Method of interfacing a host operating through a logical address space with a direct file storage medium |
US20080307156A1 (en) * | 2007-06-08 | 2008-12-11 | Sinclair Alan W | System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium |
US8239639B2 (en) * | 2007-06-08 | 2012-08-07 | Sandisk Technologies Inc. | Method and apparatus for providing data type and host file information to a mass storage system |
US8504784B2 (en) * | 2007-06-27 | 2013-08-06 | Sandisk Technologies Inc. | Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system |
JP5087347B2 (ja) * | 2007-09-06 | 2012-12-05 | 株式会社日立製作所 | 半導体記憶装置及び半導体記憶装置の制御方法 |
US8365040B2 (en) | 2007-09-20 | 2013-01-29 | Densbits Technologies Ltd. | Systems and methods for handling immediate data errors in flash memory |
US8566504B2 (en) * | 2007-09-28 | 2013-10-22 | Sandisk Technologies Inc. | Dynamic metablocks |
US8694715B2 (en) | 2007-10-22 | 2014-04-08 | Densbits Technologies Ltd. | Methods for adaptively programming flash memory devices and flash memory systems incorporating same |
JP4535117B2 (ja) | 2007-11-06 | 2010-09-01 | ソニー株式会社 | メモリ装置、メモリ管理方法、およびプログラム |
US8296498B2 (en) * | 2007-11-13 | 2012-10-23 | Sandisk Technologies Inc. | Method and system for virtual fast access non-volatile RAM |
US7613045B2 (en) * | 2007-11-26 | 2009-11-03 | Sandisk Il, Ltd. | Operation sequence and commands for measuring threshold voltage distribution in memory |
WO2009072100A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Systems and methods for temporarily retiring memory portions |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
WO2009074978A2 (en) | 2007-12-12 | 2009-06-18 | Densbits Technologies Ltd. | Systems and methods for error correction and decoding on multi-level physical media |
US8880483B2 (en) * | 2007-12-21 | 2014-11-04 | Sandisk Technologies Inc. | System and method for implementing extensions to intelligently manage resources of a mass storage system |
US20090164745A1 (en) * | 2007-12-21 | 2009-06-25 | Alan Sinclair | System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System |
US7934052B2 (en) | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
TW200931425A (en) * | 2008-01-11 | 2009-07-16 | Phison Electronics Corp | Method for managing flash memory blocks and controller using the same |
WO2009097681A1 (en) * | 2008-02-04 | 2009-08-13 | Mosaid Technologies Incorporated | Flexible memory operations in nand flash devices |
US8068365B2 (en) * | 2008-02-04 | 2011-11-29 | Mosaid Technologies Incorporated | Non-volatile memory device having configurable page size |
JP2009199211A (ja) * | 2008-02-20 | 2009-09-03 | Sony Computer Entertainment Inc | メモリ制御方法及び装置、コンピュータプログラム |
CN101978361B (zh) | 2008-02-20 | 2013-06-05 | 索尼电脑娱乐公司 | 存储器控制方法以及装置、存储器访问控制方法 |
JP4675985B2 (ja) | 2008-03-01 | 2011-04-27 | 株式会社東芝 | メモリシステム |
JP2009211234A (ja) * | 2008-03-01 | 2009-09-17 | Toshiba Corp | メモリシステム |
US8972472B2 (en) | 2008-03-25 | 2015-03-03 | Densbits Technologies Ltd. | Apparatus and methods for hardware-efficient unbiased rounding |
US8695087B2 (en) * | 2008-04-04 | 2014-04-08 | Sandisk Il Ltd. | Access control for a memory device |
US8266366B2 (en) | 2008-04-11 | 2012-09-11 | SanDisk Technologies, Inc. | Memory device operable in read-only and write-once, read-many (WORM) modes of operation |
KR100982440B1 (ko) | 2008-06-12 | 2010-09-15 | (주)명정보기술 | 단일 플래시 메모리의 데이터 관리시스템 |
US7848144B2 (en) * | 2008-06-16 | 2010-12-07 | Sandisk Corporation | Reverse order page writing in flash memories |
JP5180726B2 (ja) * | 2008-07-31 | 2013-04-10 | 株式会社日立製作所 | 記憶装置およびデータ書き込み制御方法 |
US20100037102A1 (en) * | 2008-08-08 | 2010-02-11 | Seagate Technology Llc | Fault-tolerant non-volatile buddy memory structure |
US8438325B2 (en) * | 2008-10-09 | 2013-05-07 | Cadence Design Systems, Inc. | Method and apparatus for improving small write performance in a non-volatile memory |
US8650355B2 (en) * | 2008-10-15 | 2014-02-11 | Seagate Technology Llc | Non-volatile resistive sense memory on-chip cache |
US7830700B2 (en) * | 2008-11-12 | 2010-11-09 | Seagate Technology Llc | Resistive sense memory array with partial block update capability |
JP5193822B2 (ja) * | 2008-11-19 | 2013-05-08 | 株式会社東芝 | 追記型メモリデバイス |
US8205063B2 (en) * | 2008-12-30 | 2012-06-19 | Sandisk Technologies Inc. | Dynamic mapping of logical ranges to write blocks |
US8452940B2 (en) * | 2008-12-30 | 2013-05-28 | Sandisk Technologies Inc. | Optimized memory management for random and sequential data writing |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8244960B2 (en) | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
JP4666081B2 (ja) * | 2009-02-09 | 2011-04-06 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4844639B2 (ja) * | 2009-02-19 | 2011-12-28 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8489801B2 (en) * | 2009-03-04 | 2013-07-16 | Henry F. Huang | Non-volatile memory with hybrid index tag array |
JP5341584B2 (ja) * | 2009-03-17 | 2013-11-13 | 株式会社東芝 | コントローラ、及びメモリシステム |
US8819385B2 (en) | 2009-04-06 | 2014-08-26 | Densbits Technologies Ltd. | Device and method for managing a flash memory |
US8458574B2 (en) | 2009-04-06 | 2013-06-04 | Densbits Technologies Ltd. | Compact chien-search based decoding apparatus and method |
US8832353B2 (en) * | 2009-04-07 | 2014-09-09 | Sandisk Technologies Inc. | Host stop-transmission handling |
KR101556779B1 (ko) * | 2009-04-17 | 2015-10-02 | 삼성전자주식회사 | 저장 장치의 액세스 방법 |
US8296503B2 (en) * | 2009-05-26 | 2012-10-23 | Mediatek Inc. | Data updating and recovering methods for a non-volatile memory array |
CN102576330B (zh) * | 2009-06-12 | 2015-01-28 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
US8307241B2 (en) * | 2009-06-16 | 2012-11-06 | Sandisk Technologies Inc. | Data recovery in multi-level cell nonvolatile memory |
US20110035540A1 (en) * | 2009-08-10 | 2011-02-10 | Adtron, Inc. | Flash blade system architecture and method |
TWI425513B (zh) * | 2009-08-13 | 2014-02-01 | Silicon Motion Inc | 識別快閃記憶體中區塊之資料頁的方法以及相關之記憶裝置 |
US8130543B2 (en) * | 2009-08-13 | 2012-03-06 | Macronix International Co., Ltd. | Method and apparatus for increasing memory programming efficiency through dynamic switching of sense amplifiers |
KR20110018157A (ko) * | 2009-08-17 | 2011-02-23 | 삼성전자주식회사 | 플래시 메모리 장치의 액세스 방법 |
US9330767B1 (en) | 2009-08-26 | 2016-05-03 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory module and method for programming a page of flash memory cells |
US8995197B1 (en) | 2009-08-26 | 2015-03-31 | Densbits Technologies Ltd. | System and methods for dynamic erase and program control for flash memory device memories |
JP5377175B2 (ja) * | 2009-09-08 | 2013-12-25 | 株式会社東芝 | コントローラ、及びデータ記憶装置 |
US8255655B2 (en) | 2009-10-02 | 2012-08-28 | Sandisk Technologies Inc. | Authentication and securing of write-once, read-many (WORM) memory devices |
US8730729B2 (en) * | 2009-10-15 | 2014-05-20 | Densbits Technologies Ltd. | Systems and methods for averaging error rates in non-volatile devices and storage systems |
US8724387B2 (en) | 2009-10-22 | 2014-05-13 | Densbits Technologies Ltd. | Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages |
US8364929B2 (en) * | 2009-10-23 | 2013-01-29 | Seagate Technology Llc | Enabling spanning for a storage device |
US8745353B2 (en) * | 2009-10-23 | 2014-06-03 | Seagate Technology Llc | Block boundary resolution for mismatched logical and physical block sizes |
US8977802B2 (en) | 2009-11-11 | 2015-03-10 | Panasonic Intellectual Property Management Co., Ltd. | Access device, information recording device, controller, real time information recording system, access method, and program |
EP2507710B1 (en) * | 2009-11-30 | 2018-10-31 | Hewlett-Packard Enterprise Development LP | Remapping for memory wear leveling |
US9037777B2 (en) | 2009-12-22 | 2015-05-19 | Densbits Technologies Ltd. | Device, system, and method for reducing program/read disturb in flash arrays |
TWI446349B (zh) * | 2010-03-04 | 2014-07-21 | Phison Electronics Corp | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 |
CN103473182B (zh) * | 2010-03-12 | 2016-05-11 | 群联电子股份有限公司 | 非挥发性存储器存取方法及非挥发性存储器控制器 |
US8745317B2 (en) | 2010-04-07 | 2014-06-03 | Densbits Technologies Ltd. | System and method for storing information in a multi-level cell memory |
US8886664B2 (en) | 2010-05-13 | 2014-11-11 | Microsoft Corporation | Decreasing duplicates and loops in an activity record |
US8381018B2 (en) | 2010-05-21 | 2013-02-19 | Mediatek Inc. | Method for data recovery for flash devices |
US8838878B2 (en) * | 2010-06-01 | 2014-09-16 | Greenliant Llc | Method of writing to a NAND memory block based file system with log based buffering |
KR20110138076A (ko) * | 2010-06-18 | 2011-12-26 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 쓰기 방법 |
US8626986B2 (en) | 2010-06-30 | 2014-01-07 | Sandisk Technologies Inc. | Pre-emptive garbage collection of memory blocks |
US8621321B2 (en) | 2010-07-01 | 2013-12-31 | Densbits Technologies Ltd. | System and method for multi-dimensional encoding and decoding |
JP4818453B1 (ja) * | 2010-07-30 | 2011-11-16 | 株式会社東芝 | 電子機器およびデータ読み出し方法 |
US8964464B2 (en) | 2010-08-24 | 2015-02-24 | Densbits Technologies Ltd. | System and method for accelerated sampling |
US8850161B2 (en) * | 2010-10-13 | 2014-09-30 | Riverbed Technology, Inc. | Method of improving performance of a data storage device |
US9063878B2 (en) | 2010-11-03 | 2015-06-23 | Densbits Technologies Ltd. | Method, system and computer readable medium for copy back |
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 |
US20120117305A1 (en) * | 2010-11-08 | 2012-05-10 | Greenliant Llc | Method Of Storing Blocks Of Data In A Plurality Of Memory Devices For High Speed Sequential Read, A Memory Controller And A Memory System |
US8850100B2 (en) | 2010-12-07 | 2014-09-30 | Densbits Technologies Ltd. | Interleaving codeword portions between multiple planes and/or dies of a flash memory device |
US8472280B2 (en) | 2010-12-21 | 2013-06-25 | Sandisk Technologies Inc. | Alternate page by page programming scheme |
US8626989B2 (en) * | 2011-02-02 | 2014-01-07 | Micron Technology, Inc. | Control arrangements and methods for accessing block oriented nonvolatile memory |
US8909851B2 (en) | 2011-02-08 | 2014-12-09 | SMART Storage Systems, Inc. | Storage control system with change logging mechanism and method of operation thereof |
US8935466B2 (en) | 2011-03-28 | 2015-01-13 | SMART Storage Systems, Inc. | Data storage system with non-volatile memory and method of operation thereof |
US8990665B1 (en) | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US9324433B2 (en) * | 2011-04-25 | 2016-04-26 | Microsoft Technology Licensing, Llc | Intelligent flash reprogramming |
TWI442230B (zh) * | 2011-04-28 | 2014-06-21 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US9372792B1 (en) | 2011-05-12 | 2016-06-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US9195592B1 (en) | 2011-05-12 | 2015-11-24 | Densbits Technologies Ltd. | Advanced management of a non-volatile memory |
US9396106B2 (en) | 2011-05-12 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Advanced management of a non-volatile memory |
US8996790B1 (en) | 2011-05-12 | 2015-03-31 | Densbits Technologies Ltd. | System and method for flash memory management |
US9110785B1 (en) | 2011-05-12 | 2015-08-18 | Densbits Technologies Ltd. | Ordered merge of data sectors that belong to memory space portions |
US20120297256A1 (en) * | 2011-05-20 | 2012-11-22 | Qualcomm Incorporated | Large Ram Cache |
US8719648B2 (en) | 2011-07-27 | 2014-05-06 | International Business Machines Corporation | Interleaving of memory repair data compression and fuse programming operations in single fusebay architecture |
US8467260B2 (en) | 2011-08-05 | 2013-06-18 | International Business Machines Corporation | Structure and method for storing multiple repair pass data into a fusebay |
US8484543B2 (en) | 2011-08-08 | 2013-07-09 | International Business Machines Corporation | Fusebay controller structure, system, and method |
KR101438716B1 (ko) | 2011-08-09 | 2014-09-11 | 엘에스아이 코포레이션 | I/o 디바이스 및 컴퓨팅 호스팅 상호동작 |
US20130042051A1 (en) * | 2011-08-10 | 2013-02-14 | Skymedi Corporation | Program method for a non-volatile memory |
US9098399B2 (en) | 2011-08-31 | 2015-08-04 | SMART Storage Systems, Inc. | Electronic system with storage management mechanism and method of operation thereof |
US8537627B2 (en) | 2011-09-01 | 2013-09-17 | International Business Machines Corporation | Determining fusebay storage element usage |
US9021319B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Non-volatile memory management system with load leveling and method of operation thereof |
US9063844B2 (en) | 2011-09-02 | 2015-06-23 | SMART Storage Systems, Inc. | Non-volatile memory management system with time measure mechanism and method of operation thereof |
US9021231B2 (en) | 2011-09-02 | 2015-04-28 | SMART Storage Systems, Inc. | Storage control system with write amplification control mechanism and method of operation thereof |
US9477590B2 (en) * | 2011-09-16 | 2016-10-25 | Apple Inc. | Weave sequence counter for non-volatile memory systems |
US9588883B2 (en) * | 2011-09-23 | 2017-03-07 | Conversant Intellectual Property Management Inc. | Flash memory system |
US8949517B2 (en) | 2011-10-05 | 2015-02-03 | Lsi Corporation | Self-journaling and hierarchical consistency for non-volatile storage |
TWI454911B (zh) * | 2011-10-12 | 2014-10-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US8687421B2 (en) | 2011-11-21 | 2014-04-01 | Sandisk Technologies Inc. | Scrub techniques for use with dynamic read |
KR101893145B1 (ko) | 2011-12-06 | 2018-10-05 | 삼성전자주식회사 | 메모리 시스템들 및 그것들의 블록 복사 방법들 |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US8843711B1 (en) * | 2011-12-28 | 2014-09-23 | Netapp, Inc. | Partial write without read-modify |
US9329989B2 (en) * | 2011-12-30 | 2016-05-03 | SanDisk Technologies, Inc. | System and method for pre-interleaving sequential data |
US8775722B2 (en) | 2011-12-30 | 2014-07-08 | Sandisk Technologies Inc. | Storing data in parallel in a flash storage device using on chip page shifting between planes |
US9239781B2 (en) | 2012-02-07 | 2016-01-19 | SMART Storage Systems, Inc. | Storage control system with erase block mechanism and method of operation thereof |
US8947941B2 (en) | 2012-02-09 | 2015-02-03 | Densbits Technologies Ltd. | State responsive operations relating to flash memory cells |
US8996788B2 (en) | 2012-02-09 | 2015-03-31 | Densbits Technologies Ltd. | Configurable flash interface |
US9298252B2 (en) | 2012-04-17 | 2016-03-29 | SMART Storage Systems, Inc. | Storage control system with power down mechanism and method of operation thereof |
US8996793B1 (en) | 2012-04-24 | 2015-03-31 | Densbits Technologies Ltd. | System, method and computer readable medium for generating soft information |
US8838937B1 (en) | 2012-05-23 | 2014-09-16 | Densbits Technologies Ltd. | Methods, systems and computer readable medium for writing and reading data |
US8879325B1 (en) | 2012-05-30 | 2014-11-04 | Densbits Technologies Ltd. | System, method and computer program product for processing read threshold information and for reading a flash memory module |
US8949689B2 (en) | 2012-06-11 | 2015-02-03 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US9122581B2 (en) | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | Data versioning in solid state memory |
US9116793B2 (en) | 2012-06-12 | 2015-08-25 | International Business Machines Corporation | Maintaining versions of data in solid state memory |
US9135161B2 (en) | 2012-06-12 | 2015-09-15 | International Business Machines Corporation | Flash translation layer system for maintaining data versions in solid state memory |
US9122582B2 (en) | 2012-06-12 | 2015-09-01 | International Business Machines Corporation | File system for maintaining data versions in solid state memory |
JP5843010B2 (ja) * | 2012-06-25 | 2016-01-13 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム |
US8750045B2 (en) | 2012-07-27 | 2014-06-10 | Sandisk Technologies Inc. | Experience count dependent program algorithm for flash memory |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9921954B1 (en) | 2012-08-27 | 2018-03-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for split flash memory management between host and storage controller |
DE102012022728A1 (de) * | 2012-11-21 | 2014-05-22 | Unify Gmbh & Co. Kg | Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens |
US9368225B1 (en) | 2012-11-21 | 2016-06-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Determining read thresholds based upon read error direction statistics |
CN103001863B (zh) * | 2012-11-27 | 2015-09-09 | 中国科学院声学研究所 | 数据包快速复制方法、数据包读取方法 |
US9047172B2 (en) | 2012-11-29 | 2015-06-02 | Intel Corporation | Adaptive power control of memory map storage devices |
US9671962B2 (en) | 2012-11-30 | 2017-06-06 | Sandisk Technologies Llc | Storage control system with data management mechanism of parity and method of operation thereof |
US9195584B2 (en) | 2012-12-10 | 2015-11-24 | Sandisk Technologies Inc. | Dynamic block linking with individually configured plane parameters |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
TWI497292B (zh) * | 2013-01-09 | 2015-08-21 | Memoright Corp | A Method of Finding System Data Based on Index Block |
US9076545B2 (en) | 2013-01-17 | 2015-07-07 | Sandisk Tecnologies Inc. | Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9123445B2 (en) | 2013-01-22 | 2015-09-01 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US8913428B2 (en) | 2013-01-25 | 2014-12-16 | Sandisk Technologies Inc. | Programming non-volatile storage system with multiple memory die |
US9026757B2 (en) * | 2013-01-25 | 2015-05-05 | Sandisk Technologies Inc. | Non-volatile memory programming data preservation |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9183137B2 (en) | 2013-02-27 | 2015-11-10 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US8972776B2 (en) | 2013-03-06 | 2015-03-03 | Seagate Technology, Llc | Partial R-block recycling |
US9470720B2 (en) | 2013-03-08 | 2016-10-18 | Sandisk Technologies Llc | Test system with localized heating and method of manufacture thereof |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9037902B2 (en) | 2013-03-15 | 2015-05-19 | Sandisk Technologies Inc. | Flash memory techniques for recovering from write interrupt resulting from voltage fault |
US9465732B2 (en) | 2013-03-15 | 2016-10-11 | Sandisk Technologies Llc | Binning of blocks for dynamic linking |
US9043780B2 (en) | 2013-03-27 | 2015-05-26 | SMART Storage Systems, Inc. | Electronic system with system modification control mechanism and method of operation thereof |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9543025B2 (en) | 2013-04-11 | 2017-01-10 | Sandisk Technologies Llc | Storage control system with power-off time estimation mechanism and method of operation thereof |
US10546648B2 (en) | 2013-04-12 | 2020-01-28 | Sandisk Technologies Llc | Storage control system with data management mechanism and method of operation thereof |
CN104103309B (zh) * | 2013-04-15 | 2017-11-17 | 旺宏电子股份有限公司 | Nand阵列的操作方法及计算机可读取的非暂时性储存媒体 |
US9213633B2 (en) | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
US9136876B1 (en) | 2013-06-13 | 2015-09-15 | Densbits Technologies Ltd. | Size limited multi-dimensional decoding |
US9898056B2 (en) | 2013-06-19 | 2018-02-20 | Sandisk Technologies Llc | Electronic assembly with thermal channel and method of manufacture thereof |
US9313874B2 (en) | 2013-06-19 | 2016-04-12 | SMART Storage Systems, Inc. | Electronic system with heat extraction and method of manufacture thereof |
US9367353B1 (en) | 2013-06-25 | 2016-06-14 | Sandisk Technologies Inc. | Storage control system with power throttling mechanism and method of operation thereof |
US9244519B1 (en) | 2013-06-25 | 2016-01-26 | Smart Storage Systems. Inc. | Storage system with data transfer rate adjustment for power throttling |
WO2015008358A1 (ja) * | 2013-07-18 | 2015-01-22 | 株式会社日立製作所 | 情報処理装置 |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9146850B2 (en) | 2013-08-01 | 2015-09-29 | SMART Storage Systems, Inc. | Data storage system with dynamic read threshold mechanism and method of operation thereof |
US9448946B2 (en) | 2013-08-07 | 2016-09-20 | Sandisk Technologies Llc | Data storage system with stale data mechanism and method of operation thereof |
US9361222B2 (en) | 2013-08-07 | 2016-06-07 | SMART Storage Systems, Inc. | Electronic system with storage drive life estimation mechanism and method of operation thereof |
US9431113B2 (en) | 2013-08-07 | 2016-08-30 | Sandisk Technologies Llc | Data storage system with dynamic erase block grouping mechanism and method of operation thereof |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9413491B1 (en) | 2013-10-08 | 2016-08-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for multiple dimension decoding and encoding a message |
US9348694B1 (en) | 2013-10-09 | 2016-05-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9397706B1 (en) | 2013-10-09 | 2016-07-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for irregular multiple dimension decoding and encoding |
US9786388B1 (en) | 2013-10-09 | 2017-10-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Detecting and managing bad columns |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9612773B2 (en) * | 2013-11-21 | 2017-04-04 | Samsung Electronics Co., Ltd. | User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9329992B2 (en) * | 2013-12-04 | 2016-05-03 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9236133B2 (en) * | 2013-12-13 | 2016-01-12 | Micron Technology, Inc. | Adjusted read for partially programmed block |
KR102116258B1 (ko) * | 2013-12-24 | 2020-06-05 | 삼성전자주식회사 | 메모리 시스템 및 그것을 포함하는 유저 장치 |
US9536612B1 (en) | 2014-01-23 | 2017-01-03 | Avago Technologies General Ip (Singapore) Pte. Ltd | Digital signaling processing for three dimensional flash memory arrays |
US10120792B1 (en) | 2014-01-29 | 2018-11-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Programming an embedded flash storage device |
KR102195298B1 (ko) | 2014-02-13 | 2020-12-24 | 삼성전자주식회사 | 비휘발성 메모리 장치의 부분 페이지 프로그램 방법 |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
JP6260395B2 (ja) * | 2014-03-27 | 2018-01-17 | Tdk株式会社 | メモリコントローラ、メモリシステム及びメモリ制御方法 |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9542262B1 (en) | 2014-05-29 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Error correction |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
KR102292172B1 (ko) * | 2014-06-23 | 2021-08-25 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법 |
US9892033B1 (en) | 2014-06-24 | 2018-02-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of memory units |
US9584159B1 (en) | 2014-07-03 | 2017-02-28 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Interleaved encoding |
US9972393B1 (en) | 2014-07-03 | 2018-05-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Accelerating programming of a flash memory module |
US9449702B1 (en) | 2014-07-08 | 2016-09-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Power management |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US10114562B2 (en) | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
US9552171B2 (en) | 2014-10-29 | 2017-01-24 | Sandisk Technologies Llc | Read scrub with adaptive counter management |
US9978456B2 (en) | 2014-11-17 | 2018-05-22 | Sandisk Technologies Llc | Techniques for reducing read disturb in partially written blocks of non-volatile memory |
US9524211B1 (en) | 2014-11-18 | 2016-12-20 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Codeword management |
US9349479B1 (en) | 2014-11-18 | 2016-05-24 | Sandisk Technologies Inc. | Boundary word line operation in nonvolatile memory |
US9563504B2 (en) | 2014-12-05 | 2017-02-07 | Sandisk Technologies Llc | Partial block erase for data refreshing and open-block programming |
US10305515B1 (en) | 2015-02-02 | 2019-05-28 | Avago Technologies International Sales Pte. Limited | System and method for encoding using multiple linear feedback shift registers |
US9449700B2 (en) | 2015-02-13 | 2016-09-20 | Sandisk Technologies Llc | Boundary word line search and open block read methods with reduced read disturb |
US9594623B2 (en) | 2015-03-24 | 2017-03-14 | Nxp Usa, Inc. | System on chip and method of updating program code on a system on chip |
KR102291806B1 (ko) | 2015-04-20 | 2021-08-24 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 동작 방법 |
US10628255B1 (en) | 2015-06-11 | 2020-04-21 | Avago Technologies International Sales Pte. Limited | Multi-dimensional decoding |
US9851921B1 (en) | 2015-07-05 | 2017-12-26 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Flash memory chip processing |
KR20170011645A (ko) * | 2015-07-23 | 2017-02-02 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법 |
KR102491624B1 (ko) * | 2015-07-27 | 2023-01-25 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법 |
TWI601141B (zh) * | 2015-08-21 | 2017-10-01 | 晨星半導體股份有限公司 | 快閃記憶體的存取方法及相關的記憶體控制器與電子裝置 |
CN106484630A (zh) * | 2015-08-31 | 2017-03-08 | 晨星半导体股份有限公司 | 快闪存储器的存取方法及相关的存储器控制器与电子装置 |
US9653154B2 (en) | 2015-09-21 | 2017-05-16 | Sandisk Technologies Llc | Write abort detection for multi-state memories |
US10532481B2 (en) * | 2015-11-25 | 2020-01-14 | Ridge Tool Company | Punch tool system |
US9954558B1 (en) | 2016-03-03 | 2018-04-24 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Fast decoding of data stored in a flash memory |
TWI599880B (zh) | 2016-03-22 | 2017-09-21 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
TWI631463B (zh) | 2016-03-22 | 2018-08-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置及其操作方法 |
US10019198B2 (en) | 2016-04-01 | 2018-07-10 | Intel Corporation | Method and apparatus for processing sequential writes to portions of an addressable unit |
US10031845B2 (en) * | 2016-04-01 | 2018-07-24 | Intel Corporation | Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device |
TWI604455B (zh) * | 2016-05-13 | 2017-11-01 | Silicon Motion Inc | 資料儲存裝置、記憶體控制器及其資料管理方法與資料區塊管理方法 |
US9817593B1 (en) | 2016-07-11 | 2017-11-14 | Sandisk Technologies Llc | Block management in non-volatile memory system with non-blocking control sync system |
US9881682B1 (en) | 2016-11-23 | 2018-01-30 | Seagate Technology Llc | Fine grained data retention monitoring in solid state drives |
FR3065303B1 (fr) * | 2017-04-12 | 2019-06-07 | Stmicroelectronics (Rousset) Sas | Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant |
US10115472B1 (en) | 2017-08-02 | 2018-10-30 | International Business Machines Corporation | Reducing read disturb effect on partially programmed blocks of non-volatile memory |
CN109407963A (zh) * | 2017-08-15 | 2019-03-01 | 深圳市中兴微电子技术有限公司 | 一种实现存储管理的方法及装置 |
CN107919110A (zh) * | 2017-11-27 | 2018-04-17 | 哈尔滨理工大学 | 一种针对乐谱的译码方式 |
US10529435B2 (en) * | 2018-01-05 | 2020-01-07 | Sandisk Technologies Llc | Fast detection of defective memory block to prevent neighbor plane disturb |
EP3685271A4 (en) * | 2018-01-29 | 2021-05-12 | Hewlett-Packard Development Company, L.P. | VALIDITY OF RECORDS STORED IN MEMORY |
KR20190120966A (ko) * | 2018-04-17 | 2019-10-25 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
CN110489052B (zh) * | 2018-05-14 | 2022-11-25 | 慧荣科技股份有限公司 | 数据储存装置 |
KR102530327B1 (ko) | 2018-06-01 | 2023-05-08 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
US11055226B2 (en) * | 2018-06-29 | 2021-07-06 | Intel Corporation | Mitigation of cache-latency based side-channel attacks |
US10733027B2 (en) * | 2018-10-07 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Memory allocator |
KR20210014337A (ko) | 2019-07-30 | 2021-02-09 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11347404B2 (en) * | 2019-08-01 | 2022-05-31 | EMC IP Holding Company, LLC | System and method for sharing spare storage capacity between a log structured file system and RAID |
US11287989B2 (en) | 2020-03-24 | 2022-03-29 | Western Digital Technologies, Inc. | Dynamic allocation of sub blocks |
US11721397B2 (en) | 2020-12-28 | 2023-08-08 | Sandisk Technologies Llc | Power saving and fast read sequence for non-volatile memory |
JP2022147448A (ja) * | 2021-03-23 | 2022-10-06 | キオクシア株式会社 | メモリシステム及びデータ管理方法 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4833603A (en) | 1986-05-30 | 1989-05-23 | Bull Hn Information Systems Inc. | Apparatus and method for implementation of a page frame replacement algorithm in a data processing system having virtual memory addressing |
US5268870A (en) * | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5043940A (en) | 1988-06-08 | 1991-08-27 | Eliyahou Harari | Flash EEPROM memory systems having multistate storage cells |
US5172338B1 (en) | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
US5012132A (en) | 1989-10-05 | 1991-04-30 | Xicor, Inc. | Dual mode high voltage coupler |
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US5663901A (en) * | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
JP2618149B2 (ja) * | 1991-04-22 | 1997-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キャッシュ内のデータ記憶スペースを管理する方法及びキャッシュ内でページ置換を行う装置 |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
JPH05233426A (ja) * | 1992-02-20 | 1993-09-10 | Fujitsu Ltd | フラッシュ・メモリ使用方法 |
US5375222A (en) * | 1992-03-31 | 1994-12-20 | Intel Corporation | Flash memory card with a ready/busy mask register |
US5341330A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5822781A (en) * | 1992-10-30 | 1998-10-13 | Intel Corporation | Sector-based storage device emulator having variable-sized sector |
US5649200A (en) * | 1993-01-08 | 1997-07-15 | Atria Software, Inc. | Dynamic rule-based version control system |
DE69421305T2 (de) * | 1993-02-15 | 2000-07-20 | Babcock-Hitachi K.K., Tokio/Tokyo | Verfahren und Vorrichtung zur präventiven Wartung von Anlagenbauteilen |
JP2856621B2 (ja) | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
US5404485A (en) | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5519843A (en) | 1993-03-15 | 1996-05-21 | M-Systems | Flash memory system providing both BIOS and user storage capability |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
US5479638A (en) | 1993-03-26 | 1995-12-26 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporation wear leveling technique |
US5388083A (en) * | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US6078520A (en) * | 1993-04-08 | 2000-06-20 | Hitachi, Ltd. | Flash memory control method and information processing system therewith |
JP3215237B2 (ja) * | 1993-10-01 | 2001-10-02 | 富士通株式会社 | 記憶装置および記憶装置の書き込み/消去方法 |
JPH08212019A (ja) | 1995-01-31 | 1996-08-20 | Mitsubishi Electric Corp | 半導体ディスク装置 |
JP3706167B2 (ja) | 1995-02-16 | 2005-10-12 | 株式会社ルネサステクノロジ | 半導体ディスク装置 |
JPH08263361A (ja) | 1995-03-23 | 1996-10-11 | Mitsubishi Electric Corp | フラッシュメモリカード |
US5682499A (en) * | 1995-06-06 | 1997-10-28 | International Business Machines Corporation | Directory rebuild method and apparatus for maintaining and rebuilding directory information for compressed data on direct access storage device (DASD) |
US5838614A (en) | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US5907856A (en) | 1995-07-31 | 1999-05-25 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US6081878A (en) * | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6125435A (en) | 1995-09-13 | 2000-09-26 | Lexar Media, Inc. | Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory |
US5835935A (en) * | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
US5860090A (en) * | 1995-10-20 | 1999-01-12 | Informix Software, Inc. | Append-only storage in a disk array using striping and parity caching |
US5987478A (en) * | 1995-10-31 | 1999-11-16 | Intel Corporation | Virtual small block file manager for flash memory array |
FR2742893B1 (fr) | 1995-12-20 | 1998-01-16 | Schlumberger Ind Sa | Procede d'inscription d'une donnee dans une memoire reinscriptible |
GB9609833D0 (en) | 1996-05-10 | 1996-07-17 | Memory Corp Plc | Memory device |
US5896393A (en) | 1996-05-23 | 1999-04-20 | Advanced Micro Devices, Inc. | Simplified file management scheme for flash memory |
JP4462646B2 (ja) | 1996-06-28 | 2010-05-12 | ソニー株式会社 | 情報処理装置および情報処理方法、リーダ/ライタおよびアクセス方法、並びに記録媒体 |
JPH1091490A (ja) | 1996-09-12 | 1998-04-10 | Sanyo Electric Co Ltd | フラッシュメモリを利用した記憶装置 |
US5860124A (en) * | 1996-09-30 | 1999-01-12 | Intel Corporation | Method for performing a continuous over-write of a file in nonvolatile memory |
US5890192A (en) | 1996-11-05 | 1999-03-30 | Sandisk Corporation | Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM |
JPH10177797A (ja) | 1996-12-17 | 1998-06-30 | Toshiba Corp | 半導体記憶装置 |
JP3895816B2 (ja) * | 1996-12-25 | 2007-03-22 | 株式会社東芝 | 不揮発性半導体記憶装置とその制御方法、メモリカード、及び記憶システム |
US5924092A (en) * | 1997-02-07 | 1999-07-13 | International Business Machines Corporation | Computer system and method which sort array elements to optimize array modifications |
US6122195A (en) | 1997-03-31 | 2000-09-19 | Lexar Media, Inc. | Method and apparatus for decreasing block write operation times performed on nonvolatile memory |
US6034897A (en) | 1999-04-01 | 2000-03-07 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
US5999947A (en) * | 1997-05-27 | 1999-12-07 | Arkona, Llc | Distributing database differences corresponding to database change events made to a database table located on a server computer |
JP3721725B2 (ja) * | 1997-07-09 | 2005-11-30 | ソニー株式会社 | 情報処理方法および情報処理装置 |
US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
JP4079506B2 (ja) | 1997-08-08 | 2008-04-23 | 株式会社東芝 | 不揮発性半導体メモリシステムの制御方法 |
JPH1153235A (ja) * | 1997-08-08 | 1999-02-26 | Toshiba Corp | ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム |
JP3070539B2 (ja) | 1997-09-30 | 2000-07-31 | ソニー株式会社 | 外部記憶装置、データ処理装置及びデータ処理方法 |
JP3640154B2 (ja) | 1997-09-30 | 2005-04-20 | ソニー株式会社 | 不揮発性メモリ、不揮発性メモリの管理方法、不揮発性メモリを有する記憶装置、不揮発性メモリを管理するデータ管理装置及びデータ処理システム |
JP3119214B2 (ja) * | 1997-09-30 | 2000-12-18 | ソニー株式会社 | 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法 |
JP2914360B2 (ja) * | 1997-09-30 | 1999-06-28 | ソニー株式会社 | 外部記憶装置及びデータ処理方法 |
US5937425A (en) * | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
US6040997A (en) | 1998-03-25 | 2000-03-21 | Lexar Media, Inc. | Flash memory leveling architecture having no external latch |
US6226728B1 (en) * | 1998-04-21 | 2001-05-01 | Intel Corporation | Dynamic allocation for efficient management of variable sized data within a nonvolatile memory |
JP4085478B2 (ja) | 1998-07-28 | 2008-05-14 | ソニー株式会社 | 記憶媒体及び電子機器システム |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US6715068B1 (en) * | 1999-03-31 | 2004-03-30 | Fuji Photo Optical Co., Ltd. | Multi-microcomputer system |
WO2000060605A1 (en) * | 1999-04-01 | 2000-10-12 | Lexar Media, Inc. | Space management for managing high capacity nonvolatile memory |
US6449625B1 (en) * | 1999-04-20 | 2002-09-10 | Lucent Technologies Inc. | Use of a two-way stack approach to optimize flash memory management for embedded database systems |
US6288862B1 (en) * | 1999-07-30 | 2001-09-11 | Storage Technology Corporation | Method and mechanism to distinguish valid from outdated recording blocks in a tape drive |
FR2803080A1 (fr) | 1999-12-22 | 2001-06-29 | St Microelectronics Sa | Memoire flash programmable page par page |
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 |
US7167944B1 (en) * | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
US6567307B1 (en) | 2000-07-21 | 2003-05-20 | Lexar Media, Inc. | Block management for mass storage |
JP3992960B2 (ja) * | 2000-10-26 | 2007-10-17 | 松下電器産業株式会社 | 記録装置及びプログラム |
US6684289B1 (en) * | 2000-11-22 | 2004-01-27 | Sandisk Corporation | Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory |
US6529416B2 (en) * | 2000-11-30 | 2003-03-04 | Bitmicro Networks, Inc. | Parallel erase operations in memory systems |
US7020739B2 (en) * | 2000-12-06 | 2006-03-28 | Tdk Corporation | Memory controller, flash memory system having memory controller and method for controlling flash memory device |
IT1315566B1 (it) | 2000-12-12 | 2003-02-18 | Federico Renier | Metodo per la certificazione dell'invio,della ricezione edell'autenticita' di documenti elettronici ed unita' di rete |
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US6835311B2 (en) | 2002-01-31 | 2004-12-28 | Koslow Technologies Corporation | Microporous filter media, filtration systems containing same, and methods of making and using |
-
2001
- 2001-01-19 US US09/766,436 patent/US6763424B2/en not_active Expired - Lifetime
-
2002
- 2002-01-07 EP EP15166112.1A patent/EP2953030A1/en not_active Withdrawn
- 2002-01-07 EP EP02703078A patent/EP1352394B1/en not_active Expired - Lifetime
- 2002-01-07 CN CNB028038827A patent/CN1290021C/zh not_active Expired - Lifetime
- 2002-01-07 EP EP20060075106 patent/EP1653323B1/en not_active Expired - Lifetime
- 2002-01-07 KR KR1020037009551A patent/KR100944996B1/ko active IP Right Grant
- 2002-01-07 ES ES02703078T patent/ES2262782T3/es not_active Expired - Lifetime
- 2002-01-07 KR KR1020087028861A patent/KR101076830B1/ko not_active IP Right Cessation
- 2002-01-07 EP EP05077929A patent/EP1645964A3/en not_active Withdrawn
- 2002-01-07 AT AT02703078T patent/ATE327556T1/de not_active IP Right Cessation
- 2002-01-07 AU AU2002236723A patent/AU2002236723A1/en not_active Abandoned
- 2002-01-07 CN CNB2006101423583A patent/CN100485641C/zh not_active Expired - Fee Related
- 2002-01-07 DE DE60211653T patent/DE60211653T2/de not_active Expired - Lifetime
- 2002-01-07 CN CNB2006101423598A patent/CN100485642C/zh not_active Expired - Fee Related
- 2002-01-07 WO PCT/US2002/000366 patent/WO2002058074A2/en active IP Right Grant
- 2002-01-07 JP JP2002558275A patent/JP4155824B2/ja not_active Expired - Fee Related
- 2002-01-08 TW TW091100155A patent/TWI221217B/zh not_active IP Right Cessation
-
2004
- 2004-05-07 US US10/841,388 patent/US6968421B2/en not_active Expired - Lifetime
-
2005
- 2005-10-13 US US11/250,238 patent/US7818490B2/en not_active Expired - Fee Related
-
2007
- 2007-08-06 JP JP2007203823A patent/JP4750766B2/ja not_active Expired - Lifetime
-
2008
- 2008-03-24 JP JP2008075388A patent/JP4768771B2/ja not_active Expired - Lifetime
-
2009
- 2009-02-13 US US12/371,460 patent/US7657702B2/en not_active Expired - Fee Related
-
2010
- 2010-10-07 US US12/900,397 patent/US7970987B2/en not_active Expired - Fee Related
-
2011
- 2011-06-24 US US13/168,756 patent/US8316177B2/en not_active Expired - Lifetime
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2262782T3 (es) | Operaciones de programacion y lectura de bloques de datos parciales en una memoria no volatil. | |
EP1617438B1 (en) | Redundancy based NAND flash memory | |
US8375157B2 (en) | Cluster based non-volatile memory translation layer | |
US8537614B2 (en) | Erase block data splitting |