MX2007001185A - Sistemas, metodos, medio legible por computadora y aparato para el manejo de memoria utilizando una memoria de acceso aleatorio no volatil. - Google Patents

Sistemas, metodos, medio legible por computadora y aparato para el manejo de memoria utilizando una memoria de acceso aleatorio no volatil.

Info

Publication number
MX2007001185A
MX2007001185A MX2007001185A MX2007001185A MX2007001185A MX 2007001185 A MX2007001185 A MX 2007001185A MX 2007001185 A MX2007001185 A MX 2007001185A MX 2007001185 A MX2007001185 A MX 2007001185A MX 2007001185 A MX2007001185 A MX 2007001185A
Authority
MX
Mexico
Prior art keywords
data
memory
file
further characterized
blocks
Prior art date
Application number
MX2007001185A
Other languages
English (en)
Inventor
David Potteiger
Original Assignee
United Parcel Service Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by United Parcel Service Inc filed Critical United Parcel Service Inc
Publication of MX2007001185A publication Critical patent/MX2007001185A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/04Addressing variable-length words or parts of words
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Read Only Memory (AREA)
  • Telephone Function (AREA)

Abstract

Se expone un sistema y un metodo para mejorar la integridad de datos y la eficiencia del almacenamiento de datos en memorias separadas de un dispositivo de computacion; en particular, la presente invencion introduce una combinacion de dos tipos de memoria, a saber una NVRAM y una memoria instantanea, como memoria persistente para almacenar datos de archivo; por medio de la captacion de una ultima porcion de datos de un archivo de datos en una NVRAM, evita que algun sector borre bits individuales en una memoria instantanea; tal enfoque aumenta la eficiencia del almacenamiento de datos y la expectativa de vida de una memoria instantanea; la presente invencion tiene aplicacion muy amplia en casi todos los dispositivos de computacion, incluyendo cualesquiera computadores PC (de escritorio o portatiles) y de servidor; demuestra el rendimiento particularmente ventajoso en dispositivos electronicos portatiles que aplican sistemas operativos WindowsTM CE.

Description

SISTEMAS, MÉTODOS, MEDIO LEGIBLE POR COMPUTADORA Y APARATO PARA EL MANEJO DE MEMORIA UTILIZANDO UNA MEMORIA DE ACCESO ALEATORIO NO VOLÁTIL CAMPO DE LA INVENCIÓN La presente invención se refiere generalmente al campo de topologías de almacenamiento de memoria y, más particularmente, a un sistema y método para mejorar la integridad de los datos y la eficiencia del almacenamiento de datos en memorias separadas de un dispositivo de computación. Se produce esencialmente un buen desempeño de memoria en dispositivos de computación portátiles que implementan sistemas operativos de Windows™ CE.
ANTECEDENTES DE LA INVENCIÓN La memoria electrónica se encuentra en una variedad de formas para servir en una variedad de propósitos. Normalmente, un solo dispositivo de computación electrónico incluye varias gradas de diferentes memorias. Dicha filosofía de gradación en el diseño de la memoria ayuda a aumentar el almacenamiento de datos para un acceso rápido y fácil por poderosos CPU, al mismo tiempo que reduce el costo de la memoria.
Específicamente muchos de los dispositivos de computación portátiles incluyen dos tipos de memoria, una memoria de acceso aleatorio (RAM o DRAM) y una memoria permanente programable. Generalmente, se cargan las aplicaciones de software, se ejecutan y se corren en la RAM. La RAM también se utiliza para recibir entrada de datos por el usuario, así como para desplegar la salida o los resultados de la aplicación para el usuario. Las tareas de recibir datos y de desplegar los resultados generalmente se realizan rápido en la RAM, permitiendo que el usuario introduzca libremente datos, sin retardar el almacenamiento de los datos en una memoria más permanente. La cantidad de RAM disponible generalmente contribuye a la velocidad percibida del dispositivo. Sin embargo, la velocidad de la mayoría de las configuraciones de RAM debe de ser balanceada con el riesgo de perder los datos o resultados. Es decir, la RAM algunas veces se conoce como memoria volátil ya que requiere de un constante suministro de energía eléctrica para mantener sus datos. Por lo tanto, si se pierde el suministro de energía eléctrica, también se perderán los datos que se encuentran en la RAM. La mayor parte de los tipos de memoria permanente no son volátiles. Es decir, la memoria permanente retiene los datos incluso cuando se pierde la energía eléctrica. La mayoría de la memoria permanente es programable, y por lo tanto es adecuada para almacenar aplicaciones de software, y se puede borrar, de manera que la memoria puede ser reprogramada. Por lo general los datos seleccionados se pueden guardar apropósito en la memoria permanente para utilizarlos después. Por ejemplo, el usuario puede hacer diez entradas rápidas de datos en la RAM, y después almacenar más tarde las entradas de datos en la memoria permanente. En el uso, muchos dispositivos electrónicos portátiles se someten a fuerzas ambientales, a la falla electrónica, a la pérdida de energía, y/u otros eventos catastróficos que pueden borrar automática y abruptamente el contenido de la RAM. Una vez que se pierden los datos introducidos en la RAM, no se pueden recuperar para almacenarlos en la memoria permanente. Por lo tanto existe la necesidad de una memoria no volátil para recibir y almacenar rápido datos, incluso en el caso de una falla total del dispositivo debida a un evento catastrófico, y para proporcionar un almacenamiento a largo plazo de los datos. Actualmente se considera una memoria instantánea de acceso en bloques para una memoria no volátil mejorada implementada en los dispositivos de computación portátiles. Como un tipo de EEPROM, la memoria instantánea proporciona un dispositivo de almacenamiento no volátil, de baja energía, de bajo costo y de alta densidad para códigos y datos programables. Estas características hacen que la memoria instantánea sea un dispositivo de memoria no volátil óptimo para los sistemas integrados. Sin embargo, la memoria instantánea también tiene ciertas características no deseable cuando se implementa en los dispositivos de computación. Un problema es borrar sectores. A diferencia de un dispositivo de RAM o ROM, los bits individuales del dispositivo de memoria instantánea (es decir, la memoria instantánea NAND) solamente se pueden programar en una dirección y no pueden ser reprogramados sin una operación de borrado. Una operación de borrado para la memoria instantánea necesita que una gran sección de bits, un sector de borrado, sea "eliminado" o borrado al mismo tiempo. Dicho sector de borrado normalmente es 64KB, pero puede variar de 512 bytes a 512KB, determinado por el tipo de memoria instantánea y de cómo está conectado en el sistema. Adicionalmente, las operaciones de borrado son bastante lentas, normalmente de medio segundo o más o menos, mientras que normalmente un solo bit puede ser programado en aproximadamente 10 microsegundos. Esta característica de borrado de sector de la memoria instantánea también hace que sea difícil mantener la integridad de los datos. Cuando se utiliza RAM o un disco convencional de almacenamiento, los datos de prácticamente cualquier tamaño pueden ser escritos y reescritos en la misma ubicación sin ningún manejo especial. Como la memoria instantánea no puede reescribir bits individuales de datos, todos los datos deben de ser escritos inicialmente, o reescritos, en un área no utilizada de la memoria instantánea. Los datos originales deben de ser rastreados para liberar un espacio en la memoria con el propósito de borrado del sector. Cuando se realizan operaciones de escritura y reescritura de datos en el dispositivo instantáneo, el software controlador debe proteger los datos en cada estado de la operación para asegurar que los datos originales y nuevos sigan siendo válidos en el caso de una interrupción. Las interrupciones pueden ser causadas por varias condiciones comunes, como la inesperada pérdida de energía debido a una baja en la batería o un requerimiento del usuario de apagar. Otro aspecto de la memoria instantánea que debe de ser considerado es la limitada expectativa de vida. Para cualquier dispositivo dado de memoria instantánea, existe un límite para el número total de operaciones de borrado que deben realizarse en un sector de borrado particular antes de que éste se vuelva ilegible o dañado. La vida promedio del dispositivo de memoria instantánea varía de 10,000 ciclos de escribir-borrar a un millón de ciclos, la mayoría siendo de aproximadamente 100,000. Cuando un sector de borrar se acerca a su limite calculado, puede llevar más tiempo realizar ciertas operaciones o incluso empieza a fallar. Para combatir los problemas antes identificados, se proporcionan algunos tipos especiales de software para manejar la memoria instantánea. Un ejemplo se llama administrador de medios instantáneos que se encuentra actualmente disponible en el mercado. Para aumentar el ciclo de vida de un dispositivo instantáneo, el administrador de medios introduce un procedimiento llamado nivelación de desgaste que consiste en asegurar que todos los sectores de borrado que están dentro del disco instantáneo se utilicen con la misma frecuencia. Otro procedimiento llamado recolección de basura se emplea para reclamar el espacio ocupado por los datos desechados. Este procedimiento selecciona un sector de borrado que tiene principalmente datos desechados, copia los datos válidos de este sector de borrado en el sector de repuesto, y borra el sector de borrado previamente válido haciendo de éste un nuevo sector de borrado. Sin embargo, la inclusión de cualquier software especial antes mencionado requiere de un espacio general localizado en la memoria instantánea para almacenar los datos que identifican/registran el estatus de la memoria instantánea, manteniendo una tableta de ubicación de archivo para rastrear la ubicación y el estatus de los datos almacenados, y reservar un espacio de repuesto para la recolección de basura. Dicho espacio general no solamente disminuye el espacio verdadero para el almacenamiento de datos, sino también da como resultado la degradación de la velocidad en la memoria instantánea. Por lo tanto, existe una necesidad de una memoria no volátil que supere las deficiencias de una memoria instantánea y que proporcione un almacenamiento rápido de datos. Parece ser que la memoria de acceso aleatorio no volátil emergente (NVRAM) cumple con está necesidad. Una NVRAM es un tipo especial de RAM que retiene los datos cuando la computadora se apaga o hay una falla de energía. En forma similar a la memoria de sólo lectura de la computadora (ROM), la NVRAM es energizada por una batería que se encuentra dentro de la computadora. Cuando se apaga la energía, la NVRAM opera justamente como otra RAM. Cuando se apaga la energía, la NVRAM extrae la suficiente energía de la batería para retener sus datos. La NVRAM es bastante común en los sistemas integrados. Sin embargo la NVRAM es mucho más costosa que otras RAM debido a la batería RAM. También, la NVRAM generalmente es menos densa que otra RAM, en particular DRAM. Por lo tanto en sus aplicaciones normalmente están limitadas al almacenamiento de unos cuantos cientos de bytes de la información importante que no se pueden almacenar de un mejor modo.
BREVE DESCRIPCIÓN DE LA INVENCIÓN En vista de lo anterior la invención busca proporcionar dispositivos de almacenamiento de datos no volátiles, confiables y rápidos a costos razonables. Específicamente, la invención busca hacer un uso combinado de distintos dispositivos de memoria existentes, como una NVRAM y una memoria instantánea, en un dispositivo de computación (especialmente un dispositivo portátil electrónico) con el fin de obtener un desempeño óptimo del almacenamiento y desarrollo de datos. Con en este fin, la invención también busca proporcionar mecanismos subyacentes como soporte al uso combinado, lo cual facilitaría la transferencia de datos entre diferentes memorias sin comprometer la integridad de los datos. De acuerdo con la presente invención, los objetivos anteriores y otros objetivos, características y ventajas se llevaran a cambo mediante un método y sistema para el manejo de memoria. El método comprende los pasos de: recibir datos de archivo en un dispositivo de computación; procesar los datos de archivo para determinar que los datos de archivo están compuestos de uno o más bloques de datos, cada uno teniendo un tamaño de bloque predeterminado, y por lo menos una porción de datos que tiene un tamaño más pequeño que el tamaño de bloque predeterminado; escribir los bloques de datos en una primera memoria que está configurada para almacenar bloques de datos que tienen dicho tamaño de bloque predeterminado; y captar por lo menos una porción de datos en una segunda memoria antes de transmitir dicha última porción de datos a dicha primera memoria. En una modalidad preferida, la segunda memoria es una memoria de acceso aleatorio no volátil, y la última porción de datos es captada utilizando los siguientes pasos; asignar una parte de la segunda memoria como una memoria de transito de archivo para almacenar datos de archivo; escribir bytes de datos de la última porción de datos en la memoría de transito de archivo hasta que la memoria de transito de archivo incluya más datos que el tamaño de bloque predeterminado; y como respuesta a la determinación de que la memoria de transito de archivo incluye más datos que el tamaño de bloque predeterminado, mover los datos de la memoria de transito de archivo a la primera memoria antes de continuar escribiendo los bytes de datos de la última porción de datos en la memoria de transito de archivo. También se mejora con la presente invención un medio legible por computadora que comprende instrucciones ejecutables para realizar los pasos que se describieron antes. De acuerdo con otro aspecto de la presente invención, se proporciona un sistema que comprende: un procesador que están configurado para recibir y procesar datos; una memoria que comprende por lo menos una primera memoria y una segunda memoria; y un administrador de datos que es ejecutado por dicho procesador. El administración de datos está configurado para definir dentro de los datos un número de bloques de datos, cada uno teniendo un tamaño de bloque predeterminado, y por lo menos una porción de datos que es más pequeña que el tamaño de dicho tamaño de bloque predeterminado. También está configurado para asignar espacio en la primera memoria para almacenar los bloques de datos y asignar espacio en la segunda memoria para captar la última porción de datos. En una modalidad preferida, la última porción de datos es captada en la segunda memoria siguiendo los pasos de: asignar una parte de la segunda memoria como una memoria de tránsito de archivo que está configurada para almacenar datos de archivo; escribir bites de datos de la última porción de datos en dicha memoria de tránsito de archivo hasta que se determine que los datos que se encuentran en dicha memoria de tránsito de archivo tienen el tamaño de bloque predeterminado; y como respuesta a la determinación de que los datos que se encuentran en la memoría de tránsito de archivo tienen dicho tamaño de bloque predeterminado, mover los datos de la memoria de tránsito de archivo a la primera memoria antes de seguir escribiendo bites de datos de la última porción de datos en la memoria de tránsito de archivo. En una modalidad preferida, la primera memoria es una memoria instantánea, mientras que la segunda memoria es una memoria de acceso aleatorio no volátil. Otra modalidad de la presente invención se refiere particularmente a un aparato portátil, que incluye: un dispositivo de entrada de datos; un dispositivo de salida de datos; y un dispositivo de computadora que está configurado para comunicarse con el dispositivo de entrada de datos, el dispositivo de salida de datos, y una fuente de datos a través de una red de comunicaciones. El dispositivo de computación comprende un procesador para procesar datos, una memoria que comprende por lo menos una memoria de acceso aleatorio no volátil y una memoria de acceso en bloques y un administrador de daros. El administrador de datos es ejecutado por el procesador para realizar instrucciones que comprenden los pasos de: (A) identificar, a partir de la entrada de datos de archivo, uno o más bloques de datos, cada uno teniendo un tamaño de bloque umbral, y por lo menos una porción de datos que es más pequeña en tamaño que el tamaño de bloque umbral; (B) almacenar los bloques de datos en la memoria de acceso en bloques; (C) escribir la última porción de datos por bite en una memoria de acceso aleatorio no volátil hasta que se determine que la memoria de acceso aleatorio no volátil incluye datos de archivo de un tamaño de bloque umbral; y (E) como r4spuesta a la determinación de que dicha memoria de acceso aleatorio no volátil incluye datos de archivo de un tamaño de bloque umbral, mover los datos de archivo de dicha memoria de acceso aleatorio no volátil a la memoria de acceso en bloques antes de seguir con el paso B. En otras modalidades de cualquiera de los aspectos anteriores de la invención, se puede utilizar cualquier memoria de computadora para la primera y la segunda memorias. En las modalidades preferidas, la primera memoria es una memoria no volátil, como la una memoria instantánea, o un disco duro, o un disco de CD-ROM, o similares; y la segunda memoria también es una memoria no volátil, de preferencia una NVRA;: BREVE DESCRIPCIÓN DE LOS DIBUJOS La figura 1 muestra un dispositivo de computación portátil de acuerdo con una modalidad de la presente invención; la figura 2 muestra los componentes de un dispositivo de computación de acuerdo con una modalidad de la presente invención; la figura 3 muestra componentes de una memoria en el dispositivo de computación de la figura 2, de acuerdo con una modalidad de la presente invención; la figura 4 ilustra un flujo de datos en procesamiento de datos para el manejo de memoria de acuerdo con una modalidad de la presente invención; la figura 5 es un diagrama de flujo del procesamiento de datos y del manejo de memoria de acuerdo con una modalidad de la presente invención.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Ahora se describirá la presente invención de manera más completa haciendo referencia a los dibujos que la acompañan, en los cuales se muestran algunas, pero no todas las modalidades de la invención. Realmente estas invenciones pueden representarse de muchas formas distintas y no deberán ser consideradas como restringidas a las modalidades que se describen en la presente; más bien, estas modalidades se proporcionan con el fin de que está descripción satisfaga los requerimientos legales aplicables. Los números iguales se refieren a elementos parecidos. Volviendo a la figura 1 , se muestra un dispositivo portátil 1 de acuerdo con una modalidad de la presente invención, dicho dispositivo portátil 1 puede ser cualquier dispositivo de computación portátil, incluyendo, pero no limitado a, un asistente digital personal (PDA), un teléfono inteligente (SP), una computadora de cuaderno, una computadora de tabla y un dispositivo de adquisición de información de entrega (DIAD). Como se ilustra en la figura 1 , este dispositivo portátil 1 está compuesto principalmente, además de los componentes necesarios bien conocidos que no se muestran en la figura, por un dispositivo de entrada 12, un dispositivo de salida o de despliegue 14 y un dispositivo de computación 20. En la operación, el dispositivo portátil puede recibir datos provenientes de un usuario 10 a través de una entrada de usuario (por ejemplo una entrada de teclado, o el escaneo de código de barras), u otra red de comunicaciones 16, desde una fuente de datos 18 (por ejemplo, una transferencia de datos electrónicos). La fuente de datos 18 puede ser cualquier base de datos en un servidor de computadora. En el contexto de la entrega de paquetes, por ejemplo, puede ser una base de datos de flete de un transportista o una base de datos de cliente que es accesible para el dispositivo de computación 20, ya sea mediante una conexión alámbrica o inalámbrica a través de una red de comunicaciones 16, que puede ser la Internet, una LAN o WAN. Después se pueden descargar los datos de embarque o la información de empaque desde la base de datos y capturarse en el dispositivo portátil 1 , que puede ser un DIAD en este contexto. La figura 2 proporciona un diagrama de bloques de distintos componentes dentro del dispositivo de computación 20. incluye por lo menos (1 ) un procesador 22 que ejecuta un administrador de datos 24, que comprende instrucciones programadas para el manejo de la memoria, (2) una interfase 26 para interactuar con el dispositivo de entrada 12 o el dispositivo de salida 14, (3) una interfase de red 28 para comunicarse con la red de comunicaciones 16 y (4) una memoria 30. la memoria 30 comprende por lo menos dos tipos de memoria: una DRAM 30A y una ROM 30B. En una configuración preferida de la presente invención, se emplea una RAM no volátil (NVRAM) 32 además de la RAM 30 regular. En cuanto a la ROM 30B, normalmente se utiliza una memoria instantánea 34 en la invención. La figura 3 es una ilustración detallada del almacenamiento de datos respectivo en cada tipo particular de memoria en la memoria 30. como se puede ver en esta figura, hay un intercambio de datos entre la DRAM 30a, NVRAM 32 y la memoria instantánea 34. En particular, la memoria instantánea 34 almacena bloques de datos de archivo 35. Cada bloque de datos está definido para que incluya un tamaño de bloque predeterminado de bites de datos. Dicho tamaño de bloque predeterminado normalmente es de 6512 bites, pero puede variar dependiendo el tamaño particular de los sectores de borrado de la memoria instantánea 34. Como se mencionó antes, un sector de borrado, que normalmente es de 64 KB, pero puede variar de 512 bites a 512KB. Un uso de la NVRAM 32 es almacenar datos que no son de archivo 31 , que normalmente es una tabla de ubicación de archivos (FAST) 31. La FAT 31 se mantiene en NVRAM 32 para rastrear la ubicación y el estatus de los datos de archivo almacenados tanto en NVRAM 34 como en la memoria instantánea 34. la NVRAM 32 también se utiliza para almacenar bites de datos de archivo llamados la última porción de datos 33 en una memoria de tránsito Z 37. la DRAM 30A contiene otra memoria de tránsito Y 36. Tanto la memoria de tránsito Y 36 como la memoria de tránsito Z 37 están configuradas para incluir un espacio suficiente de memoria para contener un bloque de datos. La figura 4, la entrada de datos 40 es recibida por el procesador 22. El procesador 22, acoplado con la DRAM que contiene la memoria de tránsito Y 36, procesa la entrada de datos 40 para determinar en cual memoria se debe almacenar de acuerdo con las instrucciones programadas del manejador de datos 24. Como se ilustra en la figura 4, la entrada de datos 40 da por resultado finalmente tres corrientes de datos: (1 ) bloques de datos de archivo 35, (2) última porción de datos (bytes de datos de archivo) 33 y (3) datos no de archivo (FAT) 31 que son generados o actualizados para identificar o registrar el estado de la entrada de datos 40. Se escribirán los bloques de datos de archivo 35 directamente en la memoria instantánea 34, mientras que se almacenarán la última porción de datos 33 y el FAT 31 en la NVRAM 32. El proceso de escribir la última porción de datos 33 en la NVRAM 32 antes de transferirla a la memoria instantánea 34 se llama captación, que se describirá con detalle posteriormente. Puesto que se reciben continuamente datos adicionales a la DRAM 30A, se escribirá otra última porción de datos en la NVRAM 32, hasta que se determina que la memoria de tránsito Z 37 está llena, lo cual significa, que los datos de archivo ya almacenados en la memoria de tránsito Z 37, mas los datos adicionales, alcanzan el tamaño de bloque predeterminado. En este punto, se transmitirá un bloque de datos de archivo 35 a la memoria instantánea 34 desde la memoria de tránsito Z. Cualquier parte restante en la última porción de datos se retiene en la memoria de tránsito Z. Se puede escribir un sector completo de la memoria instantánea 34, evitando así borrar y reescribir bits individuales. Se incrementa la eficiencia de escritura y la expectativa de vida de la memoria instantánea, como resultado del procedimiento de captación. En la figura 5 se muestra el flujo de trabajo concreto del procedimiento de captación realizado por el manejador de datos 24. El manejador de datos 24 comienza el paso 50 recibiendo datos de archivo que contiene X bytes a la DRAM 30A. Siempre que se haya de almacenar los datos de archivo, se envían a la memoria de tránsito Y 36 en la DRAM 30A, y el procesador 22 determina si la memoria de tránsito Y 36 está llena en el paso 52. En otras palabras, el procesador 22 determina si los datos de la memoria de tránsito Y 36 han alcanzado un tamaño de bloque predefinido. Si la memoria de tránsito Y 36 está llena, se escribirá un bloque de datos de los datos de archivo en la memoria instantánea 34 directamente de acuerdo con el paso 54. Mientras tanto, se actualizarán correspondientemente los datos no de archivo o FAT 31 en la NVRAM 32, como se muestra en el paso 56. Se repetirá el mismo procedimiento que comienza con el paso 50 con respecto a los bytes de datos (es decir bytes X - C) restantes de los datos de archivo, hasta que se determina que los datos restantes son insuficientes para llenar la memoria de tránsito Y 36. En este caso, el paso 58 comprende instrucciones de que se escriban los datos de archivo restantes en la memoria de tránsito Z 37 de la NVRAM un byte al mismo tiempo. Específicamente, el recuento de los bytes de datos en la memoria de tránsito Z 37 aumenta un byte y mientras tanto los datos de archivo restantes disminuyen un byte en el recuento. Después de cada byte, el paso 60 determina si la memoria de tránsito Z 37 está llena. Si la memoria de tránsito Z 37 está llena, el procesador en el paso 66 instruye escribir un bloque de datos desde la memoria de tránsito Z 37 a la memoria instantánea 34. Una vez que se ha movido el bloque de datos de la memoria de tránsito Z 37 a la memoria instantánea 34, se reinicia la memoria de tránsito Z 37 como conteniendo cero bytes de datos. En el paso 68, se actualizarán correspondientemente los datos de archivo o FAT 31 en la NVRAM 32. Moviéndose hacia el paso 62, el procedimiento verifica determinar si se ha transferido completamente la última porción de datos. Si no, el procedimiento regresa a los pasos 58 y escribe otro byte a la memoria de tránsito Z. Ahora la memoria de tránsito Z 37 no se puede llenar como se determina en el paso 60, porque la última porción de datos comenzó a menos de un bloque de tamaño. Cuando se han transferido todos los bytes restantes y X = 0 como se determina en el paso 62, el procedimiento se mueve al paso 64, en donde actualiza el FAT 31 en la NVRAM 32 y termina el procedimiento. Si inmediatamente después de una transferencia de bloque en el paso 68, se determina en el paso 62 que se han almacenado todos los bytes de datos de los datos de archivo restante en la memoria de tránsito Z 37, entonces el paso 64 actualizará nuevamente el FAT 31 en la NVRAM 32 para reflejar el almacenamiento de datos en la NVRAM 32 y la memoria instantánea 34 y completará el procedimiento de captar la última porción de datos 33. Muchas modificaciones y otras modalidades de la invención expuestas en la presente se le ocurrirán a un experto en la técnica a la cual pertenece esta invención, que tiene el beneficio de las enseñanzas presentadas en las descripciones precedentes y los dibujos asociados. Por lo tanto, se ha de entender que la invención no está limitada a las modalidades específicas expuestas y que las modificaciones y otras modalidades tienen por objeto estar incluidas dentro del alcance de las reivindicaciones anexas. Aunque se emplean en la presente términos específicos, se usan en sentido genérico y descriptivos solamente y no con propósitos de limitación.

Claims (23)

NOVEDAD DE LA INVENCIÓN REIVINDICACIONES
1.- Un método de manejo de memoria en dispositivos de computación, dicho método caracterizado porque comprende los pasos de: recibir datos de archivo en un dispositivo de computación; procesar dichos datos de archivo para determinar que dichos datos de archivo están compuestos de uno o más bloques de datos y una última porción de datos, cada uno de dichos uno o más bloques de datos teniendo un tamaño de bloque predeterminado, dicha última porción de datos teniendo menor tamaño que dicho tamaño de bloque predeterminado; escribir dichos uno o dos bloques de datos en la primera memoria, dicha primera memoria estando configurada para almacenar bloques de datos que tienen dicho tamaño de bloque predeterminado; y captar dicha última porción de datos en una segunda memoria antes de transmitir dicha última porción a dicha primera memoria, el paso de captar dicha última porción de datos comprendiendo los pasos de: (A) asignar parte de dicha segunda memoria como memoria de tránsito de archivo, dicha memoria de tránsito de archivo estando configurada para almacenar datos de archivo; (B) escribir bytes de datos de dicha última porción de datos a dicha memoria de tránsito de archivo, hasta que se determina que los datos en dicha memoria de tránsito de archivo tiene dicho tamaño de bloque predeterminado; y (C) en respuesta a dicha determinación de que dichos datos en dicha memoria de tránsito de archivo tienen dicho tamaño de bloque predeterminado, mover dichos datos de dicha memoria de tránsito de archivo a dicha primera memoria antes de continuar el paso (B).
2.- El método de conformidad con la reivindicación 1 , caracterizado además porque comprende adicionalmente los pasos de: generar datos no de archivo para dichos datos de archivo; y almacenar dichos datos no de archivo en dicha segunda memoria.
3.- El método de conformidad con la reivindicación 2, caracterizado además porque dichos datos no de archivo comprenden un cuadro de asignación de archivo (FAT).
4.- El método de conformidad con la reivindicación 1 , caracterizado además porque dicha primera memoria es una memoria de tránsito:
5.- El método de conformidad con la reivindicación 2, caracterizado además porque dicha segunda memoria es una memoria de acceso aleatorio no volátil.
6.- Un medio legible por computadora que comprende instrucciones, dichas instrucciones, cuando se ejecutan en un procesador de un dispositivo de computación, comprenden los pasos de: (A) recibir una entrada de datos de archivo; (B) procesar dicha entrada de datos de archivo para separar dicha entrada de datos de archivo en uno o más bloques y una última porción de datos, cada uno de dichos uno o más bloques de datos contienen un número umbral de bytes de datos, dicha última porción de datos incluye bytes de datos por debajo de dicho número umbral; (C) almacenar dichos uno o más bloques de datos en una primera memoria; (D) escribir dicha última porción de datos por byte en una segunda memoria hasta que se determine que dicha segunda memoria incluye bytes de datos de archivo igual a dicho número umbral; (E) como respuesta a la determinación de que dicha segunda memoria incluye bytes de datos de archivo iguales a dicho número umbral, mover dichos bytes de datos de archivo desde dicha segunda memoria a dicha primera memoria antes de seguir al paso (D).
7.- El medio legible por computadora de conformidad con la reivindicación 6, caracterizado además porque dichas instrucciones también comprenden los pasos de: generar datos de no-archivo para dicha entrada de datos de archivo; y almacenar dichos datos de no-archivo en dicha segunda memoria.
8.- El medio legible por computadora de conformidad con la reivindicación 7, caracterizado además porque dichos datos de no-archivo comprenden un cuadro de asignación de archivo (FAT).
9.- El medio legible por computadora de conformidad con la reivindicación 6, caracterizado además porque dicha primera memoria es una memoria de acceso en bloques.
10.- El medio legible por computadora de conformidad con la reivindicación 9, caracterizado además porque dicha primera memoria es una memoria instantánea.
11.- El medio legible por computadora de conformidad con la reivindicación 6, caracterizado además porque dicha segunda memoria es una memoria de acceso aleatorio no volátil.
12.- El medio legible por computadora de conformidad con la reivindicación 6, caracterizado además porque dicho número umbral de bytes de datos es configurable.
13.- Un sistema de manejo de memoria, caracterizado porque comprende: un procesador configurado para recibir y procesar datos; una memoria que comprende por lo menos una primera memoria y una segunda memoria; y un manejador de datos ejecutado por dicho procesador, en donde dicho manejador de datos está programado para definir dentro de dichos datos un número de bloques de datos, cada uno teniendo un tamaño de bloque predeterminado, y una última porción de datos que tiene menor tamaño que dicho tamaño de bloque predeterminado, dicho manejador de datos está programado para asignar espacio en dicha primera memoria para almacenar dicho número de bloques de datos, y dicho manejador de datos está programado adicionalmente para asignar espacio en dicha segunda memoria para captar dicha última porción de datos, dicha última porción de datos es captada en dicha segunda memoria mediante los pasos de: (A) asignar parte de dicha segunda memoria como memoria de tránsito de archivo, dicha memoria de tránsito de archivo estando configurada para almacenar datos de archivo; (B) escribir bytes de datos de dicha última porción de datos a dicha memoria de tránsito de archivo, hasta que se determina que los datos en dicha memoria de tránsito de archivo tienen dicho tamaño de bloque predeterminado; y (C) en respuesta a dicha determinación de que dichos datos en dicha memoria de tránsito de archivo tienen dicho tamaño de bloque predeterminado, mover dichos datos de dicha memoria de tránsito de archivo a dicha primera memoria antes de continuar el paso (B).
14.- El sistema de conformidad con la reivindicación 13, caracterizado además porque dicha primera memoria es una memoria con acceso a bloques.
15.- El sistema de conformidad con la reivindicación 13, caracterizado además porque dicha primera memoria es una memoria instantánea.
16.- El sistema de conformidad con la reivindicación 13, caracterizado además porque dicha segunda memoria es una memoria de acceso aleatorio no volátil.
17.- El sistema de conformidad con la reivindicación 13, caracterizado además porque comprende adicionalmente una interfaz de salida para despegar dichos datos a un usuario.
18.- El sistema de conformidad con la reivindicación 13, caracterizado además porque comprende adicionalmente una interfaz de entrada para recibir dichos datos.
19.- El sistema de conformidad con la reivindicación 13, caracterizado además porque comprende adicionalmente una interfaz para transmitir dichos datos a través de una red de comunicaciones.
20.- El sistema de conformidad con la reivindicación 13, caracterizado además porque dicho manejador de datos está programado adicionalmente para generar un cuadro de asignación de archivo (FAT) para dichos datos y almacenar dicho FAT en dicha segunda memoria.
21.- Un aparato manual, caracterizado porque comprende: un dispositivo de entrada de datos; un dispositivo de salida de datos; y un dispositivo de computación configurado para comunicarse con dicho dispositivo de entrada de datos, dicho dispositivo de salida y una fuente de datos a través de una red de comunicaciones, dicho dispositivo de computación comprendiendo: un procesador para procesamiento de datos, una memoria que comprende por lo menos una memoria de acceso aleatorio no volátil y una memoria con acceso a bloques, un manejador de datos, cuando es ejecutado por dicho procesador, comprendiendo los pasos de: (A) identificar, a partir de una entrada de datos de archivo, uno o más bloques de datos y una última porción de datos, cada uno de dichos uno o más bloques de datos teniendo un tamaño de bloque umbral, dicha última porción de datos teniendo menor tamaño que dicho tamaño de bloque umbral; (B) almacenar dichos uno o más bloques de datos en dicha memoria con acceso a bloques; (C) escribir dicha última porción de datos por byte en dicha memoria de acceso aleatorio no volátil, hasta que se determina que dicha memoria de acceso aleatorio no volátil incluye datos de archivo de dicho tamaño de bloque umbral; (E) en respuesta a la determinación de que se determina que dicha memoria de acceso aleatorio no volátil incluye datos de archivo de dicho tamaño de bloque umbral, mover dichos datos de archivo de dicha memoria de acceso aleatorio no volátil a dicha memoria con acceso a bloques antes de continuar el paso C.
22.- El aparato manual de conformidad con la reivindicación 21 , caracterizado además porque dicha memoria con acceso a bloques es una memoria instantánea.
23.- El aparato manual de conformidad con la reivindicación 21 , caracterizado además porque dicho tamaño de bloque umbral es configurable.
MX2007001185A 2004-07-30 2005-07-12 Sistemas, metodos, medio legible por computadora y aparato para el manejo de memoria utilizando una memoria de acceso aleatorio no volatil. MX2007001185A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/903,020 US7562202B2 (en) 2004-07-30 2004-07-30 Systems, methods, computer readable medium and apparatus for memory management using NVRAM
PCT/US2005/024586 WO2006019700A2 (en) 2004-07-30 2005-07-12 Systems, methods, computer readable medium and apparatus for memory management using nvram

Publications (1)

Publication Number Publication Date
MX2007001185A true MX2007001185A (es) 2007-03-21

Family

ID=35159742

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2007001185A MX2007001185A (es) 2004-07-30 2005-07-12 Sistemas, metodos, medio legible por computadora y aparato para el manejo de memoria utilizando una memoria de acceso aleatorio no volatil.

Country Status (9)

Country Link
US (1) US7562202B2 (es)
EP (1) EP1782176B1 (es)
JP (1) JP2008508596A (es)
CN (1) CN101014929B (es)
AT (1) ATE479934T1 (es)
CA (1) CA2574756C (es)
DE (1) DE602005023317D1 (es)
MX (1) MX2007001185A (es)
WO (1) WO2006019700A2 (es)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US20060190425A1 (en) * 2005-02-24 2006-08-24 Yuan-Chi Chang Method for merging multiple ranked lists with bounded memory
EP1855453A1 (fr) * 2006-05-11 2007-11-14 Axalto SA Gestion de la consommation d'une carte à puce utilisée dans un dispositif mobile
JP2008033788A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、データ記憶システム、およびデータ記憶方法
US7996680B2 (en) * 2006-09-27 2011-08-09 Hewlett-Packard Development Company, L.P. Secure data log management
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
JP4897524B2 (ja) * 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
JP4710056B2 (ja) * 2007-10-04 2011-06-29 Necインフロンティア株式会社 情報処理装置、フラッシュメモリ管理方法およびフラッシュメモリ管理プログラム
JP2009199199A (ja) * 2008-02-20 2009-09-03 Hitachi Ltd ストレージシステム及びそのデータライト方法
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
US7719876B2 (en) * 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
US8397016B2 (en) * 2008-12-31 2013-03-12 Violin Memory, Inc. Efficient use of hybrid media in cache architectures
KR101573047B1 (ko) * 2009-01-23 2015-12-02 삼성전자주식회사 복합 메모리 장치 및 이를 이용한 i/o 처리 방법
US20110167197A1 (en) * 2010-01-05 2011-07-07 Mark Leinwander Nonvolatile Storage with Disparate Memory Types
JP5330549B2 (ja) 2010-02-02 2013-10-30 株式会社東芝 ストレージ機能を持つ通信装置
JP5269213B2 (ja) * 2010-02-02 2013-08-21 株式会社東芝 ストレージ機能を持つ通信装置
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
DE112011106032B4 (de) 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
CN102567216B (zh) * 2011-12-29 2015-07-29 北京交控科技有限公司 提高闪存寿命的可靠性存储方法
CN102801768A (zh) * 2012-01-20 2012-11-28 华为技术有限公司 数据处理方法及系统、网络设备
JP5687648B2 (ja) * 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
US20130326161A1 (en) * 2012-05-31 2013-12-05 Oren Cohen Method and Host Device for Assessing Execution of Trim Commands
CN104615546B (zh) * 2015-02-13 2018-04-27 小米科技有限责任公司 文件数据管理方法及装置
US10019331B2 (en) * 2015-06-22 2018-07-10 Sap Se Memory allocation and recovery strategies for byte-addressable non-volatile RAM (NVRAM)
CN105117167B (zh) * 2015-08-10 2019-03-01 北京联想核芯科技有限公司 一种信息处理方法及装置、电子设备
CN105159839B (zh) * 2015-09-28 2018-05-29 北京联想核芯科技有限公司 一种配置方法和装置以及固态硬盘
CN106598473B (zh) * 2015-10-15 2020-09-04 南京中兴新软件有限责任公司 消息持久化方法及装置
TWI615770B (zh) * 2015-11-17 2018-02-21 群聯電子股份有限公司 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
CN105426779B (zh) * 2015-11-19 2018-06-05 浪潮(北京)电子信息产业有限公司 一种利用nvram保证文件系统数据安全的方法
MX361249B (es) * 2015-12-03 2018-11-30 Huawei Tech Co Ltd Controlador de arreglo, disco en estado sólido, y método para controlar el disco en estado sólido para escribir datos.
US10175891B1 (en) * 2016-03-15 2019-01-08 Pavilion Data Systems, Inc. Minimizing read latency for solid state drives
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11562023B1 (en) * 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11620336B1 (en) * 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11250056B1 (en) * 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
CN107329694B (zh) * 2017-06-22 2021-05-18 苏州奈特力智能科技有限公司 数据存储控制方法、控制装置及存储设备
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
JP2019164712A (ja) * 2018-03-20 2019-09-26 東芝メモリ株式会社 記憶装置、情報処理システム及びプログラム
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
CN109710181A (zh) * 2018-12-11 2019-05-03 成都嘉泰华力科技有限责任公司 一种提高nand flash器件文件存取速度的方法及系统
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
KR20220014212A (ko) * 2020-07-28 2022-02-04 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
US11599304B2 (en) * 2020-11-16 2023-03-07 Western Digital Technologies, Inc. Data aggregation in ZNS drive

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571674A (en) 1982-09-27 1986-02-18 International Business Machines Corporation Peripheral storage system having multiple data transfer rates
US5276840A (en) 1991-03-22 1994-01-04 Acer Incorporated Disk caching method for writing data from computer memory including a step of writing a plurality of physically adjacent blocks in a single I/O operation
US5481701A (en) 1991-09-13 1996-01-02 Salient Software, Inc. Method and apparatus for performing direct read of compressed data file
US5694570A (en) 1992-09-23 1997-12-02 International Business Machines Corporation Method and system of buffering data written to direct access storage devices in data processing systems
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5729767A (en) 1994-10-07 1998-03-17 Dell Usa, L.P. System and method for accessing peripheral devices on a non-functional controller
US6321293B1 (en) 1995-11-14 2001-11-20 Networks Associates, Inc. Method for caching virtual memory paging and disk input/output requests
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
WO1999060564A2 (en) 1998-05-15 1999-11-25 Storage Technology Corporation Caching method for data blocks of variable size
US6249841B1 (en) * 1998-12-03 2001-06-19 Ramtron International Corporation Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays
US6651142B1 (en) 2000-05-05 2003-11-18 Sagent Technology Method and apparatus for processing data using multi-tier caching
US20030120841A1 (en) * 2001-12-21 2003-06-26 Chang Matthew C.T. System and method of data logging
WO2004059651A2 (en) 2002-12-27 2004-07-15 Solid State System Co., Ltd. Nonvolatile memory unit with specific cache
US20040193782A1 (en) * 2003-03-26 2004-09-30 David Bordui Nonvolatile intelligent flash cache memory
US20050050261A1 (en) * 2003-08-27 2005-03-03 Thomas Roehr High density flash memory with high speed cache data interface
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory

Also Published As

Publication number Publication date
CN101014929B (zh) 2010-05-05
WO2006019700A3 (en) 2006-10-12
US20060026211A1 (en) 2006-02-02
WO2006019700A2 (en) 2006-02-23
EP1782176A2 (en) 2007-05-09
CN101014929A (zh) 2007-08-08
CA2574756C (en) 2013-02-12
EP1782176B1 (en) 2010-09-01
DE602005023317D1 (de) 2010-10-14
CA2574756A1 (en) 2006-02-23
ATE479934T1 (de) 2010-09-15
US7562202B2 (en) 2009-07-14
JP2008508596A (ja) 2008-03-21

Similar Documents

Publication Publication Date Title
MX2007001185A (es) Sistemas, metodos, medio legible por computadora y aparato para el manejo de memoria utilizando una memoria de acceso aleatorio no volatil.
US8738882B2 (en) Pre-organization of data
US10732857B2 (en) Techniques for reducing memory write operations using coalescing memory buffers and difference information
US9343153B2 (en) De-duplication in flash memory module
US5832493A (en) Flash file management system
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US6571326B2 (en) Space allocation for data in a nonvolatile memory
EP2631916B1 (en) Data deletion method and apparatus
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
US7536500B2 (en) Header blocks for flash memory writes
US20030229753A1 (en) Flash memory file system
US20100228906A1 (en) Managing Data in a Non-Volatile Memory System
CN109558335B (zh) 一种基于Nor Flash存储器的嵌入式系统的文件存储格式
KR100703680B1 (ko) 플래시 파일 시스템
US20100180072A1 (en) Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
CN105630406A (zh) 利用mram作为编辑缓存区的存储系统及编辑缓存方法
KR100319254B1 (ko) 플레쉬 메모리를 이용한 비휘발성 데이터 영역 복구 방법
US20190286343A1 (en) Mapping table management method for solid state storage device
JP2004295759A (ja) 記録方式
JPH1031611A (ja) 不揮発性メモリ記憶媒体用ファイルシステム
CN109002265A (zh) 一种数据处理的方法以及相关装置
US20220164135A1 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory