Brevet FR2813427A1 — publié le 20020301

CIRCUIT DE COE D'UNE MÉMIRE DRAM La présente invention concerne un circuit de commande d'une mémoire, et en particulier un circuit de commande d'une mémoire externe de type SDRAM, DDR ou RAMBUS comprenant plusieurs zones mémoire. De nombreux systèmes électroniques doivent mémoriser une grande quantité de données dans une mémoire et ils doivent accéder à ces données rapidement. Des mémoires du type RAM dyna- mique, ou DRAM, ccportant généralement plusieurs zones mémoire accessibles chacune par l'intermédiaire d'un cache à débit de données élevé, conviennent à ce genre d'utilisation. Ces mémoires sont généralement des circuits intégrés discrets (noires externes) qui doivent être reliés à des circuits de commande de mémoire faisant la liaison avec le reste du système électronique. La figure 1 représente schématiquement un circuit de commande de mémoire 2 connecté à une mémoire 4 de type DRAM par l'intermédiaire d'un bus de cannande COM et d'un bus de données DAT. La mémoire 4 comprend deux zones mémoire A et B dont chacune est reliée au bus de données DAT par l'intermédiaire d'un cache, respectivement BUFA et BUFB. La mémoire 4 est cadencée par un signal d'horloge CK. Les zones mémoire A et B sont toutes les deux organisées en plusieurs pages mémoire (non représentées) dont chacune comporte un nombre prédéterminé de mots. Les caches BUFA et BUFB sont reliés par le bus de commande COM au circuit 2. Le circuit 2 comprend un bloc de gestion de priorité 8 connecté pour recevoir des requêtes d'écriture et/ou de lecture depuis des blocs (non représentés) qui sont par ailleurs reliés au bus DAT pour échanger des dcnnées avec la m & mire 4. Le bloc 8 reçoit des requêtes d'écriture et/ou de lecture destinées à l'une ou l'autre des zones mémoire. Lorsque le bloc 8 reçoit simultanément deux requêtes fournies par deux blocs, il traite en priorité la requête reçue depuis celui des deux blocs qui a la priorité sur l'autre. L'ordre de priorité des blocs est généralement programmé à l'initialisation du circuit. Le circuit 2 comprend en outre un bloc 10, relié entre la sortie du bloc 8 et le bus COM, qui convertit les requêtes reçues par le bloc 8 d'un protocole de communication propre au circuit 2 vers un protocole de communication propre à la mémoire 4. Le protocole accepté par une mémoire dépend du type et du constructeur de la mémoire. La figure 2 illustre schématiquement deux séries d'instructions fournies par le bloc 10 en cadence avec le signal d'horloge CK. Dans l'exemple représenté, le bloc 10 reçoit une première requête d'écriture d'un mot, destinée à une adresse A1' d'une page A1 de la zone mémoire A, puis une deuxième requête d'écriture d'un mot, destinée à une adresse B1' d'une page B1 de la zone mémoire B. Dans l'exemple représenté, de telles requêtes d'écriture commencent chacune par la réécriture des données du cache considéré dans une page traitée précédemment (précharge du cache, instruction PRE), suivie de l'écriture de la page considérée dans ledit cache (activation du cache, instruction ACT), suivie de l'écriture du mot considéré dans ledit cache (instruction WR). A un instant t0 correspondant au début de la première requête d'écriture, le bloc 10 fournit au bus COM une instruction PRE AO de précharge du cache BUFA. On notera que l'instruction de précharge est fournie au cache BUFA en une période T du signal d'horloge CK, mais qu'une opération de précharge ne peut être exécutée en une période seulement. La vitesse d'exécution de la précharge est une caractéristique de la mémoire 4. Dans l'exemple représenté, la mémoire 4 exécute l'opération de précharge en trois périodes. Ainsi, pendant deux périodes suivant la réception de l'ins- truction de précharge, le cache ne peut pas recevoir d'autre instruc- tion, et le bloc 10 doit fournir deux non-instructions "NOP" entre l'instruction de précharge et l'instruction d'activation suivante. A un instant t1 situé trois périodes T après l'instant t0, le bloc 10 fournit au bus COM une commande ACT A1 d'activation de page commandant au cache BUFA de lire la page d'adresse A1 de la zone mémoire A. L'instruction d'activation est fournie au cache BUFA en une période T mais l'opération d'activation est exécutée en trois périodes, et le bloc 10 doit fournir deux instructions NOP entre l'instruction d'activation et l'instruction d'écriture suivante. A un instant t2, situé trois périodes T après l'instant t1, le bloc 10 fournit une instruction WR A1' d'écriture du mot d'adresse A1' dans le cache BUFA. On notera que le mot qui doit être écrit à l'adresse A1' est fourni au bus de données DAT lorsque l'instruction WR A1 est fournie. Une seule période est nécessaire pour exécuter l'opération d'écriture. A un instant t3 situé une période T après l'instant t2, l'opération d'écriture du mot d'adresse A1' de la page A1 de la zone mémoire A est terminée. La deuxième requête d'écriture se déroule d'une façon semblable à la première requête d'écriture. A l'instant t3, le bloc 10 fournit une instruction PRE BO de précharge du cache BUFB. A un instant t4 situé trois périodes T après l'instant t3, le bloc 10 fournit une instruction ACr B1 d'activation de la page d'adresse B1 de la zone mémoire B. Enfin, à un instant t5 situé trois périodes T après l'instant t4, le bloc 10 fournit une instruction d'écriture WR B1' du mot d'adresse B1' de la page B1. On notera que lorsqu'une première et une deuxième requêtes d'écriture doivent être exécutées successivement dans une même page, le cache utilisé contient déjà la bonne page après la première écriture et il n'est pas nécessaire pour exécuter la deuxième requête d'écriture que le bloc 10 fournisse de nouveau les instructions de précharge et d'activation de ladite page. On notera également que certaines mémoires sont prévues pour faire suivre automatiquement toute écriture dans un mot d'un cache par une suite d'écritures dans les mots suivants du cache. Une telle suite d'écriture est appelée écriture par "paquets" (écriture en mode BURST). Durant une écriture par paquets, le cache utilisé ne peut recevoir d'autre instruction et le bloc 10 fournit des instructions NOP. Une écriture par paquets est classiquement interrompue par une instruction prédéterminée telle que l'instruction de précharge. L'exécution d'une requête de lecture d'un mot d'une page d'une zone mémoire est semblable à l'exécution d'une requête d'écriture de mot décrite précédenrnent, une instruction de lecture de mot (RD) remplaçant l'instruction d'écriture de mot (WR). Les récentes avancées technologiques ont permis de développer des mémoires DRAM fonctionnant à des fréquences très élevées allant jusqu'à 800 MHz. I1 a jusqu'à présent été possible de développer des circuits de commande pouvant fournir les instructions de commande de telles mémoires, en utilisant des architectures particulièrement simples et rapides. Cependant, on souhaite accroître encore le débit des données échangées avec la mémoire. I1 est possible d'accroître la vitesse d'accès aux mémoires, mais le développement de circuits de commande fonctionnant avec des signaux d'horloge plus rapides pose de nombreux problèmes, notamment un coût de développement élevé et une consommation élevée. L'utilisation de bus de commande et de données très larges permet également d'accroître le débit de données, mais une telle solution demande d'utiliser plusieurs mémoires dont chacune est reliée à une partie du bus, et l'utilisation de plusieurs mémoires est coûteuse. Un objet de la présente invention est de prévoir un circuit de commande permettant d'accéder avec un débit de données élevé à une mémoire de type DRAM comprenant au moins deux zones. Un autre objet de la présente invention est de prévoir un tel circuit de commande utilisant des bus de commande et de données ayant une largeur standard. Un autre objet de la présente invention est de prévoir un tel circuit fonctionnant avec un signal d'horloge de fréquence peu élevée. Un autre objet de la présente invention est de prévoir un tel circuit qui puisse fonctionner avec une mémoire peu coûteuse ayant une fréquence maximale de fonctionnement peu élevée. Pour atteindre ces objets, ainsi que d'autres, la présente invention prévoit un circuit de commande d'une mémoire comprenant au moins deux zones auxquelles on ne peut pas accéder simultanément, le circuit comprenant des premiers moyens pour mémoriser des séries d'instructions de lecture et/ou d'écriture séparément pour chacune desdites zones, des deuxièmes moyens pour détecter qu'une première instruction destinée à une première zone est une instruction prédéterminée qui doit être suivie d'une période pendant laquelle la première zone ne peut recevoir une autre instruction, et des troisièmes moyens pour, pendant ladite période, fournir des instructions à une autre zone de la mémoire. Selon un mode de réalisation de la présente invention, chacune des zones de la mémoire est accessible par l'intermé- diaire d'un cache particulier. Selon un mode de réalisation de la présente invention, le circuit comprend en outre des quatrièmes moyens pour recevoir des requêtes de lecture et/ou d'écriture et pour les écrire chacune sous la forme d'une série d'instructions dans les premiers moyens, chaque série d'instructions comprenant un nombre prédéterminé de données. Selon un mode de réalisation de la présente invention, ledit nanbre prédéterminé de données d'une série d'instructions ccxprend notamment une indication de l'ordre de priorité existant entre chaque série d'instructions mémorisée dans le premier moyen. Selon un mode de réalisation de la présente invention, ledit nombre prédéterminé de données d'une série d'instructions comprend notamment une indication de ce que la série d'instruction vise à une lecture ou à une écriture de la mémoire. Selon un mode de réalisation de la présente invention, ledit nombre prédéterminé de données d'une série d'instructions comprend notamment les adresses auxquelles ladite série d'instructions est destinée. Selon un mode de réalisation de la présente invention, ledit nombre prédéterminé de données d'une série d'instructions comprend notamment les instructions formant ladite série d'instructions. Selon un mode de réalisation de la présente invention, ledit nombre prédéterminé de données d'une série d'instructions comprend notamment la durée nécessaire pour exécuter ladite série d'instructions. Selon un mode de réalisation de la présente invention, les premiers moyens comportent pour chaque zone de la mémoire un nombre prédéterminé de registres. Selon un mode de réalisation de la présente invention, ledit nombre prédéterminé de registres comprend des registres d'index pour gérer l'écriture et la lecture des autres registres dudit nombre prédéterminé de registres, respectivement par les quatrièmes et deuxièmes moyens. 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, précédemment décrite, représente schémati- quement un circuit de camande classique d'une ire DR.AM ; la figure 2, précédemment décrite, illustre le fonctionnement du circuit de commande de la figure 1 ; la figure 3 représente schématiquement un circuit de commande selon la présente invention ; la figure 4 illustre schématiquement le fonctionnement du circuit de commande de la figure 3 ; et la figure 5 représente schématiquement la structure d'un ensemble de registres du circuit de commande selon la présente invention. La figure 3 représente schématiquement un circuit de commande de mémoire selon la présente invention, connecté à une mémoire 4. Selon la présente invention, le circuit de commande comprend un bloc de reconnaissance 12 connecté pour recevoir des requêtes d'écriture et/ou de lecture depuis des blocs (non représentés) du circuit qui sont reliés au bus DAT pour échanger des données avec la mémoire 4. Le circuit de commande comprend en outre deux ensembles de registres 14 (A') et 16 (B') prévus pour mémoriser les données fournies par le bloc 12. Un bloc de décision 18 est connecté aux sorties des ensembles des registres 14 et 16. La sortie du bloc 18 est fournie à une machine d'état 20 reliée au bus de commande COM. La machine d'état 20 est cadencée par le même signal d'horloge CK que la mémoire 4. Lorsque le bloc 12 reçoit une requête destinée à la zone ire A ou B, il traduit la requête en des instructions et des informations, canne on le verra par la suite. Ces instructions/ informations sont respectivement mémorisées dans l'ensemble de registres 14 ou 16 selon qu'elles sont destinées à la zone A ou B. Si le bloc 12 reçoit simultanément deux requêtes provenant de deux blocs du circuit, il traite en priorité la requête provenant du bloc ayant la priorité la plus haute selon une gestion de priorité classique. Les instructions mémorisées dans les ensembles de registres 14 et 16 sont analysées par le bloc 18 pour déterminer si une instruction doit être suivie d'une période pendant laquelle le cache auquel elle est destinée ne peut recevoir d'autres instructions. Si une telle instruction existe dans l'un des ensembles de registres, le bloc 18 analyse les informations/ instructions mémorisées dans l'autre ensemble de registres pour déterminer si, pendant ladite période, il est possible de fournir une instruction de l'autre ensemble de registres à l'autre cache. La machine d'état 20 fournit un signal de cadencement au bloc de décision 18 de manière à recevoir à chaque nouvelle période du signal d'horloge CK une instruction devant être fournie à l'un ou l'autre des caches de la mémoire. Si aucune instruction ne doit être fournie, la machine d'état 20 produit une instruction NOP. La machine d'état 20 traduit les instructions fournies par le bloc 18 en instructions codées élémentaires acceptées par la mémoire 4. La figure 4 illustre schématiquement deux séries d'instructions fournies en cadence avec le signal d'horloge CK par la machine d'état 20. Cane précédemment, les deux séries d'instructions correspondent respectivement à une première requête d'écriture d'un mot à une adresse A1' d'une page A1 de la zone mémoire A, et à une deuxième requête d'écriture d'un mot à une adresse B1' d'une page B1 de la zone mémoire B. Cane précé- demment, chaque requête commence par une instruction de précharge de page, suivie d'une instruction d'activation de page et d'une instruction d'écriture de mot. Les instructions de précharge PRE A0, d'activation ACr A1 et d'écriture WR A1' destinées à la zone mémoire A sont, comme précédemment, fournies avec un intervalle de trois périodes T à des instants t0, t1 et t2 respectivement. Cependant, selon la présente invention, l'instruction de précharge PRE BO destinée à la zone mémoire B est fournie au bus COM à un instant t0' situé une période T après l'instant t0. L'instant t0' est le début de la période suivant l'instruction PRE AO pendant laquelle le cache BUFA ne peut recevoir d'autre instruction. De même, l'instruction d'activation ACT B1 destinée à la zone mémoire B est fournie au bus COM à un instant t1' situé deux périodes T après l'instant t1. On notera qu'une instruction NOP est ainsi intercalée entre les instructions ACT A1 et ACT Bi. Une telle instruction NOP intercalaire est nécessaire pour la plupart des mémoires, qui ne peuvent, par construction, pas recevoir à la suite deux instructions ACT. Cependant, dans le cas d'une mémoire pouvant recevoir à la suite deux instructions ACr, l'instant t1' pourrait être situé une période T après l'instant ti. Enfin, l'instruction d'écriture WR B1' destinée à la zone mémoire B est fournie à un instant t2' situé une période T après l'instant t2. On notera que l'écriture du mot A1 a lieu avant l'écriture du mot B1, c'est-à- dire en respectant l'ordre de priorité avec lequel les requêtes d'écriture ont été fournies aux ensembles de registres 14 et 16. Dans l'exemple représenté, la présente invention permet de fournir à la mémoire 4 deux requêtes d'écriture en huit périodes du signal d'horloge CK. Ce chiffre est à comparer aux quatorze périodes du signal d'horloge qui sont nécessaires selon l'art antérieur pour fournir les mêmes requêtes à la même mémoire. Ce gain de vitesse peut être généralisé aux autres requêtes d' écriture/ lecture, non représentées, qui peuvent être fournies à la mémoire. La présente invention permet d'obtenir un débit de données élevé sans utiliser un signal d'horloge plus rapide que selon l'art antérieur. Ainsi, il est possible avec un circuit de commande de mémoire selon la présente invention, d'avoir un débit de données plus élevé qu'avec un circuit de commande selon l'art antérieur, tout en utilisant un signal d'horloge de fréquence plus basse que selon l'art antérieur. En outre, un circuit de commande selon la présente invention permet- tant un débit de données élevé avec une mémoire fonctionnant à une fréquence peu élevée, la présente invention permet d'utiliser une mémoire peu coûteuse. La présente invention est également adaptée à des circuits de commande de mémoires effectuant des écritures et des lectures par paquets. Lorsqu'une mémoire effectue sur un premier cache une suite d'écritures ou de lectures par paquets, ledit cache ne peut recevoir une autre instruction et le bus de commande COM est libre pour fournir des instructions au deuxième cache. Cependant, le bus de données DAT est utilisé par les écritures ou les lectures. Le bloc 18 est ainsi prévu pour, lors d'une écriture/lecture par paquet dans un cache, ne fournir à l'autre cache que des instructions n'entraînant pas une utilisation du bus de données DAT (telles que les instructions de précharge et d'activation décrites précédemment). La figure 5 représente schématiquement l'ensemble de registres 14. L'ensemble de registres 16 a une structure iden- tique. L'ensemble de registres 14 comprend un registre de type (TYP), un registre d'ordre (ORD), un registre d'adresse (ADR) , un registre de commande (C3mm), un registre de taille (SIZ), un registre de validation d'octets (BE), un registre d'index d'écriture (WRI) et un registre d'index de lecture (RDI). Le registre d'index d'écriture contient une adresse mise à jour par le bloc 12. Le registre d'index de lecture contient une adresse mise à jour par le bloc 18. Les registres de type, d'ordre, d'adresse, de commande, de taille et de validation d'octets sont de type FIFO et ils contiennent chacun un nombre égal de données repérables chacune par une adresse. Les registres FIFO sont connectés de manière à être écrits par le bloc 12 à l'adresse contenue dans le registre d'index d'écriture et lus par le bloc 18 à l'adresse contenue dans le registre d'index de lecture. On notera qu'une comparaison des adresses comprises dans les registres d'index d'écriture et de lecture permet de connaître le taux de remplissage des registres FIFO. Si toutes les adresses des registres FIFO sont utilisées, il n'est plus possible de mémoriser les données concernant une requête dans cet ensemble de registres, et un message d'erreur est produit. Chaque requête reçue par le bloc 12 donne lieu à l'écriture de données dans les registres FIFO, et à une incré- mentation de l'adresse du registre de l'index d'écriture. Le registre de type reçoit une donnée indiquant si la requête est une requête de lecture ou d'écriture. Le registre d'ordre reçoit un temps absolu indiquant l'instant auquel la requête a été fournie au circuit de commande. Cette indication de temps permet au circuit 18 de sélectionner quelle instruction doit être envoyée en priorité. Le registre d'adresse reçoit les adresses de page et de mot, auxquelles la requête doit être exécutée. Le registre de commande contient les instructions nécessaires pour exécuter la requête. Par exemple, les instructions PRE, ACT, WR pour une requête d'écriture dans une nouvelle page, et les instructions WR pour une requête d'écriture dans une page déjà activée. Les instructions nécessaires pour exécuter la requête sont déterminées notamment en fonction de l'adresse de la page à laquelle la requête est destinée, qui est comparée à l'adresse de la page à laquelle la requête précédente est destinée. Pour cela, le bloc 12 peut lire le registre de commande, par une liaison non représentée. Le registre de taille reçoit le nombre de périodes nécessaires pour exécuter la requête. Le registre de validation d'octets reçoit le nombre d'octets de données concernés par chaque requête (par exemple lorsque tous les octets d'un mot ne doivent pas être écrits ou lus). Afin de garantir un fonctionnement global rapide du bloc 18, ce dernier est prévu pour, lorsque les données concernant une requête sont particulièrement simples et rapides à traiter, commencer à traiter la requête suivante. Le nombre de données mémorisables dans l'ensemble des registres FIFO détermine le nombre de requêtes que le bloc 18 peut analyser à l'avance. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme du métier à la lecture de la description précédente. En particulier, on a décrit un circuit de commande dans lequel une requête d'écriture est exécutée d'une manière particulière, mais l'homme du métier adaptera sans difficultés la présente invention à un circuit de commande dans lequel une même requête est exécutée autrement. Par exemple, une requête d'écriture peut correspondre à une instruction d'activation suivie d'une instruction d'écriture et d'une instruction de précharge. En outre, la présente invention a été décrite en relation avec une mémoire comportant deux zones mémoire, mais l'homme du métier adaptera sans difficultés la présente invention à une mémoire comportant un plus grand nombre de zones mémoire. Le circuit de commande selon la présente invention comportera alors autant d'ensembles de registres que la mémoire aura de zones mémoire. REVENDICATIONS 1. Circuit de commande d'une mémoire (4) comprenant au moins deux zones (A, B) auxquelles on ne peut pas accéder simul- tanément, caractérisé en ce que le circuit comprend des premiers moyens (14, 16) pour mémoriser des séries d'instructions de lecture et/ou d'écriture séparément pour cha- cune desdites zones, des deuxièmes moyens (18) pour détecter qu'une première instruction destinée à une première zone est une instruction prédéterminée qui doit être suivie d'une période pendant laquelle la première zone ne peut recevoir une autre instruction, et des troisièmes moyens (20) pour, pendant ladite période, fournir des instructions à une autre zone de la mémoire. 2. Circuit selon la revendication 1, de commande d'une mémoire dont chacune des zones est accessible par l'intermédiaire d'un cache particulier (BUFA, BUFB). 3. Circuit selon la revendication 1 ou 2, comprenant en outre des quatrièmes moyens (12) pour recevoir des requêtes de lecture et/ou d'écriture et pour les écrire chacune sous la forme d'une série d'instructions dans les premiers moyens, chaque série d'instructions comprenant un nombre prédéterminé de données. 4. Circuit selon la revendication 3, dans lequel ledit nombre prédéterminé de données d'une série d'instructions comprend notamment une indication (ORD) de l'ordre de priorité existant entre chaque série d'instructions mémorisée dans le premier moyen. 5. Circuit selon la revendication 3, dans lequel ledit nombre prédéterminé de données d'une série d'instructions comprend notamment une indication (TYP) de ce que la série d'instructions vise à une lecture ou à une écriture de la mémoire. 6. Circuit selon la revendication 3, dans lequel ledit nombre prédéterminé de données d'une série d'instructions comprend notamment les adresses (ADR) auxquelles ladite série d'instructions est destinée. 7. Circuit selon la revendication 3, dans lequel ledit nombre prédéterminé de données d'une série d'instructions comprend notamment les instructions (COM) formant ladite série d'instructions. 8. Circuit selon la revendication 3, dans lequel ledit nombre prédéterminé de données d'une série d'instructions comprend notamment la durée (SIZ) nécessaire pour exécuter ladite série d'ins- tructions. 9. Circuit selon l'une quelconque des revendications 4 à 8, dans lequel les premiers moyens comportent pour chaque zone de la mémoire un nombre prédéterminé de registres. 10. Circuit selon la revendication 9, dans lequel ledit nombre prédéterminé de registres comprend des registres d'index (WRI, RDI) pour gérer l'écriture et la lecture des autres registres dudit nombre prédéterminé de registres, respectivement par les quatrièmes et deuxièmes moyens.