[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

FR2922037A1 - Data i.e. bank data, securing method for e.g. static RAM of programmable electronic circuit in airplane, involves instantiating memory accesses with addresses, and providing read data at output based on result of parity control on read data - Google Patents

Data i.e. bank data, securing method for e.g. static RAM of programmable electronic circuit in airplane, involves instantiating memory accesses with addresses, and providing read data at output based on result of parity control on read data Download PDF

Info

Publication number
FR2922037A1
FR2922037A1 FR0707003A FR0707003A FR2922037A1 FR 2922037 A1 FR2922037 A1 FR 2922037A1 FR 0707003 A FR0707003 A FR 0707003A FR 0707003 A FR0707003 A FR 0707003A FR 2922037 A1 FR2922037 A1 FR 2922037A1
Authority
FR
France
Prior art keywords
data
memory
port
read
write
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.)
Granted
Application number
FR0707003A
Other languages
French (fr)
Other versions
FR2922037B1 (en
Inventor
Patrick Dervin
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.)
Thales SA
Original Assignee
Thales 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 Thales SA filed Critical Thales SA
Priority to FR0707003A priority Critical patent/FR2922037B1/en
Publication of FR2922037A1 publication Critical patent/FR2922037A1/en
Application granted granted Critical
Publication of FR2922037B1 publication Critical patent/FR2922037B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/24Memory cell safety or protection circuits, e.g. arrangements for preventing inadvertent reading or writing; Status cells; Test cells

Landscapes

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

Abstract

The method involves dividing a memory space of each dual port RAM component into a main space (A) and an auxiliary space (B), and allocating each reading and writing access port (PortA, PortB) to the memory space. Simultaneous memory accesses with corresponding distinct memory addresses (Ad1, Ad2) are instantiated, where the accesses allow writing of data (D) i.e. bank data, with a parity bit and reading of the data on the ports, respectively. The read data is provided at a reading output (Dout) based on the result of parity control on the read data.

Description

PROCEDE DE SECURISATION DE DONNEES EN MEMOIRE VIVE METHOD OF SECURING DATA IN MEMORY LIVING

La présente invention concerne un procédé de sécurisation des données de mémoire vive, notamment vis à vis d'aléas logiques dits SEU pour "Single Event Upset" et une architecture mémoire correspondante. Un aléa logique est un phénomène en soi non destructif, qui se traduit par un changement intempestif de l'état logique d'un point mémoire, suite à des collisions avec des ions lourds, des protons, ou des neutrons. Les circuits électroniques programmables embarqués dans les aéronefs, avions, sondes ou autres, ou les circuits électroniques utilisés dans certains environnements terrestres radiatifs, par exemple en environnement médical ou nucléaire, et qui sont des circuits généralement soumis à des contraintes de fiabilité très élevées, sont particulièrement exposés à ces aléas logiques. Ces aléas vont toucher plus particulièrement les points de mémoire vive, aussi bien statique (SRAM) que dynamique (DRAM). Ces altérations des informations contenues en mémoire peuvent avoir des conséquences très graves, selon les données qui en sont atteintes et leurs fonctions dans le(s) processus applicatif(s) d'un circuit électronique programmable. Notamment des altérations sur des données statiques, telles que des constantes, ou des variables ayant une rémanence vis à vis d'un processus applicatif, et sur des données quasi-statiques telles que des variables dont la valeur courante dépend de valeurs précédentes, peuvent causer des dommages importants. D'une manière générale, la fiabilité du circuit électronique est dégradée. Pour ces raisons, des solutions pour détecter et de préférence également corriger, des erreurs causées par ces aléas ont été développées. The present invention relates to a method of securing the RAM data, in particular with respect to so-called logical random events SEU for "Single Event Upset" and a corresponding memory architecture. A logical hazard is a phenomenon in itself nondestructive, which results in an inadvertent change in the logical state of a memory point, following collisions with heavy ions, protons, or neutrons. Programmable electronic circuits embedded in aircraft, aircraft, probes or others, or electronic circuits used in certain radiative terrestrial environments, for example in the medical or nuclear environment, and which are circuits generally subject to very high reliability constraints, are particularly exposed to these logical hazards. These hazards will affect more particularly the points of RAM, both static (SRAM) and dynamic (DRAM). These alterations of the information contained in memory can have very serious consequences, depending on the data that are reached and their functions in the application process (es) of a programmable electronic circuit. In particular, alterations on static data, such as constants, or variables having a remanence with respect to an application process, and on quasi-static data such as variables whose current value depends on previous values, can cause significant damage. In general, the reliability of the electronic circuit is degraded. For these reasons, solutions to detect and preferably also correct, errors caused by these hazards have been developed.

Parmi ces solutions, les techniques basées sur la mise en oeuvre de code correcteur d'erreur tels que le code Reed Solomon ou le code de Hamming sur les chemins d'accès aux mémoires se sont développées. De manière simplifiée, ces techniques associent un code correcteur à chaque mot, qui permet au récepteur de la donnée de vérifier l'intégrité de la donnée transférée et le cas échéant de corriger des erreurs. La longueur du code dépend de la longueur de la structure de donnée en mémoire. Pour un code de Hamming par exemple, on associe typiquement à une structure de donnée de N bits, un code correcteur de n bits avec 2n > N+n si on veut pouvoir corriger toutes les erreurs simples (1 bit). Ces techniques sont efficaces mais coûteuses en ressources de traitement (détection et correction). Leur emploi se justifie très bien notamment dans le cas où un volume important de mémoire est accessible de façon temporellement multiplexée sur un chemin d'accès unique (un bus). Dans ce cas, le dispositif de détection/correction est unique et est préférentiellement situé dans le chemin d'accès unique entre les mémoires et le dispositif utilisateur de l'information contenue dans cette ou ces mémoires. Among these solutions, techniques based on the implementation of error correction code such as the Reed Solomon code or the Hamming code on the memory access paths have developed. In a simplified manner, these techniques associate a correction code to each word, which enables the receiver of the data to verify the integrity of the data transferred and, where appropriate, to correct errors. The length of the code depends on the length of the data structure in memory. For a Hamming code for example, an N-bit data structure is typically associated with an n-bit correction code with 2n> N + n if it is desired to be able to correct all simple errors (1 bit). These techniques are effective but expensive in terms of processing resources (detection and correction). Their use is very well justified especially in the case where a large volume of memory is accessible temporally multiplexed on a single path (a bus). In this case, the detection / correction device is unique and is preferably located in the single path between the memories and the user device of the information contained in this or these memories.

Mais il y a d'autres applications dans lesquelles un grand nombre de petites mémoires vives, typiquement quelques kilooctets chacune, sont utilisées de façon locale, par un chemin d'accès propre par un nombre équivalent de dispositifs utilisateurs, en général des opérateurs câblés. Cette situation se rencontre typiquement dans les circuits électroniques programmables dont l'architecture comprend plusieurs bancs de mémoire utilisables individuellement ou regroupables, pour former un espace mémoire de grande capacité. Les composants mémoires utilisés font alors partie de la structure particulière du circuit programmable choisi pour implémenter la fonction désirée. But there are other applications in which a large number of small RAMs, typically a few kilobytes each, are used locally, by a clean path by an equivalent number of user devices, usually wired operators. This situation is typically encountered in programmable electronic circuits whose architecture includes several individually usable banks or regroupable memory banks, to form a large capacity memory space. The memory components used are then part of the particular structure of the programmable circuit chosen to implement the desired function.

Pour ces applications, l'utilisation d'un code correcteur d'erreur tel qu'un code de Hamming, sur chaque chemin d'accès spécifique, pour sécuriser une faible quantité de données, est très mal adaptée eu égard à l'investissement nécessaire (temps de traitement et ressources nécessaires). Dans l'invention, on a ainsi cherché une technique efficace et peu coûteuse, qui soit adaptée à la sécurisation des données de banques de mémoire vive de faible capacité telles que celles présentes dans les architectures de circuits programmables. Plus généralement, on a cherché dans l'invention une technique de sécurisation facile et peu coûteuse à mettre en oeuvre pour des données 30 de mémoire vive d'un circuit électronique. Les dispositifs mémoires présents dans les circuits programmables proposent généralement des organisations qui permettent de coder une parité par mot utilisé : ces dispositifs offrent la possibilité de mémoriser à chaque adresse mémoire, un mot de bits utiles plus au moins 35 un bit de parité correspondant. En pratique des dispositifs 9 bits sont courants, mais on trouve d'autres dispositifs (18 bits, ou plus). L'utilisation de cette possibilité suppose des moyens de gestion de cette parité, et notamment un circuit de contrôle de parité, pour intercepter les données lues en mémoire avant leur transmission au processus demandeur : si la parité est bonne, ce circuit supprimera de la donnée lue le bit de parité associé avant de la transmettre au processus demandeur. En cas d'erreur de parité, ce circuit considérera la donnée comme invalide et générera une erreur de parité. Cette erreur de parité permet d'avertir le processus du risque à utiliser la donnée. 1 o On rappelle que le contrôle de parité consiste à compter le nombre de bits à 1 dans la donnée considérée, et à positionner à 1 ou à 0 un bit de parité correspondant. Ce bit de parité représente la parité de la donnée. En parité paire, le bit de parité sera égal à 1, si le mot contient un nombre pair de 1, et à 0 si le mot contient un nombre impair de 1. Dans le 15 cas de la parité impaire, c'est l'inverse. Le contrôle de parité consiste alors, avant de transmettre la donnée au processus ou dispositif qui en fait la demande, de revérifier la parité, sur l'ensemble donnée+bit de parité. Ainsi, si un bit de la donnée ou le bit de parité a été changé par exemple de l'état 1 à l'état 0, le nombre total de 20 1 change. Si la parité recalculée ne correspond pas à la parité mémorisée, une erreur est détectée. Si deux états à 1 passent à 0, l'erreur ne sera pas détectée, mais la probabilité pour que cela arrive est très faible. Ces dispositifs mémoires qui proposent au moins une colonne de donnée supplémentaire par mot pour sauvegarder un bit de parité calculé par 25 mot mémorisé, peuvent ainsi être utilisées pour détecter des erreurs de type aléa logique. Ces mémoires utilisées dans les circuits programrnables, si elles permettent de détecter des erreurs de mémorisation dues à des aléas logiques, ne permettent généralement pas de corriger l'erreur, contrairement 30 aux codes correcteurs d'erreurs indiqués précédemment. Or selon la fonction d'une ou des données affectées d'une erreur, le processus peut alors être obligé de forcer un redémarrage avec réinitialisation. Ce type d'action est très lourd et pénalisant. For these applications, the use of an error correction code such as a Hamming code, on each specific path, to secure a small amount of data, is very poorly adapted to the investment required. (processing time and resources required). In the invention, an efficient and inexpensive technique has thus been sought, which is adapted to secure the data of low capacity RAM banks such as those present in programmable circuit architectures. More generally, we have sought in the invention an easy and inexpensive security technique to implement for RAM data of an electronic circuit. The memory devices present in the programmable circuits generally propose organizations that make it possible to encode a parity per word used: these devices offer the possibility of storing at each memory address, a word of useful bits plus at least one corresponding parity bit. In practice 9-bit devices are common, but there are other devices (18 bits, or more). The use of this possibility assumes means of managing this parity, and in particular a parity check circuit, for intercepting the data read in memory before their transmission to the requesting process: if the parity is good, this circuit will delete data. read the associated parity bit before passing it to the requesting process. In the event of a parity error, this circuit will consider the data invalid and will generate a parity error. This parity error is used to warn the risk process to use the data. 1 o Recall that the parity check consists in counting the number of bits to 1 in the data considered, and to set to 1 or 0 a corresponding parity bit. This parity bit represents the parity of the data. In even parity, the parity bit will be 1, if the word contains an even number of 1, and 0 if the word contains an odd number of 1. In the case of odd parity, it is the reverse. The parity check then consists, before transmitting the data to the process or device that requests it, to recheck the parity, on the set given + parity bit. Thus, if a bit of the data or the parity bit has been changed, for example from state 1 to state 0, the total number of 20 1 changes. If the recalculated parity does not match the stored parity, an error is detected. If two states of 1 go to 0, the error will not be detected, but the probability of this happening is very small. These memory devices which propose at least one additional column of data per word to save a parity bit calculated by stored word can thus be used to detect logical random errors. These memories used in the programmable circuits, if they make it possible to detect memory errors due to logical randomness, generally do not make it possible to correct the error, contrary to the error correction codes indicated previously. Or depending on the function of one or more data affected by an error, the process may then be forced to force a reboot with reset. This type of action is very heavy and penalizing.

Un objet de l'invention est un procédé qui permette d'améliorer la fiabilité des données en mémoire vive. Une idée à la base de la solution technique de l'invention est d'utiliser un bit de parité unique par mot mémoire, et de combiner cette parité à un schéma de redondance qui permette une correction. A noter que le terme mot mémoire est ici utilisé simplement pour désigner l'ensemble des points mémoire à une position mémoire, sans lien avec le nombre de ces points mémoire. L'utilisation d'un bit de parité unique par mot mémoire est aisément réalisable dans une application, en prenant comme convention que les échanges entre l'espace mémoire vive et les processus ou dispositifs applicatifs utilisateurs, sont effectués sur des mots qui présentent un bit de moins que le mot de la structure mémoire. A titre d'exemple, si l'espace mémoire vive est formé avec des composants mémoires 9 bits, les processus ou dispositifs applicatifs manipuleront des mots de 8 bits. Un objet de l'invention est ainsi un procédé de sécurisation des données en mémoire vive, qui utilise un bit de parité par mot mémoire, combiné à une organisation redondante de l'espace mémoire, de manière à augmenter la fiabilité de la mémoire. Dans un perfectionnement, il intègre avantageusement un processus de correction en mémoire. L'invention concerne donc un procédé de sécurisation des données d'une mémoire vive formée par au moins un composant mémoire, caractérisé en ce que chaque composant mémoire est du type configurable en accès double port sur un premier port et un deuxième port, et tel que chaque adresse mémoire permet de mémoriser n bits utiles de données et au moins un bit supplémentaire, caractérisé en ce qu'il comprend la division de l'espace mémoire de chaque composant mémoire en un espace principal et un espace de secours, l'attribution d'un port d'accès en lecture et écriture différent à chaque espace, en ce qu'à chaque accès en écriture d'une donnée à une adresse mémoire, il instancie deux accès mémoire simultanés à deux adresses distinctes, un accès sur chaque port, pour écrire ladite donnée avec un bit de parité correspondant, et en ce qu'à chaque accès en lecture à une adresse mémoire, il instancie deux accès mémoire simultanés à deux adresses distinctes correspondantes, un accès sur chaque port, pour lire une donnée correspondante sur chaque port, et fournit en sortie de lecture l'une ou l'autre donnée lue en fonction du résultat d'un contrôle de la parité sur chacune desdites données lues. L'invention concerne aussi une architecture mémoire permettant la mise en oeuvre d'un tel procédé, et un circuit programmable comprenant un 5 espace mémoire vive sécurisé selon l'invention. D'autres avantages et caractéristiques de l'invention sont détaillés dans la description suivante en référence aux dessins illustrés d'un mode de réalisation de l'invention, donné à titre d'exemple non limitatif. Dans ces dessins : 10 -la figure 1 illustre un procédé de sécurisation de données de mémoire vive selon l'invention ; -la figure 2 est un schéma illustrant un traitement selon l'invention de données larges de plusieurs octets ; et -la figure 3 est un exemple d'une architecture mémoire selon l'invention. 15 La figure 1 est une illustration d'un procédé de sécurisation 100.0 de données contenues dans un composant de mémoire vive DPM d'un circuit électronique qui peut par ailleurs comprendre un ou des processeurs et d'autres composants électroniques, qui peuvent accéder à ce composant 20 par un bus externe (BUS sur la figure). L'espace mémoire vive du circuit électronique programmable peut comprendre en pratique un ou plusieurs composants mémoire, de même type, pour atteindre une certaine capacité. Le procédé de l'invention qui va être décrit s'applique de la même façon sur chacun des composants mémoire de cet espace mémoire, en propre. 25 Le processus de sécurisation 100.0 selon l'invention permet de gérer de manière plus fiable, et de manière simple, les données en mémoire d'un composant mémoire DPM de mémoire vive par un schéma de redondance combiné à une détection d'erreur de parité. Pour lui appliquer ce procédé de sécurisation, le composant 30 mémoire DPM doit présenter les deux caractéristiques suivantes : a). permettre deux accès mémoire simultanés indépendants en lecture/écriture. On parle d'accès double port. II comprend en pratique deux ports (interface) Port A et Port B avec les signaux d'adresse, de données et de contrôle associés pour accéder en lecture ou en écriture à l'espace 35 mémoire. b). comprendre un bit supplémentaire au moins par mot de données. Ces caractéristiques du composant mémoire sont des caractéristiques usuelles dans l'état de l'art. En particulier de tels composants de mémoire vive sont déjà présents de manière connue dans les architectures de composants programmables. Le composant mémoire DPM a ainsi une capacité mémoire organisée en groupe de n+1 bits, permettant de mémoriser des données de n bits utiles + 1 bit de parité. Les n bits utiles correspondent à la longueur maximale des données échangées avec les processus/dispositifs applicatifs. An object of the invention is a method which makes it possible to improve the reliability of the data in random access memory. One idea underlying the technical solution of the invention is to use a single parity bit per memory word, and to combine this parity with a redundancy scheme that allows a correction. Note that the term memory word is used here simply to designate all the memory points at a memory position, not related to the number of memory points. The use of a single parity bit per memory word is easily achievable in an application, taking as convention that the exchanges between the RAM space and the user application processes or devices, are performed on words that have a bit less than the word of the memory structure. By way of example, if the RAM space is formed with 9-bit memory components, the application processes or devices will manipulate 8-bit words. An object of the invention is thus a method for securing data in random access memory, which uses a parity bit per memory word, combined with a redundant organization of the memory space, so as to increase the reliability of the memory. In a refinement, it advantageously incorporates a correction process in memory. The invention therefore relates to a method for securing the data of a random access memory formed by at least one memory component, characterized in that each memory component is of the configurable type in dual port access on a first port and a second port, and such that each memory address makes it possible to store n useful bits of data and at least one additional bit, characterized in that it comprises dividing the memory space of each memory component into a main space and a spare space, the allocation a read and write access port different to each space, in that each access to write data to a memory address, it instantiates two simultaneous memory access to two different addresses, access to each port , to write said data with a corresponding parity bit, and in that each read access to a memory address, it instantiates two simultaneous memory accesses to two distributed addresses. corresponding nctes, an access on each port, to read a corresponding data on each port, and provides reading output of one or the other data read according to the result of a parity check on each of said read data. The invention also relates to a memory architecture enabling the implementation of such a method, and a programmable circuit comprising a secure RAM space according to the invention. Other advantages and features of the invention are detailed in the following description with reference to the illustrated drawings of one embodiment of the invention, given by way of non-limiting example. In these drawings: FIG. 1 illustrates a method for securing RAM data according to the invention; FIG. 2 is a diagram illustrating a processing according to the invention of wide data of several bytes; and FIG. 3 is an example of a memory architecture according to the invention. FIG. 1 is an illustration of a method of securing 100.0 of data contained in a DPM random access memory component of an electronic circuit which may further comprise one or more processors and other electronic components, which can access that memory. component 20 by an external bus (BUS in the figure). The RAM space of the programmable electronic circuit may include in practice one or more memory components of the same type to achieve a certain capacity. The method of the invention which will be described applies in the same way to each of the memory components of this memory space, in its own right. The security process 100.0 according to the invention makes it possible to more reliably and simply manage the data in memory of a DPM memory component of RAM by a redundancy scheme combined with a parity error detection. . To apply this security method, the memory component DPM must have both of the following characteristics: a). allow two independent read / write simultaneous memory accesses. We are talking about dual port access. It comprises in practice two ports (interface) Port A and Port B with the associated address, data and control signals for reading or writing access to the memory space. b). include at least one additional bit per data word. These characteristics of the memory component are standard features in the state of the art. In particular, such RAM components are already present in known manner in programmable component architectures. The memory component DPM thus has a memory capacity organized in groups of n + 1 bits, for storing data of n useful bits + 1 parity bit. The n useful bits correspond to the maximum length of the data exchanged with the application processes / devices.

Selon l'invention, l'espace mémoire du composant DPM est divisé en un espace principal, et un espace de secours, distincts. L'espace principal est accédé par l'un des ports, par exemple Port A, et l'espace de secours est accédé par l'autre port, dans l'exemple Port B. Cela revient à faire correspondre à chaque adresse mémoire Ad, une paire unique d'adresses distinctes : Adl, correspondant à l'espace principal accessible dans l'exemple par Port A, et Ad2, correspondant à l'espace de secours accessible dans l'exemple par Port B. According to the invention, the memory space of the DPM component is divided into a separate main space and a spare space. The main space is accessed by one of the ports, eg Port A, and the spare space is accessed by the other port, in the Port B example. This is equivalent to matching each Ad address, a unique pair of distinct addresses: Adl, corresponding to the main space accessible in the example by Port A, and Ad2, corresponding to the spare space accessible in the example by Port B.

Le procédé de sécurisation 100.0 comprend un processus de gestion de l'écriture 100.1 et un processus de gestion de la lecture 100.2 adaptés à ce schéma de redondance et de parité de l'espace mémoire. Ce processus de sécurisation est en pratique typiquement implémenté par le contrôleur mémoire qui assure de manière classique et bien connue le séquencement mémoire et gère les requêtes d'accès en mémoire des processus ou dispositifs applicatifs dans le circuit programmable. Le processus de gestion de l'écriture 100.1 est activé sur réception d'une demande d'accès en d'écriture W d'une donnée D à une adresse mémoire Ad. The security method 100.0 includes a 100.1 write management process and a 100.2 read management process adapted to this redundancy and parity scheme of the memory space. In practice, this security process is typically implemented by the memory controller which, in a conventional and well-known manner, provides memory sequencing and manages requests for memory access of the processes or application devices in the programmable circuit. The write management process 100.1 is activated on receipt of a request for write access W of a data item D to an address memory Ad.

Il comprend le chargement de la donnée à écrire : Din=D, et un calcul de parité 100.10 sur cette donnée Din à écrire, pour former une donnée d'écriture comprenant les bits utiles de la donnée Diri plus le bit de parité P ; une mise en correspondance 100.11 de l'adresse d'écriture Ad, aux deux adresses correspondantes Adl de l'espace principale et Ad2 de l'espace de secours ; puis deux écritures simultanées de cette donnée Din+P : une écriture 100.12 dans l'espace principal via Port A, avec activation d'un signal d'écriture correspondant LoadA, et présentation de la donnée à écrire Din+P et de l'adresse Ad1 ; et une écriture 100.12' dans l'espace de secours via Port B, avec activation d'un signal d'écriture correspondant LoadB, et présentation de la donnée à écrire Din+P et de l'adresse Ad2. Le processus de gestion de la lecture 100.2 est activé sur réception d'une demande d'accès en lecture R à une adresse mémoire Ad. Il comprend une mise en correspondance 100.20 de l'adresse d'écriture Ad, aux deux adresses correspondantes Ad1 de l'espace principal et Ad2 de l'espace de secours ; puis deux accès en lecture simultanés : une lecture 100.21 dans l'espace principal via Port A, avec activation d'un signal de lecture correspondant LoadNA, et présentation de l'adresse Ad1 ; et une lecture 100.21' dans l'espace de secours via Port B, avec activation d'un signal de lecture correspondant LoadNB, et présentation de l'adresse Ad2. It comprises the loading of the data to be written: Din = D, and a parity calculation 100.10 on this dat Din to be written, to form a write data comprising the useful bits of the data Diri plus the parity bit P; a mapping 100.11 of the write address Ad, to the two corresponding addresses Adl of the main space and Ad2 of the spare space; then two simultaneous writes of this data Din + P: a write 100.12 in the main space via Port A, with activation of a corresponding write signal LoadA, and presentation of the data to write Din + P and the address Ad1; and a write 100.12 'in the spare space via Port B, with activation of a corresponding write signal LoadB, and presentation of the data to write Din + P and address Ad2. The read management process 100.2 is activated on receipt of a read access request R at an address Ad. It comprises a mapping 100.20 of the write address Ad to the two corresponding addresses Ad1 of the main space and Ad2 of the emergency area; then two simultaneous read accesses: a reading 100.21 in the main space via Port A, with activation of a corresponding reading signal LoadNA, and presentation of the address Ad1; and a 100.21 'read in the spare space via Port B, with activation of a corresponding read signal LoadNB, and presentation of the Ad2 address.

On obtient en sortie sur Port A, une donnée lue correspondante, parité y compris, notée (D+P)A, et en sortie sur Port B, une donnée lue correspondante parité y compris, notée (D+P)B. Un processus de contrôle de parité 100.22 et 100.22' est activé sur chacune de ces deux données (D+P) A et (D+P)B. Ce processus de contrôle de parité contrôle le processus de transmission 100.23 de la donnée de sortie Dout sur le bus externe, en réponse à la demande de lecture. La donnée Dout fournie en sortie ne comprend que la partie utile de la donnée, c'est à dire (D)A ou (D)B : la parité P est enlevée avant transmission sur le bus. A corresponding read data, including parity, denoted by (D + P) A, and output on Port B, corresponding to parity (D + P) B, are read out on Port A. A parity check process 100.22 and 100.22 'is enabled on each of these two data (D + P) A and (D + P) B. This parity check process controls the transmission process 100.23 of the output data Dout on the external bus, in response to the read request. The output data Dout only includes the useful part of the data, that is to say (D) A or (D) B: the parity P is removed before transmission on the bus.

Si le processus de contrôle de parité 100.22 sur la donnée (D+P)A fournie par Port A est positif, c'est à dire que la parité est bonne, la donnée (D)A est considérée comme correcte. Le signal d'erreur ErrA en sortie de ce processus n'est pas activé. Si ce contrôle de parité est négatif, la donnée (D)A est supposée altérée, et le signal d'erreur ErrA est activé. If the parity check process 100.22 on the datum (D + P) A provided by Port A is positive, ie the parity is good, the datum (D) A is considered correct. ErrA error signal at the output of this process is not activated. If this parity check is negative, the data (D) A is assumed to be corrupted, and the ErrA error signal is activated.

Si le processus de contrôle de parité 100.22' sur la donnée (D+P)B fournie par Port B est positif, la donnée (D)B est considérée comme correcte. Le signal d'erreur ErrB en sortie de ce processus n'est pas activé. Si ce contrôle de parité est négatif, la donnée (D)B est supposée altérée, et le signal d'erreur ErrB est activé. If the parity check process 100.22 'on the datum (D + P) B provided by Port B is positive, the datum (D) B is considered correct. ErrB error signal at the output of this process is not activated. If this parity check is negative, the data (D) B is assumed to be corrupted, and the ErrB error signal is activated.

Le processus de transmission 100.23 comprend ainsi un circuit de gestion 100.23a, de type logique combinatoire, pour gérer la sélection de voie d'un multiplexeur de sortie Mxout, qui reçoit en entrées, la donnée utile (D)A fournie par PortA, et la donnée utile (D)B fournie par Port B. La voie de sortie Mxout fournit la donnée Dout vers le bus. Ce circuit génère également un signal d'exception d'invalidité XC, comme décrit ci dessous. En choisissant par pure convention, que les signaux d'erreur sont actifs à l'état 1 (signifiant un contrôle de parité négatif = parité incorrecte), le circuit logique combinatoire 100.23a peut par exemple être configuré pour 10 que : - Si le contrôle de parité 100.22 associé à Port A est positif (ErrA=O), il active le signal Sel de commande du multiplexeur Mxout pour commuter comme donnée de sortie Dout, la donnée (D)A fournie par Port A, en réponse à la demande de lecture R(Ad). 15 -Si ce contrôle est négatif, (ErrA=1), il active le signal Sel de commande du multiplexeur Mxout pour commuter comme donnée de sortie Dout, la donnée D(B) fournie par Port B, en réponse à la demande de lecture R(Ad). - Si le contrôle de parité 100.22' associé à Port B est également 20 négatif (ErrB=1), la donnée Dout=(D)B fournie en sortie est alors supposée incorrecte : le processus de transmission 100.23 est configuré pour activer un signal d'exception XC, pour signaler une erreur au processus ou dispositif externe demandeur. Cette erreur traduit l'impossibilité de choisir et donc de fournir une donnée réputée correcte, parce que les deux contrôles de parité 25 sont défectueux (ErrA=ErrB=1). Le processus ou dispositif externe qui a demandé la lecture est ainsi averti du doute existant sur la donnée fournie. Il pourra alors gérer de manière appropriée cette exception d'invalidité. Cette gestion dépend typiquement de la fonctionnalité en cause. Par exemple, si le processus ou dispositif externe doit fournir périodiquement à un autre 30 processus le résultat d'un calcul à partir de la donnée demandée en lecture, il peut en autres exemples : -effectuer le calcul en utilisant la donnée fournie par défaut, mais signaler le doute portant sur le résultat de ce calcul effectué avec cette donnée; -signaler le doute et attendre un rafraîchissement de la donnée supposée altérée pour reprendre le calcul, et/ou éventuellement fournir le dernier résultat du calcul réputé bon; -redémarrer la fonction après ré-initialisation. The transmission process 100.23 thus comprises a management circuit 100.23a, of combinational logic type, for managing the channel selection of an Mxout output multiplexer, which receives, as inputs, the useful data (D) A supplied by PortA, and the payload (D) B provided by Port B. The output channel Mxout provides data Dout to the bus. This circuit also generates a disability exception signal XC, as described below. By choosing by pure convention, that the error signals are active in state 1 (meaning a negative parity check = incorrect parity), the combinational logic circuit 100.23a can for example be configured so that: - If the control of parity 100.22 associated with Port A is positive (ErrA = O), it activates the control signal Sel of the multiplexer Mxout to switch as output data Dout, the data (D) A supplied by Port A, in response to the request of reading R (Ad). 15 -If this control is negative, (ErrA = 1), it activates the control signal Sel of the multiplexer Mxout to switch as output data Dout, the data D (B) provided by Port B, in response to the reading request R (Ad). If the parity check 100.22 'associated with Port B is also negative (ErrB = 1), then the data Dout = (D) B output is assumed incorrect: the transmission process 100.23 is configured to activate a signal d XC exception, to report an error to the requesting external device or process. This error reflects the impossibility to choose and therefore to provide a data considered correct, because the two parity checks are defective (ErrA = ErrB = 1). The external process or device that requested the reading is thus informed of the doubt existing on the provided data. He will then be able to appropriately manage this disability exception. This management typically depends on the functionality involved. For example, if the external process or device must periodically provide another process with the result of a computation from the data requested for reading, it may in other examples: - perform the calculation using the data provided by default, but to signal doubt as to the result of this calculation made with this datum; - signal the doubt and wait for a refresh of the data supposed to be altered to resume the calculation, and / or possibly provide the last result of the calculation deemed good; -Restart the function after re-initialization.

Le procédé de sécurisation de données de mémoire vive qui vient d'être décrit permet ainsi, de manière simple, et en utilisant des fonctionnalités des composants mémoires, de créer une redondance qui permet en combinaison avec un bit unique de parité, d'améliorer de manière très efficace leur fiabilité. Il est en effet très peu probable que les deux adresses principale et de secours d'une donnée en mémoire soient "en même temps" affectées par un aléa logique. C'est ce qui permet de généralement fournir une donnée correcte, celle de l'espace principal ou de l'espace de secours. Si les deux adresses sont néanmoins toutes deux affectées par un aléa, le processus externe utilisateur de la mémoire est averti. Avantageusement, le procédé de sécurisation selon l'invention comprend en outre un processus de correction 100.3. Ce processus de correction 100.3 est activé à chaque fois que le résultat du contrôle de l'un des deux processus de contrôle de parité 100.22 ou 100.22' est négatif, alors que l'autre est positif, pour déclencher une ré-écriture de la donnée supposée altérée avec la donnée réputée correcte. De cette manière, et comme il est peu probable qu'un aléa affecte les deux données simultanément, la fiabilité des données est en quelque sorte entretenue : dès qu'une donnée de l'espace principal est trouvée incorrecte, elle peut être corrigée par la donnée de l'espace de secours et inversement. Plus précisément, en référence à la figure 1, si c'est la donnée (D)A fournie par Port A qui est détectée incorrecte et la donnée (D)B fournie par Port B qui est détectée correcte, alors on provoque une écriture via Port A à l'adresse Ad1, avec la donnée (D)B qui est aussi dans l'exemple la donnée Dout, ce qui peut s'écrire CorrA(Dout, Ad1). Si c'est la donnée (D)B fournie par Port B qui est détectée incorrecte et la donnée (D)A fournie par Port A qui est détectée correcte, alors on provoque une écriture via Port B à l'adresse Ad2, avec la donnée (D)A qui est aussi dans l'exemple la donnée Dout, ce qui peut s'écrire CorrB(Dout, Ad2). En pratique, le procédé de correction peut forcer une écriture sur le port concerné Port A, respectivement Port B, par un signal spécifique 5 CorrA, respectivement CorrB, en présentant la donnée Dout comme donnée d'entrée Din=Dout. Ceci peut en pratique être réalisé de différentes façons, typiquement par le contrôleur mémoire qui arbitre et sert les différentes requêtes, par toutes techniques connues de l'homme de l'art. Notamment : ~o -en utilisant des cycles mémoires dédiés et systématiquement réservés dans le séquencement des accès mémoire. Lorsqu'une correction doit être faite, le premier cycle mémoire dédié suivant est alors alloué à cette correction. -en utilisant le premier cycle mémoire disponible, c'est à dire qui 15 n'est pas utilisé, pour des raisons fonctionnelles, ce qui suppose que le processus ou dispositif utilisateur n'utilise qu'une partie de la bande passante à la mémoire considérée. -en forçant la disponibilité du cycle mémoire suivant par une technique connue dite de vol de cycle. Dans ce cas l'activité du processus ou 20 dispositif utilisateur de la donnée sera retardée de la durée du cycle volé. Ceci peut aussi se faire par un cycle masqué, en utilisant la caractéristique d'accès double port de la mémoire, pour effectuer la correction directement en forçant une écriture sur le port correspondant à la donnée "erronée", à partir de la donnée correcte fournie en sortie par l'autre 25 port. C'est cette mise en oeuvre qui est plus particulièrement illustrée sur la figure 1 : -Un signal d'activation Corr généré à partir des signaux de correction CorrA et CorrB permet de sélectionner la donnée Dout comme donnée Din à écrire : Din=Dout ; et 30 -L'écriture 100.12 est forcée par activation des signaux d'écriture LoadA ou LoadB sur le port correspondant Port A ou PortB, par l'activation du signal de correction CorrA ou CorrB. Un exemple plus détaillé de mise en oeuvre sera expliqué en relation avec la figure 3. The RAM data security method just described thus makes it possible, in a simple manner and by using functionalities of the memory components, to create a redundancy that makes it possible, in combination with a single bit of parity, to improve very effectively their reliability. It is indeed very unlikely that the two main and backup addresses of a piece of data in memory are "at the same time" affected by a logical hazard. This is what usually provides a correct data, that of the main space or the spare space. However, if both addresses are affected by a random event, the external user process of the memory is notified. Advantageously, the security method according to the invention further comprises a correction process 100.3. This correction process 100.3 is activated each time the result of the control of one of the two parity check processes 100.22 or 100.22 'is negative, while the other is positive, to trigger a rewriting of the data. supposedly altered with the data considered correct. In this way, and since it is unlikely that a hazard affects both data simultaneously, the reliability of the data is somehow maintained: as soon as a piece of data from the main space is found to be incorrect, it can be corrected by data from the backup space and vice versa. More precisely, with reference to FIG. 1, if the data (D) A supplied by Port A is detected incorrectly and the data (D) B supplied by Port B is detected correctly, then a write is sent via Port A at the address Ad1, with the data (D) B which is also in the example the data Dout, which can be written CorrA (Dout, Ad1). If the data (D) B provided by Port B is detected incorrectly and the data (D) A provided by Port A is detected correctly, then a write is sent via Port B to address Ad2, with the Given (D) To which is also in the example the data Dout, which can be written CorrB (Dout, Ad2). In practice, the correction method may force a write on the port concerned Port A, respectively Port B, by a specific signal CorrA CorrB, respectively, presenting the data Dout as input data Din = Dout. This can in practice be done in different ways, typically by the memory controller which arbitrates and serves the various requests, by any techniques known to those skilled in the art. Notably: ~ o-using dedicated memory cycles and systematically reserved in the sequencing of memory access. When a correction has to be made, the next first dedicated memory cycle is then allocated to this correction. using the first available memory cycle, ie which is not used, for functional reasons, which supposes that the user process or device uses only a part of the memory bandwidth considered. by forcing the availability of the next memory cycle by a known so-called cycle flight technique. In this case the activity of the process or user device of the data will be delayed by the duration of the stolen cycle. This can also be done by a masked cycle, using the double port access feature of the memory, to perform the correction directly by forcing a write on the port corresponding to the "erroneous" data, from the correct data provided. output by the other port. It is this implementation which is more particularly illustrated in FIG. 1: an activation signal Corr generated from correction signals CorrA and CorrB makes it possible to select the datum Dout as data Din to write: Din = Dout; and Writing 100.12 is forced by activating the LoadA or LoadB write signals on the corresponding Port A or PortB port by activating the correction signal CorrA or CorrB. A more detailed example of implementation will be explained in connection with FIG.

Ce mode de correction par utilisation de la caractéristique double port permet d'autoriser des accès en lecture pendant ce cycle de correction, sur le port qui a fourni la donnée correcte : ce port devient alors le port de lecture par défaut, mais sans possibilité de redondance pendant que le cycle de correction est en cours. Ceci permet néanmoins de répondre à des demandes de lecture, et donc de ne pas trop freiner les processus. Dans ce cas, un registre tampon sera prévu pour chaque port, pour permettre la mémorisation de l'adresse de lecture pour laquelle une erreur aura été détectée, de manière à permettre l'exécution au cycle suivant de la correction en écriture à cette adresse mémorisée, sur le port associé, tandis qu'une nouvelle adresse pourra être chargée dans le registre tampon associé à l'autre port, pour une lecture. Un circuit logique sera alors prévu pour contrôler de manière adéquate la validation des registres. En pratique, on notera que la correction peut ne pas être décidée : Dans l'exemple plus particulièrement illustré à la figure 1, le signal Corr ne sera pas activé. Ou la correction peut être interrompue, pour répondre à une requête en écriture prioritaire. Ceci correspond à des aspects de gestion mémoire classiques. Le processus de sécurisation 100.0 selon l'invention qui vient d'être décrit est en pratique géré par le contrôleur mémoire du circuit programmable. Il permet une gestion des accès de lecture et écriture à un composant mémoire, par laquelle : - à chaque donnée D présentée en écriture à une adresse mémoire Ad, un bit de parité est calculé, et les bits utiles et le bit de parité sont simultanément mémorisés à deux adresses mémoire distinctes du composant, par un accès en écriture sur un port avec une première adresse Ad1, et un accès en écriture sur l'autre port à une deuxième adresse Ad2. - à chaque demande de lecture à une adresse mémoire Ad, les données contenues aux deux adresses correspondantes principale et de secours sont lues, leur parité est contrôlée, et la donnée fournie en sortie est fonction du résultat de ce contrôle de parité. Lorsqu'une donnée utilisée dans un processus ou un dispositif externe est plus large que la structure des mots en mémoire vive, la donnée sera traitée par tranches de mots. Typiquement chaque tranche sera mémorisée dans un composant mémoire différent, à la même adresse logique Ad sur chaque composant. Le processus va ainsi s'appliquer sur chaque mot de la donnée comme illustré sur le schéma de principe de la figure 2, qui illustre deux composants mémoires DPM1 et DPM2 formant un espace mémoire vive utilisé par deux dispositifs CP1 et CP2 d'un circuit programmable. Une donnée DATA utilisée par un dispositif externe CP1 est découpée en deux tranches Din1, Din2 de n bits utiles. Chaque tranche est de manière classique mémorisée dans un composant mémoire respectif DPM1, DPM2 (toutes les tranches pourraient être mémorisées sur un même composant, mais à des adresses logiques différentes, ce qui est moins simple à gérer). Selon l'invention, chaque tranche est mémorisée avec un bit de parité P dans le composant mémoire concerné à une adresse de mémoire principale A et une adresse de mémoire de secours B. Lors de l'accès en lecture, le contrôle de parité est effectué sur chaque couple de mots correspondant : (Dini+P)A, (Din1+P)B pour le composant DPM1, (Din2+P)A, (Din2+P)B pour le composant DPM2, et une donnée de sortie correspondante Douti, Doute est fournie, fonction du contrôle de parité sur chaque composant. Ainsi, un procédé de sécurisation de données selon l'invention facilite la gestion de modifications partielles de données plus larges que la structure mémoire du circuit programmable : la sécurisation, parité et redondance, est réalisée sur chaque tranche par le procédé de l'invention. This correction mode by using the dual port feature allows read access during this correction cycle, on the port that provided the correct data: this port then becomes the default read port, but without the possibility of redundancy while the correction cycle is in progress. This nevertheless makes it possible to respond to requests for reading, and therefore not to slow down the processes too much. In this case, a buffer register will be provided for each port, to allow storage of the read address for which an error has been detected, so as to allow execution of the write correction at this stored address at the next cycle. , on the associated port, while a new address can be loaded in the buffer register associated with the other port, for a reading. A logic circuit will then be provided to adequately control the validation of the registers. In practice, it will be noted that the correction may not be decided: In the example more particularly illustrated in FIG. 1, the signal Corr will not be activated. Or the correction can be interrupted, to answer a priority write request. This corresponds to standard memory management aspects. The security process 100.0 according to the invention that has just been described is in practice managed by the memory controller of the programmable circuit. It allows read / write access management to a memory component, by which: - to each data item D written to a memory address Ad, a parity bit is calculated, and the useful bits and the parity bit are simultaneously stored at two separate memory addresses of the component, by write access to a port with a first address Ad1, and write access to the other port to a second address Ad2. - At each read request to a memory address Ad, the data contained at the two corresponding main and backup addresses are read, their parity is controlled, and the data output is a function of the result of this parity check. When data used in an external process or device is wider than the word structure in RAM, the data will be processed in word slices. Typically each slice will be stored in a different memory component, at the same logical address Ad on each component. The process will thus apply to each word of the data as illustrated in the block diagram of FIG. 2, which illustrates two memory components DPM1 and DPM2 forming a random access memory space used by two devices CP1 and CP2 of a programmable circuit . DATA data used by an external device CP1 is divided into two slices Din1, Din2 of n useful bits. Each slice is conventionally stored in a respective memory component DPM1, DPM2 (all the slices could be stored on the same component, but at different logical addresses, which is less easy to manage). According to the invention, each slice is stored with a parity bit P in the memory component concerned to a main memory address A and a spare memory address B. During read access, the parity check is performed on each pair of corresponding words: (Dini + P) A, (Din1 + P) B for the component DPM1, (Din2 + P) A, (Din2 + P) B for the component DPM2, and a corresponding output data Douti , Doubt is provided, depending on the parity check on each component. Thus, a method for securing data according to the invention facilitates the management of partial modifications of data larger than the memory structure of the programmable circuit: security, parity and redundancy is performed on each slice by the method of the invention.

Sur la figure 3 est illustré un exemple d'architecture mémoire pour un composant de mémoire vive DPM, permettant la sécurisation des données qu'il contient selon le procédé de l'invention, avec une correction possible d'une donnée détectée défectueuse, par la donnée redondante réputée correcte, réalisée en utilisant les capacités d'accès double port de la mémoire, en commandant une écriture de correction sur le port concerné par des moyens internes, tout en autorisant des accès externes en lecture sur l'autre port. Dans cet exemple, le composant mémoire à une structure des données correspondant à un octet de bits utile (D=8 bits) et un bit de parité (soit D+P = 9 bits). Le séquencement du composant est contrôlé par un signal d'horloge Ck. Les notations des processus et signaux de comrnande associés utilisées sur la figure 1 ont été repris à l'identique le cas échéant pour 5 désigner les moyens réalisant le processus correspondant. Le composant mémoire comprend deux ports Port A et Port B qui selon l'invention adressent deux espaces distincts de la mémoire, un espace principal et un espace de secours. Pour chaque port, on a les signaux d'adresse, de données et de contrôle correspondants. On note ainsi pour 10 Port A : AdA les signaux d'adresse, INA et OUTA respectivement les entrées et sorties de données, et RNVA le signal d'écriture/lecture. De manière similaire, on a pour Port B : AdB les signaux d'adresse, INB, OUTB et R/VVB. Un registre d'adresse propre est associé à chaque port, RA pour 15 Port A et RB pour Port B. S'il doit y avoir écriture de correction sur l'un des deux espaces suite à un accès en lecture, ce registre permettra de conserver l'adresse de cette lecture sur le port concerné par la correction, alors que l'autre registre sera disponible pour recevoir des adresses pour des accès en lecture sur l'autre port demandé par un processus externe utilisateur de la 20 mémoire. Par convention, on note : -Load : activation d'une écriture mémoire, correspondant à un accès en écriture par un processus externe utilisateur de la mémoire. LoadN signifie qu'il n'y a pas d'accès en écriture par un processus externe. Ce 25 signal peut être utilisé comme information prioritaire pour invalider les conditions de correction éventuelle lorsqu'une écriture est requise par le processus ou dispositif utilisateur. -CorrA (respectivement CorrB): activation d'une écriture mémoire sur Port A (respectivement Port B) uniquement, pour effectuer une 30 correction; CorrNA (respectivement CorrNB) signifiant qu'il n'y a pas de correction sur Port A (respectivement Port B). L'architecture comprend différents registres et circuits logiques autour du composant mémoire DPM, pour mettre en oeuvre le procédé de sécurisation. FIG. 3 illustrates an exemplary memory architecture for a DPM random access memory component, making it possible to secure the data it contains according to the method of the invention, with a possible correction of a defective detected data item, by the redundant data considered correct, performed using the dual-port access capabilities of the memory, by controlling a correction write on the port concerned by internal means, while allowing external read access to the other port. In this example, the memory component has a data structure corresponding to a useful bit byte (D = 8 bits) and a parity bit (ie D + P = 9 bits). The sequencing of the component is controlled by a clock signal Ck. The notations of the processes and associated control signals used in FIG. 1 have been identically taken over, if necessary, to designate the means carrying out the corresponding process. The memory component comprises two ports Port A and Port B which according to the invention address two distinct spaces of the memory, a main space and a spare space. For each port, we have the corresponding address, data and control signals. Thus for 10 Port A: AdA the address signals, INA and OUTA respectively the data inputs and outputs, and RNVA the write / read signal. Similarly, for Port B: AdB the address signals are INB, OUTB and R / VVB. A separate address register is associated with each port, RA for Port A and RB for Port B. If there is to be a correction write on one of the two spaces following a read access, this register will allow keep the address of this reading on the port concerned by the correction, while the other register will be available to receive addresses for read access to the other port requested by an external user process of the memory. By convention, one notes: -Load: activation of a memory write, corresponding to a write access by an external user process of the memory. LoadN means that there is no write access by an external process. This signal can be used as priority information to invalidate the possible correction conditions when a write is required by the user process or device. -CorrA (respectively CorrB): activation of a memory write on Port A (respectively Port B) only, to make a correction; CorrNA (respectively CorrNB) meaning that there is no correction on Port A (respectively Port B). The architecture comprises different registers and logic circuits around the memory component DPM, to implement the security method.

Un registre tampon d'entrée Rin permet de mémoriser une donnée D présentée en écriture en entrée par un processus externe. Un registre tampon de sortie Rout permet de mémoriser la donnée Dout fournie en sortie en réponse à un accès en lecture. An input buffer register Rin makes it possible to store a data item D written in input by an external process. A Rout output buffer register stores the data output Dout in response to a read access.

Des moyens pour fournir les deux adresses distinctes appairées Ad1 et Ad2, correspondant à une adresse mémoire Ad accédée en lecture ou en écriture sont prévus. Dans l'exemple, il consiste pour Ad1 en une simple adjonction d'un "0", et pour Ad2, en une simple adjonction d'un "1" à l'adresse Ad. D'autres conventions simples permettent de définir les deux adresses appairées correspondant à une adresse mémoire, par exemple par inversion d'un ou plusieurs bits d'adresse. Le multiplexeur Mxin reçoit la sortie de ces deux registres et fournit en sortie la donnée Din à écrire. II est suivi d'un circuit 100.10 de calcul de parité P. La donnée Din+P est ainsi présentée en entrée de donnée de chaque port, INA et INB. Le multiplexeur Mxout reçoit les données (D)A et (D)B délivrées par chacun des ports Port A, Port B, et fournit en sortie la donnée Dout à présenter sur le bus (non représenté) en réponse à une demande d'accès en lecture, en fonction des contrôles de parité sur ces données. Ce multiplexeur est suivi du registre tampon de sortie. Une logique combinatoire des deux signaux de contrôle de parité ErrA et ErrB, est ainsi prévue pour sélectionner (Sel) de manière appropriée selon une convention choisie, la donnée à transmettre en sortie, (D)A ou (D)B, en fonction du contrôle de parité, et activer le cas échéant le signal d'exception d'invalidité XC. Cette logique est représentée par le circuit 100.23a sur la figure 3. Une logique combinatoire est aussi prévue pour activer une correction le cas échéant sur un des ports, avec la donnée de sortie fournie par l'autre port : CorrA est activé si ErrA est négatif et ErrB positif, et CorrB est activé dans la situation inverse. Cette logique est représentée par le circuit 100.3a sur la figure 3. Comme illustré, les signaux CorrA et CorrB peuvent être également appliqués dans la logique 100.23a de génération du signal XC, comme expliqué dans la suite, pour autoriser une lecture sur un port pendant que l'autre port est en correction. Means for providing the two separate paired addresses Ad1 and Ad2 corresponding to an Ad memory address accessed in read or write are provided. In the example, it consists for Ad1 in a simple addition of a "0", and for Ad2, in a simple addition of a "1" to the address Ad. Other simple conventions make it possible to define the two paired addresses corresponding to a memory address, for example by inverting one or more address bits. The multiplexer Mxin receives the output of these two registers and outputs the data Din to be written. It is followed by a circuit 100.10 of parity calculation P. The data Din + P is thus presented at the data input of each port, INA and INB. The multiplexer Mxout receives the data (D) A and (D) B delivered by each of the ports Port A, Port B, and outputs the data Dout to be presented on the bus (not shown) in response to an access request. in reading, based on parity checks on this data. This multiplexer is followed by the output buffer register. A combinatorial logic of the two parity check signals ErrA and ErrB is thus provided to select (Sel) appropriately according to a chosen convention, the data to be output, (D) A or (D) B, as a function of the parity check, and if necessary activate the XC invalidity exception signal. This logic is represented by the circuit 100.23a in FIG. 3. A combinational logic is also provided to activate a correction if necessary on one of the ports, with the output data provided by the other port: CorrA is activated if ErrA is negative and ErrB positive, and CorrB is activated in the opposite situation. This logic is represented by the circuit 100.3a in FIG. 3. As illustrated, the signals CorrA and CorrB can also be applied in the logic 100.23a for generating the signal XC, as explained hereinafter, to allow a reading on a port while the other port is in correction.

Chaque port a un registre d'adresse propre, RA pour Port A et RB pour Port B, ce qui permet le cas échéant de conserver l'adresse de lecture précédente sur le port concerné par la correction, alors que l'autre registre est disponible pour des accès en lecture. Typiquement, le registre ne peut charger une nouvelle adresse Ad présentée par un processus externe utilisateur de la mémoire, que si un accès en écriture est effectué, représenté par Load, ou qu'il n'y a pas de correction sur le port correspondant, représenté par CorrNA pour RA et par CorrNB pour RB. Le fonctionnement désiré est de manière simplifiée le suivant. La donnée Dout fournie en sortie par le multiplexeur Mxout en réponse à un cycle de lecture a été mémorisée dans le registre tampon de sortie Rout. Si à la suite de cette lecture, une correction est effectuée, en raison du contrôle de parité, le composant mémoire sera normalement indisponible à tout cycle d'écriture "normal" : Load ne sera pas à l'état actif, et LoadN autorise alors la correction CorrA ou CorrB : la donnée Dout mémorisée est chargée par Mxin en entrée du composant mémoire. Si la correction doit être effectuée sur Port A (CorrA activé), CorrNA n'est pas activé: le contenu du registre d'adresse de Port A RA reste inchangé, permettant la correction à l'adresse de lecture précédente, sur activation en écriture du signal de contrôle de lecture/écriture R1WA sur Port A par le signal CorrA, avec la donnée Din+P = Dout+P chargée en entrées de données INA, INB, via Mxin ( sauf en cas de chargement prioritaire demandé par le processus ou dispositif utilisateur, LoadN passant alors à l'état actif pour chargée la donnée Din). Si la correction est effectuée sur Port B, CorrNA est activé, ce qui permet d'échantillonner une nouvelle adresse Ad pour une opération de lecture uniquement sur Port A, sur un front actif du signal d'horloge. Dans ce cas, les signaux Load et CorrA sont tous deux inactifs, ce qui équivaut à une activation en lecture du signal de contrôle de lecture/écriture RNVA : la donnée lue à l'adresse présentée en entrée adresse AdA est fournie en sortie Dout du multiplexeur, cette sortie Dout du multiplexeur Mxout étant alors forcée par le signal sel à présenter le contenu de la voie A et le signal d'erreur XC étant alors mis égal à ErrA, par une logique combinatoire appropriée (100.23a). Un cycle d'écriture de correction sur Port B ou un cycle de lecture 35 sur Port B pendant une correction sur Port A, sont obtenus de manière similaire, à l'aide des signaux LoadN, CorrB, CorrNB, ErrB. II suffit de permuter les lettres A et B dans le paragraphe précédent. L'ensemble des signaux logiques d'activation est en pratique généré par des circuits logiques combinatoires simples, à partir des signaux habituels de lecture écriture en mémoire et des signaux de correction générés à partir des contrôles de parité selon l'invention. Ce sont des aspects courants de gestion de signaux de contrôle, qui ne présentent pas de difficultés particulières pour l'homme de l'art. L'invention qui vient d'être décrite permet d'améliorer la fiabilité des données de mémoire vive par une sécurisation des données vis à vis des aléas logiques notamment, sécurisation obtenue en implémentant un schéma de redondance en écriture et en lecture combiné à un contrôle de parité. Avantageusement la correction d'une donnée détectée incorrecte par la donnée redondante détectée correcte permet de renforcer cette sécurisation. Elle est mise en oeuvre en pratique par des moyens simples comprenant registres tampons et circuits logiques associés à chaque composant mémoire formant l'espace mémoire vive d'un circuit électronique. La mise en oeuvre pratique dont un exemple a été donné, utilise des mécanismes bien connus et les possibilités habituelles de commande des mémoires à accès double port et bit(s) de parité. Each port has its own address register, RA for Port A and RB for Port B, which allows for the retention of the previous read address on the port concerned by the correction, while the other register is available. for read access. Typically, the register can load a new address Ad presented by an external user process of the memory, only if a write access is performed, represented by Load, or that there is no correction on the corresponding port, represented by CorrNA for RA and by CorrNB for RB. The desired operation is simplified as follows. The data Dout output by the multiplexer Mxout in response to a read cycle has been stored in the output buffer register Rout. If as a result of this reading, a correction is made, because of the parity check, the memory component will normally be unavailable for any "normal" write cycle: Load will not be in the active state, and LoadN will then allow correction CorrA or CorrB: the memorized data Dout is loaded by Mxin at the input of the memory component. If correction is to be performed on Port A (CorrA enabled), CorrNA is not enabled: the contents of the Port A RA address register remain unchanged, allowing correction to the previous read address, on write enable of the R1WA read / write control signal on Port A by the signal CorrA, with the data Din + P = Dout + P loaded into data inputs INA, INB, via Mxin (except for priority loading requested by the process or user device, LoadN then going to the active state for loaded data Din). If the correction is done on Port B, CorrNA is enabled, allowing a new Ad address to be sampled for a read operation only on Port A, on an active edge of the clock signal. In this case, the signals Load and CorrA are both inactive, which is equivalent to a read activation of the RNVA read / write control signal: the data read at the address presented at the AdA address input is outputted Dout of the multiplexer, this output Dout multiplexer Mxout then being forced by the signal salt to present the contents of the channel A and the error signal XC then being equal to ErrA, by a suitable combinational logic (100.23a). A correction write cycle on Port B or a read cycle on Port B during a correction on Port A is similarly obtained using the signals LoadN, CorrB, CorrNB, ErrB. Just swap the letters A and B in the previous paragraph. The set of logic activation signals is in practice generated by simple combinational logic circuits, based on the usual read-write signals in memory and the correction signals generated from the parity checks according to the invention. These are common aspects of control signal management, which do not present particular difficulties for those skilled in the art. The invention that has just been described makes it possible to improve the reliability of the RAM data by securing the data with respect to logical hazards, in particular, security obtained by implementing a redundancy scheme for writing and reading combined with a control. of parity. Advantageously, the correction of a piece of data detected incorrectly by the redundant data detected correctly makes it possible to reinforce this security. It is implemented in practice by simple means comprising buffer registers and logic circuits associated with each memory component forming the random access memory space of an electronic circuit. The practical implementation of which an example has been given uses well-known mechanisms and the usual possibilities of controlling dual port access memories and parity bit (s).

Claims (13)

REVENDICATIONS 1. Procédé de sécurisation des données d'une mémoire vive formée par au moins un composant mémoire, caractérisé en ce que chaque composant mémoire est du type configurable en accès double port sur un premier port (Port A) et un deuxième port (Port B), et tel que chaque adresse mémoire permet de mémoriser n bits utiles de données et au moins un bit supplémentaire, caractérisé en ce qu'il comprend la division de l'espace mémoire de chaque composant mémoire en un espace principal (A) et un espace de secours (B), l'attribution d'un port d'accès en lecture et écriture différent à chaque espace, en ce qu'à chaque accès en écriture d'une donnée (D) à une adresse mémoire (Ad), il instancie deux accès mémoire simultanés à deux adresses distinctes (Ad1, Ad2), un accès sur chaque port, pour écrire ladite donnée (D) avec un bit de parité (P) correspondant, et en ce qu'à chaque accès en lecture à une adresse mémoire (Ad), il instancie deux accès mémoire simultanés à deux adresses distinctes correspondantes (Ad1, Ad2), un accès sur chaque port, pour lire une donnée correspondante sur chaque port, et fournit en sortie de lecture (Dout) l'une ou l'autre donnée lue en fonction du résultat (ErrA, ErrB) d'un contrôle de la parité sur chacune desdites données lues. 1. Method for securing the data of a random access memory formed by at least one memory component, characterized in that each memory component is of the configurable type in dual port access on a first port (Port A) and a second port (Port B). ), and such that each memory address makes it possible to store n useful bits of data and at least one additional bit, characterized in that it comprises dividing the memory space of each memory component into a main space (A) and a backup space (B), assigning a different read and write access port to each space, in that each access to write data (D) to a memory address (Ad), it instantiates two simultaneous memory accesses to two distinct addresses (Ad1, Ad2), an access on each port, to write said datum (D) with a corresponding parity bit (P), and that at each read access to a memory address (Ad), it instantiates two memory access s impersonated at two corresponding separate addresses (Ad1, Ad2), an access on each port, to read a corresponding data item on each port, and provides at the output of reading (Dout) one or the other data read according to the result ( ErrA, ErrB) of a parity check on each of said read data. 2. Procédé de sécurisation selon la revendication 1,caractérisé en ce qu'il consiste pour chaque opération d'écriture d'une donnée (D) de n bits à une adresse mémoire donnée (Ad), i) à calculer le bit de parité de ladite donnée, pour former une donnée d'écriture (Din+P) comprenant les bits utiles et le bit de parité calculé et ii) à instancier deux écritures simultanées de ladite donnée d'écriture (Din+P) une sur chaque port, à deux adresses distinctes (Ad1, Ad2) associées à ladite adresse mémoire (Ad). 30 2. Securing method according to claim 1, characterized in that it consists for each write operation of a datum (D) of n bits to a given memory address (Ad), i) to calculate the parity bit of said datum, to form a write data (Din + P) comprising the useful bits and the calculated parity bit and ii) to instantiate two simultaneous writes of said write data (Din + P) one on each port, at two distinct addresses (Ad1, Ad2) associated with said memory address (Ad). 30 3. Procédé de sécurisation selon la revendication 1 ou 2, caractérisé en ce qu'il consiste pour chaque opération de lecture de la donnée mémorisée à une adresse mémoire donnée (Ad), i) à instancier deux lectures simultanées sur chaque port, à deux adresses distinctes (Ad1, Ad2) associées à ladite adresse mémoire (Ad), ii) à effectuer un contrôle du bit de parité (100.22, 100.22') sur la première donnée ((D)A) lue à la première adresse (Ad1) et sur la deuxième donnée ((D)B) lue à la deuxième adresse (Ad2), pour fournir en donnée de sortie (Dout) ladite première ou deuxième donnée en fonction des contrôles de parité correspondants. 3. security method according to claim 1 or 2, characterized in that it consists for each read operation of the data stored at a given memory address (Ad), i) to instantiate two simultaneous readings on each port, two separate addresses (Ad1, Ad2) associated with said memory address (Ad), ii) performing a check of the parity bit (100.22, 100.22 ') on the first datum ((D) A) read at the first address (Ad1) and on the second data item ((D) B) read at the second address (Ad2), for outputting (Dout) said first or second data as a function of the corresponding parity checks. 4. Procédé de sécurisation selon la revendication 3, caractérisé en ce 15 que si les contrôles de parité de ladite première donnée et de ladite deuxième donnée sont incorrects, un signal d'exception (XC) est activé en sortie. 4. Securing method according to claim 3, characterized in that if the parity checks of said first data and said second data are incorrect, an exception signal (XC) is activated at the output. 5. Procédé de sécurisation selon la revendication 3 ou 4, caractérisé 20 en ce que si les contrôles de parité de ladite première donnée et de ladite deuxième donnée sont l'un correct et l'autre incorrect, la donnée détectée correcte est utilisée pour corriger la donnée détectée incorrecte dans un cycle d'écriture de correction. 25 A security method according to claim 3 or 4, characterized in that if the parity checks of said first data and said second data are correct and incorrect, the correct detected data is used to correct the incorrectly detected data in a correction write cycle. 25 6. Procédé selon la revendication 5, caractérisé en ce que ledit cycle d'écriture de correction est instancié par vol de cycle. 6. Method according to claim 5, characterized in that said correction write cycle is instantiated by cycle flight. 7. Procédé selon la revendication 5, caractérisé en ce que ledit cycle d'écriture de correction est instancié sur le premier cycle d'écriture 30 disponible. The method of claim 5, characterized in that said correction write cycle is instantiated on the first available write cycle. 8. Procédé selon la revendication 5, caractérisé en ce que ledit cycle d'écriture de correction est un cycle masqué, activé sur le port ayant fourni la donnée lue détectée incorrecte, des opérations de lecture 35 étant autorisées sur l'autre port pendant ledit cycle de correction. 10 The method of claim 5, characterized in that said correction write cycle is a masked cycle, activated on the port having provided the incorrect read data detected, read operations being allowed on the other port during said correction cycle. 10 9. Procédé selon la revendication 8, caractérisé en ce qu'il utilise des moyens de mémorisation (RA, RB) de l'adresse mémoire (Ad) des accès en lecture ou en écriture associés à chacun des ports de la mémoire. 9. The method of claim 8, characterized in that it uses storage means (RA, RB) of the memory address (Ad) read access or write associated with each of the ports of the memory. 10. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le ou les composants mémoire sont de type 9 bits, permettant la mémorisation à chaque adresse d'un octet de bits utiles et un bit supplémentaire. 10 10. Method according to any one of the preceding claims, characterized in that the memory component or components are 9-bit type, allowing the storage at each address of a byte of useful bits and an additional bit. 10 11. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'une donnée (Di,,) à mémoriser dans ledit espace de mémoire vive dont le nombre de bits utiles est plus grand que le nombre de bits pouvant être mémorisés à chaque adresse, est 15 mémorisée par tranches de bits utiles (Dini, Din2), avec un bit de parité par tranche. 11. Method according to any one of the preceding claims, characterized in that a datum (Di ,,) to be stored in said random access memory space whose number of useful bits is greater than the number of bits that can be stored in memory. each address is stored in useful bit slices (Dini, Din2) with one parity bit per slice. 12.Architecture utilisant une mémoire vive sécurisée formée par un ou plusieurs composants mémoires, caractérisée en ce qu'il comprend 20 des moyens associés (CM)pour mettre en oeuvre un procédé selon l'une quelconque des revendications précédentes pour chaque composant mémoire. 12.Architecture using a secure RAM formed by one or more memory components, characterized in that it comprises associated means (CM) for implementing a method according to any one of the preceding claims for each memory component. 13. Circuit programmable comprenant de la mémoire vive utilisée 25 selon une architecture selon la revendication 12.5 13. Programmable circuit comprising RAM used in architecture according to claim 12.5
FR0707003A 2007-10-05 2007-10-05 METHOD OF SECURING DATA IN MEMORY LIVING Expired - Fee Related FR2922037B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0707003A FR2922037B1 (en) 2007-10-05 2007-10-05 METHOD OF SECURING DATA IN MEMORY LIVING

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0707003A FR2922037B1 (en) 2007-10-05 2007-10-05 METHOD OF SECURING DATA IN MEMORY LIVING

Publications (2)

Publication Number Publication Date
FR2922037A1 true FR2922037A1 (en) 2009-04-10
FR2922037B1 FR2922037B1 (en) 2011-07-15

Family

ID=39277023

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0707003A Expired - Fee Related FR2922037B1 (en) 2007-10-05 2007-10-05 METHOD OF SECURING DATA IN MEMORY LIVING

Country Status (1)

Country Link
FR (1) FR2922037B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3104754A1 (en) * 2019-12-17 2021-06-18 Thales ELECTRONIC SYSTEM INCLUDING A DEVICE FOR ESTIMATING AN ELECTRONIC MEMORY FAULT SUBJECT TO HIGH ALTITUDE FLIGHT CONDITIONS

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3668644A (en) * 1970-02-09 1972-06-06 Burroughs Corp Failsafe memory system
GB2220091A (en) * 1988-06-27 1989-12-28 Applic Specific Computers Limi A memory error protection system
US5611042A (en) * 1995-10-10 1997-03-11 Lordi; Angela L. Data error detection and correction for a shared SRAM
EP1703400A2 (en) * 2005-03-17 2006-09-20 Fujitsu Limited Dual storage apparatus and control method for the dual storage apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3668644A (en) * 1970-02-09 1972-06-06 Burroughs Corp Failsafe memory system
GB2220091A (en) * 1988-06-27 1989-12-28 Applic Specific Computers Limi A memory error protection system
US5611042A (en) * 1995-10-10 1997-03-11 Lordi; Angela L. Data error detection and correction for a shared SRAM
EP1703400A2 (en) * 2005-03-17 2006-09-20 Fujitsu Limited Dual storage apparatus and control method for the dual storage apparatus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MCNEIL C V: "SELF-CORRECTING DUPLEX MEMORY", IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 6, no. 7, December 1963 (1963-12-01), pages 90 - 91, XP002027967, ISSN: 0018-8689 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3104754A1 (en) * 2019-12-17 2021-06-18 Thales ELECTRONIC SYSTEM INCLUDING A DEVICE FOR ESTIMATING AN ELECTRONIC MEMORY FAULT SUBJECT TO HIGH ALTITUDE FLIGHT CONDITIONS
EP3839741A1 (en) * 2019-12-17 2021-06-23 Thales Electronic system comprising a device for estimating defects of an electronic memory subjected to high-altitude flight conditions

Also Published As

Publication number Publication date
FR2922037B1 (en) 2011-07-15

Similar Documents

Publication Publication Date Title
EP3259674B1 (en) Dram circuit provided with a built-in processor
FR3024271A1 (en) MULTIPLE SIZES OF WORDS ECC CODES IN AN SSD
US11604693B2 (en) Memory device, a controller for controlling the same, a memory system including the same, and an operating method of the same
FR2858101A1 (en) Flash memory e.g. EEPROM, system, has control unit dividing data into data groups that are smaller in size than page buffer, and transmitting groups and parity code of groups in series to flash memory device
EP1710703A1 (en) Cache consistency in a shared-memory multiprocessor system
EP0392932B1 (en) Method and device for speeding-up memory accesses using a modified LRU algorithm
WO2018046850A1 (en) Methods and devices for bypassing the internal cache of an advanced dram memory controller
EP1573541A2 (en) Data storage method with error correction
CN107391046B (en) Data writing method and device of RAID system
FR3020712A1 (en) BIDIRECTIONAL COUNTER IN FLASH MEMORY
FR3038188A1 (en) SYSTEM FOR VERIFYING THE INTEGRITY OF A COMMUNICATION BETWEEN TWO CIRCUITS
EP3080812B1 (en) Memory data writing circuit
EP0394115B1 (en) Apparatus for speeding-up memory accesses in a computer system
FR2922037A1 (en) Data i.e. bank data, securing method for e.g. static RAM of programmable electronic circuit in airplane, involves instantiating memory accesses with addresses, and providing read data at output based on result of parity control on read data
EP3611623A1 (en) Memory controller comprising two buffers and means for selecting a filling mode for said buffers
EP2836913B1 (en) Device for generating a signature during execution of a program task, and method for comparing flows of execution
US20200249872A1 (en) System and Method for Faster RAID Rebuild via Allocation Knowledge
EP0344052B1 (en) Modular memory
FR3057970A1 (en) COMMUNICATION ARCHITECTURE FOR THE EXCHANGE OF DATA BETWEEN PROCESSING UNITS
EP0636984B1 (en) Method and device for checking the data in a computer
EP0346420B1 (en) Process for exchanging information in a multiprocessor system
EP3522020A1 (en) Management of a non-volatile memory
FR3084179A1 (en) DIRECT ACCESS IN MEMORY
EP4036916A1 (en) Device comprising a non-volatile memory circuit
EP1340148B1 (en) Device and method for detecting and correcting memory errors in an electronic system

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

PLFP Fee payment

Year of fee payment: 13

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15

PLFP Fee payment

Year of fee payment: 16

ST Notification of lapse

Effective date: 20240605