FR2594976A1 - Systeme de memoire a trois modules construit a l'aide de puces de memoire d'une largeur d'un symbole et presentant une caracteristique de protection entre les erreurs, chaque symbole etant constitue de 2i + 1 bits - Google Patents

Systeme de memoire a trois modules construit a l'aide de puces de memoire d'une largeur d'un symbole et presentant une caracteristique de protection entre les erreurs, chaque symbole etant constitue de 2i + 1 bits Download PDF

Info

Publication number
FR2594976A1
FR2594976A1 FR8702235A FR8702235A FR2594976A1 FR 2594976 A1 FR2594976 A1 FR 2594976A1 FR 8702235 A FR8702235 A FR 8702235A FR 8702235 A FR8702235 A FR 8702235A FR 2594976 A1 FR2594976 A1 FR 2594976A1
Authority
FR
France
Prior art keywords
bit
symbol
code
memory
matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR8702235A
Other languages
English (en)
Inventor
Willibrordus Johannes Van Gils
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
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 Philips Gloeilampenfabrieken NV filed Critical Philips Gloeilampenfabrieken NV
Publication of FR2594976A1 publication Critical patent/FR2594976A1/fr
Pending legal-status Critical Current

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/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error

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)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Un système de mémoire à trois modules est décrit dans lequel un mot de données de 2**i + 1 bits est stocké. La moitié du mot de données est stockée dans chacun des deux modules de mémoire. Un troisième module de mémoire est prévu dans lequel chacun des modules permet le stockage de symboles de 2**i + 1 bits. Un code de protection contre les erreurs est décrit qui, pour des symboles de cinq bits, présente un profil de distance minimum de 4, 2, 0 et pour des symboles de neuf ou de dix-sept bits, présente un profil de distance minimum de 6, 2, 0. Une erreur d'un seul bit peut donc être corrigée, une erreur d'un seul symbole peut être détectée et jusqu'à quatre erreurs de bits arbitraires peuvent être détectées. De plus, un décodeur simple et systématique est décrit. (CF DESSIN DANS BOPI)

Description

"Système de mémoire à trois modules construit à l'aide de puces
de mémoire d'une largeur d'un symbole et présentant une caracté-
ristique de protection contre les erreurs, chaque symbole étant constitué de 2i+1 bits"
ARRIERE-PLAN DE L'INVENTION.
La présente invention concerne une mémoire de système construite à l'aide de puces de mémoire d'une largeur d'un symbole et présentant une caractéristique de protection contre les erreurs. Des développements dans la technologie des mémoires ont abouti à des puces de stockage pouvant recevoir de multiples bits de données par emplacement de mémoire dans chaque puce et présentant de multiples sorties correspondantes. Des erreurs survenant lors du stockage de données dans ces mémoires sont, en général, classifiées comme étant dues à deux causes distinctes. L'une est un phénomène ambiant non destructif causé par l'impact de particules atomiques alpha. Ces particules, présentes dans un rayonnement atomique de fond ordinaire, accusent une certaine énergie par rapport au signal de données stocké dans la cellule. Lorsque ces cellules sont frappées par des particules atomiques alpha, les valeurs binaires stockées dans la cellule peuvent commuter vers une valeur opposée. Ceci provoque donc
une erreur de données. Ces erreurs sont, par consé-
quent, transitoires et n'influencent habituellement qu'un seul bit à la fois. Cette défaillance à de faibles valeurs des détails minimes du circuit survient
relativement fréquemment.
La seconde cause majeure d'erreurs est la défaillance physique réelle d'un des composants de la
mémoire. Cette défaillance produit une erreur perma-
nente ou "persistante". En général, cette dernière catégorie d'erreurs est relativement peu fréquente. Par ailleurs, de telles erreurs peuvent influencer un nombre quelconque de bits dans un symbole et, par
conséquent, ont une importance plus grande. Actuel-
lement, les symboles ont habituellement une largeur de 2i bits, o i peut avoir des valeurs de 1 à 4. De plus, des puces de mémoire avec des symboles de (2i+1) bits (c'est-à-dire 2i bits de données plus un bit de parité) ont été fabriquées, de sorte qu'au niveau d'une puce de mémoire, une erreur d'un seul bit dans un symbole peut être détectée. La présente invention utilise ce dernier type de puce de mémoire, mais en étendant le degré de
protection contre les erreurs.
RESUME DE L'INVENTION.
Il est donc nécessaire dans de tels systèmes de mémoire de détecter et de corriger toutes les erreurs d'un seul bit dans un mot de mémoire formé de trois symboles, de détecter toutes les erreurs dans lesquelles un seul symbole dans un mot comporte un nombre quelconque d'erreurs de bits (jusqu'à un byte complètement inversé) et, en outre, de détecter autant d'erreurs d'un seul bit coexistantes survenant dans des
symboles différents du même mot.
Le but de l'invention est atteint par un système de mémoire à trois modules, chaque module comportant un nombre égal d'emplacements de symboles de mémoire, chaque emplacement de symbole de mémoire comportant un même nombre de 2i+1 emplacements de bits de mémoire, un mot de mémoire contenant donc 3(2i+1) bits o 3 < i, ce système de mémoire comprenant des moyens d'entrée pour recevoir des mots d'utilisateur de 2(i+l) bits, des moyens de codage alimentés par les dits moyens d'entrée pour multiplier un mot d'utilisateur reçu par une matrice de générateur (GO) pour produire un mot de mémoire à stocker dans
trois emplacements de symboles de mémoire correspon-
dants, o (GO) = (P) x (G) x (Q), o (P) est une matrice régulière arbitraire de dimensions (2i+l) x (2i+l), (Q) est une matrice de permutation arbitraire de dimensions f(3x(2i+1)} x {3x(2i+1)J pour effectuer une permutation par bit dans un symbole de code et/ou une permutation par symbole dans un mot de code, le
choix de (P) et de (Q) comprenant des matrices d'iden-
tité, et o G est une matrice pour réaliser un code de protection contre des erreurs systématique par bit présentant un profil de distance minimum de (p, 2, 0) o p est au moins égal à cinq. L'invention procure une classe étendue de codes [ 51, 32] et E 27, 16 permettant de corriger des erreurs d'un seul bit, de détecter jusqu'à quatre erreurs de bit ou de détecter des défaillances d'une seule puce de mémoire, ainsi qu'une classe de codes [ 15, 8_ permettant de corriger des erreurs d'un seul bit, de détecter jusqu'à deux erreurs de bit ou de détecter des défaillances d'une seule puce de mémoire. De plus, la présente invention présente un procédé commode pour produire des codes qui possèdent des capacités de détection de deux, de trois
ou de quatre erreurs d'un seul bit. Les codes cons-
truits ont un caractère optimal dans le sens qu'il n'existe pas de codes 27, 26 7 ou 15, 8 _ dont les propriétés de correction/détection sont meilleures que celles des meilleurs codes présentés ci-après. Le code
51, 32] est aussi presque optimum.
ETAT CONNU DE LA TECHNIQUE.
A titre d'état connu de la technique, on peut citer en particulier la demande de brevet européen
825 correspondant à la demande de brevet des Etats-
Unis d'Amérique n0 391 062 qui décrit un système de correction d'une erreur d'un seul bit, de détection d'erreur de bit double, de détection d'erreur d'un seul byte dans un mot de mémoire de trois symboles de neuf bits chacun. Ainsi, l'invention procure une correction d'erreur améliorée: jusqu'à quatre erreurs de bit au lieu de deux seulement. De plus, le schéma de codage conforme à l'invention permet des décodeurs plus simples utilisant moins de matériel que celui qui est nécessaire pour la réalisation de type connu. D'autres aspects avantageux de l'invention sont cités dans les
revendications dépendantes.
BREVE DESCRIPTION DES DESSINS.
La description suivante donne d'abord des
définitions et des préliminaires données, puis dans le détail, la construction d'un code 27, 16_7, ensuite
les réalisations de codeur et de décodeur, et fina-
lement la construction de codes E 15,8J et 51, 31].
La description se réfère aux figures suivantes:
la Fig. 1 donne une définition d'un profil de distance minimum; la Fig. 2 illustre une matrice binaire pour une base normale de GF(28); les Fig. 3, 4 donnent des matrices Mb pour chacune des seize bases normales de GF(28); la Fig. 5 illustre une matrice de générateur G symbolique les Fig. 6a, 6b, 6c illustrent respectivement une matrice de générateur réelle, une matrice de vérification de parité symbolique et une matrice de vérification de parité réelle; les Fig. 7a à d illustrent la génération des signaux AO,..., A3; les Fig. 8a à 8c illustrent des exemples de vecteurs ul, V1, W_;
la Fig. 9 définit d'autres signaux intermé-
diaires; la Fig. 10 illustre la génération des signaux B1, Cl, D1; la Fig. 11 illustre un décodeur complet pour le code [ 27, 16]; les Fig. 12a, 12b illustrent deux autres
matrices de générateur symboliques.
DEFINITIONS ET PRELIMINAIRES.
Par w(x), on désigne le poids de Hamming d'un vecteur binaire x, c'est-àdire le nombre de composants (bits) dans x ayant la valeur 1. La longueur d'un code est le nombre de bits dans un mot de code, la dimension est le nombre de bits de données (non redondants) pouvant être dérivés d'un mot de code. Pour un code C
linéaire binaire [ 3m,k] de longueur 3m et de dimen-
sion k, tel que tous les mots de code c dans C sont répartis dans trois symboles c1, c2, c3 de longueur m, c = (cl, c2, c3), le profil de distance minimum d(C) = (d(ClO), d(CIl), d(C12)) est défini sur la Fig. 1. La première composante du profil de distance minimum est le poids minimum en bits du code. La seconde composante du profil de distance minimum est le poids minimum du code partiel dans lequel, dans chaque mot de code, le symbole de code le plus "lourd" a été supprimé et ainsi de suite. Le profil comporte donc autant d'éléments
pertinents qu'il y a de symboles dans un mot de code.
Chaque élément suivant du profil ne peut pas être supérieur à un élément précédent quelconque de ce profil. Un nombre quelconque d'éléments du profil peut
être égal à zéro.
A présent, dans la référence donnée plus haut, un code linéaire binaire [ 27, 16] est construit et comporte des mots de code formés de trois symboles de neuf bits et ayant un profil de distance minimum (4.,2,0). Ce profil de distance minimum garantit les propriétés suivantes pour le code: * correction d'erreur d'un seul bit, * détection d'erreur de deux bits,
* détection d'erreur d'un seul symbole.
La distance minimum pour l'ensemble du code est de quatre: cette valeur est suffisante pour la correction d'erreur d'un seul bit, la détection d'erreur de deux bits. L'élément suivant du profil de distance minimum est 2: cela signifie qu'une erreur arbitraire dans un symbole quelconque peut être détectée. D'autre part, si l'on ne tient pas compte d'un symbole (symbole d'effacement), cela signifie qu'une capacité de détection d'erreur d'un seul bit subsiste. Cette dernière particularité n'est cependant
pas utilisée ici.
Dans le paragraphe suivant, on construit des codes linéaires binaires (27, 16_ comportant des mots de code formés de trois symboles de 9 bits chacun et présentant un profil de distance minimum (6,2,0). Ce profil de distance minimum garantit les propriétés suivantes pour le code: * la correction d'erreur d'un seul bit, * la détection d'erreur de deux bits, * la détection d'erreur de trois bits, * la détecteur d'erreur de quatre bits,
* la détection d'erreur d'un seul symbole.
Pris isolément, le premier élément "6" du
profil de distance minimum permettrait aussi la correc-
tion de deux erreurs d'un seul bit et la détection de trois erreurs d'un seul bit. Ce dernier stratagème pourrait cependant mettre en danger la particularité de la détection d'erreur d'un seul symbole. Ainsi, on estime que la protection contre les erreurs détaillée plus haut serait plus utile dans la gestion de la mémoire. Les codes produits sont optimums en ce sens qu'un code linéaire binaire 27, 16_ quelconque comportant des mots de code formés de trois symboles de 9 bits a un profil de distance minimum (a,b,c) tel que a < 6, b. 2, c = 0. De plus, à partir des exemples particuliers de codes donnés, il est possible de construire de nombreux autres codes présentant soit les mêmes capacités de protection contre des erreurs, soit des capacités moindres, mais surpassant en cela encore les capacités des réalisations connues citées plus haut. Dans la mesure o la capacité est moindre, de tels codes peuvent être engendrés en superposant un ou deux bits de bruit sur la matrice de générateur, puis
en vérifiant si le niveau de protection reste correct.
On estime que le code donné ci-après est aussi optimum
pour un décodage aisé.
CONSTRUCTION DE CODES [ 27, 16] AYANT UN PROFIL DE
DISTANCE MINIMUM DE (6,2,0).
La matrice de générateur du code peut être écrite sous la forme: (MO Ml M2\ G =
M3 M4 M5
o chaque matrice Mi (i= 0,..., 5) est constituée de 2i rangées et de 2i+ 1 colonnes. La théorie générale des codes telle que celle donnée par F.J. Mac Williams et al., dans "The theory of error correcting codes", Amsterdam 1977 est considérée comme représentant l'état
général de la technique.
Les codes sont construits de la manière suivante: on admet que a soit un zéro du polynôme primitif p(x) = x8+x4+x3+x2+l sur GF(2), On définit c comme étant c= a85. a est un élément primitif de GF(28). Ce champ fini a 16 bases normales: Nb: ={ab2: i = 0,1,2,3,4,5,6,7}
pour b = 5,9,11,15,21,29,39,43,47,53,55,61,63,87,91,95.
Ces valeurs sont prises dans la littérature concernant la théorie de codage. GF(24) a deux bases normales, GF(216) en a une multitude; voir Peterson and Weldon, Theory of Error Correcting Codes, MIT 1975 (2ème édition). En lieu et place de ce qui précède, c, c2 = a170 conviendrait également; il est à noter que 85 = 255: 3. Pour chacune de ces bases normales, on définit à présent une matrice binaire Mb de 8 sur 8
comme illustré sur la Fig. 2.
Dans cette matrice, mij, i,j dans{(0, 1,..., 7)}sont définis par les relations: i c ab2 = L- mijab2, i =0,1,2,...,7 j=0
Cela signifie que (miO,mil,..., mi7) est la repré-
sentation binaire de cab2 par rapport à la base nor-
male Nb.
Ces matrices Mb satisfont aux relations Mb = I et I + Mb + Mb = 0. Sur la Fig. 3, les matrices Mb sont données pour b dans une série A5: = {5,11,15, 29,47,53,63,87}. La Fig. 4 donne les matrices Mb pour b dans une série
A4: = [9,21,39,43,55,61,91,95.
Les propriétés suivantes sont nécessaires: * Propriété 1: Les codes linéaires binaires (16, 8 J avec la matrice de générateur [ I Mb] pour b dans A5 ont une distance de bits minimum de 5. Ceci peut être
montré par une vérification directe.
* Propriété 2: Les codes linéaires binaires C 16, 8 _ avec la matrice de générateur [ I Mb7 pour b dans A4 ont une distance de bits minimum de 4. Les mots de code de poids 4 ont une composante égale à 1 dans les huit premières positions et trois composantes égales à 1
dans les huit dernières positions ou inversement.
* Preuve: Ceci peut être facilement vérifié à l'aide des matrices données sur la Fig. 4. Pour une matrice binaire A, en admettant que pT(A) désigne le vecteur de colonne des parités de rangée de A, c'est-à-dire: p(A)i = 5j Aij.
On spécifie à présent le théorème suivant.
* Théorème 3: Pour b dans A4 ou A5, M: = Mb, le code linéaire binaire /727, 16 3 C, avec la matrice de générateur représentée sur la Fig. 5, a un profil de distance minimum (6,2,0) si chaque mot de code de c est considéré comme étant formé de trois symboles de 9 bits (I désigne la matrice d'identité de 8 sur 8, 0 désigne
la matrice de 8 sur 8 ne comprenant que des zéros).
* Preuve: I1 découle des propriétés 1 et 2 que le code / 16, 8] avec la matrice de générateur [I ET(I) | M 2T(M) J a une distance de bits minimum de 6. Etant donné que [ M2 I3 = M2 C I Mj, le code avec la matrice de générateur E I PT(I) I M2 pT(M2) J a aussi une distance de bits minimum de 6. Admettons à présent que c = (cl, c2, c3) = (ml, m2)G soit un mot de code du code C, o Cl, c2 et C3 sont des vecteurs binaires de longueur 9 et m1 et m2 sont des vecteurs de longueur 8. On distingue trois cas: A. m1 e O, m2 = O. Dans ce cas c = ml I pT(I)j
o pT(o)I M pT(M)3.
Dès lors w(c) >, 6.
B. m1 = 0, m2 # O. Dans ce cas c = m2 I pT(I)I
O pT(0) I M2 pT(M2).
Dès lors w(c) > 6 C. m1 O, m2 0 O
C1. Si C3 Y 0, w(ci)>,2 pour i = 1,2,3.
Ainsi w(c) > 6.
C2. Si c3 = O, m1: m2M, et dès lors
c = (m2M P(2M) I m2 p(m2) O 0).
w(c) = w (m2 M, pT(M) I, pT(I) J) > 6.
-
Il résulte de ces observations que le code C a un profil de distance minimum (6,2,0). Les Fig. 6a, 6b, 6c donnent la matrice de générateur réelle G et la matrice de vérification de parité H d'un code ainsi dérivé. On a choisi ici pour b, la valeur 9 (Fig. 4, premier cas). De plus, par souci de clarté, au lieu de zéros binaires, on utilise des points dans une matrice de vérification de parité du code construit dans le
théorème 3.
En général, la matrice de générateur de code peut être écrite comme un produit de trois matrices r PJ x _ G x Q]. Dans ce produit, E P J est une matrice régulière 16x16 quelconque, [G]est une matrice de générateur 16x27 comme construite plus haut, ou selon un raisonnement semblable pour l'une quelconque des autres bases normales, ou modifiée de manière à ne
perdre qu'une partie limitée de la capacité de protec-
tion contre les erreurs. Q est une matrice de permu-
tation 27x27. Cette dernière matrice est constituée de trois rangées et de trois colonnes de sous-matrices qui sont chacune une sous-matrice 9x9. Les sous-matrices 9x9 sont positionnées d'une manière telle que chaque rangée ou colonne de trois sous-matrices comporte exactement une matrice de sous-permutation différente
de zéro, toutes les autres sous-matrices étant consti-
tuées exclusivement de zéros. Chaque matrice de sous-
permutation agit sur exactement un symbole associé.
Chaque rangée et chaque colonne d'une quelconque matrice de souspermutation est formée de huit zéros et
d'exactement un seul un.
La matrice de vérification de parité ainsi
dérivée peut être utilisée pour le décodage par syn-
dromes du code. Le syndrome ne comprenant que des zéros indique un mot de code correct. Les 27 syndromes d'erreurs d'un seul bit sont utilisés pour corriger les il
erreurs associées. Il reste 2048-1-27=2020 syndromes.
Ils sont utilisés pour détecter toutes les erreurs d'un seul symbole, toutes les erreurs de bits doubles, triples et quadruples, et aussi de la plupart des autres configurations d'erreurs éventuelles (mais pas de la totalité de celles-ci). En fait, il est très improbable qu'une quelconque configuration d'erreurs non comprise dans la liste indiquée plus haut produise l'une quelconque des 28 configurations de syndrome qui donneraient finalement un mot d'utilisateur correct
(même dans le cas o tous les motifs d'erreurs possè-
dent la même probabilité, cette probabilité ne dépasse pas environ 28/2048, soit environ 1%. Le décodeur peut être réalisé comme sur la Fig. 2 de la référence, à l'aide de 27 circuits-portes ET à 11 voies. Mais une réalisation utilisant moins de matériel est décrite
dans la section suivante.
De plus, il convient de remarquer que les codes construits dans le théorème 3 sont optimums, en ce sens que pour n'importe quel code linéaire binaire E 27, 16 2 comportant des mots de code formés de trois symboles de 9 bits, le profil de distance minimum (a,b,c) satisferait à a < 6, b < 2, c = 0. Il en est ainsi parce que tout code linéaire binaire f27, 16 3 présente une distance de bits minimum inférieure ou égale à 6 et qu'un code linéaire binaire f18, 16] présente une distance de bits minimum inférieure ou
égale à 2.
MISE EN OEUVRE DE CODEUR ET DE DECODEUR.
Dans cette section, on décrit la mise en oeuvre d'un codeur et d'un décodeur pour un code E 27, 16 3 (dans lequel chaque mot de code est considéré
comme étant formé de trois symboles de 9 bits) cons-
truit plus haut en prenant b = 9. Une matrice de générateur G de ce code est donnée sur la Fig. 6a. Il en résulte une construction directe du codeur qui ne doit réaliser que des opérations de multiplication de matrices. Une matrice de vérification de parité H de ce code est donnée sur la Fig. 6c. La Fig. 6c montre que la matrice de vérification de parité H présente une forme bien structurée. En fait, deux blocs seulement de
8x8 éléments d'agencement irrégulier se présentent.
Cette forme structurée est utilisée dans la conception du décodeur. Soit s = s(r) le syndrome d'un vecteur r reçu:
s = (sl,s2,..., Sll)T = HZT.
Les syndromes {s = HeT I w (e) = l} sont utilisés pour la correction d'erreurs d'un seul bit. Les syndromes différents de zéro restants sont utilisés pour la détection d'erreurs, sans spécifier ainsi la nature de
l'erreur.
Définissons les signaux A0,Al,A2,A3 de la manière suivante:
A0 = S1S2S3,
A1 _
A1 = SlS2S3, A2 = s152S3,
A3 = S1S253.
Les bits de syndromes sl, s2, s3 sont ici en fait des bits de parité sur le symbole de code associé et Si est la valeur inverse de si. Leur réalisation à l'aide de circuits-portes NON-OU est indiquée sur les Fig. 7a à
7d. Si aucune erreur ne se présente, A0 est égal à 1.
Si une erreur d'un seul bit se présente, A1,A2,A3 désignent le symbole dans lequel elle se présente: Ai = 1 si cette erreur d'un seul bit se situe dans le symbole i. Considérons à présent les vecteurs uj, vj, wj de longueur 8 qui sont les 8 derniers bits des syndromes respectifs résultant des erreurs d'un seul bit dans les positions j, j+9 et j+18 respectivement (j=l, 2,..., 8). Etant donné que M2 = I+M, il s'avère que uj et vj ne diffèrent que d'une position et que leur différence est exactement wj- On utilise cet état de fait dans la construction du décodeur. Par exemple, pour j=l, les vecteurs ul, vl, wl ont les formes indiquées sur les Fig. 8a, 8b, 8c, c'est-à-dire qu'ils correspondent aux premières colonnes respectives des
matrices inférieures 8x9 de la Fig. 6c.
La Fig. 9 montre les définitions des autres
signaux intermédiaires Xl,Yl,Zl,Bl,Cl,Dl,SEl,SE10,SE19.
Les six premiers de ces signaux servent à détecter les vecteurs ul, vl, wl indiqués plus haut, tout en visant
a l'utilisation d'un petit nombre de circuits-portes.
Ainsi, X1 signale les quatre zéros dans vl. Ensuite, Y1 signale les trois uns dans ul. Finalement, Z1 signale qu'aucun de ces trois derniers uns ne se présente. La détection complète de ul, M1, wl est effectuée par les signaux B1, Cl, D1. La vérification de l'apparition dans le symbole correct est effectuée par des signaux SE1 (erreur simple), SE10, SE19. Par conséquent, si une erreur de bit se produit en position 1, SE1 = 1, si une erreur de bit se produit en position 10,
SE10 = 1,
si une erreur de bit se produit en position 19,
SE19 = 1.
1 Une réalisation des formules Xl,Y1,Zl,B1,Cl,Dl précitées est donnée dans la Fig. 10. Les entrées du bloc sont les huit bits s4, S5,..., sll du vecteur de syndrome. Les sorties du bloc sont les trois bits Bl,C1,D1. L'intérieur du bloc est formé de trois
circuits-portes NON-ET et de trois circuits-portes NON-
OU et a une profondeur de deux circuits-portes. Ce bloc est qualifié de BLOC 1. D'autres réalisations avec d'autres circuits-portes sont possibles, nous n'en mentionnons qu'une. La production de signaux B2...8, C2...8, D2...8 résulte directement de l'agencement de
la matrice H de la Fig. 6c; le nombre de circuits-
portes NON-ET requis pour chaque jeu pourrait varier.
DESCRIPTION D'UN DECODEUR COMPLET.
La Fig. 11 illustre un (dé)codeur complet du code [ 27, 16 indiqué plus haut. L'entrée 100 reçoit
les données d'utilisateur d'une largeur de 16 bits.
L'élément 102 est le générateur de bits de vérifi-
cation, dans lequel les 11 bits de vérification, y compris les trois bits de parité par symbole sont produits. Il est à noter que le code est systématique à deux niveaux, du fait que les bits d'utilisateur ne sont pas modifiés et aussi du fait que les huit bits autres que de parité font eux-mêmes partie d'un symbole
de code systématique ( 9, 8]. Si un code non systéma-
tique était utilisé, l'élément 102 comprendrait un plus grand nombre de sorties (un nombre quelconque de 12 à 27). L'élément 104 est le système de mémoire à trois modules. Il est à noter que la mémoire peut être formée de plusieurs bancs de mémoire, chaque banc étant formé
de trois modules de mémoire.
A la sortie de la mémoire 104, le générateur de syndromes 106 produit, par multiplication de
matrices, les onze bits de syndromes Sl...11 indiqués.
Les blocs 108,..., 114 correspondent aux Fig. 7a à 7d,
respectivement, pour produire des signaux A0,..., A3.
Le bloc 116 correspond exactement à la Fig. 10. D'une manière analogue à celle de la Fig. 10, les blocs 118 à dérivent X2...X8; Y2...Y8; Z2...Z8, B2...B8;
C2...C8; D2...D8.
Ces blocs peuvent tous contenir trois cir-
cuits-portes NON-ET et trois circuits-portes NON-OU et avoir une profondeur de deux circuits-portes. L'élément 132 est un circuit-porte NON-OU à huit entrées et signale si aucun des bits de syndromes S4...Sll n'est
un un logique. 24 circuits-portes ET 134 sont prévus.
Les trois premiers reçoivent à l'entrée B1, Cl, D1 et Ai, A2, A3, respectivement et produisent les signaux SE1, SE10, SE19, respectivement. Les trois suivants sont alimentés par le bloc 118 et par des blocs 110, 112, 114 et ainsi de suite. Trois circuits-portes ET 136 sont finalement alimentés en parallèle par la sortie du circuit-porte NON-OU 132 par les signaux Al, A2, A3 respectifs, en vue de produire les signaux SE9, S18 et SE28. Des erreurs d'un seul bit sont corrigées
parce qu'une erreur d'un seul bit en position j impli-
que nécessairement que SEj=1 et SEi=0 pour i=j. Le mot de code de 27 bits de largeur est transféré du bloc de stockage 104 au correcteur d'erreurs 138 qui est formé de 27 circuits-portes OU-EX à deux entrées recevant chacune un bit de code et un signal de détection d'erreur d'un seul bit correspondant SE pour inverser le bit de code. La sortie 140 peut être connectée à un dispositif d'utilisateur. De cette façon, les bits redondants sont aussi mis à jour pour des erreurs d'un seul bit. Si cela n'est pas nécessaire, les onze circuits-portes OU-EX associés et les entrées à partir des éléments 104, 134, 136 sont omis. Le reste de
l'agencement n'est pas modifié.
L'élément 142 est un circuit-porte NON-OU de
27 bits de largeur qui peut être construit par con-
nexion de circuits-portes moins larges dans une struc-
ture libre. La sortie 144 signale "Pas d'erreur d'un seul bit" (soit zéro erreur, soit un motif d'erreurs dont la différence d'avec un motif d'erreurs d'un seul bit) est établie par détection. Le circuit-porte NONOU détecte en 132 qu'aucun des bits de syndromes S4...Sll n'est un "un". Le circuit-porte NON-OU 108 agit de la même manière pour les bits de syndromes S1...S3. Le circuit-porte NON-ET 146 engendre donc une fonction OU de tous les bits de syndromes. Un signal "un" sur la sortie du circuitporte ET 148 signale donc un syndrome différent de zéro, qui n'a néanmoins pas été reconnu
comme une erreur d'un seul bit particulière quelconque.
Cela étant, une erreur impossible à corriger est détectée de cette façon. Il convient de noter que la profondeur logique du dispositif de reconnaissance d'erreurs est faible: deux circuits-portes dans les
blocs 116-130, un circuit-porte dans chacun des cir-
cuits-portes ET 134, 138 et un ou quelques uns dans le
circuit-porte NON-OU 142, un de plus du fait du cir-
cuit-porte ET 148.
CONSTRUCTION DE CODES [15, 8] AYANT UN PROFIL DE
DISTANCE MINIMUM (4,2,0).
* Théorème 4: Si M est une matrice binaire de 4x4 telle que M3 = I et que le code produit par [I M} ait une distance de bits minimum de 3, le code linéaire binaire C [ 15, 8], avec la matrice de générateur indiquée sur la Fig. 12a, a un profil de distance
minimum (4,2,0) si chaque mot de code de C est consi-
déré comme étant formé de trois symboles de 5 bits.
* Prèuve: Analogue à la preuve du théorème; Des matrices M satisfaisant aux conditions du théorème 4 sont construites d'une manière correspondant à celle indiquée plus haut pour un format de code différent. Les codes construits dans le théorème 4 sont optimums.
CONSTRUCTION DE CODES 51, 21] PRESENTANT UN PROFIL
DE DISTANCE MINIMUM (6,2,0).
* Théorème 5: Si M est une matrice binaire de 16x16 telle que M3 = I et que le code produit par EI M] ait une distance de bits minimum d'au moins 5, le code linéaire binaire C E 51,32], avec la matrice de générateur indiquée dans la Fig. 12b a un profil de distance minimum (6,2,0) si chaque mot de code de C est considéré comme étant formé de trois symboles de
17 bits. En fait, les Fig. 5, 12a, 12b sont identiques.
* Preuve: Analogue à la preuve du théorème 3.
Des matrices M satisfaisant aux conditions du théorème 5 sont construitesd'une manière correspondant a celle décrite plus haut. D'une manière analogue, il est possible de calculer des codes pour des mots de mémoire plus larges, par exemple un code de (99, 64). En général, les capacités de détection d'erreurs augmentent avec la
longueur des mots.
R E V E N D I CATIONS
___________________________
1.- Système de mémoire à trois modules, chaque module comportant un nombre égal d'emplacements de symboles de mémoire, chaque emplacement de symbole de mémoire comportant un même nombre de 2i+1 emplacements de bits de mémoire, un mot de mémoire contenant donc 3(2i+l) bits o 3 < i, ce système de mémoire comprenant
des moyens d'entrée pour recevoir des mots d'utili-
sateur de 2(i+l) bits, des moyens de codage alimentés par les dits moyens d'entrée pour multiplier un mot d'utilisateur reçu par une matrice de générateur (GO) pour produire un mot de mémoire à stocker dans trois emplacements de symboles de mémoire correspondants, o
(GO) = (P) x (G) x (Q), o (P) est une matrice régu-
lière arbitraire de dimensions 2i+1 deux fois, (Q) est une matrice de permutation arbitraire de dimensions {(3x(2i+1)] x {3x(2i+1)} pour effectuer une permutation par bit dans un symbole de code et/ou une permutation par symbole dans un mot de code, le choix de (P) et de (Q) comprenant des matrices d'identité, et o G est une matrice pour réaliser un code de protection contre des erreurs systématique par bit présentant un profil de distance minimum de (p, 2, 0) o p est au moins égal à
cinq.
2.- Système de mémoire à trois modules, chaque module comportant un nombre égal d'emplacements de symboles de mémoire, chaque emplacement de symbole de mémoire comportant un même nombre 2i+1 emplacements de bits de mémoire, un mot de mémoire contenant donc 3(2i+1) bits o i=2, le système de mémoire comprenant
des moyens d'entrée pour recevoir des mots d'utili-
sateur de 2(i+l) bits, des moyens de codage alimentés par les dits moyens d'entrée pour multiplier un mot d'utilisateur reçu par une matrice de générateur (GO) en vue de produire un mot de mémoire à stocker dans
trois emplacements de symboles de mémoire correspon-
dants, o (GO) = (P) x (G) x (Q), o (P) est une matrice régulière arbitraire de dimensions (2i+l) x (2i+1), (Q) est une matrice de permutation arbitraire de dimensions {(3x(2i+1)} x {3x(2i+1)} pour effectuer une permutation par bit dans un symbole de code et/ou une permutation par symbole dans un mot de code, le
choix de (P) et de (Q) comprenant des matrices d'iden-
tité, et o G est une matrice pour réaliser un code de protection contre des erreurs systématique par bit présentant un profil de distance minimum de (p, 2, 0)
o p est au moins égal à quatre.
3.- Système de mémoire à trois modules suivant la revendication 1, dans lequel p est égal à au
moins six.
4.- Système de mémoire à trois modules suivant
l'une quelconque des revendications 1, 2 ou 3, dans
lequel la matrice de générateur (G) a la forme ( T(I) 0 pT(0) M T(M) Y T(0) I eT(I) M2 ÉT(M2) o I est une matrice d'identité de 2i x 2i entrées, 0 est une matrice ne comprenant que des zéros de 2i x 2i entrées, pT(I) est une colonne de générateur de parités de tous des uns pour générer un bit de parité sur une première moitié du mot de données et sur une seconde moitié du mot de données respectivement, PT(o) est une colonne de tous des zéros, M est une matrice de redondance de base, M2 est la matrice carrée de M et eT(M) et pT(M2) sont les colonnes associées pour la génération d'un bit de parité sur celles-ci, et o
I + M2 = 0.
5.- Mémoire à trois modules suivant la reven-
dication 4, dans laquelle (M) x (M) x (M) est égal à
une matrice d'identité (I) et (M) comporte des compo-
sants mj,k, o O < j, k 4 2i-1 et 2i-1 cab.2 = 2 mjkabe2, k=0
ce qui signifie que (mj,O...mj,2i-l) est la repré-
J
sentation binaire de cab.2 par rapport à la base nor-
maie Nb du champ de Galois GF(221) en question o a est un zéro du polynome primitif associé et c est une
puissance prédéterminée de ce zéro.
6.- Mémoire à trois modules suivant la reven-
dication 5, dans laquelle i=3, p(x) = x8 + x4 + x3 + x2
+ 1 sur GF(2) et c=a85 ou c=a170.
7.- Mémoire à trois modules suivant l'une
quelconque des revendications 1 à 6, ce système de
mémoire comportant un dispositif décodeur couplé à une sortie du système de mémoire pour décoder un mot de code reçu comme étant protégé par un code défini par la matrice de générateur (G), le décodeur comportant un dispositif générateur de syndromes (106) couplé à la sortie pour produire 3(2i+1) - 2i+1 bits de syndromes, un premier dispositif détecteur (108, 132) alimenté par le générateur de syndromes pour détecter un syndrome différent de zéro, un deuxième dispositif détecteur (110, 112, 114) alimenté par le générateur de syndromes pour détecter une situation dans laquelle un seul symbole de mot de code présente une parité incorrecte
et indiquant ce symbole de code, un troisième dispo-
sitif détecteur (116, 130) alimenté par le générateur de syndromes pour indiquer provisoirement un numéro d'ordre d'un seul bit de code erroné dans son symbole de code, un dispositif de mise en corrélation (134,
136) alimenté par le premier, le deuxième et le troi-
sième dispositif détecteur pour mettre en corrélation un numéro d'ordre indiqué et un symbole de code indiqué et ensuite produire un indicateur d'erreur d'un seul bit, un premier dispositif de signalisation (142, 148) alimenté par le dispositif de mise en corrélation et par le premier dispositif détecteur pour, dans le cas d'un syndrome différent de zéro et en l'absence d'un indicateur d'erreur d'un seul bit, signaler une erreur
impossible à corriger.
8.- Système de mémoire à trois modules suivant la revendication 7, comprenant, en outre, un second dispositif de signalisation (142) alimenté par le dispositif de mise en corrélation pour signaler une "situation de pas d'erreur d'un seul bit" au premier
dispositif de signalisation.
FR8702235A 1986-02-25 1987-02-20 Systeme de memoire a trois modules construit a l'aide de puces de memoire d'une largeur d'un symbole et presentant une caracteristique de protection entre les erreurs, chaque symbole etant constitue de 2i + 1 bits Pending FR2594976A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/833,644 US4713816A (en) 1986-02-25 1986-02-25 Three module memory system constructed with symbol-wide memory chips and having an error protection feature, each symbol consisting of 2I+1 bits

Publications (1)

Publication Number Publication Date
FR2594976A1 true FR2594976A1 (fr) 1987-08-28

Family

ID=25264938

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8702235A Pending FR2594976A1 (fr) 1986-02-25 1987-02-20 Systeme de memoire a trois modules construit a l'aide de puces de memoire d'une largeur d'un symbole et presentant une caracteristique de protection entre les erreurs, chaque symbole etant constitue de 2i + 1 bits

Country Status (6)

Country Link
US (1) US4713816A (fr)
JP (1) JPS62203255A (fr)
DE (1) DE3702574A1 (fr)
FR (1) FR2594976A1 (fr)
GB (1) GB2187007B (fr)
SE (1) SE8700712L (fr)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4862463A (en) * 1987-07-20 1989-08-29 International Business Machines Corp. Error correcting code for 8-bit-per-chip memory with reduced redundancy
JPH0697559B2 (ja) * 1987-09-24 1994-11-30 三菱電機株式会社 半導体記憶装置
US5014273A (en) * 1989-01-27 1991-05-07 Digital Equipment Corporation Bad data algorithm
US5291498A (en) * 1991-01-29 1994-03-01 Convex Computer Corporation Error detecting method and apparatus for computer memory having multi-bit output memory circuits
US5774481A (en) * 1995-03-31 1998-06-30 International Business Machines Corporation Reduced gate error detection and correction circuit
SG76501A1 (en) * 1996-02-28 2000-11-21 Sun Microsystems Inc Error detection and correction method and apparatus for computer memory
US6505318B1 (en) * 1999-10-01 2003-01-07 Intel Corporation Method and apparatus for partial error detection and correction of digital data
US6274857B1 (en) * 2000-02-10 2001-08-14 Inductoheat, Inc. Induction heat treatment of complex-shaped workpieces
US6519734B1 (en) * 2000-05-17 2003-02-11 Trw Inc. Single bit error correction, double burst error detection technique
US7177364B2 (en) * 2002-01-10 2007-02-13 The Boeing Company System, decoder and method for transmitting, receiving and decoding high-speed digital data signals with reduced electromagnetic emissions
TWI257085B (en) * 2002-01-21 2006-06-21 Koninkl Philips Electronics Nv Method of encoding and decoding
US7398449B1 (en) 2004-06-16 2008-07-08 Azul Systems, Inc. Encoding 64-bit data nibble error correct and cyclic-redundancy code (CRC) address error detect for use on a 76-bit memory module
IE20050277A1 (en) * 2005-05-04 2006-11-29 Nat Univ Ireland Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US8539321B2 (en) * 2010-11-10 2013-09-17 Infineon Technologies Ag Apparatus and method for correcting at least one bit error within a coded bit sequence

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0100825A2 (fr) * 1982-06-22 1984-02-22 International Business Machines Corporation Vraie correction d'erreur simple et système de détection d'erreur multiple
EP0166269A2 (fr) * 1984-06-29 1986-01-02 International Business Machines Corporation Méthode et systéme de correction d'erreur pour puces à circuits intégrés à sorties à bits multiples

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2528613B1 (fr) * 1982-06-09 1991-09-20 Hitachi Ltd Memoire a semi-conducteurs
US4561095A (en) * 1982-07-19 1985-12-24 Fairchild Camera & Instrument Corporation High-speed error correcting random access memory system
US4562576A (en) * 1982-08-14 1985-12-31 International Computers Limited Data storage apparatus
US4547882A (en) * 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
US4569052A (en) * 1983-07-14 1986-02-04 Sperry Corporation Coset code generator for computer memory protection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0100825A2 (fr) * 1982-06-22 1984-02-22 International Business Machines Corporation Vraie correction d'erreur simple et système de détection d'erreur multiple
EP0166269A2 (fr) * 1984-06-29 1986-01-02 International Business Machines Corporation Méthode et systéme de correction d'erreur pour puces à circuits intégrés à sorties à bits multiples

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IBM JOURNAL OF RESEARCH AND DEVELOPMENT, vol. 28, no. 2, mars 1984, pages 124-134, Armonk, New York, US; C.L. CHEN et al.: "Error-correcting codes for semiconductor memory applications: A state-of-the-art review" *
PHILIPS JOURNAL OF RESEARCH, vol. 41, no. 4, 1986, pages 391-399, Eindhoven, NL; W.J. VAN GILS: "An error-control coding system for storage of 16-bit words in memory arrays composed of three 9-bit wide units" *
THE FOURTEENTH INTERNATIONAL CONFERENCE ON FAULT-TOLERANT COMPUTING (Digest of papers), Florida, 20-22 juin 1984, pages 88-93, IEEE, New York, US; S. KANEDA: "A class of odd-weight-column SEC-DED-DbED codes for memory system applications" *

Also Published As

Publication number Publication date
GB2187007A (en) 1987-08-26
SE8700712L (sv) 1987-08-26
GB8704010D0 (en) 1987-03-25
DE3702574A1 (de) 1987-09-03
US4713816A (en) 1987-12-15
SE8700712D0 (sv) 1987-02-20
GB2187007B (en) 1989-11-22
JPS62203255A (ja) 1987-09-07

Similar Documents

Publication Publication Date Title
FR2594976A1 (fr) Systeme de memoire a trois modules construit a l&#39;aide de puces de memoire d&#39;une largeur d&#39;un symbole et presentant une caracteristique de protection entre les erreurs, chaque symbole etant constitue de 2i + 1 bits
JPS59197940A (ja) 誤り検出・補正メモリ
EP2394366B1 (fr) Procede de codage correcteur d&#39;erreurs avec bits de parite totale
CN111240597A (zh) 存储数据的方法、装置、设备和计算机可读存储介质
US6539513B1 (en) Dual functioning symbol error correction code
FR2885708A1 (fr) Dispositif et procede pour determiner une position d&#39;une erreur de bit dans une sequence de bits
JPH01158698A (ja) 半導体メモリ
JP2506936B2 (ja) メモリの誤り検査方式
EP2583177B1 (fr) Procede de protection de memoire numerique et dispositif apparente
US8245106B2 (en) Method for error correction and error detection of binary data
Wolf An introduction to tensor product codes and applications to digital storage systems
FR2992504A1 (fr) Dispositif et procede pour la correction d&#39;erreurs dans un mot de code
US9520899B2 (en) Method for generating a maximized linear correcting code, method and device for decoding such a code
Bentoutou A real time low complexity codec for use in low Earth orbit small satellite missions
JP2009211780A (ja) アドレスエラー検出装置、アドレスエラー検出方法
Stiffler Coding for random-access memories
Bentoutou et al. Design implementation of a quasi-cyclic codec for random access memories on-board Alsat-1
RU2297030C2 (ru) Самокорректирующееся устройство хранения информации
EP1300953A1 (fr) Code de détection et/ou de correction d&#39;erreurs à haute efficacité
RU2297034C2 (ru) Отказоустойчивое устройство хранения информации
WO2010128068A1 (fr) Procede de protection de circuits electroniques, dispositif et systeme mettant en œuvre le procede
RU2297032C2 (ru) Самокорректирующееся запоминающее устройство
RU2297031C2 (ru) Отказоустойчивое устройство
RU2297033C2 (ru) Самокорректирующееся устройство
Bentoutou Efficient memory error coding for space computer applications