Brevet FR2674654A1 — publié le 19921002

SYSTEME DE COMMANDE DE REGISTRES PARTAGES La présente invention se rapporte à un système de commande de registres partagés dans un système d'ordinateur à multiprocesseur. Classiquement, le système suivant a été proposé comme système de commande de registres partagés de ce type, dans lequel, tout d'abord, des registres partagés en même nombre que les processeurs sont, au préalable, mis en correspondance un par un avec les processeurs et, normalement, chaque processeur utilise un registre partagé spécifique. Le partage du registre entre les processeurs est effectué en divisant logiquement une pluralité de processeurs en un processeur maître et des processeurs esclaves de sorte qu'un registre partagé utilisé par le processeur maître, qui correspond au même processeur, peut être partagé avec les processeurs esclaves, ou bien son partage est annulé (système maître/esclave). Selon le système de commande de registres partagés, de la technique antérieure décrit ci-dessus, un registre partagé correspondant à un processeur spécifique, qui a été utilisé pour une tâche s'exécutant sur le processeur maître, est partagé avec d'autres tâches s'exécutant sur le processeur esclave de sorte que les tâches peuvent communiquer les unes avec les autres par le même registre partagé. En outre, si la tâche est basculée sur le processeur esclave et qu'une autre tâche est en cours, qui n'utilise plus le registre partagé correspondant au processeur maître, alors un registre partagé correspondant à ce processeur esclave peut être attribué à cette autre tâche pour permettre qu'elle soit exécutée. D'autre part, puisque le registre correspondant au processeur maître n'est plus partagé avec le processeur esclave, une autre tâche peut être exécutée en l'utilisant. Toutefois, puisque le processeur maître ne peut pas partager exclusivement les registres correspondants aux autres processeurs, tant que, par exemple, le processeur esclave continue à utiliser les registres partagés correspondants au processeur maître, la tâche en cours d'exécution sur le processeur maître ne peut pas être basculée sur n'importe quelle autre tâche pour y utiliser le registre partagé. C'est un objectif de la présente invention que de créer un système pour commander un système de commande de registres partagés qui permette d'obtenir une commande de partage plus souple sur le registre partagé. Selon la présente invention, il est proposé un système pour commander un registre partagé entre des processeurs dans un système d'ordinateur à multiprocesseur comprenant une pluralité de processeurs, qui comprend des registres partagés entre les processeurs, qui sont accessibles à partir d'une pluralité de processeurs et qui sont présents de la même manière que les processeurs, et une partie de commande de registres partagés possédant un répertoire des registres partagés fournissant une série de bits correspondant un à un à chaque processeur pour chaque registre partagé, la partie de commande de registres partagés gérant l'attribution des registres partagés aux processeurs et leur état inoccupé selon la mise à un et la remise à zéro de chaque bit de la série de bits du répertoire des registres partagés, pour attribuer ainsi n'importe quel registre partagé en réponse à la demande émanant de chaque processeur. En outre, la partie de commande de registres partagés décrite ci-dessous comprend : un moyen de remise à zéro de bit partagé pour remettre à zéro un bit correspondant à ce processeur, parmi les bits d'une série de bits du répertoire des registres partagés, qui correspond à un registre partagé, qui a été utilisé par un processeur ; un moyen de mise à un de bit partagé pour mettre à un un bit correspondant au même processeur, parmi les bits d'une série de bits du répertoire des registres partagés, qui correspond à un registre partagé devant être utilisé à nouveau par le processeur ; un moyen de sélection de registre partagé pour sélectionner un registre partagé, correspondant à une série de bits dont tous les bits sont remis à zéro ; et un moyen de commande d'accès pour permettre l'accès à partir d'un processeur, correspondant à un bit mis à un des bits de chaque série de bits, à un registre partagé, correspondant à la série de bits comprenant le bit mis à un. C'est à dire que, selon le système de commande de registres partagés de la présente invention, la partie de commande de registres partagés, qui est indépendante de chaque processeur, contrôle à quel processeur chacun des registres partagés, qui sont chacun accessibles à partir de la pluralité de processeurs et qui existent en même nombre que les processeurs, sont attribués, ou qu'ils ne sont attribués à aucun des processeurs (état inoccupé), en utilisant un répertoire des registres partagés ayant une série de bits correspondant un à un aux processeurs pour chaque registre partagé de sorte qu'elle peut attribuer n'importe quel registre partagé arbitraire en réponse à la demande émanant de chaque processeur. Habituellement, un registre partagé indépendant est attribué à chaque processeur. Et, si, dans cet état, un certain processeur (A) partage le registre partagé (b), qui a été utilisé par un autre processeur (B), alors, parmi les bits de la série de bits qui correspondent au registre partagé (a) utilisé auparavant, un bit correspondant au processeur (A) est remis à zéro par le moyen de remise à zéro de bit partagé tandis qu'un bit de la série, correspondant au processeur (B), qui est partagé de nouveau par le processeur (A) est mis à un par le moyen de mise à un de bit partagé. Par conséquent, le moyen de commande d'accès permet que les processeurs (A) et (B) aient accès aux registres partagés (a) et (b). En outre, à ce moment, le registre partagé est géré dans l'état inoccupé comme non utilisé.Ensuite, si le processeur (B) arrête l'utilisation du registre partagé (b) et demande l'utilisation du registre partagé inoccupé, le moyen de remise à zéro de bit partagé de la partie de commande de registres partagés remet alors à zéro le bit de la série (correspondant au registre partagé (b) du répertoire des registres partagés), qui correspond au processeur (B), le moyen de sélection de registre partagé sélectionne le registre partagé (a) correspondant à la série de bits dont tous les bits sont remis à zéro et le moyen de mise à un de bit partagé met à un le bit de la série de bits correspondant au registre partagé (a) du répertoire des registres partagés, qui correspond au processeur (B). Par conséquent, le moyen de commande d'accès permet l'accès à partir du processeur (B) au registre partagé (a). Les caractéristiques et avantages de l'invention ressortiront d'ailleurs de la description qui va suivre à titre d'exemple en référence aux dessins annexés, sur lesquels la figure 1 est un schéma de principe de la partie essentielle d'un système de multiprocesseur réalisant un système de commande de registres partagés selon la présente invention la figure 2 est une vue montrant un état dans lequel un registre partagé indépendant est attribué à chaque processeur la figure 3 est une vue montrant un état dans lequel un registre partagé R2, dans l'état de la figure 2, est utilisé pour un processeur Pi ; et la figure 4 est une vue montrant un état dans lequel, un registre partagé non utilisé R1, dans l'état de la figure 3, est utilisé pour un processeur P2. La figure 1 est un schéma de principe d'une partie essentielle d'un système d'ordinateur à multiprocesseur réalisant un système de commande de registres partagés selon la présente invention. Ce système comprend quatre processeurs Pi, P2, P3 et P4, quatre registres partagés Ri, R2, R3 et R4 accessibles à partir de chacun des processeurs P1 à P4 et une partie de commande de registres partagés 1. La partie de commande de registres partagés 1 est créée pour commander le partage des registres partagés R1 à R4 entre les processeurs P1 à P4 et comprend un répertoire des registres partagés 2, un moyen de commande 11, un moyen de remise à zéro de bit partagé 12, un moyen de sélection de registre partagé 13, un moyen de mise à un de bit partagé 14, un moyen 15 pour attribuer des références à une zone de mémorisation du registre partagé et pour la remettre à jour, un moyen de commande d'accès 16 et des zones de mémorisation de registre partagé M1 à M4. Le répertoire des registres partagés 2 comprend des séries de bits 21 à 24 correspondant un à un aux registres partagés R1 à R4. Chacune des séries de bits 21 à 24 est composée de quatre bits, les bits bll, b21, b31 et b41 correspondant chacun au processeur P1, les bits bl2, b22, b32 et b42 au processeur P2, les bits b13, b23, b33 et b43 au processeur P3, et les bits b14, b24, b34 et b44 au processeur P4. Dans ce mode de réalisation, selon la valeur de chaque bit (valeur logique 1 ou 0), on contrôle quel registre partagé est en train d'être utilisé par quel processeur.Par exemple, si le registre partagé R1 est utilisé par le processeur P1, alors, parmi les bits bll, b12, b13 et bl4 de la série de bits 21 correspondant au registre partagé R1, seul le bit bll correspondant au processeur P1 est mis à la valeur logique 1, et les autres b12, b13 et b14 sont mis à la valeur logique 0. De plus, si le même registre R1 est utilisé à la fois par les processeurs P1 et P2, les bits bll et b12 sont alors mis à la valeur logique 1, les autres b13 et b14 étant mis à la valeur logique 0. Le moyen de commande d'accès 16 permet l'accês, à partir de n'importe quel processeur correspondant au bit mis à un de chacune des séries de bit 21 à 24 du répertoire des registres partagés, à n'importe lequel des registres partagés R1 à R4 correspondant à la série de bits comprenant ce bit mis à un. Chacun des processeurs P1 à P4 a accès aux registres partagés R1 à R4 par l'intermédiaire de ce moyen de commande d'accès 16. Le moyen de remise à zéro de bit partagé 12 change tout bit mis à la valeur logique 1, qui est compris dans les séries de bits 21 à 24 du répertoire des registres partagés 2, en la valeur logique 0. Le moyen de sélection de registre partagé 13 cherche toute série de bits dont tous les bits sont mis à la valeur logique 0 parmi les séries de bits 21 à 24 pour détecter un registre partagé qui n'est pas en cours d'utilisation par un processeur. Par opposition au moyen de remise à zéro de bit partagé 12, le moyen de mise à un de bit partagé 14 change tout bit mis à la valeur logique 0, qui est inclus dans les séries de bits 21 à 24 du répertoire des registres partagés 2, en la valeur logique 1. Les zones de mémorisation de registre partagé Ml à M4 correspondent une à une aux processeurs P1 à P4 pour conserver l'information indiquant le registre partagé utilisé par chacun des processeurs. Le moyen 15 pour consulter et mettre à jour la zone de mémorisation de registre partagé détecte le registre partagé en cours d'utilisation par chacun des processeurs en se référant au contenu des zones de mémorisation de registre partagé M1 à M4, chacune correspondant au processeur, et remet simultanément à jour le contenu des zones de mémorisation de registre partagé correspondantes M1 à M4 lorsque le registre partagé utilisé est commuté. Le moyen de commande 11 reçoit la demande pour les registres partagés R1 à R4 venant de chaque processeur P1 à P4 et commande chacun des moyens 12 à 15 décrits cidessus afin de commander le partage des registres partagés R1 à R4 entre les processeurs PI à P4. Le fonctionnement de ce mode de réalisation va maintenant être décrit. Dans le système d'ordinateur à multiprocesseur selon le mode de réalisation de la figure 1, dans son état initial, un registre partagé indépendant est attribué à chacun des processeurs Pi à P4. La figure 2 est une vue explicative d'un tel état initial, dans lequel, parmi les bits bll à b14 de la série de bits 21 du répertoire des registres partagés 2, seul le bit bll est mis à la valeur logique 1 de sorte que le registre partagé R1 est utilisé seulement par le processeur P1. De manière analogue, seul le bit b22 de la série de bits 22, seul le bit b33 de la série de bits 23 et le bit b44 de la série de bits 24 sont chacun mis à la valeur logique 1 de sorte que les registres partagés R2, R3 et R4 sont chacun utilisés seulement par les processeurs P2, P3 et P4, respectivement.Par ailleurs, à ce moment, l'information représentant les registres partagés Rl, R2, R3 et R4 est mémorisée alors dans les zones de mémorisation de registre partagé Ml, M2, M3 et M4. Si le contenu du répertoire des registres partagés 2 est tel que montré à la figure 2 et que les processeurs P1, P2, P3 et P4 sont autorisé à accéder à l'un quelconque des registres partagés, alors le moyen de commande d'accès 16 peut rendre possible l'accès respectivement aux registres partagés R1, R2, R3 et R4. Dans l'état de la figure 2, si, par exemple, une tâche en cours d'exécution sur le processeur P1, qui avait utilisé le registre partagé R1, est commutée et que, par exemple, une autre tâche utilisant le registre partagé R2, qui a été utilisé par la tâche s'exécutant sur le processeur P2, doit être exécutée, alors le processeur P1 demande à la partie de commande de registre partagé 1 de partager le registre partagé en cours d'utilisation par le processeur P2. Le moyen de commande 11 de la partie de commande de registre partagé 1, qui a reçu la demande, se réfère d'abord à la zone de mémorisation de registre partagé M1 correspondant au processeur Pi par le moyen 15 pour attribuer des références à la zone de mémorisation de registre partagé et pour la remettre à jour afin de reconnaître que le registre partagé R1 en cours d'utilisation par le processeur Pi est Rl. Ensuite, comme cela est montré à la figure 3, le moyen de remise à zéro de bit partagé 12 remet à la valeur logique 0 le bit bll (correspondant au processeur P1) de la série de bit 21 correspondant au registre partagé R1 qui a été utilisé par le processeur P1. Ensuite, le moyen de commande 11 se réfère à la zone de mémorisation de registre partagé M2 correspondant au processeur P2 par les moyens 15 pour consulter et mettre à jour la zone de mémorisation de registre partagé, et reconnaît que le registre partagé R2 en cours d'utilisation par le processeur P2 est R2, pour mettre ainsi à la valeur logique 1, par le moyen de mise à un de bit partagé 14, le bit b21 (correspondant au processeur P1) de la série de bits 22 correspondant au registre partagé R2 en cours d'utilisation par le processeur P2, comme cela est montré à la figure 3. Ensuite, puisque le registre partagé en cours d'utilisation par le processeur Pi a été commuté de R1 à R2, le moyen de commande il change le contenu de la zone de mémorisation de registre partagé Ml, correspondant au processeur P1, en l'information indiquant le registre partagé R2, par le moyen 15 pour consulter et mettre à jour la zone de mémorisation de registre partagé, comme cela est montré à la figure 3. Au moyen d'une telle opération effectuée par la partie de commande de registre partagé 1, lorsqu'un quelconque accès est effectué à partir du processeur PI, le moyen de commande d'accès 16 rend accessible le registre partagé R2 à la place du registre partagé R1. Puisque le registre partagé R2 est également en cours d'utilisation par le processeur P2, les deux processeurs P1 et P2 partageront le registre partagé R2. Ensuite, dans l'état de la figure 3, si la tâche en cours d'exécution sur le processeur P2, qui a partagé le registre partagé R2 avec le processeur P1, est commutée, et qu'une tâche utilisant un registre partagé qui n'est pas utilisé du tout, c'est-à-dire, un registre partagé différent de ceux pour les tâches en cours d'exécution sur d'autres processeurs P1, P3 et P4, est exécutée par le processeur P2, le processeur P2 demande alors l'utilisation du registre partagé inoccupé à la partie de commande de registre partagé 1. A réception de cette demande, le moyen de commande 11 de la partie de commande de registre partagé 1 se réfère d'abord à la zone de mémorisation de registre partagé M2 correspondant au processeur P2, par le moyen 15 pour consulter et mettre à jour la zone de mémorisation de registre partagé, afin de reconnaître que le registre partagé en cours d'utilisation par le processeur P2 est R2. Alors, comme cela est montré à la figure 4, le bit b22 (correspondant au processeur P2) de la série de bits 22 correspondant au registre partagé R2, qui a été utilisé par le processeur P2, est remis à la valeur logique 0, par le moyen de remise à zéro de bit partagé 12. Ensuite, le moyen de commande 11 sélectionne le registre partagé correspondant à la série de bits dont tous les bits ont été mis à la valeur logique 0 par le moyen de sélection de registre partagé 13. Dans ce cas, comme cela est montré à la figure 3, tous les bits bll à b14 de la série de bits 21 ont été mis à la valeur logique 0 et, par conséquent, le registre partagé R1 sera sélectionné. Ensuite, comme cela est montré à la figure 4, le moyen de commande 11 met à la valeur logique 1 le bit bl2 (correspondant au processeur P2) de la série de bits 21 correspondant au registre partagé R1 sélectionné, décrit ci-dessus. En outre, puisque le registre partagé utilisé par le processeur P2 a été commuté, le moyen de commande 11 change le contenu de la zone de mémorisation de registre partagé M2 correspondant au processeur P2 en un contenu indiquant le registre partagé R1, par le moyen 15 pour consulter et mettre à jour la zone de mémorisation de registre partagé, comme cela est montré à la figure 4. Grâce à l'opération décrite ci-dessus, effectuée par la partie de commande de registre partagé 1, lorsqu'un quelconque accès est effectué par le processeur P2, le moyen de commande d'accès 16 rend accessible le registre partagé R1 à la place du registre partagé R2. Comme cela a été décrit ci-dessus, selon ce mode de réalisation, une attribution plus efficace des registres partagés devient possible entre les processeurs dans le système d'ordinateur à multiprocesseur, sans parler du mode d'attribution des registres partagés, ce qui est le cas dans le système matre/esclave classique, tout autre mode d'attribution peut être réalisé. Par conséquent, la tâche sur le processeur qui avait initialement utilisé le registre partagé, peut être commutée, même si toute autre tâche utilisant le même registre partagé est en cours d'exécution sur un autre processeur, et le rendement du système d'ordinateur à multiprocesseur utilisant le partage de registre peut être augmenté. Par ailleurs, bien que dans ce mode de réalisation, les zones de mémorisation de registre partagé M1 à M4 sont prévues de manière à ce que le registre partagé en cours d'utilisation par chacun des processeurs P1 à P4 puisse être immédiatement détecté, elles peuvent également être éliminées étant donné qu'une détection analogue peut être effectuée en se référant au répertoire des registres partagés 2. REVENDICATIONS 1. Système pour commander des registres partagés (R1, R2, R3, R4) entre des processeurs (P1, P2, P3, P4) dans un système d'ordinateur à multiprocesseur comportant une pluralité de processeurs (P1, P2, P3, P4) comprenant une pluralité de registres partagés (Rl, R2, R3, R4) chacun étant accessible à partir d'une pluralité de processeurs (P1, P2, P3, P4), lesdits registres partagés (Ri, R2, R3, R4) existant en même nombre que lesdits processeurs (P1, P2, P3, P4), et une partie de commande de registre partagé ayant un répertoire des registres partagés (2) fournissant une série de bits (21, 22, 23, 24) correspondant un à un auxdits processeurs (P1, P2, P3, P4) pour chaque registre partagé (R1, R2, R3, R4), ladite partie de commande de registre partagé gérant l'attribution desdits registres partagés (R1, R2, R3, R4) auxdits processeurs (P1, P2, P3, P4) et leur état inoccupé en fonction de la mise à un et de la remise à zéro de chaque bit (bll, b12, ..., b44) de la série de bits (21, 22, 23, 24) dudit répertoire des registres partagés (2) et attribuant un registre partagé arbitraire en réponse à la demande émanant de chacun desdits processeurs (P1, P2, P3, P4). 2. Système pour commander des registres partagés (R1, R2, R3, R4) selon la revendication 1, dans lequel ladite partie de commande de registre partagé comprend un moyen de remise à zéro de bit partagé (12) pour, parmi les bits d'une série de bits (21, 22, 23, 24) dudit répertoire des registres partagés (2), qui correspond à un registre partagé qui a été utilisé par ledit processeur, remettre à zéro un bit correspondant au processeur ; un moyen de mise à un de bit partagé pour mettre à un un bit correspondant à un registre partagé devant être utilisé de nouveau par ledit processeur ; un moyen de sélection de registre partagé (13) pour sélectionner un registre partagé correspondant à une série de bits (21, 22, 23, 24) dont tous les bits sont chacun remis à zéro ; et un moyen de commande d'accès (16) pour permettre l'accès, à partir d'un processeur correspondant à un bit mis à un des bits de chaque série de bits (21, 22, 23, 24) dudit répertoire des registres partagés (2), à un registre partagé, correspondant à un registre partagé correspondant à une série de bits (21, 22, 23, 24) comprenant ledit bit mis à un.