FR 2841670 A1 20040102 FR 0307662 A 20030625 PROC D ET DISPOSITIF POUR UNE COMMUNICATION D'INFORMATION ENTRE DES PROCESSEURS CONTRÈLE MUTUEL Le domaine technique concerne des mécanismes et des procédés pour des communications entre processeurs dans un système informatique à plusieurs processeurs. Des architectures informatiques avancées peuvent utiliser plusieurs processeurs. Certaines architectures informatiques avancées peuvent utiliser plusieurs processeurs sur une même puce de silicium. Dans une application usuelle, deux microprocesseurs peuvent être mis en oeuvre sur une seule puce de silicium et la mise en oeuvre peut être référencée comme un processeur à double noyau. Deux ou plusieurs des microprocesseurs peuvent fonctionner dans un mode à contrôle mutuel signifiant que chacun des microprocesseurs à contrôle mutuel traite les mêmes séquences de code et doit, par conséquent, produire des sorties identiques. La Figure 1 est un schéma d'un processeur à double noyau de l'art antérieur utilisant des techniques à contrôle mutuel pour améliorer la fiabilité globale. Sur la Figure 1, un système informatique 18 comprend un processeur à double noyau 20 possédant une seule puce de silicium 21 sur laquelle sont mis en oeuvre un noyau de microprocesseur 22 et un noyau de microprocesseur 24. Pour utiliser le contrôle mutuel, chacun des noyaux de microprocesseur 22 et 24 traite les mêmes chaînes de code. Les noyaux 22 et 24 sont couplés à un circuit logique de contrôle mutuel 26. Un évènement provoquant une perte de contrôle mutuel peut survenir sur un quelconque ou les deux noyaux de microprocesseur 22 et 24. Un exemple d'un tel évènement est une erreur de mémoire cache de données. Une perte de contrôle mutuel, si elle n'est pas rapidement corrigée, peut provoquer une "panne" ou une "invalidation" du système informatique 18. De plus, comme les noyaux de microprocesseur 22 et 24 font tourner la même séquence de code, les communications entre les noyaux de microprocesseur 22 et 24 peuvent ne pas être possibles, par définition, sans provoquer de perte de contrôle mutuel. Par exemple, le moyen usuel pour une communication entre les processeurs implique des séquences de chargement et de stockage pouvant être différentes entre deux processeurs et provoquant par conséquent une perte de contrôle mutuel. Un dispositif et un procédé correspondant pour une communication entre des processeurs à contrôle mutuel sont décrits. Le dispositif est incorporé sur deux ou plusieurs processeurs fonctionnant dans un mode de contrôle mutuel. Chacun des processeurs comprend un circuit logique de processeur pour exécuter une séquence de code, une séquence de code identique étant exécutée par le circuit logique du processeur de chacun des deux ou plusieurs processeurs, une ressource spécifique de processeur référencée par la séquence de code, la ressource spécifique de processeur comprenant une identification unique de noyau de processeur, et un multiplexeur couplé à la ressource spécifique de processeur, le multiplexeur étant commandé pour lire des données sur la base de l'identification. Un bloc logique de contrôle mutuel est couplé aux processeurs, servant à lire et à comparer la sortie de chacun des processeurs. Le circuit logique de contrôle mutuel détermine si le fonctionnement des processeurs est dans un mode de contrôle mutuel ou dans un mode de processeur indépendant. Une telle détermination peut être effectuée, par exemple, à l'aide de la mise hors fonction du circuit logique de contrôle mutuel. Le procédé correspondant pour une communication entre deux ou plusieurs processeurs à contrôle mutuel comprend la réception d'une instruction de lecture, la détermination d'une adresse de processeur associée à l'instruction de lecture, la détermination d'un ou plusieurs bits associés à l'adresse de processeur, la comparaison du ou des bits avec l'adresse de processeur afin de déterminer une position à partir de laquelle l'instruction de lecture est exécutée, et la lecture de données à partir de la position déterminée. La description détaillée fera référence aux dessins suivants sur lesquels des références numériques similaires désignent des éléments similaires et sur lesquels: la Figure 1 est un schéma d'un système informatique de l'art antérieur utilisant des processeurs à contrôle mutuel; la Figure 2 est un schéma d'un système informatique à plusieurs processeurs utilisant un traitement à contrôle mutuel selon lequel deux ou plusieurs processeurs peuvent directement communiquer; la Figure 3 illustre les caractéristiques de la Figure 2 de façon plus détaillée; la Figure 4 illustre un moyen en option pour une communication entre processeurs; et la Figure 5 est un organigramme d'un fonctionnement du système de la Figure 3. Un dispositif et un procédé correspondant pour une communication entre des processeurs dans un système informatique à plusieurs processeurs sont décrits. Le dispositif et le procédé peuvent être appliqués, de façon avantageuse, par un système informatique utilisant des processeurs à contrôle mutuel. Des processeurs à contrôle mutuel exécutent par définition des chaînes identiques de code et produisent des sorties identiques. La Figure 2 est un schéma d'un système informatique 100 comprenant un dispositif permettant à deux ou plusieurs processeurs de communiquer directement sans avoir recours à des chargements et des stockages. Le système informatique utilise un processeur 110 (noyau 0) et un processeur 120 (noyau 1). Les processeurs 110 et 120 peuvent fonctionner en mode de contrôle mutuel. Un bloc logique de contrôle mutuel 130 et une unité de bus crossbar ou d'arbitrage 140 sont couplés aux processeurs 110 et 120 pour commander des communications avec le reste du système 100. Un multiplexeur 112, un bus circulaire 116 et un registre machine spécifique à lecture seule (MSR) 118 sont associés au processeur 110. Le bus 116 est couplé avec le bloc logique de contrôle mutuel 130 par l'intermédiaire de l'interface 114. Un multiplexeur 122, un bus circulaire 126 et un MSR à lecture seule 128 sont associés au processeur 120. Les MSRs 118 et 128 et les multiplexeurs 112 et 122 constituent un moyen de transfert de données. Le bus 126 est couplé au bloc logique de contrôle mutuel 130 par l'intermédiaire de l'interface 124. Le bloc logique de contrôle mutuel 130 effectue divers contrôles pour s'assurer que les processeurs 110 et 120 fonctionnent en mode de contrôle mutuel lorsque le fonctionnement à contrôle mutuel est le mode désiré de fonctionnement. Un commutateur crossbar 140 est couplé, de même, aux processeurs 110 et 120, mappant un port d'entrée arbitraire sur un quelconque port de sortie arbitraire. L'agencement des composants illustrés sur la Figure 2 est fourni à titre d'exemple seulement et n'implique pas qu'un composant spécifique doive être positionné de la façon illustrée. Par exemple, les MSRs 118 et 128 sont illustrés comme faisant partie respectivement des processeurs 110 et 120. Cependant, les MSRs 118 et 128 peuvent être situés à l'extérieur des noyaux 0 et 1. De plus, les processeurs 110 et 120, les multiplexeurs 112 et 122 et le bloc logique de contrôle mutuel 130 peuvent être tous situés sur une unique puce de silicium. Les processeurs 110 et 120 peuvent devoir à l'occasion communiquer de façon directe. Cependant, des moyens usuels de communication (par exemple, utilisant des instructions de chargement et de stockage) provoqueront une perte de fonctionnement en contrôle mutuel. Pour permettre une communication de processeur à processeur sans provoquer de perte de contrôle mutuel, des moyens de communication peuvent être ajoutés au système 100 illustré sur la Figure 2. De tels moyens de communication incorporeront les bases circulaires 116 et 126. L'utilisation des moyens de communication établit une connexion logique entre les processeurs 110 et 120 de telle façon qu'un processeur 110 puisse lire des données pour l'autre processeur 120 à l'aide d'une simple séquence de code. L'utilisation d'un mode de mise en oeuvre des moyens de communication est illustrée sur la Figure 3. Sur la Figure 3, l'interface 114 pour le noyau 0 écrit des données dans un MSR (600) 134 et reçoit des données d'un multiplexeur 132. De la même façon, l'interface 124 pour le noyau 1 écrit des données dans le MSR (600) 138 et lit des données à partir du multiplexeur 136. Selon un mode de mise en oeuvre, un bit le moins significatif (lsb) de l'adresse MSR est utilisé pour déterminer de quel processeur (110 ou 120) proviennent les données de lecture. Un "0" renvoie les données du processeur "propriétaire" tandis qu'un '1 renvoie les données de l'autre processeur. Cela permet des communications entre les processeurs 110 et 120 à l'aide d'une séquence de code comme: - écriture de données dans MSR [OX600] - lecture des données à partir de MSR [OX601]. De façon plus spécifique, si le multiplexeur 132 et le multiplexeur 136 reçoivent le "0", le processeur 110 recevra (lira) alors les données à partir du MSR (600) 134 et le processeur 120 lira les données à partir du MSR (600) 138. Si les multiplexeurs 132 et 138 reçoivent le "1", le processeur 110 lira alors les données à partir du MSR 138 et le processeur 120 lira les données à partir du MSR 134. Ainsi, en commandant les multiplexeurs 132 et 136, une communication entre les processeurs 110 et 120 est possible sans perte de contrôle mutuel. Comme seul un bit est utilisé, la technique peut être utilisée sur un nombre arbitraire de paires de registres et peut être étendue à plus de deux processeurs à l'aide d'un plus grand nombre de bits d'ordre inférieur dans l'adresse du MSR. Ainsi, en fonctionnement, à la fois le processeur et le processeur 120 peuvent écrire des valeurs en sortie et les deux processeurs 110 et 120 peuvent lire ce que l'autre processeur a écrit. Dans le mode de mise en oeuvre illustré sur la Figure 3, tous les composants sont situés à l'intérieur du bloc logique de contrôle mutuel 130. Cependant, un ou plusieurs des composants peut être situé à l'extérieur du bloc logique de contrôle mutuel 130 tout en restant couplé via soit le bus circulaire 116, soit le bus circulaire 126. Comme option à la configuration illustrée sur la Figure 3, d'autres composants peuvent être utilisés comme partie des moyens de communication entre les processeurs 110 et 120. Par exemple, à la place des MSRs 134 et 138, le bloc logique de contrôle mutuel 130 peut utiliser des ressources programmables ou des ressources câblées non programmables. La Figure 3 illustre une configuration autorisant des communications de lecture entre des processeurs à contrôle mutuel. La Figure 4 illustre une configuration autorisant des communications d'écriture entre des processeurs à contrôle mutuel sans provoquer de perte de contrôle mutuel. La configuration illustrée sur la Figure 4 est identique à celle de la Figure 3 à l'exception du fait que les multiplexeurs 142 et 146 du côté écriture remplacent les fonctions des multiplexeurs 132 et 136 de la Figure 3 du côté lecture. La Figure 5 est un organigramme illustrant une opération de communication entre processeurs 200 des moyens de communication de la Figure 3. Sur la Figure 5, l'opération 200 commence au pavé 205. Au pavé 210, une opération de lecture est spécifiée avec une adresse du processeur spécifiée comme faisant partie de l'opération de lecture. Le processeur spécifique peut être identifié en comparant un ou plusieurs bits de l'adresse avec les adresses des processeurs 110 et 120 au pavé 215. Par exemple, le bit le moins significatif (lsb) peut être utilisé. En considérant que le lsb de l'adresse est "0", le processeur 110 lit les données à partir du MSR (600) 134 et le processeur 120 lit les données à partir du MSR (600) 138 au pavé 220. Au pavé 225, l'opération 200 se termine. Les termes et descriptifs utilisés dans notre cas sont établis à titre d'illustration seulement et ne sont pas considérés comme étant des limitations. L'homme du métier constatera que de nombreuses variantes sont possibles dans l'esprit et le cadre de l'invention tels que définis par les revendications annexées et leurs équivalents, tous les termes devant être considérés dans leur sens le plus large possible sauf mention contraire. On précise que: - La ressource spécifique au processeur du dispositif selon l'invention: / peut comprendre un registre programmable, / peut être câblée sur une valeur unique de processeur. - Le multiplexeur du dispositif selon l'invention peut se trouver sur le côté lecture du processeur. - La position déterminée par le procédé selon l'invention peut être une ressource spécifique au processeur. REVENDICATIONS 1. Dispositif pour une communication entre des processeurs à contrôle mutuel, caractérisé en ce qu'il comprend: - deux ou plusieurs processeurs (110, 120) fonctionnant dans un mode de contrôle mutuel selon lequel chacun des deux ou plusieurs processeurs comprend un circuit logique de processeur pour exécuter une séquence de code, une séquence identique de code étant exécutée par le circuit logique de processeur de chacun des deux ou plusieurs processeurs; et - un bloc logique de contrôle mutuel (130) prévu pour lire et comparer la sortie de chacun des deux ou plusieurs processeurs, le bloc logique de contrôle mutuel comprenant: une ressource spécifique au processeur (134, 138) référencée par la séquence de code; et - un multiplexeur (132, 136) couplé à la ressource spécifique au processeur, le multiplexeur étant commandé pour lire des données sur la base d'une identification de la ressource spécifique au processeur. 2. Dispositif selon la revendication 1, caractérisé en ce que la ressource spécifique au processeur est un registre à lecture seule spécifique à la machine (MSR). 3. Dispositif selon la revendication 1, caractérisé en ce que la ressource spécifique au processeur comprend un registre programmable. 4. Dispositif selon la revendication 1, caractérisé en ce que la ressource spécifique au processeur est câblée sur une valeur unique de processeur. 5. Dispositif selon la revendication 1, caractérisé en ce que le multiplexeur se trouve sur le côté lecture du processeur. 6. Procédé de communication entre des processeurs fonctionnant en mode de contrôle mutuel, caractérisé en ce qu'il comprend: - la réception (210) d'une instruction de lecture; - la détermination (215) d'une adresse de processeur associée à l'instruction de lecture; - la détermination (215) d'un ou plusieurs bits associés à l'adresse de processeur; - la comparaison (215) du ou des bits déterminés avec l'adresse du processeur pour déterminer une position à partir de laquelle l'instruction de lecture est exécutée; et - la lecture de données (220) à partir de la position déterminée. 7. Procédé selon la revendication 6, caractérisé en ce que la position déterminée est une ressource spécifique au processeur. 8. Procédé selon la revendication 7, caractérisé en ce que la ressource spécifique au processeur est un registre à lecture seule spécifique à la machine (MSR). 9. Procédé selon la revendication 8, caractérisé en ce qu'il comprend, de plus, l'exécution d'une séquence de code provoquant la lecture de l'adresse de processeur à partir du MSR. 10. Procédé selon la revendication 6, caractérisé en ce que la ressource spécifique au processeur comprend un registre programmable.