Brevet FR2678402A1 — publié le 19921231

"Dispositif de traitement d'informations". Description: La présente invention concerne un dispositif de traitement d'informations comportant: une mémoire programme pour contenir des données d'instructions, une unité d'opérations formée d'au moins un organe d'opérations pour exécuter lesdites instructions, une unité centrale de décodage d'instructions pour fournir les codes opératoires à l'unité d'opérations. De tels dispositifs sont bien connus et trouvent d'importantes applications Cependant à l'heure actuelle, les programmes exigent de plus en plus d'instructions qui, elles-mêmes, impliquent de plus en plus d'opérations Les unités d'opérations sont alors sollicitées d'une manière accrue et présentent des structures dont la complexité s'accroit Par exemple, les unités d'opérations des micro-ordinateurs de type PC peuvent être formées d'un premier organe d'opérations constitué par une unité arithmétique et logique et par un deuxième organe constitué par un coprocesseur mathématique dédié aux opérations de calculs flottants On est alors confronté avec des problèmes de coordination avec les résultats de l'unité logique et ceux du coprocesseur. L'invention a pour but de fournir un dispositif, du genre mentionné dans le préambule, qui est formé d'une unité d'opérations pouvant présenter une structure complexe et pouvant être composée d'une pluralité d'organes d'opération et pour laquelle les problèmes de coordination et d'asynchronisme sont dans une large mesure résolus. Pour cela, un dispositif du genre mentionné dans le préambule est remarquable en ce que l'unité d'opérations peut comporter au moins un organe de mémoire du type FIFO branché entre les organes d'opérations et l'unité centrale de décodage d'instructions, un ou plusieurs organes d'exécution pouvant fonctionner en parallèle sous le contrôle d'une seule unité de décodage d'instructions. L'invention s'adapte particulièrement bien aux processeurs conçus pour traiter des langages chaînés du type FORTH par exemple On pourra consulter à ce sujet la demande de brevet européen N O O 185 215 ou mieux, la demande de brevet déposée simultanément avec la présente demande sous le No 91 08062 Avec ce genre de processeur, les problèmes de coordinations sont encore allégés car un fonctionnement de type asynchrone est envisagé entre les différents constituants du dispositif. Selon un mode de réalisation préféré de l'invention, un dispositif de traitement d'informations est remarquable en ce qu'il comporte au moins une mémoire d'adresse de retour d'appel de procédure de type pile et au moins une mémoire de données intermédiaires de type pile également. 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 1 montre un schéma synoptique d'un dispositif conforme à l'invention. La figure 2 montre le format des instructions. La figure 3 montre la structure d'une unité centrale de décodage. La figure 4 montre la structure des organes d'opérations. La figure 5 montre la structure d'un organe de mémoire. Les figures 6, 7, 8 représentent un organigramme définissant le fonctionnement de l'unité centrale de fonctionnement. La figure 9 représente un organigramme définissant le fonctionnement de l'organe d'opérations. A la figure 1, on a représenté un dispositif de traitement d'informations, plus particulièrement adapté aux programmes rédigés en FORTH Les informations de programmes formées d'instructions et de paramètres sont emmagasinées dans une mémoire de programme 1 Ces informations apparaissent à la sortie 3 de cette mémoire 1 Le code d'adresse o sont rangées ces informations de programme est appliqué à l'entrée d'adressage 5 de cette mémoire 1. Une mémoire 8 de type pile "LIFO", appelée par la suite mémoire de retour, est prévue pour contenir des codes d'adresses pour la mémoire 1 Ces codes d'adresse indiquent l'emplacement, dans la mémoire 1, de l'instruction à exécuter après le déroulement d'un sous-programme Les codes d'adresses de cette mémoire pile 8 sont disponibles sur un accès 10. L'exécution des instructions avec, éventuellement, le traitement de différents paramètres, a lieu dans une unité d'opérations 15 formée de trois organes d'opérations 16, 17 et 18 Ces organes comportent essentiellement d'une part une unité arithmétique et logique ALU 20, 21 et 22 respectivement ayant des possibilités diverses, par exemple la multiplication peut être câblée pour l'une et non pour l'autre D'autre part, ces unités comportent une mémoire pile 25, 26 et 27 respectivement pour contenir des données diverses, résultats partiels, etc Le dispositif de traitement communique avec le monde extérieur au moyen de deux accès 29 et 30, l'accès 29 pour l'entrée des informations et l'accès 30 pour la sortie. Une unité centrale de décodage 35 détermine les différents parcours des informations entre les mémoires 1 et 8, l'unité d'opérations 15 et les accès 29 et 30. Conformément à un aspect de l'invention, l'unité d'opérations 15 comporte deux organes de mémoires 36 et 37 formés à partir de mémoires de type FIFO; ces organes sont branchés entre l'unité 35 et les organes d'opérations 16 et 17 respectivement L'organe d'opérations 18 est, quant à lui, branché directement sur l'unité 35; une ligne commune de données 46 assure la liaison entre les organes 36, 37, l'unité 18 et l'unité centrale de décodage 35. L'unité centrale de décodage 35 comporte un organe de décodage 48 constitué d'une manière avantageuse, à partir d'une mémoire associative avec son registre d'entrée 49, un registre d'adressage 50 pour adresser la mémoire programme 1 appelée aussi registre programme, une unité de gestion des interruptions 52 qui gèrent les interruptions déclenchées par des signaux appliqués à l'entrée 54 de l'unité 35, et une unité de séquencement 60 qui en gère le fonctionnement Cette unité 35 comporte d'autres éléments qui seront explicités plus loin dans le présent exposé. A partir de l'unité centrale 35, les informations provenant de la borne 29 peuvent être dirigées vers l'un des organes 16, 17 ou 18 en agissant sur un commutateur 62 En ce qui concerne les informations à fournir à la borne de sortie 30 elles sont emmagasinées dans un registre tampon 64, dont la commande de chargement provient de l'unité 35 Les entrées de ce registre-tampon sont reliées à une ligne commune de données (ligne BUS) 66 Cette ligne de sortie de données 66 interconnecte l'unité 35 avec toutes les unités 16, 17 à 18. Les informations transmises sur la ligne 46 sont organisées selon le format représenté à la figure 2 Les différents éléments binaires transportés en parallèle par cette ligne 46 constituent différents champs CU: données ou instructions à exécuter NOUE: destination du champ CU, c'est-à-dire le numéro de l'organe d'opérations 16, 17 ou 18 dans l'exemple décrit; ce champ peut, en variante, comporter autant d'espacements qu'il y a d'organes d'opérations, de sorte que des instructions peuvent être exécutées en parallèle par plusieurs de ceux-ci, D/I: ce champ formé d'un élément binaire définit si le champ CU est une instruction pour l'unité d'opération ou une donnée. Outre ce format, les relations entre les organes 16 à 18 et l'unité centrale 35 sont complétées par différents signaux permettant d'établir un protocole d'échange de données entre les unités 35 et 15. 1) Lecture L'unité 35 demande la lecture d'une donnée contenue dans l'une des mémoires piles 25, 26 ou 27. La donnée est disponible et prête lorsqu'un signal RAD devient actif Ce signal est élaboré de la manière suivante à partir des signaux DL Vi et RA Di. les signaux RA Di (i = 1, 2, 3): proviennent respectivement des organes 16, 17 et 18 et signifient que les données issues des mémoires 25 à 27 sont disponibles en lecture pour l'unité 35 sur la ligne 66. les signaux DL Vi signifient que l'unité 35 demande la lecture de la mémoire 25, 26 et 27 concernée. ces signaux DL Vi et RA Di sont combinés pour fournir le signal RAD élaboré par le circuit logique 70 qui effectue l'opération logique: RAD = (DLV 1 RAD 1) + (DLV 2 RAD 2) + (DLV 3 RAD 3) 2) Ecriture ou envoi d'une instruction par l'unité 35 dans l'un ou plusieurs des organes 16 à 18, ceci est effectué d'une part, au moyen des signaux DA Vi: fournis par l'unité centrale 35 pour signifier qu'une demande d'écriture est faite (en ce qui concerne l'unité 18, le fil DAV 3 est connecté à un fil qui se confond avec un fil LA qui sera explicité plus loin). et d'autre part, au moyen des signaux RA Fi: fournis par les organes de mémoire 26, 27 et par l'unité 18 par l'intermédiaire d'un fil DL signifient que les organes 26, 27 et l'unité 18 sont prêtes à recevoir les données. Les signaux RA Fi et DA Vi sont combinés pour fournir, par l'intermédiaire d'un circuit logique 72 un signal RAF tel que: RAF = (DAV 1 RAF 1) + (DAV 2 RAF 2) + (DAV 3 RAF 3) si il n'est possible de solliciter qu'un seul organe à la fois. Si par contre plusieurs organes peuvent être sollicités, le signal RAF doit être actif quand tous les organes ont répondu, ce qui permet d'écrire simultanément dans plusieurs organes 16 à 18. On notera que le signal RAF 3 se confond avec le signal DL émanant de l'unité 18 et le signal DAV 3 avec un signal LA à appliquer à ce même organe 18 Ces signaux DL et LA seront explicités par la suite. La figure 3 montre en détail l'unité centrale 35. L'entrée de l'unité de décodage 48 est reliée à la sortie de la mémoireprogramme 1 par l'intermédiaire d'un circuit d'aiguillage 90 commandé par un signal CMI Dans une autre position, ce circuit relie l'entrée de l'unité 48 à la ligne 66 La sortie de cette unité de décodage, en ce qui concerne les instructions et données à transmettre aux différents organes 16 à 18, se fait sur la ligne 46 par l'intermédiaire d'un circuit d'aiguillage 92 à deux positions D'autres données issues de la mémoire pile 8 peuvent être transmises par la ligne 46, lorsque le circuit 92 est mis dans son autre position On notera que la mémoire 8 est décomposée en 2 parties: une partie 8 a contenant toutes les données antérieures y comprise la donnée placée en avant-dernière position NOR sur la pile, et une partie 8 b contenant la donnée de sommet de pile TOR. L'unité de décodage 48 fournit aussi les signaux propres à certaines instructions, par exemple: DBV: demande de communication avec l'une des mémoires 25, 26 ou 27, CMI: positionne le commutateur 90, FRT: donne le type d'instruction de retour, SMA: indique si l'instruction concernée est à exécuter par l'unité centrale de décodage 35 ou non, FNO: indique une forme normale d'instruction de retour CST: indique que l'instruction définit une constante VAR: indique que l'instruction définit une variable. IN: permet l'introduction de données provenant de l'extérieur (accès 29), OUT: permet de fournir des données à l'extérieur (accès 30). Le registre d'adressage 50 peut être chargé de différentes manières, selon les positions d'un circuit d'aiguillage 95 Dans une première position, son contenu est incrémenté d'une unité au moyen d'un incrémenteur 97 Dans une deuxième position, il est chargé par l'information de sortie de la mémoire pile 8 via un commutateur 98 Dans une troisième position, il est chargé à partir d'un circuit 52, par l'adresse du programme d'interruption et, dans une quatrième position par le contenu de la donnée de la mémoire-programme 1 via le commutateur 90. La partie 8 b de la mémoire pile 8 peut être chargée, par l'intermédiaire d'un multiplexeur 100 à quatre positions, de données provenant: soit du registre 50, le multiplexeur est mis dans une première position, soit de l'incrémenteur 97, le multiplexeur 100 est dans une deuxième position, soit du commutateur 98, le multiplexeur étant dans une troisième position, soit par les données présentes à la sortie du circuit d'aiguillage 90, le circuit 100 est alors dans une quatrième position. L'unité de séquencement 60, en fonction des signaux DI, FRT, SMA, FNO, CST, VAR, TEST, CMI, DBV, RAD et RAF, engendre les signaux: DA Vy: pour sélectionner l'un des organes 16 à 18, RSP: pour contrôler le pointeur de la pile (mémoire 8) afin de la faire évoluer. On a prévu aussi un registre 105 couplé à un décodeur 107 pour fournir un signal TEST Ce registre peut être chargé par des informations provenant de la mémoire associative 48 ou par des informations véhiculées par la ligne 66 Ce registre 105 est connecté à la ligne 66 par un commutateur 108 commandé par le signal CMI. On notera aussi la présence d'un commutateur 109 à trois états qui permet de connecter la sortie de l'unité de décodage 48 à la ligne 66. La figure 4 montre plus en détail la structure de l'organe d'opérations 16, la structure des autres organes 17 et 18 pouvant être identique. Il comporte tout d'abord un organe de décodage 110 qui analyse les données à la sortie de l'organe de mémoire FIFO optionnelle 36 Il fournit deux signaux: IS: indiquant qu'on a affaire à une instruction, SWP: indiquant qu'une donnée est adressée à l'organe 16. Ces informations sont fournies à un organe de commande 112 qui agit, par un signal VUE notamment, sur un cicruit d'aiguillage 119 à deux positions Lorsqu'il est dans une première position, le code opératoire à la sortie de la mémoire 36 est appliqué à l'unité arithmétique et logique 20; dans l'autre position, l'unité 20 est inactivée, le code opératoire est alors le code "nop". La première entrée d'opérande 01 de l'unité 20 est reliée à la sortie d'un registre 25 b qui forme le sommet de la mémoire pile 25 La sortie de ce registre est aussi reliée à l'autre partie 25 a de la mémoire pile Le registre 25 b est un registre double du genre Maître-Esclave de sorte qu'il est possible d'y emmagasiner une donnée à son entrée tout en lisant la précédente à sa sortie L'entrée du registre 25 b est reliée à la sortie d'un commutateur 118 à trois positions dans une première position l'entrée du registre est reliée à la sortie NOP de la mémoire 25 reliée à la deuxième entrée d'opérande 02 de l'unité arithmétique et logique 20; dans une deuxième position l'entrée du registre est reliée à la sortie de l'organe 36 et dans une troisième position à la sortie de l'unité 20 Un amplificateur 120 connecte la sortie du registre 116 à la ligne 66. Le circuit de séquencement 112 fournit aussi le signal RA Di et les signaux pour la communication avec l'organe de mémoire 36 et la mémoire 25 Il fournit le signal de synchronisation DL en fonction notamment des signaux LA et MV Il reçoit aussi le signal DCGT issu de l'unité 20 Ce signal signifie que l'unité 20 a terminé son opération et qu'elle est alors disponible. La figure 5 montre un exemple de réalisation de l'organe de mémoire FIFO 36, la structure de l'organe 37 pouvant être considérée comme identique. L'organe de mémoire 36 est bâti autour d'une mémoire vive 200 à accès aléatoire montée en mémoire pile Un compteur 202 s'incrémentant sur les signaux IW (écriture) et mis à zéro par un signal ZW est utilisé pour l'écriture de la donnée provenant de la ligne 46 dans la mémoire 200, un compteur 204 s'incrémentant sur des signaux IR (lecture) et mis à zéro par un signal ZR est utilisé pour indiquer l'adresse la lecture Le choix pour l'adressage de la mémoire entre ces deux compteurs est effectué par un commutateur 206 commandé par le signal d'écriture/lecture WR. Un circuit de séquencement 210 pilote l'évolution des compteurs 202 et 204 et gère le protocole de communication entre l'unité 16 et l'unité centrale 35 (comme indiqué précédemment avec les signaux DA Vi, RA Fi, LA, DL, ML). ORGANIGRAMME DE L'ORGANE DE COMMANDE 60 DE L'UNITE 35 (figures 6, 7 et 8): La liste des opérations que peut exécuter l'unité est donnée en Annexe I avec la référence des cases de l'organigramme qui vont être décrites. La case K 99 indique la mise à l'état initial du dispositif. La case K 100 indique une séquence d'initialisation qui se déroule à la mise en marche du dispositif. Le contenu du registre programme 50, référencé sur les organigrammes par PC, est mis à zéro. Le pointeur RSP de la mémoire de retour 8 est aussi initialisé. Le sommet de la pile TOR est mis à zéro. La case K 101 indique la scrutation de l'organe de réception d'interruption Si une interruption est détectée DI = " 1 " à la sortie de l'organe 52, on passe à la case K 103. La case K 103 indique les opérations préalables pour effectuer le programme d'interruption demandé Tout d'abord le contenu du registre programme 50 est empilé au sommet TOR de la mémoire de retour 8 (d'o les opérations RSP+ 1 (TOR) +NOR), les multiplexeurs 100 et 95 étant alors positionnés convenablement Puis on vient lire dans l'organe d'interruption 52 l'adresse lRIl o démarre le programme d'interruption Cette valeur est alors emmagasinée dans le registre programme 50 La lecture du registre RI provoque la mise à zéro de DI de sorte que lorsqu'à la fin de ces opérations préalables on retourne à la case K 101, le test de DI amène à la case K 110. A cette case K 110 on indique une série d'opérations. L'instruction contenue dans la mémoire-programme 1 est appliquée à la mémoire associative 48, référencée par MA dans les organigrammes, par l'intermédiaire d'un circuit d'aiguillage 90 Ceci est noté par M(PC)4 MA Le contenu du registre programme 50 est incrémenté d'une unité avant d'être emmagasiné au sommet de la pile TOR de la mémoire de retour 8. Puis à la case K 112 qui suit, la mémoire associative 48 effectue un test sur l'instruction décodée pour savoir si elle concerne l'unité de séquencement 35 ou les organes d'opérations 16 à 18 En d'autres termes, si l'instruction est une instruction à exécuter ou si c'est l'adresse d'un sous-programme ou une instruction concernant le séquencement du programme Le fonctionnement est le suivant si la donnée d'entrée de la mémoire asociative correspond à une valeur mémorisée dans ladite mémoire associative (lors de l'initialisation), cette dernière la reconnaît et considère qu'il s'agit d'une instruction à exécuter Si elle n'est pas reconnue, la donnée est considérée comme étant une adresse de sous-programme à exécuter (en ce qui concerne l'utilisation d'une mémoire associative, on pourra se reporter à la demande de brevet au nom de la demanderesse, précédemment citée) Si c'est un sous-programme SMA = 1 on va à la case K 115 o il est indiqué que le contenu de la mémoire-programme pointée par le registre programme est transféré dans ce même registre programme Puis on revient à la case K 101. Si le test de la case K 112 indique qu'une instruction doit être exécutée on passe, par l'intermédiaire d'une branche UN", à la case K 120 représentant une série d'opérations montrée aux figures suivantes Après avoir effectué K 120 on revient à la case K 101. Ainsi la branche "Nu indiquée ci-dessus aboutit à la case K 130 de la figure 7 Cette case K 130 indique un test sur la valeur FNO Cette valeur indique si on a affaire à un retour de sous-programme FNO = 1 ou pas FNO = 0. Si c'est un retour de sous-programme, on prend la branche "Y" de la case K 130 pour aller à la case K 132 o l'on examine si le signal DBV est à " 1, signifiant ainsi qu'il y a une demande pour une des mémoires de données 25 à 27 S'il n'y a pas cette demande on passe à la case K 148 Le but de ces opérations est de faire un retour de sous-programme Le compteur de programme PC est chargé avec la seconde valeur de la pile NOR et la pile est donc vidée de 2 éléments. Si le test indiqué à la case K 132 est positif on va à la case K 136 o l'on teste la valeur RAD, c'est-à-dire qu'à la demande d'accès à la mémoire (voir case K 132) on attend que le signal d'accès RAD indique que cette accessibilité est obtenue On passe ensuite à la case K 138 o l'on examine la valeur du signal CMI Selon cette valeur le sommet de la pile de paramètre TOP des mémoires 25, 26 ou 27 est transféré soit dans le registre-programme 50 (case K 140), soit dans le registre 105 (appelé RTST sur l'organigramme) qui est un registre de contrôle de séquencement faisant partie de l'unité 35 (case K 142). Le but de ces opérations est de faire une rupture de séquence de programme suivant une donnée provenant des organes 16 à 18 et contenue en sommet (TOP) de leur pile-mémoire 25 à 27 respectivement. De la case K 142 on va effectuer un test indiqué à la case K 145, c'està-dire que l'on examine les données contenues dans le registre Suivant le résultat de ces données on va à la case K 147 o le sommet de la pile de retour, situé donc à la position TOR est emmagasiné dans le compteur-programme, ce qui correspond à l'exécution séquentielle de l'instruction suivante, le contenu du registre programme 50 ayant été précédemment incrémenté d'une unité (case K 110) L'exécution de ces instructions précédemment décrites permet la sortie des données vers le monde extérieur puisqu'elles circulent sur la ligne BUS 66 connectée à l'accès par l'intermédiaire du registre 64 De la case K 145, on peut aller aussi à la case K 148 o il est indiqué que le contenu de l'avant dernière position NOR de la mémoire 8 est chargé dans le registre programme 50 correspondant à un retour de sous- programme Des cases K 147 et K 148 on va à la case K 101 déjà décrite. On revient maintenant à la case K 130 et l'on examine le cas o l'on a affaire à un retour de sous-programme (FNO = 1) ou pas Si non (pas de retour de sous-programme) on passe à la case K 150 o est indiqué un transfert de la donnée contenue au sommet TOR de la mémoire de retour dans le registre-programme 50, ce qui correspond à l'exécution en séquence de l'instruction suivante Ensuite on va à la case K 151 si un test indiqué à la case K 152 est positif Le test de la case K 152 détermine si l'on a affaire à une instruction du type CONST ou VAR selon la nomenclature FORTH La case K 151 représente l'emmagasinage, à la position TOR de la mémoire 8, du contenu du registre-programme 50 augmenté d'une unité (par l'incrémenteur 97) Après le passage de la case K 151, on va à la case K 156 o l'on fait la séparation entre une constante ou une variable Si c'est une constante on emprunte la branche "Y" On emprunte alors la ligne BUS 46 connectée aux mémoires de données des organes 16 à 18, on attend que le signal RAF de disponibilité soit actif (case K 158) RAF une fois actif, la donnée passe (case K 159) sur la ligne 46 et entre dans les organes 16 à 18 par l'intermédiaire ou non des mémoires FIFO 36 ou 37 Lors de son passage dans l'unité 48 la constante est mise au fo rmat décrit à la figure 2. Le test de la case K 156 peut être négatif, on emprunte alors la branche ONT pour aller à la case K 162 Là, on examine le type de l'instruction concernant une variable (si elle est directe ou indirecte) Si elle est indirecte on emprunte la branche "Y' pour aller à la case K 164 Le registre-programme 50 est rechargé de la valeur pointée dans la mémoireprogramme par son contenu (case K 164), dans ce cas il pointe l'adresse effective de la variable; si elle est directe on va à la case K 170 à l'entrée "El". Le test à la case K 152 peut être négatif, on effectue alors un test (case K 167) pour savoir si l'on a affaire à une instruction de type (>R ou R>)(échange pile de retour avec pile de donnée Selon le résultat de ce test, on prend les branches "Y" et "NT La case K 170, qui va être détaillée à l'aide de la figure 8, possède un accès El qui succède aux cases K 164, K 140 et K 162, un accès E 2 qui succède à la case K 159 et qui est située dans la branche 'N" de la case K 167 et un accès E 3 qui est situé dans la branche NY" de la case K 167. On examine alors la case K 170 détaillée à la figure 8. De l'accès El, on va à la case K 175 o l'on teste si on a affaire à une lecture ou à une écriture de la variable (W/R) Si on veut écrire la variable dans 16 à 18, on examine l'accessibilité de la mémoire tampon, ou de l'unité d'opérations si elle n'est pas raccordée à une mémoire FIFO (case K 176) Si oui on va à la case K 177 o l'on effectue le transfert. Si on veut faire une lecture de la variable d'un organe 16 à 18 (branche "RN du test indiqué à la case K 175), on attend que cette mémoire soit disponible, c'est-à-dire, on teste (case K 181) la valeur du signal RAD puis on passe à la case K 182 o le contenu de la mémoire-paramètre visée est mis dans la mémoire-programme à l'endroit pointé par le compteur-programme en passant par le bus 66. Les opérations de lecture ou d'écriture étant effectuées, on passe à la case K 186 o l'on examine la forme retour: si c'est un retour normal, on passe à la case K 188 o le contenu de la mémoire-programme à l'emplacement NOR est mis dans le registre programme 50 (la mémoire est 'dépilée" deux fois) Si le test de la case K 186 est négatif on va à la case K 189 o c'est le contenu, à l'emplacement TOR de la pile de retour 8, qui est mis dans le registre programme, après un dépilage de 1 cran On exécute alors l'instruction à l'adresse suivante de celle que l'on vient d'exécuter De ces cases K 188 et K 189 on va à l'accès S de l'organigramme de la figure 7. L'accès E 2 est relié à la case K 186 indiquant ainsi un même test pour les constantes et les variables concernant la forme du retour. L'accès E 3 est pris essentiellement par les instructions d'échanges entre la mémoire-pile 8 et les mémoires 25, 26 et 27 A la case K 200, on discrémine les instructions R> et >R (notations du langage Forth) Si on a affaire à l'instruction R>, on va à la case K 202 o l'on teste et attend la disponibilité de l'organe d'opération concerné; cela fait, on teste à la case K 205 si l'instruction R> est de type Ré ou pas Une instruction de type R@ implique simplement un transfert entre la mémoire 8 (position NOR) et la mémoire paramètre de l'unité concernée (case K 207), tandis que si elle n'est pas de ce type il faut prévoir un dépilage de la mémoire 8 (case K 209). Le test de la case K 200 peut indiquer que l'on a affaire à une instruction >R On attend la disponibilité de la donnée émanant de l'unité concernée, en testant le signal RAD case K 214 La donnée arrivée est mise dans la mémoire 8 comme indiqué à la case K 216. L'organigramme de la figure 8 montre un accès S qui est le point de sortie commun des cases K 188, K 189, K 209 et K 216. ORGANIGRAMME DE L'ORGANE DE COMMANDE DES ORGANES D'OPERATIONS (figure 9): Les opérations effectuées par ces organes sont données en Annexe Il avec la référence des cases de l'organigramme qui vont être décrites. Cet organigramme commence à la case K 300 qui montre une séquence d'initialisation o l'on met à zéro les signaux DL, VUE et des drapeaux UND, OVD et FSW A la case K 302 qui suit on met à ''" le signal DL qui indique que l'organe d'opération est disponible Si le signal LA prend lavaleur " 1 ", partant des conditions initiales précitées, le test indiqué à la case K 304 est positif On examine alors, case K 306 si l'information qui vient de l'organe du bus 46 est une instruction ou pas (test d'une valeur IS) Si c'est une instruction, elle doit être exécutée et est appliquée pour cela à l'unité 20, figure 4 On examine ensuite si cette instruction est une instruction SWAP (test de SWP à la case K 310) Si oui le drapeau FSW est positionné (case K 312), si non ojn va sur la branche "a' qui ramène à la case K 302 Du fait que VUE a été mis à ''1 le test à la case K 304 est négatif De ce fait on va à la case K 315 qui, pour devenir positif, doit attendre que le signal DCGT devienne actif DCGT = 1 indiquant que l'ALU est disponible S'il ne l'est pas le test indiqué à la case K 318 renvoie à la case K 302 Lorsque le test de la case K 315 devient positif on passe alors à la case K 320 qui teste la valeur du drapeau FSW positionné éventuellement à la case K 312 Si FSW = 1 (instruction SWAP) différentes mesures sont prises comme indiqué à la case K 322, les signaux DL et VUE sont mis à N O N, le drapeau FSW est reinitialisé, la donnée à la sortie de l'ALU est mise dans la position TOP de la mémoire de données On a ainsi échangé, à travers l'unité 20, les 2 valeurs de la manière suivante: le contenu de TOP est dans le registre 25 b; le contenu du NOP de la mémoire 25 est mis en relation avec l'entrée d'opérande 02 de l ALU 20 A la sortie de l'ALU 20 le contenu de NOP est transmis par l'intermédiaire du multiplexeur 118 à l'entrée du registre 25 b, la commande WDS permet l'enregistrement dans la mémoire 25 de la partie 25 a à la position NOP du contenu du registre 26 b et la valeur d'entrée du registre 26 b est mémorisée dans TOP (contenu de la deuxième partie du registre 26 b) de sorte que l'on obtient bien à la fin de ce processus l'échange requis. Si le test de la case K 320 est négatif on va à la case K 325 o les valeurs des signaux DL et VUE sont mises à "O', le pointeur de la mémoire de données est décrémenté d'une unité et le résultat à la sortie de VALU est mis au sommet de la pile On a effectué ainsi une opération sur le contenu TOP et NOP et le résultat est écrit dans TOP (registre 26 b) On teste ensuite, case K 327 si le pointeur de la mémoire a sa valeur minimum; si oui un drapeau UND est positionné à >'l (case K 329) Il est alors possible d'élaborer un signal d'interruption vers le circuit 52 afin d'engendrer une interruption Si cette position minimum n'est pas atteinte on prend la branche 'a' qui mène à la case K 302. A la case K 318, on détecte s'il y a une communication dans le sens organe d'opérations-organe de décodage ( 16 vers 35) demandée à travers la ligne 66 Si c'est le cas on a alors DLV = 1 Pour que le test de la case K 318 soit positif il faut que DLV VUE MV = 1 Le signal MV = 1 implique que la mémoire FIFO est vide Ceci assure le synchronisme des opérations entre l'unité 30 et les différents organes 16, 17 et 18 Les données du registre 26 b (TOP) sont mises sur le bus par l'intermédiaire de l'amplificateur 120, puis les valeurs "O" et " 1 " sont affectées respectivement aux signaux DL et RAD La donnée NOP est chargée ensuite dans le registre 26 b (TOP), le pointeur DSP est décrémenté d'une unité et le signal RAD est mis à zéro (case K 330) On passe alors à la case K 327 déjà décrite. On revient au test indiqué à la case K 306 Si l'on n'a pas affaire à une instruction on va à la case K 335 o le pointeur de la mémoire de données (DSP) est incrémenté d'une unité, la donnée est emmagasinée à la position TOP de cette mémoire puis on agit sur WDS, cela copie l'ancienne valeur de TOP dans NOP (signal d'écriture sur la pile) et le signal DL est mis à "O" On a ainsi chargé une donnée provenant de l'unité 35 dans la mémoire pile de l'unité d'opération Le pointeur est ensuite testé, case K 337, pour savoir si sa valeur n'a pas atteint le maximum permis Si le maximum n'est pas atteint on prend la branche a pour revenir à la case K 302 Si ce maximum est atteint on met à " 1 " le signal OVD pour signaler qu'un débordement de la mémoire est prêt de se produire Il est aussi possible d'engendrer une interruption. FONCTIONNEMENT DE L'ORGANE DE GESTION DES MEMOIRES TAMPONS: En résumé, il existe trois processus en parallèle pour la FIFO à partir de laquelle sont constitués les organes de mémoire 36 et 37. producteur: l'unité centrale 35 veut écrire la FIFO; elle le fait, si la mémoire n'est pas pleine et incrémente le pointeur d'entrée. consommateur: l'organe d'opération 16 ou 17 lit la FIFO; si elle n'est pas vide, elle incrémente le pointeur de sortie. test: si pointeur de sortie = pointeur d'entrée, la FIFO est vide. si le pointeur d'entrée = pointeur de sortie -1, la FIFO est pleine. ANNEXE I REFERENCE N DE LA CASE OU OPERATIONS SUR LA SELECTION DE ORGANI L'OPERATION EST GRAMME TERMINEE R> R FETCH ou STORE IMMEDIAT CONSTANTE VARIABLE RETOUR CONDITION RETOUR DE SOUS-PROGRAMME APPEL DE SOUS-PROGRAMME TRAITEMENT INT. I 1 I 4 I 7 I 6 I 7 I 8 I 10 Ili I 12 I 13 K 216 K 209 K 207 K 177, K 182 K 159 K 175 K 147 K 148 K 1115 K 103 ANNEXE II REFERENCE CASES OU OPERATIONS SUR L'OPERATION EST ORGANI PRATIQUEMENT GRAMME TERMINEE DECHARGEMENT Jil K 330 OPERATION 1 TERME * J 2 K 308 SWAP J 3 K 322 OPERATION 2 TERMES ** J 4 K 325 CHARGEMENT J 5 K 335 * Opération ALU sans empilage/dépilage ** Opération ALU avec dépilage (TOP-TOP) ANNEXE III REPERTOIRE DES SIGLES EMPLOYES ALU unité arithmétique et logique des organes d'opération 16, 17, 18 CMI signal qui est issu de l'unité de décodage 48 positionne le commutateur 90 notamment, CST indique que l'instruction définit une constante DAV signal fourni par l'unité centrale pour demander l'accès aux mémoires FIFO 36 et 37 ou directement à l'unité 18, i = 1, 2, 3 DBV signal issu de l'unité de décodage 48 pour une demande de communication avec l'une des mémoires 25, 26 ou 27, DCGT disponibilité de l'ALU 20, 21 ou 22 DI provient du circuit 52 pour déclencher un programme d'interruption DL disponibilité de l'organe d'opérations ( 16, 17 ou 18) DL Vi signaux provenant de l'unité centrale 35 pour demander la lecture des mémoires 25, 26 et 27 DSP pointeur des mémoires 25, 26 ou 27 FIFO mémoire dans laquelle la première donnée entrée est la première donnée sortie FNO indique une forme normale d'instruction de retour FRT donne le type d'instruction de retour FSW drapeau indiquant l'instruction SWAP (échange TOP et NOP) IN permet l'introduction de données provenant de l'extérieur (accès 29) OUT permet de rendre disponible à l'accès 30 des données provenant de la ligne BUS 66 IR incrémentation du compteur de lecture de la mémoire 200 (mémoire FIFO) IS signal élaboré par l'organe de décodage 110 et faisant partie de l'organe d'opération 16, indique que l'on a affaire à une instruction IW incrémentation du compteur d'écriture de la mémoire 200 (mémoire FIFO) LA signal indiquant que la mémoire 36 ou 37 peut être lue par l'organe 16 ou 27 ou que l'information peut être prélevée directement sur la ligne 46 (cas de l'organe 18) MA mémoire associative constituant l'organe de décodage 48 M mémoire programme 1 MV signal indiquant que les mémoires 36 ou 37 sont vides NOP avant-dernier élément de la pile formée par les mémoires 25, 26 ou 27 NOR avant-dernier élément de la pile formée par la mémoire 8 OUT permet de fournir des données à l'extérieur (accès 30) OVD débordement des mémoires 25, 26 ou 27 PC registre 50 RAD signal indiquant que des données provenant des organes d'opérations sont disponibles pour l'unité centrale 35 RA Di signaux provenant de chacun des organes 16, 17, 18 (i = 1, 2, 3) signifiant que les données issues des mémoires 25 à 27 sont disponibles RAF indique que l'accès aux organes de mémoire FIFO 26 ou 27 est permis RA Fi signaux émanant de chacun des organes de mémoire FIFO pour signifier qu'ils sont disponibles RI contenu du registre d'interruption ( 52) RSP pointeur de la mémoire de retour ( 8) RTST registre de test 105 SMA indique si l'instruction concernée est à exécuter par l'unité centrale de décodage 35 ou non SWP signal élaboré par l'organe de décodage 110 et faisant partie de l'organe d'opérations 16, indique qu'une donnée est adressée à l'organe 16. TEST signal élaboré par le circuit 107 TOP TOR UND VAR VUE W WDS WR ZR ZW sommet de la pile constituée par les mémoires 25, 26 ou 27 sommet de la pile constituée par la mémoire 8 signal indiquant le vidage des mémoires 25, 26 ou 27 indique que l'instruction définit une variable validation de l'ALT 20 par le décodeur d'instruction 112 de l'organe 16 écriture ou lecture d'une donnée dans les mémoires 25, 26 ou 27 signal pour l'écriture dans la mémoire pile des données , 26 ou 27 écriture ou lecture de la mémoire 200 (mémoire FIFO) mise à zéro du compteur de lecture de la mémoire 200 (mémoire FIFO) mise à zéro du compteur d'écriture de la mémoire 200 (mémoire FIFO) Revendications 1 Dispositif de traitement d'informations comportant: une mémoire programme pour contenir des données d'instructions, une unité d'opérations formée d'au moins un organe d'opérations pour exécuter lesdites instructions, une unité centrale de décodage d'instructions pour fournir les codes opératoires à l'unité d'opérations, caractérisé en ce qu'il comporte au moins un organe de mémoire du type FIFO branchés entre les organes d'opérations et l'unité centrale de décodage d'instructions, un ou plusieurs organes d'exécution pouvant fonctionner en parallèle sous le contrôle d'une seule unité de décodage d'instructions. 2 Dispositif de traitement d'informations, selon la revendication 1, caractérisé en ce qu'il comporte au moins une mémoire d'adresse de retour de type pile et au moins une mémoire de données intermédiaires de type pile également. 3 Dispositif de traitement d'informations selon la revendication 1 ou 2, caractérisé en ce qu'il est plus particulièrement adapté pour traiter le langage FORTH. 4 Dispositif de traitement d'informations selon l'une des revendications 1 à 3, caractérisé en ce que l'unité centrale de décodage comporte une unité de décodage formée par une mémoire associative. Dispositif de traitement d'informations selon l'une des revendications 1 à 4, caractérisé en ce que au moins un des organes d'opération comporte une unité arithmétique et logique et une mémoire pile pour les données. 6 Dispositif de traitement d'informations selon la revendication 5, caractérisé en ce qu'il est prévu une ligne BUS pour le transfert des données contenues dans la mémoire pile vers l'unité centrale de décodage. 7 Dispositif selon l'une des revendications 1 à 6, caractérisé en ce que chaque instruction peut être effectuée par un seul organe d'opération à la fois. 8 Dispositif selon l'une des revendications 1 à 6, caractérisé en ce que des instructions peuvent être exécutées par une pluralité d'organes d'opération à la fois. 9 Dispositif selon l'une des revendications 1 à 8, caractérisé en ce que les instructions sont envoyées dans les organes de mémoire après s'être assuré que ceux-ci sont vides.