ES2254361T3 - Metodo y aparato para reducir el tamaño de ram mientras se mantiene un acceso rapido a la informacion. - Google Patents

Metodo y aparato para reducir el tamaño de ram mientras se mantiene un acceso rapido a la informacion.

Info

Publication number
ES2254361T3
ES2254361T3 ES01903157T ES01903157T ES2254361T3 ES 2254361 T3 ES2254361 T3 ES 2254361T3 ES 01903157 T ES01903157 T ES 01903157T ES 01903157 T ES01903157 T ES 01903157T ES 2254361 T3 ES2254361 T3 ES 2254361T3
Authority
ES
Spain
Prior art keywords
information
memory
tag
input
ram
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
Application number
ES01903157T
Other languages
English (en)
Inventor
Yousong Mei
Eric John Lekven
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23937770&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2254361(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2254361T3 publication Critical patent/ES2254361T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Image Processing (AREA)
  • Storing Facsimile Image Data (AREA)
  • Dram (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Un método para un acceso rápido a la información que minimiza la cantidad de memoria rápida requerida que comprende: la creación de un grupo de registros de información individuales; almacenar el grupo de registros de información en memoria; generar (308) un valor tag para cada registro de información en el grupo; almacenar (318) los valores tag en ubicaciones predeterminadas de la memoria rápida; recibir (320) una entrada que requiera una búsqueda del grupo de registros de información; generar (322) un valor tag de entrada correspondiente al valor de entrada; comparar (344) el valor tag de entrada con los valores tag almacenados en la memoria rápido; y recuperar (348) del grupo de registros de información el registro de información correspondiente al valor tag que coincida con el valor tag de entrada; caracterizado por comparar (350) el registro de información recuperado con el valor de entrada.

Description

Método y aparato para reducir el tamaño de RAM mientras se mantiene un acceso rápido a la información.
Antecedentes de la invención I. Campo de la invención
El presente invento está relacionado con circuitos electrónicos. Más concretamente, el presente invento está relacionado con un novedoso y mejorado método y aparato para reducir las necesidades de RAM en un aparato mientras se mantiene un acceso rápido y recuperación de información de una memoria lenta no volátil.
II. Descripción la técnica anterior
En todos los aparatos electrónicos modernos se usa memoria electrónica de algún tipo. La memoria electrónica puede adoptar la forma de disquetes de 3.5'', cinta magnética, disco duro y circuitos integrados (CI). Cada una de las formas de memoria tiene sus ventajas y sus inconvenientes. Los disquetes permiten numerosas actualizaciones de la información en un medio portátil pero tienen una capacidad limitada y requieren tiempos extremadamente largos de lectura y búsqueda. Tanto la cinta magnética como los discos duros ofrecen la posibilidad de una capacidad enorme pero no son portátiles, necesitan gran cantidad de hardware de apoyo y tienen tiempos de lectura y acceso lentos. La información guardada en disquetes, disco duro y cinta magnética a menudo es primero formateada en software a un formato de archivo antes de ser guardada en el medio. Cuando la información es recuperada del medio de almacenamiento la rutina del archivo software tiene que ser ejecutada para localizar y extraer la información requerida. Esto ralentiza aún más el proceso de acceso porque añade una capa de software encima del ya lento acceso hardware.
La memoria IC es usualmente utilizada donde la memoria tiene que ser integrada en un dispositivo portátil. Variando el tipo y número de ICs puede escalarse la cantidad de memoria. Los ICs necesitan un soporte hardware mínimo, son extremadamente pequeños y pueden proporcionar accesos de lectura y escritura rápidos. Algunas memorias IC pueden fácilmente proporcionar acceso directo sin necesidad de una capa de software.
Se dispone de muchas tipos diferentes de memoria IC para proporcionar soluciones a requerimientos de diseño varios. Cada tipo de memoria es capaz de proporcionar una solución de diseño completa. El tipo de memoria elegido para cualquier aplicación particular dependerá en el uso planeado y el balance de diseño de ejecución.
El tipo más habitual de memoria IC es la ROM (Read Only Memory). Como su nombre indica, la memoria es sólo accesible para su lectura. Un dispositivo ROM no puede ser sobrescrito una vez que ha sido programado. Aplicaciones software integradas usan ROM para almacenar código integrado y registros de información. El procesador en una aplicación software integrada recupera cada instrucción de la ROM y la ejecuta. Hay disponibles diferente tipos de ROM dependiendo en la volatilidad de la información que se quiere programar en la ROM. Si se espera que la información que se desea guardar en la ROM no cambie y el volumen esperado de dispositivos es alto entonces se usa una máscara programable ROM. El tipo de ROM es programado con máscaras antes del empaquetado de los chips. La información a programar tiene que ser altamente estable y no estar sujeta a revisión ya que cambios en la información programada requieren un cambio de máscaras. Los beneficios de usar ROM programada con máscaras están relacionados con el ahorro en coste y tiempo para productos maduros de gran volumen. Otros tipos de ROM están disponibles para productos que no sostengan volúmenes de producción o estabilidad de código suficiente para justificar la programación de ROM con máscaras.
La memoria PROM (Programmable Read Only Memory) permite al fabricante del dispositivo programar el código integrado. Esto permite revisiones en el código pero todavía no permite modificación o borrado de la ROM una vez que ésta ha sido programada. Los dispositivos que han sido programados con una revisión de código no actualizada bien necesitan ser usados con la revisión de código no actualizada o será necesario deshacerse de ellos.
La memoria EPROM (Erasable Programmable Read Only Memory) proporciona la posibilidad de borrar completemente una parte programada. El borrado de una EPROM se lleva a cabo mediante la exposición del chip a luz ultravioleta (UV) durante un periodo de tiempo predeterminado. El chip puede ser expuesto a la luz ultravioleta a través de una ventana transparente en el paquete EPROM. Una vez borrado, la EPROM puede ser reprogramada. Las EPROMs son usualmente usadas sólo para el desarrollo de ingeniería donde el número esperado de revisiones de código es alto. Las limitaciones del tipo de paquete que puede contener la ventana transparente contribuyen al precio más elevado de una EPROM en comparación al PROM. Aunque la EPROM puede ser borrada y reprogramada, las modificaciones del código deben ser hechas en una base completa de chips. Incluso los cambios de un único bit en el código requieren un borrado completo y reprogramación. Esta limitación, junto con los requerimientos para una luz UV para borrado restringen la tarea de actualización de EPROMs a los fabricantes del equipamiento original (OEMs).
Un dispositivo que permite borrado de contenido selectivo y reprogramación es la EEPROM (Electrically Erasable Programmable Read Only Memory). Las EEPROMs convencionales permiten que la información sea actualizada en su sitio. Esto es, la localización de una información particular puede ser borrada y puede ser sobrescrita en el mismo sitio. La información puede ser leída de una EEPROM rápidamente pero el ciclo de escritura de una EEPROM convencional puede ser órdenes de magnitud más largo que el tiempo de lectura. Otro inconveniente de usar EEPROM convencional surge de la estructura inherente de una célula EEPROM convencional. La estructura de una célula EEPROM convencional requiere más transistores que en una PROM estándar. La estructura incrementada resulta en una capacidad de memoria reducida y en un aumento de coste. Estas desventajas hacen del uso de EEPROM convencional prohibitivo en la mayoría de las aplicaciones electrónicas de consumo.
La memoria RAM (Random Access Memory) representa otro medio alternativo de almacenamiento. La RAM permite lectura y escritura de información selectiva. La lectura y la escritura pueden ser realizadas en una base de bytes. Ningún ciclo de borrado es requerido antes de escribir nueva información en un byte antes escrito. Más aún, a diferencia de las EEPROMs, los tiempos de los ciclos de lectura y escritura de la RAM son casi idénticos. La densidad y capacidad de la RAM es comparable a la de la ROM. La mayor desventaja de usar una RAM es la naturaleza volátil de la información almacenada. La información almacenada en la RAM se pierde cada vez que se apaga. Esto contrasta con la ROM, la cual es memoria no volátil, donde el contenido de la memoria permanece incluso después de que la IC ha sido reiniciado. Para mantener el contenido de la RAM, la energía debe ser mantenida en el chip en todo momento. Esto requiere una batería de apoyo a la fuente de energía usual. Si la reserva de energía falla cuando el suministro de energía se agota los contenidos de la RAM se perderán. Por esta razón la RAM no se usa para código integrado y es utilizado sólo para memoria dinámica. La RAM usada para código integrado será susceptible de pérdida de energía de la batería y fallos del sistema del suministro de energía. Incluso, si las RAMs fuesen usadas para código integrado, los dispositivos que operan con batería tales como los teléfonos móviles tendrían una vida de la batería más corta debido al requerimiento de energía de la RAM. Cuando se usa la RAM para la memoria dinámica el sistema no se preocupa de si los contenidos se pierden después de un ciclo de energía. Esto alivia la necesidad de una batería de soporte. De todas formas, el coste de la RAM es superior a la de la ROM.
Otra alternativa de almacenaje es la EEPROM subdividida en sectores, usualmente denominada memoria FLASH. La EEPROM subdividida es un dispositivo de almacenaje no volátil que permite la lectura y escritura en una base de bytes. A diferencia de la RAM, en las EEPROM subdivididas una operación de borrado tiene que ser realizada antes de sobrescribir en un byte previamente escrito. De todos modos, el borrado de información no puede ser realizada en una base de bytes. El borrado sólo puede ser realizada sobre la base de un sector, donde el tamaño del sector está definido por el dispositivo de memoria elegido. El tamaño de un sector que se puede borrar es siempre mayor de un byte y puede ser del orden de 64K bytes. De cualquier modo, el número de ciclos de borrado no es ilimitado, sino que está restringido a un ciclo de vida máximo. Una vida de ciclos de borrado típica recomendada para una EEPROM subdividida es de 100,000 ciclos. Por lo tanto, no se usaría una EEPROM subdividida para aplicaciones que requieran más de 100.000 ciclos de borrado sobre la vida anticipada del dispositivo. La EEPROM subdividida tiene ventajas sobre los otros tipos de memoria que se pueden reescribir en aplicaciones que requieren menos de 100.000 ciclos de borrado y reescritura. Se prefiere la EEPROM subdividida a cualquier otro tipo de RAM para aplicaciones de código integrado porque la memoria EEPROM es no volátil. Se prefiere la EEPROM subdividida a la EPROM debido a la habilidad de la EPROM a reescribir porciones de memoria en un circuito. La EEPROM subdividida además no necesita luz UV para el borrado de chips. La EEPROM subdividida es preferible a cualquier EEPROM convencional, la cual tiene limitaciones de escritura debidas al bajo coste y la alta densidad de los dispositivos de EEPROM subdividida. Las EEPROMs subdivididas son usadas en los dispositivos portátiles electrónicos para el almacenaje no volátil de información configurable por el usuario.
La información almacenada en una EEPROM subdividida es a menudo formateada para adaptarla a un sistema de archivos. La conversión de formato de fichero es parcialmente ejecutada por el ciclo de borrado del tamaño del sector. La información no está dentro de los límites de un espacio de memoria direccionable concreto ya que la información en una EEPROM subdividida no puede ser reescrita en su lugar. El software adicional de encabezado resulta en unos tiempos de acceso a memoria mayores. El tiempo de acceso aumenta también en sistemas multitareas. El acceso a memoria no volátil en un sistema multitarea puede ser relegado por una tarea de mayor prioridad. Esto supone que la tarea con menor prioridad debe esperar a que la tarea de mayor prioridad termine para poder ser ejecutada. Cuando el software de encabezado está incluido en el cálculo del tiempo de acceso, dicho tiempo de acceso desde una memoria subdividida EEPROM puede ser más de 1000 a 10.000 veces más lenta que el tiempo de acceso a información almacenada en dispositivos RAM.
Los largos tiempos de acceso presentan problemas de la interfaz del usuario. En un dispositivo electrónico portátil como un teléfono móvil, la información no volátil configurable por el usuario es a menudo almacenada en una EEPROM subdividida. La interfaz del usuario es aumentada si el acceso a la información de la agenda del teléfono parece ocurrir instantáneamente. La recuperación desde una memoria EEPROM subdividida resulta en una respuesta de usuario lenta cuando un usuario introduce un número para compararlo con los registros de la agenda. Esto es debido al software de encabezado en lo que respecta al sistema de archivos que debe ser iniciado para recuperar cualquier información de la EEPROM subdividida. El retraso en los largos tiempos de acceso presente un problema serio en sistemas de tiempo real donde la recuperación de la información debe de ocurrir dentro de un marco de tiempo predefi-
nido.
Una solución a los lentos tiempos de acceso de la EEPROM subdividida, o de cualquier otra memoria no volátil, es transferir toda la información desde un registro de información no volátil a una RAM. Los registros de información pueden ser transferidos desde una RAM no volátil en el encendido de un dispositivo. Entonces toda la información puede ser rápidamente recuperada de la RAM. Esto aumenta considerablemente la interfaz del usuario. De todas formas, esta solución presenta desventajas considerables de coste y espacio. Se requiere RAM adicional que redundantemente almacena los contenidos de la memoria no volátil simplemente para aumentar la interfaz del usuario. Lo que se necesita es un método y mecanismo para reducir la cantidad de RAM requerida para mantener una interfaz del usuario rápida cuando se accede a la información almacenada en una memoria no volátil.
EP-A-1076301, una publicación de acuerdo al Artículo 54(3)EPC, da a conocer un método de cargar objetos desde una memoria primaria en la cual están listados un índice hash calculado. Un valor hash calculado deriva en un objeto invocado y es unido con un valor hash en el índice hash. Como respuesta al objeto correspondiente al valor hash calculado es cargado en la memoria primaria. Un método así es desfavorable ya que sólo proporciona punteros para extraer información incrementando así el tiempo para hacer eso.
EP-A-0411691 da a conocer una disposición de la memoria teniendo un circuito hashing y una memoria para almacenar claves e información asociada. La memoria está subdividida en dos partes, la primera para almacenar valores hash, la segunda para claves e información asociada. La circuitería opera solamente para proporcionar punteros a claves seleccionadas.
Resumen de la invención
De acuerdo con el presente invento, se proporciona un método para un acceso rápido a la información de acuerdo con el artículo 1 y un mecanismo para un acceso rápido a la información de acuerdo con el artículo 8.
El presente invento es un novedoso y mejorado método y mecanismo para reducir la cantidad de RAM requerida para sostener una recuperación de información rápida desde una memoria lenta no volátil. El uso de RAM en lugar de memoria no volátil disminuye considerablemente el tiempo de búsqueda de información. El acceso a RAM es órdenes de magnitud más rápido que el acceso a memoria no volátil debido al software de encabezado que debe ser efectuado cada vez que se accede a la memoria no volátil.
En una memoria no volátil se puede guardar una recopilación de registros de información. El acceso a registros de información no volátil es ralentizado debido al software de encabezado asociado con el acceso a memoria no volátil. El presente invento puede ser usado para aumentar las búsquedas de registros de información guardados en memoria no volátil. Cuando se tienen que buscar registros de información guardados en memoria no volátil, normalmente se requieren numerosos accesos a la memoria no volátil. La invención actual reduce el número de accesos al registro de información no volátil guardando una serie de valores tag calculados en lugares predeterminados de la RAM. Las búsquedas de registros de información guardadas en memoria no volátil son luego efectuadas por una búsqueda a través de los lugares de la RAM predeterminados para los valores tag correspondientes y después buscando el registro de información no volátil si es encontrado un valor tag adecuado. Buscar en la RAM valores tag que concuerden reducen a uno el número habitual de accesos requeridos a la memoria no volátil que se requieren para buscar un registro de información que encaje. Esto contrasta con las numerosas recuperaciones de registros no volátiles y con las comparaciones requeridas en una búsqueda convencional de registros de información no voláti-
les.
Un número predeterminado de ubicaciones de memoria están situadas en la RAM correspondiente al número de registros de información guardados en la memoria no volátil. Cada ubicación de memoria situada en la RAM no necesita ser lo suficientemente grande como para mantener el registro de información guardado en la memoria no volátil. En la configuración preferida dos bytes de memoria están localizados para cada ubicación de registro de información en la memoria no volátil. El registro de información no volátil puede ser arbitrariamente grande. La función tag H(x) no necesita proporcionar un mapeado 1:1 de los registros de información a valores tag. Un mapeado 1:1 de registros de información a valores tag minimiza el número de accesos a memoria no volátil a un acceso de registro no volátil por cada búsqueda de registro de información.
Las ubicaciones RAM predeterminadas guardan valores tag determinados por los contenidos de los registros de información no volátiles. Cuando se requiere buscar un registro de información particular se calcula un valor tag para el archivo buscado. Si se designa con una "y" al registro buscado, se calcula el valor tag H(y). El valor tag H(y)
se compara con todos los demás valores tag almacenados en los lugares RAM predeterminados. Este paso se realiza de forma muy rápida debido a la rápida capacidad de acceso de la RAM. Si se encuentra en la RAM un valor tag que concuerde, la localización correspondiente de memoria no volátil es identificada como la ubicación que corresponde a la localización de RAM particular. Se recuperan los contenidos del registro de información no volátil y se comparan con el registro buscado. Si los dos coinciden entonces la búsqueda finaliza. Si el registro de memoria no volátil recuperado y el registro buscado no son idénticos, entonces se busca en los valores tag que quedan en la RAM para buscar más coincidencias con el valor tag calculado para el registro buscado. La búsqueda continúa hasta que se encuentra uno idéntico o cuando se alcanza el final de los valores tag de la RAM.
El presente invento proporciona una gran reducción de la cantidad de tiempo necesaria para buscar registros de información debido a que la mayor parte de la búsqueda se realiza usando las tablas tag de la RAM. Los registros de la memoria no volátil sólo pueden ser accedidos cuando se encuentra una coincidencia con el valor tag. Para la mayoría de las búsquedas sólo será necesario el acceso a la memoria no volátil. Los ahorros de tiempo permiten una potenciación de la interfaz del usuario mientras la reducción de RAM reduce el coste del hardware.
Breve descripción de los dibujos
Las características, objetos y ventajas de la presente invención serán más aparentes en el conjunto detallado de descripciones que sigue abajo, tomado junto con los dibujos en los cuales se identifican los caracteres de referencia correspondientemente con los abajo expuesto.
La figura 1 es un diagrama de bloque de una implementación a capas de la memoria. Las figuras 2A-2B son diagramas de bloque que muestran las implementaciones de búsqueda de tablas de memoria NV basadas en la RAM y las figuras 3A-3B son diagramas de flujo de la implementación RAM de la presente invención.
Descripción detallada de las realizaciones preferidas
Los dispositivos de memoria y almacenamiento en cualquier dispositivo electrónico se sitúan según las necesidades. En un dispositivo electrónico como un teléfono móvil la memoria es normalmente del tipo no volátil y RAM. La memoria no volátil puede ser una combinación de PROM y de EEPROM no volátil subdividida. Un tipo de EEPROM subdividida no volátil muy conocida en la industria es la memoria FLASH.
Una de las ventajas de usar memoria FLASH es su capacidad de ser borrada y reescrita electrónicamente. Una de las desventajas de la memoria FLASH, como hemos discutido anteriormente, es la incapacidad de actualizar información en su lugar correspondiente. Sectores enteros deben ser borrados al mismo tiempo. Para maximizar el uso eficiente del espacio de la memoria FLASH, la información guardada en la FLASH no es memoria mapeada a una ubicación particular, más bien es guardada usando un sistema de almacenamiento basado en ficheros. En cambio, la información guardada en una RAM puede ser actualizada en su lugar y debido a esto puede ser asignada a un mapa de memoria.
La Fig. 1 ilustra un diagrama de bloques de la estructura de memoria 20 de un dispositivo electrónico con un teléfono inalámbrico 10. Toda la información guardada en memoria 20 es incluida en una base de datos 110. La información que es volátil o de naturaleza transitoria es guardada en la RAM 120. La información RAM 120 puede ser asignada a un mapa de memoria ya que la información RAM 120 puede ser actualizada en su sitio. De todos modos, otros fragmentos de información que tienen longitudes o ubicaciones variables son organizados usando un sistema de archivos 130. El sistema de archivos 130 es una rutina software que determina el formato, localización y tamaño de una información basada en ficheros. Uno de los dispositivos que utiliza una estructura basada en ficheros para su información es la memoria no volátil 140. Toda la información almacenada en memoria no volátil 140 debe ser primero formateada al sistema de archivos 130. La memoria no volátil a capas debajo del sistema de archivos 134 genera más retrasos al acceder a información almacenada en memoria no volátil 140. El retraso al acceder a información almacenada en memoria no volátil 140 puede crear retrasos no deseados donde la información debe ser recuperada desde memoria no volátil como parte de la interfaz del usuario. Un ejemplo usando información disponible habitualmente en un teléfono móvil es la búsqueda en una agenda de teléfonos creada por el usuario.
Los teléfonos móviles normalmente pueden guardar registros de la agenda generada por el usuario. Un usuario puede habitualmente tener más de cien números de teléfono y sus correspondientes nombres en una agenda telefónica electrónica guardada dentro de memoria no volátil. El número de registros está sólo limitado por la cantidad de espacio en memoria que el diseñador desee asignar a la agenda. Cada número de teléfono y sus nombres constituye un registro de información que es guardada en memoria no volátil. Cada número de teléfono puede constar de hasta treinta caracteres. Este tamaño permite que los códigos de área, las extensiones internas de teléfono, los códigos de acceso y los números de identificación personal sean automáticamente marcados para números designados. Para un nombre se puede asignar cualquier número de caracteres pero, por conveniencia, se asumirá una longitud de treinta y dos caracteres. Si suponemos que hay permitidas 512 combinaciones de número de teléfono y nombre, entonces se necesitará ubicar una memoria no volátil de 16 K. Cuando el usuario introduzca un número de teléfono o un nombre y desee buscar en la agenda la información guardada correspondientemente, se debe buscar dentro de los archivos de información guardados en memoria no volátil.
Los archivos de información guardados en memoria no volátil sólo pueden ser leídos a través del sistema de archivos 130. El sistema de archivos 130 es una capa debajo de la base de datos 110. Las múltiples capas encima del acceso a memoria no volátil crean un largo retraso al acceder a cualquier registro de información almacenado en memoria no volátil. En el curso de una rutina de búsqueda convencional, un registro de información es recuperado de la memoria no volátil y es comparado a la información introducida (input). Si las dos coinciden los registros de información correspondientes son encontrados. Si los dos coinciden el primer registro de información recuperado es desechado y es recuperado el siguiente registro de la memoria no volátil. La recuperación de registros de información desde la memoria no volátil y la comparación con la información introducida continúa hasta que se encuentra una coincidencia o hasta que son buscados todos los registros en memoria no volátil. Las múltiples capas que deben ser atravesados de registros de información de memoria no volátil contribuyen al retraso. Cuando la información introducida ha de ser comparada con un gran número de contenidos guardados en memoria no volátil, el retraso es excesivo para una interfaz de usuario. No se puede esperar que el usuario que introduzca un nombre o número de teléfono y desee recuperar la información almacenada relacionada con esa entrada espere largos períodos de tiempo. La interfaz de usuario debe parecer continuo e instantánea al usuario.
Una forma de incrementar la velocidad asociada con la búsqueda de registros de información en memoria no volátil es ejecutar la búsqueda en la RAM. Los tiempos de acceso a registros de información guardados en la RAM son órdenes de magnitud más rápidos que los tiempos de acceso para recuperar el registro de información equivalente desde memoria no volátil. Se puede atribuir la diferencia en los tiempos de acceso al sistema de archivos. La RAM no requiere que los registros de información sean formateados y accedidos en el sistema de archivos. Para realizar la búsqueda en la RAM en lugar de en memoria no volátil, se pueden transferir todos los registros de información de memoria no volátil a la RAM. Entonces cuando se requiera ejecutar una búsqueda, todos los registros de información estarán disponibles en la RAM. Esta implementación conlleva la desventaja de usar una gran cantidad de RAM únicamente para almacenar redundantemente registros de información disponibles en la memoria no volátil. El coste añadido y el tamaño físico de la RAM adicional hacen de esta solución poco más que algo ideal para implementar en dispositivos electrónicos tales como teléfonos móviles.
Se ilustra en la Fig. 2A una implementación alternativa que mejora los tiempos de búsqueda de registros de información almacenados en memoria no volátil pero no supone guardar la totalidad de los contenidos de la memoria no volátil en la RAM. En la Fig.2A la RAM no se usa para mantener los registros de información guardados en memoria no volátil. En cambio, las cajas hash 220 RAM están definidas en la RAM. Cada uno de los contenidos originales no volátiles (NV) 210 es información de entrada (input) de una función hash. Un puntero al registro 210 input NV es almacenado en la caja hash 220 RAM correspondiente al número hash de salida (output). La función hash no necesita proporciona un mapeado 1:1 del registro NV 210 a la caja hash 220 RAM. De todos modos, la elección de una función hash equilibra el número de cajas hash 220 RAM y la velocidad de acceso. Cuanto más único sea el mapeado de la función hash, mayor espacio se requerirá para la caja hash 220 RAM. La ventaja en el mapeado de funciones hash único es el reducido número de accesos a la memoria no volátil cuando se buscan los registros NV 210 para una coincidencia.
La implementación que se muestra en la Fig. 2A actúa como sigue. Cuando se inicializa un dispositivo electrónico cada registro NV 210 es input de una función hash. Se puede definir la inicialización para un dispositivo electrónico como cualquier evento. La inicialización en un teléfono inalámbrico se define como encendido. Abajo vemos un ejemplo de una función hash
yN = ( 5(yi- -1 ) x i )/(65521)
En la ecuación xi representa el byte i-ésimo en el input de un registro de información particular a una función hash. La yi representa el output de la función hash después de procesar i bytes en el registro de información particular. El número N representa el número de bytes comprendidos en cada entrada de registro de información. Cada registro de información NV ocupa treinta y dos bytes en el ejemplo arriba descrito. Para la longitud de registro de información descrito en el ejemplo de arriba N=32. El cálculo se efectúa usando matemáticas de integración para una implementación real. Se puede ver que el mapeado no es 1:1 cuando se usan matemáticas de integración.
El output de la función hash va a parar a una caja hash RAM 220 definida. Un puntero 222 al registro NV que fue usado como input de la función hash se guarda en la caja hash RAM 220. El puntero usa menos espacio de memoria para almacenar de la que usa un registro de información. Típicamente se asignan cuatro bytes al puntero. Para dar cabida a todos los punteros en un registro de información no volátil de 512 entradas se requieren 2K de memoria. Esto permite una posible conservación de espacio de memoria RAM.
Cada caja hash tiene que ser capaz de guardar más de un puntero 222. Esto es necesario ya que la función hash no ofrece un mapeado 1:1 de input a output. La falta de un mapeado 1:1 en la función hash genera problemas con la ubicación de la memoria RAM. Se necesita definir un gran número de cajas hash para poder asegurar que cada caja hash contenga sólo un puntero. Si se define un número menor de cajas hash cabe la posibilidad de que cada caja hash tenga que almacenar un número de punteros.
Un diseñador puede asegurarse de que cada caja hash tenga sólo un puntero si se definen 64K de cajas hash. Como sólo se necesitan 2K de punteros para identificar todos los registros de información, es evidente que la mayoría de las cajas hash contendrán un puntero null. Para ubicar 64K de cajas hash se requiere un tamaño RAM mayor de lo que se necesita para cargar todos los registros de información no volátil en la RAM. Por lo tanto esta solución no es viable. Para reducir los requerimientos de RAM un diseño contiene menos de 64K de cajas hash. De todos modos, una reducción en el número de cajas hash necesariamente aumenta la probabilidad de que cualquiera de estas cajas hash contenga más de un puntero.
Para encontrar un registro de información que coincida con el input, la información de entrada se pasa primero por una función hash. Entonces el output de la función hash dirige la rutina de búsqueda a una caja hash determinada. Si no hay ningún puntero almacenado en la caja hash entonces no se encontrará ninguna coincidencia en los registros de información no volátil. Esto reduce considerablemente el tiempo de búsqueda si no se encuentra ninguna coincidencia. En la búsqueda convencional se necesitaría recuperar y comparar los registros de información en la memoria no volátil con el input antes de determinar que no existen coincidencias. Al usar el método de las cajas hash no se necesita acceder a la memoria no volátil antes de determinar que no existen coincidencias.
Si hay punteros almacenados en la caja hash, el primer puntero es recuperado de la caja hash y es recuperado el registro NV al que señala el puntero. Luego se realiza una comparación completa entre el input y el registro de información recuperado. Si los dos son idénticos se encuentra una coincidencia y se pueden recuperar los registros de información asociados que quedan. Si el registro de información recuperado no coincide, entonces el siguiente puntero de la caja hash, si lo hubiere, será recuperado. Se realiza la comparación y se repite la recuperación de punteros de la caja hash hasta que o bien se encuentra una coincidencia o ha ocurrido una comparación de todos los registros de información no volátil a los que señalan los punteros de las cajas hash.
En la implementación anterior existe la posibilidad de accesos múltiples a la memoria no volátil. El número de accesos a la memoria no volátil depende del número de punteros almacenados en cada caja hash. El número de cajas hash requeridas está relacionado con la función hash. Aumentando el número de cajas hash únicas reduce el número de accesos a la memoria no volátil. La reducción del número de accesos de memoria no volátil conlleva la necesidad de un aumento de RAM.
El presente invento utiliza una implementación que proporciona unos tiempos de búsqueda de registros de información y unos requerimientos de RAM menores. Se muestra un diagrama de bloques de la presente invención en la Fig.2B. En el presente invento los registros NV 210 consta de una colección de registros de información como hemos descrito antes. De todas formas, en lugar de definir cajas hash en la RAM se asigna un bloque de memoria en la RAM para los valores tag 230. Como queda descrito en el ejemplo anterior, cada registro de información guardado en memoria no volátil consta de 32 caracteres. Hay 512 registros disponibles asignados en la memoria no volátil. Esto corresponde con 16K de memoria. El presente invento asigna dos bytes de espacio RAM para cada registro de información en la memoria no volátil. Para ubicar 512 registros de información se necesita asignar 1K bytes de RAM. Como el número de bytes de RAM asignados a cada registro de memoria no volátil es constante, se pueden asignar las direcciones de las ubicaciones de RAM al registro de información no volátil correspondiente. Como ejemplo, el primer registro de información no volátil correspondería a los dos primeros bytes asignados en la RAM.
Los dos bytes de RAM asignados a cada registro de información no volátil no son suficientes para almacenar el registro de información completo. En cambio, los dos bytes guardan un valor tag que corresponde al registro de información. El valor tag es generado usando la misma función hash descrita arriba. El valor tag correspondiente a cada registro de información en la memoria no volátil se calcula y se guarda en una ubicación predeterminada en la RAM. Por lo tanto, el presente invento minimiza la cantidad de RAM asignada. Se asignan dos bytes en la RAM para cada registro de información no volátil y hay 512 registros de información. Por lo tanto sólo se necesita asignar 1K de RAM.
Cuando se necesita comparar un valor de entrada con los contenidos de los registros de información de memoria no volátil, se pasa primero el valor input por una función hash. Luego se compara el valor tag de salida con los valores tag guardados en la RAM. Cuando se localiza un valor tag que coincide, los contenidos de la memoria no volátil correspondientes a la ubicación del valor tag son recuperados y comparados con los valores de entrada. Si los dos son idénticos se encuentra una coincidencia. Si no, la búsqueda continúa con los valores tag de la RAM hasta que o bien otro valor tag produce un registro de información que coincida o hasta que se alcanza el final de la lista de los valores tag. De esta manera la mayoría de la búsqueda es ejecutada en la RAM y únicamente se accede a la memoria no volátil es cuando los valores tag de entrada calculados coincide con uno de los valores tag previamente guardados. Si la función hash no produce un gran número de valores tag duplicados, el número de accesos a la memoria no volátil es minimizada. Usando la función hash descrita previamente, el número de accesos a la memoria no volátil es minimizado a uno por el 99% de las búsquedas de información.
La Fig. 3A muestra un diagrama de flujo de la presente invención. La rutina comienza en el estado 301. La rutina se inicializa cada vez que el dispositivo es encendido. En un teléfono móvil, cada vez que el usuario enciende el teléfono la rutina comienza 301. La rutina luego procede al estado 304 donde se leen todas las entradas en los registros de información de memoria no volátil (NV). Después en el estado 308 se calculan los valores tag para las entradas de la memoria NV. El valor tag para cada entrada de memoria NV se calcula usando una función como la función hash antes descrita. Cada valor tag requiere dos bytes.
La rutina luego procede al estado 310 donde se almacenan los calores tag calculados en ubicaciones RAM predeterminadas. Cada ubicación RAM corresponde a una entrada en el grupo de registros de información de memoria NV. Como ejemplo, la sexta entrada en la tabla de valores tag de la RAM es una dirección absoluta que corresponde a la sexta entrada en el registro de información de memoria NV independientemente de dónde esté la entrada en la memoria NV.
Una vez los valores tag han sido guardados en la RAM, cualquier búsqueda de registros de información puede ser ejecutada primariamente en la RAM. El estado 330 supone que una entrada "y" necesita ser comparada con los contenidos de los registros de información. En un dispositivo electrónico tal como un teléfono móvil la entrada "y" puede corresponder a un número de teléfono introducido por el usuario. Los contenidos de los registros de información corresponden a nombres e información asociada con un número de teléfono particular. Un usuario puede introducir un número de teléfono y desear recuperar toda la información previamente almacenada relacionada con ese número.
Se completa el primer paso de la búsqueda en el estado 322 donde se calcula el valor tag correspondiente al input "y". En el estado 324 se inicializa un índice contador que se usa en la búsqueda. El diagrama de flujo después procede al punto 330. El punto 330 no es un elemento funcional del diagrama de flujo sino que está incluido simplemente para unir los estados del diagrama de flujo de la Fig.3A con los estados del diagrama de flujo de la Fig.3B.
La Fig.3B comienza en el punto 330 que una el diagrama de flujo de la Fig.3A con aquél de la Fig.3B. Desde el punto 330 la rutina procede al estado 340. En el estado 340 la rutina recupera desde la RAM el valor tag previamente guardado correspondiente a la localización identificado por el índice contador. La rutina luego procede al estado 344 donde se compara el valor tag correspondiente a la entrada "y" con el valor tag recuperado de la RAM. Las operaciones de recuperación y comparación ocurren muy rápido ya que los valores tag sólo ocupan dos bytes y todos los valores residen en la RAM. Si la rutina determina que los dos valores tag no coinciden la rutina procede al estado 354 para comprobar si hay alguna otra entrada tag en la RAM que no ha sido todavía comparado con el valor tag de la entrada. Si en el estado 354 la rutina identifica más valores tag en la RAM que todavía no han sido comparados, la rutina procede al estado 358 para incrementar el índice contador. Una vez el índice del contador ha sido incrementado la rutina vuelve al estado 340 para recuperar el siguiente valor tag identificado por el índice contador.
Si en cambio en el estado 354 la rutina determina que no hay más valores tag en la RAM que no han sido comparados con el valor tag de entrada, la rutina procede al estado 362 donde la rutina concluye que no existen registros de información que coincidan con el input. Entonces la rutina finaliza. Si no coincide ningún valor tag con el valor de entrada, entonces necesariamente no hay registros de información almacenados en la memoria no volátil que se pueda asociar con el valor de entrada. En el presente invento para esta situación no ocurre ningún acceso a la memoria no volátil. De esta forma, la búsqueda es capaz de determinar que no hay ningún registro de información que coincida sin tener que acceder a la memoria no volátil.
Una vez el registro de información es recuperado de la memoria no volátil la rutina procede al estado 350 para realizar una comparación de los registros completos. Se requiere la comparación de los registros completos porque la función hash no proporciona un mapeado 1:1 del registro de información al valor tag. Aunque la entrada y el registro de información no volátil pueden generar el mismo valor tag, hay que comparar el registro de información para confirmar que coinciden.
Si el registro de información de memoria no volátil recuperado coincide con la entrada, se ha completado la búsqueda con éxito. No hay razón para continuar con la rutina de búsqueda, por lo que la rutina finaliza y espera a una nueva entrada para buscar.
Si en el estado 350 la rutina determina que el registro de información de memoria no volátil recuperado no coincide con el valor de entrada, la rutina procede al estado 354 como hemos descrito antes para determinar si se ha buscado ya todos los valores tag de la RAM o no.
Los diagramas de flujo en la Fig.3A y 3B ilustran cómo se puede utilizar una cantidad mínima de RAM para ayudar en la búsqueda rápida de registros de información almacenados en la memoria lenta no volátil. En lugar de cargar todos los contenidos de los registros de información de memoria no volátil en la RAM, sólo se carga un grupo de valores tag en la RAM. Cuando se necesita buscar en los registros de información un valor de entrada, primero se usa este valor para generar un valor tag usando la misma función hash usada previamente para generar los valores tag guardados en la RAM. Si se encuentra un valor tag que coincida se recupera el registro de información correspondiente de la memoria no volátil. Por lo tanto sólo se accede a la memoria no volátil cuando hay una probabilidad alta de recuperar un registro de información que coincida. El registro de información recuperado de la memoria no volátil se compara luego con el valor de entrada. Hay una alta probabilidad de obtener una coincidencia ya que los dos registros generan el mismo valor tag. De todos modos, si el registro de información recuperado y el valor de entrada no coinciden, se busca cualquier otro valor tag que coincida con el valor tag introducido en la tabla de valores tag de la RAM que queden. Debido a que la función hash proporciona un mapeado cercano a 1:1 del input al valor tag, se accede normalmente sólo una vez por búsqueda. Por lo tanto se minimiza el número de accesos a la memoria no volátil mientras se minimiza la cantidad de RAM requerida para la implementación de la invención.
La descripción previa de las configuraciones preferidas permite a cualquier persona hacer o usar el presente invento. Las diferentes modificaciones de estas configuraciones serán aparentes para aquellos duchos en la materia, y los principios genéricos aquí definidos pueden ser aplicables a cualquier configuración sin la necesidad de usar la facultad de invención. Así, el presente invento no se pretende que esté limitado a las configuraciones aquí demostrados sino sólo al ámbito de las siguientes reivindicaciones.

Claims (15)

1. Un método para un acceso rápido a la información que minimiza la cantidad de memoria rápida requerida que comprende:
la creación de un grupo de registros de información individuales;
almacenar el grupo de registros de información en memoria;
generar (308) un valor tag para cada registro de información en el grupo;
almacenar (318) los valores tag en ubicaciones predeterminadas de la memoria rápida;
recibir (320) una entrada que requiera una búsqueda del grupo de registros de información;
generar (322) un valor tag de entrada correspondiente al valor de entrada;
comparar (344) el valor tag de entrada con los valores tag almacenados en la memoria rápido; y
recuperar (348) del grupo de registros de información el registro de información correspondiente al valor tag que coincida con el valor tag de entrada;
caracterizado por
comparar (350) el registro de información recuperado con el valor de entrada.
2. El método de la reivindicación 1 en el que la generación de un valor tag comprende la introducción del registro de información a una función hash y asignar al valor tag el output de la función hash.
3. El método de la reivindicación 2 en la que la generación de un valor tag de entrada comprende la introducción del input a la función hash y la asignación del output de la función hash al valor tag de entrada.
4. El método de la reivindicación 1 en el que el grupo de registros de información es almacenado en memoria no volátil.
5. El método de la reivindicación 4 en el que la memoria no volátil es memoria FLASH.
6. El método de la reivindicación 1 en el que la memoria rápida es RAM.
7. El método de la reivindicación 1 que además comprende:
repetir los pasos de recuperación y comparación de los registros de información que corresponden a los valores tag que coinciden con los valores tag de entrada.
8. Un aparato para un acceso rápido de la información que minimiza la cantidad de memoria rápida requerido que comprende:
una primera memoria (210) para el almacenamiento de la pluralidad de los registros de información que define un grupo de registros de información;
un procesador digital (212); y
una segunda memoria (230) para el almacenamiento de los valores tag calculados por el procesador digital correspondientes a cada registro de información almacenado en la primera memoria;
en el que el procesador digital, en respuesta a la petición de búsqueda del grupo de registros de información para una entrada, procesa un valor tag de entrada correspondiente a la entrada, compara el valor tag de entrada para cada uno de los valores tag almacenados en la segunda memoria, y recupera el registro de información correspondiente al valor tag que coincide con el valor tag de entrada, caracterizado por la comparación de la entrada con el registro de información recuperado.
9. El aparato de la reivindicación 8 en el cual la primera memoria es memoria no volátil.
10. El aparato de la reivindicación 8 en el cual la segunda memoria es RAM.
11. El aparato de la reivindicación 8 en el cual los registros de información comprenden entradas en una agenda de teléfonos electrónica.
12. El aparato de la reivindicación 8 en el cual los valores tag son calculados como los outputs de una función hash usando los registros de información como inputs a la función hash.
13. El aparato de la reivindicación 12 en el cual el valor tag de entrada es calculado usando la misma función hash que se usa para calcular los valores tag.
14. El aparato de la reivindicación 8 en la cual se asignan dos bytes en la segunda memoria para cada registro de información almacenado en la primera memoria.
15. El aparato de cualquier reivindicación de la 8 a la 14 en el que el aparato comprende un teléfono.
ES01903157T 2000-01-19 2001-01-19 Metodo y aparato para reducir el tamaño de ram mientras se mantiene un acceso rapido a la informacion. Expired - Lifetime ES2254361T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US487948 2000-01-19
US09/487,948 US6484250B1 (en) 2000-01-19 2000-01-19 Hash technique eliminating pointer storage to reduce RAM size

Publications (1)

Publication Number Publication Date
ES2254361T3 true ES2254361T3 (es) 2006-06-16

Family

ID=23937770

Family Applications (1)

Application Number Title Priority Date Filing Date
ES01903157T Expired - Lifetime ES2254361T3 (es) 2000-01-19 2001-01-19 Metodo y aparato para reducir el tamaño de ram mientras se mantiene un acceso rapido a la informacion.

Country Status (13)

Country Link
US (1) US6484250B1 (es)
EP (1) EP1381966B1 (es)
JP (1) JP2004505332A (es)
KR (1) KR100749971B1 (es)
CN (1) CN1282108C (es)
AT (1) ATE308079T1 (es)
AU (1) AU774735B2 (es)
CA (1) CA2397940A1 (es)
DE (1) DE60114470T2 (es)
ES (1) ES2254361T3 (es)
HK (1) HK1062947A1 (es)
IL (1) IL150668A0 (es)
WO (1) WO2001053950A2 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6772177B2 (en) * 2001-06-01 2004-08-03 International Business Machines Corporation System and method for parallelizing file archival and retrieval
KR20040000182A (ko) * 2002-06-24 2004-01-03 주식회사 이투엠솔루션 전화번호 검색장치 및 방법
US6865100B2 (en) * 2002-08-12 2005-03-08 Micron Technology, Inc. 6F2 architecture ROM embedded DRAM
KR20040031926A (ko) * 2002-10-07 2004-04-14 엘지전자 주식회사 이동 통신 단말기의 전화 번호 검색 방법
US7093099B2 (en) * 2002-12-12 2006-08-15 Alacritech, Inc. Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys
JP4327585B2 (ja) * 2003-12-25 2009-09-09 株式会社東芝 記憶装置
US7272654B1 (en) 2004-03-04 2007-09-18 Sandbox Networks, Inc. Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
KR100623363B1 (ko) * 2004-06-04 2006-09-19 주식회사 팬택 부정 논리곱형 플래시 메모리를 구비한 휴대용 기기에서의멀티미디어 데이터 처리 장치 및 그 방법
CN100389406C (zh) * 2006-01-16 2008-05-21 深圳创维数字技术股份有限公司 在嵌入系统的非易失存储器中进行数据操作的方法
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
CN103023943B (zh) * 2011-09-27 2016-06-22 中国移动通信集团公司 任务处理方法及其装置、终端设备
CN102346783B (zh) * 2011-11-09 2014-09-17 华为技术有限公司 数据检索方法及装置
US11468781B2 (en) 2017-08-11 2022-10-11 The Boeing Company Simulation of an asset including message playback using nested hash tables
US11119999B2 (en) 2019-07-24 2021-09-14 Sap Se Zero-overhead hash filters
US11636047B2 (en) 2021-08-31 2023-04-25 Micron Technology, Inc. Hash operations in memory for data sharing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69029544T2 (de) * 1989-07-31 1997-06-12 Philips Electronics Nv Speicherarchitektur und Schaltung zum Hashcodieren
JPH09130A (ja) * 1995-06-22 1997-01-07 Noriomi Yoshimizu 水中水上両用めがね
US5754844A (en) * 1995-12-14 1998-05-19 Sun Microsystems, Inc. Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
US5944781A (en) * 1996-05-30 1999-08-31 Sun Microsystems, Inc. Persistent executable object system and method
US6044079A (en) * 1997-10-03 2000-03-28 International Business Machines Corporation Statistical packet discard
US6324637B1 (en) * 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index

Also Published As

Publication number Publication date
DE60114470D1 (de) 2005-12-01
US6484250B1 (en) 2002-11-19
WO2001053950A2 (en) 2001-07-26
CA2397940A1 (en) 2001-07-26
KR20030036133A (ko) 2003-05-09
EP1381966B1 (en) 2005-10-26
CN1496523A (zh) 2004-05-12
AU774735B2 (en) 2004-07-08
JP2004505332A (ja) 2004-02-19
ATE308079T1 (de) 2005-11-15
KR100749971B1 (ko) 2007-08-16
IL150668A0 (en) 2003-02-12
EP1381966A2 (en) 2004-01-21
HK1062947A1 (en) 2004-12-03
AU3100801A (en) 2001-07-31
CN1282108C (zh) 2006-10-25
DE60114470T2 (de) 2006-07-20
WO2001053950A3 (en) 2003-11-20

Similar Documents

Publication Publication Date Title
ES2254361T3 (es) Metodo y aparato para reducir el tamaño de ram mientras se mantiene un acceso rapido a la informacion.
JP5328020B2 (ja) メモリ装置及びメモリアクセス方法
US8185688B2 (en) Method for managing the address mapping table in a flash memory
US7127551B2 (en) Flash memory management method
TW455911B (en) Flash memory partitioning for read-while-write operation
JP4122972B2 (ja) データ記録装置及びフラッシュメモリに対するデータ書き込み方法
US8412881B2 (en) Modified B+ tree to store NAND memory indirection maps
CN100367306C (zh) 非易失性存储卡
JPH08328762A (ja) 半導体ディスク装置及びそのメモリ管理方法
JPWO2006067923A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
JP3212960B2 (ja) フラッシュメモリを利用したデータ管理方法
US8219739B2 (en) Read-only optimized flash file system architecture
US11182286B2 (en) Data storage device and control method for non-volatile memory
US20060224817A1 (en) NOR flash file allocation
JP3976764B2 (ja) 半導体ディスク装置
CN108461105B (zh) 管理半导体存储器的方法、相应的接口、存储器和设备
JPH0778485A (ja) 不揮発性半導体記憶装置とデータ書換/読出方法
TWI251140B (en) Memory control method, storage apparatus, control program, and readable storage medium
KR20030095820A (ko) 메모리 억세스 제어장치 및 방법
JP2004206615A (ja) 記憶装置
KR100688463B1 (ko) 물리 메모리의 데이터 기록 및 삭제 방법
US20050243640A1 (en) Storing code in fragments
JP2005250831A (ja) 半導体メモリ装置
JP2005234738A (ja) 半導体メモリ装置
US8250290B2 (en) System and method for managing files in flash memory