Brevet FR3152078A1 — publié le 20250214

Système mémoire La présente description concerne un système mémoire comprenant une mémoire comprenant des blocs mémoires ; un premier bloc logique (406) configuré pour réaliser une fonction OU exclusif (XOR) d’une valeur courante d’un mode d’adressage (md) de données et d’au moins un bit d’un premier paquet de données comprenant un code de correction d’erreur d’une donnée à écrire, un deuxième paquet de données, résultant du premier bloc logique, étant stocké dans un des blocs mémoires ; et un deuxième bloc logique (416) configuré pour réaliser une fonction OU exclusif d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs mémoire et de la valeur courante du mode d’adressage (md), lors de la lecture du deuxième paquet ou postérieurement, un poids dudit bit du premier paquet de donnée correspondant à un poids dudit au moins un bit du deuxième paquet de donnée lu. Figure pour l'abrégé : Fig. 4 Système mémoire La présente description concerne de façon générale les systèmes mémoires et les procédés mis en oeuvre par ces systèmes mémoires. De nombreuses applications utilisent des systèmes mémoire pour mettre en oeuvre le stockage de donnée dans des mémoires volatiles ou non volatiles. Ces systèmes peuvent mettre en oeuvre plusieurs modes d’adressage linéaires ou entrelacés (interleaving en anglais) des données au sein de différents blocs mémoires. Des changements successifs du mode d’adressage peut néanmoins aboutir, dans certaines conditions, à une baisse de sécurisation des données stockées. Résumé Il existe un besoin d’obtenir des systèmes mémoires permettant de garder les données stockées sécurisées lors d’un changement du mode d’adressage. Un mode de réalisation pallie tout ou partie des inconvénients des systèmes mémoires connus. Un mode de réalisation prévoit un système mémoire comprenant : - une mémoire comprenant des blocs mémoires ; - un premier bloc logique configuré pour réaliser une fonction OU exclusif d’une valeur courante d’un mode d’adressage de données et d’au moins un bit d’un premier paquet de données comprenant un code de correction d’erreur d’une donnée à écrire ou ladite donnée à écrire ou ledit code de correction d’erreur d’une donnée à écrire et ladite donnée à écrire ; un deuxième paquet de données , résultant du premier bloc logique, étant stocké dans un des blocs mémoires ; et - un deuxième bloc logique configuré pour réaliser une fonction OU exclusif d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs mémoire et de la valeur courante du mode d’adressage lors de la lecture du deuxième paquet ou postérieurement à celle-ci, un poids dudit au moins un bit du premier paquet de donnée correspondant à un poids dudit au moins un bit du deuxième paquet de donnée lu . Un mode de réalisation prévoit un procédé de sécurisation d’un système mémoire, le système étant doté d’une mémoire comprenant des blocs mémoires, le procédé comprenant : - réaliser, avec un premier bloc logique, une fonction OU exclusif d’une valeur courante d’un mode d’adressage de données et d’au moins un bit d’un premier paquet de données comprenant un code de correction d’erreur d’une donnée à écrire ou ladite donnée à écrire ou ledit code de correction d’erreur d’une donnée à écrire et ladite donnée à écrire ; - stocker, dans un des blocs mémoires, un deuxième paquet de données résultant du premier bloc logique ; - réaliser, avec un deuxième bloc logique, une fonction OU exclusif d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs de mémoire , et de la valeur courante du mode d’adressage lors de la lecture du deuxième paquet ou postérieurement à celle-ci, un poids dudit au moins un bit du premier paquet de donnée correspondant à un poids dudit au moins un bit du deuxième paquet de donnée lu . Dans un mode de réalisation, un tel système ou procédé comprend en outre un décodeur de code de correction d’erreur configuré pour décoder un troisième paquet de donnée résultant du deuxième bloc logique. Dans un mode de réalisation, un tel système ou procédé comprend en outre un encodeur de code de correction d’erreur configuré pour calculer ledit code de correction d’erreur associé à ladite donnée à écrire. Dans un mode de réalisation, le premier bloc logique est configuré pour réaliser une fonction OU exclusif à partir d’un bit du premier paquet de donnée ; et - le deuxième bloc logique est configuré pour réaliser une fonction OU exclusif à partir d’un bit du deuxième paquet tel que lu depuis ledit un des blocs de mémoire ; le poids du bit du premier paquet de donnée correspondant au poids respectif du bit du deuxième paquet de donnée après lecture. Dans un mode de réalisation, l’encodeur et le décodeur de code de correction d’erreur sont de type SED. Dans un mode de réalisation, le premier bloc logique est configuré pour réaliser une fonction OU exclusif à partir de deux bits du premier paquet de donnée ; et le deuxième bloc logique est configuré pour réaliser une fonction OU exclusif à partir de deux bits du deuxième paquet tel que lu depuis ledit un des blocs de mémoire ; le poids desdits deux bits du premier paquet de donnée correspondant au poids respectif desdits deux bits du deuxième paquet de donnée après lecture. Dans un mode de réalisation, l’encodeur et le décodeur de code de correction d’erreur sont de type SECDED. Dans un mode de réalisation, le premier bloc logique est configuré pour réaliser une fonction OU exclusif à partir de trois bits du premier paquet de donnée ; et le deuxième bloc logique est configuré pour réaliser une fonction OU exclusif à partir de trois bits du deuxième paquet tel que lu depuis ledit un des blocs de mémoire ; le poids desdits trois bits du premier paquet de donnée correspondant au poids respectif desdits trois bits du deuxième paquet de donnée après lecture. Dans un mode de réalisation, l’encodeur et le décodeur de code de correction d’erreur sont de type DECTED. Dans un mode de réalisation, si le décodeur de code de correction d’erreur détecte une erreur alors le système mémoire génère une valeur d’erreur. Dans un mode de réalisation, si le décodeur de code de correction d’erreur détecte deux erreurs alors le système génère une valeur d’erreur. Dans un mode de réalisation, si le décodeur de code de correction d’erreur détecte trois erreurs alors le système mémoire génère une valeur d’erreur. Dans un mode de réalisation, la valeur du mode d’adressage correspond à un mode entrelacé ou un mode linéaire d’écriture de donnée dans lesdits blocs de mémoire. Dans un mode de réalisation, le premier paquet de donnée comprend en outre la donnée à écrire. Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la représente un exemple de circuit intégré du type auquel s’appliquent les modes de réalisation décrits ; la illustre un exemple de système mémoire du circuit intégré de la ; la illustre un exemple de mémoire du circuit intégré de la ; la illustre un exemple de système mémoire du circuit intégré de la selon un mode de réalisation ; et la illustre un procédé de sécurisation du système mémoire de la selon un mode de réalisation. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La représente un exemple de circuit intégré du type auquel s’appliquent les modes de réalisation décrits. Plus précisément, la représente un exemple de dispositif en circuit intégré 100 intégrant un système mémoire 130. Le système mémoire 130 intègre une mémoire 104 (Memory) volatile, par exemple de type RAM ou non-volatile, par exemple de type FLASH. La mémoire 104 comprend par exemple plusieurs blocs mémoires 107, 109 (CUT1, CUT2). La mémoire 104 est capable de communication, via un ou des bus de communications 103, 105, avec un circuit de pilotage 106 (Memory controller) configuré pour écrire ou lire des données dans ou depuis la mémoire 104. Dans un exemple le bus 105 est dédié au bloc mémoire 107, et le bus 103 est dédié au bloc mémoire 109. Les bus 103 et 105 sont par exemple regroupés en un seul bus. Le système mémoire 130 intègre par exemple le circuit de pilotage 106 qui comprend un circuit matériel encodeur dédié qui, lorsqu’il est activé, est configuré pour calculer un code correcteur d’erreur (ECC pour Error Correction Code en anglais) lors de l’écriture de chaque élément dans un des blocs mémoire 107, 109. Les bus de communication 103, 105 sont par exemple des bus d’adresse, et de paquets de données comprenant des données à écrire et leur code de correction d’erreur associé (Data+ECC, Addr c2 et Data+ECC, Addr c1 respectivement). Le circuit de pilotage met en oeuvre par exemple plusieurs modes d’adressage linéaires ou entrelacés (interleaving en anglais) pour écrire des données au sein de différents blocs mémoires. Le circuit de pilotage 106 reçoit, par exemple par le bus 114 ou par un autre bus, une information (md), par exemple sous forme d’un bit, sur le mode d’adressage à utiliser pour écrire et/ou lire les données dans les différents blocs mémoires 107, 109. Le dispositif 100 comprend en outre, par exemple, une unité de traitement 110 (CPU) comprenant un ou plusieurs processeurs sous contrôle d’instructions stockées dans une mémoire d’instructions 112 (INSTR MEM). La mémoire d’instruction 112 est par exemple de type à accès aléatoire (en anglais Random Access Memory, RAM). L’unité de traitement 110 et la mémoire 112 communiquent, par exemple, via un bus système 140 (de données, d'adresses et de commande). Le circuit de pilotage 106 est par exemple relié au bus système 140 par l’intermédiaire d’un pare-feu 113 et d’un ou plusieurs bus de communication 114. Le bus de communication 114 permet par exemple l’échange d’adresses, de données, et de données relatives à des erreurs sur des codes de correction d’erreur (Data, Addr, ECC Error). Le pare-feu 113 protège les données sensibles en les filtrant se basant sur leur adresse. Le pare-feu traite, en collaboration avec par exemple le bus 140, des données et des adresses systèmes (Data, System Addr). Le dispositif 100 comprend en outre une interface d’entrée/sortie 108 (I/O INTERFACE) reliée au bus système 140 pour communiquer avec l'extérieur. Le dispositif 100 peut intégrer d'autres circuits mettant en oeuvre d'autres fonctions (par exemple, une ou plusieurs mémoires volatiles et/ou non-volatiles, d'autres unités de traitement), symbolisées par un bloc 116 (FCT) en . La illustre un exemple d’un système mémoire 130 du circuit intégré de la . Dans l’exemple représenté, le circuit de pilotage 106 du système mémoire 130 comprend un circuit encodeur 206 (ECC encoder) de code de correction d’erreur configuré pour calculer un code de correction d’erreur (ECC WR TO mem) associé à une donnée à écrire (Data WR in) fournie sur le bus 114 par exemple. La donnée (Data WR TO mem), ainsi que son code de correction d’erreur associé ECC WR TO mem, sont fournis au bus 105, par exemple sous forme d’un ou plusieurs paquets de donnée, pour écriture dans la mémoire 104. Lorsque la donnée et son code de correction d’erreur associé sont arrangés dans un paquet de donnée, autrement appelé mot, ils peuvent être arrangés sous la forme ECC_Data. Dans un exemple, l’encodeur et le décodeur 206, 216 appliquent un code de Hamming ou un code de Golay. Dans l’exemple représenté, le circuit de pilotage 106 du système mémoire 130 comprend en outre un circuit décodeur 216 (ECC decoder) de code de correction d’erreur configuré pour décoder le code de correction d’erreur (ECC RD from mem) du paquet de donnée (ECC RD from mem + Data RD from mem) issu de la lecture du paquet de donnée qui avait été précédemment écrit dans la mémoire 104. Le décodeur 216 lève, par exemple sur le bus 114, un drapeau (ECC Error) indiquant qu’une erreur a été relevée dans le paquet de données lu et comprenant par exemple le code correcteur d’erreur (ECC RD from mem) et la donnée lue (Data RD in). Les circuits 206 et 216 sont par exemple des circuits matériels. Dans certains cas, il peut arriver que, lors de l’écriture en mémoire du ou des paquets de données, un ou plusieurs bits du paquet de données soient inversés (i.e. que pour un bit de poids donné, la valeur inverse soit enregistrée) (phénomène appelé bit flip en anglais). Dans ce cas, le code correcteur d’erreur ECC peut être utilisé. Le code correcteur d’erreur peut être utilisé pour corriger une ou plusieurs erreurs dans un paquet de données lu en mémoire, lors d’une étape de décodage. Il existe différents types de code correcteur d’erreur : SED, pour Single Error Detection , est un code correcteur d’erreur permettant uniquement la détection d’une erreur par paquet lu en mémoire. Lorsqu’une erreur est détectée dans le paquet lu en mémoire, un code d’erreur ou une valeur nulle est retournée. SECDED, pour Single Error Correction and Double Error Detection , est un code correcteur d’erreur permettant de corriger une erreur et de détecter jusqu’à deux erreurs par paquet de données lu en mémoire. Lorsque deux erreurs sont détectées dans le paquet lu en mémoire, un code d’erreur ou une valeur nulle est retournée. DECTED, pour Double Error Correction and Triple Error Detection , est un code correcteur d’erreur permettant de corriger jusqu’à deux erreurs et de détecter jusqu’à trois erreurs par paquet de données lu en mémoire. Lorsque trois erreurs sont détectées dans le paquet lu en mémoire, un code d’erreur ou une valeur nulle est retournée. Ainsi, l’encodeur et le décodeur 206, 216, lorsqu’ils sont de type SED, permettent la correction d’une inversion sur un bit du paquet de donnée. Lorsqu’ils sont de type SECDED permettent la correction d’une inversion sur un bit du paquet de donnée et la détection de deux modifications de bit. Lorsqu’ils sont de type DECTED, ils permettent la correction de deux inversions de bit et la détection de trois modifications de bit. Pour résumer, pour un encodeur 206 et un décodeur 216 de type SECDED, si un bit est inversé soit dans le code de correction d’erreur, soit dans la donnée lue, alors la donnée Data RD in est égale à la donnée Data WR in car le décodeur a corrigé la donnée ou le code ECC du paquet lus. Si deux bits sont inversés, alors la donnée Data RD in est passée à 0 et le drapeau ECC Error est levé par le décodeur. Dans le cas où 3 bits ou plus sont inversés, le résultat du décodeur 216 est imprédictible. La illustre un exemple de mémoire 104 du circuit intégré de la . Plus précisément, l’exemple de la illustre les blocs mémoires 107 et 109 dans le cas où le mode d’adressage est de type linéaire (Linear mode) (cas illustré à gauche) et dans le cas où le mode d’adressage est de type entrelacé (Interleaved mode) (cas illustré à droite). Dans le cas du mode linéaire, le bloc mémoire 107 est remplit avec des données suivant des adresses système (System Addr) incrémentées linéairement par exemple de 0x0 à 0x7. La suite des données est copiée avec les adresses systèmes 0x8 à 0xF de la même façon. Dans le cas du mode entrelacé, les données sont par exemple écrites avec des adresses incrémentées de deux en deux. Dans l’exemple représenté, les adresses dans le premier bloc de mémoire 107 sont 0x0 puis 0x2 puis 0x4 etc. jusqu’à 0xE et les adresses dans le deuxième bloc de mémoire 109 sont 0x1 puis 0x3 puis 0x5 etc. jusqu’à 0xF. Le pare-feu définit, dans l’exemple représenté en mode linéaire, les données des adresses 0x4, 0x5, 0x6, 0x7 du bloc 107 (zone 310) et 0x8, 0x9, 0xA, 0xB à 0xB du bloc 109 (zone 320) comme étant des données à sécuriser, par exemple des clés d’encryption. Lors d’un changement d’un mode d’adressage, par exemple en passant du mode d’adressage linéaire au mode d’adressage entrelacé, les adresses systèmes sont utilisées différemment dans les blocs mémoires 107 et 109. Pour chaque mode d’adressage, des zones sécurisées d’adresses sont définies et destinées au stockage de données sécurisées. Également, des zones non-sécurisées d’adresses sont définies et destinées au stockage de données non sécurisées. Certaines adresses peuvent, en mode linéaire, faire partie d’une zone sécurisée d’adresses et, en mode entrelacé, faire partie d’une zone non-sécurisée d’adresses. Dans l’exemple représenté, les adresses 0x4 et 0x6, ainsi que 0x9 et 0xB, ne sont pas comprises dans des zones d’adresse 310 et 320 définissants les données sécurisées, alors qu’elles le sont en mode linéaire. Lors du changement de mode d’adressage, d’un mode linéaire vers un mode entrelacé, les adresses 0x4 et 0x6 ainsi que 0x9 et 0xB deviennent ainsi accessibles, si bien qu’un pirate (hackeur) pourrait profiter de ce changement de mode pour accéder à des données sécurisées. Pour palier à ces problèmes, il est possible d’effacer les blocs mémoires. Cependant, cet effacement requiert une durée importante, notamment dans le cas des mémoires non volatiles. Dans une autre solution, le code de correction d’erreur peut être basé sur la donnée et son adresse. Cela nécessite néanmoins une augmentation des ressources matérielles et impacte la vitesse d’exécution. Une solution alternative est d’ajouter un bit additionnel pour stocker le mode d’adressage utilisé durant l’opération d’écriture mais cela entraîne l’augmentation de la taille de la mémoire 104. Les modes de réalisation prévoient un système mémoire comprenant un premier bloc logique configuré pour réaliser une fonction OU exclusif (XOR) d’une valeur courante d’un mode d’adressage de données et d’au moins un bit d’un premier paquet de donnée comprenant un code de correction d’erreur d’une donnée à écrire, un deuxième paquet de donnée, résultant du premier bloc logique, étant stocké dans un des blocs mémoires; et un deuxième bloc logique configuré pour réaliser une fonction OU exclusif d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs mémoire et de la valeur courante du mode d’adressage, lors de la lecture du deuxième paquet ou postérieurement à celle-ci, un poids dudit au moins un bit du premier paquet de donnée correspondant à un poids dudit au moins un bit du deuxième paquet de donnée après lecture. Grâce à un tel système mémoire, si le mode d’adressage change (d’un mode linéaire à un mode entrelacé ou l’inverse), entre l’écriture de la donnée à écrire et son code de correction d’erreur associé en mémoire, et la lecture de cette donnée avec son code de correction d’erreur, il est possible de détecter, avec le décodeur, une erreur qui permettra par exemple d’interdire l’accès à la donnée écrite. Cela permet en outre de rendre inaccessibles les données sécurisées lors d’un changement du mode d’adressage et ce sans augmenter la taille mémoire. En effet, si le mode d’adressage change entre l’écriture et la lecture de la donnée, et que la valeur du mode d’adressage est différente, au moins une erreur sera contenue dans le paquet de données lu. Dans le cas où le code correcteur d’erreur est de type SED, alors un drapeau (flag) de détection d’erreur sera levé, et lors de la lecture un code d’erreur ou une valeur nulle sera retournée. Lorsque le code correcteur d’erreur est d’un autre type, par exemple SECDED ou DECTED, les blocs logiques sont alors configurés pour faire des opérations sur respectivement deux et trois bits, afin qu’un code d’erreur ou une valeur nulle soit retournée en cas de changement de mode d’adressage entre l’écriture et la lecture. L’opération XOR est effectuée sur un premier paquet qui peut être le code correcteur d’erreur ou les données à écrire ou une concaténation du code correcteur d’erreur et des données à écrire. La illustre un exemple de système mémoire 130 du circuit intégré de la selon un mode de réalisation. Le système mémoire de la est similaire à celui de la sauf que le circuit de pilotage 106 comprend un premier bloc logique 406 (XOR one or more bits with md) et un deuxième bloc logique 416 (XOR one or more bits with md) configurés pour réaliser une fonction OU exclusif (XOR) sur au moins un bit choisi de ce qu’ils reçoivent en entrée. Dans le cas d’encodeurs et décodeurs 206, 216 de type SED alors l’opération OU exclusif est appliquée sur un seul bit. Dans le cas d’encodeurs et décodeurs 206, 216 de type SECDED alors l’opération OU exclusif est appliquée sur deux bits choisis. Dans le cas d’encodeurs et décodeurs 206, 216 de type DECTED alors l’opération OU exclusif est appliquée sur trois bits choisis. Les bits choisis et qui vont subir l’opération OU exclusif, sont soit sur le code correcteur d’erreur, soit sur la donnée soit sur les deux. Le premier bloc logique 406 réalise la fonction OU exclusif à partir de la valeur courante du mode d’adressage md, c’est-à-dire la valeur md au moment de l’encodage ECC ou jusqu’à la réalisation de l’opération XOR. La fonction OU exclusif est également réalisée à partir d’au moins un bit du paquet de donnée comprenant la donnée à écrire Data WR in et son code de correction d’erreur associé ECCin. Le code de correction d’erreur associé ECCin à la donnée à écrire Data WR in, est obtenu avec l’encodeur 206. A titre d’illustration, dans le cas où l’encodeur 206 et le décodeur 216 sont de type SECDED, si ECCin=111 et Data WR in=0101 alors le paquet de donnée associé est par exemple sous la forme 111_0101 (ou 0101_111). Si le mode d’adressage courant est par exemple entrelacé et que l’on associe arbitrairement la valeur 1 à ce mode, et si on souhaite que la fonction OU exclusif du premier bloc logique 406 soit appliquée sur le bit de poids plus faible de ECCin 11 1 et le bit de poids le plus fort de Data WR in 0 101, alors en sortie du premier bloc logique on obtient une donnée XOR Data WR TO mem=1101 et un code correcteur d’erreur XOR ECC WR TO mem=110. Le paquet de donnée en sortie du bloc 406 avant l’écriture dans un des blocs mémoires est alors 110_1101. La donnée XOR Data WR TO mem et le code ECC, XOR ECC WR TO mem, résultant du bloc logique 406, sont soit fournis séparément sur le bus 105 soit fournis sur le bus 105 sous la forme d’un paquet de donnée, par exemple sous la forme 110_1101 comme dans l’exemple précédent. La donnée XOR Data WR TO mem et le code ECC, XOR ECC WR TO mem, sont stockées ensuite dans un des blocs mémoire de la mémoire 104. Cette donnée et son code d’erreur associé sont ensuite lus et sont dénommés à ce moment-là par exemple Data RD from mem et ECC RD from mem. La donnée Data RD from mem et son code d’erreur associé ECC RD from mem qui ont été lus sont ensuite utilisés, par exemple sous forme d’un paquet ECC RD from mem_Data RD from mem en entrée du deuxième bloc logique 416. Le deuxième bloc logique 416 réalise alors une fonction OU exclusif (XOR) d’au moins un bit du paquet ECC RD from mem_Data RD from mem et de la valeur courante du mode d’adressage md. La valeur courante md correspond à la valeur du mode d’adressage lors de la lecture de la donnée Data RD from mem et de son code d’erreur associé ECC RD from mem (ou du paquet de donnée formé par ceux-ci), ou postérieurement à cette lecture au moment de réaliser l’opération OU exclusif par exemple. La fonction OU exclusif est effectuée sur le ou les mêmes bits que ceux qui ont été utilisés dans le premier bloc logique 406. Autrement dit, l’opération du deuxième bloc logique 406 s’applique sur les bits de même poids que ceux utilisés pour appliquer la fonction OU exclusif sur la donnée Data WR in et/ou sur ECCin. Pour reprendre l’exemple d’illustration précédent, si le mode d’adressage courant a été changé lors ou après la lecture et devient par exemple linéaire et que l’on associe arbitrairement la valeur 0 à ce mode linéaire, la fonction OU exclusif du deuxième bloc logique 416 est appliquée par exemple sur le bit de poids plus faible de ECC RD from mem et le bit de poids le plus fort de Data RD from mem, alors, en sortie du deuxième bloc logique 416, on obtient une donnée XOR Data RD in=1101 et le code correcteur d’erreur XOR ECC RD=110. XOR Data RD in et XOR ECC RD sont par exemple arrangés dans un paquet de donnée en sortie du bloc 416 et dans l’exemple présent avec la forme 110_1101. Le décodeur 216 analyse le code de correction d’erreur XOR ECC RD et la donnée XOR Data RD. En sortie du décodeur 216, si le mode d’dressage md n’a pas été changé entre le bloc 206 et le bloc 416, et qu’aucune erreur d’écriture ou de lecture n’a eu lieu, le drapeau ECC Error n’est pas levé et la donnée Data RD in sera la même que Data WR in. Si, par contre, comme dans l’exemple d’illustration, le mode d’adressage md a été changé entre le bloc 206 et le bloc 416, alors le décodeur va lever le drapeau ECC Error - par exemple en le passant à 1 - car le code de correction d’erreur XOR ECC RD et la donnée XOR Data RD ne sont pas cohérents entre eux. Dans ce cas-là, la donnée Data RD in est mise à 0 par exemple et une erreur du type erreur de bus ou une valeur nulle est envoyée à l’unité de traitement 110. Cela permet de rendre inaccessibles les données sécurisées lors d’un changement du mode d’adressage et ce sans augmenter la taille mémoire. La illustre un procédé de sécurisation du système mémoire de la selon un mode de réalisation. Dans cet exemple, une première étape 502 (Start) signale le démarrage du procédé de sécurisation. Dans une étape 504 ultérieure (Provide word comprising ECCin from Data to write), le code de correction d’erreur ECCin est calculé par l’encodeur 206 à partir de la donnée à écrire Data WR in. Dans une étape 506 ultérieure (XOR one or more bits of the word with address mode value md), il est réalisé une fonction OU exclusif XOR de la valeur courante du mode d’adressage md de données et d’au moins un bit d’un premier paquet de donnée, par exemple sous la forme ECCin_Data WR in, comprenant le code de correction d’erreur ECCin et la donnée Data WR in à écrire. Dans une étape 508 ultérieure (Store word resulting from XOR operation in memory) un deuxième paquet de donnée, par exemple sous la forme XOR ECC WR TO mem_XOR Data WR TO mem, résultant du premier bloc logique 406, est stocké dans un des blocs mémoires 107, 109. Dans une étape 510 ultérieure (XOR one or more bits of read word with address mode value md), il est réalisé, avec le deuxième bloc logique 416, une fonction OU exclusif XOR d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs de mémoire 107, 109, et de la valeur courante du mode d’adressage md lors de la lecture du deuxième paquet ou postérieurement à celle-ci. Le poids du ou des bits du premier paquet de donnée subissant la fonction XOR correspond à un poids du ou des bits du deuxième paquet de donnée subissant la fonction XOR après lecture. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. En particulier, le ou les bits sur lesquels sont effectuées les opérations XOR sont par exemple uniquement sur les codes ECCin et ECC RD from mem, ou bien uniquement sur les données Data RD from mem et Data WR in. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, pour ce qui est de l’agencement du code de correction d’erreur et de la donnée correspondante, qui peuvent être traités, soit sous forme de paquet comme dans l’exemple d’illustration, soit individuellement. De plus, le nombre de bits impliqués dans les blocs logiques 406 et 416 sont fonction du type d’encodage et de décodage SED, SECDED, DECTED. D’autre part, d’autres types de codes, différents de Hamming ou Golay, peuvent être utilisées pour le code de correction d’erreur. Système mémoire comprenant : - une mémoire comprenant des blocs mémoires (107, 109) ; - un premier bloc logique (406) configuré pour réaliser une fonction OU exclusif (XOR) d’une valeur courante d’un mode d’adressage (md) de données et d’au moins un bit d’un premier paquet de données (ECCin_Data WR in) comprenant un code de correction d’erreur (ECCin) d’une donnée à écrire (Data WR in) ou ladite donnée à écrire (Data WR in) ou ledit code de correction d’erreur (ECCin) d’une donnée à écrire (Data WR in) et ladite donnée à écrire (Data WR in) ; un deuxième paquet de données (XOR ECC WR TO mem_XOR Data WR TO mem), résultant du premier bloc logique (406), étant stocké dans un des blocs mémoires (107, 109) ; et - un deuxième bloc logique (416) configuré pour réaliser une fonction OU exclusif (XOR) d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs mémoire (ECC RD from mem_Data RD from mem) et de la valeur courante du mode d’adressage (md) lors de la lecture du deuxième paquet ou postérieurement à celle-ci, un poids dudit au moins un bit du premier paquet de donnée (ECCin_Data WR in) correspondant à un poids dudit au moins un bit du deuxième paquet de donnée lu (ECC RD from mem_Data RD from mem). Système selon la revendication 1, comprenant en outre un décodeur de code de correction d’erreur (216) configuré pour décoder un troisième paquet de donnée (XOR Data RD in_XOR ECC RD) résultant du deuxième bloc logique (416). Système selon la revendication 2, comprenant en outre un encodeur de code de correction d’erreur (206) configuré pour calculer ledit code de correction d’erreur (ECCin) associé à ladite donnée à écrire (Data WR in). Système selon la revendication 3, dans lequel : - le premier bloc logique (406) est configuré pour réaliser une fonction OU exclusif (XOR) à partir d’un bit du premier paquet de donnée (ECCin_Data WR in); et - le deuxième bloc logique (416) est configuré pour réaliser une fonction OU exclusif (XOR) à partir d’un bit du deuxième paquet tel que lu depuis ledit un des blocs de mémoire (ECC RD from mem_Data RD from mem). Système selon la revendication 4, dans lequel l’encodeur (206) et le décodeur (216) de code de correction d’erreur sont de type SED. Système selon la revendication 3, dans lequel : - le premier bloc logique est configuré pour réaliser une fonction OU exclusif (XOR) à partir de deux bits du premier paquet de donnée (ECCin_Data WR in); et - le deuxième bloc logique est configuré pour réaliser une fonction OU exclusif (XOR) à partir de deux bits du deuxième paquet tel que lu depuis ledit un des blocs de mémoire (ECC RD from mem_Data RD from mem); le poids desdits deux bits du premier paquet de donnée (ECCin_Data WR in) correspondant au poids respectif desdits deux bits du deuxième paquet de donnée après lecture (ECC RD from mem_Data RD from mem). Système selon la revendication 6, dans lequel l’encodeur et le décodeur de code de correction d’erreur sont de type SECDED. Système selon la revendication 3, dans lequel : - le premier bloc logique est configuré pour réaliser une fonction OU exclusif (XOR) à partir de trois bits du premier paquet de donnée (ECCin_Data WR in); et - le deuxième bloc logique est configuré pour réaliser une fonction OU exclusif (XOR) à partir de trois bits du deuxième paquet tel que lu depuis ledit un des blocs de mémoire (ECC RD from mem_Data RD from mem); le poids desdits trois bits du premier paquet de donnée (ECCin_Data WR in) correspondant au poids respectif desdits trois bits du deuxième paquet de donnée après lecture (ECC RD from mem_Data RD from mem). Système selon la revendication 8, dans lequel l’encodeur et le décodeur de code de correction d’erreur sont de type DECTED. Système selon la revendication 4 ou 5, dans lequel si le décodeur de code de correction d’erreur (216) détecte une erreur alors le système mémoire (130) génère une valeur d’erreur (ECC Error). Système selon la revendication 6 ou 7, dans lequel si le décodeur de code de correction d’erreur (216) détecte deux erreurs alors le système génère une valeur d’erreur (ECC Error). Système selon la revendication 8 ou 9, dans lequel si le décodeur de code de correction d’erreur (216) détecte trois erreurs alors le système mémoire génère une valeur d’erreur (ECC Error). Système selon l’une quelconque des revendications 1 à 12, dans lequel la valeur du mode d’adressage (md) correspond à un mode entrelacé ou un mode linéaire d’écriture de donnée dans lesdits blocs de mémoire (107, 109). Système selon l’une quelconque des revendications 1 à 13, dans lequel le premier paquet de donnée (ECCin_Data WR in) comprend en outre la donnée à écrire (Data WR in). Procédé de sécurisation d’un système mémoire selon l’une quelconque des revendications 1 à 14, le système étant doté d’une mémoire comprenant des blocs mémoires (107, 109), le procédé comprenant : - réaliser, avec un premier bloc logique (406), une fonction OU exclusif (XOR) d’une valeur courante d’un mode d’adressage (md) de données et d’au moins un bit d’un premier paquet de données (ECCin_Data WR in) comprenant un code de correction d’erreur (ECCin) d’une donnée à écrire (Data WR in) ou ladite donnée à écrire (Data WR in) ou ledit code de correction d’erreur (ECCin) d’une donnée à écrire (Data WR in) et ladite donnée à écrire (Data WR in) ; - stocker, dans un des blocs mémoires (107, 109), un deuxième paquet de données (XOR ECC WR TO mem_XOR Data WR TO mem) résultant du premier bloc logique ; - réaliser, avec un deuxième bloc logique (416), une fonction OU exclusif (XOR) d’au moins un bit du deuxième paquet tel que lu depuis ledit un des blocs de mémoire (ECC RD from mem_Data RD from mem), et de la valeur courante du mode d’adressage (md) lors de la lecture du deuxième paquet ou postérieurement à celle-ci, un poids dudit au moins un bit du premier paquet de donnée (ECCin_Data WR in) correspondant à un poids dudit au moins un bit du deuxième paquet de donnée lu (ECC RD from mem_Data RD from mem).