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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; 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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
2000
- 2000-01-19 US US09/487,948 patent/US6484250B1/en not_active Expired - Lifetime
-
2001
- 2001-01-19 AT AT01903157T patent/ATE308079T1/de not_active IP Right Cessation
- 2001-01-19 DE DE60114470T patent/DE60114470T2/de not_active Revoked
- 2001-01-19 JP JP2001554178A patent/JP2004505332A/ja active Pending
- 2001-01-19 AU AU31008/01A patent/AU774735B2/en not_active Ceased
- 2001-01-19 KR KR1020027009226A patent/KR100749971B1/ko not_active IP Right Cessation
- 2001-01-19 CN CNB018038409A patent/CN1282108C/zh not_active Expired - Fee Related
- 2001-01-19 EP EP01903157A patent/EP1381966B1/en not_active Revoked
- 2001-01-19 ES ES01903157T patent/ES2254361T3/es not_active Expired - Lifetime
- 2001-01-19 WO PCT/US2001/001892 patent/WO2001053950A2/en active IP Right Grant
- 2001-01-19 IL IL15066801A patent/IL150668A0/xx unknown
- 2001-01-19 CA CA002397940A patent/CA2397940A1/en not_active Abandoned
-
2004
- 2004-08-05 HK HK04105813A patent/HK1062947A1/xx not_active IP Right Cessation
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 |