FR 2814555 A1 20020329 FR 0012152 A 20000925 jg 2814555 La présente invention se rapporte à un système et un procédé de gestion mémoire de cohérence de données, ainsi qu'à un réseau multiprocesseur correspondant. Des processeurs rapides cadencés à des vitesses de plus de 100 MHz utilisent généralement des mémoires cache, aussi appelées antémémoires, pour pouvoir fonctionner de manière efficace. Une telle antémémoire duplique une partie des données présentes en mémoire principale (telle qu'une mémoire à accès synchrone ou SDRAM), dans une mémoire offrant un temps d'accès beaucoup plus rapide que cette dernière. Dans un système conventionnel, I'antémémoire est limitée en taille pour des raisons de coûts et d'encombrement, et seule une partie réduite de la mémoire principale se retrouve dans l'antémémoire à un moment donné. Dans des systèmes améliorés, plusieurs niveaux d'antémémoires se cascadent, chaque niveau étant spécifié par le temps d'accès à une donnée et par sa capacité de stockage. Habituellement, le premier niveau d'antémémoire permet des accès à des données à la vitesse du processeur. Une difficulté apparaît dans un environnement dit multi-maîtres, o plusieurs processeurs utilisent une même mémoire principale. En effet, la cohérence de données doit alors être assurée entre la mémoire principale et l'antémémoire ou les antémémoires, à la fois en lecture et en écriture, sans risque d'écrasement d'informations. Ceci est particulièrement sensible dans un mode d'antémémoire à écriture différée, dit " write-back ". Dans un tel mode, les écritures sont réalisées par le processeur associé directement dans l'antémémoire et ne sont reportées en mémoire principale que lors d'opérations de mise à jour de données de l'antémémoire (vidange ou flush), alors que dans un mode d'antémémoire à écriture directe, dit " write-through ", les écritures sont au contraire reportées en temps réel de l'antémémoire vers la mémoire -2- principale. Le mode write-back se distingue par son efficacité, car il requiert une fréquence réduite de transferts entre l'antémémoire et la mémoire principale. Cependant, la cohérence des données entre l'antémémoire et la mémoire principale n'est pas assurée à tout moment. La lecture de données dans la mémoire principale par un autre processeur que celui associé à l'antémémoire en cours d'utilisation pose donc problème. Un autre problème, existant en write-back comme en write- through, concerne l'écriture de données en mémoire principale par un processeur, lorsqu'une antémémoire est en cours d'utilisation par un autre processeur. Lors du transfert d'informations de lantémémoire vers la mémoire principale, les données inscrites dans cette dernière risquent en effet d'être écrasées. Plusieurs solutions sont actuellement utilisées pour remédier à ces difficultés, reposant sur des moyens matériels ou logiciels. Elles garantissent qu'à tout instant, des données mémoire appartiennent à l'un seulement des maîtres. Les moyens matériels garantissant la cohérence de données (tels que la technique appelée " snoop ") mettent habituellement en ceuvre des solutions complexes, dans lesquelles tout maître accédant à une donnée en mémoire principale doit s'assurer qu'un sous-ensemble disposant d'antémémoire ne possède pas la donnée avant de la manipuler. Si tel est le cas, la donnée est mise à disposition de la mémoire principale ou du maître par un mécanisme d'écriture mémoire. En plus de leur complexité et de coûts d'implantation, ces systèmes nécessitent d'allouer des bandes passantes aux processeurs. Ils pénalisent les temps de traitement par des attentes. Les moyens logiciels garantissant la cohérence de données imposent habituellement une gestion des données segmentée, c'est-à-dire organisée de manière à ce que chaque maître dispose d'un ou plusieurs -3- 2814555 espaces mémoire dédiés et d'une zone mémoire partageable. Les espaces mémoires dédiés à un maître sont accessibles seulement par les antémémoires associées à ce maître, les données n'y étant pas partagées avec d'autres maîtres, tandis que la zone mémoire partageable est non accessible par les antémémoires et sert de zone d'échange de données. Un autre moyen logiciel d'assurer la cohérence de données met en oeuvre des instructions processeur spécifiques de gestion d'antémémoires, à même de manipuler des blocs de données d'antémémoires afin d'assurer la cohérence de ces données entre antémémoires et mémoire principale. Ce moyen impose également une gestion de données organisée afin de tenir compte de la taille des blocs de données manipulés par ces instructions, de manière à éviter que des maîtres différents n'accèdent pas à des mêmes blocs de données par des opérations d'écriture (risque d'écrasement). Ces techniques logiciels requièrent dans tous les cas une synchronisation précise et une conception globale initiale incluant des contraintes liées au fonctionnement multiprocesseur du système. De plus, elles nécessitent de disposer dans chacun des processeurs, d'une programmation de gestion adaptée aux échanges de données entre les antémémoires et la mémoire principale dans l'ensemble des processeurs. La présente invention concerne un système de gestion mémoire de cohérence de données relative à une mémoire principale accessible par au moins deux processeurs, permettant d'assurer la cohérence entre des antémémoires d'un ou plusieurs des processeurs et la mémoire principale. Le système de gestion mémoire de l'invention peut assurer cette cohérence en lecture et / ou en écriture dans la mémoire principale, et rend possible une implantation et une mise en oeuvre fiables, économiques et aisées, au regard des méthodes existantes. Il offre notamment ces avantages lorsque le fonctionnement multiprocesseur résulte d'une évolution d'un système -4- monoprocesseur De plus, elle peut permettre d'obtenir des vitesses de traitement élevées, par rapport aux moyens matériels connus. L'invention est aussi relative à un réseau multiprocesseur incluant un système de gestion mémoire selon l'invention et à un procédé de gestion mémoire de cohérence de données, ayant les avantages cités plus haut. Elle s'applique en particulier au domaine de l'audiovisuel, notamment pour des décodeurs numériques. A cet effet, I'invention a pour objet un système de gestion mémoire de cohérence de données relative à une mémoire principale accessible par au moins deux processeurs. Au moins un de ces processeurs dispose d'une ou plusieurs mémoires cache associées à au moins une zone de la mémoire principale, dite zone d'affectation de ce processeur. Le système de gestion comprend: - un ensemble de gestion d'accès des processeurs à au moins une zone commune de la mémoire principale, dite zone d'échanges; un ou plusieurs modules de copie respectivement associés à un ou plusieurs des processeurs disposant d'au moins une mémoire cache, ci- après désignés comme premiers processeurs; chacun de ces modules de copies est capable d'effectuer une copie de données entre, d'une part, un espace mémoire de travail constitué par l'une des mémoires cache et / ou la zone d'affectation du premier processeur associé et d'autre part, la zone d'échanges; - et un ou plusieurs modules de transfert de données, associés respectivement à un ou plusieurs seconds processeurs capables d'échanger des données avec les premiers processeurs; chacun de ces modules de transfert est destiné -5- à transférer des données entre la zone d'échanges et le second processeur associé. Selon l'invention, le système de gestion de cohérence comprend aussi des moyens de déclenchement contrôlés par les seconds processeurs, capables de déclencher les modules de copie des premiers processeurs et les modules de transfert des seconds processeurs lorsque les premiers processeurs soumettent des requêtes impliquant des transferts de données entre les espaces mémoire de travail des premiers processeurs et les seconds processeurs. Par " modules " de copie et de transfert, on n'entend pas des objets physiques déterminés, mais des entités fonctionnelles pouvant par exemple être regroupées et intégrées physiquement dans un ou plusieurs supports matériels, ou au contraire dispersées chacune dans plusieurs supports. Par " données ", on peut entendre aussi bien, notamment, des références à des données en mémoire que des identificateurs de commandes. L'espace mémoire de travail utilisé par le module de copie est celui actif lors de la lecture ou de l'écriture de données. Ainsi, lorsque les données échangées avec un premier processeur sont présentes en antémémoire, c'est cette dernière qui sert de base de départ en lecture et de base d'arrivée en écriture. Lorsque au contraire, les données visées sont dans un espace mémoire de la zone d'affectation qui n'est pas exploité en antémémoire, les données sont lues ou écrites directement dans cette zone d'affectation de la mémoire principale. Dans tous les cas, le premier processeur est capable d'extraire ou de placer lui-même les données requises, selon des procédures internes à son fonctionnement de gestion -6- 2814555 d'antémémoire. De la sorte, des opérations de copie dans, ou à partir de, la zone d'échanges ne posent pas de difficulté et permettent de reporter à la zone d'échanges, les transferts avec un second processeur. Les processeurs avec mémoires cache disposent donc d'une antémémoire ou de plusieurs antémémoires en cascade, ce dernier mode de réalisation ne posant aucune difficulté particulière. Un ou plusieurs des processeurs munis de mémoires cache peuvent bénéficier des caractéristiques de gestion de cohérence de l'invention. Préférentiellement, le système de gestion mémoire de cohérence affecte ces caractéristiques à tous les processeurs avec mémoires cache. Dans des variantes de réalisation, seule une partie de ces processeurs en bénéficient, les autres utilisant au besoin d'autres moyens de gestion de cohérence. Les processeurs avec mémoires cache munis des capacités de gestion de cohérence de l'invention peuvent donc tantôt jouer le rôle de " premiers processeurs ", tantôt celui de " seconds processeurs ". Ainsi, le système de gestion mémoire de l'invention repose sur un passage systématique par la zone d'échanges de toutes les informations à échanger (en lecture et / ou en écriture) entre un premier processeur disposant d'une gestion d'antémémoire et un second processeur, ayant ou non une antémémoire, passage commandé par le second processeur. Par contraste, dans les techniques connues avec moyens matériels, les informations sont directement lues ou écrites par le second processeur dans la zone d'affectation du premier processeur en mémoire principale, après mise en cohérence de la zone d'affectation et de l'antémémoire (ou des antémémoires). Cette mise à jour préalable à tout échange a des inconvénients mentionnés plus haut. Par ailleurs, dans les techniques connues avec moyens logiciels, les informations à partager -7- 2814555 doivent préalablement être allouées dans une zone d'échanges de la mémoire principale, ou reposent sur des changements successifs d'affectation de zones de la mémoire principale. Dans tous les cas, une coordination globale est requise et la gestion individuelle de chacun des processeurs avec mémoire cache doit être adaptée en conséquence. En effet, chaque transfert de données entre un des processeurs et la zone d'échanges est initiée par ce processeur, de telle sorte qu'un transfert entre deux processeurs met nécessairement en jeu les moyens de gestion respectifs de ces processeurs. Ces inconvénients s'avèrent surmontés par le système de gestion mémoire de l'invention. En particulier, grâce au report des transferts en zone d'échanges, le système de gestion mémoire affranchit des difficultés liées à la gestion interne de chaque processeur pourvu de mémoires cache. De plus, les difficultés de conception et de synchronisation de l'art antérieur avec moyens logiciels sont surmontées, car un transfert de données entre deux processeurs est entièrement commandé par l'un des deux processeurs, à partir d'une requête formulée initialement par l'autre processeur. Le système de l'invention s'avère particulièrement intéressant lorsqu'il s'applique à un premier processeur prévu originellement pour fonctionner en mode monoprocesseur avec mémoires caches. Une adaptation de la programmation dans ce processeur serait en effet complexe et comporterait d'importants risques d'erreurs. L'invention permet de coupler ce premier processeur à un second processeur (ou davantage), en se contentant de rajouter à ce premier processeur une couche de programmation pour la copie de données entre son espace mémoire de travail et la zone d'échanges. On reporte en effet la commande de I'ensemble des opérations de transferts dans le second processeur, pour lequel on développe un logiciel de gestion de mémoire spécifique. -8- La copie et le transfert mentionnés visent: - soit une copie d'une antémémoire ou d'une zone d'affectation d'un des premiers processeurs vers la mémoire d'échanges, et un transfert de la mémoire d'échanges vers un des seconds processeurs; les capacités des modules de copie et de transfert et des moyens de déclenchement correspondent alors à une lecture par le second processeur, de données accessibles par le premier processeur; cette caractéristique permet d'assurer en mode write-back la cohérence en lecture de données traitées par le premier processeur (cette cohérence mémoire est assurée automatiquement en mode write-through); soit un transfert d'un des seconds processeurs vers la mémoire d'échanges et une copie de la mémoire d'échanges vers une antémémoire ou une zone d'affectation d'un des premiers processeurs; les capacités des modules de copie et de transfert et des moyens de déclenchement correspondent alors à une écriture par le second processeur, de données accessibles par le premier processeur; cette caractéristique permet d'assurer, en mode write-back comme en mode write- through, la cohérence en écriture de données devant être traitées par le premier processeur; - soit les deux (capacité de cohérence dans les deux sens). Les moyens de déclenchement comprennent avantageusement des moyens de lecture d'instructions implantés dans les différents processeurs sous forme logicielle, capables de lire et d'interpréter des requêtes transmises par d'autres processeurs, préférentiellement en zone d'échanges. Dans une première forme avantageuse d'allocation mémoire, les seconds processeurs sont munis de modules d'allocation d'espace mémoire, capables d'allouer des espaces communs dans la zone d'échanges. Les moyens de déclenchement sont alors capables de déclencher les modules d'allocation d'espace mémoire lorsque les premiers processeurs soumettent des requêtes impliquant des transferts de données entre les espaces mémoires de travail des premiers processeurs et les seconds processeurs, en provoquant l'allocation des espaces communs nécessaires pour ces données. Le système de gestion mémoire peut ainsi restreindre les accès des premiers processeurs à la mémoire d'échanges, en n'autorisant que des accès copies (en lecture et / ou en écriture). Dans une seconde forme d'allocation mémoire, les premiers processeurs sont munis de modules d'allocation d'espace mémoire, capables d'allouer des espaces communs dans la zone d'échanges. Les moyens de déclenchement (contrôlés par les seconds processeurs) sont alors capables de déclencher ces modules d'allocation d'espace mémoire dans les mêmes circonstances que précédemment. Ainsi, les premiers processeurs gardent la maîtrise des allocations d'espace dans la mémoire d'échanges lorsque ces allocations sont en relation avec leurs espaces mémoire de travail, mais sous la direction des seconds processeurs. Préférentiellement, les moyens de déclenchement comprennent au moins un dispositif d'interruption entre les premiers processeurs et seconds processeurs capables d'échanger des données, destiné à signaler un échange de données entre ces processeurs et à provoquer une interruption temporaire d'opérations de traitement en cours dans ces processeurs. Un tel dispositif d'interruption reliant un des premiers et un des seconds processeurs a avantageusement pour effet de provoquer une lecture de la zone d'échanges par le second processeur, après que le premier processeur y a inscrit une requête exécutable par le second -10- 2814555 processeur, et réciproquement. Cette requête peut porter notamment sur un traitement utilisant des données, une allocation d'espace mémoire dans la mémoire d'échanges, une copie de données dans, ou à partir de, cette mémoire d'échanges par le premier processeur, et / ou une opération de transfert entre la mémoire d'échanges et le second processeur. Les dispositifs d'interruption comprennent avantageusement des mécanismes matériels. Selon une première forme de réalisation préférée des modules de copie et de transfert (lecture de données accessibles par un processeur avec mémoire cache), le module de copie d'au moins un des premiers processeurs est prévu pour effectuer une copie de données de la zone d'échanges vers l'espace mémoire de travail du premier processeur et les modules de transfert des seconds processeurs capables d'échanger des données avec le premier processeur sont prévus pour transférer des données des seconds processeurs vers la zone d'échanges. Selon une deuxième forme de réalisation préférée des modules de copie et de transfert (écriture de données rendues accessibles par un processeur avec mémoire cache), le module de copie d'au moins un des premiers processeurs est prévu pour effectuer une copie de données de l'espace mémoire de travail du premier processeur vers la zone d'échanges et les modules de transfert des seconds processeurs capables d'échanger des données avec le premier processeur sont prévus pour transférer des données de la zone d'échanges vers les seconds processeurs. Avantageusement, les deux formes de réalisation sont combinées. Plus précisément, les capacités de la première forme de réalisation (lecture) sont de préférence implantées pour l'ensemble des processeurs ayant une gestion de mémoire cache en write-back, et celles de -11- 2814555 la seconde forme de réalisation (écriture), pour l'ensemble des processeurs avec mémoire cache (en write-through et write-back). Cependant, le système de gestion mémoire de cohérence s'applique avantageusement à la fois en lecture et en écriture à l'ensemble des processeurs avec mémoire cache, car son implantation systématique permet d'utiliser les mêmes fonctions logicielles dans tous ces processeurs au prix d'adaptations minimes. Dans des variantes de réalisation, la première forme de réalisation (lecture) est mise en oeuvre sans la seconde. Les capacités de cohérence en écriture sont alors assurées par d'autres moyens, tels que par exemple un module de gestion de mémoire cache capable de remettre à jour automatiquement au besoin la mémoire cache utilisée par rapport à la mémoire d'échanges, lors d'une écriture dans cette dernière. Dans un premier mode de réalisation de la gestion d'accès partagé, les zones d'affectation des processeurs avec mémoires cache étant extérieures à la zone d'échanges, I'ensemble de gestion d'accès partagé à la zone d'échanges est prévu pour une zone non cachée. Dans un second mode de réalisation de la gestion d'accès partagé, au moins une des zones d'affectation des processeurs avec mémoires cache contenant la zone d'échanges, l'ensemble de gestion d'accès partagé à la zone d'échanges comprend un dispositif matériel capable d'assurer la cohérence de ladite zone d'échange. La zone d'échange est ainsi cachée mais cohérente. L'invention s'applique également à un réseau multiprocesseur comprenant une mémoire principale et au moins deux processeurs, au moins un de ces processeurs disposant d'une mémoire cache associée à au moins une zone de la mémoire principale, dite zone d'affectation du processeur. -12- 2814555 Ce réseau multiprocesseur est caractérisé en ce qu'il comprend un système de gestion de données conforme a l'invention. L'invention concerne aussi un procédé de gestion mémoire de cohérence de données relative à une mémoire principale accessible par au moins deux processeurs. Au moins un de ces processeurs disposant d'une ou plusieurs mémoires caches associées à au moins une zone de la mémoire principale, dite zone d'affectation du processeur. Dans le procédé, on gère l'accès partagé des processeurs à au moins une zone commune de la mémoire principale, dite zone d'échanges, de telle sorte que lors d'un transfert de données d'au moins un premier des processeurs disposant d'une ou plusieurs mémoires cache vers un second des processeurs: - on déclenche une copie de ces données d'un espace mémoire de travail constitué par l'une des mémoires cache et / ou la zone d'affectation du premier processeur, vers la zone d'échanges, et - on déclenche un transfert de ces données de la zone d'échanges vers le second processeur, et / ou lors d'un transfert de données du second processeur vers le premier processeur: - on déclenche un transfert de ces données du second processeur vers la zone d'échanges, et - on déclenche une copie de ces données de la zone d'échanges vers l'espace mémoire de travail du premier processeur. Selon l'invention, lorsqu'on envoie au moyen du premier processeur une requête impliquant un transfert de données de l'espace mémoire de travail du premier processeur vers le second et / ou lorsqu'on envoie au moyen du premier processeur une requête impliquant un transfert de données du second processeur vers l'espace mémoire de travail du -13- premier processeur, on déclenche la copie et le transfert des données au moyen du second processeur. L'invention sera mieux comprise et illustrée au moyen des exemples suivants de réalisation et de mise en oeuvre, nullement limitatifs, en référence aux figures annexées sur lesquelles: - la Figure 1 est un schéma de principe d'un décodeur numérique intégrant un premier système de gestion mémoire de cohérence de données conforme à l'invention, et comprenant deux processeurs avec mémoires cache partageant une zone d'échanges d'une mémoire principale; - la Figure 2 illustre une première étape de gestion de cohérence au moyen du système de gestion mémoire de la Figure 1, comprenant l'envoi d'un premier des processeurs vers le second processeur, d'une requête de traitement mettant en jeu un transfert des données du premier processeur vers le second; - la Figure 3 illustre une deuxième étape de gestion de cohérence, comprenant une allocation d'espace mémoire dans la zone d'échanges par le second processeur et l'envoi d'une requête de copie des données, adressée du second processeur au premier processeur; - la Figure 4 illustre une troisième étape de gestion de cohérence, comprenant une copie des données par le premier processeur vers la zone d'échanges; - la Figure 5 illustre une quatrième étape de gestion de cohérence, comprenant une lecture des données dans la zone d'échanges par le second processeur et la copie de ces données dans une zone d'affectation au second processeur, dans la mémoire principale; - la Figure 6 montre une troisième étape de gestion de cohérence au moyen du système de gestion mémoire de la Figure 1, relative -14- à un transfert de données du second processeur vers le premier processeur; et - la Figure 7 est un schéma de principe d'un second système de gestion mémoire de cohérence de données conforme à l'invention, comprenant un processeur avec mémoire cache et deux processeurs sans mémoires cache, partageant une zone d'échanges d'une mémoire principale. Sur les figures 2 à 6, les mémoires, ainsi que les espaces ou zones mémoires, représentées ont des tailles et des répartitions destinées à assurer la clarté des exemples, et nullement représentatives des tailles et répartitions réelles utilisées. Par convention, une flèche pleine représente un transfert de données en lecture (flèche pointant d'une mémoire vers un processeur) ou en écriture lecture (flèche pointant d'un processeur vers une mémoire); une flèche en pointillés (figure 2) représente un pointage vers des données en mémoire; et une flèche en traits mixtes fins (figure 3) schématise une allocation d'espace mémoire. Un décodeur numérique 3, représenté sur la figure 1, comprend deux processeurs 1 et 2. Les processeurs 1 et 2 disposent respectivement de logiciels 10 et 11 comprenant chacun une partie 12 et 13 relative à la communication de données, qui permet l'échange d'informations entre les deux processeurs 1 et 2. De plus, ils sont pourvus respectivement d 'antémémoires 5 et 6, gérés par des fonctionnalités dédiées des logiciels 10 et 11. Dans des variantes de réalisation, les processeurs 1 et 2 incluent des systèmes spécifiques de gestion d'antémémoires. Dans d'autres variantes de réalisation, ils sont associés respectivement à des systèmes de gestion d'antémémoires qui leur sont externes. Les antémémoires 5 et 6 sont du type write-back ou write-through. Dans l'exemple exposé, on considérera qu'il s'agit d'antémémoires du type write-back. -15- 2814555 Le décodeur comprend aussi une mémoire principale 4, partagée par les deux processeurs 1 et 2: ces derniers y accèdent respectivement par des bus 31 et 32 à des zones mémoires non partageables 7 et 8 d'affectation et à une zone mémoire 9 d'échanges, partageable et cohérente. La cohérence de données de la zone d'échanges 9 est assurée par matériel. Dans une variante de réalisation, cette cohérence est assurée par logiciel, grâce à l'utilisation d'instructions de gestion de cohérence de données des antémémoires 5 et 6. Dans encore une autre variante de réalisation, cette zone d'échanges est non cachée. De plus, un mécanisme matériel d'interruption 14 permet aux deux processeurs 1 et 2 de signaler un échange de données relatif à une demande de traitement de données d'un processeur à l'autre, et de provoquer une interruption temporaire d'opérations de traitement en cours dans le processeur sollicité. Les logiciels 10 et 11 comportent des fonctionnalités contribuant à assurer la cohérence des données par rapport à la mémoire principale 4 et à leurs antémémoires 5 et 6. En particulier, les parties 12 et 13 incluent non seulement des programmes de lecture et d'écriture dans la zone d'échanges 9, mais aussi des programmes de copie de données déterminées en zone d'échanges 9, à partir des zones d'affectation 7 et 8 ou des antémémoires 5 et 6. De plus, les logiciels 10 et 11 disposent de fonctionnalités d'allocation d'espace mémoire dans la zone d'échanges 9, pour l'enregistrement de données déterminées. Les capacités des logiciels 10 et 11 apparaîtront plus clairement par la description ci-dessous d'une opération de transfert de données entre les deux processeurs 1 et 2. Dans ce qui suit, on désigne par " zone " ou " espace " mémoire -16- 2814555 un ensemble d'adresses dans une mémoire donnée, même si cette zone ou cet espace regroupe plusieurs parties discontinues. En fonctionnement, dans une première étape (figure 2), le processeur 1 envoie une requête au processeur 2. Il inscrit pour cela des informations dans un espace mémoire 17 de la zone d'échanges 9 et il active le mécanisme d'interruption 14 pour prévenir le processeur 2. Ces informations sont constituées d'identificateurs de commandes 15 et de références 16 à des données contenues dans un espace mémoire 18 de la zone d'affectation 7 associée au processeur 1. Dans une deuxième étape (figure 3), le processeur 2 lit et interprète les informations dans l'espace mémoire 17, interprète la requête et alloue dans la zone d'échanges 9 un espace mémoire 20 nécessaire pour la copie par le processeur 1 des données référencées dans cette requête. Le processeur 2 envoie ensuite une requête de copie de mémoire à mémoire au processeur 1, en inscrivant des informations dans un espace mémoire 19 de la zone d'échanges 9 et en activant le mécanisme d'interruption 14. Dans une troisième étape (figure 4), le processeur 1 interprète la requête contenue dans l'espace mémoire 19 et effectue la copie des données identifiées par les références 16, dans l'espace mémoire 20 alloué dans la zone d'échanges 9. Il copie ces données soit à partir de l'espace mémoire 18 de la zone d'affectation 7, soit à partir de l'antémémoire 5, selon un processus interne au processeur 1 (et aux moyens associés de gestion de l'antémémoire 5), tenant compte du contenu courant de l'antémémoire 5. Le processeur 1 inscrit ensuite dans un espace mémoire 21 de la zone d'échanges 9, une requête en lecture adressée au processeur 2, et active le mécanisme d'interruption 14. -17- -17- 2814555 Dans une quatrième étape (figure 5), le processeur 2 lit et interprète la requête contenue dans l'espace mémoire 21, et procède à la lecture des données dans l'espace mémoire 20. Il utilise ensuite ces données dans l'antémémoire 6 ou la zone d'affectation 8, selon le contenu courant de l'antémémoire 6. Par exemple, le processeur 2 alloue un espace mémoire 22 dans la zone d'affectation 8, dans lequel il inscrit les données obtenues. De cette manière, les données utilisées par le processeur 2 sont cohérentes, puisque seul le maître constitué par le processeur 1 lit ou écrit dans sa zone d'affectation 7. Des opérations de transfert du processeur 2 vers le processeur 1 s'effectuent de manière similaire. Plus précisément, ces opérations peuvent se décomposer en trois étapes. On indique ci-après leurs différences au regard des trois premières étapes mentionnées pour un transfert du processeur 1 vers le processeur 2. Pour simplifier, les notations et les représentations adoptées pour les espaces mémoires sont les mêmes. La première étape (figure 2) est identique à la précédente. Dans la seconde étape (figure 3), le processeur 2 alloue dans la zone d'échanges 9 I'espace mémoire 20 nécessaire pour le transfert des données générées lors de l'exécution de la requête lue dans l'espace mémoire 17. Le processeur 2 active alors un transfert vers l'espace mémoire des données requises, à partir de sa zone d'affectation 8. Dans la troisième et dernière étape (figure 6), le processeur 1 -18effectue la copie de données contenues dans l'espace mémoire 20 vers sa zone d'affectation 7 et son antémémoire 5. Un fonctionnement similaire à celui décrit ci-dessus est obtenu lorsqu'une requête initiale impliquant un transfert de données entre les processeurs 1 et 2 émane du processeur 2, au lieu du processeur 1. Dans un autre exemple de réalisation, seul le processeur 1 bénéficie du système de gestion de cohérence ci-dessus, et la cohérence des données entre l'espace mémoire d'affectation 8 et l'antémémoire 6 est assuré d'une autre manière. Dans un autre mode de réalisation, représenté sur la figure 7, un réseau multiprocesseur comprend un premier processeur 41 disposant d'une antémémoire 45 et deux autres processeurs 42 et 43 n'ayant pas de tels moyens. Les trois processeurs 41-43 sont respectivement munis de logiciels -52, comprenant des parties 53-55 relatives à la communication de données. Le réseau multiprocesseur comprend aussi une mémoire principale 44, partagée par les trois processeurs 41 à 43: ces derniers y accèdent respectivement par des bus 61 à 63 à une zone mémoire 49 d'échanges, partageable et cohérente. Le processeur 41 accède également par le bus 61 à une zone mémoire non partageable 47 d'affectation de la mémoire principale 44. De plus, des mécanismes matériels d'interruption 56 et 57, similaires à ceux du mode de réalisation précédent (figures 1 à 5) relient le -19- 2814555 processeur 41 respectivement aux processeurs 42 et 43. Les logiciels 50 à 52 incluent des fonctionnalités similaires à celles décrites dans le mode de réalisation précédent (figures 1 à 5). Ainsi, une requête de traitement adressée par le processeur 41 au processeur 42 en référence à des données accessibles par le processeur 41 implique: - une première étape d'inscription par le processeur 41 d'informations dans la zone d'échanges 49 et d'activation par le processeur 41 du mécanisme d'interruption 56; - une deuxième étape d'opérations suivantes exécutées par le processeur 42: lecture et interprétation des informations dans la zone d'échanges 49, allocation d'espace mémoire pour les données en référence, dans la zone d'échanges 49, inscription dans la zone d'échanges 49 d'une requête de copie des données et activation du mécanisme d'interruption 56; - une troisième étape d'opérations suivantes exécutées par le processeur 41: lecture et interprétation de la requête en zone d'échanges 49 et copie des données dans l'espace mémoire alloué par le processeur 42; le processeur 42 peut alors exploiter les données demandées. Dans des variantes des réalisations ci-dessus, les mécanismes matériels d'interruption 14, 56 et / ou 57 sont remplacés par des mécanismes logiciels, permettant le déclenchement d'actions de traitement appropriées. Par exemple, ce mécanisme repose sur une lecture périodique par un processeur récepteur, d'un mot d'état mémoire positionné par un processeur demandeur. -20- 2814555 REVENDICATIONS 1. Système de gestion mémoire de cohérence de données relative à une mémoire principale (4, 44) accessible par au moins deux processeurs (1-2, 41-43), au moins un desdits processeurs (1, 2, 41) disposant d'au moins une mémoire cache (5, 6, 45) associée à au moins une zone (7, 8, 47) de la mémoire principale (4, 44), dite zone d'affectation dudit processeur (1, 2, 41), ledit système de gestion comprenant: - un ensemble de gestion d'accès partagé (12-13, 53-55) desdits processeurs (1-2, 41-43) à au moins une zone commune (9, 49) de la mémoire principale (4, 44), dite zone d'échanges, - au moins un module de copie (12, 13, 53) respectivement associé à au moins un premier desdits processeurs (1, 2, 41) disposant d'au moins une mémoire cache (5, 6, 45), capable d'effectuer une copie de données entre un espace mémoire de travail constitué par l'une desdites mémoires cache (5, 6, 45) et / ou la zone d'affectation (7, 8, 47) dudit premier processeur, d'une part, et la zone d'échanges (9, 49), d'autre part, - et au moins un module de transfert de données (12-13, 54-55), associé respectivement à au moins un second processeur (1, 2, 42, 43) capable d'échanger des données avec ledit premier processeur (1, 2, 41), destiné à transférer des données entre ladite zone d'échanges (9, 49) et ledit second processeur (1-2, 42-43) associé, caractérisé en ce que ledit système de gestion de cohérence comprend aussi des moyens de déclenchement (10-11, 14, 50-52, 56-57) commandés par les seconds processeurs, capables de déclencher les modules de copie (12, 13, 53) des premiers processeurs (1, 2, 41) et les modules de transfert (12-13, 54-55) des seconds processeurs (1-2, 42-43) lorsque lesdits -21- 2814555 premiers processeurs (1, 2, 41) soumettent des requêtes impliquant des transferts de données entre lesdits espaces mémoire de travail des premiers processeurs (1, 2, 41) et les seconds processeurs (1-2, 42-43). 2. Système de gestion mémoire selon la revendication 1, caractérisé en ce que lesdits seconds processeurs (1-2, 42-43) sont munis de modules d'allocation d'espace mémoire (12-13, 53-55), capables d'allouer des espaces communs dans ladite zone d'échanges (9, 49), lesdits moyens de déclenchement (10-11, 14, 50-52, 56-57) étant capables de déclencher lesdits modules d'allocation d'espace mémoire lorsque lesdits premiers processeurs (1, 2, 41) soumettent des requêtes impliquant des transferts de données entre lesdits espaces mémoires de travail des premiers processeurs (1, 2, 41) et les seconds processeurs (1-2, 42-43), en provoquant l'allocation des espaces communs nécessaires pour lesdites 1 5 données. 3. Système de gestion mémoire selon l'une des revendications 1 ou 2, caractérisé en ce que lesdits moyens de déclenchement (10-11, 14, 52, 56-57) comprennent au moins un dispositif d'interruption (14, 56, 57) entre lesdits premiers processeurs (1, 2, 41) et seconds processeurs (1-2, -52) capables d'échanger des données, destiné à signaler un échange de données entre lesdits processeurs et à provoquer une interruption temporaire d'opérations de traitement en cours dans lesdits processeurs. 4. Système de gestion mémoire selon la revendication 3, caractérisé en ce que lesdits dispositifs d'interruption (14, 56-57) comprennent des mécanismes matériels. 5. Système de gestion mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que le module de copie (12, 13, 53) d'au moins un des premiers processeurs (1, 2, 41) est prévu pour -22- 2814555 effectuer une copie de données de ladite zone d'échanges (9, 49) vers ledit espace mémoire de travail dudit premier processeur (1, 2, 41) et en ce que lesdits modules de transfert (12-13, 50-52) des seconds processeurs (1-2, 42-43) capables d'échanger des données avec ledit premier processeur sont prévus pour transférer des données desdits seconds processeurs vers ladite zone d'échanges (9, 49). 6. Système de gestion mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que le module de copie (12, 13, 53) d'au moins un des premiers processeurs (1, 2, 41) est prévu pour effectuer une copie de données dudit espace mémoire de travail dudit premier processeur (1, 2, 41) vers ladite zone d'échanges (9, 49) et en ce que lesdits modules de transfert (12-13, 50-52) des seconds processeurs (1- 2, 42-43) capables d'échanger des données avec ledit premier processeur sont prévus pour transférer des données de ladite zone d'échanges (9, 49) vers lesdits seconds processeurs. 7. Système de gestion mémoire selon l'une quelconque des revendications précédentes, caractérisé en ce que les zones d'affectation (7, 8, 47) des processeurs (1, 2, 41) avec mémoires cache (5, 6, 45) étant extérieures à ladite zone d'échanges (9, 49), I'ensemble de gestion d'accès partagé (12-13, 53-55) à la zone d'échanges (9, 49) est prévu pour une zone non cachée. 8. Système de gestion mémoire selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'au moins une des zones d'affectation (7, 8, 47) des processeurs (1, 2, 41) avec mémoires cache (5, 6, 45) contenant ladite zone d'échanges (9, 49), I'ensemble de gestion d'accès partagé (12-13, 53-55) à la zone d'échanges (9, 49) comprend un dispositif matériel capable d'assurer la cohérence de ladite zone d'échange (9, 49). -23- 2814555 9. Réseau multiprocesseur comprenant une mémoire principale (4, 44) et au moins deux processeurs (1-2, 41-43), au moins un desdits processeurs (1, 2, 41) disposant d'une mémoire cache (5, 6, 45) associée à au moins une zone (7, 8, 47) de la mémoire principale (4, 44), dite zone d'affectation dudit processeur (1, 2, 41), caractérisé en ce que ledit réseau multiprocesseur comprend un système de gestion de données conforme à l'une quelconque des revendications précédentes. 10. Procédé de gestion mémoire de cohérence de données relative à une mémoire principale (4, 44) accessible par au moins deux processeurs (1-2, 41-43), au moins un desdits processeurs (1, 2, 41) disposant d'au moins une mémoire cache (5, 6, 45) associée à au moins une zone (7, 8, 47) de la mémoire principale (4, 44), dite zone d'affectation dudit processeur (1, 2, 41), dans lequel on gère l'accès partagé desdits processeurs (1-2, 41-43) à au moins une zone commune (9, 49) de la mémoire principale (4, 44), dite zone d'échanges, de telle sorte que lors d'un transfert de données d'au moins un premier desdits processeurs (1, 2, 41) disposant d'au moins une mémoire cache (5, 6, 45) vers un second desdits processeurs (1-2, 42-43): - on déclenche une copie desdites données d'un espace mémoire de travail constitué par l'une desdites mémoires cache (5, 6, 45) et / ou la zone d'affectation (7, 8, 47) du premier processeur, vers la zone d'échanges (9, 49), et - on déclenche un transfert desdites données de la zone d'échanges (9, 49) vers le second processeur (1-2, 42- 43), et / ou lors d'un transfert de données dudit second processeur (1-2, 42-43) vers ledit premier processeur (1,2,41): - on déclenche un transfert desdites données du second processeur (1-2, 42-43) vers la zone d'échanges (9, 49), et -24- 2814555 - on déclenche une copie desdites données de la zone d'échanges (9, 49) vers l'espace mémoire de travail du premier processeur (1, 2, 41), caractérisé en ce que lorsqu'on envoie au moyen du premier processeur (1, 2, 41) une requête impliquant un transfert de données de l'espace mémoire de travail du premier processeur vers le second processeur (1-2, 42-43) et I ou lorsqu'on envoie au moyen du premier processeur (1, 2, 41) une requête impliquant un transfert de données du second processeur (1-2, 4243) vers l'espace mémoire de travail du premier processeur, on déclenche ladite copie et ledit transfert des données au moyen du second processeur.