Brevet FR3099595A1 — publié le 20210205

Description Titre de l'invention : Procédé de contrôle d'une mémoire à code correcteur d'erreur Domaine technique [0001] La présente invention concerne un procédé de contrôle d'une mémoire à code correcteur d'erreur, et un dispositif pour mettre en oeuvre un tel procédé. Technique antérieure [0002] Avec l'augmentation de l'intégration des composants électroniques, les gravures sont de plus en plus fines et les éléments mémoires (bits mémoire) sont de plus en plus sensibles à un changement d'état à cause des ions à haute énergie ou aux rayonnements électromagnétiques présents dans l'atmosphère et pouvant frapper ces composants. Ce phénomène est appelé SEU ou MBU. Cette sensibilité augmente avec la finesse de gravure mais aussi avec l'altitude. Ce problème est donc particulièrement présent dans les aéronefs. [0003] Certaines mémoires connues sont équipées d'un code correcteur d'erreurs interne (ECC). Un tel code correcteur d'erreurs est capable de corriger une corruption de la mémoire qui l'embarque. Cette correction se fait à la volée, lors d'une lecture. [0004] Toutefois, ces mémoires présentent l'inconvénient ne pas donner d'information sur l'état de fonctionnement de leur code correcteur d'erreurs interne. Un composant extérieur à la mémoire et ayant lue une donnée stockée dans cette mémoire ne sait pas si cette donnée a fait l'objet d'une correction ou pas. [0005] Les conséquences d'un mauvais fonctionnement d'un tel code correcteur d'erreurs peuvent être catastrophiques lorsque la mémoire utilisant ce code est embarquée dans un aéronef. En principe, une telle mémoire ne devrait pas avoir le droit d'être utilisé dans un contexte aéronautique sans garanties sur le bon fonctionnement de son code correcteur d'erreurs interne. Exposé de l'invention [0006] Un but de l'invention est de pouvoir tester le bon fonctionnement d'une mémoire à code correcteur d'erreur. [0007] Il est à cet effet proposé, selon un premier aspect, un procédé de contrôle d'une mémoire configurée pour corriger une corruption éventuelle du contenu d'une zone de la mémoire à l'aide d'un code correcteur d'erreurs avant une lecture subséquente du contenu de la zone, le procédé comprenant des étapes de : - lecture du contenu de la zone après l'écriture d'une donnée dans la zone, - obtention d'une somme de contrôle propre à la zone, la somme de contrôle ayant été calculée lors de l'écriture de la donnée dans la zone, 2 - vérification de cohérence entre le contenu lu et la somme de contrôle obtenue, - en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue, signalement d'un dysfonctionnement du code correcteur d'erreur. [0008] Certaines caractéristiques préférées mais non limitatives du procédé de contrôle décrit ci-dessus sont les suivantes, prises individuellement ou en combinaison : - la somme de contrôle est un bit de parité. - la mémoire est une mémoire vive, par exemple de type statique. - la zone a une taille égale à un octet. - la somme de contrôle a été calculée et mémorisé par la mémoire, et est obtenue par lecture de la mémoire. - le procédé de contrôle comprenant par ailleurs une commande de réinitialisation de la mémoire en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue. Et/ou - la vérification de cohérence et le signalement sont mises en oeuvre par un dispositif de contrôle extérieur à la mémoire. [0009] Selon un deuxième aspect, l'invention propose un dispositif de contrôle pour contrôler une mémoire configurée pour corriger une corruption éventuelle du contenu d'une zone de la mémoire à l'aide d'un code correcteur d'erreurs avant une lecture subséquente du contenu de la zone, le dispositif de contrôle étant configure pour : - lire le contenu de la zone après l'écriture d'une donnée dans la zone, - obtenir une somme de contrôle propre à la zone, la somme de contrôle ayant été calculée lors de l'écriture de la donnée dans la zone, - vérifier une cohérence entre le contenu lu et la somme de contrôle obtenue, - en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue, signaler un dysfonctionnement du code correcteur d'erreur. [0010] Selon un troisième aspect, l'invention propose un ensemble comprenant une mémoire à code correcteur d'erreur, et un dispositif de contrôle comme décrit ci-dessus pour contrôler la mémoire, le dispositif de contrôle étant extérieur à la mémoire. [0011] Selon un quatrième aspect, l'invention propose un système de contrôle du fonc- tionnement d'une turbomachine comprenant un dispositif comme décrit ci-avant ou un ensemble comme décrit ci-dessus. Brève description des dessins [0012] D'autres caractéristiques, buts et avantages de l'invention ressortiront de la des- cription qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : [0013] [fig.l] La figure 1 illustre de façon schématique un système de contrôle du fonc- tionnement d'une turbomachine d'aéronef, selon un mode de réalisation. 3 100141 Ifig.21 La figure 2 est un organigramme d'étapes d'un procédé de contrôle d'une mémoire à code correcteur d'erreurs, selon un mode de réalisation. [0015] Sur l'ensemble des figures, les éléments similaires portent des références identiques. Description des modes de réalisation [0016] En référence à la figure 1, un système de contrôle du fonctionnement d'une tur- bomachine d'aéronef, par exemple de type FADEC, comprend une mémoire à code correcteur d'erreur, et un dispositif de contrôle. [0017] La mémoire est une mémoire vive, par exemple de type statique (SRAM). [0018] La mémoire se présente sous la forme d'un composant électronique comprenant une interface d'entrée/sortie 4, une unité de stockage 6 contenant une pluralité de zones mémoire, et une unité de correction 8. [0019] Chaque zone mémoire de l'unité de stockage 6 est susceptible de faire l'objet d'un accès en lecture ou en écriture via l'interface d'entrée/sortie 4, par des composants extérieurs à la mémoire 2. [0020] L'unité de correction 8 est configuré pour mettre en oeuvre un code correcteur d'erreurs (ECC en anglais). Dc façon connue en soi, le code correcteur d'erreurs est configuré pour corriger une corruption éventuelle du contenu d'une zone de l'unité de stockage 6 avant une lecture subséquente du contenu de cette zone. [0021] La mémoire 2 comprend également une unité de calcul 10. Cette unité est configurée pour calculer une somme de contrôle sur le contenu d'une zone donnée de la mémoire. Sur la figure 1, les unités 8 et 10 sont distinctes, niais pourraient être confondues. [0022] Par convention, on considère dans le présent texte que le ternie « zone » désigne un emplacement mémoire sur lequel une somme de contrôle peut être calculée par l'unité de calcul 8. Autrement dit, une zone donnée de la mémoire peut disposer d'une somme de calcul qui lui est propre. [0023] Par exemple, une somme de contrôle calculée par l'unité de calcul 8 se rapport à une zone faisant un octet. [0024] La mémoire 2 est capable de mémoriser une somme de contrôle de calcul dans un emplacement mémoire dédié (dans l'unité de stockage 6, dans l'unité de calcul 10 ou ailleurs). [0025] Par ailleurs, le dispositif de contrôle 3 a pour fonction de vérifier le bon fonc- tionnement du code correcteur d'erreurs interne à la mémoire 2. [0026] Le dispositif de contrôle 2 comprend par exemple un processeur configuré pour mettre en oeuvre un programme assurant une telle vérification. [0027] Le dispositif de contrôle 2 est un composant distinct de la mémoire 2. [0028] Le dispositif de contrôle 2 est notamment agencé pour pouvoir accéder au contenu des zones de l'unité de stockage 6, et également obtenir les sommes de contrôles calculées par l'unité de calcul de la mémoire, via l'interface d'entrée/sortie 4. [0029] Un procédé mis en oeuvre par le système 1 de contrôle du fonctionnement d'une tur- bomachine comprend les étapes suivantes. [0030] La mémoire 2 reçoit, via son interface d'entrée/sortie, une donnée à écrire dans une zone à la demande d'un autre équipement du système 1. [0031] La mémoire 2 écrit la donnée dans une zone de l'unité de stockage 6, zone que l'on appellera dans la suite zone de référence. [0032] L'écriture réalisée induit une modification du contenu de la zone de référence. [0033] Une fois l'écriture terminée, l'unité de calcul 10 calcule une somme de contrôle sur le contenu de la zone de référence. La somme de contrôle renseigne ainsi sur la donnée ayant été écrite dans la mémoire. [0034] La somme de contrôle est calculée au moyen d'une fonction prédéterminée prenant en entrée le contenu de la zone mémoire au terme de l'écriture de la donnée. [0035] Dans le cas où la somme de contrôle est un hit de parité, la fonction calcule la somme des bits de la zone de référence. Le hit de parité est positionné à 0 ou 1 en fonction de la parité de la somme calculée. [0036] La somme de contrôle calculée est mémorisée dans la mémoire 2. [0037] Après écriture de la donnée dans la zone de référence, la zone mémoire peut être corrompu sous l'effet de rayonnements électromagnétiques (SEU ou MBU, comme indiqué en introduction). Lors d'une telle corruption, le contenu de la mémoire est à nouveau modifié. [0038] Le code correcteur d'erreurs mis en oeuvre par l'unité de correction 8 détecte la survenance d'une telle corruption et corrige dans ce cas le contenu de la zone de référence, à l'aide d'une méthode connue en elle-même. Cette méthode peut notamment se fonder sur l'utiliser d'un code de Hamming. [0039] Lorsque cette correction réussit, le contenu de la zone de référence avant corruption est restauré. Toutefois, le code correcteur d'erreurs peut subir un dysfonctionnement au point de ne pas détecter une telle corruption, ou bien ne pas réussir à corriger le contenu de la zone de référence, notamment lorsque la corruption a eu pour conséquence de modifier un nombre trop important de bits de la zone de référence. [0040] En référence à la figure 2, le dispositif de contrôle 3 met en oeuvre les étapes suivantes pour vérifier si le code correcteur d'erreurs a fonctionné correctement. [0041] Le dispositif de contrôle accède en lecture à la zone de référence, via l'interface entrée/sortie 4 (étape 100). Cette étape 100 comprend typiquement l'émission d'une requête d'accès en lecture générée par le dispositif de contrôle 3 à destination de la mémoire 2, et la réception subséquente d'une réponse restituant le contenu de la zone de référence. [0042] 11 est à noter que le code correcteur d'erreurs peut ne pas avoir encore été utilisé depuis l'écriture de la donnée dans la zone de référence lorsque le dispositif de contrôle émet la requête d'accès en lecture. Dans ce cas, l'utilisation de ce code correcteur est déclenchée par l'unité de correction 8 dès réception de la requête d'accès en lecture, avant que le contenu de la zone de référence ne soit retourné à cc dernier. [0043] Le dispositif de contrôle 3 obtient par ailleurs la somme de contrôle ayant été calculée pour la zone de référence (étape 102). Pour obtenir cette somme de contrôle, le dispositif de contrôle 3 demande à la mémoire 2 de lui fournir la somme de contrôle que cette dernière a calculée et mémorisée, via une requête appropriée transitant par l'interface d'entrée/sortie 4. [0044] Le dispositif de contrôle 3 met ensuite en oeuvre une vérification de cohérence (étape 104) entre le contenu de la zone de référence lue au cours de l'étape de lecture 100 et la somme de contrôle obtenu au cours de l'étape 102. [0045] Cette vérification de cohérence 104 comprend typiquement l'application de la fonction prédéterminée au contenu lu, de sorte à obtenir une deuxième somme de contrôle, et une comparaison entre la somme de contrôle obtenue au cours de l'étape 102, qui avait été calculée au moment où une donnée avait été écrite dans la zone de référence, et la deuxième somme de contrôle qui vient d'être calculée. [0046] Si les deux sommes comparées sont identiques, il est considéré que le contenu de la zone de référence est cohérent avec la somme de contrôle obtenue au cours de l'étape 102. [0047] Si les deux sommes comparées sont différentes, il est considéré que le contenu de la zone de référence n'est pas cohérent avec la somme de contrôle obtenue au cours de l'étape 102. [0048] En cas d'incohérence, le dispositif de contrôle signale un dysfonctionnement du code correcteur d'erreurs interne de la mémoire (étape 106). [0049] Ce signalement peut notamment comprendre une transmission d'un message informant d'un tel dysfonctionnement à un équipement faisant partie du système 1 ou étant externe au système 1. [0050] Par ailleurs, en cas d'incohérence, le dispositif de contrôle 3 peut commander une ré- initialisation de la mémoire 2 (étape 108), typiquement via une commande appropriée transmise à la mémoire 2 ou à un autre composant contrôlant l'alimentation de la mémoire 2. Une telle réinitialisation a pour conséquence de vider toutes les zones de l'unité de stockage 6. [0051] Dans le mode de réalisation décrit précédemment, c'est la mémoire à code de correcteur d'erreur 2 qui, en interne, calcule et mémorise la somme de contrôle, et non le dispositif de contrôle 3. Il est toutefois envisageable que ces étapes soient mises en oeuvre par le dispositif de contrôle 3, en particulier lorsque la mémoire 2 ne comprend pas d'unité de calcule de somme de contrôle 10. 6 [0052] Par ailleurs, il est possible de confier au dispositif de contrôle 3 le soin de mettre en oeuvre l'étape d'écriture de la donnée préalable dans la zone de référence, mais cela n'est pas nécessaire. Cette donnée peut en effet être écrite dans la mémoire 2 à la demande d'un autre équipement. 7 REVENDICATIONS[Revendication 1] Procédé de contrôle d'une mémoire (2) configurée pour corriger une corruption éventuelle du contenu d'une zone de la mémoire à l'aide d'un code correcteur d'erreurs avant une lecture subséquente du contenu de la zone, le procédé comprenant des étapes de : - lecture (100) du contenu de la zone après l'écriture d'une donnée dans la zone, - obtention (102) d'une somme de contrôle propre à la zone, la somme de contrôle ayant été calculée lors de l'écriture de la donnée dans la zone, - vérification (104) de cohérence entre le contenu lu et la somme de contrôle obtenue, - en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue, signalement (106) d'un dysfonctionnement du code correcteur d'erreur. [Revendication 2] Procédé selon la revendication précédente, dans lequel la somme de contrôle est un bit de parité. [Revendication 3] Procédé selon l'une des revendications précédentes, dans lequel la mémoire (2) est une mémoire vive, par exemple de type statique. [Revendication 4] Procédé selon l'une des revendications précédentes, dans lequel la zone a une taille égale à un octet. [Revendication 5] Procédé selon l'une des revendications précédentes, dans lequel la somme de contrôle a été calculée et mémorisé par la mémoire (2), et est obtenue par lecture de la mémoire (2). [Revendication 6] Procédé selon l'une des revendications précédentes, comprenant par ailleurs une commande de réinitialisation (106) de la mémoire en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue. [Revendication 7] Procédé selon l'une des revendications précédentes, dans lequel la véri- fication de cohérence et le signalement sont mises en oeuvre par un dispositif de contrôle (3) extérieur à la mémoire (2). [Revendication 8] Dispositif de contrôle (3) pour contrôler une mémoire configurée pour corriger une corruption éventuelle du contenu d'une zone de la mémoire à l'aide d'un code correcteur d'erreurs avant une lecture subséquente du contenu de la zone, le dispositif de contrôle étant configuré pour : - lire le contenu de la zone après l'écriture d'une donnée dans la zone, - obtenir une somme de contrôle propre à la zone, la somme de contrôle ayant été calculée lors de l'écriture de la donnée dans la zone, 8 [Revendication 9] - vérifier une cohérence entre le contenu lu et la somme de contrôle obtenue, [Revendication 10] - en cas d'incohérence entre le contenu lu et la somme de contrôle obtenue, signaler un dysfonctionnement du code correcteur d'erreur. Ensemble comprenant une mémoire (2) à code correcteur d'erreur, et un dispositif de contrôle selon la revendication précédente pour contrôler la mémoire, le dispositif de contrôle étant extérieur à la mémoire. Système (1) de contrôle du fonctionnement d'une turbomachine comprenant un dispositif selon la revendication 8 ou un ensemble selon la revendication 9.