Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD OF SECURE UPDATING OF A NONVOLATILE MEMORY
Document Type and Number:
WIPO Patent Application WO/2007/090857
Kind Code:
A1
Abstract:
The invention relates to a method of updating a data item (D0) in a block-erasable main non-volatile memory (MNV), consisting in: saving in a save area (S) the old value of the data item (D0) and at least one active save indicator (I0) indicating that a data item has just been saved and that a modification is underway; copying the block (P) relevant to the data item to be updated into a non-volatile memory buffer area (B); erasing said block (P) from the main memory (MNV); reconstructing the block (P) on the basis of the data copied into the buffer area and of the new value of the data item to be updated and writing said reconstructed block (P) into the main memory (MNV); deactivating the indicator of the save area if the update operation has run correctly.

Inventors:
GARNIER THIERRY (FR)
VALADE JEAN-MARIE (FR)
VAN-HAVER PATRICK (FR)
Application Number:
PCT/EP2007/051190
Publication Date:
August 16, 2007
Filing Date:
February 07, 2007
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
GEMPLUS CARD INT (FR)
GARNIER THIERRY (FR)
VALADE JEAN-MARIE (FR)
VAN-HAVER PATRICK (FR)
International Classes:
G11C16/10; G07F7/10
Foreign References:
FR2818426A12002-06-21
US5532463A1996-07-02
US20030145160A12003-07-31
US20020199054A12002-12-26
Other References:
PATENT ABSTRACTS OF JAPAN vol. 007, no. 253 (P - 235) 10 November 1983 (1983-11-10)
Download PDF:
Claims:

REVENDICATIONS

1. Procédé de mise à jour d'au moins une donnée (D 0 ) dans une mémoire non volatile principale (MNV) effaçable par bloc de mémoire de taille fixe prédéfinie, consistant à : a- sauvegarder (1) dans une zone de mémoire de sauvegarde (S) l'ancienne valeur de la donnée (D 0 ) ; b- sauvegarder dans la zone de sauvegarde (S) en même temps que l'ancienne valeur de la donnée des informations de système liées à la donnée à mettre à jour, comprenant au moins un indicateur (I 0 ) de sauvegarde actif indiquant qu'une donnée vient d'être sauvegardée et qu'une modification de donnée est en cours ; ledit procédé étant caractérisé en ce qu' il comprend en outre des étapes consistant à : c- copier (2) le bloc entier (P) concerné par la donnée à mettre à jour dans une zone tampon (B) de mémoire non volatile de taille correspondante à au moins la taille fixe de bloc prédéfinie de la mémoire principale, ladite zone tampon étant distincte de la zone de sauvegarde (S) ; d- effacer (3) de la mémoire non volatile principale (MNV) le bloc (P) concerné par la donnée à mettre à jour ; e- reconstruire (4) le bloc (P) à partir des données du bloc copiées dans la zone tampon (B) et de la nouvelle valeur de la donnée à mettre à jour et écrire ledit bloc (P) avec la donnée mise à jour (Dl) dans la mémoire non volatile principale (MNV) ;

f- désactiver (6) l'indicateur de la zone de sauvegarde si l'opération de mise à jour s'est déroulée correctement .

2. Procédé selon la revendication 1, dans lequel la mise à jour implique une pluralité de données (D 0 , D 2 ) de la mémoire non volatile principale (MNV) intervenant dans la réalisation d'une transaction, lesdites données de la transaction ne devant pas être mises à jour séparément, caractérisé en ce qu'il consiste à répéter consécutivement les étapes a- à e- du procédé pour chaque donnée concernée par la transaction.

3. Procédé selon les revendications 2, caractérisé en ce que les anciennes valeurs de donnée (D 0 , D 2 ) et les informations de système associées (I 0 , I 2 ) correspondant à chaque donnée de la transaction, sont sauvegardées dans un même secteur de mémoire de la zone de sauvegarde (S) .

4. Procédé selon les revendications 2 ou 3, caractérisé en ce que l'étape f- est mise en œuvre si l'opération de mise à jour de la pluralité de données s'est déroulée correctement, et consiste à désactiver les indicateurs de sauvegarde préalablement sauvegardés dans la zone de sauvegarde respectivement pour chaque donnée mise à jour.

5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que

l'étape f- mise en œuvre est remplacée par une étape consistant à effacer le contenu de la zone de sauvegarde (S) .

6. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la taille de la zone tampon (B) est un multiple N, N étant supérieur ou égal à 1, de la taille de bloc prédéfinie pour la mémoire non volatile principale.

7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'après une interruption d'alimentation de la mémoire intervenant au cours d'une opération de mise à jour de la mémoire, les étapes suivantes sont mises en œuvre consistant à :

- vérifier la présence d'au moins un indicateur de sauvegarde à l'état actif dans la zone de sauvegarde (S) ;

- si au moins un indicateur de sauvegarde est à l'état actif, restaurer dans la mémoire non volatile principale (MNV) l'ancienne valeur de chacune des données sauvegardées dans la zone de sauvegarde dont l'indicateur de sauvegarde associé est à l'état actif, puis désactiver l'indicateur de sauvegarde correspondant .

8. Procédé selon la revendication 7, caractérisé en ce que l'étape de restauration d'une donnée en mémoire (MNV) consiste à :

récupérer l'adresse de départ dans la mémoire principale (MNV) du bloc de données concernée par la donnée a restaurer, à partir des informations de système sauvegardées avec l'ancienne valeur de la donnée dans la zone de sauvegarde (S) , lesdites informations comprenant l'adresse d'origine dans la mémoire principale de la donnée ; reconstruire le bloc concerné tel qu' il était dans son état initial, à partir des données du bloc concerné copiées dans la zone tampon (B) et de l'ancienne valeur de la donnée à restaurer sauvegardée dans la zone de sauvegarde (S) ; programmer le bloc restauré dans la mémoire (MNV) à l'adresse récupérée.

9. Procédé selon la revendication 8, caractérisé en ce que si la zone tampon (B) est vide, l'étape de reconstruction du bloc concerné par la donnée à restaurer comprend préalablement la copie dans la zone tampon des données du bloc concerné, à partir de l'adresse de départ précédemment récupérée du bloc dans la mémoire non volatile principale (MNV) .

10. Procédé selon les revendications 8 ou 9, caractérisé en ce que l'étape de programmation dans la mémoire du bloc restauré comprend d'abord l'effacement du bloc correspondant de la mémoire puis l'écriture du bloc restauré en mémoire.

11. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la

mémoire non volatile principale (MNV) comprend des caractéristiques de haute capacité et de grosse granularité et la zone tampon (B) comprend des caractéristiques de faible capacité et de fine granularité .

12. Appareil numérique portatif comprenant un microprocesseur, une mémoire non volatile principale

(MNV) effaçable par bloc de mémoire de taille fixe prédéfinie et une zone de sauvegarde (S) des données de la mémoire non volatile principale lors d'un processus de mise à jour des données, caractérisé en ce qu'il comprend une zone tampon (B) de mémoire non volatile, de taille correspondante à au moins la taille fixe de bloc prédéfinie de la mémoire principale, et des moyens de gestion de la mémoire apte à commander le déroulement des opérations de mise à jour de données en mémoire conformément au procédé selon l'une quelconque des revendications précédentes.

13. Appareil numérique portatif selon la revendication 12, caractérisé en ce que la mémoire non volatile principale (MNV) comprend des caractéristiques de haute capacité et de grosse granularité et la zone tampon (B) comprend des caractéristiques de faible capacité et de fine granularité.

14. Appareil selon la revendication 12 ou 13, caractérisé en ce que la mémoire non volatile principale (MNV) est une mémoire flash.

15. Appareil selon l'une quelconque des revendications 12 à 14, caractérisé en ce qu'il s'agit d'une carte à puce.

Description:

PROCEDE DE MISE A JOUR SECURISEE DE MEMOIRE NON

VOLATILE

La présente invention concerne les mémoires non volatiles, telles que les mémoires EEPROM ou les mémoires flash et les circuits de gestion associés permettant de mettre à jour d'une manière sûre les données stockées dans ces mémoires. La présente invention s'applique notamment aux mémoires non volatiles de ce type dans les cartes à puce à microprocesseur .

La mise à jour d'une donnée consiste à remplacer, à une adresse déterminée de la mémoire, une ancienne donnée par une nouvelle donnée. Cette opération de mise à jour peut s'avérer critique au regard du respect de l'intégrité de la donnée concernée. En effet, les technologies des mémoires non volatiles telles que les mémoires EEPROM ou flash impliquent que la donnée à mettre à jour soit d'abord effacée avant que la nouvelle donnée puisse être programmée à l'adresse indiquée. Il peut alors arriver que la tension d'alimentation de la mémoire soit accidentellement coupée pendant cette phase, provoquant à la fois la perte de l'ancienne donnée et de la nouvelle. Une telle situation n'est évidemment pas acceptable, d'autant plus lorsqu'il s'agit de données dont la conservation est critique dans l'application considérée. Des mécanismes visant à respecter l'intégrité des données lors d'une phase de mise à jour de la mémoire ont alors été développés. Ces mécanismes de mise à jour sécurisés consistent principalement, avant d'effectuer l'opération de mise à jour d'une donnée, à sauvegarder l'ancienne donnée dans une zone de sauvegarde dédiée de

la mémoire non volatile (appelée « backup area » en langage anglo-saxon) avant de mettre à jour la nouvelle donnée à l'adresse voulue.

De cette manière, en cas de perte accidentelle d'alimentation de la mémoire au cours de l'opération de mise à jour, on préserve au moins l'ancienne valeur de la donnée considérée.

En plus de la sauvegarde de la donnée, toute l'information nécessaire à la récupération de la valeur correspondante de la donnée doit également être sauvegardée. Ces informations de système concernent typiquement l'adresse de la donnée dans la mémoire, sa longueur, ainsi que des indicateurs permettant d'indiquer si la zone de sauvegarde est toujours active ou non. Quand la donnée a été correctement mise à jour, l'ancienne valeur de la donnée n'est en effet plus utile et la zone de sauvegarde dédiée pour cette donnée et ses informations de système associées peut être libérée . En cas de détection de perte d'alimentation de la mémoire au cours d'une opération de mise à jour, des mécanismes spécifiques (« rollback » selon la terminologie anglo-saxonne ») sont alors prévus pour se déclencher à la réinitialisation de la mémoire, permettant d'assurer la restauration des données de la mémoire dans leur état initial avant mise à jour. Pour ce faire, ces mécanismes détectent les zones de sauvegarde actives dans la mémoire et copient les anciennes valeurs qui y sont stockées aux emplacements adéquats de la mémoire, indiqués par les informations

de système correspondantes également sauvegardées ensemble avec les données.

Dans le contexte des mémoires non volatiles, la difficulté de réalisation de ces mécanismes de mise à jour sécurisée réside dans la gestion des espaces de mémoire qui doivent être utilisés pour sauvegarder l'ancienne donnée et ses informations de système associées .

En effet, ces mécanismes existants, permettant d'assurer la mise à jour sécurisée des données, ont jusqu'alors été développés pour adresser des mémoires non volatiles comprenant une granularité mémoire fine, c'est-à-dire de l'ordre de l'octet. Une mise en œuvre efficace et performante de ces mécanismes est donc corrélée à l'utilisation d'une mémoire non volatile préalablement découpée en un certain nombre de blocs d'une taille prédéfinie, typiquement un octet, définissant une granularité fine de la mémoire.

Or, la tendance est au développement de mémoires non volatiles de grande capacité, de type flash NOR, qui présente alors une granularité beaucoup moins fine, de l'ordre quelques dizaines/centaines d'octets à plusieurs kilo/dizaine de kilo octets (Ko) . De telles mémoires peuvent être programmées octet par octet, mais ne peuvent par contre être effacées que par bloc entier de mémoire défini par la granularité de la mémoire de l'ordre de quelques dizaines/centaines d'octets à plusieurs kilo/dizaines de kilo octets (Ko) . Ces mémoires peuvent également être programmées par page, correspondant à un bloc mémoire de taille fixe prédéfinie, définissant le nombre maximum d'octets qui

peut être programmé en écriture au cours d'une opération unique lorsque la programmation de la mémoire n'est pas effectuée octet par octet.

Ainsi, du fait des contraintes de gestion des mémoires flash à granularité importante, la mise à jour sécurisée d'une donnée de la mémoire codée par exemple sur un seul octet avec application des mécanismes de « backup » précédemment exposés garantissant une restauration potentielle de l'état de la mémoire en cas de coupure accidentelle d'alimentation au cours de l'opération de mise à jour, nécessiterait de copier préalablement dans la zone de sauvegarde prédéfinie de la mémoire une grande partie de mémoire, constituée par le bloc entier de mémoire contenant l'octet à mettre à jour, à savoir donc un bloc de donnée de quelques dizaines/centaines d'octets à plusieurs kilo/dizaines de kilo octets (Ko) , selon la granularité nominale de la mémoire.

En effet, la mise à jour d'une donnée dans une mémoire non volatile à granularité importante de type flash implique non seulement d'effacer préalablement la donnée concernée, mais également d'effacer le bloc entier contenant la donnée concernée, puisque l'effacement de ces mémoire ne peut être effectué que par bloc entier, définissant la granularité de la mémoire. Il s'agit donc bien d'un bloc entier de la mémoire, c'est-à-dire 8 Ko, 16 Ko, 32 Ko ou plus, qui doit être sauvegardée par l'intermédiaire du mécanisme de « backup » dans la zone de sauvegarde, alors que la mise à jour ne concerne qu'un seul octet par exemple du bloc mémoire en question.

Aussi, les mécanismes existants précédemment décrits visant au respect de l'intégrité des données lors d'un processus de mise à jour sont inadaptés aux mémoires non volatiles qui présentent un faible degré de fragmentation. Ainsi, la taille de la zone de sauvegarde (« backup area ») nécessaire au stockage de l'information de sauvegarde correspondant au bloc entier de mémoire concerné par la mise à jour serait déraisonnable . L'invention vise à résoudre cet inconvénient, en proposant un système de gestion de mémoires non volatiles de grande capacité et à forte granularité, dans lequel les mécanismes existants veillant à l'intégrité des données lors de leur mise à jour en cas de coupure accidentelle d'alimentation peuvent continuer d'être utilisés, en conservant une taille de la zone de sauvegarde prévue à cet effet et des performances d'utilisation de la mémoire dans des limites acceptables. Avec cet objectif en vue, l'invention a pour objet un procédé de mise à jour d'au moins une donnée dans une mémoire non volatile principale effaçable par bloc de mémoire de taille fixe prédéfinie, consistant à : a- sauvegarder dans une zone de mémoire de sauvegarde l'ancienne valeur de la donnée; b- sauvegarder dans la zone de sauvegarde en même temps que l'ancienne valeur de la donnée des informations de système liées à la donnée à mettre à jour, comprenant au moins un indicateur de sauvegarde actif indiquant qu'une donnée vient d'être sauvegardée et qu'une modification de donnée est en cours ;

ledit procédé étant caractérisé en ce qu' il comprend en outre des étapes consistant à : c- copier le bloc entier concerné par la donnée à mettre à jour dans une zone tampon de mémoire non volatile de taille correspondante à au moins la taille fixe de bloc prédéfinie de la mémoire principale, ladite zone tampon étant distincte de la zone de sauvegarde ; d- effacer de la mémoire non volatile principale le bloc concerné par la donnée à mettre à jour ; e- reconstruire le bloc à partir des données du bloc copiées dans la zone tampon et de la nouvelle valeur de la donnée à mettre à jour et écrire ledit bloc avec la donnée mise à jour dans la mémoire non volatile principale; f- désactiver l'indicateur de la zone de sauvegarde si l'opération de mise à jour s'est déroulée correctement .

Selon un mode de réalisation particulier dans lequel la mise à jour implique une pluralité de données de la mémoire non volatile principale intervenant dans la réalisation d'une transaction, lesdites données de la transaction ne devant pas être mises à jour séparément, le procédé consiste à répéter consécutivement les étapes a- à e- du procédé pour chaque donnée concernée par la transaction.

De préférence, selon le mode de réalisation particulier, les anciennes valeurs de donnée et les informations de système associées correspondant à chaque donnée de la transaction, sont sauvegardées dans un même secteur de mémoire de la zone de sauvegarde .

Selon le mode de réalisation particulier, l'étape f- est mise en œuvre si l'opération de mise a jour de la pluralité de données s'est déroulée correctement, et consiste à désactiver les indicateurs de sauvegarde préalablement sauvegardés dans la zone de sauvegarde respectivement pour chaque donnée mise à jour.

Selon une variante de l'invention, l'étape f- mise en œuvre est remplacée par une étape consistant à effacer le contenu de la zone de sauvegarde. Avantageusement, la taille de la zone tampon est un multiple N, N supérieur ou égal a l, de la taille de bloc prédéfinie pour la mémoire non volatile principale .

Avantageusement, après une interruption d'alimentation de la mémoire intervenant au cours d'une opération de mise à jour de la mémoire, les étapes suivantes sont mises en œuvre consistant à :

- vérifier la présence d'au moins un indicateur de sauvegarde à l'état actif dans la zone de sauvegarde; - si au moins un indicateur de sauvegarde est à l'état actif, restaurer dans la mémoire non volatile principale l'ancienne valeur de chacune des données sauvegardées dans la zone de sauvegarde dont l'indicateur de sauvegarde associé est à l'état actif, puis désactiver l'indicateur de sauvegarde correspondant .

Avantageusement, l'étape de restauration d'une donnée en mémoire consiste à :

- récupérer l'adresse de départ dans la mémoire principale du bloc de données concernée par la donnée à restaurer, à partir des informations de système

sauvegardées avec l'ancienne valeur de la donnée dans la zone de sauvegarde, lesdites informations comprenant l'adresse d'origine dans la mémoire principale de la donnée ; - reconstruire le bloc concerné tel qu'il était dans son état initial, à partir des données du bloc concerné copiées dans la zone tampon et de l'ancienne valeur de la donnée à restaurer sauvegardée dans la zone de sauvegarde ; - programmer le bloc restauré dans la mémoire à l'adresse récupérée.

Selon un mode de réalisation, si la zone tampon est vide, l'étape de reconstruction du bloc concerné par la donnée à restaurer comprend préalablement la copie dans la zone tampon des données du bloc concerné, a partir de l'adresse de départ précédemment récupérée du bloc dans la mémoire non volatile principale.

Selon une caractéristique, l'étape de programmation dans la mémoire du bloc restauré comprend d'abord l'effacement du bloc correspondant de la mémoire puis l'écriture du bloc restauré en mémoire.

Selon un mode de réalisation particulier, la mémoire non volatile principale comprend des caractéristiques de haute capacité et de grosse granularité et la zone tampon comprend des caractéristiques de faible capacité et de fine granularité .

L'invention concerne encore un appareil numérique portatif comprenant un microprocesseur, une mémoire non volatile principale effaçable par bloc de mémoire de

taille fixe prédéfinie et une zone de sauvegarde des données de la mémoire non volatile principale lors d'un processus de mise à jour des données, caractérisé en ce qu'il comprend une zone tampon de mémoire non volatile, de taille correspondante à au moins la taille fixe de bloc prédéfinie de la mémoire principale, et des moyens de gestion de la mémoire apte à commander le déroulement des opérations de mise à jour de données en mémoire conformément au procédé selon l'une quelconque des revendications précédentes.

Selon un mode de réalisation particulier, la mémoire non volatile principale comprend des caractéristiques de haute capacité et de grosse granularité et la zone tampon comprend des caractéristiques de faible capacité et de fine granularité .

De préférence, la mémoire non volatile principale est une mémoire flash.

De préférence, il s'agit d'une carte à puce. D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description suivante donnée à titre d'exemple illustratif et non limitatif et faite en référence aux figures annexées dans lesquelles : - les figures 1 et 2 illustrent les étapes du procédé de l'invention garantissant la mise à jour d'une seule donnée de la mémoire, avec respect de son intégrité ; les figures 3 à 5 illustrent les étapes du procédé de l'invention garantissant la mise à jour de deux données de la mémoire intervenant dans la

réalisation d'une transaction, avec respect du principe d'atomicité des transactions.

L'invention sera mise en œuvre de préférence dans une carte à puce, comprenant une mémoire non volatile pour stocker des données, ainsi qu'un microprocesseur pour gérer les échanges de données entre l'intérieur et l'extérieur de la carte.

Parmi les mémoires de la carte, on trouve donc une mémoire non volatile principale MNV, programmable et effaçable électriquement, pour l'enregistrement de données utiles à ou aux applications de la carte à puce. Ces données sont amenées à être modifiées au cours des utilisations successives de la carte et ces modifications doivent être réalisées en veillant au respect de l'intégrité des données. Notamment, les données mises à jour dans la mémoire ne doivent pas être perdues lors d'une interruption intempestive au cours de l'opération de mise à jour de ces données, due par exemple à l'arrachement de la carte du lecteur avec lequel elle communique pour la mise à jour des données, ou a une coupure de courant .

Dans le cadre de la présente invention, la mémoire MNV est une mémoire non volatile de grande capacité, par exemple de l'ordre de plusieurs Mégaoctets, à très haute densité d'intégration. Il s'agit par exemple d'une mémoire de type Flash NOR. La taille d'un bloc mémoire, définissant la quantité minimale d'octets qui est effectivement effacée au cours d'une seule opération d'effacement de la mémoire, peut aller de 128 octets à quelques dizaines/centaines de Ko (granularité gros grain), par exemple 8Ko, 16 Ko, 32 Ko ou plus.

La carte comprend également une zone de mémoire non volatile de sauvegarde S, programmable et effaçable électriquement, prévue pour sauvegarder l'ancienne valeur d'une donnée pendant la mise à jour de cette donnée dans la mémoire principale MNV. Cette zone de sauvegarde est représentée comme une mémoire distincte de la mémoire non volatile principale MNV. Elle peut cependant être constituée physiquement par une portion dédiée à cet effet de la mémoire principale MNV. La zone de sauvegarde est de préférence divisée en secteurs de taille égale à la taille prédéfinie d'un bloc de données de la mémoire non volatile principale MNV et chaque secteur permet de sauvegarder des données de la carte devant être mises à jour dans la mémoire principale MNV. Le champ correspondant de donnée sauvegardée dans la zone de sauvegarde est dimensionné en fonction de la taille maximale des données susceptibles d'être sauvegardées.

Des informations de système liées à la donnée sont sauvegardées en même temps dans la zone de sauvegarde.

Ces informations de système liées à la donnée sauvegardée comprennent un indicateur de sauvegarde, codé par exemple sur un bit, indiquant qu'une donnée vient d'être sauvegardée et qu'une modification est en cours. L'état actif de cet indicateur permet alors d'indiquer que l'ancienne valeur de la donnée peut être récupérée si la mise à jour ne se déroule pas correctement jusqu'à son terme.

Ces informations comprennent en outre des informations sur la longueur de données, sur l'adresse d'origine dans la mémoire principale des données

sauvegardées dans la zone de sauvegarde, et de manière générale, toute information nécessaire à l'interprétation des données stockées dans la zone de sauvegarde et au contrôle de l'intégrité de ces données. Ainsi, l'adresse d'origine d'une donnée sauvegardée est nécessaire pour pouvoir éventuellement restaurer la donnée dans le cas où la mise à jour ne se déroulerait pas correctement.

Conformément à l'invention, la carte comprend en outre une portion B de mémoire non volatile, prévue pour faire office de tampon persistant vis-à-vis des blocs entiers de données de la mémoire non volatile principale, comme il sera expliqué plus en détail ci- après . Selon un mode de réalisation, la zone tampon B est une mémoire non volatile de faible capacité, dont la taille est un multiple N (N>=1) de la taille d'un bloc de données de la mémoire non volatile principale. Il s'agit par exemple d'une mémoire de type EEPROM, FeRam, MRAM... Selon un mode de réalisation particulier donné à titre d'exemple, cette mémoire tampon peut présenter des caractéristiques intrinsèques différentes de la mémoire principale MNV et de la zone de sauvegarde S

(granularité fine de l'ordre de l'octet, avantageuse en termes de simplicité de mise à jour - pas d'intégrité bloc à gérer - et/ou de meilleure vitesse d'accès) .

La zone tampon B aux côtés de la mémoire non volatile MNV principale a pour rôle de suppléer la zone de sauvegarde S existante, utilisée classiquement par les mécanismes déjà décrits de sauvegarde et de restauration, afin de sauvegarder les blocs entiers de

données concernés par la ou les données à mettre à jour dans la mémoire non volatile principale.

La zone tampon peut permettre alors avantageusement de ne pas compromettre les performances générales du système, du fait des caractéristiques intrinsèques de la zone tampon et évite dans tous les cas, la nécessité de prévoir une taille démesurée pour la zone de sauvegarde de données S, ce qui serait problématique compte tenu des contraintes spécifiques liées aux systèmes embarqués. En effet, grâce à la zone tampon B, la zone de sauvegarde S reste, comme dans l'état de la technique, dédiée uniquement à la sauvegarde des données à mettre à jour avec leurs informations de système associé. Les blocs de données de la mémoire principale concernés par la mise à jour sont quant à eux stockés tour à tour dans la zone tampon B prévue à cet effet.

De plus, contrairement à un tampon de données classique, la zone tampon est une mémoire de type persistante, ce qui est particulièrement avantageux concernant le traitement de l'intégrité des données.

Les étapes du procédé de mise à jour selon l'invention tenant compte de l'architecture mémoire précédemment décrite, vont maintenant être décrites en référence aux figures 1 et 2, dans le cas où la sauvegarde des données est purement individuelle, c'est-à-dire lorsqu'il n'est pas nécessaire de s'assurer de la cohérence de plusieurs données à la fois. Il s'agit selon l'exemple de mettre à jour une donnée D 0 située dans le bloc P de la mémoire principale. Comme déjà expliqué auparavant, du fait des

caractéristiques de granularité de la mémoire principale MNV, le bloc P comprenant cette donnée D 0 à mettre à jour va alors devoir être effacé en entier pour permettre la mise à jour de la donnée D 0 . A l'étape 1, l'ancienne valeur de la donnée D 0 devant être mise à jour dans la mémoire non volatile principale MNV est écrite dans la zone de sauvegarde S en vue de la sauvegarder, de même que l'information de système associé I 0 , comprenant notamment son adresse d'origine et l'indicateur de sauvegarde. L'indicateur de sauvegarde est alors activé, représentant la présence de données sauvegardées et réutilisables en cas de problème. Il s'agit là du même mécanisme que celui actuellement mis en œuvre lors de la mise à jour sécurisé dans une mémoire EEPROM.

La mise à jour effective de la donnée D 0 comprend alors les étapes suivantes :

A l'étape 2, le bloc entier P de données comprenant la donnée D 0 à mettre à jour est copié dans la zone tampon B dédiée à cet effet ;

A l'étape 3, le bloc P dans la mémoire principale est effacé ;

A l'étape 4, un nouveau bloc P est reconstruit à partir des données du bloc P stockées dans la zone tampon B et de la nouvelle valeur de la donnée mise à jour Di, puis le bloc P ainsi reconstruit avec la donnée mise à jour O 1 est écrit dans la mémoire non volatile principale MNV à l'adresse correspondante, obtenue à partir des informations de système I 0 sauvegardées dans la zone de sauvegarde S ;

A l'étape 5, la zone tampon est effacée puis, à l'étape 6, l'indicateur de sauvegarde correspondant à la donnée sauvegardée D 0 est désactivé si le déroulement de l'opération a été normal d'un bout à l'autre. Une variante de l'étape 6 consiste à effacer la zone de sauvegarde .

Dans le cas où le déroulement a été normal, la carte peut être retirée du lecteur associé et réutilisée normalement. Le déroulement des dernières étapes du processus de mise à jour est ici donné à titre d'exemple. Ainsi, l'effacement de la zone tampon B peut être exécuté à un autre moment du processus, l'important étant que l'effacement de la zone tampon soit effectif avant l'étape 2 mise en œuvre lors d'un processus de mise à jour suivant. On pourrait donc prévoir un processus où l'effacement de la zone tampon serait exécuté juste avant l'étape 2 suivante. Cette remarque vaut également pour l'exemple suivant. Les figures 3 à 5 illustrent maintenant les étapes du procédé de l'invention concernant la mise à jour d'une pluralité de données de la mémoire de la carte, en l'occurrence deux données D 0 et D 2 , lesdites données devant rester cohérentes entre elles et donc, ne pouvant être mises à jour séparément. Il s'agit typiquement de données intervenant dans la réalisation d'une transaction par l'intermédiaire de la carte, par exemple une certaine valeur est retirée de la valeur courante d'une première donnée de la mémoire et la même valeur est ajoutée à la valeur courante d'une seconde donnée de la mémoire.

Le procédé selon l'invention permet avantageusement de respecter le principe d'atomicité des transactions, c'est-à-dire qu'il permet de s'assurer que la transaction est considérée comme une opération indivisible, qui ne peut que s'exécuter entièrement ou, à défaut, être annulée entièrement.

Ainsi, à l'étape 1, l'ancienne valeur de la donnée D 0 intervenant dans la transaction et devant être mise à jour dans la mémoire non volatile principale MNV est écrite dans la zone de sauvegarde S en vue de la sauvegarder, de même que l'information de système associé I 0 , comprenant notamment son adresse d'origine et l'indicateur de sauvegarde à l'état actif.

A l'étape 2, le bloc entier Pl de données comprenant la donnée D 0 à mettre à jour est copié dans la zone tampon B dédiée à cet effet ;

A l'étape 3, le bloc Pl est effacé dans la mémoire principale puis, à l'étape 4, un nouveau bloc Pl est reconstruit à partir des données du bloc Pl précédemment stockées dans la zone tampon B et de la nouvelle valeur de la donnée mise à jour Di. Le bloc Pl ainsi reconstruit avec la donnée mise à jour Di est alors écrit dans la mémoire non volatile principale MNV à l'adresse correspondante du bloc Pl, obtenue à partir des informations de système I 0 sauvegardées dans la zone de sauvegarde S ;

A l'étape 5, la zone tampon B est effacée. On répète alors consécutivement les étapes précédemment décrites du procédé, pour l'autre donnée D 2 concernée par la transaction et devant être mise à jour en même temps que la donnée D 0 .

Ainsi, à l'étape 6, l'ancienne valeur de la donnée D 2 intervenant dans la transaction et devant être mise à jour dans la mémoire non volatile principale MNV est écrite dans la zone de sauvegarde S en vue de la sauvegarder, de même que l'information de système associé I 2 , comprenant notamment son adresse d'origine et l'indicateur de sauvegarde à l'état actif.

A l'étape 7, le bloc entier P2 de données comprenant la donnée D 2 à mettre à jour est copié dans la zone tampon B dédiée à cet effet ;

A l'étape 8, le bloc P2 est effacé dans la mémoire principale puis, à l'étape 9, un nouveau bloc P2 est reconstruit à partir des données du bloc P2 précédemment stockées dans la zone tampon B et de la nouvelle valeur de la donnée mise à jour D 3 . Le bloc P2 ainsi reconstruit avec la donnée mise à jour D 3 est alors écrit dans la mémoire non volatile principale MNV à l'adresse correspondante du bloc P2 , obtenue à partir des informations de système I 2 sauvegardées dans la zone de sauvegarde S ;

A l'étape 10, la zone tampon B est effacée. Enfin, dans une étape 11, les indicateurs de sauvegarde correspondant aux données sauvegardée D 0 et D 2 sont désactivés si le déroulement de l'opération de mise à jour impliquée par la transaction a été normal d'un bout à l'autre. Les données sont mises à jour une par une, cependant les indicateurs de sauvegarde des données individuelles ne sont pas désactivés immédiatement après mise à jour de chaque donnée. On attend au contraire que toutes les données aient été mises a jour pour le faire, du fait que l'ensemble des

données forment un tout dont il faut préserver la cohérence. Ainsi, si une interruption intervient au cours du processus de mise à jour de la seconde donnée, alors que la première donnée a déjà été mise à jour, il est possible de restaurer l'état initial à la fois de la première et de la seconde donnée, puisque leur indicateur de sauvegarde est gardé à l'état actif jusqu'à la fin du processus. Ces indicateurs ne sont désactivés que si le déroulement de l'opération de mise à jour a été complet pour toutes les données concernées .

Les paragraphes suivants traitent des cas d'interruption anormale du processus de mise à jour et de la restauration des anciennes données dans leur état initial avant le début du processus de mise à jour. L'interruption est en pratique une coupure d'alimentation, notamment par retrait intempestif de la carte .

Si l'interruption anormale a lieu alors qu'au moins un indicateur de sauvegarde est à l'état actif, cela signifie qu'une opération de mise à jour d'une donnée dans la mémoire principale a commencé. On ne sait alors pas si la mémoire principale contient l'ancienne donnée, ou la nouvelle donnée, ou une zone vide résultant de l'effacement du bloc entier comprenant la donnée avant réécriture, d'où la nécessité de restaurer la mémoire dans son état initial avant le début de l'opération de mise à jour.

A chaque remise sous tension de la carte consécutive à une interruption anormale d'alimentation, des moyens de gestion de la mémoire vérifient

systématiquement la présence d' indicateurs de sauvegarde à l'état actif dans la zone de sauvegarde S de la carte. Si au moins un indicateur de sauvegarde est à l'état actif, le contenu du champ de donnée associé contenant l'ancienne valeur de la donnée en cours de mise a jour est restaurée dans la mémoire non volatile principale MNV. Puis, l'indicateur de sauvegarde correspondant est désactivé. La mémoire principale se retrouve alors dans l'état qu'elle avait avant la tentative échouée de mise à jour.

La restauration de la donnée nécessite en fait la restauration en mémoire principale du bloc complet comprenant la donnée. Pour ce faire, l'étape de restauration d'une donnée en mémoire principale consiste d'abord à récupérer l'adresse de départ dans la mémoire du bloc de données concernée par la donnée à restaurer, à partir des informations de système sauvegardées avec l'ancienne valeur de la donnée dans la zone de sauvegarde S. En effet, ces informations comprennent l'adresse d'origine dans la mémoire de la donnée, à partir de laquelle, connaissant la taille prédéfinie d'un bloc de la mémoire principale, on peut retrouver l'adresse de départ du bloc concerné.

Puis, le processus de restauration de la donnée en mémoire principale consiste à reconstruire le bloc concerné tel qu'il était dans son état initial, à partir des données du bloc concerné qui sont copiées dans la zone tampon B et de l'ancienne valeur de la donnée à restaurer qui est sauvegardée dans la zone de sauvegarde S. Le bloc restauré est alors programmé dans la mémoire principale MNV à l'adresse récupérée.

L'étape de programmation dans la mémoire du bloc restauré comprend d'abord l'effacement du bloc correspondant de la mémoire puis l'écriture du bloc restauré en mémoire. Cependant, on peut se retrouver dans une situation où la zone tampon B est vide. C'est par exemple le cas si l'interruption se produit entre les étapes 5 et 6 préalablement décrites où la zone tampon a déjà été effacée. Dans ce cas, la restauration de la mémoire principale dans son état initial comme avant la mise à jour, ne peut se baser sur la zone tampon pour reconstruire le bloc concerné de la mémoire principale dans son état initial .

On peut toutefois noter qu'au cours d'un processus de mise à jour d'une donnée, il y a toujours un bloc de données valide, correspondant au bloc de données concerné par la mise à jour, soit à son emplacement normal dans la mémoire principale, soit dans la zone tampon. Aussi, si la zone tampon B est vide, cela signifie que le bloc concerné est toujours à son emplacement normal dans la mémoire principale. On prévoit alors que l'étape de reconstruction du bloc concerné par la donnée à restaurer comprend au préalable la copie dans la zone tampon B des données du bloc concerné, prises à partir de l'adresse de départ du bloc en question dans la mémoire principale.

La copie de ce bloc de la mémoire principale vers la zone tampon persistante, en vue de restaurer le bloc dans son état initial dans la mémoire principale, a surtout comme avantage de se prémunir contre une

interruption d'alimentation anormale se produisant pendant le processus de restauration lui-même. En effet, le processus de restauration implique, lorsque le bloc restauré est programmé en mémoire principale, d'effacer le bloc concerné en mémoire principale avant d'écrire le bloc restauré. Or, une interruption anormale pendant l'étape de programmation du bloc restauré ne compromettra pas l'intégrité des données, ces dernières étant sauvegardées dans la zone tampon de mémoire non volatile.