WO2013186377A1 - Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé - Google Patents

Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé Download PDF

Info

Publication number
WO2013186377A1
WO2013186377A1 PCT/EP2013/062409 EP2013062409W WO2013186377A1 WO 2013186377 A1 WO2013186377 A1 WO 2013186377A1 EP 2013062409 W EP2013062409 W EP 2013062409W WO 2013186377 A1 WO2013186377 A1 WO 2013186377A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
address
memory
addr
function
Prior art date
Application number
PCT/EP2013/062409
Other languages
English (en)
Inventor
Olivier Debicki
Matthieu LEMERRE
Original Assignee
Commissariat A L'energie Atomique Et Aux Energies Alternatives
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Commissariat A L'energie Atomique Et Aux Energies Alternatives filed Critical Commissariat A L'energie Atomique Et Aux Energies Alternatives
Publication of WO2013186377A1 publication Critical patent/WO2013186377A1/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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Definitions

  • the present invention relates to a device and method for recording data and detecting memory access errors. It applies, for example, to volatile and non-volatile memories present in high-reliability computer systems.
  • Modern processors are typically associated with different types of high-density memory requiring reliable access to ensure satisfactory execution of software applications.
  • an instruction for recording data in a computer memory and the subsequent execution by the same system of an access instruction in reading of this data, errors can occur so that the data read does not correspond to the data that was to be recorded. This type of error can lead to malfunctions or system crashes.
  • the memory access systems are articulated around a data bus and an address bus.
  • DATA data is to be written to an ADDR address
  • the ADDR value is transmitted on the address bus and the DATA value is transmitted on the data bus.
  • the values are protected by correcting codes.
  • the correcting codes associated with the address bus are generated by the bus master for example the processor and validated as input memory.
  • the correcting codes associated with the data are generated by the master and validated by the write memory; they are generated by the memory and validated by the master in reading. If the logical elements participating in the address decoding are faulty, then the address to which the DATA data will be written will not be the address ADDR, but an erroneous address. This type of error can not be detected by the aforementioned techniques, the latter only trying to control the integrity of the data itself, without checking that this data has been stored in the expected location in memory.
  • An object of the invention is to provide, with a minimal hardware overhead, means to ensure that a piece of data read in memory is the expected data.
  • the subject of the invention is a method of recording a piece of computer data at a specified address of a memory, the method being characterized in that it comprises a step of writing in memory of a final data item calculated by a function of said datum to be recorded and of the address at which the datum is to be recorded, said function being chosen for said final data item to have a storage dimension smaller than the sum of the respective storage dimensions of the data item to be recorded and the value of the address.
  • a request to write data to a specified address is initiated by a processor, instead of saving that data, it is a transformed data item that is written to the specified address, this transformed datum being calculated in particular according to the recording address of this datum.
  • the data to be recorded may be redundant data.
  • the recording method according to the invention can in particular be applied to ROM (Read Only Memory) or RAM (Random Access Memory) type memories of computer systems and apparatus to allow control of the address decoding with limited additional memory cost.
  • the calculation function of the final data item is chosen to be a bijection parameterized by the recording address of the data, said bijection transforming data to be recorded in data. final, the application on the final data reciprocal bijection set by the same address generating data identical to the data to be recorded.
  • the bijection is chosen so that there exists a non-zero probability that, for any final data, the application of the reciprocal bijection on this final data item when it is parameterized by an address different from the address setting the bijection produces a datum different from the input data of the bijection to produce the final data.
  • the calculation function of the final data may be chosen to produce a final data item having a dimension equal to that of the data item to be recorded. This implementation avoids modifying the memory map of an already existing architecture. It does not induce any additional memory cost compared to this architecture.
  • the function of calculating the final data is an "exclusive or" bit bit between the data to be recorded and the value of the address to which the data is to be stored. This implementation allows efficient and economical circuit surface coding.
  • the final data is calculated by applying a bitwise "exclusive" function between the data item to be recorded and a concatenation of several values each calculated as a function of the value of the address to which the data is to be stored.
  • the concatenated values calculated as a function of the address are present a number of times greater than or equal to d mir , -1, d mir , being the minimum Hamming distance to produce an unrecoverable error.
  • the recording method according to the invention may comprise a preliminary step of calculating the data to be recorded by a reversible transformation of an initial datum whose storage dimension is smaller than that of the datum to be recorded, the datum to be recorded. comprising redundancy bits of the initial data.
  • This embodiment introduces redundancy bits to control the integrity of the data stored in memory, and where appropriate, to correct errors due to corruption of the recorded data.
  • the redundancy bits can be created by applying an error detection code on the initial data.
  • the error detection code may be a cyclic redundancy code, this type of code being sometimes designated by the acronym CRC, for "Cyclic Redundancy Code”.
  • the calculation function of the final data item is a bijection parameterized by the address of the data to be written, in which said bijection is chosen so that there exists a probability nonzero that the application on the final data of the reciprocal bijection parameterized by a different address produces a data item from which it is impossible to extract the initial data with the chosen code.
  • said bijection is chosen so that there exists a non-zero probability that the application on the final data of the reciprocal bijection parameterized by a different address produces a data item from which it is difficult to extract the initial data.
  • the invention also relates to a method of reading a data stored in memory with a recording method as described above, the detection method comprising a step of reading said data at a specified address of a block memory, the reading method being characterized in that it applies on the data read a decoding function parameterized by the read address, said decoding function being chosen relative to the calculation function of the final data parameterized by a first address and executed during the recording of the data in memory so as to produce, when the read address is identical to the first address, extracted data identical to the data record to be inputted to said calculation function of the final data, the read data having a storage dimension less than the sum of the storage dimensions of the address and the extracted data.
  • the errors can for example be detected by error detection code or by analysis of the data extracted by the decoding function.
  • the decoding function is the reciprocal bijection of the calculation function of the final data executed when the data was saved in memory.
  • the invention also relates to a method for detecting a read access error to a memory in which at least one piece of data has been recorded with a recording method as described above, the method comprising the steps of reading method as described above, wherein is applied to the data extracted by the decoding function an error detection function capable of determining whether the data extracted has expected predefined characteristics, the method emitting an error signal when the extracted data does not have these characteristics.
  • the error may be due to a corruption of the data in memory or an address decoding problem.
  • the expected characteristics may be, for example, the possibility of decoding the data using a redundancy code, or the fact that the data must be within a range of values. This particular method may, for example, be implemented when no error detection code is used.
  • the method comprises the execution of a redundancy decoding able to recover the initial data when the read address of the data item is identical to the said first address, the method comprising the transmission of an error signal when the error detection function is not adapted to recover said initial data from the extracted data.
  • the invention also relates to an error detection device in the reading of a data item stored in a memory block, characterized in that the device comprises a decoding module by the address able to receive the data read in memory and combining this read data with the read address of this data to produce extracted data to be tested, the device comprising means for testing this extracted data capable of raising an error if the address specified for the reading is different from the address specified when writing the read data, said read data being produced by a function of the value of the address specified for its writing in memory, said read data having a storage dimension smaller than the sum of the dimensions storage of the address and the extracted data.
  • the memory is accessible in writing, the device also comprising an encoder by the address able to receive data to be recorded and to combine it with a function of the write address to produce a final data to be written to memory, said final data having a storage dimension less than the sum of the storage dimensions of the write address and the data to be recorded.
  • the invention also relates to a memory module comprising a memory and an error detection device as described above.
  • FIG. 2 a block diagram illustrating the steps of a recording method according to the invention
  • FIG. 3 a block diagram illustrating the steps of an error detection method according to the invention.
  • FIG. 4 a block diagram illustrating the steps of a recording method according to the invention when an address decoding error is committed
  • FIG. 5 a block diagram illustrating the steps of an error detection method according to the invention after an address decoding error has been committed when writing a data
  • FIG. 6 a diagram illustrating a second embodiment of the error detection device according to the invention.
  • FIG. 7 a diagram illustrating an exemplary implementation of the address coding step executed by a method according to the invention.
  • FIG. 1 illustrates a first embodiment of the error detection device according to the invention.
  • the device 100 comprises a memory accessible in writing and in reading. This memory is for example a volatile memory type RAM or other.
  • the memory comprises a memory plane 101, a module 103 for selecting a memory word connected to an address bus 1 1 1 - module sometimes called "wordline decode" - and a buffer module 105 to accommodate the data read or the data to write in memory, this module 105 being fed indirectly by a data bus 1 13.
  • the device 100 also comprises a redundancy coder 107 fed by the data bus 1 13 and producing, from a word of n input bits, data of n + k bits, where n and k are integers greater than or equal to to 1.
  • the data produced by the redundancy coder 107 is transmitted to an encoder by the address 121 fed in parallel by the address bus 11 1.
  • the coder by the address 121 outputs data transmitted to the buffer module 105 for writing to the memory cell selected by the selection module 103.
  • the device 100 also includes a decoder by the address 123 used during the read operations in memory, and a decoder 109 error detector powered by the decoder address 123.
  • the device is capable of implementing write and read operations in the memory. These operations are for example the consequence of instructions produced by one or more calculation units such as processors.
  • the selection module 103 selects the word of the memory plane 101 corresponding to the address ADDR supplied on the address bus 1 1 1 .
  • the data DATA of n bits, supplied on the data bus 1 13 is transformed by the redundancy coder 107.
  • This encoder 107 for example a cyclic redundancy coder, produces a data item comprising bits of redundancy with respect to the DATA initial data to allow the execution of a data integrity check later.
  • the encoder 107 produces a data DW1 of n + k bits at the output, thus with k bits of redundancy.
  • the redundant data DW1 of n + k bits is received by the coder by the address 121 which is configured to combine this data item DW1 with the address ADDR specified by the address bus 1 1 1.
  • the function f is preferably chosen so that the reciprocal function of f when its address parameter is at a first value is not the reciprocal function of f when its address parameter is at a value different from the first.
  • ADDR1 and ADDR2 if ADDR1 ⁇ ADDR2, then f 1 AD DRi (fADDR2 (DW1)) ⁇ DW1.
  • the size of the final data DW2 produced by the coder by the address 1 21 is less than the sum of the respective dimensions of the value of the address and the redundant data. For example, if the address ADDR is coded on m bits and the redundant data DW1 is coded on n + k bits, then the data DW2 is coded on less than n + k + m bits. In the example, the final data item DW2 is coded on the same number of bits as the redundant data item DW1.
  • the function f may be the "or exclusive" bitwise function, the ÎADDR (DW1) function being a function operating "or exclusive" between DW1 and ADDR.
  • the ÎADDR (DW1) function being a function operating "or exclusive" between DW1 and ADDR.
  • the n + k first bits of the address value are used for the application of the function "or exclusive" between these n + k bits and the n + k bits of the data.
  • the value of the address is expressed on a number m of bits less than n + k, then these m bits may for example be completed by a concatenation of n + k-m bits chosen in the address value.
  • the final data DW2 produced by the coder by the address 1 21 is then transmitted to the buffer module 105 to be written in the memory word selected by the selection module 1 03.
  • the device according to the invention records a final data DW2 transformed from the input data DATA, this final data DW2 being a function of the input data DATA, of the address ADDR at which the final data is written in memory, and of the redundancy code used to transform the data of Entrance.
  • a computing unit aims to obtain the value that is stored in memory at a specified address ADDR.
  • ADDR the address bus 1 1 1
  • the data DR1 read at this address ADDR is transmitted to the buffer module 105 which feeds the decoder by the address 123.
  • the read data DR1 is equal to the final data DW2 that was produced by the coder by the address 121. This data is, in the example, of dimension n + k bits.
  • the decoder by the address 123 applies on the read data DR1 the reciprocal function f "1 of the function f applied by the coder by the address 121
  • This reciprocal function f " 1 is parameterized by the address ADDR transmitted by the bus Addresses 1 1 1.
  • the device according to the invention makes it possible to generate a different data DR2 when the addresses used to write and read the data in memory are different, even if the final data DW2 written in memory and the read data DR1 are identical.
  • the decoder by the address 123 then transmits the test data DR2 that it has generated to the error detection decoder 109.
  • This decoder 109 is configured with a decoding function corresponding to the code implemented by the redundancy coder 107. so that the device regains the initial data received by the encoder 107 by executing the decoder 109 on a data output from the redundancy coder 107.
  • the decoder 109 can also be configured to correct any errors if the redundancy level is sufficient.
  • the data DATA_OUT produced by the decoder is a datum of n bits identical to the initial datum DATA received by the coder 107.
  • the device 100 reads the data DR1 at a second address ADDR2 identical to the first address ADDR1, that this read data DR1 is transmitted without alteration and decoded by the decoder by the address 123 using the address ADDR2 identical to the first address ADDR1, then the device finds without error a DATA_OUT output data identical to the data input DATA after decoding by the error detection decoder 109 of the test data DR2 produced by the decoder by the address 123.
  • the decoder 109 indicates an error, for example, by emitting an appropriate signal.
  • the device according to the invention thus makes it possible to detect address decoding errors, with a very small impact on the performance of the memory accesses and the mobilized circuit surface.
  • address decoding errors can not be distinguished, prima facie, from errors due to data corruption in memory.
  • the detection is, in the example, performed without using a number of bits greater than that used with a conventional device for detecting data corruption, which makes it possible to maintain an identical memory plane.
  • the final data DW2 produced by the coder by the address 121 is in fact of the same dimension (n + k bits) as the redundant data DW1 resulting from the redundancy coder 107.
  • the device according to the invention can be used. build on known architectures by implementing well-circumscribed modifications to existing circuit models.
  • Figure 2 illustrates the steps of a recording method according to the invention. This method corresponds for example to a data writing phase performed by the device of FIG. 1.
  • a first step 201 an initial dat DATA of n bits undergoes a redundancy coding to generate a redundant data DW1 of n + k bits.
  • a second step 202 the redundant data item DW1 of n + k bits is combined with the ADDR address to which this data is to be written, so as to produce a redundant data item DW2, also called "final data".
  • the function combining the redundant data item DW1 with the address ADDR is advantageously chosen so that the dimension of the final data item DW2 is the same as the dimension of the redundant data item DW1, in other words n + k bits.
  • the final data DW2 is written into memory at the specified address ADDR (if the address decoding performed by the selection module of a memory cell is working properly).
  • the first step 201 is not executed.
  • it is the initial data DATA that is combined with the address ADDR to generate the final data DW2.
  • FIG. 3 illustrates the steps of an error detection method according to the invention.
  • a data item DR1 of n + k bits is read in memory at a specified address ADDR.
  • this read data DR1 is combined with the read address ADDR in order to extract a data item to be tested DR2, the combination being operated by a reciprocal function of the function used by a recording method according to the invention.
  • the data to be tested DR2 in the example of a dimension of n + k bits, undergoes a decoding and an error detection according to the redundancy code used by a detection method. error according to the invention. If the data to be tested DR2 is not identical to the datum initially produced (see FIG. 2, reference DW1) by the redundancy coding during the recording operation according to the invention, then an error signal can to be generated.
  • the third step 303 does not include detection of error by redundancy.
  • the error detection is performed directly on the test data DR2.
  • This type of error detection can be implemented in conjunction with the implementation of the recording method described above in which the first redundancy coding step 201 is not executed.
  • the error detection can then be based on the intrinsic characteristics of the data to be tested DR2, if, for example, particular characteristics are expected for this datum. An error signal is generated if the data does not have these expected characteristics.
  • FIG. 4 illustrates the steps of a recording method according to the invention when an address decoding error is committed.
  • An instruction to write the DATA data to the address ADDR1 of the memory plane 101 is executed.
  • the first step 201 and the second step 202 are executed normally then the final data item DW2 of n + k bits from the second step 202 is written to a second address ADDR2 different from the address ADDR1 specified in the instruction.
  • This error may, for example, be due to a failure of the selection module of a memory cell (see Figure 1, reference 103).
  • the memory cell at the address initially specified ADDR1 remains unchanged, while the final data DW2 is erroneously written in the memory cell pointed by the second address ADDR2.
  • the final data DW2 partially comprises the entropy of the address ADDR1 initially specified in the write instruction of the data. There is therefore inconsistency between the address ADDR2 to which the data is recorded and the address used to generate the data DW2. This inconsistency can be exploited to detect an error.
  • FIG. 5 illustrates the steps of an error detection method according to the invention after an address decoding error has been committed during the writing of a data item.
  • the steps shown in FIG. 5 can for example be executed after the error illustrated in FIG. 4 has been committed.
  • An instruction for reading a data item at the address ADDR2 of the memory plane 101 is executed.
  • the memory cell at address ADDR2 contains a data item DW2 of n + k bits which has been produced according to the recording method according to the invention with an address ADDR1 different from the address ADDR2 specified for reading. For example, the DW2 data was written by mistake in the cell pointed to by the ADDR2 address instead of the cell pointed to by ADDR1 address.
  • This data DW2 is therefore read and undergoes a decoding exploiting the value of the address, according to the second step 302 of the error detection method according to the invention.
  • This decoding 302 is operated with, as parameter, the address ADDR2 used for reading the data DW2.
  • the decoding of the read data DW2 produces a test data DX of n + k bits equal to f 1 ADDR2 (fADDRi (DW1)).
  • the data to be tested DX is therefore different from DW1 and the third step 302 of decoding and error detection produces an ERR error signal.
  • FIG. 6 a diagram illustrating a second embodiment of the error detection device according to the invention. This second embodiment applies in particular to read-only memories, also called "Read Only Memory”.
  • the device 600 differs from that of Figure 1 in particular in that it implements a read-only memory. Unlike the device of Figure 1, it has no redundant coder or coder address, since writing is impossible.
  • the device 600 comprises a read-only memory plane 101 ', a buffer module 105' able to receive the data read in this memory plane 101 ', and similarly to the device of FIG. 1, a decoder with the address 123 powered. by the buffer module 105 'and an error detection decoder 109 supplied by the decoder by the address 123.
  • the data to be read are pointed in the memory plane 101' by means of a selection module 103.
  • the cells of the memory plane 101 ' are filled during memory manufacture or at their initial programming. Nevertheless, the values inserted therein are also derived from a method such as that employed in the first embodiment.
  • the initial data which must be reliably stored is encoded successively by redundancy coding and by address coding such as that implemented in the first embodiment.
  • the decoder by the address 123 and the decoder error detector 109 are configured according to the functions used in address coding and redundancy coding, so as to detect address coding errors.
  • the method according to the invention detects an error, this may be due to a failure in the selection of the cell in memory, as illustrated in FIGS. 4 and 5, but the error may have other causes, such as the corruption of the data in memory.
  • the error detection may be accompanied by an error correction performed by an output correction code.
  • the error correction is generally compromised because the Hamming distance between the expected data and the DX data produced by the decoding 302 is too high.
  • FIG. 7 illustrates an exemplary implementation of the address coding step executed by a method according to the invention.
  • the Hamming distance separating the expected data (according to the redundancy bits) from the data item to be tested is sufficiently small to allow the error correction code to be corrected. to make a correction on the data to be tested. This correction would lead to output erroneous corrected data since coming from an erroneous memory cell.
  • correction by error correction code remains useful and must therefore be retained.
  • the method according to the invention makes it possible to cause irreparable errors by error correction code when an address decoding failure occurs, allowing thus two distinct behaviors of the method depending on whether the error is due to a corruption of the data or a failure in the address decoding.
  • An example of a method used to cause these irreparable errors is, in the second step 202 of the recording method according to the invention (see FIG. 2), to combine with the redundant data item DW1 a pattern constructed from a concatenation.
  • the ADDR specified for writing the data In the example of FIG. 7, the address ADDR is duplicated and concatenated to construct a pattern 701 of dimension n + k bits.
  • the address is duplicated a number of times greater than or equal to d mir , -1, d mir , being the minimum Hamming distance to produce an unrecoverable error. Indeed, a bit error in the address produces a data with d mir , -1 bit inversions.
  • the pattern 701 is then combined with the redundant data DW1 to produce the final data DW2.
  • a hash of the address ADDR can be produced beforehand, this reduced size hash then being duplicated and concatenated to construct the pattern.
  • a 16-bit address may be transformed into a 4-bit hash, each bit of the hash being derived from a parity bit calculated for a 4-bit group of the address.
  • the correction code called “SECDEC” for “single error correction, double error detection”, and in particular the Hamming code (72, 64) can for example be used during the steps of redundancy coding and decoding and error detection.

Landscapes

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

Abstract

La présente invention concerne un procédé d'enregistrement de données, un procédé de détection des erreurs d'accès à une mémoire et son dispositif associé. Le procédé d'enregistrement d'une donnée informatique (DW1) à une adresse spécifiée (ADDR) d'une mémoire (101) comprend une étape d'écriture en mémoire d'une donnée finale (DW2) calculée par une fonction de ladite donnée à enregistrer (DW1) et de l'adresse (ADDR) à laquelle la donnée doit être enregistrée, ladite fonction étant choisie pour que ladite donnée finale (DW2) ait une dimension de stockage inférieure à la somme des dimensions de stockage respectives de la donnée à enregistrer (DW1) et de la valeur de l'adresse (ADDR). L'invention s'applique par exemple aux mémoires présentes dans des systèmes informatiques de haute fiabilité, que ces mémoires soient volatiles ou non.

Description

Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé
La présente invention concerne un dispositif et un procédé d'enregistrement de données et de détection des erreurs d'accès à une mémoire. Elle s'applique par exemple aux mémoires volatiles et non volatiles présentes dans des systèmes informatiques de haute fiabilité.
Les processeurs modernes sont généralement associés à différents types de mémoires à haute densité requérant des accès fiables afin de garantir une exécution satisfaisante des applications logicielles. Or, entre l'exécution, par un système informatique pourvu d'un processeur, d'une instruction d'enregistrement d'une donnée dans une mémoire informatique, et l'exécution ultérieure par ce même système d'une instruction d'accès en lecture de cette donnée, des erreurs peuvent se produire de sorte que la donnée lue ne corresponde pas à la donnée qui devait être enregistrée. Ce type d'erreur peut engendrer des dysfonctionnements, voire des plantages du système.
Afin de se prémunir contre ces aléas, il est connu de garantir l'intégrité d'une donnée enregistrée en la mémorisant avec des bits de redondance. A la lecture de la donnée, le code correcteur d'erreur qui avait été préalablement utilisé pour produire les bits de redondance lors de récriture est de nouveau appliqué en mode inversé afin de retrouver la donnée initiale. Cette technique permet ainsi de détecter une erreur, voire de la corriger lorsqu'une donnée en mémoire a été corrompue. Toutefois, elle s'avère insuffisante lorsqu'une erreur survient entre l'instant où l'instruction d'accès en mémoire est lue par le processeur et l'instant où l'instruction est exécutée. Des inversions de bit peuvent par exemple se produire lors du transport des valeurs entre la mémoire et le processeur.
Généralement, les systèmes d'accès mémoire sont articulés autour d'un bus de données et d'un bus d'adresses. Lorsqu'une donnée DATA doit être écrite à une adresse ADDR, alors la valeur ADDR est transmise sur le bus d'adresses et la valeur DATA est transmise sur le bus de données. Il est connu de garantir l'intégrité des valeurs transportées sur les bus de données et les bus d'adresse. Les valeurs sont protégées par des codes correcteurs. Les codes correcteurs associés au bus d'adresse sont générés par le maître du bus par exemple le processeur et validés en entrée de la mémoire. Les codes correcteurs associés aux données sont générés par le maître et validés par la mémoire en écriture; ils sont générés par la mémoire et validés par le maître en lecture. Si les éléments logiques participant au décodage d'adresse sont défaillants, alors l'adresse à laquelle sera écrite la donnée DATA ne sera pas l'adresse ADDR, mais une adresse erronée. Ce type d'erreur ne peut pas être détecté par les techniques précitées, celle-ci ne s'attachant qu'à contrôler l'intégrité de la donnée elle- même, sans vérifier que cette donnée a été mémorisée à l'emplacement attendu en mémoire.
Le brevet américain de Joseph A. Weisbecker publié sous le numéro US3599146 propose le stockage d'un bit de parité en plus de la donnée enregistrée, ce bit de parité étant calculé en fonction de l'adresse de stockage de la donnée. Lors de la lecture, un contrôle du décodage d'adresse est effectué en comparant le bit de parité de la donnée lue avec l'adresse de lecture de cette donnée. Cependant, cette méthode requiert un bit supplémentaire pour chaque mot mémoire, ce qui est pénalisant en termes de surface de circuit, en particulier pour les mémoires de haute capacité. De surcroît, cette méthode ne permet pas en général de corriger une erreur détectée, et elle emploie deux plans mémoires— un premier pour les données, un deuxième pour les bits de parité — associés à deux décodeurs d'adresse différents ce qui accentue le surcoût matériel.
On connaît également une demande de brevet américain de Paul Stanley Hugues publiée sous le numéro US2009/0037782 qui propose une méthode permettant de détecter les défaillances dans le décodage d'adresse en stockant, avec la donnée concernée, la valeur de son adresse, ou dans une version améliorée un hachage de cette valeur. La valeur d'adresse est ensuite comparée à l'adresse de lecture lors des accès en lecture à la mémoire. Toutefois, cette méthode nécessite également un espace de stockage étendu.
Un but de l'invention est de proposer, avec un surcoût matériel minimal, des moyens pour s'assurer qu'une donnée lue en mémoire est bien la donnée attendue. A cet effet, l'invention a pour objet un procédé d'enregistrement d'une donnée informatique à une adresse spécifiée d'une mémoire, le procédé étant caractérisé en ce qu'il comprend une étape d'écriture en mémoire d'une donnée finale calculée par une fonction de ladite donnée à enregistrer et de l'adresse à laquelle la donnée doit être enregistrée, ladite fonction étant choisie pour que ladite donnée finale ait une dimension de stockage inférieure à la somme des dimensions de stockage respectives de la donnée à enregistrer et de la valeur de l'adresse.
En d'autres termes, lorsqu'une requête d'écriture d'une donnée à une adresse spécifiée est lancée par un processeur, au lieu d'enregistrer cette donnée, c'est une donnée transformée qui est écrite à l'adresse spécifiée, cette donnée transformée étant calculée en fonction notamment de l'adresse d'enregistrement de cette donnée. La donnée à enregistrée peut être une donnée redondante. Le procédé d'enregistrement selon l'invention peut notamment être appliqué aux mémoires de type ROM (Read Only Memory) ou RAM (Random Access Memory) des systèmes et appareils informatiques pour autoriser un contrôle du décodage d'adresse avec surcoût mémoire limité.
Selon une mise en œuvre du procédé d'enregistrement selon l'invention, la fonction de calcul de la donnée finale est choisie pour être une bijection paramétrée par l'adresse d'enregistrement de la donnée, ladite bijection transformant une donnée à enregistrer en donnée finale, l'application sur la donnée finale de la bijection réciproque paramétrée par la même adresse générant une donnée identique à la donnée à enregistrer.
Avantageusement, la bijection est choisie pour qu'il existe une probabilité non nulle que, pour toute donnée finale, l'application de la bijection réciproque sur cette donnée finale lorsqu'elle est paramétrée par une adresse différente de l'adresse paramétrant la bijection produise une donnée différente de la donnée fournie en entrée de la bijection pour produire la donnée finale.
La fonction de calcul de la donnée finale peut être choisie pour produire une donnée finale ayant une dimension égale à celle de la donnée à enregistrer. Cette mise en œuvre évite de modifier le plan mémoire d'une architecture déjà existante. Elle n'induit aucun surcoût mémoire par rapport à cette architecture.
Selon une mise en œuvre du procédé d'enregistrement selon l'invention, la fonction de calcul de la donnée finale est un « ou exclusif » bit à bit entre la donnée à enregistrer et la valeur de l'adresse à laquelle la donnée doit être enregistrée. Cette mise en œuvre permet un codage efficace et économe en surface de circuit.
Selon une mise en œuvre du procédé d'enregistrement selon l'invention, la donnée finale est calculée par application d'une fonction de « ou exclusif » bit à bit entre la donnée à enregistrer et une concaténation de plusieurs valeurs calculées chacune en fonction de la valeur de l'adresse à laquelle la donnée doit être enregistrée. Avantageusement, les valeurs concaténées calculées en fonction de l'adresse sont présentes un nombre de fois supérieur ou égal à dmir,-1 , dmir, étant la distance de Hamming minimale pour produire une erreur irrécupérable. Cette mise en œuvre permet d'entraîner, à dessein, des erreurs irrécupérables après des défaillances de décodage d'adresse, en évitant que le code correcteur ne puisse corriger l'erreur, forçant ainsi un procédé de détection et de correction d'erreur à produire un signal d'erreur.
Le procédé d'enregistrement selon l'invention peut comprendre une étape préalable de calcul de la donnée à enregistrer par une transformation réversible d'une donnée initiale dont la dimension de stockage est moins grande que celle de la donnée à enregistrer, la donnée à enregistrer comprenant des bits de redondance de la donnée initiale. Ce mode de réalisation introduit des bits de redondance afin de contrôler l'intégrité de la donnée enregistrée en mémoire, et le cas échéant, de corriger des erreurs dues à une corruption de la donnée enregistrée.
Les bits de redondance peuvent être créés par application d'un code détecteur d'erreur sur la donnée initiale. Le code détecteur d'erreur peut être un code de redondance cyclique, ce type de code étant parfois désigné par le sigle CRC, pour « Cyclic Redundancy Code ».
Selon une mise en œuvre du procédé d'enregistrement selon l'invention, la fonction de calcul de la donnée finale est une bijection paramétrée par l'adresse de la donnée à écrire, dans lequel ladite bijection est choisie pour qu'il existe une probabilité non nulle que l'application sur la donnée finale de la bijection réciproque paramétrée par une adresse différente produise une donnée dont il est impossible d'extraire la donnée initiale avec le code choisi. Cette caractéristique permet de distinguer les erreurs dues à des défaillances du décodage d'adresse des corruptions de données susceptibles de correction par le code correcteur choisi. En effet, les défaillances dues à une corruption de donnée sont susceptibles de correction par l'utilisation de code correcteur, tandis que les défaillances du décodage d'adresse n'aboutissent qu'à une détection d'erreur. Selon une mise en œuvre de l'invention, ladite bijection est choisie pour qu'il existe une probabilité non nulle que l'application sur la donnée finale de la bijection réciproque paramétrée par une adresse différente produise une donnée dont il est difficile d'extraire la donnée initiale.
L'invention a également pour objet un procédé de lecture d'une donnée enregistrée en mémoire avec un procédé d'enregistrement tel que décrit plus haut, le procédé de détection comprenant une étape de lecture de ladite donnée à une adresse spécifiée d'un bloc mémoire, le procédé de lecture étant caractérisé en ce qu'il applique sur la donnée lue une fonction de décodage paramétrée par l'adresse de lecture, ladite fonction de décodage étant choisie relativement à la fonction de calcul de la donnée finale paramétrée par une première adresse et exécutée lors de l'enregistrement de la donnée en mémoire de sorte à produire, lorsque l'adresse de lecture est identique à la première adresse, une donnée extraite identique à la donnée à enregistrer fournie en entrée de ladite fonction de calcul de la donnée finale, la donnée lue ayant une dimension de stockage inférieure à la somme des dimensions de stockage de l'adresse et de la donnée extraite. Ensuite, les erreurs peuvent par exemple être détectées par code détecteur d'erreur ou par analyse de la donnée extraite par la fonction de décodage.
Selon une mise en œuvre du procédé de lecture selon l'invention dans laquelle la donnée à lire a été enregistrée en mémoire avec un procédé d'enregistrement tel que décrit plus haut, la fonction de décodage est la bijection réciproque de la fonction de calcul de la donnée finale exécutée lors de l'enregistrement de la donnée en mémoire.
L'invention a également pour objet un procédé de détection d'une erreur d'accès en lecture à une mémoire dans laquelle au moins une donnée a été enregistrée avec un procédé d'enregistrement tel que décrit plus haut, le procédé comprenant les étapes du procédé de lecture tel que décrit plus haut, dans lequel on applique sur la donnée extraite par la fonction de décodage une fonction de détection d'erreur apte à déterminer si la donnée extraite comporte des caractéristiques prédéfinies attendues, le procédé émettant un signal d'erreur lorsque la donnée extraite ne comporte pas ces caractéristiques. L'erreur peut provenir d'une corruption de la donnée en mémoire ou d'un problème de décodage d'adresse. Les caractéristiques attendues peuvent être, par exemple, la possibilité de décoder la donnée à l'aide d'un code à redondance, ou encore le fait que la donnée doit être comprise dans une plage de valeurs. Ce procédé particulier peut, par exemple, être mis en œuvre lorsqu'aucun code détecteur d'erreur n'est utilisé.
Selon une mise en œuvre du procédé de détection d'une erreur d'accès en lecture selon l'invention dans laquelle la donnée a été enregistrée avec un procédé d'enregistrement tel que décrit plus haut, le procédé comporte l'exécution d'un décodage à redondance apte à retrouver la donnée initiale lorsque l'adresse de lecture de la donnée est identique à ladite première adresse, le procédé comprenant l'émission d'un signal d'erreur lorsque la fonction de détection d'erreur n'est pas apte à retrouver ladite donnée initiale à partir de la donnée extraite.
L'invention a également pour objet un dispositif de détection d'erreur dans la lecture d'une donnée enregistrée dans un bloc mémoire, caractérisé en ce que le dispositif comprend un module de décodage par l'adresse apte à recevoir la donnée lue en mémoire et à combiner cette donnée lue avec l'adresse de lecture de cette donnée pour produire une donnée extraite à tester, le dispositif comprenant des moyens de test de cette donnée extraite aptes à lever une erreur si l'adresse spécifiée pour la lecture est différente de l'adresse spécifiée lors de l'écriture de la donnée lue, ladite donnée lue étant produite par une fonction de la valeur de l'adresse spécifiée pour son écriture en mémoire, ladite donnée lue ayant une dimension de stockage inférieure à la somme des dimensions de stockage de l'adresse et de la donnée extraite.
Selon un mode de réalisation du dispositif de détection d'erreur selon l'invention, la mémoire est accessible en écriture, le dispositif comprenant également un codeur par l'adresse apte à recevoir une donnée à enregistrer et à la combiner avec une fonction de l'adresse d'écriture pour produire une donnée finale à écrire en mémoire, ladite donnée finale ayant une dimension de stockage inférieure à la somme des dimensions de stockage de l'adresse d'écriture et de la donnée à enregistrer.
L'invention a également pour objet un module mémoire comprenant une mémoire et un dispositif de détection d'erreur tel que décrit plus haut.
D'autres caractéristiques apparaîtront à la lecture de la description détaillée donnée à titre d'exemple et non limitative qui suit faite en regard de dessins annexés qui représentent :
- la figure 1 , un schéma illustrant un premier mode de réalisation du dispositif de détection d'erreur selon l'invention ;
- la figure 2, un synoptique illustrant les étapes d'un procédé d'enregistrement selon l'invention ;
- la figure 3, un synoptique illustrant les étapes d'un procédé de détection d'erreur selon l'invention ;
- la figure 4, un synoptique illustrant les étapes d'un procédé d'enregistrement selon l'invention lorsqu'une erreur de décodage d'adresse est commise ;
- la figure 5, un synoptique illustrant les étapes d'un procédé de détection d'erreur selon l'invention après qu'une erreur de décodage d'adresse a été commise lors de l'écriture d'une donnée ;
- la figure 6, un schéma illustrant un deuxième mode de réalisation du dispositif de détection d'erreur selon l'invention ;
- la figure 7, un schéma illustrant un exemple de mise en œuvre de l'étape de codage d'adresse exécutée par un procédé selon l'invention.
La figure 1 illustre un premier mode de réalisation du dispositif de détection d'erreur selon l'invention. Le dispositif 100 comprend une mémoire accessible en écriture et en lecture. Cette mémoire est par exemple une mémoire volatile de type RAM ou autre. La mémoire comporte un plan mémoire 101 , un module 103 de sélection d'un mot mémoire relié à un bus d'adresses 1 1 1 — module parfois appelé « wordline décoder » — et un module tampon 105 pour accueillir les données lues ou les données à écrire en mémoire, ce module 105 étant alimenté indirectement par un bus de données 1 13.
Le dispositif 100 comprend également un codeur à redondance 107 alimenté par le bus de données 1 13 et produisant, à partir d'un mot de n bits en entrée, des données de n+k bits, n et k étant des entiers supérieurs ou égal à 1 . Les données produites par le codeur de redondance 107 sont transmises à un codeur par l'adresse 121 alimenté parallèlement par le bus d'adresses 1 1 1 . Le codeur par l'adresse 121 produit en sortie des données transmises au module tampon 105 en vue d'une écriture dans la cellule mémoire sélectionnée par le module de sélection 103. Le dispositif 100 comporte aussi un décodeur par l'adresse 123 utilisé lors des opérations de lecture en mémoire, ainsi qu'un décodeur 109 détecteur d'erreur alimenté par le décodeur par l'adresse 123.
Le dispositif est apte à mettre en œuvre des opérations d'écriture et de lecture dans la mémoire. Ces opérations sont par exemple la conséquence d'instructions produites par une ou plusieurs unités de calcul telles que des processeurs.
Lors d'une opération d'écriture d'une donnée DATA à l'adresse ADDR de la mémoire, le module de sélection 103 sélectionne le mot du plan mémoire 101 correspondant à l'adresse ADDR fournie sur le bus d'adresses 1 1 1 . Parallèlement, la donnée DATA de n bits, fournie sur le bus de données 1 13 est transformée par le codeur à redondance 107. Ce codeur 107, par exemple un codeur à redondance cyclique, produit une donnée comprenant des bits de redondance par rapport à la donnée initiale DATA afin de permettre l'exécution d'un contrôle d'intégrité de la donnée ultérieurement. Dans l'exemple, le codeur 107 produit une donnée DW1 de n+k bits en sortie, donc avec k bits de redondance.
La donnée redondante DW1 de n+k bits est reçue par le codeur par l'adresse 121 qui est configuré pour combiner cette donnée DW1 avec l'adresse ADDR spécifiée par le bus d'adresses 1 1 1 . On peut voir cette combinaison comme l'application par le codeur par l'adresse 121 d'une fonction f paramétrée par l'adresse ADDR de la donnée redondante DW1 afin de produire une donnée finale DW2 ; autrement dit DW2 = fADDR(DW1 ). Avantageusement, la fonction ÎADDR est une bijection, de sorte qu'il existe une fonction réciproque f" ADDR telle que f"1 ADDR(fADDR(DW1 )) = DW1 . En outre, la fonction f est préférentiellement choisie de sorte que la fonction réciproque de f lorsque son paramètre d'adresse est à une première valeur n'est pas la fonction réciproque de f lorsque son paramètre d'adresse est à une valeur différente de la première. Autrement dit, pour deux adresses ADDR1 et ADDR2, si ADDR1 ≠ADDR2, alors f1 ADDRi (fADDR2(DW1 ))≠ DW1 .
Avantageusement, la dimension de la donnée finale DW2 produite par le codeur par l'adresse 1 21 est inférieure à la somme des dimensions respectives de la valeur de l'adresse et de la donnée redondante. Par exemple si l'adresse ADDR est codée sur m bits et que la donnée redondante DW1 est codée sur n+k bits, alors la donnée DW2 est codée sur moins de n+k+m bits. Dans l'exemple, la donnée finale DW2 est codée sur le même nombre de bits que la donnée redondante DW1 .
Par exemple, la fonction f peut être la fonction « ou exclusif » bit à bit, la fonction ÎADDR(DW1 ) étant une fonction opérant un « ou exclusif » entre DW1 et ADDR. Lorsque la valeur de l'adresse ADDR est exprimée sur un nombre de bits supérieur à n+k, alors par exemple, les n+k premiers bits de la valeur d'adresse sont utilisés pour l'application de la fonction « ou exclusif » entre ces n+k bits et les n+k bits de la donnée. Lorsque la valeur de l'adresse est exprimée sur un nombre m de bits inférieur à n+k, alors ces m bits peuvent par exemple être complétés par une concaténation de n+k-m bits choisis dans la valeur d'adresse.
La donnée finale DW2 produite par le codeur par l'adresse 1 21 est ensuite transmise au module tampon 1 05 pour être écrite dans le mot mémoire sélectionné par le module de sélection 1 03. Ainsi le dispositif selon l'invention enregistre une donnée finale DW2 transformée de la donnée d'entrée DATA, cette donnée finale DW2 étant fonction de la donnée d'entrée DATA, de l'adresse ADDR à laquelle la donnée finale est écrite en mémoire, et du code de redondance utilisé pour transformée la donnée d'entrée.
Lors d'une opération de lecture, une unité de calcul vise à obtenir la valeur qui est enregistrée en mémoire à une adresse spécifiée ADDR. Dans ce cas, seul le bus d'adresses 1 1 1 est sollicité en entrée, celui-ci permettant de sélectionner, via le module de sélection 1 03, la cellule mémoire à l'adresse ADDR. La donnée DR1 lue à cette adresse ADDR est transmise au module tampon 105 qui alimente le décodeur par l'adresse 123. Dans l'exemple, si la mémoire n'a pas été corrompue et que les valeurs transmises sur le bus de données et via le module tampon 105 n'ont pas été altérées, la donnée lue DR1 est égale à la donnée finale DW2 qui avait été produite par le codeur par l'adresse 121 . Cette donnée est donc, dans l'exemple, de dimension n+k bits.
Le décodeur par l'adresse 123 applique sur la donnée lue DR1 la fonction réciproque f"1 de la fonction f appliquée par le codeur par l'adresse 121 . Cette fonction réciproque f"1 est paramétrée par l'adresse ADDR transmise par le bus d'adresses 1 1 1 . Ainsi, le décodeur par l'adresse 123 produit une donnée à tester DR2 de dimension n+k bits : DR2 = f ADDR(DR1 ).
Dans le cas où la donnée lue DR1 est égale à la donnée finale écrite DW2, alors la donnée produite par le décodeur par l'adresse 123 est DR2 = f1 ADDR(fADDR(DW1 )), de sorte que si les adresses utilisées pour l'écriture et la lecture sont bien égales à une même valeur ADDR, alors DR2=DW1 . Dans le cas où les adresses d'écriture et de lecture sont différentes, et si la fonction f a été avantageusement choisie telle que f 1ADDRi (fADDR2(DW1 ))≠ DW1 si ADDR1 ≠ ADDR2, alors DR2≠DW1. Ainsi, le dispositif selon l'invention permet de générer une donnée DR2 différente lorsque les adresses utilisées pour écrire et lire la donnée en mémoire sont différentes, même si la donnée finale DW2 écrite en mémoire et la donnée lue DR1 sont identiques. Autrement dit, dans le cas où une même cellule mémoire est accédée à des adresses différentes, DW2=DR1 si et seulement si ADDR1 = ADDR2.
Le décodeur par l'adresse 123 transmet ensuite la donnée à tester DR2 qu'il a générée au décodeur détecteur d'erreur 109. Ce décodeur 109 est configuré avec une fonction de décodage correspondant au code mis en œuvre par le codeur à redondance 107, de manière à ce que le dispositif retrouve la donnée initiale reçue par le codeur 107 en exécutant le décodeur 109 sur une donnée issue du codeur à redondance 107. Le décodeur 109 peut également être configuré pour corriger d'éventuelles erreurs si le niveau de redondance est suffisant. Ainsi, si la donnée à tester DR2 est identique à la donnée DW1 redondante issue du codeur 107, alors la donnée DATA_OUT produite par le décodeur est une donnée de n bits identique à la donnée initiale DATA reçue par le codeur 107.
Par conséquent, lorsque la donnée redondante DW1 produite par ce codeur 107 est ensuite codée par le codeur par l'adresse 121 avec une première adresse ADDR1 , que la donnée finale DW2 produite par le codeur par l'adresse 121 est transmise et écrite sans altération en mémoire 101 , puis que le dispositif 100 lit la donnée DR1 à une deuxième adresse ADDR2 identique à la première adresse ADDR1 , que cette donnée lue DR1 est transmise sans altération et décodée par le décodeur par l'adresse 123 en utilisant l'adresse ADDR2 identique à la première adresse ADDR1 , alors le dispositif retrouve sans erreur une donnée de sortie DATA_OUT identique à la donnée d'entrée DATA après décodage par le décodeur détecteur d'erreur 109 de la donnée à tester DR2 produite par le décodeur par l'adresse 123. A contrario, si les adresses ADDR1 , ADDR2 utilisées pour la lecture et l'écriture sont différentes, ou que la donnée transmise sur le bus de données 1 13 et via le module tampon 105 a été altérée, ou encore que la donnée finale DW2 enregistrée en mémoire a été corrompue, le décodeur 109 indique une erreur, par exemple, en émettant un signal approprié.
Le dispositif selon l'invention permet ainsi de détecter les erreurs de décodage d'adresse, avec un impact très faible sur les performances des accès mémoires et de la surface de circuit mobilisée. Dans l'exemple, les erreurs de décodage d'adresse ne peuvent toutefois pas être distinguées, prima facie, des erreurs dues à une corruption des données en mémoire. La détection est, dans l'exemple, réalisée sans utiliser un nombre de bits supérieur à celui utilisé avec un dispositif classique de détection de corruption de données, ce qui permet de conserver un plan de mémoire identique. La donnée finale DW2 produite par le codeur par l'adresse 121 est en effet de la même dimension (n+k bits) que la donnée redondante DW1 issue du codeur à redondance 107. Par ailleurs, le dispositif selon l'invention peut s'appuyer sur des architectures connues en mettant en œuvre des modifications bien circonscrites aux modèles de circuit existant. En effet, l'insertion du codeur par l'adresse 121 et du décodeur par l'adresse 123 ne remettent pas en cause l'organisation des autres éléments présents dans le dispositif 100. La figure 2 illustre les étapes d'un procédé d'enregistrement selon l'invention. Ce procédé correspond par exemple à une phase d'écriture de données effectuée par le dispositif de la figure 1 . Lors d'une première étape 201 , une donnée initiale DATA de n bits subit un codage à redondance pour générer une donnée redondante DW1 de n+k bits. Lors d'une deuxième étape 202, la donnée redondante DW1 de n+k bits est combinée à l'adresse ADDR à laquelle cette donnée doit être écrite, de manière à produire une donnée redondante transformée DW2, appelée aussi « donnée finale ». La fonction combinant la donnée redondante DW1 avec l'adresse ADDR est avantageusement choisie de sorte que la dimension de la donnée finale DW2 est la même que la dimension de la donnée redondante DW1 , autrement dit n+k bits. Lors d'une troisième étape 203, la donnée finale DW2 est écrite en mémoire à l'adresse spécifiée ADDR (si le décodage d'adresse effectué par le module de sélection d'une cellule mémoire fonctionne correctement).
Selon une autre mise en œuvre du procédé d'enregistrement selon l'invention, la première étape 201 n'est pas exécutée. Dans cette mise en œuvre, c'est la donnée initiale DATA qui est combinée avec l'adresse ADDR pour générer la donnée finale DW2.
La figure 3 illustre les étapes d'un procédé de détection d'erreur selon l'invention. Lors d'une première étape 301 , une donnée DR1 de n+k bits est lue en mémoire à une adresse spécifiée ADDR. Lors d'une deuxième étape 302, cette donnée lue DR1 est combinée à l'adresse de lecture ADDR afin d'extraire une donnée à tester DR2, la combinaison étant opérée par une fonction réciproque de la fonction utilisée par un procédé d'enregistrement selon l'invention. Lors d'une troisième étape 303, la donnée à tester DR2, dans l'exemple d'une dimension de n+k bits, subit un décodage et une détection d'erreur conforme au code de redondance utilisé par un procédé de détection d'erreur selon l'invention. Si la donnée à tester DR2 n'est pas identique à la donnée initialement produite (cf. figure 2, référence DW1 ) par le codage à redondance lors de l'opération d'enregistrement selon l'invention, alors un signal d'erreur peut être généré.
Selon une autre mise en œuvre du procédé de détection d'erreur selon l'invention, la troisième étape 303 ne comprend pas de détection d'erreur par redondance. Dans cette mise en œuvre, la détection d'erreur est effectuée directement sur la donnée à tester DR2. Ce type de détection d'erreur peut être mis en œuvre conjointement avec la mise en œuvre du procédé d'enregistrement décrit plus haut dans lequel la première étape 201 de codage à redondance n'est pas exécutée. La détection d'erreur peut alors être basée sur les caractéristiques intrinsèques de la donnée à tester DR2, si par exemple des caractéristiques particulières sont attendues pour cette donnée. Un signal d'erreur est généré si la donnée ne comporte pas ces caractéristiques attendues.
La figure 4 illustre les étapes d'un procédé d'enregistrement selon l'invention lorsqu'une erreur de décodage d'adresse est commise. Une instruction d'écriture de la donnée DATA à l'adresse ADDR1 du plan mémoire 101 est exécutée. La première étape 201 et la deuxième étape 202 sont exécutées normalement puis la donnée finale DW2 de n+k bits issue de la deuxième étape 202 est écrite à une deuxième adresse ADDR2 différente de l'adresse ADDR1 spécifiée dans l'instruction. Cette erreur peut, par exemple, être due à une défaillance du module de sélection d'une cellule mémoire (cf. figure 1 , référence 103). Ainsi, la cellule mémoire à l'adresse initialement spécifiée ADDR1 demeure inchangée, tandis que la donnée finale DW2 est écrite de manière erronée dans la cellule mémoire pointée par la deuxième adresse ADDR2. Grâce au procédé d'enregistrement selon l'invention, la donnée finale DW2 comporte partiellement l'entropie de l'adresse ADDR1 initialement spécifiée dans l'instruction d'écriture de la donnée. Il y a donc incohérence entre l'adresse ADDR2 à laquelle la donnée est enregistrée et l'adresse utilisée pour générer la donnée DW2. Cette incohérence peut être exploitée pour détecter une erreur.
La figure 5 illustre les étapes d'un procédé de détection d'erreur selon l'invention après qu'une erreur de décodage d'adresse a été commise lors de l'écriture d'une donnée. Les étapes présentées en figure 5 peuvent par exemple être exécutées après que l'erreur illustrée en figure 4 a été commise. Une instruction de lecture d'une donnée à l'adresse ADDR2 du plan mémoire 101 est exécutée. La cellule mémoire à l'adresse ADDR2 contient une donnée DW2 de n+k bits qui a été produite conformément au procédé d'enregistrement selon l'invention avec une adresse ADDR1 différente de l'adresse ADDR2 spécifiée pour la lecture. Par exemple, la donnée DW2 a été écrite par erreur dans la cellule pointée par l'adresse ADDR2 au lieu de la cellule pointée par adresse ADDR1 . Cette donnée DW2 est donc lue et subit un décodage exploitant la valeur de l'adresse, conformément à la deuxième étape 302 du procédé de détection d'erreur selon l'invention. Ce décodage 302 est opéré avec, comme paramètre, l'adresse ADDR2 utilisée pour la lecture de la donnée DW2. Aussi, le décodage de la donnée lue DW2 produit une donnée à tester DX de n+k bits égale à f 1 ADDR2(fADDRi (DW1 )). La donnée à tester DX est donc différente de DW1 et la troisième étape 302 de décodage et de détection d'erreur produit un signal d'erreur ERR.
La figure 6, un schéma illustrant un deuxième mode de réalisation du dispositif de détection d'erreur selon l'invention. Ce deuxième mode de réalisation s'applique notamment aux mémoires à lecture seule, qualifiées aussi de « Read Only Memory ».
Le dispositif 600 se différentie de celui de la figure 1 notamment en ce qu'il met en œuvre une mémoire à lecture seule. Contrairement au dispositif de la figure 1 , il ne comporte ni de codeur à redondance, ni de codeur par l'adresse, puisque l'écriture y est impossible. Ainsi, le dispositif 600 comprend un plan mémoire 101 ' en lecture seule, un module tampon 105' apte à recevoir les données lues dans ce plan mémoire 101 ', et similairement au dispositif de la figure 1 , un décodeur par l'adresse 123 alimenté par le module tampon 105' et un décodeur détecteur d'erreur 109 alimenté par le décodeur par l'adresse 123. Les données à lire sont pointées dans le plan mémoire 101 ' grâce à un module de sélection 103.
Contrairement au premier mode de réalisation de la figure 1 , les cellules du plan mémoire 101 ' sont remplies à la fabrication de la mémoire ou à leur programmation initiale. Néanmoins, les valeurs qui y sont insérées sont également issues d'un procédé tel que celui employé dans le premier mode de réalisation. En d'autres termes, les données initiales qui doivent être mémorisées avec fiabilité sont codées successivement par codage à redondance et par un codage d'adresse tel que celui mis en œuvre dans le premier mode de réalisation. Le décodeur par l'adresse 123 et le décodeur détecteur d'erreur 109 sont configurés conformément aux fonctions utilisées lors du codage d'adresse et du codage à redondance, de manière à détecter les erreurs de codage d'adresse.
Lorsque le procédé selon l'invention détecte une erreur, celle-ci peut être due à une défaillance dans la sélection de la cellule en mémoire, comme illustré en figures 4 et 5, mais l'erreur peut avoir d'autres causes, comme la corruption de la donnée en mémoire. Dans le cas d'une corruption partielle de la donnée stockée en mémoire, la détection d'erreur peut s'accompagner d'une correction d'erreur opérée par un code correcteur en sortie. Dans le cas d'une défaillance dans la sélection d'une cellule mémoire, la correction d'erreur est généralement compromise, car la distance de Hamming entre la donnée attendue et la donnée DX produite par le décodage 302 est trop élevée.
La figure 7 illustre un exemple de mise en œuvre de l'étape de codage d'adresse exécutée par un procédé selon l'invention.
Lorsqu'un code de redondance est utilisé pour produire la donnée finale écrite en mémoire puis que le détecteur d'erreur exploite la redondance pour également corriger d'éventuelles erreurs détectées, il est souhaitable que le correcteur d'erreur ne tente pas de corriger les erreurs qui sont dues à une défaillance du décodage d'adresse— c'est-à-dire de la sélection de la cellule mémoire dans le plan mémoire. En effet, il n'est pas possible de corriger ces erreurs puisque c'est la donnée dans son intégralité qui n'est pas correcte car issue d'une cellule mémoire choisie par erreur.
Or, il arrive parfois qu'après défaillance dans le décodage d'adresse, la distance de Hamming séparant la donnée attendue (d'après les bits de redondance) de la donnée à tester soit suffisamment petite pour permettre au code correcteur d'erreur d'opérer une correction sur la donnée à tester. Cette correction conduirait à produire en sortie une donnée corrigée erronée puisque provenant d'une cellule mémoire erronée. A contrario, lorsque l'erreur provient d'une corruption de la donnée mémorisée, lors de son stockage ou de son transport, alors la correction par code correcteur d'erreur demeure utile et doit donc être conservée.
Selon la mise en œuvre illustrée en figure 7, le procédé selon l'invention permet d'entraîner des erreurs irréparables par code correcteur d'erreur lorsqu'une défaillance de décodage d'adresse survient, permettant ainsi deux comportements distincts du procédé selon que l'erreur est due à une corruption de la donnée ou d'une défaillance dans le décodage d'adresse.
Un exemple de procédé utilisé pour entraîner ces erreurs irréparables est, lors de la deuxième étape 202 du procédé d'enregistrement selon l'invention (cf. figure 2), de combiner avec la donnée redondante DW1 un motif construit à partir d'une concaténation de l'adresse ADDR spécifiée pour l'écriture de la donnée. Dans l'exemple de la figure 7, l'adresse ADDR est dupliquée et concaténée pour construire un motif 701 de dimension n+k bits. Avantageusement, l'adresse est dupliquée un nombre de fois supérieur ou égal à dmir,-1 , dmir, étant la distance de Hamming qui est minimale pour produire une erreur irrécupérable. En effet, une erreur d'un bit dans l'adresse produit une donnée avec dmir,-1 inversions de bits. Le motif 701 est ensuite combiné à la donnée redondante DW1 pour produire la donnée finale DW2.
Dans le cas où l'adresse ADDR est de dimension supérieure ou égale à n+k bits, alors un hachage de l'adresse ADDR peut être préalablement produit, ce hachage de dimension réduite étant ensuite dupliqué et concaténé pour construire le motif. Par exemple, une adresse de 16 bits peut être transformée en hachage de 4 bits, chaque bit du hachage étant issu d'un bit de parité calculé pour un groupe de 4 bits de l'adresse.
Le code correcteur dit « SECDEC » pour « single error correction, double error détection », et notamment le code de Hamming (72, 64) peut par exemple être utilisé lors des étapes de codage à redondance et de décodage et détection d'erreur.

Claims

REVENDICATIONS
1 . Procédé d'enregistrement d'une donnée informatique (DW1 ) à une adresse spécifiée (ADDR) d'une mémoire (101 ), le procédé étant caractérisé en ce qu'il comprend une étape d'écriture (203) en mémoire d'une donnée finale (DW2) calculée par une fonction (202) de ladite donnée à enregistrer (DW1 ) et de l'adresse (ADDR) à laquelle la donnée doit être enregistrée, ladite fonction étant choisie pour que ladite donnée finale (DW2) ait une dimension de stockage inférieure à la somme des dimensions de stockage respectives de la donnée à enregistrer (DW1 ) et de la valeur de l'adresse (ADDR).
2. Procédé d'enregistrement selon la revendication 1 , dans lequel la fonction (202) de calcul de la donnée finale (DW2) est choisie pour être une bijection paramétrée par l'adresse (ADDR) d'enregistrement de la donnée (DW1 ), ladite bijection transformant une donnée à enregistrer (DW1 ) en donnée finale (DW2), l'application sur la donnée finale (DW2) de la bijection réciproque paramétrée par la même adresse (ADDR) générant une donnée (DR2) identique à la donnée à enregistrer (DW1 ).
3. Procédé d'enregistrement selon la revendication 2, dans lequel ladite bijection est choisie pour qu'il existe une probabilité non nulle que, pour toute donnée finale (DW2), l'application de la bijection réciproque (302) sur cette donnée finale (DW2) lorsqu'elle est paramétrée par une adresse différente (ADDR2) de l'adresse (ADDR1 ) paramétrant la bijection (202) produise une donnée (DX) différente de la donnée (DW1 ) fournie en entrée de la bijection (302) pour produire la donnée finale (DW2).
4. Procédé d'enregistrement selon l'une quelconque des revendications 1 à 3, dans lequel la fonction de calcul (202) de la donnée finale (DW2) est choisie pour produire une donnée finale (DW2) ayant une dimension égale à celle de la donnée à enregistrer (DW1 ).
5. Procédé d'enregistrement selon l'une quelconque des revendications précédentes, dans lequel la fonction de calcul (202) de la donnée finale (DW2) est un « ou exclusif » bit à bit entre la donnée à enregistrer (DW1 ) et la valeur de l'adresse (ADDR) à laquelle la donnée doit être enregistrée.
6. Procédé d'enregistrement selon l'une quelconque des revendications précédentes, dans lequel la donnée finale (DW2) est calculée par application d'une fonction de « ou exclusif » bit à bit entre la donnée à enregistrer (DW1 ) et une concaténation (701 ) de plusieurs valeurs calculées chacune en fonction de la valeur de l'adresse (ADDR) à laquelle la donnée doit être enregistrée.
7. Procédé d'enregistrement selon l'une quelconque des revendications précédentes, dans lequel le procédé comprend une étape préalable
(201 ) de calcul de la donnée à enregistrer (DW1 ) par une transformation réversible d'une donnée initiale (DATA) dont la dimension de stockage est moins grande que celle de la donnée à enregistrer (DW1 ), la donnée à enregistrer (DW1 ) comprenant des bits de redondance de la donnée initiale (DATA).
8. Procédé d'enregistrement selon la revendication 7, dans lequel les bits de redondance sont créés par application d'un code détecteur d'erreur sur la donnée initiale (DATA).
9. Procédé d'enregistrement selon la revendication 8, la fonction de calcul
(202) de la donnée finale (DW2) étant une bijection paramétrée par l'adresse (ADDR1 ) de la donnée à écrire, dans lequel ladite bijection est choisie pour qu'il existe une probabilité non nulle que l'application sur la donnée finale (DW2) de la bijection réciproque paramétrée par une adresse différente (ADDR2) produise une donnée (DX) dont il est impossible d'extraire la donnée initiale (DATA) avec le code choisi.
10. Procédé de lecture d'une donnée enregistrée en mémoire (101 ) avec un procédé d'enregistrement selon l'une quelconque des revendications précédentes, le procédé de détection comprenant une étape de lecture (301 ) de ladite donnée (DR1 ) à une adresse spécifiée (ADDR) d'un bloc mémoire (101 , 101 '), le procédé étant caractérisé en ce qu'il applique sur la donnée lue (DR1 ) une fonction de décodage (302) paramétrée par l'adresse de lecture (ADDR), ladite fonction de décodage (302) étant choisie relativement à la fonction (202) de calcul de la donnée finale (DW2) paramétrée par une première adresse et exécutée lors de l'enregistrement de la donnée en mémoire (101 ) de sorte à produire, lorsque l'adresse de lecture (ADDR) est identique à la première adresse, une donnée extraite (DR2) identique à la donnée à enregistrer (DW1 ) fournie en entrée de ladite fonction (202) de calcul de la donnée finale (DW2), la donnée lue (DR1 ) ayant une dimension de stockage inférieure ou égale à la somme des dimensions de stockage de l'adresse (ADDR) et de la donnée extraite (DR2).
1 1 . Procédé de lecture selon la revendication 10, la donnée à lire ayant été enregistrée en mémoire (101 , 101 ') avec un procédé d'enregistrement selon l'une quelconque des revendications 2 à 9, dans lequel la fonction de décodage (302) est la bijection réciproque de la fonction (202) de calcul de la donnée finale (DW2) exécutée lors de l'enregistrement de la donnée en mémoire.
12. Procédé de détection d'une erreur d'accès en lecture à une mémoire (101 , 101 ') dans laquelle au moins une donnée a été enregistrée avec un procédé d'enregistrement selon l'une quelconque des revendications 1 à 9, le procédé comprenant les étapes du procédé de lecture selon la revendication 10 ou 1 1 , dans lequel on applique sur la donnée extraite (DR2) par la fonction de décodage (302) une fonction de détection d'erreur (303) apte à déterminer si la donnée extraite comporte des caractéristiques prédéfinies attendues, le procédé émettant un signal d'erreur lorsque la donnée extraite ne comporte pas ces caractéristiques.
13. Procédé de détection d'une erreur d'accès en lecture selon la revendication 12, la donnée ayant été enregistrée avec un procédé d'enregistrement selon l'une quelconque des revendications 7 à 9, le procédé comportant l'exécution d'un décodage à redondance apte à retrouver la donnée initiale (DATA) lorsque l'adresse de lecture (ADDR) de la donnée est identique à ladite première adresse, le procédé comprenant l'émission d'un signal d'erreur lorsque la fonction de détection d'erreur (303) n'est pas apte à retrouver ladite donnée initiale (DATA) à partir de la donnée extraite (DR2).
14. Dispositif de détection d'erreur dans la lecture d'une donnée (DR1 ) enregistrée dans un bloc mémoire (101 , 101 '), caractérisé en ce que le dispositif (100, 600) comprend un module de décodage par l'adresse (123) apte à recevoir la donnée lue (DR1 ) en mémoire (101 , 101 ') et à combiner cette donnée lue (DR1 ) avec l'adresse de lecture de cette donnée (ADDR) pour produire une donnée extraite (DR2) à tester (DR2), le dispositif comprenant des moyens de test (109) de cette donnée extraite (DR2) aptes à lever une erreur si l'adresse spécifiée pour la lecture (ADDR) est différente de l'adresse spécifiée lors de l'écriture de la donnée lue (DR1 ), ladite donnée lue (DR1 ) étant produite par une fonction de la valeur de l'adresse spécifiée pour son écriture en mémoire, ladite donnée lue ayant une dimension de stockage inférieure à la somme des dimensions de stockage de l'adresse (ADDR) et de la donnée extraite (DR2).
15. Dispositif de détection d'erreur selon la revendication 14, la mémoire (101 ) étant accessible en écriture, le dispositif (100, 600) comprenant également un codeur par l'adresse (121 ) apte à recevoir une donnée à enregistrer (DW1 ) et à la combiner avec une fonction de l'adresse d'écriture (ADDR) pour produire une donnée finale (DW2) à écrire en mémoire (101 ), ladite donnée finale ayant une dimension de stockage inférieure à la somme des dimensions de stockage de l'adresse d'écriture (ADDR) et de la donnée à enregistrer (DW1 ).
16. Module mémoire comprenant une mémoire et un dispositif de détection d'erreur selon la revendication 14 ou 15.
PCT/EP2013/062409 2012-06-14 2013-06-14 Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé WO2013186377A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1255590 2012-06-14
FR1255590A FR2992091B1 (fr) 2012-06-14 2012-06-14 Procede d'enregistrement de donnees, procede de detection des erreurs d'acces a une memoire et dispositif associe

Publications (1)

Publication Number Publication Date
WO2013186377A1 true WO2013186377A1 (fr) 2013-12-19

Family

ID=47351773

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2013/062409 WO2013186377A1 (fr) 2012-06-14 2013-06-14 Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé

Country Status (2)

Country Link
FR (1) FR2992091B1 (fr)
WO (1) WO2013186377A1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463210A1 (fr) * 1990-06-27 1992-01-02 International Business Machines Corporation Méthode et appareil de contrôle d'adresse et de contenu d'un dispositif de mémoire
EP1715424A2 (fr) * 2005-03-31 2006-10-25 Fujitsu Limited Circuit de commande de mémoire et procédé de détection d'erreurs d'adressage dans un circuit de commande de mémoire
US7203890B1 (en) * 2004-06-16 2007-04-10 Azul Systems, Inc. Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463210A1 (fr) * 1990-06-27 1992-01-02 International Business Machines Corporation Méthode et appareil de contrôle d'adresse et de contenu d'un dispositif de mémoire
US7203890B1 (en) * 2004-06-16 2007-04-10 Azul Systems, Inc. Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits
EP1715424A2 (fr) * 2005-03-31 2006-10-25 Fujitsu Limited Circuit de commande de mémoire et procédé de détection d'erreurs d'adressage dans un circuit de commande de mémoire

Also Published As

Publication number Publication date
FR2992091B1 (fr) 2015-07-03
FR2992091A1 (fr) 2013-12-20

Similar Documents

Publication Publication Date Title
FR3033927B1 (fr) Groupement des niveaux de lecture pour des performances de memoire flash accrues
US10803971B2 (en) Device for supporting error correction code and test method thereof
EP2264596A1 (fr) Procédé de détection d'une attaque par injection de faute d'un dispositif de mémoire, et dispositif de mémoire correspondant.
US20100332949A1 (en) System and method of tracking error data within a storage device
US20150161004A1 (en) Read buffer architecture supporting integrated xor-reconstructed and read-retry for non-volatile random access memory (nvram) systems
FR2726923A1 (fr) Groupe redondant de dispositifs a memoire a semi-conducteurs
US20160328285A1 (en) Error vector readout from a memory device
US20070260962A1 (en) Methods and apparatus for a memory device with self-healing reference bits
US20170286219A1 (en) Data storage device and operating method thereof
US9733870B2 (en) Error vector readout from a memory device
WO2003038620A2 (fr) Procede de memorisation de donnees avec correction d'erreur
US11640334B2 (en) Error rates for memory with built in error correction and detection
FR3100369A1 (fr) Procédé d’inversion sélective de mots à écrire dans une mémoire et dispositif pour sa mise en œuvre
FR2808904A1 (fr) Systeme d'acces a des memoires redondantes
FR3044817A1 (fr) Procede de gestion d'une ligne de bits defectueuse du plan memoire d'une memoire non volatile et dispositif de memoire correspondant
US9959166B2 (en) Error correction for non-volatile memory
WO2013186377A1 (fr) Procédé d'enregistrement de données, procédé de détection des erreurs d'accès à une mémoire et dispositif associé
US8028221B2 (en) Error correction and error detection method for reading of stored information data and a storage control unit for the same
EP2865100A1 (fr) Dispositif de correction de deux erreurs avec un code de distance de hamming trois ou quatre
KR20050064887A (ko) 오류 검출 능력이 강화된 플래시 메모리 및 다비트 오류검출 방법
EP3035135B1 (fr) Procédé d'arrêt d'urgence et système sécuritaire associé
EP2909725B1 (fr) Procédé et dispositif pour améliorer la fiabilité de mémorisation de données dans un disque dur comprenant plusieurs plateaux
FR3055714A1 (fr) Procede de correction d'erreur dans une memoire flash
EP3147811A1 (fr) Stockage et lecture d'un code d'authentification de message dans une memoire externe
FR3026870A1 (fr) Dispositif de gestion du stockage de donnees.

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13735218

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13735218

Country of ref document: EP

Kind code of ref document: A1