FR 2779541 A1 19991210 FR 9807013 A 19980604 ACCES RAPIDE AUX CIRCUITS TAMPONS La présente invention a pour objet un circuit tampon disposant de moyens permettant sous certaines conditions un accès rapide à des données contenues dans ce circuit tampon. Une des applications préférée du circuit tampon selon l'invention est destinée à un usage dans une interface de mémoire externe d'un circuit complexe tel qu'un microprocesseur. Dans certaines applications, l'interface de mémoire externe peut constituer avec le microprocesseur un circuit monolithique. Les interfaces de mémoires externes des circuits complexes tels que les microprocesseurs ont à gérer des communications avec ces circuits complexes dans les deux sens: du microprocesseur vers l'interface de mémoire externe et de l'interface de mémoire externe vers le microprocesseur. Les communications s'effectuent sous la forme d'échanges d'informations, le plus souvent par l'intermédiaire d'une liaison câblée appelée bus de transmission bidirectionnel. Ces informations peuvent être des adresses mémoires, des données, ou encore des instructions de commande. Les informations circulent sous forme de données binaires. Ces données binaires constituent des mots. Les informations circulent du microprocesseur vers l'interface de mémoire externe lorsque des requêtes d'accès à la mémoire externe sont émises par le microprocesseur. Les informations circulent de l'interface de mémoire externe vers le microprocesseur lorsque les réponses appropriées à ces requêtes sont renvoyées. Dans les deux cas, les informations circulent par le moyen du bus de transmission. L'interface de mémoire externe doit donc disposer de deux circuits tampons: un circuit tampon d'entrée et un circuit tampon de sortie. Les requêtes d'accès à la mémoire externe émises par le microprocesseur sont stockées dans le circuit tampon d'entrée de l'interface de mémoire externe. Ces requêtes sont alors décodées par l'interface de mémoire externe. On obtient grâce à ce décodage les adresses mémoires auxquelles on veut accéder ainsi que le type d'accès requis: il peut s'agir d'un accès en mode écriture ou d'un accès en mode lecture. L'accès réel à la mémoire externe est alors seulement effectif. Dans le cas d'une lecture de la mémoire externe, un mot lu est stocké dans le circuit tampon de sortie de l'interface de mémoire externe. Il est ensuite transmis vers le microprocesseur au moyen du bus de transmission. Ce transfert d'informations peut être perturbé pour différentes raisons. Le transfert d'informations est cadencé par une horloge. Il peut être totalement bloqué pendant plusieurs périodes d'horloge. Or l'interface de mémoire externe ne peut pas satisfaire les requêtes d'accès à la mémoire externe si un précédent accès à cette mémoire externe n'a pas été traité. D'autre part, une réponse à une requête d'accès à la mémoire externe ne peut pas être envoyée par le bus de transmission si un autre échange d'informations a lieu au même moment sur ce bus de transmission. Ces éventualités de perturbations dans les échanges d'informations justifient l'existence d'une mémoire interne dans les circuits tampons d'entrée et de sortie de l'interface de mémoire externe. La suite de la description fera référence uniquement au circuit tampon d'entrée d'une interface de mémoire externe aussi bien dans l'exposé de l'état de la technique que dans le cadre de la présentation de l'invention en elle-même. Il est cependant évident que le circuit tampon selon l'invention peut-être appliqué à toute autre interface dont les performances peuvent être améliorées par le circuit selon l'invention. La figure 1 présente un schéma bloc des éléments essentiels intervenant lors des échanges d'informations entre un circuit complexe de type microprocesseur et une interface de mémoire externe. Un microprocesseur 1 est connecté à une interface de mémoire externe 2 au moyen d'un bus de transmission 22. Ce bus de transmission 22 achemine les données jusqu'à un circuit tampon 3 de l'interface de mémoire externe 2. Le circuit tampon 3 est constitué d'un circuit tampon d'entrée 4 et d'un circuit tampon de sortie 5. Le circuit tampon d'entrée 4 reçoit les requêtes d'accès du microprocesseur 1. Le circuit tampon de sortie 5 émet les réponses à ces requêtes après un traitement effectué: un espace mémoire 7 d'une mémoire externe 8, visé par la requête, peut être lu, écrit ou effacé grâce à l'accès en mémoire 6. La figure 2 montre un circuit tampon d'entrée connu d'une interface de mémoire externe. Le schéma représenté à la figure 2 est un circuit tampon d'entrée 20 de l'état de la technique. Ce circuit tampon d'entrée 20 peut être du type du circuit tampon d'entrée 4 que contient l'interface de mémoire externe décrite à la figure 1. Le circuit tampon d'entrée 20 reçoit à une entrée 21 le bus de transmission 22. Les requêtes d'accès à la mémoire externe transportées par le bus de transmission 22 sont reçues par une interface de bus 23. Cette interface de bus 23 de type registre fournit en sortie un signal INW. Une liaison 24 assure la connexion entre l'interface de bus 23 et une première entrée E1 d'un premier multiplexeur 25. Une liaison 27 assure la connexion entre un point de connexion 26 de la liaison 24 et une unité de mémoire 28 de type mémoire RAM. Une liaison 29 assure la connexion entre l'unité de mémoire 28 et une seconde entrée E2 du premier multiplexeur 25. Une liaison 211 assure la connexion entre une sortie Sl du premier multiplexeur 25 et une entrée E3 d'un registre 212. Le registre 212 fournit à une sortie S2 un signal de sortie OUTW à une interface de décodage 213 de l'interface de mémoire externe. Le fonctionnement du circuit présenté à la figure 2 est le suivant: les requêtes d'accès à la mémoire externe sont reçues par l'interface de bus 23. Si toutes les requêtes précédentes ont été traitées, l'unité de mémoire de type RAM 28 est vide. Dans ce cas l'unité de mémoire de type RAM 28 n'intervient pas. La dernière requête émise par le microprocesseur est directement transmise au premier registre 212 au travers de la première entrée E1 du premier multiplexeur 25 et des liaisons 24 et 211 sous la forme du signal INW. Cette requête peut alors être directement exploitée par l'interface de décodage 213. Si une ou plusieurs requêtes n'ont pas encore été traitées au moment de la réception par l'interface de bus 23 d'une nouvelle requête, alors l'unité de mémoire de type RAM 28 n'est pas vide. Dans cette condition, ou alors si le transfert de données est bloqué, la ou les requêtes qui arrivent au circuit tampon d'entrée sont écrites dans l'unité de mémoire de type RAM 28. Quand une requête est lue dans l'unité de mémoire de type RAM 28, elle est ensuite transmise au premier registre 212 par l'intermédiaire de la seconde entrée E2 du premier multiplexeur 25 et des liaisons 29 et 211. Or la mémoire de type RAM 28 utilisée dans ce type de circuit tampon ne permet pas de lire une donnée pendant une période d'horloge o on écrit cette donnée (on parle de "no read through capability" dans la littérature anglaise). Les transmissions entre le circuit complexe de type microprocesseur et l'interface de mémoire externe sont cadencées par une horloge. Quand une donnée est écrite dans un espace mémoire spécifique de l'unité de mémoire de type RAM 28 pendant une période d'horloge déterminée, le même espace mémoire de la mémoire de type RAM 28 est accessible en lecture au cycle d'horloge suivant seulement. Par conséquent, la donnée n'est transmise au premier registre 212 que deux périodes d'horloge après la période d'horloge correspondant à l'écriture de la donnée dans la mémoire de type RAM 28. On a ainsi perdu du temps dans la transmission de données entre l'interface de bus 23 et l'interface de décodage 213. En effet un temps égal à la durée d'une période d'horloge est perdu. On peut parler de l'existence d'un cycle de latence. La figure 3 montre 4 chronogrammes. Le premier chronogramme 31 est le signal d'horloge. Le second chronogramme 32 montre l'accès en écriture à l'unité de mémoire de type RAM. Le troisième chronogramme 33 montre l'accès en lecture à l'unité de mémoire de type RAM. Le quatrième chronogramme 34 montre l'état du premier registre 212. Pour ces 4 chronogrammes, l'axe des abscisses représente le déroulement du temps. Il est découpé en 4 intervalles de temps égaux. Chacun des 4 intervalles de temps correspond à une période d'horloge. Un espace mémoire de l'unité de mémoire de type RAM est écrit au cours de la première période d'horloge. Cet accès en écriture est représenté au second chronogramme 32 par une impulsion de niveau haut. Pendant cette première période d'horloge, cet espace mémoire de l'unité de mémoire de type RAM change de valeur et ne peut être lu. Cette nouvelle et correcte valeur est disponible au même espace mémoire de l'unité de mémoire lors de la seconde période d'horloge. Cet accès possible en lecture est représenté au troisième chronogramme 33 par une impulsion de niveau haut. La nouvelle valeur sera donc disponible dans le premier registre pour l'interface de décodage lors de la troisième période d'horloge. Cette disponibilité est représentée au quatrième chronogramme 34 par une impulsion de niveau haut. Ainsi, lorsque pour une raison quelconque le transfert de données est perturbé pendant une période d'horloge donnée et que ces conditions de perturbation disparaissent pendant la période d'horloge suivante, l'équivalent en temps d'une période d'horloge est perdu dans la transmission entre le circuit complexe de type microprocesseur et l'interface de mémoire externe. Les conditions de perturbation de transmission sont évaluées pendant chaque période d'horloge. Cette évaluation est exploitée pendant la péroide d'horloge suivante. Dans tous les cas, une donnée qui n'a pas été transmise en sortie du circuit tampon doit rester disponible dans le circuit tampon. Un but de la présente invention est donc de réaliser un circuit tampon qui ne présente pas les inconvénients du dispositif de l'art antérieur décrit ci-dessus, à savoir une perte de temps, sous certaines conditions, équivalente à une période d'horloge. Le but de la présente invention est atteint en proposant un circuit semblable à celui présenté à la figure 2, auquel on a ajouté un second registre et un second multiplexeur. Lorsqu'une requête est adressée à la mémoire externe, les données peuvent alors également être écrites dans le second registre. Les données seront ainsi, sous certaines conditions qui seront présentées ultérieurement, disponibles avec une période d'horloge d'avance par rapport au circuit présenté précédemment. Sous ces conditions le second multiplexeur sélectionne la sortie du second registre. L'invention concerne donc un procédé de stockage et de récupération de données dans un circuit tampon comportant les étapes suivantes: - chaque donnée est transmise au circuit tampon via un bus de transmission et une interface de bus, - chaque donnée est écrite dans un premier registre du circuit tampon pour la rendre disponible en sortie du circuit tampon si le premier registre est vide, chaque donnée est stockée dans une unité de mémoire de type RAM si le premier registre contient une autre donnée, caractérisé en ce que: - une dernière donnée transmise est écrite dans un second registre du circuit tampon pour la rendre disponible en sortie du circuit tampon simultanément à son éventuelle écriture dans l'unité de mémoire de type RAM. Les différents aspects et avantages de l'invention apparaîtront dans la suite de la description en référence aux figures qui ne sont données qu'à titre indicatif et nullement limitatif de l'invention. La figure 1, déjà décrite, est un schéma bloc des éléments mis en jeu lors des échanges d'informations entre un circuit complexe et une interface de mémoire externe. La figure 2, également déjà décrite, est un schéma d'un circuit tampon d'entrée d'une interface de mémoire externe. La figure 3, également déjà décrite, représente quatre chronogrammes montrant l'évolution dans le temps de différentes fonctions intervenant dans l'échange d'informations. La figure 4 est un schéma d'un circuit tampon d'entrée d'une interface de mémoire externe selon l'invention. Le schéma de la figure 4 représente une mémoire tampon d'entrée dans laquelle on retrouve les différents éléments et les différentes liaisons évoquées lors de la description de la figure 2. Le circuit tampon d'entrée 20 reçoit à une entrée 21 le bus de transmission 22. Les requêtes d'accès à la mémoire externe transportées par le bus de transmission 22 sont reçues par une interface de bus 23. Cette interface de bus 23 fournit en sortie un signal INW. Une liaison 24 assure la connexion entre l'interface de bus 23 et une première entrée El d'un premier multiplexeur 25. Une liaison 27 assure la connexion entre un point de connexion 26 de la liaison 24 et une unité de mémoire 28 de type mémoire RAM. Une liaison 29 assure la connexion entre l'unité de mémoire 28 et une seconde entrée E2 du premier multiplexeur 25. A ces éléments et liaisons initiaux ont été ajoutés d'autres éléments: un point de connexion 42 sur la liaison 27; une liaison 43 établissant la connexion entre le point de connexion 42 et une entrée E6 d'un second registre 41; une liaison 44 établissant la connexion entre une sortie S3 du second registre 41 et une première entrée E5 d'un second multiplexeur 45; une liaison 46 établissant la connexion entre le registre 212 et une seconde entrée E4 du second multiplexeur 45. Le fonctionnement et l'exploitation du circuit de la figure 4 dépendent de certaines conditions. Ces conditions sont essentiellement liées à l'occurrence des perturbations dans la transmission des données et au nombre de mots stockés dans l'unité de mémoire de type RAM lorsque la transmission est perturbée. Le tableau 1 présenté ci-dessous correspond au cas de figure ou un premier mot Wl occupe le premier registre 212 et ou un unique mot supplémentaire arrive dans le circuit au travers de l'interface de bus de transmission 23. L'étude de ce cas de figure peut se faire sur une plage temporelle de trois périodes d'horloge. La transmission est bloquée à la première période d'horloge. Chaque période d'horloge correspond à une colonne du tableau. La première ligne du tableau 1 correspond au numéro de la période d'horloge. La deuxième ligne du tableau 1 correspond aux opérations effectuées, dans ce cas de figure, avec le circuit de l'art antérieur présenté à la figure 2. La troisième ligne du tableau 1 correspond à l'état (bloqué ou normal) de la transmission. La quatrième ligne du tableau 1 correspond aux opérations effectuées par le circuit présenté à la figure 4. La cinquième et dernière ligne du tableau indique le mot disponible, ainsi que le registre dans lequel il est disponible, en sortie de l'interface de mémoire externe. Le premier registre 212 contient un premier mot W1. Pendant la première période d'horloge, un deuxième mot W2 arrive dans l'interface de bus 23. Il est, conformément à l'art antérieur, écrit dans un espace mémoire de l'unité de mémoire de type RAM. Selon l'invention, il est également écrit dans le second registre 41 grâce à la liaison 43. Pendant la deuxième période d'horloge, la transmission des données est redevenue normale. Le deuxième mot W2 qui était contenu dans le second registre 41 est alors disponible dès la seconde période d'horloge pour l'interface de décodage 213. Pendant la troisième période d'horloge le deuxième mot W2 est de nouveau disponible depuis le premier registre 212 conformément à l'art antérieur. période d'horloge 1 2 3 opérations du écriture de W2 lecture de W2 circuit de l'art dans RAM dans RAM antérieur transmission bloquée normale opérations du écriture de W2 circuit selon dans l'invention -RAM registre 41 mot disponible W1 (registre 212) W2 (registre 41) W2 (registre 212) Tableau 1 Pendant partir de la troisième période d'horloge, on retrouve un comportement du circuit similaire au comportement du circuit décrit à la figure 2. Le second registre 41 est libéré dès que le mot qu'il contient est transmis à l'interface de décodage 213 ou qu'un nouveau mot arrive par le bus d'interface 23. Il peut ainsi être de nouveau mis à jour avec un troisième mot provenant de l'interface de bus si nécessaire. C'est ce cas de figure qui va être à présent examiné. On s'intéresse donc toujours à un cas o la transmission est bloquée lors de la première période d'horloge, et normale à partir de la période d'horloge suivante. Un premier mot W1 est contenu dans le premier registre 212. Pendant la première période d'horloge, conformément au fonctionnement du circuit de l'art antérieur décrit à la figure 2, un deuxième mot W2 est écrit dans l'unité de mémoire de type mémoire RAM. Il est simultanément écrit dans le second registre 41. Pendant la deuxième période d'horloge, le deuxième mot W2 est directement disponible pour l'interface de décodage 213 par l'intermédiaire du second registre 41. Si un troisième mot W3 est transmis lors de la deuxième période d'horloge au circuit tampon d'entrée de l'interface de mémoire externe, il est écrit dans un autre espace mémoire de l'unité de mémoire de type mémoire RAM. Il est simultanément écrit dans le second registre 41 qui s'est libéré. Pendant la troisième période d'horloge, le troisième mot W3 est disponible pour l'interface de décodage 213 par le second registre 41. On peut remarquer qu'au même moment le deuxième mot W2 est disponible dans le premier registre 212 conformément au fonctionnement du circuit de l'art antérieur présenté à la figure 2. Cependant, le second multiplexeur 45 sélectionne la plus ancienne des données stockées dans les deux registres pour la fournir en sortie du circuit tampon si cette donnée n'a pas déjà été transmise. Or dans ce cas, le deuxième mot W2 a déjà été transmis à l'interface de décodage 213. C'est donc le troisième mot W3 qui est sélectionné. Toujours conformément au fonctionnement du circuit de l'art antérieur présenté à la figure 2, l'espace mémoire de l'unité de mémoire 28 dans lequel avait été inscrit le troisième mot W3, est lu. A la quatrième période d'horloge le troisième mot W3 peut ainsi être transmis à l'interface de décodage 213 par l'intermédiaire du premier registre 212. Si aucun nouveau mot n'est disponible à la sortie de l'interface de bus 23, le circuit reprend un fonctionnement similaire au circuit de l'art antérieur décrit à la figure 2. Toutes ces opérations sont synthétisées dans le tableau 2 ci-dessous. Une colonne supplémentaire par rapport au tableau 1 a été rajoutée. Elle correspond à la quatrième période d'horloge qui entre en compte dans l'étude précédente. Les lignes du tableau 2 décrivent les mêmes fonctions que les lignes du tableau 1. période 1 2 3 4 d 'horloge opérations du écriture de - lecture de lecture de circuit de I'art W2 dans W2 dans W3 dans antérieur RAM RAM RAM - écriture de W3 dans RAM transmission bloquée normale normale opérations du écriture de écriture de circuit selon W2 dans W3 dans l'invention -RAM - RAM - registre 41 - registre 41 mot W1 (registre W2 (registre W2 (registre W3 (registre disponible 212) 41) 212) 212) W3 (registre 41) Tableau 2 Un dernier cas de figure va être étudié en détail. Ce cas de figure est similaire au précédent sauf que la transmission est de nouveau bloquée pendant la troisième période d'horloge. Le fonctionnement du circuit décrit à la figure 4, dans ces conditions, est similaire pour les deux premières périodes d'horloge au fonctionnement du précédent cas synthétisé au tableau 2. Pendant la troisième période d'horloge, la transmission est bloquée. Le mot disponible en sortie doit donc être le même que celui disponible en sortie pendant la deuxième période d'horloge, afin de ne perdre aucune donnée. C'est le deuxième mot W2 qui doit donc être disponible en sortie de l'interface de mémoire externe. Il suffit donc de commuter le second multiplexeur 45 pour répondre à cette exigence de fonctionnement. C'est ainsi le deuxième mot W2 qui est disponible par l'intermédiaire du premier registre 212. Ainsi, la valeur du mot de sortie est maintenue, alors que l'origine de ce mot a changé. Cependant, la transmission étant bloquée, aucune lecture, et notamment celle du troisième mot W3, n'est effectuée dans l'unité de mémoire de type RAM. Pendant la quatrième période d'horloge, si l'état de la transmission est redevenu normal, le troisième mot W3 est immédiatement disponible par l'intermédiaire du second registre 41. Ceci n'était pas le cas avec le circuit de l'art antérieur présenté à la figure 2. Toutes ces opérations sont synthétisées dans le tableau 3 ci-dessous. période 1 2 3 4 d'horloge opérations du écriture de - lecture de - pas de lecture de W3 circuit de l'art W2 dans W2 dans lecture de W3 dans RAM antérieur RAM RAM dans RAM - écriture de W3 dans RAM transmission bloquée normale bloquée normale opérations du écriture de écriture de circuit selon W2 dans W3 dans l'invention -RAM - RAM - registre 41 - registre 41 mot W1 (registre W2 (registre W2 (registre W3 (registre disponible 212) 41) 212) 41) Tableau 3 D'une façon générale, la donnée la plus ancienne contenue dans l'unité de mémoire 28 de type RAM est écrite dans le premier registre 212 lorsque le premier registre 212 du circuit tampon se libère. Le second multiplexeur connecté au premier registre 212 du circuit tampon et au second registre 41 du circuit tampon sélectionne la donnée la plus ancienne stockée dans l'un des deux registres 41 et 212 pour rendre la donnée disponible en sortie du circuit tampon 20 si cette donnée n'a pas déjà été fournie en sortie du circuit tampon 20. Le second multiplexeur sélectionne la donnée la plus récente stockée dans l'un des deux registres 41 et 212 pour rendre la donnée disponible en sortie du circuit tampon 20 si la donnée la plus ancienne stockée dans l'un de ces deux registres a déjà été fournie en sortie du circuit tampon 20. Un dispositif de contrôle, préalablement programmé ou réalisé de manière équivalente par un circuit logique, non représenté sur les figures, gère les commutations des différents multiplexeurs de façon à se conformer au fonctionnement exposé dans la description. Ainsi, lorsque les conditions de blocage de la transmission apparaissent pendant plusieurs impulsions d'horloge, le temps de transmission est plus court si les conditions de blocage de la transmission finissent par disparaître. R E V E N D I C A T IONS 1 - Procédé de stockage et de récupération de données dans un circuit tampon (20) comportant les étapes suivantes: - chaque donnée est transmise au circuit tampon (20) via un bus de transmission (22) et une interface de bus (23), - chaque donnée est écrite dans un premier registre (212) du circuit tampon (20) pour la rendre disponible en sortie du circuit tampon (20) si le premier registre (212) est vide, chaque donnée est stockée dans une unité de mémoire (28) de type RAM si le premier registre (212) contient une autre donnée, caractérisé en ce que: - une dernière donnée transmise est écrite dans un second registre (41) du circuit tampon (20) pour la rendre disponible en sortie du circuit tampon (20) simultanément à son éventuelle écriture dans l'unité de mémoire de type RAM. 2 - Procédé de stockage et de récupération de données dans un circuit tampon (20) selon la revendication 1, caractérisé en ce que le second registre (41) est libéré dès que la donnée qu'il contient est transmise ou qu'une nouvelle donnée arrive par l'interface de bus (23). 3 - Procédé de stockage et de récupération de données dans un circuit tampon selon la revendication 1 ou 2, caractérisé en ce que la donnée la plus ancienne contenue dans l'unité de mémoire (28) de type RAM est écrite dans le premier registre (212) lorsque le premier registre (212) du circuit tampon se libère. 4 - Procédé de stockage et de récupération de données dans un circuit tampon (20) selon l'une des revendications 1 à 3, caractérisé en ce qu'un multiplexeur (45) connecté au premier registre (212) du circuit tampon et au second registre (41) du circuit tampon sélectionne la donnée la plus ancienne stockée dans l'un de ces deux registres pour la rendre disponible en sortie du circuit tampon (20) si cette donnée n'a pas déjà été fournie en sortie du circuit tampon (20). - Procédé de stockage et de récupération de données dans un circuit tampon (20) selon l'une des revendications 1 à 3, caractérisé en ce que le multiplexeur (45) connecté au premier registre (212) du circuit tampon et au second registre (41) du circuit tampon sélectionne la donnée la plus récente stockée dans l'un de ces deux registres pour la rendre disponible en sortie du circuit tampon (20) si la donnée la plus ancienne stockée dans l'un de ces deux registres a déjà été fournie en sortie du circuit tampon (20).