Brevet FR2801388A1 — publié le 20010525

PROCÉDÉ DE COMMANDE DE MÉMOIRE DRAM RAPIDE ET CONTRÔLEUR ADAPTÉ La présente invention concerne le domaine des mémoires, et plus particulièrement les mémoires dynamiques à accès aléa toire (DRAM). Typiquement, une mémoire DRAM comporte un plan mémoire constitué par un réseau de cellules mémoire élémentaires, un décodeur ligne et un décodeur colonne. Chaque cellule mémoire est située à l'intersection d'une ligne (ligne de mot) et dune colonne (ligne de bit). Le décodeur colonne comporte de façon classique une entrée pour l'écriture des données et une sortie pour la lecture des données. Le décodeur colonne est commandé par un signal de validation d'adresse de colonne généralement nommé CAS (Column Address Strobe), un signal d'adresse de colonne généralement nommé CAD (Column ADdress) et un signal de lecture/écriture géné ralement nommé R/W (Read/Write). Le décodeur ligne, quant à lui, est commandé par un signal de validation d'adresse de ligne généralement nommé RAS (Row Address Strobe), un signal d'adresse de ligne généralement nommé RAD (Row ADdress) et des signaux servant au rafraîchisse ment de la mémoire. De façon classique également, des amplificateurs d'accès au plan mémoire (SENSE AMP) se trouvent sur chaque ligne de bit, entre le plan mémoire et le décodeur colonne. Ils permet tent l'isolement des cellules mémoire et autorisent leur lecture, écriture ou rafraîchissement. Les mémoires dynamiques (DRAM) présentent l'avantage d'avoir une grande densité de stockage, mais, outre le fait qu'un rafraîchissement des cellules mémoire est nécessaire, elles présentent l'inconvénient d'être lentes en termes de temps d'accès. A titre d'exemple, la figure 1 représente un chrono- gramme du signal RAS pour une DRAM classique, illustrant le temps nécessaire au traitement d'une requête d'accès. on suppose qu'à un instant t0 la DRAM reçoit une requête d'accès, le signal RAS étant déjà à son niveau de précharge. Les données souhaitées ne seront accessibles en sortie du plan mémoire qu'à un instant t1. Ensuite, il faut attendre un instant t2 pour que tous les mots souhaités d'une ligne de données (ou page de mots) soient lus à la sortie des amplificateurs d'accès (cas d'une lecture) ou écrit dans la mémoire (cas d'une écriture). Alors seulement le signal RAS peut retourner à son niveau de précharge, où il devra rester au moins pendant le temps de précharge tpR (typiquement 3 cycles d'horloge) avant que la mémoire ne soit à nouveau disponible pour un autre accès. Ainsi, le temps entre deux accès successifs à la mémoire est de t3-t0. Pour améliorer le temps d'accès, on a imaginé d'ajouter à la mémoire DRAM une mémoire cache permettant d'inscrire les données de la mémoire principale dès que celles-ci sont disponi bles, c'est-à-dire, dans l'exemple précédent, à l'instant t1, afin de remettre la mémoire principale en précharge dès que les données ont été chargées dans la mémoire cache, les données désormais stockées dans la mémoire cache pouvant être lues au gré de l'utilisateur. Comme cela est illustré en figure 2, la mémoire principale est à nouveau disponible pour une nouvelle requête à l'instant t'1, correspondant à l'instant t1 augmenté du temps de précharge tpR, mais il faut en pratique attendre que les données de la mémoire cache aient été exploitées avant de pouvoir accéder à nouveau au plan mémoire. Dans l'exemple de la figure 2, une salve de 5 données est représentée, et la mémoire ne pourra être utilisée qu'à l'instant t2. En termes de temps d'accès, le temps gagné dans cet exemple est le temps de précharge tpR@ puisque le signal RAS n'a plus besoin d'être mis en précharge au temps t2. Si toutefois la salve de données a une durée inférieure au temps de précharge (typiquement moins de trois données), la mémoire devient accessible à l'instant t'1 et, par rapport aux mémoires classiques, le gain de temps est celui de la salve de données. On voit ainsi que la structure de DRAM avec une mémoire cache améliore le temps d'accès à la DRAM, mais pas de manière significative. De plus, l'amélioration ne concerne que la lecture, pas l'écriture. En outre, dans de tels agencements, la mémoire cache est souvent de capacité limitée, ce qui retarde d'autant plus le traitement des salves longues ou de salves comprenant des mots éloignés d'une ligne. Dans la demande de brevet français intitulée "DRAM à structure rapide" déposée le 26.03.98 sous le numéro 98/04008, la demanderesse propose une mémoire DRAM comportant deux registres de cache pour stocker une page courante et une autre page de la mémoire, comme la page suivante de la mémoire, afin d'accélérer le traitement des requêtes. Cette demande s'intéresse surtout aux circuits composant la mémoire, et à son rafraîchissement. Elle ne décrit pas toutes les possibilités d'utilisation de la mémoire et de ses registres de cache. Elle ne décrit pas non plus un contrôleur mémoire pour commander la mémoire. Pour cela, un objet de la présente invention est de prévoir un procédé pour commander une mémoire DRAM comportant deux registres de cache. Un autre objet de la présente invention est de prévoir un contrôleur mémoire permettant de commander une mémoire DRAM comportant deux registres de cache. Pour atteindre ces objets ainsi que d'autres, la présente invention prévoit un procédé pour commander une mémoire dynamique à accès aléatoire (DRAM) comportant un plan mémoire constitué par un réseau de cellules mémoire et au moins deux registres de cache. Le procédé comporte les étapes suivantes recevoir une requête d'accès à la mémoire faisant partie d'une suite de requêtes synchrones d'une horloge, ladite requête comportant au moins une adresse de page, une adresse de colonne, une commande d'écriture ou de lecture et, en cas de requête d'écriture, des données à écrire, comparer l'adresse de page de la requête courante à l'adresse de page de la requête précédente, mémoriser, dans le cas où l'adresse de page de la requête courante est différente de celle de la requête précé dente, la nouvelle page dans l'un non utilisé des deux registres de cache, de préférence celui qui n'a pas été utilisé la dernière fois, mémoriser dans un élément de mémorisation l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, afin de les rendre disponibles lorsque la page de la requête courante est elle-même disponible dans un des registres de cache, et utiliser une sortie dudit élément de mémorisation pour accéder, à partir du registre de cache considéré, aux mots souhaités de la page de la requête courante. Selon un mode de réalisation de la présente invention, ledit élément de mémorisation comprend un premier registre, le contenu du premier registre étant transféré dans un second registre, et le second registre est constitué d'un ensemble de sous-registres formant un registre à décalage, le contenu du second registre progressant à chaque coup d'horloge vers une sortie dudit second registre afin de retarder l'adresse de colonne et les éventuelles données à écrire d'une durée égale au temps nécessaire au chargement d'une page, à partir du plan mémoire, dans un des registres de cache. Selon un mode de réalisation de la présente invention, dans le cas d'une lecture, les informations présentes à la sortie dudit élément de mémorisation permettent un accès direct, dans le registre de cache utilisé, aux mots repérés par leur adresse de colonne. Selon un mode de réalisation de la présente invention, dans le cas d'une écriture, les informations présentes à la sortie dudit élément de mémorisation permettent le chargement des mots à écrire dans ledit registre de cache, la page ainsi modifiée restant stockée dans ledit registre de cache en attente de sa réécriture lors d'un prochain accès au plan mémoire. Selon un mode de réalisation de la présente invention, si aucun accès au plan mémoire n'est requis pour une lecture ou une écriture, le rafraîchissement d'une ligne de la mémoire dynamique est effectué, les registres de cache, isolés du plan mémoire, étant disponibles pour utilisation pendant le rafraîchissement. Selon un mode de réalisation de la présente invention, lorsque la page de la requête courante est une nouvelle page et qu'elle ne peut être chargée dans un desdits registres de cache, la requête courante est stockée dans un moyen approprié jusqu'à ce que le chargement puisse avoir lieu. L'invention prévoit aussi un contrôleur mémoire pour commander une mémoire dynamique à accès aléatoire (DRAM) comportant un plan mémoire constitué d'un réseau de cellules mémoire et d'au moins deux registres de cache, le contrôleur recevant en entrée une requête d'accès à la mémoire, ladite requête faisant partie d'une suite de requêtes synchrones d'une horloge et comportant au moins une adresse de page, une adresse de colonne, une commande d'écriture ou de lecture et, dans le cas d'une requête d'écriture, des données à écrire. Le contrôleur comporte un bloc de commande propre à gérer le fonctionnement du contrôleur et à fournir des signaux d'accès au plan mémoire. Le contrôleur comporte aussi un comparateur associé à un élément de mémoire pour comparer l'adresse de page de la requête courante à l'adresse de page de la requête précédente, un élément de mémorisation pour mémoriser l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, et pour retarder ces informations du temps nécessaire au chargement d'une page dans un des registres de cache à partir du plan mémoire, de sorte que l'adresse de colonne et les éventuelles données associées de la requête courante sont rendues disponibles lorsque le contenu de la page de la requête courante est lui-même disponible dans un des registres de cache. Selon un mode de réalisation de la présente invention, l'élément de mémorisation comprend un premier registre pour mémoriser l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, et un second registre, recevant en entrée la sortie dudit premier registre et fournissant en sortie des signaux de commande des registres de cache, ledit second registre étant constitué d'un ensemble de n sous-registres formant un registre à décalage, le nombre des sous-registres étant choisi pour retarder les informations à la sortie du second registre du temps nécessaire au chargement d'une page dans un des registres de cache à partir du plan mémoire, de sorte que l'adresse de colonne et les éventuelles données associées de la requête courante sont rendues disponibles lorsque le contenu de la page de la requête courante est lui-même disponible dans un des registres de cache. Selon un mode de réalisation de la présente invention, le nombre de sous-registres dépend de la fréquence d'horloge et du temps d' accès à la DRAM, ce nombre étant égal à 4 lorsque la fréquence d'horloge est 200 MHz et le temps d'accès à la DRAM est 20 nanosecondes. Selon un mode de réalisation de la présente invention, le contrôleur comprend en outre une mémoire additionnelle, par exemple de type FIFO, pour recevoir les requêtes en entrée, ladite mémoire étant propre à mettre des requêtes en attente. Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles la figure 1, déjà décrite, est un chronogramme illus trant le temps requis par le traitement d'une requête dans le cas d'une DRAM classique ; la figure 2, déjà décrite, est un chronogramme illus trant le temps requis par le traitement d'une requête dans le cas d'une DRAM associée à une mémoire cache ; la figure 3 illustre une mémoire DRAM comportant deux registres de cache ; la figure 4 illustre un contrôleur mémoire selon la présente invention ; et la figure 5 est un chronogramme illustrant divers signaux lors du fonctionnement de la mémoire DRAM. La figure 3 illustre une mémoire DRAM 1. Cette mémoire comporte de façon classique un plan mémoire 2 constitué par un réseau de cellules mémoire, un décodeur ligne 3 et un décodeur colonne 4. Par souci de simplicité, les amplificateurs d'accès (SENSÉ AMP) se trouvant sur chaque ligne de bit à la sortie du plan mémoire n'ont pas été représentés. Le décodeur colonne comporte, de façon classique une entrée DIN pour l'écriture et une sortie DOUT pour la lecture de données. Le décodeur colonne est commandé par les signaux de validation d'adresse de colonne (CAS), d'adresse de colonne (CAD) et de lecture/écriture (R/W), et le décodeur ligne est commandé par les signaux de validation d'adresse de ligne (RAS), d'adresse de ligne (RAD) et par un signal de réécriture RWB (Row-Write- Back) dont la fonction sera explicitée plus loin. La mémoire 1 comporte aussi deux registres de cache A et B situés entre le plan mémoire 2 et le décodeur colonne 4 (ou, plus exactement, entre les amplificateurs d'accès au plan mémoire et le décodeur colonne). Ces registres de cache A et B, qui sont des mémoires à accès rapide, jouent le rôle d'interface entre le plan mémoire d'une part, et l'entrée DIN et la sortie DOUT d'autre part. Ils peuvent stocker une ligne complète du plan mémoire, c'est-à-dire une page de mots complète. Ainsi, si le plan mémoire est un réseau de 1024 x 1024 bits, chacun des regis tres de cache A et B peut stocker une ligne complète de 1024 bits, soit par exemple une page de 16 mots de 64 bits ou de 32 mots de 32 bits. Dans la présente utilisation de la DRAM 1, les données stockées dans le plan mémoire 2 ne sont accessibles que par l'intermédiaire des registres de cache A et B, le plan mémoire étant soit isolé, soit en communication avec un des registres de cache. Les registres de cache sont gérés indépendamment l'un de l'autre et peuvent être soit isolés du plan mémoire, soit en communication avec lui. Ils peuvent aussi, lorsqu'ils sont isolés du plan mémoire, être en communication avec un système utilisa teur par l'intermédiaire des bornes DIN et DOUT. Les avantages du mode d'utilisation précédent sont mul tiples. On peut par exemple charger une page de mots dans le registre de cache A, pendant que le système utilisateur accède aux données préalablement chargées dans le registre de cache B, pour les lire ou les modifier. Si des données sont modifiées dans ce registre B, il sera aisé de réécrire la page modifiée contenue dans le registre B lors d'un accès ultérieur au plan mémoire, par exemple lors de l'accès aux données de l'autre registre de cache (A). On conçoit facilement qu'une telle architecture, qui permet de différer l'accès aux données et leur traitement, assure en fait un masquage du temps d'accès au plan mémoire et permet un gain de temps significatif en lecture et en écriture. En outre, si aucun des registres de cache n'est en communication avec le plan mémoire, on pourra procéder à un rafraîchissement de la mémoire, et, si le temps disponible est suffisant, le temps nécessaire au rafraîchissement sera totale ment masqué, comme on le verra par la suite, d'où il résulte un gain de temps supplémentaire. De plus, comme on transfère une page complète, c'est-à- dire une ligne de mots complète, du plan mémoire à un des registres de cache A et B, on dispose de manière immédiate de tous les mots de cette page en accédant au registre de cache considéré. Celui-ci étant isolé du plan mémoire après chargement des données, on pourra lire ou modifier son contenu. Tant que les requêtes concerneront la même page, quel que soit le nombre de requêtes considéré, il sera inutile d'accéder à nouveau au plan mémoire. On peut ainsi traiter sans difficulté et dans n'importe quel ordre des salves de taille très variable (de un mot à une page complète), et les temps d'accès au plan mémoire se trouvent masqués, totalement ou en partie, selon la longueur de la salve. I1 est ainsi possible d'obtenir en sortie une donnée à chaque coup d'horloge, comme dans le cas d'une SRAM (en fait, chaque fois que la durée moyenne des salves est supérieure au temps d'accès au plan mémoire, ce qui est généralement le cas). On va maintenant décrire un contrôleur mémoire selon la présente invention. En figure 4, un contrôleur 20 comprend un bloc de commande 21 fournissant les signaux RAS et RWB, ainsi que des signaux RTC et RAC (Row Transfer Cache) et (Row Access Cache) permettant le transfert d'une ligne du plan mémoire dans un des registres de cache et inversement. Le signal RTC indique s'il s'agit d'un transfert ou d'un rafraîchissement, le signal RAC indique le registre de cache choisi (A ou B), et le signal RWB indique le sens du transfert (plan mémoire vers registre de cache ou registre de cache vers plan mémoire). Ces signaux, ainsi que le signal RAD (Row ADdress) concernent les opérations mettant en jeu le plan mémoire de la DRAM. Le signal RAD, lui, est issu d'un multiplexeur 38 commandé par le bloc de commande 21 et permettant le chargement d'un registre de cache, la réécriture dans le plan mémoire d'une page modifiée et le rafraîchissement d'une ligne de mots du plan mémoire, comme on le verra ci-après. Le contrôleur 20 reçoit en entrée des requêtes prove nant d'une interface d'utilisateur 22. Telles qu'elles sont représentées - il s'agit d'un exemple seulement -, ces requêtes comprennent une adresse de page MSB (Most Significant Bit), une adresse de colonne LSB (Low Significant Bit), un signal R/W indi- quant si la requête est une demande de lecture ou d'écriture, un signal de données (DATA IN) dans le cas où il s'agit d'une requête d'écriture, et un signal TAG utilisé en lecture. En géné ral, la requête comprend également un signal de validation de requête (REQ), représenté ici, qui indique si la requête est valide ou non. Le contrôleur 20 comprend également un élément de mémoire 24 pour mémoriser l'adresse de page (MSB) de la requête précédente. Le contrôleur comprend également un comparateur 25 pour comparer l'adresse de page de la requête courante à celle de la requête précédente. Le résultat de la comparaison est fourni au bloc de commande 21 qui élabore, entre autres, des signaux de commande de la DRAM. Ainsi le contrôleur, en cas de requêtes successives concernant la même page, n'adresse pas à nouveau le plan mémoire, et il permet au système utilisateur d'accéder aux données de la page en question, déjà présentes dans un des regis tres de cache A et B. Par contre, si l'adresse de page de la requête courante est différente de l'adresse de page de la requête précédente, le contrôleur 20 déclenche un accès au plan mémoire et fait transférer le contenu de la page en question dans un des registres de cache A et B. Le contrôleur 20 comprend également un premier registre 26 qui reçoit l'adresse de colonne (LSB), le signal R/W , le signal TAG et, si elles sont présentes, les données DATA IN. Le rôle de ce premier registre 26 est de stocker les éléments indiqués de la requête d'entrée. Le contrôleur 20 comprend également un second registre 28, constitué d'un ensemble de sous- registres 28.1, ... , 28.i, ..., 28n formant un registre à décalage. Une entrée du second registre 28 est reliée à la sortie du premier registre 26 et les données du registre 26 sont transférées dans le registre 28 au coup d'horloge suivant leur arrivée dans le registre 26. En outre, le signal R/W est fourni au bloc de commande 21. Le registre 28 reçoit aussi en entrée une sortie du bloc de commande 21 fournissant divers signaux pour commander les deux registres de cache A et B de la mémoire DRAM et l'on a, à la sortie du registre à décalage 28, un signal CAS- En (CAS-Enable) qui, par combinaison avec l'horloge, produit le signal CAS, des signaux OEN (Output Enable), WEN (Write Enable), le signal CAC qui sélectionne le registre de cache, le signal TAG-OUT qui correspond au signal TAG reçu quelques coups d'horloge auparavant, et les signaux CAD et D-IN qui représentent respectivement l'adresse colonne et les données à écrire, et correspondent aux signaux LSB et DATA IN reçus quelques coups d'horloge auparavant. Le nombre n de sous-registres du second registre 28 doit être choisi avec soin. En effet, c'est ce nombre n qui détermine le retard de l'adresse de colonne (CAD) d'une requête par rapport à l'adresse de page (RAD) de cette même requête. I1 faut choisir le nombre n de sous-registres de sorte que la page déterminée par l'adresse MSB ait le temps de se charger dans le registre de cache sélectionné. Le nombre n dépend de la fréquence de travail, ainsi que du temps d'accès à la DRAM. En fait, on a la relation n = taccès/tCK, taccès étant le temps d'accès à la DRAM (c'est-à-dire la durée entre le passage du signal RAS à un niveau bas et l'instant où la donnée est disponible) et tCK étant la période d'horloge. Dans l'exemple représenté, la fréquence d'horloge est de 200 MHz, soit tCK = 5 nanosecondes, le temps d'accès à la DRAM est de 20 nanosecondes, et il y a quatre sous- registres 28.i, l'adresse de colonne étant alors décalée de quatre cycles d'horloge par rapport à l'adresse de page. A titre de variante, le second registre 28 peut être remplacé par un élément de mémorisation approprié, par exemple une mémoire FIFO. Cela permet à une requête concernant la page courante, mais arrivant après un ou plusieurs cycles d'horloge sans requête, d'être exécutée immédiatement sans avoir à traverser l'ensemble des registres 28-i. En contrepartie, cela ajoute de la complexité au système, tant pour l'élément de mémorisation que pour le bloc de commande 21, qui doit alors gérer l'instant de sortie des données et adresses dudit élément de mémorisation. En outre, de manière optionnelle, le contrôleur 20 peut comporter une mémoire d'entrée 30, par exemple une mémoire FIFO, pour stocker les requêtes reçues lorsque celles-ci sont valides (REQ = 1). Le rôle de la mémoire 30 est, en cas de suractivité du contrôleur 20, de stocker un certain nombre de requêtes d'accès en attente de leur traitement. Si d'aventure cette mémoire d'entrée 30 vient à se remplir, elle émet un signal de surcharge (BUSY) pour faire temporairement cesser l'arrivée des requêtes. De manière optionnelle également, le contrôleur mémoire 20 peut aussi recevoir en entrée un signal RMW-DIN (Read Modify Write-DIN) permettant d'insérer une requête de modification d'écriture. A l'aide d'un multiplexeur 32, également optionnel, la donnée peut être prise directement sur l'entrée RMW-DIN au lieu de la sortie DIN du registre 28. Le contrôleur 20 comprend aussi un compteur de rafraî chissement 34, couplé au bloc de commande 21 et au multiplexeur 38, et un élément de mémorisation 36 couplé au multiplexeur 38, l'élément de mémorisation 36 étant commandé par le bloc de commande 21. Le multiplexeur 38 fournit ainsi, à l'entrée RAD du décodeur ligne, soit l'adresse de page MSB de la requête courante, soit une adresse de page à rafraîchir issue du compteur de rafraîchissement 34, soit l'adresse de page de la requête d'écriture précédente, stockée dans l'élément de mémorisation 36, ladite page étant en attente de réécriture dans le plan mémoire car elle a été modifiée. Le fonctionnement du contrôleur 20 va être mieux compris en relation avec la description de la figure 5, qui est un chronogramme permettant d'appréhender le procédé pour comman- der la mémoire dynamique. En figure 5, des requêtes sont présentées de façon syn chrone par rapport à une horloge CK. Le signal REQ est toujours à 1 dans l'exemple proposé, c'est-à-dire que les requêtes doivent être toujours prises en considération. La ligne ADD représente les adresses de page et de colonne des mots requis. Ainsi Aa signifie page A, mot a, Ab signifie page A mot b, etc. La ligne suivante montre le signal RW et indique que, à part les mots Ab et Ac, qui sont à écrire, tous les autres mots sont à lire. Le signal DIN comporte les données Dab et Dac à écrire aux adresses Ab et Ac. La ligne suivante du chronogramme illustre le signal RAS. Lorsque le signal RAS passe à l'état bas, une ligne du plan mémoire est accessible. Cette ligne du plan mémoire va être ins crite dans un des deux registres de cache A ou B. En pratique, le registre de cache sélectionné est le registre de cache qui n'a pas été sélectionné la fois précédente. Cela permet de poursuivre si besoin est l'utilisation du registre sélectionné la fois pré cédente et de tirer pleinement profit de la structure de la mémoire selon l'invention. Lorsque les données ont été transfé rées dans un registre de cache, le signal RAS retourne à son niveau de précharge, et, lorsque le temps tpR est écoulé, on peut à nouveau accéder au plan mémoire. Ainsi en figure 5, au temps 1, comane cela est indiqué par les signaux RWB d'une part et RTC, RAC (représentés sur une même ligne du chronogramme pour des raisons de simplicité) d'autre part, le contrôleur provoque un accès au plan mémoire en vue du chargement de la page A dans le registre de cache A à partir du plan mémoire, le chargement de la page A dans le registre de cache A se produisant effectivement quelques coups d'horloge plus tard, comme cela est illustré par la ligne "Contenu A" de la figure 5. Au temps 2, le plan mémoire est à nouveau accessible pour une nouvelle requête et si besoin est, une nouvelle page peut être inscrite dans l'autre registre de cache (B). C'est ce qui se produit dans l'exemple illustré. Le contrôleur, à l'aide de ses éléments de mémorisation et de comparaison 24 et 25, a déterminé que la requête courante concernait une autre page (la page B) et il provoque le chargement de cette nouvelle page dans le registre de cache qui n'a pas été utilisé la fois précédente, c'est-à-dire le registre B, et la page B est disponible dans le registre de cache B quelques coups d'horloge plus tard, comme cela est illustré par la ligne "Contenu B" de la figure 5. Cela permet au contrôleur, pendant ce temps, de continuer à adresser pour lecture le registre A et, comme on le voit sur la ligne CAD, au temps 2, le mot b est inscrit dans le registre de cache A, modifiant le mot b précédent de la page A. Notons que, dans la mémoire considérée, le signal CAS est produit en interne dans la mémoire par combinaison de l'horloge CK et du signal CAS-En, également représenté en figure 5. Au temps 3, le plan mémoire est à nouveau disponible pour une opération. On voit qu'au temps 3, les requêtes concer nent toujours des mots de la page B, qui est stockée dans le registre de cache B. Par ailleurs, le registre de cache A contient les données DAb et DAc à écrire dans le plan mémoire. Le plan mémoire étant inutilisé pour l'instant, le contrôleur va faire inscrire le contenu du registre de cache A dans le plan mémoire 2. Au temps 4, le plan mémoire est à nouveau accessible. Cette fois, une nouvelle page C est adressée. La page C va alors être chargée du plan mémoire dans le registre de cache A, qui n'a pas été adressé lors du précédent accès à la mémoire et le chargement a lieu quelques coups d'horloge plus tard, comme cela est illustré par la ligne "Contenu A" en figure 5. Au temps 5, le plan mémoire est à nouveau disponible. Les requêtes concernent toujours des mots de la page C, qui est actuellement présente dans le registre de cache A, et un nouvel accès au plan mémoire n'est pas requis. On va alors utiliser la possibilité d'accès au plan mémoire pour exécuter un rafraÎchis- sement, la ligne rafraîchie étant définie par le compteur de rafraîchissement 34. Au temps 6, le rafraîchissement est terminé. Entre temps, une requête portant sur une nouvelle page (D) est apparue. Cette page va alors être chargée à partir du plan mémoire dans le registre de cache qui n'a pas été utilisé la dernière fois, à savoir le registre B. On voit que, en figure 5, on obtient, après un décalage de quatre coups d'horloge, un débit ininterrompu de données en sortie, comme dans le cas d'une mémoire statique, et que les temps d'accès au plan mémoire se trouvent totalement masqués par l'utilisation selon l'invention des deux registres de cache. En fait, tant que la durée moyenne des salves est suffisamment longue, les temps d'accès au plan mémoire seront masqués et, dans le cas d'une salve particulièrement longue (comme la salve concernant la page C), le rafraîchissement d'une ligne peut être effectué de manière totalement masquée, sans utilisation addi tionnelle de temps, ce qui constitue un avantage supplémentaire de l'invention. On notera également que le contrôleur mémoire et le procédé de la présente invention présentent l'avantage que les adresses d'une salve de mots sont des adresses quelconques de mots d'une page donnée, l'ordre de ces adresses important peu. En effet, du fait qu'une page complète de mots est stockée dans un des registres de cache, le contrôleur permet d'accéder à chaque mot de la page stockée de manière rapide et indépendante, les adresses de ces mots n'ayant nul besoin d'être consécutives ou de suivre un ordre quelconque pour être traitées efficacement. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l' art. En particulier, le contrôleur a été décrit pour comman- der une mémoire DRAM comportant un seul plan mémoire ; il est bien entendu que le contrôleur de l'invention pourrait commander une DRAM comportant plusieurs plans mémoire en cascade, chaque plan mémoire utilisant un décodeur ligne particulier et étant relié aux deux mêmes registres de cache A et B, un seul décodeur colonne étant commun à tous les plans mémoire. Egalement, le contrôleur mémoire et le procédé selon l'invention ont été décrits dans le cadre d'une mémoire à accès unique (Single Port Memory). I1 est à la portée de l1homme du métier de modifier le contrôleur et le procédé de la présente invention pour les appliquer au cas dune mémoire à double accès (Dual Port Memory), deux registres de cache A et B étant présents sur chacun des accès de la mémoire. REVEMICATIONS 1. Procédé pour commander une mémoire dynamique à accès aléatoire (DRAM) comportant un plan mémoire constitué par un réseau de cellules mémoire et au moins deux registres de cache (A, B), le procédé comportant les étapes suivantes recevoir une requête d'accès à la mémoire faisant partie d'une suite de requêtes synchrones dune horloge, ladite requête comportant au moins une adresse de page (MSB), une adresse de colonne (LSB), une commande d'écriture ou de lecture (R/W) et, en cas de requête d'écriture, des données à écrire (DATA IN), comparer l'adresse de page de la requête courante à l'adresse de page de la requête précédente, mémoriser, dans le cas où l'adresse de page de la requête courante est différente de celle de la requête précé dente, la nouvelle page dans l'un non utilisé des deux registres de cache (A, B), de préférence celui qui n'a pas été utilisé la dernière fois, mémoriser dans un élément de mémorisation (26, 28) l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, afin de les rendre disponibles lorsque la page de la requête courante est elle-même disponible dans un des registres de cache, et utiliser une sortie dudit élément de mémorisation (26, 28) pour accéder, à partir du registre de cache considéré, aux mots souhaités de la page de la requête courante. 2. Procédé selon la revendication 1, dans lequel ledit élément de mémorisation (26, 28) comprend un premier registre (26), le contenu du premier registre (26) étant transféré dans un second registre (28), et dans lequel le second registre (28) est constitué d'un ensemble de sous-registres (28.1, ..., 28.i, ... , 28.n) formant un registre à décalage, le contenu du second regis tre (28) progressant à chaque coup d'horloge vers une sortie dudit second registre afin de retarder l'adresse de colonne et les éventuelles données à écrire d'une durée égale au temps nécessaire au chargement d'une page, à partir du plan mémoire, dans un des registres de cache. 3. Procédé selon la revendication 1, dans lequel, dans le cas d'une lecture, les informations présentes à la sortie dudit élément de mémorisation (26, 28) permettent un accès direct, dans le registre de cache utilisé, aux mots repérés par leur adresse de colonne. 4. Procédé selon la revendication 1, dans lequel, dans le cas d'une écriture, les informations présentes à la sortie dudit élément de mémorisation (26, 28) permettent le chargement des mots à écrire dans ledit registre de cache (A, B), la page ainsi modifiée restant stockée dans ledit registre de cache (A, B) en attente de sa réécriture lors d'un prochain accès au plan mémoire. 5. Procédé selon la revendication 1, dans lequel, si aucun accès au plan mémoire n'est requis pour une lecture ou une écriture, le rafraîchissement d'une ligne de la mémoire dynamique est effectué, les registres de cache, isolés du plan mémoire, étant disponibles pour utilisation pendant le rafraîchissement. 6. Procédé selon la revendication 1, dans lequel, lors que la page de la requête courante est une nouvelle page et qu'elle ne peut être chargée dans un desdits registres de cache (A, B), la requête courante est stockée dans un moyen approprié (30) jusqu'à ce que le chargement puisse avoir lieu. 7. Contrôleur mémoire pour commander une mémoire dyna- mique à accès aléatoire (DRAM) comportant un plan mémoire (2) constitué d'un réseau de cellules mémoire et d'au moins deux registres de cache (A, B), le contrôleur recevant en entrée une requête d'accès à la mémoire, ladite requête faisant partie d'une suite de requêtes synchrones d'une horloge et comportant au moins une adresse de page (MSB), une adresse de colonne (LSB), une commande d'écriture ou de lecture (R/W) et, dans le cas d'une requête d'écriture, des données à écrire, et le contrôleur comportant un bloc de commande (21) propre à gérer le fonctionnement du contrôleur et à fournir des signaux d'accès au plan mémoire caractérisé en ce que le contrôleur comporte un comparateur (25) associé à un élément de mémoire (24) pour comparer l'adresse de page de la requête courante à l'adresse de page de la requête précédente, un élément de mémorisation (26, 28) pour mémoriser l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, et pour retarder ces informations du temps nécessaire au chargement dune page dans un des registres de cache (A, B) à partir du plan mémoire (2), de sorte que l'adresse de colonne et les éventuelles données associées de la requête courante sont rendues disponibles lorsque le contenu de la page de la requête courante est lui-même disponible dans un des regis tres de cache. 8. Contrôleur mémoire selon la revendication 7, dans lequel l'élément de mémorisation (26, 28) comprend un premier registre (26) pour mémoriser l'adresse de colonne et, le cas échéant, les données à écrire de la requête courante, et un second registre (28), recevant en entrée la sortie dudit premier registre (26) et fournissant en sortie des signaux de commande des registres de cache (A, B), ledit second registre (28) étant constitué d'un ensemble de n sous-registres (28.1, ...,28.i, ..., 28.n) formant un registre à décalage, le nombre des sous-registres (28.1,..,28.i,.., 28.n) étant choisi pour retarder les informations à la sortie du second registre (28) du temps nécessaire au chargement dune page dans un des registres de cache (A, B) à partir du plan mémoire, de sorte que l'adresse de colonne et les éventuelles données associées de la requête courante sont rendues disponibles lorsque le contenu de la page de la requête courante est lui-même disponible dans un des regis tres de cache. 9. Contrôleur mémoire selon la revendication 7, dans lequel le nombre de sous-registres dépend de la fréquence d'hor loge et du temps d'accès à la DRAM, ce nombre étant égal à 4 lorsque la fréquence d'horloge est 200 MHz et le temps d'accès à la DRAM est 20 nanosecondes. 10. Contrôleur mémoire selon la revendication 7, dans lequel le contrôleur comprend en outre une mémoire additionnelle (30), par exemple de type FIFO, pour recevoir les requêtes en entrée, la mémoire (30) étant propre à mettre des requêtes en attente.