FR2784478A1 - Architecture de verrou pour grand systeme - Google Patents
Architecture de verrou pour grand systeme Download PDFInfo
- Publication number
- FR2784478A1 FR2784478A1 FR9812651A FR9812651A FR2784478A1 FR 2784478 A1 FR2784478 A1 FR 2784478A1 FR 9812651 A FR9812651 A FR 9812651A FR 9812651 A FR9812651 A FR 9812651A FR 2784478 A1 FR2784478 A1 FR 2784478A1
- Authority
- FR
- France
- Prior art keywords
- processor
- resource
- value
- lock
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
L'architecture de verrous pour système informatique comprend plusieurs processeurs (10, 11, 12, 13) telle que chaque processeur (10) demandant une ressource du système, prenne ladite ressource si un premier état de verrou indique ladite ressource libre et se mette en attente active si un deuxième état de verrou indique ladite ressource prise. A un verrou est associée une structure de données qui comprend :- un compteur qui indique un nombre de processeurs (10, 11, 12, 13) ayant demandé ladite ressource sans l'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle;- une première donnée propre au dit processeur (10), positionnée d'une première valeur sur une deuxième valeur par ledit processeur (10) détectant le deuxième état de verrou;- au moins une deuxième donnée propre à un autre processeur (11, 12, 13), positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur (1 1, 12, 13) détectant le deuxième état de verrou;de façon à ce que la deuxième valeur de la première donnée mette ledit processeur (10) en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur (11, 12, 13) libérant ladite ressource,de façon à ce que ledit processeur (10), ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource.
Description
Architecture de verrou pour grand système.
Le domaine de l'invention est celui des attributions de ressources partagées d'un système informatique à des processus, de façon à ce qu'un processus puisse momentanément bénéficier en exclusivité de l'attribution d'une ressource.
Selon l'état de la technique, on connaît un moyen simple qui consiste à mettre un verrou sur une ressource. Un état libre du verrou permet à un processus de s'attribuer la ressource. Un état pris du verrou interdit au processus de s'attribuer la ressource. Lorsqu'un processus a besoin de s'attribuer une ressource, il accède à l'état du verrou de cette ressource au moyen d'une opération atomique. Une opération est considérée atomique si l'état du verrou ne peut tre modifié par aucun autre processus entre le début et la fin de l'opération. L'opération atomique consiste essentiellement à lire l'état du verrou et à le mettre à l'état pris. Si en début d'opération, I'état du verrou est libre, le processus considéré peut s'attribuer la ressource. La mise à l'état pris en fin d'opération garantit l'exclusivité de l'attribution au processus.
En effet, un autre processus effectuant une opération atomique sur ce verrou lit alors en début d'opération un état pris qui lui interdit de s'attribuer la ressource.
En effet, un autre processus effectuant une opération atomique sur ce verrou lit alors en début d'opération un état pris qui lui interdit de s'attribuer la ressource.
L'autre processus se met alors en attente de la disponibilité de la ressource en réitérant son opération atomique jusqu'à détecter un état libre du verrou. Le processus considéré remet le verrou à l'état libre lorsqu'il n'a plus besoin de la ressource.
Ce moyen simple n'apporte pas entière satisfaction pour un nombre élevé de processus exécutés en parallèle sur un nombre élevé de processeurs.
En effet, si plusieurs processus ont besoin d'une mme ressource, un seul processus peut s'attribuer la ressource en ayant détecté un état libre du verrou associé, au moyen de son opération atomique. Au moment où le processus détenteur du verrou remet celui-ci à l'état libre, un nombre considérable de processus risque de lancer des opérations atomiques ayant pour conséquence d'occuper intempestivement le bus système. Le verrou est généralement résidant en mémoire. Dans le cas d'une mémoire à accès non uniforme, le problème est amplifié. Une mémoire à accès non uniforme est une mémoire pour laquelle le temps d'accès varie en fonction de la localisation des processeurs par rapport à la localisation de la mémoire. On remarque que les opérations atomiques bénéficiant d'un temps d'accès plus court au verrou sont privilégiées par rapport à des opérations atomiques ne bénéficiant pas du temps d'accès le plus court. Ceci a pour effet de nuire à une répartition équitable d'attributions de la ressource aux processus. En particulier, les processus bénéficiant d'un temps d'accès court risquent de monopoliser la ressource. D'autre part, la localisation de t'état valide du verrou risque de migrer de façon incontrôlée dans la mémoire.
Une solution connue consiste à attribuer à une ressource un jeton ne pouvant tre détenu à un instant donné que par un seul processus. Lorsque le processus détenteur du jeton n'a plus besoin de la ressource, il passe le jeton à l'un des processus en attente de cette ressource. Le problème est celui de savoir ce que fait le processus détenteur du jeton si aucun processus n'est en attente de la ressource. Ceci nécessite une gestion indépendante des jetons disponibles qui ne va pas dans le sens de la simplicité.
L'objet de l'invention est une solution simple qui pallie les inconvénients précités de t'état de la technique. L'invention concerne une architecture de verrous pour système informatique comprenant plusieurs processeurs, telle que chaque processeur demandant une ressource du système, prenne ladite ressource si un premier état de verrou indique ladite ressource libre et se mette en attente active si un deuxième état de verrou indique ladite ressource prise.
L'architecture est caractérisé en ce qu'à un verrou est associée une structure de données qui comprend : -un compteur qui indique un nombre de processeurs ayant demandé ladite ressource sans t'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle ; -une première donnée propre au dit processeur, positionnée d'une première valeur sur une deuxième valeur par ledit processeur détectant le deuxième état de verrou ; -au moins une deuxième donnée propre à un autre processeur, positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur détectant le deuxième état de verrou ;
de façon à ce que la deuxième valeur de la première donnée mette ledit processeur en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur libérant ladite ressource,
de façon à ce que ledit processeur, ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource.
L'architecture est caractérisé en ce qu'à un verrou est associée une structure de données qui comprend : -un compteur qui indique un nombre de processeurs ayant demandé ladite ressource sans t'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle ; -une première donnée propre au dit processeur, positionnée d'une première valeur sur une deuxième valeur par ledit processeur détectant le deuxième état de verrou ; -au moins une deuxième donnée propre à un autre processeur, positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur détectant le deuxième état de verrou ;
de façon à ce que la deuxième valeur de la première donnée mette ledit processeur en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur libérant ladite ressource,
de façon à ce que ledit processeur, ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource.
Un avantage notable de l'invention sur t'état de la technique précédemment cité est qu'un processus cherchant à s'attribuer une ressource n'effectue qu'un seul accès au compteur à l'instant de demande de la ressource. Si la ressource est libre, le compteur a les mmes effets qu'un verrou classique. Si la ressource est prise, I'autorisation d'attribution de la ressource est à l'initiative du processus qui la détient. Ceci a pour effet de soulager les transactions sur le bus système et de pouvoir contrôler les attributions de ressources aux processus.
Un exemple préféré de mise en oeuvre de l'invention est enseigné dans la description qui suit en référence aux figures où : -la figure 1 représente une architecture de verrou pour système
multiprocesseur ; -la figure 2 décrit un procédé pour attribuer l'exclusivité d'une ressource à
chaque processeur qui la demande ; -la figure 3 présente un environnement avec mémoire à accès non uniforme.
multiprocesseur ; -la figure 2 décrit un procédé pour attribuer l'exclusivité d'une ressource à
chaque processeur qui la demande ; -la figure 3 présente un environnement avec mémoire à accès non uniforme.
En référence à la figure 1, un système informatique comprend plusieurs processeurs 10,11,12,13, de type unité centrale de traitement CPU et une mémoire adressable 64 accessible par les processeurs au moyen d'un bus système 65. Chacun des processeurs 10,11,12,13, dispose respectivement dans une antémémoire 60,61,62,63, d'une copie des données de la mémoire 64 qu'il traite. Un mécanisme antémémoire connu, évite au processeur d'émettre une requte d'accès sur le bus 65 s'il dispose d'une copie à jour dans son antémémoire de la donnée qu'il traite.
Dans la mémoire 64, une table 1 est constituée de lignes dont chacune comprend un compteur associé à une ressource partageable du système.
Chaque ligne de la table 1 est accessible par les processeurs 10,11,12,13 du système au moyen d'un mécanisme d'adressage indexé. Le mécanisme d'adressage indexé consiste de façon connue à attribuer à chaque ligne un numéro de ligne qui est ajouté à une adresse de début de table pour obtenir une adresse absolue de ligne. Ainsi, les numéros de lignes restent inchangés quelque soit la localisation physique de la table 1, dont seule est fonction
I'adresse de début de table.
I'adresse de début de table.
Dans la mémoire 64, une table 4 est constituée de lignes dont chacune contient une donnée propre au processeur 10. Une table 5 est constituée de lignes dont chacune contient une donnée propre au processeur 11. Une table 6 est constituée de lignes dont chacune contient une donnée propre au processeur 12. Une table 7 est constituée de lignes dont chacune contient une donnée propre au processeur 13.
Chaque ligne des tables 4 à 7 est accessible par les processeurs 10,11,12, 13 du système au moyen d'un mécanisme d'adressage indexé identique à celui de la table 1.
Le compteur contenu dans une ligne de la table 1 et les données contenues dans chaque ligne des tables 4,5,6,7, de numéro de ligne identique à celui de la table 1, constituent une structure de données associée à un verrou dont un premier état indique qu'une ressource identifiée par ce numéro de ligne, est libre. Un deuxième état du verrou indique que cette ressource est prise.
Une valeur nulle du compteur indique qu'aucun processeur 10,11,12,13, n'a demandé la ressource, ou que tout processeur ayant demande la ressource, I'a prise et l'a libérée. Cette valeur nulle correspond au premier état de verrou.
Chaque demande de la ressource par un processeur 10,11,12,13, incrémente le compteur. Chaque libération de la ressource par un processeur 10,11,12,13 qui I'a prise, décrémente le compteur. Ainsi le compteur indique un nombre de processeurs ayant demandé la ressource, dont un processeur 10 qui I'a prise, ne I'a pas libérée.
Considérant la donnée contenue dans la ligne de la table 4, de numéro identique à celui de la table 1, une première valeur indique que le processeur 10 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 10 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 10 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 10 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11, 12,13 qui libère la ressource.
Considérant la donnée contenue dans la ligne de la table 5, de numéro identique à celui de la table 1, une première valeur indique que le processeur 11 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 11 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 11 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 11 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 10,12,13 qui libère la ressource.
Considérant la donnée contenue dans la ligne de la table 6, de numéro identique à celui de la table 1, une première valeur indique que le processeur 12 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 12 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 12 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 12 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11,10,13 qui libère la ressource.
Considérant la donnée contenue dans la ligne de la table 7, de numéro identique à celui de la table 1, une première valeur indique que le processeur 13 n'a pas demandé la ressource répertoriée par ce numéro de ligne ou que, si le processeur 13 a demandé cette ressource, il peut la prendre. Une deuxième valeur indique que le processeur 13 a demandé la ressource répertoriée par ce numéro de ligne et qu'il a détecté le deuxième état de verrou qui lui interdit de prendre la ressource. Le processeur 13 se met alors en attente active qui consiste à lire sa donnée propre jusqu'à ce que celle-ci soit mise sur sa première valeur par un autre processeur 11,12,10 qui libère la ressource.
On remarque que pour chaque numéro de ligne de la table 1, le contenu du compteur est une image du nombre de tables 4,5,6,7, comprenant, dans la ligne de numéro identique au numéro de ligne de la table 1, une donnée à sa deuxième valeur. Ici, le nombre de tables est inférieur d'une unité au contenu du compteur.
L'ensemble des tables 1,4,5,6,7 constitue une structure de données associée aux verrous d'un ensemble de ressources répertoriées par les numéros de lignes de ces tables.
La figure 2 décrit un procédé exécuté par chaque processeur pour demander une ressource dans le système informatique.
Chaque processeur 10,11,12,13 qui demande l'exclusivité d'une ressource (res) exécute une opération atomique 2. A la ressource (res) correspond un numéro de ligne de la table 1 qui contient le compteur associé à cette ressource. L'opération atomique consiste à lire et à changer la valeur compt (res) du compteur sans qu'un autre processeur ne puisse accéder au compteur entre la lecture et le changement de valeur. La lecture du compteur s'effectue à une adresse absolue qui est la somme de l'adresse absolue de début de la table 1 et du numéro de ligne. Le changement de valeur du compteur est ici une incrámentation.
L'opération atomique 2 est suivie d'un test 3 sur la valeur du compteur. Une valeur nulle du compteur avant incrémentation indique que la ressource (res) était disponible. Dans ce cas, après l'opération 2, la valeur compt (res) n'est pas strictement supérieure à un, le processeur prend la ressource en étape 14 jusqu'à recevoir un ordre de libérer la ressource. La réception de cet ordre contrôlée par un test 15, déclenche un test 16.
Une valeur non nulle du compteur avant incrémentation indique que la ressource (res) n'était pas disponible. Dans ce cas, après l'opération 2, la valeur compt (res) est strictement supérieure à un. En étape 8, le processeur positionne à sa deuxième valeur, sa donnée propre contenue dans la ligne de la table 4,5,6,7 de numéro correspondant à la ressource. Le processeur se met en état d'attente active jusqu'à ce que sa donnée propre revienne à sa première valeur au moyen d'un test 9 qui boucle tant que sa donnée propre est à sa deuxième valeur. Comme nous le verrons par la suite, la donnée propre est repassé à sa première valeur par une étape 17 d'un flot d'instructions identique exécuté par un autre processeur qui détient la ressource. Lorsque la donnée propre est repassé à sa première valeur, un résultat négatif du test 9 déclenche l'étape 14 qui est poursuivie comme expliqué dans le paragraphe précédent.
Le test 16 vérifie la valeur Compt (res) associée à la ressource (res). Une valeur Compt (res) supérieure à un, signifie qu'au moins un autre processeur est en attente de la ressource (res). La valeur de Compt (res) peut avoir été incrémentée au delà de un, avant ou après déclenchement de l'étape 14, par un autre processeur ayant exécuté l'opération 2. Si un autre processeur est en attente de la ressource (res), le résultat du test 16 déclenche t'étape 17 de passation de disponibilité de la ressource à un tel autre processeur et une opération atomique 18. Si aucun autre processeur n'est en attente de la ressource, le processeur qui libère la ressource, exécute directement l'opération atomique 18.
L'étape 17 consiste essentiellement en un appel à une fonction de passation à un autre processeur selon une stratégie déterminée.
A titre d'exemple, une première stratégie consiste à passer la disponibilité de ressource à un autre processeur par tour de rôle (round Robin dans la littérature en langue anglaise). Le processeur 11 qui libère la ressource consulte la table 6 du processeur 12 dont le numéro d'identification de processeur PID suit directement le numéro PID du processeur qui libère la ressource. Le processeur 11 lit la donnée contenue dans la ligne de la table 6 dont le numéro correspond à la ressource libérée. Si la donnée est à sa deuxième valeur, attente de la ressource, le processeur 11 positionne le contenu de la ligne sur la première valeur qui sera interprété par le processeur 12 comme une disponibilité de ressource pour déclencher l'étape 14 de son flot d'instructions. Si la donnée est à sa première valeur, non en attente de la ressource, le processeur 11 consulte la table 7 du processeur 13 dont le numéro d'identification de processeur PID suit directement le numéro PID du processeur qui n'est pas en attente de la ressource. Les actions précédemment expliquées sont répétée jusqu'à lecture d'une donnée à sa deuxième valeur, éventuellement jusqu'à consultation de la table 4 du processeur 10 dont le numéro d'identification de processeur PID précède directement le numéro PID du processeur qui libère la ressource. Les explications qui précèdent en référence au processeur 11 sont valables pour tout processeur 10,12,13.
Cette première stratégie garantie qu'il n'y aura aucune famine, c'est à dire que chaque processeur disposera de la ressource puisque la consultation est circulaire.
Cette première stratégie garantie qu'il n'y aura aucune famine, c'est à dire que chaque processeur disposera de la ressource puisque la consultation est circulaire.
A titre d'exemple, une deuxième stratégie consiste à passer la disponibilité de ressource à un autre processeur qui est le premier a avoir demandé la ressource après le processeur qui la libère. Pour mettre en oeuvre la deuxième stratégie, la première valeur de donnée est une valeur nulle et la deuxième valeur de donnée propre est une date à laquelle le processeur exécute l'opération atomique 2. Cette date est obtenue par le processeur qui exécute l'opération atomique 2, dans un registre de date TBR incrémenté de façon connue au moyen d'une horloge de cadence. Le processeur qui libère la ressource positionne à zéro une donnée qui est à la plus faible valeur de date non nulle parmi les processeurs en attente.
II est intéressant de noter que pour mettre en oeuvre le procédé, un processeur 10, 20,30,40 n'a besoin de connaître qu'un numéro de ligne correspondant à la ressource demandée, identique pour chacune des tables 1,4,5,6,7, et
I'adresse de début de chacune des tables 1,4,5,6,7. Le processeur 10,11, 12,13 qui demande une ressource, fait au plus deux accès à la table 1 au moyen des opérations atomiques 2 et 18, pour cette ressource. Le processeur 10,11,12,13 qui se met en attente active sur une ressource au moyen du test 9 est le seul à consulter de façon intensive la table 4,5,6,7 qui lui est propre.
I'adresse de début de chacune des tables 1,4,5,6,7. Le processeur 10,11, 12,13 qui demande une ressource, fait au plus deux accès à la table 1 au moyen des opérations atomiques 2 et 18, pour cette ressource. Le processeur 10,11,12,13 qui se met en attente active sur une ressource au moyen du test 9 est le seul à consulter de façon intensive la table 4,5,6,7 qui lui est propre.
Le processeur 10,11,12,13 qui libère une ressource, fait au plus un accès à chacune des tables 4, 5,6,7 en étape 17. L'architecture décrite minimise considérablement une contention sur le bus à la libération d'une ressource qui ne fait intervenir que deux processeurs au plus, celui qui libère la ressource et éventuellement celui à qui la ressource est attribuée. II n'est ainsi pas nécessaire de gérer une liste d'attente.
Le processeur 10 qui effectue l'opération atomique 2 fait un premier accès sur le bus 65 pour disposer d'une copie du compteur dans son antémémoire 60 et un deuxième accès sur le bus 65 pour le test 16 si sa copie du compteur en antémémoire 60 n'est pas à jour. Dans le meilleur des cas où aucun autre processeur ne demande la ressource, un seul accès bus suffit. Si le verrou est sur son deuxième état, le processeur 10 fait un troisième accès sur le bus 65 en étape 8 pour disposer d'une copie de sa donnée propre dans son antémémoire 60 qu'il positionne à sa deuxième valeur. L'attente active du processeur 10 ne nécessite pas de nouvel accès au bus 65 tant que sa copie en antémémoire 60 reste sur sa deuxième valeur. Au moment du positionnement de sa donnée propre à sa première valeur, sa copie en antemémoire est automatiquement remise à jour par le protocole de cohérence antemémoire. En étape 17, le processeur 10 fait un nombre fini de quatrièmes accès sur le bus 65, imité par le nombre de processeurs du système, jusqu'à déterminer un processeur distinct pour positionner la donnée propre du processeur distinct à sa première valeur. Le nombre d'accès au bus 65 pour demander et libérer une ressource est donc ramené à un nombre fini. Ceci présente un avantage en comparaison d'une architecture de verrou classique où une attente active d'un processeur jusqu'à prise d'une ressource pouvait engendrer un nombre indéterminé d'accès bus pour consulter les états du verrou.
Les explications qui précèdent pour le processeur 10 avec son antémémoire 60, restent valables pour chacun des processeurs 11, 12,13 avec respectivement son antémémoire 61,62,63.
L'architecture et le procédé qui viennent d'tre décrit sont intéressants dans un environnement de type SMP, UMA ou NUMA ou de type distribué.
L'environnement de type SMP est un environnement dans lequel les processeurs ont un comportement identique vis à vis des ressources, vu du système d'exploitation. L'accès à la mémoire est uniforme (UMA pour uniform memory access dans la littérature anglaise) lorsque le temps d'accès à la mémoire est indépendant de la localisation physique des processeurs. L'accès à la mémoire est non uniforme (NUMA pour non uniform memory access dans la littérature anglaise) lorsque le temps d'accès à la mémoire dépend de la localisation physique des processeurs.
Dans 1'environnement SMP, UMA ou NUMA, le meilleur parti de I'architecture décrite est obtenu en attribuant à chaque processeur une table de verrous du type des tables 4,5,6,7. II est possible aussi d'attribuer une table à un groupe de processeurs donné. On retrouve alors un comportement des processeurs au sein du groupe identique à celui d'une architecture de verrous classique. Cependant, le groupe de processeur bénéficie de l'architecture décrite vis à vis des autres processeurs du système.
Par exemple en référence à la figure 3, un grand système comprenant des modules 20,21,22,23 reliés par des moyens d'échange d'information 29,38, 39,48,49, constitue un environnement NUMA mis en oeuvre par un système d'exploitation OS commun. Le module 20 comprend un ou plusieurs processeurs 30,31,32,33 et une unité mémoire 25 accédée au moyen d'un bus 34. Le module 21 comprend un ou plusieurs processeurs 40,41,42,43 et une unité mémoire 26 accédée au moyen d'un bus 35. Le module 22 comprend un ou plusieurs processeurs 44,45,46,47 et une unité mémoire 27 accédée au moyen d'un bus 36. Le module 23 comprend un ou plusieurs processeurs 50,51,52,53 et une unité mémoire 28 accédée au moyen d'un bus 37.
Une table 54 du type de la table 4 est attribuée au groupe de processeurs 30 à 33. Une table 55 du type de la table 5 est attribuée au groupe de processeurs 40 à 43. Une table 56 du type de la table 6 est attribuée au groupe de processeurs 44 à 47. Une table 57 du type de la table 7 est attribuée au groupe de processeurs 50 à 53.
Une table 58 du type de la table 1, est partagée par 1'ensemble des groupes de processeurs. La table 58 réside par exemple dans l'unité mémoire 25 du module 20. La résidence de la table 54 dans l'unité mémoire 25, évite une occupation intempestive de la connexion 29 pendant I'attente active d'un processeur 30,31,32,33 sur une ressource. La résidence de la table 55,56, 57, respectivement dans l'unité mémoire 26,27,28, procure un effet identique.
Les valeurs de données dans la table 54 peuvent tre ou ne pas tre personnalisés par processeur 30,31,32,33. Différentes stratégies de passation de ressource en étape 17 sont possibles pour conserver une prise de ressource sur un mme module jusqu'à libération par tous les processeurs du module qui l'ont demandée, ou au contraire pour permettre une passation à un processeur d'un autre module après qu'un processeur d'un premier module aie obtenu la ressource. L'homme du métier choisit selon des critères d'optimisation qu'il retient. La table 58 peut aussi tre répartie dans les unités mémoire 25 à 27 en fonction de la localisation des ressources.
Un environnement de type distribué est un environnement dans lequel plusieurs machines s'échangent des accessibilités à leurs ressources au moyens de messages de communication. Les machines sont mono ou multiprocesseurs. En attribuant une ou plusieurs tables de données du type de la table 4 à chaque machine pour les ressources de l'ensemble des machines et une table de compteurs du type de la table 1 à l'ensemble des machines, répartie ou localisée, on évite des échanges intempestifs entre machines sur attente active d'une ressource.
Claims (7)
- de façon à ce que ledit processeur (10), ayant pris ladite ressource, positionne la deuxième donnée sur la première valeur s'il détecte que le deuxième état de verrou existe après libération de ladite ressource.de façon à ce que la deuxième valeur de la première donnée mette ledit processeur (10) en attente active jusqu'à ce que la première donnée soit positionnée sur la première valeur par ledit autre processeur (11,12,13) libérant ladite ressource,Revendications : 1. Architecture de verrous pour système informatique comprenant plusieurs processeurs (10,11,12,13) telle que chaque processeur (10) demandant une ressource du système, prenne ladite ressource si un premier état de verrou indique ladite ressource libre et se mette en attente active si un deuxième état de verrou indique ladite ressource prise, caractérisé en ce qu'à un verrou est associée une structure de données qui comprend : -un compteur qui indique un nombre de processeurs (10,11,12,13) ayant demandé ladite ressource sans t'avoir prise puis libérée, le premier état de verrou correspondant à une valeur nulle, le deuxième état de verrou correspondant à une valeur non nulle ; -une première donnée propre au dit processeur (10), positionnée d'une première valeur sur une deuxième valeur par ledit processeur (10) détectant le deuxième état de verrou ; -au moins une deuxième donnée propre à un autre processeur (11,12,13), positionnée d'une première valeur sur une deuxième valeur par ledit autre processeur (11,12,13) détectant le deuxième état de verrou ;
- 2. Architecture selon la revendication 1, caractérisée en ce qu'elle comprend : -une première table (4) pour contenir ladite première donnée dans une ligne dont un numéro de ligne correspond à ladite ressource, -au moins une deuxième table (5,6,7) pour contenir ladite deuxième donnée dans une ligne dont un numéro de ligne est identique à celui de la première table (4), correspondant à ladite ressource, -une table de compteurs (1) pour contenir ledit compteur dans une ligne dont un numéro de ligne est identique au numéro de ligne de la table (4,5,6,7) correspondant à la dite ressource.
- 3. Architecture selon la revendication 2, caractérisée en ce qu'à chaque ressource considérée d'un ensemble de ressource du système informatique, correspond un verrou auquel est associé un numéro de ligne pour contenir au dit autre numéro de ligne : -dans la table de compteurs (1), un compteur du nombre de processeurs (10, 11, 12,13) ayant demandé la ressource considérée, dont une valeur prédéterminée indique un premier état de verrou ; -dans chaque table (4,5,6,7), propre à l'un respectivement des processeurs (10,11,12,13), une donnée positionnable sur ladite deuxième valeur par le processeur respectif qui ne détecte pas la valeur prédéterminée lorsqu'il demande la ressource considérée et positionnable sur ladite première valeur par tout processeur qui le décide en libérant la ressource considérée.
- 4. Procédé exécuté par chaque processeur considéré (10) parmi plusieurs processeurs (10,11,12,13), pour demander une ressource dans un système informatique, comprenant une opération atomique (2) de lecture et de modification d'un verrou qui contrôle une prise de ladite ressource, caractérisé en ce que : -l'opération atomique (2) consiste à incrémenter un compteur dont une valeur prédéterminée définit un premier état du verrou ; -l'opération atomique (2) est suivie d'un premier test (3) pour déclencher une première étape (8) si le compteur n'a pas la valeur prédéterminée au départ de l'opération atomique (2) et pour déclencher une deuxième étape (14) de prise de ressource dans le cas contraire ; -la première étape (8) positionnant une donnée propre au processeur (10) considéré, sur une deuxième valeur telle que le processeur (10) considéré boucle en lecture de sa donnée propre jusqu'à détection d'une première valeur de sa donnée propre qui déclenche l'étape de prise de ressource (14) ; -la deuxième étape (14) étant suivie d'un deuxième test (16) après libération de la ressource, pour déclencher une troisième étape (17) si une décrémentation du compteur ne donne pas la valeur prédéterminée et pour déclencher une quatrième étape (18) dans le cas contraire ; -la troisième étape (17) déterminant un processeur (11,12,13) distinct du processeur (10) considéré, dont une donnée propre est positionnée sur la deuxième valeur, positionnant la donnée propre du processeur (11,12,13) déterminé sur la première valeur, et déclenchant la quatrième étape (18) ; -la quatrième étape (18) comprenant une opération atomique pour décrémenter le compteur.
- 5. Procédé selon la revendication 4, caractérisé en ce qu'à chaque verrou considéré qui contrôle une prise de ressource distincte est associé un numéro de ligne au sein d'une structure de données répartie en mémoire adressable sous forme d'une table de compteurs (1) et de tables (4,5,6,7) propres chacune à un processeur (10,11,12,13) de sorte que : -pour l'opération atomique (2), le processeur considéré (10) se branche à une première adresse fonction d'une adresse de début de la table (1) et du numéro de ligne associé au verrou considéré ; -pour la première étape (8), le processeur considéré (10) se branche à une deuxième adresse fonction d'une adresse de début da la table (4) qui lui est propre et du numéro de ligne associé au verrou considéré ; -pour le deuxieme test (16), le processeur considéré (10) se branche sur la première adresse ; -pour déterminer en troisième étape (17) si la donnée propre d'un processeur (11,12,13) est positionnée sur la deuxième valeur, le processeur considéré (10) se branche à une troisième adresse fonction d'une adresse de début de la table (5,6,7) propre au dit processeur (11,12,13) et du numéro de ligne associé au verrou considéré.
- 6. Procédé selon la revendication 4 ou 5, caractérisé en ce que, pour déterminer en troisième étape (17), un processeur (11,12,13) distinct du processeur (10), le processeur (10) : -calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (5) propre au processeur (11) suivant ; -si la donnée lue à l'adresse calculée, est positionnée sur la deuxième valeur, le processeur (11) est le processeur déterminé ; -sinon, le processeur (10) calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (6) propre au processeur (12) suivant, et ainsi de suite avec I'adresse de début de la table (7) propre au processeur (13) suivant jusqu'à lire à I'adresse calculée, une donnée positionnée sur la deuxième valeur qui détermine le processeur distinct auquel cette donnée est propre.
- 7. Procédé selon la revendication 4 ou 5, caractérisé en ce que, pour déterminer en troisième étape (17), un processeur (11,12,13) distinct du processeur (10), le processeur (10) : -calcule une adresse somme du numéro de ligne associé au verrou considéré, et de I'adresse de début de la table (5,7,8) propre respectivement à chaque processeur (11,12,13) distinct ; -détermine le processeur distinct comme étant celui dont la donnée propre lu àI'adresse calculée est positionnée sur une valeur non nulle la plus faible parmi celles des données propres aux processeurs distincts, lues à chaque adresse calculée.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9812651A FR2784478B1 (fr) | 1998-10-09 | 1998-10-09 | Architecture de verrou pour grand systeme |
US09/411,231 US6477597B1 (en) | 1998-10-09 | 1999-10-04 | Lock architecture for large scale system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9812651A FR2784478B1 (fr) | 1998-10-09 | 1998-10-09 | Architecture de verrou pour grand systeme |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2784478A1 true FR2784478A1 (fr) | 2000-04-14 |
FR2784478B1 FR2784478B1 (fr) | 2000-11-17 |
Family
ID=9531360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR9812651A Expired - Fee Related FR2784478B1 (fr) | 1998-10-09 | 1998-10-09 | Architecture de verrou pour grand systeme |
Country Status (2)
Country | Link |
---|---|
US (1) | US6477597B1 (fr) |
FR (1) | FR2784478B1 (fr) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2396462B (en) * | 2001-09-28 | 2006-02-08 | Intel Corp | Flexible acceleration of java thread synchronization on multiprocessor computers |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823511B1 (en) * | 2000-01-10 | 2004-11-23 | International Business Machines Corporation | Reader-writer lock for multiprocessor systems |
US6938114B2 (en) * | 2001-03-01 | 2005-08-30 | International Business Machines Corporation | Method and apparatus for managing access to a service processor |
US20020133530A1 (en) * | 2001-03-15 | 2002-09-19 | Maarten Koning | Method for resource control including resource stealing |
US7430569B2 (en) * | 2002-11-27 | 2008-09-30 | Sap Ag | Computerized replication of data objects |
US7225302B2 (en) * | 2002-11-27 | 2007-05-29 | Sap Ag | Method and software application for avoiding data loss |
US7464091B2 (en) * | 2002-11-27 | 2008-12-09 | Sap Ag | Method and software for processing data objects in business applications |
US7409412B2 (en) | 2002-11-27 | 2008-08-05 | Sap Ag | Data element and structure for data processing |
US7383368B2 (en) * | 2003-09-25 | 2008-06-03 | Dell Products L.P. | Method and system for autonomically adaptive mutexes by considering acquisition cost value |
US20050081204A1 (en) * | 2003-09-25 | 2005-04-14 | International Business Machines Corporation | Method and system for dynamically bounded spinning threads on a contested mutex |
US7856636B2 (en) * | 2005-05-10 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Systems and methods of sharing processing resources in a multi-threading environment |
US8914565B2 (en) * | 2007-06-08 | 2014-12-16 | Sap Ag | Locking or loading an object node |
US8327187B1 (en) * | 2009-09-21 | 2012-12-04 | Tilera Corporation | Low-overhead operating systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435766A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Nested resource control using locking and unlocking routines with use counter for plural processes |
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US5261108A (en) * | 1988-10-08 | 1993-11-09 | Nec Corporation | Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode |
WO1998033119A1 (fr) * | 1997-01-23 | 1998-07-30 | Sun Microsystems, Inc. | Verrouillage de ressources informatiques |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5548728A (en) * | 1994-11-04 | 1996-08-20 | Canon Information Systems, Inc. | System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory |
US6178481B1 (en) * | 1995-12-18 | 2001-01-23 | Texas Instruments Incorporated | Microprocessor circuits and systems with life spanned storage circuit for storing non-cacheable data |
US5983015A (en) * | 1997-10-31 | 1999-11-09 | Oracle Corporation | Latch-free sequence generation for high concurrency systems |
-
1998
- 1998-10-09 FR FR9812651A patent/FR2784478B1/fr not_active Expired - Fee Related
-
1999
- 1999-10-04 US US09/411,231 patent/US6477597B1/en not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435766A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Nested resource control using locking and unlocking routines with use counter for plural processes |
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US5261108A (en) * | 1988-10-08 | 1993-11-09 | Nec Corporation | Multiprocessor communications register providing complete access in a full access mode, and mapped access in a partial access mode |
WO1998033119A1 (fr) * | 1997-01-23 | 1998-07-30 | Sun Microsystems, Inc. | Verrouillage de ressources informatiques |
Non-Patent Citations (1)
Title |
---|
"FAST LOCK", IBM TECHNICAL DISCLOSURE BULLETIN, vol. 31, no. 11, 1 April 1989 (1989-04-01), pages 136 - 141, XP000284976 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2396462B (en) * | 2001-09-28 | 2006-02-08 | Intel Corp | Flexible acceleration of java thread synchronization on multiprocessor computers |
Also Published As
Publication number | Publication date |
---|---|
FR2784478B1 (fr) | 2000-11-17 |
US6477597B1 (en) | 2002-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0059018B1 (fr) | Multiprocesseur avec affectation dynamique des tâches en multitraitement et son utilisation | |
FR2784478A1 (fr) | Architecture de verrou pour grand systeme | |
US6658522B1 (en) | Method to reduce overhead associated with system I/O in a multiprocessor computer system | |
US7844974B2 (en) | Method and system for optimizing file table usage | |
US7260633B2 (en) | System and method for processing requests from newly registered remote application consumers | |
FR2621407A1 (fr) | Systeme de reaffectation des adresses et de purge des blocs d'antememoire pour station de travail a antememoire a adressage virtuel et a reinscription | |
FR2752466A1 (fr) | Dispositif processeur integre de signaux numeriques | |
FR2517442A1 (fr) | Dispositif d'interruption pour un systeme de multitraitement, procede pour sa commande et systeme pour sa mise en oeuvre | |
FR2617304A1 (fr) | Sequenceur d'entrees/sorties programmable pour processeur d'entree/sortie | |
FR2767939A1 (fr) | Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur | |
CA2415043A1 (fr) | Multiplexeur de communication pour systeme de base de donnees integre a un systeme de traitement de donnees | |
JPH05282165A (ja) | 通信システム | |
FR2687812A1 (fr) | Systeme de traitement de l'information. | |
FR2737030A1 (fr) | Procede de transfert de messages dans un systeme informatique multinodal | |
US6629195B2 (en) | Implementing semaphores in a content addressable memory | |
KR100543731B1 (ko) | 다중 프로세서 시스템에서 마이크로프로세서 통신을 위한방법, 프로세싱 장치 및 데이터 프로세싱 시스템 | |
EP3217290A1 (fr) | Systeme sur puce et procede d'echange de donnees entre noeuds de calculs d'un tel systeme sur puce | |
EP1049018B1 (fr) | Architecture d'interconnexion modulaire pour machine multiprocesseur extensible, mettant en oeuvre une hiérarchie de bus virtuelle à plusieurs niveaux et la même brique de base pour tous les niveaux | |
EP0540383A1 (fr) | Système multiprocesseur avec moyens microprogrammés pour la répartition des processus aux processeurs | |
FR2621408A1 (fr) | Procede et systeme de gestion des adresses homonymes pour station de travail a antememoire a adressage virtuel et a reinscription | |
FR2733067A1 (fr) | Dispositif et procede de commande de verrouillage | |
FR2865291A1 (fr) | Procede de transfert de donnees dans un systeme multiprocesseur, systeme multiprocesseur et processeur mettant en oeuvre ce procede | |
JPH10240695A (ja) | Sciシステムにおける複数の未処理要求の局所記憶装置を用いた操作 | |
EP0889404B1 (fr) | Procédé pour isoler un emplacement de memoire contenant une valeur obsolete | |
FR2692696A1 (fr) | Procédé pour charger un programme dans une mémoire de programmes associée à un processeur. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ST | Notification of lapse |
Effective date: 20160630 |