ES2297787T3 - Arquitectura de memoria flash que implementa multiples bancos de memoria flash programables simultaneamente, que son compatibles con una central. - Google Patents
Arquitectura de memoria flash que implementa multiples bancos de memoria flash programables simultaneamente, que son compatibles con una central. Download PDFInfo
- Publication number
- ES2297787T3 ES2297787T3 ES06009719T ES06009719T ES2297787T3 ES 2297787 T3 ES2297787 T3 ES 2297787T3 ES 06009719 T ES06009719 T ES 06009719T ES 06009719 T ES06009719 T ES 06009719T ES 2297787 T3 ES2297787 T3 ES 2297787T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- flash memory
- memory
- logical block
- block
- 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/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Un sistema de memoria flash (1001) que comprende una pluralidad de bancos de memoria separados y direccionables independientemente (1020, 1022, 1024, 1026), cada banco de memoria (1020, 1022, 1024, 1026) comprendiendo: a. una pluralidad de áreas de almacenamiento de datos no volátiles, direccionables independientemente y programables independientemente; b. un registro de datos RAM principal (1030, 1032, 1034, 1036); y c. un valor exclusivo del fabricante, incluyendo medios para cargar el valor exclusivo del fabricante en un paquete de datos de establecimiento de conexión (1100), tras la puesta en servicio, donde el sistema de memoria flash (1001) está configurado para funcionar selectivamente en un primer nuevo de almacenamiento de datos y en un segundo modo de almacenamiento de datos, en respuesta al valor exclusivo del fabricante, el primer modo de almacenamiento de datos siendo un modo por defecto, en el que un solo ciclo de programación acorde con el primer modo de almacenamiento de datos, comprende un almacenamiento de datos en un solo registro de datos RAM, para una programación en una sola página.
Description
Arquitectura de memoria flash que implementa
múltiples bancos de memoria flash programables simultáneamente, que
son compatibles con una central.
La presente invención está relacionada con el
campo de los sistemas de memoria flash. Más en concreto, la
presente invención se refiere a sistemas de memoria flash
interconectados con sistemas centrales.
La tecnología de memoria flash es un medio de
memoria digital no volátil. Siendo no volátil, no necesita un
voltaje constante para retener los datos digitales dentro de su
memoria. Típicamente, una celda de memoria flash almacena carga en
una puerta flotante, para representar un primer estado lógico en el
sistema de estados binarios, mientras que la ausencia de carga
almacenada representa un segundo estado lógico en el sistema binario
de estados. Las celdas de memoria flash soportan típicamente la
operación de escritura, la operación de lectura y la operación de
borrado.
Según ha avanzado la tecnología de memoria
flash, se ha hecho posible una variedad de aplicaciones. En
concreto, han ganado aceptación las implementaciones de memoria
flash que emulan la función de memoria de masa de los medios
magnéticos rotatorios convencionales, por ejemplo de una unidad de
disco duro o de una unidad de disco extraíble, acopladas al sistema
central del ordenador o a otro sistema central digital. Las unidades
de disco duro y las unidades de disquete acusan diversas
deficiencias que no comparte la tecnología de memoria flash. En
primer lugar, las unidades de disco duro y las unidades de disquete
tienen muchas partes móviles, por ejemplo un motor eléctrico, una
barra del eje, un cabezal de lectura/escritura y un disco giratorio
susceptible de magnetización. Estos componentes dan lugar a
problemas de fiabilidad y amplifican la propensión a fallos en la
unidad de disco duro y en la unidad de disquete, que resultan de la
vibración y de los golpes, o de caídas o sacudidas. En segundo
lugar, una unidad de disco accionada por motor consume una
significativa cantidad de energía, acortando sustancialmente el
periodo operativo entre las cargas de la batería. Finalmente, el
acceso a datos almacenados en la unidad de disco duro o en la unidad
de disquete, es un proceso relativamente lento.
Por contraste, un sistema de memoria flash posee
muchas ventajas frente a los discos de memoria giratorios. El
típico sistema de memoria flash no tiene partes móviles, lo que
explica la superior fiabilidad del típico sistema de memoria flash.
Adicionalmente, el diseño resistente del típico sistema de memoria
flash soporta condiciones ambientales y agresiones físicas que en
otro caso serían catastróficas, para una unidad de disco duro o una
unidad de disquete. Generalmente, un usuario puede acceder muy
rápidamente a los datos almacenados en el típico sistema de memoria
flash. Por último, el consumo de potencia del típico sistema de
memoria flash es considerablemente menor el consumo de potencia de
una unidad de disco duro o de una unidad de disquete.
Debido a la saturación comercial y aplicación
universal de los medios giratorios tales como las unidades de disco
duro, incluso un dispositivo o proceso superiores que buscan
capturar un segmento del mercado, deben ser compatibles con los
sistemas operativos y el soporte lógico existentes. Para conseguir
compatibilidad con sistemas configurados al objeto de almacenar
datos, dentro del legado de los sistemas de memoria de masa, la
memoria flash está típicamente dividida en una serie de campos de
datos, capaces de almacenar quinientos doce bytes de datos de
usuario, y dieciséis bytes de datos de encabezado, emulando así el
tamaño de un campo de datos típicamente disponible en los discos
duros comerciales. La figura 1 describe una matriz de memoria no
volátil, dentro de un dispositivo de memoria flash. Una colección de
sectores físicos o páginas 108,... 112, es capaz típicamente de
almacenar los quinientos doce bytes de datos de usuario mas
dieciséis bytes de datos de encabezado, por página, adaptándose así
a la capacidad de memoria de un sector de un típico dispositivo
giratorio de almacenamiento. Una pluralidad de páginas físicas
108,..., 112, típicamente dieciséis o treinta y dos páginas,
constituyen un bloque físico de datos 102.
De acuerdo con el arte previo, se ha construido
un sistema de memoria flash a partir de una sola estructura de
memoria 100 que comprende una pluralidad de bloques físicos de datos
102, ...106. Cada bloque físico de datos 102,..., 106 está asignado
exclusivamente una dirección de bloque físico virtual (VPBA, Virtual
Physical Block Address), para identificar y distinguir una
pluralidad de bloques físicos de datos que componen un sistema de
memoria flash. Usualmente, cada bloque de datos 102,..., 106 es
selectivamente programable y borrable.
La figura 2 ilustra una realización de
arquitectura de memoria flash, acorde con el arte previo. Una
central 215, tal como un ordenador o una cámara digital, transmite
y recibe datos hacia y desde una tarjeta de memoria flash
sustituible 201. Durante la transmisión desde la central al sistema
de memoria flash, la central asigna direcciones de bloque lógico a
los datos. Cuando recibe los datos, la central solicita los datos de
acuerdo con las direcciones de bloque lógico que se ha asignado
previamente. Los datos entran en un circuito de interfaz de central
203 del controlador de memoria flash 202, por medio de un bus de
interfaz de central 220, que típicamente consta de arquitectura de
bus en paralelo. El circuito de interfaz de central controla el
almacenamiento de los datos entrantes mediante una memoria
intermedia de datos RAM 204. Cuando ha sido almacenada una cantidad
determinada de datos dentro de la memoria intermedia de datos RAM
204, el circuito de interfaz de memoria 205 transmite datos, a
través de un bus de memoria 230, a la unidad de memoria flash no
volátil 206, que se revela con mayor detalle en la figura 1.
Típicamente, el bus de datos 230 es una estructura de bus en
paralelo. Ventajosamente, el tamaño de la memoria intermedia de
datos 204 está diseñado para almacenar una cantidad de datos igual
a un múltiplo de algún campo de memoria no volátil, de modo que una
página comprende aproximadamente quinientos veintiocho bytes de
datos en total, como se describe en la
figura 1.
figura 1.
En el actual estado de la tecnología, un sistema
de memoria flash tiene un número limitado de ciclos de programa
antes de "gastarse". Para mejorar la cuestión del desgaste un
controlador, discutido con mayor detalle en la figura 2, intenta
efectuar un ciclo a través de las localizaciones de memoria
disponibles antes de volver a la primera localización. Mediante
regular la velocidad del desgaste entre las celdas, el controlador
impide un desgaste desigual centrado en un área del sistema de
memoria flash. Por lo tanto, como consecuencia de los programas de
igualación del desgaste, todas las celdas dentro de un sistema de
memoria flash se gastarán típicamente a la misma velocidad. Por lo
tanto, el programa de igualación del desgaste reduce la probabilidad
de que el sistema de memoria flash experimente una degradación
prematura, dentro de un área de memoria localizada, debida a un uso
excesivo de un área. Por tanto todo el sistema de memoria flash
permanece disponible de modo uniforme, a lo largo de su vida útil.
Una unidad de disco duro no necesita esta característica de
igualación del desgaste, debido a que sus mecanismos de
almacenamiento pueden ser sometidos a un número prácticamente
ilimitado de operaciones de programación/escritura, sin que se
degrade su rendimiento. El contraste tiene como resultado una
disparidad operativa entre el sistema de direccionamiento utilizado
dentro de una memoria flash, y el utilizado dentro de un disco duro
o un disquete.
Tanto en los discos duros como en los sistemas
de memoria flash, las direcciones físicas asignadas dentro de una
memoria siguen típicamente una estructura geométrica dentro del
sistema de memoria. Es decir, típicamente las direcciones físicas
se incrementan a través de sucesivas localizaciones de memoria.
Cuando se recibe datos de usuario por parte de un sistema de
memoria, ya sea memoria flash o un disco giratorio, el sistema
central normalmente asigna una dirección a los datos entrantes. En
un disco duro, los datos se almacenan típicamente en el sector
cuyas direcciones físicas coinciden con las direcciones lógicas
definidas por el sistema central. Si un sistema central actualiza
datos de usuario definidos previamente por una dirección lógica
específica, los nuevos datos sobrescribirán los datos originales en
la direcciones prescritas.
Sin embargo, en un sistema de memoria flash,
como resultado de la rotación a través de varias áreas de la
memoria flash, de acuerdo con el algoritmo de igualamiento de
desgaste se llena continuamente áreas físicas definidas por nuevas
direcciones físicas. Cuando un sistema central actualiza datos de
usuario definidos por una dirección lógica específica, y los envía
al sistema de memoria flash, el programa de igualación de desgaste
asignará los datos de usuario de entrantes, a una dirección física
sin relación con la localización física en la que se había
almacenado previamente los datos de usuario de la misma dirección
lógica. Los datos antiguos asociados con una dirección lógica
completa no son inmediatamente sobrescritos por los datos entrantes
de la misma dirección lógica. Simplemente los datos antiguos quedan
obsoletos, y los datos entrantes son escritos en el siguiente
bloque físico de datos disponible, es decir, en el siguiente bloque
físico de datos direccionable que esté libre y no defectuoso. Como
resultado, la central asigna direcciones a los datos, que no guardan
relación con las direcciones en las que la memoria flash almacenar
finalmente los datos. Una característica diferenciadora del
programa de almacenamiento de datos con igualación del desgaste,
implementado por el típico sistema de memoria flash, descansa por
lo tanto en la relación continuamente cambiante entre las
direcciones lógicas asignadas por la central, y las direcciones
físicas utilizadas realmente por el sistema de memoria flash. A
través de este doble proceso de memoria, un sistema de memoria flash
es capaz de emular funcionalmente la relación entre un disco duro y
una central, con respecto al almacenamiento y recepción de datos,
manteniendo de ese modo la compatibilidad con el soporte lógico
existente.
La figura 3 ilustra diversos registros y campos
utilizados para tomar datos entrantes, y almacenarlos dentro de la
unidad de memoria flash 206 (figura 2). Sin embargo, para facilitar
la recuperación de los datos de usuario almacenados por un sistema
central, debe existir una correlación entre las direcciones físicas
y las lógicas. Esta correlación está típicamente almacenada dentro
del sistema de memoria flash, en las partes de encabezado de cada
página 108, ..., 112 y el administrador de espacio RAM 370. Cuando
una central transmite datos de usuario 310, ..., 316 identificados
por un conjunto de direcciones lógicas 302, ..., 308, a un sistema
de memoria flash, el sistema de memoria flash almacena los datos en
ciertas localizaciones físicas 322, ..., 328 y después correlaciona
las direcciones lógicas 302, ..., 308 y las direcciones físicas 330,
..., 336 de tales datos, en registros o campos de correlación
designados específicamente, así como en el administrador de espacio
370. A continuación, cuando la central solicita datos identificados
por una dirección lógica específica, el sistema de memoria flash
examina los diversos registros, campos, o archivos, correlacionando
direcciones lógicas con direcciones físicas. Tras la localización
de la dirección lógica solicitada por la central, el sistema de
memoria flash es capaz de asegurar que la dirección física está
correlacionada con tal dirección lógica. El sistema de memoria
flash recibe datos de usuario desde tal dirección física.
El proceso de almacenamiento y recepción
involucra una serie de operaciones de enmascaramiento y
concatenación de diversos bits dentro de diversos registros de
dirección. El registro de bit utilizado para almacenar una
dirección de bloque lógico puede dividirse en dos
sub-registros, un campo de bit de orden superior 342
y un campo de bit de orden inferior 344, del registro temporal LBA
340. Un grupo de bloques lógicos 310, ..., 316, típicamente
dieciséis o treinta y dos, definidos por una dirección común dentro
del campo de bit de orden superior, comprende un bloque lógico
virtual 300. El número en el campo de bit de orden superior es la
dirección de bloque lógico virtual. El número en los campos de bit
de orden inferior, entre los bloques lógicos componentes, es un
desplazamiento LBA que distingue los bloques lógicos individuales.
Las direcciones de orden inferior o desplazamientos, se incrementan
típicamente desde cero hasta quince, o desde cero hasta treinta y
uno, aunque es posible cualquier tamaño de bloque lógico virtual.
La dirección de bloque lógico virtual de orden superior, mas la de
orden inferior, definen la dirección de bloque lógico, como se
ilustra mediante el registro temporal LBA 340. Los bloques lógicos
componentes 310, ..., 316 dentro de un bloque lógico virtual están,
por tanto, definidos por una dirección de bloque lógico (LBA,
Logical Block Address).
Un bloque lógico virtual (VLB) 300 de datos,
definido mediante una dirección de bloque lógico virtual (VLBA),
representa una cantidad de datos equivalente a un área física de
memoria, conocida como un bloque físico de datos 320, que está
definida por una dirección de bloque físico virtual (VPBA). Una VPBA
consta de páginas físicas complementarias. Las páginas consecutivas
dentro de una VPBA se distinguen mediante un desplazamiento PBA. La
VPBA más el desplazamiento PBA definen una única PBA o dirección de
bloque físico 330, ..., 336 para cada página. Cada bloque lógico
310, ..., 316 representa una cantidad de datos equivalente a una
página física 322, ..., 328. Los registros y campos de datos
dedicados a correlacionar direcciones lógicas y físicas, tal como
un administrador de espacio RAM 370, consumen valioso espacio de
memoria dentro de un sistema de memoria flash, memoria que podría
utilizarse ventajosamente de otra manera para almacenar datos de
usuario. Si un sistema de memoria flash estuviera compuesto de
suficientes registros de correlación 380, ..., 384, para
correlacionar cada LBA 345, 346, etc. con una respectiva PBA 330,
..., 336, se consumiría una enorme cantidad de memoria flash en la
función de correlación, dejando muy poca memoria disponible para
almacenar datos de usuario. Tal correlación detallada sería
necesaria, por ejemplo, si un bloque lógico virtual de datos de
usuario 300 estuviera fragmentado en LBAs de dieciséis o treinta y
dos componentes
302, ..., 308, y estuviera almacenado en dieciséis o treinta y dos diferentes páginas, distribuidas entre diferentes bloques físicos de datos dentro del sistema de memoria flash 200.
302, ..., 308, y estuviera almacenado en dieciséis o treinta y dos diferentes páginas, distribuidas entre diferentes bloques físicos de datos dentro del sistema de memoria flash 200.
Una forma de minimizar el consumo de espacio de
memoria dedicado a los datos de correlación, es limitar la
correlación a grupos mayores de datos, como por ejemplo
correlacionar direcciones de bloques lógicos virtuales con
direcciones de bloques físicos virtuales, que definen grandes
bloques de memoria física. Una forma de retener una correlación
entre bloques lógicos componentes de un VLB y páginas físicas
individuales de un bloque físico de datos, sin multiplicar los
registros de correlación para incluir cada bloque lógico, es
almacenar bloques lógicos y designados consecutivamente 310, ...,
316 del VLB 300, en páginas direccionadas consecutivamente 322,
..., 328 dentro de un bloque físico de datos 320. Así, a través de
una disposición espacial o casi espacial, se retiene una
correlación uno a uno entre direcciones de bloque físico 330, ...,
336 dentro de un bloque físico de datos 320, y direcciones de
bloque lógico 302, ..., 308 dentro de un bloque lógico virtual 300.
No se necesita dedicar ningún registro a correlacionar LBAs
individuales dentro de direcciones de página física. Solo la VLBA
en el campo de bit de orden superior, necesita estar correlacionada
con la VPBA que representa el bloque físico de datos.
La figura 4 es un diagrama de flujo, que ilustra
los datos de usuario entrantes de acuerdo con los registros y
campos de datos de la figura 3. En la primera etapa 402, el bloque
lógico virtual diecisiete 300 (figura 3) es recibido desde la
central 215, para su almacenamiento en una unidad de memoria flash
no volátil 206 (figura 2). En la subsiguiente etapa 404, el
controlador 202 mueve la primera LBA 302 al registro temporal LBA
340. A continuación, en 406 el controlador enmascara los bits de
orden inferior 344 dentro del registro LBA temporal 340, y mueve la
VLBA 342 al registro de VLBA 360. En la siguiente etapa 408, el
controlador examina el administrador de espacio 370 e identifica el
registro de correlación VPBA 384 correspondiente al actual VLB 349,
como se revela en el registro VLBA 360. En la siguiente etapa 412 el
controlador 202 identifica un bloque físico de datos libre y no
defectuoso 320, identificado mediante una nueva VPBA. En la
siguiente etapa 414, el controlador 202 escribe la nueva VPBA en el
registro de correlación 384 del administrador de espacio 370.
Ahora el controlador está listo para identificar
páginas específicas 322, ..., 328 dentro del bloque físico de datos
320 seleccionado, para almacenar datos entrantes de usuario, dentro
del bloque lógico virtual 300 entrante. Para conseguir una
correlación uno a uno entre bloques lógicos consecutivos 310, ...,
316 dentro del bloque lógico virtual 300, y direcciones de bloque
físico 330, ..., 336 consecutivas, el controlador combina la VPBA
del bloque físico de datos 320, con el desplazamiento LBA de la LBA
actual 302, ..., 308. En la etapa 415, el controlador 202 almacena
la VPBA del bloque físico de datos 320 seleccionado, en un registro
PBA temporal 351. En la etapa 416 el controlador 200 enmascara los
bits de orden superior 342 del registro de LBA temporal 340, y
concatena los bits de orden inferior 344 que contienen el
desplazamiento LBA, en el registro de orden inferior 354 del
registro PBA temporal. Los registros combinados superior 352 e
inferior 354 procedentes del registro PBA temporal 351, forman una
dirección de bloque físico. En la etapa 418, el programador programa
después el bloque lógico de datos 310, ..., 316 identificados por
el registro LBA temporal 340, en la página física 322, ..., 326
identificada por el registro PBA temporal 351.
En la etapa 420, el controlador examina el
siguiente bloque lógico de datos entrantes, y mueve la LBA del
bloque lógico entrante, al registro LBA temporal. De acuerdo con la
etapa final 422, si el valor en el registro VLBA 360 permanece
inalterado, el controlador 202 vuelve a la etapa 416. Si los nuevos
datos de usuario recibidos desde la central 215 comprenden una
nueva VLBA, el proceso vuelve a la etapa 402 y se reanuda.
Algunas de las etapas de la figura 4 podrían
llevarse a cabo en un orden diferente, sin cambiar el resultado del
proceso. Debido a que la mecánica específica de almacenamiento
podría llevarse a cabo mediante una serie de formas equivalentes,
el proceso revelado en la figura 4 no pretende insinuar que un
proceso de almacenamiento correlacionado, acorde con el arte
previo, siga necesariamente estas etapas exactas. Los detalles se
revelan simplemente para ilustrar una forma de llevar a cabo un
proceso de almacenamiento de datos, de forma que preserva una
correlación natural entre LBAs y PBAs. De acuerdo con el proceso
descrito arriba, el desplazamiento LBA 344 se utiliza como un
desplazamiento PBA 354 cuando se almacena un VLB en una página
física. Debido al orden conservado en el proceso de almacenamiento
o programación, las LBAs individuales solicitadas por la central
202 pueden ser recibidas por el sistema de memoria flash 201.
La figura 5 revela un proceso acorde con arte
previo, mediante el que se recibe datos desde la unidad de memoria
flash 206, tras ser solicitados desde la central 202. De nuevo, las
etapas de recepción listadas abajo son un ejemplo de recuperación
de datos acorde con el arte previo, y no pretende limitar la
recuperación de datos a ningún único algoritmo acorde con el arte
previo. De acuerdo con la etapa 502, la central 202 (figura 2)
solicita la recepción de datos definidos de acuerdo con una LBA
concreta o un grupo de LBAs 302, ..., 308 (figura 3). En la etapa
504, el controlador 202 mueve la LBA solicitada 302, ..., 308 a un
registro de LBA temporal 340, descrito conceptualmente como
comprendiendo un registro superior 342 y un registro inferior 344,
respectivamente de bits de orden superior y de bits de orden
inferior. En la siguiente etapa 506, el controlador 202 enmascara
los bits de orden inferior 344 y define la VLBA solicitada en un
registro VLBA temporal 360, de acuerdo con el valor dentro del
registro de orden superior 342. En la siguiente etapa 508, el
controlador 202 incrementa el administrador de espacio 370, a la
VLBA en el registro de VLBA temporal 360, accediendo de ese modo al
actual registro de correlación 384 correspondiente a la VLBA
encontrada en el registro VLBA temporal 360. En la etapa 510, el
controlador 202 copia la VPBA encontrada en el actual registro de
correlación 384, al registro superior 352 del registro PBA temporal
351. En la siguiente etapa 512, el controlador 202 enmascara los
bits de orden superior dentro del registro superior 342 del registro
LBA temporal 340, y concatena los bits de orden inferior dentro del
registro inferior 344 que contiene el desplazamiento LBA, en el
registro de orden inferior 354 del registro PBA temporal 351. Los
registros combinados superior 352 e inferior 354, del registro PBA
temporal 351, forman una dirección de bloque físico. Ahora, el
controlador 202 es capaz, de acuerdo con la etapa 514, de acceder
al bloque físico de datos definido por la dirección de bloque físico
construido dentro del registro PBA temporal, y transferir a la
central los datos de usuario encontrados. De acuerdo con la etapa
516, el controlador también transfiere a la central las direcciones
de bloque lógico en el registro LBA temporal, definiendo de ese
modo el bloque lógico de datos de usuario, de acuerdo con la
dirección original que le ha sido atribuida por la central.
Mediante concatenar el desplazamiento LBA sobre
una VPBA durante el proceso de almacenamiento y recepción, el
controlador es capaz de crear una correlación LBA a PBA tras la
solicitud, y sólo necesita almacenar una correlación entre la VLBA
y la VPBA en el sistema de memoria flash 201, reduciendo la cantidad
de memoria necesaria para la correlación, a solo una fracción de la
que sería necesaria sin este proceso. Por consiguiente, cuando la
central solicita los datos definidos por una serie de direcciones de
bloque lógico, la memoria flash recibe los datos de usuario desde
una localización física, y los devuelve a la central. Por tanto
cuando la central recibe datos, los datos enviados a la central son
identificados mediante la misma dirección que la central solicitó.
El esquema de doble direccionamiento y referencia transversal
utilizados dentro del sistema de memoria flash, es invisible para
la central.
Aunque la memoria flash es típicamente mucho más
rápida que la memoria de tipo disco giratorio, hay una amplia
divergencia entre los tiempos de "lectura" y "escritura"
dentro de la memoria flash. El tiempo de lectura de la memoria
flash es del orden de microsegundos, y comparativamente es mejor que
la memoria tipo RAM. Sin embargo, en la memoria flash la operación
de programación o escritura es del orden de milisegundos,
típicamente varios órdenes de magnitud más lenta que la
programación que se encuentra típicamente en memorias de tipo RAM.
Por consiguiente, la memoria intermedia de datos RAM 204 es capaz de
recibir y retransmitir datos digitales mucho más rápido, de cómo es
capaz de recibirlos la unidad de memoria no volátil 206. Por lo
tanto, la fase de programación de un sistema de memoria flash se
convierte en un factor fundamental que limita las posibles
velocidades potenciales a través del sistema de circuitos integrados
y el sistema MOS que incorporan los componentes de memoria
flash.
La velocidad de programación de la memoria flash
se ha mejorado sustancialmente mediante el desarrollo de un sistema
de memoria flash multi-banco, como se muestra la
figura 6. Un sistema de memoria flash 600 está conectado
operativamente a un sistema central 601, tal como un ordenador o una
cámara digital. Un controlador 604 que comprende el circuito de
interfaz de central 605, una memoria intermedia de datos 607 y un
circuito de interfaz de memoria 609, está operativamente acoplado a
una unidad de memoria flash 602. La unidad de memoria flash 602
consta de una pluralidad de bancos de memoria 621, ..., 627. El
primer banco 621 consta de una pluralidad de bloques físicos de
datos 631, ..., 637, y un solo registro de datos RAM 613. El segundo
banco 623 costa de una pluralidad de bloques físicos de datos 641,
..., 647, y un solo registro de datos RAM 615. El tercer banco 625
consta de una pluralidad de bloques físicos de datos 651, 353, 355,
657, y un solo registro de datos RAM 617. El cuarto banco 627 costa
de una pluralidad de bloques físicos de datos 661, ..., 667, y un
solo registro de datos RAM 619. Típicamente cada uno, de la
pluralidad de bancos de memoria 621, ..., 627, consta de un número
igual de bloques físicos de datos. Típicamente, cada registro de
datos RAM 613, ..., 619 tiene una capacidad de datos igual a una
página de memoria física, que típicamente es capaz de contener
quinientos doce bytes de datos de usuario, más dieciséis bytes de
datos de encabezado. La unidad de memoria flash 602 de la figura 6
se compone, sólo a modo de ejemplo, de cuatro bancos de memoria 621,
..., 627. Las memorias flash multi-banco podrían
comprender cualquier número de bancos de memoria. De forma similar,
el tamaño de los campos de datos y las áreas de memoria se han
proporcionado sólo a modo de ejemplo, describiendo las
configuraciones más comunes encontradas según el arte previo. Ni
estas descripciones del arte previo ni su aplicación a la presente
invención, pretenden limitar la aplicación de la presente invención
a ningún número específico de bancos de memoria. Las ilustraciones
contenidas en este documento no están concebidas para limitar los
tamaños de los registros y campos de datos, sean físicos o lógicos,
ni para limitar la cantidad de datos entrantes que son almacenados,
ni de procesos. En cambio, los parámetros específicos tales como los
tamaños de los campos de datos, el número de
sub-agrupamientos de memoria física que constituyen
un componente de memoria mayor, o el número de
sub-agrupamientos que comprenden un grupo mayor de
datos, se ofrecen sólo por propósitos ilustrativos y han sido
seleccionados para representar cantidades que se encuentra con
frecuencia en el arte
previo.
previo.
En los sistema de memoria flash
multi-banco 600, la memoria intermedia de datos RAM
607 no almacena directamente datos en los bloques de memoria flash
631, ..., 667. En cambio, la memoria intermedia de datos RAM 607
carga datos en la pluralidad de registros de datos RAM 613, ...
619, que pueden simultáneamente cargar datos de usuario en sus
respectivos bancos de memoria 621, ... 627. Cada registro de datos
RAM 613, 615, 617, 619 es capaz típicamente de almacenar y
programar una página de datos.
Conforme el controlador flash 604 recibe
información desde la central 601, el circuito de interfaz de la
central 605 pone en cola la información, en la memoria intermedia
de datos RAM 607. Cuando la memoria intermedia de datos RAM 607
está llena, de acuerdo con una cantidad de datos predeterminada, el
circuito de interfaz de memoria 609 comienza a escribir datos desde
el interior de la memoria intermedia de datos RAM 607, para
seleccionar registros de datos RAM de entre la pluralidad de
registros de datos RAM 613, 615, 617, 619, dentro de la unidad de
memoria flash. En la unidad de memoria flash de cuatro bancos 602,
descrita en la figura 6, la memoria intermedia 607 almacena
típicamente cuatro páginas de datos. De acuerdo con el diseño más
ventajoso, el número de registro de datos RAM equivale típicamente
al número de bloques lógicos virtuales de datos entrantes. El bus
de datos 611 es una estructura de bus en paralelo, para mover datos
entre la memoria intermedia de datos 607 y los registros de datos
613, 615, 617, 619. Debido a que la memoria intermedia de datos RAM
607 y los registros de datos RAM 613, 614, 617, 619 son estructuras
de memoria de acceso aleatorio, los tiempos de lectura y escritura
entre estas estructuras es extremadamente rápido. Después de que se
ha llenado los registros de datos RAM 613, ..., 619 seleccionados,
los registros de datos RAM 613, ..., 619 individuales, comienzan
simultáneamente a escribir datos en áreas de memoria flash dentro
de sus respectivos bancos de memoria 621, ..., 627. En un sistema
de memoria de cuatro bancos, el tiempo de programación se reduce a
aproximadamente 1/4 del tiempo requerido en una unidad de memoria
flash tradicional. En un sistema de diez bancos, el tiempo de
programación se reduce aproximadamente a un décimo del tiempo de
programación requerido por una unidad de memoria flash tradicional.
Por lo tanto, un sistema multi-banco es más rápido
que una unidad de memoria flash tradicional, en un factor igual al
número de registros de datos RAM acoplados simultáneamente en la
programación de datos de usuario, en una unidad de memoria
flash.
Aunque el tiempo de transmisión y programación
desde la memoria intermedia de datos RAM 607 a los registros de
datos RAM 613, ..., 619 es despreciable en comparación con el tiempo
de programación para las celdas de memoria flash, los diseños
avanzados pueden reducir sustancialmente el tiempo que se gasta en
escribir datos de usuario desde la memoria intermedia de datos RAM
607 a los registros de datos RAM 613, ..., 619. La figura 7 revela
una unidad de memoria que consta de múltiples bancos de memoria 702,
704, 706, 708. Sin embargo, una característica distintiva de esta
realización es la presencia de registros de datos RAM dobles 710
& 720, 712 & 712, 714 & 724, 716 & 726, asignados
respectivamente a cada banco de memoria individual 702, ..., 708.
Cada banco de memoria 702, ..., 708 comprende individualmente un
registro principal 710, 712, 714, 716 y un registro auxiliar 720,
722, 724, 726. De acuerdo con esta realización, la memoria
intermedia de datos RAM 730 carga los cuatro respectivos registros
principales 710, ..., 716, con datos a ser almacenados en las celdas
de memoria flash de los respectivos bancos de memoria 702, 704,
706, 708. De nuevo, por continuidad en la comparación debe asumirse
que hay un total de cuatro bloques lógicos virtuales de datos de
usuario entrantes, comprendiendo cada VLB treinta y dos bloques
lógicos de datos de usuario, que han de distribuirse entre los
cuatro bancos de memoria 702, 704, 706, 708. Cada banco de memoria
702, 704, 706, 708 recibirá por lo tanto un bloque lógico virtual,
o treinta y dos datos de bloques lógicos, programados de una en una
página, mas los datos de encabezado asociados con cada página. Este
proceso se producirá a través de treinta y dos ciclos.
Mediante alternar ventajosamente entre los
registros principales 710, ..., 716 y los registros auxiliares 720,
722, 724, 726, un retardo temporal al escribir datos desde la
memoria intermedia de datos RAM 730 a los registros de datos RAM
710, ..., 726, podría producirse sólo en el primer ciclo de
escritura de las primeras cuatro páginas de datos a los cuatro
registros respectivos. La programación de la memoria flash de los
respectivos bancos 702, ..., 708 tarda mucho más del tiempo que
lleva cargar una página de memoria en registros de datos RAM. Por
lo tanto, mientras que los registros principales 710, ..., 716 están
programando sus respectivas páginas de datos en las celdas de
memoria flash de sus respectivos bancos de memoria 702, ..., 708, la
memoria intermedia de datos RAM 730 puede cargar las siguientes
cuatro páginas de datos en los cuatro registros auxiliares 720,
..., 726. Debido a que esto tiene lugar mientras que las celdas de
memoria flash están siendo programadas por sus respectivos
registros principales 710, ..., 716, no se impone un retardo real en
la escritura de los registros auxiliares 720, ..., 726. Cuando los
registros principales
710, ..., 716 han terminado de cargar sus respectivas páginas de datos, en las celdas de memoria de sus respectivos bancos de memoria 702, ..., 708, los registros auxiliares 720, ..., 726 está inmediatamente dispuestos para empezar a cargar sus respectivas páginas de datos en sus respectivos bancos de memoria 702, ..., 708. Durante la programación de los registros auxiliares 720, 722, 724, 726 en sus respectivos bloques físicos de datos, la memoria intermedia de datos RAM 730 puede simultáneamente cargar el siguiente ciclo de datos en los registros principales. Este proceso de cargar datos simultáneamente en un conjunto de registros, mientras que un conjunto complementario de registros programa celdas de memoria flash seleccionadas, continúa hasta que los datos seleccionados han sido cargados en la memoria flash. Como se ha hecho notar, el único retardo impuesto por la carga de datos desde la memoria intermedia de datos RAM 730 en los respectivos registros de datos RAM 710, ..., 716, se produce durante el primer ciclo.
710, ..., 716 han terminado de cargar sus respectivas páginas de datos, en las celdas de memoria de sus respectivos bancos de memoria 702, ..., 708, los registros auxiliares 720, ..., 726 está inmediatamente dispuestos para empezar a cargar sus respectivas páginas de datos en sus respectivos bancos de memoria 702, ..., 708. Durante la programación de los registros auxiliares 720, 722, 724, 726 en sus respectivos bloques físicos de datos, la memoria intermedia de datos RAM 730 puede simultáneamente cargar el siguiente ciclo de datos en los registros principales. Este proceso de cargar datos simultáneamente en un conjunto de registros, mientras que un conjunto complementario de registros programa celdas de memoria flash seleccionadas, continúa hasta que los datos seleccionados han sido cargados en la memoria flash. Como se ha hecho notar, el único retardo impuesto por la carga de datos desde la memoria intermedia de datos RAM 730 en los respectivos registros de datos RAM 710, ..., 716, se produce durante el primer ciclo.
Asumiendo que cada registro de datos RAM tiene
una capacidad de una página de datos, es aproximadamente igual a un
bloque lógico de datos de usuario, y siendo N = número total de
bancos de memoria que están siendo utilizados en una operación de
programación de acuerdo con la presente invención, p = número total
de páginas a ser cargadas, t = cantidad de tiempo para cargar una
sola página de datos en un solo registro de datos RAM o una memoria
intermedia de datos RAM, y T = cantidad de tiempo necesario para
programar una sola página de datos en la memoria flash, la
siguiente tabla compara las velocidades de programación según la
figura 2 del arte previo, con múltiples bancos de memoria con un
solo registro de datos RAM por banco de memoria según la presente
invención (figura 6), y con múltiples bancos de memoria con
registros de datos RAM dobles de acuerdo con la presente invención
(figura 7):
Tiempo Total de
Programación
(P_{rog}T_{ime})
En los tiempos de programación para la tabla
anterior, se asume que el bus de datos 611, 740 de los sistemas
multi-banco porta datos a la misma velocidad que el
bus de datos 230 de una unidad de memoria flash tradicional. Si el
bus de datos 611, 740 acorde con la presente invención pudiera
programar todos los registros de datos RAM 710, ..., 716
simultáneamente, a través de una configuración en paralelo, las
anteriores ecuaciones tendrían que modificarse ligeramente.
Volviendo a la discusión acorde con la figura 6,
según la ilustración anterior, en la práctica N bancos de memoria
por unidad de memoria tienen como resultado un tiempo de
programación total que es N veces más rápido que una aplicación con
una unidad de memoria flash tradicional. A primera vista parecería
que esto invita a la construcción de unidades de memoria que
comprendan cientos de bancos de memoria. Aunque no hay límite
teórico en el número de bancos de memoria que puede incorporarse
dentro de una unidad de memoria flash multi-banco,
los parámetros operativos acordes con una aplicación concreta
dictarán típicamente límites prácticos al número de bancos de
memoria que pueden utilizarse de forma eficaz.
De acuerdo con el arte previo, las unidades de
memoria flash multi-banco se programaban de acuerdo
con un proceso de entrelazado, que se ilustra conjuntamente con la
figura 8. De acuerdo con la siguiente ilustración se asume, sólo a
modo de ejemplo, que cada VLB comprende treinta y dos bloques
lógicos en cuatro bloques físicos de datos. A modo de ejemplo, se
asume que cada registro 840, ... 846 programa una página de datos de
usuario por ciclo, una página correspondiendo a un bloque lógico de
datos de usuario. Cuatro VLBs de datos de usuario, consecutivos,
contienen ciento veintiocho bloques lógicos 810, ..., 826 de datos,
que pueden ser representados bien mediante una dirección, o
mediante el número de desplazamientos medido frente al número total
de bloques lógicos en el conjunto entrante de datos de usuario 802.
Por ejemplo, el tercer bloque lógico 825 dentro del cuarto bloque
lógico virtual 806, puede representarse bien mediante la dirección
24:2, que indica VLBA 24 y desplazamiento 2, o simplemente de
acuerdo con el número de desplazamiento total 98, medido respecto de
la totalidad de los ciento veintiocho bloques lógicos en el
conjunto entrante de datos de usuario 800. Cuatro VLBs consecutivos
803, 804, 805, 806 que comprenden un solo conjunto de datos de
usuario 800 entrantes, son procesados por el controlador 604
(figura 6), y esencialmente formar una pila continua de datos
entrantes.
Cuando se ha almacenado datos en una estructura
multi-banco acorde con el arte previo, un proceso de
entrelazado fragmenta un solo bloque lógico virtual de datos en
múltiples bloques de memoria física. Este proceso puede ilustrarse
con la figura 8. Los bloques lógicos consecutivos 810, 811, 812, 813
dentro del mismo bloque lógico virtual 803, se cargan
consecutivamente en los registros de datos RAM 840, ..., 846 para su
almacenamiento. En el primer ciclo, el bloque lógico 21:0 810 se
carga en el registro de datos RAM 1 840, el bloque lógico 21:1 811
se carga en el registro de datos RAM 2 842, el bloque lógico 21:2
ocho 112 se carga en el registro de datos RAM 3 844, y el bloque
lógico 21:3 813 se carga en el registro de datos RAM 4 846.
Los contenidos de los cuatro registros 840, ...,
846 son después programados simultáneamente en las primeras páginas
858, 861, 864 y 870, dentro de cuatro bloques físicos de datos
separados y diferentes 850, 852, 854, 856, en los respectivos
bancos de memoria 832, 834, 836, 838. Por lo tanto, los datos
almacenados de acuerdo con este proceso de entrelazado fragmentan
un único bloque lógico virtual de datos, a través de cuatro bloques
físicos de memoria separados 850, 852, 854, 856 dispuestos dentro de
cuatro bancos de memoria 832, 834, 836, 838 separados. Cuando los
datos han sido recibidos en un proceso inverso, estos pueden
reconstruirse de forma precisa. Sin embargo, si no se utiliza un
proceso de entrelazado inverso la reconstrucción de datos de usuario
se vuelve problemática. Aunque puede conseguirse la reconstrucción
a través de campos de correlación detallados, que correlacionan
LBAs con PBAs, los compromisos resultantes en consumo de memoria
hacen esta opción sustancialmente inaplicable.
Debido a que el proceso de entrelazado se
consigue en parte gracias a la actividad de la central, una central
diseñada para trabajar conjuntamente con una unidad de memoria flash
estándar, o de un solo banco, puede reconstruir sólo un archivo de
datos de usuario cuando haya almacenado un solo VLB en un solo VPB,
estableciendo una correlación uno a uno entre las LBAs y las PBAs.
Por lo tanto, las centrales antiguas no pueden recibir datos desde
múltiples bancos de memoria que almacenan datos de forma
fragmentada o entrelazada; sencillamente los sistemas no son
compatibles. El problema podría resolverse teóricamente mediante
diseñar una tarjeta de memoria flash multi-banco
con una memoria intermedia de datos 830, figura 8, de capacidad de
datos suficiente para almacenar los cuatro bloques lógicos
virtuales de datos 803, ..., 806 entrantes, y llevar a cabo el
proceso de entrelazado de forma transparente dentro de la tarjeta
de memoria flash. Una central podría simplemente cargar datos
continuamente en una memoria intermedia de datos RAM, del sistema
de memoria flash. La manera en que el sistema de memoria flash
procesa los datos sería transparente, y por lo tanto irrelevante,
para la central. El inconveniente obvio es la cantidad masiva de
memoria que debe reservarse para ser utilizada por la memoria
intermedia de datos RAM. De forma similar, el problema podría
solucionarse mediante consagrar una memoria de acceso aleatorio del
sistema de memoria flash, reduciendo la capacidad real de la propia
memoria flash. Aunque cualquiera de estas soluciones puede resolver
el problema de diseñar un sistema de memoria flash compatible con
diversas centrales, por sí mismas no se prestan adecuadamente a
aplicaciones de memoria flash.
La patente de EE.UU. número 5 604 880 asignada a
Dipert revela, en un sistema informático que tiene una unidad
central de procesamiento (CPU) acoplada a una memoria, un método
para identificar si la memoria es un primer tipo de memoria o un
segundo tipo de memoria. Una tensión de programación se desacopla
respecto de un circuito de control de la memoria, de forma que se
inhabilita al circuito de control para acceder a una matriz de
memoria, de la memoria, durante una operación de escritura en la
memoria. Después se accede a la memoria desde la CPU, a través de
la operación de escritura, para una identificación de dispositivo a
partir de la memoria. El primer tipo de memoria incluye la
identificación de dispositivo, y el segundo tipo de memoria no
incluye la identificación de dispositivo. Se mantiene la integridad
de los datos de la memoria durante la operación de escritura, debido
a que durante la operación no se accede a la matriz de memoria, de
la memoria. Después la memoria es identificada como el primer tipo
de memoria, si la CPU recibe identificación de dispositivo desde la
memoria. La memoria es identificada como el segundo tipo de
memoria, si la CPU no recibe la identificación de dispositivo desde
la memoria.
Por lo tanto, existe la necesidad de una tarjeta
de memoria flash que exhiba las ventajas de velocidad de una unidad
de memoria flash multi-banco, manteniendo la vez
compatibilidad descendente con centrales antiguas diseñadas para
tarjetas de memoria tradicionales de un solo banco. Existe además la
necesidad de una central que pueda utilizar las ventajas de
velocidad de una unidad de memoria flash
multi-banco, que almacene además los datos en una
disposición tal que ulteriormente puedan ser recibidos por centrales
más antiguas. Existe además la necesidad de un medio de uso fácil,
para configurar un sistema de memoria flash al objeto de almacenar
datos en una disposición apropiada de acuerdo con las capacidades y
el formato de la central que transmite los datos para
almacenamiento. Existe además la necesidad de un medio de fácil
manejo, para configurar una central al objeto de enviar y recibir
datos en un formato o protocolo que sea compatible tanto con las
tarjetas tradicionales de memoria flash de un solo banco, como con
las tarjetas de memoria flash multi-banco. Además,
existe la necesidad de conseguir compatibilidad minimizando la vez
la cantidad de memoria invertida en la memoria intermedia de datos
RAM. Existe además la necesidad de conseguir compatibilidad con
diversas centrales minimizando a la vez la cantidad de memoria
flash gastada en la RAM en el administrador despacio.
La presente invención proporciona un sistema de
memoria flash acorde con la reivindicación 1, y un método acorde
con la reivindicación 15. La presente invención revela un método y
aparato para almacenar datos de usuario entrantes, en un sistema de
memoria flash multi-banco que exhibe las ventajas de
velocidad de la unidad multi-banco, mientras que
almacena un bloque lógico virtual de datos en una disposición no
fragmentada, manteniendo de ese modo la compatibilidad descendente
con centrales más antiguas, diseñadas para tarjetas tradicionales
de un solo banco de memoria. La presente invención revela además un
método y un aparato para utilizar las ventajas de velocidad de una
unidad de memoria flash multi-banco, mientras
almacena datos en una disposición accesible a centrales más
antiguas. La presente invención revela además un método y un aparato
para configurar un sistema de memoria flash
multi-banco para almacenar datos en una disposición
apropiada acorde con las capacidades y formato de una central que
transmite los datos para almacenamiento. La presente invención
revela un método y un aparato para configurar una central de alto
rendimiento, que envíe y reciba datos en un formato, o protocolo,
que sea compatible tanto con tarjetas tradicionales de memoria flash
de un solo banco, como con tarjetas de memoria flash
multi-banco. La presente invención revela además un
método y un aparato para conseguir compatibilidad con centrales,
tanto tradicionales como de alto rendimiento, minimizando a la vez
la cantidad de memoria gastada en la memoria intermedia de datos
RAM. La presente invención revela además un método y aparato para
conseguir compatibilidad con centrales, tanto tradicionales como de
alto rendimiento, minimizando la vez la cantidad de memoria gastada
en el administrador despacio RAM.
De acuerdo con una realización de la presente
invención, un sistema de memoria flash comprende una pluralidad de
bancos de memoria separados e independientemente direccionables.
Cada banco de memoria comprende una pluralidad de áreas de
almacenamiento de datos no volátiles, direccionables
independientemente y programables independientemente, y un registro
principal de datos RAM. Un primer registro de datos RAM principal
dentro de un primer banco de memoria, es capaz de programar datos
en áreas de almacenamiento de datos dentro del primer banco de
memoria, y un segundo registro de datos RAM principal dentro de un
segundo banco de memoria, es capaz de programar datos en las áreas
de almacenamiento de datos dentro del segundo banco del memoria. El
sistema de memoria flash comprende además un valor exclusivo del
fabricante, incluyendo medios para cargar el valor exclusivo del
fabricante en un sobre de datos del establecimiento de conexión tras
la puesta en servicio. Cuando no se recibe un establecimiento de
conexión favorable procedente de una central, el sistema de memoria
flash activa por defecto un primer modo de almacenamiento de datos
que sea compatible con centrales tradicionales. Cuando desde la
central se recibe el establecimiento de conexión favorable, el
sistema de memoria flash se configura en un segundo modo de
almacenamiento de datos, capaz de almacenar simultáneamente
múltiples páginas de datos mediante los múltiples bancos de
memoria.
De acuerdo con una realización de la presente
invención, un sistema de memoria flash comprende una pluralidad de
bancos de memoria separados e independientemente direccionables.
Cada banco de memoria comprende una pluralidad de áreas de
almacenamiento de memoria no volátiles, direccionables
independientemente y programables independientemente, y un registro
de datos RAM principal y un registro de datos RAM auxiliar. Unos
primeros registros de datos RAM principal y auxiliar, dentro de un
primer banco de memoria, son capaces independientemente de programar
datos en áreas de almacenamiento de datos dentro del primer banco
de memoria. Un segundo registro de datos RAM principal y un segundo
registro de datos RAM auxiliar dentro de un segundo banco de
memoria, son capaces de programar independientemente datos, en
áreas de almacenamiento de datos dentro del segundo banco de
memoria. Funcionando en un modo de almacenamiento de alto
rendimiento, que utiliza programación simultánea de múltiples
bancos de memoria, los ciclos de programación secuencial utilizarán
alternativamente los registros de datos RAM principal y auxiliar,
para el almacenamiento de datos. El sistema de memoria flash
comprende además un valor exclusivo del fabricante, incluyendo
medios para cargar al valor exclusivo del fabricante en un sobre de
datos tras la puesta en servicio. Si no se recibe ningún
establecimiento de conexión favorable procedente de la central, el
sistema de memoria flash se pone por defecto en un primer modo para
almacenar datos de forma compatible con centrales tradicionales. Si
se recibe un establecimiento de conexión favorable desde la central,
el sistema de memoria flash se configura en un segundo modo, capaz
de almacenar múltiples páginas de datos simultáneamente, mediante
los múltiples bancos de memoria.
De acuerdo con una realización de la presente
invención, un método de programar datos entrantes en un sistema de
memoria flash multi-banco que comprende un valor
exclusivo del fabricante, un controlador conectado operativamente a
una unidad de memoria, el controlador comprendiendo una memoria
intermedia de datos RAM conectada operativamente a un circuito de
interfaz de memoria, la unidad de memoria flash comprendiendo una
pluralidad de bancos de memoria separados e individualmente
direccionables, cada banco de memoria comprendiendo un registro de
datos RAM principal y una pluralidad de bloques físicos de datos
individualmente direccionables e individualmente programables, cada
bloque físico de datos comprendiendo una pluralidad de páginas
individualmente direccionables e individualmente programables, el
método comprendiendo las etapas de generar un sobre de datos de
establecimiento de conexión, cargar el valor exclusivo del
fabricante dentro de un primer sistema de memoria flash en el sobre
datos del establecimiento de conexión; y enviar un sobre de datos
del establecimiento de conexión a una central. Si no se recibe
ningún establecimiento de conexión favorable desde la central, el
sistema de memoria flash se configura por defecto en una primera
configuración de almacenamiento de datos, y programa los datos
entrantes en el sistema de memoria flash de acuerdo con un primer
método de almacenamiento de datos, consistente en programar una
página de datos de usuario por ciclo de programación. Si se recibe
un establecimiento de conexión favorable, el sistema de memoria
flash es configurado en una segunda configuración de almacenamiento
de datos, que incluye la programación simultánea de una pluralidad
de páginas de datos en múltiples bancos de memoria, en cada ciclo
de programación. La programación se lleva a cabo de forma no
entrelazada, de modo que las direcciones de bloque lógico
consecutivas dentro de una dirección de bloque lógico virtual, son
almacenadas en direcciones de bloque físico consecutivas en un
bloque físico de datos común.
De acuerdo con una realización de la presente
invención, un método para programar datos entrantes en un sistema
de memoria flash multi-banco que comprende un valor
exclusivo del fabricante, un controlador conectado operativamente a
una unidad de memoria, el controlador comprendiendo una memoria
intermedia de datos RAM y conectada operativamente a un circuito de
interfaz de memoria, la unidad de memoria flash comprendiendo una
pluralidad de bancos de memoria separados y direccionables
individualmente, cada banco de memoria comprendiendo un registro de
datos RAM principal, un registro de datos RAM auxiliar y una
pluralidad de bloques físicos de datos individualmente
direccionables e individualmente programables, cada bloque físico de
datos comprendiendo una pluralidad de páginas individualmente
direccionables e individualmente programables, el método comprende
las etapas de generar un sobre de datos de establecimiento de
conexión, cargar el valor exclusivo del fabricante dentro de un
sistema de memoria flash en el sobre de datos de establecimiento de
conexión, y enviar el sobre datos de establecimiento de conexión a
una central. Si no se recibe establecimiento de conexión favorable
procedente de la central, el sistema de memoria flash adquiere por
defecto una primera configuración de almacenamiento de datos, y
programa datos entrantes en el sistema de memoria flash, de acuerdo
con un primer método de almacenamiento de datos consistente en
programar una página de datos de usuario por ciclo de programación.
Si se recibe un establecimiento de conexión favorable, el sistema
de memoria flash adopta una segunda configuración de almacenamiento
de datos, que incluye la programación simultánea de una pluralidad
de páginas de datos, en múltiples bancos de memoria en cada ciclo
de programación. La programación se lleva a cabo de forma no
entrelazada, de modo que se almacena direcciones de bloque lógico
consecutivas dentro de una dirección de bloque lógico virtual común,
en direcciones de bloque físico consecutivas en un bloque físico de
datos. Los ciclos de programación secuencial utilizarán
alternativamente los registros de datos RAM principal y auxiliar,
para el almacenamiento de datos.
Estas y otras ventajas, serán evidentes para
aquellas personas cualificadas en el arte, después de haber leído
la siguiente descripción detallada de las realizaciones preferidas,
que se ilustra en los diversos dibujos y figuras.
Los dibujos anexos que se incorpora a esta
especificación, y de la cual forman parte, ilustran realizaciones
de la invención y, junto con la descripción, sirven para explicar
los principios de la invención.
La figura 1 es una ilustración de un grupo de
bloques físicos de memoria, que comprende una pluralidad de
páginas.
La figura 2 es una tarjeta de memoria flash
sustituible, acoplada a una central, de acuerdo con el arte
previo.
La figura 3 revela diversos registros y campos
utilizados para correlación y almacenamiento de datos.
La figura 4 es un diagrama de flujo que revela
un método de correlación de direcciones físicas y lógicas durante
el almacenamiento de datos.
La figura 5 es un diagrama de flujo que revela
un método de recepción de datos.
La figura 6 es un diagrama ilustrado de un
sistema de memoria flash que comprende múltiples bancos de memoria,
cada banco comprendiendo un solo registro de datos RAM.
La figura 7 es un diagrama ilustrado, de un
sistema de memoria flash que comprende múltiples bancos de memoria,
cada banco comprendiendo dos registros de datos RAM.
La figura 9 es un diagrama de flujo que revela
una forma de implementar el algoritmo de almacenamiento de
múltiples bancos de memoria, de alto rendimiento, acorde con la
presente invención.
La figura 10 muestra una central que contiene
datos de correlación acoplados a un sistema de memoria flash.
La figura 11 muestra un sobre de datos de
establecimiento de conexión.
Ahora se hará referencia, en detalle, a las
realizaciones preferidas de la invención, de las que se ilustra
ejemplos en los dibujos anexos. Si bien la invención será descrita
junto con las realizaciones preferidas, debe entenderse que estas
no están concebidas para limitar la invención a estas realizaciones.
Por el contrario, la invención pretende cubrir alternativas,
modificaciones y equivalentes, que puede incluirse dentro del
alcance de la invención tal como se define mediante las
reivindicaciones anexas. Por ejemplo, dentro de la siguiente
revelación, comúnmente puede aludirse a una colección de datos como
un bloque lógico virtual de datos, que comprende bloques lógicos
componentes, de datos. Una discusión en estos términos no pretende
limitar la invención a unidades específicas de datos actualmente
utilizadas de forma general en la tecnología, sino simplemente
ilustrar la función de agrupamientos y
sub-agrupamientos de datos, en términos familiares
para aquellas personas cualificadas en el arte. Este mismo
principio es cierto para agrupamientos específicos de memoria
física, tales como bloques físicos de datos y páginas componentes
dentro de bloques físicos de datos, que son presentados como
ejemplos representativos de cómo las áreas mayores de memoria
direccionable pueden estar compuestas de partes de áreas de memoria
menores. Además, en la siguiente descripción detallada de la
presente invención se enumera numerosos detalles específicos para
ilustrar de forma más completa la presente invención. Sin embargo,
será evidente para una persona de cualificación ordinaria en el arte
previo, que la presente invención puede practicarse sin tales
detalles específicos. En otros casos no se ha descrito en detalle
métodos, procedimientos, componentes y circuitos bien conocidos,
para no ofuscar innecesariamente los aspectos de la presente
invención.
Algunas partes de las descripciones detalladas
que siguen, son presentadas en términos de procedimientos, bloques
lógicos, procesos y otras representaciones simbólicas de operaciones
de bits de datos, dentro de una memoria informática. Estas
descripciones y representaciones son los medios utilizados por
aquellas personas cualificadas en la tecnología de procesamiento de
datos, para transportar de forma más eficaz lo sustancial de su
trabajo, a otras personas cualificadas en el arte. Aquí un
procedimiento, bloque lógico, proceso, etc., se concibe en general
como una secuencia auto-consistente de pasos o
instrucciones, que conducen a un resultado deseado. Estas etapas
son las que requieren manipulaciones físicas de cantidades físicas.
Cuando se trata con dispositivos, componentes, estructuras o
actividades de tipo informático, en ocasiones se ha demostrado
conveniente, principalmente por razones de un uso común, referirse a
estas señales como bits, flujos de bits, flujos de datos, sobres,
paquetes, registros, campos, bytes, valores, elementos, símbolos,
caracteres, términos, números o similares.
Además debe mantenerse en mente que, en las
discusiones de componentes eléctricos, los términos
"conectado", "conectado operativamente", "conectado
eléctricamente" y otros similares, denotan un camino eléctrico
entre los componentes. Sin embargo debe entenderse que tales
términos no descartan la existencia de componentes adicionales
interpuestos entre los dos componentes originales, incluso si uno de
tales componentes adicionales tiene la capacidad de interrumpir, o
afectar a, la transmisión de señales o de datos entre los dos
componentes originales. Finalmente, los datos que se transmite
comprenden al menos tres elementos diferentes: los datos, el sobre
que contiene los datos, a menudo denominado bloque lógico o bloque
lógico virtual, y la dirección. Puede pensarse en una dirección,
como es una LBA, como identificativa de una colección de datos o del
sobre (bloque lógico) en el que los datos están almacenados. Una
dirección real puede existir como bits dentro de un paquete de
datos, o puede ser generada mediante un procesador receptor que
cuenta paquetes de datos recibidos consecutivamente. En tal caso,
una dirección tampoco existe como entidad real. El propio bloque
lógico puede considerarse como una colección de datos, o como un
sobre que contiene una colección de datos. Las direcciones de
bloque lógico consecutivas pueden considerarse como pertenecientes a
un sobre común de datos (el bloque lógico virtual), o a una
dirección común (la dirección de bloque lógico virtual). El propio
término "consecutivo" puede describirse de diversas formas
como direcciones consecutivas (por ejemplo LBAs consecutivas),
sobres de datos consecutivos (por ejemplo LBs consecutivos), o
colecciones consecutivas de datos dentro de sobres consecutivos
definidos por direcciones consecutivas. Debido a la naturaleza
efímera de los datos y en especial de los datos en transmisión,
como se ilustra mediante estos ejemplos, con frecuencia no hay una
forma (correcta) de describir relaciones entre datos, sobres de
datos, y direcciones de datos/sobres. Aunque se ha tenido cuidado
para utilizar los términos que clarifican mejor un proceso o
estructura aquí descritos, las descripciones de las relaciones, la
manipulación y el almacenamiento de datos, de sobres de datos y de
sus direcciones respectivas, deben siempre evaluarse a la luz del
contexto en que se produce las afirmaciones.
Un objetivo de la presente invención involucra
la programación simultánea de la tarjeta de memoria flash
multi-banco, de forma que un bloque lógico virtual
unitario, de datos, es almacenado dentro de un bloque físico de
datos, donde se almacena direcciones de bloque lógico consecutivas
en direcciones de bloque físico consecutivas, preservando de ese
modo la relación secuencial uno a uno, necesaria para recibir los
datos de acuerdo con arte previo. Este método de programación de
alto rendimiento puede ilustrarse utilizando la figura 8, que se
utiliza también para ilustrar el proceso de almacenamiento de datos
acorde con el arte previo. De acuerdo con la presente invención,
los cuatro bloques lógicos entrantes de datos, 803, 804, 805, 806 no
se fragmentarían durante los procesos de almacenamiento o
programación. Los bloques lógicos de datos que se haya direccionado
consecutivamente dentro de un mismo bloque lógico virtual, antes del
almacenamiento, retendrían direcciones físicas consecutivas cuando
fueran almacenados en la memoria física. Por ejemplo, los bloques
lógicos de direcciones consecutivas 810, 811, ..., 814 que
comprenden la VLBA 21, 803, se enlazarían respectivamente en
direcciones de bloque físico direccionadas consecutivamente, 858,
859, ..., 860, dentro del mismo bloque físico de datos 850. Para
conseguir un almacenamiento no fragmentado dentro de la memoria
física, los datos no pueden entrelazarse cuando son enviados desde
la memoria intermedia de datos RAM 830, a la pluralidad de registros
de datos RAM 840, ..., 846. Este proceso, mediante el que un
almacenamiento no fragmentado puede tener lugar dentro de un
sistema de memoria flash multi-banco, involucra el
almacenamiento de un bloque lógico desde cada VLB por ciclo de
programación. La pluralidad de direcciones de bloque lógico que se
programa en cualquier ciclo dado, son idénticas. En las sucesivas
etapas de programación, el proceso se mueve a través de bloques
lógicos direccionados consecutivamente. Las direcciones de bloque
lógico definidas por una VLBA común son enviadas siempre al mismo
registro de datos RAM, y almacenadas en un bloque físico de datos
común, de modo que los datos procedentes de direcciones de bloque
lógico consecutivas, son almacenados en direcciones de bloque físico
consecutivas, como se ilustra aquí.
Durante el primer ciclo se carga datos
procedentes del primer bloque lógico 810 de la primera VLB 803, en
el primer registro de datos RAM 840. Los datos procedentes del
primer bloque lógico 815 del segundo VLB 804, son cargados en el
segundo registro de datos RAM 842. Los datos procedentes del primer
bloque lógico 819 del tercer VLB 805 son cargados en el tercer
registro de datos RAM 844, y los datos procedentes del primer bloque
lógico 810 del cuarto VLB 806, son cargados en el corto registro de
datos RAM 846. Los cuatro registros de datos RAM 840, ..., 846
programan entonces simultáneamente sus contenidos en páginas físicas
858, 861, 864 y 870, respectivamente.
Durante el segundo ciclo, los datos procedentes
del segundo bloque lógico 811, 816, 820, 824 de los respectivos
cuatro bloques lógicos virtuales 803, 804, 805, 806 serían cargados
en los cuatro respectivos registros de memoria RAM 840, ..., 846, y
después programarían simultáneamente sus contenidos en páginas
físicas 858, 861, 864 y 870 respectivamente.
El proceso continuaría hasta que los bloques
lógicos finales 814, 818, 822, 826 procedentes de los cuatro VLBs
803, 804, 805, 806 sean programados respectivamente en las páginas
finales 860, 863, 866, 872 de los cuatro respectivos bloques
físicos de datos 850, 852, 854, 856 distribuidos entre los cuatro
bancos de memoria 832, 834, 836, 838 a modo de ejemplo. A través de
este proceso, la orientación original de bloques lógicos
consecutivos dentro de cada VLB, se retiene en páginas consecutivas
de los bloques físicos de datos.
La figura 9 es un diagrama de flujo que describe
una forma mediante la que podría conseguirse esta disposición de
datos. Se entiende que este diagrama de flujo describe una secuencia
de eventos para conseguir este objetivo. Aquellas personas
cualificadas en el arte serán capaces de generar algoritmos que sean
funcionalmente idénticos, aunque las etapas concretas pueden ser
diferentes respecto de las que se revela aquí. Por lo tanto, el
diagrama de flujo de la figura 9 no se concibe como una limitación
de un método de almacenamiento de datos previsto por la presente
invención. Cuando una central ha identificado datos entrantes para
su almacenamiento, empieza en el primer bloque lógico virtual del
archivo de datos. En la primera etapa 902 el procesador identifica
la dirección de bloque lógico menor que contiene datos entrantes.
Esta se convierte en la dirección de bloque lógico seleccionada. En
la siguiente etapa 904, el controlador del sistema de memoria flash
almacena datos procedentes del actual bloque lógico, dentro del
actual bloque lógico virtual, en la primera "página" de la
memoria intermedia de datos RAM. En la siguiente etapa 906, las
direcciones de bloque lógico virtual se incrementan en uno. (Aunque
el algoritmo aquí descrito asume que las direcciones de bloque
lógico virtual que comprenden el archivo de datos entrante, son
direcciones de bloque lógico virtual consecutivas para el caso
ilustrado, una persona cualificada en el arte podría conocer como
implementar el presente algoritmo para almacenar un archivo
entrante de datos de usuario que comprenda direcciones de bloque
lógico virtual no secuenciales.) En la siguiente etapa 908, la
"página" dentro de la memoria intermedia de datos RAM se
incrementa en uno. En la siguiente etapa 907, el procesador
concatena el desplazamiento LBA en la VLBA, para formar una LBA
seleccionada. En la siguiente etapa 910, los datos definidos de
acuerdo con la actual LBA y la actual VLBA, son almacenados en la
página actual de la memoria de intermedia de datos RAM. En la
siguiente etapa 912, el procesador determina si la VLBA actual es
la última VLBA dentro del archivo de datos entrante. Si no es la
última VLBA, el procesador vuelve a la etapa 906 y repite el ciclo
desde ese punto. Si la VLBA actual es la última VLBA en el archivo
de datos entrante, entonces el procesador pasa a la etapa 914, donde
se almacena páginas consecutivas dentro de la memoria intermedia de
datos RAM, en sucesivos registros de datos RAM. De acuerdo con la
siguiente etapa 916, el controlador determina si ya ha seleccionado
una dirección de bloque físico virtual, en la que almacenar el
presente archivo de datos. Si no se ha seleccionado la VPBA, el
procesador selecciona una VPBA libre en la etapa 918. Cuando un
procesador ha seleccionado una VPBA libre, de acuerdo con la etapa
920, un procesador concatena el desplazamiento de VLB actual junto
con la VPBA actual, formando una PBA actual. De acuerdo con la
siguiente etapa 922, los registros de datos RAM programan sus
contenidos en páginas dentro de los respectivos bancos de memoria
definidos por la actual dirección de bloque físico. En la etapa 924,
el procesador determina si la LBA actual es la LBA final, en el
archivo de datos entrante. Si el bloque lógico final, de datos, ha
sido almacenado, el proceso finaliza de acuerdo con la etapa 932. Si
los datos almacenados no son la LBA final en el archivo de datos
entrante, un procesador incrementa la LBA en la etapa 926, reinicia
la VLBA a la primera VLBA en los datos del archivo entrante en la
etapa 928, y reinicia la primera "página" dentro de la memoria
intermedia de datos RAM, etapa 930. El procesador vuelve la etapa
907 y prosigue el proceso de almacenamiento de datos.
Debido a que el algoritmo de almacenamiento de
datos de alto rendimiento aquí descrito, extrae datos procedentes
de múltiples bloques lógicos virtuales, a través de todo el archivo
de datos de usuario entrantes en cada ciclo de almacenamiento de
datos, si el proceso revelado arriba tiene lugar exclusivamente
dentro del sistema de memoria flash 600 de la figura 6 la memoria
intermedia de datos RAM 607, 830 tendría que ser lo suficientemente
grande como para contener todo el archivo de datos de usuario
entrantes 800. Por lo tanto, de acuerdo con la realización
preferida, los bloques lógicos de datos son seleccionados por la
central 601 en cada ciclo de programación, y enviados a la memoria
intermedia de datos RAM 607. Ventajosamente, esto permite que la
memoria intermedia de datos RAM 607 reduzca sustancialmente su
tamaño, liberando el espacio de memoria disponible dentro del
sistema de memoria flash 600. En la realización preferida, la
memoria intermedia de datos RAM tiene una capacidad de memoria
igual a la memoria total de los registros de datos RAM 930, ... 936
presentes dentro del sistema de memoria flash. La cantidad de
memoria de acceso aleatorio dentro de un sistema de memoria flash,
puede reducirse adicionalmente mediante eliminar el administrador de
espacio 370, figura 3, respecto del sistema de memoria flash 600, y
mediante almacenar los datos de correlación 1006 dentro de la
central 601, como se describe en la figura 10.
Un potencial inconveniente del proceso de alto
rendimiento de almacenamiento de datos no entrelazado, acorde con
la presente invención, consiste en la compatibilidad con los
sistemas de memoria flash tradicionales de "un solo banco" o
centrales tradicionales. La presente invención selecciona un bloque
lógico de datos a partir de múltiples VLBs en cada ciclo de
programación. Los sistemas tradicionales de memoria flash
almacenaban un bloque lógico por ciclo, y seleccionaban
consecutivamente bloques lógicos. El almacenamiento de datos desde
un segundo VLB no comenzaba hasta que había sido almacenada la
totalidad de datos procedentes del primer VLB.
Por lo tanto, aunque la disposición de los datos
almacenados dentro de la memoria física es similar, o idéntica,
cuando se utiliza una central tradicional o una central de alto
rendimiento, el proceso mediante el que se almacena los datos en
ambas circunstancias es radicalmente diferente. En la realización
tradicional, los bloques lógicos de datos recibidos
secuencialmente, son programados en direcciones de bloque físico
consecutivas, dentro del mismo bloque físico de datos. En la
realización de alto rendimiento, los bloques lógicos de datos
recibidos secuencialmente, son programados simultáneamente en
bloques físicos de datos separados, distribuidos entre bancos de
memoria separados. Si un sistema de memoria flash intentase
almacenar datos entrantes procedentes de una central tradicional,
de acuerdo con el método de alto rendimiento aquí descrito, los
datos procedentes de una central tradicional se fragmentarían de
forma similar a como ocurre en el proceso de entrelazado,
destruyendo el verdadero objetivo de la invención. Debido a que el
sistema de memoria flash debe adoptar un algoritmo diferente de
almacenamiento de datos para centrales tradicionales y de alto
rendimiento, el sistema de memoria flash necesita tener una forma
de determinar si la central con la que se está comunicando es
tradicional o de alto rendimiento. Después de llevar a cabo esta
determinación, el sistema de memoria flash tiene que ser capaz de
alto-configurarse, para almacenar datos de acuerdo
con un método que sea el apropiado para tal central.
De acuerdo con la presente invención, en el
momento del encendido tiene lugar un proceso de establecimiento de
conexión y configuración. Durante el proceso del establecimiento de
conexión se intercambia información entre el sistema de memoria
flash y la central. La figura 11 describe un sobre 1100 de datos
transferidos desde el sistema de memoria flash a la central, en la
puesta en servicio. El sobre 1100 tiene típicamente 512 bytes,
incluyendo una cabecera 1102, datos tradicionales 1104 típicamente
transferidos en la puesta en servicio, y una gran parte no
utilizada 1106 del sobre de datos 1100. Cuando una central
tradicional recibe el sobre datos 1100 en la puesta en servicio, no
procesa ni controla lo que hay almacenado dentro de la parte no
utilizada 1106 del sobre de datos 1100. De acuerdo con la presente
invención, por lo tanto, el sistema de memoria
multi-banco insertará un valor exclusivo del
fabricante en la parte no utilizada 1106 del sobre datos 1100, que
es enviado a la central en la puesta en servicio. Hay tres posibles
escenarios en la puesta en servicio.
En el primer escenario, una "tarjeta de
memoria" tradicional o un sistema de memoria flash, envían un
sobre de establecimiento de conexión a la central de alto
rendimiento, en la puesta en servicio. Las tarjetas de memoria
tradicionales no tienen un valor exclusivo del fabricante, ni un
medio para escribir tal valor en la parte no utilizada 1106 del
sobre del establecimiento de conexión. Tras la recepción del sobre
de establecimiento de conexión, la central de alto rendimiento
examina la parte no utilizada 1106 del sobre 1100, y determina que
la tarjeta de memoria es una tarjeta de memoria tradicional.
Después, la central adopta por defecto la configuración tradicional
de envío de datos desde direcciones de bloque lógico consecutivas,
de datos.
En el segundo posible escenario, en la puesta en
servicio una tarjeta de memoria de alto rendimiento escribe un
valor exclusivo del fabricante, en la parte no utilizada del sobre
del establecimiento de conexión, y envía el paquete a una central
tradicional. Debido a que la central no es una central de alto
rendimiento, no puede leer ni procesar el valor exclusivo del
fabricante, y no responde identificándose a sí misma como una
central de alto rendimiento. El estado por defecto de la tarjeta de
memoria de alto rendimiento es el modo estándar, en el que se
almacena direcciones de bloque lógico consecutivas en direcciones de
bloque físico consecutivas. Debido a que la central no puede acusar
el valor exclusivo del fabricante en un establecimiento de conexión
de vuelta, la tarjeta de memoria de alto rendimiento funciona en el
modo por defecto, y no lleva a cabo la programación simultánea en
bancos de memoria separados.
En un tercer escenario, en la puesta en servicio
una tarjeta de memoria de alto rendimiento inserta un valor
exclusivo del fabricante en la parte no utilizada del sobre del
establecimiento de conexión, y envía el paquete a una central de
alto rendimiento. Tras la recepción de un sobre de establecimiento
de conexión, que contiene el valor exclusivo del fabricante en la
parte no utilizada del paquete, la central de alto rendimiento envía
a la tarjeta de memoria de alto rendimiento un establecimiento de
conexión favorable, que confirma la presencia de la central de alto
rendimiento. La central se configura también a sí misma para enviar
datos desde múltiples VLBs en cada ciclo de programación. Tras
recibir la respuesta apropiada procedente de la central de alto
rendimiento, la tarjeta de memoria de alto rendimiento se configura
entonces a sí misma para almacenar datos entrantes en bancos de
memoria sucesivos, como se ha revelado de acuerdo con la presente
invención.
En una realización alternativa, la memoria
intermedia de datos RAM 607 dentro del sistema de memoria flash de
alto rendimiento, es lo suficientemente grande para almacenar todo
el archivo de datos de usuario entrantes. Una desventaja de esta
realización es la significativa cantidad de memoria consumida por la
memoria intermedia de datos RAM 607. Una ventaja de esta
realización es que podría ser capaz de descargar un archivo completo
de datos de usuario desde la central tradicional, y llevar a cabo
un almacenamiento simultáneo multi-banco,
permitiendo ese modo a una central tradicional utilizar las ventajas
de velocidad de un sistema de memoria flash
multi-banco.
\vskip1.000000\baselineskip
US5604880A, Dipert [0034]
Claims (29)
1. Un sistema de memoria flash (1001) que
comprende una pluralidad de bancos de memoria separados y
direccionables independientemente (1020, 1022, 1024, 1026), cada
banco de memoria (1020, 1022, 1024, 1026) comprendiendo:
- a.
- una pluralidad de áreas de almacenamiento de datos no volátiles, direccionables independientemente y programables independientemente;
- b.
- un registro de datos RAM principal (1030, 1032, 1034, 1036); y
- c.
- un valor exclusivo del fabricante, incluyendo medios para cargar el valor exclusivo del fabricante en un paquete de datos de establecimiento de conexión (1100), tras la puesta en servicio,
donde el sistema de memoria flash (1001) está
configurado para funcionar selectivamente en un primer nuevo de
almacenamiento de datos y en un segundo modo de almacenamiento de
datos, en respuesta al valor exclusivo del fabricante, el primer
modo de almacenamiento de datos siendo un modo por defecto, en el
que un solo ciclo de programación acorde con el primer modo de
almacenamiento de datos, comprende un almacenamiento de datos en un
solo registro de datos RAM, para una programación en una sola
página.
2. El sistema de memoria flash (1001) acorde con
la reivindicación 1, que comprende además un controlador (1016) con
un circuito de interfaz de central (1010), una memoria intermedia de
datos RAM (1012) y un circuito de interfaz de memoria (1014), la
memoria intermedia de datos RAM (1012) estando acoplada
operativamente al circuito de interfaz de central (1010) y al
circuito de interfaz de memoria (1014), el circuito de interfaz de
memoria (1014) estando acoplado operativamente al registro de datos
RAM principal (1030, 1032, 1034, 1036) en cada uno, de la
pluralidad de bancos de memoria (1020, 1022, 1024, 1026), por medio
de un bus de datos (1040), donde el controlador (1016) es capaz de
controlar una programación de datos en la pluralidad de áreas de
almacenamiento de datos distribuidas entre la pluralidad de bancos
de memoria (1020, 1022, 1024, 1026), a través del registro de datos
RAM principal (1030, 1032, 1034, 1036) asociado con la respectiva
pluralidad de bancos de memoria (1020, 1022, 1024, 1026).
3. El sistema de memoria flash acorde con la
reivindicación 2, en el que las áreas de almacenamiento de datos
dentro de la pluralidad de bancos de memoria (1020, 1022, 1024,
1026) incluyen una pluralidad de bloques físicos de datos, cada
bloque de físico de datos estando compuesto por una pluralidad de
páginas.
4. El sistema de memoria flash (1001) acorde con
la reivindicación 3, en el que el único ciclo de programación
acorde con el segundo modo de almacenamiento de datos, comprende el
almacenamiento de datos procedentes de la memoria intermedia de
datos RAM (1012), en una pluralidad de registros de datos RAM (1030,
1032, 1034, 1036),
donde la pluralidad de registros de datos RAM
(1030, 1032, 1034, 1036) programa datos simultáneamente en una
respectiva pluralidad de páginas.
5. El sistema de memoria flash (1001) acorde con
la reivindicación 4, que comprende además:
- a.
- una central (1002); y
- b.
- medios para transmitir el paquete de datos de establecimiento de conexión (1100) a la central (1002), tras la puesta en servicio.
6. El sistema de memoria flash (1001) acorde con
la reivindicación 5, en el que el controlador (1016) está
configurado para almacenar datos entrantes de usuario, de acuerdo
con el primer modo de almacenamiento de datos, cuando no se recibe
un establecimiento de conexión favorable procedente de la central
(1002).
7. El sistema de memoria flash (1001) acorde
con la reivindicación 6, en el que el controlador (1016) está
configurado para almacenar datos de usuario entrantes, de acuerdo
con el segundo modo de almacenamiento de datos, cuando se recibe un
establecimiento de conexión favorable procedente de la central
(1002).
8. El sistema de memoria flash (1001) acorde
con la reivindicación 7, en el que un registro de datos RAM
comprende memoria suficiente para programar una página física.
9. El sistema de memoria flash (1001) acorde con
la reivindicación 7, que comprende además medios para seleccionar
una pluralidad de bloques lógicos de datos entrantes, a ser
programados en páginas separadas dentro del sistema de memoria
flash (1001), durante el ciclo de funcionamiento.
10. El sistema de memoria flash (1001) acorde
con la reivindicación 9, en el que el medio para seleccionar la
pluralidad de bloques lógicos es residente dentro de la central
(1002).
\global\parskip0.900000\baselineskip
11. El sistema de memoria flash (1001) acorde
con la reivindicación 10, en el que la central (1002) es una cámara
digital.
12. El sistema de memoria flash (1001) acorde
con la reivindicación 9, en el que el medio para seleccionar la
pluralidad de bloques lógicos es residente dentro de un sistema de
memoria flash (1001).
13. El sistema de memoria flash acorde con la
reivindicación 12, en el que la memoria intermedia de datos RAM
(1012) comprende memoria suficiente para almacenar un archivo
completo de datos de usuario entrantes.
14. El sistema de memoria flash (1001) acorde
con la reivindicación 9, en el que cada banco de memoria (1020,
1022, 1024, 1026) comprende además un registro de datos RAM
auxiliar, donde una primera memoria intermedia de datos RAM
auxiliar dentro del primer banco de memoria, es capaz de programar
datos en áreas de almacenamiento dentro del primer banco de
memoria, y un segundo registro de datos RAM auxiliar es capaz de
programar datos en áreas de almacenamiento de datos dentro del
segundo banco de memoria.
15. Un método de programación de datos entrantes
en un sistema de memoria flash multi-banco (1001),
que comprende un valor exclusivo del fabricante, un controlador
(1016) acoplado operativamente al sistema de memoria (1001), el
controlador (1016) comprendiendo una memoria intermedia de datos
RAM (1012) acoplada operativamente a un circuito de interfaz de
memoria (1014), el sistema de memoria flash (1001) comprendiendo una
pluralidad de bancos de memoria separados y direccionables
individualmente (1020, 1022, 1024, 1026), cada banco de memoria
(1020, 1022, 1024, 1026) comprendiendo un registro de datos RAM
principal (1030, 1032, 1034, 1036) y una pluralidad de bloques
físicos de datos individualmente direccionables e individualmente
programables, cada bloque físico de datos comprendiendo una
pluralidad de páginas individualmente direccionables e
individualmente programables, comprendiendo el método las etapas
de:
- a.
- generar un paquete de datos de establecimiento de conexión (1100);
- b.
- cargar el valor exclusivo del fabricante dentro del sistema de memoria flash (1001), en el paquete de datos de establecimiento de conexión (1100);
- c.
- enviar el paquete de datos de establecimiento de conexión (1100) procedente del sistema de memoria flash (1001), a una central (1002);
- d.
- adoptar por defecto una primera configuración de almacenamiento de datos; y
- e.
- programar datos entrantes en el sistema de memoria flash (1001), de acuerdo con un primer método de almacenamiento de datos, donde el primer método de almacenamiento de datos comprende la etapa de programar una página de datos de usuario por cada ciclo de programación,
donde el sistema de memoria flash (1001) está
configurado para funcionar selectivamente en un primer modo de
almacenamiento de datos y en un segundo modo de almacenamiento de
datos, en respuesta al valor exclusivo del fabricante, siendo el
primer modo de almacenamiento de datos un modo por defecto.
16. El método acorde con la reivindicación 15,
comprende además las etapas de:
- a.
- enviar una respuesta de establecimiento de conexión, desde la central (1002) al sistema de memoria flash (1001);
- b.
- configurar el sistema de memoria flash (1001) de acuerdo con una segunda configuración de almacenamiento de datos; y
- c.
- programar datos entrantes en el sistema de memoria flash (1001), de acuerdo con el segundo método de almacenamiento de datos, donde el segundo método de almacenamiento de datos comprende la etapa de programar simultáneamente una pluralidad de páginas de datos, en múltiples bancos de memoria en cada ciclo de programación.
17. El método acorde con la reivindicación 16,
en el que la etapa de programar datos entrantes en el sistema de
memoria flash (1001) acorde con el segundo método de almacenamiento
de datos, comprende además las etapas de:
- a.
- cargar un primer bloque lógico inicial de datos definido por una primera VLBA, en un primer registro de datos RAM principal dentro de un primer banco de memoria;
- b.
- cargar un segundo bloque lógico inicial de datos definido por una segunda VLBA, en un segundo registro de datos RAM principal dentro de un segundo banco de memoria; y
- c.
- programar simultáneamente:
- i.
- el primer bloque lógico inicial de datos dentro del primer registro de datos RAM principal, en una primera página inicial de un primer bloque físico de datos, dentro del primer banco de memoria, y
\global\parskip1.000000\baselineskip
- ii.
- el segundo bloque lógico inicial de datos dentro del segundo registro de datos RAM principal, en una segunda página inicial de un segundo bloque físico de datos, dentro del segundo banco de memoria.
18. El método acorde con la reivindicación 17,
que comprende además las etapas de:
- a.
- cargar un primer bloque lógico subsiguiente de datos definido por la primera VLBA, en el primer registro de datos RAM principal dentro del primer banco de memoria;
- b.
- cargar un segundo bloque lógico subsiguiente de datos definido por una segunda VLBA, en el segundo registro de datos RAM principal, dentro del segundo banco de memoria; y
- c.
- programar simultáneamente:
- i.
- el primer bloque lógico subsiguiente de datos dentro del primer registro de datos RAM principal, en una primera página subsiguiente del primer bloque físico de datos; y
- ii.
- el segundo bloque de lógico subsiguiente de datos dentro del segundo registro de datos RAM principal, en una segunda subsiguiente página del segundo bloque físico de datos.
19. El método acorde con la reivindicación 18,
en el que:
- a.
- el primer bloque lógico inicial y el primer bloque lógico subsiguiente están definidos mediante direcciones de bloque lógico consecutivas, dentro del primer bloque lógico virtual;
- b.
- el segundo bloque lógico inicial y el segundo bloque lógico subsiguiente están definidos mediante direcciones de bloque lógico consecutivas, dentro del segundo bloque lógico virtual;
- c.
- la etapa de cargar el primer bloque lógico subsiguiente, sigue secuencialmente a la etapa de cargar los datos del primer bloque lógico inicial en el primer registro de datos RAM principal;
- d.
- la etapa de cargar el segundo bloque lógico subsiguiente, sigue secuencialmente a la etapa de cargar los datos del segundo bloque lógico inicial en el segundo registro de datos RAM principal;
- e.
- la primera página inicial y la primera página subsiguiente están definidas por direcciones de bloque físico consecutivas, dentro del primer bloque físico de datos; y
- f.
- la segunda página inicial y la segunda página subsiguiente están definidas por direcciones de bloque físico consecutivas, dentro del segundo bloque físico de datos.
20. El método acorde con la reivindicación 19,
en el que cada uno de la pluralidad de bloques físicos de datos
dentro de la pluralidad de bancos de memoria (1020, 1022, 1024,
1026) del sistema de memoria flash (1001), comprende un número
idéntico de páginas que están direccionadas de acuerdo con un
esquema idéntico de direccionamiento de página.
21. El método acorde con la reivindicación 20,
en el que la primera página inicial dentro del primer bloque físico
de datos y la segunda página inicial dentro del segundo bloque
físico de datos, están definidas de acuerdo con una misma dirección
de página.
22. El método acorde con la reivindicación 21,
en el que cada banco de memoria (1020, 1022, 1024, 1026) comprende
un número idéntico de bloques físicos de datos, que están
direccionados de acuerdo con un esquema idéntico de
direccionamiento de bloque.
23. El método acorde con la reivindicación 22,
en el que el primer bloque físico de datos y el segundo bloque
físico de datos, están definidos de acuerdo con una misma dirección
de bloque físico.
24. El método acorde con la reivindicación 23,
en el que una dirección del primer banco de memoria y una dirección
del segundo banco de memoria son direcciones consecutivas.
25. El método acorde con la reivindicación 24,
en el que cada uno de la pluralidad de bancos de memoria separados
y direccionables individualmente (1020, 1022, 1024, 1026), comprende
individualmente un segundo registro de datos RAM auxiliar, el
método comprendiendo además las etapas de:
- a.
- cargar el primer bloque lógico subsiguiente de datos dentro del primer bloque lógico virtual, en un primer registro de datos RAM auxiliar dentro del primer banco de memoria;
- b.
- cargar el segundo bloque lógico subsiguiente de datos dentro del segundo bloque lógico virtual, en el segundo registro de datos RAM auxiliar dentro del segundo banco de memoria; y
- c.
- programar simultáneamente:
- i.
- el primer bloque lógico de datos subsiguiente, dentro del primer registro de datos RAM auxiliar, en una página subsiguiente dentro del primer bloque físico de datos; y
- ii.
- el segundo bloque lógico subsiguiente de datos, dentro del segundo registro de datos RAM auxiliar, en una segunda página subsiguiente dentro del segundo bloque físico de datos.
26. El método acorde con la reivindicación 25,
en el que
- a.
- el primer bloque lógico inicial y el primer bloque lógico subsiguiente son direccionados consecutivamente dentro de las primeras direcciones de bloque lógico virtual;
- b.
- el segundo bloque lógico inicial y el segundo bloque lógico subsiguiente son direccionados consecutivamente dentro de las segundas direcciones de bloque lógico virtual;
- c.
- la etapa de cargar un primer bloque lógico inicial y la etapa de cargar un primer bloque lógico subsiguiente, comprenden las etapas secuenciales de cargar datos en una pluralidad de registros de datos RAM del primer banco de memoria;
- d.
- la etapa de cargar el segundo bloque lógico inicial y la etapa de cargar el segundo bloque lógico subsiguiente, comprenden las etapas secuenciales de cargar datos en una pluralidad de registros de datos RAM del segundo banco de memoria;
- e.
- la primera página inicial y la primera página subsiguiente son direccionadas consecutivamente dentro del primer bloque físico de datos; y
- f.
- la segunda página inicial y la segunda página subsiguiente son direccionadas consecutivamente dentro del segundo bloque físico de datos.
27. El método acorde con la reivindicación 20,
en el que la etapa de programar datos entrantes en el sistema de
memoria flash (1001) de acuerdo con el primer método de
almacenamiento de datos, comprende las etapas secuenciales de:
- a.
- programar datos definidos por una primera dirección de bloque lógico, en una primera página de un bloque físico de datos; y
- b.
- programar datos definidos por una segunda dirección de bloque lógico, en una segunda página del bloque físico de datos; donde la primera dirección de bloque lógico y la segunda dirección de bloque lógico están definidas por direcciones consecutivas dentro de una misma dirección de bloque lógico virtual, y donde la primera página y la segunda página están definidas por direcciones de bloque físico consecutivas, dentro del mismo bloque físico de datos.
28. El sistema de memoria flash (1001) acorde
con la reivindicación 1, que comprende además:
- a.
- medios para examinar el paquete de datos de establecimiento de conexión (1100) enviado por el sistema de memoria flash (1001);
- b.
- medios para almacenar simultáneamente una pluralidad de áreas de almacenamiento de datos, de forma entrelazada en la pluralidad de bancos de memoria (1020, 1022, 1024, 1026) desde los registros de datos RAM principales (1030, 1032, 1034, 1036), en respuesta a un valor exclusivo del fabricante predeterminado, de forma que se reduce el tiempo de programación, y
- c.
- medios para almacenar datos secuencialmente en los bancos de memoria (1020, 1022, 1024, 1026) de forma no entrelazada, en ausencia del valor exclusivo del fabricante predeterminado.
29. El sistema de memoria flash (1001) acorde
con la reivindicación 1, que comprende además:
- a.
- medios para examinar el paquete de datos de establecimiento de conexión (1100) enviado por el sistema de memoria flash (1001); y
- b.
- medios para almacenar datos secuencialmente en los bancos de memoria (1020, 1022, 1024, 1026) de forma no entrelazada, en ausencia del valor exclusivo del fabricante predeterminado,
donde el sistema de memoria flash (1001) está
configurado para programar simultáneamente una pluralidad de
páginas de datos en la pluralidad de bancos de memoria (1020, 1022,
1024, 1026), para una central (1002) que es capaz de un
funcionamiento de memoria flash de alto rendimiento.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US611676 | 2000-07-07 | ||
US09/611,676 US6721843B1 (en) | 2000-07-07 | 2000-07-07 | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2297787T3 true ES2297787T3 (es) | 2008-05-01 |
Family
ID=24449984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES06009719T Expired - Lifetime ES2297787T3 (es) | 2000-07-07 | 2001-05-17 | Arquitectura de memoria flash que implementa multiples bancos de memoria flash programables simultaneamente, que son compatibles con una central. |
Country Status (8)
Country | Link |
---|---|
US (1) | US6721843B1 (es) |
EP (2) | EP1299884B1 (es) |
JP (1) | JP4945792B2 (es) |
AT (2) | ATE373843T1 (es) |
AU (1) | AU2001263509A1 (es) |
DE (2) | DE60130593T2 (es) |
ES (1) | ES2297787T3 (es) |
WO (1) | WO2002005285A2 (es) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US5845313A (en) | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6978342B1 (en) | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US7877542B2 (en) * | 2000-01-06 | 2011-01-25 | Super Talent Electronics, Inc. | High integration of intelligent non-volatile memory device |
US20070168614A1 (en) * | 2000-01-06 | 2007-07-19 | Super Talent Electronics Inc. | Secure-Digital (SD) Flash Card with Auto-Adaptive Protocol and Capacity |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
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 |
US6938144B2 (en) * | 2001-03-22 | 2005-08-30 | Matsushita Electric Industrial Co., Ltd. | Address conversion unit for memory device |
JP4256600B2 (ja) * | 2001-06-19 | 2009-04-22 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
GB0123410D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
GB0123421D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
JP3967121B2 (ja) * | 2001-12-11 | 2007-08-29 | 株式会社ルネサステクノロジ | ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム |
JP2003223792A (ja) * | 2002-01-25 | 2003-08-08 | Hitachi Ltd | 不揮発性メモリ及びメモリカード |
JP3866635B2 (ja) | 2002-08-26 | 2007-01-10 | 株式会社東芝 | メモリカード及び記憶領域切り替え方法 |
JP3806077B2 (ja) | 2002-08-26 | 2006-08-09 | 株式会社東芝 | メモリカード認識システム、容量切り替え型メモリカード・ホスト機器、容量切り替え型メモリカード、記憶容量設定方法及び記憶容量設定プログラム |
KR100944054B1 (ko) * | 2002-08-29 | 2010-02-24 | 파나소닉 주식회사 | 반도체메모리장치 및 플래시메모리에의 데이터기입방법 |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
FI117489B (fi) * | 2003-02-07 | 2006-10-31 | Nokia Corp | Menetelmä muistikortin osoittamiseksi, muistikorttia käyttävä järjestelmä, ja muistikortti |
US20090204872A1 (en) * | 2003-12-02 | 2009-08-13 | Super Talent Electronics Inc. | Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules |
US20090193184A1 (en) * | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US8504798B2 (en) | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US8250295B2 (en) | 2004-01-05 | 2012-08-21 | Smart Modular Technologies, Inc. | Multi-rank memory module that emulates a memory module having a different number of ranks |
US7289386B2 (en) | 2004-03-05 | 2007-10-30 | Netlist, Inc. | Memory module decoder |
US7916574B1 (en) | 2004-03-05 | 2011-03-29 | Netlist, Inc. | Circuit providing load isolation and memory domain translation for memory module |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US7464306B1 (en) * | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
US20060069896A1 (en) * | 2004-09-27 | 2006-03-30 | Sigmatel, Inc. | System and method for storing data |
US7882299B2 (en) | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
KR100590388B1 (ko) * | 2005-03-10 | 2006-06-19 | 주식회사 하이닉스반도체 | 멀티-플레인 타입 플래쉬 메모리 장치와, 그 프로그램 동작및 리드 동작 제어 방법 |
ITMI20050799A1 (it) * | 2005-05-03 | 2006-11-04 | Atmel Corp | Metodo e sistema di configurazione dei parametri per una memoria flash |
ATE467893T1 (de) * | 2005-11-22 | 2010-05-15 | Sandisk Corp | Verfahren und speichersystem für legacy-hosts |
US7877540B2 (en) * | 2005-12-13 | 2011-01-25 | Sandisk Corporation | Logically-addressed file storage methods |
JP5137413B2 (ja) * | 2006-11-28 | 2013-02-06 | 株式会社日立製作所 | 半導体記憶装置 |
US8151060B2 (en) | 2006-11-28 | 2012-04-03 | Hitachi, Ltd. | Semiconductor memory system having a snapshot function |
US20100115175A9 (en) * | 2006-12-18 | 2010-05-06 | Zhiqing Zhuang | Method of managing a large array of non-volatile memories |
US20080235438A1 (en) * | 2007-03-20 | 2008-09-25 | Sony Corporation And Sony Electronics Inc. | System and method for effectively implementing a multiple-channel memory architecture |
US8856423B1 (en) * | 2007-04-10 | 2014-10-07 | Marvell International Ltd. | Dual-purpose nonvolatile memory for code and data storage |
US8429352B2 (en) | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
CN100530138C (zh) * | 2007-06-28 | 2009-08-19 | 忆正存储技术(深圳)有限公司 | 基于多通道闪存设备逻辑条带的自适应控制方法 |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8516185B2 (en) | 2009-07-16 | 2013-08-20 | Netlist, Inc. | System and method utilizing distributed byte-wise buffers on a memory module |
US8417870B2 (en) * | 2009-07-16 | 2013-04-09 | Netlist, Inc. | System and method of increasing addressable memory space on a memory board |
US8154901B1 (en) | 2008-04-14 | 2012-04-10 | Netlist, Inc. | Circuit providing load isolation and noise reduction |
US8452934B2 (en) * | 2008-12-16 | 2013-05-28 | Sandisk Technologies Inc. | Controlled data access to non-volatile memory |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction 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 |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
KR101581679B1 (ko) * | 2009-03-18 | 2015-12-31 | 삼성전자주식회사 | 저장 장치 및 저장 장치의 버퍼 메모리 관리 방법 |
US8285917B2 (en) * | 2009-03-26 | 2012-10-09 | Scaleo Chip | Apparatus for enhancing flash memory access |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US9128632B2 (en) | 2009-07-16 | 2015-09-08 | Netlist, Inc. | Memory module with distributed data buffers and method of operation |
US8473669B2 (en) | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
JP5060574B2 (ja) * | 2010-03-16 | 2012-10-31 | 株式会社東芝 | メモリシステム |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US8713242B2 (en) * | 2010-12-30 | 2014-04-29 | Solid State System Co., Ltd. | Control method and allocation structure for flash memory device |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
CN105706064B (zh) | 2013-07-27 | 2019-08-27 | 奈特力斯股份有限公司 | 具有本地分别同步的内存模块 |
JP5996497B2 (ja) * | 2013-08-22 | 2016-09-21 | 株式会社東芝 | ストレージ装置 |
US9440086B2 (en) | 2013-09-11 | 2016-09-13 | Medtronic, Inc. | Optimized flash memory device for miniaturized devices |
US20170031838A1 (en) * | 2015-07-28 | 2017-02-02 | Qualcomm Incorporated | Method and apparatus for using context information to protect virtual machine security |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10824376B2 (en) | 2017-12-08 | 2020-11-03 | Sandisk Technologies Llc | Microcontroller architecture for non-volatile memory |
US10622075B2 (en) | 2017-12-12 | 2020-04-14 | Sandisk Technologies Llc | Hybrid microcontroller architecture for non-volatile memory |
US10777240B1 (en) | 2019-03-07 | 2020-09-15 | Sandisk Technologies Llc | Efficient control of memory core circuits |
US10971199B2 (en) | 2019-06-20 | 2021-04-06 | Sandisk Technologies Llc | Microcontroller for non-volatile memory with combinational logic |
US11507498B2 (en) | 2020-03-05 | 2022-11-22 | Sandisk Technologies Llc | Pre-computation of memory core control signals |
WO2021224660A1 (fr) | 2020-05-07 | 2021-11-11 | Achidi Valentin Agon | Inhibition de l'infection a coronavirus covid-19 par apivirine extrait - dichrostachys glomerata |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5877034A (ja) | 1981-10-30 | 1983-05-10 | Hitachi Ltd | 記録方法 |
US4710871A (en) | 1982-11-01 | 1987-12-01 | Ncr Corporation | Data transmitting and receiving apparatus |
US4736341A (en) | 1985-06-28 | 1988-04-05 | Xebec Development Partners, Ltd. | Intelligent hard disk drive subsystem |
US4907162A (en) * | 1987-07-16 | 1990-03-06 | Pitney Bowes | System for indicating the balance of stored value |
US5200864A (en) | 1989-06-28 | 1993-04-06 | International Business Machines Corporation | Combining small records into a single record block for recording on a record media |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5255136A (en) | 1990-08-17 | 1993-10-19 | Quantum Corporation | High capacity submicro-winchester fixed disk drive |
US5303198A (en) | 1990-09-28 | 1994-04-12 | Fuji Photo Film Co., Ltd. | Method of recording data in memory card having EEPROM and memory card system using the same |
US5283882A (en) | 1991-02-22 | 1994-02-01 | Unisys Corporation | Data caching and address translation system with rapid turnover cycle |
US5270979A (en) | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
JP2625609B2 (ja) | 1991-07-10 | 1997-07-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | ディスク記憶装置 |
US5430859A (en) * | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
JP3328321B2 (ja) * | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5341330A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for writing to a flash memory array during erase suspend intervals |
US5357475A (en) | 1992-10-30 | 1994-10-18 | Intel Corporation | Method for detaching sectors in a flash EEPROM memory array |
JP3641280B2 (ja) | 1992-10-30 | 2005-04-20 | インテル・コーポレーション | フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法 |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5523903A (en) | 1993-12-23 | 1996-06-04 | International Business Machines Corporation | Sector architecture for fixed block disk drive |
US5455721A (en) | 1994-03-03 | 1995-10-03 | Cirrus Logic, Inc. | Method and apparatus for automatic sector pulse generation and split field calculation in disk drives |
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
JP3507132B2 (ja) | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US5604880A (en) * | 1994-08-11 | 1997-02-18 | Intel Corporation | Computer system with a memory identification scheme |
JPH08137634A (ja) | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
US5678056A (en) * | 1995-02-27 | 1997-10-14 | Nec Corporation | Method and apparatus for control of serial communication by changing address conditions during and after communication start up |
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 |
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 |
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 |
US5687114A (en) * | 1995-10-06 | 1997-11-11 | Agate Semiconductor, Inc. | Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell |
US6026293A (en) | 1996-09-05 | 2000-02-15 | Ericsson Inc. | System for preventing electronic memory tampering |
JPH10124381A (ja) | 1996-10-21 | 1998-05-15 | Mitsubishi Electric Corp | 半導体記憶装置 |
JP2982728B2 (ja) * | 1996-12-06 | 1999-11-29 | 日本電気株式会社 | アプリケーション共有システム |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US5920731A (en) | 1997-02-21 | 1999-07-06 | Vlsi Technology, Inc. | Single-housing electrical device self-configurable to connect to PCMCIA compliant or non-PCMCIA compliant host interfaces |
US5822245A (en) * | 1997-03-26 | 1998-10-13 | Atmel Corporation | Dual buffer flash memory architecture with multiple operating modes |
JP3820682B2 (ja) * | 1997-05-30 | 2006-09-13 | カシオ計算機株式会社 | メモリ制御装置、データ書き込み読み出し方法、及び撮像装置 |
JP3718578B2 (ja) | 1997-06-25 | 2005-11-24 | ソニー株式会社 | メモリ管理方法及びメモリ管理装置 |
US6073205A (en) * | 1997-07-10 | 2000-06-06 | National Instruments Corporation | System and method of write posting in a universal serial bus system |
US6138180A (en) | 1997-09-12 | 2000-10-24 | Symbol Technologies, Inc. | Adaptive computer peripheral for selecting a communications protocol by cycling through a plurality of given protocols |
US6076137A (en) | 1997-12-11 | 2000-06-13 | Lexar Media, Inc. | Method and apparatus for storing location identification information within non-volatile memory devices |
US6360220B1 (en) | 1998-08-04 | 2002-03-19 | Microsoft Corporation | Lock-free methods and systems for accessing and storing information in an indexed computer data structure having modifiable entries |
JP2000200213A (ja) * | 1999-01-06 | 2000-07-18 | Mitsubishi Electric Corp | マイクロコンピュ―タ、デ―タ書換システム及びデ―タ書換方法 |
US6125058A (en) | 1999-10-19 | 2000-09-26 | Advanced Micro Devices, Inc. | System for optimizing the equalization pulse of a read sense amplifier for a simultaneous operation flash memory device |
-
2000
- 2000-07-07 US US09/611,676 patent/US6721843B1/en not_active Expired - Lifetime
-
2001
- 2001-05-17 AT AT06009719T patent/ATE373843T1/de not_active IP Right Cessation
- 2001-05-17 AT AT01937811T patent/ATE336065T1/de not_active IP Right Cessation
- 2001-05-17 WO PCT/US2001/040768 patent/WO2002005285A2/en active IP Right Grant
- 2001-05-17 JP JP2002508803A patent/JP4945792B2/ja not_active Expired - Lifetime
- 2001-05-17 AU AU2001263509A patent/AU2001263509A1/en not_active Abandoned
- 2001-05-17 EP EP01937811A patent/EP1299884B1/en not_active Expired - Lifetime
- 2001-05-17 ES ES06009719T patent/ES2297787T3/es not_active Expired - Lifetime
- 2001-05-17 DE DE60130593T patent/DE60130593T2/de not_active Expired - Lifetime
- 2001-05-17 EP EP06009719A patent/EP1693759B1/en not_active Expired - Lifetime
- 2001-05-17 DE DE60122155T patent/DE60122155T2/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
ATE373843T1 (de) | 2007-10-15 |
EP1693759B1 (en) | 2007-09-19 |
EP1693759A2 (en) | 2006-08-23 |
DE60122155D1 (de) | 2006-09-21 |
EP1299884A2 (en) | 2003-04-09 |
WO2002005285A3 (en) | 2002-06-20 |
EP1299884B1 (en) | 2006-08-09 |
US6721843B1 (en) | 2004-04-13 |
JP4945792B2 (ja) | 2012-06-06 |
AU2001263509A1 (en) | 2002-01-21 |
DE60130593T2 (de) | 2008-01-31 |
ATE336065T1 (de) | 2006-09-15 |
DE60122155T2 (de) | 2007-06-28 |
EP1693759A3 (en) | 2006-09-13 |
JP2004511030A (ja) | 2004-04-08 |
DE60130593D1 (de) | 2007-10-31 |
WO2002005285A2 (en) | 2002-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2297787T3 (es) | Arquitectura de memoria flash que implementa multiples bancos de memoria flash programables simultaneamente, que son compatibles con una central. | |
CN101142564B (zh) | 芯片上数据分组和对准 | |
KR101615567B1 (ko) | 스토리지 버스 인터페이스용 피씨엠 메모리 | |
JP4751163B2 (ja) | メモリシステム | |
US7245556B1 (en) | Methods for writing non-volatile memories for increased endurance | |
US7944762B2 (en) | Non-volatile memory control | |
KR101017358B1 (ko) | 복수의 플래시 메모리 유닛을 포함하는 휴대용 데이터 저장장치 | |
US7702846B2 (en) | Memory controller, nonvolatile storage device, nonvolatile storage system, and data writing method | |
US20080250220A1 (en) | Memory system | |
US7610435B2 (en) | Nonvolatile memory device employing a write completion flag table | |
US20070150644A1 (en) | System for writing non-volatile memories for increased endurance | |
US20040193782A1 (en) | Nonvolatile intelligent flash cache memory | |
CN107111456A (zh) | 用于生成与主机命令相关联的提示信息的系统和方法 | |
JP2008524748A (ja) | メモリシステムにおけるデータ再配置 | |
JP2009503729A5 (es) | ||
JP2012526324A (ja) | 不揮発性メモリシステムのためのマルチページ準備コマンド | |
US20100325342A1 (en) | Memory controller and nonvolatile storage device using same | |
WO2007076492A2 (en) | Methods and systems for writing non-volatile memories for increased endurance | |
US10290346B2 (en) | Method and apparatus for low-latency read of flash storage devices using fractional bits per cell | |
US11494125B2 (en) | Storage system and method for dual fast release and slow release responses | |
JP3099908B2 (ja) | Eepromの制御装置 | |
ES2445572T3 (es) | Procedimiento para escribir datos en una memoria de un soporte de datos portátil | |
JP2007241619A (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
JP2006215595A (ja) | 記憶装置 |