Brevet FR2840445A1 — publié le 20031205

caracterise par le fait qu'il est realise sous forme de circuit integre. Circuit memoire comportant un code correcteur d'erreur Domaine technique de ['invention La presente invention concerne les circuits memoires et notamment un circuit memoire dote d'un systeme de code correcteur d'erreur. Etat de la technique La montee en puissance des systemes informatiques et l'accroissement de leur frequence de fonctionnement augmentent considerablement leur sensibilite aux erreurs susceptibles d'entacher les donnees. Ceci est d'autant plus marque que la miniaturisation des composants eiectroniques reduit la dimension des composants electroniques contenus dans les circuits Very Large Systems Integration (V.L.S.I.) et en particulier celle des circuits memoires Read Access Memory (R.A.M) qui y vent integres. On constate ainsi que les memoires statiques qui presentent des capacites de charge de plus en plus faibles avec ['evolution des technologies deviennent particulierement sensibles aux perturbations et aux champs electromagnetiques et cela constitue bien evidemment une source importante d'erreurs venant perturber le bon fonctionnement des circuits electroniques. On se premunit classiquement des erreurs fugitives ou aleatoires dans les so circuits memoires en dotant ces derniers de systemes de correction d'erreur bases sur des codes correcteurs d'erreurs ou E. C. C. ( ou Error Correcting Codes). Comme cela est connu, on introduit une information redondante - sous la forme d'un code ST - Ol-GRI-276 - 2 - 2840445 ECC - en sorte qu'a ['extraction on puisse par calcul verifier l'integrite de ['information voire, meme, retablir un ou plusieurs bits errones. La figure 1 illustre une architecture classique de circuit memoire dote d'un tel systeme de correction d'erreur. Les donnees vent presentees via un bus d'entree 2 (par exemple de 32 bits) a une memoire statique RAM 1, ainsi qu'a un encodeur 4 qui calcule un code correcteur d'erreur et ['ensemble est alors stocke dans la memoire 1. Lors d'une operation de lecture, un decodeur effectue a nouveau le calcul du code correcteur d'erreur en sorte que l'on peut alors comparer- au moyen o d'un comparateur 6 - le code attendu et le code effectivement stocke en memoire. Toute difference est alors interpretee commeune erreur et selon le code employe on peut detecter, voir corriger une ou plusieurs erreurs. L'emploi d'un code correcteur d'erreur dans un circuit memoire donne en general toute satisfaction et notamment dans les systemes sensibles, tels que les serveurs de telecommunication et les routeurs. On remarque cependant que l'emploi d'un tel systeme vient classiquement penaliser la vitesse de fonctionnement du systeme. En effet, si l'on considere par exemple un circuit presentant une frequence de fonctionnement de 200 Mhz, on dispose d'une periode de 5 nano secondes - c'est a dire tres peu de temps - pour y inserer le temps de calcul necessaire a l'encodeur 4. Les circuits memoires appeles a fonctionner a haute vitesse se present done mal a l'emploi d'un code correcteur d'erreur et cela est d'autant plus genant que l'on rencontre aujourd'hui bien des applications pour lesquelles la vitesse de fonctionnement va de pair avec la securite et l'integ rite des don nees. Le probleme a resoudre par ['objet de la presente demande consiste en la realisation d'une architecture de circuit memoire particulierement adaptee aux so vitesses elevees et qui permette ['integration d'un systeme de code correcteur d'erreurs. ST - O l -GR I -276 Expose de ['invention La presente invention a pour but de proposer une architecture de memoire s adaptee a ['usage d'un code correcteur d'erreur autorisant une frequence de fonctionnement elevee. C'est un autre but de la presente invention que de realiser un circuit de memoire particulierement performant dote d'un systeme de correction d'erreurs. L'invention realise ces buts au moyen d'un circuit memoire dote d'un systeme de correction d'erreur comportant un bus d'adresse, un bus de donnees en entree, un bus de donnees en sortie. Le circuit comporte une memoire qui comprend son propre bus d'adresse, son bus de donnees en entree et en sortie, ainsi qu'un circuit correcteur d'erreur comportant notamment un encodeur ECC. Le circuit comporte un ensemble de decalage (ou etage de pipe/ire) d'adresses permettant decaler les operations d'ecriture pour un cycle donne au prochain cycle d'ecriture. Les operations de lecture restent inchangees. De cette maniere on donne a l'encodeur un temps suffisant pour permettre le calcul du code correcteur d'erreur, lequel pourra etre stocke lors de la prochaine operation d'ecriture, avec la donnee correspondante. Pendant que cette donnee est stockee, la donnee suivante a enregistrer est placee a son tour dans l'etage de pipeline afin de permettre le calcul du code correcteur d'erreur suivant. Plus precisement, on dispose un premier registre d'adresse connecte au bus d'adresse d'entree du circuit memoire, lequel permet de stocker successivement les adresses correspondent aux seules operations d'ecriture dans la memoire. On dispose un second registre de donnees connecte au bus de donnees en entree audit circuit, lequel permet de stocker les donnees transmises a 1'encodeur. Des circuits multiplexeurs permettent d'introduire un decalage d'un cycle dans l'ecriture dans ladite memoire, sans modifier la lecture, de maniere a autorisant un temps de calcul plus long pour l'encodeur. ST - Ol-GRI-276 - 4 - 2840445 Ainsi se trouve assuree la possibilite de realiser une montee en frequence de la memoire tout en maintenant un calcul de code correcteur d'erreur. Preferentiellement, le circuit memoire comporte une unique memoire a port unique presentant un bus d'adresse, un bus de donnees d'entree et un bus de donnee de sortie. On dispose un premier multiplexeur presentant une premiere entree connectee au bus d'adresse d'entree audit circuit, une seconde entree connectee a la sortie du audit premier registre d'adresse, et une sortie connectee au bus d'adresse de ladite memoire. Le premier multiplexeur est commande par un o signal d'autorisation en ecriture (WEN). Dans un mode de realisation prefere, le circuit comporte en outre: - un comparateur presentant deux entrees respectivement connectees audits bus s d'adresse d'entree audit circuit et a la sortie audit premier registre d'adresse, - un second multiplexeur commande par le comparateur et presentant une premiere entree connectee a la sortie audit second registre de donnees, une seconde entree connectee au bus de donnee de ladite memoire et une sortie connectee au bus de sortie du circuit. De cette maniere on assure que l'on fournit la valeur correcte de la donnee, meme lorsque cette derriere est en attente d'ecriture. Preferentiellement, on realise le circuit de memoire au moyen d'une unique memoire a simple port, dans laquelle on vient stocker simultanement la donnee associee a son code correcteur d'erreur. Alternativement, on disposera deux memoires distinctes, dont la premiere sera organisee pour recevoir les donnees et la seconde permettre le stockage du code correcteur d'erreur. so Dans un mode de realisation, la seconde memoire est de type a double port, permettant l'ecriture et la lecture simultanee de la memoire. Alternativement, la seconde memoire pourra etre realisee de type a simple port et sera dotee d'un circuit decodeur permettant de detecteur une erreur dans ST - O l -GR I -276 s - 2840445 ladite premiere memoire, et un ensemble de multiplexeurs permettant de forcer une operation d'ecriture dans ladite premiere memoire lors du prochain cycle, en reponse a la detection d'une erreur par ledit circuit decodeur. s Description des dessins D'autres caracteristiques, but et avantages de ['invention appara^'tront a la o lecture de la description et des dessins ci-apres, donnes uniquement a titre d'exemples non limitatifs. Sur les dessins annexes: La figure 1 illustre une architecture classique de circuit memoire comportant un code correcteur d'erreur. La figure 2 illustre le schema de principe d'un premier mode de realisation de ['invention pour une memoire a port unique pour stocker les donnees et le code correcteur d'erreur La figure 3 illustre un second mode de realisation basee sur deux memoires distinctes, dont une est a port double. La figure 4 illustre des chronogrammes representatifs du fonctionnement du second mode de realisation. La figure 5 illustre un troisieme mode de realisation base sur deux memoires de type a port unique. La figure 6 illustre des chronogrammes representatifs du fonctionnement du troisieme mode de realisation. La figure 7 illustre une implementation concrete du premier mode de realisation de ['invention. ST - O l -GR I -276 Description d'un mode de realisation prefere s La figure 2 illustre un mode de realisation prefere d'un circuit memoire haute vitesse dote d'un systeme de correction d'erreur. On supposera le circuit memoire base sur une memoire statique synchrone laquelle est. comme on le salt, particulierement sensible aux interferences electromagnetiques. On observera toutefois que l'homme du metier pourra clairement adapter la description o developpee ci-apres a d'autres modes de realisation, utilisant d'autres types de memoire telles que des memoires dynamiques et asynchrones. On considerera egalement le cas particulier d'un code correcteur d'erreur de type SECDED adapte venant ajouter 7 bits de redondance a une information elementaire de 32 bits. L'homme du metier pourra clairement adapter ['invention a d'autres codes s correcteurs d'erreurs Double Error Correction, Triple Error Detection (DEC-DED) etc...) ainsi quia la realisation de circuits memoires de 64 bits, 128 bits etc... Le circuit de la figure 2 presente un bus de donnees 108 destine a recevoir les donnees (DIN) a stocker dans une memoire RAM 100 et un bus d'adresses 102 o destine a recevoir les adresses de stockage (ADD) dans ladite memoire. En sortie, les donnees (rout) vent disponibles sur un bus de sortie 115. La memoire RAM 100 est de type a port unique et comporte un registre interne d'adresse 101 et un registre interne de donnees 106. Le circuit comporte en outre un etage de pipeline compose d'un premier registre - dit registre d'adresse 104 - ayant une entree connectee au bus d'adresse 102 (ADD), et un second registre - dit registre de donnees 105 ayant une entree connectee au bus de donnees 108. Le registre d'adresse 102 a une sortie connectee a une premiere entree d'un multiplexeur d'adresse 103 dont une seconde entree est egalement connectee au bus 102. Le multiplexeur d'adresse 103 est commande par un signal d'autorisation d'ecriture ou o WEN (Write Enable) et presente une sortie (ASP) connectee via un bus 113 a ['entree du registre d'adresse 101 de la memoire RAM 100. Le registre 105 presente une sortie (DinSP) qui est connectee a un bus 114, lequel est respectivement connecte a ['entree d'un encodeur 107, a ['entree du registre de donnees 106 de la memoire RAM 100 et a une premiere entree d'un multiplexeur de sortie 111. ST - Ol-GRl-276 L'encodeur 107 presente une sortie qui est connectee egalement a ['entree du registre 106 de maniere a venir completer la premiere partie de ['information stockee dans ce registre et provenant du bus 114. Le registre 106 stocke par consequent un mot avec le code correcteur d'erreur qui lui est associe. Le multiplexeur 111 presente une seconde entree connectee au bus 110 convoyant les donnees DoutSP en sortie de la memoire 100, et une sortie connectee au bus de sortie 115. o Les registres d'adresses 104 et de donnees 105 vent commandes par un signal de commande genere par une porte ET 116 presentant deux entrees recevant respectivement un signal d'horloge CK et le signal d'autorisation d'ecriture WEN. Un comparateur 109 dispose de deux entrees connectees respectivement au bus d'adresse 102 et au bus de sortie du registre 104 et fournit un signal de commande qui est transmis via un circuit 112 au multiplexeur 111. Les registres 104 et 105 stockent les valeurs courantes portees par les bus 102 et 108 lors des operations d'ecriture uniquement, et non lors des operations de lecture. En effet, comme on le volt sur la figure 2, le signal de commande WEN est utilise pour commander l'ecriture dans chacun des deux registres lors d'un cycle d'ecriture. En meme temps, les valeurs courantes qui vent stockees dans ces memes registres 104 et 105 vent respectivement presentees, d'une part, a ['entree du registre d'adresses 101 via le multiplexeur 103 et le bus 113 et, d'autre part, a ['entree du registre de donnees 106 de la memoire RAM 100 ainsi qu'a lientree de l'encodeur 107. Comme on le volt l'etage de pipeline compose des registres 104 et permet de constituer une barriere temporelle afin de differer l'ecriture des donnees dans la memoire 100 jusqu'au prochain cycle d'ecriture. De cette maniere, so on parvient a devier la donnee a stocker dans la memoire RAM et son adresse correspondante, dans l'attente du prochain cycle d'ecriture, lequel peut intervenir, le cas echeant, apres plusieurs cycles de lecture. De la sorte, I'encodeur 107 dispose d'un temps au minimum egal a un cycle supplementaire pour effectuer le calcul du ST - O l-GRI-276 - 8 - 2840445 code correcteur d'erreur a inserer dans le registre 6 et cela est particulierement avantageux lorsque l'on souhaite accro^'tre la frequence d'horloge de la memoire. Afin d'eviter que lors d'une operation de lecture on tense d'acceder a une donnee qui est encore en attente d'ecriture dans les registres d'adresse 104 et de donnees 105 du pipeline, le comparateur 109 effectue en permanence une comparaison entre l'adresse presentee sur le bus 102 et l'adresse en attente d'ecriture dans le registre 104. Lorsque survient une egalite, ce qui est le cas lorsque l'on tense d'acceder a une donnee non encore ecrite dans la memoire RAM , alors le comparateur genere un signal de commande sur le circuit 112, lequel commande a son tour le multiplexeur 111 afin que ce dernier presente la valeur contenue dans le registre 105 et non la valeur incorrecte DoutSP stockee dans la RAM 100 et vehicuiee par le bus 110. On constate ainsi que c'est bien la donnee correcte temporairement stockee dans le registre 105 qui est presentee sur le bus de sortie 115 (Dout). La figure 4 illustre des chronogrammes representatifs du fonctionnement du circuit de la figure 2. On decrira a present deux autres modes de realisation afin d'illustrer la generalite de ['application de ['invention. Dans ces deux autres modes de realisation, que l'on decrira particulierement en detail, on emploie deux memoires distinctes pour respectivement stocker la donnee et le code correcteur d'erreur. Le second mode de realisation est illustree en figure 3 et comporte une premiere memoire RAM a simple port 200 - dimensionnee de maniere a pouvoir stocker 24K mots de 32 bits chacun par exemple - et une seconde memoire 230 a double port - par exemple de dimension 24Kx7 - dediee au stockage des codes correcteurs d'erreurs. La memoire RAM 200 dispose d'un bus d'adresse (A), d'un bus de donnees (D) et d'un bus de commande comportant notamment le signal d'autorisation en ecriture ou Write Enable. En sortie, les donnees Dout32 vent disponibles sur un bus 215. ST - Ol-GRl-276 9 2840445 Si l'on examine a present le bus d'entree de la RAM 200, on observe que le bus de donnees (D) de la memoire RAM 20 recoit une information Din32SP d'un premier multiplexeur 217 via un bus 218. Le multiplexeur 217 presente deux bus d'entrees. Une premiere entree re,coit les donnees a stocker (DIN32) transmise par un processeur (non represente) depuis un bus 208, tandis qu'une seconde entree re,coit ['information C-Dout32 fournie par un circuit correcteur 226 (ECCDecoder). Comme on le verra le multiplexeur 217 permet de representer la valeur corrigee calculee par le circuit 226 a ['entree de la memoire 200 de maniere a pouvoir o reecrire en memoire la nouvelle valeur corrigee. La commande WEN de la memoire RAM 200 re,coit un signal de commande WENSP transmise via un circuit 220, lequel signal est genere par un second multiplexeur 219 disposant de deux entrees: une premiere entree recevant le signal de commande WEN fourni par le processeur (non represente) et une second entree (GND) qui est connectee a la masse, laquelle permet de forcer un cycle d'ecriture en memoire 200 lorsque cela est souhaitable, et notamment lorsqu'il s'agit de corriger une valeur incorrecte stockee en memoire. Le bus d'adresses (A) de la memoire RAM 200 re,coit l'adresse ASP qui est fournie par un troisieme multiplexeur 203 via un bus 213, lequel multiplexeur 203 dispose de deux bus d'entrees: un premier bus recevant I'adresse generale ADD fournie par le microprocesseur et un second bus connecte a la sortie d'un registre d'adresse 222 dont ['entree re,coit egalement l'adresse generale ADD fournie au circuit memoire. Les trots multiplexeurs 217, 219 et 203 vent commandes par un signal de commande ECC-FIX, lequel est active le cycle suivant la detection d'une erreur afin de reecrire la valeur corrigee. Une memoire a double port 230 est dediee au stockage des codes correcteurs d'erreur fournis par un circuit encodeur 207 (ECC ENCODER). Un des ports de cette memoire est dediee a l'ecriture tandis que l'autre port est dedie a la lecture. Le port qui est dedie a l'ecriture comporte, d'une maniere similaire au circuit o de la figure 2, un ensemble de registre d'adresse et de donnees de decalage afin de differer le stockage en memoire d'un code correcteur d'erreur jusqu'au prochain cycle d'ecriture. Plus precisement, on observe que le premier port de la memoire 230 dispose d'un bus de donnees (D) qui est connecte a la sortie d'un encodeur 207 dont ['entree re,coit le contenu d'un registre de donnee 205 qui forme l'un des ST- Ol-GRI-276 - 10- 2840445 deux elements du pipeline permettant de decaler ['operation d'ecriture en memoire. Le registre de donnees 205 re,coit ['information Din32SP presente sur le bus 218 transmise par le premier multiplexeur 217. Le premier port de la memoire RAM 230 dedie a l'ecriture comporte egalement un bus d'adresses (A) recevant une information ADD-DPW stockee dans un second registre 204 registre d'adresse similaire au registre 104 de la figure 2 - dont ['entree re,coit l'adresse ASP fournie par le multiplexeur 203 via le bus 213. Le premier port de la memoire RAM 230 comporte enfin deux signaux de commande d'autorisation d'ecriture (WEN-DPW) et de selection de circuit (Chip Select Negative ou CSN). L'information WEN-DPW o provient d'un registre 221 qui re,coit ['information WENSP generee en sortie du second multiplexeur 219 et transmise par le circuit 220 a ['entree CSN de la memoire RAM 230 sur ie front montant du signal d'horloge (non represente), ainsi qu'a ['entree WEN de ce premier port. Un second port d'entree de la memoire RAM 230 est dedie a la lecture et comporte un bus d'adresse connecte au bus 213 vehiculant ['information ASP. La memoire RAM 230 comporte deux ports de sortie qui vent respectivement connectes a la premiere et a la seconde entree d'un multiplexeur de bus 225, dont la sortie est connectee a une entree du decodeur 226, ce dernier recevant egalement le signal WENDPW. Le multiplexeur 225 est commande par un comparateur 209, lequel permet d'eviter la situation de conflit apparaissant lorsque l'on souhaite fire le contenu de la memoire 230 a une adresse non encore enregistree. A cet effet, le comparateur 209 dispose d'une premiere entree connectee a la sortie du registre 204 stockant la valeur ADD-DPW et une seconde entree connectee a la sortie d'un registre de decalage 223 contenant l'adresse precedente d'ecriture. La comparaison est effectuee sur le front montant d'un signal genere a partir du signal WEN via un ensemble 224 de deux registres de decalage. so Le fonctionnement du circuit de la figure 3 est decrit ci-apres: Du rant le cycle d'ecritu re i, les don nees vent enregistrees dans la memoire RAM 200 pendant que l'encodeur 207 effectue les calculs des bits de redondance sur la valeur stockee dans le registre 205. Le resultat de ce calcul est stocke dans la ST - Ol-GRI-276 memoire 230 au prochain cycle i+1 d'ecriture grace a ['intervention des registres 205 et 204 formant le pipeline. En mode de lecture, les donnees vent lues dans la RAM 200 et 230 durant le meme cycle. Le decodeur 226 qui re,coit les donnees disponibles sur le port de sortie de la RAM 200 effectue le calcul du syndrome et genere un signal ECC-FLAG en cas d'erreur, lequel signal est utilise pour inhiber le cycle de lecture suivant de maniere a pouvoir intercaler un cycle de correction par une reecriture de la donnee correcte C-Dout32 en memoire RAM 200. A cet effet, un signal de commande ECC l0 FIX est transmis aux multiplexeurs 217, 219 et 203 afin que la valeur correcte de la donnee CDOUT32 soit reecrite en memoire 200. Lorsque la lecture porte sur le mot qui est en attente d'ecriture, cette situation est detectee par le comparateur 209, lequel commande alors le multiplexeur 225 de maniere a eviter la situation de conflit dans la RAM 230. Comme on le volt, on realise dans la RAM 230 un retard de ['operation d'ecriture (WRITE) du code correcteur jusqu'au prochain cycle d'ecriture dans cette meme memoire RAM. Si une ou plusieurs operations de lecture interviennent apres le cycle d'ecriture i des donnees dans la memoire 200, la valeur de l'ECC et I'adresse de stockage demeurent respectivement dans les registres 205 et 204 jusqu'au prochain cycle prochain cycle d'ecriture. On dispose a nouveau, comme dans le circuit de la figure 2, du temps necessaire pour faire effectuer par le circuit encodeur 207 le calcul du code correcteur d'erreur, et ceci meme en cas de frequence de fonctionnement elevee. On decrira maintenant, en reference avec la figure 5 un troisieme mode de realisation d'un circuit memoire, dans lequel on substitue a la memoire double port une memoire a port unique moins coOteuse. Le circuit comporte une premiere memoire RAM 300 et une seconde memoire 330, les deux memoires etant a port unique. La premiere est dediee au stockage des donnees tandis que la seconde est dediee a celui des codes correcteurs d'erreur. ST- Ol-GRI-276 - 12 - 2840445 La memoire RAM 300 dispose d'un bus de donnees (D) qui re,coit une information DIN32SP d'un premier multiplexeur 317 via un bus 318. Le multiplexeur 317 presente deux bus d'entrees. Une premiere entree re,coit les donnees a stocker (DIN32) disponible sur un bus 308, tandis qu'une seconde entree re,coit ['information C-Dout32 fournie par un circuit correcteur 326 similaire au circuit 226 de la figure 3. Comme precedemment, le multiplexeur 317 permet de representer la valeur corrigee calculee par le circuit 326 a ['entree de la memoire 200 de maniere a pouvoir reecrire en memoire la nouvelle valeur corrigee. La commande WEN de la memoire RAM 300 re,coit un signal de commande WENSP transmise via un circuit 320, lequel signal est genere par un second multiplexeur 319 disposant de deux entrees: une premiere entree recevant le signal de commande WEN fourni par le processeur (non represente) et une second entree (GND) connectee a la masse permettant de forcer une operation d'ecriture. Le bus d'adresses (A) de la memoire RAM 300 re,coit l'adresse ASP qui est fournie par un troisieme multiplexeur 303 via un bus 313, lequel multiplexeur- 303 dispose de deux bus d'entrees: un premier bus recevant l'adresse generale ADD disponible sur un bus 302 et un second bus connecte a la sortie d'un registre d'adresse 322 egalement connecte au bus 302 et formant le premier element de l'etage de decalage pour le cycle d'ecriture. Comme o pour les multiplexeurs 217-219-203, les trots multiplexeurs 317, 319 et 303 vent commandes par un signal de commande ECC FIX et permettent de forcer une reecriture en memoire lorsque cela s'avere necessaire pour corriger la valeur inscrite a une adresse donnee. Une memoire a port unique 330 est dediee au stockage des codes correcteur d'erreur fournis par un circuit encodeur 307 (ECC ENCODER) dont ['entree re,coit le contenu d'un registre de donnees 305 formant, comme precedemment, I'un des deux elements du pipeline permettant de differer ['operation d'ecriture en memoire au prochain cycle d'ecriture. Le registre de donnees 205 re,coit ['information DIN32SP presente sur le bus 318 transmise par le premier multiplexeur 317. La o sortie de l'encodeur 207 est transmise a une entree de donnees (D) de la memoire RAM 330 ainsi qu'a une entree d'un registre de decalage420, dont la sortie est con nectee a une premiere entree d' un multiplexeu r 340. La memoire 330 comporte egalement un bus d'adresses (A) connecte a la sortie d' un mu ltiplexeur 350 presentant deux entrees. La premiere entree de ce dernier est connecte a la sortie ST - Ol-GRI-276 - 13 - 2840445 d'un registre de decalage 304 formant le second element du pipeline permettant de different jusqu'au prochain cycle d'ecriture l'ecriture en memoire du code ECC. Le registre 304 presente une entree connectee au bus d'adresse 313 ASP, lequel est egalement connecte a une seconde entree du multiplexeur 350 ainsi qu'a un autre registre de decalage 390 dont une sortie ASP2 est connectee a une premiere entree d'un comparateur 370. Le comparateur 370 presente une seconde entree connectee a la sortie du registre 304 et genere une signal de commande qui est transmis - via un circuit 380 - a une electrode de commande du multiplexeur 340. o Le signal de commande WENSP qui est disponible sur le bus 320 sert a commander le multiplexeur 350, le registre 305 via un circuit de controle d'interruption 410, le registre 304 via un second circuit de controle d'interruption 400 ainsi que ['entree WEN de la memoire 330. Les circuits de controle d'interruption 400 et 410 permettent d'inhiber l'echantillonnage des donnees dans le registre correspondent. En sortie de la memoire 330, le code correcteur est transmis a une seconde entree du multiplexeur 340 et ['information en sortie de ce multiplexeurECC-IN est alors transmise au decodeur 326, lequel re,coit egalement ie signal WENSP via un registre de decalage 430. Le fonctionnement du circuit de la figure 4 est decrit ci-apres: Durant le cycle d'ecriture i, les donnees vent enregistrees dans la memoire RAM 300 pendant que l'encodeur 307 effectue ies calculs des bits de redondance. Le resultat de ce calcul est stocke dans la memoire 330 au prochain cycle i+1 d'ecriture grace a ['intervention du circuit de pipeline compose par les registres 304 et 305. so En mode de lecture, les donnees vent lues dans la RAM 300 et 330 durant le meme cycle. Le decodeur 326 effectue le calcul du syndrome et genere un signal ECC-FLAG en cas d'erreur, lequel signal est utilise pour inhiber le cycle de lecture suivant de maniere a pouvoir intercaler un cycle de correction par une reecriture de la donnees correcte C-DOUT32 en memoire RAM 300. A cet effet, comme ST - 01 -GRI-276 - 14- 2840445 precedemment, un signal de commande ECC-FIX est transmis aux multiplexeurs 317, 319 et 303 afin que la valeur corrigee par le decodeur 326 puisse etre re-ecrite en memoire 300. s La situation de conflit existent lorsque l'on souhaite acceder a une donnee qui est encore en attente d'ecriture est evitee au moyen du comparateur 370. En effet, lorsqu'une adresse ASP est presentee sur le bus 313 qui concide avec l'adresse d'ecriture precedente - encore en attente dans le registre 304, le comparateur 370 genere un signal de commande sur le circuit 380, lequel signal de l0 commande provoque alors le commutation du multiplexeur 340 sur le registre 420 afin de fournir la valeur du code correcteur d'erreur qui est stockee dans ce registre. Cette valeur est transmise au decodeur 326 afin de permettre la detection du code correcteur. La figure 5 illustre des chronogrammes representatifs du fonctionnement du circuit de la figure 2. Comme pour le circuit de la figure 2 on constate que, a nouveau, on differe l'ecriture en memoire du code correcteur d'erreur jusqu'au prochain cycle d'ecriture, laquelle interviendra, le cas echeant, apres une ou plusieurs cycles de lecture. On constate que, a nouveau, on dispose du temps necessaire pour effectuer le calcul du code correcteur d'erreur par l'encodeur et l'on peut done sans difficulte envisager des vitesses de fonctionnement plus importantes. La figure 6 illustre plus particulierement une realisation de ['invention basee sur une unique memoire RAM a simple port 700 permettant de stocker les donnees ainsi que les codes correcteurs d'erreurs. La memoire RAM 700 dispose d'un bus de donnees (D) qui re,coit une information DIN32SP d'un premier multiplexeur 717 via un bus 718. Le multiplexeur 717 presente deux bus d'entrees. so Une premiere entree re,coit le contenu DW32 d'un premier registre de pipeline 751 via un bus 308, lequel re,coit en entree les donnees a stocker (DIN32) et est commande par le circuit de controle d'interruption d'horloge 752 recevant le signal de commande WENi, tandis qu'une seconde entree du multiplexeur 717 recoit ['information C-Dout32 fournie par un circuit correcteur 726 similaire au circuit 326 ST - Ol-GRI-276 - 15- 2840445 de la figure 5. Comme precedemment, le multiplexeur 717 permet de representer la valeur corrigee calculee par le circuit 726 a ['entree de la memoire 700 de maniere a pouvoir reecrIre en memoire la nouvelle valeur corrigee lorsque cela s'avere necessaire. La commande WEN de la memoire RAM 700 re,coit un signal de commande WENSP transmise via un circuit 720, lequel signal est genere par un second multiplexeur 719 disposant de deux entrees: une premiere entree recevant le signal de commande WEN fourni par le processeur (non represente) et une second entree (GND) connectee a la masse permettant de forcer une operation d'ecriture. Le bus d'adresses (A) de la memoire RAM 700 re,coit l'adresse ASP qui o est fournie par un troisieme multiplexeur 703 via un bus 713, lequel multiplexeur 703 dispose de deux bus d'entrees: un premier bus recevant le signal de sortie d'un quatrieme multiplexeur 702 et un second bus connecte a la sortie d'un registre d'adresse 722 recevant l'adresse ADD du bus 702 et formant le premier element de l'etage de decalage pour le cycle d'ecriture. Le quatrieme multiplexeur 702 dispose s d'une premiere entree recevant l'adresse ADD et une seconde entree recevant le contenu d'un second registre de pipeline 754 commande par un circuit de controle d'interruption d'horloge 755 recevant le signal de commande (WENi). Comme on le volt sur la figure, le signal de commande WENi est produit a partir d'un multiplexeur 756 presentant une premiere entree recevant la tension d'alimentation o Vdd et une seconde entree recevant le signal WEN. Le multiplexeur est commande par le signal ECC-Fix actif en cas de detection d'une information erronee dans la memoire 700 qui est alors corrigee. Un cinquieme multiplexeur 753 dispose d'une premiere entree recevant la sortie de l'encodeur 707 et une seconde entree recevant ['information corrigee C- ECC5 produite en sortie du decodeur 726. Le cinquieme multiplexeur 753 dispose en outre d'une sortie qui est connectee a ['entree de donnees ECC de la memoire 700. Les quatre multiplexeurs 717, 719, 703 et 753 vent commandes par un signal de commande ECC FIX et permettent de forcer une reecriture en memoire lorsque cela s'avere necessaire pour corriger la valeur inscrite a une adresse donnee. Un comparateur 759 compare la valeur du bus d'adresse ADD (presentee a ['entree du registre 754) avec la valeur de l'adresse en attente d'ecriture (en sortie du registre 754) et fournit un signal de commande a un premier et second ST - O l -GR I -276 - 16- 2840445 multiplexeur 758 et 760. Le multiplexeur 758 dispose d'une premiere entree recevant ['information DW32 stockee dans le registre 751 et la sortie de la memoire RAM 700 et, en fonction de la valeur du comparateur, transmet l'une ou l'autre de ces deux valeurs a ['entree du decodeur 726. Cette valeur est egalement la valeur corrigee fournie en sortie. Le second multiplexeur 758 dispose d'une premiere entree recevant la valeur du code correcteur lue de la memoire 700 et d'une seconde entree recevant, via un registre a decalage 757, le code correcteur d'erreur calcule par l'encodeur 707. I0 Le fonctionnement du circuit de la figure 7 est le suivant. En mode de lecture, le fonctionnement est classique. L'adresse ADD est transmise via le multiplexeur 702 et 703 au bus d'adresse interne de la memoire 700. On constate que l'introduit un leger retard du a la presence des deux circuits s multiplexeurs 702 et 703 mais cela n'impacte que peu la frequence de fonctionnement du circuit memoire. En effet, on observera qu'il ne s'agit ici que d'un retard de l'ordre de 200 picosecondes, qui est bien inferieur au 2 nanosecondes requises pour le calcul du code correcteur d'erreur. Les donnees extraites de la memoires, associees a leur code correcteur d'erreur, vent acheminees via le multiplexeur 760 vers la sortie du circuit memoire (DOUT32). Le code correcteur est egalement transmis au decodeur 726 qui verifie en permanence ['absence de corruption dans la donnee extraite de la memoire. En cas d'erreur, le decodeur 726 fournit une donnee corrigee C-DOUT32 ainsi qu'un nouveau code correcteur C-ECC5 lui correspondent. Un signal de commande ECC-FLAG, egalement produit par le decodeur 726 permet d'informer le systeme de ['existence d'une erreur et de voler un cycle au processeur afin de pouvoir corriger l'erreur. Le systeme (le processeur) est alors informe de ce que la memoire n'est pas prete a fournir une valeur et la sortie du multiplexeur 760 n'est par consequent pas validee. Durant le vol d'un cycle au processeur, le signal de commande ECC-FIX est alors so utilise pour commander les multiplexeurs 717, 719, 703 et 753 pour effectuer cette correction en provoquant une reecriture en memoire. Lors du prochain cycle, la memoire est alors en mesure de fournir la bonne valeur Cdout32 en sortie. ST - O l -GR I -276 - 17 En mode d'ecriture, la valeur a stockee et l'adresse lui correspondent vent temporairement stockees dans les registres 751 et 754 afin de donner le temps necessaire a l'encodeur 707 pour effectuer le calcul du code correcteur d'erreur. Pendant le cycle d'ecriture on presente done a la memoire le contenu des registres s de pipeline 751 et 754 et c'est done la valeur a ecrire precedente qui se trouve ecrite dans la memoire, associee a son code correcteur d'erreur. L'encodeur 707 pourra achever son calcul avant le prochain cycle d'ecriture. La situation de conflit existent lorsque l'on souhaite acceder a une donnee o qui est encore en attente d'ecriture est evitee au moyen du comparateur 759. Lorsque les deux adresses AW et ADD vent egales, le comparateurs commande les deux multiplexeurs 753 et 760 afin que l'on presente bien les valeurs correctes en sortie DOUT32. ST - Ol-GRI-276 -18- 2840445 Revendications s 1. Circuit memoire dote d'un systeme de correction d'erreur comportant un bus d'adresse (102, 202, 302), un bus de donnees en entree (108, 208, 308), un bus de donnees en sortie (115, 215, 315), ledit circuit comportant une memoire ayant un bus d'adresse (113), un bus de donnees (114) et un circuit correcteur d'erreur comportant un encodeur (107, 207, 307), caracterise en ce qu'il comporte: - un premier registre d'adresse (104, 204, 304) connecte au bus d'adresse d'entree (102, 202, 302) audit circuit permettant de stocker successivement les adresses correspondent aux seules operations d'ecriture dans ladite memoire, - un second registre de donnee (105, 205, 305) connecte au bus de donnees en entree audit circuit (108; 208, 308) permettant de stocker les donnees transmises audit encodeur (107, 207, 307); - des moyens (103) permettant d'introduire un decalage d'un cycle dans l'ecriture dans ladite memoire, sans modifier la lecture. o 2. Circuit memoire selon la revendication 1 caracterise en ce qu'il comporte: - une memoire a port unique (100) presentant un bus d'adresse, un bus de donnees d'entree et un bus de donnee de sortie, - un multiplexeur presentant une premiere et une seconde entree, une sortie et une electrode de commande, ladite premiere entree etant connectee au bus d'adresse d'entree audit circuit, ladite seconde entree etant connectee a la sortie du audit premier registre d'adresse, ladite sortie etant connectee au bus d'adresse de ladite memoire (100) et ladite electrode de commande recevant le signal d'autorisation en ecriture (WEN). 3. Circuit memoire selon la revendication 2 caracterise en ce qu'il comporte: - un comparateur presentant deux entrees respectivement connectees audits bus d'adresse d'entree (102) audit circuit et a ia sortie audit premier registre d'adresse (104), ST - Ol-GRl-276 13 janvier 2003 - 19- 2840445 - un second multiplexeur (111) presentant une premiere entree, une seconde entree, une sortie et une electrode de commande; - ladite premiere entree etant connectee a la sortie audit second registre de donnees (105), ladite seconde entree etant connectee au bus de donnees de ladite memoire (1 oo), - ladite sortie etant connectee au bus de sortie audit circuit memoire, - ladite electrode de commande recevant un signal de commande fourni par ledit comparateur (109). 4. Circuit memoire la revendication 1 caracterise en ce qu'il comporte une premiere memoire a port unique (200) pour stocker les donnees et une seconde memoire a port double (230) permettant de stocker les codes correcteurs d'erreurs, le stockage des codes correcteurs d'erreur etant differe jusqu'au prochain cycle d'ecriture. 5. Circuit memoire selon la revendication 4 caracterise en ce qu'il comporte un circuit decodeur (226) permettant de detecteur une erreur dans ladite premiere memoire, et un ensemble de multiplexeurs (217, 219, 203) permettant de forcer une operation d'ecriture dans ladite premiere memoire (200) lors du prochain cycle, en reponse a la detection d'une erreur par ledit circuit decodeur. 6. Circuit memoire selon la revendication 1 caracterise en ce qu'il caracterise en ce qu'il comporte une premiere memoire a port unique (300) pour stocker les donnees et une seconde memoire a unique (330) permettant de stocker les codes correcteurs d'erreurs, le stockage des codes correcteurs d'erreur etant differe jusqu'au prochain cycle d'ecriture 7. Circuit memoire selon la revendication 6 caracterise en ce qu'il comporte un circuit decodeur (326) permettant de detecteur une erreur dans ladite premiere memoire (300), et un ensemble de multiplexeurs (317, 319, 303) permettant de forcer une operation d'ecriture dans ladite premiere memoire (300) lors du prochain cycle, en reponse a la detection d'une erreur par ledit circuit decodeur. ST - Ol-GRl-276 13 janvier2003 :5::::;: - 20 - 2340445 8. Circuit memoire selon rune quelconque des revendications precedentes caracterise en ce qu'il comports une memoirs statique synchrone. s 9. Circuit memoirs selon rune quelconque des revendications precedentes caracterise en ce q u' il comports u n systems de code correction de type SEC-DE D ou DED-TED,. ST - Ol-GRI-276