Brevet FR2557712A1 — publié le 19850705

PROCESSEUR POUR TRAITER DES DON!NEES EN FOICTION; D'INSTRUCTIONS PROVE NAIT D'UNE MEO I E -PROGRAMME. La présente invention concerne un processeur pour traiter des données en fonction d'instructions provenant d'une mémoire-programme à laquelle est rattaché un compteur- programme pour fournir des codes d'adresse de lecture. Les processeurs sont des dispositifs bien connus et trouvent de nombreuses applications. Certaines de ces applications exigent une grande rapidité de traitement. Souvent dans le traitement il faut effectuer une partie de programme bouclée c'est-à-dire comprenant N fois l'exécution d'une séquence de "i" instructions. Pour cela, dans les processeursconnu% onutilise par logiciel un emplacement de mémoire pour contenir le nombre N; on doit prévoir des instructions pour faire évoluer le contenu de cette mémoire et il convient, en outre, d'effectuer des tests sur ce contenu afin d'arrêter l'exécution de cette partie de programme et de passer donc à la suite du programme. On estime que ces instructions supplémentaires et les tests à effectuer pour chaque séquence prennent trop de temps lorsqu'on exige un traitement rapide. Pour gagner du temps d'exécution de boucles, La présente invention propose un processeur, du genre mentionné dans le préambule, qui est remarquable en ce que pour effectuer une partie de programme, annoncée par une instruction de commande de boucle, comprenant N fois l'exécution d'une séquence de "i" instructions, il est pourvu d'un circuit de boucle comprenant un compteur d'instructions de la séquence pour fournir un signal de fin de séquence, un premier registre pour rappeler dans le compteur-programme l'adresse de la première instruction de la séquence à chaque signal de fin de séquence, un compteur de boucle pour compter le nombre 5 7712 d'exécutions et pour fournir un signal de fin de partie de programme pour passer à La suite du programme. Un processeur conforme à l'invention, selon une caractéristique importante de l'invention est remarquable en ce que, Lorsque l'instruction de commande de boucle est placée avant un nombre "D" d'instructions du début de ladite partie de programme, Il comprend un compteur de délai pour compter "D" Instructions avant de déclencher N fois l'exécution de la séquence. Cette caractéristique Importante est destinée surtout à des processeurs fonctionnant en pipe-line. Ces "D" instructions permettent d'initialiser les différents registres du processeur et autres organes avant de commencer l'exécution de la boucle. La description suivante faite en regard des dessins annexés, le tout donné à titre d'exemple non limitatif, fera bien comprendre comment l'invention peut être réalisée. La figure 1 représente un processeur conforme à l'invention. La figure 2 représente schématiquement un ordinogramme comportant une boucle. La figure 3 représente le format d'une Instruction de commande de bouclage. La figure 4 représente un dlagramme-temps pour l'explication du processeur conforme à l'invention. La figure 5 représente un ordinogramme correspondant au diagramme-temps de la figure 4. Le processeur montré à ta figure 1 comporte tout d'abord une mémoire morte 1 contenant tout le programme de fonctionnement du processeur. Ce fonctionnement est défini au moyen d'instructions provenant de-cette mémoire 1 et qui, avant d'être transmises sur une ligne BUSI, transitent dans un registre 2 dit registre d'instructions. Ces Instructions vont commander par l'intermédiaire d'un circuit de commande 3 différentes opérations d'un ensemble 4 d'éléments du processeur. Ces éléments sont, comme cela est bien connu, des mémoires vives, des unités arithmétiques et logiques, des registres de travail, des muLtiplicateurs câblés, etc... Les différentes Instructions sont rangées à différentes adresses de la mémoire 1. Les codes d'adresses pour cette mémoirel sont engendrés par un compteur-programme 5. Un circuit d'horloge éLaboredes signaux HII qui font progresser le compteur 5 et de là règlent Lacadenced'apparltiondes Instructionssur lebusBUSi, le registre2étantchargésur LessignauxHII. Leclrcult 10 fournit aussi d'autres signaux pour régir tout le fonctionnement du processeur. On a représenté sous forme d'ordinogramme à la figure 2, un extrait du programme contenu dans la mémoire 1. Sur cet ordinogramme chaque rectangle représente une Instruction. Cet extrait montre une séquence d'instructions J1, J2,... Ji qu'il faut exécuter N fois. Pour cette exécution, le processeur comporte un circuit de boucle 20 comprenant un compteur d'instructions de séquences 25 pour fournir un signal ZCBI Indiquant la fin de La séquence d'instructions J1, J2,... Ji; ce compteur 25 s'incrémente sur des signaux DCBI2 ayant la même cadence que les signaux de progression HII fournis par le circuit d'horloge 10. Le circuit 20 comporte aussi un premier registre 30 pour contenir l'adresse de la première instruction J1, et pour ta fournir par L'intermédlalre d'un multiplexeur 32 au compteur-programme 5 à l'apparition du signal de fin de séquence ZCBI et un compteur de boucle 35 déclenché au début de ladite partie de programme, s'incrémentant sur des signaux DCBR afin de compter Le nombre d'exécutions et prévu pour fournir un signal ZCBR indiquant La fin de partie de programme afin de passer à la suite du programme-instruction. Le signal ZCBI correspond, dans cet exemple de réalisation, au passage à zéro du compteur 25 s'incrémentant par pas de "- 1" sur Les signaux d'horloge DCB12 fournispar un circuit de commande de boucle 40. Pour recharger le compteur 25 à chaque début de séquence on a prévu un registre 42 destiné à contenir -le nombre "i" correspondant au nombre d'instructions que comporte La séquence. D'une manière semblabLe, le signal ZCBR est le signal de passage à zéro du compteur 35 s'incrémentant par pas de "- 1" 6 à partir de la valeur N sur les signaux DCBR élaborés par Le circuit 40. Le registre 42 et le compteur 35 sont chargés au moyen d'une Instruction de bouclage JB dont la structure est montrée à la figure 3. Cette instruction est formée de trente deux éléments binaires (eb) correspondant au nombre de fils constituant le bus BUSI. Les eb O - 1 correspondent à un code donnant la nature de l'lnstruction; ce code combiné avec les eb 2 - 7 attribués notamment au registre 42 et au compteur 35 définit alors complètement l'instruction de bouclage. Les éléments binaires -23 donnent la valeur de "1" et les eb 24 - 31 la valeur "N". De ce format d'instruction, il découle que les entrées parallèles du registre 42 sont reliées aux fils 20 à 23 correspondant aux éléments binaires 20-23 et celles du compteur 35 aux fils 24 - 31. Le multiplexeur 32 permet de connecter d'autres registres pour contenir l'adresse d'un code-programme; cela n'est point détaillé puisque ne faisant pas partie de l'lnvention. Un signal SCA appliqué à ce multiplexeur permet d'alguiller le registre 50 sur le compteur-programme 5. Afin de faciliter les opérations d'initlallsation de boucle et de s'adapter au fonctionnement en pipe-line, on a prévu des mesures pour retarder l'exécution de la boucle après l'ilnstruction de boucle JB. Pour cela le circuit de boucle 20 comporte un compteur de délai 50 destiné à contenir un nombre "D" correspondant au nombre d'instructions à exécuter avant de commencer la boucle (les instructions J01 à JOn à la figure 2). Ce compteur 50 fournit un signal ZDEL correspondant au passage à zéro pour déclencher le début d'exécution de la boucle. Tout comme le registre 42 et le compteur 35, ce compteur de délai 50 est- chargé par L'instruction JB; le nombre "D" est défini au moyen des éléments binaires 17 à 19. Les fils correspondant à ces éléments binaires sont connectés aux entrées parallèles du compteur 50. Ce compteur s'incrémente par pas de "- 1" sur des signaux d'horloge DDEL fournis par le circuit de commande de boucle 40. Une particularité Intéressante de l'invention est que l'on a prévu un multiplexeur 52 commandé par un signal CMBR qui permet de charger Le registre 35 soit à partir du bus BUSI, soit à partir du bus de données BUSD sortant de l'ensemble 4 d'éléments du processeur. Cette particularité procure l'avantage que le nombre "N" d'exécution peut résulter d'un calcul effectué à L'intérieur del'ensemble4. L'instruction debouclageJBpeut alors avoir deux formes, voir figure 3: ceLLeenao Leséléments binaires n 0,1,5,6et 7 ont pour valeur 1,1,101; leregistre42et lescompteurs et 50 sont chargés à partir du bus BUSI et celle en b o Les éléments binalres n 0,1,2,28,29,30et 31 ontpourvaleur 1,0,0,0,1,1,0;seul lecompteur35 est chargé à partir du bus BUSD. Ces valeurs sont évidemment données à titred'exemplepourfixer les Idées. Le circuit de commande de boucle 40 est constitué à partir d'un décodeur qui peut être réalisé sous forme de réseaux PLA, PROM... Ce circuit de commande effectue, à partir des signaux d'entrée ZCBI, ZCBR, ZDEL et HII et aussi à partir des codes véhiculés par le bus BUSI, les opérations suivantes o LCBI 1,LCBR,LDEL,LCBI2et LRAB sont les commandes de chargement des registres et compteurs 42,35,50, et 30 respecti vement et SCA lacommandedu mult iplexeur 32: LCBI1 = 10.11.15.16.17.HII LCBR À I0.11.15.16.17.HII + 10.11.12.128.129.130.131.HII LDEL - 10.11.15.T6.I7.HII - MBR I- I1o..12.128.129.130.131 LCBI2 = LCBI1 +ZCBI.HII DCBI2 = ZDEL.HII DCBR - ZDEL.ZCBI.HII DDEL = ZDEL.HII LRA8 = ZDEL SCA = ZDEL LCP = ZCBI ,11 indiquent Lavaleurdes étéments binaires eb O et eb I de mêmeque ,16, 17 Lavateur desélémentseb5,6et 7 du bus BUS1, Avant d'expliquer le fonctionnement du circuit de boucle 20, il convient de noter que le contenu des compteurs évolue sur Les fronts montants des signaux d'incrémentatlon et que Le chargement en parallèle de ces compteurs et du registre 42 est effectué sur Le niveau 1l" dusignal de chargement du compteur. AfIn de faciLiter cetteexpLication on a pris Lecas particuler o D = 1, i s 2 et N = 2, ce qui correspond à l'ordinogramme de La figure 4. On se reporte, maintenant, à la figure 5. A L'i.nstant tO, survient une transition descendante du signal HII (ce qui correspond à une transition montante du signal HiIT); cette transition provoque Le chargement dans Le registre d'instructions 2 de L'instruction JB. Le fait que les éléments binaires ebO, 1, 5, 6, 7 soient décodés imp.lqueque La relation suivante est réalisée 10.11.15.16.17 = 1. Les signaux LCBI1, LCBR et LDEL deviennent alors actifs à L'instant tl; le compteur 50, le registre 42 et Le compteur sont ensuite chargés respectivement desdites valeurs particullères 1, 2 et 2. Le fait que Le signal LCBI soit actif implique que le signal LCBI2 le soit aussi, ce qui provoque donc le chargement du compteur 25. Le contenu du compteur 50 étant différent de zéro, le signal ZDEL est donc Inactif ce qui autorise l'application du signal DDEL à l'instant t2 correspondant au front montant du signal HIl suivant l'instant fl. Comme Le contenu du compteur 50 était "1" avant l'instant t2, ce contenu passe alors,à cet instant tl, à "0"; le signal ZDEL devient actif, ce qui a deux conséquences: - Le contenu du compteur-programme est emmagasiné dans Le registre 30 5 7712 - Les signaux de progression DCBI2 pourront être appliqués au prochain front montant du signal HII. Le contenu du compteur 25 'prend la valeur "0" peu après l'instant t4 correspondant à un front montant du signal HII, l signal ZCBI2 devient actif ce qui entratne Le passage à L'état actif du signat DCBR et le chargement du compteur-programme du code d'adresse ' d'instruction contenu dans Le registre 30. Survient ensuite, à l'instant t5, Le front descendant du signal Hil, ce qui entratne Le passage à L'état actif du signal LCB12.;de ce fait te contenu du compteur 25 prend à nouveau la valeur "2" ce qui fait passer à L'état Inactif le signal LCBI2. Les choses se dérouLent de La manière Indiquée jusqu'au moment o Le contenu du compteur 35 prend la valeur "O",déclenché par Le front montant du signal DCBR surgissant à l'instant t6, Le signal ZCBR devenant aLors actif. Les signaux LCBI 2, LCP sont alors verrouillés à l'état Inactif de sorte que le circuit de bouclage n'est plus opérant. A L'instant t7 c'est L'instruction J3 qui sera contenue dans le registre 2. 5 7 7 12 REVENDICATIONS 1. Processeur pour traiter des données en fonction d'instructions provenant d'une mémoire-programme à laquelLe est rattaché un compteurprogramme pour fournir des codes d'adresses de Lecture, caractérisé en ce que pour effectuer une partie de programme, annoncée par une Instruction de commande de boucte, comprenant N fois l'exécution d'une séquence de "i" Instructions, IL est pourvu d'un circuit de boucLe comprenant un compteur d'instruct-lons de La séquence pour fournir un signal de fin de séquence, un premier registre pour rappeler dans le compteur-programme l'adresse de la première instruction de la séquence à chaque signal de fin de séquence, un compteur de boucle pour compter Le nombre d'exécutions et pour fournir un signal de fin de partie de programme pour passer à La suite du programme. 2. Processeur seLon La revendication 1, caractérisé en ce que, lorsque L'ilnstruction de commande de boucLe est placée avant un nombre "D" d'instructions du début de Ladite partie de programme, IL comprend un compteur de délai pour compter "D" Instructions avant de décLencher N fois L'exécution de la séquence. 3. Processeur seLon La revendication 1 ou 2, caractérisé en ce qu'il comprend, en outre, un deuxième registre coopérant avec Le compteur d'instructions de séquence destiné à contenir une Information sur le nombre "i" et pour charger le compteur d'lnstructions de séquence pour L'exécution de la séquence. 4. Processeur selon L'une des revendications 1 à 3 pourvu d'une ligne bus de données et d'une Ligne bus d'instructions, caractérisé en ce que le compteur de boucle est rattaché à ces deux lignes bus par L'intermédiaire d'un moyen de sélection commandé par L'intermédiaire d'une instruction de sélection.