Brevet FR2870613A1 — publié le 20051125

VERIFICATION DE SYNCHRONISME HORS PUCE Contexte La présente invention concerne la conception de microprocesseur et, plus particulièrement, des techniques destinées à mettre en oeuvre un verrouillage de microprocesseur. Les rayons cosmiques ou les particules alphas qui heurtent un dispositif à base de silicium, tel qu'un microprocesseur, peuvent amener un noeud arbitraire dans le dispositif à changer d'état de manières imprévisibles, induisant de ce fait ce qui est désigné comme une erreur douce . Les microprocesseurs et autres dispositifs à base de silicium deviennent de plus en plus sujets aux erreurs douces puisque ces dispositifs réduisent en taille. Les erreurs douces sont de nature transitoire et peuvent ou non amener le dispositif à mal fonctionner si elles ne sont pas détectées et/ou corrigées. Une erreur douce non corrigée et non détectée peut, par exemple, amener un emplacement mémoire à contenir une valeur incorrecte qui peut, à son tour, amener le microprocesseur à exécuter une instruction incorrecte ou à agir sur des données incorrectes. Une réponse aux erreurs douces a été d'ajouter du matériel aux microprocesseurs pour détecter les erreurs douces et les corriger, si possible. Diverses techniques ont été utilisées pour réaliser de telles détection et correction, par exemple, ajouter des fonctions de vérification de parité aux caches du processeur. Ces techniques, cependant, sont meilleures dans la détection et la correction d'erreurs dans des réseaux de mémoire et ne sont pas bien adaptées pour détecter et corriger les erreurs douces dans la logique de commande arbitraire, les chemins de données 2870613 2 d'exécution ou les verrous dans un microprocesseur. En outre, ajouter des circuits pour mettre en oeuvre ces techniques peut ajouter considérablement à la taille et au coût de fabrication du microprocesseur. Une technique qui a été utilisée pour protéger la logique de commande arbitraire et les chemins de données d'exécution associés est d'exécuter le même flot d'instruction sur deux processeurs ou plus en parallèle. Ces processeurs sont réputés pour exécuter deux copies du flot d'instruction en synchronisme et, par conséquent, sont appelés des processeurs à synchronisme . Lorsque le microprocesseur fonctionne correctement (c'està-dire en l'absence d'erreurs douces), tous les processeurs à synchronisme doivent obtenir les mêmes résultats cars ils exécutent le même flot d'instruction. Une erreur douce introduite dans un processeur, cependant, peut amener les résultats produits par ce processeur à être différents des résultats produits par les autres processeurs. Ces systèmes, par conséquent, tentent de détecter des erreurs douces en comparant les résultats produits par les processeurs à synchronisme après que chaque instruction ou jeu d'instructions est exécuté en synchronisme. Si les résultats produits par un quelconque des processeurs sont différents des résultats produits par les autres processeurs, une erreur est déclenchée ou une autre mesure correctrice est prise. Etant donné que les processeurs à synchronisme exécutent des flots d'instructions redondants, les systèmes à synchronisme sont réputés pour réaliser une vérification de redondance fonctionnelle . Une difficulté dans la mise en oeuvre de le synchronisme qu'il peut être difficile de fournir des signaux d'horloge qui soient précisément en phase les 2870613 3 uns avec les autres et qui partagent exactement la même fréquence à une pluralité de microprocesseurs. Par conséquent, des processeurs à étape verrouillée peuvent manquer de synchronisme en raison de différences temporelles même s'ils fonctionnent correctement autrement. Dans des conceptions de performance supérieure qui utilisent des interfaces asynchrones, conserver deux processeurs différents dans deux emplacements différents sur le même cycle d'horloge peut être encore plus difficile. Les premiers processeurs, comme de nombreux processeurs existants, comprenaient un seul coeur de processeur. Un processeur à coeur multiple , en revanche, peut comprendre un ou plusieurs coeurs de processeur sur une seule puce. Un processeur à coeur multiple se comporte comme s'il s'agissait de processeurs multiples. Chacun des coeurs de processeur multiple peut fonctionner essentiellement de manière indépendante, tout en partageant certaines ressources communes, telles qu'une mémoire cache ou une interface système. Les processeurs à coeur multiple offrent par conséquent des opportunités supplémentaires pour une efficacité de traitement accrue. Dans certains systèmes existants, des coeurs multiples dans un seul microprocesseur peuvent fonctionner en synchronisme les uns par rapports aux autres. Résumé Un système est proposé qui comprend un microprocesseur comprenant une première unité de traitement pour générer un premier signal de sortie et une deuxième unité de traitement pour générer un deuxième signal de sortie, et des moyens de comparaison, couplés au microprocesseur, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie. Le système peut présenter les caractéristiques suivantes. la première unité de traitement comprend un premier coeur de microprocesseur et la deuxième unité de traitement comprend un deuxième coeur de microprocesseur, le microprocesseur est installé dans un emplacement, et les moyens de comparaison ne sont pas installés dans l'emplacement, 15. le microprocesseur comprend en outre: une logique de synchronisme comprenant des entrées couplées aux première et deuxième unités de traitement, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie, le microprocesseur comprend en outre: une structure de commutation pour transmettre les premier et deuxième signaux de sortie vers les moyens de comparaison, la structure de commutation comprend une commutation crossbar, la structure de commutation comprend un premier port source pour recevoir le premier signal de sortie, un deuxième port source pour recevoir le deuxième signal de sortie, le premier port source fonctionne à une première fréquence et le deuxième port source fonctionne à une deuxième fréquence qui diffère de la première fréquence, 2870613 5 la première unité de traitement est cadencée par une première horloge présentant une troisième fréquence qui est différente de la première fréquence, le système comprend en outre des moyens de changement de port pour recevoir le deuxième signal de sortie et modifier une destination spécifiée dans celui-ci pour produire un deuxième signal de sortie modifié, et la structure de commutation comprend un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie modifié, 15. la structure de commutation comprend un premier port de destination et un deuxième port de destination, le premier signal de sortie spécifie le premier port de destination comme une destination, le deuxième signal de sortie spécifie le premier port de destination comme une destination, et le deuxième signal de sortie modifié spécifie le deuxième port de destination comme destination. L'invention se rapporte également à un système 25 comprenant: un microprocesseur, installé dans un emplacement, comprenant un premier coeur de microprocesseur pour générer un premier signal de sortie et un deuxième coeur de microprocesseur pour générer un signal de sortie; 30 une logique de synchronisme comprenant des entrées couplées aux premier et deuxième coeurs de microprocesseur, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; des moyens de comparaison, couplés au 35 microprocesseur et non installé dans l'emplacement, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; une commutation crossbar pour transmettre les premier et deuxième signaux de sortie vers les moyens 5 de comparaison; et des moyens de changement de port pour recevoir le deuxième signal de sortie et modifier une destination spécifiée dans celui-ci pour produire un deuxième signal de sortie modifié, dans lequel la commutation crossbar comprend un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie modifié. L'invention se rapporte également à un procédé 15 comprenant les étapes consistant à : (A) dans une première unité de traitement d'un microprocesseur, générer un premier signal de sortie; (B) dans une deuxième unité de traitement du microprocesseur, générer un deuxième signal de sortie; (C) fournir les premier et deuxième signaux de sortie aux moyens de comparaisons placés à l'extérieur du microprocesseur; et (D) au niveau des moyens de comparaison, détecter si le premier signal de sortie est différent du 25 deuxième signal de sortie. Le procédé peut présenter les caractéristiques suivantes. la première unité de traitement comprend un 30 premier coeur de microprocesseur et la deuxième unité de traitement comprend un deuxième coeur de microprocesseur, le procédé comprend en outre les étapes 35 consistant à : (E) avant l'étape (C), fournir les premier et deuxième signaux de sortie à la logique de synchronisme dans le microprocesseur; et (F) au niveau de la logique de synchronisme, 5 détecter si le premier signal de sortie est différent du deuxième signal de sortie, le procédé comprend en outre les étapes consistant à : (G) après l'étape (F), modifier une destination spécifiée par le deuxième signal de sortie; et (H) transmettre le deuxième signal de sortie à la destination modifiée, le procédé comprend en outre les étapes consistant à : (E) avant l'étape (C), modifier une destination du deuxième signal de sortie, 20. le procédé comprend les étapes consistant à : (A) dans un premier coeur d'un microprocesseur, générer un premier signal de sortie; (B) dans un deuxième coeur du microprocesseur, générer un deuxième signal de sortie; (C) fournir les premier et deuxième signaux de sortie aux moyens de comparaison placés à l'extérieur du microprocesseur; (D) au niveau des moyens de comparaison, détecter si le premier signal de sortie est différent du 30 deuxième signal de sortie; (E) avant l'étape (C), fournir les premier et deuxième signaux de sortie à la logique de synchronisme dans le microprocesseur; (F) au niveau de la logique de synchronisme, détecter si le premier signal de sortie est différent du deuxième signal de sortie; (G) après l'étape (F), modifier une destination 5 spécifiée par le deuxième signal de sortie; et (H) transmettre le deuxième signal de sortie vers la destination modifiée. L'invention se rapporte également à un circuit 10 intégré comprenant: une première unité de traitement pour générer un premier signal de sortie spécifiant une première destination une deuxième unité de traitement pour générer un 15 deuxième signal de sortie spécifiant la première destination une logique de synchronisme couplée aux première et deuxième unités de traitement pour détecter si le premier signal de sortie est différent du deuxième 20 signal de sortie; des moyens de changement de port pour modifier le deuxième signal de sortie pour spécifier une deuxième destination des premiers moyens pour fournir le premier signal 25 de sortie à la première destination; et des deuxièmes moyens pour fournir le deuxième signal de sortie à la deuxième destination. Le circuit peut présenter les caractéristiques 30 suivantes le circuit comprend en outre: une structure de commutation comprenant les premiers moyens pour fournir et les deuxièmes moyens pour fournir, la structure de commutation comprend un premier port de destination et un deuxième port de destination, la première destination comprend le premier port de destination et la deuxième destination comprend le deuxième port de destination, la structure de commutation comprend une commutation crossbar, 10. les premiers moyens pour fournir comprennent un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie, le premier port source fonctionne à une première fréquence et le deuxième port source fonctionne à une deuxième fréquence qui est différente de la première fréquence, la première unité de traitement est cadencée par une première horloge présentant une troisième fréquence 20 qui est différente de la première fréquence, la première unité de traitement comprend un premier coeur de microprocesseur et la deuxième unité de traitement comprend un deuxième coeur de 25 microprocesseur, le circuit intégré comprend: une première unité de traitement pour générer un premier signal de sortie spécifiant un premier port de 30 destination; une deuxième unité de traitement pour générer un deuxième signal de sortie spécifiant le premier port de destination; une logique de synchronisme couplée aux première 35 et deuxième unités de traitement pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; des moyens de changement de port pour modifier le deuxième signal de sortie pour spécifier une deuxième 5 destination; et une commutation crossbar comprenant: le premier port de destination; le deuxième port de destination; et des premiers moyens pour fournir le premier signal de sortie au premier port de destination et des deuxièmes moyens pour fournir le deuxième signal de sortie au deuxième port de destination. L'invention concerne en outre un procédé 15 comprenant les étapes consistant à : (A) recevoir un premier signal de sortie provenant d'un premier coeur de microprocesseur dans un microprocesseur; (B) recevoir un deuxième signal de sortie 20 provenant d'un deuxième coeur de microprocesseur dans le microprocesseur; (C) déterminer si le premier signal de sortie diffère du deuxième signal de sortie; (D) transmettre le premier signal de sortie à un premier port source d'une structure de système; (E) identifier un premier port de destination spécifié par le deuxième signal de sortie; (F) modifier le deuxième signal de sortie pour spécifier un deuxième port de destination qui est 30 différent du premier port de destination; et (G) transmettre le deuxième signal de sortie modifié vers un deuxième port source de la structure de système. Le procédé peut présenter les caractéristiques suivantes. le procédé comprend en outre les étapes consistant à . (H) au niveau de la structure du système, transmettre le premier signal de sortie vers le premier port de destination; et (I) au niveau de la structure du système, transmettre le deuxième signal de sortie modifié vers 10 le deuxième port de destination, le procédé comprend en outre les étapes consistant à : (H) recevoir le premier signal de sortie et le deuxième signal de sortie modifié au niveau des moyens de comparaison placés à l'extérieur du microprocesseur; et (I) au niveau des moyens de comparaison, déterminer si le premier signal est différent du 20 deuxième signal de sortie modifié, la structure de commutation comprend un port de commutation crossbar, 25. le premier port source fonctionne à une première fréquence qui est différente d'une deuxième fréquence à laquelle le deuxième port source fonctionne, le premier coeur de microprocesseur est cadencé par une première horloge présentant une première fréquence et le premier port source fonctionne à une deuxième fréquence qui est différente de la première fréquence, 2870613 12 le microprocesseur comprend une logique de synchronisme, et les étapes (A) à (C) sont réalisées par la logique de synchronisme. L'invention se rapporte également à un procédé comprenant les étapes consistant à : (A) dans un microprocesseur, recevoir un premier signal de sortie provenant d'un premier coeur du microprocesseur; (B) dans le microprocesseur, recevoir un deuxième signal de sortie provenant d'un coeur du microprocesseur; (C) dans le microprocesseur, déterminer si le premier signal de sortie est différent du deuxième 15 signal de sortie; (D) transmettre le premier signal de sortie vers un premier port source d'une commutation crossbar; (E) identifier un premier port de destination spécifié par le deuxième signal de sortie; (F) modifier le deuxième signal de sortie pour spécifier un deuxième port de destination qui est différent du premier port de destination; et (G) transmettre le deuxième signal de sortie modifié vers un deuxième port source de la commutation 25 crossbar; (H) au niveau de la commutation crossbar, transmettre le premier signal de sortie vers le premier port de destination; (I) au niveau de la commutation crossbar, 30 transmettre le deuxième signal de sortie modifié vers le deuxième port de destination; (J) recevoir le premier signal de sortie et le deuxième signal de sortie modifié au niveau de moyens de comparaison placés à l'extérieur du microprocesseur; et 2870613 13 (K) au niveau des moyens de comparaison, déterminer si le premier signal de sortie est différent du deuxième signal de sortie modifié. D'autres caractéristiques et avantages de différents aspects et modes de réalisation de la présente invention ressortiront de la description suivante et des revendications. Brève description des dessins La figure 1 est un schéma de principe d'un système pour utiliser des coeurs de processeur multiples en synchronisme selon un mode de réalisation de la présente invention; la figure 2 est un organigramme d'un procédé réalisé par le système de la figure 1 selon un mode de 15 réalisation de la présente invention; la figure 3 est un schéma de principe illustrant le microprocesseur de la figure 1 de manière plus détaillée selon un mode de réalisation de la présente invention; la figure 4A est un schéma de principe illustrant le microprocesseur de la figure 1 selon un mode de réalisation de la présente invention;et la figure 4B est un schéma d'une variante de mode de réalisation des circuits du coeur illustrés sur la 25 figure 4A. Description détaillée Se rapportant à la figure 1, un schéma de principe est représenté d'un système 100 pour utiliser des coeurs de microprocesseur multiples 102a-b en synchronisme selon un mode de réalisation de la présente invention. Les coeurs 102a-b sont des composants d'un microprocesseur 104, qui peuvent comprendre des coeurs supplémentaires (non représentés sur la figure 1 pour une facilité d'illustration). Se rapportant à la figure 2, un organigramme est représenté d'un procédé qui est réalisé par le système 100 de la figure 1 selon un mode de réalisation de la présente invention. Le microprocesseur 104 comprend également une commutation crossbar sur puce 108. Comme cela est bien connu de l'homme du métier, une commutation crossbar peut comprendre une pluralité de ports source et une pluralité de ports de destination et peut établir une connexion entre un quelconque port source et un quelconque port de destination. En outre, il peut exister un nombre quelconque de ces connexions actives simultanément dans la commutation crossbar. Dans le mode de réalisation illustré sur la figure 1, la commutation crossbar 108 comprend deux ports source 126a-b et deux ports de destination 112a-b. Les ports de destination 112a-b sont à leur tour connectées à des liaisons 110a-b, qui peuvent être connectées à des dispositifs externes, tels que des contrôleurs mémoires ou d'autres processeurs ou coeurs de processeurs (non représentés). Des ports et liaisons supplémentaires sont omis sur la figure 1 pour une facilité d'illustration et d'explication. Les liaisons 110a-b comprennent à la fois des chemins de transmission sortante 136a-b et des chemins de transmission entrante 138a-b, respectivement. Lorsqu'un composant dans le microprocesseur 104 (tel qu'un des coeurs 102a-b) fournit un paquet à un des ports source 126a-b pour une transmission sur une des liaisons 110a-b, le paquet comprend un en-tête qui spécifie le port de destination (et de ce fait le dispositif cible) auquel le paquet est adressé. En réponse à la réception d'un paquet au niveau d'un port source, la commutation crossbar 108 établit une 2870613 15 connexion interne entre le port source au niveau duquel le paquet est reçu et le port de destination, et transfère le paquet vers le port de destination spécifié. Le paquet est ensuite transmis sur celle correspondante des liaisons 110a-b (sur un des chemins de transmission sortante 136a-b) vers le dispositif cible spécifié. Le microprocesseur 104 comprend une logique de synchronisme sur puce 106, qui peut réaliser une vérification de synchronisme sur les sorties des coeurs 102a-b. Le système 100 peut fonctionner en synchronisme, dans lequel la logique de synchronisme 106 réalise la vérification de verrouillage sur les sorties des coeurs 102a-b, ou en mode non rigide, dans lequel les coeurs 102a-b exécutent des flots d'instruction distincts, non vérifiés par la logique de synchronisme 106. Des exemples de techniques qui peuvent être utilisés par la logique de synchronisme 106 pour fonctionner en mode non rigide sont décrits dans la demande de brevet en référence ci-dessus intitulée Core- Level Processor Lockstepping ( Etape de verrouillage de processeur de niveau coeur ) et par conséquent, ne sont pas décrits de manière détaillée dans la présente. Etant donné que la logique de synchronisme 106 réalise la vérification de synchronisme sur les sorties des coeurs 102a-b avant que ces sorties soient fournies à la commutation crossbar 108, les erreurs qui sont introduites au niveau des points suivants dans les chemins de données de sortie de coeur peuvent rester non détectées. Par exemple, les erreurs qui sont introduites dans la commutation crossbar 108 ou les liaisons 110a-b peuvent rester non détectées. Pour s'attaquer à ce problème, des exemples de techniques sont maintenant décrits pour réaliser une vérification 2870613 16 de synchronisme externe sur les sorties des coeurs 102a-b. Considérons le fonctionnement du système 100 en synchronisme. Les coeurs 102a-b sont couplés par les lignes 114a-b à la logique de synchronisme 106. Les coeurs 102a-b génèrent une sortie, sous la forme de signaux de commande/données transmis sur les lignes 114a-b. La logique de synchronisme 106 reçoit les sorties en provenance des coeurs 102a-b (étape 202). La logique de synchronisme 106 compare les sorties des coeurs 102a-b les unes par rapport aux autres et détermine si elles sont égales les unes aux autres (étape 204). Si les signaux ne sont pas égaux les uns aux autres, la logique de synchronisme 106 entre en mode d'erreur rigide dans lequel la logique de synchronisme 106 peut tenter de récupérer de l'erreur rigide et/ou signaler une erreur fatale (étape 206). Des exemples de techniques qui peuvent être utilisées par la logique de synchronisme 106 pour fonctionner en mode d'erreur rigide sont décrits de manière détaillée dans la demande de brevet en référence ci-dessus, intitulé Core-Level Processor Lockstepping . Si les signaux de sortie de coeur sont égaux les uns aux autres, la logique de synchronisme 106 transfère les signaux de sortie de coeur sur les lignes 132a-b, respectivement (étape 208). Il est à noter, cependant, qu'étant donné que les coeurs 102a-b exécutent le même flot d'instructions lorsque le système 100 fonctionne en synchronisme, les paquets transmis par les c urs 102a-b sur les lignes 132a-b spécifient le même parmi les ports des destinations 112a-b. Si ces paquets de sortie sont simplement retransmis vers les ports source 126a-b de la commutation 108, la commutation crossbar 108 a besoin d'arbitrer entre les sorties des deux coeurs 102a-b et 2870613 17 transmettre un paquet de manière séquentielle après l'autre à travers à travers le port de destination 112a. En conséquence d'une telle transmission séquentielle, les sorties des coeurs 102a-b ne sont plus synchrones les unes avec les autres, éventuellement à un degré croissant dans le temps. Un tel manque de synchronie peut amener la logique de synchronisme 106 pour signaler une erreur rigide même si les deux coeurs 102a-b produisent une sortie présentant le même contenu, simplement parce que les sorties sont décalées dans le temps les unes par rapport aux autres. A la place, dans le mode de réalisation illustré sur la figure 1, le microprocesseur 104 comprend une logique de changement de port 130 couplée entre la logique de synchronisme 106 et le port source 126b de la commutation crossbar 108. Supposons, à des fins d'exemple, que les sorties des deux coeurs 102a-b spécifient le port de destination 112a. Si la logique de synchronisme 106 détermine que les sorties des coeurs 102a-b sont égales les unes aux autres, la logique de synchronisme 106 retransmet la sortie du coeur 102a (reçue sur la ligne 114a) sur la ligne 132a vers le port source 126a (étape 210). La sortie du c ur 102a est de ce fait transmise au port source 126a et à travers la commutation crossbar 108 vers le port de destination 112a, puis sur la liaison 110a (étape 212). De même, la logique de synchronisme 106 transfère la sortie du c ur 102b (reçue sur la ligne 114b) sur la ligne 132b, où la sortie est reçue par la logique de changement de port 130. La logique de changement de port 130 modifie l'en-tête dans le paquet qu'elle reçoit pour spécifier un port de destination autre que le port 112a (étape 214). Supposons, aux fins de la description suivante que la logique de changement de port 130 change le port de destination au port 112b. La 2870613 18 logique de changement de port 130 transmet le paquet de sortie modifié sur la ligne 134 au port source 126b (étape 216) et à travers la commutation crossbar 108 jusqu'au port de destination 112b, puis sur la liaison 110b (étape 218). Dans le mode de réalisation illustré sur la figure 1, les paquets reçus sur les liaisons 110a-b et transférés vers les ports 126a-b sont transférés directement vers les coeurs correspondants 102a-b, sans l'intervention de la logique de synchronisme 106. Le besoin de vérifier le synchronisme n'a pas besoin d'être réalisé sur ces chemins entrants car une quelconque mauvaise correspondance de synchronisme entre les entrées fournies aux coeurs 102a-b se propage finalement aux sorties des coeurs 102a-b et est identifiée de ce fait par la logique de synchronisme 106. La vérification de synchronisme peut, néanmoins, être réalisée sur les entrées reçues sur les liaisons 110a-b, si nécessaire. Comme cela est maintenant décrit de manière plus détaillée, la transmission des sorties des coeurs 102a-b sur les liaisons 110a-b permet aux sorties d'être vérifiées les unes par rapport aux autres de nouveau après qu'elles ont été transmises hors puce sur les liaisons 110a-110b, protégeant de ce fait contre les erreurs qui peuvent se produire sur les liaisons 110a-b elles-mêmes. En l'absence d'une telle vérification, il est possible que des erreurs puissent être introduites entre la logique de synchronisme 106 et les dispositifs cible spécifiés. Généralement, les liaisons 110a-b sont couplées à une autre commutation crossbar (non représentée) ou une certaine autre partie de la structure du système. Le système 100, cependant, comprend une logique de vérification de liaison 140, placée de manière externe 2870613 19 au microprocesseur 104. La logique de vérification de liaison 140 est couplée aux liaisons 110a-b, respectivement. Etant donné que les sorties des coeurs 102a-b sont transmises sur les liaisons 110a-b, respectivement, lorsque le système 100 fonctionne en synchronisme, la logique de vérification de liaison 140 reçoit les sorties des coeurs 102a-b lorsque le système 100 fonctionne en synchronisme (étape 220). La logique de vérification de liaison 140 peut vérifier que les sorties des coeurs 102a-b sont égales les unes aux autres d'une manière identique ou similaire à la logique de synchronisme 106 (étape 222). Contrairement à la logique de synchronisme 106, cependant, la logique de vérification de liaison 140 est placée de manière externe au microprocesseur 104 et peut, par exemple, être placée sur une puce distincte. La logique de vérification de liaison 140 peut, par conséquent, identifier des erreurs rigides qui n'étaient pas présentes, et par conséquent, non détectables, au point de la logique de synchronisme 106, mais qui ont été introduites après la logique de synchronisme 106 (ex. : dans la commutation crossbar 108 ou les liaisons 110a-b). Si la logique de vérification de liaison 140 détermine que les sorties de coeur reçues sur les liaisons 110a-b sont égales les unes aux autres, la logique de vérification de liaison 140 transmet une des sorties de coeur sur la connexion 142 vers le dispositif cible spécifié (étape 226). La connexion 142 peut, par exemple, être une autre liaison couplée à une autre commutation crossbar (non représentée), à travers laquelle la sortie de coeur peut être transmise vers le dispositif cible. Si la logique de vérification de liaison 140 35 détermine que les sorties de coeur reçues sur les 2870613 20 liaisons 110a-b ne sont pas égales les unes aux autres, la logique de vérification de liaison 140 peut prendre une quelconque mesure appropriée en réaction, telle que de tenter de récupérer de l'erreur ou signaler une erreur de synchronisme à la logique de synchronisme 106 (étape 224). Des exemples de techniques qui peuvent être utilisées pour tenter de récupérer d'une erreur rigide sont décrits de manière plus détaillée dans la demande de brevet en référence cidessus, intitulée Core-Level Lockstep Processor Lockstepping . Dans le mode de réalisation illustré sur la figure 1, lorsqu'un paquet entrant est reçu par la logique de vérification de liaison 140 sur la connexion 142, la logique de vérification de liaison 140 duplique le paquet et le transmet sur les deux chemins de transmission entrants 138ab. Les paquets entrants transmis de ce fait aux ports de commutation crossbar 112a-b peuvent ensuite être transférés par le port de commutation crossbar 108 vers les coeurs 102a-b sur les lignes 118a- b en utilisant des techniques conventionnelles. En transmettant la sortie des coeurs 102a-b sur la connexion unique 142, et en dupliquant des paquets entrants sur la connexion 142 vers les deux coeurs 102a- b, la logique de vérification de liaison 140 permet à des dispositifs externes de communiquer avec les coeurs 102a-b sur la connexion unique 142, comme si les coeurs 102a-b étaient un seul coeur de processeur. La logique de vérification de liaison 140 fournit de ce fait une vérification de synchronisme hors puce, tout en permettant à des dispositifs externes de continuer de communiquer avec le microprocesseur 104 comme s'il contenait un seul coeur de processeur. Il est à noter que le système 100 de la figure 1 35 peut être modifié pour fonctionner en mode de 2870613 21 fonctionnement non rigide. Par exemple, la logique de vérification de liaison 140 peut comprendre une connexion externe supplémentaire (non représentée), similaire à la connexion 142. Lorsque le système 100 fonctionne en mode non rigide, la logique de vérification de liaison 140 peut relayer les paquets entrants et sortants entre les liaisons 110a-b et les deux connexions externes, sans réaliser de vérification en synchronisme. Les coeurs 102a-b peuvent, par conséquent, communiquer de manière indépendante avec des dispositifs externes lorsque le système 100 fonctionne en mode non rigide. L'homme du métier appréciera comment réaliser ceci et d'autres modifications pour permettre au système 100 de fonctionner en mode de fonctionnement non rigide. La logique de vérification de liaison 140 peut réaliser des fonctions autres que de réaliser la vérification de synchronisme. Plus généralement, par exemple, la logique de vérification de liaison 140 peut servir d'interface entre le microprocesseur 104 et les composants externes. Il peut, par exemple, convertir la sortie reçue sur les chemins de transmission 136a-b à partir du protocole interne utilisé sur les liaisons 110a-b en un protocole externe adapté pour la communication avec les composants externes, tel qu'un protocole de mise en réseau tel que TCP/IP. La description ci-dessus indique que les sorties des coeurs 102a-b sont traitées par la logique de synchronisme 106 et transférées sur les liaisons 110a-b vers la logique de vérification de liaison 140. Toutes les sorties des coeurs 102a-b, cependant, n'ont pas besoin d'être transmises sur les liaisons 110a-b. Par exemple, des requêtes d'accès mémoire peuvent être fournies à des contrôleurs de mémoire (non représentés) sans transmettre ces requêtes sur les liaisons 110a-b. 2870613 22 Les contrôleurs de mémoire, qui peuvent comprendre à la fois des contrôleurs de mémoire sur puce et hors puce, peuvent traiter ces requêtes à l'aide de techniques qui sont bien connues de l'homme du métier. Dans un tel mode de réalisation, les requêtes autres que les requêtes d'accès mémoire (telles que des requêtes E/S) peuvent être transmises sur les liaisons 110a-b et traitées par la logique de vérification de liaison de la manière décrite ci-dessus. Ayant décrit le fonctionnement du système 100 en général, le système 100 est maintenant décrit de manière détaillée selon divers modes de réalisation de la présente invention. Se rapportant à la figure 3, un schéma de principes est représenté illustrant le microprocesseur 104 de la figure 1 de manière plus détaillée selon un mode de réalisation de la présente invention. Comme cela est indiqué ci-dessus, le système 100 peut fonctionner en synchronisme ou en mode non rigide. Dans le mode de réalisation illustré sur la figure 3, les lignes de sortie de coeur 114a-b sont couplées à la fois à la logique de synchronisme 106 (comme sur la figure 1) et aux ports 126a-b, respectivement. Lorsque le système 100 fonctionne en mode non rigide, le coeur 102a émet des signaux de données/commande directement vers le port 126a sur la ligne 114a et reçoit des signaux de données directement en provenance du port 126a sur la ligne 118a. De même, lorsque le système 100 fonctionne en mode non rigide, le coeur 102b émet des signaux de données/commande directement vers le port 126b sur la ligne 114b et reçoit des signaux de données directement depuis le port 126b sur la ligne 118b. Un signal d'activation de synchronisme transmis sur la ligne 131 commande si la logique de synchronisme 106 fonctionne en synchronisme ou en mode non rigide. 2870613 23 Plus particulièrement, la logique de synchronisme 106 fonctionne en synchronisme lorsqu'un signal d'activation de synchronisme est validé sur la ligne 131 et un signal de réinitialisation sur la ligne 128 dévalidé. Sinon, la logique de synchronisme 131 peut être couplée à un circuit de gestion de configuration ou à un quelconque autre circuit destiné à contrôler si la logique de synchronisme 106 doit fonctionner en synchronisme. Des exemples de techniques qui peuvent être utilisées par la logique de synchronisme 106 pour fonctionner en synchronisme ou en mode non rigide sont décrits dans la demande de brevet en référence ci-dessus intitulée Core-Level Processor Lockstepping . Dans le mode de réalisation illustré sur la figure 3, la logique de synchronisme 106 est connectée aux ports 126a-b de manière indirecte par l'intermédiaire des connexions existantes 114a-b entre les coeurs 102a-b et les ports 126a-b. La logique de synchronisme 106 peut réaliser une vérification de synchronisme sur les sorties de coeur reçues dans les lignes 114a-b puis retransmettre les sorties vers les lignes 114a-b sur les lignes 132a-b si aucune erreur de synchronisme n'est détectée. La demande de brevet en référence ci-dessus, intitulée Core-Level Processor Lockstepping fournit des exemples de circuits qui peuvent être utilisés pour mettre en oeuvre la logique de synchronisme 106 pour réaliser cette fonction. Dans le mode de réalisation illustré sur la figure 3, la sortie produite par la logique de synchronisme 106 sur la ligne 132b est reçue par la logique de changement de port 130, qui change le port de destination de la sortie du coeur 102b de la manière décrite ci-dessus, puis transmet la sortie modifiée sur la ligne 134 vers la ligne 114b. La sortie d'origine fournie par le coeur 102b sur la ligne 114b peut de ce 2870613 24 fait être remplacée par la sortie produite par la logique de changement de port 130. Chacun des coeurs 102a-b peut également comprendre un circuit de vérification d'erreur. Si un circuit de vérification d'erreur dans un des coeurs 102a-b détecte une erreur interne, le c ur peut transmettre un signal d'erreur sur celle correspondante des lignes d'architecture de vérification machine (MCA) 116a-b. En réponse, la logique de synchronisme 106 peut fonctionner en mode non protégé dans lequel la logique de synchronisme 106 transfère uniquement la sortie du coeur qui ne produit pas d'erreur vers la commutation crossbar 108, et tente de récupérer de l'erreur Des exemples de techniques qui peuvent être utilisées par la logique de synchronisme 106 pour fonctionner en mode non protégé sont décrits de manière plus détaillée dans la demande de brevet en référence ci-dessus, intitulée Core-Level Processor Lockstepping . La logique de synchronisme 106 peut également transmettre des signaux liés aux erreurs et d'autres signaux de commande vers les coeurs 102a-b sur les lignes MCA 120a-b, respectivement. Comme cela est représenté sur la figure 3, la commutation crossbar 108 peut comprendre des ports 112c-f, avec des liaisons correspondantes 110c-f, en outre des ports 112a- b et des liaisons 110a-b représentés sur la figure 1. La logique de changement de port 130 peut changer le port de destination de paquets transmis par le coeur 102b pour spécifier un quelconque des ports de destination 112b-f (en supposant que les sorties du coeur 102a soient transmises à travers le port 112a). La logique de vérification de liaison 140 peut par conséquent, être couplée à un quelconque ou à tous les ports de destination 112a-f. La logique de vérification de 2870613 25 liaison 140 peut, cependant, être configurée pour vérifier seulement les liaisons sur lesquelles la sortie provenant des coeurs 102a-b est transmise. Dans le mode de réalisation illustré sur la figure 1, la logique de synchronisme 106 est couplée à des ports de commutation crossbar 126a-b et transfère les sorties provenant des coeurs 102a-b en direction des ports de commutation crossbar 126a-b. Dans le mode de réalisation illustré sur la figure 3, la logique de synchronisme 106 est également couplée à des ports de commutation crossbar 126a-b, bien que de manière légèrement plus indirecte par l'intermédiaire des lignes de sortie 114a-b. Dans encore un autre mode de réalisation illustré sur la figure 4A, un microprocesseur 404 est représenté selon un mode de réalisation de la présente invention dans lequel une logique de synchronisme 406 est couplée à des ports de commutation crossbar 426a-b de manière indirecte à travers les coeurs 402a-b. Comme cela est maintenant décrit de manière plus détaillée, la logique de synchronisme 406 peut réaliser des fonctions identiques ou similaires indirectement à travers les coeurs 402a-b à mesure que la logique de synchronisme 106 réalise directement dans les modes de réalisation illustrés sur les figures 1 à 3. Des caractéristiques des coeurs 402a-b et de la logique de synchronisme 406 qui ne sont pas illustrées sur la figure 4A peuvent être mises en oeuvre de la même manière que les caractéristiques correspondantes des coeurs 102a-b et de la logique de synchronisme 106, respectivement (figures 1 et 3). Le mode de réalisation illustré sur la figure 4A peut être particulièrement utile pour ajouter la logique de synchronisme 406 à une conception existante dans laquelle les coeurs 402a-b sont déjà couplés aux ports de commutation crossbar 426a-b, respectivement. 2870613 26 La logique de synchronisme 406 peut être insérée dans une telle conception, de la manière illustrée sur la figure 4A, sans qu'il soit nécessaire de découpler les coeurs 402a-b des ports 426a-b et sans qu'il soit nécessaire d'attribuer un port de commutation crossbar supplémentaire à la logique de synchronisme 406. La mise en oeuvre particulière illustrée sur la figure 4A est purement un exemple d'une manière dont les techniques décrites ici peuvent être appliquées à la vérification de synchronisme qui réutilise les ports de commutation crossbar existants. L'homme du métier appréciera, par exemple, comment appliquer les techniques illustrées sur la figure 4A à des modes de réalisations illustrés sur les figures 4A-4B de la demande de brevet en référence ci-dessus, intitulée Core-Level Processor Lockstepping . Les coeurs 402a-b comprennent une logique d'envoi 430a-b pour transmettre des signaux de données/commande en direction des ports 426a-b sur des lignes 414a-b, respectivement. Les coeurs 402a-b comprennent également une logique de réception 432a-b pour recevoir des signaux de données en provenance des ports 426a-b sur des lignes 418a-b, respectivement. Des techniques pour mettre en oeuvre la logique d'envoi 430a-b et la logique de réception 432a-b sont bien connus de l'homme du métier. Comme dans les modes de réalisation illustrés sur les figures 1 et 3, les communications entrantes reçues au niveau des ports de commutation crossbar 426a-b sont fournies directement à la logique de réception 432ab sans intervention de la logique de synchronisme 406, que le microprocesseur 404 fonctionne ou non en synchronisme. Comme cela est décrit ci-dessus, de telles communications entrantes peuvent en variante être fournies à la logique de synchronisme 406 pour la vérification de synchronisme avant d'être transférées vers la logique de réception 432a-b lorsque le microprocesseur 404 fonctionne en synchronisme. Considérons maintenant des communications sortantes transmises par la logique d'envoi sur les lignes 446a-b. Il est à noter que les coeurs 402ab comprennent des multiplexeurs 434a-b, qui sont couplés à la logique d'envoi 430a-b, respectivement. Lorsque la logique de synchronisme 406 en mode non rigide, les sorties de la logique d'envoi 430a-b (sur les lignes 446a-b) passent à travers les lignes 414a-b, respectivement. Ce résultat est obtenu par la logique de synchronisme 406 qui transmet des signaux de sélection aux multiplexeurs 434a-b sur les lignes 440a- b, respectivement, qui sélectionnent les sorties de la logique d'envoi 430a-b (sur les lignes 446a-b) pour émettre sur les lignes 414a-b, respectivement, lorsque le microprocesseur 404 fonctionne en mode non rigide. Les sorties de la logique d'envoi 430a-b sont couplées aux entrées 436a-b, respectivement, de la logique de synchronisme 406. A réception des sorties de la logique d'envoi 430a-b de cette manière, la logique de synchronisme 406 réalise une vérification de synchronisme sur les sorties de la manière décrite ci- dessus si le microprocesseur 404 fonctionne en synchronisme. Si aucune erreur de synchronisme n'est détectée, la logique de synchronisme 406 retransmet la sortie de la logique d'envoi 430a sur la ligne 448a, et retransmet la sortie de la logique d'envoi 430b sur la ligne 448b. Lorsqu'elle est en synchronisme, la logique de synchronisme 406 transmet des signaux de sélection sur les lignes 440a-b vers les multiplexeurs 434a-b qui sélectionnent les entrées de multiplexeur libellées 1 sur la figure 4A. Par conséquent, la sortie de 2870613 28 coeur retransmise fournie par la logique de synchronisme 406 sur la ligne 448a est transmise par le multiplexeur 434a sur la ligne 414a en direction du port de commutateur crossbar 426a. La sortie de coeur retransmise fournie par la logique de synchronisme 406 sur la ligne 448b, cependant, est interceptée par la logique de changement de port 130, qui modifie le port de destination de paquets transmis sur la ligne 448b pour spécifier un port autre que celui est spécifie à l'origine. Si, par exemple, les sorties d'origine des coeurs 402a-b spécifient toutes le port de destination 412a, la logique de changement de port 130 peut modifier le port de destination spécifié par les paquets transmis sur la ligne 448b vers le port de destination 412b. La logique de changement de port 130 transmet les paquets modifiés sur la ligne 460 vers l'entrée 1 du multiplexeur 434b, qui transfère les paquets modifiés sur la ligne 414b vers le port 426b. Les paquets modifiés sont ensuite transmis à travers la commutation crossbar 408 vers le port de destination spécifié (ex. : port 412b). Parmi les avantages de la présente invention se trouvent un ou plusieurs des suivants. En l'absence de la logique de vérification de liaison 140 ou d'une autre frontière de synchronisme au-dessous de la commutation crossbar 108, des erreurs introduites par la commutation crossbar 108 et/ou les liaisons 110a-f peuvent rester non détectées et non corrigées. La logique de vérification de liaison 140, par conséquent, fournit de manière avantageuse une frontière de synchronisme au-dessous de la commutation crossbar 108, permettant de ce fait la détection et la correction d'erreurs de synchronisme introduites par la commutation crossbar 108 et/ou les liaisons llOa-b. 2870613 29 En outre, les techniques décrites ici permettent à une vérification de synchronisme d'être réalisée sur les flots de sortie produits par des coeurs multiples 102a-b dans un seul paquet de circuit intégré. En réalisant la vérification de synchronisme sur des unités de traitement dans un seul emplacement, ces techniques évitent les problèmes généralement associés avec des systèmes qui utilisent le synchronisme de niveau emplacement, dans lequel les processeurs dans des emplacements distincts sont utilisés en synchronisme les uns avec les autres. Dans ces systèmes, il peut être extrêmement difficile d'utiliser les deux processeurs en synchronisme les uns avec les autres sur des durées étendues en raison de la difficulté à fournir des horloges synchronisées aux deux processeurs. En revanche, dans un système tel que celui illustré sur la figure 1, à la fois les c urs 102a-b, ainsi que la logique de synchronisme 106, la commutation crossbar 108, et les liaisons 110a-b, peuvent être commandées par la même horloge, évitant de ce fait les problèmes de temporisation généralement associés avec le synchronisme de niveau emplacement sans sacrifier la fiabilité. Un avantage supplémentaire des techniques décrites dans la présente est qu'elles peuvent être mises en oeuvre sans modifier les coeurs de processeur. 102a-b. Plutôt, comme cela ressortira de la description ici, les coeurs 102a-b peuvent fonctionner de la même manière que les coeurs de processeur conventionnels. La vérification de synchronisme est réalisée par la logique de synchronisme 106 et/ou la logique de vérification de liaison 140, sans qu'il soit nécessaire de modifier les coeurs 102a-b. En outre, la logique de vérification de port 130 peut être mise en oeuvre de manière externe aux coeurs 102a-b, évitant de ce fait, 2870613 30 en outre, le besoin de modifier les coeurs. La capacité à mettre en oeuvre le synchronisme de la manière décrite ici sans modifier les coeurs 102a-b peut simplifier la conception du système 100 considérablement en raison de la complexité relative des coeurs 102a-b. En outre, les techniques décrites dans la présente peuvent être utilisées conjointement avec un quelconque type de coeur de processeur en raison de l'indépendance du circuit de synchronisme par rapport à la mise en oeuvre des coeurs de processeur 102a-b. Dans le mode de réalisation illustré sur la figure 1, la vérification de synchronisme peut être réalisée par la logique de synchronisme 106, la logique de vérification de liaison 140 ou les deux. Bien que la vérification de synchronisme puisse être réalisée uniquement par la logique de vérification de liaison 140, l'utilisation de la logique de synchronisme 106 peut être avantageuse car elle peut permettre à des erreurs de synchronisme qui se produisent avant la logique de synchronisme 106 d'être détectées plus tôt que si leur détection était déférée à la logique de vérification de liaison 140. Par conséquent, ces erreurs peuvent être corrigées plus tôt que si uniquement la logique de vérification de liaison 140 était utilisée. Il peut, cependant, être souhaitable d'éliminer la logique de synchronisme 106 et d'utiliser la logique de vérification de liaison 140 pour diverses raisons, telles que des considérations de coût, de surface et/ou de vitesse. En général, l'utilisation de la commutation crossbar 108 plutôt que d'un bus de système partagé peut être avantageuse pour un éventail de raisons. Par exemple, les bus de système partagés comprennent généralement un grand nombre de broches externes, parfois au nombre de cent, auxquelles des composants 2870613 31 (tels que le circuit de synchronisme) doivent être couplés. La conception et la mise en oeuvre du câblage pour un tel circuit peut être consommateur de temps et coûteux. Les ports de commutation crossbar 126a- b, en revanche, peuvent comprendre des nombres relativement petits de bits (ex. : 32 pour des données et 10 pour une commande), simplifiant de ce fait la conception et l'implémentation du câblage pour coupler les coeurs 102a-b et/ou la logique de synchronisme 106 aux ports 126a-b. En outre, le mode de réalisation illustré sur la figure 4A permet aux connexions existantes entre les coeurs 402a-b et les ports de commutation crossbar 426a-b d'être réutilisés. Dans une telle mise en oeuvre, alors qu'elle est en synchronisme, la logique de synchronisme 406 communique avec la commutation crossbar 408 à travers un port existant couplé à un des coeurs 402a-b. Lorsque la logique de synchronisme 406 est en mode non rigide, les coeurs 402a-b peuvent continuer de communiquer directement avec leurs ports de commutation crossbar respectivement 426a-b sans interférence par la logique de synchronisme 406. Une telle conception peut, par conséquent, simplifier le procédé consistant à ajouter la logique de synchronisme 406 à une mise en oeuvre existante qui comprend les coeurs 402a-b couplés à la commutation crossbar 408. Il doit être compris que, bien que la présente invention ait été décrite en termes de modes de réalisation particuliers, les modes de réalisation précédents sont fournis à titre d'illustration uniquement, et ne limitent ni ne définissent l'étendue de la présente invention. Divers autres modes de réalisation, y compris mais sans s'y limiter, les suivants, sont également dans l'étendue des revendications. Par exemple, des éléments et composants 2870613 32 décrits ici peuvent en outre être divisés en outre en composants supplémentaires ou joints pour former moins de composants pour réaliser les mêmes fonctions. Bien que six liaisons soient représentées sur les figures 3 et 4, les commutations crossbars 108 et 408 peuvent comprendre un nombre quelconque de liaisons. Ces liaisons peuvent être asynchrones par rapport aux coeurs; c'est-à-dire les liaisons et les coeurs peuvent fonctionner à différentes fréquences d'horloge les unes par rapport aux autres. En outre, les liaisons peuvent être asynchrones les unes par rapport aux autres. Bien que la logique de synchronisme et la commutation crossbar sur les figures 3 et 4 soient sur la même puce comme les coeurs correspondants, ceci n'est pas une condition requise de la présente invention. Bien que dans le mode de réalisation illustré sur la figure 4A, les signaux de sortie produits par la logique d'envoi 430a-b soient transmis dans leur intégralité vers la logique de synchronisme 406 et en retour vers la logique d'envoi 430a-b, ceci n'est pas une condition requise de la présente invention. Par exemple, en se rapportant à la figure 4B, un schéma est représenté d'un circuit qui peut être utilisé dans le coeur 402a comme une variante au multiplexeur 434a. Il est à rappeler que dans le mode de réalisation illustré sur la figure 4A, toutes les données transmises par le coeur 402a vers l'entrée 436a de la logique de synchronisme 406 peuvent être transmises en retour vers le coeur par la logique de synchronisme 406 sur la ligne 448a. Comme cela est maintenant décrit de manière plus détaillée, dans le mode de réalisation illustré sur la figure 4B, la logique de synchronisme 406 transmet moins que le nombre d'origine de bits en retour vers le c ur 402a, simplifiant de ce fait le câblage du circuit. Le même circuit peut être mis en oeuvre dans l'autre coeur 402b pour obtenir un avantage supplémentaire. La logique d'envoi 430a transmet une sortie de n-bits sur les lignes 446a. La sortie n-bits entière est transmise sur les lignes 452 vers l'entrée de logique de synchronisme 436a. Dans le coeur 402a, cependant, la sortie n-bits est divisée en un signal m-bits sur les lignes 454 (où m Considérons tout d'abord le fonctionnement du circuit illustré sur la figure 4B lorsque la logique de synchronisme 106 fonctionne en mode non rigide. Lorsqu'elle est en mode non rigide, la logique de synchronisme 406 transmet une valeur zéro sur la ligne de sélection de synchronisme 440a, qui est fournie en tant qu'entrée vers les multiplexeurs 460 et 462. En réponse, le multiplexeur 460 sélectionne le signal (nm)-bits sur les lignes 456 pour la sortie sur les lignes 464, et le multiplexeur 462 sélectionne le signal m-bits sur les lignes 454 pour la sortie sur les 2870613 34 lignes 466. Les signaux sur les lignes 464 et 466 sont combinés dans le signal n-bits d'origine sur les lignes 414a puis fournis au port de commutation crossbar 412a. En résumé, en mode non rigide, le signal n-bits émis par la logique d'envoi 430a est fourni au port de commutation crossbar 412a. Considérons maintenant le fonctionnement du circuit illustré sur la figure 4B lorsque la logique de synchronisme 406 fonctionne en synchronisme et par conséquent émet la valeur 1 sur la ligne de sélection de synchronisme 440a. La logique de synchronisme 406 émet un signal m- bits sur les lignes 472 qui contient les mêmes champs binaires (ex. : valide, poison et viral) que le signal m-bits sur les lignes 454. Les valeurs des signaux m-bits sur les lignes 454 et 472 peuvent être différentes, néanmoins, puisque le signal m-bits sur les lignes 472 peut avoir été obtenu à partir du c ur 402b si le coeur 402b est le coeur maître. Les valeurs des signaux m-bits sur les lignes 454 et 472 peuvent également être différentes si, par exemple, la logique de synchronisme 406 détecte une erreur de synchronismeet signale l'erreur dans le signal m-bits sur les lignes 472, comme cela est décrit de manière plus détaillée dans la demande de brevet en référence ci-dessus, intitulée Lockstep Error Signaling . En réponse à la réception du signal de sélection de valeur 1 sur la ligne 440a, le multiplexeur 462 émet le signal m-bits depuis les lignes 472 sur les lignes 466. Le signal (n-m)-bits sur les lignes 456 est fourni à un circuit de retard 458 (tel que des verrous de transfert) qui fournit une version retardée du signal (n-m)-bits à la logique de changement de port 130. Il est à noter que, bien que la logique de changement de port 130 soit représentée dans le coeur 402a sur la figure 4B, la logique de changement de port 134 peut en variante, être prévue dans le coeur 402b. La logique de changement de port 130 modifie le port de destination spécifié dans le signal (n-m) -bits et fournit le signal (n-m)-bits modifié au multiplexeur 460. Le retard introduit par le circuit de retard 458 est calibré de sorte que le retard total introduit par le circuit de retard 458 et la logique de changement de port 130 est sensiblement égale au retard entre les signaux m-bits sur les lignes 454 et 472 (introduits par la logique de synchronisme 406). En réponse à la réception du signal de sélection de valeur 1 sur la ligne 440a, le multiplexeur 460 émet le signal (n-m)-bits retardé et modifié sur les lignes 464. Les signaux sur les lignes 464 et 466 sont combinés en un signal n-bits sur les lignes 414a puis fournis au port de commutation crossbar 412a. En résumé, le synchronisme du signal n-bits émis par la logique d'envoi 430a est divisé en un signal (n- m)-bits et un signal m-bits. Le signal (n-m)-bits est retardé, et le port de destination spécifié dans le signal retardé est modifié pour spécifique un port de destination autre que celui qui a été spécifié à l'origine. Le signal m-bits est fourni à la logique de synchronisme 406, qui traite le signal m-bits et fournit un signal m-bits de retour. Le signal (n-m)- bits et le signal m-bits résultants sont recombinés et fournis au port de commutation crossbar 412a, qui transfère le signal (ex. : sous la forme d'un paquet) vers le port de destination indiqué par la logique de changement de port 130. Le besoin, pour la logique de synchronisme 406, de transmettre un signal n-bits complet au coeur 402a est de ce fait éliminé, comme l'est le câblage correspondant. La figure 4B illustre en outre que la logique de changement de port 130 ne 2870613 36 doit pas fonctionner sur un signal qui passe à travers la logique de synchronisme 406. Bien que des commutations crossbars soient représentées sur les figures 1, 3 et 4, une commutation crossbar est purement un exemple de structure de commutation (appelé également structure système) qui comprend une pluralité de ports d'entrée et une pluralité de ports de sortie, et qui est capable de créer arbitrairement des liaisons point à point entre les paires de port d'entrée/sortie. Des structures de commutation autres que les ports de commutation crossbars peuvent être utilisées conjointement avec des modes de réalisation de la présente invention. Bien que les exemples ci-dessus comprennent des coeurs de processeur 102ab fonctionnant en synchronisme, les mêmes techniques peuvent être appliquées sur les processeurs et autres circuits fonctionnant en synchronisme. Les coeurs de processeur 102a-b, par conséquent, peuvent être caractérisés plus globalement comme des unités de traitement. Bien que diverses connexions dans les modes de réalisation illustrés ici (telles que les lignes 114a-b, 116a-b et 118a-b) puissent être décrites ci-dessus comme des lignes individuelles, chaque connexion peut comprendre un nombre quelconque de lignes, comme cela est nécessaire ou souhaitable pour transporter les signaux associés. En outre, ces connexions peuvent transmettre des signaux en série ou en parallèle, à l'aide d'un quelconque protocole de communication. Des composants de la présente invention, tels que la logique de synchronisme 106, la logique de changement de port 130 et la logique de vérification de liaison 140 peuvent être mis en oeuvre dans des circuits analogiques ou numériques personnalisés, des circuits intégrés spécifiques de l'application (ASIC), les réseaux prédiffusés programmables (FPGA), le matériel informatique, les logiciels ou les micrologiciels ou une quelconque combinaison de ceux-ci. Bien que la logique de changement de port 130 soit représentée à des emplacements particuliers sur les dessins, la logique de changement de port 130 peut être prévue à d'autres emplacements dans d'autres modes de réalisation de la présente invention. Par exemple, la logique de changement de port 130 peut être intégrée dans la logique de synchronisme 106 ou l'un ou l'autre ou les deux coeurs 102a-b. REVENDICATIONS 1. Système comprenant: un microprocesseur comprenant une première unité de traitement pour générer un premier signal de sortie et une deuxième unité de traitement pour générer un deuxième signal de sortie; et des moyens de comparaison, couplés au microprocesseur, pour détecter si le premier signal de 10 sortie est différent du deuxième signal de sortie. 2. Système selon la revendication 1, dans lequel la première unité de traitement comprend un premier coeur de microprocesseur et dans lequel la deuxième unité de traitement comprend un deuxième coeur de microprocesseur. 3. Système selon la revendication 1, dans lequel le microprocesseur est installé dans un emplacement, et dans lequel les moyens de comparaison ne sont pas installés dans l'emplacement. 4. Système selon la revendication 1, dans lequel le microprocesseur comprend en outre: une logique de synchronisme comprenant des entrées couplées aux première et deuxième unités de traitement, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie. 5. Système selon la revendication 1, dans lequel le microprocesseur comprend en outre: une structure de commutation pour transmettre les premier et deuxième signaux de sortie vers les moyens de comparaison. 6. Système selon la revendication 5, dans lequel la structure de commutation comprend une commutation crossbar. 7. Système selon la revendication 5, dans lequel la structure de commutation comprend un premier port source pour recevoir le premier signal de sortie, un deuxième port source pour recevoir le deuxième signal de sortie, dans lequel le premier port source fonctionne à une première fréquence et dans lequel le deuxième port source fonctionne à une deuxième fréquence qui diffère de la première fréquence. 8. Système selon la revendication 7, dans lequel la première unité de traitement est cadencée par une première horloge présentant une troisième fréquence qui est différente de la première fréquence. 9. Système selon la revendication 5, comprenant en outre des moyens de changement de port pour recevoir le deuxième signal de sortie et modifier une destination spécifiée dans celui-ci pour produire un deuxième signal de sortie modifié, et dans lequel la structure de commutation comprend un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie modifié. 10. Système selon la revendication 9, dans lequel la structure de commutation comprend un premier port de destination et un deuxième port de destination, dans lequel le premier signal de sortie spécifie le premier port de destination comme une destination, dans lequel le deuxième signal de sortie spécifie le premier port 2870613 40 de destination comme une destination, et dans lequel le deuxième signal de sortie modifié spécifie le deuxième port de destination comme destination. 11. Système comprenant: un microprocesseur, installé dans un emplacement, comprenant un premier coeur de microprocesseur pour générer un premier signal de sortie et un deuxième coeur de microprocesseur pour générer un signal de sortie; une logique de synchronisme comprenant des entrées couplées aux premier et deuxième coeurs de microprocesseur, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; des moyens de comparaison, couplés au microprocesseur et non installé dans l'emplacement, pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; une commutation crossbar pour transmettre les premier et deuxième signaux de sortie vers les moyens 20 de comparaison; et des moyens de changement de port pour recevoir le deuxième signal de sortie et modifier une destination spécifiée dans celui-ci pour produire un deuxième signal de sortie modifié, dans lequel la commutation crossbar comprend un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie modifié. 12. Procédé comprenant les étapes consistant à : (A) dans une première unité de traitement d'un microprocesseur, générer un premier signal de sortie; (B) dans une deuxième unité de traitement du microprocesseur, générer un deuxième signal de sortie; 2870613 41 (C) fournir les premier et deuxième signaux de sortie aux moyens de comparaisons placés à l'extérieur du microprocesseur; et (D) au niveau des moyens de comparaison, détecter 5 si le premier signal de sortie est différent du deuxième signal de sortie. 13. Procédé selon la revendication 12, dans lequel la première unité de traitement comprend un premier coeur de microprocesseur et dans lequel la deuxième unité de traitement comprend un deuxième coeur de microprocesseur. 14. Procédé selon la revendication 12, dans lequel le procédé comprend en outre les étapes consistant à : (E) avant l'étape (C), fournir les premier et deuxième signaux de sortie à la logique de synchronisme dans le microprocesseur; et (F) au niveau de la logique de synchronisme, 20 détecter si le premier signal de sortie est différent du deuxième signal de sortie. 15. Procédé selon la revendication 14, comprenant en outre les étapes consistant à : (G) après l'étape (F), modifier une destination spécifiée par le deuxième signal de sortie; et (H) transmettre le deuxième signal de sortie à la destination modifiée. 16. Procédé selon la revendication 12, comprenant en outre les étapes consistant à : (E) avant l'étape (C), modifier une destination du deuxième signal de sortie. 17. Procédé comprenant les étapes consistant à : (A) dans un premier coeur d'un microprocesseur, générer un premier signal de sortie; (B) dans un deuxième coeur du microprocesseur, générer un deuxième signal de sortie; (C) fournir les premier et deuxième signaux de sortie aux moyens de comparaison placés à l'extérieur du microprocesseur; (D) au niveau des moyens de comparaison, détecter si le premier signal de sortie est différent du 10 deuxième signal de sortie; (E) avant l'étape (C), fournir les premier et deuxième signaux de sortie à la logique de synchronisme dans le microprocesseur; (F) au niveau de la logique de synchronisme, 15 détecter si le premier signal de sortie est différent du deuxième signal de sortie; (G) après l'étape (F), modifier une destination spécifiée par le deuxième signal de sortie; et (H) transmettre le deuxième signal de sortie vers 20 la destination modifiée. 18. Circuit intégré comprenant: une première unité de traitement pour générer un premier signal de sortie spécifiant une première 25 destination une deuxième unité de traitement pour générer un deuxième signal de sortie spécifiant la première destination une logique de synchronisme couplée aux première et deuxième unités de traitement pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; des moyens de changement de port pour modifier le deuxième signal de sortie pour spécifier une deuxième 35 destination 2870613 43 des premiers moyens pour fournir le premier signal de sortie à la première destination; et des deuxièmes moyens pour fournir le deuxième signal de sortie à la deuxième destination. 19. Circuit intégré selon la revendication 18, comprenant en outre. une structure de commutation comprenant les premiers moyens pour fournir et les deuxièmes moyens 10 pour fournir. 20. Circuit intégré selon la revendication 19, dans lequel la structure de commutation comprend un premier port de destination et un deuxième port de destination, dans lequel la première destination comprend le premier port de destination et dans lequel la deuxième destination comprend le deuxième port de destination. 21. Circuit intégré selon la revendication 19, dans lequel la structure de commutation comprend une commutation crossbar. 22. Circuit intégré selon la revendication 19, 25 dans lequel les premiers moyens pour fournir comprennent un premier port source pour recevoir le premier signal de sortie et un deuxième port source pour recevoir le deuxième signal de sortie, dans lequel le premier port source fonctionne à une première 30 fréquence et dans lequel le deuxième port source fonctionne à une deuxième fréquence qui est différente de la première fréquence. 23. Circuit intégré selon la revendication 22, 35 dans lequel la première unité de traitement est 2870613 44 cadencée par une première horloge présentant une troisième fréquence qui est différente de la première fréquence. 24. Circuit intégré selon la revendication 18, dans lequel la première unité de traitement comprend un premier coeur de microprocesseur et dans lequel la deuxième unité de traitement comprend un deuxième coeur de microprocesseur. 25. Circuit intégré comprenant: une première unité de traitement pour générer un premier signal de sortie spécifiant un premier port de destination; une deuxième unité de traitement pour générer un deuxième signal de sortie spécifiant le premier port de destination; une logique de synchronisme couplée aux première et deuxième unités de traitement pour détecter si le premier signal de sortie est différent du deuxième signal de sortie; des moyens de changement de port pour modifier le deuxième signal de sortie pour spécifier une deuxième destination; et une commutation crossbar comprenant: le premier port de destination; le deuxième port de destination; et des premiers moyens pour fournir le premier signal de sortie au premier port de destination et des deuxièmes moyens pour fournir le deuxième signal de sortie au deuxième port de destination. 26. Procédé comprenant les étapes consistant à 2870613 45 (A) recevoir un premier signal de sortie provenant d'un premier coeur de microprocesseur dans un microprocesseur; (B) recevoir un deuxième signal de sortie 5 provenant d'un deuxième coeur de microprocesseur dans le microprocesseur; (C) déterminer si le premier signal de sortie diffère du deuxième signal de sortie; (D) transmettre le premier signal de sortie à un premier port source d'une structure de système; (E) identifier un premier port de destination spécifié par le deuxième signal de sortie; (F) modifier le deuxième signal de sortie pour spécifier un deuxième port de destination qui est 15 différent du premier port de destination; et (G) transmettre le deuxième signal de sortie modifié vers un deuxième port source de la structure de système. 27. Procédé selon la revendication 26, comprenant en outre les étapes consistant à : (H) au niveau de la structure du système, transmettre le premier signal de sortie vers le premier port de destination; et (I) au niveau de la structure du système, transmettre le deuxième signal de sortie modifié vers le deuxième port de destination. 28. Procédé selon la revendication 26, comprenant 30 en outre les étapes consistant à : (H) recevoir le premier signal de sortie et le deuxième signal de sortie modifié au niveau des moyens de comparaison placés à l'extérieur du microprocesseur; et 2870613 46 (I) au niveau des moyens de comparaison, déterminer si le premier signal est différent du deuxième signal de sortie modifié. 29. Procédé selon la revendication 26, dans lequel la structure de commutation comprend un port de commutation crossbar. 30. Procédé selon la revendication 26, dans lequel le premier port source fonctionne à une première fréquence qui est différente d'une deuxième fréquence à laquelle le deuxième port source fonctionne. 31. Procédé selon la revendication 26, dans lequel le premier coeur de microprocesseur est cadencé par une première horloge présentant une première fréquence et dans lequel le premier port source fonctionne à une deuxième fréquence qui est différente de la première fréquence. 32. Procédé selon la revendication 26, dans lequel le microprocesseur comprend une logique de synchronisme, et dans lequel les étapes (A) à (C) sont réalisées par la logique de synchronisme. 33. Procédé comprenant les étapes consistant à : (A) dans un microprocesseur, recevoir un premier signal de sortie provenant d'un premier coeur du microprocesseur; (B) dans le microprocesseur, recevoir un deuxième signal de sortie provenant d'un coeur du microprocesseur; (C) dans le microprocesseur, déterminer si le premier signal de sortie est différent du deuxième 35 signal de sortie; (D) transmettre le premier signal de sortie vers un premier port source d'une commutation crossbar; (E) identifier un premier port de destination spécifié par le deuxième signal de sortie; (F) modifier le deuxième signal de sortie pour spécifier un deuxième port de destination qui est différent du premier port de destination; et (G) transmettre le deuxième signal de sortie modifié vers un deuxième port source de la commutation 10 crossbar; (H) au niveau de la commutation crossbar, transmettre le premier signal de sortie vers le premier port de destination; (I) au niveau de la commutation crossbar, 15 transmettre le deuxième signal de sortie modifié vers le deuxième port de destination; (J) recevoir le premier signal de sortie et le deuxième signal de sortie modifié au niveau de moyens de comparaison placés à l'extérieur du microprocesseur; et (K) au niveau des moyens de comparaison, déterminer si le premier signal de sortie est différent du deuxième signal de sortie modifié.