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 PDF

Info

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
Application number
ES05425277T
Other languages
English (en)
Inventor
Mariano Concilio
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Incard SA
Original Assignee
Incard SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=35044911&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2349953(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Incard SA filed Critical Incard SA
Application granted granted Critical
Publication of ES2349953T3 publication Critical patent/ES2349953T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operations
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements 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)

  1. REIVINDICACIONES
    1. 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. 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. 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. 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. 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. 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. 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. 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 transacciones
    seguras caracterizadas por una pila de transacciones (2)
    dinámicamente deslizante dentro de una memoria intermedia de
    transacciones (1) de dicha parte de memoria no volátil
    5 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 10 superponiéndose parcialmente a la pila de transacciones antes
    de dicha ejecución de una de dichas transacciones seguras.
ES05425277T 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. Expired - Lifetime ES2349953T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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