EP2646916B1 - Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride - Google Patents

Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride Download PDF

Info

Publication number
EP2646916B1
EP2646916B1 EP11787891.8A EP11787891A EP2646916B1 EP 2646916 B1 EP2646916 B1 EP 2646916B1 EP 11787891 A EP11787891 A EP 11787891A EP 2646916 B1 EP2646916 B1 EP 2646916B1
Authority
EP
European Patent Office
Prior art keywords
memory
processes
mem
sphere
zones
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.)
Not-in-force
Application number
EP11787891.8A
Other languages
German (de)
English (en)
Other versions
EP2646916A1 (fr
Inventor
Mickaël CARTRON
Yoann Congal
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.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Publication of EP2646916A1 publication Critical patent/EP2646916A1/fr
Application granted granted Critical
Publication of EP2646916B1 publication Critical patent/EP2646916B1/fr
Not-in-force legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Definitions

  • the present invention relates to a method and a device for reliability of a multi-processor system by hybrid pointing. It applies in particular in the field of embedded multi-processor systems.
  • the general problem is the reliability of multiprocessor systems, in the logic of which transient faults can occur and lead to failures.
  • it may be a fault in the logic of one of the processors.
  • These transient faults may be due to temporary disturbances such as falling neutron or proton particles, radiation such as gamma radiation or inductive noise on the power supply.
  • the current multiprocessor technologies are increasingly sensitive to such disturbances, because of the ever higher level of integration in terms of surface density of transistors and total number of transistors. To allow critical applications with a high level of reliability, it is desirable to guard against these transient faults, which can propagate in the memory.
  • ECC Error Correcting Codes In an attempt to solve the problems related to transient faults, techniques based on error correcting codes in the memory, known in the English terminology as ECC Error Correcting Codes, have been developed. These techniques are flexible because the code correction power can be adapted to the conditions of the target environment as well as to the expected level of reliability. In addition, they are easy to implement since the encoder / decoder is shared for all the memory locations, which makes it possible to generate a small additional surface cost for the control. A major disadvantage of these techniques is that they are usable only because of the regularity of structure typical of the memories. Unfortunately errors occurring in processor logic (as opposed to memories) do not offer such regularity.
  • Spatial duplication approaches exist in several variants, but the common idea is to do the desired calculation simultaneously on several identical logic circuits and to react in case of the observation of a difference on the outputs.
  • An alternative is to have two instances of the circuit to be protected, associated with a detection mechanism on at least one of the instances to determine which of the two instances was the victim of the error.
  • This variant of spatial duplication has several disadvantages. First of all the logic must be duplicated and as soon as a transient error has occurred, the two instances have diverged, which makes it necessary to add a system of resynchronization of the two instances. In addition, the error detection is on the critical path of the data stream, which is detrimental to performance and requires to choose a very fast detector, to the detriment of its complexity and its coverage of errors.
  • Another variant is to have three instances in parallel and a majority vote out. This method avoids placing a detector in one of the instances like the two-instance method described above, but it shows a majority voting system on the critical path of the data stream, which is again detrimental to performance. Moreover, the multiplication by three of the logic is very expensive on the surface.
  • the multi-sampling approaches consist of replacing the set of flip-flops of a circuit by special flip-flops to sample the signal several times. Statistically, in case of temporary disruption and if the system is well dimensioned, that is to say if its operating frequency is not too high, the conditions can be met so that there is little chance that an error affects all samples.
  • multi-sampling There are basically two variants of multi-sampling : pre-sampling and post-sampling. In all cases, these methods are expensive on the surface and fault tolerance is partial and difficult to achieve.
  • pre-sampling limits the operating frequency of the system and therefore its performance. But in case of divergence, the second sample is statistically more likely to be correct because many transient faults translate into increased latency. Pre-sampling is therefore a method of detecting faults and probable tolerance of faults.
  • checkpointing- oriented approaches include periodically placing the data of the monitored system safely in a storage memory, for the purpose of reusing them later in case of need to recover the state of the system.
  • pointing we will speak of "approach by pointing” or "pointing system” to designate a checkpointing- oriented approach or a system implementing such an approach.
  • all the data stored during a storage step carried out in the context of a pointing approach will simply be referred to as "pointing”.
  • Pointing approaches allow the monitored system to be put back into a state prior to the occurrence of the fault and all its consequences.
  • the approaches to pointing approaches are distinguished first by the extent of the recovery capability. For example, some pointing systems are limited to the extent of a processor, the term Anglo-Saxon "rollback" then being used. In this case, it is possible to undo false actions in the processor, but any actions outside the processor, such as reads and writes to the memory space, can not be undone. It is therefore necessary to combine this pointing approach with fault or error detectors with very low latency, possibly to the detriment of the detection coverage. Other pointing systems extend over larger systems than the single processor. This then allows high detection latency and this allows to keep high performance because the detection is made out of the critical path.
  • the approaches to pointing approach are also distinguished by the control policy.
  • each processor and each memory module manages its own control independently, whether verification or storage.
  • the global pointing policy can then vary from one system to another: it can be coordinated or uncoordinated.
  • Coordinated approaches are intended to create global and coordinated scores for the entire system.
  • the scores are thus consistent by construction and thus rapidly obsolete, which tends to reduce the number of scores stored simultaneously and therefore to reduce the storage volume.
  • a component or application requires a score, it takes the entire system into that decision. If this behavior is acceptable in simple contexts, for example when there are few processors and few disjointed applications, it becomes unacceptable if the system increases in complexity, for example in multiprocessor and / or multi application cases.
  • this coordinated approach easily leads to a situation where it is necessary to manage the "worst global case", that is to say the case where the cost (in memory and in performance) of synchronization becomes predominant because the scores become very frequent. and where concurrently the scores to be stored are very bulky because global.
  • the object of the invention is notably, based on a hybrid pointing method, the pointing being coordinated within groups of processes and not coordinated between these groups, to avoid both the aforementioned disadvantages of the coordinated pointing methods. and at the same time the aforementioned drawbacks of non-coordinate pointing methods.
  • the invention particularly relates to a method of reliability of a system comprising a plurality of processors and a memory. The method includes a step of grouping the processes into a plurality of groups.
  • It also comprises a step of saving, individually for each group of processes, data stored in the memory usable by at least one of the processes belonging to said group, so as to restore a global state without error of the system following an error occurring in a processor executing one of the processes belonging to said group, without having to restore the entire memory.
  • each group can group processes sharing a system resource.
  • the shared resource may be memory.
  • each group may be a data dependency sphere that can group processes that can access areas of the memory such that the union of all said areas is logically connected, and such that any one of said areas is non-empty intersection with the union of all other zones among said zones.
  • the method comprises a step of confining access to the memory by data dependency sphere.
  • This confinement step may include a step of management of access rights to the areas of the memory for each process, so as to prevent the propagation of a logical error occurring in the processor executing said process, as well as a management step indicators of membership of the areas of the memory to each sphere of dependence of data.
  • the invention also relates to a device for reliability of a system comprising a plurality of processors and a memory.
  • the device includes means for grouping the processes into a plurality of groups. It also comprises means for individually saving for each group of processes the data stored in the memory that can be used by at least one of the processes belonging to said group, so as to restore a global state without error of the system following an error occurring in one of the processors executing one of the processes belonging to said group, without having to restore the entire memory.
  • the means for grouping can group processes sharing a system resource.
  • the shared resource may be memory.
  • each data dependency sphere may contain processes that can access areas of the memory such that the union of all said areas is logically connected and such that any one of said zones is of non-empty intersection with the union of all other zones among said zones.
  • the device comprises means for confining the accesses to the memory by sphere of data dependence, these means for confining that can include means for managing access rights to the areas of the memory for each process, so as to prevent the propagation of a logic error occurring in the processor executing said process, as well as means for managing indicators of membership of the areas of the memory at each data dependency sphere.
  • the saved data may include the data stored in the related union of memory areas that can be accessed by one of the processes belonging to said sphere. They can also include the data stored in the registers of the processors executing one of the processes belonging to said sphere. They may also include data stored in pipeline stages of processors executing one of the processes belonging to said sphere. They may also include data stored in the memory management units or in the memory protection units included in the processors executing one of the processes belonging to said sphere. They can finally include the data stored in the cache memories of the processors executing one of the processes belonging to said sphere.
  • the means for grouping the processes into data dependency spheres may be implemented as services provided by the system operating system, which services may provide the different data dependency spheres corresponding to all the processes commonly performed.
  • the means for backing up may include means for coordinating backups of different spheres of data dependency corresponding to all currently executed processes, these means for coordinating which may include means for initiating a data backup for a data dependency sphere corresponding to commonly executed processes, as well as means for triggering, continued to the logical error occurring in one of the processors executing one of the processes belonging to said sphere, restoring the data saved for said data dependency sphere exclusively.
  • the means for confining may include a memory management unit or a memory protection unit associated with each of the processors of the system, said unit being able to prohibit access to the processor with which it is associated. memory outside the area allocated to the process being executed by said processor.
  • the memory management unit or the memory protection unit may include memory access management means, the current data dependency spheres depending on these rights of access. 'access.
  • the main advantage of the present invention is to combine the benefits of coordinated policies, such as rapid obsolescence and bounded storing, with the benefits of uncoordinated policies, such as low synchronization overhead, low pointing overhead, and size. storage of optimal scores overall.
  • processes can be grouped in a completely arbitrary manner, that is, although these processes are strictly unrelated to each other.
  • Such arbitrary grouping of processes leads to an operation which, while avoiding the drawbacks of coordinate pointing methods and uncoordinated pointing methods of the prior art, is, however, not optimal. This is why, in the remainder of the present application, a more efficient embodiment is described, in which processes sharing memory zones are grouped together on the basis of the concept of Sphere of Data Dependence (SDD) according to the 'invention.
  • SDD Sphere of Data Dependence
  • Processes sharing a communication resource, or processes sharing a resource input / output, or processes sharing a hardware interrupt can be grouped according to the invention.
  • the figure 1 schematically illustrates the principle of SDD according to the invention.
  • SDS is a grouping of processes that use common memory areas.
  • a multiprocessor system comprises two processors P1 and P2 sharing a main memory MEM.
  • the components providing the resources of the system namely the processors P1, P2 and the memory MEM, are connected by a data bus.
  • a process whose Pid (“Process identifier") is 1 uses data in a memory area A of the memory MEM, which data may include code and data.
  • a process whose Pid is 2 uses data in areas B and C of the memory MEM.
  • a process whose Pid is 3 uses data in the area C and in a zone D of the memory MEM.
  • the union of such areas may not be physically related, but since these areas are represented in a geometric space, the union of their representations has the property of connectivity in the representation space, as illustrated by the figure 1 . It can also be observed that the intersection between the zone BuC and the union of the other zones forming the perimeter of the SDD 20, namely only the zone CuD, is non-empty (since it is equal to C). It can be noted that a process can not belong to more than one SDS and that a SDS can possibly consist of a single process.
  • SDD management which includes creation, modification, and removal of SDDs upon process creations and process deletes on the P1 and P2 processors, may be left to the programmer. He must then have an excellent control of the resources used by his program, whether computing resources like P1 and P2 or whether it is the storage resources like MEM.
  • a confinement perimeter to each of the SDDs 10 and 20 can be achieved by using, associated with each of the processors P1 and P2, a component such as a memory management unit (MMU) or a unit Memory Protection Unit (MPU).
  • MMU memory management unit
  • MPU unit Memory Protection Unit
  • MMUs or MPUs can deny access beyond the memory perimeter of the SDD of the processor to which they are associated respectively.
  • MMUs and MPUs are used to counter any programming errors.
  • the present invention proposes to use them advantageously to counteract the effects of transient faults in logic.
  • the management of the SDDs can be implemented by system services, for example by the system services already used by the MMUs and the MPUs, so as not to complicate the task of the programmer.
  • system services are called for example in the following cases: when placing tasks on resources, when allocating memory, when requesting access to a resource, when requesting access to a resource of communication type IPC (Inter Process Communication).
  • the present invention proposes a hybrid pointing policy coordinated within the SDSs and uncoordinated between the SDSs. This policy makes it possible to implement considerably lighter pointing systems for both processing and storage, especially in a multi-application and multi-processor context.
  • the figure 2 illustrates by an architecture diagram an embodiment of a system according to the invention comprising the processors P1 and P2.
  • Each of the processors P1 and P2 includes a MMU.
  • the processors P1 and P2 are capable of pointing, that is to say they are able to save and recover their internal state (registers, pipeline stages, cache memory, state of the MMU and others).
  • the processors P1 and P2 also include error detectors.
  • the system has at least one memory controller capable of SDD pointing in the MEM memory, that is to say it is able to recover the memory perimeter corresponding to a SDD, such as was this perimeter during a given score.
  • the memory MEM is not represented on the figure 2 for the sake of clarity.
  • the system also includes a CP Master component (CP - CheckPoint) in charge of coordinating inter SDS pointing. It also comprises a system bus and a peripheral bus connected by a gateway acting as an interconnection system.
  • CP Master component CP - CheckPoint
  • Each capable pointing component manages a set of scores.
  • the processor P1 can manage a list of records, each record representing the internal state of the processor P1 at a time when the CP Master component ordered a pointing.
  • the processor P2 can handle a similar list.
  • the Memory Controller can manage a list of records, each record representing a perimeter of the MEM memory corresponding to a SDD at a time when the CP Master component has ordered a score. These lists evolve according to the orders of the CP Master component.
  • Each of the pointing capable components is also capable, when the master CP component requests it, of recovering one of the scores from the set of scores it manages.
  • the processor P1 can restore its internal state as it was at a time when the Master CP component had ordered a score, this thanks to the recording of this internal state that has kept in its list.
  • the processor P2 can do the same.
  • the Memory Controller can meanwhile to restore a perimeter of the memory MEM corresponding to a SDD as it was at a moment when the component CP Master had ordered a score, this thanks to the recording of this perimeter which it kept in its list.
  • Resources memories RM P process are all beaches it uses read / write for storing instructions and data in the memory MEM. These ranges may possibly be non-contiguous.
  • the error can remain latent, but it can also propagate by causing the system to gradually diverge from an error-free execution. If the error propagates, then it may possibly result in a memory write to an address that is not part of the memory resources RM a .
  • an error on the processor P i during the execution of the process P a could propagate anywhere in the memory would make it necessary to consider all the applications in their entirety, which would tend to increase the score considerably.
  • the invention proposes an error containment system advantageously using a MMU or an MPU.
  • MMU1 and MMU2 included in the processors P1 and P2 respectively.
  • a MMU, as well as an MPU allows in particular to manage memory access rights by process, this using services provided by the operating system.
  • a MMU or an MPU allowed to avoid the errors of programming made by the developers of the applications and to guard against the malicious attacks.
  • the invention proposes to use them to fight transient errors, by prohibiting certain access to memory.
  • an error containment is obtained, which prohibits the propagation of errors outside the memory resources of a given process.
  • the invention also proposes to match the confinement zone to an SSD as defined above.
  • the memory resources of a process are strictly confined to the SSD of the processor that executes said process.
  • a process may not be assigned to any SDS. Such a process is then not protected against transient errors in logic. However, its memory access rights must be restricted by proper programming of the MPU / MMU components, so that an error occurring during their execution prevents them from accessing confined SDSs. This system for confining errors according to the invention makes it possible to reduce the overall complexity of pointing.
  • the CP Master component has the function of coordinating the pointing between the components of the system capable of pointing, namely the processors P1 and P2 and the Memory Controller. This function includes accepting and processing point-creation requests from these components. This feature also includes sending SDO creation orders to components that host SDS resources. This feature also includes sending SDD Restitution orders to components that host SDS resources. To ensure this complex coordination function, the CP Master component has several interfaces.
  • the master CP component of this embodiment of the figure 2 may in particular comprise a detection interface.
  • This interface is unidirectional and takes as input events produced by the fault or error detectors present in the system.
  • This detection interface can be realized in various ways, such as by using dedicated threads ("threads") or by using the system bus or the peripheral bus. But other embodiments are possible.
  • the master CP component of this embodiment of the figure 2 also has a coordination interface.
  • This coordination interface is bidirectional and aims to coordinate the different pointing phases between the system components capable of pointing, namely the processors P1 and P2 and the memory controller.
  • This interface can be integrated on the system or peripheral bus, but other embodiments are possible.
  • the different messages exchanged on the coordination interface of this embodiment of the figure 2 are listed in Table 1 below, in which the pointing capable component designates either the processor P1, the processor P2, or the memory controller: ⁇ b> Table 1 ⁇ / b> Source Destination Message Point capable component CP Master Request new score CP Master Point capable component Order of creation of pointing on SDD i CP Master Point capable component Order of recovery on the SDD i of the score i Point capable component CP Master Collection operation information performed CP Master Point capable component Restart order of the SDD i CP Master Point capable component Order of suppression of pointing j of the SDD i CP Master Point capable component Order to delete all the scores below Val_plancher for the SDD r
  • This exemplary memory controller embodiment also includes the Log CP component (CP - CheckPoint), which stores the information necessary to restore memory MEM as it was at the time of any score taken on any SDD, except the scores that have been declared obsolete. The obsolete scores are indeed intended to be removed from the component Log CP.
  • Log CP component CP - CheckPoint
  • the figure 4 schematically illustrates the Log CP component of this exemplary embodiment. It includes a memory consisting of several fields per line managed as a circular buffer using two registers PT_DEBUT and PT_FIN, which are pointers respectively to the beginning and towards the end of the effective data area.
  • the size of the circular buffer is a generic parameter of the Log CP component and may be adapted to correctly size the pointing system.
  • a field P determines the presence of data in the line in question, the value 0 indicating the absence and the value 1 indicating the presence of a datum.
  • An SDD field indicates the identifier of the SDD.
  • a CP field stores the identifier of the pointing on the SDD indicated by the preceding field.
  • a field @ stores the address of the word.
  • a Value field stores the value as it was at the @ address at the time when the score was taken, on the corresponding SDD.
  • the figure 5 illustrates an example of a global state machine of the memory controller, in particular the writing procedure which will be detailed at Figures 6, 7 and 8 , the recovery procedure which will be detailed in figures 9 and 10 , the procedure for deleting an obsolescent score that will be detailed at the figure 11 , the procedure of creating a score that will be detailed at the figure 12 , the maintenance procedure that will be detailed at the figure 13 and finally the reading procedure.
  • the figure 6 illustrates by a diagram a write operation in the main memory MEM, such an operation can be performed directly or require a previous backup in the circular buffer of the component Log CP, which generates additional latency. Indeed, only the first write to a given address, on a given score of a given SDD is recorded. The subsequent writes are then no longer saved until a new score is created on the relevant SDD. The new writes are stored in the location pointed by PT_FIN, this pointer being incremented at the end of the operation. It should be noted that the zone between PT_DEBUT and PT_FIN is maintained ordered by SDD. This property is always true, even during the defragmentation operations that are presented later in the this request.
  • the dedicated CP cache structure is used, as illustrated by FIG. figure 3 .
  • This Cache CP structure consists of a memory part and a combinatorial part.
  • the figure 7 illustrates by a diagram the combinatorial part of the Cache CP structure which implements the logic for determining the presence of an equivalent prior write within the circular buffer of the Log CP component.
  • the memory part of the Cache CP component which will simply be called “cache” afterwards, consists of a certain number of lines, this number to be dimensioned correctly. If this number of lines is too small, then the cache is often full and it is often necessary to create points unnecessarily. This affects the performance of the system at several levels. On the other hand, if the number of lines is too high, then the surface cost is problematic, both on the storage elements and on the combinational logic. Each of the lines is divided into several fields.
  • a field P informs the presence of a line of information, the value 0 indicating the absence and the value 1 indicating the presence.
  • a field @ stores an address already accessed since the last creation of pointing on the considered SDD.
  • An SDD field stores the identifier of the considered SDD. The combinatorial part makes it possible to actions in one cycle on the interpretation of the contents of the memory part, as well as on its update. Thus, if the Hit output of the Cache CP component is 1, then an equivalent write has already been made to this address, on this score and on this SDD. If the Hit output of the Cache CP component is 0, then this is the first write. If necessary, the buffer of the component Log CP is completed as described above and this operation is associated in parallel with a write operation in the cache.
  • the figure 8 illustrates by a schema how it is written in the buffer of the Log CP component and in the cache of the CP Cache component.
  • the figure 9 schematically illustrates the control of the recovery operation.
  • the circular buffer is maintained ordered by SDD.
  • the circular buffer of the component Log CP is traversed in the opposite direction, that is to say from the pointer PT_FIN to the pointer PT_DEBUT.
  • the field P is 1
  • the SDD field contains the identifier of the corresponding SDD
  • the CP field contains an identifier greater than or equal to the identifier of the score to be restored
  • the value field of the line is copied to the address indicated by the @ field and the P field is reset to 0.
  • the figure 10 schematically illustrates the SDD cleanup operation of which the Cache CP component is capable.
  • the Cache CP component uses specific logic, which allows in a cycle to write 0 in the P field of all lines of the cache whose value of the SDD field corresponds to the recovery action. This disables the lines that can be reused in the future to memorize other write actions.
  • the current score of the SDD that has been recovered is set to the recovered score.
  • the current pointing number of a SDD is an integer that grows over time during the operation of the system.
  • a hardware counter inevitably ends up being saturated, because of the limited number of bits for its coding.
  • the invention proposes to introduce the concept of floor value in the system. When an overlap occurs, the relative seniority of the score analyzed must be compared to the seniority of the score given in parameter. For each SDS, a floor value named Val_plancher is maintained, which makes it possible to compare scores even in the event of saturation.
  • an indirect comparison test is performed by evaluating the logical value of ((CP i - Val_splitter) mod CP max ⁇ (CP param - Val_plancher) mod CP max ).
  • the figure 11 schematically illustrates the control of the obsolescence operation.
  • a SDS score is declared obsolete
  • the stored items containing the corresponding point number on the corresponding SDD are removed from the circular buffer by writing the value 0 in the P field.
  • a first possibility is to make a particular score obsolete.
  • a second possibility is to make obsolete all the scores older than a score passed in parameter.
  • the floor value is updated during the obsolescence operation of all the scores older than the time spent as a parameter.
  • the floor value is then redefined and takes the value of the parameter provided. This technique allows the system to operate on an unbounded time.
  • the figure 12 schematically illustrates the control of the operation of creating a new score on a SDD.
  • the register indicating the Current pointing for the identified SDD is updated incrementally.
  • the SDD cleanup operation is enabled on the corresponding SDS because the next postings in this SDS will have to be considered as new postings since the last posting.
  • the figure 13 schematically illustrates the control of the defragmentation operation of the circular buffer of the component Log CP.
  • the controller must perform defragmentation of the circular buffer of the Log CP component when possible.
  • the controller manages two additional pointers on the circular buffer: PT_LIBRE and PT_OBJET.
  • the algorithm is initialized by setting PT_LIBRE on the first empty line starting from PT_FIN.
  • the algorithm is then a search loop where at each loop step, the first line occupied starting from PT_LIBRE is moved on it, and the pointer PT_LIBRE progresses until finding the next free location.
  • the PT_FIN pointer at the beginning of the buffer is updated when the lines between PT_LIBRE and PT_DEBUT are free.
  • the read operation is simply to perform the reading in the main memory MEM.
  • the pointing ability according to the invention does not affect performance with regard to reading.
  • An additional advantage of the present invention is to be compatible with fault detectors having high detection latencies, placed out of the critical path, which allows high performance.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Description

  • La présente invention concerne un procédé et un dispositif de fiabilisation d'un système multi-processeur par pointage hybride. Elle s'applique notamment dans le domaine des systèmes multi-processeurs embarqués.
  • La problématique générale est la fiabilisation des systèmes multiprocesseurs, dans la logique desquels des fautes transitoires peuvent se produire et conduire à des défaillances. Par exemple, il peut s'agir d'une faute dans la logique de l'un des processeurs. Ces fautes transitoires peuvent être dues à des perturbations temporaires comme des chutes des particules de type neutrons ou protons, à des rayonnements comme des rayonnements gamma ou encore à du bruit inductif sur l'alimentation. En effet, les technologies actuelles des multiprocesseurs sont de plus en plus sensibles à de telles perturbations, du fait du niveau d'intégration toujours plus élevé en termes de densité surfacique de transistors et de nombre total de transistors. Pour autoriser des applications critiques avec un haut niveau de fiabilité, il est souhaitable de se prémunir contre ces fautes transitoires, qui peuvent se propager dans la mémoire.
  • Dans une tentative pour résoudre les problèmes liés aux fautes transitoires, des techniques basées sur des codes correcteurs d'erreurs dans la mémoire, connues sous la terminologie anglo-saxonne ECC signifiant Error Correcting Codes, ont été développées. Ces techniques sont flexibles, car la puissance de correction du code peut être adaptée aux conditions de l'environnement visé ainsi qu'au niveau de fiabilité attendu. De plus elles sont faciles à implémenter étant donné que l'encodeur/décodeur est mutualisé pour tous les emplacements mémoires, ce qui permet de générer un faible surcoût en surface pour le contrôle. Un inconvénient majeur de ces techniques est qu'elles ne sont utilisables que du fait de la régularité de structure typique des mémoires. Malheureusement les erreurs se produisant dans la logique des processeurs (par opposition aux mémoires) n'offrent pas une telle régularité.
  • D'autres approches ont été explorées pour tenter de fiabiliser la logique des systèmes multiprocesseurs, notamment les approches basées sur la duplication spatiale, les approches basées sur le multi-échantillonnage ou encore les approches orientées pointage, qui sont plus connues sous la terminologie anglo-saxonne de checkpointing.
  • Les approches basées sur la duplication spatiale existent en plusieurs variantes, mais l'idée commune est de faire le calcul désiré simultanément sur plusieurs circuits logiques identiques et de réagir en cas de l'observation d'une différence sur les sorties. Une variante consiste à avoir deux instances du circuit à protéger, associées à un mécanisme de détection sur au moins l'une des instances pour déterminer laquelle des deux instances a été victime de l'erreur. Cette variante de la duplication spatiale a cependant plusieurs inconvénients. Tout d'abord la logique doit être dupliquée et dès qu'une erreur transitoire a eu lieu, les deux instances ont alors divergé, ce qui oblige à ajouter un système de resynchronisation des deux instances. De plus, la détection d'erreur est sur le chemin critique du flot de données, ce qui est préjudiciable pour les performances et oblige à choisir un détecteur très rapide, au détriment de sa complexité et de sa couverture d'erreurs.
  • Une autre variante consiste à avoir trois instances en parallèle et un vote majoritaire en sortie. Cette méthode évite de placer un détecteur dans l'une des instances comme la méthode à deux instances exposée précédemment, mais elle fait apparaître un système de vote majoritaire sur le chemin critique du flot de données, ce qui est là encore préjudiciable pour les performances. De plus, la multiplication par trois de la logique est très coûteuse en surface.
  • Les approches basées sur le multi-échantillonnage consistent à remplacer l'ensemble des bascules d'un circuit par des bascules spéciales permettant d'échantillonner plusieurs fois le signal. Statistiquement, en cas de perturbation temporaire et si le système est bien dimensionné, c'est-à-dire si sa fréquence de fonctionnement n'est pas trop élevée, les conditions peuvent être réunies pour qu'il y ait peu de chance qu'une erreur affecte tous les échantillons. Il existe essentiellement deux variantes de multi-échantillonnage : le pré-échantillonnage et le post-échantillonnage. Dans tous les cas, ces méthodes sont coûteuses en surface et la tolérance aux fautes est partielle et difficile à réaliser.
  • En effet, un inconvénient majeur du pré-échantillonnage est qu'il limite la fréquence de fonctionnement du système et donc ses performances. Mais en cas de divergence, le deuxième échantillon a statistiquement plus de chance d'être correct, car beaucoup de fautes transitoires se traduisent en une latence accrue. Le pré-échantillonnage est donc une méthode de détection de fautes et de tolérance probable des fautes.
  • Alors que dans le cas du post-échantillonnage, la faute peut seulement être détectée, pas tolérée. C'est un de ses inconvénients majeurs.
  • Enfin, les approches orientées checkpointing selon l'expression anglo-saxonne consistent notamment à mettre périodiquement les données du système surveillé en sécurité dans une mémoire de stockage, dans le but de les réutiliser ultérieurement en cas de besoin pour recouvrer l'état du système. Dans la suite de la présente demande, on parlera "d'approche par pointage" ou de "système de pointage" pour désigner une approche orientée checkpointing ou un système implémentant une telle approche. Dans la suite de la présente demande, on désignera simplement par "pointage" l'ensemble des données stockées lors d'une étape de stockage réalisée dans le cadre d'une approche par pointage. Les approches par pointage permettent de remettre le système surveillé dans un état antérieur à l'occurrence de la faute et à l'ensemble de ses conséquences. Pour réaliser un système tolérant aux fautes transitoires dans la logique, il faut en plus combiner le système de pointage avec des détecteurs de fautes ou d'erreurs. Cette approche par pointage permet alors de supposer que le système surveillé n'a pas été victime de fautes et la détection se fait en parallèle de la fonction du bloc surveillé. La détection est alors dite « hors du chemin critique », ce qui permet de maximiser les performances tant que les actions restent annulables. Si la supposition que le système surveillé a bien fonctionné se révèle juste, alors celui-ci continue simplement son exécution. Dans le cas contraire, le système surveillé interrompt son fonctionnement et son état sans la faute et l'ensemble de ses conséquences est alors restitué.
  • Les variantes d'approches par pointage se distinguent d'abord par l'étendue de la capacité de recouvrement. Par exemple, certains systèmes de pointage se limitent à l'étendue d'un processeur, le vocable anglo-saxon « rollback » étant alors utilisé. Dans ce cas, il est possible de défaire des actions fausses dans le processeur, mais toutes actions hors du processeur, telles que les lectures et écritures vers l'espace mémoire, ne peuvent pas être annulées. Il faut donc combiner cette approche par pointage avec des détecteurs de fautes ou d'erreurs à très faible latence, éventuellement au détriment de la couverture de détection. D'autres systèmes de pointage s'étendent sur des systèmes plus étendus que le simple processeur. Cela autorise alors une latence de détection élevée et cela permet de garder des performances élevées du fait que la détection est faite hors du chemin critique.
  • Les variantes d'approche par pointage se distinguent également par la politique de contrôle. Dans le cas d'un système multiprocesseurs avec plusieurs modules mémoires, chaque processeur et chaque module mémoire gère son propre contrôle indépendamment, qu'il s'agisse de la vérification ou du stockage. La politique globale de pointage peut alors varier d'un système à l'autre : elle peut être coordonnée ou non coordonnée.
  • Les approches coordonnées se proposent de créer des pointages globaux et coordonnés de tout le système. Les pointages sont ainsi consistants par construction et donc rapidement obsolètes, ce qui tend à diminuer le nombre de pointages stockés simultanément et donc à diminuer le volume de stockage. Cependant, lorsqu'un composant ou une application requiert un pointage, il emmène l'ensemble du système dans cette décision. Si ce comportement est acceptable dans des contextes simples, par exemple lorsqu'il y a peu de processeurs et peu d'applications disjointes, cela devient inacceptable dès lors que le système augmente en complexité, par exemple dans les cas multiprocesseurs et/ou multiapplications. Ainsi, cette approche coordonnée mène facilement à une situation où il faut gérer le "pire cas global", c'est-à-dire le cas où le coût (en mémoire et en performance) de synchronisation devient prédominant car les pointages deviennent très fréquents et où concouramment les pointages à stocker sont très volumineux car globaux.
  • A l'inverse, une politique de pointages non coordonnés est possible. Dans cette approche, des pointages sont effectués aux moments les plus appropriés de façon non coordonnées sur les différents composants du système surveillé. Si un recouvrement s'avère nécessaire, alors il faut déterminer un ensemble de pointages, plus précisément un pointage par composant, qui ait la propriété de consistance telle que décrite par K. Mani Chandy et Leslie Lamport dans "Distributed Snapshots: Determining Global States of Distributed Systems" (ACM Transactions on Computer Systems, Vol.3, No.1, February 1985, Pages 63-75), XP 00 234 2863. Dans un cas de figure extrême, s'il n'est pas possible de trouver un ensemble consistant de pointages, alors l'état de repli choisi est l'état initial du système par « effet domino ». Les avantages de cette approche non coordonnée sont que les pointages sont choisis de façon ciblée par composant, ce qui génère moins de surcharge de synchronisation et de pointage local. De plus, le stockage des pointages est globalement moins volumineux. Enfin, il n'y a pas d'effet « pire cas global » typique de l'approche coordonnée. En revanche, les pointages ne sont pas consistants par construction, ce qui rend l'obsolescence des pointages lente ou nulle, en tous cas difficile à déterminer. Ce qui implique que le volume de stockage est a priori non borné, ce qui est problématique, surtout en embarqué. L'éligibilité de cette approche est ainsi très liée au contexte applicatif, ce qui constitue encore un inconvénient majeur.
  • L'invention a notamment pour but, en s'appuyant sur une méthode de pointage hybride, le pointage étant coordonné au sein de groupes de processus et non coordonné entre ces groupes, d'éviter à la fois les inconvénients précités des méthodes de pointage coordonnées et à la fois les inconvénients précités des méthodes de pointage non-coordonnées. A cet effet, l'invention a notamment pour objet un procédé de fiabilisation d'un système comportant une pluralité de processeurs ainsi qu'une mémoire. Le procédé comporte une étape de regroupement des processus en une pluralité de groupes. Il comporte également une étape de sauvegarde, de façon individuelle pour chaque groupe de processus, des données stockées dans la mémoire utilisables par au moins un des processus appartenant audit groupe, de manière à restaurer un état global sans erreur du système suite à une erreur survenant dans un processeur exécutant l'un des processus appartenant audit groupe, sans avoir à restaurer la globalité de la mémoire.
  • Avantageusement, chaque groupe peut regrouper des processus partageant une ressource du système. Par exemple, la ressource partagée peut être la mémoire.
  • Dans un mode de réalisation préférentiel, chaque groupe peut être une sphère de dépendance de données pouvant regrouper des processus pouvant accéder à des zones de la mémoire telles que l'union de toutes lesdites zones est connexe logiquement, et telles que toute zone parmi lesdites zones est d'intersection non-vide avec l'union de toutes les autres zones parmi lesdites zones.
  • Avantageusement, le procédé comporte une étape de confinement des accès à la mémoire par sphère de dépendance de données. Cette étape de confinement peut inclure une étape de gestion de droits d'accès aux zones de la mémoire pour chaque processus, de manière à empêcher la propagation d'une erreur logique survenant dans le processeur exécutant ledit processus, ainsi qu'une étape de gestion d'indicateurs d'appartenance des zones de la mémoire à chaque sphère de dépendance de données.
  • L'invention a également pour objet un dispositif de fiabilisation d'un système comportant une pluralité de processeurs ainsi qu'une mémoire. Le dispositif comporte des moyens pour regrouper les processus en une pluralité de groupes. Il comporte également des moyens pour sauvegarder individuellement pour chaque groupe de processus les données stockées dans la mémoire utilisables par au moins un des processus appartenant audit groupe, de manière à restaurer un état global sans erreur du système suite à une erreur survenant dans un des processeurs exécutant l'un des processus appartenant audit groupe, sans avoir à restaurer la globalité de la mémoire.
  • Avantageusement, les moyens pour regrouper peuvent regrouper des processus partageant une ressource du système. Par exemple, la ressource partagée peut être la mémoire.
  • Dans un mode de réalisation préférentiel, les moyens pour regrouper peuvent regrouper les processus par sphères de dépendance de données, chaque sphère de dépendance de données pouvant contenir des processus pouvant accéder à des zones de la mémoire telles que l'union de toutes lesdites zones est connexe logiquement et telles que toute zone parmi lesdites zones est d'intersection non-vide avec l'union de toutes les autres zones parmi lesdites zones.
  • Avantageusement, le dispositif comporte des moyens pour confiner les accès à la mémoire par sphère de dépendance de données, ces moyens pour confiner pouvant inclure des moyens pour gérer des droits d'accès aux zones de la mémoire pour chaque processus, de manière à empêcher la propagation d'une erreur logique survenant dans le processeur exécutant ledit processus, ainsi que des moyens pour gérer des indicateurs d'appartenance des zones de la mémoire à chaque sphère de dépendance de données.
  • Dans un mode de réalisation, pour chaque sphère de dépendance de données, les données sauvegardées peuvent inclure les données stockées dans l'union connexe des zones de la mémoire pouvant être accédées par l'un des processus appartenant à ladite sphère. Elles peuvent également inclure les données stockées dans les registres des processeurs exécutant l'un des processus appartenant à ladite sphère. Elles peuvent également inclure les données stockées dans les étages de pipeline des processeurs exécutant l'un des processus appartenant à ladite sphère. Elles peuvent également inclure les données stockées dans les unités de gestion de la mémoire ou dans les unités de protection de la mémoire incluses dans les processeurs exécutant l'un des processus appartenant à ladite sphère. Elles peuvent enfin inclure les données stockées dans les mémoires caches des processeurs exécutant l'un des processus appartenant à ladite sphère.
  • Dans un mode de réalisation, les moyens pour regrouper les processus en sphères de dépendance de données peuvent être implémentés sous la forme de services fournis par le système d'exploitation du système, ces services pouvant fournir les différentes sphères de dépendance de données correspondant à tous les processus couramment exécutés.
  • Dans un mode de réalisation, les moyens pour sauvegarder peuvent inclure des moyens pour coordonner les sauvegardes des différentes sphères de dépendance de données correspondant à tous les processus couramment exécutés, ces moyens pour coordonner pouvant inclure des moyens pour déclencher une sauvegarde des données pour une sphère de dépendance de données correspondant à des processus couramment exécutés, ainsi que des moyens pour déclencher, suite à l'erreur logique survenue dans un des processeurs exécutant l'un des processus appartenant à ladite sphère, la restauration des données sauvegardées pour ladite sphère de dépendance de données exclusivement.
  • Dans un mode de réalisation, les moyens pour confiner peuvent inclure une unité de gestion de la mémoire ou une unité de protection de la mémoire associée à chacun des processeurs du système, ladite unité pouvant interdire au processeur auquel elle est associée l'accès à la mémoire en dehors de la zone allouée au processus en cours d'exécution par ledit processeur.
  • Dans un mode de réalisation, l'unité de gestion de la mémoire ou l'unité de protection de la mémoire peut inclure des moyens de gestion de droits d'accès à la mémoire, les sphères de dépendance de données courantes dépendant de ces droits d'accès.
  • Les objets ci-dessus sont atteints de façon avantageuse grâce aux caractéristiques définies par les revendications indépendantes 1 et 2. D'autres améliorations sont fournies par les revendications dépendantes.
  • La présente invention a pour principal avantage de cumuler les avantages des politiques coordonnées, comme l'obsolescence rapide et le stockage borné des pointages, avec les avantages des politiques non coordonnées, comme la surcharge de synchronisation faible, la surcharge de pointage faible et la taille de stockage des pointages optimale globalement.
  • Le document US-A-5 923 832 divulgue les caractéristiques qui sont définies dans le préambule des revendications indépendantes.
  • D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit faite en regard de dessins annexés qui représentent :
    • la figure 1, une illustration schématique du principe de sphère de dépendance de données selon l'invention;
    • la figure 2, une illustration par un diagramme d'architecture d'un exemple de réalisation d'un système selon l'invention;
    • la figure 3, une illustration par un diagramme d'architecture d'un exemple de réalisation d'un contrôleur mémoire selon l'invention capable de pointage par sphère de dépendance de données;
    • la figure 4, une illustration schématique d'un exemple de composant de sauvegarde selon l'invention;
    • la figure 5, une illustration par une machine d'états d'un exemple de contrôleur mémoire selon l'invention;
    • les figures 6, 7 et 8, une illustration par des diagrammes d'un exemple de procédure d'écriture selon l'invention;
    • les figures 9 et 10, une illustration par des diagrammes d'un exemple de procédure de recouvrement selon l'invention;
    • la figure 11, une illustration par un diagramme d'un exemple de procédure de suppression d'un pointage obsolescent selon l'invention;
    • la figure 12, une illustration d'un exemple de procédure de création d'un pointage selon l'invention;
    • la figure 13, une illustration d'un exemple de procédure de maintenance selon l'invention.
  • Dans un mode de réalisation basique de l'invention, des processus peuvent être regroupés de manière totalement arbitraire, c'est-à-dire bien que ces processus n'aient strictement aucun lien entre eux. Un tel regroupement arbitraire des processus conduit à un fonctionnement qui, quoique évitant les inconvénients des méthodes de pointage coordonnées et des méthodes de pointage non coordonnées de l'art antérieur, est cependant non optimal. C'est pourquoi, dans la suite de la présente demande, un mode de réalisation plus performant est décrit, dans lequel des processus partageant des zones mémoires sont regroupés en s'appuyant sur la notion de Sphère de Dépendance de Données (SDD) selon l'invention.
  • Mais il n'échappera pas à l'homme du métier, à la lecture de la présente demande, que la portée de la présente invention s'étend au-delà du partage de zones mémoires. Des processus partageant une ressource de communication, ou encore des processus partageant une ressource d'entrée/sortie, ou encore des processus partageant une interruption matérielle peuvent être regroupés selon l'invention.
  • Sphère de dépendance des données
  • La figure 1 illustre schématiquement le principe de SDD selon l'invention. Une SDD est un regroupement de processus qui utilisent des zones mémoires communes. Ainsi, dans l'exemple de la figure 1, un système multiprocesseur comporte deux processeurs P1 et P2 partageant une mémoire principale MEM. Les composants fournissant les ressources du système, à savoir les processeurs P1, P2 et la mémoire MEM, sont reliés par un bus de données. Un processus dont le Pid ("Process identifier") vaut 1 utilise des données dans une zone mémoire A de la mémoire MEM, ces données pouvant inclure du code et des données. Un processus dont le Pid vaut 2 utilise des données dans des zones B et C de la mémoire MEM. Un processus dont le Pid vaut 3 utilise des données dans la zone C et dans une zone D de la mémoire MEM. Deux SDD disjointes 10 et 20 peuvent alors être créées selon l'invention. La SDD 10 inclut le processus de Pid=1 et a pour périmètre mémoriel la zone mémoire A. La SDD 20 regroupe le processus de Pid=2 avec le processus de Pid=3 et a pour périmètre mémoriel les zones mémoire B, C et D. Considérant le périmètre mémoriel de la SDD 20, il peut être constaté que l'union de la zone BuC pouvant être accédée par le processus 2 avec la zone CuD pouvant être accédée par le processus 3 est connexe logiquement au sens de la présente invention, puisque l'union de la représentation de la zone BuC sur la figure 1 avec la représentation de la zone CuD sur la figure 1 est d'un seul tenant sur la figure 1. Au sens de la présente invention, il s'agit de connexité logique et non pas de connexité physique. L'union de telles zones peut ne peut pas être connexe physiquement, mais dès lors que ces zones sont représentées dans un espace géométrique, l'union de leurs représentations a la propriété de connexité dans l'espace de représentation, comme illustré par la figure 1. Il peut également être constaté que l'intersection entre la zone BuC et l'union des autres zones formant le périmètre mémoriel de la SDD 20, à savoir uniquement la zone CuD, est non vide (puisque égale à C). Il peut être noté qu'un processus ne peut appartenir à plus d'une SDD et qu'une SDD peut éventuellement être constituée d'un seul processus.
  • Dans un mode de réalisation, la gestion des SDD, qui inclut la création, la modification et la suppression de SDD au gré des créations et des suppressions de processus sur les processeurs P1 et P2, peut être laissée à la charge du programmeur. Celui-ci doit alors avoir une excellente maîtrise des ressources utilisées par son programme, qu'il s'agisse des ressources de calcul comme P1 et P2 ou qu'il s'agisse des ressources de mémorisation comme MEM.
  • Avantageusement, un périmètre de confinement à chacune des SDD 10 et 20 peut être réalisé en utilisant, associé à chacun des processeurs P1 et P2, un composant comme une unité de gestion de mémoire ("Memory Management Unit" ou MMU) ou comme une unité de protection de mémoire ("Memory Protection Unit" ou MPU). Une fois correctement configurés, ces MMU ou ces MPU peuvent interdire les accès au-delà du périmètre mémoriel de la SDD du processeur auquel ils sont associés respectivement. Habituellement, les MMU et les MPU sont employés pour contrer d'éventuelles erreurs de programmation. La présente invention propose de les utiliser avantageusement pour contrer les effets des fautes transitoires dans la logique.
  • Dans un mode de réalisation préférentiel, la gestion des SDD peut être implémentée par des services systèmes, par exemple par les services systèmes déjà utilisés par les MMU et les MPU, de manière à ne pas compliquer la tâche du programmeur. Ces services systèmes sont appelés par exemple dans les cas suivants : lors du placement des tâches sur les ressources, lors de l'allocation mémoire, lors de la demande d'accès à une ressource, lors de la demande d'accès à une ressource de communication type IPC (Inter Process Communication).
  • Une fois que les périmètres de confinement sont mis en place selon l'invention, des propriétés apparaissent qui permettent d'optimiser le pointage, de sorte qu'il soit bien plus efficace que les techniques coordonnées et non coordonnées de l'art antérieur. La présente invention propose une politique de pointage hybride coordonnée au sein des SDD et non coordonnée entre les SDD. Cette politique permet d'implémenter des systèmes de pointage considérablement allégés à la fois concernant le traitement et le stockage, tout spécialement dans un contexte multiapplications et multi-processeurs.
  • Architecture générale
  • La figure 2 illustre par un diagramme d'architecture un exemple de réalisation d'un système selon l'invention comprenant les processeurs P1 et P2. Chacun des processeurs P1 et P2 inclut une MMU. Les processeurs P1 et P2 sont capables de pointage, c'est-à-dire qu'ils sont capables de sauvegarder et de recouvrer leur état interne (registres, étages de pipeline, mémoire cache, état de la MMU et autres). A cet effet, les processeurs P1 et P2 incluent également des détecteurs d'erreurs. Le système comporte au moins un Contrôleur Mémoire capable de pointage par SDD dans la mémoire MEM, c'est-à-dire qu'il est capable de recouvrer le périmètre mémoriel correspondant à une SDD, tel qu'était ce périmètre lors d'un pointage donné. La mémoire MEM n'est pas représentée sur la figure 2 par souci de clarté. Le système comporte également un composant CP Maître (CP - CheckPoint) en charge de la coordination du pointage inter-SDD. Il comporte également un bus système et un bus périphérique reliés par une passerelle jouant le rôle de système d'interconnexion.
  • Chacun des composants capables de pointage gère un ensemble de pointages. Par exemple, le processeur P1 peut gérer une liste d'enregistrements, chaque enregistrement représentant l'état interne du processeur P1 à un instant où le composant CP Maître a ordonné un pointage. Le processeur P2 peut gérer une liste similaire. Le Contrôleur Mémoire peut quant à lui gérer une liste d'enregistrements, chaque enregistrement représentant un périmètre de la mémoire MEM correspondant à une SDD à un instant où le composant CP Master a ordonné un pointage. Ces listes évoluent au gré des ordres du composant CP Maître.
  • Chacun des composants capables de pointage est également capable, lorsque le composant CP Maître le demande, de recouvrer un des pointages parmi l'ensemble de pointages qu'il gère. Par exemple, le processeur P1 peut rétablir son état interne tel qu'il était à un instant où le composant CP Maître avait ordonné un pointage, ceci grâce à l'enregistrement de cet état interne qu'il a conservé dans sa liste. Le processeur P2 peut faire de même. Le Contrôleur Mémoire peut quant à lui rétablir un périmètre de la mémoire MEM correspondant à une SDD tel qu'il était à un instant où le composant CP Maître avait ordonné un pointage, ceci grâce à l'enregistrement de ce périmètre qu'il a conservé dans sa liste.
  • Si une erreur a lieu dans le processeur P1 ou P2 alors que celui-ci est en train d'exécuter un processus Pa utilisant des ressources mémoires RMa, alors cette erreur peut avoir des conséquences variées. Les ressources mémoires RMa du processus Pa sont l'ensemble des plages qu'il utilise en lecture/écriture pour stocker ses instructions et ses données dans la mémoire MEM. Ces plages peuvent éventuellement être non contiguës. L'erreur peut rester latente, mais elle peut également se propager en faisant diverger peu à peu le système d'une exécution sans erreur. Si l'erreur se propage, alors elle peut éventuellement se traduire par une écriture en mémoire à une adresse qui ne fait pas partie des ressources mémoire RMa. Envisager qu'une erreur sur le processeur Pi pendant l'exécution du processus Pa puisse se propager n'importe où dans la mémoire obligerait à considérer l'ensemble des applications dans leur globalité, ce qui tendrait à alourdir beaucoup le pointage.
  • Confinement des erreurs
  • C'est pourquoi l'invention propose un système de confinement des erreurs utilisant avantageusement une MMU ou une MPU. Dans le présent exemple de réalisation de la figure 2, il s'agit des MMU1 et MMU2 incluses dans les processeurs P1 et P2 respectivement. Une MMU, de même qu'une MPU, permet notamment de gérer des droits d'accès à la mémoire par processus, ceci à l'aide de services fournis par le système d'exploitation. Jusqu'à présent, une MMU ou une MPU permettait d'éviter les erreurs de programmation commises par les développeurs des applications et de se prémunir contre les attaques malveillantes. L'invention propose de les utiliser pour lutter contre les erreurs transitoires, en interdisant certains accès à la mémoire. Ainsi, un confinement des erreurs est obtenu, qui interdit la propagation des erreurs en dehors des ressources mémoire d'un processus donné. L'invention propose également de faire correspondre la zone de confinement à une SSD telle que définie précédemment. Ainsi, les ressources mémoire d'un processus sont strictement confinées à la SSD du processeur qui exécute ledit processus.
  • Considérant l'exemple de la figure 1 d'allocation des zones A, B, C et D en mémoire, la MMU1 peut par exemple gérer selon l'art antérieur pour le processus dont le Pid vaut 2 la configuration individuelle de droits d'accès suivante :
    • A: accès interdit;
    • B: Read / Write;
    • C: Read / Write;
    • D: accès interdit;
    • Autres zones: accès interdit.
  • De manière similaire, la MMU2 peut gérer selon l'art antérieur pour le processus dont le Pid vaut 3 la configuration individuelle de droits d'accès suivante :
    • A: accès interdit;
    • B: accès interdit;
    • C: Read;
    • D: Read / Write;
    • Autres zones : accès interdit.
  • L'invention propose d'ajouter à ces configurations individuelles de droits d'accès par processus gérées par les MMU des configurations de pointage par SDD. Ainsi, les deux processus de Pid valant 2 et 3 ayant été rassemblés dans une même sphère de dépendance de donnée 20 afin de faire du pointage coordonné de ces deux processus, les configurations individuelles décrites ci-dessus ne sont pas remises en cause, mais elles peuvent avantageusement être consultées afin de générer pour la SDD 20 la configuration de pointage suivante :
    • A: Pointage Inactif;
    • B: Pointage Actif;
    • C: Pointage Actif;
    • D: Pointage Actif
    • Autres zones: Pointage Inactif.
  • De plus, un processus peut éventuellement n'être affecté à aucune SDD. Un tel processus n'est alors pas protégé contre les erreurs transitoires dans la logique. Malgré tout, ses droits d'accès à la mémoire doivent être restreints par une programmation adéquate des composant MPU/MMU, afin qu'une erreur ayant lieu pendant leur exécution leur interdise l'accès aux SDD confinées. Ce système de confinement des erreurs selon l'invention permet de diminuer la complexité générale du pointage.
  • Coordination du pointage
  • De manière générale, le composant CP Maître a pour fonction de coordonner le pointage entre les composants du système capables de pointage, à savoir les processeurs P1 et P2 et le Contrôleur Mémoire. Cette fonction inclut notamment d'accepter et de traiter les requêtes de création de pointage de la part de ces composants. Cette fonction inclut également d'envoyer les ordres de création de nouveau pointage sur une SDD aux composants qui hébergent des ressources de la SDD. Cette fonction inclut aussi d'envoyer les ordres de restitution d'un pointage sur une SDD aux composants qui hébergent des ressources de la SDD. Pour assurer cette fonction complexe de coordination, le composant CP Maître comporte plusieurs interfaces.
  • Le composant CP Maître du présent exemple de réalisation de la figure 2 peut notamment comporter une interface de détection. Cette interface est unidirectionnelle et prend en entrée des événements produits par les détecteurs de fautes ou d'erreurs présents dans le système. Cette interface de détection peut être réalisée de diverses manières, comme en utilisant des fils d'exécution dédiés ("threads") ou encore en utilisant le bus système ou le bus périphérique. Mais d'autres modes de réalisation sont possibles.
  • Le composant CP Maître du présent exemple de réalisation de la figure 2 comporte également une interface de coordination. Cette interface de coordination est bidirectionnelle et a pour but de coordonner les différentes phases de pointage entre les composants du système capables de pointage, à savoir les processeurs P1 et P2 et le contrôleur de mémoire. Cette interface peut être intégrée sur le bus système ou périphérique, mais d'autres modes de réalisations sont possibles.
  • Les différents messages échangés sur l'interface de coordination du présent exemple de réalisation de la figure 2 sont listés par le tableau 1 qui suit, dans lequel le composant capable de pointage désigne soit le processeur P1, soit le processeur P2, soit le Contrôleur Mémoire : Tableau 1
    Source Destination Message
    Composant capable de pointage CP Maître Requête de nouveau pointage
    CP Maître Composant capable de pointage Ordre de création de pointage sur SDDi
    CP Maître Composant capable de pointage Ordre de recouvrement sur la SDDi du pointage i
    Composant capable de pointage CP Maître Information d'opération de recouvrement effectuée
    CP Maître Composant capable de pointage Ordre de redémarrage de la SDDi
    CP Maître Composant capable de pointage Ordre de suppression de pointage j de la SDDi
    CP Maître Composant capable de pointage Ordre de suppression de tous les pointages inférieurs à Val_plancher pour la SDDr
  • Ainsi, dans le présent exemple de réalisation de la figure 2, le composant CP Maître peut accepter et traiter une requête de création d'un nouveau pointage provenant d'une ressource R grâce à la séquence suivante :
    • o Réception du message « Requête de nouveau pointage » envoyé par la ressource R;
    • o Détermination de la SDD à laquelle appartient la ressource R, notée SDDr;
    • o Envoyer un message « ordre de création de pointage sur SDDr » à chaque composant ayant des ressources de SDDr, c'est-à-dire ayant au moins une ressource utilisée par un des processus constituant SDDr.
  • Si une erreur est détectée, elle est signalée sur l'interface dédiée du composant CP Maître. Lorsqu'une détection survient dans le présent exemple de réalisation de la figure 2, la séquence suivante peut être réalisée :
    • o Détermination de la SDD ou des SDD potentiellement affectée(s) par cette erreur, ce qui nécessite la connaissance de l'organisation de la mémoire en périmètres de SDD;
    • o Pour chaque SDDi identifiée :
      • o Détermination du pointage à restituer en fonction de l'erreur;
      • o Envoi du message « ordre de restitution sur la SDDi du pointage j » aux composants de la SDDi;
      • o Attente de la réception des messages « Restitution SDDi pointage j effectuée » envoyés par les composants;
      • o Envoyer message « Ordre de relance de la » aux composants appartenant à cette SDDi.
  • En fonction des caractéristiques des méthodes de détections et de la fréquence de création de nouveaux pointages, certains pointages anciens peuvent être effacés sans risque, car il peut exister des pointages plus récents et tout aussi fiables. Ainsi, dans le but de récupérer de la place de stockage pour de futurs pointages, le composant CP Maître du présent exemple de réalisation de la figure 2 peut déterminer l'obsolescence des pointages et demander leur suppression par les composants, grâce à la séquence suivante :
    • o Déterminer que le pointage j de SDDi est obsolète;
    • o Envoyer message « Ordre de suppression de pointage j de la SDDi » aux composants de la SDDi.
  • Le codage des numéros de pointage étant réalisé sur un nombre de bits limité, si le système est amené à évoluer pendant suffisamment longtemps, il se peut que la valeur maximale de numéro de pointage soit atteinte. A partir de ce moment, les pointages ultérieurs doivent être renumérotés à partir de zéro. Mais la réutilisation des numéros inférieurs est possible uniquement si le plancher de numéros de pointage a été relevé, c'est-à-dire uniquement si il a été déclaré que les numéros de pointage inférieurs à une certaine valeur étaient obsolètes. Cette valeur plancher, notée Val_plancher dans le présent exemple de réalisation de la figure 2, est définie par le composant CP Maître. Ainsi, dans le présent exemple de réalisation de la figure 2, le composant CP Maître peut réaliser une opération d'obsolescence groupée de tous les pointages inférieurs à un numéro donné pour une SDD donnée, grâce à la séquence suivante :
    • o Déterminer que tous les pointages inférieurs ou égaux à pointage j de la SDDi sont obsolètes;
    • o Envoyer un message « Ordre de suppression de tous les pointages inférieurs à Val_plancher pour la SDDi » aux composants de la SDDi.
  • Une fonction d'initiation de création de pointage peut aussi s'avérer utile pour certaines applications, l'idée étant de créer des pointages sur des SDD sans que cela soit consécutif à un message de requête de la part d'un composant. Par exemple, une application qui occupe une SDD peut définir les instants de pointage de façon périodique. Cela pourrait être pertinent si cette application n'a pas d'entrée-sortie, comme une application très indépendante, ce qui peut rendre facultatif le fait de prendre des pointages. Ainsi, dans le présent exemple de réalisation de la figure 2, le composant CP Maître peut réaliser la séquence suivante :
    • o Détermination de l'instant d'un pointage sur une SDDi,
    • o Envoyer un message « ordre de création de pointage sur SDDr » pour chaque composant ayant des ressources de SDDr.
    Contrôle de la mémoire
  • La figure 3 illustre par un diagramme l'architecture du contrôleur mémoire de l'exemple de réalisation de la figure 2, ce contrôleur étant capable de pointage par SDD conformément à l'invention. Le contrôleur mémoire du présent exemple de réalisation comporte notamment un module de gestion de la mémoire MEM, un module de gestion d'un composant Log CP et un module de gestion d'une structure Cache CP. Le contrôleur mémoire comporte également un contrôleur de bus système AHBCTRL (AHB - Advanced High-performance Bus), un module de défragmentation DEFRAG et un module de contrôle de pointage CP_CTRL. Les rôles de ces différents modules seront décrits par la suite. En effet, le contrôleur mémoire du présent exemple de réalisation comporte une première interface AHB avec le bus système. Il comporte également une deuxième interface avec la mémoire MEM contenant les données courantes. Il comporte aussi une troisième interface APB avec le bus périphérique (Advanced Peripheral Bus) pour la configuration et le contrôle du contrôleur mémoire. C'est notamment via cette interface APB qu'est implémenté le protocole de pointage avec le composant CP Maître. Afin de réaliser du pointage par SDD, le présent exemple de réalisation de contrôleur mémoire est notamment capable des opérations suivantes :
    • o Lecture d'un mot dans la mémoire MEM;
    • o Écriture d'un mot dans la mémoire MEM;
    • o Création d'un pointage sur une SDD;
    • o Suppression d'un pointage sur une SDD, cette action étant faite lorsque ledit pointage peut être considéré comme obsolète;
    • o Suppression d'un ou de plusieurs pointages simultanément, en faisant évoluer la valeur plancher des pointages d'une SDD donnée, également lorsque les pointages concernés peuvent être considérés comme obsolètes ;
    • o Recouvrement d'un pointage d'une SDD.
  • Le présent exemple de réalisation de contrôleur mémoire comporte également le composant Log CP (CP - CheckPoint), qui stocke l'information nécessaire pour restaurer la mémoire MEM telle qu'elle était au moment de n'importe quel pointage pris sur n'importe quelle SDD, excepté les pointages qui auront été déclarés obsolètes. Les pointages obsolètes ont en effet vocation à être supprimés du composant Log CP.
  • La figure 4 illustre schématiquement le composant Log CP du présent exemple de réalisation. Il comporte notamment une mémoire constituée de plusieurs champs par ligne gérée comme un tampon circulaire à l'aide de deux registres PT_DEBUT et PT_FIN, qui sont des pointeurs respectivement vers le début et vers la fin de la zone de données effective. La taille du tampon circulaire est un paramètre générique du composant Log CP et peut-être adaptée pour dimensionner correctement le système de pointage. Un champ P détermine la présence d'une donnée dans la ligne considérée, la valeur 0 indiquant l'absence et la valeur 1 indiquant la présence d'une donnée. Un champ SDD indique l'identifiant de la SDD. Un champ CP stocke l'identifiant du pointage sur la SDD indiquée par le champ précédent. Un champ @ stocke l'adresse du mot. Un champ Valeur stocke la valeur telle qu'elle était à l'adresse @ à l'instant où le pointage à été pris, sur la SDD correspondante.
  • La figure 5 illustre un exemple de machine d'états globale du contrôleur mémoire, notamment la procédure d'écriture qui sera détaillée aux figures 6, 7 et 8, la procédure de recouvrement qui sera détaillée aux figures 9 et 10, la procédure de suppression d'un pointage obsolescent qui sera détaillée à la figure 11, la procédure de création d'un pointage qui sera détaillée à la figure 12, la procédure de maintenance qui sera détaillée à la figure 13 et enfin la procédure de lecture.
  • Contrôle de la mémoire : écriture
  • La figure 6 illustre par un diagramme une opération d'écriture dans la mémoire principale MEM, une telle opération pouvant être réalisée directement ou nécessiter une sauvegarde préalable dans le tampon circulaire du composant Log CP, ce qui génère une latence supplémentaire. En effet, seule la première écriture à une adresse donnée, sur un pointage donné d'une SDD donnée est enregistrée. Les écritures suivantes ne sont ensuite plus enregistrées jusqu'à la création d'un nouveau pointage sur la SDD concernée. Les nouvelles écritures sont stockées à l'emplacement pointé par PT_FIN, ce pointeur étant incrémenté à la fin de l'opération. Il faut remarquer que la zone comprise entre PT_DEBUT et PT_FIN est maintenue ordonnée par SDD. Cette propriété est toujours vraie, même lors des opérations de défragmentation qui sont présentées dans la suite de la présente demande. Si le tampon circulaire est plein, c'est-à-dire si PT_FIN est égal à PT_DEBUT, alors l'écriture dans le tampon est bloquée, tout comme l'opération d'écriture vers la mémoire MEM. Un indicateur est alors positionné à destination du composant CP Maître. La phase initiale de cette écriture est particulièrement sensible, puisqu'il faut déterminer la présence d'une écriture préalable équivalente à l'intérieur du tampon. Une façon naïve de faire cette vérification serait de parcourir en sens inverse le tampon à partir de PT_FIN jusqu'à rencontrer des lignes avec le champ P égal à 1, le champ SDD contenant l'identifiant de la SDD correspondante et le champ CP contenant l'identifiant du pointage antérieur. La recherche s'arrêterait là du fait que le tampon est ordonné. Mais ce n'est pas l'approche utilisée dans le présent exemple de réalisation, car le pire cas de la latence d'écriture serait alors extrêmement élevé. De manière préférentielle, pour déterminer la présence d'une écriture préalable équivalente à l'intérieur du tampon dans le présent exemple de réalisation, la structure dédiée Cache CP est utilisée, comme illustré par la figure 3. Cette structure Cache CP est constituée d'une partie mémoire et d'une partie combinatoire.
  • La figure 7 illustre par un schéma la partie combinatoire de la structure Cache CP qui implémente la logique permettant de déterminer la présence d'une écriture préalable équivalente à l'intérieur du tampon circulaire du composant Log CP. La partie mémoire du composant Cache CP, qui sera simplement appelée "cache" par la suite, est constituée d'un certain nombre de lignes, ce nombre devant être dimensionné correctement. Si ce nombre de lignes est trop faible, alors le cache est souvent plein et il faut souvent créer des pointages inutilement. Ceci affecte les performances du système à plusieurs niveaux. A l'inverse, si le nombre de lignes est trop élevé, alors le coût en surface est problématique, tant sur les éléments de mémorisation que sur la logique combinatoire. Chacune des lignes se subdivise en plusieurs champs. Un champ P renseigne la présence d'une ligne d'information, la valeur 0 indiquant l'absence et la valeur 1 indiquant la présence. Un champ @ stocke une adresse déjà accédée depuis la dernière création de pointage sur la SDD considérée. Un champ SDD stocke l'identifiant de la SDD considérée. La partie combinatoire permet de faire des actions en un cycle sur l'interprétation du contenu de la partie mémoire, ainsi que sur sa mise à jour. Ainsi, si la sortie Hit du composant Cache CP vaut 1, alors une écriture équivalente a déjà été faite à cette adresse, sur ce pointage et sur cette SDD. Si la sortie Hit du composant Cache CP vaut 0, alors c'est la première écriture. Le cas échéant, le tampon du composant Log CP est complété comme décrit précédemment et cette opération est associée parallèlement à une opération d'écriture dans le cache.
  • La figure 8 illustre par un schéma comment il est parallèlement écrit dans le tampon du composant Log CP et dans le cache du composant Cache CP. La logique décrite par la figure 8 assure d'ajouter les champs @ et SDD de l'opération d'écriture dans la première ligne libre du cache, c'est-à-dire telle que P=0, tout en positionnant la valeur de P à 1. Si le cache est plein, alors un indicateur est positionné à destination du CP Maître.
  • Contrôle de la mémoire : recouvrement
  • La figure 9 illustre schématiquement le contrôle de l'opération de recouvrement. Comme déjà indiqué précédemment, le buffer circulaire est maintenu ordonné par SDD. Lorsqu'un recouvrement d'un pointage d'une SDD est demandé, le buffer circulaire du composant Log CP est parcouru en sens inverse, c'est-à-dire depuis le pointeur PT_FIN jusqu'au pointeur PT_DEBUT. Pour chaque ligne, si le champ P vaut 1, si le champ SDD contient l'identifiant de la SDD correspondante et si le champ CP contient un identifiant supérieur ou égal à l'identifiant du pointage à restituer, alors le champ Valeur de la ligne est copié à l'adresse indiquée par le champ @ et le champ P est remis à 0.
  • La figure 10 illustre schématiquement l'opération de nettoyage de SDD dont est capable le composant Cache CP. Pour cela, le composant Cache CP utilise de la logique spécifique, qui permet en un cycle d'écrire 0 dans le champ P de toutes les lignes du cache dont la valeur du champ SDD correspond à l'action de recouvrement. Ceci désactive les lignes qui pourront être réutilisées dans le futur pour mémoriser d'autres actions d'écriture. De plus, le pointage courant de la SDD qui a été recouvrée est configuré au pointage recouvré.
  • Comme déjà explicité précédemment, le numéro de pointage courant d'une SDD est un nombre entier qui croît au cours du temps pendant le fonctionnement du système. Cependant, un compteur matériel finit forcément par arriver à saturation, du fait du nombre limité de bits pour son codage. Pour pallier à ce problème, l'invention propose d'introduire le concept de valeur plancher dans le système. Lorsqu'un recouvrement a lieu, l'ancienneté relative du pointage analysé doit être comparée à l'ancienneté du pointage donné en paramètre. Pour chaque SDD, une valeur plancher nommée Val_plancher est maintenue, qui permet de comparer des pointages même en cas de saturation. Ainsi, au lieu d'effectuer un test de comparaison direct sur les valeurs, comme d'évaluer la valeur logique de (CPi<CPparam), un test de comparaison indirect est effectué en évaluant la valeur logique de ((CPi- Val_plancher) mod CPmax < (CPparam- Val_plancher) mod CPmax).
  • Contrôle de la mémoire : suppression d'un pointage
  • La figure 11 illustre schématiquement le contrôle de l'opération d'obsolescence. Lorsqu'un pointage d'une SDD est déclaré obsolète, les éléments stockés contenant le numéro de pointage correspondant sur la SDD correspondante sont supprimés du buffer circulaire en écrivant la valeur 0 dans le champ P. Une première possibilité est de rendre obsolète un pointage particulier. Une deuxième possibilité est de rendre obsolète tous les pointages plus anciens qu'un pointage passé en paramètre.
  • Pour chaque SDD, la valeur plancher est mise à jour lors de l'opération d'obsolescence de tous les pointages plus anciens que le pointage passé en paramètre. La valeur plancher est alors redéfinie et prend la valeur du paramètre fourni. Cette technique permet au système de fonctionner sur un temps non borné.
  • Contrôle de la mémoire : création d'un pointage
  • La figure 12 illustre schématiquement le contrôle de l'opération de création d'un nouveau pointage sur une SDD. Le registre indiquant le pointage courant pour la SDD identifiée est mis à jour par incrémentation. De plus, l'opération de nettoyage de SDD est activée sur la SDD correspondante, car les prochaines écritures dans cette SDD devront être considérées comme de nouvelles écritures depuis le dernier pointage.
  • Contrôle de la mémoire : défragmentation
  • La figure 13 illustre schématiquement le contrôle de l'opération de défragmentation du tampon circulaire du composant Log CP. En effet, lorsque des opérations de suppression de pointage ont lieu, du fait de l'obsolescence ou de recouvrements, des lignes vides apparaissent entre PT_DEBUT et PT_FIN, c'est-à-dire des lignes telles que P=0. Ces lignes ne sont pas utilisables et constituent de l'espace perdu. Pour éviter cela, le contrôleur doit réaliser quand cela est possible une défragmentation du tampon circulaire du composant Log CP. Le contrôleur gère deux pointeurs additionnels sur le tampon circulaire : PT_LIBRE et PT_OBJET.
    L'algorithme s'initialise en positionnant PT_LIBRE sur la première ligne vide en partant de PT_FIN. L'algorithme est ensuite une boucle de recherche où à chaque pas de boucle, la première ligne occupée en partant de PT_LIBRE est déplacée sur celle-ci, et le pointeur PT_LIBRE progresse jusqu'à trouver l'emplacement libre suivant. Le pointeur PT_FIN du début du tampon est mis à jour lorsque les lignes entre PT_LIBRE et PT_DEBUT sont libres.
  • Contrôle de la mémoire : lecture
  • L'opération de lecture consiste tout simplement à effectuer la lecture dans la mémoire principale MEM. La capacité de pointage selon l'invention n'affecte pas les performances en ce qui concerne la lecture.
  • Un avantage supplémentaire de la présente invention est d'être compatible avec des détecteurs de fautes ayant des latences de détection élevées, placés hors du chemin critique, ce qui autorise des performances élevées.

Claims (7)

  1. Procédé de fiabilisation d'un système comportant une pluralité de processeurs (P1, P2) et une mémoire (MEM), le procédé comportant :
    - une étape de regroupement des processus (1, 2, 3) en une pluralité de groupes (10, 20), chaque groupe étant une sphère de dépendance de données (20) regroupant des processus (2, 3) pouvant accéder à des zones (BuC, CuD) de la mémoire (MEM) telles que :
    o l'union de toutes lesdites zones (BuCuD) est connexe logiquement, et
    o toute zone parmi lesdites zones est d'intersection non-vide avec l'union de toutes les autres zones parmi lesdites zones ;
    - une étape de sauvegarde, de façon individuelle pour chaque groupe (20) de processus (2, 3), des données stockées dans la mémoire (MEM) utilisables par au moins un des processus (2, 3) appartenant audit groupe ;
    de manière à restaurer un état global sans erreur du système suite à une erreur survenant dans un processeur (P1, P2) exécutant l'un des processus (2, 3) appartenant audit groupe (20), sans avoir à restaurer la globalité de la mémoire (MEM),
    le procédé étant caractérisé en ce qu'il comporte une étape de confinement des accès à la mémoire (MEM) par sphère de dépendance de données, cette étape de confinement incluant :
    - une étape de gestion de droits d'accès aux zones de la mémoire (MEM) pour chaque processus (2, 3), de manière à empêcher la propagation d'une erreur logique survenant dans le processeur (P1, P2) exécutant ledit processus ;
    - une étape de gestion d'indicateurs d'appartenance des zones (A, B, C, D) de la mémoire (MEM) à chaque sphère de dépendance de données (20).
  2. Dispositif de fiabilisation d'un système comportant une pluralité de processeurs (P1, P2) et une mémoire (MEM), le dispositif comportant :
    - des moyens pour regrouper les processus (1, 2, 3) en une pluralité de groupes (10, 20), lesdits moyens regroupant les processus par sphères de dépendance de données, chaque sphère de dépendance de données (20) contenant des processus (2, 3) pouvant accéder à des zones (BuC, CuD) de la mémoire (MEM) telles que :
    o l'union de toutes lesdites zones (BuCuD) est connexe logiquement, et
    o toute zone parmi lesdites zones est d'intersection non-vide avec l'union de toutes les autres zones parmi lesdites zones ;
    - des moyens pour sauvegarder individuellement pour chaque groupe (20) de processus (2, 3) les données stockées dans la mémoire (MEM) utilisables par au moins un des processus (2, 3) appartenant audit groupe ;
    de manière à restaurer un état global sans erreur du système suite à une erreur survenant dans un des processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant audit groupe (20), sans avoir à restaurer la globalité de la mémoire (MEM),
    le dispositif étant caractérisé en ce qu'il comporte des moyens pour confiner les accès à la mémoire (MEM) par sphère de dépendance de données, ces moyens pour confiner incluant :
    - des moyens pour gérer des droits d'accès aux zones de la mémoire (MEM) pour chaque processus (2, 3), de manière à empêcher la propagation d'une erreur logique survenant dans le processeur (P1, P2) exécutant ledit processus ;
    - des moyens pour gérer des indicateurs d'appartenance des zones (A, B, C, D) de la mémoire (MEM) à chaque sphère de dépendance de données (20).
  3. Dispositif selon la revendication 2, caractérisé en ce que, pour chaque sphère de dépendance de données (20), les données sauvegardées incluent :
    - les données stockées dans l'union connexe des zones (BuC, CuD) de la mémoire (MEM) pouvant être accédées par l'un des processus (2, 3) appartenant à ladite sphère (20), et/ou
    - les données stockées dans les registres des processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant à ladite sphère (20), et/ou
    - les données stockées dans les étages de pipeline des processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant à ladite sphère (20), et/ou
    - les données stockées dans les unités (MMU) de gestion de la mémoire (MEM) ou dans les unités (MPU) de protection de la mémoire (MEM) incluses dans les processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant à ladite sphère (20), et/ou
    - les données stockées dans les mémoires caches des processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant à ladite sphère (20).
  4. Dispositif selon l'une des revendications 2 et 3, caractérisé en ce que les moyens pour regrouper les processus en sphères de dépendance de données sont implémentés sous la forme de services fournis par le système d'exploitation du système, ces services fournissant les différentes sphères de dépendance de données correspondant à tous les processus couramment exécutés.
  5. Dispositif selon la revendication 4, caractérisé en ce que les moyens pour sauvegarder incluent des moyens (CP Maître) pour coordonner les sauvegardes des différentes sphères de dépendance de données (10, 20) correspondant à tous les processus (1, 2, 3) couramment exécutés, ces moyens pour coordonner incluant:
    - des moyens pour déclencher une sauvegarde des données pour une sphère de dépendance de données (20) correspondant à des processus (2. 3) couramment exécutés ;
    - des moyens pour déclencher, suite à l'erreur logique survenue dans un des processeurs (P1, P2) exécutant l'un des processus (2, 3) appartenant à ladite sphère (20), la restauration des données sauvegardées pour ladite sphère de dépendance de données (20) exclusivement.
  6. Dispositif selon la revendication 2, caractérisé en ce que les moyens pour confiner incluent une unité de gestion de la mémoire (MMU) ou une unité de protection de la mémoire (MPU) associée à chacun des processeurs (P1, P2) du système, ladite unité interdisant au processeur auquel elle est associée l'accès à la mémoire (MEM) en dehors de la zone (BuC, CuD) allouée au processus (2, 3) en cours d'exécution par ledit processeur.
  7. Dispositif selon la revendication 6, caractérisé en ce que l'unité de gestion de la mémoire (MMU) ou l'unité de protection de la mémoire (MPU) inclut des moyens de gestion de droits d'accès à la mémoire, les sphères de dépendance de données courantes dépendant de ces droits d'accès.
EP11787891.8A 2010-12-01 2011-11-24 Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride Not-in-force EP2646916B1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1059989A FR2968422B1 (fr) 2010-12-01 2010-12-01 Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride
PCT/EP2011/070978 WO2012072500A1 (fr) 2010-12-01 2011-11-24 Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride

Publications (2)

Publication Number Publication Date
EP2646916A1 EP2646916A1 (fr) 2013-10-09
EP2646916B1 true EP2646916B1 (fr) 2014-09-24

Family

ID=45033992

Family Applications (1)

Application Number Title Priority Date Filing Date
EP11787891.8A Not-in-force EP2646916B1 (fr) 2010-12-01 2011-11-24 Procédé et dispositif de fiabilisation d'un système multi-processeur par pointage hybride

Country Status (4)

Country Link
US (1) US9135110B2 (fr)
EP (1) EP2646916B1 (fr)
FR (1) FR2968422B1 (fr)
WO (1) WO2012072500A1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983855B2 (en) * 2019-02-12 2021-04-20 Microsoft Technology Licensing, Llc Interface for fault prediction and detection using time-based distributed data

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
JP3258228B2 (ja) * 1996-03-15 2002-02-18 株式会社東芝 チェックポイント生成方法
US6393583B1 (en) * 1998-10-29 2002-05-21 International Business Machines Corporation Method of performing checkpoint/restart of a parallel program
US6658589B1 (en) * 1999-12-20 2003-12-02 Emc Corporation System and method for backup a parallel server data storage system
US8566326B2 (en) * 2004-11-05 2013-10-22 Oracle International Corporation High-performance log-based processing
US8776018B2 (en) * 2008-01-11 2014-07-08 International Business Machines Corporation System and method for restartable provisioning of software components
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution

Also Published As

Publication number Publication date
US9135110B2 (en) 2015-09-15
WO2012072500A1 (fr) 2012-06-07
FR2968422B1 (fr) 2013-07-19
EP2646916A1 (fr) 2013-10-09
FR2968422A1 (fr) 2012-06-08
US20130254591A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
US11010209B2 (en) Speculative execution management in a coherent accelerator architecture
US9256612B1 (en) Systems and methods for managing references in deduplicating data systems
US10216429B2 (en) Performing post-processing operations for log file writes
US11221927B2 (en) Method for the implementation of a high performance, high resiliency and high availability dual controller storage system
US8707107B1 (en) Systems and methods for proactively facilitating restoration of potential data failures
EP1240587A1 (fr) Systeme informatique tolerant aux erreurs transitoires et procede de gestion dans un tel systeme
EP2839378A1 (fr) Systeme et procede de gestion d&#39;une coherence de caches dans un reseau de processeurs munis de memoires caches
EP2498184A1 (fr) Dispositif pour l&#39;amélioration de la tolérance aux fautes d&#39;un processeur
WO2021069626A1 (fr) Procédé de simulation parallèle reproductible de niveau système électronique mis en oeuvre au moyen d&#39;un système informatique multi-coeurs de simulation à événements discrets
EP3392773B1 (fr) Circuit integre numerique protege contre les erreurs transitoires
EP2646916B1 (fr) Procédé et dispositif de fiabilisation d&#39;un système multi-processeur par pointage hybride
FR3116625A1 (fr) Procédé de simulation parallèle reproductible de niveau système électronique mis en œuvre au moyen d&#39;un système informatique multi-cœurs de simulation à événements discrets.
US11226875B2 (en) System halt event recovery
US9465710B1 (en) Systems and methods for predictively preparing restore packages
EP2250561B1 (fr) Dispositif permettant l&#39;utilisation d&#39;un composant programmable dans un environnement radiatif naturel
US20240338437A1 (en) Data Protection By Delayed Ordered Write Destage Operations
EP4137945A1 (fr) Méthode de protection d&#39;un circuit intégré numérique reconfigurable contre les erreurs réversibles
EP1340148B1 (fr) Dispositif et procede de detection et correction d&#39;erreurs memoire dans un systeme electronique
CN110688193A (zh) 磁盘处理方法以及装置
FR2929729A1 (fr) Dispositif de gestion de la memoire d&#39;un environnement informatique
FR2745100A1 (fr) Systeme informatique a transparence de panne pour les applications utilisateur

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20130523

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAX Request for extension of the european patent (deleted)
RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 11/14 20060101AFI20140327BHEP

Ipc: G06F 11/10 20060101ALI20140327BHEP

Ipc: G06F 12/14 20060101ALI20140327BHEP

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

INTG Intention to grant announced

Effective date: 20140514

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

Free format text: NOT ENGLISH

REG Reference to a national code

Ref country code: CH

Ref legal event code: EP

REG Reference to a national code

Ref country code: AT

Ref legal event code: REF

Ref document number: 688890

Country of ref document: AT

Kind code of ref document: T

Effective date: 20141015

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

Free format text: LANGUAGE OF EP DOCUMENT: FRENCH

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602011010168

Country of ref document: DE

Effective date: 20141106

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: NO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20141224

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20141225

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

REG Reference to a national code

Ref country code: LT

Ref legal event code: MG4D

Ref country code: NL

Ref legal event code: VDEP

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: RS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK05

Ref document number: 688890

Country of ref document: AT

Kind code of ref document: T

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150126

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20150124

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602011010168

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MC

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: LU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20141124

Ref country code: BE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20141130

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20141130

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20141130

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

REG Reference to a national code

Ref country code: IE

Ref legal event code: MM4A

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

26N No opposition filed

Effective date: 20150625

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20141124

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 5

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SM

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20151124

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO

Effective date: 20111124

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20151124

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 6

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 7

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20140924

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20221118

Year of fee payment: 12

Ref country code: DE

Payment date: 20221121

Year of fee payment: 12

REG Reference to a national code

Ref country code: DE

Ref legal event code: R119

Ref document number: 602011010168

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20240601

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20231130