FR 2907932 A1 20080502 FR 0706811 A 20070928 î 2907932 La présente invention concerne de manière générale les systèmes informatiques et les systèmes de traitement d'informations et, plus particulièrement, un système et un procédé pour gérer des interruptions dans un système informatique multiprocesseur. Du fait que la valeur et l'utilisation des informations continuent à croître, les personnes et les entreprises cherchent des moyens supplémentaires pour traiter et mémoriser les informations. L'un des choix mis à la dispo- sition des utilisateurs concerne les systèmes de traite-ment d'informations. Un système de traitement d'informations d'une manière générale traite, compile, mémorise, et/ou communique des informations ou des données à des fins commerciales, personnelles ou autres, de manière à permettre aux utilisateurs d'exploiter la valeur des in-formations. Du fait que les besoins et impératifs en ter-mes de technologie et de traitement d'informations va-rient entre utilisateurs ou applications, les systèmes de traitement d'informations peuvent également varier en fonction du type d'informations qui sont traitées, de la manière selon laquelle les informations sont traitées, de la quantité d'informations qui sont traitées, mémorisées, ou communiquées, et du degré de rapidité et d'efficacité avec lequel les informations peuvent être traitées, mémo-risées ou communiquées. Les variations des systèmes de traitement d'informations permettent que les systèmes de traitement d'informations soient généraux ou configurés pour un utilisateur spécifique ou une utilisation spécifique telle que le traitement de transactions financiè-res, les réservations de vols, le stockage de données d'entreprises, ou les communications globales. De plus les systèmes de traitement d'informations peuvent inclure une variété de composants matériels et logiciels qui peu-vent être configurés pour traiter, mémoriser et communi-quer des informations et peuvent inclure un ou plusieurs 2907932. 2 systèmes informatiques, systèmes de mémorisation de don-nées, et systèmes de gestion de réseaux. Un système de traitement d'informations inclut de multiples processeurs, chaque processeur étant directement 5 couplé à un ensemble unique de ressources de mémoire. Dans cet environnement, chaque processeur est capable de traiter des interruptions générées par le système informatique. A titre d'exemple, si une erreur portant sur un seul bit survient dans une mémoire, le processeur qui est 10 directement couplé à la mémoire va traiter l'interruption de gestion système ou SMI (System Management Interrupt) associée à l'erreur portant sur un seul bit. Pendant la période au cours de laquelle l'un des processeurs du système informatique traite l'interruption de gestion du 15 système, les autres processeurs du système informatique peuvent continuer à exécuter des instructions du système d'exploitation. Si, pendant le traitement de l'interruption de gestion du système, les processeurs sont en concurrence sur les ressources systèmes partagées, le 20 système informatique peut devenir instable et subir une panne. Pour réduire la possibilité de conflit d'utilisation concernant des ressources systèmes partagées pendant le traitement d'une interruption SMI pour une erreur portant 25 sur un seul bit, le processeur de traitement d'interruption peut générer une interruption SMI "douce" (soft interrupt) lorsqu'il quitte la routine de traitement d'interruption qui était associée à l'interruption SMI originale pour l'erreur portant sur un seul bit. L'émission de 30 l'interruption SMI douce amène tous les processeurs à traiter l'interruption SMI douce, faisant en sorte que tous les processeurs reconnaissent l'erreur portant sur un seul bit. Une difficulté avec cette approche est que, si une seconde interruption SMI survient pendant la pé-35 riode au cours de laquelle le processeur de traitement 2907932 3 d'interruption traite l'interruption SMI initiale, l'existence de la seconde interruption SMI va provoquer l'abandon de l'interruption SMI douce et l'erreur portant sur un seul bit ne va pas être reconnue par les autres 5 processeurs du système informatique. Conformément à la présente invention, on décrit un système et un procédé dans lesquels, pendant l'exécution d'une séquence de traitement d'interruption dans l'un des processeurs d'un système multiprocesseur, un processeur 10 écrit un "code de raison" dans un registre d'état pour identifier la cause de l'interruption. Le code BIOS du système écrit dans un registre de déclenchement d'interruption pour amener chacun des processeurs à entrer une séquence de traitement d'interruption. Chacun des proces- 15 Beurs du système traitant l'interruption sur la base du contenu du registre d'état, ceci aboutit à ce que chacun des processeurs traite de manière synchrone une interruption pour un événement qui aboutirait sinon en résultat à une interruption locale. 20 Le procédé et le système décrits ici sont techniquement avantageux du fait qu'ils aboutissent à la génération d'interruptions de gestion système synchrones pour des événements qui sinon aboutiraient seulement à la génération d'une interruption de gestion système local. Le 25 traitement synchrone d'interruptions de gestion système évite la possibilité d'abandonner ou de faire échouer des interruptions de gestion système d'adresse qui surviennent pendant la période au cours de laquelle une autre interruption de gestion système est en cours. Du fait du 30 système et du procédé décrits ici, des événements qui génèrent uniquement des interruptions de gestion système local vont être reconnues par chaque processeur du système ; plutôt que d'être laissées à d'autres processeurs du système en faveur d'un événement d'interruption qui 35 les supplante. D'autres avantages techniques vont appa- 2907932 4 raître à l'homme du métier à la vue de la description, des revendications et des dessins qui vont suivre. Une compréhension plus complète des modes de réalisation et des avantages de ceux-ci peut être acquise en se re- 5 portant à la description qui suit faite en association avec les dessins annexés, sur lesquels des références numériques identiques désignent des fonctions identiques, et sur lesquels : û la figure 1 est un schéma de l'architecture du système 10 informatique, ù la figure 2 est un ordinogramme des étapes de procédé pour traiter une interruption dans chaque processeur d'un système multiprocesseur, et la figure 3 est un ordinogramme d'un procédé pour exé- 15 cuter un programme de traitement d'interruption de commande système dans le BIOS. Dans le but de la présente description, un système de traitement d'informations peut inclure tout dispositif ou ensemble de dispositifs fonctionnels pour calculer, clas- 20 ser, traiter, émettre, recevoir, récupérer, envoyer, commuter, mémoriser, afficher, manifester, détecter, enregistrer, reproduire, gérer ou utiliser toute forme d'in-formations, d'intelligence, ou de données à des fins commerciales, scientifiques, de commande ou autres. Par 25 exemple, un système de traitement d'informations peut être un ordinateur individuel, un dispositif de mémorisation de réseau, ou tout autre dispositif adapté et peut varier en taille, forme, performance, fonctionnalité et prix. Le système de traitement d'informations peut in30 clure une mémoire à accès direct (RAM), une ou plusieurs ressources de traitement telles qu'une unité centrale de traitement (CPU) ou une logique de commande matérielle ou logicielle, une mémoire à lecture seule (ROM), et/ou d'autres types de mémoire non-volatile. Des composants 35 supplémentaires du système de traitement d'informations 2907932 5 peuvent inclure une ou plusieurs unités de disque, un ou plusieurs ports réseau pour communiquer avec des dispositifs externes ainsi que divers dispositifs d'entrée et de sortie (E/S), tels qu'un clavier, une souris et un affi- 5 cheur vidéo. Le système de traitement d'informations peut également inclure un ou plusieurs bus opérationnels pour transmettre des communications entre les divers composants matériels. Un schéma de l'architecture d'un système informatique, 10 qui est désigné de manière générale par la référence numérique 10 est représenté sur la figure 1. Le système informatique 10 est un système multiprocesseur qui inclut quatre processeurs, lesquels sont identifiés par CPU 0, CPU 1, CPU 2 et CPU 3. Chaque processeur est directement 15 couplé à chacun des autres processeurs. En outre, chaque processeur est directement couplé à un réseau de mémoires local qui est uniquement associé au processeur. Dans l'exemple de la figure 1, la CPU 0 est directement couplée à un réseau de mémoires identifiées en tant que Mé- 20 moire 0 ; la CPU 1 est directement couplée à la Mémoire 1 ; la CPU 2 est directement couplée à la Mémoire 2 ; et la CPU 3 est directement couplée à la Mémoire 3. Dans l'architecture de la figure 1, l'un des processeurs, lequel dans cet exemple est l'unité CPU 2, est couplé à 25 un premier pont E/S 14, lequel est parfois appelé point nord. Le pont E/S 14 est couplé à un second pont E/S 15 ou pont sud. Une mémoire ROM BIOS 16 est couplée au pont sud 15. La pont E/S 15 inclut à la fois un logiciel BIOS standard et, comme indiqué sur la figure 1, un logiciel 30 de gestion de puissance ACPI. Un certain nombre de registres, lesquels sont identifiés sur la figure 1 en tant que registre de déclenchement d'interruption 18 et registre d'état SMI 20 sont inclus dans le pont sud 15. Le système et le procédé qui sont décrits ici concernent 35 un procédé pour gérer des interruptions dans un système s 2907932 6 informatique multiprocesseur. A titre d'exemple, lorsque le nombre d'erreurs portant sur un seul bit dans un ré-seau de mémoires unique atteint une valeur de seuil, une interruption de gestion système est déclenchée. Le pro- 5 cesseur qui est désigné pour traiter l'interruption de gestion système est le processeur qui est directement couplé au réseau de mémoires incluant les erreurs portant sur un seul bit. A titre d'exemple, on suppose qu'un nombre seuil d'erreurs portant sur un seul bit soit atteint 10 dans la mémoire 1. Une interruption de gestion système va être émise, et la CPU 1 va traiter l'interruption de gestion système. Dans cette description, le processeur qui traite l'interruption va être désigné en tant que processeur local, étant donné que ce processeur est local ou 15 directement couplé à la mémoire locale qui est la source de l'interruption de gestion système. En tant que partie du traitement de l'interruption de gestion système par le processeur local, le processeur local écrit dans le registre de déclenchement d'interrup- 20 tion 18 du concentrateur 14 pour générer une interruption de commande système. Le processeur local écrit également un code dans le registre d'état SMI 20. Le code écrit dans le registre d'état SMI 20 comporte un code de raison SMI local, qui représente la raison ou la cause de l'in- 25 terruption de gestion système. L'existence d'un code de raison SMI local dans le registre d'état SMI sert égale-ment d'indicateur pour indiquer que le processeur local va bientôt terminer le traitement de l'interruption de gestion système. 30 En résultat du déclenchement de l'interruption de commande système, le code compris dans le BIOS va périodiquement contrôler le registre d'état SMI 20 pour déterminer si un code de raison SMI local a été écrit dans le registre d'état SMI. Si un code de raison SMI local n'a 35 pas été écrit dans le registre d'état SMI, le registre 2907932 7 d'état SMI 20 va avoir une valeur nulle, égale à zéro. L'existence d'un code de raison SMI local agit en tant que sémaphore qui indique si le processeur local va bien-tôt terminer sa séquence de traitement d'interruption. 5 Lorsqu'une valeur différente de zéro est finalement trouvée dans le registre d'état SMI 20, le BIOS génère une interruption de gestion système douce pour tous les processeurs en écrivant dans le registre de déclenchement d'interruption 18. Une fois qu'un indicateur est écrit 10 dans le registre de déclenchement d'interruption 18, tous les processeurs du système exécutent une interruption de gestion système, en utilisant le code de raison SMI local du registre d'état SMI 20 pour identifier l'action à entreprendre en réponse pendant le traitement de l'interruption de gestion système. Un ordinogramme d'une série d'étapes de procédé pour traiter une interruption dans chaque processeur d'un système multiprocesseur est représenté sur la figure 2. A l'étape 30, l'un des processeurs du système entre en mode 20 de gestion système et commence à traiter une interruption de gestion système. A l'étape 32, le processeur écrit une valeur nulle dans le registre d'état SMI. Le processeur détermine à l'étape 34 si l'interruption de gestion système est une interruption de gestion système locale. Une 25 interruption de gestion système locale est une interruption qui était initialement attribuée au processeur. A titre d'exemple, dans le cas d'une erreur portant sur un bit unique dans la Mémoire 0, l'interruption de gestion système va être traitée par la CPU 0 et, pour la CPU 0, 30 l'interruption de gestion système serait une interruption de gestion système locale. Pour les autres processeurs du système, une interruption de gestion système ultérieure qui est déclenchée pour enregistrer l'erreur portant sur un seul bit de la Mémoire 0 ne sera pas une interruption 35 de gestion système locale. 2907932 8 S'il est déterminé à l'étape 34 que l'interruption de gestion système est une interruption de gestion système locale, le processeur à l'étape 36 génère une interruption de commande système en écrivant dans le registre de 5 déclenchement d'interruption 18. A l'étape 38, le processeur écrit le code de raison SMI local dans le registre d'état SMI 20 et, à l'étape 40, le processeur quitte le traitement de l'interruption de gestion système. A la suite de l'étape 40, le processeur reprend le fonctionne- 10 ment normal à l'étape 42. Cependant, s'il est déterminé à l'étape 34 que l'interruption de gestion système n'est pas une interruption de gestion système locale, il est ensuite déterminé à l'étape 44 si l'interruption de gestion système est une interruption de gestion système 15 "douce" (soft interrupt). Si l'interruption de gestion système n'est pas une interruption de gestion système douce, l'interruption de gestion système standard est traitée à l'étape 46 et le processeur quitte le traite-ment de l'interruption de gestion système à l'étape 40. 20 S'il est déterminé à l'étape 44 que l'interruption de gestion système est une interruption de gestion système douce, il est ensuite déterminé à l'étape 48 si le registre d'état SMI 20 a une valeur non-nulle. S'il est déterminé à l'étape 48 que le registre d'état SMI 20 a une va- 25 leur nulle, alors on sait que, bien que l'interruption de gestion système soit une interruption de gestion système douce, l'interruption de gestion système douce n'a pas été déclenchée à la suite de l'existence d'une interruption standard dans un autre processeur du système infor- 30 matique. Dans ce cas, l'interruption de gestion système douce est traitée à l'étape 52 et le processeur quitte le traitement de l'interruption de gestion système à l'étape 40. S'il est déterminé à l'étape 48 qu'un code de raison SMI locale a été écrit dans le registre d'état SMI, le 35 processeur, sur la base du code de raison SMI local, 2907932 9 traite l'événement d'interruption de gestion système à l'étape 50 et le processeur quitte le traitement de l'interruption de gestion système à l'étape 40: Un ordinogramme d'une série d'étapes de procédé exécutant 5 un programme de traitement d'interruption de commande système dans le BIOS est représenté sur la figure 3. A l'étape 60, le programme de traitement d'interruption de commande système du BIOS est déclenché. A l'étape 62, le BIOS lit le registre d'état SMI et détermine à l'étape 64 10 si la valeur du registre d'état SMI est une valeur nulle. Si la valeur du registre d'état SMI est une valeur nulle, qui indique que le processeur local qui traite l'interruption de gestion système n'a pas terminé le traitement de l'interruption de gestion système, l'ordinogramme de 15 la figure 3 revient aux étapes 62 et 64. Si la valeur du registre d'état SMI n'est pas une valeur nulle, ce qui indique que le processeur local qui traite l'interruption de gestion système a terminé le traitement de l'interruption de gestion système, le programme de traitement d'interruption de commande système à l'étape 66 génère une interruption de gestion système douce pour chacun des autres processeurs et transmet le code de raison SMI local à chacun des processeurs du système informatique. A l'étape 68, le programme de traitement d'interruption de 25 commande système du BIOS se termine. Bien que le système et le procédé présentés ici aient été décrits eu égard à une configuration de mémoire répartie, il doit être compris que le système et le procédé décrits ici ne sont pas limités à la configuration de mémoire re- 30 présentée sur la figure 1. Au contraire, le système et le procédé décrits ici peuvent être utilisés dans un système multiprocesseur quelconque pour gérer les conflits d'utilisation entre les interruptions dans un système multiprocesseur. REVENDICATIONS 1. Procédé pour gérer des interruptions dans un système multiprocesseur (10), caractérisé en ce qu'il comporte les étapes consistant à : exécuter une séquence de traitement d'interruption dans un premier processeur (CPU 0) pour traiter une interruption dans le système, û écrire un indicateur dans un emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3), û déclencher une séquence de traitement d'interruption dans chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) du système informatique, chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) lisant dans l'indicateur de l'emplace- ment de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) en tant qu'entrée dans la séquence de traitement d'interruption dans le processeur (CPU 0, CPU 1, CPU 2, CPU 3). 2. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'indicateur est un indicateur d'identification de la cause de l'interruption. 3. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'étape consistant à écrire un indicateur dans l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) comporte l'étape consistant à écrire un indicateur dans un registre d'un pont E/S (14) dans le système. 4. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'étape consistant à écrire un indicateur dans 2907932 11 l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) comporte l'étape consistant à écrire un indicateur. dans un registre d'un pont sud (15) du système. 5 5. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'étape consistant à déclencher une séquence de traitement d'interruption dans chaque processeur (CPU 0, 10 CPU 1, CPU 2, CPU 3) du système informatique comporte l'étape consistant à écrire dans un registre d'un pont E/S (14) du système pour déclencher une séquence de traitement d'interruption dans chaque processeur du système. 15 6. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'étape consistant à déclencher une séquence de traitement d'interruption dans chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) du système informatique comporte 20 l'étape consistant à écrire dans un registre du pont sud (15) du système pour déclencher une séquence de traite-ment d'interruption dans chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) du système. 25 7. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce qu'il comporte en outre l'étape consistant à exécuter une séquence de traitement d'interruption dans chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) du système. 30 8. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 1, caractérisé en ce que l'étape consistant à exécuter une séquence de traitement d'interruption dans chaque processeur (CPU 0, 2907932 12 CPU 1, CPU 2, CPU 3) du système comporte les étapes consistant à : ù déterminer si l'interruption de gestion système est une interruption de gestion système douce, et 5 ù si l'interruption de gestion système est une interruption de gestion système douce, lire l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) pour déterminer s'il faut exécuter une séquence de traitement d'interruption sur la base du 10 contenu de l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3). 9. Procédé pour gérer des interruptions d'un système mul- tiprocesseur (10) selon la revendication 9, caractérisé 15 en ce que l'étape consistant à lire l'emplacement de mé- moire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) pour déterminer s'il faut exécuter une séquence de traitement d'interruption sur la base du contenu de l'em- placement de mémoire désigné (Mémoire 0, Mémoire 1, Mé- 20 moire 2, Mémoire 3) comporte les étapes consistant à : ù si l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) inclut une valeur non-nulle, exécuter une séquence de traitement d'interruption sur la base d'une valeur non-nulle, et 25 û si l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) inclut une valeur nulle, exécuter une séquence de traitement d'interruption pour traiter l'interruption de gestion système douce. 30 10. Procédé pour gérer des interruptions d'un système multiprocesseur (10) selon la revendication 9, caractérisé en ce que l'emplacement de mémoire désigné (Mémoire 0, Mémoire 1, Mémoire 2, Mémoire 3) est compris dans un pont 35 E/S (14) du système. 2907932 13 11. Système de traitement d'informations, comportant : û une pluralité de processeurs (CPU 0, CPU 1, CPU 2, CPU 3 ), 5 û un registre de déclenchement d'interruption (18), û un registre d'état d'interruption (20), caractérisé en ce qu'il comporte des moyens pour, lors du déclenchement d'une séquence de traitement d'interruption dans un premier processeur (CPU 01) parmi la pluralité de 10 processeurs (CPU 0, CPU 1, CPU 2, CPU 3), écrire un indicateur dans le registre d'état d'interruption (20) pour amener chaque processeur parmi la pluralité de processeurs (CPU 0, CPU 1, CPU 2, CPU 3) à entrer une séquence de traitement d'interruption dans laquelle chaque proces- 15 Beur (CPU 0, CPU 1, CPU 2, CPU 3) lit le contenu du registre d'état d'interruption (20) en tant qu'entrée dans la séquence de traitement d'interruption exécutée dans le processeur (CPU 0, CPU 1, CPU 2, CPU 3). 20 12. Système de traitement d'informations selon la revendication 11, caractérisé en ce qu'il comporte des moyens pour, si le contenu de l'état d'interruption est une va-leur non-nulle, exécuter une séquence de traitement d'interruption qui correspond à la valeur non-nulle du regis25 tre d'état d'interruption (20). 13. Système de traitement d'informations selon la revendication 11, caractérisé en ce qu'il comporte des moyens pour, si le contenu de l'état d'interruption est une va- 30 leur non-nulle, exécuter une séquence de traitement d'interruption qui correspond au traitement d'une interruption de gestion système douce. 14. Système de traitement d'informations selon la reven- 35 dication 11, caractérisé en ce que le registre de déclen- 2907932 14 chement d'interruption (18) est compris dans un pont E/S {14) du système. 15. Système de traitement d'informations selon la reven- 5 dication 11, caractérisé en ce que le registre de déclenchement d'interruption (18) est compris dans un pont sud (15) du système. 16. Système de traitement d'informations selon la reven- 10 dication 11, caractérisé en ce que le registre d'état d'interruption (20) est compris dans un pont E/S (14) du système. 17. Système de traitement d'informations selon la reven- 15 dication 11, caractérisé en ce que le registre d'état d'interruption (20) est compris dans un pont sud (15) du système. 18. Procédé pour traiter des interruptions dans un sys- 20 tème multiprocesseur, caractérisé en ce qu'il comporte les étapes consistant à : û dans un premier processeur (CPU 0) du système, écrire un code de raison d'interruption dans un registre d'état d'interruption (20) du système, 25 û écrire dans un registre d'état d'interruption (20) pour amener chacun des processeurs (CPU 0, CPU 1, CPU 2, CPU 3) du système à entrer une séquence de traite- ment d'interruption, û exécuter une séquence de traitement d'interruption 30 dans chaque processeur (CPU 0, CPU 1, CPU 2, CPU 3) du système, l'opération de la séquence de traitement d'interruption dépendant du contenu du registre d'état d'interruption (20). 2907932 15 19. Procédé pour traiter des interruptions dans un système multiprocesseur selon la revendication 18, caractérisé en ce que, si le contenu du registre d'état d'interruption (20) est une valeur non-nulle, l'étape d'exécu- 5 tion d'une séquence de traitement d'interruption comporte l'étape consistant à exécuter une séquence de traitement d'interruption qui correspond à la valeur non-nulle du registre d'état d'interruption (20). 10 20. Procédé pour traiter des interruptions dans un système multiprocesseur selon la revendication 18, caractérisé en ce que, si le contenu du registre d'état d'interruption (20) est une valeur non-nulle, l'étape consistant à exécuter une séquence de traitement d'interruption cornporte l'étape consistant à traiter une interruption de gestion système douce.