FR 2693572 A1 19940114 FR 9208668 A 19920713 La présente invention concerne les systèmes de traitement de données du type microprocesseur, et en particulier un système de traitement de données comportant un dispositif amélioré de traitement des boucles de programme du type comportant un registre d'adresse de début de programme pour mémoriser le numéro de la première instruction de la boucle et un compteur de répétition initialisé lors de l'exécution de la première instruction par le nombre de répétitions à effectuer, le compteur de répétition étant décrémenté à la fin de chaque boucle et l'exécution répétée de la boucle prenant fin lorsqu'il a atteint zéro. Au cours de la dernière décennie, l'informatique a envahi la technique industrielle. Les systèmes de traitement de données remplissent maintenant des fonctions plus rapidement et plus précisément que les hommes. L'avènement du microprocesseur ou de façon générale la possibilité d'intégrer un système de traitement de l'information sur une seule puce minuscule a permis d'automatiser et de rendre beaucoup plus performants la majorité des équipements dans quelque domaine que ce soit. Ces progrès considérables ont été rendus possibles grâce à la technologie de fabrication des circuits élémentaires constituant les systèmes de traitement de données. Ces progrès ont permis une miniaturisation de plus en plus poussée entraînant un accroissement énorme de la vitesse de traitement des instructions, une puissance de traitement toujours plus grande et une réduction des coûts de fabrication du fait de l'emploi de circuits élémentaires identiques, généralement des transistors, et de la consommation réduite du matériau à la base de ces circuits, le silicium. Parallèlement à ces améliorations dues principalement à la technologie des semiconducteurs, on cherche à améliorer les systèmes de traitement de données par d'autres moyens tels qu'une réduction des circuits logiques utilisés pour l'exécution des instructions, ou une réduction des opérations nécessaires au déroulement du programme. C'est précisément le but de la présente invention. Ainsi, un programme d'instructions pour la commande d'un système de traitement de données tel qu'un microprocesseur comporte souvent une suite d'instructions à exécuter plusieurs fois pour aboutir à un résultat donné. C'est ce que l'on appelle communément une boucle. La technique classique de traitement des boucles consiste à enregistrer dans un compteur le nombre de répétitions de la suite d'instructions ou boucles à effectuer et enregistrer dans un registre le numéro de la dernière instruction de la boucle. A chaque instruction, une comparaison est effectuée entre le numéro de l'instruction à exécuter donné par un compteur de programme et le numéro de la dernière instruction enregistrée. Lorsque la comparaison est positive, le compteur de répétition est décrémenté et la valeur du compteur de programme est remplacée par le numéro de la première instruction de la boucle qui est enregistrée dans un registre d'adresse de début de programme ceci tant que le compteur de répétition n'a pas atteint zéro. Cette comparaison nécessite des éléments fonctionnels tels qu'un registre pour enregistrer le numéro de la dernière instruction de la boucle et un comparateur, ainsi qu'une opération de comparaison effectuée à chaque instruction. C'est donc au prix de circuits logiques qui consomment évidemment du silicium et d'un temps non négligeable que le traitement des boucles est effectué. Le but de l'invention est donc de réaliser un système de traitement de données tel qu'un microprocesseur dont le dispositif de traitement des boucles comporte un nombre réduit de circuits logiques et permet un gain substantiel de la vitesse de traitement. L'objet de l'invention est un système de traitement de données dans lequel une des dernières instructions de la suite d'instructions à exécuter plusieurs fois, dont l'écart par rapport à la dernière instruction de la suite d'instructions dépend du nombre de niveaux de pipeline du système, contient un code de fin de boucle qui commande, lors de l'exécution de la dernière instruction de la suite d'ins tructions, le chargement du registre d'adresse de début de programme dans le compteur de programme aussi longtemps que le compteur de répétition n'est pas à zéro, de manière à répéter l'exécution de la suite d'instructions un nombre de fois égal à la valeur contenue dans le compteur de répétition. L'invention sera mieux comprise à la lecture de la description qui suit faite en référence aux dessins dans lesquels: - la figure 1 représente un schéma synoptique d'un système de traitement de données dans lequel l'invention est mise en oeuvre - la figure 2 représente un schéma synoptique d'un dispositif d'exécution répétitive d'une suite d'instructions selon la technique antérieure ; - la figure 3 représente un schéma synoptique d'un dispositif d'exécution répétitive d'une suite d'instructions selon un mode de réalisation préféré de l'invention ; et - les figure 4A à 4D représentent des diagrammes illustrant la suite des opérations effectuées lors de la mise en oeuvre du dispositif représenté sur la figure 3 à différentes étapes de l'exécution répétitive de la suite d'instructions. La figure 1 représente l'organisation d'un système de traitement de données incorporant l'invention. Un système de traitement de données préféré pour mettre en oeuvre l'invention est un microprocesseur tel que décrit ci-après. Les instructions du programme, quelquefois appelées micro-instructions lorsque le système de traitement de données est un microprocesseur, sont emmagasinées dans une mémoire de programme 10. La mémoire de programme 10 est généralement une mémoire morte ou à lecture seulement (ROM) du type programmable (PROM) ou effaçable (EPROM). Mais la mémoire 10 pourrait être également une mémoire vive (RAM). La mémoire 10 communique par le bus 12 avec une unité de décodage et contrôle 14 qui contient l'essentiel de la logique du système chargée de décoder les instructions en provenance de la mémoire de programme 10 et de contrôler le cheminement des informations décodées dans les instructions. Ces informations peuvent être utilisées soit pour l'accès aux données, soit pour des opérations arithmétiques et logiques. Pour ce faire l'unité de décodage et contrôle 14 est reliée au bus d'adressage 16. Le bus 16 est connecté d'une part à un bloc de registres de traitement 18 qui contient les registres généraux utilisés pour le traitement de instructions. Ces registres sont destinés à contenir les opérandes contenus dans les instructions ou en provenance de la mémoire de données, ou peuvent servir de registres d'index pour l'adressage indirect. Mais ces registres de traitement peuvent avoir d'autres fonctions dévolues la plupart du temps à l'unité de décodage et contrôle.Ainsi, le bloc de registres de traitement 18 peut contenir le compteur de programme (PC), des registres d'incrémentation, des registres de décalage utilisés principalement lors des opérations de multiplication ou division, tels qu'un registre à décalage de Booth, ou encore le registre d'état qui contient un certain nombre de paramètres déterminés après l'exécution d'une instruction du type arithmétique ou logique tels que les indications de résultat zéro, résultat négatif ou de report. La plupart des registres du bloc 18 sont adressables au moyen du bus d'adressage 16. Le bus d'adressage 16 est également une entrée d'une unité de décodage d'adresse 20 dont la fonction est de décoder les adresses résultant du décodage des instructions par l'unité de décodage et contrôle 14 de façon à accéder aux données emmagasinées dans une mémoire de données 22. La mémoire de données est généralement une mémoire vive (RAM) mais ce pourrait être également une mémoire morte ou tout autre type de mémoire. On notera que le bloc de registres de traitement 18 est connecté au bus d'adressage 16 de sorte que le contenu de certains registres du bloc 18 puisse être transmis à l'unité de décodage d'adresse 20 lorsque ce contenu est une adresse d'accès à la mémoire de données 22. De façon à effectuer les opérations arithmétiques et logiques commandées par le contenu des instructions du programme, une unité arithmétique et logique (ALU) 24 est connectée à la sortie du bloc de registres de traitement 18. La sortie de l'unité arithmétique et logique 24 est soit un emmagasinage de données dans la mémoire de données 22 par le bus de données 26, soit un nouvel adressage d'un des registres du bloc de registres de traitement 18 par le bus de résultat 28. Les données en provenance de la mémoire de données 22 dont l'adresse a été fournie par l'unité de décodage d'adresse 20 sont transmises à l'entrée de l'unité arithmétique et logique 24 au moyen du bus de lecture de mémoire 30. Enfin, le bloc de registres de traitement 18 est relié à une unité de contrôle des unités périphériques 32 au moyen du bus entrée/sortie 34. Le système de traitement de données qui vient d'être décrit est du type Harvard, c'est-à-dire que la mémoire 10 contenant les instructions est complètement séparée de la mémoire 22 contenant les données. Mais l'invention pourrait également être mise en oeuvre dans des systèmes de traitement de données d'un autre type. De même, le système de traitement de données peut être un microprocesseur à vocation universelle, mais également un processeur spécialisé tel qu'un processeur de signal numérique (DSP) utilisé dans les dispositifs de transmission de données et en particulier les dispositifs de radio cellulaire (GSM, DECT, ou équivalent). Les instructions composant le programme de commande d'un système de traitement de données tel que décrit plus haut se déroulent généralement en séquence, un compteur de programme (PC) étant incrémenté à chacune des instructions. Mais il arrive qu'une suite d'instructions doive être répétée un certain nombre de fois dans le but d'effectuer autant d'opérations répétitives. De façon classique, cette répétition d'une suite d'instructions appelée boucle, est mise en oeuvre de la manière décrite ci-après. En supposant qu'une suite d'instructions 1, 2...N doive être exécutée n fois, la séquence d'instructions à mettre en oeuvre se présente de la façon illustrée sur la Table 1. Table 1 compteur de fonction de programme l'instruction - 1 chargement de RPTC 0 chargement de PAER 1 opération arithmétique ou logique + chargement de PASR 2 opération arithmétique ou logique II II lr It N-l 11 Il N opération arithmétique ou logique + décrémentation de RPTC Un schéma synoptique d'un dispositif de l'art antérieur permettant l'exécution de la séquence d'instructions de la Table 1 est représenté sur la figure 2. A l'instruction - 1, le nombre n - 1 est chargé dans un compteur de répétition (RPTC) 40. A l'instruction 0, le numéro d'instruction de fin de boucle, c'est-à-dire N, est chargé dans un registre d'adresse de fin de programme (PAER) 42. Ces deux opérations de chargement sont effectuées au moyen du bus de données 44.A l'instruction 1, en plus d'une opération arithmétique ou logique, le nombre 1 donné par le compteur de programme (PC) 46 est chargé dans un registre d'adresse de début de programme (PASR) 48 au moyen du bus 50 sous la commande d'un signal d'initialisation sur la ligne 51. Puis les instructions de 2 à N - 1 sont exécutées en séquence, le compteur de programme 46 étant incrémenté à chaque instruction grâce à l'incrêmenteur 52 et au moyen du multiplexeur 54 dont l'entrée active est le bus 56 comme on va le voir. A chaque incrémentation du compteur de programme 46, son contenu est comparé au contenu du registre PAER 42 au moyen du comparateur 58. Tant que les contenus sont différents, un bit 0 est transmis au circuit ET 60 par son entrée 62. En conséquence, le circuit ET a sa sortie 64 à zéro qui vient activer l'entrée 56 (incrémentation du compteur de programme) du multiplexeur 54. Lorsque le compteur de programme 46 indique N correspondant au contenu du registre 42, le comparateur 58 transmet un bit 1 sur la ligne 62. Comme l'autre ligne d'entrée 66 du circuit ET 60, est à 1 du fait que le compteur RPTC 40 n'est pas égal à zéro, le circuit ET 60 devient passant, et un signal haut est transmis sur sa ligne de sortie 64 au multiplexeur 54. Ce dernier est alors activé sur sa deuxième entrée et le contenu du registre PASR 48 est chargé dans le compteur de programme PC 46.C'est-àdire que la valeur N est remplacée par la valeur 1. A l'instruction N, en plus d'une opération arithmétique ou logique, la valeur du compteur RPTC 40 est décrémentée au moyen du décrémenteur 68. La suite d'instructions 1 à N est ainsi répétée jusqu'à ce que le compteur RPTC soit décrémenté à zéro, auquel cas le signal 0 sur la ligne 66 bloque le circuit ET 60 et la valeur du compteur de programme PC 46 (en l'occurrence N) n'est pas remplacée par le contenu du registre PASR 48. Le multiplexeur 54 n'étant plus activé sur sa deuxième entrée, c'est la valeur incrémentée du contenu du compteur programme qui est chargée dans le compteur programme. Du fait que cette décrémentation du compteur RPTC 40, commandée par l'instruction N, n'intervient qu'à l'instruction 1, la boucle est déroulée n fois alors que l'on a chargé le nombre n - 1 dans le compteur RPTC 40. On doit noter que dans un système de traitement de données dont le fonctionnement est du type pipeline, l'exécution des instructions a lieu un, deux (ou plus) cycles d'instruction après l'appel des instructions selon que le fonctionnement en pipeline est à un, deux (ou plus) niveaux. Ainsi, dans l'exemple ci-dessus, les chargements de RPTC, PAER, et PASR n'ont pas lieu au cours des instructions - 1, 0 et 1 si on utilise un système pipeline à deux niveaux, mais respectivement au cours des instructions 0, 1 et 2. Comme il a déjà été énoncé, le but de l'invention est de réduire le nombre d'opérations à effectuer et le nombre de circuits à utiliser. Un tel objectif est réalisé en utilisant le dispositif illustré par le schéma synoptique de la figure 3, au lieu du dispositif de la figure 2. En supposant qu'on veuille exécuter la même boucle que précédemment, la suite d'instructions se présente alors de la façon suivante Table 2 compteur de fonction de programme l'instruction 0 chargement de RPTC 1 opération arithmétique ou logique + chargement de PASR 2 opération arithmétique ou logique f f, It l ll ll N - 1 If f + fin de boucle (?EOL) N opération arithmétique ou logique + décrémentation de RPTC A l'instruction 0, le nombre n - I est chargé dans un compteur de répétition RPTC au moyen du bus de données 72. A l'instruction l, en plus d'une opération arithmétique ou logique, le nombre 1 donné par le compteur de programme (PC) 74 est chargé dans un registre de début d'adresse de programme (PASR) 76 au moyen du bus 78 sous la commande d'un signal d'initialisation sur la ligne 79. Les instructions 2 à N - 1 sont ensuite déroulées en séquence, le compteur de programme 74 étant incrémenté à chaque instruction grâce à un incrémenteur 80 et au moyen d'un multiplexeur 82 dont l'entrée active est le bus 84 comme on va l'expliquer cidessous. Le compteur RPTC 70 étant positif (son contenu a été établi à n - I), sa sortie 86 est à 1. La ligne 86 est une entrée d'un circuit ET 90 dont l'autre entrée 88 est le signal EOL.Cette entrée est basse, c'est-à-dire que le signal EOL est à zéro pendant tout le déroulement des instructions 1 à N - 2, bloquant ainsi le circuit ET 90 dont la sortie 92 active le multiplexeur 82 de manière à ce qu'il soit conditionné par l'entrée 84 de la valeur précédente incrémentée par l'incrémenteur 80. Lors de l'exécution de l'instruction N - 1, le code de fin de boucle EOL est décodé et la ligne 88 devient haute, ce qui a pour effet de débloquer le circuit ET 90 et un signal 1 est transmis au multiplexeur 82. L'entrée active du multiplexeur 82 devient alors la sortie du registre PASR 76 dont le contenu (1 en l'occurrence) est chargé dans le compteur de programme 74 en remplacement de la valeur qu'il contenait auparavant. A l'instruction N, en plus d'une opération arithmétique ou logique, la valeur du compteur RPTC 70 est décrémenté au moyen du décrémenteur 94. La suite des instructions 1 à N est ainsi répétée jusqu a ce que le compteur RPTC 70 soit décrémenté à zéro, auquel cas le signal de sortie 0 sur la ligne 86 bloque le circuit ET 90, et la valeur du compteur de programme PC 74 (soit N), n'est pas remplacée comme lors des boucles précédentes par le contenu du registre PASR 76 mais est incrémentée à la valeur N + 1. Comme précédemment, du fait que cette décrémentation du compteur RPTC 70 commandée par l'instruction N, n'intervient qu'à l'instruction 1, la boucle est déroulée n fois alors que le nombre n - 1 a été chargé dans le compteur RPTC 70. On voit donc que la caractéristique essentielle de l'invention consistant à incorporer dans l'avant-dernière instruction de la boucle, un code indicatif de la fin de boucle, a permis de réaliser un dispositif réduit par rapport à un dispositif classique remplissant la même fonction. Ainsi le dispositif illustré sur la figure 3 ne comporte plus de registre d'adresse de fin de programme (PAER) ni de comparateur dont le but est de comparer à chaque instruction le contenu du registre d'adresse de fin de programme au contenu du compteur de programme. Le code EOL indicatif de la fin de boucle est, dans le mode de réalisation préféré de l'invention, un des bits de l'instruction. Lorsque ce bit est à 1 dans une instruction, cela signifie que l'instruction suivante est la dernière instruction d'une suite d'instructions et, comme on l'a vu précédemment, ce bit 1 permet alors de transférer le numéro de la première instruction de la suite d'instructions dans le compteur de programme. Cependant, on peut envisager que le code EOL soit une valeur particulière d'un champ de l'instruction et non plus un seul bit, auquel cas un décodage s'avérera nécessaire. On doit noter que le dispositif selon l'invention illustré sur la figure 3, a été mis en oeuvre dans un système de traitement de données ou un microprocesseur dont le fonctionnement est du type pipeline à deux niveaux. C'est-à-dire que l'accès et le décodage d'une instruction ont lieu dans le même cycle que l'exécution de l'instruction précédente. Les figures 4A - 4D représentant des diagrammes qui illustrent le déroulement des opérations mises en oeuvre dans le dispositif de l'invention, permettront de mieux comprendre ces points particuliers. Sur le diagramme de la figure 4A, la première boucle est initialisée. Comme le microprocesseur considéré est du type pipeline à deux niveaux, l'instruction 0 qui commande le chargement de RPTC n'est exécutée qu'au cycle du compteur de programme PC = 1 et la valeur n - 1 est chargée dans le compteur RPTC au cycle PC = 2. Au cycle PC = 1, un signal d'initialisation est présent sur la ligne 79 (voir figure 3), ce qui entraîne le chargement du registre PASR avec la valeur du compteur de programme, soit 1 dans cet exemple, au cycle PC = 2. Le diagramme 4B illustre schématiquement la fin de la première boucle. Au cycle PC = N - 1, le décodage de l'instruction N - 1 rencontre la condition EOL qui induit un signal haut sur la ligne 88 (voir figure 3) au cycle suivant PC = N. Le contenu du registre PASR est alors transféré dans le compteur de programme qui passe de PC = N à PC = 1 au cycle suivant. Au cycle PC = N correspondant à la dernière instruction de la boucle, le décodage de l'instruction N indique que le compteur RPTC doit être décrémenté. Le compteur RPTC passe donc de la valeur n - 1 à la valeur n - 2 au cycle PC = 1 qui suit le cycle PC = N. La fin de la n - 1 ième boucle est illustrée schématiquement sur la figure 4C. Au cycle PC = N - 1, le décodage de l'instruction N - 1 fait apparaître la condition EOL qui induit un signal haut sur la ligne 88 (de la figure 3) au cycle PC = N. Le contenu du registre PASR est alors transféré dans le compteur de programme qui passe de PC = N à PC = 1 au cycle suivant. Au cycle PC = N correspondant à la dernière instruction de la boucle, le décodage de l'instruction N indique que le compteur RPTC doit être décrémenté. Le compteur RPTC passe donc de la valeur 1 à la valeur 0 au cycle PC = 1 qui suit le cycle PC = N, c'est-à-dire après que la valeur PASR = 1 a été chargée dans le compteur de programme ce qui initialise la n ième boucle. Comme illustré sur le diagramme de la figure 4D, le décodage de l'instruction N - 1 au cycle PC = N - 1 résulte en un signal haut sur la ligne 88 (de la figure 3) au cycle PC = N. Mais contrairement aux boucles précédentes, le compteur RPTC est à zéro et par conséquent le contenu du registre PASR n n'est pas transféré dans le compteur de programme. De ce fait, le compteur de programme PC continue à incrémenter à N + 1, N + 2..., sans recommencer à la valeur 1. Grâce aux diagrammes des figures 4A à 4D, on voit donc que dans une machine du type pipeline à deux niveaux la mise en oeuvre du contenu de l'instruction se fait au cycle d'exécution de l'instruction. Ainsi, pour que la condition EOL puisse remplir sa fonction à la dernière instruction de la boucle (N dans l'exemple), elle doit être contenue dans l'avant-dernière instruction. Si aucun pipeline n'était utilisé, c'est-à-dire que l'accès, le décodage et l'exécution avaient lieu dans le même cycle, la condition devrait se trouver dans la dernière instruction de la boucle. Inversement, dans une machine du type pipeline à trois niveaux, c'est-à-dire où l'accès, le décodage et l'exécution se font dans trois cycles consécutifs, la condition EOL devrait se trouver dans l'instruction qui précède l'avantdernière instruction, soit N - 2 dans l'exemple. Un avantage inhérent à l'invention est qu'une précaution qui est enseignée à tout programmeur débutant n'a plus lieu d'être, c'est d'éviter de faire des branchements conditionnels à l'intérieur de la boucle. Dans les systèmes de l'art antérieur, les branchements sont délicats à manipuler à l'intérieur d'une boucle parce qu'il n'est pas toujours facile de revenir à la boucle quand plusieurs branchements interviennent, et qu'il est pourtant impératif de terminer à la fin de la boucle dans la mesure où la valeur de fin de boucle enregistrée dans un registre PAER (voir figure 2) conditionne cette fin. L'invention permet de s'affranchir de cette obligation puisque le programmeur peut incorporer sans problème dans son programme une ou plusieurs instructions comportant le code EOL.Il pourra ainsi inclure des branchements à l'intérieur de la suite d'instructions sans avoir les soucis des programmeurs utilisant la technique antérieure. Le dispositif mettant en oeuvre l'invention, illustré sur la figure 3, comporte un certain nombre d'éléments (compteur de programme, incrémenteur, compteur de répétition, multiplexeur,...) qui se trouvent, de façon typique, incorporés dans l'unité de décodage et contrôle. Cependant, dans une réalisation préférée de l'invention le compteur de programme, le registre d'adresse de début de programme, l'incrémenteur et le multiplexeur sont des registres du bloc de registres de traitement. Une telle intégration dans des registres ayant la même structure permet un gain en vitesse aussi bien qu'en coût. Mais il est clair qu'on peut prévoir un tel dispositif dont une partie des éléments se trouve dans l'unité de décodage et contrôle et une autre partie dans le bloc de registres sans sortir du cadre de l'invention. L'invention qui vient d'être décrite permet de réduire le nombre d'éléments dans le dispositif employé (absence du registre PAER, du comparateur). Cet avantage se concrétise par une réduction des circuits élémentaires (des transistors). Ainsi, dans un microprocesseur de 16 bits, l'invention amène un gain de 600 transistors soit un gain de 10 g de l'ensemble du microprocesseur. Mais il y a également un gain de vitesse appréciable surtout pour les boucles courtes, puisqu'il y a économie d'instruction (instruction - 1 de la Table 1) servant à charger initialement le registre d'adresse de fin de programme (PAER). REVENDICATIONS 1. Système de traitement de données dont le fonctionnement est commandé par le déroulement d'un programme composé d'une séquence d'instructions, comprenant un dispositif pour exécuter de façon répétitive une suite d'instructions parmi ladite séquence d'instructions, ledit dispositif comportant un compteur de programme (74) donnant le numéro de la prochaine instruction de ladite suite d'instructions incrémenté à chacune des instructions, un registre d'adresse de début de programme (76) pour mémoriser le numéro de la première instruction de ladite suite d'instructions et un compteur de répétition (70) initialisé lors de l'exécution de la première instruction de ladite suite d'instructions par le nombre de fois que doit être répétée l'exécution de ladite suite d'instructions, ledit compteur de répétition étant décrémenté à la fin de ladite suite d'instructions et l'exécution répétée de ladite suite prenant fin lorsque ledit compteur de répétition est à zéro; ledit système étant caractérisé en ce qu'une des dernières instructions de ladite suite d'instructions, dont l'écart par rapport à la dernière instruction de ladite suite d'instructions dépend du nombre de niveaux de pipeline dudit système, contient un code de fin de boucle (EOL) qui commande, lors de l'exécution de la dernière instruction de ladite suite d'instructions, le chargement du contenu dudit registre d'adresse de début de programme (76) dans ledit compteur de programme (74) aussi longtemps que ledit compteur de répétition n'est pas à zéro, de manière à répéter l'exécution de ladite suite d'instructions un nombre de fois égal à la valeur contenue dans ledit compteur de répétition (70). 2. Système selon la revendication 1, dans lequel ledit code de fin de boucle (EOL) est un bit de chaque instruction qui est à la valeur binaire 1 dans ladite une des dernières instructions pour commander le chargement dudit registre d'adresse de début de programme (76) dans ledit compteur de programme (74) lors de l'exécution de la dernière instruction de ladite suite d'instructions à répéter. 3. Système selon la revendication 1 ou 2, dans lequel un traitement pipeline à deux niveaux est utilisé de sorte que l'instruction contenant ledit code de fin de boucle (EOL) est l'avant-dernière instruction de ladite suite d'instructions à répéter. 4. Système selon l'une quelconque des revendication 1, 2 et 3, comportant en outre un circuit ET (90) à deux entrées, la première entrée étant connectée audit compteur de répétition (70) pour fournir un signal 1 lorsque ledit compteur de répétition n'est pas à 0, la deuxième entrée étant fournie par ledit code de fin de boucle EOL et la sortie dudit circuit ET commandant la commutation d'un multiplexeur (82) connecté entre ledit registre d'adresse de début de programme (76) et ledit compteur de programme (74) de façon à transférer le contenu dudit registre d'adresse de début de programme dans ledit compteur de programme lors de l'exécution de la dernière instruction de ladite suite d'instructions après la détection du code de fin de boucle (EOL) et lorsque ledit compteur de répétition n'est pas à zéro. 5. Système selon l'une quelconque des revendications précédentes, dans lequel une instruction de branchement se trouvant avant ladite une des dernières instructions permet le branchement du programme à une autre suite d'instructions que ladite suite d'instructions à répéter, ladite autre suite d'instructions se terminant par la détection d'un code de fin de boucle (EOL) de telle sorte que le déroulement du programme soit repris à la première instruction de ladite suite d'instructions à répéter dont le numéro a été transféré dans ledit compteur de programme à la détection dudit code EOL. 6. Système selon la revendication 4 ou 5, dans lequel ledit compteur de programme (74), ledit registre d'adresse de début de programme (76), ledit compteur de répétition (70) et ledit multiplexeur sont des registres dudit bloc de registres de traitement (18).