Brevet FR2825167A1 — publié le 20021129

La présente invention concerne un procédé de gestion des accès à une mémoire comprenant plusieurs bancs, notamment de type SDRAM (pour l'anglais : Synchronous Dynamic Random Access Memory), un circuit d'interface mémoire, un programme d'ordinateur apte à être exécuté par un tel circuit d'interface, et un système de traitement de données. On connaît des systèmes de traitement de données comportant une mémoire comprenant plusieurs bancs, notamment de type SDRAM, à laquelle un circuit de traitement de données, tel qu'un processeur, accède par l'intermédiaire d'une interface appropriée en produisant des requêtes d'accès. On connaît aussi des systèmes de traitement de données comportant un ou plusieurs circuit de traitement de données spécifiques, par exemple de données vidéo, fonctionnant indépendamment ou en combinaison et faisant des accès dans une mémoire pour y lire ou y écrire des données spécifiques, et un ou plusieurs contrôleurs faisant des accès dans une autre mémoire pour y lire ou y écrire des codes d'instructions propres. Un contrôleur fait des accès à la mémoire pour lire ou écrire des codes d'instructions. Tant qu'il n'a pas effectué son accès, le contrôleur reste bloqué, ce qui ralentit l'exécution de tous les processus dont il a la charge. Cependant, lorsqu'il est muni d'une mémoire cache, un contrôleur a besoin d'accéder à la mémoire plus rarement qu'un circuit effectuant des fonctions faisant un usage intensif de données, comme un circuit de traitement de données vidéo par exemple. Le but de l'invention est de ne prévoir qu'une seule mémoire commune pour un ou plusieurs circuits de traitements de données spécifiques et un ou plusieurs contrôleurs, sans nuire à l'efficacité de chacun d'eux ni à l'efficacité du système de traitement de données dans son ensemble. Pour cela, l'invention propose un procédé de gestion d'accès d'une pluralité de circuits de traitement de données à une mémoire commune comprenant plusieurs bancs, un seul accès à la mémoire pouvant être réalisé simultanément, la mémoire étant reliée par l'intermédiaire d'une interface appropriée à au moins un circuit de traitement de données ordinaires et à un circuit de traitement de données prioritaires, procédé incluant des étapes consistant à : - produire au niveau de l'interface une demande d'accès du circuit de traitement de données ordinaires à un banc de la mémoire, - commencer la réalisation de l'accès demandé, - produire ensuite au niveau de l'interface une demande d'accès du circuit de traitement de données prioritaires à un autre banc de la mémoire, - effectuer, pendant la réalisation de l'accès demandé par le circuit de traitement de données ordinaires, une opération de préparation dudit autre banc de la mémoire, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser immédiatement l'accès du circuit de traitement de données prioritaires. Grâce à ce procédé, le circuit de traitement de données prioritaires, par exemple un contrôleur, peut faire un accès à la mémoire dans un délai minimal, en interrompant tout accès d'un circuit de traitement de données ordinaires, par exemple des données vidéo. Le déroulement de toutes les opérations qu'il contrôle est donc ralenti au minimum. De plus, l'accès en cours est interrompu le plus tard possible, lorsque l'accès du circuit de traitement de données prioritaires est prêt à être immédiatement réalisé. Par conséquent, la bande passante de la mémoire reste utilisée de manière optimale. Avantageusement, le procédé selon l'invention comporte aussi une étape consistant à reprendre l'accès suspendu dès l'achèvement de l'accès du circuit de traitement de données prioritaires. De préférence, le circuit de traitement de données prioritaires comporte un contrôleur, les données prioritaires comportant des instructions de commande. De préférence, la mémoire est de type SDRAM, l'opération de préparation comportant une étape d'activation d'une rangée dudit autre banc devant faire l'objet d'un accès. L'invention propose aussi un système de traitement de données comportant : - une mémoire comprenant plusieurs bancs, - un circuit d'interface relié à la mémoire, - au moins un circuit de traitement de données ordinaires et un circuit de traitement de données prioritaires reliés au circuit d'interface, chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, un seul accès à ladite mémoire pouvant être réalisé simultanément, système dans lequel le circuit d'interface comporte des moyens pour : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de la mémoire, effectuer une opération de préparation dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc. L'utilisation d'une mémoire commune aux différents circuits de traitement de données permet une réduction des coûts de réalisation du système dans son ensemble. Avantageusement, ledit circuit d'interface comporte aussi des moyens pour reprendre l'accès suspendu dès l'achèvement de l'accès du circuit de traitement de données prioritaires. De préférence, chaque circuit de traitement de données peut demander un accès à ladite mémoire en envoyant une requête d'accès au circuit d'interface, chaque requête d'accès définissant un type d'accès parmi les types lecture et écriture et désignant une ou plusieurs positions-mémoire devant faire l'objet d'un accès, les requêtes d'accès du circuit de traitement de données ordinaires désignant des positions-mémoire dans au moins un banc de ladite mémoire dédié aux données ordinaires, les requêtes d'accès du circuit de traitement de données prioritaires désignant des positions-mémoire dans au moins un banc de ladite mémoire dédié aux données prioritaires. L'invention propose aussi un circuit d'interface d'une mémoire comprenant plusieurs bancs et ne pouvant supporter simultanément qu'un seul accès, destiné à être relié à au moins un circuit de traitement de données ordinaires et à un circuit de traitement de données prioritaires, chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, et comporte des moyens pour : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de ladite mémoire, effectuer une opération de préparation dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc. L'invention propose également un programme d'ordinateur comprenant des codes d'instructions aptes à être lus ou stockés sur un support d'enregistrement, lesdits codes d'instructions étant aptes à être exécutés par un circuit d'interface programmable destiné à être relié, d'une part, à une mémoire comprenant plusieurs bancs et ne pouvant supporter simultanément qu'un seul accès et, d'autre part, à au moins un circuit de traitement de données ordinaires et à un circuit de traitement de données prioritaires, chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, programme selon lequel l'exécution desdits codes d'instructions est apte à faire effectuer au circuit d'interface les étapes consistant à : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de ladite mémoire, effectuer une opération de préparation dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc. L'invention concerne les accès à toute mémoire, de type SDRAM ou autre, comprenant plusieurs bancs et dans laquelle l'accès à un banc peut être préparé pendant qu'un accès à un autre banc est effectué. L'invention sera mieux comprise, et d'autres buts, détails, caractéristiques et avantages de celle-ci apparaîtront plus clairement au cours de la description suivante d'un mode de réalisation particulier de l'invention, donné uniquement à titre illustratif et non limitatif, en référence aux dessins annexés. Sur ces dessins : - la figure 1 est une représentation schématique d'un système de traitement de données selon l'invention ; - la figure 2 est une représentation schématique d'un circuit d'interface mémoire programmable selon l'invention ; - la figure 3 représente une séquence de bits codant une adresse- mémoire du système de la figure 1 ; - la figure 4 représente une cartographie par adresse de la mémoire du système de la figure 1 ; - les figures 5a à 5c illustrent trois étapes de prétraitement d'une requête d'accès par le circuit d'interface mémoire de la figure 2 ; - les figures 5d et 5e illustrent deux étapes de post-traitement d'une requête de lecture par le circuit d'interface mémoire de la figure 2 ; - la figure 6a représente le déroulement dans le temps de deux accès traités sans les étapes de prétraitement des figures 5a à 5c ; t' - la figure 6b représente le déroulement dans le temps de deux accès traités avec les étapes de prétraitement des figures 5a à 5c ; - la figure 7 représente le déroulement d'une précharge d'un banc désigné par une requête d'accès d'une unité centrale pendant la réalisation d'un accès d'un circuit de traitement de données au sein du système de la figure 1 ; - la figure 8 représente le déroulement d'un accès en écriture de l'unité centrale interrompant un accès en écriture d'un circuit de traitement de données ; - la figure 9 représente le déroulement d'un accès en lecture de l'unité centrale interrompant un accès en lecture d'un circuit de traitement de données ; - la figure 10 représente le déroulement d'un accès en écriture de l'unité centrale interrompant un accès en lecture d'un circuit de traitement de données ; - la figure 11 représente le déroulement d'un accès en lecture de l'unité centrale interrompant un accès en écriture d'un circuit de traitement de données. En référence à la figure 1, le système de traitement de données représenté comporte une mémoire 1 de type SDRAM comprenant quatre bancs A, B, C et D. La mémoire 1 est reliée à un circuit d'interface mémoire 2 comportant une mémoire tampon 3. Le circuit d'interface 2 est relié, d'une part, à une unité centrale 4 comportant une unité arithmétique et logique 5 et un contrôleur 6, et d'autre part, à un circuit de traitement de données 7. Par exemple, le circuit de traitement de données 7 est un processeur dédié au traitement de données audio, vidéo, et graphiques (AVG), telles que des données au format MPEG (pour l'anglais : Motion Picture Expert Group). L'unité centrale 4 est reliée au circuit d'interface 2 par des moyens de liaison 8 comprenant un bus de données, un bus d'adresses et des lignes de commande. Le circuit de traitement de données 7 est relié au circuit d'interface 2 par des moyens de liaison 9 comprenant aussi un bus de données 15, un bus d'adresses et des lignes de commande 16, visibles à la figure 2. Un module d'interfaçage de données 40 est relié au bus de données 15 et assure la réception et l'envoi de données AVG depuis le circuit d'interface 2. Le circuit d'interface 2 est relié à la mémoire 1 par des moyens de liaison 17 comprenant un bus de données 10, un bus d'adresses 11, deux lignes de . sélection de banc 12 et 13 et des lignes de commande 14. Une commande de masque DQM permet en outre de sélectionner une partie de chaque position-mémoire accédée lorsque les données à lire ou écrire sont plus courtes que le mot-mémoire. Un mot-mémoire fait par exemple 32 bits. La mémoire 1 est une mémoire collective dans laquelle l'unité centrale 4 effectue des accès pour lire et écrire des données et des codes d'instructions et dans laquelle le circuit de traitement de données 7 effectue des accès pour lire et écrire des données AVG. Par conception de la mémoire 1, un seul accès peut être effectué simultanément. L'unité centrale 4 et le circuit de traitement de données 7 accèdent à la mémoire 1, en écriture comme en lecture, par l'intermédiaire du circuit d'interface 2, en produisant une requête d'accès envoyée au circuit d'interface 2, c'est-à-dire une commande de transfert à exécuter par le circuit d'interface 2. Dans une variante de réalisation, plusieurs circuits de traitement de données analogues produisent chacun des requêtes d'accès à la mémoire 1. Dans ce cas, les différents circuits de traitement de données communiquent avec le circuit d'interface 2 par un central de données commun qui transmet, de manière connue par ailleurs, les requêtes d'accès et les données correspondantes entre le circuit de traitement de données émetteur de la requête et le circuit d'interface 2. Dans ce cas, on considérera que le bloc 7 de la figure 1 représente un ensemble de circuits de traitement de données et leur central de données commun. Par conception de la mémoire 1, un accès est réalisé en une ou plusieurs rafales de positions consécutives dans un ou plusieurs banc (s). Dans le mode de réalisation considéré ici, les requêtes du circuit de traitement de données 7 portent à chaque fois sur 16 mots-mémoire, représentant par exemple des valeurs de pixels d'une portion d'image. Les requêtes de l'unité centrale peuvent porter sur 1,4 ou 8 mots-mémoire. Une requête d'accès désigne un ensemble de positions-mémoire devant faire l'objet d'un accès et définit une série de données à transférer et un sens de transfert à effectuer. Par exemple, le sens de transfert est défini par le positionnement haut ou bas d'un ou plusieurs registre (s) d'entrée spécifique (s) du circuit d'interface 2. Une série de données à lire est désignée par une adresse dans la mémoire 1. Une série de données à écrire est désignée par un signal sur un bus de données en entrée du circuit d'interface 2. Les positions-mémoire devant faire l'objet d'un accès sont définies par les paramètres suivants : une adresse d'une première position d'un premier bloc à lire ou écrire dans la mémoire 1, un nombre de blocs à lire ou écrire, un nombre de positions à sauter entre chaque bloc et un nombre de positions-mémoire consécutives à lire ou écrire dans chaque bloc. Il peut bien sûr n'y avoir qu'un seul bloc de positions contiguës. Une adresse comporte un numéro de banc, un numéro de rangée et un numéro de colonne. Le circuit d'interface 2 traite chaque requête d'accès de manière à transférer la série de donnée définie depuis la source de la requête vers les positions de la mémoire ainsi définies, ou respectivement depuis les positions ainsi définies vers la source de la requête, selon qu'il s'agit d'une requête d'écriture ou de lecture. Le fonctionnement du circuit d'interface mémoire 2 va maintenant être décrit en référence à la figure 2. On décrit d'abord une phase de traitement spécifique aux requêtes d'accès envoyées par le circuit de traitement de données 7. Le circuit d'interface 2 comporte un module d'arbitrage 18 relié aux lignes de commande 16 et dédié à l'arbitrage des requêtes d'accès envoyées par le ou les circuit (s) de traitement 7. Le module d'arbitrage 18 applique un certain procédé d'arbitrage pour déterminer l'ordre dans lequel les requêtes d'accès en attente émanant du ou des circuit (s) de traitement 7 doivent être exécutées. A l'issue de ce procédé, une requête d'accès 42 est acceptée et transmise à un module de prétraitement 19 par un registre de commande, puis les requêtes restant en attente sont à nouveau arbitrées. Par exemple, la requête d'accès 42 acceptée est codée dans ce registre de commande de la manière suivante : les huit bits de poids le plus faible désignent un nombre de mots-mémoire à sauter entre chaque bloc de données à lire ou écrire, les quatre bits suivants désignent un nombre de mots-mémoire consécutifs par bloc, le bit suivant désigne le type d'accès parmi les types lecture et écriture, et les bits suivants désignent l'adresse d'un premier mot-mémoire d'un premier bloc à lire ou écrire dans la mémoire 1. Le module de prétraitement 19 applique un procédé en deux étapes à la requête d'accès 42 reçue du ou d'un des circuit (s) 7 : - dans une étape de regroupement, le nombre de bancs distincts concernés par la requête d'accès est calculé. Lorsque la requête d'accès concerne plusieurs bancs, celle-ci est divisée en autant de parties de requête d'accès. Chaque partie de requête désigne toutes les positions-mémoire désignées par la requête et appartenant à un banc distinct. - dans une étape d'ordonnancement, le module de prétraitement 19 ordonne les parties de requête produites à partir de la requête prétraitée afin d'empêcher que deux parties de requête exécutées successivement concernent un même banc. Pour cela, il détermine le banc concerné par la dernière partie de la requête précédant immédiatement la requête en cours de prétraitement et place une partie de requête désignant un banc différent en première position. Dès que la ou les partie (s) de requête 21 issue (s) de la requête d'accès sont disponibles, avec chacune un numéro de banc désigné, le numéro de la rangée désignée dans le banc, le nombre et la liste des colonnes désignées dans la rangée, et un indicateur de type d'accès, celles-ci sont transmises à un générateur de colonne 20 dans l'ordre déterminé ci-dessus. Le générateur de colonne 20 est dédié aux requêtes d'accès du circuit de traitement de données 7. Le module de prétraitement 19 envoie à un gestionnaire de collisions 22 un signal 23 indiquant la présence d'une partie de requête prête à être exécutée. On décrit maintenant une phase de traitement spécifique aux requêtes d'accès envoyées par l'unité centrale 4. Une requête d'accès de l'unité centrale 4 est reçue par un module d'interfaçage d'unité centrale 28 relié aux moyens de liaisons 8. Le module d'interfaçage 28 comporte une file d'attente ne pouvant contenir qu'une seule requête en attente de traitement. Le module d'interfaçage 28 attend que la requête en cours de traitement soit terminée avant d'accepter la requête suivante. Une requête d'accès à la mémoire 1 venant de l'unité centrale 4 concerne toujours une série d'adresses consécutives, c'est-à-dire qu'elle ne comporte pas de saut de position. Lorsqu'il accepte une requête, le module d'interfaçage 28 transmet un signal 29 au gestionnaire de collisions 22 indiquant la présence d'une requête d'unité centrale prête à être exécutée et il transmet la requête acceptée 33 à un générateur de colonne 30 dédié aux requêtes d'accès de l'unité centrale 4. Le gestionnaire de collisions 22 a pour fonction d'effectuer un arbitrage entre les parties de requête et les requêtes d'unité centrale prêtes à être exécutées. Le gestionnaire de collision 22 gère la réalisation des accès requis par l'unité centrale 4 et le ou les circuit (s) de traitement de données 7 de manière à traiter les premiers en priorité. En effet, les données AVG sont considérées comme des données ordinaires par opposition aux données et codes d'instructions de l'unité centrale 4 qui sont considérés comme des données prioritaires. Pour opérer, le gestionnaire de collision 22 génère des signaux d'activation 24 et 34 à destination respectivement des générateurs de colonne 20 et 30, selon une méthode prédéterminée. On décrit maintenant une phase de traitement commune à toutes les requêtes. Les générateurs de colonne 20 et 30 sont respectivement activés par la réception du signal d'activation 24 ou 34 du gestionnaire de collisions 22. A la réception du signal d'activation correspondant, le générateur de colonne 20 ou 30 traite la ou les partie (s) 21 de requête du circuit de traitement de donnée, respectivement la requête d'unité centrale 33, en la traduisant en une série de numéros de colonnes 31, respectivement en une série de numéros de colonnes 32, de manière à former des demandes d'accès à un niveau de détail approprié pour un générateur de commandes 25 (numéros de banc, de rangée, et de colonne de chaque position-mémoire concernée par la partie de requête, respectivement par la requête d'unité centrale). Le générateur de commandes 25 engendre ainsi, en coopération avec le générateur de colonne 20 ou 30 activé, une succession de commandes élémentaires d'accès, chaque commande élémentaire définissant un accès à une seule adresse. Le générateur de commandes 25 produit aussi des commandes nécessaires à la préparation des accès à effectuer, comme les commandes de précharge du banc concerné et d'activation de la rangée devant faire l'objet d'un accès. Le générateur de commande 25 assure également la production de commandes nécessaires au rafraîchissement régulier de la mémoire 1, par exemple à raison de 64 rafraîchissements par milliseconde. Un générateur de signaux 26 génère sur les lignes 14 des signaux de commande spécifiques à la mémoire 1, par exemple des signaux RAS, CAS et WE connus de l'homme du métier, en fonction des commandes 27 envoyées par le générateur de commandes 25. Chaque donnée de la série définie par la requête est transférée par le bus de données 10 entre une position-mémoire de la mémoire 1 et la mémoire tampon 3. Pour chaque donnée, le banc est sélectionné en positionnant les lignes de sélection de banc 12 et 13, le numéro de rangée et de colonne sont sélectionnés par le bus d'adresse 11. L'interface 2 comporte aussi un module de surveillance d'état des bancs 54 qui génère des signaux indiquant l'état de chaque banc et son activité. D'autres caractéristiques du système de traitement de données de la figure 1 vont maintenant être expliquées en référence aux figures 3 et 4. La figure 3 représente une séquence 35 de 24 bits de codage d'une adresse de la mémoire 1 telle qu'elle est désignée dans une requête d'accès reçue par le circuit d'interface 2. Chaque bit de codage est repéré individuellement par un poids respectif allant de 0 à 23. La figure 3 représente aussi l'interprétation de chaque bit de la séquence 35 par le circuit d'interface 2. Dans l'exemple représenté, on suppose que la mémoire 1 est une mémoire SDRAM d'une capacité totale de 64 Mo présentant quatre bancs de 256 colonnes par 2048 rangées chacun. Par conséquent, un numéro de colonne est codé sur 8 bits, un numéro de rangée sur 11 bits et un numéro de banc . sur 2 bits, une adresse complète étant codée sur 2+11+8=21 bits. On peut bien sûr utiliser des bancs présentant un nombre différent de rangées et/ou de colonnes en adaptant le nombre de bit utilisés pour codé le numéro correspondant. On peut également utiliser pour la mémoire 1 deux unités de mémoire SDRAM identiques ayant quatre bancs chacune et, de manière correspondante, allonger les adresses d'un bit de sélection d'unité de mémoire. En pratique, les adresse sont normalisées à 32 bits, les bits de poids fort excédentaires, désignés par la référence 36, n'étant pas utilisés. Comme visible à la figure 3, le circuit d'interface 2 convertit une adresse contenue dans une requête d'accès émanant du circuit de traitement 7 ou de l'unité centrale 4 par la méthode suivante : le banc est déterminé par un code binaire de deux bits formé, par ordre de poids décroissant, des bits de poids respectifs 20 et 3 de la séquence 35, désignés par BI et BO respectivement dans la suite. Le numéro de colonne est déterminé par un code binaire de huit bits formé, par ordre de poids décroissant, des bits de poids respectifs 8,7, 6,5, 4,2, 1 et 0 de la séquence 35. Le numéro de rangée est déterminé par un code binaire de onze bits formé, par ordre de poids décroissant, des bits de poids respectifs 19 à 9 de la séquence 35. Les bancs sont sélectionnés de la manière suivante : le bit de sélection de banc BI désigne soit le couple de bancs A-B (valeur basse), soit le couple de bancs C-D (valeur haute). Au sein des couples respectifs, le bit de sélection de banc BO désigne soit le banc A, respectivement C (valeur basse), soit le banc B, respectivement D (valeur haute). Dans le système de la figure 1, le circuit de traitement de données 7 et l'unité centrale 4 sont conçus de manière à lire ou écrire les données qui leur sont propres chacun dans un couple de banc A-B ou C-D distinct. Par exemple, les données AVG propres au circuit de traitement de données 7 sont écrites, lues et mémorisées dans le couple de bancs A-B, le bit BI étant toujours positionné à sa valeur basse dans les adresses désignées par les requêtes d'accès du circuit de traitement de données 7. Réciproquement, les données propres à l'unité centrale 4, par exemple des instructions de commande, sont écrites, lues et mémorisées dans le couple de bancs C-D, le bit BI étant toujours positionné à sa valeur haute dans les adresses désignées par les requêtes d'accès correspondantes de l'unité centrale 4. Par conséquent, en référence à la figure 4, la cartographie par adresse (pour l'anglais : mapping) de la mémoire 1 est la suivante. Par ordre croissant des adresses, représentées par l'axe 37, la mémoire 1 présente, d'une part, une première zone 38 dédiée aux données propres au circuit de traitement de données 7 et 1 constituée d'une alternance de blocs des bancs A et B, chaque bloc ayant une longueur L égale à 8 mots, et d'autre part, une seconde zone 39 dédiée aux données propres à l'unité centrale 4 et constituée d'une alternance de blocs des bancs C et D de même longueur L. Une requête du circuit de traitement de données 7 désigne une série ordonnée de seize adresses de la première zone 38 de mémoire, par exemple sous la forme d'un nombre de blocs, d'un nombre de mots par blocs et d'un nombre de positions à sauter entre chaque bloc. A cause de la cartographie de la mémoire 1, ces seize adresses peuvent être réparties de manière quelconque entre les bancs A et B. Dans le cas fréquent où une requête désigne seize adresses consécutives, celles-ci correspondent toujours à des positions réparties équitablement entre les bancs A et B. Cette particularité réduit la probabilité d'occurrence d'une séquence de deux requêtes ou de deux parties de requêtes consécutives désignant un même banc. La conversion des adresses en positions-mémoire étant effectuée par le circuit d'interface 2, le mode d'adressage utilisé par l'unité centrale 4 et le circuit de traitement 7 n'ont pas à être modifiés pour réaliser la cartographie de la mémoire 1. Ce mode d'adressage peut donc rester compatible avec d'autres composants avec lesquels l'unité centrale 4 et le circuit de traitement 7 doit communiquer. Le prétraitement de requêtes par le module de prétraitement 19 va maintenant être expliqué plus en détail en référence aux figures 5a à Sc. La figure Sa représente schématiquement la requête d'accès 42 reçue depuis le module d'arbitrage 18 par le module de prétraitement 19. La première ligne indique les numéros des colonnes devant faire l'objet d'un accès dans une certaine rangée spécifiée par la requête. La deuxième ligne indique le banc auquel appartient chaque colonne. On suppose que les colonnes désignées cl à c16 de la mémoire 1 contiennent des données dl à dl 6. En référence à la figure Sb, le module de prétraitement 19 lit les numéros des seize colonnes désignées par la requête 42 dans l'ordre dans lequel elles sont désignées et, pour chaque colonne, envoie au module d'interfaçage 40 par une file d'attente 41 un numéro codé sur un bit du banc dans lequel se trouve la colonne (par exemple 0 pour le banc A et 1 pour le banc B). Le module de prétraitement 19 détermine aussi le nombre de bancs différents désignés dans la requête. En référence à la figure 5c, le module de prétraitement 19 dispose d'un indicateur d'état 44 indiquant le numéro du banc dans lequel se trouve la dernière colonne désignée par la dernière requête ou partie de requête qu'il a prétraitée précédemment, laquelle se trouve maintenant en cours de traitement par le générateur de commande 25 ou en attente derrière une requête d'accès de l'unité centrale. L'indicateur d'état 44 indique le banc A à la figure 5c. Lorsque la requête 42 désigne plusieurs bancs, c'est-à-dire A et B dans l'exemple représenté, le module de prétraitement 19 réordonne les colonnes de la requête 42 en les regroupant par banc d'appartenance, en autant de séries de colonne. La série des colonnes appartenant à un banc différent de celui indiqué par l'indicateur d'état 44, c'est-à-dire appartenant au banc B dans l'exemple représenté, est placée en premier. La série des numéros de colonnes c2 et c4 à c16 désignés dans cet ordre dans la requête 42 et appartenant au banc B, est ainsi traitée comme une première partie de requête 21a. La série des numéros de colonnes cl et c3 désignés dans cet ordre dans la requête 42 et appartenant au banc A, est traitée comme une seconde partie de requête 21b. Les parties de requête 21a et 21b sont envoyées dans cet ordre au générateur de colonne 20, comme il a été expliqué. Une phase de post-traitement des requêtes de type lecture du circuit de traitement de données 7 par le module d'interfaçage 40 va maintenant être expliquée en référence aux figures 5d et 5e. On suppose que la requête 42 traitée est de type lecture. En référence à la figure 5d, le traitement de la première partie de requête par le générateur de commande 25 provoque la lecture des données dans l'ordre dans lequel les colonnes ont été désignée au générateur de colonne 20. Ainsi, la première donnée transférée vers le circuit d'interface 2 est d2, qui était mémorisée dans la colonne c2. Dès l'arrivée d'une donnée lue, le module d'interfaçage 40 lit une adresse disponible de la mémoire tampon 3 dans une file d'attente 43 contenant toutes les adresses disponibles et stocke temporairement la donnée reçue d2 à cette adresse @1. Le module d'interfaçage 40 dispose également de deux files d'attentes d'adresses 45a et 45b dédiées respectivement aux données en provenance des bancs A et B. L'indicateur d'état 44 indique maintenant le banc B, dans lequel les données sont en cours de lecture. Le module d'interfaçage 40 copie donc l'adresse de stockage @1 dans la file d'attente 45b dédiée aux données en provenance du banc B. Ce processus est répété pour toute la série des données dl à dl6 définie par la requête 42. En référence à la figure 5e, on suppose que toutes les données ont été transférées depuis la mémoire 1 dans la mémoire tampon 3 du circuit d'interface 2. Les files d'attente d'adresses 45a et 45b sont représentées à leur état final. Le module d'interfaçage 40 assure le réordonnancement des données reçues. Pour cela, la file d'attente 41 est lue. A chaque numéro de banc lu, le module d'interfaçage 40 lit la m première adresse de la file d'attente dédiée aux données en provenance du banc correspondant, c'est-à-dire d'abord l'adresse @15 dans la file 45a, puisque le premier numéro de banc lu est 0. Il lit la donnée stockée à l'adresse @15, qui est la donnée dl, et la transmet sur le bus de données 15 vers le circuit de traitement 7. L'adresse @ 15 est libérée et remise dans la file d'attente 43. Ce processus se répète pour tous les numéros de banc de la file 41 jusqu'à la lecture d'un signal indiquant que la dernière colonne de la requête a été atteinte. La requête est alors terminée. Les données sont ainsi transférées vers le circuit de traitement 7 selon l'ordre des positions-mémoire défini par la requête 42. Pour une requête d'écriture, le module d'interfaçage 40 effectue un avant-traitement symétrique du post-traitement décrit ci-dessus. Lors de l'exécution d'une partie de requête ou d'une requête d'unité centrale courante (accès courant), le générateur de commandes 25 examine les paramètres d'une partie de requête ou d'une requête d'unité centrale suivante en préparation (accès suivant). Lorsque l'accès suivant porte sur un banc distinct du banc concerné par l'accès courant, le générateur de commandes 25 génère les commandes de précharge et d'activation du banc concerné par l'accès suivant pendant l'exécution de l'accès courant, de manière qu'aucun cycle d'horloge n'est perdu pour préparer l'accès suivant. Pour cela, le générateur de commande 25 génère les commandes correspondant aux signaux qu'il reçoit simultanément des générateurs de colonne 20 et 30 et du gestionnaire de collision 22 selon l'ordre suivant de priorité décroissante : 1-précharge d'un banc désigné par une requête de l'unité centrale, 2-activation d'un banc désigné par une requête de l'unité centrale, 3-génération d'une commande élémentaire d'accès pour l'unité centrale, 4-génération d'une commande élémentaire d'accès pour le circuit de traitement 7, 5-activation d'un banc désigné par une requête du circuit de traitement 7, 6-précharge d'un banc quelconque, 7-commande neutre. Les figures 6a et 6b illustrent une réduction des temps d'accès obtenue grâce au prétraitement des requêtes par le circuit d'interface 2. On suppose que deux requêtes 46 et 47 du circuit de traitement 7 sont traitées consécutivement sans qu'il ne se présente de requête de l'unité centrale 4. La requête 46 désigne dans cet ordre un lot 46a de huit colonnes du banc A, un lot 46b de trois colonnes du banc B, un lot 46c de deux colonnes du banc A et un lot 46d de trois colonnes du banc B. La requête 47 désigne dans cet ordre un lot 47a de huit colonnes du banc B et un lot 47b de huit colonnes du banc A. La figure 6a illustre l'avancement dans le temps du traitement des requêtes 46 et 47 si les requêtes sont exécutées sans prétraitement. La réalisation d'un accès à un banc nécessite une opération de préparation de l'accès par une précharge du banc et une activation de la rangée devant faire l'objet d'un accès. Cette préparation demande un temps At, qui vaut par exemple 6 cycles d'horloge de la mémoire SDRAM. La préparation de l'accès suivant s'effectue dès le début transfert de données correspondant à l'accès courant. Cependant, les transferts correspondant aux lots de colonnes 46b et 46c sont plus court que le temps de préparation At, de sorte qu'un délai est perdu avant les transferts correspondant aux lots 46c et 46d. De plus, la requête 47 commence par un accès dans le banc B dans lequel se trouve la dernière colonne accédée au cours de l'accès 46. Un délai At est donc perdu pendant la préparation du banc B entre le traitement des deux requêtes. La figure 6b illustre l'avancement dans le temps du traitement des requêtes 46 et 47 avec le prétraitement par le module 19. Les commandes de transfert de données correspondants aux lots 46a et 46c de colonnes sont regroupées en une première partie de requête 48 et sont traitées consécutivement, de manière que le délai perdu avant le traitement du lot 46c est supprimé. Les commandes de transfert de données correspondants aux lots 46b et 46d de colonnes sont regroupées en une seconde partie de requête 49 et sont traitées consécutivement, de manière que le délai perdu avant le traitement du lot 46d est supprimé. La requête 47 est traitée en deux parties de requête 50 et 51 désignant respectivement le lot de colonne 47a et le lot de colonne 47b, en commençant par la partie 51 désignant le lot de colonne 47b, de sorte que la préparation du transfert de données correspondant entre le banc A et le circuit d'interface 2 est préparé pendant la réalisation du transfert correspondant à la partie de requête 49. Ainsi, le délai perdu entre le traitement des deux requêtes 46 et 47 est également supprimé. Ainsi, le temps nécessaire aux traitement des deux requêtes est substantiellement réduit, par exemple de l'ordre de 30% par rapport au cas où le prétraitement n'est pas réalisé. L'arbitrage des accès par le gestionnaire de collision 22 va maintenant être expliqué plus en détail en référence aux figures 7 à 11. Toutes ces figures représentent le déroulement en fonction du temps t d'un ou plusieurs accès de différents types. Chaque colonne des tableaux représentés correspond à un cycle d'horloge de la mémoire SDRAM, dont la durée est par exemple de 8 ns. La première ligne des tableaux représente l'émission de certaines commandes de préparation de la SDRAM sur les lignes de commandes 14. Une commande de précharge est symbolisée par PRE. Une commande d'activation est symbolisée par ACT. La deuxième ligne des tableaux représente l'émission de commandes élémentaires de lecture ou d'écriture sur les lignes de commandes 14. Une commande élémentaire de lecture, respectivement d'écriture, requise par le circuit de traitement de donnée est symbolisée par TR, respectivement TW. Une commande élémentaire de lecture, respectivement d'écriture, requise par l'unité centrale est symbolisée par CR, respectivement CW. Une requête d'accès désignant plusieurs positions-mémoire est traduite en plusieurs commande élémentaires successives numérotées à partir de 0. La troisième ligne des tableaux représente les données en cours de transfert sur le bus de données 10. Une donnée transférée en exécution d'une commande élémentaire de lecture ou d'écriture est symbolisée par la lettre D suivie du symbole de la commande élémentaire correspondante. En référence à la figure 7, lorsque le gestionnaire de collision 22 reçoit le signal 29 pendant la réalisation d'un accès du circuit de traitement de données 7 et que le banc désigné par la requête d'unité centrale 33 doit être préchargé, il commande au générateur de commande 25 d'insérer une commande de précharge entre deux commandes élémentaires de l'accès en cours, comme représenté par la flèche 59. Le gestionnaire de collision 22 suspend la génération des commandes élémentaires d'accès pour libérer les lignes de commande de la mémoire afin qu'une commande de précharge puisse être envoyée. Pour cela, le générateur de colonne 20 active un signal de mise en veille 52 pendant toute la durée sur laquelle la génération des commandes élémentaires doit être suspendue, c'est-à-dire par exemple un cycle d'horloge. Le gestionnaire de collision 22 commande la reprise de la génération des commandes élémentaires d'accès en envoyant au générateur de colonne 20 le signal d'activation 24 un cycle d'horloge avant ladite reprise, ce qui réinitialise le signal de mise en veille 52. En référence à la figure 8, on suppose qu'un accès en écriture du circuit de traitement de données 7 est activé par le signal d'activation 24 et est en cours de réalisation lorsque l'unité centrale 4 requiert un accès en écriture. Un commande d'activation du banc désigné par la requête de l'unité centrale est produite pendant la réalisation de l'accès en cours, c'est-à-dire pendant l'émission de la commande élémentaire TW3 dans l'exemple représenté. On rappelle qu'une commande d'activation produit la copie d'une rangée de la SDRAM dans un registre dans lequel les colonnes individuelles pourront ensuite être lues ou écrites et que son exécution prend plusieurs, par exemple deux, cycles d'horloge. Dès que l'activation est terminée, c'est-à-dire au troisième cycle d'horloge suivant la commande d'activation dans l'exemple représenté, l'accès en cours est suspendu par le signal de mise en veille 52. Dans l'exemple représenté, l'accès en cours est suspendu après l'émission de la commande élémentaire TW5. L'accès en écriture de l'unité centrale est lancé par le signal d'activation 34. Lors de la production de la dernière commande d'accès élémentaire de l'accès requis par l'unité centrale, c'est-à-dire de la commande élémentaire CW7, le générateur de colonnes 30 envoie un signal de fin d'accès 53 au gestionnaire 22, ce qui produit l'émission d'un signal d'activation 24 et la réinitialisation du signal de mise en veille 52. La génération des commandes d'accès élémentaires de l'accès suspendu reprend dès le cycle d'horloge suivant, avec la commande élémentaire suivante TW6. Par cette séquence de commandes élémentaires, un transfert de données a été effectué à chaque cycle d'horloge, sans aucune perte de bande passante. En référence à la figure 9, un accès en lecture du circuit de traitement de données 7 est lancé par l'émission du signal d'activation 24, puis le gestionnaire de collision reçoit le signal 29. Comme dans le cas précédent, une commande d'activation du banc désigné par la requête de l'unité centrale 4 est émise pendant la réalisation de l'accès du circuit 7, c'est-à-dire pendant l'émission de la commande élémentaire TR2. Puis les signaux 24,34 et 52 sont générés comme précédemment pour insérer l'accès de l'unité centrale en suspendant temporairement l'accès du circuit 7. Lors d'un accès en écriture, les données à écrire transitent sur le bus de données 10 au même cycle d'horloge que l'émission des commandes élémentaires correspondantes. En revanche, lors d'un accès en lecture, il y a un retard entre l'émission d'une commande élémentaire et le transfert de la donnée correspondante à cause d'un délai d'accès aux colonnes individuelles LC intrinsèque à la mémoire 1, appelé latence CAS. Ce délai est par exemple de 3 cycles d'horloge. Le module de surveillance d'état des bancs 54 comporte, pour chaque banc, un indicateur d'accès qui est activé au début de chaque accès dans ce banc et réinitialisé à la fin de l'accès. Dans l'exemple représenté, l'indicateur d'accès 55 est celui du banc, par exemple A, dans lequel les données sont lues par le circuit de traitement de données 7 et l'indicateur d'accès 56 est celui du banc, par exemple C, désigné par la requête de l'unité centrale 4. En référence à la figure 10, on a représenté une séquence de commande élémentaires produites dans le cas où une requête d'accès en écriture de l'unité centrale 4 est produite pendant un accès en lecture du circuit 7. Pour permettre la transition d'un accès en lecture à un accès en écriture, le bus de données 10 de la mémoire doit passer d'un état de sortie à un état d'entrée. Ce changement d'état est opéré par des transistors de conduite du bus 10 qui, pour éviter tout risque de court- circuit, passent par un état de forte impédance représenté par le symbole HIZ, dans lequel aucun transfert de données ne peut être effectué sur le bus 10. Cette transition demande un délai d'un cycle d'horloge. L'accès de l'unité centrale commence dès que l'activation est terminée, au troisième cycle d'horloge suivant la commande ACT, la transition par l'état HIZ est opérée juste avant, c'est-à-dire au deuxième cycle d'horloge suivant la commande ACT. Ainsi, la dernière donnée lue pouvant être transférée sur le bus 10 est celle qui est transférée au premier cycle d'horloge suivant la commande ACT. Comme la latence CAS est de trois cycles d'horloge, cette donnée correspond à la commande élémentaire émise au deuxième cycle d'horloge précédant la commande ACT, c'est-à-dire la commande TRO dans l'exemple représenté. Par conséquent, il est inutile de produire des commandes de lecture à partir du premier cycle précédant l'émission de la commande ACT. En fait, les commandes d'accès élémentaires de l'accès à suspendre sont remplacées par des commandes neutres NOP à partir de la commande ACT jusqu'au début de l'accès de l'unité centrale. Mais la commande d'accès élémentaire précédant immédiatement la commande ACT, c'est-à-dire TRI, est produite sans qu'elle ait le temps d'être exécutée avant la suspension de l'accès. Par conséquent, dans ce cas, l'accès suspendu est repris dès l'achèvement de l'accès de l'unité centrale par la ré-émission de la commande TRI n'ayant pas été exécutée. Pour cela, le gestionnaire de collisions 22 met à jour des compteurs du générateur de colonne 20 lors de sa réactivation. Le nombre de commandes élémentaires à ré-emmettre doit évidemment être adapté en fonction des caractéristiques de la mémoire utilisée dans chaque réalisation particulière. La figure 11 représente une séquence de commandes élémentaires produites lorsqu'un accès en lecture de l'unité centrale 4 suspend un accès en écriture du circuit 7. Dans ce cas, la transition par l'état HIZ doit être opérée à la fin de l'accès de l'unité centrale. Mais pour permettre le transfert de toutes les données lues par l'unité centrale, un délai égal à la latence CAS, c'est-à-dire trois cycles d'horloge dans l'exemple représenté, doit être laissé entre la production de la dernière commande de lecture CR7 et la transition par l'état HIZ. Pendant ce délai, le générateur de colonnes 20 est maintenu en veille. L'accès suspendu reprend immédiatement après la transition. Pour respecter ce délai, le module de surveillance d'état des bancs 54 est muni d'un compteur 58 dont la valeur à chaque cycle d'horloge est indiquée dans la troisième ligne du tableau de la figure 11. Le compteur 58 est positionné à une valeur égale à LC+ 1, c'est-à-dire à la valeur 4 dans l'exemple représenté, à chaque fois qu'une commande élémentaire de lecture est émise. Le compteur 58 est décrémenté d'une unité à chaque fois qu'il n'y a pas de commande élémentaire de lecture émise. Dès qu'il atteint la valeur nulle, un signal 57 est produit par le module 54, comme visible à la figure 2, pour indiquer au générateur de commande 25 que la transition par l'état HIZ peut être opérée, et celle-ci l'est immédiatement. Bien que l'invention ait été décrite en liaison avec un mode de réalisation particulier, il est bien évident qu'elle n'y est nullement limitée et qu'elle comprend tous les équivalents techniques des moyens décrits ainsi que leurs combinaisons si celles-ci entrent dans le cadre de l'invention. Il existe en effet de nombreuses manière de mettre en oeuvre des fonctions au moyen d'éléments matériels et/ou d'éléments de programme d'ordinateur. A cet égard, les figures sont très schématiques, chaque figure représentant un mode de réalisation seulement. Bien qu'une figure montre plusieurs fonctions sous forme de blocs séparés, ceci n'exclut pas qu'une fonction puisse être effectuée par plusieurs blocs séparés. REVENDICATIONS 1. Procédé de gestion d'accès d'une pluralité de circuits de traitement de données (4,7) à une mémoire commune (1) comprenant plusieurs bancs (A-D), un seul accès à la mémoire pouvant être réalisé simultanément, la mémoire étant reliée par l'intermédiaire d'une interface appropriée (2) à au moins un circuit de traitement de données ordinaires (7) et à un circuit de traitement de données prioritaires (4), procédé incluant des étapes consistant à : - produire au niveau de l'interface une demande d'accès (42) du circuit de traitement de données ordinaires à un banc de la mémoire, - commencer la réalisation de l'accès demandé, - produire ensuite au niveau de l'interface une demande d'accès (33) du circuit de traitement de données prioritaires à un autre banc de la mémoire, - effectuer, pendant la réalisation de l'accès demandé par le circuit de traitement de données ordinaires, une opération de préparation (PRE, ACT) dudit autre banc de la mémoire, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser immédiatement l'accès du circuit de traitement de données prioritaires. 2. Procédé selon la revendication 1, comportant aussi une étape consistant à reprendre l'accès suspendu dès l'achèvement de l'accès du circuit de traitement de données prioritaires. 3. Procédé selon la revendication 1, dans lequel le circuit de traitement de données prioritaires comporte un contrôleur (6), les données prioritaires comportant des instructions de commande. 4. Procédé selon la revendication 1, dans lequel la mémoire est de type SDRAM, l'opération de préparation comportant une étape d'activation (ACT) d'une rangée dudit autre banc devant faire l'objet d'un accès. 5. Système de traitement de données comportant : - une mémoire (1) comprenant plusieurs bancs (A-D), - un circuit d'interface (2) relié à la mémoire, - au moins un circuit de traitement de données ordinaires (7) et un circuit de traitement de données prioritaires (4) reliés au circuit d'interface, chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, un seul accès à ladite mémoire pouvant être réalisé simultanément, système dans lequel le circuit d'interface comporte des moyens (20,22, 25,30, 52) pour : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de la mémoire, effectuer une opération de préparation dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc. 6. Système selon la revendication 5, dans lequel le circuit d'interface comporte aussi des moyens (53,24) pour reprendre l'accès suspendu dès l'achèvement de l'accès du circuit de traitement de données prioritaires. 7. Système selon la revendication 5, dans lequel chaque circuit de traitement de données peut demander un accès à ladite mémoire en envoyant une requête d'accès au circuit d'interface, chaque requête d'accès définissant un type d'accès parmi les types lecture et écriture et désignant une ou plusieurs positionsmémoire devant faire l'objet d'un accès, les requêtes d'accès du circuit de traitement de données ordinaires désignant des positions-mémoire dans au moins un banc (A, B) de ladite mémoire dédié aux données ordinaires, les requêtes d'accès du circuit de traitement de données prioritaires désignant des positions-mémoire dans au moins un banc (C, D) de ladite mémoire dédié aux données prioritaires. 8. Circuit d'interface (2) d'une mémoire (1) comprenant plusieurs bancs (A-D) et ne pouvant supporter simultanément qu'un seul accès, destiné à être relié à au moins un circuit de traitement de données ordinaires (7) et à un circuit de traitement de données prioritaires (4), chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, et comporte des moyens (20,22, 25, 30, 52) pour : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de ladite mémoire, effectuer une opération de préparation (PRE, ACT) dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc. 9. Circuit d'interface selon la revendication 8, comportant aussi des moyens (53,24) pour reprendre l'accès suspendu dès l'achèvement de l'accès du circuit de traitement de données prioritaires. 10. Programme d'ordinateur comprenant des codes d'instructions aptes à être lus ou stockés sur un support d'enregistrement, lesdits codes d'instructions étant aptes à être exécutés par un circuit d'interface programmable (2) destiné à être relié, d'une part, à une mémoire (1) comprenant plusieurs bancs (A-D) et ne pouvant supporter simultanément qu'un seul accès et, d'autre part, à au moins un circuit de traitement de données ordinaires (7) et à un circuit de traitement de données prioritaires (4), chaque circuit de traitement de données étant apte à demander des accès à la mémoire par l'intermédiaire du circuit d'interface, lequel est apte à commander la réalisation des accès demandés, programme selon lequel l'exécution desdits codes d'instructions est apte à faire effectuer au circuit d'interface les étapes consistant à : - lorsque le circuit de traitement de données prioritaires demande un accès à un certain banc de la mémoire pendant la réalisation d'un accès du circuit de traitement de données ordinaires à un autre banc de ladite mémoire, effectuer une opération de préparation (PRE, ACT) dudit certain banc, - suspendre l'accès en cours de réalisation dès l'achèvement de ladite opération de préparation pour réaliser l'accès du circuit de traitement de données prioritaires audit certain banc.