FR3053810A1 - Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile - Google Patents

Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile Download PDF

Info

Publication number
FR3053810A1
FR3053810A1 FR1656413A FR1656413A FR3053810A1 FR 3053810 A1 FR3053810 A1 FR 3053810A1 FR 1656413 A FR1656413 A FR 1656413A FR 1656413 A FR1656413 A FR 1656413A FR 3053810 A1 FR3053810 A1 FR 3053810A1
Authority
FR
France
Prior art keywords
volatile memory
data
modified
memory
transaction
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.)
Withdrawn
Application number
FR1656413A
Other languages
English (en)
Inventor
Frederic Amiel
Mohamed Samri
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.)
Rambus Inc
Original Assignee
Inside Secure 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
Application filed by Inside Secure SA filed Critical Inside Secure SA
Priority to FR1656413A priority Critical patent/FR3053810A1/fr
Publication of FR3053810A1 publication Critical patent/FR3053810A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/177Smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/178Electronic token or RFID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

L'invention concerne un procédé d'exécution d'une transaction par un microcircuit comprenant un processeur (PRC), une mémoire volatile (M3) et une mémoire non volatile (M2), le procédé comprenant des étapes consistant à : charger dans la mémoire volatile une table de données d'entête (HDT) active lue dans la mémoire non volatile, et comprenant des adresses de blocs de données stockés dans la mémoire non volatile, charger dans la mémoire volatile un bloc de données (OBj), exécuter une transaction durant laquelle le bloc de données est modifié dans la mémoire volatile, copier à la suite d'une validation de la transaction, le bloc de données modifié dans la mémoire non volatile, modifier la table de données d'entête active dans la mémoire volatile en y inscrivant une adresse d'écriture dans la mémoire non volatile, du bloc de données modifié, et copier dans la mémoire non volatile la table de données d'entête modifiée lue dans la mémoire volatile.

Description

® RÉPUBLIQUE FRANÇAISE
INSTITUT NATIONAL DE LA PROPRIÉTÉ INDUSTRIELLE © N° de publication : 3 053 810 (à n’utiliser que pour les commandes de reproduction)
©) N° d’enregistrement national : 16 56413
COURBEVOIE © Int Cl8 : G 06 F12/02 (2017.01), G 06 F 9/44
DEMANDE DE BREVET D'INVENTION A1
(§) Date de dépôt : 05.07.16. @) Priorité : (© Demandeur(s) : INSIDE SECURE Société anonyme — FR.
©) Date de mise à la disposition du public de la demande : 12.01.18 Bulletin 18/02. @ Inventeur(s) : AMIEL FREDERIC et SAMRI MOHAMED.
©) Liste des documents cités dans le rapport de recherche préliminaire : Se reporter à la fin du présent fascicule
(© Références à d’autres documents nationaux apparentés : (© Titulaire(s) : INSIDE SECURE Société anonyme.
©) Demande(s) d’extension : (© Mandataire(s) : OMNIPAT Société anonyme.
PROCEDE DE TRANSACTION COMPRENANT DES OPERATIONS D'ECRITURE DE DONNEES DANS UNE MEMOIRE NON VOLATILE.
FR 3 053 810 - A1
L'invention concerne un procédé d'exécution d'une transaction par un microcircuit comprenant un processeur (PRC), une mémoire volatile (M3) et une mémoire non volatile (M2), le procédé comprenant des étapes consistant à: charger dans la mémoire volatile une table de données d'entête (HDT) active lue dans la mémoire non volatile, et comprenant des adresses de blocs de données stockés dans la mémoire non volatile, charger dans la mémoire volatile un bloc de données (OBj), exécuter une transaction durant laquelle le bloc de données est modifié dans la mémoire volatile, copier à la suite d'une validation de la transaction, le bloc de données modifié dans la mémoire non volatile, modifier la table de données d'entête active dans la mémoire volatile en y inscrivant une adresse d'écriture dans la mémoire non volatile, du bloc de données modifié, et copier dans la mémoire non volatile la table de données d'entête modifiée lue dans la mémoire volatile.
Figure FR3053810A1_D0001
Figure FR3053810A1_D0002
PROCEDE DE TRANSACTION COMPRENANT DES OPERATIONS D’ECRITURE DE DONNEES DANS UNE MEMOIRE NON VOLATILE
La présente invention concerne la gestion d’une transaction dans un système de transaction ayant des ressources limitées, tel qu’une carte à microcircuit mettant en œuvre par exemple un environnement Java Card™. La présente invention vise en particulier à minimiser la taille mémoire et le nombre d’accès en écriture à une mémoire non volatile dans un tel système. En effet, les accès en écriture à une mémoire non volatile comme les mémoires EEPROM ou Flash sont particulièrement coûteux en temps de traitement.
La figure 1 représente un exemple d’architecture de carte à microcircuit, par exemple agencé sur un support portable HD tel qu’une carte plastique ou tout autre support. La carte à microcircuit comporte un microcircuit comprenant un microprocesseur PRC, un circuit d'entrée/sortie IOC, des mémoires M1, M2, M3 reliées au microprocesseur par un bus de données et d'adresse et, optionnellement, un coprocesseur CP1 de calcul cryptographique ou un accélérateur arithmétique, et un générateur RGN de nombre aléatoire. La mémoire M1 est une mémoire morte ou mémoire ROM (Read-Only Memory) contenant le système d'exploitation du microprocesseur (Operating System). La mémoire M2 est une mémoire non volatile, par exemple une mémoire EEPROM ou Flash, contenant des programmes applicatifs et des données non volatiles. La mémoire M3 est une mémoire de type RAM (Random Access Memory).
Le circuit d'interface de communication IOC peut être du type à contact, par exemple selon la norme ISO/IEC 7816, du type sans contact à couplage inductif, par exemple selon la norme ISO/IEC 14443A/B ou ISO/IEC 13693, du type sans contact par couplage électrique (circuit d'interface UHF), ou à la fois du type à contact et sans contact. Le circuit d’interface IOC peut être également relié par l’intermédiaire d’une interface spécifique, à un autre circuit comme un contrôleur NFC, ou un circuit principal d’un terminal tel qu’un terminal mobile ou un objet connecté.
Le circuit intégré CT peut être configuré pour exécuter des opérations de chiffrement, de déchiffrement ou de signature de messages qui lui sont envoyés, au moyen d'une fonction de cryptographie. Cette fonction de cryptographie peut être exécutée par le processeur PRC du circuit CT ou sous-traitée partiellement ou totalement par le processeur PRC au coprocesseur CP1.
Dans un environnement tel que celui d’une carte à microcircuit, le temps de calcul, et la capacité de la mémoire et en particulier de la mémoire volatile M3 sont limitées. Les accès en écriture de la mémoire non volatile M2 sont beaucoup plus coûteux en énergie et en temps que les accès à la mémoire volatile. En outre, l’alimentation du circuit intégré peut être interrompue à tout instant. Lors d’une transaction, le circuit intégré est mis sous tension. Le code à exécuter peut être ensuite chargé de la mémoire non volatile M1 ou M2 dans la mémoire volatile M3, et préparé pour pouvoir être exécuté. Il est également nécessaire de s’assurer de la cohérence des données mémorisées dans la mémoire volatile, qui a pu être affectée en raison d’une coupure de l’alimentation du circuit intégré durant l’exécution d’une transaction par le processeur PRC.
Une transition d’un état cohérent du système vers un autre peut impliquer des mises à jour de la mémoire non volatile M2. Ces mises à jour doivent être réalisées de manière atomique, c’est-à-dire en s’assurant soit que toutes les mises à jour requises pour la transaction soient réalisées si la transaction arrive à son terme avec succès, soit qu’aucune de ces mises à jour ne soit réalisée si la transaction a échoué ou a été annulée ou interrompue.
Une méthode destinée à assurer l’atomicité d’une transaction est illustrée sur la figure 2. Cette méthode comprend des étapes E1 à E5. Aux étapes E1 et E2, un bloc de données OBj rassemblant les données d’une transaction est lu dans la mémoire non volatile M2 et chargé dans la mémoire volatile M3, ainsi que dans une zone tampon RBB appelée Rollback Buffer dans la mémoire non volatile M2. Durant l’étape E3, la transaction proprement-dite est exécutée et des données du bloc de données OBj sont mis à jour dans la mémoire volatile M3. A la fin de la transaction, celle-ci est validée (transaction commit) en exécutant les étapes E4 et E5. A l’étape E4, le bloc de données OBj dans la mémoire M3 est sauvegardé dans la mémoire M2, par exemple en mettant à jour le bloc de données OBj dans la mémoire M2. A l’étape E5, le bloc de données OBj dans la zone tampon RBB est effacé ou invalidé. Si la transaction est interrompue, en raison d’une annulation ou d’une coupure d’alimentation du circuit intégré CT, la zone tampon RBB contient un bloc de données valide.
Une procédure de démarrage du processeur PRC est configurée pour transférer les blocs de données valides présents dans la zone tampon RBB à leur emplacement dans la mémoire M2 (étape E0). Ainsi, si la transaction a été interrompue, le bloc de données OBj est transféré de la zone tampon RBB à l’emplacement du bloc de données OBj dans la mémoire M2. Ensuite, l’étape E5 est exécutée pour invalider ou effacer le contenu de la zone tampon RBB. De cette manière, si l’écriture du bloc de données OBj dans la mémoire M2 à l’étape E4 a été interrompue, il est assuré que la mémoire M2 soit restaurée dans son état avant le début de la transaction. Cette première méthode implique au minimum trois écritures dans la mémoire non volatile M2, que la transaction arrive à son terme (E2, E4, E5), ou non (E2, E0, E5). Cependant, si toutes les données mises à jour relatives à la transaction peuvent être écrites dans la mémoire M2 en une seule opération d’écriture, l’usage de la zone tampon n’est pas nécessaire, puisque la mémoire non volatile M2 n’est mise à jour qu’à la fin de la transaction. En revanche, si les données dans les mémoires M2, M3 sont mémorisées en association avec des données d’entête situées dans une autre zone de la mémoire M3, il est nécessaire de prévoir une ou plusieurs opérations d’écriture supplémentaires pour sauvegarder ces données d’entête dans la mémoire M2.
Il est donc souhaitable de minimiser le nombre d’opérations d’écriture dans une mémoire non volatile d’un circuit intégré exécutant une transaction. Il est également souhaitable de conserver la cohérence des données mémorisées dans la mémoire non volatile, même en cas d’interruption de la transaction à n’importe quel moment durant l’exécution de la transaction.
Des modes de réalisation concernent un Procédé d’exécution d’une transaction par un microcircuit comprenant un processeur, une mémoire volatile et une mémoire non volatile, le procédé comprenant des étapes consistant à : charger dans la mémoire volatile une table de données d’entête active lue dans la mémoire non volatile, la table de données d’entête active comprenant des adresses de blocs de données stockés dans la mémoire non volatile, charger dans la mémoire volatile un bloc de données lu à une adresse de la mémoire non volatile, spécifiée dans la table de données d’entête, exécuter une transaction durant laquelle le bloc de données est modifié dans la mémoire volatile, à la suite d’une validation de la transaction, copier le bloc de données modifié dans la mémoire non volatile, modifier la table de données d’entête active dans la mémoire volatile en y inscrivant une adresse d’écriture dans la mémoire non volatile, du bloc de données modifié, et copier dans la mémoire non volatile la table de données d’entête modifiée lue dans la mémoire volatile.
Selon un mode de réalisation, le procédé comprend une étape de modification d’une valeur de compteur associée à la table de données d’entête modifiée dans la mémoire volatile, la table de données d’entête modifiée étant copiée en un emplacement libre de la mémoire non volatile en association avec la valeur de compteur modifiée, la table de données d’entête active dans la mémoire non volatile étant associée à la valeur de compteur la plus récente.
Selon un mode de réalisation, le procédé comprend des étapes consistant à : dupliquer dans la mémoire volatile des données du bloc de données à modifier durant l’exécution de la transaction, recevoir un ordre d’annulation de la transaction, et reconstituer le bloc de données avant modification à l’aide des données dupliquées du bloc de données dans la mémoire volatile.
Selon un mode de réalisation, les données à modifier sont dupliquées dans une table comprenant pour chaque donnée à modifier un identifiant du bloc de données dans lequel se trouve la donnée à modifier, la donnée à modifier et une position de la donnée à modifier dans le bloc de données.
Selon un mode de réalisation, plusieurs blocs de données sont chargés dans la mémoire volatile et modifiés durant la transaction, le procédé comprenant des étapes de copie des blocs de données modifiés dans une zone de transfert de la mémoire volatile, formant un bloc transférable dans la mémoire non volatile en une seule opération d’écriture, et de copie de la zone de transfert dans la mémoire non volatile.
Selon un mode de réalisation, le bloc rassemblant les blocs de données modifiés est formé à la place d’une table mémorisant des valeurs précédentes de données modifiées dans la mémoire volatile.
Selon un mode de réalisation, la table de données d’entête comprend pour chaque bloc de données une adresse de stockage du bloc de données dans la mémoire non volatile, la table de données d’entête dans la mémoire volatile comprenant en outre pour chaque bloc de données copié dans la mémoire volatile une adresse de stockage du bloc de données dans la mémoire volatile.
Des modes de réalisation peuvent également concerner un circuit comprenant un processeur, une mémoire non volatile, et une mémoire volatile, le processeur étant configuré pour mettre en oeuvre le procédé défini précédemment.
Des modes de réalisation peuvent également concerner un dispositif comprenant un tel circuit, agencé sur un support.
Des modes de réalisation peuvent également concerner un produit programme d’ordinateur directement chargeable dans une mémoire interne d’un ordinateur et comprenant des portions de code qui lorsqu’elles sont exécutées par un ordinateur configurent l’ordinateur pour mettre en oeuvre les étapes du procédé défini précédemment.
Des exemples de réalisation de l’invention seront décrits dans ce qui suit, à titre non limitatif en relation avec les figures jointes parmi lesquelles :
la figure 1 décrite précédemment, représente schématiquement un circuit intégré classique, la figure 2 décrite précédemment, représente schématiquement le contenu d’une mémoire volatile et d’une mémoire non volatile du circuit intégré, pour illustrer une méthode classique de mise à jour de la mémoire non volatile, les figures 3A, 3B représentent schématiquement le contenu d’une mémoire volatile et d’une mémoire non volatile d’un circuit intégré, à différentes étapes de mise à jour de la mémoire non volatile, selon un mode de réalisation, les figures 4A à 4D représentent schématiquement le contenu d’une mémoire volatile et d’une mémoire non volatile du circuit intégré, à différentes étapes de mise à jour de la mémoire non volatile, selon un autre mode de réalisation, la figure 5 représente schématiquement le contenu d’une mémoire volatile et d’une mémoire non volatile du circuit intégré, à différentes étapes de mise à jour de la mémoire non volatile, selon un autre mode de réalisation.
Les figures 3A, 3B représentent schématiquement le contenu d’une mémoire non volatile et d’une mémoire volatile, telles que les mémoires M2, M3 du circuit intégré CT représenté sur la figure 1. Sur les figures 3A, 3B, la mémoire non volatile M2 contient des blocs de données OB1, OB2, ... OBj. Chacun des blocs de données OBj est associé à des données d’entête HD1, HD2, ... HDj mémorisées dans la mémoire M2 dans une table d’entête HDT active. Les données d’entête HDj d’un bloc de données OBj contiennent notamment un identifiant du bloc de données, une adresse de stockage du bloc de données OBj dans la mémoire M2, et la taille du bloc de données. A noter que les identifiants des blocs de données dans la table HDT peuvent être simplement les positions (ou indexes) des données d’entête de bloc de données dans la table HDT. Durant une étape initiale S0, le processeur PRC lit la table d’entête HDT active dans la mémoire non volatile M2 et la charge dans la mémoire volatile M3. Le processeur PRC exécute ensuite les étapes S1 à S8 successivement.
A l’étape S1, une transaction est activée dans le circuit intégré CT. Cette transaction utilise et modifie des données du bloc de données OBj. Le bloc de données OBj est donc lu dans la mémoire M2 et chargé dans la mémoire M3. Les données d’entête HDj du bloc de données OBj copié sont complétées avec l’adresse de stockage du bloc de données dans la mémoire M3. A l’étape S2, le bloc de donnée OBj dans la mémoire M3 est copié dans une zone tampon RB1 de la mémoire M3. A l’étape S3, durant l’exécution de la transaction, le bloc de données OBj est modifié dans la mémoire volatile M3.
A l’étape S4 (figure 3B), la transaction est validée (commit), ce qui déclenche la fin de la transaction. Le bloc de données modifié OBj’ résultant de la modification du bloc de données OBj durant la transaction est transféré de la mémoire M3 dans un emplacement libre de la mémoire non volatile M2. A l’étape S5, les données d’entête HDj du bloc de données OBj sont mises à jour. En particulier, l’adresse où a été écrit le bloc de données modifié OBj’ dans la mémoire M2 est inscrite dans les données d’entête HDj du bloc de données OBj dans la mémoire M3. A l’étape S6, la valeur d’un compteur CNT est modifiée, par exemple incrémentée, dans la table d’entête HDT mémorisée dans la mémoire M3. A l’étape S7, le bloc de données OBj est effacé de la zone tampon RB1. A l’étape S8, la table d’entête modifiée HDT’ résultant de la modification de la table HDT aux étapes S5, S6, est transférée de la mémoire M3 en un emplacement libre de la mémoire M2, avec la valeur de compteur modifiée CNT+1. Les adresses figurant dans la table HDT, des blocs de données dans la mémoire M3, ne sont pas copiées dans la mémoire M2. Le processeur PRC est alors configuré pour activer la table HDT se trouvant dans la mémoire M2 et associée à la valeur de compteur CNT la plus récente, par exemple la plus élevée. Ainsi, à l’étape S0, le processeur PRC charge dans la mémoire volatile M3, la table HDT active et utilise cette table pour accéder aux différents blocs de données OBj mémorisés dans la mémoire M2. De cette manière, le bloc de données OBj dans la mémoire M2 devient invalide à la suite de l’étape S8 car il n’est pas référencé par la table HDT active.
Si la transaction est annulée avant l’étape S8, le processeur PRC exécute l’étape S4’ (figure 3A). Durant l’étape S4’, le bloc de donnée OBj est transféré de la zone tampon RB1 à l’emplacement de stockage du bloc de données OBj dans la mémoire M3, ce qui annule les modifications éventuelles du bloc de données OBj. Il est possible également de simplement supprimer l’adresse du bloc de données OBj dans la mémoire M3, mémorisée dans les données d’entête HDj du bloc de données OBj dans la mémoire M3, ce qui rend le bloc de données invalide. Si ce bloc de données doit être modifié par la suite, il sera à nouveau chargé à partir de la mémoire M2 dans la mémoire M3.
Si une coupure d’alimentation du circuit CT se produit avant l’étape S8, la mémoire volatile M3 est effacée et la transaction est annulée. Tant que la table HDT modifiée n’est pas copiée dans la mémoire non volatile M2, le bloc de données modifié OBj’ qui a été éventuellement chargé dans la mémoire M2 n’est pas référencé par la table HDT active dans la mémoire M2, et donc est considéré comme invalide. Si l’écriture de la table HDT dans la mémoire M2 peut être interrompue notamment en raison d’une coupure d’alimentation, la valeur du compteur CNT peut figurer à la fin de la table d’entête HDT, de sorte que si l’écriture de la table HDT dans la mémoire M2 est interrompue en raison d’une coupure d’alimentation, la valeur du compteur CNT n’est pas copiée dans la mémoire M2. Ainsi une table d’entête HDT copiée dans la mémoire M2 ne peut être considérée active que si elle comporte une valeur de compteur CNT.
Grâce à ces dispositions, seulement deux écritures (étapes S4, S8) dans la mémoire non volatile M2 sont nécessaires durant l’exécution d’une transaction, y compris si les données de transaction sont gérées avec des données d’entête.
Les figures 4A, 4B, 4C, 4D représentent schématiquement le contenu d’une mémoire non volatile et d’une mémoire volatile, telles que les mémoires M2, M3 du circuit intégré CT représenté sur la figure 1. Sur les figures 4A à 4D, la mémoire non volatile M2 contient des blocs de données OB1, OB2, OB3, OB4, ... (OBj). Chacun des blocs de données OBj est associé à des données d’entête HD1, HD2, HD3, HD4, ... (HDj) mémorisées dans une table d’entête HDT dans la mémoire M2. Les données d’entête HDj d’un bloc de données OBj contiennent notamment un identifiant IDj (Figure 4A) du bloc de données OBj, une adresse de stockage du bloc de données OBj dans la mémoire M2, et la taille du bloc de données. Ici encore, les identifiants des blocs de données dans la table HDT peuvent être simplement les positions (ou indexes) des données d’entête de bloc de données dans la table HDT. Durant une étape initiale S10, le processeur PRC lit la table d’entête HDT dans la mémoire non volatile M2 et la charge dans la mémoire volatile M3. Le processeur PRC exécute ensuite des étapes S11 à S23 successivement.
A l’étape S11 (figure 4A), une transaction est activée dans le circuit intégré CT. Cette transaction utilise et modifie des données des blocs de données OB3 et OB2, par exemple. Le bloc de données OB3 est donc lu dans la mémoire non volatile M2 et chargé dans la mémoire volatile M3. L’adresse d’écriture du bloc OB3 est mémorisée dans les données d’entête HD3 dans la mémoire M3. La transaction doit modifier une donnée ODT3 du bloc de données OB3. A l’étape S12, l’identifiant du bloc OB3 est inscrit dans une zone d’entêtes de blocs modifiés THD de la mémoire M3, et la donnée à modifier ODT3 est copiée dans une table de données modifiées stockée dans une zone TCM de la mémoire M3. Dans la table TCM, la donnée ODT3 est associée à l’identifiant ID3 du bloc de données OB3, à l’adresse AD3 de ce bloc dans la mémoire M3, et à la position OF3 de la donnée ODT3 dans ce bloc de données. A l’étape S13 (figure 4B), la donnée ODT3 est modifiée dans le bloc de données OB3 pour devenir une donnée NDT3. Durant cette même transaction, une donnée ODT2 du bloc de données OB2 doit également être modifiée. Le bloc de données OB2 est donc copié de la mémoire M2 dans la mémoire M3 à l’étape S14. A l’étape S15, l’identifiant du bloc OB2 est inscrit dans la zone d’entêtes de blocs modifiés THD dans la mémoire M3, et la donnée à modifier ODT2 est copiée dans la table de données modifiées TCM, et associée à l’identifiant ID2 du bloc de données OB2, à l’adresse AD2 de ce bloc de données dans la mémoire M3, et à la position OF2 de la donnée ODT2 dans ce bloc de données. La donnée à modifier ODT2 peut être également associée dans la table TCM à une donnée de vérification d’intégrité, de manière à ne restaurer si nécessaire que des données intègres. A l’étape S16 (figure 4C), durant l’exécution de la transaction, la donnée ODT2 dans le bloc de données OB2 stocké dans la mémoire volatile M3 est remplacée par la donnée NDT2.
A l’étape S17, la transaction est validée, ce qui déclenche la fin de la transaction. Les blocs de données modifiés OB2’, OB3’ dans la mémoire M3 durant la transaction sont transférés dans une zone de transfert de la mémoire M3 où les données modifiées sont regroupées pour former un seul bloc transférable dans la mémoire M2 en une seule opération d’écriture. Cette zone de transfert peut être située dans la zone de mémorisation des blocs de données de transaction avant la zone THD. A l’étape S18, le bloc de données modifiées regroupant les blocs de données OB2’, OB3’ est copié de la mémoire M3 dans la mémoire M2 en une seule opération d’écriture. A l’étape S19 (figure 4D), la zone TCM dans la mémoire M3 est effacée. A l’étape S20, la table d’entêtes HDT est mise à jour dans la mémoire M3. Ainsi, les adresses d’écriture des blocs OB2, OB3 dans la mémoire M2 sont modifiées dans les données d’entête HD2, HD3 en utilisant les adresses d’écriture des blocs de données modifiés OB2’, OB3’ dans la mémoire M2 utilisées à l’étape S18. La valeur d’un compteur CNT associé à la table d’entête HDT est modifiée, par exemple incrémentée, dans la mémoire M3. A l’étape S21, la table d’entête modifiée HDT’ contenant les données d’entête modifiées HD2’, HD3’ des blocs de données modifiés OB2’, OB3’ et la valeur de compteur modifiée CNT+1, est transférée de la mémoire M3 en un emplacement libre de la mémoire M2. La table HDT peut ainsi occuper alternativement deux zones de la mémoire M2. Le processeur PRC est alors configuré pour activer à l’étape S10, la table HDT se trouvant dans la mémoire M2 et associée à la valeur de compteur CNT la plus récente, par exemple la plus élevée. La table HDT active est chargée dans la mémoire volatile M3. A l’étape S22, les données d’entête HD2, HD3 sont effacées de la zone THD dans la mémoire M3.
Si la transaction est annulée avant l’étape S17, le processeur PRC reconstitue si nécessaire les blocs de données OB2, OB3 d’origine en remplaçant les nouvelles données NDT2 et NDT3 par les anciennes ODT2, ODT3 mémorisées dans la zone TCM.
Si une coupure d’alimentation du circuit CT se produit avant l’étape S21, la mémoire M3 est effacée et la transaction est annulée. Comme la table d’entête HDT modifiée n’est pas copiée dans la mémoire non volatile M2, les blocs de données modifiés OB2’, OB3’ éventuellement copiés dans la mémoire M2 ne sont pas référencés par la table de données d’entête active HDT dans la mémoire M2, laquelle référence les blocs de données OB2, OB3 d’origine, avant le début de la transaction.
Ainsi, seulement deux écritures (étapes S18, S21) dans la mémoire non volatile M2 sont nécessaires durant l’exécution d’une transaction, même si la transaction modifie plusieurs blocs de données stockés dans la mémoire non volatile M2, et si les données de transaction sont associées à des données d’entête.
Les étapes S10 à S21 autorisent l’annulation d’une transaction lorsque plusieurs transactions imbriquées sont exécutées. En effet, prenons le cas d’une première transaction modifiant le bloc de données OB2, et une seconde transaction imbriquée dans la première transaction et modifiant le bloc de données OB3, seule la seconde transaction étant annulée. Le processeur PRC détermine alors les blocs de données modifiés par la transaction annulée, soit le bloc de données OB3 associé aux données d’entête HD3. Le processeur PRC lit la zone TCM pour rechercher un identifiant ID3 du bloc de données OB3 pour récupérer les données d’origine ODT3 et la position de ces données OF3 dans le bloc de données OB3. Le processeur PRC lit ensuite l’adresse, dans la mémoire M3, du bloc de données OB3 dans les données d’entête HD3 correspondant à l’identifiant ID3 lu dans la zone TCM, et écrit les données d’origine ODT3 à l’adresse définie par l’adresse du bloc de données lue dans les données d’entête HD3, incrémentée de la position OF3 des données d’origine ODT3 dans le bloc de données, lue dans la zone TCM (sous réserve du succès d’un éventuel contrôle d’intégrité des données ID3, OF3, ODT3 de la zone TCM associées à la donnée ODT3). De cette manière, il est possible de mettre dans leurs états respectifs d’origine les données modifiées par la transaction annulée, sans affecter les données qui peuvent avoir été modifiées par d’autres transactions en cours. Ainsi il est possible d’annuler les seules modifications effectuées dans un bloc de données pendant une transaction annulée, tandis qu’une autre transaction en cours d’exécution modifie d’autres données du bloc de données. A noter que si la première transaction est annulée, toutes les transactions qui sont imbriquées dans cette première transaction sont également annulées.
Il est à noter qu’à l’étape S17, seuls sont copiés dans la zone de transfert de la mémoire volatile M3, les blocs de données modifiés par la ou les transactions validées, et donc seuls ces blocs seront transférés dans la mémoire non volatile M2. Les autres transactions en cours et non validées peuvent donc être annulées sans interférer avec le traitement de validation (étapes S17 à S21) d’une autre transaction. Ces dispositions autorisent donc des écritures dans la mémoire non volatile M2 ne nécessitant pas de validation d’une transaction.
A noter également que si l’écriture de la table d’entête HDT dans la mémoire non volatile M2 est effectuée d’une manière atomique (étapes S8, S21), de sorte que la table HDT est soit totalement non écrite, la précédente table HDT étant présente dans la mémoire non volatile M2, soit totalement écrite dans la mémoire M2 en remplaçant la précédente table HDT, il n’est pas nécessaire de gérer dans la mémoire M2, deux tables d’entête HDT et HDT’ associées à des valeurs de compteur CNT (Figures 3A, 3B, 4A à 4D).
La figure 5 représente schématiquement le contenu de la mémoire non volatile M2 et de la mémoire volatile M3. La figure 5 diffère de la figure 4C en ce que les étapes S17 et S18 sont remplacées par des étapes S17’ et S18’. Selon un autre mode de réalisation, les étapes S17’ et S18’ sont exécutées à la suite des étapes S11 à S16, notamment lorsque la mémoire volatile M3 présente une capacité insuffisante pour stocker deux fois les blocs de données modifiés.
A l’étape S17’, les blocs de données modifiés OB2, OB3 dans la mémoire M3 durant la transaction sont transférés dans la zone de données modifiées TCM de la mémoire M3 pour former un seul bloc transférable dans la mémoire M2 en une seule opération d’écriture. Si nécessaire, la zone TCM peut être préalablement effacée à une étape S16’. A l’étape S18’, les blocs de données modifiés OB2’, OB3’ sont copiés de la zone TCM dans la mémoire M2 en une seule opération d’écriture. L’étape S19 (figure 4D) précédemment décrite est ensuite exécutée pour effacer la zone TCM dans la mémoire M3.
II apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l’invention ne s’applique pas uniquement aux cartes à microcircuit, mais peut s’appliquer plus généralement à tout circuit comportant un processeur, une mémoire volatile et une mémoire non volatile.

Claims (10)

  1. REVENDICATIONS
    1. Procédé d’exécution d’une transaction par un microcircuit comprenant un processeur (PRC), une mémoire volatile (M3) et une mémoire non volatile (M2), le procédé comprenant des étapes consistant à :
    charger dans la mémoire volatile une table de données d’entête (HDT) active lue dans la mémoire non volatile, la table de données d’entête active comprenant des adresses de blocs de données stockés dans la mémoire non volatile, charger dans la mémoire volatile un bloc de données (OBj, OB2, OB3) lu à une adresse de la mémoire non volatile, spécifiée dans la table de données d’entête, exécuter une transaction durant laquelle le bloc de données est modifié dans la mémoire volatile, à la suite d’une validation de la transaction, copier le bloc de données modifié dans la mémoire non volatile, modifier la table de données d’entête active dans la mémoire volatile en y inscrivant une adresse d’écriture dans la mémoire non volatile, du bloc de données modifié, et copier dans la mémoire non volatile la table de données d’entête modifiée lue dans la mémoire volatile.
  2. 2. Procédé selon la revendication 1, comprenant une étape de modification d’une valeur de compteur (CNT) associée à la table de données d’entête (HDT) modifiée dans la mémoire volatile (M3), la table de données d’entête modifiée étant copiée en un emplacement libre (HDT’) de la mémoire non volatile (M2) en association avec la valeur de compteur modifiée, la table de données d’entête active (HDT’) dans la mémoire non volatile étant associée à la valeur de compteur la plus récente.
  3. 3. Procédé selon la revendication 1 ou 2, comprenant des étapes consistant à :
    dupliquer dans la mémoire volatile (M3) des données (OBj, ODT2, ODT3) du bloc de données (OBj, OB2, OB3) à modifier durant l’exécution de la transaction, recevoir un ordre d’annulation de la transaction, et reconstituer le bloc de données avant modification à l’aide des données dupliquées du bloc de données dans la mémoire volatile.
  4. 4. Procédé selon la revendication 3, dans lequel les données à modifier (ODT2, ODT3) sont dupliquées dans une table (TCM) comprenant pour chaque donnée à modifier un identifiant (ID2, ID3) du bloc de données (OB2, OB3) dans lequel se trouve la donnée à modifier, la donnée à modifier et une position (OF2, OF3) de la donnée à modifier dans le bloc de données.
  5. 5. Procédé selon l'une des revendications 1 à 4, dans lequel plusieurs blocs de données (OB2, OB3) sont chargés dans la mémoire volatile (M3) et modifiés durant la transaction, le procédé comprenant des étapes de copie des blocs de données modifiés (OB2’, OB3’) dans une zone de transfert (TCM) de la mémoire volatile, formant un bloc transférable dans la mémoire non volatile (M2) en une seule opération d’écriture, et de copie de la zone de transfert dans la mémoire non volatile.
  6. 6. Procédé selon la revendication 5, dans lequel le bloc rassemblant les blocs de données modifiés (OB2’, OB3’) est formé à la place d’une table (TCM) mémorisant des valeurs précédentes de données modifiées dans la mémoire volatile (M3).
  7. 7. Procédé selon l'une des revendications 1 à 6, dans lequel la table de données d’entête (HDT, HDT’) comprend pour chaque bloc de données (OB2, OB3) une adresse de stockage du bloc de données dans la mémoire non volatile (M2), la table de données d’entête dans la mémoire volatile (M3) comprenant en outre pour chaque bloc de données copié dans la mémoire volatile une adresse de stockage du bloc de données dans la mémoire volatile.
  8. 8. Circuit (CT) comprenant un processeur (PRC), une mémoire non volatile (M2), et une mémoire volatile (M3), le processeur étant configuré pour mettre en œuvre le procédé selon l’une des revendications 1 à 7.
  9. 9. Dispositif comprenant un circuit selon la revendication 8, agencé sur un support (HD).
  10. 10. Produit programme d’ordinateur directement chargeable dans une 5 mémoire interne d’un ordinateur et comprenant des portions de code qui lorsqu’elles sont exécutées par un ordinateur configurent l’ordinateur pour mettre en oeuvre les étapes du procédé selon l’une des revendications 1 à 7.
FR1656413A 2016-07-05 2016-07-05 Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile Withdrawn FR3053810A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1656413A FR3053810A1 (fr) 2016-07-05 2016-07-05 Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1656413 2016-07-05
FR1656413A FR3053810A1 (fr) 2016-07-05 2016-07-05 Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile

Publications (1)

Publication Number Publication Date
FR3053810A1 true FR3053810A1 (fr) 2018-01-12

Family

ID=57396551

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1656413A Withdrawn FR3053810A1 (fr) 2016-07-05 2016-07-05 Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile

Country Status (1)

Country Link
FR (1) FR3053810A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2585641A (en) * 2019-07-08 2021-01-20 Zwipe As Robust data storage algorithm

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2585641A (en) * 2019-07-08 2021-01-20 Zwipe As Robust data storage algorithm

Similar Documents

Publication Publication Date Title
US8266365B2 (en) Ruggedized memory device
CN102999430B (zh) 处理具有非易失性存储器的系统的未完全关闭
TWI356996B (en) Card controller controlling semiconductor memory i
CN105706061B (zh) 使用非易失性存储器的崩溃恢复
FR3023030B1 (fr) Zone de donnees d'invalidation pour cache
WO2018081737A1 (fr) Agencement de métadonnées d'instantané destiné à une intégration en nuage
US8626713B2 (en) Multiple contexts in a redirect on write file system
US20090049229A1 (en) Nonvolatile memory device, method of writing data,and method of reading out data
US7849060B2 (en) System and method for managing log information for transaction
JP6013626B2 (ja) 不揮発性メモリ書込み機構
US8176009B2 (en) Performing a pre-update on a non volatile memory
CN104246727B (zh) 数据处理系统以及用于操作数据处理系统的方法
US8775758B2 (en) Memory device and method for performing a write-abort-safe firmware update
WO2022126470A1 (fr) Procédé et dispositif de protection contre les pannes d'électricité pour données flash
US8600962B2 (en) Transaction processing device, transaction processing method, and transaction processing program
EP2329368A2 (fr) Mise à jour de contenu sans utiliser de mini-système d'exploitation
KR20200109726A (ko) 데이터베이스 관리 시스템에서의 로그 레코드 관리를 위한 기법
FR3055992A1 (fr) Gestion d'index dans une memoire flash
EP1866770B1 (fr) Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
FR3053810A1 (fr) Procede de transaction comprenant des operations d'ecriture de donnees dans une memoire non volatile
US20090112951A1 (en) Apparatus and method of managing files and memory device
KR100866513B1 (ko) 플래시 메모리 기반 저널링 파일 시스템을 이용한 데이터처리 방법
CN105988899A (zh) 实现数据缓存的方法和装置
CN108334275A (zh) 数据储存方法及其装置
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Search report ready

Effective date: 20180112

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

CD Change of name or company name

Owner name: VERIMATRIX, FR

Effective date: 20191119

CA Change of address

Effective date: 20191209

TP Transmission of property

Owner name: RAMBUS INC., US

Effective date: 20200402

ST Notification of lapse

Effective date: 20210305