ES2663701T3 - Administración de datos y metadatos de la caché - Google Patents
Administración de datos y metadatos de la caché Download PDFInfo
- Publication number
- ES2663701T3 ES2663701T3 ES09826570.5T ES09826570T ES2663701T3 ES 2663701 T3 ES2663701 T3 ES 2663701T3 ES 09826570 T ES09826570 T ES 09826570T ES 2663701 T3 ES2663701 T3 ES 2663701T3
- Authority
- ES
- Spain
- Prior art keywords
- cache
- data
- computer
- metadata
- memory
- 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.)
- Active
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
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
- G06F12/0871—Allocation or management of cache space
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Un método para ejecución en un ordenador (700) que comprende una memoria (704) y que tiene acoplado un medio de almacenamiento (760) y un dispositivo de la caché (110), almacenando el medio de almacenamiento una pluralidad de elementos de datos cada uno en direcciones respectivas, cada uno de la pluralidad de elementos de datos también se almacena en una dirección correspondiente en el dispositivo de la caché, y almacena metadatos de la caché accesibles para el ordenador (700) y proporciona un mapeo entre la dirección en el medio de almacenamiento y la dirección correspondiente en el dispositivo de la caché en que cada elemento de datos se almacena, dicho método se caracteriza por: en respuesta a la determinación de que el ordenador (700) se ha iniciado, cargando solamente los niveles superiores de una estructura de datos jerárquica desde el dispositivo de la caché a la memoria (704), siendo dicho dispositivo de la caché no volátil y conteniendo datos y metadatos, y dicha estructura de datos jerárquica almacenando metadatos de la caché, donde el nivel más bajo de la estructura de datos jerárquica se almacena en el dispositivo de la caché hasta que sea necesario, donde los elementos en los niveles cargados incluyen punteros a los elementos en los siguientes niveles inferiores, y en donde los elementos en el nivel más bajo incluyen punteros a unidades de datos en metadatos de la caché; en respuesta a una solicitud de lectura, identificar un valor de dirección de la caché navegando por la estructura de datos jerárquica, y cargar el elemento correspondiente desde el dispositivo de la caché (110) en la memoria (704); y en respuesta a determinar que el ordenador (700) se está apagando, almacenando solo los datos de los niveles superiores de la estructura jerárquica y los datos cargados en la memoria durante el funcionamiento en el dispositivo de la caché (110).
Description
5
10
15
20
25
30
35
40
45
50
DESCRIPCION
Administración de datos y metadatos de la caché Campo de la invención
Esta invención se refiere a técnicas para emplear dispositivos de memoria no volátiles, tales como dispositivos de memoria de acceso aleatorio no volátil (NVRAM) extraíbles y no extraíbles.
Antecedentes
Algunos sistemas operativos convencionales brindan la capacidad de utilizar un dispositivo de memoria no volátil (es decir, un dispositivo periférico operable para proporcionar almacenamiento y/o memoria auxiliar a un ordenador, tal como una unidad USB de memoria flash) como un bloque o memoria caché de nivel de archivo para dispositivos de almacenamiento más lentos (por ejemplo, un medio de almacenamiento en disco, o uno o más dispositivos de almacenamiento accesibles a través de una red), para mejorar el rendimiento del sistema operativo y/o aplicaciones. A este respecto, porque las operaciones de lectura y escritura se pueden realizar significativamente más rápido desde o hacia un dispositivo de memoria no volátil (en adelante denominado “dispositivo de la caché” por simplicidad) que desde un dispositivo de almacenamiento más lento, utilizando un dispositivo de la caché para los datos de la caché almacenados en un dispositivo tan lento ofrecen oportunidades para mejorar significativamente la velocidad de las operaciones de entrada/salida (I/O) de los sistemas operativos y/o aplicaciones. Con este fin, el sistema operativo Microsoft Windows Vista, producido por Microsoft Corporation de Redmond, WA, incluye una función conocida como ReadyBoost que permite a los usuarios emplear dispositivos de la caché para almacenar datos de la caché que también residen en un dispositivo de almacenamiento más lento (denominado en adelante “disco de almacenamiento “o” disco” por conveniencia, aunque debe entenderse que estos términos se refieren generalmente a cualquier mecanismo(s) y/o dispositivo(s) de almacenamiento para los cuales l/O se realiza típicamente más lentamente que un dispositivo de la caché, incluyendo dispositivos de almacenamiento accesibles a través de una red).
El uso de un dispositivo de la caché para almacenar en la caché los datos almacenados en el disco puede lograrse utilizando un componente de administrador de la caché, que en algunas implementaciones es un controlador implementado en la pila de I/O del sistema operativo. Las Figs. 1A-1B representan ejemplos de procesos de alto nivel 10A-10B mediante los cuales un componente 100 administrador de la caché administra el almacenamiento en memoria caché de datos al dispositivo 110 de la caché. El dispositivo 110 de la caché se puede acoplar, utilizando una infraestructura de comunicaciones cableada y/o inalámbrica y protocolo(s), a un ordenador (no mostrado) en la que reside el administrador de la caché 100. Por ejemplo, el dispositivo 110 de la caché puede ser extraíble del ordenador (por ejemplo, comprende una unidad USB de memoria flash), no extraíble y/o accesible para el ordenador a través de una o más redes cableadas y/o inalámbricas.
Al comienzo del proceso 10A (figura 1A), el administrador de la caché 100 recibe una solicitud por escrito que especifica que los datos deben escribirse en la dirección X en el almacenamiento en disco (es decir, el volumen en la caché 120). El administrador de caché 100 procesa la solicitud haciendo que los datos se escriban en la dirección X en el volumen en la caché 120 en la operación 101, y también a la dirección Y en el dispositivo de la caché 110 en la operación 102. El proceso 10B (figura 1B) incluye operaciones realizadas a continuación cuando se recibe una solicitud de lectura que especifica que los datos almacenados en la dirección X en el volumen 120 almacenado en la caché deben leerse. El administrador de la caché 100 determina que los datos se almacenan en la caché en el dispositivo de la caché 110 en la dirección Y, y hace que los datos en la dirección Y se lean en la operación 103. Los datos se sirven desde el dispositivo de la caché para satisfacer la solicitud de lectura en la operación 104.
El administrador de la caché mantiene un mapeo de direcciones de disco (por ejemplo, dirección X) a direcciones de la caché correspondientes (por ejemplo, dirección Y) en metadatos, y estos “metadatos de la caché” se emplean generalmente para leer o escribir en el dispositivo de la caché. Por lo general, los metadatos de la caché se mantienen en la memoria y el administrador de la caché accede a ellos cuando se reciben las solicitudes de I/0. Como tal, cuando el administrador de la caché recibe una solicitud de lectura dirigida al desplazamiento X de disco, el administrador de la caché usa los metadatos de la caché para determinar que los datos también se almacenan en el desplazamiento Y de la caché y para satisfacer la solicitud haciendo que los datos sean leídos del desplazamiento Y de la caché en lugar del desplazamiento X del disco. Cuando el administrador de la caché recibe una solicitud escrita dirigida al desplazamiento X de disco, el administrador de la caché emplea los metadatos de la caché para determinar si también se almacenan los datos en esa dirección de disco en la caché. Si es así (por ejemplo, si los datos están almacenados en la dirección Y de caché), el administrador de la caché puede hacer que los datos se escriban en la dirección apropiada en la caché, o desalojar el contenido de la caché en esa dirección. De lo contrario, el administrador de la caché puede hacer que los datos se escriban en la caché, y puede actualizar los metadatos de la caché para que las lecturas futuras en el desplazamiento X del disco puedan ser servidos a partir de los datos almacenados en la caché.
Los sistemas operativos convencionales son capaces de soportar dispositivos de la caché con capacidad de almacenamiento relativamente limitada. Por ejemplo, la característica ReadyBoost del sistema operativo Windows Vista admite dispositivos de la caché con una capacidad de almacenamiento de hasta cuatro gigabytes. (En el momento en que se lanzó Windows Vista, la capacidad máxima de almacenamiento de los dispositivos de la caché 5 era aproximadamente de dos gigabytes). La capacidad de almacenamiento de los dispositivos de la caché ha crecido rápidamente en los últimos años, con algunos dispositivos de la caché que proporcionan una capacidad de almacenamiento de hasta dieciseis gigabytes, que pueden almacenar el equivalente a treinta y dos gigabytes de datos cuando se comprimen.
En el documento US 2007/0061511 A1, se divulgan los medios para almacenar metadatos de la caché en un 10 dispositivo de la caché de almacenamiento no volátil. Los metadatos se almacenan en forma comprimida y sin comprimir.
“OHN ET AL: “Path conscious caching of B+ tree indexes in a shared disks cluster”, JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, ELSEVIER, AMSTERDAM, NL, vol. 67, no. 3, 27 enero 2007 (2007-01-27), páginas 266-301, XP005737456)” revela árboles B + que almacenan tanto datos como datos de índices en la memoria.
15 En el documento US 6 128 627, se revela una técnica para recolección de basura. De acuerdo con esta publicación, las marcas de agua indican cuándo realizar la recolección de basura para para borrar la memoria
Resumen de la invención
La presente invención se define en las reivindicaciones independientes anexas a las cuales se debe hacer referencia. Los solicitantes han apreciado que los dispositivos de la caché que tienen una capacidad de almacenamiento 20 relativamente mayor ofrecen una oportunidad significativa para mejorar la velocidad de las operaciones de I/O realizadas por los sistemas operativos y las aplicaciones. Los solicitantes también han apreciado que una razón por la que los sistemas operativos convencionales admiten dispositivos de la caché con capacidad de almacenamiento relativamente limitada es que los contenidos de la caché deben repoblarse cuando ciertos tipos de transiciones de energía (por ejemplo, modo de espera, hibernación (o modos equivalentes utilizados por sistemas operativos que no 25 son de Microsoft Windows), o reinicio). Con los dispositivos de la caché que tienen una capacidad de almacenamiento relativamente mayor, volver a llenar los contenidos de la caché puede llevar un tiempo considerable y consumir recursos de procesamiento significativos. Como ejemplo, un dispositivo de memoria flash de ocho gigabytes, que puede contener hasta dieciséis gigabytes de datos comprimidos, puede demorar hasta treinta minutos en repoblarse usando I/O de fondo del disco a aproximadamente diez megabytes por segundo. Esto no solo niega de manera efectiva 30 los beneficios de rendimiento que se podrían haber obtenido empleando el dispositivo de la caché, sino que puede retrasar significativamente las operaciones del sistema.
Una razón por la que los contenidos de la caché deben repoblarse en determinadas transiciones de energía es que no hay manera de garantizar confiablemente que los contenidos de la caché representen con precisión los contenidos de almacenamiento en disco cuando el ordenador se reinicie, porque los contenidos del dispositivo de la caché y/o el 35 disco pueden haber sido modificados durante la transición de energía. Por ejemplo, cuando se cierra un primer ordenador, un pirata informático podría desconectar un dispositivo de la caché extraíble, conectarlo a otro ordenador y modificar los contenidos de la caché, de modo que si el dispositivo se reconectara al primer ordenador, datos incorrectos (en lo sucesivo denominados como datos “no auténticos”) podría ser servidos desde el dispositivo de la caché para satisfacer las solicitudes de I/0. Además de los actos maliciosos de un pirata informático, los contenidos 40 de la caché también pueden contaminarse durante una transición de energía debido a una falla de hardware del ordenador o dispositivo de la caché.
Los contenidos de la caché también pueden volverse “obsoletos” durante una transición de energía porque los datos del disco se actualizaron durante la transición, de modo que cuando se reinicia el equipo, es posible que los contenidos de la caché ya no representen con precisión los contenidos del disco. Por ejemplo, después de apagado, un usuario 45 puede iniciar el disco en otro sistema operativo que no reconoce el dispositivo de la caché y modificar los datos almacenados en el disco que se almacena en la caché en el dispositivo de la caché, de modo que cuando se reinicia el ordenador los contenidos de la caché ya no reflejan lo que está almacenado en el disco. En otro ejemplo, ciertas operaciones en un ordenador durante el apagado podrían ocurrir después de que el dispositivo de la caché se vuelva inaccesible para el sistema operativo (por ejemplo, después de que el dispositivo de la caché esté apagado), de modo 50 que cualquier escritura en el disco realizada por el sistema operativo después de este momento puede no ser reflejado con precisión por los contenidos de la caché. Cualquiera de los numerosos eventos puede provocar que los contenidos de la caché queden obsoletos en una transición de energía. Ejemplos de la presente invención proporcionan técnicas para administrar estas y otras inquietudes de tal manera que los contenidos de la caché puedan ser considerados como datos almacenados que se reflejan fielmente en el disco durante una transición de energía. Por ejemplo, algunos 55 ejemplos de la invención proporcionan técnicas para verificar que los contenidos de la caché permanezcan auténticos a lo largo de una transición de energía. Además, algunos ejemplos proporcionan técnicas para garantizar de manera confiable que los contenidos de la caché no se vuelvan obsoletos en una transición de energía. Además, algunas realizaciones proporcionan técnicas para administrar metadatos de la caché a través de transiciones de energía, así
como durante operaciones normales (“estado estable”), asegurando que los metadatos de la caché pueden ser accedidos eficientemente y salvados y restaurados de forma fiable cuando se produce una transición de energía
Proporcionando técnicas que aseguran que se puede confiar en el contenido de la caché como datos que reflejan fielmente datos almacenados en el disco a través de transiciones de energía, algunas realizaciones de la invención 5 pueden habilitar un dispositivo de la caché con capacidad de almacenamiento sustancial para acelerar significativamente las operaciones de I/O realizadas por el sistema operativo y/o aplicaciones. La mayor velocidad de las operaciones de I/O no solo acelerará las operaciones normales de “estado estable” del ordenador, sino que también acelerará significativamente las operaciones realizadas durante el arranque, de modo que el ordenador estará listo para usarse mucho más rápidamente.
10 En algunas realizaciones de la invención, se proporciona un método para operar un ordenador que comprende una memoria y que tiene acoplado un medio de almacenamiento y un dispositivo de la caché, almacenando el medio de almacenamiento una pluralidad de elementos de datos cada uno en direcciones respectivas, cada uno de la pluralidad de elementos de datos también se almacenan en una dirección correspondiente en el dispositivo de la caché, metadatos de la caché accesibles al ordenador que proporciona un mapeo entre la dirección en el medio de 15 almacenamiento y la dirección correspondiente en el dispositivo de la caché en el que se almacena cada elemento de
datos. El método comprende acciones de: (A) almacenar los metadatos de la caché en una estructura de datos jerárquica que comprende una pluralidad de niveles de jerarquía; y (B) cargando solo un subconjunto de la pluralidad de niveles de jerarquía a la memoria.
Otras realizaciones proporcionan al menos un medio de almacenamiento legible por ordenador que tiene instrucciones 20 codificadas que, cuando se ejecuta mediante un ordenador que comprende una memoria y que tiene acoplado a ella almacenamiento en disco y un dispositivo de la caché, almacenando el disco una pluralidad de elementos de datos cada uno en direcciones respectivas, cada uno de la pluralidad de elementos de datos también se almacena en una dirección correspondiente en el dispositivo de la caché, metadatos de la caché accesibles al ordenador que proporcionan un mapeo entre la dirección en el almacenamiento en disco y la dirección correspondiente en el 25 dispositivo de la caché en el que se almacena cada elemento de datos, realizar un método que comprende acciones
de: (A) almacenar los metadatos de la caché, en el dispositivo de la caché, en una estructura de datos jerárquica que comprende una pluralidad de niveles de jerarquía; (B) iniciar un reinicio del ordenador; (C) al iniciar el reinicio del ordenador, cargar solo un subconjunto de la pluralidad de niveles de jerarquía a la memoria; (D) recibir una solicitud para leer un elemento de datos almacenado en una dirección en el medio de almacenamiento; (E) acceder a una 30 primera parte de los metadatos de la caché para identificar una dirección correspondiente en la que el elemento de datos se almacena en el dispositivo de la caché; y (F) almacenar la primera parte de los metadatos de la caché en la memoria.
Otras realizaciones proporcionan un sistema informático que comprende: una memoria; un medio de almacenamiento que almacena una pluralidad de elementos de datos en direcciones respectivas; un dispositivo de la caché que también 35 almacena la pluralidad de elementos de datos en direcciones correspondientes y metadatos de la caché que proporcionan un mapeo entre la dirección en el medio de almacenamiento y la dirección correspondiente en el dispositivo de la caché en el que se almacena cada elemento de datos, los metadatos de la caché se almacenan en una estructura de datos jerárquica que comprende una pluralidad de niveles de jerarquía; al menos un procesador programado para: al iniciar un reinicio del ordenador, cargar solo un subconjunto de la pluralidad de niveles de jerarquía 40 a la memoria; procesar solicitudes para leer elementos de datos almacenados en direcciones respectivas en el medio de almacenamiento utilizando los metadatos de la caché para identificar las direcciones correspondientes en las cuales los elementos de datos se almacenan en el dispositivo de la caché y almacenando las direcciones correspondientes identificadas en la memoria; y procesar un comando para apagar el ordenador transfiriendo el subconjunto de la pluralidad de niveles de jerarquía y las direcciones correspondientes identificadas de la memoria al dispositivo de la 45 caché.
Breve descripción de los dibujos
Las Figs. 1A-1B son un diagrama de bloques que representa técnicas para escribir y leer desde un dispositivo de la caché, de acuerdo con la técnica anterior;
Las Figs. 2A-2B representan técnicas de ejemplo para escribir y leer desde un dispositivo de la caché de acuerdo con 50 algunos ejemplos de la invención;
La Fig. 3 es un diagrama de bloques que representa una técnica de ejemplo para asegurar que los datos de la caché reflejan con precisión los datos almacenados en el disco después de una transición de energía, de acuerdo con algunos ejemplos de la invención;
La Fig.4 es un diagrama de bloques que representa una técnica de ejemplo para almacenar metadatos de la caché, 55 de acuerdo con algunas realizaciones de la invención;
5
10
15
20
25
30
35
40
45
50
La Fig. 5 es un diagrama de bloques que representa ejemplos de operaciones de almacenamiento para metadatos de la caché, de acuerdo con algunas realizaciones de la invención;
La Fig. 6 es un diagrama de flujo que representa una técnica de ejemplo para dar servicio a las solicitudes de lectura que usan un dispositivo de la caché, de acuerdo con algunos ejemplos de la invención;
La Fig. 7 es un diagrama de bloque que representa un ordenador de ejemplo que puede usarse para implementar aspectos de la invención; y
La Fig. 8 es un diagrama de bloque que representa una memoria de ordenador de ejemplo en la que pueden grabarse instrucciones que implementan aspectos de la invención.
Descripción detallada
Algunos ejemplos de la invención proporcionan técnicas para asegurar que el contenido de la caché refleje con precisión los contenidos del almacenamiento en el disco a través de una transición de energía. Por ejemplo, algunos ejemplos proporcionan una capacidad para asegurar que los contenidos de la caché permanecen auténticos y/o no se han vuelto obsoletos en la transición de energía. Además, algunos ejemplos proporcionan técnicas para administrar metadatos de la caché, para asegurar que los metadatos no se hayan alterado durante una transición de energía. Además, algunas realizaciones proporcionan una capacidad para almacenar metadatos de la caché que pueden mejorar la eficacia con la que se pueden realizar tanto las transiciones de energía como las operaciones normales. Las secciones que siguen describen estos ejemplos y realizaciones en detalle.
1. Verificación de la autenticidad de los datos de la caché
Cuando un ordenador experimenta una transición de energía (por ejemplo, se lleva al modo de espera o de hibernación, o se reinicia), un dispositivo de la caché puede desconectarse del ordenador y su contenido puede ser alterado (por ejemplo, por un pirata informático malintencionado). Por ejemplo, cuando un ordenador pasa al modo de espera o de hibernación, un dispositivo de la caché extraíble, como una unidad de memoria flash, puede desconectarse del ordenador y modificarse su contenido. Incluso los dispositivos no extraíbles, como los dispositivos NVRAM internos, pueden desconectarse y cambiar su contenido cuando se reinicia el sistema operativo (es decir, se vuelve a cargar, reiniciando así el ordenador). Como resultado, cuando el dispositivo de la caché se vuelve a conectar al ordenador, puede almacenar información diferente a la que el usuario cree (es decir, los datos almacenados en la caché pueden no ser “auténticos”). Si se sirven datos no auténticos de la caché para satisfacer una solicitud de entrada/salida (I/O), la operación del ordenador podría verse negativamente afectada.
Algunos ejemplos de la invención proporcionan técnicas para detectar modificaciones que ocurren en los contenidos de la caché durante una transición de energía, para asegurar que las solicitudes de I/O no se satisfagan utilizando datos no auténticos de la caché. En algunos ejemplos, se proporciona una capacidad para detectar cualquier “modificación fuera de línea” que se produzca en los contenidos de la caché durante una transición de energía que los haga no auténticos.
Algunos ejemplos proporcionan esta capacidad usando una representación de al menos una parte de los datos. Por ejemplo, una representación puede calcularse o derivarse de al menos una parte de los datos y/u otra información de una manera predeterminada. La representación se puede generar por primera vez cuando los datos se escriben en la caché y se almacenan en una o más ubicaciones. Por ejemplo, la representación se puede escribir en la caché junto con los datos, o en alguna otra ubicación. Cuando se almacena en la caché, la representación se puede almacenar de una manera que asocie la representación con los datos (por ejemplo, se puede escribir en una dirección de la caché adyacente a la que se escriben los datos, escritos en los metadatos de la caché asociados con los datos, y/o asociado de alguna otra manera). Cuando los datos se leen posteriormente desde la caché, la representación también puede recuperarse. La representación se puede volver a generar de la manera predeterminada, y la representación regenerada se puede comparar con la representación recuperada. Si las representaciones coinciden, los datos recuperados de la caché se determinan como auténticos y sirven para satisfacer la solicitud de lectura. De lo contrario, se emite una solicitud para leer los datos en lugar del almacenamiento en disco para satisfacer la solicitud de lectura, y los datos no auténticos almacenados en la caché pueden ser desalojados (por ejemplo, eliminados).
Las Figs. 2A-2B representan este proceso en mayor detalle. En particular, el proceso 20A que se muestra en la FIG. 2A incluye las operaciones realizadas cuando los datos se escriben en la caché, y el proceso 20B que se muestra en la FIG. 2B incluye operaciones realizadas posteriormente cuando los datos se leen desde la caché. Los procesos 20A- 20B incluyen cada uno operaciones realizadas por el volumen en la caché 120 (en el lado izquierdo de cada figura), el administrador de la caché 100 (en el medio) y el dispositivo de la caché 110 (a la derecha).
Al comienzo del proceso 20A (figura 2A), el administrador de la caché 100 recibe una solicitud escrita dirigida a la dirección X en el almacenamiento del disco en la acción 205. En la acción 210, el administrador de la caché 100
5
10
15
20
25
30
35
40
45
50
55
emplea metadatos de la caché (no mostrados) para determinar una dirección Y en el dispositivo de la caché 110 a la que también deben escribirse los datos. El administrador de la caché también genera la representación de al menos una parte de los datos.
Los ejemplos de la invención pueden generar esta representación usando cualquier técnica adecuada. En algunos ejemplos, se pueden emplear una o más técnicas de autenticación criptográfica para generar la representación. Por ejemplo, en algunos ejemplos, la representación puede comprender un código de autenticación de mensaje (MAC) generado a partir de los datos y un conjunto de claves secretas y números de secuencia de elementos por datos. Sin embargo, la invención no se limita a dicha implementación, ya que puede emplearse cualquier técnica adecuada para generar la representación. Por ejemplo, las técnicas de autenticación criptográfica no necesitan ser empleadas. Como un ejemplo, un signo fuerte y/o código de redundancia cíclico (CRC) podría usarse alternativamente para representar datos, y puede generarse a partir de elementos de datos individuales almacenados en la caché, o para uno o más grupos de elementos de datos. A este respecto, los solicitantes han apreciado que si el objetivo de verificar la autenticidad de los datos fuera simplemente detectar instancias de corrupción de hardware (es decir, el pirateo de datos no era una preocupación), el uso de un CRC puede ser suficiente y puede consumir menos recursos de procesamiento que generando un MAC para cada elemento de datos. Sin embargo, si el objetivo es evitar que un pirata informático o un actor malicioso modifique los contenidos de la caché, entonces es preferible una solución criptográfica, de modo que se pueda utilizar una representación como MAC. La invención no se limita a ninguna implementación particular, ya que se puede emplear cualquier técnica adecuada.
En la acción 215, el administrador de la caché 100 emite la solicitud al dispositivo de la caché 110 para escribir los datos en la dirección Y de la caché. El administrador de la caché también emite una solicitud al dispositivo de la caché 110 para escribir la representación. Por ejemplo, el administrador de la caché 100 puede especificar que la representación debe escribirse en una o más ubicaciones adyacentes a la dirección Y de la caché, o almacenarse en metadatos de la caché para los datos, y/o utilizando cualquier otra técnica. Como se discutió anteriormente, la invención no se limita a escribir la representación en cualquier ubicación particular (por ejemplo, no necesita escribirse en el dispositivo de la caché 110). Si se escribe en la caché, la representación se puede asociar con los datos de la manera que se desee.
En la acción 220, el dispositivo de la caché 110 recibe la solicitud y la procesa escribiendo los datos y la representación en la acción 225.
En la acción 230, el administrador de la caché 100 emite una solicitud correspondiente al volumen almacenado en la caché 120 para escribir los datos en la dirección de disco X. El volumen de la caché 120 recibe esta solicitud en la acción 235 y la procesa escribiendo los datos en la dirección X en la acción 240. Aunque se muestra en la FIG. 2A como siendo efectuado posteriormente a la escritura en la caché en las acciones 215-225, las acciones 230-240 pueden realizarse en paralelo con las acciones 215-225, o en cualquier otro momento adecuado, ya que la invención no se limita a ninguna implementación particular. El proceso 20A entonces se completa.
El proceso 20B (figura 2B) incluye las operaciones realizadas para leer los datos almacenados en la caché. En la acción 245, el administrador 100 de la caché recibe una solicitud para leer los datos almacenados en la dirección X en el volumen 120 en la caché. Usando los metadatos de la caché (no mostrados), el administrador de la caché 100 determina que los datos se almacenan en la dirección Y en el dispositivo de la caché 110 en la acción 250. En la acción 255, el administrador de la caché 100 emite una solicitud de lectura para almacenar en la caché el dispositivo 110 para recuperar tanto los datos almacenados en la dirección Y como la representación asociada. La solicitud es recibida por el dispositivo de la caché 110 en la acción 260 y procesada en la acción 265, con lo que el dispositivo de la caché 100 devuelve los resultados al administrador de la caché 100.
En la acción 270, el administrador de la caché 100 determina si los datos recuperados de la caché pueden verificarse. En algunos ejemplos, esto se hace volviendo a generar la representación de los datos, y comparando la representación regenerada con la representación originalmente generada en la acción 215. Por ejemplo, la acción 270 puede incluir regenerar un MAC o CRC para los datos, y compararlo con la representación recuperada de la caché en la acción 265.
Si en la acción 270 se determina que la representación puede verificarse, el proceso pasa a la acción 275, en donde los datos recuperados del dispositivo de la caché 110 se sirven para satisfacer la solicitud de lectura, y luego se completa el proceso 20B. Si en la acción 270 se determina que la representación no puede verificarse, el proceso pasa a la acción 280, en donde el administrador de la caché 100 emite una solicitud para almacenar en la caché el dispositivo 110 para desalojar (por ejemplo, borrar o hacer inaccesible) los datos almacenados en la dirección Y. El administrador de la caché 100 luego emite una solicitud al volumen almacenado en la caché 120 para leer los datos de la dirección X en el disco en la acción 285. Esta solicitud se recibe en la acción 290 y se procesa en la acción 295, tras lo cual los datos se devuelven al administrador de la caché 100. Los datos leídos desde la dirección X se sirven para satisfacer la solicitud de lectura en la acción 299. El proceso 20B luego se completa.
5
10
15
20
25
30
35
40
45
50
55
Si se emplea una solución criptográfica para verificar la autenticidad de los datos, cualquier clave(s) utilizada(s) para generar una representación se puede escribir en ubicaciones distintas del dispositivo de la caché durante la transición de energía, para evitar que un pirata informático acceda a las claves para regenerar representaciones para elementos de datos alterados. Por ejemplo, en algunos ejemplos, las claves se pueden almacenar en el almacenamiento en disco (por ejemplo, cuando se apaga el ordenador) para evitar el acceso no autorizado. Sin embargo, la invención no está limitada a dicha implementación, ya que las claves no necesitan almacenarse, y si están almacenadas, pueden residir en cualquier ubicación adecuada. Por ejemplo, las claves almacenadas pueden colocarse en cualquier almacén de configuración proporcionada por el sistema operativo que está disponible durante el arranque del sistema (por ejemplo, el registro del sistema en Windows) o regenerarse basado en la entrada del usuario (por ejemplo, una contraseña) de tal manera que no es necesario el almacenamiento de claves.
Debería apreciarse que las realizaciones descritas anteriormente para verificar la autenticidad de un elemento de datos almacenado en un dispositivo de la caché son simplemente ejemplos, y esa autenticidad puede verificarse usando cualquier técnica adecuada. Por ejemplo, la autenticidad del elemento de datos no necesita verificarse generando una representación de al menos una parte del elemento de datos cuando se escribe el elemento de datos que luego se regenera cuando se lee el elemento de datos. Cualquier técnica adecuada que garantice de forma fiable que un elemento de datos leído desde la caché sea auténtico y coincida con el elemento de datos previamente escrito en la caché puede ser empleado. La invención no está limitada a ninguna implementación particular.
II. Prevenir el estancamiento de los datos de la caché
Como se discutió anteriormente, los sistemas operativos convencionales son incapaces de detectar cuándo se realizan las operaciones de escritura en los elementos de datos almacenados en el disco durante las transiciones de energía que hacen que el contenido de la caché se quede obsoleto. Algunas realizaciones de la invención proporcionan mecanismos para detectar cuándo se producen estas “escrituras fuera de línea”, asegurando así que el contenido de la memoria caché refleje con precisión los datos almacenados en el disco después de que se produce una transición de energía.
Con algunos sistemas operativos (por ejemplo, la familia de sistemas operativos Windows ofrecidos por Microsoft Corporation), la semántica de ciertas transiciones de energía (por ejemplo, modos de espera e hibernación) es tal que los datos en dispositivos de almacenamiento no extraíbles (por ejemplo, almacenamiento en disco) pueden no ser modificado durante una transición de energía. Como tal, los contenidos de la caché que corresponden a los datos en dichos medios no extraíbles generalmente no se vuelven obsoletos. Sin embargo, cuando el ordenador se apaga, pueden suceder varias cosas que hacen posible que se modifiquen los datos en el disco. Por ejemplo, un usuario puede iniciar el disco en otro sistema operativo en ese ordenador, o conectar el disco a otro ordenador, y modificar los datos almacenados en el disco. Además, como se discutió anteriormente, la mecánica de apagado de muchos sistemas operativos convencionales es tal que, en algún momento durante el apagado, un dispositivo de la caché se apaga y el sistema operativo ya no es accesible, pero el sistema operativo puede continuar accediendo el disco. Como tal, el sistema operativo puede actualizar los elementos de datos en el disco que están en la caché en el dispositivo de la caché. Debido a que el dispositivo de la caché se ha apagado, el sistema operativo no tiene forma de actualizar tampoco estos contenidos de la caché, por lo que se vuelven obsoletos.
Para administrar estas y otras ocurrencias, algunos ejemplos de la invención proporcionan técnicas para detectar modificaciones a los datos almacenados en el disco después de que se inicia un apagado, de modo que los contenidos de caché que quedan obsoletos por tales modificaciones pueden actualizarse, expulsarse de la caché o manejarse de otra forma.
Para detectar escrituras que se realizan en el almacenamiento en disco durante las operaciones de apagado que se producen después de que se apaga un dispositivo de la caché, algunas realizaciones de la invención emplean un componente grabador de escritura. Un componente grabador de escritura puede, por ejemplo, implementarse como un controlador en la ruta de I/O del sistema operativo, aunque la invención no está limitada a dicha implementación. Por ejemplo, un componente grabador de escritura puede estar basado en hardware. Como ejemplo, el hardware de almacenamiento en disco puede proporcionar una o más interfaces que brinden la capacidad de identificar el conjunto de modificaciones que se produjeron durante un determinado período de tiempo, o si las modificaciones se produjeron durante un determinado período de tiempo. Por ejemplo, el hardware de almacenamiento en disco puede proporcionar un contador de giro/encendido/arranque que puede emplearse para deducir que al menos algunos elementos de datos almacenados se han actualizado, en cuyo caso puede desalojarse el contenido del caché correspondiente a los datos almacenados en el disco (Esto no debería ocurrir con frecuencia, por lo que emplear el dispositivo de la caché aún debería ofrecer beneficios sustanciales). La invención no está limitada a ninguna implementación particular.
En algunos ejemplos, el componente de grabador de escritura está configurado para activarse cuando se inicia el apagado, y para realizar un seguimiento de todas las escrituras realizadas en el almacenamiento en disco hasta que se complete el apagado. Como resultado, cuando el ordenador se reinicia más tarde, estas escrituras se pueden aplicar al contenido de la caché. Por ejemplo, cuando el ordenador se reinicia y los volúmenes de disco vienen en línea, el administrador de la memoria caché puede iniciarse y puede comenzar a rastrear las escrituras en el disco. El
5
10
15
20
25
30
35
40
45
50
55
administrador de la caché puede consultar el componente grabador de escritura para determinar las escrituras fuera de línea que se produjeron después de apagar el dispositivo de la caché, fusionar estas escrituras con aquellas que el administrador de la caché rastreó durante el inicio y aplicar el conjunto de escrituras al contenido de la caché. Aplicar escrituras al contenido de la caché puede incluir, por ejemplo, actualizar los contenidos de la caché correspondientes a los datos en el disco a los que se dirigieron las escrituras (por ejemplo, realizar las mismas operaciones de escritura a estos contenidos de la caché), desalojar estos contenidos de la caché, una combinación de los dos (por ejemplo, aplicar operaciones de escritura a ciertos contenidos de la caché y desalojar a otros), o realizar alguna(s) otra(s) operación(es). Después de que las escrituras fuera de línea se apliquen al contenido de la caché, es posible que el componente de grabadora de escritura se apague y que el dispositivo de la caché puede comenzar a servir las solicitudes de I/O.
La Figura 3 representa un proceso 30 de ejemplo para rastrear las escrituras fuera de línea y aplicar estas escrituras al contenido de la caché. En particular, el proceso 300 incluye operaciones realizadas por el administrador de caché 100, la grabadora de escritura 300, el dispositivo de la caché 110 y el volumen en caché 120 durante el apagado de un ordenador y el reinicio posterior.
En la acción 305, que ocurre durante el apagado del ordenador, el administrador de la caché 100 activa la grabadora de escritura 300 y le proporciona un “identificador de persistencia” que identifica el conjunto (es decir, la generación) de las operaciones de escritura que la grabadora de escritura debe rastrear. (Los ejemplos de los usos para un identificador de persistencia se describen en detalle a continuación). En la acción 310, el administrador de la caché 100 escribe el identificador de persistencia, así como los metadatos de caché almacenados en la memoria, para almacenar en el dispositivo de la caché 110. En este punto del proceso de apagado, el dispositivo de la caché 110 se apaga y se vuelve inaccesible para el administrador de la caché 100.
En la acción 315, la grabadora de escritura 300 escribe el identificador de persistencia que se le pasa en la acción 305 al volumen almacenado en caché 120, y comienza a rastrear cualquier operación de escritura realizada al volumen en caché 120 durante el apagado. Por ejemplo, la grabadora de escritura 300 puede crear un archivo de registro, o una o más estructuras de datos diferentes, en el volumen de la caché 120 o en alguna(s) otra(s) ubicación(es) para indicar las direcciones en el disco en el que se realizan las operaciones de escritura y/o los datos escrito en esas direcciones. Al finalizar la acción 315, las operaciones de apagado del ordenador han finalizado.
A partir de entonces, el ordenador se reinicia. Como parte del proceso de arranque, el volumen de la caché 120 se pone en línea, la grabadora de escritura 300 y el administrador de la caché 100 se reinician. El administrador de la caché 100 puede entonces comenzar a seguir las operaciones de escritura realizadas en el volumen almacenado en caché 120. Por ejemplo, el administrador de caché 100 puede crear un archivo de registro y almacenarlo en el dispositivo de caché 110, el volumen en caché 120, y/o la memoria del ordenador (no mostrada en la figura 3). En la acción 320, la grabadora de escritura 300 lee los cambios de volumen registrados en la acción 315, así como el identificador de persistencia escrito en el volumen en caché 120 en la acción 315. El cambio de volumen y el identificador de persistencia se pasan luego al administrador de la caché 100 en la acción 325.
Debería apreciarse que la grabadora de escritura 300 puede ser incapaz de rastrear todas las escrituras en el disco después de que el dispositivo de la caché 110 se haya apagado. Por ejemplo, la corrupción de datos de hardware, fallas de energía intempestivas y/o problemas al escribir el archivo de registro pueden hacer que la grabadora de escritura 300 no pueda rastrear todas las escrituras fuera de línea realizadas en un volumen de disco. En tales casos, la grabadora de escritura 300 puede indicar al administrador de la caché 100 en la acción 325 que no puede determinar de manera fiable que el registro sea un registro completo y preciso de todas las escrituras fuera de línea realizadas. Si esto ocurre, el administrador de la caché 100 puede desalojar todo el contenido de la caché, o una parte del mismo (por ejemplo, correspondiente a un volumen de disco particular para el cual la grabadora de escritura no puede rastrear todas las operaciones de escritura), siendo potencialmente no confiable. El resto de la descripción de la FIG. 3 asume que la grabadora de escritura 300 es capaz de rastrear todas las escrituras fuera de línea.
En la acción 330, el administrador de la caché 100 lee los metadatos de la caché y el identificador de persistencia del dispositivo de la caché 110 en la memoria. El administrador de la caché 100 determina si el identificador de persistencia puede verificarse (esto se describe más adelante). Si no, el administrador de la caché 100 puede desalojar el contenido completo del dispositivo de la caché 110, o una parte de este (por ejemplo, correspondiente a un volumen de disco particular para el cual no se podría verificar el identificador de persistencia). Si se puede verificar el identificador de persistencia, el administrador de la caché 100 combina cualquier operación de escritura realizada para almacenar en disco desde que se reinició el ordenador con cualquier operación de escritura rastreada por la grabadora de escritura 300. Por ejemplo, si uno o más registros indican los datos escritos en cada dirección en el disco, el administrador de la caché 100 puede seleccionar la última actualización realizada en cada dirección y escribirla en la memoria.
En algunos ejemplos, la grabadora de escritura 300 puede configurarse para continuar grabando escrituras después de reiniciar el ordenador, de modo que el administrador de la caché 100 no necesita grabar escrituras realizadas después de ese punto y fusionarlas con escrituras rastreadas por la grabadora de escritura 300. En cambio, la
5
10
15
20
25
30
35
40
45
50
55
grabadora de escritura 300 puede simplemente proporcionar un registro de todas las escrituras en el administrador de la caché 100.
Usando los metadatos de caché leídos en la acción 330, el administrador de la caché 100 aplica luego el conjunto de escrituras al contenido del dispositivo de la caché 110 en la acción 335. Como se describió anteriormente, la aplicación de las escrituras puede incluir desalojar los contenidos de la caché, hacer ambos, o realizar alguna otra operación. Por ejemplo, las escrituras fuera de línea rastreadas por la grabadora de escritura 300 en la acción 315 pueden aplicarse desalojando los contenidos de la caché correspondientes, mientras que las escrituras rastreadas por el administrador de la caché 100 desde que se reinició el ordenador pueden aplicarse actualizando los contenidos de la caché correspondientes para reflejar las escrituras. La aplicación de operaciones de escritura a los contenidos de la caché se puede realizar de cualquier manera adecuada, ya que la invención no se limita a ninguna implementación en particular.
Al finalizar la acción 335, el proceso de la FIG. 3 se completa.
Debería apreciarse que la invención no está limitada a emplear un componente de grabador de escritura que está configurado para activarse cuando se inicia el apagado, ya que las operaciones de escritura que no se producen durante el apagado también pueden ser, alternativamente, rastreadas. Por ejemplo, en algunas implementaciones, un dispositivo de la caché puede ser susceptible de volverse inaccesible por períodos de tiempo. Por ejemplo, si se accede al dispositivo de la caché a través de una o más redes, la conectividad podría perderse, o si el dispositivo de la caché es extraíble del ordenador, podría producirse una extracción inesperada (por ejemplo, involuntaria). Como resultado, algunas realizaciones pueden emplear una grabadora de escritura para rastrear todas (o una parte de) las escrituras realizadas en el disco, no solo las que ocurren durante el apagado, y un dispositivo de la caché que está configurado para capturar periódicamente “instantáneas” de caché mientras está en línea. Como tal, si la caché se vuelve inaccesible durante un período de tiempo y luego se vuelve a conectar, la última instantánea de la memoria caché se puede actualizar utilizando operaciones de escritura rastreadas por la grabadora de escritura, en lugar de tener que reconstruirse por completo.
También debería apreciarse que, si bien el proceso de ejemplo 30 de la FIG. 3 puede detectar las escrituras fuera de línea realizadas por el sistema operativo durante el apagado, es posible que se necesiten otras medidas para detectar escrituras fuera de línea realizadas en el disco después de que se complete el apagado. Dichas escrituras pueden ocurrir, por ejemplo, cuando un usuario inicia el disco en otro sistema operativo después del apagado, o retira el disco del ordenador luego del apagado y lo conecta a otro ordenador, y luego modifica los datos almacenados en el disco.
Reconociendo las dificultades asociadas con el intento de rastrear escrituras fuera de línea que se producen después del apagado (por ejemplo, por otro sistema operativo), algunos ejemplos de la invención en cambio intentan evitar que ocurra. Por ejemplo, algunos ejemplos intentan hacer que un volumen de disco particular sea inaccesible para sistemas operativos que no proporcionan un componente de grabación de escritura después del apagado. Esto se puede lograr de muchas maneras.
En algunos ejemplos, la grabadora de escritura 300 puede marcar un volumen de disco de tal manera que se vuelve inmontable por los sistemas operativos que no proporcionan un componente de grabadora de escritura para rastrear escrituras fuera de línea. Por ejemplo, la grabadora de escritura 300 puede modificar el identificador de volumen que indica el tipo de sistema de archivos utilizado en el volumen. A este respecto, los expertos en la técnica reconocerán que un identificador de volumen permite que un sistema operativo identifique el tipo de sistema de archivos utilizado para almacenar datos en el volumen, permitiendo así que el sistema operativo comprenda la estructura de los datos almacenados en el volumen, dónde encontrar archivos, etc. Por ejemplo, si un identificador de volumen indica que se utilizó un sistema de archivos NT File System (NTFS) para almacenar datos en el volumen, entonces otro sistema operativo que intente montar el volumen comprenderá que se necesitaría un sistema de archivos NTFS para analizar y acceder los datos al respecto. Si el identificador de volumen no proporciona ninguna indicación del tipo de sistema de archivos utilizado para almacenar datos en el volumen, la mayoría de los sistemas operativos no montarían el volumen, ya que no habría una manera confiable de comprender la estructura de los datos almacenados en el mismo.
Como tal, algunas realizaciones de la invención modifican el identificador de volumen de un volumen de disco para hacerlo inaccesible, evitando así que un usuario inicie el volumen de disco en otro sistema operativo y realice cambios fuera de línea a los datos almacenados en el volumen.
Reconociendo que algunos sistemas operativos pueden ser capaces de identificar el tipo de sistema de archivos utilizado para almacenar datos en un volumen incluso si el identificador de volumen se modificó, algunos ejemplos de la invención proporcionan un mecanismo para detectar cuándo un sistema operativo monta el volumen. A este respecto, para montar un volumen de disco, cualquier sistema operativo necesitaría actualizar el identificador de volumen (por ejemplo, para indicar que se empleó un sistema de archivos NTFS para almacenar datos en el volumen) para permitir el acceso a los datos. Cualquier actualización de este tipo sería fácilmente detectable al reiniciar. Si se detectara dicha actualización, algunas realizaciones de la invención pueden suponer que los contenidos del volumen
5
10
15
20
25
30
35
40
45
50
55
se han modificado desde el último apagado, y expulsar los contenidos de la caché correspondientes a los datos almacenados en el volumen.
Algunas realizaciones de la invención proporcionan una capacidad mediante la cual un volumen de disco puede arrancarse en otro sistema operativo que también emplea un componente de grabación de escritura. Por ejemplo, si se extrajo un disco de un ordenador que ejecuta un sistema operativo que proporciona un componente grabadora de escritura y lo inicia en otro sistema operativo que proporciona un componente de grabadora de escritura, el otro sistema operativo podría configurarse para reconocer que un identificador de volumen cambiado indica que el volumen puede almacenarse en la caché. Como resultado, el otro sistema operativo puede agregar a un registro de escrituras fuera de línea (por ejemplo, almacenadas en el volumen) creado por el primer sistema operativo.
Los ejemplos descritos anteriormente diseñados para hacer que un volumen de disco no pueda montarse en ciertos sistemas operativos pueden plantear problemas para ciertas aplicaciones que dependen del identificador de volumen para realizar ciertas funciones (por ejemplo, aplicaciones de respaldo). Con estas aplicaciones, si se cambió el identificador de volumen, el volumen puede ser irreconocible y, por lo tanto, no se realiza una copia de seguridad. En consecuencia, algunas realizaciones de la invención proporcionan un mecanismo para determinar si un sistema de archivos se montó después del apagado. De ser así, se asume que se realizaron cambios en los datos en el sistema de archivos, y que todos los contenidos de la memoria caché correspondientes a los datos en el sistema de archivos pueden ser desalojados.
Algunos ejemplos pueden detectar el montaje de un sistema de archivos después del apagado al colocar el registro del sistema de archivos en apagado en un estado que requeriría que cualquier sistema operativo que intente montar el sistema de archivos modifique el registro de alguna manera (por ejemplo, cambie su ubicación, agregue una nueva entrada, etc.). Por ejemplo, la grabadora de escritura 300 puede observar como parte de la tarea de registrar fuera de línea escribir la ubicación y/o el contenido del registro del sistema de archivos cuando se desmonta el sistema de archivos (por ejemplo, en el registro mismo). Ya que cualquier sistema operativo que intente montar el sistema de archivos debería cambiar el registro (por ejemplo, si el sistema de archivos fuera un sistema de archivos NTFS, un sistema operativo que intente montar el sistema de archivos agregaría una entrada al registro), si el registro no ha cambiado al reiniciarse, se supone que el sistema de archivos no fue montado por otro sistema operativo durante la transición de alimentación, por lo que los contenidos de la caché correspondientes a los datos almacenados en el sistema de archivos no se han quedado obsoletos. Por el contrario, si el registro ha sido modificado de alguna manera (por ejemplo, su ubicación ha cambiado, y se ha agregado la entrada, etc.) entonces se supone que el sistema de archivos fue montado por otro sistema operativo, y que los datos almacenados en él han cambiado, haciendo que el contenido de la caché correspondiente a los datos almacenados en el sistema de archivos quede obsoleto. Como tal, estos contenidos de caché pueden ser desalojados.
Además de proporcionar mecanismos para evitar escrituras fuera de línea, algunos ejemplos de la invención proporcionan una capacidad para gestionar generaciones incoherentes de contenido de la caché. Se pueden crear generaciones incoherentes de contenido de la caché por varias razones. Un ejemplo puede ocurrir cuando los ordenadores primero y segundo, que tienen dispositivos de caché primero y segundo conectados a los mismos, emplean las técnicas descritas en este documento para persistir en el contenido de la caché a través de las transiciones de energía. Si el segundo dispositivo de la caché se conectara al primer ordenador (o el primer dispositivo de la caché se conectará al segundo ordenador) y el primer ordenador fuera reiniciado, se podrían enviar datos incorrectos desde el segundo dispositivo de la caché para satisfacer las solicitudes de I/O. Esto se debe a que el sistema operativo del primer ordenador consideraba que el contenido del segundo dispositivo de la caché era auténtico (ya que una representación regenerada de los datos devueltos de la memoria caché podía coincidir con una representación generada originalmente) y no obsoleto (ya que las escrituras fuera de línea podían aplicarse al contenido de la caché). Otro ejemplo podría surgir si un primer dispositivo de la caché estuviera conectado a un ordenador, el ordenador se apagará (persistiendo así el contenido de la caché), el ordenador fuera entonces reiniciado, se conectará un segundo dispositivo de la caché y el ordenador se apagará nuevamente (persistiendo así contenido de la caché de nuevo). Si el ordenador se reiniciara de nuevo y se conectara el primer dispositivo de la caché, se podrían servir datos incorrectos para satisfacer las solicitudes de I/O, ya que no habría una manera confiable de determinar que el primer dispositivo de la caché no almacenara la última generación de los contenidos de la caché.
Algunos ejemplos proporcionan la capacidad de identificar generaciones incoherentes de contenido de la caché de manera que el contenido de la caché que persistieron antes del último apagado no se use erróneamente para satisfacer solicitudes de I/O. En algunos ejemplos, esta capacidad se proporciona a través de un identificador de persistencia único, que puede generarse (como un ejemplo) cuando se inicia el apagado, de cualquiera de las numerosas formas. Por ejemplo, los GUID y/o los generadores de números aleatorios criptográficos se pueden emplear para este propósito. Como se describió anteriormente con referencia a la FIG. 3, el identificador de persistencia puede almacenarse en el dispositivo de la caché (por ejemplo, en o con metadatos de la caché) así como en el ordenador (por ejemplo, en disco y/o memoria) y verificarse (por ejemplo, comparando las dos versiones) una vez el ordenador se inicie Si la verificación no tiene éxito, los contenidos de la caché pueden ser desalojados como representación de una generación de la caché persistente anterior.
5
10
15
20
25
30
35
40
45
50
55
Al igual que con las claves de autenticación discutidas anteriormente, cualquier clave utilizada para generar un identificador de persistencia puede escribirse en una ubicación distinta del dispositivo de la caché durante la transición de energía. Por ejemplo, en algunos ejemplos, un componente de grabadora de escritura puede escribir las claves, así como el identificador de persistencia en el almacenamiento del disco (por ejemplo, al apagar). Sin embargo, la invención no se limita a dicha implementación, ya que los expertos en la materia pueden imaginar numerosas ubicaciones alternativas en las que se pueden guardar claves. Las claves pueden, por ejemplo, mantenerse en cualquier almacén de configuración proporcionado por el sistema operativo que está disponible durante el inicio del sistema (por ejemplo, el registro en Windows).
III. Metadatos de la caché
Como se describió anteriormente, los metadatos de caché pueden proporcionar un mapeo entre las direcciones de disco donde se almacenan los elementos de datos y las direcciones correspondientes en un dispositivo de la caché donde esos elementos de datos se almacenan en la caché. Algunas realizaciones de la invención proporcionan una capacidad para almacenar metadatos de la caché que reduce significativamente la cantidad de memoria requerida para almacenar los metadatos de la caché durante las operaciones de tiempo de ejecución del sistema.
Además, algunas realizaciones proporcionan técnicas que permiten confiar en metadatos de la caché en transiciones de energía o cualquier otro evento que desconecte el dispositivo de la caché (por ejemplo, eliminación de un dispositivo de la caché del ordenador, interrupción de la red que hace inaccesible un dispositivo de la caché de red , etc.), de modo que se pueda acceder de forma confiable al contenido de la caché cuando el ordenador se reinicie y/o el dispositivo de la caché se ponga en línea. A este respecto, debe apreciarse que con ciertos tipos de transiciones de energía (por ejemplo, modos de espera e hibernación), simplemente es aceptable almacenar metadatos de la caché en la memoria (es decir, RAM) ya que los contenidos de la memoria se conservan durante las transiciones en espera e hibernación. Durante el reinicio, sin embargo, los contenidos de la memoria del sistema no se conservan. Como tal, algunas realizaciones de la invención proporcionan el almacenamiento de metadatos de la caché en algún medio/medios no volátiles durante el apagado, y luego se restaura al reiniciar. Por ejemplo, los metadatos de la caché pueden almacenarse en un dispositivo de la caché y/o en uno o más medios no volátiles separados. Además, algunas realizaciones pueden ser capaces de derivar algunas partes de metadatos de la caché de otros, de modo que no se requiere almacenar todos los metadatos de la caché.
Algunas realizaciones pueden emplear las técnicas descritas en la Sección I anterior para verificar la autenticidad de los metadatos de la caché, para detectar y prevenir modificaciones inadvertidas o maliciosas a los metadatos cuando el dispositivo de la caché se desconecta (por ejemplo, durante el apagado del equipo, eliminación del dispositivo de la caché desde el ordenador, una interrupción de la red que hace que un dispositivo de la caché de red sea inaccesible, etc.). Por ejemplo, cuando el dispositivo de la caché se conecta, el administrador de la caché puede verificar la autenticidad de los metadatos a medida que se cargan en la memoria, usando las técnicas descritas anteriormente con referencia a las FIGS. 2A-2B. Si no se puede verificar la autenticidad de los metadatos de la caché, los contenidos de la caché correspondiente se pueden actualizar en función de los datos almacenados en el disco, desalojados o procesados de otro modo como se describe anteriormente.
En algunos ejemplos, los metadatos de la caché pueden comprimirse para reducir la cantidad de metadatos que se guardarán durante el apagado y la carga durante el reinicio. Debido a que la compresión de metadatos puede requerir guardar una pieza de información separada (por ejemplo, un encabezado en la caché) que contiene información sobre los metadatos, las técnicas descritas anteriormente pueden emplearse para verificar la autenticidad de esta información también al reiniciar.
Algunas realizaciones de la invención proporcionan técnicas para almacenar metadatos de la caché de una manera que reduce en gran medida la cantidad de metadatos de la caché almacenados en la memoria al mismo tiempo, reduciendo así la cantidad de tiempo requerida para cargar metadatos de la caché y descargarlos de la memoria (por ejemplo, durante el tiempo de ejecución y las operaciones de inicio/apagado) y reduce en gran medida la “huella” de memoria de los metadatos de la caché. A este respecto, debe apreciarse que con los dispositivos de la caché que tienen una capacidad de almacenamiento relativamente grande, puede ser necesaria una cantidad significativa de metadatos para administrar los contenidos de la caché. Por ejemplo, un dispositivo de la caché que tiene una capacidad de almacenamiento de dieciséis gigabytes puede almacenar hasta treinta y dos gigabytes de datos comprimidos. En algunas implementaciones, las direcciones de disco pueden reflejarse en metadatos de la caché en “unidades de datos” que representan cuatro kilobytes de almacenamiento en disco. Como tal, para rastrear la ubicación de treinta y dos gigabytes de datos, se necesitan ocho millones de unidades de datos distintas. Si cada una de las ocho millones de unidades de datos está representada en metadatos de la caché utilizando una mapeo de dieciséis bytes (es decir, desde una dirección de disco a una dirección de la caché), estos mapeos requieren ciento veintiocho megabytes de almacenamiento. Los solicitantes han apreciado que el almacenamiento de ciento veintiocho megabytes de metadatos de la caché en la memoria ocuparía una porción innecesariamente grande de la memoria en muchos ordenadores. Además, el tiempo requerido para escribir ciento veintiocho megabytes de metadatos de la caché de la memoria en medios no volátiles durante el cierre, y para restaurar ciento veintiocho megabytes de metadatos de la
5
10
15
20
25
30
35
40
45
50
55
caché de medios no volátiles en la memoria al reiniciar, produciría un consumo prohibitivo de tiempo y consumiría una cantidad excesiva de recursos de procesamiento.
Reconociendo que la cantidad de metadatos de la caché no puede reducirse fácilmente, algunas realizaciones de la invención proporcionan técnicas diseñadas para reducir los recursos de almacenamiento necesarios para almacenar metadatos de la caché, así como el tiempo y los recursos de procesamiento necesarios para guardar y restaurar metadatos de la caché al apagado y arranque.
En algunas realizaciones, esto se lleva a cabo almacenando metadatos de la caché en una o más estructuras de datos jerárquicas (por ejemplo, árboles, matrices de múltiples niveles, etc.). Emplear una estructura de datos jerárquica puede permitir que los niveles más bajos de la jerarquía se almacenen en un medio no volátil (por ejemplo, el dispositivo de la caché) mientras que solo los niveles superiores de la jerarquía se almacenan en la memoria. Por ejemplo, en algunas realizaciones, solo los niveles más altos de la jerarquía se almacenan en la memoria, de modo que la “huella” ocupada por la memoria en los metadatos de la caché puede reducirse en gran medida, incluso cuando se necesita una cantidad de metadatos de la caché necesarios para soportar los dispositivos de la caché que tengan una capacidad de almacenamiento significativa se almacenan totalmente. Por supuesto, almacenar solo niveles superiores de la jerarquía en los metadatos de la caché, ya que algunas formas de realización pueden almacenar cierta información mantenida en los niveles inferiores de la jerarquía en la memoria, para reducir la sobrecarga de I/O asociada a los accesos repetidos a esta información. La invención no está limitada a ser implementada de ninguna manera particular.
Durante el funcionamiento del sistema, a medida que se procesan las solicitudes de lectura, los metadatos de la caché que se leen desde el medio no volátil (es decir, desde niveles inferiores de la jerarquía) para realizar la operación de lectura pueden ser “contactados” en (es decir, leído desde un medio de almacenamiento en) a la memoria de tal manera que se pueda acceder más rápidamente a las solicitudes de lectura subsiguientes a la misma dirección de disco/caché. Cuando el ordenador se apaga más tarde y/o el dispositivo de la caché se desconecta, solo los metadatos de la caché almacenados en los niveles superiores de la jerarquía y los metadatos de la caché se almacenan en los niveles inferiores de la jerarquía que se contactaron en la memoria, puede necesitar ser guardado en el medio no volátil. Como tal, el tiempo requerido para mover los metadatos de la caché desde la memoria al almacenamiento no volátil al apagado, y restaurar los metadatos de la caché desde el almacenamiento no volátil a la memoria al reiniciar, puede reducirse significativamente.
Algunas realizaciones de la invención emplean un árbol B+ para almacenar al menos una porción de metadatos de la caché. Como apreciarán los expertos en la materia, los árboles B+ pueden emplear grandes factores de ramificación, y por lo tanto, reducir el número de niveles en la jerarquía empleada. Utilizando el ejemplo anterior, si se van a representar ocho millones de unidades de datos en metadatos de la caché y se empleó un árbol B+ con un factor de ramificación de doscientos (para que cada nodo en la jerarquía tenga doscientos nodos “secundarios”), una estructura de datos que tiene solo tres niveles sería suficiente para almacenar los metadatos: un solo nodo “raíz” en el nivel más alto, doscientos nodos en el segundo nivel y cuarenta mil nodos en el tercer nivel, con cada uno de los cuarenta mil nodos, incluidos los punteros a doscientas unidades de datos (u ocho millones de unidades de datos en total).
La Fig. 4 representa este árbol B+ de ejemplo que incluye el nodo raíz 400, los nodos de nivel dos 4101-200 y los nodos de nivel tres 4201-200. Cada nodo incluye doscientos elementos, cada uno separado por punteros a nodos en un nivel inferior en la jerarquía. Por ejemplo, el elemento 402 en el nodo raíz 400 está delimitado por los punteros 401 y 403. Un valor (por ejemplo, una dirección de caché) asociado con una clave determinada (por ejemplo, una dirección de disco) puede determinarse siguiendo el puntero a la izquierda o a la derecha de un elemento en un nodo, con el puntero a la izquierda del elemento que es seguido si la clave es menor que el elemento y se sigue el puntero a la derecha si la clave es mayor que el elemento. Por ejemplo, para determinar un valor para una clave que es menor que el elemento 402, se seguiría el puntero 401 al nodo de nivel dos 4101, para determinar un valor para una clave mayor que el elemento 402 pero inferior al elemento 404, se seguiría el puntero 403 para nivelar dos nodos 4102 (no mostrado), y así sucesivamente. De manera similar, en el nodo de nivel dos, se sigue un puntero a la izquierda o derecha de un elemento (dependiendo de si la clave es menor o mayor que los elementos en el nodo) a un nodo del nivel tres. En el nivel tres, se sigue un puntero final (nuevamente según si la clave es menor o mayor que los elementos en el nodo) al valor, con cada puntero en el nivel tres haciendo referencia a una de las ocho millones de unidades de datos en los metadatos de la caché.
Debe apreciarse que un árbol B+ con un gran factor de ramificación proporciona una jerarquía relativamente “plana” con casi todos los nodos localizados en el nivel inferior de la jerarquía. Es decir, de los 40,201 nodos totales en el árbol, 40,000 están en el nivel más bajo. Algunas realizaciones de la invención aprovechan esto restaurando solo los dos niveles superiores de la jerarquía a la memoria al inicio, mientras que los metadatos de la caché en el nivel más bajo de la jerarquía se almacenan en el dispositivo de la caché hasta que se necesiten (por ejemplo, se pueden cargar en la memoria a pedido, ya que las solicitudes de lectura se procesan, se cargan de forma perezosa, etc.). Debido a que solo una parte de la estructura de datos jerárquica se almacena en la memoria, los metadatos de la caché pueden ocupar una porción de memoria mucho más pequeña de lo que se requeriría si la totalidad o la mayor parte de los metadatos de la caché se mantuvieran en la memoria. Además, cuando el ordenador se apaga, solo los datos en los
5
10
15
20
25
30
35
40
45
50
55
dos niveles superiores y los datos cargados en la memoria durante la operación necesitan almacenarse en el dispositivo de la caché. Como resultado, tanto las operaciones de inicio como de apagado se pueden realizar de manera rápida y eficiente.
Por lo tanto, algunas realizaciones de la invención proporcionan punteros en nodos en un nivel de la jerarquía almacenada en la memoria (en el ejemplo anterior, el nivel dos de la jerarquía) que referencia nodos a otro nivel de la jerarquía almacenados en el dispositivo de la caché (en el ejemplo anterior, nivel tres). Por ejemplo, cuando se recibe una solicitud de lectura para un elemento de datos en la caché, las realizaciones de la invención siguen punteros a través de uno o más niveles de la jerarquía almacenados en la memoria y luego a metadatos en niveles inferiores de la jerarquía almacenados en la caché, para determinar la dirección en la que el elemento de datos se almacena en la caché. En algunas realizaciones, una vez que se determina la dirección de la caché para el elemento de datos, puede almacenarse en la memoria de tal manera que las solicitudes posteriores para leer el elemento se puedan realizar sin tener que leer los metadatos de la caché desde el dispositivo de la caché.
La Fig.5 representa un sistema de ejemplo 50 para administrar metadatos de la caché de acuerdo con algunas realizaciones de la invención. La figura 5 representa la memoria 500 y el dispositivo de la caché 110, ambos accesibles a un ordenador (no mostrados). Cuando se inicia el ordenador, los metadatos de la caché que comprenden uno o más niveles de una estructura de datos jerárquica tal como un árbol B+ se cargan en la memoria 500 en la operación 505. Utilizando el ejemplo anterior para ilustrar, si hay ocho millones de unidades de datos representadas en metadatos de la caché, de modo que se puede usar una estructura de datos jerárquica de tres niveles para almacenar los metadatos de la caché, los dos niveles superiores de la jerarquía se pueden cargar en la memoria 500. Por supuesto, si más o menos ocho millones de unidades de datos están representadas en metadatos, y se debe usar una estructura jerárquica de datos que tenga más o menos tres niveles, entonces se puede cargar un número diferente de niveles a la jerarquía en la memoria 500.
A continuación, cuando una solicitud de lectura se dirige a un elemento de datos mantenido en la caché, la dirección de la caché en la que se almacena el elemento de datos se determina accediendo a los metadatos de la caché almacenados en el o los niveles de la jerarquía almacenada en el dispositivo de la caché 110. Estos metadatos de la caché se almacenan entonces en la memoria 510, de modo que las lecturas o escrituras posteriores en el elemento de datos se pueden realizar sin tener que leer los metadatos de la caché almacenados en el dispositivo de la caché para determinar la dirección de la caché en la que se almacena el elemento de datos. En cambio, la dirección de la caché puede leerse desde la memoria, lo que se puede realizar más rápidamente que una lectura en la caché.
Más tarde, cuando el ordenador se apaga, los metadatos de la caché almacenados en la memoria (es decir, los metadatos almacenados en los niveles de la jerarquía cargados en la memoria en la operación 505 y cualquier metadato utilizado para satisfacer solicitudes de lectura escritos en la memoria en la operación 510) es cargado en el dispositivo de la caché 500 en la acción 515. Como resultado de la cantidad relativamente pequeña de metadatos de la caché almacenados en la memoria, el apagado puede realizarse rápidamente, sin requerir recursos de procesamiento sustanciales.
Debe apreciarse que un árbol B+ es solo uno de los numerosos tipos de estructuras de datos que pueden emplearse para almacenar metadatos de la caché, y que otros tipos de estructuras de datos (por ejemplo, estructuras jerárquicas como árboles AVL, árboles rojo-negro, árboles de búsqueda binarios, árboles B y/u otras estructuras de datos jerárquicas y no jerárquicas) pueden ser empleados. La invención no se limita a emplear cualquier estructura de datos o combinación de estructuras de datos para almacenar metadatos de la caché.
Algunas realizaciones pueden proporcionar una “cantidad objetivo” de metadatos de la caché que se mantendrán en la memoria en cualquier momento. La cantidad objetivo puede determinarse de cualquier manera adecuada. Por ejemplo, una cantidad objetivo puede ser un porcentaje de la cantidad de memoria física disponible para un ordenador. Por ejemplo, si el ordenador tiene un gigabyte de memoria, entonces dos megabytes de metadatos de la caché (como un ejemplo) pueden almacenarse en la memoria en cualquier momento. Por lo tanto, cuando el ordenador se apaga, solo se necesitan cargar dos megabytes de metadatos de la caché en el dispositivo de la caché.
En algunas realizaciones, los metadatos de la caché se pueden ciclar dentro y fuera de la memoria. Por ejemplo, si una cantidad objetivo de metadatos de la caché ya está almacenada en la memoria, y se realiza una lectura que requiere que los metadatos de la caché se lean desde el dispositivo de la caché, esos metadatos pueden ser “contactados” en la memoria y otros metadatos de la caché (por ejemplo, el que fue accedidos menos recientemente) pueden ser borrado. Por ejemplo, los metadatos de la caché pueden borrarse después de escribirse en el dispositivo de la caché. Alternativamente, el sistema puede determinar si los metadatos de la caché han cambiado desde la última vez que se escribieron, y si no, simplemente se puede borrar, eliminando así el tiempo y los recursos de procesamiento requeridos para escribir los metadatos de la caché. Usando las técnicas descritas anteriormente, se puede mantener la pequeña “huella” ocupada por los metadatos de la caché en la memoria.
5
10
15
20
25
30
35
40
45
50
55
La Fig. 6 representa un ejemplo. Específicamente, el proceso 60 mostrado en la FIG. 6 incluye operaciones que pueden ser realizadas por el administrador de la caché 100 para leer metadatos de la caché usando las técnicas descritas anteriormente.
Al comienzo del proceso 600, se recibe una solicitud en la acción 605 para leer datos almacenados en la dirección de disco X. En la acción 610, se determina si la dirección de la caché en la que se almacenan los datos puede identificarse a partir de los metadatos en la caché almacenados en la memoria. Si es así, el proceso procede a la acción 615, en donde se determina la dirección de la caché identificada, y luego se usa para emitir una solicitud de lectura al dispositivo de la caché 110 en la acción 620. El proceso 60 luego se completa. Si la dirección de la caché no puede identificarse usando metadatos de la caché almacenados en la memoria, entonces el proceso procede a la acción 625, en donde los metadatos de la caché se leen desde el dispositivo de la caché 110 para determinar la dirección de la caché en la que se almacenan los datos. Usando el desplazamiento de la caché identificada en la acción 625, se emite una solicitud de lectura para el desplazamiento de la caché identificada en la acción 620, y luego se completa el proceso 60.
Se debe tener en cuenta que el almacenamiento de metadatos de la caché en el dispositivo de la caché no solo puede acelerar el proceso de cargar y restaurar metadatos de la caché durante el inicio y el apagado, sino que también puede acelerar las operaciones del sistema durante el inicio y el apagado. A este respecto, el apagado y el inicio a menudo involucran múltiples accesos a ciertos elementos de datos, y realizar dos operaciones de lectura en un dispositivo de la caché suele ser más rápido que realizar una operación de lectura en el almacenamiento en disco. Como resultado, si un elemento de datos al que se accedió durante el apagado y/o inicio y los metadatos que especifican su ubicación fueron almacenados ambos la caché, entonces se podría acceder al elemento de datos más rápidamente que si el elemento de datos estuviera almacenado en el disco, ya que las dos lecturas en la caché (es decir, una para acceder a los metadatos de la caché para determinar la ubicación del elemento, y un segundo para acceder al elemento en sí) generalmente se puede realizar más rápidamente que una sola lectura en el disco. Como tal, las operaciones individuales realizadas durante el apagado y el inicio pueden acelerarse. Aún más, si durante una primera lectura de metadatos de la caché de la caché, la dirección en la cual el elemento se almacena es contactado en la memoria, las lecturas posteriores del elemento de datos se pueden realizar aún más rápido, ya que una lectura en memoria puede realizarse más más rápido que una lectura en caché.
Se pueden implementar diversos aspectos de los sistemas y métodos para poner en práctica las características de la invención en uno o más sistemas informáticos, tales como el sistema 700 informático de ejemplo mostrado en la FIG. 7. El sistema 700 informático incluye dispositivo(s) de entrada 702, dispositivo(s) de salida 701, procesador 703, sistema de memoria 704 y almacenamiento 706, todos los cuales están acoplados, directa o indirectamente, a través del mecanismo de interconexión 705, que puede comprender uno o más buses, conmutadores, redes y/o cualquier otra interconexión adecuada. El (los) dispositivo(s) de entrada 702 reciben entrada(s) de un usuario o máquina (por ejemplo, un operador humano), y el (los) dispositivo(s) de salida 701 visualiza(n) o transmite(n) información a un usuario o máquina (por ejemplo, una pantalla de cristal líquido). El procesador 703 típicamente ejecuta un programa de ordenador llamado sistema operativo (por ejemplo, un sistema operativo de la familia Microsoft Windows o cualquier otro sistema operativo adecuado) que controla la ejecución de otros programas informáticos y proporciona programación, entrada/salida y otro control de dispositivo, contabilidad, compilación, asignación de almacenamiento, gestión de datos, gestión de memoria, comunicación y control de flujo de datos. Colectivamente, el procesador y el sistema operativo definen la plataforma del ordenador para la cual se escriben los programas de aplicación y otros lenguajes de programación.
El procesador 703 también puede ejecutar uno o más programas informáticos para implementar diversas funciones. Estos programas de ordenador pueden estar escritos en cualquier tipo de lenguaje de programación de ordenador, incluyendo un lenguaje de programación de procedimientos, lenguaje de programación orientado a objetos, macro lenguaje o una combinación de estos. Estos programas de ordenador pueden almacenarse en el sistema de almacenamiento 706. El sistema de almacenamiento 706 puede contener información sobre un medio volátil o no volátil, y puede ser fijo o extraíble. El sistema de almacenamiento 706 se muestra con mayor detalle en la FIG. 8.
El sistema 706 de almacenamiento incluye típicamente un medio 801 de grabación no volátil, legible por ordenador y grabable, sobre el que se almacenan señales que definen un programa informático o información a utilizar por el programa. Un medio puede, por ejemplo, ser un disco o memoria flash. Típicamente, una operación, el procesador 703 hace que los datos sean leídos desde el medio de grabación no volátil 801 a una memoria volátil 802 (por ejemplo, una memoria de acceso aleatorio o RAM) que permite un acceso más rápido a la información por el procesador 703 que el medio 801. La memoria 802 puede estar ubicada en el sistema de almacenamiento 706, como se muestra en la FIG. 8, o en el sistema de memoria 704, como se muestra en la FIG. 7. El procesador 703 generalmente manipula los datos dentro de la memoria 704, 802 de circuito integrado y luego copia los datos en el medio 801 después de que se completa el procesamiento. Se conocen una variedad de mecanismos para administrar el movimiento de datos entre el medio 801 y el elemento 704, 802 de memoria de circuito integrado, y la invención no está limitada a esto. La invención tampoco está limitada a un sistema de memoria particular 704 o sistema de almacenamiento 706.
5
10
15
20
25
30
35
40
45
50
55
Además, las realizaciones de la invención tampoco están limitadas a emplear un componente de administrador de caché que se implementa como un controlador en la pila de I/O de un sistema operativo. Cualquier componente adecuado o combinación de componentes, cada uno de los cuales puede implementarse mediante un sistema operativo o uno o más componentes independientes, puede emplearse alternativa o adicionalmente. La invención no está limitada a ninguna implementación particular.
Las realizaciones de la presente invención descritas anteriormente pueden implementarse de cualquiera de las numerosas formas. Por ejemplo, la funcionalidad discutida anteriormente puede implementarse usando hardware, software o una combinación de estos. Cuando se implementa en el software, el código del software se puede ejecutar en cualquier procesador adecuado o colección de procesadores, ya sea que se proporcione en un solo ordenador o se distribuya entre varios ordenadores. A este respecto, debe apreciarse que cualquier componente o colección de componentes que realizan las funciones descritas en este documento puede considerarse genéricamente como uno o más controladores que controlan las funciones discutidas anteriormente. El uno o más controladores pueden implementarse de numerosas maneras, como con hardware dedicado, o empleando uno o más procesadores que se programan usando microcódigo o software para realizar las funciones enumeradas anteriormente. Cuando un controlador almacena o proporciona datos para el funcionamiento del sistema, dichos datos pueden almacenarse en un depósito central, en una pluralidad de depósitos, o una combinación de estos.
Además, debe tenerse en cuenta que un ordenador (cliente o servidor) puede incorporarse en cualquiera de una serie de formas, tales como un ordenador montado en un bastidor, un ordenador de escritorio, un ordenador portátil, una tableta o cualquier otro tipo de ordenador. Además, un ordenador (cliente o servidor) puede integrarse en un dispositivo que generalmente no se considera un ordenador sino con capacidades de procesamiento adecuadas, que incluyen un Asistente Digital Personal (PDA), un teléfono inteligente o cualquier otro dispositivo electrónico portátil o fijo adecuado.
Además, un ordenador (cliente o servidor) puede tener uno o más dispositivos de entrada y salida. Estos dispositivos se pueden usar, entre otras cosas, para presentar una interfaz de usuario. Los ejemplos de dispositivos de salida que se pueden usar para proporcionar una interfaz de usuario incluyen impresoras o pantallas de visualización para la presentación visual de salida y altavoces u otros dispositivos de generación de sonido para la presentación audible de la salida. Ejemplos de dispositivos de entrada que se pueden usar para una interfaz de usuario, incluyen teclados y dispositivos señaladores, como ratones, almohadillas táctiles y tablas de digitalización. Como otro ejemplo, un ordenador puede recibir información de entrada a través del reconocimiento de voz o en otro formato audible.
Tales ordenadores pueden estar interconectados por una o más redes en cualquier forma adecuada, incluso como una red de área local o una red de área amplia, como una red empresarial o Internet. Tales redes pueden basarse en cualquier tecnología adecuada y pueden operar de acuerdo con cualquier protocolo adecuado y pueden incluir redes inalámbricas, redes alámbricas o redes de fibra óptica. Además, los diversos métodos o procesos descritos en este documento pueden codificarse como software que es ejecutable en uno o más procesadores que emplean cualquiera de una variedad de sistemas operativos o plataformas.
Además, el software se puede escribir utilizando cualquiera de varios lenguajes de programación adecuados y/o herramientas de programación o de scripts convencionales, y también se puede compilar como código de lenguaje máquina ejecutable o código intermedio que se ejecuta en un marco o máquina virtual.
A este respecto, la invención puede incorporarse como un medio de almacenamiento (o medios de almacenamiento múltiples) (por ejemplo, una memoria de ordenador, uno o más disquetes, discos compactos, discos ópticos, cintas magnéticas, memorias flash, configuraciones de circuito en matrices de puertas programables de campo u otros dispositivos semiconductores u otros medios de almacenamiento informático) codificados con uno o más programas que, cuando se ejecutan en uno o más ordenadores u otros procesadores, realizan métodos que implementan las diversas realizaciones de la invención discutidas anteriormente. El medio o medios de almacenamiento puede ser transportable, de manera que el programa o programas almacenados en el mismo pueden cargarse en uno o más ordenadores diferentes u otros procesadores para implementar diversos aspectos de la presente invención como se discutió anteriormente.
Los términos “programa” o “software” se usan en este documento en un sentido genérico para referirse a cualquier tipo de código de ordenador o conjunto de instrucciones ejecutables por ordenador que se pueden emplear para programar un ordenador u otro procesador para implementar diversos aspectos de la presente invención como se discutió anteriormente. Adicionalmente, debe apreciarse que según un aspecto de esta realización, uno o más programas de ordenador que cuando se ejecutan realizan métodos de la presente invención no necesitan residir en un solo ordenador o procesador, sino que pueden distribuirse de forma modular entre un número de diferentes ordenadores o procesadores para implementar diversos aspectos de la presente invención.
Las instrucciones ejecutables por ordenador se pueden proporcionar en muchas formas, tales como módulos de programa, ejecutados por uno o más ordenadores u otros dispositivos. Generalmente, los módulos del programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc. que realizan tareas particulares o
implementan tipos de datos abstractos particulares. Típicamente, la funcionalidad de los módulos de programa se puede combinar o distribuir como se desee en diversas realizaciones.
Varios aspectos de la presente invención se pueden usar solos, en combinación, o en una variedad de disposiciones no discutidas específicamente en las realizaciones descritas anteriormente y, por lo tanto, no están limitadas en su 5 aplicación a los detalles y la disposición de los componentes expuestos anteriormente en la descripción anterior o ilustrada en los dibujos. Por ejemplo, los aspectos descritos en una realización se pueden combinar de cualquier manera con los aspectos descritos en otras realizaciones.
El uso de términos ordinales como “primero”, “segundo”, “tercero”, etc., en las reivindicaciones para modificar un elemento de la reivindicación no connota ninguna prioridad, precedencia u orden de un elemento de la reivindicación 10 sobre otro o el orden temporal en que se realizan las acciones de un método, sino que son utilizadas simplemente como etiquetas para distinguir un elemento de reivindicación que tiene un nombre determinado de otro elemento que tiene el mismo nombre (pero para el uso del término ordinal) para distinguir los elementos de la reivindicación.
Además, la fraseología y la terminología utilizada aquí para el propósito de la descripción no debe ser considerada como limitantes. El uso de “que incluye”, “que comprende”, “que tiene”, “que contiene”, “que implica” y variaciones de 15 los mismos en la presente, pretende abarcar los elementos listados posteriormente así como también elementos adicionales.
Habiendo descrito de este modo varios aspectos de al menos una realización de esta invención, se apreciará que los expertos en la técnica podrán apreciar fácilmente diversas alteraciones, modificaciones y mejoras. Tales alteraciones, modificaciones y mejoras están destinadas a ser parte de esta divulgación, y están destinadas a estar dentro del 20 espíritu y alcance de la invención. Por consiguiente, la descripción y los dibujos anteriores son solo a modo de ejemplo.
Claims (3)
- 510152025REIVINDICACIONES1. Un método para ejecución en un ordenador (700) que comprende una memoria (704) y que tiene acoplado un medio de almacenamiento (760) y un dispositivo de la caché (110), almacenando el medio de almacenamiento una pluralidad de elementos de datos cada uno en direcciones respectivas, cada uno de la pluralidad de elementos de datos también se almacena en una dirección correspondiente en el dispositivo de la caché, y almacena metadatos de la caché accesibles para el ordenador (700) y proporciona un mapeo entre la dirección en el medio de almacenamiento y la dirección correspondiente en el dispositivo de la caché en que cada elemento de datos se almacena, dicho método se caracteriza por:en respuesta a la determinación de que el ordenador (700) se ha iniciado,cargando solamente los niveles superiores de una estructura de datos jerárquica desde el dispositivo de la caché a la memoria (704), siendo dicho dispositivo de la caché no volátil y conteniendo datos y metadatos, y dicha estructura de datos jerárquica almacenando metadatos de la caché, donde el nivel más bajo de la estructura de datos jerárquica se almacena en el dispositivo de la caché hasta que sea necesario, donde los elementos en los niveles cargados incluyen punteros a los elementos en los siguientes niveles inferiores, y en donde los elementos en el nivel más bajo incluyen punteros a unidades de datos en metadatos de la caché;en respuesta a una solicitud de lectura, identificar un valor de dirección de la caché navegando por la estructura de datos jerárquica, y cargar el elemento correspondiente desde el dispositivo de la caché (110) en la memoria (704); yen respuesta a determinar que el ordenador (700) se está apagando, almacenando solo los datos de los niveles superiores de la estructura jerárquica y los datos cargados en la memoria durante el funcionamiento en el dispositivo de la caché (110).
- 2. Al menos un medio de almacenamiento legible por ordenador que tiene instrucciones codificadas que, cuando es ejecutado por un ordenador (700) que comprende una memoria (704), un almacenamiento de disco (706) y un dispositivo de la caché (110), hacen que el procesador efectué un método según la reivindicación 1.
- 3. Un sistema informático (700), que comprende: una memoria (704);un almacenamiento en disco (706); un dispositivo de la caché (110); y al menos un procesador (703) programado para realizar un método según la reivindicación 1.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US271400 | 2008-11-14 | ||
US12/271,400 US8032707B2 (en) | 2008-09-15 | 2008-11-14 | Managing cache data and metadata |
PCT/US2009/063127 WO2010056571A2 (en) | 2008-11-14 | 2009-11-03 | Managing cache data and metadata |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2663701T3 true ES2663701T3 (es) | 2018-04-16 |
Family
ID=42008275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES09826570.5T Active ES2663701T3 (es) | 2008-11-14 | 2009-11-03 | Administración de datos y metadatos de la caché |
Country Status (7)
Country | Link |
---|---|
US (3) | US8032707B2 (es) |
EP (1) | EP2353081B1 (es) |
JP (1) | JP2012508932A (es) |
CN (1) | CN102216899B (es) |
ES (1) | ES2663701T3 (es) |
TW (1) | TWI471726B (es) |
WO (1) | WO2010056571A2 (es) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230124622A1 (en) * | 2021-10-14 | 2023-04-20 | Arm Limited | Alarm Systems and Circuits |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US8914557B2 (en) * | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
IL176685A (en) * | 2006-07-03 | 2011-02-28 | Eci Telecom Dnd Inc | Method for performing a system shutdown |
US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US8200895B2 (en) * | 2009-05-04 | 2012-06-12 | Microsoft Corporation | File system recognition structure |
US9015733B2 (en) | 2012-08-31 | 2015-04-21 | Facebook, Inc. | API version testing based on query schema |
KR101113894B1 (ko) * | 2010-05-18 | 2012-02-29 | 주식회사 노바칩스 | 반도체 메모리 시스템 및 이의 제어 방법 |
JP5520747B2 (ja) * | 2010-08-25 | 2014-06-11 | 株式会社日立製作所 | キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体 |
US8793309B2 (en) * | 2010-09-07 | 2014-07-29 | Sap Ag (Th) | Systems and methods for the efficient exchange of hierarchical data |
US10114847B2 (en) * | 2010-10-04 | 2018-10-30 | Ca, Inc. | Change capture prior to shutdown for later backup |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US9286079B1 (en) * | 2011-06-30 | 2016-03-15 | Western Digital Technologies, Inc. | Cache optimization of a data storage device based on progress of boot commands |
CN102567490B (zh) * | 2011-12-21 | 2013-12-04 | 华为技术有限公司 | 数据库内的描述信息的恢复和数据的缓存方法及设备 |
US9286303B1 (en) * | 2011-12-22 | 2016-03-15 | Emc Corporation | Unified catalog service |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US8756538B2 (en) * | 2012-02-20 | 2014-06-17 | International Business Machines Corporation | Parsing data representative of a hardware design into commands of a hardware design environment |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US20140058717A1 (en) * | 2012-08-24 | 2014-02-27 | Hitachi, Ltd. | Simulation system for simulating i/o performance of volume and simulation method |
US20140067781A1 (en) * | 2012-08-31 | 2014-03-06 | Scott W. Wolchok | Graph Query Language API Querying and Parsing |
US9646028B2 (en) | 2012-08-31 | 2017-05-09 | Facebook, Inc. | Graph query logic |
US9047238B2 (en) | 2012-11-28 | 2015-06-02 | Red Hat Israel, Ltd. | Creating a virtual machine from a snapshot |
US10713183B2 (en) * | 2012-11-28 | 2020-07-14 | Red Hat Israel, Ltd. | Virtual machine backup using snapshots and current configuration |
US9317435B1 (en) * | 2012-12-18 | 2016-04-19 | Netapp, Inc. | System and method for an efficient cache warm-up |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US10089192B2 (en) | 2013-06-13 | 2018-10-02 | Hytrust, Inc. | Live restore for a data intelligent storage system |
US8849764B1 (en) | 2013-06-13 | 2014-09-30 | DataGravity, Inc. | System and method of data intelligent storage |
US10102079B2 (en) | 2013-06-13 | 2018-10-16 | Hytrust, Inc. | Triggering discovery points based on change |
US9213706B2 (en) | 2013-06-13 | 2015-12-15 | DataGravity, Inc. | Live restore for a data intelligent storage system |
US9684607B2 (en) * | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Automatic recovery of application cache warmth |
US20150134661A1 (en) * | 2013-11-14 | 2015-05-14 | Apple Inc. | Multi-Source Media Aggregation |
US9489104B2 (en) | 2013-11-14 | 2016-11-08 | Apple Inc. | Viewable frame identification |
US9582160B2 (en) | 2013-11-14 | 2017-02-28 | Apple Inc. | Semi-automatic organic layout for media streams |
US10545917B2 (en) | 2014-02-19 | 2020-01-28 | Snowflake Inc. | Multi-range and runtime pruning |
US10325032B2 (en) | 2014-02-19 | 2019-06-18 | Snowflake Inc. | Resource provisioning systems and methods |
WO2016122491A1 (en) * | 2015-01-28 | 2016-08-04 | Hewlett-Packard Development Company, L.P. | Page cache in a non-volatile memory |
US9684596B2 (en) | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Application cache replication to secondary application(s) |
US9600417B2 (en) * | 2015-04-29 | 2017-03-21 | Google Inc. | Data caching |
CN106484691B (zh) | 2015-08-24 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 移动终端的数据存储方法和装置 |
CN106681649A (zh) * | 2015-11-06 | 2017-05-17 | 湖南百里目科技有限责任公司 | 一种分布式存储元数据加速方法 |
US10678578B2 (en) * | 2016-06-30 | 2020-06-09 | Microsoft Technology Licensing, Llc | Systems and methods for live migration of a virtual machine based on heat map and access pattern |
US10437780B2 (en) * | 2016-07-14 | 2019-10-08 | Snowflake Inc. | Data pruning based on metadata |
CN108733507B (zh) * | 2017-04-17 | 2021-10-08 | 伊姆西Ip控股有限责任公司 | 文件备份和恢复的方法和设备 |
US10733044B2 (en) * | 2018-07-09 | 2020-08-04 | Microsoft Technology Licensing, Llc | Use of cache for content validation and error remediation |
US11354415B2 (en) * | 2019-06-29 | 2022-06-07 | Intel Corporation | Warm boot attack mitigations for non-volatile memory modules |
US10992743B1 (en) * | 2019-09-23 | 2021-04-27 | Amazon Technologies, Inc. | Dynamic cache fleet management |
US11221776B2 (en) * | 2019-12-30 | 2022-01-11 | Micron Technology, Inc. | Metadata indication for a memory device |
CN113031864B (zh) * | 2021-03-19 | 2024-02-02 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
US11366765B1 (en) | 2021-04-21 | 2022-06-21 | International Business Machines Corporation | Optimize metadata management to boost overall system performance |
KR20230072886A (ko) * | 2021-11-18 | 2023-05-25 | 에스케이하이닉스 주식회사 | 저장 장치의 데이터 입출력 성능을 개선하는 장치 및 방법 |
US11860780B2 (en) | 2022-01-28 | 2024-01-02 | Pure Storage, Inc. | Storage cache management |
Family Cites Families (284)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4476526A (en) | 1981-11-27 | 1984-10-09 | Storage Technology Corporation | Cache buffered memory subsystem |
US4612612A (en) | 1983-08-30 | 1986-09-16 | Amdahl Corporation | Virtually addressed cache |
US4979108A (en) | 1985-12-20 | 1990-12-18 | Ag Communication Systems Corporation | Task synchronization arrangement and method for remote duplex processors |
US4972316A (en) | 1987-03-30 | 1990-11-20 | International Business Machines Corporation | Method of handling disk sector errors in DASD cache |
US4945474A (en) | 1988-04-08 | 1990-07-31 | Internatinal Business Machines Corporation | Method for restoring a database after I/O error employing write-ahead logging protocols |
US5394531A (en) | 1989-04-03 | 1995-02-28 | International Business Machines Corporation | Dynamic storage allocation system for a prioritized cache |
DE69024086T2 (de) | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
JPH02273843A (ja) | 1989-04-14 | 1990-11-08 | Nec Corp | スワッピング装置 |
US5900870A (en) | 1989-06-30 | 1999-05-04 | Massachusetts Institute Of Technology | Object-oriented computer user interface |
US5088026A (en) | 1990-02-09 | 1992-02-11 | International Business Machines Corporation | Method for managing a data cache using virtual external storage addresses as arguments |
US5307497A (en) | 1990-06-25 | 1994-04-26 | International Business Machines Corp. | Disk operating system loadable from read only memory using installable file system interface |
RU2010317C1 (ru) | 1990-07-20 | 1994-03-30 | Институт точной механики и вычислительной техники им.С.А.Лебедева РАН | Устройство управления буферной памятью |
US5263136A (en) | 1991-04-30 | 1993-11-16 | Optigraphics Corporation | System for managing tiled images using multiple resolutions |
US5764877A (en) | 1991-06-25 | 1998-06-09 | Digital Equipment Corporation | Media recovery with time-split B-trees |
JP2582487B2 (ja) | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5297258A (en) | 1991-11-21 | 1994-03-22 | Ast Research, Inc. | Data logging for hard disk data storage systems |
JP3451099B2 (ja) | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | 外部記憶サブシステム |
EP0547992A3 (en) | 1991-12-17 | 1993-12-01 | Ibm | Method and system for enhanced efficiency of data recovery in balanced tree memory structures |
JP3485938B2 (ja) | 1992-03-31 | 2004-01-13 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
US5420998A (en) | 1992-04-10 | 1995-05-30 | Fujitsu Limited | Dual memory disk drive |
US5398325A (en) | 1992-05-07 | 1995-03-14 | Sun Microsystems, Inc. | Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems |
US5574877A (en) | 1992-09-25 | 1996-11-12 | Silicon Graphics, Inc. | TLB with two physical pages per virtual tag |
US5454098A (en) | 1992-09-28 | 1995-09-26 | Conner Peripherals, Inc. | Method of emulating access to a sequential access data storage device while actually using a random access storage device |
US5561783A (en) | 1992-11-16 | 1996-10-01 | Intel Corporation | Dynamic cache coherency method and apparatus using both write-back and write-through operations |
US5751932A (en) | 1992-12-17 | 1998-05-12 | Tandem Computers Incorporated | Fail-fast, fail-functional, fault-tolerant multiprocessor system |
US5463739A (en) | 1992-12-22 | 1995-10-31 | International Business Machines Corporation | Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold |
US5557770A (en) | 1993-03-24 | 1996-09-17 | International Business Machines Corporation | Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk |
KR970008188B1 (ko) | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5551002A (en) | 1993-07-01 | 1996-08-27 | Digital Equipment Corporation | System for controlling a write cache and merging adjacent data blocks for write operations |
US5572660A (en) | 1993-10-27 | 1996-11-05 | Dell Usa, L.P. | System and method for selective write-back caching within a disk array subsystem |
JPH086854A (ja) | 1993-12-23 | 1996-01-12 | Unisys Corp | アウトボードファイルキャッシュ外部処理コンプレックス |
US6026027A (en) | 1994-01-31 | 2000-02-15 | Norand Corporation | Flash memory system having memory cache |
EP0668565B1 (en) | 1994-02-22 | 2002-07-17 | Advanced Micro Devices, Inc. | Virtual memory system |
US6185629B1 (en) | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
US5642501A (en) | 1994-07-26 | 1997-06-24 | Novell, Inc. | Computer method and apparatus for asynchronous ordered operations |
US5897640A (en) | 1994-08-08 | 1999-04-27 | Microsoft Corporation | Method and system of associating, synchronizing and reconciling computer files in an operating system |
WO1996012277A1 (en) | 1994-10-18 | 1996-04-25 | Iomega Corporation | Disk cartridge detection methods and apparatus |
JPH08137634A (ja) | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
EP0806015A4 (en) | 1995-01-23 | 2003-09-03 | Compaq Computer Corp | SYSTEM FOR CONSERVING THE INTEGRITY OF A DATABASE |
JP3426385B2 (ja) | 1995-03-09 | 2003-07-14 | 富士通株式会社 | ディスク制御装置 |
US5897660A (en) | 1995-04-07 | 1999-04-27 | Intel Corporation | Method for managing free physical pages that reduces trashing to improve system performance |
US6078925A (en) | 1995-05-01 | 2000-06-20 | International Business Machines Corporation | Computer program product for database relational extenders |
US5917723A (en) | 1995-05-22 | 1999-06-29 | Lsi Logic Corporation | Method and apparatus for transferring data between two devices with reduced microprocessor overhead |
US5608892A (en) | 1995-06-09 | 1997-03-04 | Alantec Corporation | Active cache for a microprocessor |
US5720029A (en) | 1995-07-25 | 1998-02-17 | International Business Machines Corporation | Asynchronously shadowing record updates in a remote copy session using track arrays |
US5809280A (en) | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive ahead FIFO with LRU replacement |
US5717954A (en) | 1995-10-13 | 1998-02-10 | Compaq Computer Corporation | Locked exchange FIFO |
US5754782A (en) | 1995-12-04 | 1998-05-19 | International Business Machines Corporation | System and method for backing up and restoring groupware documents |
US5754888A (en) | 1996-01-18 | 1998-05-19 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment |
US5806074A (en) | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US5996054A (en) | 1996-09-12 | 1999-11-30 | Veritas Software Corp. | Efficient virtualized mapping space for log device data storage system |
US5832515A (en) | 1996-09-12 | 1998-11-03 | Veritas Software | Log device layered transparently within a filesystem paradigm |
US6321234B1 (en) | 1996-09-18 | 2001-11-20 | Sybase, Inc. | Database server system with improved methods for logging transactions |
GB2317722B (en) | 1996-09-30 | 2001-07-18 | Nokia Mobile Phones Ltd | Memory device |
GB2317720A (en) | 1996-09-30 | 1998-04-01 | Nokia Mobile Phones Ltd | Managing Flash memory |
US6112024A (en) | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
JPH10177563A (ja) | 1996-12-17 | 1998-06-30 | Mitsubishi Electric Corp | フラッシュメモリ内蔵マイクロコンピュータ |
US6073232A (en) | 1997-02-25 | 2000-06-06 | International Business Machines Corporation | Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage |
US6345000B1 (en) | 1997-04-16 | 2002-02-05 | Sandisk Corporation | Flash memory permitting simultaneous read/write and erase operations in a single memory array |
US5943692A (en) | 1997-04-30 | 1999-08-24 | International Business Machines Corporation | Mobile client computer system with flash memory management utilizing a virtual address map and variable length data |
US5897638A (en) | 1997-06-16 | 1999-04-27 | Ab Initio Software Corporation | Parallel virtual file system |
US6148368A (en) | 1997-07-31 | 2000-11-14 | Lsi Logic Corporation | Method for accelerating disk array write operations using segmented cache memory and data logging |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US6240414B1 (en) | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6189071B1 (en) | 1997-10-06 | 2001-02-13 | Emc Corporation | Method for maximizing sequential output in a disk array storage device |
US6108004A (en) | 1997-10-21 | 2000-08-22 | International Business Machines Corporation | GUI guide for data mining |
FR2770952B1 (fr) | 1997-11-12 | 2000-01-21 | Adl Systeme Sa | Dispositif de tele-ecriture |
US6560702B1 (en) | 1997-12-10 | 2003-05-06 | Phoenix Technologies Ltd. | Method and apparatus for execution of an application during computer pre-boot operation |
US6098075A (en) | 1997-12-16 | 2000-08-01 | International Business Machines Corporation | Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking |
US6567889B1 (en) | 1997-12-19 | 2003-05-20 | Lsi Logic Corporation | Apparatus and method to provide virtual solid state disk in cache memory in a storage controller |
US6018746A (en) | 1997-12-23 | 2000-01-25 | Unisys Corporation | System and method for managing recovery information in a transaction processing system |
US6006291A (en) | 1997-12-31 | 1999-12-21 | Intel Corporation | High-throughput interface between a system memory controller and a peripheral device |
US6205527B1 (en) | 1998-02-24 | 2001-03-20 | Adaptec, Inc. | Intelligent backup and restoring system and method for implementing the same |
US7007072B1 (en) | 1999-07-27 | 2006-02-28 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US6272534B1 (en) | 1998-03-04 | 2001-08-07 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US6959318B1 (en) | 1998-03-06 | 2005-10-25 | Intel Corporation | Method of proxy-assisted predictive pre-fetching with transcoding |
US6298428B1 (en) | 1998-03-30 | 2001-10-02 | International Business Machines Corporation | Method and apparatus for shared persistent virtual storage on existing operating systems |
US6360330B1 (en) | 1998-03-31 | 2002-03-19 | Emc Corporation | System and method for backing up data stored in multiple mirrors on a mass storage subsystem under control of a backup server |
US6138125A (en) | 1998-03-31 | 2000-10-24 | Lsi Logic Corporation | Block coding method and system for failure recovery in disk arrays |
US6263342B1 (en) | 1998-04-01 | 2001-07-17 | International Business Machines Corp. | Federated searching of heterogeneous datastores using a federated datastore object |
US6128627A (en) * | 1998-04-15 | 2000-10-03 | Inktomi Corporation | Consistent data storage in an object cache |
US6101601A (en) | 1998-04-20 | 2000-08-08 | International Business Machines Corporation | Method and apparatus for hibernation within a distributed data processing system |
US6122685A (en) | 1998-05-06 | 2000-09-19 | Emc Corporation | System for improving the performance of a disk storage device by reconfiguring a logical volume of data in response to the type of operations being performed |
US6314433B1 (en) | 1998-06-12 | 2001-11-06 | Hewlett-Packard Company | Frame-based heroic data recovery |
FR2780178B1 (fr) | 1998-06-18 | 2001-08-10 | Inst Nat Rech Inf Automat | Procede de transformation et d'acheminement de donnees entre des serveurs d'agents presents sur des machines et un serveur d'agent central present sur une autre machine |
US6425057B1 (en) | 1998-08-27 | 2002-07-23 | Hewlett-Packard Company | Caching protocol method and system based on request frequency and relative storage duration |
US6714935B1 (en) | 1998-09-21 | 2004-03-30 | Microsoft Corporation | Management of non-persistent data in a persistent database |
US6209088B1 (en) | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6519597B1 (en) | 1998-10-08 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for indexing structured documents with rich data types |
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 |
US6338056B1 (en) | 1998-12-14 | 2002-01-08 | International Business Machines Corporation | Relational database extender that supports user-defined index types and user-defined search |
US6378043B1 (en) | 1998-12-31 | 2002-04-23 | Oracle Corporation | Reward based cache management |
US6640278B1 (en) | 1999-03-25 | 2003-10-28 | Dell Products L.P. | Method for configuration and management of storage resources in a storage network |
US6401093B1 (en) | 1999-03-31 | 2002-06-04 | International Business Machines Corporation | Cross file system caching and synchronization |
US6295578B1 (en) | 1999-04-09 | 2001-09-25 | Compaq Computer Corporation | Cascaded removable media data storage system |
US6535949B1 (en) * | 1999-04-19 | 2003-03-18 | Research In Motion Limited | Portable electronic device having a log-structured file system in flash memory |
US6237065B1 (en) | 1999-05-14 | 2001-05-22 | Hewlett-Packard Company | Preemptive replacement strategy for a caching dynamic translator |
US6317806B1 (en) | 1999-05-20 | 2001-11-13 | International Business Machines Corporation | Static queue and index queue for storing values identifying static queue locations |
US6381605B1 (en) | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6370534B1 (en) | 1999-06-01 | 2002-04-09 | Pliant Technologies, Inc. | Blocking techniques for data storage |
US6438750B1 (en) | 1999-06-18 | 2002-08-20 | Phoenix Technologies Ltd. | Determining loading time of an operating system |
TW479194B (en) | 1999-06-18 | 2002-03-11 | Phoenix Tech Ltd | Method and apparatus for execution of an application during computer pre-boot operation |
US6199195B1 (en) | 1999-07-08 | 2001-03-06 | Science Application International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
JP3812928B2 (ja) | 1999-07-14 | 2006-08-23 | 株式会社日立製作所 | 外部記憶装置及び情報処理システム |
US6513051B1 (en) | 1999-07-16 | 2003-01-28 | Microsoft Corporation | Method and system for backing up and restoring files stored in a single instance store |
US6311232B1 (en) | 1999-07-29 | 2001-10-30 | Compaq Computer Corporation | Method and apparatus for configuring storage devices |
US6542904B2 (en) | 1999-07-30 | 2003-04-01 | International Business Machines Corporation | Method and system for efficiently providing maintenance activity on a relational database that is utilized within a processing system |
JP3239335B2 (ja) | 1999-08-18 | 2001-12-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 電気的接続用構造体の形成方法およびはんだ転写用基板 |
JP2001067258A (ja) | 1999-08-25 | 2001-03-16 | Mitsubishi Electric Corp | フラッシュメモリ内蔵半導体装置及びフラッシュメモリアドレス変換方法 |
US6370541B1 (en) | 1999-09-21 | 2002-04-09 | International Business Machines Corporation | Design and implementation of a client/server framework for federated multi-search and update across heterogeneous datastores |
US6539456B2 (en) * | 1999-10-13 | 2003-03-25 | Intel Corporation | Hardware acceleration of boot-up utilizing a non-volatile disk cache |
US6751658B1 (en) | 1999-10-18 | 2004-06-15 | Apple Computer, Inc. | Providing a reliable operating system for clients of a net-booted environment |
US6338126B1 (en) | 1999-12-06 | 2002-01-08 | Legato Systems, Inc. | Crash recovery without complete remirror |
KR100810781B1 (ko) | 1999-12-17 | 2008-03-06 | 엔엑스피 비 브이 | 캐시 메모리를 구비한 데이터 프로세서 |
JP3562419B2 (ja) | 2000-02-01 | 2004-09-08 | 日本電気株式会社 | 電子交換機 |
US6556983B1 (en) | 2000-01-12 | 2003-04-29 | Microsoft Corporation | Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space |
US6366996B1 (en) | 2000-01-24 | 2002-04-02 | Pmc-Sierra, Inc. | Page memory management in non time critical data buffering applications |
US6694336B1 (en) | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6671757B1 (en) | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
WO2001057675A1 (en) | 2000-02-02 | 2001-08-09 | Sony Electronics Inc. | System and method for effectively utilizing a cache memory in an electronic device |
JP4131894B2 (ja) | 2000-02-29 | 2008-08-13 | 株式会社東芝 | ランダムディスクライトに好適なディスク制御機構 |
JP4078010B2 (ja) | 2000-03-03 | 2008-04-23 | 株式会社日立グローバルストレージテクノロジーズ | 磁気ディスク装置及び情報記録方法 |
US6633978B1 (en) | 2000-03-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for restoring computer resources |
US6718361B1 (en) | 2000-04-07 | 2004-04-06 | Network Appliance Inc. | Method and apparatus for reliable and scalable distribution of data files in distributed networks |
US6820088B1 (en) | 2000-04-10 | 2004-11-16 | Research In Motion Limited | System and method for synchronizing data records between multiple databases |
US7421541B2 (en) * | 2000-05-12 | 2008-09-02 | Oracle International Corporation | Version management of cached permissions metadata |
US6629201B2 (en) | 2000-05-15 | 2003-09-30 | Superspeed Software, Inc. | System and method for high-speed substitute cache |
US6671699B1 (en) | 2000-05-20 | 2003-12-30 | Equipe Communications Corporation | Shared database usage in network devices |
US6715016B1 (en) | 2000-06-01 | 2004-03-30 | Hitachi, Ltd. | Multiple operating system control method |
JP3705731B2 (ja) | 2000-06-05 | 2005-10-12 | 富士通株式会社 | 入出力制御装置 |
US7412369B1 (en) | 2000-06-09 | 2008-08-12 | Stmicroelectronics, Inc. | System and method for designing and optimizing the memory of an embedded processing system |
TW576966B (en) | 2000-06-23 | 2004-02-21 | Intel Corp | Non-volatile cache integrated with mass storage device |
US6557077B1 (en) | 2000-07-07 | 2003-04-29 | Lsi Logic Corporation | Transportable memory apparatus and associated methods of initializing a computer system having the same |
US6928521B1 (en) * | 2000-08-01 | 2005-08-09 | International Business Machines Corporation | Method, system, and data structures for using metadata in updating data in a storage device |
US6418510B1 (en) | 2000-09-14 | 2002-07-09 | International Business Machines Corporation | Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD) |
US6725342B1 (en) | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
US6434682B1 (en) | 2000-09-28 | 2002-08-13 | International Business Machines Corporation | Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy |
US7043524B2 (en) | 2000-11-06 | 2006-05-09 | Omnishift Technologies, Inc. | Network caching system for streamed applications |
US6999956B2 (en) | 2000-11-16 | 2006-02-14 | Ward Mullins | Dynamic object-driven database manipulation and mapping system |
US6629198B2 (en) * | 2000-12-08 | 2003-09-30 | Sun Microsystems, Inc. | Data storage system and method employing a write-ahead hash log |
US7178100B2 (en) | 2000-12-15 | 2007-02-13 | Call Charles G | Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers |
US6871271B2 (en) | 2000-12-21 | 2005-03-22 | Emc Corporation | Incrementally restoring a mass storage device to a prior state |
JP2002197073A (ja) * | 2000-12-25 | 2002-07-12 | Hitachi Ltd | キャッシュ一致制御装置 |
US6546472B2 (en) | 2000-12-29 | 2003-04-08 | Hewlett-Packard Development Company, L.P. | Fast suspend to disk |
US6651141B2 (en) | 2000-12-29 | 2003-11-18 | Intel Corporation | System and method for populating cache servers with popular media contents |
US6516380B2 (en) * | 2001-02-05 | 2003-02-04 | International Business Machines Corporation | System and method for a log-based non-volatile write cache in a storage controller |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6918022B2 (en) | 2001-02-28 | 2005-07-12 | Intel Corporation | Memory space organization |
JP2002259186A (ja) | 2001-03-06 | 2002-09-13 | Hitachi Ltd | Tree構造型インデクスの整合性チェック処理方法およびプログラムおよび装置 |
US6877111B2 (en) | 2001-03-26 | 2005-04-05 | Sun Microsystems, Inc. | Method and apparatus for managing replicated and migration capable session state for a Java platform |
US6996660B1 (en) | 2001-04-09 | 2006-02-07 | Matrix Semiconductor, Inc. | Memory device and method for storing and reading data in a write-once memory array |
US6584034B1 (en) | 2001-04-23 | 2003-06-24 | Aplus Flash Technology Inc. | Flash memory array structure suitable for multiple simultaneous operations |
US6961723B2 (en) | 2001-05-04 | 2005-11-01 | Sun Microsystems, Inc. | System and method for determining relevancy of query responses in a distributed network search mechanism |
US6717763B2 (en) | 2001-05-16 | 2004-04-06 | Hitachi Global Storage Technologies, Netherlands B.V. | Power savings method and apparatus for disk drives |
JP2002342037A (ja) | 2001-05-22 | 2002-11-29 | Fujitsu Ltd | ディスク装置 |
KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6697818B2 (en) | 2001-06-14 | 2004-02-24 | International Business Machines Corporation | Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database |
US6922765B2 (en) | 2001-06-21 | 2005-07-26 | International Business Machines Corporation | Method of allocating physical memory space having pinned and non-pinned regions |
US6772178B2 (en) | 2001-07-27 | 2004-08-03 | Sun Microsystems, Inc. | Method and apparatus for managing remote data replication in a distributed computer system |
US6742097B2 (en) | 2001-07-30 | 2004-05-25 | Rambus Inc. | Consolidation of allocated memory to reduce power consumption |
US6769050B1 (en) | 2001-09-10 | 2004-07-27 | Rambus Inc. | Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules |
JP3822081B2 (ja) | 2001-09-28 | 2006-09-13 | 東京エレクトロンデバイス株式会社 | データ書込装置、データ書込制御方法及びプログラム |
JP4093741B2 (ja) | 2001-10-03 | 2008-06-04 | シャープ株式会社 | 外部メモリ制御装置およびそれを含んだデータ駆動型情報処理装置 |
US6636942B2 (en) | 2001-10-05 | 2003-10-21 | International Business Machines Corporation | Storage structure for storing formatted data on a random access medium |
US6944757B2 (en) | 2001-10-16 | 2005-09-13 | Dell Products L.P. | Method for allowing CD removal when booting embedded OS from a CD-ROM device |
EP1304620A1 (en) | 2001-10-17 | 2003-04-23 | Texas Instruments Incorporated | Cache with selective write allocation |
US20030110357A1 (en) | 2001-11-14 | 2003-06-12 | Nguyen Phillip V. | Weight based disk cache replacement method |
US6687158B2 (en) | 2001-12-21 | 2004-02-03 | Fujitsu Limited | Gapless programming for a NAND type flash memory |
JP2003196032A (ja) | 2001-12-26 | 2003-07-11 | Nec Corp | ストレージ装置のライトキャッシュ制御方法及びストレージ装置 |
US20030154314A1 (en) | 2002-02-08 | 2003-08-14 | I/O Integrity, Inc. | Redirecting local disk traffic to network attached storage |
US6782453B2 (en) | 2002-02-12 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Storing data in memory |
US6771536B2 (en) | 2002-02-27 | 2004-08-03 | Sandisk Corporation | Operating techniques for reducing program and read disturbs of a non-volatile memory |
US6901499B2 (en) | 2002-02-27 | 2005-05-31 | Microsoft Corp. | System and method for tracking data stored in a flash memory device |
JP4299555B2 (ja) * | 2002-03-15 | 2009-07-22 | 富士通株式会社 | キャッシュ制御プログラム |
US7136966B2 (en) | 2002-03-18 | 2006-11-14 | Lsi Logic Corporation | Method and apparatus for using a solid state disk device as a storage controller cache |
US20040044776A1 (en) | 2002-03-22 | 2004-03-04 | International Business Machines Corporation | Peer to peer file sharing system using common protocols |
US7065627B2 (en) | 2002-03-25 | 2006-06-20 | International Business Machines Corporation | Method and system for providing an event driven image for a boot record |
JP4229626B2 (ja) | 2002-03-26 | 2009-02-25 | 富士通株式会社 | ファイル管理システム |
US6820180B2 (en) | 2002-04-04 | 2004-11-16 | International Business Machines Corporation | Apparatus and method of cascading backup logical volume mirrors |
US6966006B2 (en) | 2002-05-09 | 2005-11-15 | International Business Machines Corporation | Adaptive startup policy for accelerating multi-disk array spin-up |
US6898609B2 (en) | 2002-05-10 | 2005-05-24 | Douglas W. Kerwin | Database scattering system |
US7062675B1 (en) | 2002-06-25 | 2006-06-13 | Emc Corporation | Data storage cache system shutdown scheme |
US7065527B2 (en) | 2002-06-26 | 2006-06-20 | Microsoft Corporation | Systems and methods of optimizing metadata publishing system updates by alternating databases |
US7017037B2 (en) | 2002-06-27 | 2006-03-21 | Microsoft Corporation | Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time |
US7082495B2 (en) * | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
US6941310B2 (en) | 2002-07-17 | 2005-09-06 | Oracle International Corp. | System and method for caching data for a mobile application |
US7353350B2 (en) | 2002-07-23 | 2008-04-01 | Research In Motion Limited | Data store management system and method for wireless devices |
JP2004054845A (ja) | 2002-07-24 | 2004-02-19 | Sony Corp | データ管理装置 |
JP4026753B2 (ja) | 2002-07-25 | 2007-12-26 | 株式会社日立製作所 | 半導体集積回路 |
NZ520786A (en) | 2002-08-14 | 2005-06-24 | Daniel James Oaeconnell | Method of booting a computer system using a memory image of the post boot content of the system RAM memory |
US7043610B2 (en) | 2002-08-19 | 2006-05-09 | Aristos Logic Corporation | System and method for maintaining cache coherency without external controller intervention |
FI20021620A (fi) | 2002-09-10 | 2004-03-11 | Nokia Corp | Muistirakenne, järjestelmä ja elektroniikkalaite sekä menetelmä muistipiirin yhteydessä |
US20040078508A1 (en) * | 2002-10-02 | 2004-04-22 | Rivard William G. | System and method for high performance data storage and retrieval |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US7284149B1 (en) | 2002-10-16 | 2007-10-16 | Ken Scott Fisher | Intermittent connection protection for external computer devices |
US20040088481A1 (en) | 2002-11-04 | 2004-05-06 | Garney John I. | Using non-volatile memories for disk caching |
US7035974B2 (en) | 2002-11-06 | 2006-04-25 | Synology Inc. | RAID-5 disk having cache memory implemented using non-volatile RAM |
US7502791B2 (en) | 2002-11-26 | 2009-03-10 | Norsync Technology A/S | Database constraint enforcer |
US7003620B2 (en) | 2002-11-26 | 2006-02-21 | M-Systems Flash Disk Pioneers Ltd. | Appliance, including a flash memory, that is robust under power failure |
US7036040B2 (en) * | 2002-11-26 | 2006-04-25 | Microsoft Corporation | Reliability of diskless network-bootable computers using non-volatile memory cache |
US7039765B1 (en) | 2002-12-19 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Techniques for cache memory management using read and write operations |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
KR100504696B1 (ko) | 2003-02-26 | 2005-08-03 | 삼성전자주식회사 | 블록 소거/프로그램 정보를 저장하기 위한 상태 셀들의어레이를 포함한 낸드 플래시 메모리 장치 |
JP2004272324A (ja) | 2003-03-05 | 2004-09-30 | Nec Corp | ディスクアレイ装置 |
US7505958B2 (en) * | 2004-09-30 | 2009-03-17 | International Business Machines Corporation | Metadata management for a data abstraction model |
WO2004097650A1 (ja) | 2003-04-25 | 2004-11-11 | Matsushita Electric Industrial Co., Ltd. | データ記録装置 |
US7296043B2 (en) | 2003-05-30 | 2007-11-13 | Microsoft Corporation | Memory file size adjustment |
US7139933B2 (en) | 2003-06-20 | 2006-11-21 | International Business Machines Corporation | Preserving cache data against cluster reboot |
US7299379B2 (en) * | 2003-06-27 | 2007-11-20 | Intel Corporation | Maintaining cache integrity by recording write addresses in a log |
JP4090400B2 (ja) | 2003-07-24 | 2008-05-28 | 株式会社日立製作所 | ストレージシステム |
US7068575B2 (en) | 2003-07-30 | 2006-06-27 | Microsoft Corporation | High speed optical disc recording |
US6977842B2 (en) | 2003-09-16 | 2005-12-20 | Micron Technology, Inc. | Boosted substrate/tub programming for flash memories |
US7366866B2 (en) | 2003-10-30 | 2008-04-29 | Hewlett-Packard Development Company, L.P. | Block size allocation in copy operations |
EP1538525A1 (en) | 2003-12-04 | 2005-06-08 | Texas Instruments Incorporated | ECC computation simultaneously performed while reading or programming a flash memory |
WO2005057400A1 (ja) | 2003-12-09 | 2005-06-23 | Matsushita Electric Industrial Co., Ltd. | 電子装置、その制御方法、ホスト装置及びその制御方法 |
US7130962B2 (en) | 2003-12-18 | 2006-10-31 | Intel Corporation | Writing cache lines on a disk drive |
JP2005191413A (ja) | 2003-12-26 | 2005-07-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
US20050251617A1 (en) | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US8458488B2 (en) | 2003-12-31 | 2013-06-04 | International Business Machines Corporation | Method and system for diagnosing operation of tamper-resistant software |
US20050145923A1 (en) | 2004-01-06 | 2005-07-07 | Chiou-Feng Chen | NAND flash memory with enhanced program and erase performance, and fabrication process |
US6993618B2 (en) | 2004-01-15 | 2006-01-31 | Super Talent Electronics, Inc. | Dual-mode flash storage exchanger that transfers flash-card data to a removable USB flash key-drive with or without a PC host |
US7127549B2 (en) | 2004-02-04 | 2006-10-24 | Sandisk Corporation | Disk acceleration using first and second storage devices |
KR100564613B1 (ko) | 2004-02-25 | 2006-03-29 | 삼성전자주식회사 | 플래시 메모리 및 광 드라이브의 펌웨어 모듈 동적 로딩동작 방법 |
US7421562B2 (en) | 2004-03-01 | 2008-09-02 | Sybase, Inc. | Database system providing methodology for extended memory support |
US20050204091A1 (en) | 2004-03-11 | 2005-09-15 | Kilbuck Kevin M. | Non-volatile memory with synchronous DRAM interface |
US7366740B2 (en) | 2004-05-03 | 2008-04-29 | Microsoft Corporation | Systems and methods for automatic maintenance and repair of enitites in a data model |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7143120B2 (en) | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
JP4392601B2 (ja) | 2004-05-07 | 2010-01-06 | パナソニック株式会社 | データアクセス装置および記録媒体 |
US7231497B2 (en) | 2004-06-15 | 2007-06-12 | Intel Corporation | Merging write-back and write-through cache policies |
US20060010293A1 (en) * | 2004-07-09 | 2006-01-12 | Schnapp Michael G | Cache for file system used in storage system |
CN1266229C (zh) | 2004-08-10 | 2006-07-26 | 汕头市龙华珠光颜料有限公司 | 一种随角异色的多层变色颜料及其生产方法 |
US7171532B2 (en) | 2004-08-30 | 2007-01-30 | Hitachi, Ltd. | Method and system for data lifecycle management in an external storage linkage environment |
JP4192129B2 (ja) | 2004-09-13 | 2008-12-03 | 株式会社東芝 | メモリ管理装置 |
US20060075185A1 (en) | 2004-10-06 | 2006-04-06 | Dell Products L.P. | Method for caching data and power conservation in an information handling system |
US7657756B2 (en) * | 2004-10-08 | 2010-02-02 | International Business Machines Corporaiton | Secure memory caching structures for data, integrity and version values |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
JP4956922B2 (ja) | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
US20060106889A1 (en) | 2004-11-12 | 2006-05-18 | Mannby Claes-Fredrik U | Method, system, and program for managing revisions to a file |
JP4689247B2 (ja) | 2004-11-19 | 2011-05-25 | キヤノン株式会社 | カメラ及びその制御方法 |
KR100643287B1 (ko) | 2004-11-19 | 2006-11-10 | 삼성전자주식회사 | 플래시 메모리의 데이터 처리 장치 및 방법 |
US20060136664A1 (en) | 2004-12-16 | 2006-06-22 | Trika Sanjeev N | Method, apparatus and system for disk caching in a dual boot environment |
US7480654B2 (en) * | 2004-12-20 | 2009-01-20 | International Business Machines Corporation | Achieving cache consistency while allowing concurrent changes to metadata |
US7480761B2 (en) | 2005-01-10 | 2009-01-20 | Microsoft Corporation | System and methods for an overlay disk and cache using portable flash memory |
KR100670010B1 (ko) | 2005-02-03 | 2007-01-19 | 삼성전자주식회사 | 하이브리드 브로드캐스트 암호화 방법 |
US7620773B2 (en) * | 2005-04-15 | 2009-11-17 | Microsoft Corporation | In-line non volatile memory disk read cache and write buffer |
US8812781B2 (en) | 2005-04-19 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | External state cache for computer processor |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7516277B2 (en) | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US20060277359A1 (en) | 2005-06-06 | 2006-12-07 | Faber Robert W | Blank memory location detection mechanism |
US7523256B2 (en) | 2005-06-15 | 2009-04-21 | Bea Systems, Inc. | System and method for scheduling disk writes in an application server of transactional environment |
JP4833595B2 (ja) | 2005-06-30 | 2011-12-07 | 大和ハウス工業株式会社 | 脱臭機能を備えたシューズボックス |
US7640398B2 (en) | 2005-07-11 | 2009-12-29 | Atmel Corporation | High-speed interface for high-density flash with two levels of pipelined cache |
US7634516B2 (en) | 2005-08-17 | 2009-12-15 | International Business Machines Corporation | Maintaining an aggregate including active files in a storage pool in a random access medium |
US7409524B2 (en) | 2005-08-17 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | System and method for responding to TLB misses |
US7533215B2 (en) | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US7395401B2 (en) | 2005-09-30 | 2008-07-01 | Sigmatel, Inc. | System and methods for accessing solid-state memory devices |
US7409537B2 (en) * | 2005-10-06 | 2008-08-05 | Microsoft Corporation | Fast booting an operating system from an off state |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US20070150966A1 (en) | 2005-12-22 | 2007-06-28 | Kirschner Wesley A | Method and apparatus for maintaining a secure software boundary |
US7451353B2 (en) | 2005-12-23 | 2008-11-11 | Intel Corporation | Cache disassociation detection |
US7627713B2 (en) | 2005-12-29 | 2009-12-01 | Intel Corporation | Method and apparatus to maintain data integrity in disk cache memory during and after periods of cache inaccessibility |
US20070207800A1 (en) | 2006-02-17 | 2007-09-06 | Daley Robert C | Diagnostics And Monitoring Services In A Mobile Network For A Mobile Device |
JP2007233896A (ja) | 2006-03-03 | 2007-09-13 | Hitachi Ltd | ストレージ装置及びその制御方法 |
DE602007010439D1 (de) | 2006-03-31 | 2010-12-23 | Mosaid Technologies Inc | Flash-speichersystem-steuerverfahren |
US7558913B2 (en) | 2006-06-20 | 2009-07-07 | Microsoft Corporation | Atomic commit of cache transfer with staging area |
US7512739B2 (en) * | 2006-07-05 | 2009-03-31 | International Business Machines Corporation | Updating a node-based cache LRU tree |
US7818701B1 (en) | 2006-12-22 | 2010-10-19 | Cypress Semiconductor Corporation | Memory controller with variable zone size |
US20080172519A1 (en) | 2007-01-11 | 2008-07-17 | Sandisk Il Ltd. | Methods For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device |
WO2008094455A2 (en) * | 2007-01-26 | 2008-08-07 | Cheriton David R | Hierarchical immutable content-addressable memory processor |
US7945734B2 (en) | 2007-08-10 | 2011-05-17 | Eastman Kodak Company | Removable storage device with code to allow change detection |
US8190652B2 (en) | 2007-12-06 | 2012-05-29 | Intel Corporation | Achieving coherence between dynamically optimized code and original code |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8082384B2 (en) | 2008-03-26 | 2011-12-20 | Microsoft Corporation | Booting an electronic device using flash memory and a limited function memory controller |
US8275970B2 (en) | 2008-05-15 | 2012-09-25 | Microsoft Corp. | Optimizing write traffic to a disk |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
JP6201048B2 (ja) | 2014-06-02 | 2017-09-20 | 株式会社Trホールディングス | キャップ付き容器 |
-
2008
- 2008-11-14 US US12/271,400 patent/US8032707B2/en not_active Expired - Fee Related
-
2009
- 2009-11-03 EP EP09826570.5A patent/EP2353081B1/en active Active
- 2009-11-03 JP JP2011536387A patent/JP2012508932A/ja not_active Withdrawn
- 2009-11-03 ES ES09826570.5T patent/ES2663701T3/es active Active
- 2009-11-03 WO PCT/US2009/063127 patent/WO2010056571A2/en active Application Filing
- 2009-11-03 CN CN200980145878.1A patent/CN102216899B/zh active Active
- 2009-11-11 TW TW98138300A patent/TWI471726B/zh not_active IP Right Cessation
-
2011
- 2011-08-30 US US13/221,542 patent/US8135914B2/en not_active Expired - Fee Related
-
2012
- 2012-02-02 US US13/365,093 patent/US8489815B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230124622A1 (en) * | 2021-10-14 | 2023-04-20 | Arm Limited | Alarm Systems and Circuits |
Also Published As
Publication number | Publication date |
---|---|
TW201019110A (en) | 2010-05-16 |
EP2353081A2 (en) | 2011-08-10 |
JP2012508932A (ja) | 2012-04-12 |
US20120173824A1 (en) | 2012-07-05 |
TWI471726B (zh) | 2015-02-01 |
CN102216899A (zh) | 2011-10-12 |
US20100070747A1 (en) | 2010-03-18 |
WO2010056571A3 (en) | 2010-07-29 |
US8135914B2 (en) | 2012-03-13 |
WO2010056571A2 (en) | 2010-05-20 |
EP2353081B1 (en) | 2017-12-27 |
US8032707B2 (en) | 2011-10-04 |
US8489815B2 (en) | 2013-07-16 |
EP2353081A4 (en) | 2012-06-27 |
CN102216899B (zh) | 2016-12-07 |
US20110314202A1 (en) | 2011-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2663701T3 (es) | Administración de datos y metadatos de la caché | |
US10387313B2 (en) | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot | |
US20180089220A1 (en) | Global digests caching in a data deduplication system | |
KR101221185B1 (ko) | 캐쉬내 디렉토리 스캔들의 우선순위를 정하는 방법 및 시스템 | |
US20140019688A1 (en) | Solid State Drives as a Persistent Cache for Database Systems | |
TW201017405A (en) | Improved hybrid drive | |
JP2008544343A (ja) | フラッシュメモリシステムの迅速なスリープ解除を促進するための方法およびシステム | |
US20110167049A1 (en) | File system management techniques for computing environments and systems | |
US9471252B2 (en) | Use of flash cache to improve tiered migration performance | |
Wu et al. | Proactive data migration for improved storage availability in large-scale data centers | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
Lee et al. | A unified buffer cache architecture that subsumes journaling functionality via nonvolatile memory | |
Alwadi | High Performance and Secure Execution Environments for Emerging Architectures | |
JP2010257481A (ja) | データ記憶システムおよびキャッシュデータの一貫性保証方法 | |
Bitar | Deploying Hybrid Storage Pools |