FR 2805372 A1 20010824 FR 0012196 A 20000926 POSTAGE D'ECRITURE AVEC MISE EN ORDRE GLOBALE DANS DES SYSTEMES A CHEMINS MULTIPLES DOMAINE TECHNIQUE La présente invention concerne le postage d'écriture dans des systèmes multiprocesseurs. L'invention concerne plus particulièrement des procédés et dispositif pour postage d'écriture avec mise en ordre globale dans un système multiprocesseur comportant des chemins multiples depuis des processeurs multiples vers dispositif d'E/S unique. CONTEXTE DE L'ART Les systèmes informatiques comportent des moyens pour que les CPU transmettent des données vers des unités d'entrée-sortie (E/S) . La latence de transit pour transactions est typiquement élevee, de l'ordre de plusieurs centaines de milliers de cycles des CPU. Pour maximiser la performance des séquences de ces transactions, il a été d'usage courant utiliser le pipelinage, appelé également postage d'écriture, dans ce contexte particulier. Avec le postage écriture, un CPU peut émettre une écriture suivante avant l'écriture précédente ait progressé tout le long du chemin jusqu'à sa destination. Certaines défis pour maintenir mise en ordre du système peuvent provenir du contexte du postage d'écriture. Par exemple, les protocoles de bus comportent fréquemment un mécanisme de "relance". Si deux écritures postées successives sont envoyées et que la première est réessayée, les écritures peuvent arriver à leur destination dans l'ordre inverse de celui dans lequel elles été transmises. De plus, dans les systèmes à CPU multiples, il est généralement nécessaire pour les écritures provenant de CPU differents, envoyées à la même destination, d'être coordonnées. En supposant une certaine relation d'ordre entre les CPU, établie par un certain mécanisme, tel qu'un semaphore de mémoire, les écritures d'E/S émises par ordonné en premier arrivent à leur destination avant celles d'un CPU ordonné en second. Ces deux problèmes sont facilement résolus dans les systemes à bus unique, c'est-à-dire les systèmes dans lesquels il n'existe qu'un seul chemin d'un CPU quelconque vers chaque dispositif d'E/S. Le problème de la relance" peut être résolu en relançant toutes les écritures vers la même destination lorsque la première est rlancée, couplée à une exigence de protocole telle que seule la relance la plus ancienne est délivrée de nouveau jusqu'à ce qu'elle soit acceptée. Le deuxième cas ne peut pas se produire par définition ; s'il n'y a qu'un seul chemin, l'ordre d'arrivée doit être égal à l'ordre d'envoi. Divers moyens ont été utilisés pour résoudre le problème ci-dessus dans les systèmes à chemins multiples. L' d'entre eux est l'utilisation d'une opération de "synchronisation" spéciale. Ici, les écritures d' sont postées comme pour un système à chemin unique. Mais avant qu'une permission d'interruption pour un CPU différent commençant l'écriture sur un dispositif soit reçuef le CPU d'écriture précédente délivre la "synchronisation". La irsynchronisation" joue le rôle de sonde pour assurer que tous les chemins provenant du CPU d'envoi vers toutes les destinations possibles ont eté épuisés. Lorsque la sonde indique qu'elle a terminé, le premier CPU indique au deuxième CPU, par l'intermédiaire d'un sémaphore ou interruption, qu'il peut poursuivre. Une barrière de mise en ordre, soit implicite, soit explicite, est utilisée entre la synchronisation et l'indication de poursuite. Les performances et complexité sont les inconvénients de cette approche. La complexité augmente avec les tentatives pour limiter la portée de la synchronisation au minimum nécessaire. Les performances diminuent, plus l'opération synchronisation est "lourde" et simple. Une autre approche consiste à suivre la dernière écriture du premier avec une lecture de ce CPU vers la même destination. Une barrière implicite ou explicite peut séparer le retour de cette lecture avec l'indication pour le CPU suivant de poursuivre. L'inconvénient est ici lié contraintes et à la complexité du logiciel. Un logiciel d'héritage écrit pour des systèmes à chemin unique où ceci n'est pas nécessaire peut être difficile ' modifier. Le transfert du contrôle peut être géré par une couche de logiciel qui est isolée de celle qui exécute les écritures, ainsi, la nécessité de la lecture ou de l'endroit vers lequel elle est dirigée est difficile à déterminer. Un exemple de ceci est la préemption d'OS et la migration de processus. En conséquence, un besoin existe pour qu'un dispositif prenne en compte le postage d'écriture avec une mise en ordre globale dans des systèmes à chemins multiples. RESUME DE L'INVENTION Un dispositif et un procédé selon la présente invention, pour permettre le postage d'écriture avec une mise en ordre globale dans un système à chemins multiples comportent un adaptateur de bus possédant un port d'entrée pour recevoir une ou plusieurs opérations d'un processeur, une file d'attente contrôlée par l'adaptateur de bus pour retenir des informations provenant de la ou des opérations, un circuit de contrôle, couplé à la file d'attente, pour générer un signal de sortie concernant les informations provenant de ou des opérations, les signaux de sortie étant transmis au processeurf une installation d'interconnexion, couplée à chaque adaptateur de bus, pour transmettre la ou les opérations, un dispositif, connecté à l'installation d'interconnexion, pour recevoir les opérations transmises, où le dispositif envoie un signal d'acquittement au processeur lors de la réception de l'opération transmise. Les hommes de l'art comprendront ces avantages et bénéfices des divers modes de réalisation de l'invention, ainsi que d'autres, à la lecture de la description détaillée suivante d'un mode de réalisation préféré, en référence aux dessins listés ci-dessous. BREVE DESCRIPTION DES DESSINS Les dessins annexés sont incorporés et constituent une partie de la spécification avec la description, expliquent les avantages et les principes de 1 invention. Sur les dessins, la figure 1 est un schéma d' système informatique multiprocesseur ; la figure 2 est un diagramme des temps pour un signal GSEQ ; la f igure 3 est un schéma d'un adaptateur de bus mettant en oeuvre le signal GSEQ ; et la figure 4 est un organigramme d' processus pour mettre en oeuvre le signal GSEQ dans le système informatique à processeurs multiples. DESCRIPTION DETAILLEE D'UN MODE DE REALISATION PREFERE figure 1 est un schéma d'un système informatique multiprocesseur 100 possédant des chemins multiples provenant de processeurs multiples vers un dispositif d'E/S unique. Dans le système 100, une pluralité de processeurs 105, 110, écrivent respectivement sur leurs adaptateurs de bus 115, 120, par l'intermédiaire de leurs bus de processeur 125, 130. Le processeur 105 écrit sur l'adaptateur de bus 115 par l'intermédiaire du bus 125 et le processeur 110 écrit sur l'adaptateur de bus 120 par l'intermédiaire du bus 130. Deux processeurs et adaptateurs de bus sont représentés, toutefois, des processeurs et adaptateurs de bus supplémentaires peuvent être inclus dans le système Les adaptateurs de bus 115, 120, sont des interfaces qui reçoivent des signaux provenant des processeurs 105, 110. Les processeurs 105, 110, sont connectés une installation d'interconnexion 135 qui peut être un maillage, un anneau, un crossbar ou une autre topologie. L'installation d'interconnexion 135 n'est pas un simple bus, où un seul possesseur peut accéder à celui-ci à la fois et en conséquence, il assure la mise en ordre en vertu de ce fait L'installation d'interconnexion 135 possède divers étages tampon à l'intérieur de lui-même, les adaptateurs de - bus étant simplement le premier étage d'interconnexion vers l'installation d'interconnexion 135 du système 100. Est également connecté l'installation d'interconnexion 135 un dispositif d'E/S 140. Le dispositif d'E/S 140 est connecté l'installation d'interconnexion 135 par l'intermédiaire d'un adaptateur de bus 145. Le dispositif d'E/S 140 fournit aux processeurs 105, 110, l'accès aux autres parties du système 100. Des exemples de dispositifs d'E/S 140 sont des unités de disques et des dispositifs d'affichage graphique. La figure 2 est un diagramme des temps 150 un signal à séquentialité garantie. Initialement, le processeur 105 écrit une adresse 155 d'une mémoire laquelle accède le processeur 105. Une adresse représente typiquement un paquet de 32, 64 ou 128 bits données. Peu de temps après avoir envoyé la première adresse 155, des signaux à séquentialité garantie (GSEQ) 165 sont générés par l'adaptateur de bus 115, en se basant sur l'état de la file d'attente à l'intérieur de chaque adaptateur de bus. Après cela, les données 160 pour la première écriture sont envoyées. Les signaux GSEQ 165 peuvent être envoyés avant ou après avoir envoyé la date 160. Chaque adaptateur de bus 115 envoie le signal GSEQ 165 rapidement après l'arrivée d'une adresse. Le signal GSEQ 165 avertit le processeur 105 qu'il peut envoyer des adresses successives dans l'ordre, rapidement, puis les données correspondant aux adresses peu de temps après, d'une façon par pipeline. L'adaptateur de bus 115 garantit la séquentialité par l'intermédiaire du signal GSEQ 165, les opérations successives provenant du même processeur 105 restant dans cet ordre. La séquentialité signifie que les instructions provenant du processeur 105 arrivent toutes au niveau du dispositif dE/S 140 dans l'ordre dans lequel elles ont été délivrées. L'adaptateur de bus 105 génère simplement le signal GSEQ 1-65 s'il sait qu'il ne délivrera pas de signal de relance 170. Outre le signal GSEQ 165, le système 100 peut également délivrer le signal de relance 170 qui est généré par chaque adaptateur de bus en se basant sur l'état de la file d'attente à l'intérieur de chaque adaptateur de bus. La relance indique un signal de file attente pleine ou une contrainte de ressource similaire. Puisque le signal GSEQ 165 est une fonction du nombre d'entrées disponibles dans la file d'attente, le signal GSEQ 165 indique qu' y a toujours suffisamment d'entrées disponibles. Si la file d'attente est pleine, alors le signal de relance 170 est envoyé au processeur 105 pour réémettre la transaction, et s'il y a suffisamment d'entrées disponibles dans la file d'attente, alors le signal GSEQ 165 est positionné et garantit l'acceptation de cette transaction sans relance. Les processeurs 105, 110, peuvent alors envoyer l'adresse suivante. En supposant que le signal relance 170 n'a pas été envoyé, les données 160 pour la transaction sont envoyées et ceci peut s'effectuer ou non sur le même ensemble de fils. Il est souvent efficace que les données soient situées sur un ensemble de fils différent de l'adresse. Puisque celles-ci sont des transactions d'écriture, un processeur envoie à la fois l'adresse et les données. Dans certaines mises en oeuvre, l'adresse et les données sont multiplexées sur les mêmes fils et dans d'autres mises en oeuvre elles sont séparées. À un certain moment, en supposant qu'il n'y a pas eu de relance 170, les données 160 sont envoyées et quelque temps après que le dispositif d'E/S 140 a reçu les données 160, soit le dispositif d'E/S 140, soit l'adaptateur de bus 145 du dispositif d'E/S 140 qui est situé immédiatement en amont du dispositif d'E/S 140, envoie un acquittement 175. L'acquittement 175 retourne vers les processeurs après que le dispositif d'E/S 140 a reçu les données 160. Le système 100 maintient la séquentialité en utilisant le signal GSEQ 165 pour envoyer toutes les adresses 155 les unes après les autres, puis le processeur 105 attend d'obtenir l'acquittement 175 en retour du dispositif d'E/S 140 après que le processeur 105 a envoyé la dernière adresse. Ceci élimine la nécessité d'ajouter des opérations spéciales de lecture qui suivent la dernière écriture. Si le processeur 105 ne reçoit pas le signal GSEQ 165, il attend jusqu'au moment la relance 170 peut ou non être signalée. Si la relance 170 n'est pas signalée, alors le processeur 105 continue et envoie l'adresse 2. Si la relance 170 est signalée, alors le processeur 105 envoie de nouveau l'adresse 1 et à ce moment, il peut recevoir le signal GSEQ 165. Un point d'engagement de séquentialité est le point auquel il est connu que la transaction ne sera pas réessayée. L'acquittement 175 est envoyé, soit par le dispositif d'E/S 140 lui-même, soit par 1 adaptateur de bus 145 pour le dispositif d'E/S 140, de façon que la connexion entre l'adaptateur de bus 145 et le dispositif d'E/S 140 soit un chemin unique. L'acquittement 175, lorsqu'il est reçu par le processeur 105, trouve à un point d'engagement de mise en ordre. Le point d'engagement de séquentialité est le point auquel une transaction d'écriture donnée ne peut être transmise par aucune autre transaction d'écriture. En conséquence, le processeur 105 sait, lorsqu'il a reçu un acquittement 175, que les données 160 envoyées ont bien été reçues par le dispositif d'E/S 140. Si le processeur 105 délivre une opération dépendant d'un ordre, telle qu'un sémaphore, le processeur 105 attend tous les acquittements importants 175, même si le processeur 105 a envoyé rapidement des écritures multiples dans l'ordre. Si le processeur 105 exécute opération de sémaphore, il se bloque jusqu'à ce que tous les acquittements 175 soient revenus. Ainsi, si l'opération nécessite un autre processeur 115, elle doit attendre l'acquittement 175 pour assurer un ordre convenable Le système 100 utilise une sémantique de mise en ordre attachée à un sémaphore pour sensiblement bloquer le bus. Ceci constitue la façon dont le système 100 peut bloquer de manière sure le contrôle d'un chemin vers processeur différent et assurer que l'opération nfest pas entrelacée. Ceci permet au système 100 de maintenir l'ordre entre les processeurs multiples. La figure 3 est un schéma de l'adaptateur de bus mettant en oeuvre le signal GSEQ. La séquentialite garantie est mise en oeuvre en ajoutant certaines portes logiques supplémentaires à chaque adaptateur de bus 115, 120, pour permettre à chaque adaptateur de bus de déterminer si le signal GSEQ 165 doit être envoyé. bus adresse et de données du processeur entrent dans l'adaptateur de bus. Chaque adaptateur de bus contient une file d'attente 180 dans laquelle entrent les adresses et les données. Comme exemple, la figure 3 illustre une file d'attente à huit entrées 180. La file d'attente 180 contient l'adresse 185 et les données 190 et elle peut également contenir un bit valide 195, bien que le bit valide 195 ne soit pas nécessaire pour la mise en oeuvre particulière de la génération du signal GSEQ 165. La file d'attente 180 contient également un pointeur d'entrée 200 qui pointe sur l'entrée suivante destinée à être occupée avec les données entrantes. La file d'attente 180 comporte également un pointeur de sortie 205 qui pointe sur la dernière entrée occupée pour sortir vers l'installation d'interconnexion 135. Comme alternative, comme choix de mise en oeuvre, les pointeurs d'entrée et de sortie 200, 205, peuvent comporter une incrémentation préalable sur le pointeur concernant le fait qu'il est réellement occupé ou non. Quelle que soit la mise en oeuvre, aussi bien les pointeurs d'entrée que de sortie 200, 205, effectuent une incrémentation continue, de façon que les pointeurs se rebouclent. Les valeurs des pointeurs entrent dans un soustracteur 210 et le résultat 215 de cette soustraction est le nombre d'entrée qui sont occupées dans la file d'attente 180. Dans le présent exemple, les boîtes blanches représentent le nombre d'entrées disponibles dans la file d'attente 180 et les boîtes ombrées indiquent les entrées occupées dans la file d'attente 180. Dans l'exemple, le pointeur d'entrée 200 pointe sur l'entrée 2 et le pointeur de sortie 205 pointe sur l'entrée 6. Le résultat 215 de 6 moins 2 est que 4 entrées sont occupées à l'intérieur de la file d'attente 180. Ce résultat 215 est comparé par un comparateur 220 à un sous-ensemble fixe de la file d'attente 180, dans ce cas, 5 entrées. Puisque la file d'attente 180 comporte un nombre inférieur ou égal à 5 entrées occupées l'intérieur de celle-ci, l'adaptateur de bus 115 envoie le signal GSEQ 165, avertissant le processeur 105 qui peut accepter d'autres transactions. Si le nombre d'entrées occupées est égal au nombre total d'entrées disponibles dans la file d'attente 180, alors le signal de relance 170 est envoyé au processeur 105 pour indiquer que la file d'attente 180 est pleine. La figure 4 est un organigramme illustrant un processus de l'adaptateur de bus 115 mettant en oeuvre le signal GSEQ 65. L'adaptateur de bus 115, comme- expliqué ci-dessus en ce qui concerne les figures 2 et 3, met typiquement en oeuvre ses fonctions en utilisant des modules matériels. Toutefois, il peut également, comme alternative, mettre en oeuvre ses fonctions par logiciel ou micrologiciel. Dans le processus 225, le processeur 105 envoie une transaction d'écriture à son adaptateur de bus 115 (étape 230). L'adaptateur de bus 115 vérifie la file d'attente 180 pour déterminer si le signal GSEQ 165 doit être envoyé au processeur 105 (étape 235) . Si le signal GSEQ 165 ne peut pas être envoyé au processeur 105, le processeur peut recevoir un signal de relance 170 (étape 240) . Le processeur 105 peut alors renvoyer l'adresse 1 vers l'adaptateur de bus 115. Si le signal GSEQ 165 peut être envoyé, le processeur 105 détermine s'il s'agissait de la dernière adresse qu'il souhaitait envoyer (étape 245). S'il ne s'agit pas de la derniere adresse, le processeur 105 détermine l'adresse suivante (étape 250) et envoie l'adresse suivante à l'adaptateur de bus 115. Si la dernière adresse a été envoyée, alors le processeur attend un signal d'acquittement 175 provenant du dispositif d'E/S 140 ou de l'adaptateur de bus 145 du dispositif d'E/S (étape 255). En recevant le signal d'acquittement 175, le processeur 105 réinitialise le bit de sémaphore pour transmettre le contrôle au processeur 110 (étape ). La détermination de la "dernière adresse envoyée" peut ne pas être effectuée par le même processus couche logicielle, que celui qui envoie les écritures. Par exemple, un système d'exploitation peut interrompre et suspendre le processus d'envoi et effectuer un nouveau séquencement de ce processus sur un processeur différent. Les termes et descriptions ici utilisés sont présentés à titre d'illustration seulement et ne sont pas destinés à constituer des limitations. Les hommes de l'art comprendront qu'un grand nombre de variantes sont possibles à l'intérieur l'esprit et de la portée de l'invention telle que définie dans les revendications suivantes et leurs équivalents, dans lesquelles tous les termes doivent être compris dans leur sens le plus large possible, sauf indication contraire. REVENDICATIONS Dispositif pour écrire un postage dans des systèmes multiprocesseurs, le dispositif comprenant : (a) des adaptateurs de bus (115, comportant des ports d'entrée pour recevoir une plusieurs opérations provenant d'un ou plusieurs processeurs (105, 110) ; (b) une file d'attente (180) pour retenir des informations de la ou des opérations, dans lequel file d'attente (180) est contrôlée par les adaptateurs bus (115, 120) ; et (c) un circuit de contrôle (200, 205, couplé à la file d'attente (180), pour générer un signal de sortie (165) destiné à être transmis aux processeurs (105, 110), dans lequel le signal de sortie ) concerne l'exécution de la pluralité d'opérations. 2. Dispositif selon la revendication 1, caractérisé en ce la transaction d'écriture postée comprend à la fois un point d'engagement de mise en ordre et un point d'engagement de séquentialité. 3. Dispositif selon la revendication 1, caractérisé en ce que le signal de sortie concerne une séquence de la ou des opérations. 4. Dispositif selon la revendication 1, caractérisé en ce que le circuit de contrôle (200, 205, 210, 220) détermine le nombre d'entrées disponibles dans la file d'attente (180). 5. Dispositif selon la revendication 4, caractérisé en ce que la file d'attente (180) envoie un signal de relance aux processeurs (105, 110) s'il n'y a pas suffisamment d'entrées disponibles dans la file d'attente (180). 6. Dispositif selon la revendication 1, comprenant en outre un dispositif (140) pour transmettre un signal d'acquittement (175) aux processeurs (105, 7. Procedé pour écrire un postage dans un système multiprocesseur, le procédé comprenant étapes consistant à : (a) faire envoyer une ou plusieurs opérations par un processeur (105) ; (b) recevoir des informations dans file d'attente (180) provenant de la ou des opérations (c) exécuter les informations de la ou des opérations ; et (d) générer un signal de sortie (165) concernant l'étape d'exécution des informations. 8. Procedé selon la revendication 7, caracterisé en ce que l'étape de transmission envoie signal d'acquittement (175) au processeur (105) lors de la réception de la ou des opérations transmises. 9. Procédé selon la revendication 8, caractérisé en ce que dans l'étape de réception du signal d'acquittement (175), le processeur (105) réinitialise bit de sémaphore. . 10. Procédé selon la revendication 9, caractérisé en ce que l'étape de réinitialisation transmet le contrôle d'un processeur (105) à un autre processeur (110).