ES2349953T3 - Pila de transacción para dispositivos electrónicos que incluyen memorias no volátiles con un número limitado de ciclos de escritura. - Google Patents
Pila de transacción para dispositivos electrónicos que incluyen memorias no volátiles con un número limitado de ciclos de escritura. Download PDFInfo
- Publication number
- ES2349953T3 ES2349953T3 ES05425277T ES05425277T ES2349953T3 ES 2349953 T3 ES2349953 T3 ES 2349953T3 ES 05425277 T ES05425277 T ES 05425277T ES 05425277 T ES05425277 T ES 05425277T ES 2349953 T3 ES2349953 T3 ES 2349953T3
- Authority
- ES
- Spain
- Prior art keywords
- transaction
- transactions
- stack
- buffer
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operations
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Procedimiento para implementar una pila de transacciones (2) en un dispositivo electrónico que incluye una parte de memoria no volátil con ciclo de escritura limitado (5), del tipo que comprende el almacenamiento de datos no volátiles durante transacciones seguras caracterizado porque proporciona una pila de transacciones (2) dinámicamente deslizante dentro de una memoria intermedia de transacciones (1) de dicha parte de memoria no volátil después de la ejecución de una de dichas transacciones seguras, teniendo dicha pila de transacciones (2) un tamaño menor que el tamaño de dicha memoria intermedia de transacciones (1), dicha pila de transacciones (2) después de la ejecución de una de dichas transacciones seguras superponiéndose parcialmente a la pila de transacciones antes de dicha ejecución de una de dichas transacciones seguras.
Description
Campo de aplicación
La presente invención se refiere a una pila de
transacciones para dispositivos electrónicos que incluyen
memoria no volátil con ciclo de escritura limitado.
En particular, la invención se refiere a dispositivos
del tipo anterior y que comprenden un procedimiento para
almacenar datos no volátiles durante transacciones seguras,
siendo dichos datos no volátiles archivos, contraseñas,
claves criptográficas, certificados, perfiles de usuarios,
así como variables de estado de sistema operativos, variables
de estado de aplicaciones, el registro de aplicaciones,
aplicaciones ejecutables, etcétera.
Antecedentes de la invención
Como es bien sabido, un dispositivo incorporado como
una tarjeta de circuito integrado usa una parte de memoria de
semiconductor de estado sólido para almacenar datos no
volátiles.
La categoría de los datos no volátiles incluye
ejecutables de aplicación, archivos, contraseñas, claves
criptográficas, certificados, perfiles de usuarios, así como
variables de estado de sistemas operativos, variables de
estado de aplicaciones, el registro de aplicaciones,
etcétera. El contenido de todos los datos anteriores es
variable durante la fase operativa del dispositivo pero
conservarán su valor durante el apagado.
Por el contrario, el valor de los datos volátiles se
pierde durante una fase de apagado y se inicializa en el
arranque del dispositivo. La categoría de datos volátiles
incluye la pila de la CPU, memorias intermedias para
operaciones de entrada/salida, memorias intermedias para
cálculos temporales, etcétera.
La memoria no volátil asegura que el valor de los datos
no volátiles no se pierde después de una desconexión regular
del dispositivo, es decir, cuando se produce la desactivación
eléctrica en un estado inactivo del dispositivo. Este es el
caso típico, cuando la desactivación es activada por la
lógica del terminal al que está conectado el dispositivo.
Por otra parte, si se produce una desactivación
eléctrica accidental durante la ejecución de una aplicación,
específicamente durante una operación de actualización de
datos no volátiles complejos, es posible que el valor de los
datos se deje en un estado inconsistente que podría
comprometer, completa o parcialmente, el funcionamiento o la
seguridad del dispositivo en las sesiones de encendido
sucesivas.
Para enfrentarse a este problema, los sistemas
operativos proporcionan el conocido mecanismo de transacción.
El mecanismo de transacción proporciona a la capa de
aplicación los instrumentos para agrupar juntas un número
arbitrario de operaciones de escritura, estableciendo que
tienen que considerarse como una única operación de escritura
atómica respecto a eventos como un apagado. La aplicación
tiene que marcar todas las operaciones de escritura entre dos
instrucciones. Podemos decir, en un pseudolenguaje simple,
que todas las operaciones de escritura deben estar incluidas
entre dos instrucciones, concretamente “IniciarTransaccion”
(del inglés ”BeginTransaction”)y“AcometerTransaccion” (del
inglés ”CommitTransaction”), como se muestra esquemáticamente
en la Figura 1.
En caso de apagado durante la ejecución del código
incluido entre dichas dos instrucciones IniciarTransaccion y
AcometerTransaccion, el sistema operativo asegura que se
restaura el valor de todos los datos no volátiles afectados
por las “Actualizaciones seguras”, en el siguiente arranque
del dispositivo, al valor que tenían antes de la sentencia
IniciarTransaccion.
Las implementaciones avanzadas permiten transacciones
multinivel, con niveles anidados de instrucciones
IniciarTransaccion y AcometerTransaccion.
El mecanismo de transacción puede implementarse usando
una pila de transacciones, como se aclarará mediante la
siguiente descripción, apoyada por la Figura 2.
En esta Figura, los posibles estados de ejecución de
una transacción, que comprende dos Operaciones Seguras, están
indicados con 10. En particular, en la Figura 2a la
transacción está en un estado “Estado inicial”, en la Figura
2b está en un estado “Comenzar transacción”, en la Figura 2c
en un estado “Actualización segura”, en 2d aún está en el
estado “Actualización segura” y, por último, en 2e está en un
estado “Asignar transacción”.
En la Figura 2 la memoria no volátil también se muestra
esquemáticamente y se indica con el número de referencia 20;
sus valores, durante todos los estados posibles de ejecución
de la transacción, se indican dentro de las celdas de la
memoria no volátil 20. En particular, la dirección inicial de
la memoria no volátil 20 en la que se escribirán datos por la
primera operación segura se indica con A1 y la longitud de
los datos que han de escribirse durante la primera operación
segura con L1.
Igualmente, la dirección inicial de la memoria no
volátil 20 en la que se escribirán datos por la segunda
operación segura se indica con L2. Por último, la pila de
transacciones se indica con 30, y el puntero Cima a la pila
de transacciones con 40.
La pila de transacciones 30 se limpia en la invocación
de IniciarTransaccion cuando la transacción está en el
“Estado inicial”. Cada operación de Actualización segura,
como se muestra en las Figuras 2c y 2d, añade un registro
sobre la pila de transacciones 30, que contiene la
información para recuperar el valor original de los datos
después de un apagado inesperado potencial (típicamente: la
dirección/tamaño/valor de los datos). En la invocación de
AcometerTransaccion la pila de transacciones 30 se vuelve a
limpiar.
La Figura 3 muestra la recuperación, en el arranque del
dispositivo, de los valores de los datos originales en caso
de apagado del dispositivo durante la primera operación de
Actualización segura. En particular, en la Figura 3a se
muestra esquemáticamente el arranque del dispositivo después
de un apagado incorrecto que causó la pérdida de algunos
datos dentro de la memoria no volátil 20, indicando los datos
perdidos con el símbolo “???”.
En la Figura 3b una transacción de restauración (en
inglés “Rollback Transaction”) restaura los datos perdidos a
su posición original, recuperando los valores correctos de la
pila de transacciones 30.
La Figura 5, en cambio, ofrece un ejemplo del uso de la
pila de transacciones 30 en caso de ocho transacciones
consecutivas, que contienen un número diferente de
operaciones de Actualización segura. Las transacciones
indicadas con los números 1, 3, 5, 6, 7, 8 contienen sólo una
actualización, la transacción número 2 contiene 2
actualizaciones y la transacción número 4 contiene 3
actualizaciones. La Figura 6 representa un gráfico que
muestra el número total de operaciones de escritura a
continuación de las ocho transacciones mostradas
esquemáticamente en la figura 5.
Si la desactivación del dispositivo es regular, no hay
ejecución de aplicación en curso que, en el arranque del
dispositivo, la pila de transacciones 30 esté siempre vacía.
Por otra parte, si el dispositivo es desactivado mientras una
aplicación está funcionando y el flujo de ejecución está
entre las dos instrucciones IniciarTransaccion y
AcometerTransaccion, entonces el sistema operativo, en el
siguiente arranque, encuentra la pila de transacciones 30 NO
vacía y lleva a cabo las operaciones de recuperación según
los registros en la pila de transacciones. Después de eso, se
limpia la pila.
Obsérvese que la implementación de la pila de
transacciones 30 necesita una variable no volátil para
almacenar el puntero a la parte superior de la pila de
transacciones 30 (Cima en lo que viene a continuación). Por
supuesto, el valor de Cima es en sí mismo un dato sensible
respecto a un evento de apagado accidental. Por eso, se
requiere un mecanismo dedicado, independiente de la pila de
transacciones, para asegurar la “atomicidad” de la variable
Cima. Esto se obtiene típicamente mediante una memoria
intermedia circular sin punteros dedicada. Esta solución es
viable porque la variable Cima es un dato único, corto y de
tamaño predefinido (2 ó 4 bytes). La Figura 4 muestra un
ejemplo de un mecanismo de actualización atómico para el
puntero Cima, por medio de una memoria intermedia circular
sin punteros de 5 franjas. Cada franja está etiquetada con un
indicador binario (“0” o “1”). En cada momento, el valor
actual de Cima está contenido en la primera franja etiquetada
con “0”, de izquierda a derecha.
En el estado de la técnica, la memoria no volátil 20
permite un número limitado de accesos de escritura. Por
encima de este límite, el “tiempo de retención de datos” de
la memoria no volátil 20 disminuye a valores no aceptables
para ningún propósito aplicativo. Por ejemplo, el número de
operaciones de escritura permitidas para memorias EEPROM o
Flash está comprendido típicamente entre 100.000 y 1.000.000,
independientemente de cada celda de memoria.
Esta limitación tiene un profundo impacto sobre la
implementación estándar del mecanismo de transacción, ya que
cualquier operación de escritura segura realizada por las
aplicaciones tiene el efecto secundario de una nueva
operación de escritura en la pila de transacciones 30.
Particularmente, la primera operación de escritura segura de
cualquier transacción (las instrucciones ActualizacionSegura
1 en la Figura 5) causa un acceso de escritura al primer byte
de la pila de transacciones 30. De este modo, el número
máximo de accesos de escritura a este byte delimita el número
de operaciones de actualización segura permitidas a las
aplicaciones, independientemente de dónde escriben las
aplicaciones. Aunque el dispositivo está garantizado para
100.000 operaciones de escritura sobre cada byte único de la
memoria no volátil 20, las aplicaciones no pueden realizar
más de 100.000 actualizaciones seguras, incluso sobre
diferentes áreas de la memoria no volátil, porque en caso
contrario, los primeros bytes de la pila de transacciones 30
podrían dañarse.
Una solución a esta limitación podría ser una
implementación de la pila de transacciones 30 en una memoria
intermedia circular, donde todos los bytes sean estresados de
la misma manera. No obstante, una implementación circular en
mucho más difícil que una lineal debido a la naturaleza del
mecanismo de transacción: cada transacción incluye uno o más
registros, con diferentes longitudes y anidados en caso de
transacciones anidadas. Por otra parte, la reutilización de
la implementación de una pila lineal para una pila circular
es bastante ardua.
El documento US2005/055498A1 (BECKERT RICHARD DENNIS
et al.) del 10 de marzo de 2005 (2005-03-10) desvela un
procedimiento para mantener datos críticos del sistema en un
dispositivo electrónico escribiendo dichos datos críticos en
una parte de memoria no volátil. Desvela el problema de
nivelación de desgaste, teniendo dicha parte de memoria no
volátil un ciclo de escritura limitado. El problema de
nivelación de desgaste se resuelve rastreando el bloque libre
actual y el desplazamiento de la última página escrita y
escribiendo la siguiente página en un bloque en una dirección
física siempre mayor que la dirección de la página previa
escrita.
El problema de base de la presente invención es el de
diseñar un dispositivo electrónico que incluya memoria no
volátil que tenga una pila de transacciones capaz de estresar
no sólo los primeros bytes, durante las operaciones de
escritura sobre la pila de transacciones.
Resumen de la invención
La invención se expone en las reivindicaciones 1 y 8.
La idea de la solución en la que está basada la
invención es la de proporcionar una pila de transacciones 2
del tipo descrito caracterizada por el hecho de que se usan
todos los bytes que pertenecen a la memoria intermedia de
transacciones 2 siempre que sea posible.
Basándose en esta idea de solución el problema técnico
se resuelve según la presente invención mediante un
procedimiento como el indicado previamente y caracterizado
por el hecho de que dicha pila de transacciones 2 es
dinámicamente deslizante dentro de una memoria intermedia de
transacciones 1, teniendo la pila de transacciones 2 un
tamaño menor que el tamaño de dicha memoria intermedia de
transacciones 1.
Más características y las ventajas de la pila de
transacciones deslizante 2 y del procedimiento de escritura
de memoria no volátil según la presente invención resultarán
evidentes a partir de la siguiente descripción de una
realización de los mismos, hecha con referencia a los dibujos
adjuntos, ofrecidos con propósito indicativo y no limitador.
Breve descripción del dibujo
La Figura 1 describe en un lenguaje de alto nivel la
ejecución de operaciones seguras basada en el procedimiento
de IniciarTransaccion – AcometerTransaccion, según la técnica
anterior.
Las Figuras 2a, 2b, 2c, 2d, 2e son representaciones
esquemáticas de la ejecución de una operación de transacción
respectivamente en el estado “Inicial”, “ Iniciar
Transaccion”, “Actualizacion Segura”, “Actualizacion Segura”,
“Realizar Transaccion”, según la técnica anterior.
Las Figuras 3a y 3b son representaciones esquemáticas
de una reversión de valores originales de datos no volátiles,
respectivamente en estado “Inicial” y una transacción de
restauración “Transaccion De Restauracion”, según la técnica
anterior.
La Figura 4 es una representación esquemática de una
actualización atómica del puntero Cima por medio de una
memoria intermedia sin punteros, según la técnica anterior.
La Figura 5 es una representación esquemática de varias
transacciones de operaciones seguras, según una
implementación estándar.
La Figura 6 es un diagrama que representa las
operaciones de escritura a lo largo de la pila de
transacciones según las transacciones de la Figura 5 y la
técnica anterior.
La Figura 7 es una representación esquemática de varias
transacciones de operaciones seguras, según la presente
invención.
La Figura 8 es un diagrama que representa las
operaciones de escritura a lo largo de la memoria intermedia
de transacciones según las transacciones de la Figura 7.
Descripción detallada
Con referencia a los dibujos de la Figura 7, con el
número de referencia 1 se muestra global y esquemáticamente
una memoria intermedia de transacciones realizada según la
presente invención. En la misma Figura, una pila de
transacciones está indicada con 2. Basándose en la presente
invención, el problema técnico se resuelve mediante un
procedimiento como el indicado previamente y caracterizado
por el hecho de que dicha pila de transacciones 2 es
dinámicamente deslizante dentro de dicha memoria intermedia
de transacciones 1. Este efecto deslizante se obtiene
recolocando la parte inferior de la dirección inicial 4 de
dicha pila de transacciones 2 en una nueva posición dentro de
la memoria intermedia de transacciones 1, después de la
ejecución de dicha transacción segura.
El puntero base 4 se desplaza a lo largo de dicha
memoria intermedia de transacciones 1 después de una
transacción de comienzo de dicha transacción segura,
recolocando su dirección en una ubicación predeterminada
incluida entre la dirección inicial de dicha memoria
intermedia de transacciones 1 y la ubicación obtenida
sumando, a dicha dirección inicial, la diferencia entre las
longitudes de dicha memoria intermedia de transacciones 1 y
dicha pila de transacciones 2.
El puntero base 4 se coloca en una posición específica
durante la fase de inicialización de dicho dispositivo 5,
según una regla de ubicación predeterminada.
Alternativamente, el puntero base 4 se desplaza a lo
largo de dicha memoria intermedia de transacciones 1 después
de una transacción de comienzo de dicha transacción segura,
recolocando su dirección en una ubicación aleatoria incluida
entre la dirección inicial de dicha memoria intermedia de
transacciones 1 y la ubicación obtenida sumando, a dicha
dirección inicial, la diferencia entre las longitudes de
dicha memoria intermedia de transacciones 1 y dicha pila de
transacciones 2.
La pila de transacciones 2 se desplaza cíclicamente a
lo largo de dicha memoria intermedia de transacciones 1 por
medio de la colocación de dicho puntero base 4 en diferentes
posiciones a lo largo de la memoria intermedia de
transacciones 1 después de cada transacción de comienzo y
recolocando cíclicamente dicho puntero base 4 en el comienzo
de dicha memoria intermedia de transacciones 1.
En la Figura 7, la posición inicial de la pila de
transacciones 2 dentro de la memoria intermedia de
transacciones 1 está indicada por un puntero base 4.
En la Figura 7, el puntero base 2 se coloca, durante la
fase de arranque del dispositivo, en el inicio de la memoria
intermedia de transacciones 1 de manera que la parte restante
de la memoria intermedia de transacciones 1 no se usa para la
operación de escritura.
En otras palabras, si indicamos la posición inicial de
la memoria intermedia de transacciones 1 con la coordenada 0
y la posición final con la coordenada 2L, podemos hacer
referencia a la posición inicial y final de la memoria
intermedia de transacciones 2 con la coordenada 0 y L
respectivamente.
Cuando se produce una actualización segura, se escribe
la pila de transacciones 2 para almacenar valores de la
memoria no volátil que han de ser actualizados; en
particular, se escriben las primeras celdas de memoria de la
pila de transacciones 2; en otras palabras, se escriben las
celdas en la posición absoluta con coordenadas 0, 1, 2, 3, 4,
5, 6.
Después de la ejecución de la primera actualización
segura, el puntero base 4 se mueve, por ejemplo, dos celdas
de memoria a través de la memoria intermedia de transacciones
1 de manera que la posición inicial y final de la pila de
transacciones 2 cambia respectivamente en 2 y L+2.
En otras palabras, la pila de transacciones 2 se
desplaza a las nuevas celdas de memoria libres dentro de la
memoria intermedia de transacciones 1, que son celdas en la
posición absoluta con coordenada de 2 a L+2.
Cuando se produce una segunda actualización segura, la
pila de transacciones 2 se escribe una vez más para almacenar
valores de la memoria no volátil que han de ser actualizados;
las primeras celdas de memoria de la pila de transacciones 2,
esta vez, empiezan desde la posición absoluta con la
coordenada 2; en otras palabras, se escriben las celdas en la
posición absoluta con coordenada 2, 3, 4, 5, 6, 7, 8, 9, 10,
11 y las celdas con posiciones absolutas 0 y 1 ya no son
estresadas durante esta segunda actualización segura.
Según la presente invención, la asignación de la pila
de transacciones 2 se obtiene desplazando el puntero base 4
dentro de la memoria no volátil dedicada de la memoria
intermedia de transacciones 1. La pila de transacciones 2 es
reasignada en una nueva posición de la memoria intermedia de
transacciones 1 después de cualquier evento
AcometerTransaccion o, alternativamente, IniciarTransaccion.
Más en particular, la invención puede implementarse de
diferentes modos convenientes. Una primera realización de la
invención está basada en una fase de inicialización del
dispositivo, como una tarjeta de circuito integrado, que
consiste, como se mostró anteriormente, en colocar la pila de
- transacciones 2 al comienzo de la memoria intermedia
- de
- transacciones 1.
- A
- continuación de la fase de inicialización, se
producen la fase operativa y un evento AcometerTransaccion.
Después de eso, el puntero base 4 se desplaza hacia delante
recolocando su dirección en una nueva ubicación incluida
entre la dirección inicial de dicha memoria intermedia de
transacciones 1 y una dirección predeterminada, Max_addr. En
particular, la dirección Max_addr se obtiene sumando, a dicha
dirección inicial de la memoria intermedia de transacciones
1, la diferencia entre las longitudes de dicha memoria
intermedia de transacciones 1 y dicha pila de transacciones
2. Cuando el puntero base 4 llega al final de la memoria
intermedia de transacciones 1, se le hace retroceder al
comienzo de la memoria intermedia de transacciones 1.
En otra realización de la presente invención siempre
está presente una fase de inicialización de la tarjeta de
circuito integrado. Esta fase consiste en la colocación de la
posición del puntero base 4 en alguna posición dentro de la
memoria intermedia de transacciones 1, predefinida o generada
aleatoriamente e incluida entre la dirección inicial de la
memoria intermedia de transacciones 1 y Max_addr. Luego sigue
una fase operativa y, por último, la pila de transacciones 2
puede ser reasignada en una nueva posición a continuación de
un evento IniciarTransaccion en lugar de un evento
AcometerTransaccion.
El nuevo desplazamiento de la pila de transacciones 2
puede seguir un ley predeterminada (lineal o no lineal), que
es función del desplazamiento anterior.
El nuevo desplazamiento de la pila de transacciones 2
puede generarse aleatoriamente según una ley de distribución
predefinida (uniforme o no uniforme), es decir, una función
de la posición a lo largo de la memoria intermedia de
transacciones 1.
Tal como se explicó, la Figura 7 muestra una primera
realización de la invención, con una pila de transacciones 2
dentro de una memoria intermedia de transacciones 1,
inicialmente colocada en el comienzo de la memoria intermedia
de transacciones 1. El gráfico de la Figura 8 ofrece la
distribución sobre los accesos de escritura a lo largo de la
memoria intermedia de transacciones 1 según el ejemplo de la
Figura 7.
La implementación de una pila de transacciones 2
contenida en una memoria intermedia de transacciones 1
requiere la gestión de dos punteros, un puntero Cima 6, que
indica la dirección de la primera ubicación libre dentro de
la pila de transacciones 2 para operaciones de escritura, y
un puntero base 4, que indica la dirección inicial de la pila
de transacciones 2 dentro de la memoria intermedia de
transacciones 1 en la que la pila de transacciones 2 será
recolocada después de un evento AcometerTransaccion. Estos
dos datos son sensibles con respecto al evento de apagado y
deberían ser almacenados en una memoria intermedia circular
- sin punteros
- dedicada, como el puntero Cima de la
- implementación estándar.
- Durante la ejecución
- de una única transacción, el
comportamiento del mecanismo de transacción propuesto es el
mismo que el de la implementación estándar, tanto en cuanto a
lógica (algoritmos/estructuras de datos para almacenar los
registros) como en cuanto a eficiencia (velocidad y número de
operaciones de actualización). La única diferencia es que la
dirección base del procedimiento no es fija sino que es la
dirección a la que apunta el puntero base 4. Esto permite una
reutilización sencilla y extensa de la implementación
estándar, con mejoras muy limitadas y fiables.
En caso de un evento AcometerTransaccion, el coste
necesario para asignar la nueva posición para la pila de
transacciones 2 es sólo la actualización del par puntero base
4 – puntero Cima 6 a la nueva dirección. Este esfuerzo es
comparable con el esfuerzo para recolocar el puntero Cima 6
en la implementación estándar. El corrimiento de la pila de
transacciones en la nueva posición es muy eficaz porque la
pila de transacciones se desplaza mientras está vacía, así
que no se requiere una extensa copia de datos.
Las ventajas del mecanismo propuesto respecto a la
implementación estándar son evidentes: los accesos de
escritura a la memoria no volátil de la memoria intermedia de
transacciones 1 no se concentran en los primeros bytes sino
que se extienden por un gran intervalo de direcciones,
definido por los valores del puntero base 4, como queda
subrayado por el gráfico de la Figura 8.
Además, la implementación está basada en una pila de
transacciones lineal y dinámica, permitiendo una fácil y
extensa reutilización de la implementación estándar que está
basada en una pila de transacciones fija y lineal,
considerablemente más fácil de usar con respecto a soluciones
de pila circular.
Claims (8)
- REIVINDICACIONES1. Procedimiento para implementar una pila de transacciones (2) en un dispositivo electrónico que incluye una parte de memoria no volátil con ciclo de escritura limitado (5), del tipo que comprende el almacenamiento de datos no volátiles durante transacciones seguras caracterizado porque proporciona una pila de transacciones(2) dinámicamente deslizante dentro de una memoria intermedia de transacciones (1) de dicha parte de memoria no volátil después de la ejecución de una de dichas transacciones seguras, teniendo dicha pila de transacciones (2) un tamaño menor que el tamaño de dicha memoria intermedia de transacciones (1), dicha pila de transacciones (2) después de la ejecución de una de dichas transacciones seguras superponiéndose parcialmente a la pila de transacciones antes de dicha ejecución de una de dichas transacciones seguras.
- 2. Procedimiento según la reivindicación 1, caracterizado por el hecho de que la parte inferior de la dirección inicial(4) de dicha pila de transacciones (2) se recoloca en una posición nueva dentro de la memoria intermedia de transacciones (1).
- 3. Procedimiento según la reivindicación 1, caracterizado por el hecho de que la parte inferior de la dirección inicial(4) de ducha pila de transacciones (2) se coloca al comienzo de dicha memoria intermedia de transacciones (1) durante la fase de inicialización de dicho dispositivo (5).
-
- 4.
- Procedimiento según la reivindicación 2, caracterizado por el hecho de que dicho puntero base (4) se desplaza a lo largo de dicha memoria intermedia de transacciones (1), después de una transacción de comienzo de dicha transacción segura, recolocando su dirección en una ubicación predeterminada incluida entre: -la dirección inicial de dicha memoria intermedia de
transacciones (1) y -la ubicación obtenida sumando, a dicha dirección inicial, la diferencia entre las longitudes de dicha memoria intermedia de transacciones (1) y dicha pila de transacciones (2). -
- 5.
- Procedimiento según la reivindicación 3, caracterizado por el hecho de que dicho puntero base (4) se coloca en una posición específica durante la fase de inicialización de dicho dispositivo (5), según una regla de ubicación predeterminada.
-
- 6.
- Procedimiento según la reivindicación 2, caracterizado por el hecho de que dicho puntero base (4) se desplaza a lo largo de dicha memoria intermedia de transacciones (1) después de una transacción de comienzo de dicha transacción segura, recolocando su dirección en una ubicación aleatoria incluida entre: -la dirección inicial de dicha memoria intermedia de transacciones (1) y -la ubicación obtenida sumando, a dicha dirección inicial, la diferencia entre las longitudes de dicha memoria intermedia de transacciones (1) y dicha pila de transacciones (2).
-
- 7.
- Procedimiento según la reivindicación 2 caracterizado por el hecho de que dicha pila de transacciones (2) se desplaza cíclicamente a lo largo de dicha memoria intermedia de transacciones (1) por medio de la colocación de dicho puntero base (4) en diferentes posiciones a lo largo de la memoria intermedia de transacciones (1) después de cada transacción de comienzo y recolocando cíclicamente dicho puntero base (4) al comienzo de dicha memoria intermedia de transacciones (1).
-
- 8.
- Dispositivo electrónico que incluye una parte de memoria no volátil con ciclo de escritura limitado (5) y en
el que se almacenan datos no volátiles durante transaccionesseguras caracterizadas por una pila de transacciones (2)dinámicamente deslizante dentro de una memoria intermedia detransacciones (1) de dicha parte de memoria no volátil5 después de la ejecución de una de dichas transaccionesseguras, teniendo dicha pila de transacciones (2) un tamañomenor que el tamaño de dicha memoria intermedia detransacciones (1), dicha pila de transacciones (2) después dela ejecución de una de dichas transacciones seguras 10 superponiéndose parcialmente a la pila de transacciones antesde dicha ejecución de una de dichas transacciones seguras.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP05425277A EP1717665B1 (en) | 2005-04-29 | 2005-04-29 | Transaction stack for electronic devices including non volatile memory with limited amount of writing cycles |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2349953T3 true ES2349953T3 (es) | 2011-01-13 |
Family
ID=35044911
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES05425277T Expired - Lifetime ES2349953T3 (es) | 2005-04-29 | 2005-04-29 | Pila de transacción para dispositivos electrónicos que incluyen memorias no volátiles con un número limitado de ciclos de escritura. |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US7861016B2 (es) |
| EP (1) | EP1717665B1 (es) |
| AT (1) | ATE470896T1 (es) |
| BR (1) | BRPI0611161A2 (es) |
| DE (1) | DE602005021753D1 (es) |
| ES (1) | ES2349953T3 (es) |
| PT (1) | PT1717665E (es) |
| WO (1) | WO2006117146A2 (es) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10846279B2 (en) | 2015-01-29 | 2020-11-24 | Hewlett Packard Enterprise Development Lp | Transactional key-value store |
| KR102570367B1 (ko) * | 2016-04-21 | 2023-08-28 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5003471A (en) * | 1988-09-01 | 1991-03-26 | Gibson Glenn A | Windowed programmable data transferring apparatus which uses a selective number of address offset registers and synchronizes memory access to buffer |
| DE69817543T2 (de) * | 1998-06-08 | 2004-06-24 | International Business Machines Corp. | Automatische Datenrückgewinnung in Chipkarten |
| US6862651B2 (en) * | 2000-12-20 | 2005-03-01 | Microsoft Corporation | Automotive computing devices with emergency power shut down capabilities |
| US7325082B1 (en) * | 2004-08-25 | 2008-01-29 | Unisys Corporation | System and method for guaranteeing transactional fairness among multiple requesters |
-
2005
- 2005-04-29 ES ES05425277T patent/ES2349953T3/es not_active Expired - Lifetime
- 2005-04-29 EP EP05425277A patent/EP1717665B1/en not_active Expired - Lifetime
- 2005-04-29 PT PT05425277T patent/PT1717665E/pt unknown
- 2005-04-29 AT AT05425277T patent/ATE470896T1/de active
- 2005-04-29 DE DE602005021753T patent/DE602005021753D1/de not_active Expired - Lifetime
-
2006
- 2006-04-28 WO PCT/EP2006/003981 patent/WO2006117146A2/en not_active Ceased
- 2006-04-28 BR BRPI0611161A patent/BRPI0611161A2/pt not_active Application Discontinuation
- 2006-04-28 US US11/912,945 patent/US7861016B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| ATE470896T1 (de) | 2010-06-15 |
| US20080195773A1 (en) | 2008-08-14 |
| BRPI0611161A2 (pt) | 2019-02-26 |
| DE602005021753D1 (de) | 2010-07-22 |
| WO2006117146A2 (en) | 2006-11-09 |
| US7861016B2 (en) | 2010-12-28 |
| PT1717665E (pt) | 2010-10-06 |
| EP1717665B1 (en) | 2010-06-09 |
| EP1717665A1 (en) | 2006-11-02 |
| WO2006117146A3 (en) | 2007-01-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Jayakumar et al. | Quickrecall: A low overhead hw/sw approach for enabling computations across power cycles in transiently powered computers | |
| ES2824830T3 (es) | Procedimiento de actualización de software para un dispositivo integrado | |
| JP4188744B2 (ja) | メモリカード | |
| ES2331323T3 (es) | Metodo de compresion para gestionar el almacenamiento de datos persistentes desde una memoria no volatil a una memoria intermedia de copia de seguridad. | |
| JP5683023B2 (ja) | 不揮発性一時データの処理 | |
| US9612954B2 (en) | Recovery for non-volatile memory after power loss | |
| JPH11120781A5 (es) | ||
| EP2294579A2 (en) | Nand memory | |
| CN101681317B (zh) | 存储器系统 | |
| DE60118168D1 (de) | Navigationssystem und speichermedium, um positionsdaten von spezifischen einrichtungen zu speichern | |
| TWI609323B (zh) | 資料儲存方法及其系統 | |
| KR20010072128A (ko) | 비휘발성 메모리를 갱신하기 위한 방법 및 장치 | |
| US8775758B2 (en) | Memory device and method for performing a write-abort-safe firmware update | |
| WO2022126470A1 (zh) | Flash数据掉电保护方法及设备 | |
| KR20100107453A (ko) | 1회 기록 메모리 디바이스와 다수 회 기록 메모리 디바이스를 포함하는 컴퓨터용 스토리지 서브 시스템 및 관련 방법 | |
| ES2396800T3 (es) | Microprocesador o microcontrolador potenciado | |
| KR102276774B1 (ko) | 비휘발성 메모리들을 위한 안티-테어링 보호 시스템 | |
| ES2231559T3 (es) | Procedimiento para la ampliacion virtual de la memoria de apilamiento de un soporte de datos portatil. | |
| US20140143632A1 (en) | Method to Extend Data Retention for Flash Based Storage in a Real Time Device Processed on Generic Semiconductor Technology | |
| ES2349953T3 (es) | Pila de transacción para dispositivos electrónicos que incluyen memorias no volátiles con un número limitado de ciclos de escritura. | |
| JP5885651B2 (ja) | アドレス生成回路 | |
| EP2323135A1 (en) | Method and apparatus for emulating byte wise programmable functionality into sector wise erasable memory | |
| JP3998452B2 (ja) | 不揮発性メモリの制御回路 | |
| ES2368829T3 (es) | Procedimiento y dispositivo para administrar un dispositivo de memoria. | |
| ES2385468T3 (es) | Procedimiento y sistema para la optimización de la gestión de ficheros de registro |