Brevet FR2667175A1 — publié le 19920327

*Système de traitement d'informations comportant au moins deux processeurs N Description La présente invention concerne un système de traitement d'informations comportant au moins deux processeurs exécutant des suites d'instructions. Dans de nombreux systèmes de traitement d'informations, il est courant d'utiliser une pluralité de processeurs en vue d'augmenter la puissance de traitement du système. Chacun des processeurs exécute les instructions qui lui sont imparties, ce qui peut augmenter, dans la proportion du nombre de processeurs, le volume de mémoire consacré à l'emmagasinage des instructions. La présente invention propose un système de traitement d'informations du genre cité dans le préambule qui évite un trop grand volume de mémoire pour les instructions. Pour cela un tel système est remarquable en ce qu'il comporte un seul ensemble de mémoire dans lequel sont rangées lesdites instructions et en ce qu'il comporte un circuit d'arbitrage pour donner l'accès de cet ensemble auxdits processeurs. Il y a des applications, notamment en commutation de données, qui nécessitent des tâches simples répétitives par exemple : lire une information de routage rattachée à un paquet de données et le dispatcher sur la voie adéquate. Dans les applications de ce genre, selon une caractéristique de l'invention, les processeurs sont du même type et exécutent les mêmes suites d'instructions. La description suivante accompagnée des dessins ci-annexés, le tout donné à titre d'exemple non limitatif fera bien comprendre comment l'invention peut être réalisée. La figure I représente schématiquement un système de traitement d'informations conforme à l'invention. La figure 2 montre en détail un système de traitement d'informations conforme à l'invention. La figure 3 est un diagramme d'états expliquant le fonctionnement du système de traitement d'informations conformément à l'invention. La figure 4 est un autre diagramme d'états expliquant le fonctionnement du système de traitement d'informations conformément à l'invention. Le système de traitement d'informations représenté à la figure 1 est destiné à commuter des paquets de données véhiculés par des lignes LO, L1, L2, L3, L4 et L5. Les lignes LO, Li, L2 sont rattachées à un premier processeur 1 appelé aussi #A et les lignes L3, L4 et L5 à un second processeur 2 appelé pB. Les différents paquets d'informations provenant de ces différentes lignes sont mis dans une mémoire commune 5 de sorte que tout échange entre les différentes lignes précitées est possible. Pour effectuer ces échanges des suites d'instructions doivent être exécutées. La présente invention ne concerne pas les modalités de routage pour les différents paquets de sorte que leur description ne sera pas abordée.Néanmoins, selon un aspect de l'invention les processeurs 1 et 2 effectuent les mêmes suites d'instructions, qui sont exécutées avec un décalage dans le temps plus ou moins important pour chacun d'eux: L'invention propose pour économiser de la place en mémoire d'utiliser un seul ensemble de mémoire 10 contenant les instructions et aussi d'autres divers paramètres. Un circuit d'arbitrage 15 règle les problèmes d'accès à cette mémoire. Selon un aspect de l'invention, l'ensemble de mémoire 10 peut être disparate et être formé de bancs de mémoire dont les temps d'accès tant en lecture qu'en écriture peuvent être différents (mémoire SRAM, mémoire EPROM, mémoire FLASH). La figure 2 montre plus en détail un système conforme à l'invention. Dans l'exemple détaillé que l'on va décrire, les processeurs 1 et 2 sont des circuits 68302 fabriqués par MOTOROLA. De ces processeurs on a distingué des lignes BADRA et BADRB qui transmettent des codes d'adresses respectivement des processeurs 1 et 2. Trois des fils de ces lignes BADRA et BADRB portent les références ADA et ADB respectivement. Ils transmettent les éléments binaires de fort poids du code d'adresse et sont utilisés, selon une manière qui sera décrite ci-dessous en détail, pour sélectionner des bancs de mémoire de l'ensemble 10. Les processeurs 1 et 2 comportent également des lignes de données BDA et BDB qui permettent l'échange de codes de données avec les circuits qui leur sont extérieurs. Ces processeurs peuvent avoir des cycles d'attente qui sont créés par des signaux actifs transmis sur les lignes DTKA et DTKB respectivement. Lorsque les processeurs veulent communiquer avec l'ensemble des mémoires 10 ils activent un signal sur les fils CSA et CSB respectivement. Si en plus il veulent écrire dans la mémoire 10 ils activent les signaux sur les fils WRA,WRB. L'ensemble des mémoires 10 est formé de 7 bancs BO-B6 dont la capacité ne peut excéder 256 K octets. Chacun de ces bancs peut être sélectionné par un code transmis sur ces fils ACCO, ACCI et ACC2 appliqués aux entrées d'un codeur 20 faisant partie du circuit d'arbitrage 15. Ce codeur rend actif un signal sur l'un de ses sept fils de sortie pour pouvoir sélectionner l'un desdits bancs. Parmi ces bancs, on distingue les bancs BO-B4 qui sont des mémoire de type FLASH, le banc B5 est une mémoire de type EPROM et le banc B6 qui est une mémoire SRAM. Les sorties de ces différents bancs sont reliées à une ligne MPR. Le tableau I ci-dessous donne les adresses de ces bancs. TABLEAU I ACC 2 ACC 1 ACC O Nobanc Nature 0 0 O BO O 1 0 B2 FLASH 0 1 1 B3 1 O 0 B4 1 0 1 B5 EPROM 1 1 O B6 SRAM 1 1 I Pour des raisons diverses : maintenance, mise à jour du programmer il est utile de pouvoir faire des écritures de ces mémoires. Ces écritures doivent être effectuées en activant un signal sur le fil WROM. Les données à inscrire ou à lire apparaissent à la sortie MPR de la mémoire 10. Le circuit d'arbitrage 15 est bâti à partir d'un circuit programmable (PLA) formé d'un réseau de logique combinatoire et d'une série de bascules du type D référencées par 22, 24, 26, 28 et 30. Ces bascules reçoivent sur leurs entrées d'horloge un signal d'horloge présent sur un fil CKOSC ; les signaux élaborés par un circuit d'horloge 32 alimentent aussi les signaux d'horloge des processeurs 1 et 2, la bascule 22 fournit les signaux de sélection des bancs BO à B6 sur les fils ACCO, ACC1 et ACC3 qui peuvent être reliés aux fils ADA ou ADB. Le circuit 15 fournit sur un fil WROM le signal qui permet l'écriture de la mémoire 10. La bascule 24 fournit sur un fil GRA le signal qui détermine le processeur ayant accès à l'ensemble de mémoire 10. Pour cela ce fil est relié tout d'abord à l'entrée de commande d'un sélecteur de code d'adresses 35 dont la sortie est reliée à chaque entrée de code d'adresse des bancs BO à B6 et dont les entrées sont reliées à une partie des lignes BADRA et BADRB respectivement. Cette sortie concerne la partie formée des éléments binaires de faible poids des codes d'adresses ; les parties formées des éléments de fort poids transmis par des fils ADA et ADB servent à sélectionner les bancs BO à B6. En outre le fil GRA met aussi en relation par l'intermédiaire d'un circuit à interface 38 l'une des lignes BDA ou BDB avec la sortie MPR de l'ensemble 10.Les bascules 26 et 28 fournissent sur des fils NC1 et NC2 des signaux servant à définir l'état séquentiel du circuit 15. Cet état est aussi défini par les signaux transmis par les fils WROM, GRA et un fil DTCK connectés à la sortie de la bascule 30. Le signal sur le fil DTCK est destiné à provoquer des cycles d'attente au niveau des processeurs 1 et 2 ; ce signal est appliqué à l'un des deux par des circuits interrupteurs (à 3 états) 39 et 40 qui fournissent finalement les signaux sur les fils DTKA et DTKB ; les circuits interrupteurs sont mis à l'état conducteur par des signaux transmis sur des fils EDKA et EDKB. Pour simplifier l'explication, le réseau de logique combinatoire a été scindé en trois parties 50, 51 et 52. Mais il va de soi que ces trois parties peuvent être englobées dans un seul réseau. La partie 50 représente un réseau de portes "OU" dont les entrées sont reliées aux fils ACCO, ACC1 et ACC2, dont les sorties recopient les entrées si le signal transmis sur un fil TOU est à l'état logique "O" et dont les sorties sont toutes à l'état logique "1" si le signal sur le fil TOU est "1". La partie 51 représente un multiplexeur muni de trois groupes d'entrées et d'un groupe de sorties reliées aux entrées de la bascule 22, un premier groupe est relié aux sorties du circuit 50, le deuxième et le troisième groupes sont reliés aux trois fils transmettant les éléments binaires de fort poids des lignes BADRA et BADRB respectivement. Les positions de ce multiplexeur sont commandées par des signaux MUXA et MUXB issus de la troisième partie 52. Cette partie 52 re çoit des signaux CSA et CSB provenant des processeurs 1 et 2 respectivement. Lorsque ces signaux sont actifs cela signifie qu'un accès à la mémoire 10 est demandé. La partie 52 reçoit d'autres signaux notamment ceux des bascules 24, 26, 28 et 30. On examine maintenant le fonctionnement. Pour cela on se reporte à la figure 3 qui est un diagramme d'états du cicuit 15. On considère l'état de repos qui est l'état 15, caractérisé par les valeurs NC1 = 1 NC2 = 1 DTCK = 1 où NCI, NC2, DTCK sont les valeurs des signaux transmis par les fils du même nom. A partir de cet état on examine différents cas envisagés dans le cadre de l'invention a) cas où l'un des processeurs désire un accès en lecture dans la mémoire flash (BO-B4). Pour obtenir cette lecture on passe à l'état ST2 (NCî = 0, NC2 = 1, DTCK = O en parcou rant la flèche F1, puis de l'état ST2 on passe à l'état STO (NC1 = O, NC2 = O, DTCK = O) en parcourant la flèche F2, puis on retourne à l'état ST15 par l'intermédiaire de la flèche F3 b) cas où l'un des processeurs désire un accès en écriture dans ces mêmes mémoires flash (BO-B4).Ce cas survient lorsqu'une remise à jour du programme ou du paramètre se révèle nécessaire. Dans ce cas on va de l'état STIS à l'état ST12 par l'intermédiaire de la flèche F4 puis de l'état ST12 à l'état ST2 par la flèche F5. De l'état ST2 on retourne com me dans le cas précédent à l'état ST15 en passant par l'état STO. c) Cas où l'un des processeurs désire un accès en lecture dans les autres mémoires de l'état ST15. On passe à l'état ST14 (NC1 = 0, NC2 = 1, DTCK = 1) en parcourant la flèche F6, puis de cet état ST14 on passe à l'état ST13 (NC1 = 1 NC2 = O, DTCK = 1) en parcourant la flèche F7. De l'état ST3 on aboutit de nouveau à l'état ST2 en parcourant la flèche F8. De cet état ST2 on aboutit à l'état ST15 comme déjà dé crit. d) Cas où l'un des processeurs désire un accès en écriture dans les bancs de mémoire B5 et B6. De l'état STIS, on pas se à l'état ST13 comme décrit ci-dessus. Mais de cet état ST13 on passe à l'état ST12 en parcourant la flèche F9 et de cet état on revient à l'état ST15 en passant par les états ST2, STO. En conclusion : le cas a) a pour but de créer 1WS le cas b) a pour but de créer 2WS le cas c) a pour but de créer 3WS le cas d) a pour but de créer 4WS où WS sont les cycles d'attente. On pourra à ce sujet se rapporter sur les modèles de fabricant concernant le processeur 68000 dont le processeur 68302 est dérivé. A chacune des flèches est rattachée une condition que l'on va expliciter ci-dessous. F1 : cette flèche concerne les bancs BO-B4. Pour cela on doit d'abord avoir (voir tableau I) ACC2 + ACC2.ACCî.ACCO A cette condition s'ajoute la condition supplémentaire que le signal sur le fil GRA positionne les sélecteurs 35 et 38 (GRA = O, c'est le processeur 1 qui est connecté) en conformité avec le signal de demande de lecture WRA ou WRB d'où finalement Fl : (ACC2 + ACC2.ACC1.ACCO).(GRA.WRB + GRA.WRA) F4 est identique mais une lecture est demandée. E4 : (ACC2 + ACC2.ACCî.ACC0).(GRA.WRB + GRA.WRA) Les flèches F2, F3 et F5 n'impliquent aucune condition F2 : 1 E3 : 1 F5 : 1 La flèche F6 est parcourue lorsque les bancs B5 et B6 sont concernés, c'est-à-dire F6 : ACC2.(ACC1 + ACCO) ou t: :ou exclusif La flèche F7 est toujours parcourue. F7 : 1 F8 = WROM lecture demandée F9 = WROM écriture demandée. Signal WROM : ce signal ne doit pas être actif à l'état 15 et cesse de l'être à l'état O, ce qui s'écrit : WST WST = (NC1.NC2) .(NC1 + NC2 + DTCK) d'où WROM = GRA.WRA.CSA.WST + GRA.WRB.CSB.WST A la figure 4, on a représenté le diagramme d'état relatif aux signaux véhiculés par le fil GRA. L'état STTO se caractérise par le fait que le signal sur le fil GRA est égal à O donc, comme on l'a déjà dit c'est le processeur 1 qui a accès à la mémoire 10. Pour que l'accès soit accordé à un processeur, il faut passer à l'état STT1 en parcourant la flèche F10. Pour revenir à l'état STTO, on parcourt la flèche F11. L'état STTO est le plus privilégié, c'est-à-dire qu'il correspond à l'état de repos. Pour passer à l'état STT1 il faut respecter la condition ci-dessous F10 = MUXB où ~~~~ ~~~~~~~~~~~~~ MUXB = CNDB1 + CNDB2 COND1 est la condition qui exige que l'on se trouve à l'état STIS et qu'une requête d'accès a été émise par le processeur 2 CNDB1 = NCI.NC2.CSB.CSA CONDA2 est la condition qui exige que l'on se trouve à l'état STO (donc qu'un accès de la mémoire 10 par le processeur 1 se termine) il en découle donc que GRA = O et qu'un accès à cette mémoire est demandé par le processeur 2, d'où CNDB2 : NCî.NC2.DTCK.GRA.CS0B Pour passer de l'état SSTI à l'état STTO il faut satisfaire la condition qui exige que l'on soit à l'état O ou qu'aucun des processeurs ne désire d'accès à la mémoire 1. F11 = (NCI + NC2 + DTCK) + CSA.CSB. Le signal transmis sur le fil MUXA s'écrit MUXA = CNDA1 + CNDA2 CNDA1 est à rapprocher de la condition CNDB1. On constate que MUXA sera actif si CSA et CSB le sont en même temps (MUXA, CSA, CSB sont actifs à l'état HO). CNDA1 = NC1.NC2.CSA CNDA2 = NCî.NC2.DTCK.GRA.CSA Il est possible maintenant de comprendre le fonctionnement de l'ensemble des éléments 22, 50 et SI de la figure 2. A la sortie de la bascule 22 il y a quatre possibilités. Selon la première, les signaux ACCO, ACC1 et ACC2 sont au repos ACCO = 1 ACC1 = 1 ACC2 = 1 c'est-à-dire, aucun banc n'est sélectionné pour cela le signal TOU = 1, ce qui force les trois signaux de sortie du circuit 50 à prendre la valeur 1, le circuit 51 étant convenablement positionné MUXA = MUXB = 1. Selon la deuxième possibilité les signaux ACCO, ACC1, ACC2 sont mémorisés r on a alors TOU = O et MUXA = MUXB = 1. Selon la troisième possibilité les signaux présents sur les fils ADA sont mémorisés. Les entrées de la bascule 21 étant branchées sur les fils ADA MUXA = O, MUXB = 1 Selon la quatrième possibilité, les fils ADB sont mémorisés. Les entrées de la bascule 22 étant branchées sur les fils ADB, MUXA = 1, MUXB = 0 Le signal TOU s'écrit TOU = NC1.NC2.DTCK + CSA.CSB En conclusion ACCO-2 = ADA.MUXB.MUXA + ADB.MUXA.MUXB + (ACCO-2 + NC1.NC2.DTCK) MUXA.MUXB Pour stopper ou non les processeurs 1 ou 2, les signaux EDKA et EDKB doivent fermer les circuits 39 et 40 EDKA = GRA.CSA EDKB = GRA.CSB REVENDICATIONS 1. Système de traitement d'informations comportant au moins deux processeurs (1) et (2) exécutant des suites d'instructions, caractérisé en ce qu'il comporte un seul ensemble de mémoire (10) dans lequel sont rangées lesdites instructions, en ce qu'il comporte un circuit d'arbitrage (15) pour donner l'accès de cet ensemble auxdits processeurs. 2. Système de traitement d'informations selon la revendication 1, caractérisé en ce que les processeurs (1), (2) sont du même type et exécutent les mêmes suites d'instructions. 3. Système de traitement d'informations selon la revendication 1 ou 2, caractérisé en ce que l'ensemble de mémoire (10) est formé de bancs de mémoire présentant des temps d'accès différents et en ce que le circuit d'arbitrage (15) est muni de moyen d'adaptation pour adapter ces bancs de mémoire auxdits processeurs. 4. Système de traitement d'informations selon la revendication 3, pour lequel les processeurs (1), (2) sont munis d'une commande pour cycle d'attente, caractérisé en ce que les moyens d'adaptation élaborent des signaux pour cette commande afin de créer des cycles d'attente en nombre compatible avec les temps d'accès desdits bancs.