ES2312119T3 - Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. - Google Patents
Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. Download PDFInfo
- Publication number
- ES2312119T3 ES2312119T3 ES06708695T ES06708695T ES2312119T3 ES 2312119 T3 ES2312119 T3 ES 2312119T3 ES 06708695 T ES06708695 T ES 06708695T ES 06708695 T ES06708695 T ES 06708695T ES 2312119 T3 ES2312119 T3 ES 2312119T3
- Authority
- ES
- Spain
- Prior art keywords
- data
- entry
- division
- entries
- processes
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
Método para mantener la coherencia como mínimo de una memoria cache o antememoria (150) accesible por una serie de procesos independientes (200) que pueden compartir datos comunes (210), efectuando dicha serie de procesos operaciones de búsqueda (900) simultáneas de dichos datos seguidos opcionalmente de una puesta a disposición (1010), de una extracción (1020) o de una inserción (1030) de dichos datos, dichas operaciones de búsqueda, de extracción y de inserción se ejecutan exhaustivamente una vez que han sido iniciadas por dicha serie de procesos independientes, se ejecutan exclusivamente una de otra cuando operan sobre dichos datos comunes y son cada una de ellas completamente reversibles, en cuyo método: dichas operaciones de búsqueda seguidas opcionalmente de una de dichas operaciones puesta a disposición, de extracción o de inserción de dichos datos tienen una duración finita o limitada de ejecución.
Description
Método y sistema para mantener la coherencia de
una memoria cache utilizada por múltiples procesos
independientes.
La presente invención se refiere a la ingeniería
informática en general y describe más particularmente un método y
un sistema para mantener a largo plazo la coherencia de los datos en
una memoria cache o antememoria compartida por procesos
independientes en un entorno informático que exige una
disponibilidad permanente de de estos datos y que asegura tiempo de
acceso cortos a los mismos.
Si la potencia de cálculo de los ordenadores y
de su unidad central de tratamiento (UC o CPU es decir "Central
Processing Unit" en la literatura técnica inglesa) no cesa de
aumentar considerablemente al pasar los años, aplicaciones lógicas
cada vez más exigentes llegan al mismo tiempo a utilizar este
aumento de potencia de tratamiento utilizando de manera creciente
estas unidades centrales. Es en particular el caso cuando estas
deben acceder a datos disponibles en una memoria centralizada que
puede tener que reagrupar enormes cantidades de información como
por ejemplo las bases de datos que reúnen las ofertas mundiales del
tráfico aéreo. Estas deben poder ser consultadas de modo permanente
a partir de innumerables agencias de viajes y puntos de ventas
siendo actualizadas por las compañías aéreas en todo el mundo 7 días
sobre 7 y 24 horas sobre 24.
Cualesquiera que sean las configuraciones, redes
de ordenadores y soluciones informáticas utilizadas para obtener
este resultado, los rendimientos esperados, en especialmente tiempos
de acceso corto a las informaciones buscadas, pasan siempre por la
utilización de una jerarquía de memorias. Efectivamente, las
informaciones buscadas deben ser llevadas a una memoria a la que
las unidades centrales puedan acceder de manera suficientemente
rápida incluso si dicha memoria no puede contener el conjunto de
informaciones susceptibles de ser buscadas. Este tipo de memoria es
el que se llama memoria cache o antememoria. La memoria cache sirve
para almacenar los datos a los que acude con mayor frecuencia un
sistema en un momento dado, permitiendo de está manera reducir los
estados de espera de las unidades centrales y procesadores de los
ordenadores.
Las dimensiones necesariamente limitadas de una
memoria cache deben poder ser compartidas entre los diferentes
procesos independientes que se deben ejecutar simultáneamente en las
unidades centrales. Además, cuando trabajan sobre datos comunes,
las múltiples tareas independientes deben poder hacerlo
preferentemente sin tener que duplicar estos datos.
La gestión de una memoria cache compartida entre
múltiples procesos es por lo tanto un asunto complejo. En
particular, es imperativo mantener la coherencia de los datos
comunes a varios procesos. Si uno de ellos debe modificar los datos
indicados es particularmente importante que otro proceso no los
pueda utilizar antes de que hayan sido modificados por completo y
puestos al día. Si bien es conocido que esto se puede conseguir por
el intercambio de mensajes entre procesos, se trata en este caso de
un método que incide no obstante de manera grave en los
comportamientos de acceso a estos datos en razón del tiempo
necesario para el intercambio de los mensajes.
Otro método habitualmente practicado consiste en
permitir que un proceso obtenga solo, temporalmente, el derecho de
acceso a datos compartidos bloqueando de esa manera el acceso de
otros procesos que deben esperar. No obstante, una vez que un
proceso ha obtenido este derecho de acceso exclusivo puede tener
también que esperar por su parte que otro proceso libere datos que
también debe utilizar. Existen por lo tanto evidentemente casos en
los que dos o más procesos se bloquean. Uno de ellos espera que el
otro termine y recíprocamente. Las tareas que deben ejecutar estos
procesos no adelantan. Hay bloqueo.
Se debe entender que se pueden tener, tanto
memorias cache como procesos. Existe por lo tanto replicación de
los datos comunes en la memoria cache, lo que se desea evitar en
primer lugar con la finalidad de utilizar lo mejor posible el
espacio de memoria disponible y que plantea nuevamente el problema
de la coherencia de las replicaciones en el interior de esta
última.
Por otra parte, una memoria cache no contiene
solamente datos de trabajo utilizados por los procesos en si
mismos, sino que debe estar estrictamente organizada. Una memoria
cache es efectivamente en todos los casos una vista parcial,
altamente dinámica, en el conjunto de datos presentes en la memoria
más lenta, económica, pero de gran tamaño y situada como reserva,
de manera típica, baterías de discos magnéticos que pueden almacenar
teraoctetos (10^{12} octetos) de datos. Estos datos de trabajo
son en todo caso potencialmente accesibles por los procesos en un
momento determinado después de su transferencia en la memoria cache
compartida. Los datos de organización de la memoria cache deben
permitir por lo tanto el mantener la coherencia entre los datos de
trabajo efectivamente presentes en un momento determinado en la
memoria cache y su correspondencia en la memoria situada como
reserva. No obstante, si un proceso se ha interrumpido antes de su
final normal (por ejemplo, simplemente por el hecho de que un
operario ha finalizado prematuramente una petición) o bien si se
ejecuta incorrectamente en razón de una debilidad de programación
del programa, puede ocurrir que los datos de organización de la
memoria cache no sean actualizados completamente o que los sean de
manera incorrecta. Las tablas de control que contienen estos datos
de organización pasan entonces a ser parcialmente alteradas o
adulteradas. Si, de modo general, los programas de aplicación están
concebidos para tener tolerancia a las averías y errores con la
finalidad de evitar que alteraciones o corrupciones parciales
comporten consecuencias importantes, su acumulación en un sistema
que debe ser operativo las 24 horas del día degrada a largo plazo
los rendimientos y la eficacia de la memoria cache en particular
reduciendo la dimensión efectivamente utilizable de esta, lo que ya
no permite gestionar el número de datos de trabajo compartibles por
el conjunto de los procesos que se deben desarrollar en un momento
dado para satisfacer las múltiples solicitudes procedentes de los
ordenadores que deben acceder de muy grandes bases de datos como las
que contiene las informaciones sobre el tráfico aéreo mundial o las
reservas de grandes cadenas hoteleras.
La dimensión efectivamente utilizable de una
memoria cache es por lo tanto un parámetro clave de su
funcionamiento. Su llenado debe ser óptimo. En particular un
proceso debe poder siempre gestionar datos de trabajo nuevos para
satisfacer nuevas peticiones de clientes y ello incluso si la
memoria cache se encuentra ya llena. Esto no se puede hacer
entonces más que liberando espacio y por lo tanto sacando de la
memoria los datos de trabajo menos susceptibles de ser reutilizados
o los que ya no son válidos. Esta gestión se complica por el hecho
de que los procesos son completamente independientes unos de otros.
Una solución habitualmente utilizada consiste entonces en tener una
tarea de fondo que se realiza además en todos los procesos para
actualizar las tablas de control en la memoria cache y liberar los
datos de trabajo que ya no son válidos o demasiado viejos. Esta
solución presenta el grave inconveniente de que si la tarea de fondo
no se ejecuta normalmente la memoria cache pasa rápidamente a ser
inutilizable puesto que se llena de datos no válidos. Además la
tarea de fondo no podrá en general liberar datos alterados por un
proceso que no se ha ejecutado completamente o normalmente.
En un sistema que debe funcionar 24 horas al día
y que por lo tanto no vuelve a arrancar en ningún momento, la
fiabilidad no debe basarse en el buen funcionamiento de un elemento
único típicamente, la tarea de fondo descrita en lo anterior tal
como es frecuentemente el caso.
Un mecanismo que tiende a solucionar algunas de
las debilidades de la técnica anterior y que se han descrito en lo
anterior, ha sido propuesto en una solicitud de patente ante la
oficina americana de patentes o USPTO (United States Patent and
Trademark Office) con el número 2003/0195866. Publicada el 16 de
octubre del 2003 con el título
"Transasction-aware caching for access control
metadata" esta solicitud de patente no se dedica a describir un
mecanismo específico para liberar sitio en una memoria cache que ya
se encuentra llena. Operación por lo tanto muy frecuentemente
necesaria después de un cierto tiempo de utilización en un sistema
que no vuelve a ponerse en marcha en ningún momento y en el que las
peticiones sucesivas tienden a acumular constantemente datos en la
memoria cache.
El objeto de la invención es por lo tanto el de
solucionar en general las limitaciones de la técnica anterior y
aportar mejoras que se refieren a la gestión de una memoria cache y
que impide cualquier bloqueo de los procesos en especial para
permitir liberar espacio cuando esta debe recibir nuevos datos.
La invención describe un mecanismo para mantener
la coherencia de una memoria cache, accesible por procesos
independientes. Los procesos pueden compartir datos comunes. Los
procesos efectúan operaciones simultáneas de búsqueda de datos
seguidas opcionalmente por una puesta a disposición de los datos a
los procesos, de una extracción de estos o de la inserción de
nuevos datos. Las operaciones de búsqueda, de extracción y de
inserción se realizan exhaustivamente una vez que han sido
iniciadas por los procesos independientes. Se ejecuta exclusivamente
una de otra cuando deben operar sobre datos comunes. Las
operaciones de extracción o de inserción son completamente
reversibles cada una de ellas. Dentro de este ámbito, la invención
prevé que las operaciones de puesta a disposición, extracción o
inserción de datos tienen una duración finita o limitada de
ejecución con la finalidad de impedir bloqueos. En especial, la
operación de inserción que comprende una etapa de liquidación de una
entrada cuando un compartimiento de la memoria cache se encuentra
lleno, se requiere recorrer todo el compartimiento con la finalidad
de realizar una elección, es no obstante interrumpido posiblemente
si se alcanza un tiempo de recorrido máximo. En este caso, la
entrada más apropiada entre las entradas ya recorridas queda
liberada. Las entradas del compartimiento son recorridas
exhaustivamente lo que se obtiene memorizando la última dirección
consultada del compartimiento después de cada liberación.
Las finalidades, objetivos y características y
ventajas de la invención resultarán mejor de la descripción
detallada de una forma preferente de realización de esta última que
se muestra mediante los dibujos adjuntos siguientes en los
cuales:
La figura 1 describe el entorno en el que se
pone en práctica la invención.
La figura 2 muestra la división de una ELC por
procesos independientes.
La figura 3 describe el caso en el que varios
ELC reciben acceso de procesos independiente.
La figura 4 describe la estructura de las tablas
de datos de una ELC.
La figura 5 describe la tabla de control
asociada a las tablas de datos.
La figura 6 muestra un ejemplo del contenido de
una parte de la tabla de control.
La figura 7 describe la estructura de la tabla
de divisiones.
La figura 8 describe la estructura y el
direccionado de la tabla de corte.
La figura 9 describe el método de búsqueda de
los datos en una ELC.
La figura 10 describe los métodos para la puesta
a disposición, extracción, sustitución e inserción de datos en una
ELC.
La figura 11 describe el método para liberar una
entrada en una tabla de datos llena.
La figura 12 describe las etapas de la ejecución
de un proceso que sirve para mantener la coherencia de las
tablas.
Tal como se ha indicado en la figura 1 la
invención se sitúa en el contexto de un sistema (100) que comprende
una o varias unidades centrales (UC) de ordenadores (110) que
comparten un medio de almacenamiento rápidamente accesible (120).
Aunque limitada en dimensiones la memoria compartida (MP) puede
acceder por su parte a una o varias memorias de masa (MM) situadas
en segundo plano y constituidas en general por las baterías de
discos magnéticos (130) que pueden memorizar grandes cantidades de
datos. En especial bases de datos tales como, por ejemplo, las que
deben ser consultadas por las agencias de viaje en todo el mundo y
que reúnen el conjunto de las informaciones sobre el tráfico aéreo
mundial o los estados de reservas de las cadenas hoteleras
internacionales. Las unidades centrales operan bajo el control de
un sistema de explotación. Por ejemplo, UNIX es un sistema de
explotación frecuentemente utilizado puesto que permite tratar no
solamente numerosos usuarios (140) simultáneamente sino que es así
mismo capaz de gestionar un gran número de tareas o procesos que
operan independientemente en el mismo tiempo. Por lo tanto, en la
memoria compartida que comprende un orden de control (125), el
sistema de explotación, directamente o por intermedio de capas
lógicas suplementarias integradas al sistema de explotación,
permite definir una o varias entidades lógicas de cache (ELC). Tal
como ya se ha indicado en el párrafo correspondiente al estado de
la técnica, el objetivo de estas memorias cache o antememorias (150)
es de poder llevar a una memoria de acceso rápido, la memoria
compartida (120) desde la memoria de masa (130), los datos sobre los
que deben poder trabajar en un instante dado los procesos
independientes iniciados por las unidades centrales (110).
La figura 2 describe más particularmente un
aspecto nuevo de la invención que permite que procesos
independientes (200), en este ejemplo la referencias del 1 a 5,
puedan compartir una entidad de datos comunes (210) después de que
uno solo de estos procesos, el que lleva el número 3 en este
ejemplo, haya tenido necesidad de recuperar los datos en la memoria
de masa (230) y haya tenido que efectuar las conformaciones y
cálculos necesarios (220) para su utilización efectiva por el
conjunto de procesos susceptibles de tener que trabajar sobre estos
datos en un instante determinado. Esta forma de proceder conduce a
minimizar notablemente las necesidades de almacenamiento en las
memorias cache contenidas en la memoria compartida aumentando para
igualdad de dimensiones su eficacia y descargando mucho las
unidades centrales puesto que los cálculos de conformaciones no son
efectuados más que por el único proceso que lleva el número 3 en
este ejemplo.
La figura 3 tiene por objeto mostrar que si los
datos pueden ser ventajosamente compartidos entre los procesos en
una misma ELC la invención permite también, en el caso en el que
coexisten varias ELC (300) en a memoria compartida, que en los
procesos (310) no tengan obligatoriamente acceso a todas las ELC.
Por lo tanto, en este ejemplo en particular, el proceso 1 tiene
acceso a las ELC A y C mientras que el proceso 2 tiene acceso a las
ELC B y C. Solamente los datos presentes en las ELC C son por lo
tanto comunes a los procesos 1 y 2 porque se puede demostrar útil
para impedir, por ejemplo, que el proceso 2 pueda alterar los datos
que solamente el proceso 1 está autorizado para modificar, datos
que se dan contenidos entonces preferentemente en la ELC A.
Las figuras siguientes describen las diferentes
tablas utilizadas por una ELC para recuperar y actualizar los datos
contenidos en un momento dado en la memoria cache. La figura 4
describe la organización de una tabla de datos. Tal como sugiere el
nombre, una tabla de datos (400) sirve en primer lugar para
memorizar los datos del usuario así como la clave única o
identificativo asociado a estas y los parámetros descritos a
continuación. El número máximo de tablas de datos que pueden
encontrarse presentes en una ELC es parametrizable en la
configuración del sistema. Por ejemplo, se podrá autorizar la
creación de un centenar de tablas de datos. Además cada una de esas
tablas podrá comprender un número variable de entradas (410), en
número de cuatro en este ejemplo, que son de dimensiones
especificables en la configuración con la finalidad de adaptar mejor
las tablas a los datos de los usuarios que deben acoger en una
aplicación específica de la invención. El formato de cada una de
las entradas de una tabla de datos comprende cuatro campos que
contienen:
- -
- las dimensiones de la clave (420).
- -
- Las dimensiones de los datos de usuario (430).
- -
- La clave única que identifica los datos (440). De manera típica, esta clave es un campo de algunas decenas de octetos que incluyen de manera suficiente información para identificar el tipo de datos asociado.
- -
- Los datos de usuario propiamente dichos (450). Por ejemplo, serán las tarifas practicadas por una compañía aérea para un destino determinado y un periodo dado.
\vskip1.000000\baselineskip
La figura 5 describe la tabla de control
utilizada para hacer el seguimiento de los datos de usuario que se
encuentran presentes en un instante dado en una ELC. Existe
correspondencia uno a uno entre las entradas de la tabla de control
(500) y las de los datos (510, 520). El número de entradas en la
tabla de control es por lo tanto el mismo que el número máximo de
tablas de datos que ha sido especificado en un momento de la
configuración, multiplicado por el número de entradas en cada una
de estas tablas. En el ejemplo simple de la figura 5, que muestra
solamente dos tablas de datos, la primera (510) comprende cuatro
entradas y en la segunda (520) cinco, comprendiendo entonces la
tabla de control asociada (500) un total de nueve entradas
activas.
Se observa que la entrada 0 de estas tablas está
inutilizada en todos los casos para permitir que los campos 0
tengan una significación particular: la de indicar la ausencia de
referencia en una entrada.
Cada entrada de la tabla de control comprende
las informaciones siguientes:
- -
- El valor de corte de la clave asociada a los datos.
- -
- La fecha de inserción de los datos.
- -
- La fecha de caducidad o expiración de los datos.
- -
- Las dimensiones de los datos memorizados en la entrada correspondiente de la tabla de datos.
- -
- La entrada siguiente en la lista encadenada de las entradas (libres o utilizadas) de las tablas de control y de datos o el valor 0 si no hay otra entrada encadenada.
- -
- La entrada encadenada precedente o el valor 0 si no hay otra entrada encadenada.
- -
- La entrada correspondiente de la tabla de corte que se ha descrito con la figura 8 o el valor 0 si se trata de la lista encadenada de las entradas libres.
- -
- El número de la tabla de datos asociada a esta entrada de la tabla de control.
- -
- La entrada correspondiente en la tabla de datos.
- -
- El contado de utilización (para determinar cual de las entradas ha sido menos utilizada recientemente).
- -
- Parámetros diversos que comprenden en especial un indicador binario para indicar que la entrada correspondiente se encuentra libre y puede ser utilizada.
\vskip1.000000\baselineskip
La figura 6 facilita un ejemplo de lo que podría
contener la parte de la tabla de control correspondiente a la tabla
de datos (1) de la figura 5. Con un objetivo de claridad los
parámetros de esta lista no aparecen en su totalidad en la tabla de
la figura 6.
En este ejemplo las entradas 2 y 4 son libres
(600). Están doblemente encadenadas para poder recorrer la lista en
las dos direcciones y podrían ser utilizadas para memorizar datos de
usuarios. La entrada libre 2 indica por lo tanto la entrada libre
siguiente, que es la 4 (610). Está ultima indica la entrada libre
precedente que es la 2 (620).
Las entradas utilizadas 1 y 3 pertenecen en este
caso a una misma lista encadenada que sirve para resolver las
colisiones que proceden del corte idéntico de claves que no obstante
son distintas. Indican una entrada específica de la tabla de corte
(630), la entrada (123). La tabla de corte y el corte de las claves
de identificación se explican en detalle en la siguiente figura 8.
Igual que la lista de las entradas libres, la destinada a resolver
las colisiones está también doblemente encadenada: la entrada 1
indica la entrada utilizada siguiente (640), la 3 que por su parte
indica la precedente (650) de la lista, la 1.
Como se ha explicado los valores nulos de las
columnas "entrada siguiente" y "entrada precedente" no
hace referencia a ninguna entrada y empiezan o terminan una lista
encadenada.
La figura 7 describe la tabla de divisiones
(700). Tal como sugiere su nombre la tabla de divisiones sirve para
almacenar las informaciones necesarias para determinar como se
organizan y dividen la tabla de control y la de datos. Existen por
lo tanto tantas entradas (710) en la tabla de divisiones como tablas
de datos, siendo dos en el ejemplo de las figuras anteriores. Cada
una de las entradas de la tabla de divisiones, que referencia la
tabla de datos correspondiente (la primera entrada de referencia de
la tabla número 1 y después así sucesivamente) comprende los
parámetros siguientes, que a efectos de claridad no aparecen en
todos los casos en el esquema de la tabla de divisiones de la figura
7:
- -
- Índice en la tabla de control de la primera entrada de la división correspondiente (720).
- -
- Índice de la última entrada (730).
- -
- Número de entradas de esta división.
- -
- Dimensión de las entradas en esta división.
- -
- Número de entradas libres.
- -
- Primera entrada de la lista encadenada de las entradas libres (740).
- -
- Indicador de bloqueo de la división.
- -
- Índice de la tabla de control de donde deberá empezar la próxima búsqueda de una entrada susceptible de ser extraída.
La figura 8 describe la tabla de división (800)
que es el punto de entrada para cualquier búsqueda en una ELC.
El punto de entrada en la tabla de división
(810) es el valor resultante de la división de la clave de
identificación de los datos. Clave única, asociada a los datos y
que se ha descrito en las figuras precedentes. Por las razones ya
mencionadas la entrada 0 debe continuar inutilizada y la función de
división debe devolver un valor comprendido entre 1 y el límite
superior de direccionado de la tabla de división. La tabla de
división es parametrizable en la configuración del sistema. La
invención no supone la utilización de una función de división
particular. Con la finalidad de intentar obtener un mínimo de
colisiones, objetivo final de cualquier función de división,
eventualmente en función de la estructura de las claves, se podrá
escoger una u otra de las numerosas funciones y métodos de división
que han sido propuestos en la abundante literatura técnica que trata
de este tema. La función de división deberá ser escogida, no
obstante o adaptada para que el valor 0 quede siempre excluido.
En una forma preferente de puesta en práctica de
la invención representada en la figura 8, la clave única de
identificación (840) que requiere de forma típica de 50 a 100
octetos sufre una primera división (850) para obtener un valor que
se inscribe, por ejemplo, dentro de un campo de 64 bits y denominado
a continuación H[int]. No obstante, al no poder comprender
la tabla de división en la práctica 2^{64} entradas, se efectúa
una segunda división (860) de H[int] para obtener una tabla
(800) de dimensiones razonables. Por ejemplo, se podrá desear
llevar al campo de 64 bits a un campo de 18 bits es decir
aproximadamente 256 kilo entrada (2^{18}). La ventaja de proceder
a una doble división es la de conciliar una tabla de división de
dimensiones razonables permitiendo la comparación para evitar dudas
en caso de colisión en la tabla de división en un campo de bits (64
bits) rápidamente manipulable por un procesador. Una elección
razonable de la primera función de división permite en efecto
obtener una probabilidad de colisión casi nula incluso cuando las
colisiones serán menos numerosas después de una reducción
suplementaria por ejemplo, a 18 bits. Por lo tanto no se deberá
hacer una comparación completa de las claves, que comprenden de 50 a
100 octetos casi en ningún caso más de una vez tal como se ha
comentado anteriormente con la figura 9.
Si se hace referencia de nuevo a la figura 6 es
por lo tanto el valor de división intermedio H[int] que
comprende 64 bits en el ejemplo anterior, el que se encuentra
presente en la tabla de control (660) y que será utilizado en
primer lugar con la finalidad de acelerar las comparaciones.
El valor final de división (810) de la clave
asociada a los datos H[CLEF] es utilizado para consultar la
tabla de división. La entrada correspondiente contiene las
informaciones siguientes:
- -
- Un indicador de bloqueo (V) de la entrada para permitir que un solo proceso pueda modificar a la vez la lista encadenada (820) empezando en esta entrada de la tabla de división. Este aspecto de la invención es comentado más adelante en la descripción.
- -
- La primera entrada en la tabla de control de la lista encadenada utilizada para resolver las posibles colisiones resultantes de la división de las claves. Se debe entender, que si la división de las claves de datos no facilita ninguna colisión en una entrada particular de la tabla de división, la lista encadenada correspondiente se reducirá a un solo elemento.
Los valores nulos en la tabla de división (830)
no dan referencia de ninguna entrada de la tabla de control.
Ninguna de las claves de datos da un valor de división para esta
entrada.
La figura 9 describe el método de acceso (900) a
los datos de una ELC. La búsqueda de datos en una ELC empieza por
la división de la clave (910) asociada a los datos buscados. El
valor obtenido sirve para direccionar la tabla de división
precedentemente descrita (920). Si la entrada correspondiente es
nula la búsqueda puede ser declarada a continuación infructuosa
(932). Este resultado es indicado inmediatamente (940) al proceso
buscando los datos para informar que no se encuentran presentes en
la ELC interrogada.
Si la entrada direccionada no es nula (934), la
tabla de control de la ELC debe ser leída en la entrada referenciada
por la tabla de división (950). Esta entrada contiene el primer
elemento, posiblemente el único, de una lista encadenada de
entradas susceptibles de contener la información buscada.
Esta consulta de la tabla de control no se hará
no obstante inmediatamente si la entrada correspondiente está
bloqueada por otro proceso (945). Será necesario entonces esperar a
que esté último desbloquee la entrada para continuar. El proceso en
curso, si es susceptible de comportar una modificación de las tablas
(extracción o inserción) bloquea a su vez la entrada de la tabla de
división (947).
Se lleva a cabo (960) una primera comparación de
los valores de división de la clave. Es decir se compara de
inmediato el valor de la división de la clave buscada al extraído de
la tabla de control. Tal como se ha explicado en la figura 8, en la
forma preferente de realización de la invención, la comparación se
efectúa sobre un valor intermedio de división H[int].
Si difieren (974) la búsqueda debe continuar
recorriendo la lista encadenada (980) si contienen más de un
elemento. Si existe solamente un elemento o si se ha conseguido el
último elemento de la lista (982) la búsqueda debe ser declarada
infructuosa (940).
Si los valores de división son no obstante
idénticos (972) la clave buscada ha sido posiblemente hallada. Sin
importar que función de división pueda no obstante devolver dos
valores idénticos de división, partiendo de claves distintas, ello
debe ser verificado. Para evitar dudas, las claves deben ser
comparadas (990). En una forma preferente de realización de la
invención, para acelerar la comparación, la dimensión de la clave
buscada es comparada en primer lugar a la que es memorizada en la
tabla de datos (en la entrada correspondiente a la de la tabla de
control). Si las claves son de dimensiones distintas no pueden ser
idénticas y la búsqueda debe continuar (994), tal como en lo
anterior, recurriendo la lista encadenada si contiene más de un
elemento. De lo contrario la búsqueda debe ser declarada
infructuosa (940).
Si las dimensiones de las claves son iguales se
efectúa finalmente una comparación completa de estas. Si las claves
son efectivamente idénticas (992) la búsqueda es fructuosa. Los
datos buscados se encuentran presentes en la tabla de datos. Si las
claves difieren la búsqueda debe continuar tal como en el caso
anterior, recorriendo la lista encadenada.
Se observará que frecuentemente será necesaria
una sola comparación completa de las claves (de 50 a 100 octetos)
cuando los datos han sido efectivamente hallados. La probabilidad de
tener que hacer más de una comparación completa de las claves
depende de la eficacia de la primera función de división que se ha
conservado para minimizar las colisiones y que se ha descrito en la
figura 8. Tal como se ha explicado esta probabilidad es casi
nula.
La figura 10 describe diferentes acciones que
siguen a la búsqueda de datos en una ELC.
En todos los casos, si la búsqueda es
infructuosa el proceso en el origen de la búsqueda recibe
información de ello (1000).
Si la búsqueda es positiva y ha sido iniciada
por un proceso para consultar los datos, estos son extraídos de la
tabla de datos y puestos a disposición del proceso en el origen de
la petición (1010).
Si la búsqueda es positiva y ha sido iniciada
por un proceso con el objetivo de extraer (1020) los datos
correspondientes de la ELC, la tabla de control debe ser modificada
(1025). La entrada correspondiente de la división debe ser extraída
de la lista encadenada de las entradas utilizadas de esta división y
añadida a la de las entradas libres. La extracción de una entrada
de la lista encadenada de las entradas utilizadas se hace
evidentemente reconstituyendo en caso necesario, la lista
encadenada por modificación de los campos de entrada
"siguiente" y "precedente" tal como se ha indicado en la
figura 6.
Si el desarrollo de la inserción de nuevos datos
(1030) en una ELC depende en primer lugar del hecho de que la clave
y se encuentra presente o no, la inserción requiere en todos casos
que la dimensión requerida para poder insertar estos datos sea
inicialmente calculada (1035) con la finalidad de determinar cuales
de las entradas libres de la tabla de datos son utilizables.
Si la búsqueda ha sido infructuosa, la inserción
dependerá entonces esta vez si queda por lo menos una placa libre
de dimensiones adecuadas para recibir los nuevos datos. Si este es
el caso (1042) se selecciona una entrada libre (1060) y la
inserción de los nuevos datos es efectuada (1070) lo que comprende
la modificación o creación de listas encadenadas en la tabla de
control.
Si no hay lugar libre de dimensión adecuada
(1044) es necesario entonces liberar un lugar en la ELC (1050) para
poder proceder a la inserción (1070). El método para liberar un
lugar se describe de manera más precisa en la figura 11.
Si la búsqueda ha sido positiva, la clave
buscada se encuentra ya presenta, se trata de una modificación de
los datos contenidos en la tabla de los datos. La cuestión se
presenta entonces de saber si hay suficiente lugar para memorizar
los nuevos datos en la misma entrada. Si la respuesta es positiva
(1046) se puede proceder inmediatamente a la inserción (1070). No
obstante, si las dimensiones no son convenientes (1048), será
necesario igual que en el caso anterior, liberar una entrada de
dimensiones adecuadas (1050). Previamente se habrá liberado también
la entrada cuya dimensión se demuestra insuficiente para que pueda
ser reutilizada (1045). Esta etapa es equivalente a la ya descrita
anteriormente y que consiste en extraer datos de la ELC (1020).
A propósito de la figura 10 se observara
finalmente que a la salida de una operación que comporta una
modificación de las tablas, es decir las operaciones de extracción
(1025) o de inserción (1070) la entrada correspondiente de la tabla
de división debe ser desbloqueada dado que la operación se ha
terminado.
La figura 11 describe más particularmente la
etapa (1050) de la figura 10 que consiste en buscar la mejor
entrada a liberar cuando ya no hay más sitio libre para recibir los
nuevos datos a insertar. El método se describe utilizando un
ejemplo de una división de la tabla de control (1100) que comprende
8 entradas, de dimensión suficiente para recibir los nuevos datos,
todos ellos utilizados. A efectos de mayor claridad, solamente se
han representado los campos de la tabla de control necesarios para
la comprensión del mecanismo de inserción.
En este ejemplo la división que indica la tabla
de datos nº 1 (1110) y las entradas 0-7 (1120)
comprende 3 listas encadenadas (1130) empezando respectivamente en
las direcciones 1, 4 y 5 y comprendiendo respectivamente 3,3 y 2
entradas. Los inicios de las cadenas son en si mismos direccionados
por la tabla de división ya descrita.
Para liberar una entrada el algoritmo de
inserción va a utilizar una u otra de las dos informaciones
siguientes presentes en la tabla de control:
- -
- El tiempo (hora/fecha) en el que va a expirar la validez de los datos asociados a la entrada (1140). Este tiempo debe ser comparado al tiempo actual para determinar, recorriendo todas las entradas de la división, si una de las entradas ha caducado ya y puede ser extraída. En la práctica este tiempo, tal como se ha indicado, adopta la forma de un valor que debe alcanzar un simple contador cuando el tiempo de validez de los datos va a expirar.
- -
- La utilización efectiva de las entradas (1150) de modo que se pueda determinar cual es la entrada que permanece no utilizada después del tiempo más prolongado (menos recientemente utilizado o "LRU", es decir "least recently used" en la literatura técnica en lengua inglesa sobre estos temas). En el ejemplo de la figura 11 el valor más elevado del campo "utilización" indica la entrada que queda inutilizada desde el periodo de tiempo más largo, es decir, la de la dirección 7 de la tabla de control (1155). Es esta entrada la que sería por lo tanto susceptible de ser sustituida.
\vskip1.000000\baselineskip
En función del tipo de utilización de la
invención los criterios para escoger la extracción de una entrada
en vez de otra podrán ser regulados de manera muy distinta. Una
utilización habitual de estos parámetros consiste en considerar
inicialmente si existe una entrada cuyos datos han caducado. Si
existe como mínimo una entrada que satisface este criterio es por
ejemplo la primera que se ha encontrado cuando se recorren todas las
entradas (1160), que es seleccionada. Si ninguna tiene datos
caducados se puede entonces escoger, extraer aquellas de las
entradas que han permanecido inutilizadas desde el tiempo más
prolongado (1155). Para evitar no obstante extraer datos demasiado
deprisa un umbral podrá ser atribuido para tener en cuenta este
último parámetro. Se podrá producir entonces que los criterios de
extracción de una entrada no se han satisfecho en un primer tiempo
en cuyo caso el algoritmo deberá prever una estrategia de replica
menos limitativa, tal como la que permitiría escoger una entrada
cuyo tiempo de expiración se encuentra lo más próximo posible del
tiempo actual.
Se observara que si la invención no supone un
método particular de utilización de estos parámetros para liberar
una entrada, no obstante forma explícitamente la hipótesis de que
una entrada será liberada siempre para poder recibir nuevos datos
en la antememoria o cache.
El ejemplo de la figura 11 supone que al tener
el tiempo actual o corriente un valor de 15 la entrada 2 de la
tabla de control puede ser extraída puesto que los datos de esta
entrada han expirado en el tiempo 12 que es anterior (1145). Dado
que la entrada 2 forma parte de una lista encadenada esta debe ser
modificada (1134) y la nueva entrada, que comprende solamente un
elemento debe ser insertada (1132). El nuevo estado de la división
es por lo tanto el indicado en la tabla de la parte baja (1105).
En este ejemplo se ha supuesto de manera
implícita que la nueva entrada correspondía también a una nueva
entrada en la tabla de división y que no existe colisión. Se habrá
comprendido evidentemente que la nueva entrada podría corresponder
a un valor de división que ya ha sido utilizado. En este caso se
debería añadir a la lista encadenada correspondiente en lugar de
formar una lista suplementaria que comprende en aquel momento un
solo elemento. La manipulación de listas encadenadas es una
práctica bien conocida de los expertos en este campo y no se
describe por lo tanto de manera más detallada.
\newpage
Tal como se ha explicado en el curso de la
descripción los procesos son libres de utilizar una ELC de forma
competitiva. Solamente se aplican dos limitaciones o restricciones
para evitar que un proceso pueda utilizar datos modificados de
manera incompleta por otro proceso.
- -
- Tal como ya se ha indicado en la figura 8 cada entrada de la tabla de división comprende un indicador de bloqueo para impedir que dos procesos puedan intentar modificar simultáneamente una entrada de la ELC. Tal como se ha mostrado de manera más precisa en la etapa (945) en la figura 9, el acceso está bloqueado si un proceso que debe modificar las tablas de datos se ejecuta ya a partir de esta entrada. No obstante puede existir acceso simultáneo a una ELC habiendo entradas distintas en la tabla de división. Solamente los accesos múltiples a partir de un mismo valor de división para operaciones que deben comportar una modificación de las tablas, no son posibles puesto que conducirían a trabajar sobre iguales listas encadenadas.
- -
- Existe también un indicador de bloqueo en las entradas de la tabla de las divisiones descritas en la figura 7. El objetivo de este bloqueo es el de proteger la actualización de las listas encadenadas de entradas libres de los procesos independientes, que trabajarían en una misma división, desearían modificar. Las entradas de la tabla de divisiones están bloqueadas en especial cuando se libera lugar, es decir, en las etapas (1045), (1050) o (1025) descritas en la figura 10 y desbloqueadas en las mismas condiciones que las de la tabla de división.
Por lo tanto, las operaciones iniciadas por
procesos que comportan una modificación de las tablas de datos se
ejecutan siempre de manera exhaustiva antes que las entradas en
curso de modificación puedan ser utilizadas de nuevo por otro
proceso. Los procesos que deben trabajar sobre entradas comunes de
las tablas de control se excluyen mutuamente durante su
ejecución.
Tal como se ha indicado en la figura 11 se habrá
observado por otra parte que el algoritmo de inserción supone que
se puede tener que liberar una entrada en una tabla de control llena
y que es necesario entonces recorrer esta tabla (1160) para
seleccionar la entrada más apropiada. Para evitar que un proceso no
pueda bloquear una entrada durante un tiempo demasiado largo la
invención prevé que este recorrido podrá ser limitado, por ejemplo
especificando un número máximo de lecturas consecutivas de la tabla
de control. Es por ello que la tabla de división descrita en la
figura 7, incluye también un parámetro para especificar de que lugar
la búsqueda de una entrada debe reanudarse cada vez que este
mecanismo es utilizado, a efectos de evitar que el recorrido de la
tabla de control no se efectúe siempre a partir de un mismo punto,
por ejemplo la primera entrada. Esto permite que todas las entradas
sean finalmente recorridas y que cada una de ellas tenga la
oportunidad de ser sustituida.
Al ser el proceso de duración finita o al ser
limitado en lo que respecta a los que solicitan liberar una entrada
recorriendo la tabla de control, no se puede producir ningún bloque
permanente.
La figura 12 explica el caso de los procesos que
deben alterar normalmente (1200) en el curso de su ejecución las
tablas que controlan una ELC.
Es ante todo el caso de la inserción de nuevos
datos, operación que se describe en la figura 10 que requiere que
se cree o que se modifique las listas encadenadas.
Un proceso que debe modificar las tablas de una
ELC y que no llegaría a su termino no debe dejar a estas en un
estado no coherente, por ejemplo perturbando listas encadenadas que
no podrían ser recorridas normalmente, lo que condenaría las
entradas asociadas de las tablas de datos. La invención prevé que
los procesos potencialmente peligrosos deben salvaguardar el
contexto de las tablas (1210) antes de que se ejecuten, es decir,
que deben memorizar todas las informaciones necesarias para poder
restaurar el estado anterior de las tablas si no se ejecutan
completamente o si se ha detectado una anomalía en el curso de la
ejecución.
Cada proceso tiene un identificador único (ID) y
utiliza una zona de memoria de trabajo dedicada en la que estas
informaciones son memorizadas durante la totalidad de la duración de
su ejecución. Por ejemplo, si se ha creado un bloqueo en la tabla
de división, el identificador del proceso es registrado así como la
referencia de la entrada de la tabla de división correspondiente.
De manera similar los enlaces de una lista encadenada que va a ser
modificada por un proceso son objeto de registro. Si el proceso
vuelve a encontrar un problema (1232), una función asociada a los
procesos es requerida encargándose de reestablecer el estado
anterior (1240). En los ejemplos anteriores el bloqueo de la tabla
de división será relajado y los enlaces de la lista encadenada
serán reestablecidos. En el curso de su ejecución (1220) cada
proceso establece no solamente estadísticas que sirven además para
medir la eficacia de la memoria cache, sino también, un estado de
terminación que es utilizado (1230) para determinar si el proceso
se termina normalmente (1234).
La utilización de la salvaguarda y de la
restauración del contexto de las tablas así como el establecimiento
de un estado de terminación del proceso no requiere mecanismos
propios de la invención. Todos los métodos bien conocidos por los
especialistas de ingeniería lógica para poner en práctica estos
mecanismos son susceptibles de ser utilizados y por lo tanto no se
describen de manera más detallada.
Claims (7)
1. Método para mantener la coherencia como
mínimo de una memoria cache o antememoria (150) accesible por una
serie de procesos independientes (200) que pueden compartir datos
comunes (210), efectuando dicha serie de procesos operaciones de
búsqueda (900) simultáneas de dichos datos seguidos opcionalmente de
una puesta a disposición (1010), de una extracción (1020) o de una
inserción (1030) de dichos datos, dichas operaciones de búsqueda,
de extracción y de inserción se ejecutan exhaustivamente una vez que
han sido iniciadas por dicha serie de procesos independientes, se
ejecutan exclusivamente una de otra cuando operan sobre dichos datos
comunes y son cada una de ellas completamente reversibles, en cuyo
método: dichas operaciones de búsqueda seguidas opcionalmente de
una de dichas operaciones puesta a disposición, de extracción o de
inserción de dichos datos tienen una duración finita o limitada de
ejecución.
2. Método según la reivindicación 1 en el que
dicha operación de inserción incluye una etapa de liberación (1050)
de una entrada en una división de dicha tabla de control si dicha
división es completa, consistiendo dicho método en: recorrer (1160)
dicha división con la finalidad de realizar una elección, siendo
posiblemente interrumpido dicho recorrido si se alcanza un tiempo
de recorrido máximo; seleccionar la entrada (1145) más apropiada
entre las entradas recorridas; liberar dicha entrada (1050).
3. Método según la reivindicación 2 en el que
dicha etapa de selección consiste en seleccionar incondicionalmente
la última de las entradas recorridas de dimensión suficiente para
recibir los nuevos datos.
4. Método según la reivindicación 2 en el que
dicha etapa de recorrido (1160) se caracteriza porque todas
las entradas de dicha división son recorridas exhaustivamente.
5. Método según la reivindicación 4 en el que la
exhaustividad del recorrido se obtiene memorizando (700) la última
dirección consultada después de cada liberación.
6. Sistema y en especial memoria cache (150)
utilizada para poner a disposición de una serie de unidades
centrales de tratamiento (110), datos almacenados en una memoria de
masa (130), comprendiendo dicho sistema medios adaptados para
utilizar el método descrito en cualquiera de las reivindicaciones
anteriores.
7. Soporte legible para ordenador que comprende
las instrucciones de un programa ejecutable por dicho ordenador,
utilizando dicho programa el método según cualquiera de las
reivindicaciones 1 a 5.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US66191305P | 2005-03-16 | 2005-03-16 | |
US661913P | 2005-03-16 | ||
EP05102054 | 2005-03-16 | ||
EP05102054A EP1703404A1 (fr) | 2005-03-16 | 2005-03-16 | Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2312119T3 true ES2312119T3 (es) | 2009-02-16 |
Family
ID=34938990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES06708695T Active ES2312119T3 (es) | 2005-03-16 | 2006-03-08 | Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. |
Country Status (12)
Country | Link |
---|---|
US (1) | US7971000B2 (es) |
EP (2) | EP1703404A1 (es) |
JP (1) | JP4999833B2 (es) |
KR (1) | KR101268437B1 (es) |
CN (1) | CN100594483C (es) |
AT (1) | ATE403187T1 (es) |
AU (1) | AU2006224669B2 (es) |
BR (1) | BRPI0607628A2 (es) |
CA (1) | CA2596290C (es) |
DE (1) | DE602006002032D1 (es) |
ES (1) | ES2312119T3 (es) |
WO (1) | WO2006097424A1 (es) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100489814C (zh) * | 2007-08-01 | 2009-05-20 | 杭州华三通信技术有限公司 | 一种共享缓存系统及实现方法 |
US9436502B2 (en) * | 2010-12-10 | 2016-09-06 | Microsoft Technology Licensing, Llc | Eventually consistent storage and transactions in cloud based environment |
CN103136080B (zh) * | 2013-03-12 | 2016-07-13 | 青岛中星微电子有限公司 | 一种缓存锁定功能的测试方法和装置 |
US10049078B1 (en) * | 2015-06-25 | 2018-08-14 | Amazon Technologies, Inc. | Accessing a memory location using a two-stage hash scheme |
JP6674092B2 (ja) * | 2016-02-10 | 2020-04-01 | 富士通株式会社 | データ管理プログラム、データ管理装置、及びデータ管理方法 |
CN106020999B (zh) * | 2016-05-31 | 2017-10-17 | 广东欧珀移动通信有限公司 | 一种操作系统内部的通信方法及设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7103794B2 (en) * | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
US6044430A (en) * | 1997-12-17 | 2000-03-28 | Advanced Micro Devices Inc. | Real time interrupt handling for superscalar processors |
US6275832B1 (en) * | 1998-09-21 | 2001-08-14 | International Business Machines Corporation | Providing transaction undo without logging |
US6591347B2 (en) * | 1998-10-09 | 2003-07-08 | National Semiconductor Corporation | Dynamic replacement technique in a shared cache |
US7203709B2 (en) * | 2000-05-12 | 2007-04-10 | Oracle International Corporation | Transaction-aware caching for access control metadata |
US6842832B1 (en) * | 2000-08-25 | 2005-01-11 | International Business Machines Corporation | Reclaim space reserve for a compressed memory system |
KR100832222B1 (ko) * | 2001-06-09 | 2008-05-23 | 자프 아게 | 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법 |
US7020746B2 (en) * | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
US7590803B2 (en) * | 2004-09-23 | 2009-09-15 | Sap Ag | Cache eviction |
-
2005
- 2005-03-16 EP EP05102054A patent/EP1703404A1/fr not_active Withdrawn
-
2006
- 2006-03-08 JP JP2008501275A patent/JP4999833B2/ja not_active Expired - Fee Related
- 2006-03-08 CA CA2596290A patent/CA2596290C/fr active Active
- 2006-03-08 DE DE602006002032T patent/DE602006002032D1/de active Active
- 2006-03-08 CN CN200680016430A patent/CN100594483C/zh active Active
- 2006-03-08 EP EP06708695A patent/EP1866770B1/fr active Active
- 2006-03-08 AU AU2006224669A patent/AU2006224669B2/en active Active
- 2006-03-08 ES ES06708695T patent/ES2312119T3/es active Active
- 2006-03-08 WO PCT/EP2006/060567 patent/WO2006097424A1/fr active IP Right Grant
- 2006-03-08 AT AT06708695T patent/ATE403187T1/de not_active IP Right Cessation
- 2006-03-08 BR BRPI0607628-9A patent/BRPI0607628A2/pt active Search and Examination
- 2006-03-08 US US11/886,514 patent/US7971000B2/en active Active
- 2006-03-08 KR KR1020077023763A patent/KR101268437B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US7971000B2 (en) | 2011-06-28 |
EP1866770B1 (fr) | 2008-07-30 |
AU2006224669A1 (en) | 2006-09-21 |
ATE403187T1 (de) | 2008-08-15 |
EP1703404A1 (fr) | 2006-09-20 |
WO2006097424A1 (fr) | 2006-09-21 |
CN100594483C (zh) | 2010-03-17 |
JP2008533600A (ja) | 2008-08-21 |
CA2596290A1 (fr) | 2006-09-21 |
EP1866770A1 (fr) | 2007-12-19 |
CN101185068A (zh) | 2008-05-21 |
KR101268437B1 (ko) | 2013-06-04 |
BRPI0607628A2 (pt) | 2010-04-20 |
US20080183970A1 (en) | 2008-07-31 |
AU2006224669B2 (en) | 2011-09-08 |
JP4999833B2 (ja) | 2012-08-15 |
DE602006002032D1 (de) | 2008-09-11 |
CA2596290C (fr) | 2014-08-19 |
KR20080023285A (ko) | 2008-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2312119T3 (es) | Metodo y sistema para mantener la coherencia de una memoria cache utilizada por multiples procesos independientes. | |
CN100367239C (zh) | 用于数据库系统的考虑了高速缓存的并行控制方案 | |
EP1186999B1 (en) | Method and apparatus for maintaining a linked list | |
CN100444135C (zh) | 用于短暂高速缓存存储的方法和处理器 | |
ES2776975T3 (es) | Tabla de almacenamiento de datos de escaneado completo continuo y almacén de datos distribuido con tiempo de respuesta predecible para carga de trabajo impredecible | |
CN103473250B (zh) | 用于保存文件系统节点的过去状态的方法与系统 | |
US8762425B2 (en) | Managing a data structure | |
CN103106286B (zh) | 元数据的管理方法和装置 | |
ES2309296T3 (es) | Metodo de alamacenamiento de bloques de datos en una memoria. | |
JP6049699B2 (ja) | 暗号化データを管理するためのシステムおよび方法 | |
CN109923534A (zh) | 对具有未提交事务的数据库记录的多版本并发控制 | |
US20100306236A1 (en) | Data Policy Management System and Method for Managing Data | |
CN107038222A (zh) | 数据库缓存实现方法及其系统 | |
CN102486753B (zh) | 构建及允许访问高速缓存的方法、设备及存储系统 | |
ES2764761T3 (es) | Gestión de identificadores únicos en una base de datos | |
ES2350243T3 (es) | Procedimiento para el control de un sistema de datos relacional. | |
CN107391041A (zh) | 一种数据访问方法及装置 | |
ES2958718T3 (es) | Actualización de datos almacenados en caché | |
KR20140031260A (ko) | 캐시 메모리 구조 및 방법 | |
US6460028B1 (en) | System and method for data organization | |
Majumdar | A quick survey of multiversion concurrency algorithms | |
Munro et al. | Dynamic Optimality Refuted--For Tournament Heaps | |
ES2963288T3 (es) | Base de datos con marcas de tiempo relacionadas con el campo | |
Pollack et al. | Managing Scope | |
Freij | Efficient Crash Consistency in Emerging Secure Persistent Memory Architectures |