WO2003014931A2 - Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur - Google Patents

Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur Download PDF

Info

Publication number
WO2003014931A2
WO2003014931A2 PCT/FR2002/002785 FR0202785W WO03014931A2 WO 2003014931 A2 WO2003014931 A2 WO 2003014931A2 FR 0202785 W FR0202785 W FR 0202785W WO 03014931 A2 WO03014931 A2 WO 03014931A2
Authority
WO
WIPO (PCT)
Prior art keywords
input
flip
circuit
output
memory
Prior art date
Application number
PCT/FR2002/002785
Other languages
English (en)
Other versions
WO2003014931A3 (fr
Inventor
Michel Nicolaidis
Original Assignee
Iroc Technologies
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 Iroc Technologies filed Critical Iroc Technologies
Priority to EP02794620A priority Critical patent/EP1428121A2/fr
Priority to US10/485,662 priority patent/US7493549B2/en
Priority to AU2002355473A priority patent/AU2002355473A1/en
Publication of WO2003014931A2 publication Critical patent/WO2003014931A2/fr
Publication of WO2003014931A3 publication Critical patent/WO2003014931A3/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/1052Bypassing or disabling error detection or correction

Definitions

  • Set of electronic circuits comprising at least one memory with error correction means
  • the invention relates to a set of electronic circuits comprising at least one memory and means for detecting and correcting an error in the data supplied by the memory during a read operation, the output of the memory being connected in parallel to an input.
  • an error detection circuit at an input of an error correction circuit and at the input of a first stage, the error detection circuit controlling the transmission of the corrected data to the first stage after detection of an error.
  • the memories of the electronic circuits are subjected to various types of disturbances, like the bombardments of particles, in particular of ionizing particles and neutrons.
  • an ionizing particle can, via the drain of a blocked transistor, cause an electric pulse modifying the state of a memory cell.
  • This type of error can affect the reliability of the electronic circuit assemblies comprising such memories, more particularly in the field of nanotechnologies in which the voltage levels and the capacitance values of the nodes are increasingly low.
  • the use of so-called hardened radiation-insensitive memory cells has been proposed to overcome this problem.
  • Another proposed solution consists in associating with the useful data stored in a memory error control codes, which can be either error detection codes, or error correction codes such as the error code.
  • One of the main drawbacks of the known error correction means is to reduce the operating speed of the electronic circuit assemblies comprising a memory with error correction means due to the time required to correct an error after a read operation and / or the determination of an error control code before a write operation.
  • the object of the invention is to overcome these drawbacks and to allow the improvement of the operating speed of a set of circuits.
  • electronic devices comprising at least one memory with error correction means.
  • the decontamination means preferably comprise means for allowing, when an error has been detected, to keep the assembly in the state while the correction of the data is carried out by the circuit. correction and means for then transmitting the corrected data to the first stage while maintaining in the state the circuits not likely to have been contaminated.
  • the assembly can include means for replacing, in the memory, the erroneous data by corrected data supplied by the error correction means when an error has been detected.
  • the set of circuits comprising first flip-flops liable to be affected by the error, second flip-flops not liable to be affected by the error and supplying data which can be used by a first flip-flop located downstream
  • the decontamination means comprise, for each second flip-flop, a multiplexer comprising an input connected directly to the output of the second associated flip-flop and an input connected to said output via a buffer register , of the first in, first out type.
  • the set of circuits comprising third flip-flops belonging to a most distant reachable source assembly, the decontamination means preferably comprise, for each third flip-flop, a multiplexer comprising an input connected directly to the output of the third associated flip-flop and a input connected to said output via a buffer register, of the first in, first out type.
  • Each buffer register preferably includes a predetermined number of cells depending on the distance separating the corresponding flip-flop from the memory and flip-flops belonging to a most distant reachable set.
  • the invention also relates to means for accelerating the operation of the assembly when writing to the memory.
  • the assembly comprises a first code generation circuit having an input connected to the input of the memory and an output connected to the input of a code memory providing a first code
  • the error detection and correction means comprising a second code generation circuit, having an input connected to the output of the memory and supplying a second code, and means for comparing the first and second codes supplied by the code memory and by the second code generation circuit.
  • FIG. 1 illustrates a set of circuits according to the prior art.
  • FIG. 2 represents a flow diagram making it possible to accelerate the operation of a control circuit according to the prior art.
  • FIG. 3 illustrates a first type of circuit assembly in which the invention can be used.
  • FIG. 4 represents a particular embodiment of the invention for a set of circuits of the type shown in FIG. 3.
  • FIG. 5 represents a flow diagram illustrating the operation of a set of circuits according to FIG. 4.
  • FIG. 6 illustrates a second type of circuit assembly in which the invention can be used.
  • FIG. 7 represents a particular embodiment of the invention for a set of circuits of the type shown in FIG. 6.
  • FIG. 8 illustrates a third type of circuit assembly in which the invention can be used.
  • FIG. 9 represents a particular embodiment of the invention for a set of circuits of the type shown in FIG. 8.
  • Figures 10 and 11 show assemblies with multiple channels between certain components.
  • FIG. 12 illustrates a set of multi-channel circuits in which the invention can be used.
  • FIG. 13 represents a particular embodiment of the invention for a set of circuits of the type represented in FIG. 12.
  • FIG. 14 illustrates in more detail the output signals of the control circuit of the circuit assembly according to FIG. 13
  • FIGS. 15 and 16 represent two variants of connection of the circuits associated with the memory of the assembly according to FIG. 13.
  • FIG. 17 illustrates an assembly comprising a stage situated upstream from the memory.
  • FIG. 18 illustrates means making it possible to accelerate the operation of an assembly according to FIG. 17 when writing to the memory.
  • the data supplied by a memory 1 and intended to be used by electronic circuits, for example by a microprocessor, can be controlled by a control circuit 2, before being transmitted to a logic circuit 3 a first stage of data processing.
  • Systematic correction of data by the control circuit 2 systematically slows the transmission of data in the user circuit.
  • a control circuit 2 The operation of a control circuit 2 according to the prior art can, in particular, be improved in the manner illustrated diagrammatically by the flow diagram of FIG. 2.
  • a first step F1 the control circuit 2 checks, by means of d a control code associated with the data supplied by the memory 1, if the data received is correct. If an error is detected (No output from F1), the control circuit then proceeds, in a step F2, to correct the data.
  • the correction step F2 which is short-circuited if no error is detected, is therefore only carried out when necessary and the speed is thus significantly improved.
  • detecting an error by means of a control code such as the Hamming code, intended to be used for data correction takes some time.
  • the additional use of an error detection circuit makes it possible to further improve the operating speed of the assembly.
  • two different codes are associated with the data in the memory.
  • the error detection step F1 is carried out by an error detection circuit of the control circuit 2 using a first code, for example a parity code, while the step F2, which is only rarely necessary , is carried out by a correction circuit of the control circuit, using a second code, for example the Hamming code, requiring more time but making it possible to correct the data.
  • the information leaving the memory during a read operation is transmitted without delay to the first processing stage and, in parallel, to an error detection circuit as well as to an error correction circuit. If there is no error in the data read, the assembly operates correctly, at full speed. If an error is detected by the error detection circuit, then the corrected data is sent to the first data processing stage under the control of the error detection circuit. However, if the operating speed is high, the erroneous data have already been transmitted downstream, contaminating, in a way, part of the whole. It is then necessary to provide means for decontaminating the circuits likely to have been contaminated by an error before its detection.
  • the decontamination means must essentially make it possible, when an error has been detected, to maintain the assembly in the state while the correction of the data is carried out by the correction circuit, then to transmit the corrected data to the first stage, while keeping the circuits in a state not likely to have been contaminated.
  • the transmission of data as a whole is carried out under the control of a clock, each clock cycle, or a predetermined number of clock cycles, causing the transmission of data between two successive components of the together.
  • the means of decontamination depend on the type of assembly in which the memory is used.
  • FIG. 3 schematically illustrates a first type of assembly in which the invention can be implemented.
  • the memory 1 is connected in series to a plurality of successive stages, only two of which are shown in FIG. 3.
  • Each stage consists of a rocker 4 (4a for the first stage, 4b for the second stage ...) , which can be preceded by a logic circuit 3 (3a for the first stage, 3b for the second stage ).
  • the data read from memory 1 are first processed in logic circuit 3a of the first stage.
  • the processed data are then stored in the flip-flop 4a of the first stage before being processed in the logic circuit 3b of the second stage.
  • the flip-flop 4b of the second stage stores the data processed by the logic circuit 3b before their transmission to a next stage.
  • FIG. 4 A particular embodiment of the invention in an assembly of this type is represented in FIG. 4.
  • the output of the memory 1 is connected in parallel to an input of an error detection circuit 5, at the input of an error correction circuit 6 and a first input of a first multiplexing circuit 7.
  • a second input of the first multiplexing circuit 7 is connected to the output of the correction circuit 6, while its output is connected to the input of the first stage, i.e. to the input of the logic circuit
  • the output of the detection circuit 5 is connected to a control input of the first multiplexing circuit 7 and to a holding input of each of the flip-flops (4b %) of the subsequent stages, i.e. stages d 'order greater than 1.
  • the first multiplexing circuit 7 transmits (step F4) the data read from the memory 1 to the logic circuit 3a of the first stage. Simultaneously, the detection circuit 5 examines the data to detect a possible error (step F5) and the correction circuit proceeds to correct the data (step F4)
  • step F5 the latter then controls (step F7) the blocking of the flip-flops (4b ...) of the stages of order greater than 1 and (step F8) the transmission of the corrected data to the logic circuit 3a.
  • the transmission of the corrected data is carried out via the first multiplexing circuit 7 which then receives on its control input a signal causing the transmission of the signals applied to its second input by the error correction circuit 6. If necessary, the transmission of the data corrected by the multiplexer takes into account that the duration of the error correction can be greater than the duration of the error detection by the detection circuit 5. If the error correction circuit is too slow to supply the corrected data after a clock cycle, the flip-flop blocking must be maintained for the time necessary.
  • the entire system includes correct data and the flip-flops of the stages of order greater than 1 are then released (step F9) before the resumption of a new cycle starting with the transmission and analysis of the following data (return to the input of steps F4, F5 and F6).
  • the operation of the assembly according to FIG. 4 is based on the assumption that when the detection circuit 5 detects an error and blocks the subsequent stages, only the first stage has been contaminated, the data then in the subsequent stages corresponding to correct data.
  • FIG. 6 schematically illustrates a second type of assembly in which the invention can be implemented.
  • This assembly is distinguished from the assembly of FIG. 3 by the fact that the logic circuit 3a of the first stage comprises a second input intended to receive additional data D and supplies as output data which are simultaneously a function of the data applied to its first and second inputs, that is to say data supplied by the memory 1 and additional data D.
  • FIG. 7 A particular mode of implementation of the invention in an assembly of this type is represented in FIG. 7. It comprises the same elements as in FIG. 4. However, the combination of the additional data D and the data in coming from memory 1 in logic circuit 3a makes it necessary to restore the data present at the two inputs of logic circuit 3a when an error has been detected by detection circuit 5 in the data coming from memory.
  • the assembly according to FIG. 7 therefore further comprises a second multiplexing circuit 8, which comprises a first input intended to receive the additional data D and a second input connected to the first input via an additional flip-flop 9.
  • the additional data D are thus applied, after a predetermined delay, to the second input of the second multiplexing circuit 8.
  • the second input of the logic circuit 3a is connected to the output of the second multiplexing circuit 8.
  • this includes a control input connected to the output of the detection circuit 5.
  • the additional data D applied to the first input of the second multiplexing circuit 8 is transmitted by the latter to the second input of the logic circuit 3a.
  • the detection circuit 5 causes, as in the assembly according to FIG. 4, the blocking of the flip-flops (4b ...) of higher order at 1 and the transmission of the corrected data applied to the second input of the first multiplexing circuit 7 by the error correction circuit 6.
  • the additional flip-flop 9 causes the transmission of the additional delayed signals applied to the second input of the second multiplexing circuit by the additional flip-flop 9.
  • the logic circuit 3a of the first stage thus simultaneously receives the data, coming from the memory, corrected by the correction circuit 6 and the associated delayed additional data.
  • FIG. 8 schematically illustrates a third type of assembly in which the invention can be implemented. This assembly differs from the assembly of FIG. 6 by the fact that the data coming from the memory 1 and the additional data D are applied successively to the input of the logic circuit 3a of the first stage, by means of a multiplexing circuit 10, under the control of a first control signal C applied to a first control input of the multiplexing circuit 10.
  • the data transmitted by the logic circuit 3a to the flip-flop 4a are a predetermined function of the data applied successively on its input by the multiplexing circuit 10.
  • FIG. 9 A particular embodiment of the invention in an assembly of this type is shown in FIG. 9. It has the same elements as in FIG. 4. However, the first multiplexing circuit 7 in FIG. 4 is replaced by a multiplexing circuit 11 which has a third input, to which the additional data D is applied, and three control inputs. A first control input receives the first control signal C, while a second control input is connected directly to the output of the error detection circuit 5 which supplies it with a second control signal.
  • the flip-flop holding input (4b ...) of stages of order greater than 1 and the third control input of the multiplexing circuit 1 1 are connected to the output of a logic gate 12, of type ET in the illustrated embodiment, having a first input connected to the output of the detection circuit 5 and a second input receiving the first control signal C.
  • the output of the logic gate 12 provides the third control input of the multiplexing circuit 11 with a third control signal.
  • an additional rocker 13 interposed between the output of the logic gate 12 and the third control input of the multiplexing circuit 11, supplies the latter with a third control signal.
  • a logic gate 27, of the OR type in the embodiment shown has an input connected to the output of the logic gate 12 and an input connected to the output of the flip-flop 13.
  • the flip-flop holding input (4b, ...) of stages of order greater than 1 is then connected to the output of logic gate 27.
  • the multiplexing circuit 11 transmits to the logic circuit 3a the additional data D applied to its third input when the first control signal C has a first predetermined value (0 in the example shown) and the data, read in the memory, applied to its first input, when the first control signal C takes a second predetermined value (1 in the example shown).
  • the second control signal of value 0, representative of correct read data, also forces the output of logic gate 12 to 0.
  • the flip-flop 13 and the gate 27 are provided.
  • the additional flip-flop 13 supplies the multiplexing circuit 11 with a third control signal of value 1, causing the transmission to the logic circuit 3a of the corrected data applied to its second input.
  • the flip-flops (4b, etc.) of stages of order greater than 1 will be blocked longer and several flip-flops 13 will be used to delay the output of the logic gate 12 for the time necessary.
  • control signal is adapted accordingly and can take various values Ci each corresponding to the transmission of one of the additional data Di.
  • the output of the correction circuit 6 is connected to the input of the memory and an input for writing the memory is connected to the output of the circuit of detection 5, so as to cause the corrected data to be written into the memory after detection of an error.
  • the data having been corrected in the memory at the first detection of an error this will save the time necessary for its correction, downstream, during a subsequent reading.
  • the risk of combination with an additional error occurring later likely to exceed the correction capacities of the correction circuit, cannot be excluded.
  • B1 will be considered as a predecessor of B2, B2 as a successor of B1.
  • the distance d (B1-B2), in the propagation path considered, between the predecessor Bl and the successor B2 is then equal to r + 1.
  • dmin (B1-B2) the minimum of all the distances of the different paths
  • dmax (B1-B2) their maximum.
  • a part of a multi-channel assembly comprising a loop is shown in FIG. 11.
  • a logic circuit 3q the output of which is connected to the inputs of a flip-flop 4q and of a flip-flop 4i, has two inputs connected respectively to the exit from flip-flop 4i and exit from flip-flop 4j.
  • the output of flip-flop 4q is connected to the input of a logic circuit 3r, the output of which is connected to the input of a flip-flop 4r.
  • the distance between flip-flop 4j and flip-flop 4i can take an infinity of values greater than or equal to 1:
  • the value 3 for the channel comprising successively the flip-flop 4j, the logic circuit 3q, the flip-flop 4i, the logic circuit 3q and the flip-flop 4i and again the logic circuit 3q and the flip-flop 4i,
  • the distance between the flip-flop 4i and itself can take the value 0, the value 1 (channel 4i, 3q, 4i), the value 2 (channel 4i, 3q, 4i, 3q, 4i), the value 3 (channel 4i, 3q, 4i, 3q, 4i, 3q, 4i) or any higher value.
  • the distance between scale 4i and scale 4r can take any value greater than or equal to 2 (track 4i, 3q, 4q, 3r, 4r; track 4i, 3q, 4i, 3q, 4q, 3r, 4r; track 4i, 3q , 4i, 3q, 4i, 3q, 4q, 3r, 4r; etc.).
  • the set of flip-flops Ba capable of being reached by an error originating from memory 1, that is to say the minimum distance from memory is less than or equal to k (dmin ⁇ k).
  • - A1 or set that cannot be reached all of the flip-flops that cannot be reached in k clock cycles by an error from memory 1, that is to say the minimum distance from memory is greater than k (dmin> k) or which are not connected downstream of memory 1.
  • the set of flip-flops Bs belonging to the set A1 or to the set Amax, which are arranged upstream of a rocker Ba of the set A from which they are separated by a distance dmin
  • - S1 or sufficient source set the set of flip-flops of set S which are sufficient to correct the data in the set of circuits.
  • There are several sufficient source sets. - S2 or nearest source assembly, the set of flip-flops of set S which are arranged immediately upstream of a flip-flop Ba of set A, that is to say separated from the latter by a distance dmin 1.
  • S2 is a particular sufficient source set S1. Api the set of Bapl flip-flops, of set A, excluding Amax, having several inputs connected to different Bapl-1 flip-flops, constituting immediate predecessors and themselves separated from memory 1 by distances dmin ( Bapl-1) different scales.
  • all the BapI-1 flip-flops of set A excluding Amax, arranged upstream of a Bapl flip-flop and whose distance dmin (memory-flip-flop Bapl-1) to the memory is greater than the minimum value of the distances dmin (memory-latch Bapl-1) associated with the corresponding latch Bapl.
  • the memory 1 is connected in series to a logic circuit 3e, a flip-flop 4e, a logic circuit 3f, a flip-flop 4f, a logic circuit 3g and a flip-flop 4g.
  • the logic circuit 3e comprises an additional input connected to the output of a flip-flop 4h and the logic circuit 3f an additional input connected to the output of a flip-flop 41.
  • the output of flip-flop 4f is also connected to a first input of a 3m logic circuit having a second input connected to the output of a 4n flip-flop and an output connected to the input of a 4m flip-flop.
  • the output of flip-flop 4e is also connected to a first input of a logic circuit 3o having a second input connected to the output of a flip-flop 4p and an output connected to both the input of a flip-flop 4o and to the entrance to the scale 4p.
  • the output of flip-flop 4o is connected in series with a logic circuit 3s and a flip-flop 4s.
  • the flip-flops 4e, 4f, 4g, 4m, 4o, 4p, and 4s belong to the set A, while the flip-flops 4h, 41 and 4n belong to the source set S and, more particularly to the set S2.
  • the scales 4m, 4g and 4s belong to both the Api set and the Amax set and the switches 4p to the AS assembly.
  • the flip-flops are identified by Ba, Bamax, Bas or Bs depending on whether they belong to set A only, to set Amax, to set AS or to set S. They are moreover, except for the scales of the Amax assembly, identified by a figure representative of the minimum distance (dmin) min which separates them from the scales
  • Figure 13 completes the circuitry of Figure 12 with the elements to perform, in 3 clock cycles.
  • a multiplexing circuit 14 comprises a first input connected to the output of the memory 1, a second input connected to the output of the correction circuit 6, and an output connected to the input of the logic circuit 3e initially connected to the memory. It also includes a third input connected to the memory output via a buffer register 15, with two cells, of the first in, first out type, designated by the usual abbreviation FIFO ("first in, first out "). Such a register introduces a delay depending on the number of F cells which constitute it and saves the last two values presented at its entry.
  • the output of the flip-flop 4h is connected directly to a first input of a multiplexing circuit 16 and, via a FIFO register 17 to 3 stages, to a second input of the multiplexing circuit 16, the output of which is connected to the additional input of the logic circuit 3e.
  • the output of flip-flop 4p is connected directly to a first input of a multiplexing circuit 18 and, via a 2-stage FIFO register 19, to a second input of the multiplexing circuit 18, whose output is connected to the second input of the logic circuit 3o.
  • the output of flip-flop 41 is directly connected to a first input of a multiplexing circuit 20 and, via a 2-stage FIFO register 21, to a second input of the multiplexing circuit 20, the output of which is connected to the additional input of logic circuit 3f.
  • the output of flip-flop 4n is directly connected to a first input of a multiplexing circuit 22 and, via a FIFO register 23 with a single stage, to a second input of the multiplexing circuit 22, the output of which is connected to the second input of the 3m logic circuit.
  • the number of cells in a FIFO register is less than or equal to k, that is to say to 3, in the particular embodiment shown.
  • the cells of each FIFO register are designated by F0, F1, F2 Fk-1, starting with the output cell of the register.
  • the detection circuit 5 controls the multiplexers and the FIFO registers, as well as the blocking and unblocking of the flip-flops, via a control circuit 24, of so as to correct all the data likely to have been affected by the error.
  • the output signals of the control circuit 24 are illustrated in more detail in FIG. 14:
  • - Chold signals are applied to all the flip-flops not belonging to the set, that is to say, in FIG. 13, to the flip-flops 4h, 41 and 4n and to all the flip-flops, not shown, which belong to the set A1.
  • - Cm signals are applied to the control input of the multiplexers.
  • a FIFO register and a multiplexer are associated with the output of each flip-flop of the set S1 chosen, the multiplexer having an input connected directly to the output of the flip-flop considered and an input connected to this output via the FIFO register.
  • ni k + 1-dmin ( memory-Ba)
  • a first activation cycle for reading this FIFO register is the cycle corresponding to the value dmin (memory-Ba).
  • the last read activation cycle of this FIFO register is the cycle k of the decontamination process.
  • dmin memory-Ba
  • n 1 k + 1 -dmin (memory-Ba) min
  • the activation in reading of this FIFO register then begins at the cycle dmin (memory-Ba) min and ends at the cycle k of the decontamination process.
  • the output data of the FIFO register are transmitted to the output of the associated multiplexer.
  • a FIFO register and a multiplexer are also associated with each Bas flip-flop of the set As to provide the data necessary for decontamination.
  • the principle is analogous to that used for the scales of the S2 assembly.
  • the transmission of the content of this FIFO register must be interrupted before the end of the decontamination process to avoid providing contaminated data because the state of the Low flip-flop, belonging to set A, is contaminated during normal operation of all.
  • n2 k + 1 -dmin (memory-Bpl)
  • the FIFO register considered is activated in read mode from the dmin cycle (memory-Bpl).
  • a FIFO register of size k activate it from the first cycle of the decontamination process.
  • the last activation cycle of the FIFO register is the dmin cycle (memory-Low). During these cycles, the output data from the FIFO register are transmitted to the output of the associated multiplexer.
  • the output data of the Low flip-flop are transmitted to the output of the associated multiplexer.
  • dmin memory-Bpl
  • dmin values memory-Bpl
  • the activation of the FIFO register then begins at the dmin cycle (memory-Bpl) min of the decontamination process and ends at the dmin cycle (memory-Low).
  • the associated multiplexer transmits at its output the output of the FIFO register during these cycles and the output of the flip-flop Low after the dmin cycle (memory-Low).
  • the duration of the decontamination process is k cycles.
  • the flip-flops of the set A1 are then blocked during these k cycles and, possibly, during the cycles necessary for the correction of the data read in the memory by the correction circuit.
  • a FIFO register and a multiplexer are also associated with the memory.
  • the size of this FIFO register is k-1.
  • its first read activation cycle is cycle 2 of the decontamination phase and its last read activation cycle is the cycle k of this phase.
  • a single multiplexer 14 can be used to select the output of the FIFO register 15 associated with the memory 1 and the output of the correction circuit 6.
  • the multiplexer 15 connects to its output its input connected to the memory output 1.
  • the first cycle of the decontamination phase it connects to its output its input connected to the circuit output correction 6 and, during the following k-1 cycles of the decontamination phase, it connects to its output its input connected to the output of the FIFO register 15.
  • This particular embodiment has the drawback of saving in the FIFO register 15 an erroneous datum which would be read in the memory in the k ⁇ 1 cycles following the reading of the first erroneous datum.
  • FIG. 15 illustrates an alternative embodiment enabling this problem to be avoided.
  • the FIFO register 15 of FIG. 13 is replaced by a FIFO register 26 whose input is connected to the output of the correction circuit 6.
  • the correction circuit 6 supplies both the corrected erroneous data and the correct, unchanged data, in from memory.
  • the crossing time of the correction circuit is identical for all the data, corrected or correct, coming from memory 1. If this time exceeds one clock cycle, then the correction circuit will be designed so as to provide its output one data per clock cycle, each of these data being delayed by a number x of clock cycles corresponding to the time of crossing of the correction circuit.
  • the decontamination phase will start.
  • the necessary data from the memory are then all in the FIFO register 26 and they are all correct.
  • the FIFO register 26 is activated for reading during the k cycles of the decontamination phase. During these cycles, the multiplexer 14 connects to its output its input connected to the output of the FIFO register 26. In normal operation, the multiplexer 14 connects to its output its input connected to the output of memory 1.
  • Figure 16 illustrates another variant.
  • a FIFO register 25 is then connected between the output of memory 1 and the input of the correction circuit 6.
  • the data, correct or erroneous are saved in the FIFO register 25 as and when 'they are read from memory.
  • the k data necessary for decontamination are saved in the FIFO register 25. Some of them may be erroneous. From this moment, one begins to activate the register 25 in reading.
  • the correction circuit 6 provides the first datum, which is always correct, x cycles later.
  • the decontamination phase during k cycles, then begins, the multiplexer selecting its input connected to the output of the correction circuit which supplies data, corrected if necessary, during each cycle.
  • the decontamination phase then begins in cycle x.
  • control code associated with the data supplied by the memory 1 and allowing the detection and possibly the correction of an error at the output of the memory 1 is calculated and stored in the memory during a phase of writing the data to the memory. This calculation introduces an additional delay which can have an impact on the operating cycle of the assembly. It is possible to eliminate this impact using the techniques described below.
  • a memory stage which may include a logic circuit 28 upstream of the memory 1, is preceded by a stage providing it with the data.
  • This conventionally comprises at least one logic circuit 29, the output of which is connected to the input of a flip-flop 30 (or of a stage of flip-flops), itself connected to the input of logic circuit 28 of the 'memory stage.
  • the code generation circuit can be inserted in the memory stage , without reducing the operating speed of the assembly.
  • the sum of the delay Dp of the stage preceding the memory 1, of the delay Dm of the memory stage and of the delay Dg of the code generation circuit is less than two periods Dh of the clock of the set, we can on the one hand consider case where the memory stage does not include a logic circuit 28 and on the other hand the case where the memory stage comprises a logic circuit 28.
  • the code generation circuit is divided into two parts, a first part having a first delay D1 and a second part having a second delay D2, such as D1 + Dp ⁇ Dh and D2 + Dm ⁇ Dh.
  • the first part of the code generation circuit is then inserted in the stage preceding the memory and the second part of the code generation circuit is inserted in the memory stage.
  • the first part of the block is then inserted in the stage preceding the memory and the second part of the block is inserted in the memory stage.
  • the data can be written immediately to memory 1, but the code must be generated before being written to memory.
  • This delay will be less than Dg if Dm is less than Dh.
  • an additional delay equal to Dg + Dm-Dh is obtained.
  • the data is read and a code is generated from the read data, then compared bit by bit in a logic circuit of OR type exclusive to the code previously stored in the memory, way to generate a syndrome.
  • An additional delay, corresponding to the delay Dg of the code generation circuit therefore exists in the path taken by the data read.
  • the delays Dg of the two code generation circuits (in writing and in reading) being identical, the additional delay, introduced in the channel followed by the code in writing is less than or equal to the delay introduced in the channel taken by the data in reading .
  • the data to be written to memory 1 is applied in parallel to an input of memory 1 and to the input of a first code generation circuit 32, the output of which is connected to the input of the code memory 31.
  • the output of the memory 1 is connected, on the one hand, directly to the blocks of the system arranged downstream so as to provide them with the “read data” and, on the other hand, to the input of a second code generation circuit 33.
  • the output of the second code generation circuit 33 providing a
  • Code generated in memory reading phase is connected to a first input of a syndrome generation circuit 34 and to a first input of an error detection circuit 35 providing an error detection signal to the system.
  • the output of code memory 31, providing a "code lu ”, is connected to a second input of the syndrome generation circuit 34 and to a second input of the error detection circuit 35.
  • the output of the syndrome generation circuit 34 is connected to an input of a logic circuit 36 , of the exclusive OR type, comprising another input connected directly to the output of memory 1 and supplying the system with the
  • the code generation circuits 33, syndrome generation 34, and the logic circuit 36 make up the correction circuit 6 (FIGS. 4, 7, 9, 13, 15 and 16).
  • a clock signal H being applied to a clock input of memory 1
  • a clock signal H + Dc that is to say delayed by From by relative to the clock signal H
  • Dc is applied to a clock input of the code memory 31.
  • Dc ⁇ Dg + Dm-Dh, but less than Dg, so as not to introduce, into the path taken by the code in writing, with a delay greater than the additional delay of the channel taken by the code in reading.
  • the data is immediately written into memory 1, at an instant t0.
  • the data are maintained by a flip-flop on the inputs of the first code generation circuit 32.
  • the code is ready, at the latest at an instant tO + Dg, it is written in the code memory 31.
  • the data read at an instant t1 can be sent directly to the following blocks of the system, as described above, the downstream stages being decontaminated later in the event of propagation of an error.
  • the “data read” are simultaneously applied to the input of the second code generation circuit 33, which generates the “generated code” at an instant t1 + Dg.
  • the "code read” is ready at the latest when the "generated code” is ready and the two codes can be used immediately by the circuits of detection of error 35 and generation of syndrome 34, so as to detect a possible error and / or generate a syndrome.
  • the instants t0 and t1 can be identical to the instants t0 and t1 of writing and reading of a memory 1 not using error control codes.
  • the embodiment of FIG. 18 does not in fact add, for the majority of the clock cycles, any delay due to the generation of codes, the detection of an error and the correction of an error, the data. being immediately written to memory 1 and the data read from memory 1 being immediately supplied to the rest of the system. Waiting cycles are not introduced into the system until after the rare cycles during which erroneous data are read from memory 1.
  • the write and read operations of the code memory 31 are performed with the same delay De with respect to the write and read operations of the data memory 1.
  • the write and read cycles of the code memory 31 thus have the same duration as the write and read cycles of the data memory 1.
  • the memories 1 and 31 are synchronous memories, controlled by clock signals shifted by De, which makes it possible to derive the clock signals from the code memory 31 of the signals clock H of memory 1.
  • code memory 31 is smaller than data memory 1, so code memory 31 can be faster than data memory 1. It is therefore not essential to introduce a delay equal to t1-t0 between the read and write operations of the code memory.
  • the write operation in the code memory 31 is carried out at the instant t0 + Dc, that is to say delayed by De with respect to the write operation in the data memory 1.
  • the code memory being faster, the operation of reading the code memory 31 does not need to be carried out at time t1 + Dc, that is to say that it does not does not have to be delayed by De with respect to the read operation of the data memory 1.
  • the code memory 31 is fast enough than the data memory, the read operation of the code memory can be performed at the same time as the read operation of the data memory
  • De is less than a clock period Dh.
  • Dh a clock period
  • De can be greater than Dh.
  • the code generation takes a number r of clock cycles greater than 1, whether in writing or in reading.
  • each operation of the code memory is performed r cycles after the corresponding operation of the data memory.
  • This solution also enables data memory operations to be carried out without delay. If this principle is used for the error detection code, a greater number of clock cycles is necessary to detect an error after reading an erroneous data item.
  • the decontamination circuit can only be activated after a higher number of clock cycles, necessary for the correction of the data read.
  • all the flip-flops with which buffer registers are associated receive inputs at each clock cycle.
  • certain flip-flops can be controlled by a signal (“hait”) which blocks the flip-flop when it is active. The rocker therefore maintains its state of the previous cycle when the “hate” signal is active.
  • the clock of a flip-flop is derived from the system clock by means of a logic circuit, for example of an OR gate, which receives as input the signal of the system clock and one or more logic signals and generates as output the clock ("gated dock") of the scale.
  • a logic circuit for example of an OR gate, which receives as input the signal of the system clock and one or more logic signals and generates as output the clock ("gated dock") of the scale.
  • these logic signals condition the clock of the rocker which will be blocked during the cycles where these logic signals take certain values. The result is that the rocker maintains its state of the preceding cycle with each cycle during which its clock is blocked.
  • the logic signals which control a rocker or which condition a clock signal are generated by certain blocks of the system. Then, in the initial architecture of the system, that is to say before the introduction of the decontamination circuits, the control signals of a flip-flop and the signals which condition its clock are considered as inputs of the flip-flop, of the same way as the signals which carry the data in writing in the rocker.
  • the construction of the decontamination circuits will take these signals into account and add the necessary circuits (as described previously) to generate the same values on these signals during the decontamination phase as in normal operation.
  • the buffer registers (or FIFOs), in the description above, they are activated in writing at each cycle of normal operation and in reading during predetermined cycles of the decontamination phase. But this does not take into account the case of control signals of the flip-flop associated with FIFO nor the case of the conditioning signals of the clock of this flip-flop. These signals can block the flip-flop during certain cycles of the operating phase and the FIFO must generate on its output during decontamination the same values as generates its associated flip-flop in normal operation. To do this, one of the following techniques can be used:
  • the conditioning signals of the clock of the associated flip-flop are ignored and the system clock (ie without conditioning) is sent to the FIFO during the operating phase and during the decontamination phase.
  • the control flip-flop control signals are also ignored, that is to say, these signals are not used in FIFO control, neither in normal operation nor during decontamination.
  • the FIFO is always in writing during normal operation and in reading during the predetermined cycles of the decontamination phase, as described above.
  • the rocker is blocked during a cycle of normal operation (by the “hate” signal or by its clock) it retains its previous value. This value is supplied to the FIFO during the two cycles and is stored in consecutive stages of the FIFO, which will supply it on its output during consecutive cycles of decontamination.
  • the FIFO will provide during decontamination the same values as those provided by the associated flip-flop during normal operation.
  • the control signal of the “hait” type of the flip-flop is used to block the FIFO at the same time as the associated flip-flop, and the same clock is used for the FIFO as for the associated flip-flop (ie ie "hate” type if applicable).
  • the signal “hates” to control the associated flip-flop and the conditioning signals of the clock of this flip-flop take the same values during decontamination as in normal operation, we will also use during decontamination the same signal "Hates" and the same clock signal for FIFO.
  • This FIFO to save these signals during normal operation and supply them to the system during the decontamination phase, using a multiplexer, as described above for other signals from the system.
  • This FIFO will have the same number of stages and will be active during the same cycles of normal operation and decontamination as the FIFO for which the “hate” signal and the clock conditioning signals are intended.

Landscapes

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

Abstract

L'ensemble comporte au moins une mémoire (1) avec un circuit de détection d'erreur (5) et un circuit de correction d'erreur (6). Le circuit de correction d'erreur est court-circuité en l'absence de détection d'une erreur par le circuit de détection. Les données lues dans la mémoire sont transmises directement à un premier étage (3a, 4a) de l'ensemble et, simultanément, aux circuits de détection et de correction d'erreur. Si le circuit de détection détecte une erreur, il contrôle la transmission, par l'intermediaire d'un multiplexeur (7), des données corrigées par le circuit de correction (6) au premier étage et provoque la décontamination des étages susceptibles d'avoir été contamines par les données erronées. Chaque étage comportant une bascule (4a, 4b...), le circuit de détection (5) provoque alors également le blocage des bascules (4b,...) des étages ultérieurs jusqu'à ce que les données aient été corrigées dans le premier étage.

Description

Ensemble de circuits électroniques comportant au moins une mémoire avec des moyens de correction d'erreur
Domaine technique de l'invention
L'invention concerne un ensemble de circuits électroniques comportant au moins une mémoire et des moyens de détection et de correction d'erreur dans les données fournies par la mémoire pendant une opération de lecture, la sortie de la mémoire étant connectée en parallèle à une entrée d'un circuit de détection d'erreur, à une entrée d'un circuit de correction d'erreur et à l'entrée d'un premier étage, le circuit de détection d'erreur contrôlant la transmission des données corrigées au premier étage après détection d'une erreur.
Etat de la technique
Les mémoires des circuits électroniques sont soumises à divers types de perturbations, comme les bombardements de particules, en particulier de particules ionisantes et de neutrons. Ainsi une particule ionisante peut, par l'intermédiaire du drain d'un transistor bloqué, provoquer une impulsion électrique modifiant l'état d'une cellule de la mémoire.
Ce type d'erreurs peut affecter la fiabilité des ensembles de circuits électroniques comportant de telles mémoires, plus particulièrement dans le domaine des nanotechnologies dans lequel les niveaux de tensions et les valeurs des capacités des nœuds sont de plus en plus faibles. Dans l'art antérieur, l'utilisation de cellules de mémoire insensibles aux radiations, dites durcies, a été proposée pour surmonter ce problème. Une autre solution proposée consiste à associer aux données utiles stockées dans une mémoire des codes de contrôle d'erreur, qui peuvent être soit des codes de détection d'erreur, soit des codes de correction d'erreur comme le code de
Hamming. Il a également été proposé (EP-A-765497) de corriger de telles erreurs en combinant la détection d'une augmentation du courant dans une ligne d'alimentation d'une colonne de cellules d'une mémoire et l'identification, grâce à un code de parité associé à chaque mot, de la rangée de cellules de la mémoire correspondant au mot affecté.
L'un des principaux inconvénients des moyens de correction d'erreur connus est de réduire la vitesse de fonctionnement des ensembles de circuits électroniques comportant une mémoire avec des moyens de correction d'erreur en raison du délai nécessaire à la correction d'une erreur après une opération de lecture et/ou la détermination d'un code de contrôle d'erreur avant une opération d'écriture.
Le document EP-A-1054327 et l'article « Memory Gard Data Fastpath » (IBM Technical Disclosure Bulletin, février 1994, vol.37, n°2A) décrivent des systèmes de transmission de données entre une mémoire et un processeur dans lesquels les moyens de correction d'erreur sont court-circuités en l'absence de détection d'une erreur.
Objet de l'invention
L'invention a pour but de surmonter ces inconvénients et de permettre l'amélioration de la vitesse de fonctionnement d'un ensemble de circuits électroniques comportant au moins une mémoire avec des moyens de correction d'erreur.
Ce but est atteint par un ensemble selon les revendications annexées et plus particulièrement par le fait que, la mémoire étant connectée en série avec une pluralité d'étages successifs, la sortie du circuit de détection contrôle des moyens de décontamination des étages disposés en aval susceptibles d'être contaminés par une erreur avant sa détection.
Selon un développement de l'invention, les moyens de décontamination comportent, de préférence, des moyens pour permettre, lorsqu'une erreur a été détectée, de maintenir l'ensemble en l'état pendant que la correction des données est effectuée par le circuit de correction et des moyens pour transmettre ensuite les données corrigées au premier étage tout en maintenant en l'état les circuits non susceptibles d'avoir été contaminés.
Selon un second développement de l'invention, l'ensemble peut comporter des moyens pour remplacer, dans la mémoire, les données erronées par des données corrigées fournies par les moyens de correction d'erreur lorsqu'une erreur a été détectée.
Selon un autre développement de l'invention, l'ensemble de circuits comportant des premières bascules susceptibles d'être affectées par l'erreur, des secondes bascules, non susceptibles d'être affectées par l'erreur et fournissant des données qui peuvent être utilisées par une première bascule située en aval, les moyens de décontamination comportent, pour chaque seconde bascule, un multiplexeur comportant une entrée connectée directement à la sortie de la seconde bascule associée et une entrée connectée à ladite sortie par l'intermédiaire d'un registre tampon, du type premier entré, premier sorti. L'ensemble de circuits comportant des troisièmes bascules appartenant à un ensemble source atteignable le plus éloigné, les moyens de décontamination comportent, de préférence, pour chaque troisième bascule, un multiplexeur comportant une entrée connectée directement à la sortie de la troisième bascule associée et une entrée connectée à ladite sortie par l'intermédiaire d'un registre tampon, du type premier entré, premier sorti.
Chaque registre tampon comporte, de préférence, un nombre prédéterminé de cellules fonction de la distance séparant la bascule correspondante de la mémoire et de bascules appartenant à un ensemble atteignable le plus éloigné.
L'invention a également pour objet des moyens permettant d'accélérer le fonctionnement de l'ensemble lors de l'écriture dans la mémoire.
Selon l'invention, ce but est atteint par le fait que l'ensemble comporte un premier circuit de génération de code ayant une entrée connectée à l'entrée de la mémoire et une sortie connectée à l'entrée d'une mémoire de code fournissant un premier code, les moyens de détection et de correction d'erreur comportant un second circuit de génération de code, ayant une entrée connectée à la sortie de la mémoire et fournissant un second code, et des moyens de comparaison des premier et second codes fournis par la mémoire de code et par le second circuit de génération de code.
Description sommaire des dessins
D'autres avantages et caractéristiques ressortiront plus clairement de la description qui va suivre de modes particuliers de réalisation de l'invention donnés à titre d'exemples non limitatifs, et représentés aux dessins annexés, dans lesquels :
La figure 1 illustre un ensemble de circuits selon l'art antérieur. La figure 2 représente un organigramme permettant d'accélérer le fonctionnement d'un circuit de contrôle selon l'art antérieur.
La figure 3 illustre un premier type d'ensemble de circuits dans lequel l'invention peut être utilisée.
La figure 4 représente un mode particulier de réalisation de l'invention pour un ensemble de circuits du type représenté à la figure 3.
La figure 5 représente un organigramme illustrant le fonctionnement d'un ensemble de circuits selon la figure 4.
La figure 6 illustre un second type d'ensemble de circuits dans lequel l'invention peut être utilisée. La figure 7 représente un mode particulier de réalisation de l'invention pour un ensemble de circuits du type représenté à la figure 6.
La figure 8 illustre un troisième type d'ensemble de circuits dans lequel l'invention peut être utilisée.
La figure 9 représente un mode particulier de réalisation de l'invention pour un ensemble de circuits du type représenté à la figure 8.
Les figures 10 et 11 représentent des ensembles comportant de multiples voies entre certains composants.
La figure 12 illustre un ensemble de circuits à voies multiples dans lequel l'invention peut être utilisée. La figure 13 représente un mode particulier de réalisation de l'invention pour un ensemble de circuits du type représenté à la figure 12.
La figure 14 illustre plus en détail les signaux de sortie du circuit de commande de l'ensemble de circuits selon la figure 13 Les figures 15 et 16 représentent deux variantes de connexion des circuits associés à la mémoire de l'ensemble selon la figure 13.
La figure 17 illustre un ensemble comportant un étage situé en amont de la mémoire.
La figure 18 illustre des moyens permettant d'accélérer le fonctionnement d'un ensemble selon la figure 17 lors de l'écriture dans la mémoire.
Description de modes particuliers de réalisation.
Comme représenté à la figure 1 , les données fournies par une mémoire 1 et destinées à être utilisées par des circuits électroniques, par exemple par un microprocesseur, peuvent être contrôlées par un circuit de contrôle 2, avant d'être transmises à un circuit logique 3 d'un premier étage de traitement des données. La correction systématique des données par le circuit de contrôle 2 ralentit systématiquement la transmission des données dans le circuit utilisateur.
Or, les erreurs étant relativement rares, il n'est pas indispensable de soumettre systématiquement les données à une étape de correction et il est possible d'améliorer la vitesse de fonctionnement de l'ensemble de circuits, sans renoncer à détecter et à corriger les erreurs dans les données fournies par la mémoire lors d'une opération de lecture.
Le fonctionnement d'un circuit de contrôle 2 selon l'art antérieur peut, notamment, être amélioré de la manière illustrée schématiquement par l'organigramme de la figure 2. Dans une première étape F1 , le circuit de contrôle 2 vérifie, au moyen d'un code de contrôle associé aux données fournies par la mémoire 1 , si les données reçues sont correctes. Si une erreur est détectée (sortie Non de F1), le circuit de contrôle procède alors, dans une étape F2, à la correction des données. Une troisième étape F3 de transmission des données, corrigées si nécessaire, suit l'étape F2 ou directement l'étape F1 si aucune erreur n'a été détectée (sortie Oui de F1). L'étape F2 de correction, qui est court-circuitée si aucune erreur n'est détectée, n'est donc réalisée qu'en cas de besoin et la vitesse est ainsi sensiblement améliorée. Cependant la détection d'une erreur au moyen d'un code de contrôle, comme le code de Hamming, destiné à être utilisé pour la correction des données demande un certain temps.
L'utilisation additionnelle d'un circuit de détection d'erreur, utilisant par exemple un simple code de parité, plus rapide qu'un code de contrôle nécessaire pour effectuer une correction, permet d'améliorer encore la vitesse de fonctionnement de l'ensemble. Dans ce cas, deux codes différents sont associés aux données dans la mémoire. L'étape F1 de détection d'erreur est effectuée par un circuit de détection d'erreur du circuit de contrôle 2 utilisant un premier code, par exemple un code de parité, tandis que l'étape F2, qui n'est que rarement nécessaire, est réalisée par un circuit de correction du circuit de contrôle, utilisant un second code, par exemple le code de Hamming, nécessitant plus de temps mais permettant de corriger les données.
Cependant, même le temps nécessaire au contrôle d'un simple bit de parité reste significatif et il peut être souhaitable d'améliorer encore la vitesse de fonctionnement, en supprimant totalement ce type de délai, sans toutefois renoncer à la détection et à la correction des erreurs. Pour cela, les informations sortant de la mémoire lors d'une opération de lecture sont transmises sans délai au premier étage de traitement et, en parallèle, à un circuit de détection d'erreur ainsi qu'à un circuit de correction d'erreur. En l'absence d'erreur dans les données lues, l'ensemble fonctionne correctement, à pleine vitesse. Si une erreur est détectée par le circuit de détection d'erreur, alors les données corrigées sont envoyées au premier étage de traitement des données sous le contrôle du circuit de détection d'erreur. Cependant, si la vitesse de fonctionnement est élevée, les données erronées ont déjà été transmises en aval, contaminant, en quelque sorte, une partie de l'ensemble. Il est alors nécessaire de prévoir des moyens de décontamination des circuits susceptibles d'avoir été contaminés par une erreur avant sa détection.
Les moyens de décontamination doivent essentiellement permettre, lorsqu'une erreur a été détectée, de maintenir l'ensemble en l'état pendant que la correction des données est effectuée par le circuit de correction, de transmettre ensuite les données corrigées au premier étage, tout en maintenant en l'état les circuits non susceptibles d'avoir été contaminés. De manière classique, la transmission des données dans l'ensemble est réalisée sous le contrôle d'une horloge, chaque cycle d'horloge, ou un nombre prédéterminé de cycles d'horloge, provoquant la transmission des données entre deux composants successifs de l'ensemble. Les moyens de décontamination dépendent du type d'ensemble dans lequel la mémoire est utilisée.
La figure 3 illustre schématiquement un premier type d'ensemble dans lequel l'invention peut être mise en œuvre. La mémoire 1 est connectée en série à une pluralité d'étages successifs, dont deux seulement sont représentés sur la figure 3. Chaque étage est constitué d'une bascule 4 (4a pour le premier étage, 4b pour le second étage...), qui peut être précédée par un circuit logique 3 (3a pour le premier étage, 3b pour le second étage...). Les données lues dans la mémoire 1 sont tout d'abord traitées dans le circuit logique 3a du premier étage. Les données traitées sont ensuite mémorisées dans la bascule 4a du premier étage avant d'être traitées dans le circuit logique 3b du second étage. La bascule 4b du second étage mémorise les données traitées par le circuit logique 3b avant leur transmission à un étage suivant.
Un mode particulier de mise en œuvre de l'invention dans un ensemble de ce type est représenté à la figure 4. La sortie de la mémoire 1 est connectée en parallèle à une entrée d'un circuit 5 de détection d'erreur, à l'entrée d'un circuit 6 de correction d'erreur et à une première entrée d'un premier circuit de multiplexage 7. Une seconde entrée du premier circuit de multiplexage 7 est connectée à la sortie du circuit de correction 6, tandis que sa sortie est connectée à l'entrée du premier étage, c'est-à-dire à l'entrée du circuit logique
3a. La sortie du circuit de détection 5 est connectée à une entrée de contrôle du premier circuit de multiplexage 7 et à une entrée de maintien de chacune des bascules (4b...) des étages ultérieurs, c'est-à-dire des étages d'ordre supérieur à 1.
En fonctionnement normal, comme représenté sur l'organigramme de la figure 5, le premier circuit de multiplexage 7 transmet (étape F4) les données lues dans la mémoire 1 au circuit logique 3a du premier étage. Simultanément, le circuit de détection 5 examine les données pour détecter une erreur éventuelle (étape F5) et le circuit de correction procède à la correction des données (étape
F6). Si les données sont correctes (sortie Oui de F5), les données corrigées ne sont pas utilisées et le cycle de fonctionnement continue par la transmission et l'analyse des données suivantes (retour à l'entrée des étapes F4, F5 et F6).
Par contre, si une erreur est détectée par le circuit de détection 5 (sortie Non de
F5), celui-ci contrôle alors (étape F7) le blocage des bascules (4b...) des étages d'ordre supérieur à 1 et (étape F8) la transmission des données corrigées au circuit logique 3a. La transmission des données corrigées est réalisée par l'intermédiaire du premier circuit de multiplexage 7 qui reçoit alors sur son entrée de contrôle un signal provoquant la transmission des signaux appliqués sur sa seconde entrée par le circuit de correction d'erreur 6. Si nécessaire, la transmission des données corrigées par le multiplexeur tient compte du fait que la durée de la correction d'erreur peut être supérieure à la durée de la détection d'erreur par le circuit de détection 5. Si le circuit de correction d'erreur est trop lent pour fournir les données corrigées au bout d'un cycle d'horloge, le blocage des bascules doit être maintenu pendant le temps nécessaire. Lorsque les données corrigées ont été transmises à la bascule 4a du premier étage, l'ensemble du système comporte des données correctes et les bascules des étages d'ordre supérieur à 1 sont alors débloquées (étape F9) avant la reprise d'un nouveau cycle de fonctionnement commençant par la transmission et l'analyse des données suivantes (retour à l'entrée des étapes F4, F5 et F6).
Le fonctionnement de l'ensemble selon la figure 4 est basé sur l'hypothèse que lorsque le circuit de détection 5 détecte une erreur et bloque les étages ultérieurs, seul le premier étage a été contaminé, les données alors dans les étages ultérieurs correspondant à des données correctes.
La figure 6 illustre schématiquement un second type d'ensemble dans lequel l'invention peut être mise en œuvre. Cet ensemble se distingue de l'ensemble de la figure 3 par le fait que le circuit logique 3a du premier étage comporte une seconde entrée destinée à recevoir des données additionnelles D et fournit en sortie des données qui sont simultanément fonction des données appliquées sur ses première et seconde entrées, c'est-à-dire des données fournies par la mémoire 1 et des données additionnelles D.
Un mode particulier de mise en œuvre de l'invention dans un ensemble de ce type est représenté à la figure 7. Il comporte les mêmes éléments que la figure 4. Cependant, la combinaison des données additionnelles D et des données en provenance de la mémoire 1 dans le circuit logique 3a rend nécessaire une remise en l'état des données présentes aux deux entrées du circuit logique 3a lorsqu'une erreur a été détectée par le circuit de détection 5 dans les données provenant de la mémoire. L'ensemble selon la figure 7 comporte donc, de plus, un second circuit de multiplexage 8, qui comporte une première entrée destinée à recevoir les données additionnelles D et une seconde entrée connectée à la première entrée par l'intermédiaire d'une bascule additionnelle 9. Les données additionnelles D sont ainsi appliquées, après un délai prédéterminé, sur la seconde entrée du second circuit de multiplexage 8. La seconde entrée du circuit logique 3a est connectée à la sortie du second circuit de multiplexage 8.
Celui-ci comporte, comme le premier circuit de multiplexage 7, une entrée de contrôle connectée à la sortie du circuit de détection 5.
En fonctionnement normal, les données additionnelles D appliquées sur la première entrée du second circuit de multiplexage 8 sont transmises par celui-ci à la seconde entrée du circuit logique 3a. Si une erreur dans les données en provenance de la mémoire est détectée par le circuit de détection, le circuit de détection 5 provoque, comme dans l'ensemble selon la figure 4, le blocage des bascules (4b...) d'ordre supérieur à 1 et la transmission des données corrigées appliquées sur la seconde entrée du premier circuit de multiplexage 7 par le circuit de correction d'erreur 6. Simultanément, il provoque également la transmission des signaux additionnels retardés appliqués sur la seconde entrée du second circuit de multiplexage par la bascule additionnelle 9. Le circuit logique 3a du premier étage reçoit ainsi simultanément les données, provenant de la mémoire, corrigées par le circuit de correction 6 et les données additionnelles retardées associées. Les données fournies par le circuit logique 3a, corrigées, sont alors mémorisées dans la bascule 4a et les bascules des étages d'ordre supérieur à 1 peuvent être débloquées pour reprendre un nouveau cycle de fonctionnement. La figure 8 illustre schématiquement un troisième type d'ensemble dans lequel l'invention peut être mise en œuvre. Cet ensemble se distingue de l'ensemble de la figure 6 par le fait que les données en provenance de la mémoire 1 et les données additionnelles D sont appliquées successivement à l'entrée du circuit logique 3a du premier étage, par l'intermédiaire d'un circuit de multiplexage 10, sous le contrôle d'un premier signal de contrôle C appliqué sur une première entrée de contrôle du circuit de multiplexage 10. Les données transmises par le circuit logique 3a à la bascule 4a sont une fonction prédéterminée des données appliquées successivement sur son entrée par le circuit de multiplexage 10.
Un mode particulier de mise en œuvre de l'invention dans un ensemble de ce type est représenté à la figure 9. Il comporte les mêmes éléments que la figure 4. Cependant, le premier circuit de multiplexage 7 de la figure 4 est remplacé par un circuit de multiplexage 11 qui comporte une troisième entrée, sur laquelle sont appliquées les données additionnelles D, et trois entrées de contrôle. Une première entrée de contrôle reçoit le premier signal de contrôle C, tandis qu'une seconde entrée de contrôle est connectée directement à la sortie du circuit de détection d'erreur 5 qui lui fournit un second signal de contrôle. L'entrée de maintien des bascules (4b...) des étages d'ordre supérieur à 1 et la troisième entrée de contrôle du circuit de multiplexage 1 1 sont connectées à la sortie d'une porte logique 12, de type ET dans le mode de réalisation représenté, ayant une première entrée connectée à la sortie du circuit de détection 5 et une seconde entrée recevant le premier signal de contrôle C. La sortie de la porte logique 12 fournit à la troisième entrée de contrôle du circuit de multiplexage 11 un troisième signal de contrôle.
Dans une variante de réalisation représentée sur la figure 9, une bascule supplémentaire 13, interposée entre la sortie de la porte logique 12 et la troisième entrée de contrôle du circuit de multiplexage 11 , fournit à celle-ci un troisième signal de contrôle. Dans ce cas, une porte logique 27, de type OU dans le mode de réalisation représenté, comporte une entrée connectée à la sortie de la porte logique 12 et une entrée connectée à la sortie de la bascule 13. L'entrée de maintien des bascules (4b, ...) des étages d'ordre supérieur à 1 est alors connectée à la sortie de la porte logique 27.
En fonctionnement normal, le circuit de multiplexage 11 transmet au circuit logique 3a les données additionnelles D appliquées sur sa troisième entrée lorsque le premier signal de contrôle C a une première valeur prédéterminée (0 dans l'exemple représenté) et les données, lues dans la mémoire, appliquées sur sa première entrée, lorsque le premier signal de contrôle C prend une seconde valeur prédéterminée (1 dans l'exemple représenté). Le second signal de contrôle, de valeur 0, représentative de données lues correctes, force également à 0 la sortie de la porte logique 12.
Si une erreur dans les données en provenance de la mémoire est détectée par le circuit de détection, le circuit de détection 5 fournit un second signal de contrôle, de valeur 1 , représentative d'une erreur dans les données lues. Si une erreur est détectée alors que les données transmises par le circuit de multiplexage 11 sont les données lues dans la mémoire (C = 1 ), le premier étage a été contaminé et il est nécessaire d'effectuer une correction. Par contre, si l'erreur est détectée alors que les données transmises par le circuit de multiplexage 11 sont les données additionnelles D (C = 0), le premier étage n'a pas été contaminé et aucune correction n'est nécessaire. Dans ce cas, le signal de sortie de la porte logique 12 reste à 0, puisque au moins une de ses entrées (C) reste à 0. Les bascules (4b...) des étages d'ordre supérieur à 1 ne sont donc pas bloquées. Par contre si, simultanément, les deux entrées de la porte logique 12 passent à 1 (C = 1 et erreur détectée), alors le signal de sortie de la porte logique passe à 1 et provoque le blocage, c'est-à-dire le maintien en l'état, des bascules des étages ultérieurs ainsi qu la transmission au circuit logique 3a des données corrigées.
Dans le cas où le circuit de correction nécessite un cycle supplémentaire pour fournir les données corrigées, la bascule 13 et la porte 27 sont prévues. Dans ce cas, au cycle d'horloge suivant, c'est-à-dire après un délai permettant au circuit de correction de compléter la correction, la bascule supplémentaire 13 fournit au circuit de multiplexage 11 un troisième signal de contrôle de valeur 1 , provoquant la transmission au circuit logique 3a des données corrigées appliquées sur sa seconde entrée. Ainsi, la transmission des données corrigées et le maintien en l'état des bascules des étages ultérieurs jusqu'à ce que la correction soit terminée dans le premier étage ne sont réalisés que lorsqu'une erreur a été détectée par le circuit de détection 5 pendant la transmission, par le circuit de multiplexage 11 , de données en provenance de la mémoire 1.
Si le circuit de correction prend plus d'un cycle d'horloge, les bascules (4b, etc..) des étages d'ordre supérieur à 1 seront bloquées plus longtemps et plusieurs bascules 13 seront utilisées pour retarder la sortie de la porte logique 12 pendant le temps nécessaire.
Dans le cas (non représenté) où plusieurs données additionnelles Di (D1 , D2, ..., Dr) doivent être appliquées au circuit logique 3a, ces données sont appliquées à l'entée du multiplexeur 11. Dans ce cas le signal de contrôle est adapté en conséquence et peut prendre diverse valeurs Ci correspondant chacune à la transmission de l'une des données additionnelles Di.
Pour éviter qu'une erreur détectée ne se reproduise systématiquement à chaque nouvelle lecture de la donnée correspondante, il est possible de remplacer cette donnée, dans la mémoire, par la donnée corrigée. Cette possibilité est schématisée en pointillés sur la figure 4. Dans ce cas, la sortie du circuit de correction 6 est connectée à l'entrée de la mémoire et une entrée de commande d'écriture de la mémoire est connectée à la sortie du circuit de détection 5, de manière à provoquer l'écriture dans la mémoire des données corrigées après détection d'une erreur. La donnée ayant été corrigée dans la mémoire à la première détection d'une erreur, cela permettra d'économiser le temps nécessaire à sa correction, en aval, lors d'une lecture ultérieure. De plus, si l'erreur n'est pas corrigée dans la mémoire, le risque de combinaison avec une erreur supplémentaire survenant ultérieurement, susceptible de dépasser les capacités de correction du circuit de correction, ne peut être exclue.
Dans certains ensembles, plusieurs étages peuvent avoir été contaminés avant la détection de l'erreur et le blocage des bascules des étages non susceptibles d'avoir été contaminés par le circuit de détection 5. Dans ce cas, il est nécessaire de déterminer préalablement quelles sont les bascules de l'ensemble susceptibles d'être contaminées par une erreur avant sa détection et d'adapter les moyens de décontamination en conséquence.
Dans l'hypothèse où l'erreur se propage dans l'ensemble pendant k cycles d'horloge avant sa détection et le blocage des bascules, avec k > 1 , toutes les bascules situées en aval de la mémoire à une distance d inférieure ou égale à k sont susceptibles d'avoir été contaminées. Pour un ensemble donné, le nombre k, dépendant de la vitesse du circuit de détection et de la durée d'un cycle d'horloge, est connu. La distance d entre tout couple de composants est définie par le nombre de cycles d'horloge nécessaires pour que les données de sortie d'un composant du couple soient prises en compte, directement ou indirectement par l'autre composant. Dans certains cas, il peut y avoir plusieurs voies, de longueurs différentes, entre les deux composants d'un couple. On désignera alors par dmin la distance minimum et par dmax la distance maximale entre les deux composants d'un couple.
Plus précisément, si les signaux se propagent d'une bascule B1 à une bascule B2 en passant par un nombre r de bascules, B1 sera considéré comme un prédécesseur de B2, B2 comme un successeur de B1. La distance d(B1-B2), dans le chemin de propagation considéré, entre le prédécesseur Bl et le successeur B2 est alors égale à r+1. S'il existe plusieurs chemins de propagation partant de B1 pour arriver à B2, on représente par dmin (B1-B2) le minimum de toutes les distances des différents chemins et par dmax(B1-B2) leur maximum. B1 est considéré comme le prédécesseur immédiat de B2 lorsque dmin(B1-B2)=1. Dans ce cas, B2 est un successeur immédiat de B1.
À titre d'exemple, dans l'ensemble selon la figure 3, la mémoirel et la bascule 4a sont séparées par une distance d = 1 , tandis que la mémoire 1 et la bascule
4b sont séparées par une distance d = 2. L'ensemble selon la figure 10 comporte de multiples voies entre certains composants. En effet, un circuit logique 3c, dont la sortie est connectée à l'entrée d'une bascule 4c, comporte deux entrées connectées respectivement à la sortie de la mémoire 1 et à la sortie de la bascule 4a. Un circuit logique 3d, dont la sortie est connectée à l'entrée d'une bascule 4d, comporte également deux entrées, connectées respectivement à la sortie de la bascule 4b et à la sortie de la bascule 4c. Dans un tel ensemble, entre la mémoire 1 et la bascule 4d, l'ensemble des distances est donné par{2, 3}, avec dmin = 2 et dmax = 3. En effet, la distance entre la mémoire 1 et la bascule 4d peut prendre deux valeurs :
- la valeur 2 si l'on considère une voie comportant successivement la mémoire 1 , le circuit logique 3d, la bascule 4c, le circuit logique 3d et la bascule 4d,
- la valeur 3 si l'on considère une voie comportant successivement la mémoire 1 , le circuit logique 3a, la bascule 4a, le circuit logique 3b, la bascule 4b, le circuit logique 3d et la bascule 4d, ou une voie comportant successivement la mémoire 1 , le circuit logique 3a, la bascule 4a, le circuit logique 3c, la bascule 4c, le circuit logique 3d et la bascule 4d.
Une partie d'un ensemble à voie multiples comportant une boucle est représentée à la figure 11. Un circuit logique 3q, dont la sortie est connectée aux entrées d'une bascule 4q et d'une bascule 4i, comporte deux entrées connectées respectivement à la sortie de la bascule 4i et à la sortie d'une bascule 4j. La sortie de la bascule 4q est connectée à l'entrée d'un circuit logique 3r, dont la sortie est connectée à l'entrée d'une bascule 4r. Dans un tel ensemble, il existe une infinité de distances entre deux composants. En effet, la distance entre la bascule 4j et la bascule 4i peut prendre une infinité de valeurs supérieures ou égales à 1 :
- la valeur 1 pour la voie comportant successivement la bascule 4j, le circuit logique 3q et la bascule 4i,
- la valeur 2 pour la voie comportant successivement la bascule 4j, le circuit logique 3q, la bascule 4i et de nouveau le circuit logique 3q et la bascule 4i,
- la valeur 3 pour la voie comportant successivement la bascule 4j, le circuit logique 3q, la bascule 4i, le circuit logique 3q et la bascule 4i et de nouveau le circuit logique 3q et la bascule 4i,
- etc..
De manière analogue la distance entre la bascule 4i et elle-même peut prendre la valeur 0, la valeur 1 (voie 4i, 3q, 4i), la valeur 2 (voie 4i, 3q, 4i, 3q, 4i), la valeur 3 (voie 4i, 3q, 4i, 3q, 4i, 3q, 4i) ou toute valeur supérieure. La distance entre la bascule 4i et la bascule 4r peut prendre toute valeur supérieure ou égale à 2 (voie 4i, 3q, 4q, 3r, 4r ; voie 4i, 3q, 4i, 3q, 4q, 3r, 4r ; voie 4i, 3q, 4i, 3q, 4i, 3q, 4q, 3r, 4r ; etc.).
Lorsque la distance peut prendre une infinité de valeurs, la distance maximale dmax est limitée à la valeur k. On obtient ainsi, pour l'exemple de la figure 11 : - entre la bascule 4j et la bascule 4i : dmin = 1 et dmax = k,
- entre la bascule 4i et elle-même : dmin = 0 et dmax = k,
- entre la bascule 4i et la bascule 4r : dmin = 2 et dmax = k.
Dans la suite de la description, on désignera par :
- A ou ensemble atteignable, l'ensemble des bascules Ba susceptibles d'être atteintes par une erreur provenant de la mémoire 1 , c'est-à-dire dont la distance minimum par rapport à la mémoire est inférieure ou égale à k (dmin ≤ k). - A1 ou ensemble non atteignable, l'ensemble des bascules non susceptibles d'être atteintes en k cycles d'horloge par une erreur provenant de la mémoire 1 , c'est-à-dire dont la distance minimum par rapport à la mémoire est supérieure à k (dmin > k) ou qui ne sont pas connectées en aval de la mémoire 1. - Amax ou ensemble atteignable le plus éloigné, l'ensemble des bascules pour lesquelles dmin = k et des bascules pour lesquelles dmin < k, mais qui ne sont pas connectées à d'autres composants en aval.
- S ou ensemble source externe, l'ensemble des bascules Bs, appartenant à l'ensemble A1 ou à l'ensemble Amax, qui sont disposées en amont d'une bascule Ba de l'ensemble A dont elles sont séparées par une distance dmin
≤ k.
- S1 ou ensemble source suffisant, l'ensemble des bascules de l'ensemble S qui sont suffisantes pour effectuer la correction des données dans l'ensemble de circuits. Il existe plusieurs ensembles sources suffisants. - S2 ou ensemble source le plus proche, l'ensemble des bascules de l'ensemble S qui sont disposées immédiatement en amont d'une bascule Ba de l'ensemble A, c'est-à-dire séparées de celle-ci par une distance dmin = 1. S2 est un ensemble source suffisant S1 particulier. Api l'ensemble des bascules Bapl, de l'ensemble A, à l'exclusion de Amax, ayant plusieurs entrées connectées à différentes bascules Bapl-1 , constituant des prédécesseurs immédiats et elles-mêmes séparées de la mémoire 1 par des distances dmin (mémoire-bascule Bapl-1) différentes. AS ou ensemble source atteignable, l'ensemble des bascules BapI-1 de l'ensemble A, à l'exclusion de Amax, disposées en amont d'une bascule Bapl et dont la distance dmin (mémoire-bascule Bapl-1) à la mémoire est supérieure à la valeur minimum des distances dmin (mémoire-bascule Bapl- 1) associées à la bascule Bapl correspondante.
À titre d'exemple, l'appartenance à ces divers ensembles de l'ensemble de circuits de la figure 12 va être décrite ci-dessous. Sur la figure 12, la mémoire 1 est connectée en série à un circuit logique 3e, une bascule 4e, un circuit logique 3f, une bascule 4f, un circuit logique 3g et une bascule 4g. Le circuit logique 3e comporte une entrée supplémentaire connectée à la sortie d'une bascule 4h et le circuit logique 3f une entrée supplémentaire connectée à la sortie d'une bascule 41. La sortie de la bascule 4f est également connectée à une première entrée d'un circuit logique 3m ayant une seconde entrée connectée à la sortie d'une bascule 4n et une sortie connectée à l'entrée d'une bascule 4m. La sortie de la bascule 4e est également connectée à une première entrée d'un circuit logique 3o ayant une seconde entrée connectée à la sortie d'une bascule 4p et une sortie connectée à la fois à l'entrée d'une bascule 4o et à l'entrée de la bascule 4p. La sortie de la bascule 4o est connectée en série avec un circuit logique 3s et une bascule 4s.
Le nombre k étant supposé égal à 3, les bascules 4e, 4f, 4g, 4m, 4o, 4p,et 4s appartiennent à l'ensemble A, tandis que les bascules 4h, 41 et 4n appartiennent à l'ensemble source S et, plus particulièrement à l'ensemble S2. Les bascules 4m, 4g et 4s appartiennent à la fois à l'ensemble Api et à l'ensemble Amax et la bascule 4p à l'ensemble AS. Sur les figures 12 et 13 les bascules sont identifiées par Ba, Bamax, Bas ou Bs selon qu'elles appartiennent à l'ensemble A seulement, à l'ensemble Amax, à l'ensemble AS ou à l'ensemble S. Elles sont de plus, sauf pour les bascules de l'ensemble Amax, identifiées par un chiffre représentatif de la distance minimale (dmin)min qui les sépare des bascules
Bamax associées de l'ensemble Amax. Ainsi les bascules 4o et 4f sont identifiées par Ba1 , la bascule 4e par Ba2, la bascule 4p par Bas2, la bascule 4n par Bs1 , la bascule 41 par Bs2 et la bascule 4h par Bs3. En généralisant cette notation, chaque bascule est identifiée par Bxy, x étant représentatif de l'ensemble auquel la bascule appartient (x = a, amx, as ou s) et y représentatif de la distance minimale séparant la bascule des bascules associées de l'ensemble Amax.
La figure 13 complète l'ensemble de circuits de la figure 12 avec les éléments permettant d'effectuer, en 3 cycles d'horloge.
Un circuit de multiplexage 14 comporte une première entrée connectée à la sortie de la mémoire 1 , une seconde entrée connectée à la sortie du circuit de correction 6, et une sortie connectée à l'entrée du circuit logique 3e initialement connectée à la mémoire. Il comporte également une troisième entrée connectée à la sortie de la mémoire par l'intermédiaire d'un registre tampon 15, à deux cellules, du type premier entré, premier sorti, désigné par l'abréviation usuelle FIFO (« first in, first out »). Un tel registre introduit un retard dépendant du nombre de cellules F qui le constituent et sauvegarde les deux dernières valeurs présentées à son entrée.
La sortie de la bascule 4h est connectée directement à une première entrée d'un circuit de multiplexage 16 et, par l'intermédiaire d'un registre FIFO 17 à 3 étages, à une seconde entrée du circuit de multiplexage 16, dont la sortie est connectée à l'entrée supplémentaire du circuit logique 3e. De manière analogue, la sortie de la bascule 4p est connectée directement à une première entrée d'un circuit de multiplexage 18 et, par l'intermédiaire d'un registre FIFO 19 à 2 étages, à une seconde entrée du circuit de multiplexage 18, dont la sortie est connectée à la seconde entrée du circuit logique 3o. La sortie de la bascule 41 est connectée directement à une première entrée d'un circuit de multiplexage 20 et, par l'intermédiaire d'un registre FIFO 21 à 2 étages, à une seconde entrée du circuit de multiplexage 20, dont la sortie est connectée à l'entrée supplémentaire du circuit logique 3f. La sortie de la bascule 4n est connectée directement à une première entrée d'un circuit de multiplexage 22 et, par l'intermédiaire d'un registre FIFO 23 à un seul étage, à une seconde entrée du circuit de multiplexage 22, dont la sortie est connectée à la seconde entrée du circuit logique 3m. Le nombre de cellules d'un registre FIFO est inférieur ou égal à k, c'est-à-dire à 3, dans le mode de réalisation particulier représenté. Les cellules de chaque registre FIFO sont désignées par F0, F1 , F2 Fk-1 , en commençant par la cellule de sortie du registre.
Lorsqu'il a détecté une erreur en sortie de la mémoire 1 , le circuit de détection 5 contrôle les multiplexeurs et les registres FIFO, ainsi que le blocage et le déblocage des bascules, par l'intermédiaire d'un circuit de commande 24, de manière à corriger toutes les données susceptibles d'avoir été affectées par l'erreur.
Les signaux de sortie du circuit de commande 24 sont illustrés plus en détail sur la figure 14 :
- Des signaux Chold sont appliqués à toutes les bascules n'appartenant pas à l'ensemble, c'est-à-dire, sur la figure 13, aux bascules 4h, 41 et 4n et à toute les bascules, non représentées, qui appartiennent à l'ensemble A1. - Des signaux Cm sont appliqués à l'entrée de contrôle des multiplexeurs.
- Des signaux CRFO sont appliqués aux cellules des registres FIFO.
Dans le cas général, on choisit pour décontaminer un ensemble S1. Un registre FIFO et un multiplexeur sont associés à la sortie de chaque bascule de l'ensemble S1 choisi, le multiplexeur comportant une entrée connectée directement à la sortie de la bascule considérée et une entrée connectée à cette sortie par l'intermédiaire du registre FIFO.
Nous allons d'abord considérer le cas où l'ensemble choisi est l'ensemble S2, ce qui donne, en général, le moindre coût matériel.
Le nombre ni de cellules d'un registre FIFO associé à une bascule Bs2 de l'ensemble S2 qui n'a qu'un seul successeur immédiat Ba appartenant à l'ensemble A, est donnée par : n1=k+1-dmin(mémoire-Ba) Durant le processus de décontamination, un premier cycle d'activation en lecture de ce registre FIFO est le cycle correspondant à la valeur dmin(mémoire-Ba). Le dernier cycle d'activation en lecture de ce registre FIFO est le cycle k du processus de décontamination. Pendant tous les cycles où le registre FIFO est activé en lecture, les données de sortie du registre FIFO sont transmises à la sortie du multiplexeur associé.
Dans le cas où la bascule Bs2 est le prédécesseur immédiat de plusieurs bascules de l'ensemble A, on peut représenter par dmin(mémoire-Ba)min le minimum de tous les dmin(mémoire-Ba) correspondants. La taille ni du registre FIFO associé à la bascule Bs2 est alors donnée par : n 1 =k+1 -dmin(mémoire-Ba)min L'activation en lecture de ce registre FIFO commence alors au cycle dmin(mémoire-Ba)min et finit au cycle k du processus de décontamination. Comme précédemment, pendant tous les cycles où le registre FIFO est activé en lecture, les données de sortie du registre FIFO sont transmises à la sortie du multiplexeur associé.
Un registre FIFO et un multiplexeur sont également associés à chaque bascule Bas de l'ensemble As pour fournir les données nécessaires à la décontamination. Le principe est analogue à celui utilisé pour les bascules de l'ensemble S2. Néanmoins, la transmission du contenu de ce registre FIFO doit être interrompue avant la fin du processus de décontamination pour éviter de fournir des données contaminées car l'état de la bascule Bas, appartenant à l'ensemble A, est contaminé pendant le fonctionnement normal de l'ensemble.
Dans le cas où une seule bascule Bpl est associée à une bascule Bas, la taille n2 du registre FIFO associé à la bascule Bas est donné par : n2=k+1 -dmin(mémoire-Bpl) Le registre FIFO considéré est activé en lecture à partir du cycle dmin(mémoire- Bpl). Alternativement, on peut utiliser un registre FIFO de taille k et l'activer dès le premier cycle du processus de décontamination. Dans les deux cas, le dernier cycle d'activation du registre FIFO est le cycle dmin(mémoire-Bas). Pendant ces cycles, les données de sortie du registre FIFO sont transmises à la sortie du multiplexeur associé. Après le dernier cycle d'activation en lecture du registre FIFOn les données de sortie de la bascule Bas sont transmises à la sortie du multiplexeur associé. On pourrait, éventuellement, continuer à activer le registre FIFO même après le cycle dmin(mémoire-Basà puisque sa sortie n'est plus transmise par le multiplexeur. Dans le cas où une bascule Bas de l'ensemble AS est associée à plusieurs bascules Bpl, on représentera par dmin(mémoire-Bpl)min la valeur minimale des valeurs dmin(mémoire-Bpl)correspondantes. La taille n2 du registre FIFO sera alors donnée par : n2=k+1- dmin(mémoire-Bpl)min
L'activation du registre FIFO commence alors au cycle dmin(mémoire-Bpl)min du processus de décontamination et se termine au cycle dmin(mémoire-Bas). Le multiplexeur associé transmet à sa sortie la sortie du registre FIFO pendant ces cycles et la sortie de la bascule Bas après le cycle dmin(mémoire-Bas). Comme précédemment, on peut aussi utiliser un registre FIFO de taille k activé dès le premier cycle du processus de décontamination.
Dans le cas où l'on utilise les bascules des ensembles S2 et AS pour la décontamination, la durée du processus de décontamination est de k cycles. Les bascules de l'ensemble A1 sont alors bloquées pendant ces k cycles et, éventuellement, pendant les cycles nécessaires à la correction des données lues dans la mémoire par le circuit de correction.
Pour tout ensemble source S1 choisi, on peut, de manière analogue définir la taille et les instants d'activation du registre FIFO à associer à chacune des bascules Bs1.
Un registre FIFO et un multiplexeur sont également associés à la mémoire. La taille de ce registre FIFO est k-1. En phase de décontamination, son premier cycle d'activation en lecture est le cycle 2 de la phase de décontamination et son dernier cycle d'activation en lecture est le cycle k de cette phase. Comme représenté à la figure 13 un seul multiplexeur 14 peut être utiliser pour sélectionner la sortie du registre FIFO 15 associé à la mémoire 1 et la sortie du circuit de correction 6. En fonctionnement normal, le multiplexeur 15 connecte à sa sortie son entrée connectée à la sortie de la mémoire 1. Pendant le premier cycle de la phase de décontamination, il connecte à sa sortie son entrée connectée à la sortie du circuit de correction 6 et, pendant les k-1 cycles suivants de la phase de décontamination, il connecte à sa sortie son entrée connectée à la sortie du registre FIFO 15.
Ce mode de réalisation particulier a pour inconvénient de sauvegarde dans le registre FIFO 15 une donnée erronée qui serait lue dans la mémoire dans les k- 1 cycles suivant la lecture de la première donnée erronée.
La figure 15 illustre une variante de réalisation permettant d'écarter ce problème. Le registre FIFO 15 de la figure 13 est remplacé par un registre FIFO 26 dont l'entrée est connectée à la sortie du circuit de correction 6. Le circuit de correction 6 fournit aussi bien les données erronées corrigées que les données correctes, inchangées, en provenance de la mémoire. Le temps de traversée du circuit de correction est identique pour toutes les données, erronées corrigées ou correctes, en provenance de la mémoire 1. Si ce temps dépasse un cycle d'horloge, alors le circuit de correction sera conçu de manière à fournir à sa sortie une donnée par cycle d'horloge, chacune de ces données étant retardée d'un nombre x de cycles d'horloge correspondant au temps de traversée du circuit de correction. Ainsi, si une donnée, correcte ou erronée est lue dans la mémoire à un cycle tO, cette donnée, éventuellement corrigée, est sauvegardée dans le registre FIFO 26 au cycle tO+x. Une donnée, correcte ou erronée, lue dans la mémoire à un cycle tO+y est sauvegardée dans le registre FIFO au cycle tO+x+y. Toutes les données sauvegardées dans le registre FIFO sont alors correctes. Par conséquent, si une donnée erronée est lue dans la mémoire 1 au cycle tO, les k données utilisées pendant la phase de décontamination sont sauvegardées dans le registre FIFO au cycle t0+x+k-1. C'est alors au cycle tO+x+k que va démarrer la phase de décontamination. Les données nécessaires en provenance de la mémoire sont alors toutes dans le registre FIFO 26 et elles sont toutes correctes. Le registre FIFO 26 est activé en lecture pendant les k cycles de la phase de décontamination. Pendant ces cycles, le multiplexeur 14 connecte à sa sortie son entrée connectée à la sortie du registre FIFO 26. En fonctionnement normal, le multiplexeur 14 connecte à sa sortie son entrée connectée à la sortie de la mémoire 1.
Alternativement, il est possible de réduire la taille du registre FIFO à k-x et de commencer la phase de décontamination au cycle tO+k, en supposant que k≥x. Si le circuit de correction est lent, alors k est inférieur à x et la taille du registre FIFO devient nul. La phase de décontamination commence alors au cycle x.
La figure 16 illustre une autre variante. Un registre FIFO 25 est alors connecté entre la sortie de la mémoire 1 et l'entrée du circuit de correction 6. Ainsi, en fonctionnement normal, les données, correctes ou erronées, sont sauvegardées dans le registre FIFO 25 au fur et à mesure qu'elles sont lues dans la mémoire.
Quand le circuit de détection 5 signale une erreur, les k données nécessaires à la décontamination sont sauvegardées dans le registre FIFO 25. Certaines d'entre elles peuvent être erronées. À partir de cet instant, on commence à activer le registre 25 en lecture. Le circuit de correction 6 fournit la première donnée, qui est toujours correcte, x cycles plus tard. La phase de décontamination, durant k cycles, commence alors, le multiplexeur sélectionnant son entrée connectée à la sortie du circuit de correction qui fournit une donnée, corrigée si nécessaire, pendant chaque cycle. Alternativement, on peut réduire la taille du registre à k-x et commencer la phase de décontamination au cycle tO+k, en supposant que k≥x. Si le circuit de correction est lent, alors k est inférieur à x et la taille du registre FIFO devient nul. La phase de décontamination commence alors au cycle x.
Le code de contrôle associé aux données fournies par la mémoire 1 et permettant la détection et éventuellement la correction d'une erreur en sortie de la mémoire 1 est calculé et mis en mémoire pendant une phase d'écriture des données dans la mémoire. Ce calcul introduit un délai supplémentaire qui peut avoir un impact sur le cycle de fonctionnement de l'ensemble. Il est possible d'éliminer cet impact en utilisant les techniques décrites ci-dessous.
Comme représenté à la figure 17 un étage de mémoire, qui peut comporter un circuit logique 28 en amont de la mémoire 1 , est précédé d'un étage lui fournissant les données. Celui-ci comporte classiquement au moins un circuit logique 29, dont la sortie est connectée à l'entrée d'une bascule 30 (ou d'un étage de bascules), elle-même connectée à l'entrée du circuit logique 28 de l'étage mémoire.
Diverses solutions peuvent être utilisées pendant une phase d'écriture des données dans la mémoire 1 , selon les contraintes en matière de délai.
Si la somme du délai Dm de l'étage mémoire et du délai Dg du circuit de génération du code est inférieure à la période Dh de l'horloge de l'ensemble, le circuit de génération de code peut être inséré dans l'étage mémoire, sans réduire la vitesse de fonctionnement de l'ensemble.
Si la somme du délai Dp de l'étage précédant la mémoire 1 , du délai Dm de l'étage mémoire et du délai Dg du circuit de génération de code est inférieure à deux périodes Dh de l'horloge de l'ensemble, on peut considérer d'une part le cas où l'étage mémoire ne comporte pas de circuit logique 28 et d'autre part le cas où l'étage mémoire comporte un circuit logique 28.
Dans le premier cas (absence de circuit logique 28), le circuit de génération de code est divisé en deux parties, une première partie ayant un premier délai D1 et une seconde partie ayant un second délai D2, tels que D1 +Dp≤Dh et D2+Dm≤Dh. La première partie du circuit de génération de code est alors insérée dans l'étage précédant la mémoire et la seconde partie du circuit de génération de code est insérée dans l'étage mémoire.
Dans le second cas (présence d'un circuit logique 28), c'est le bloc formé par concaténation du circuit logique 28 de l'étage mémoire et du circuit de génération de code qui est divisé en deux parties, une première partie ayant un premier délai D'1 et une seconde partie ayant un second délai D'2, tels que D'1 +Dp≤Dh et D'2+Dm≤Dh. La première partie du bloc est alors insérée dans l'étage précédant la mémoire et la seconde partie du bloc est insérée dans l'étage mémoire.
Ces solutions ne permettent cependant pas toujours l'exploitation du système à pleine vitesse. Dans ce cas, il est possible d'améliorer les performances du système en exploitant les dissymétries des délais des voies empruntées respectivement par les données et par le code durant les phases de lecture et d'écriture de la mémoire.
En effet, pendant une phase d'écriture, les données peuvent être écrites immédiatement dans la mémoire 1 , mais le code doit être généré avant d'être écrit dans la mémoire. II y a ainsi un délai additionnel, correspondant au maximum au délai Dg du circuit de génération de code, pour l'écriture du code. Ce délai sera inférieur à Dg si Dm est inférieur à Dh. Dans ce cas, on obtient un délai additionnel égal à Dg+Dm-Dh. De manière analogue, pendant une phase de lecture de la mémoire, les données sont lues et un code est généré à partir des données lues, puis comparé bit par bit dans un circuit logique de type OU exclusif au code précédemment mémorisé dans la mémoire, de manière à générer un syndrome. Un délai additionnel, correspondant au délai Dg du circuit de génération de code existe donc dans la voie empruntée par les données lues. Les délais Dg des deux circuits de génération de code (en écriture et en lecture) étant identiques, le délai additionnel, introduit dans la voie empruntée par le code en écriture est inférieur ou égal au délai introduit dans la voie empruntée par les données en lecture.
Ces caractéristiques sont utilisées dans le mode de réalisation illustré à la figure 18 pour éliminer tout délai dans l'écriture des données dans la mémoire. Pour cela, le code correspondant aux données écrites dans la mémoire n'est pas mémorisé dans la mémoire 1 (ou mémoire de données) mais dans une mémoire distincte, la mémoire de code 31.
Comme représenté à la figure 18, les données à écrire dans la mémoire 1 sont appliquées en parallèle à une entrée de la mémoire 1 et à l'entrée d'un premier circuit de génération de code 32, dont la sortie est connectée à l'entrée de la mémoire de code 31. La sortie de la mémoire 1 est connectée, d'une part, directement aux blocs du système disposés en aval de manière à leur fournir les « données lues » et, d'autre part, à l'entrée d'un second circuit de génération de code 33. La sortie du second circuit de génération de code 33, fournissant un
« code généré » en phase de lecture de la mémoire, est connectée à une première entrée d'un circuit de génération de syndrome 34 et à une première entrée d'un circuit de détection d'erreur 35 fournissant un signal de détection d'erreur au système. La sortie de la mémoire de code 31 , fournissant un « code lu », est connectée à une seconde entrée du circuit de génération de syndrome 34 et à une seconde entrée du circuit de détection d'erreur 35. La sortie du circuit 34 de génération de syndrome est connectée à une entrée d'un circuit logique 36, de type OU exclusif, comportant une autre entrée connectée directement à la sortie de la mémoire 1 et fournissant en sortie au système les
« données corrigées ». Les circuits de génération de code 33, de génération de syndrome 34, et le circuit logique 36 composent le circuit de correction 6 (figures 4, 7, 9, 13, 15 et 16).
Dans le mode de réalisation représenté à la figure 18, un signal d'horloge H étant appliqué à une entrée d'horloge de la mémoire 1 , un signal d'horloge H+Dc, c'est-à-dire retardé de De par rapport au signal d'horloge H, est appliqué à une entrée d'horloge de la mémoire de code 31. On choisira Dc≥Dg+Dm-Dh, mais inférieur à Dg, afin de ne pas introduire, dans la voie empruntée par le code en écriture, de délai supérieur au délai additionnel de la voie empruntée par le code en lecture.
Ainsi, durant un cycle d'écriture, les données sont écrites immédiatement dans la mémoire 1 , à un instant tO. Les données sont maintenues par une bascule sur les entrées du premier circuit de génération de code 32. Lorsque le code est prêt, au plus tard à un instant tO+Dg, il est écrit dans la mémoire de code 31.
Pendant le cycle de lecture, les données lues à un instant t1 peuvent être envoyées directement aux blocs suivants du système, comme décrit plus haut, les étages avals étant décontaminés ultérieurement en cas de propagation d'une erreur. Les « donnée lues » sont simultanément appliquées à l'entrée du second circuit de génération de code 33, qui génère le « code généré » à un instant t1 +Dg. Le « code lu » est prêt au plus tard lorsque le « code généré » est prêt et les deux codes peuvent être utilisés immédiatement par les circuits de détection d'erreur 35 et de génération de syndrome 34, de manière à détecter une erreur éventuelle et /ou à générer un syndrome.
Les instants tO et t1 peuvent être identiques aux instants tO et t1 d'écriture et de lecture d'une mémoire 1 n'utilisant pas de codes de contrôle d'erreur. Le mode de réalisation de la figure 18 n'ajoute en fait, pour la majorité des cycles d'horloge, aucun délai dû à la génération de codes, à la détection d'une erreur et à la correction d'une erreur, les données étant écrites sans délai dans la mémoire 1 et les données lues dans la mémoire 1 étant fournies immédiatement au reste du système. Des cycles d'attente ne sont introduits dans le système qu'après les rares cycles durant lesquels des données erronées sont lues dans la mémoire 1.
Les opérations d'écriture et de lecture de la mémoire de code 31 sont réalisées avec un même délai De par rapport aux opérations d'écriture et de lecture de la mémoire 1 de données. Les cycles d'écriture et de lecture de la mémoire de code 31 ont ainsi la même durée que les cycles d'écriture et de lecture de la mémoire 1 de données. Dans le mode de réalisation particulier de la figure 18, les mémoires 1 et 31 sont des mémoires synchrones, contrôlées par des signaux d'horloge décalés de De, ce qui permet de dériver les signaux d'horloge de la mémoire de code 31 des signaux d'horloge H de la mémoire 1.
Dans une variante de réalisation, il est possible, pour simplifier le circuit, d'utiliser les mêmes signaux d'horloge H pour les mémoires 1 et 31 et de réaliser les opérations d'écriture et de lecture de la mémoire de code 31 un cycle après les opérations correspondantes de la mémoire 1 de données.
Cependant, la mémoire de code 31 est plus petite que la mémoire 1 de données, de sorte que la mémoire de code 31 peut être plus rapide que la mémoire 1 de données. Il n'est donc pas indispensable d'introduire un délai égal à t1-t0 entre les opérations de lecture et d'écriture de la mémoire de code. Ainsi, l'opération d'écriture dans la mémoire de code 31 est effectuée à l'instant tO+Dc, c'est-à-dire retardée de De par rapport à l'opération d'écriture dans la mémoire 1 de données. Par contre, la mémoire de code étant plus rapide, l'opération de lecture de la mémoire de code 31 n'a pas besoin d'être effectuée à l'instant t1+Dc, c'est-à-dire qu'elle n'a pas à être retardée de De par rapport à l'opération de lecture de la mémoire 1 de données. À titre d'exemple, si la mémoire de code 31 est suffisamment plus rapide que la mémoire de données, l'opération de lecture de la mémoire de code peut être effectuée en même temps que l'opération de lecture de la mémoire de données
Dans la description ci-dessus, il a été supposé que De était inférieur à une période d'horloge Dh. Cependant, dans certains cas, lorsque le système est très rapide et/ou les codes très complexes, De peut être supérieur à Dh. Pour éviter d'avoir à réduire la vitesse du système, on peut alors utiliser des circuits de génération de code de type pipeline. Dans ce cas, la génération de code prend un nombre r de cycles d'horloge supérieur à 1 , que ce soit en écriture ou en lecture. Dans ce cas, chaque opération de la mémoire de code est effectuée r cycles après l'opération correspondante de la mémoire de données. Cette solution permet également d'effectuer sans délai les opérations de la mémoire de données. Si ce principe est utilisé pour le code de détection d'erreur, un plus grand nombre de cycles d'horloge est nécessaire pour détecter une erreur après lecture d'une donnée erronée. Ceci augmente le nombre k de cycles de propagation de l'erreur et, en conséquence, le coût du circuit de décontamination. Si ce principe est utilisé pour le code de correction d'erreur, le circuit de décontamination ne pourra être activé qu'après un nombre plus élevé de cycles d'horloge, nécessaires à la correction des données lues. Dans ce qui précède, nous avons considéré que toutes les bascules auxquelles sont associés des registres tampon reçoivent des entrées à chaque cycle d'horloge. Néanmoins, dans un ensemble certaines bascules peuvent être contrôlées par un signal (« hait ») qui bloque la bascule quand il est actif. La bascule maintient donc son état du cycle précédent quand le signal « hait » est actif. Dans d'autres cas, l'horloge d'une bascule est dérivée de l'horloge du système par le biais d'un circuit logique, par exemple d'une porte OU, qui reçoit en entrée le signal de l'horloge du système et un ou plusieurs signaux logiques et génère en sortie l'horloge (« gated dock ») de la bascule. Ainsi, ces signaux logiques conditionnent l'horloge de la bascule qui sera bloquée pendant les cycles où ces signaux logiques prennent certaines valeurs. Le résultat est que la bascule maintient son état du cycle précédent à chaque cycle pendant lequel son horloge est bloquée.
Lors de la construction des circuits de décontamination, il faut tenir compte des différents types de signaux de contrôle de bascule, du type « hait » au autre, ou d'une horloge conditionnée par d'autres signaux logiques (c'est à dire d'une horloge du type « gated dock »). Pour ce faire nous allons procéder de la façon suivante :
En général, les signaux logiques qui contrôlent une bascule ou qui conditionnent un signal d'horloge sont générés par certains blocs du système. Alors, dans l'architecture initiale du système, c'est-à-dire avant l'introduction des circuits de décontamination, les signaux de contrôle d'une bascule et les signaux qui conditionnent son horloge sont considérés comme entrées de la bascule, de la même façon que les signaux qui portent les données en écriture dans la bascule. Ainsi, pour les bascules qui ne sont pas bloquées pendant la décontamination, la construction des circuits de décontamination tiendra compte de ces signaux et rajoutera les circuits nécessaires (comme décrit précédemment) pour générer sur ces signaux pendant la phase de décontamination les mêmes valeurs qu'en fonctionnement normal.
En ce qui concerne les registres tampon (ou FIFO), dans la description ci- dessus, ils sont activés en écriture à chaque cycle du fonctionnement normal et en lecture pendant des cycles prédéterminés de la phase de décontamination. Mais ceci ne prend pas en compte le cas des signaux de contrôle de la bascule associée au FIFO ni le cas des signaux de conditionnement de l'horloge de cette bascule. Ces signaux peuvent bloquer la bascule pendant certains cycles de la phase de fonctionnement et il faut que le FIFO génère sur sa sortie pendant la décontamination les mêmes valeurs que génère sa bascule associée en fonctionnement normal. Pour ce faire, on peut utiliser une des techniques suivantes :
On ignore les signaux de conditionnement de l'horloge de la bascule associée et on envoie sur le FIFO l'horloge du système (c'est à dire sans conditionnement) pendant la phase de fonctionnement et pendant la phase de décontamination. On ignore aussi les signaux de contrôle de la bascule associée, c'est-à-dire on n'utilise pas ces signaux dans le contrôle du FIFO, ni en fonctionnement normal ni pendant la décontamination. Ainsi, le FIFO est toujours en écriture pendant le fonctionnement normal et en lecture pendant les cycles prédéterminés de la phase de décontamination, comme décrit précédemment. Ainsi, si la bascule est bloquée pendant un cycle du fonctionnement normal (par le signal « hait » ou par son horloge) elle conserve sa valeur précédente. Cette valeur est fournie au FIFO pendant les deux cycles et est stockée dans des étages consécutifs du FIFO, qui va la fournir sur sa sortie pendant des cycles consécutifs de la décontamination. Ainsi le FIFO fournira pendant la décontamination les mêmes valeurs que celles qui sont fournies par la bascule associée pendant le fonctionnement normal. Pendant le fonctionnement normal, on utilise le signal de contrôle du type « hait » de la bascule pour bloquer le FIFO en même temps que la bascule associée, et on utilise pour le FIFO la même horloge que pour la bascule associée (c'est-à-dire du type « hait » le cas échéant). Pour le fonctionnement pendant la décontamination, on va considérer deux cas possibles. Dans le cas où le signal « hait » de contrôle de la bascule associée et les signaux de conditionnement de l'horloge de cette bascule prennent les mêmes valeurs pendant la décontamination qu'en fonctionnement normal, on va aussi utiliser pendant la décontamination le même signal « hait » et le même signal d'horloge pour le FIFO. Dans le cas où le signal « hait » de contrôle de la bascule associée ou les signaux de conditionnement de l'horloge de cette bascule ne prennent pas les mêmes valeurs pendant la décontamination et en fonctionnement normal (ce qui peut arriver si ces signaux ne sont pas générés dans le système ou dans le cas où les bascules des étages qui génèrent ces signaux ne sont pas actifs pendant la décontamination), on va alors utiliser un
FIFO pour sauvegarder ces signaux pendant le fonctionnement normal et les fournir au système pendant la phase de décontamination, à l'aide d'un multiplexeur, comme décrit précédemment pour d'autres signaux du système. Ce FIFO aura le même nombre d'étages et sera actif pendant les mêmes cycles du fonctionnement normal et de la décontamination que le FIFO à qui sont destinés le signal « hait » et les signaux de conditionnement de l'horloge.

Claims

Revendications
1. Ensemble de circuits électroniques comportant au moins une mémoire (1 ) et des moyens (2, 5, 6) de détection et de correction d'erreur dans les données fournies par la mémoire pendant une opération de lecture, la sortie de la mémoire (1) étant connectée en parallèle à une entrée d'un circuit de détection d'erreur (5), à une entrée d'un circuit de correction d'erreur (6) et à l'entrée d'un premier étage, le circuit de détection d'erreur (5) contrôlant la transmission des données corrigées au premier étage après détection d'une erreur, ensemble caractérisé en ce que, la mémoire (1 ) étant connectée en série avec une pluralité d'étages successifs, la sortie du circuit de détection (5) contrôle (F7, F8, F9) des moyens de décontamination des étages disposés en aval susceptibles d'être contaminés par une erreur avant sa détection.
2. Ensemble selon la revendication 1 , caractérisé en ce que les moyens de décontamination comportent des moyens pour permettre, lorsqu'une erreur a été détectée, de maintenir l'ensemble en l'état pendant que la correction des données est effectuée par le circuit de correction (6) et des moyens pour transmettre ensuite les données corrigées au premier étage tout en maintenant en l'état les circuits non susceptibles d'avoir été contaminés.
3. Ensemble selon l'une des revendications 1 et 2, caractérisé en ce que, chaque étage comportant au moins une bascule (4a, 4b...), la sortie de la mémoire (1) est connectée à l'entrée du premier étage par l'intermédiaire d'un premier circuit de multiplexage (7, 11), ayant une sortie connectée à l'entrée du premier étage, une première entrée connectée à la sortie de la mémoire (1) et une seconde entrée connectée à la sortie du circuit de correction (6), la sortie du circuit de détection (5) étant connectée à une entrée de contrôle du premier circuit de multiplexage (7, 11) et à une entrée de maintien des bascules (4b...) des étages ultérieurs, de manière à ce que la détection d'une erreur par le circuit de détection (5) provoque simultanément la transmission à la bascule (4a) du premier étage, par le premier circuit de multiplexage (7, 11 ), des données corrigées par le circuit de correction (6) et le maintien en l'état des bascules (4b...) des étages ultérieurs.
4. Ensemble selon la revendication 3, caractérisé en ce que la sortie du premier circuit de multiplexage (7) est connectée à une première entrée d'un premier circuit logique (3a), comportant une seconde entrée destinée à recevoir des données additionnelles (D) et une sortie connectée à l'entrée de la bascule (4a) du premier étage, les données de sortie du premier circuit logique (3a) transmises à la bascule (4a) du premier étage étant simultanément fonction des données appliquées sur ses première et seconde entrées, un second circuit de multiplexage (8) comportant une première entrée destinée à recevoir les données additionnelles (D), une seconde entrée connectée à la première entrée par l'intermédiaire d'une bascule additionnelle (9), une sortie connectée à la seconde entrée du premier circuit logique (3a) et une entrée de contrôle connectée à la sortie du circuit de détection (5), de manière à ce que, les données appliquées sur la première entrée du second circuit de multiplexage (8) étant normalement transmises à la seconde entrée du premier circuit logique (3a), la détection d'une erreur par le circuit de détection (5) provoque la transmission à la seconde entrée du premier circuit logique (3a) des données appliquées sur la seconde entrée du second circuit de multiplexage (8).
5. Ensemble selon la revendication 4, caractérisé en ce que le premier circuit de multiplexage (11 ) comporte au moins une troisième entrée destinée à recevoir des données additionnelles (D), des première, seconde et troisième entrées de contrôle destinées à recevoir respectivement des premier, second et troisième signaux de contrôle, le premier circuit de multiplexage (1 1 ) transmettant les données additionnelles (D) appliquées sur sa troisième entrée lorsque le premier signal de contrôle (C) a une première valeur prédéterminée, les données appliquées sur sa première entrée lorsque, le premier signal de contrôle (C) ayant une seconde valeur prédéterminée, le second signal de contrôle, fourni par le circuit de détection d'erreur (5), est représentatif de données correctes, et les données corrigées, appliquées à sa seconde entrée, lorsque le troisième signal de contrôle a une première valeur prédéterminée, l'entrée de maintien des bascules (4b...) des étages ultérieurs et la troisième entrée de contrôle du premier circuit de multiplexage (11) étant connectées à la sortie du circuit de détection (5) par l'intermédiaire d'une porte logique (12) ayant une autre entrée recevant le premier signal de contrôle (C), de manière à ne provoquer la transmission des données corrigées et le maintien en l'état des bascules (4b...) des étages ultérieurs que lorsqu'une erreur a été détectée par le circuit de détection (5) pendant la transmission par le premier circuit de multiplexage (11) des données en provenance de la mémoire.
6. Ensemble selon la revendication 5, caractérisé en ce que la troisième entrée de contrôle du premier circuit de multiplexage (11) est connectée à la sortie de la porte logique (12) par l'intermédiaire d'une bascule supplémentaire (13), une autre porte logique (27) comportant une entrée connectée à la sorite de la porte logique (12), une entrée connectée à la sortie de la bascule complémentaire (13) et une sortie connectée à l'entrée de maintien des bascules des étages ultérieurs.
7. Ensemble selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comporte des moyens pour remplacer, dans la mémoire (1), les données erronées par des données corrigées fournies par les moyens de correction d'erreur (6) lorsqu'une erreur a été détectée.
8. Ensemble selon l'une des revendications 1 et 2, caractérisé en ce que, l'ensemble de circuits comportant des premières bascules (Ba ; 4e, 4f, 4o, 4s, 4g, 4m), susceptibles d'être affectées par l'erreur, et des secondes bascules (Bs ; 4h, 41, 4n), non susceptibles d'être affectées par l'erreur et fournissant des données qui peuvent être utilisées par une première bascule située en aval, les moyens de décontamination comportent, pour chaque seconde bascule, un multiplexeur (16, 20, 23) comportant une entrée connectée directement à la sortie de la seconde bascule associée et une entrée connectée à ladite sortie par l'intermédiaire d'un registre tampon (17, 21 , 22), du type premier entré, premier sorti.
9. Ensemble selon la revendication 8, caractérisé en ce que, l'ensemble de circuits comportant des troisièmes bascules (4p) appartenant à un ensemble source atteignable le plus éloigné (AS), les moyens de décontamination comportent, pour chaque troisième bascule, un multiplexeur (18) comportant une entrée connectée directement à la sortie de la troisième bascule associée et une entrée connectée à ladite sortie par l'intermédiaire d'un registre tampon (19), du type premier entré, premier sorti.
10. Ensemble selon l'une quelconque des revendications 1 à 9, caractérisé en ce que les moyens de décontamination comportent, associé à la mémoire 1 , un multiplexeur (14) comportant une entrée connectée directement à la sortie de la mémoire, une entrée connectée à ladite sortie par l'intermédiaire d'un registre tampon (15), du type premier entré, premier sorti et une entrée connectée à la sortie du circuit de correction (6).
11. Ensemble selon l'une quelconque des revendications 1 à 10, caractérisé en ce qu'il comporte un premier circuit de génération de code (32) ayant une entrée connectée à l'entrée de la mémoire (1 ) et une sortie connectée à l'entrée d'une mémoire de code (31) fournissant un premier code, les moyens de détection et de correction d'erreur comportant un second circuit de génération de code (33), ayant une entrée connectée à la sortie de la mémoire (1 ) et fournissant un second code, et des moyens (34, 35) de comparaison des premier et second codes fournis par la mémoire de code (31) et par le second circuit de génération de code (33).
12. Ensemble selon la revendication 11 , caractérisé en ce que les opérations de lecture et d'écriture de la mémoire de code (31) sont retardées par rapport aux opérations correspondantes de la mémoire (1).
PCT/FR2002/002785 2001-08-10 2002-08-02 Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur WO2003014931A2 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP02794620A EP1428121A2 (fr) 2001-08-10 2002-08-02 Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur
US10/485,662 US7493549B2 (en) 2001-08-10 2002-08-02 Electronic circuits assembly comprising at least one memory with error correcting means
AU2002355473A AU2002355473A1 (en) 2001-08-10 2002-08-02 Electronic circuit assembly comprising at least a storage unit with error correcting means

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110735A FR2828566B1 (fr) 2001-08-10 2001-08-10 Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur
FR01/10735 2001-08-10

Publications (2)

Publication Number Publication Date
WO2003014931A2 true WO2003014931A2 (fr) 2003-02-20
WO2003014931A3 WO2003014931A3 (fr) 2004-04-08

Family

ID=8866476

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2002/002785 WO2003014931A2 (fr) 2001-08-10 2002-08-02 Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d'erreur

Country Status (5)

Country Link
US (1) US7493549B2 (fr)
EP (1) EP1428121A2 (fr)
AU (1) AU2002355473A1 (fr)
FR (1) FR2828566B1 (fr)
WO (1) WO2003014931A2 (fr)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW591393B (en) * 2003-01-22 2004-06-11 Fujitsu Ltd Memory controller
US7426672B2 (en) * 2005-04-28 2008-09-16 International Business Machines Corporation Method for implementing processor bus speculative data completion
JP4793741B2 (ja) * 2009-07-24 2011-10-12 エヌイーシーコンピュータテクノ株式会社 誤り訂正回路、誤り訂正方法
US9448877B2 (en) * 2013-03-15 2016-09-20 Cisco Technology, Inc. Methods and apparatus for error detection and correction in data storage systems using hash value comparisons
US20170184664A1 (en) * 2015-12-28 2017-06-29 Michel Nicolaidis Highly efficient double-sampling architectures
US11953988B2 (en) * 2019-05-23 2024-04-09 Micron Technology, Inc. Error correction memory device with fast data access
US11307929B2 (en) 2019-06-17 2022-04-19 Micron Technology, Inc. Memory device with status feedback for error correction
US11694761B2 (en) 2021-09-17 2023-07-04 Nxp B.V. Method to increase the usable word width of a memory providing an error correction scheme

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2064840A (en) * 1979-12-03 1981-06-17 Honeywell Inf Systems Data processing system with edac (error detection and correction)
EP0037705A1 (fr) * 1980-04-01 1981-10-14 Honeywell Inc. Système de mémoire à correction d'erreurs
EP1054327A1 (fr) * 1999-05-17 2000-11-22 Alcatel Dispositif de détection d'erreur dans une mémoire associée à un processeur

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1509193A (en) * 1974-04-17 1978-05-04 Nat Res Dev Computer systems
US4412314A (en) * 1980-06-02 1983-10-25 Mostek Corporation Semiconductor memory for use in conjunction with error detection and correction circuit
US4562538A (en) * 1983-05-16 1985-12-31 At&T Bell Laboratories Microprocessor having decision pointer to process restore position
US4866717A (en) * 1986-07-29 1989-09-12 Matsushita Electric Industrial Co., Ltd. Code error detecting and correcting apparatus
JPS63156236A (ja) * 1986-12-19 1988-06-29 Toshiba Corp レジスタ装置
US5119483A (en) * 1988-07-20 1992-06-02 Digital Equipment Corporation Application of state silos for recovery from memory management exceptions
EP1359485B1 (fr) * 2002-05-03 2015-04-29 Infineon Technologies AG Système de commande et surveillance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2064840A (en) * 1979-12-03 1981-06-17 Honeywell Inf Systems Data processing system with edac (error detection and correction)
EP0037705A1 (fr) * 1980-04-01 1981-10-14 Honeywell Inc. Système de mémoire à correction d'erreurs
EP1054327A1 (fr) * 1999-05-17 2000-11-22 Alcatel Dispositif de détection d'erreur dans une mémoire associée à un processeur

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"MEMORY ACCESS WITH ERROR RECOVERY" IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 30, no. 10, 1 mars 1988 (1988-03-01), pages 133-135, XP000715630 ISSN: 0018-8689 *
"MEMORY CARD DATA FASTPATH" IBM TECHNICAL DISCLOSURE BULLETIN, IBM CORP. NEW YORK, US, vol. 37, no. 2A, 1 février 1994 (1994-02-01), pages 637-638, XP000433476 ISSN: 0018-8689 *

Also Published As

Publication number Publication date
EP1428121A2 (fr) 2004-06-16
US20040193967A1 (en) 2004-09-30
US7493549B2 (en) 2009-02-17
WO2003014931A3 (fr) 2004-04-08
AU2002355473A1 (en) 2003-02-24
FR2828566A1 (fr) 2003-02-14
FR2828566B1 (fr) 2004-06-18

Similar Documents

Publication Publication Date Title
US20070162798A1 (en) Single event upset error detection within an integrated circuit
FR2964482A1 (fr) Procede de test en ligne des etages de pipeline temporairement non utilises et son dispositif associe
EP2131495A1 (fr) Circuit asynchrone insensible aux délais avec circuit d&#39;insertion de délai
FR2487548A1 (fr) Systeme de memoire avec dispositif de diagnostic
EP1428121A2 (fr) Ensemble de circuits electroniques comportant au moins une memoire avec des moyens de correction d&#39;erreur
FR2831971A1 (fr) Procede de memorisation de donnees avec correction d&#39;erreur
EP1417582B1 (fr) Ensemble de circuits electroniques comportant des moyens de decontamination de parties contaminees par des erreurs
EP3392773B1 (fr) Circuit integre numerique protege contre les erreurs transitoires
EP0012880B1 (fr) Procédé de décodage de données binaires codées en phase, modulation de fréquence et modulation de fréquence modifiée
EP3161691A1 (fr) Procédé de fabrication automatisée d&#39;un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, programme d&#39;ordinateur et circuit électronique associés
EP0344052B1 (fr) Mémoire modulaire
EP0359607B1 (fr) Unité centrale pour système de traitement de l&#39;information
EP0379436A1 (fr) Dispositif et procédé d&#39;arbitrage des requêtes et de résolution des conflits liés à l&#39;accès aux mémoires à bancs indépendants pour les machines informatiques
EP0715430B1 (fr) Système de transmission au moyen d&#39;informations protégées par un code de gestion d&#39;erreurs
US9715437B2 (en) Pulsed-latch based razor with 1-cycle error recovery scheme
FR3046861A1 (fr) Procede de synchronisation, dispositif et vehicule associes
EP4137945A1 (fr) Méthode de protection d&#39;un circuit intégré numérique reconfigurable contre les erreurs réversibles
TW200813751A (en) Architecture for finite state machine decomposition
FR3048832A1 (fr)
FR3134462A1 (fr) Procédé de transfert de données entre un premier domaine numérique et un deuxième domaine numérique, et système sur puce correspondant.
EP1451688A2 (fr) Architecture de circuits protegee contre des perturbations
JPH04325994A (ja) メモリ出力制御回路
WO2002035354A1 (fr) Dispositif et procede de detection et correction d&#39;erreurs memoire dans un systeme electronique
FR2920894A1 (fr) Architecture de registre memoire a detection d&#39;erreur integre et procede de detection d&#39;erreur associe
FR2917863A1 (fr) Bus avec circuit de correction d&#39;erreur

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BY BZ CA CH CN CO CR CU CZ DE DM DZ EC EE ES FI GB GD GE GH HR HU ID IL IN IS JP KE KG KP KR LC LK LR LS LT LU LV MA MD MG MN MW MX MZ NO NZ OM PH PL PT RU SD SE SG SI SK SL TJ TM TN TR TZ UA UG US UZ VN YU ZA ZM

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ UG ZM ZW AM AZ BY KG KZ RU TJ TM AT BE BG CH CY CZ DK EE ES FI FR GB GR IE IT LU MC PT SE SK TR BF BJ CF CG CI GA GN GQ GW ML MR NE SN TD TG

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 10485662

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2002794620

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2002794620

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP