FR 2717921 A1 19950929 FR 9403925 A 19940324 i La présente invention concerne un dispositif de gestion de priorité d'écriture et/ou de lecture entre une unité centrale de traitement (CPU) et au moins une mémoire connectée à ladite unité centrale. En fonction de la vitesse d'exécution du proces- seur de l'unité centrale de traitement (CPU) et des perfor- mances d'accès en écriture ou en lecture à la mémoire, des problèmes d'accès à la mémoire par le processeur pour réaliser une opération d'écriture ou de lecture particu- lière peuvent apparaître dans certains systèmes de traite- ment de données selon l'état actuel de la technique. Ceci est particulièrement vrai dans des structu- res dites pipeline ou à architecture parallèle, dans lesquelles le microprocesseur du CPU émet à destination d'une ou de plusieurs mémoires, des ordres d'écriture et/ou de lecture multiples à chaque coup d'horloge. Dans ces conditions, il existe un risque de conflit d'accès ou d'accès invalide à une cellule mémoire donnée, lorsque le CPU émet simultanément une commande d'écriture et une commande de lecture, à destination de la même cellule de mémoire, ou plus généralement lorsque la bande passante du CPU est supérieure à celle de la mémoire. Ceci a pour effet de dégrader les performances des échanges d'informations entre le CPU et la mémoire, voire de faire perdre des informations. La présente invention a pour but de remédier à ces inconvénients, et de proposer un dispositif de gestion des accès mémoire permettant d'éviter les conflits d'accès ou les accès invalides à une mémoire donnée, tout en optimisant la performance globale du système CPU et des mémoires associées. A cet effet, l'invention concerne un dispositif de gestion des priorités d'accès en écriture et/ou en lecture entre une unité centrale de traitement (CPU) et au moins une mémoire connectée à ladite unité centrale de traitement par au moins un bus d'adresses d'écriture et d'adresses de lecture et au moins un bus de données d'écriture et de données de lecture, ladite unité centrale de traitement étant conçue pour accéder à ladite mémoire simultanément par l'intermédiaire de plusieurs bus, caractérisé en ce qu'il comporte des moyens pour gérer des accès invalides à la mémoire, comprenant au moins: - un comparateur d'adresses, apte à tester à chaque instant l'égalité des adresses d'écriture et de lecture en mémoire, et en cas d'égalité desdites adresses, à générer un signal, représentatif d'une condition d'accès invalide à la mémoire; - un circuit multiplexeur de dérivation commandé par ledit signal d'accès invalide, de façon à connecter ledit bus de lecture vers le CPU, soit au bus de lecture de données en mémoire en cas d'absence d'accès invalide, soit au bus d'écriture de données du CPU vers la mémoire en cas d'accès invalide, de sorte que ledit bus d'écriture de données en mémoire est dérivé vers ledit bus de lecture par le CPU en cas d'accès invalide par le CPU. Suivant d'autres caractéristiques du disposi- tif: - ledit comparateur d'adresses est connecté entre un bus d'adresses de lecture en mémoire et un bus (23;23') d'adresses d'écriture en mémoire. - Ledit circuit multiplexeur de dérivation est - connecté en entrée à un bus d'écriture de données en mémoire d'une part, et à un bus de lecture de données en mémoire d'autre part, et connecté en sortie à un bus de lecture à destination dudit CPU. - Le dispositif comporte en outre des moyens de mise en attente d'une ou plusieurs opérations d'écriture en mémoire pendant un ou plusieurs cycles d'horloge. - Lesdits moyens de mise en attente comportent un tampon d'adresses d'écriture et un multiplexeur d'adresses d'écriture intercalés sur le bus d'adresses d'écriture en mémoire, ledit multiplexeur d'adresses ayant une entrée - connectée à la sortie dudit tampon d'adresses d'écriture, et une entrée connectée sur ledit bus d'adresses d'écritu- re. - Lesdits moyens de mise en attente comportent un tampon de données d'écriture et un multiplexeur de données d'écriture intercalés sur le bus de données d'écriture, ledit multiplexeur de données ayant une entrée connectée à la sortie dudit tampon de données d'écriture, et l'autre entrée connectée. - Le dispositif comporte autant de comparateurs d'adresses qu'il y a d'écritures en attente à gérer simultanément. L'invention sera mieux comprise en se référant à la description suivante faite à titre d'exemple non limitatif et aux dessins ci-annexés dans lesquels: - la figure 1 représente un schéma synoptique d'un exemple de système de traitement de données dans lequel l'invention peut être utilisée; - la figure 2 représente schématiquement une mémoire avec ses bus de données, d'adresse et de commande; - la figure 3 représente un chronogramme clas- sique des signaux utilisés en lecture de la mémoire; - la figure 4 représente une configuration des signaux de lecture/écriture correspondant à un accès invalide à une mémoire ne permettant qu'un accès par cycle d'horloge; - la figure 5 représente un schéma synoptique d'un premier mode de réalisation du dispositif de gestion d'accès selon l'invention; - la figure 6 représente le principe de la solution d'un conflit d'accès généré par un trop grand nombre d'accès simultanés en mémoire; - la figure 7 représente un diagramme synoptique d'un autre mode de réalisation du dispositif de gestion d'accès mémoire, mettant en oeuvre le principe selon la figure 6. On se réfère à la figure 1. On a représenté dans cette figure, uniquement à titre d'exemple, un système 1 dans lequel l'invention peut être utilisée. Il s'agit typiquement d'un système comprenant au moins une unité centrale de traitement numérique 3 à microprocesseur (CPU), reliée par un ensemble de bus de données 5, de commandes 7 et d'adresses 9, à une ou plusieurs mémoires lla à 11n. Au cas o le nombre de bus ou le nombre des accès à une mémoire lli donnée est supérieur à ce que cette mémoire peut accepter à chaque temps d'horloge, il existe une possibilité de conflit d'accès ou d'accès invalide à cette mémoire. Dans l'exemple représenté, on suppose que la mémoire lla peut reconnaître deux demandes d'accès par cycle d'horloge. Mais si l'architecture du CPU permet de générer trois demandes d'accès par cycle d'horloge, il existe un conflit d'accès à la mémoire dès lors que trois accès en mémoire sont demandés par le CPU pendant un même cycle. Il est à noter que le problème que l'invention se destine à résoudre, de même que la solution, sont totale- ment indépendants de la largeur des bus (nombre de bits), du sens de ceux-ci (écriture, lecture ou bus bi-direction- nel), ou de l'organisation des données sur ces bus (par exemple des bus multiplexés dans le temps). Dans la figure 2, on a représenté une mémoire 11 particulière du système représenté à la figure 1. Dans cet exemple, la mémoire 11 possède trois bus d'adresse 13a, 13b, 13c, trois bus de données 15a, 15b, 15c dont deux bus (15a,15b) en lecture et un bus (15c) en écriture, ainsi qu'un ensemble de signaux de commande 17 permettant de gérer les accès à la mémoire. Le chronogramme des signaux d'accès à la mémoire de la figure 2 est représenté en figure 3, pour une opération conventionnelle de lecture en mémoire. Les signaux représentés sont ceux transmis entre le CPU 3, situé à gauche des signaux, et la mémoire 11 selon la figure 2, située à droite des signaux. Les deux premiers signaux représentés 3a,3b sont les deux phases d'une horloge à deux phases, décalées dans le temps d'une demipériode l'une par rapport à l'autre. Pendant la première période d'horloge T1, le CPU émet un signal de requête de lecture 3c et un signal d'adresse de lecture 3d en mémoire. Pendant la seconde période d'horloge T2, des données lues en mémoire (3e) sont attendues par le CPU. L'opération d'écriture du CPU en mémoire (non représentée) consisterait, de façon similaire, à émettre à partir du CPU une requête d'écriture et une adresse d'écriture pendant la première période d'horloge, puis à écrire les données en mémoire pendant la seconde période d'horloge. On se réfère à la figure 4. Des instructions d'écriture ou de lecture qui sont émises de façon séquen- tielle par le CPU, se retrouvent du fait d'une architecture de type pipeline ou parallèle, en situation de demande d'accès simultané à la mémoire. Ainsi, une instruction de demande d'accès mémoire en écriture 4d peut apparaître au même moment (T1) que la demande d'accès en lecture 4c de l'instruction suivante. Pour gérer ce problème d'accès simultané, on est obligé d'effectuer la lecture d'ordre N+1 avant l'écriture d'ordre N, ce qui correspond à un accès invalide si l'écriture et la lecture concernent la même adresse, et représente une inversion de l'ordre normal d'accès à une mémoire. En effet, les requêtes d'écriture d'ordre N et de lecture d'ordre N+l peuvent concerner la même adresse en mémoire. Comme les données à cette adresse mémoire n'ont pas encore été mises à jour par une écriture d'ordre N, la requête de lecture d'ordre N+1 aurait pour effet de lire de façon erronée l'information en mémoire, puisque cette dernière n'a pas encore été mise à jour par la requête d'écriture d'ordre N. On voit que dans un tel cas de conflit d'accès en mémoire, il est possible d'obtenir des informations fausses ou anciennes de la part de la mémoire. Afin de résoudre ce problème, l'invention propose un dispositif 1 de gestion d'accès en mémoire, tel que représenté de façon schématique en figure 5. Le dispositif de gestion d'accès 1 selon l'invention est implémenté dans le CPU, dans la mémoire ou dans un bloc intermédiaire, et comporte un comparateur d'adresses 19 disposé entre le bus d'adresse de lecture 21 et le bus d'adresse d'écriture 23 connectés à la mémoire, afin de comparer deux à deux les adresses d'écriture et de lecture à chaque cycle d'horloge. La sortie 24 du comparateur 19 est connectée, éventuelle- ment à travers un registre 25 à un bit, à l'entrée de commande d'un multiplexeur de dérivation 27. Ce dernier reçoit en entrée, d'une part le bus d'écriture de données 29 allant de la sortie de données du CPU vers l'entrée de données de la mémoire, et d'autre part le bus 31 de lecture de données provenant de la mémoire. La sortie 33 du multiplexeur de dérivation 27 est connectée à l'entrée de données du CPU. Le fonctionnement du dispositif 1 de gestion d'accès selon la figure 5 est alors le suivant: dès lors que le comparateur d'adresses 19 détecte l'égalité, pendant une période donnée, de l'adresse de lecture en mémoire (bus 21) et de l'adresse d'écriture en mémoire (bus 23), ce qui correspond à un cas de conflit d'accès ou d'accès invalide, il génère sur sa sortie 24 une information d'égalité, qui constitue un signal représentatif d'une condition d'accès invalide. Ce signal est constitué par exemple par le passage d'un bit à un, et est transmis par l'intermédiaire du registre à un bit 25 à l'entrée de commande 35 du multi- plexeur de dérivation 27. Alors qu'en régime normal de fonctionnement la sortie 33 du multiplexeur de dérivation 27 est connectée au bus 31 de lecture des données provenant de la mémoire, le bit de commande 35 provenant du registre de commande 25 fait basculer le multiplexeur de dérivation 27, de sorte que les données transmises à sa sortie 33 correspondent aux données qui sont dérivées et prélevées directement sur le bus 29 d'écriture en mémoire, avant l'écriture en mémoire proprement dite. Ainsi, les données fausses (anciennes) provenant de la mémoire sur le bus 31 de lecture en mémoire sont momentanément remplacées par les données transmises par le CPU à la mémoire sur le bus 29 d'écriture de données. De cette façon, la donnée de lecture d'ordre N+l que le CPU a demandée est prélevée directement sur le bus d'écriture 29 en shuntant la mémoire et le bus 31 de lecture en mémoire, ce qui permet au CPU de recevoir sur son bus 33 de lecture en mémoire, les données valides actualisées, et non pas des données anciennes, et ceci même en cas d'accès simultané en écriture et en lecture, du CPU vers la mémoire. Cependant, la solution selon la figure 5 ne permet pas de résoudre à elle seule, le problème posé par un trop grand nombre de demandes d'accès simultanées de la part du CPU, à la même cellule mémoire. Une telle situation peut néanmoins apparaître lorsque le CPU possède une bande passante supérieure à celle de la mémoire, de sorte qu'il génère plus de demandes d'accès par cycle d'horloge que ce que la mémoire peut normalement traiter. Un tel cas est représenté dans la figure 6, o on suppose que la mémoire peut traiter deux requêtes d'accès par période d'horloge. Le CPU présente simultanément (temps T1) à la mémoire deux requêtes de lecture Al,Al et une requête d'écriture C1, puis deux requêtes de lecture A2, B2 simultanées au temps T2. Pendant T2, il y a donc un conflit d'accès à la mémoire, puisque comme représenté sur la ligne 6f, la lecture en mémoire A2 coïnciderait avec l'écriture C1, et ce double accès pendant la même période est invali- de. Il est à noter que ce problème ne se poserait pas dans un système 1 identique à celui représenté en figure 1, dans lequel chaque mémoire possède justement un bus d'écriture et deux bus de lecture, de sorte qu'il n'y aurait pas de conflit d'accès à une mémoire. Pour résoudre le problème de conflit d'accès tel qu'illustré dans la figure 6, l'invention propose de traiter d'abord en série les accès en lecture à la mémoire, à savoir A1 et B1 en période T1, puis A2 et B2 en période T2, et de ne traiter la requête d'écriture C1 qu'à la première occasion possible, c'est-à-dire en T3 en l'espèce, comme représenté par la flèche déplaçant l'écriture Cl vers le cycle T3. L'accès C1 a donc été mis en attente pour traiter en priorité les accès Al,B1,A2,B2. Afin de déterminer la période pendant laquelle l'écriture correspondant à la requête d'écriture en attente Cl devient possible, on utilise un signal 6g d'"écriture pendante" qui passe à l'état haut lorsque le conflit d'accès apparait. L'apparition de ce signal est utilisée pour stocker l'adresse et la donnée d'écriture en mémoire (tel que décrit plus loin) jusqu'à ce qu'elles puissent être utilisées. Lorsque le conflit d'accès disparaît (période T3), le signal d'écriture pendante redevient inactif, et l'écriture en attente est effectuée en mémoire. Un exemple de mise en oeuvre de la solution consistant à repousser l'opération d'écriture dans le temps est décrit en relation à la figure 7. Dans cette figure, les mêmes notations que dans la figure 5 ont été reprises pour les mêmes éléments, hormis l'adjonction d'un accent "'" pour signaler des éléments équivalents mais non identiques. Ainsi, au bus d'adresses d'écriture 23 de la figure 5 correspondent les bus 23, 23' de la figure 7. Afin de mettre en oeuvre le maintien et le déca- lage dans le temps d'une commande d'écriture en cas de conflit d'accès à la mémoire, l'invention prévoit d'inter- caler sur le bus des adresses d'écriture 23, en amont du comparateur 19 des adresses de lecture et d'écriture, un circuit multiplexeur supplémentaire, le multiplexeur d'adresses 37. Dans cette réalisation, le bus 23 d'écriture d'adresses en sortie du CPU est connecté en entrée du multiplexeur d'adresses 37, dont la sortie est connectée au bus d'adresses d'écriture 23' allant à la mémoire. L'autre entrée du multiplexeur d'adresses 37 est reliée à la sortie d'un registre tampon d'adresses 39, dont l'entrée est connectée en parallèle au bus d'écriture d'adresses 23 émis par le CPU. De façon similaire, le bus 29 de données d'écri- ture émis par le CPU est connecté à l'entrée d'un multi- plexeur de données 41, dont la sortie est connectée d'une part au bus 29' d'écriture de données dans la mémoire, et d'autre part à une entrée du multiplexeur de dérivation 27 décrit précédemment. Par ailleurs, l'autre entrée du multiplexeur de données 41 est connectée à la sortie d'un registre tampon de données 43, dont l'entrée est connectée en parallèle au bus 29 de données d'écriture émis par le CPU. Les multiplexeurs d'adresses 37 et de données 41 sont commandés sur la ligne 48, éventuellement à travers une bascule de synchronisation 47, par un signal de détec- tion d'"écriture pendante" 45 provenant de la mémoire. La sortie de cette bascule 47 est reliée d'une part à la ligne de commande 48 des multiplexeurs 37,41, et d'autre part, a- près inversion par un inverseur 49, à l'entrée de charge- ment "load" des registres tampon d'adresses 39 et de données 43. A noter que le signal d'"écriture pendante" est élaboré de façon connue par la logique d'interface de la mémoire, à partir des signaux de commande détaillés en figure 6, et transmis directement du CPU à la mémoire. Le dispositif de gestion d'accès tel que repré- senté à la figure 7 fonctionne alors de la manière suivan- te: dès lors que le signal "d'écriture pendante" est actif, la donnée d'écriture provenant du CPU sur le bus d'écriture de données 29 est maintenue dans le registre tampon de données 43, et de même les adresses présentes sur le bus 23 des adresses d'écriture émises par le CPU sont maintenues dans le registre tampon d'adresses 39. On contrôle par la commande 48 le multiplexeur d'adresses 37, de manière à transférer vers le bus 23' l'adresse en attente dans le tampon 39. De même, on contrôle par la commande 48 le multiplexeur de données 41, de manière à transférer vers le bus 29' la donnée en attente dans le tampon 43. Pendant que le signal d'"écriture pendante" est actif, le comparateur d'adresses 19 est alimenté avec l'adresse de l'écriture en attente, présente sur le bus d'adresse d'écriture 23'. Dès que le comparateur d'adresses 19 détecte une égalité entre l'adresse de lecture courante sur le bus 21' et l'adresse de l'écriture en attente sur le bus 23', le signal d'égalité 35 est actif, ce qui permet de commander le multiplexeur de dérivation 27. Celui-ci étant alimenté par la donnée d'écriture en attente sur le bus 29', il envoie sur le bus 33 la donnée d'écriture en attente, la substituant à la donnée de lecture erronée (ancienne) présente sur le bus 31'. Dès que l'écriture en attente a été traitée au niveau de la mémoire, le signal d'écriture pendante 45 devient inactif, et de ce fait les multiplexeurs 37,41 sont remis dans leur état initial par la commande 48. De ce fait, le bus 23 est reconnecté sur le bus 23', le bus 29 est reconnecté sur le bus 29', ce qui nous ramène à une configuration similaire à celle de la figure 5. Il est à noter que la figure 7 ne décrit le report d'une opération d'écriture en cas de conflit d'accès, que pour un seul bus de lecture en mémoire 31'. Si le système comporte plusieurs bus de lecture (cf figure 1), les bus d'écriture (23',29') pourraient être en conflit avec plusieurs bus de lecture, et par conséquent, il y aurait lieu de prévoir autant de comparateurs d'adresses 19 et de multiplexeurs de dérivation 27, qu'il y a de bus de lecture en mémoire. Enfin, il pourrait arriver que le CPU veuille faire une opération d'écriture en mémoire, alors qu'il y a déjà une opération d'écriture antérieure pendante. Dans ce cas, il sera nécessaire de détecter cet événement au moyen d'une logique combinatoire à la portée de l'homme du métier, puis d'arrêter l'écriture à partir du CPU pendant un nombre de cycles d'horloge suffisant pour terminer l'écriture en mémoire pendante. En variante, si l'arrêt du CPU ne peut être tolérée, il sera nécessaire d'augmenter la capacité ou le nombre des registres tampons d'adresses 39 et de données 43, afin de mémoriser les adresses et données de plusieurs opérations d'écriture pendantes successives. Bien que l'invention ait été décrite dans le cadre d'un système privilégiant les accès de mémoire en lecture par rapport aux accès en écriture, l'homme du métier pourra aisément l'adapter à un système privilégiant les accès en écriture et reportant à plus tard les accès pendants en lecture. De ce qui précède, il ressort que le dispositif de gestion des accès à une mémoire selon la présente invention résout les inconvénients de l'état de la techni- que, et en particulier permet de résoudre les conflits d'accès par un CPU de forte bande passante, à une mémoire de bande passante inférieure. REVENDICATIONS 1. Dispositif de gestion des priorités d'accès en écriture et/ou en lecture entre une unité centrale de traitement (CPU) et au moins une mémoire (11) connectée à ladite unité centrale de traitement par au moins un bus d'adresses d'écriture (23;23') et d'adresses de lecture (21; 21) et au moins un bus de données d'écriture (29;29') et de données de lecture (31;31'), ladite unité centrale de traitement étant conçue pour accéder à ladite mémoire simultanément par l'intermédiaire de plusieurs bus, caractérisé en ce qu'il comporte des moyens pour gérer des accès invalides à la mémoire, comprenant au moins: - un comparateur d'adresses (19), apte à tester à chaque instant l'égalité des adresses d'écriture et de lecture en mémoire, et en cas d'égalité desdites adresses, à générer un signal (35) représentatif d'une condition d'accès invalide à la mémoire; - un circuit multiplexeur de dérivation (27) commandé par ledit signal (35) d'accès invalide, de façon à connecter ledit bus (33) de lecture vers le CPU, soit au bus (31;31') de lecture de données en mémoire en cas d'absence d'accès invalide, soit au bus (29;29') d'écriture de données du CPU vers la mémoire en cas d'accès invalide, de sorte que ledit bus d'écriture de données en mémoire est dérivé vers ledit bus de lecture par le CPU en cas d'accès invalide par le CPU. 2. Dispositif selon la revendication 1, caracté- risé en ce que ledit comparateur d'adresses (19) est connecté entre un bus (21;21') d'adresses de lecture en mémoire et un bus (23; 23') d'adresses d'écriture en mémoire. 3. Dispositif selon la revendication 1, caracté- risé en ce que ledit circuit multiplexeur de dérivation (27) est connecté en entrée à un bus (29;29') d'écriture de données en mémoire d'une part, et à un bus (31;31') de lecture de données en mémoire d'autre part, et connecté en sortie à un bus de lecture (33) à destination dudit CPU. 4. Dispositif selon l'une quelconque des revendi- cations précédentes, caractérisé en ce qu'il comporte en outre des moyens (47,37,39,43,41) de mise en attente d'une ou plusieurs opérations d'écriture en mémoire pendant un ou plusieurs cycles d'horloge. 5. Dispositif selon la revendication 4, caracté- risé en ce que lesdits moyens de mise en attente comportent un tampon d'adresses d'écriture (39) et un multiplexeur (37) d'adresses d'écriture intercalés sur le bus (23;23') d'adresses d'écriture en mémoire, ledit multiplexeur (37) d'adresses ayant une entrée connectée à la sortie dudit tampon d'adresses d'écriture (39), et une entrée connectée sur ledit bus (23) d'adresses d'écriture. 6. Dispositif selon la revendication 4, caracté- risé en ce que lesdits moyens de mise en attente comportent un tampon de données d'écriture (43) et un multiplexeur (41) de données d'écriture intercalés sur le bus (29;29') de données d'écriture, ledit multiplexeur de données (41) ayant une entrée connectée à la sortie dudit tampon de données d'écriture, et l'autre entrée connectée. 7. Dispositif selon l'une quelconque des caracté- ristiques précédentes, caractérisé en ce qu'il comporte autant de comparateurs d'adresses (19) qu'il y a d'écritu- res en attente à gérer simultanément.