Brevet FR2693576A1 — publié le 19940114

La présente invention concerne les systèmes multiprocesseurs et en particulier un système multiprocesseur du type comprenant une mémoire de programme unique, une unité de décodage et contrôle unique et une pluralité de processeurs identiques connectés à l'unité de décodage et contrôle par un bus d'instruction unique. Les systèmes de téléphone sans fil dans lesquels chaque véhicule est relié téléphoniquement au réseau au moyen d'un radio-téléphone sont de plus en plus utilisés. Le territoire sur lequel se déplacent les véhicules est divisé en zones, chaque zone étant définie comme un secteur sous le contrôle d'un système de traitement. Ce dernier se compose généralement d'une antenne de réception connectée par un modem à une pluralité de processeurs, chaque processeur traitant une voie téléphonique donnée. Etant donné que le protocole utilisé pour le traitement des voies téléphoniques est le même pour toutes, une seule mémoire de programme ainsi qu'une seule unité de décodage et contrôle desservent tous les processeurs. Dans un système de téléphone sans fil de la technique antérieure tel que mentionné ci-dessus, les processeurs reçoivent tous la même instruction au même moment par un bus d'instruction unique. Chaque processeur reçoit ses propres données d'entrée et, après traitement de l'instruction identique pour tous les processeurs, génère ses propres données de sortie. Un premier inconvénient est que chaque processeur déroule le programme mettant en oeuvre le protocole de traitement des voies, que la voie qu'il gère soit active ou inactive, ce qui est inefficace dans ce dernier cas. En outre il peut y avoir rupture de séquence dépendant d'une condition commune telle qu'un branchement conditionnel. Mais ce branchement doit être le même pour tous les processeurs.Il n'est pas envisageable de faire dépendre le branchement dans un des processeurs, d'une condition qui soit différente de la condition commune, et qui pourrait entraîner un déroulement différent des instructions du programme. On voit donc que les systèmes multiprocesseurs de la technique antérieure présentent l'inconvénient majeur de ne pas pouvoir adapter le traitement de chaque processeur aux conditions locales. Le but de l'invention est donc de remédier à l'inconvénient mentionné ci-dessus et de réaliser un système multiprocesseur dans lequel des instructions peuvent être interprétées de façon différente dans chacun des processeurs. L'objet de l'invention est un système multiprocesseur tel que mentionné ci-dessus dans lequel chacun des processeurs comprend un dispositif de contrôle local destiné à recevoir des paramètres locaux de façon à interpréter au moins une des instructions du programme en fonction des paramètres locaux, de sorte que le traitement de cette instruction peut être différent pour chacun des processeurs. Selon une caractéristique de l'invention les paramètres locaux utilisés par le dispositif de contrôle local de chaque processeur pour interpréter l'instruction sont des paramètres d'état résultant d'une opération effectuée par l'unité arithmétique et logique du processeur. Selon une autre caractéristique de l'invention, l'instruction à interpréter comprend une partie décodée par l'unité de décodage et contrôle unique et une autre partie décodée par le dispositif de contrôle local de chacun des processeurs pour être interprétée en fonction de paramètres représentant une instruction locale emmagasinés dans la mémoire locale du processeur. Les buts, objets et caractéristiques de l'invention apparaîtront plus clairement à la lecture de la description qui suit faite en référence aux dessins dans lesquels - la figure 1 est une représentation schématique d'un système multiprocesseur utilisé dans la technique antérieure, - la figure 2 représente un schéma synoptique d'un mode de réalisation préféré d'un système multiprocesseur mettant en oeuvre l'invention, et - la figure 3 est un schéma illustrant un exemple de fonctionnement du système multiprocesseur représenté sur la figure 2. Un système multiprocesseur du type une seule instruction - des données multiples (SIMD) de la technique antérieure est représenté schématiquement sur la figure 1. Le programme de contrôle est emmagasiné dans une mémoire de programme 10, généralement une mémoire morte (ROM). Les instructions du programme sont décodées par une unité de décodage et contrôle 12. Les signaux de contrôle sont transmis à partir de l'unité de décodage et contrôle 12 au moyen d'un bus d'instruction primaire unique 14. Ces signaux sont fournis à des processeurs PO, P1, P2 au moyen de bus d'instruction secondaires 16. Chacun des processeurs PO, P1 ou P2 comporte une entrée de données DO, D1 ou D2, un bloc de registres de traitement 18, une unité arithmétique et logique 20, une mémoire locale 22 et une sortie de données SO, S1 ou S2. Les signaux de contrôle transmis sur chacun des bus d'instruction secondaires 16 commandent la même opération que chaque processeur doit effectuer au même instant sur ses données d'entrée propres DO, D1 ou D2. Les données qui résultent du traitement dans chacun des processeurs sont fournies aux sorties de données SO, S1 et S2 correspondant respectivement aux processeurs PO, P1 et P2.On voit donc que pour une instruction unique, les données de sortie peuvent être entièrement différentes, dépendant des données fournies à l'entrée de chaque processeur. Il est possible d'effectuer un branchement dans le déroulement du programme. Ainsi, en supposant qu'une condition C (qui peut provenir des données de protocole fournies par le modem reliant le système à l'antenne de réception) soit imposée à l'unité de décodage et contrôle, la séquence d'instructions se présente alors de la façon suivante instruction N - 1 opération X instruction N si C = 1 brancher en L instruction N + 1 placer résultat de X sur sortie S L instruction N + 2 opération Y Si la condition C = O, le résultat de l'opération x précédente est transmis sur la sortie, pour tous les processeurs, sinon le programme continue à partir de l'instruction N + 2. L'architecture ci-dessus, ou SIMD, permet donc d'effectuer un branchement mais seulement sur une condition générale et jamais sur une condition spécifique à un processeur. La mise en oeuvre de l'invention permet de remédier aux inconvénients des systèmes classiques utilisant l'architecture SIMD, comme on va le voir au cours de la description de la figure 2 qui représente un système multiprocesseur mettant en oeuvre l'invention. Comme pour le système de la figure 1, le système multiprocesseur de la figure 2 comprend une seule mémoire de programme 10 contenant le programme de contrôle du système, et une unité de décodage et contrôle 12 pour le décodage des instructions. Les signaux issus du décodage d'instructions sont transmis aux processeurs au moyen du bus d'instruction primaire 14 et des bus d'instruction secondaires 16. De la même façon, chacun des processeurs comprend une entrée de données DO, D1 ou D2, un bloc de registres de traitement 18, une unité arithmétique et logique 20, une mémoire locale 22 et une sortie de données SO, SI ou 52. Mais à la différence des systèmes multiprocesseurs de la technique antérieure, chacun des processeurs du système illustré sur la figure 2 comporte un dispositif de contrôle local 24 équivalent à l'unité de décodage et contrôle 12 et dont la fonction est mise évidence ci-après. En fait, la mise en application de l'invention est véritablement efficace lorsqu'elle est utilisée en combinaison avec des instructions conditionnelles. Le principe des instructions conditionnelles tel que décrit dans la demande de brevet français FR-A-91 07985, consiste à prévoir un champ de code condition duquel va dépendre l'exécution de l'instruction. Ainsi, comme il est expliqué dans la demande citée ci-dessus, il n'est pas nécessaire de modifier le registre de destination se trouvant dans le bloc de registres de traitement par le résultat d'une soustraction si cette soustraction est effectuée dans un but de comparaison. Dans ce cas, c'est le code condition qui indique qu'il n'y a pas chargement du résultat dans le registre de destination. Comme il a été mentionné au début de la présente description, un tel système peut être utilisé pour gérer les voies téléphoniques d'un système de téléphone sans fil, chacun des processeurs étant affecté à une voie téléphonique. A un moment donné, certaines voies sont actives et d'autres ne le sont pas. Il est donc inutile, pour ces dernières, de transférer des données sur la sortie S du processeur. Le paramètre local qui permet d'informer le dispositif de contrôle local de la condition active ou inactive de la voie est CO, Cl ou C2 pour chacun des processeurs, respectivement PO, P1 ou P2.La séquence d'instructions peut alors se présenter de la façon suivante: instruction N - I opération X instruction N placer résultat de X sur S si C=1 Si, à ce moment précis, les processeurs PO et P2 correspondent à des voies actives et le processeur P1 à une voie inactive, c' est-à-dire CO = 1, Cl = 0, C2 = 1, l'instruction sera exécutée dans les processeurs PO et P2, mais ne sera pas exécutée dans Pi. Le ou les paramètres locaux qui viennent influencer le dispositif de contrôle local 24, peuvent également provenir des résultats des instructions précédentes. Ainsi, dans chaque processeur, le bloc de registres de traitement 18 comprend un registre d'état dont le rôle est de mémoriser des paramètres d'état qui résultent des opérations arithmétiques et logiques effectuées par l'unité arithmétique et logique 20. Ce registre d'état est mis à jour, soit automatiquement à chaque instruction du type arithmétique et logique, soit par une instruction particulière. Trois paramètres d'état sont particulièrement significatifs dans ce registre d'état, ce sont Z indiquant un résultat d'opération précédente nul, N indiquant un résultat d'opération précédente négatif et C indiquant un report de l'opération précédente. Comme illustré sur la figure 2, les paramètre Z, N, C, sont transmis au dispositif de contrôle local. Bien que la figure 2 semble indiquer que les paramètres Z, N, C, proviennent directement de l'unité arithmétique et logique, ils proviennent en fait du registre d'état dans lequel ils sont chargés comme il vient d'être expliqué. Mais ceci n'est d'aucune importance pour l'invention. En supposant que la séquence d'instructions à mettre en oeuvre dans le système soit une opération de soustraction d'une donnée d'entrée A du contenu d'un registre B et dont le résultat est à transmettre en sortie que s'il est négatif, cette séquence est la suivante: instruction N - 1 LD IN, A instruction N SUB A, B instruction N + 1 ST B, OUT, si N Le déroulement de la séquence d'instructions est illustré sur la figure 3. A la première instruction, une donnée D, différente pour chaque processeur, est chargée dans le registre A (du bloc de registres de traitement) par l'intermédiaire d'un registre d'entrée/sortie ou I/O (non représenté sur la figure 2). A la deuxième instruction le contenu du registre A est soustrait du contenu du registre B (du bloc de registres de traitement) et le résultat est chargé dans le registre B.Comme il apparaît sur la figure 3, les paramètres d'état Z, N, C, sont mis à jour, et on voit que N a la valeur O pour les processeurs PO et P1 et la valeur 1 pour le processeur P2. A la troisième instruction qui est une instruction conditionnelle, la valeur de N est prise en compte. Par conséquent, le transfert du contenu du registre B en tant que donnée de sortie n'a lieu que pour le processeur P2 comme le montre explicitement la figure 3. Bien que l'exemple ci-dessus mette en jeu le seul paramètre N dans l'instruction conditionnelle, il va de soi que plusieurs paramètres d'état tels que Z, N ou C pourraient être impliqués dans la même instruction conditionnelle. Il est clair également que l'emploi des instructions conditionnelles comme ci-dessus permet d'obtenir la même fonction qu'un branchement puisque l'instruction conditionnelle est exécutée ou non selon la valeur d'un paramètre. L'intérêt de l'invention est que le résultat d'un branchement sur condition locale est obtenu grâce à la combinaison du dispositif de contrôle local et des instructions conditionnelles, alors qu'il est bien entendu impossible d'effectuer un branchement conditionnel avec rupture de séquence dans un seul des processeurs du système. Le principe de l'invention peut également être mis en oeuvre à l'aide d'instructions à deux niveaux comme expliqué ci-dessous. Dans ce mode particulier de réalisation, le programme se trouvant dans la mémoire de programme 10 comporte des instructions désignées CODE qui sont décodées en partie seulement par l'unité de décodage et contrôle 12. La partie non décodée est ensuite transmise au dispositif de contrôle local 24 de chaque processeur au moyen du bus d'instruction primaire 14. Reconnu par le dispositif de contrôle local du processeur, le code contenu dans cette partie de l'instruction adresse la mémoire locale du processeur de façon à extraire de la mémoire locale 22 une instruction locale qui est alors exécutée par le processeur. Cette instruction locale peut évidemment, et c'est le but de l'invention, être différente pour chacun des processeurs.Ainsi, l'instruction locale peut être une addition pour le processeur PO une soustraction pour le processeur P1 une mise à zéro de registre pour le processeur P2. On peut supposer, par exemple, que lorsque la voie téléphonique devient inactive, la condition inactive soit signalée par l'entrée CO, Cl, C2... mais également qu'une ou plusieurs instructions locales soient chargées dans la mémoire locale. Le programmeur doit alors prévoir, lors de la mise en oeuvre du protocole par le jeu d'instructions, d'introduire les instructions du type CODE ci-dessus. Bien que la description ci-dessus montre plusieurs manières de réaliser un système multiprocesseur dans lequel le traitement des instructions du programme puisse être différent d'un processeur à l'autre, il est clair que ces différentes manières peuvent être utilisées conjointement sans sortir du cadre de l'invention. REVENDICATIONS 1. Système multiprocesseur comprenant une mémoire de programme pour emmagasiner une programme composé d'une séquence d'instructions, une unité de décodage et contrôle, une pluralité de processeurs et un bus d'instruction connectant l'unité de décodage et contrôle à chaque processeur, chacun desdits processeurs comportant une entrée de données, un bloc de registres de traitement, une unité arithmétique et logique, une mémoire locale et une sortie de données, ladite unité de décodage et contrôle décodant les instructions du programme emmagasiné dans ladite mémoire de programme et contrôlant leur exécution dans chacun desdits processeurs ; ledit système étant caractérisé en ce que chacun desdits processeurs comprend un dispositif de contrôle local destiné à recevoir des paramètres locaux de façon à interpréter au moins une des instructions dudit programme en fonction desdits paramètres locaux, de sorte que le traitement de ladite instruction peut être différent pour chacun desdits processeurs. 2. Système selon la revendication 1, caractérisé en ce qu'au moins certains desdits paramètres locaux sont des paramètres d'état résultant d'une opération effectuée par l'unité arithmétique et logique sous la commande d'une instruction du type arithmétique et logique. 3. Système selon la revendication 2, caractérisé en ce que lesdits certains paramètres d'état sont les paramètres Z indiquant un résultat d'opération précédente nul, N indiquant un résultat d'opération précédente négatif et C indiquant un report d'opération précédente. 4. Système selon la revendication 1, 2 ou 3, caractérisé en ce que ladite au moins une instruction comporte une première partie décodée par ladite unité de décodage et contrôle, et une seconde partie décodée par le dispositif de contrôle local de chacun desdits processeurs pour être interprétée en fonction de paramètres emmagasinés dans la mémoire locale dudit processeur. 5. Système selon la revendication 4, caractérisé en ce que lesdits paramètres emmagasinés dans la mémoire locale de chacun desdits processeurs consistent en une instruction différente pour chaque processeur. 6. Système selon l'une quelconque des revendications précédentes, caractérisé en ce qu'au moins certains desdits paramètres locaux sont des paramètres provenant de conditions extérieures aux processeurs tout en étant spécifiques pour chacun desdits processeurs. 7. Système de téléphone sans fil du type dans lequel une pluralité de voies téléphoniques correspondant à des postes téléphoniques mobiles à bord de véhicules est gérée par un système multiprocesseur comportant une pluralité de processeurs correspondant à ladite pluralité de voies téléphoniques, caractérisé en ce que ledit système multiprocesseur est un système selon l'une des revendications précédentes.