FR2737027A1 - Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant - Google Patents

Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant Download PDF

Info

Publication number
FR2737027A1
FR2737027A1 FR9508897A FR9508897A FR2737027A1 FR 2737027 A1 FR2737027 A1 FR 2737027A1 FR 9508897 A FR9508897 A FR 9508897A FR 9508897 A FR9508897 A FR 9508897A FR 2737027 A1 FR2737027 A1 FR 2737027A1
Authority
FR
France
Prior art keywords
loop
instruction word
analysis means
instruction
additional information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9508897A
Other languages
English (en)
Other versions
FR2737027B1 (fr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to FR9508897A priority Critical patent/FR2737027B1/fr
Publication of FR2737027A1 publication Critical patent/FR2737027A1/fr
Application granted granted Critical
Publication of FR2737027B1 publication Critical patent/FR2737027B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Le dispositif permet la localisation et le contrôle d'au moins une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction (MI) formant un corps de boucle susceptible d'être réexécuté au moins une fois, chaque mot d'instruction (MI) du programme comportant une instruction exécutable proprement dite (INSU) et une information additionnelle (Bi, Ri). Le dispositif comprend des moyens d'analyse (LPi, LRi), reliés à la mémoire-programme (MP) du processeur, aptes à analyser le contenu de l'information additionnelle de chaque mot d'instruction, et à délivrer une information de localisation de boucle à partir de cette seule analyse, et des moyens de contrôle, reliés aux moyens d'analyse, comportant un registre contenant une indication relative au nombre désiré de réexécutions du corps de boucle ainsi que des moyens d'adressage (BK) aptes à adresser cycliquement la mémoire-programme entre l'adresse du premier mot d'instruction et l'adresse du dernier mot d'instruction du corps de boucle au moins en fonction de l'information de localisation et de ladite indication.

Description

Dispositif électronique de localisation et de contrôle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procédé correspondant.
L'invention concerne la localisation et le contrôle de boucles dans un programme d'un processeur programmable, en particulier un processeur de traitement du signal, notamment dans des applications de traitements d'images.
Ecrite sous forme logicielle par un programmeur, une boucle comporte d'une part, une ou plusieurs instructions exécutables par les ressources de calcul du processeur, cette ou ces instructions exécutables formant un corps de boucle susceptible d'être réexécuté au moins une fois, et d'autre part, des instructions de gestion du corps de boucle, précédant celui-ci ou situées à la fin de celui-ci, et définissant notamment le nombre d'itérations à stocker dans un registre ainsi que la commande de la décrémentation de ce registre.
En termes de mots d'instruction contenus dans la mémoireprogramme du processeur, la partie de code-programme spécifique de cette boucle, comporte les mots d'instruction exécutables du corps de boucle qui vont être successivement traitées par les ressources de calcul du processeur au rythme de cycles d'exécutions définis par un signal d'horloge, mais également, avant et après ces mots d'instruction exécutables, des mots d'instructions spécifiques du contrôle de l'exécution de la boucle comme notamment le chargement d'un registre et la décrémentation d'un compteur.
Or, ces mots d'instructions spécifiques, qui sont généralement utilisables par les ressources de calcul du processeur, consomment cependant des cycles d'exécution pendant lesquels il n'est pas possible d'utiliser les ressources de calcul du processeur pour effectuer des calculs proprement dits.
I1 en résulte donc un surcoût global en cycles d'exécution du processeur par rapport aux cycles "utiles" de traitement des instructions exécutables par les ressources de calcul du processeur, et par voie de conséquence un traitement global des données moins rapide.
Cet inconvénient est d'autant plus pénalisant si le nombre d'itérations souhaité pour une boucle est important, et/ou si le programme comporte des boucles mutuellement imbriquées.
Une solution à ce problème pourrait consister à supprimer du code-programme, les instructions de gestion des boucles et de dupliquer dans la mémoire-programme, autant de fois que le nombre d'itérations souhaité, les instructions exécutables proprement dites du corps de boucle.
Cependant, une telle solution conduit à une augmentation considérable de la taille de la mémoire-programme, surtout en présence de nombreuses boucles imbriquées et/ou avec des nombres d'itérations importants.
Par ailleurs, une telle solution nécessite de connaître a priori le nombre d'itérations de chaque boucle et rend par conséquent très compliquée toute modification d'un programme existant.
L'invention propose une solution radicalement différente à ces problèmes.
L'invention propose donc un dispositif électronique de localisation et de contrôle d'au moins une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction formant un corps de boucle susceptible d'être réexécuté au moins une fois. Chaque mot d'instruction du programme comporte une instruction exécutable proprement dite et une information additionnelle. Le dispositif comprend des moyens d'analyse, reliés à la mémoire-programme du processeur , aptes à analyser le contenu de l'information additionnelle de chaque mot d'instruction, et à délivrer une information de localisation de boucle à partir de cette seule analyse.Des moyens de contrôle, reliés aux moyens d'analyse, comportent un registre contenant une indication relative au nombre désiré de réexécutions du corps de boucle ainsi que des moyens d'adressage aptes à adresser cycliquement la mémoireprogramme entre l'adresse du premier mot d'instruction et l'adresse du dernier mot d'instruction du corps de boucle, au moins en fonction de l'information de localisation et de ladite indication.
En d'autres termes, l'invention prévoit de localiser les boucles d'un programme à partir des instructions exécutables proprement dites du programme, qui ont été chacune étendues par l'adjonction d'un champ spécifique dédié à la localisation des boucles.
C'est donc la seule analyse de ce champ dédié qui va permettre de déterminer l'existence d'une boucle et ses limites. Simultanément à l'analyse de l'information additionnelle (champ dédié) d'un mot d'instruction, l'instruction exécutable va pouvoir être utilisée par les ressources de calcul du processeur.Puisque l'analyse de cette information additionnelle présente dans chaque mot d'instruction du programme, remplace une instruction de gestion de boucle, l'invention permet ainsi d'économiser des cycles d'exécution du processeur et d'utiliser en permanence les ressources de calcul du processeur, tout en n'augmentant que modérément la taille des instructions de la mémoire-programme, ce qui conduit dans le pire des cas à n'augmenter que modérément la taille de la mémoire, et éventuellement à la réduire si le nombre d'instructions économisées est prépondérant par rapport à l'augmentation de la taille des instructions.
En variante, les moyens d'adressage peuvent adresser cycliquement la mémoire programme entre l'adresse du deuxième mot d'instruction et l'adresse du mot suivant immédiatement le dernier mot d'instruction du corps de boucle. Le dispositif peut alors comprendre un moyen de barrière temporelle connecté entre la sortie de la mémoire-programme et les moyens d'analyse, ainsi qu'un registre auxiliaire commandable de stockage apte à stocker chaque premier mot d'instruction d'une boucle. Les moyens de contrôle délivrent alors au moyen de barrière temporelle, lors d'un réadressage de la mémoire programme à l'adresse du deuxième mot d'instruction, ce premier mot d'instruction stocké.
Une telle variante permet d'augmenter la fréquence du signal d'horloge.
Les moyens d'analyse peuvent comporter des premiers moyens élémentaires d'analyse destinés à localiser une boucle dont le corps de boucle ne comporte qu'un seul mot d'instruction. Ces premiers moyens élémentaires d'analyse sont alors aptes à délivrer en tant qu'information de localisation, un premier signal de sortie dont la valeur dépend au moins de la valeur du contenu de l'information additionnelle. Les moyens d'adressage du dispositif comportent alors des moyens d'inhibition figeant l'adresse courante de la mémoire programme en présence d'un premier signal de sortie représentatif de la présence d'une boucle en cours d'itération.
Les moyens d'analyse peuvent également comporter des deuxièmes moyens élémentaires d'analyse destinés à localiser une boucle dont le corps de boucle comporte au moins deux mots d'instruction. Ces deuxièmes moyens élémentaires d'analyse sont alors aptes à délivrer l'information de localisation à partir du résultat de la comparaison entre le contenu de l'information additionnelle de chaque mot d'instruction et le contenu de l'information additionnelle du mot d'instruction précédent.
Alors que pour détecter une boucle dont le corps de boucle ne comporte qu'un seul mot d'instruction, ladite information additionnelle ne peut comporter qu'un seul bit, la valeur de ce bit permettant de détecter l'existence d'une telle boucle, il serait nécessaire de prévoir deux bits en tant qu'information additionnelle pour détecter le début et la fin d'un corps de boucle à au moins deux mots d'instructions, si l'on choisissait d'analyser isolément l'information additionnelle < "un mot d'instruction, c'est-à-dire indépendamment de la valeur des informations additionnelles d'autres mots d'instructions.
Or, la comparaison des informations additionnelles de deux mots d'instructions consécutifs, permet aisément de détecter le début et la fin d'un corps de boucle à au moins deux mots d'instruction, en n'utilisant qu'un seul bit additionnel. En effet on utilise alors les changements de valeurs de ce bit pour localiser la boucle.
Selon un mode de réalisation de l'invention, les deuxièmes moyens élémentaires d'analyse comportent des premiers moyens de détection aptes à délivrer un deuxième signal de sortie initial faisant partie de l'information de localisation et représentatif du début ou non d'une boucle, et les moyens d'adressage comportent un moyen de stockage apte à mémoriser l'adresse du premier mot d'instruction du corps de boucle en présence d'un deuxième signal de sortie initial représentatif du début d'une boucle.
Plus particulièrement, les premiers moyens de détection comportent une première porte logique ET dont une entrée est reliée, par l'intermédiaire d'un inverseur, à la sortie d'un premier registre destiné à recevoir l'information additionnelle d'un mot d'instruction, dont une autre entrée reçoit ladite information additionnelle, et dont une troisième entrée est reliée, par l'intermédiaire d'un autre inverseur, à la sortie d'un registre destiné à stocker une indication représentative d'une boucle en cours ou non d'exécution, la sortie de la première porte logique ET délivrant le deuxième signal de sortie initial -
Un tel mode de réalisation permet, notamment lorsqu'on n'utilise qu'un seul bit pour localiser un corps de boucle à au moins deux instructions, de faire la différence entre le premier passage dans le corps de boucle, et les passages ultérieurs lors de l'exécution itérative de la boucle.
Selon un mode de réalisation de l'invention, les deuxièmes moyens élémentaires d'analyse comportent des deuxièmes moyens de détection aptes à délivrer un deuxième signal de sortie final faisant partie de l'information de localisation et représentatif de la fin ou non d'une itération d'une boucle en cours d'exécution et du rang de cette itération. Les moyens d'adressage extraient alors du moyen de stockage l'adresse du premier mot d'instruction du corps de boucle, en présence d'un deuxième signal de sortie final représentatif de la fin de toute itération de la boucle, sauf la dernière.
Plus particulièrement, les deuxièmes moyens de détection comportent une deuxième porte logique ET dont une entrée est reliée à la sortie du premier registre, dont une autre entrée reçoit ladite information additionnelle inversée, et dont une troisième entrée est reliée à la sortie du deuxième registre, la sortie de la deuxième porte logique ET délivrant le deuxième signal de sortie final.
Les deuxièmes moyens d'analyse comportent avantageusement des troisièmes moyens de détection aptes à délivrer un troisième signal de sortie représentatif d'une boucle ayant ou non effectué son avant-dernière itération.
Ce troisième signal de sortie est particulièrement utile pour la localisation de boucles imbriquées dont les corps de boucle comportent au moins deux mots d'instruction.
Pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées dont le corps de boucle de chaque boucle ne comporte qu'un seul mot d'instruction, chaque mot d'instruction du programme comporte avantageusement outre ladite instruction exécutable, une partie additionnelle comportant une suite ordonnée de bits additionnels en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées. A chaque bit additionnel sont alors associés des premiers moyens élémentaires d'analyse, chaque bit additionnel jouant pour les premiers moyens élémentaires d'analyse qui lui sont associéslle le rôle de ladite information additionnelle.Les différents moyens d'analyse élémentaires forment alors une chaîne, ordonnée d'une façon analogue à celle de la suite de bits additionnels, et la valeur dudit premier signal de sortie délivré par l'un des premiers moyens élémentaires d'analyse de la chaîne dépend également de la valeur du signal de sortie délivré par les premiers moyens élémentaires d'analyse précédents, les moyens d'inhibition réagissant à la valeur du premier signal de sortie délivrés par les derniers premiers moyens - d'analyse élémentaires de la chaîne.
En d'autres termes, le premier signal de sortie délivré par l'un des premiers moyens d'analyse élémentaires, signifie selon sa valeur, soit que la boucle correspondante est en cours d'itération ou qu'une boucle imbriquée de rang inférieur est en cours d'itération. Par voie de conséquence, l'invention prévoit d'interdire la réitération d'une boucle si une boucle de rang inférieur est encore en cours d'itération.
Pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées dont le corps de boucle de chaque boucle comporte au moins deux mots d'instruction, chaque mot d'instruction du programme comporte également avantageusement outre ladite instruction exécutable, une partie additionnelle comportant une suite ordonnée de bits additionnels en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées. A chaque bit additionnel sont associés des deuxièmes moyens élémentaires d'analyse, chaque bit additionnel jouant pour les deuxièmes moyens élémentaires d'analyse qui lui sont associés, le rôle de ladite information additionnelle.Les différents moyens d'analyse élémentaires forment une chaîne, ordonnée d'une façon analogue à celle de la suite de bits additionnels, et la valeur dudit deuxième signal de sortie final délivré par les deuxièmes moyens de détection de l'un des premiers moyens élémentaires d'analyse de la chaîne dépend de la valeur du troisième signal de sortie délivré par les troisièmes moyens de détection des premiers moyens élémentaires d'analyse précédents.
En d'autres termes, là encore on interdit la réitération d'une boucle si une boucle de rang inférieur n'a pas encore atteint sa dernière itération.
Plus particulièrement, la sortie des troisièmes moyens de détection de l'un des deuxièmes moyens élémentaires d'analyse de la chaîne est relié à une autre entrée de la deuxième porte logique ET des deuxièmes moyens de détection des deuxièmes moyens élémentaires d'analyse suivants.
En outre, pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées, comportant au moins une boucle à un seul mot d'instruction et au moins une boucle à au moins deux mots d'instruction, tous les deuxièmes moyens élémentaires d'analyse comportent des moyens d'inhibition auxiliaires aptes à figer le fonctionnement de ces deuxièmes moyens élémentaires d'analyse en présence d'un premier signal de sortie délivré par les derniers premiers moyens d'analyse élémentaires de la chaîne et représentatif de la présence d'une boucle en cours d'exécution, dont le corps de boucle ne comporte qu'un seul mot d'instruction.
L'invention a également pour objet un procédé de localisation d'une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction formant un corps de boucle susceptible d'être réexécuté au moins une fois. Selon une caractéristique générale de l'invention, on forme chaque mot d'instruction du programme en ajoutant à l'instruction exécutable proprement dite de ce mot une information additionnelle, et on localise ladite boucle directement à partir de l'analyse de l'information additionnelle de chaque mot d'instruction, de façon à éviter l'utilisation de cycles d'exécution du processeur pour la localisation de ladite boucle dans le programme.
On peut localiser ladite boucle en fonction de la seule valeur de l'information additionnelle de chaque mot d'instruction.
On peut également localiser une boucle dont le corps de boucle comporte au moins deux mots d'instruction, à partir du résultat d'une comparaison entre la valeur de l'information additionnelle de chaque mot d'instruction et la valeur de l'information additionnelle du mot d'instruction précédent.
Pour la localisation de plusieurs boucles imbriquées, l'information additionnelle comprend une suite de bits additionnels en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées, et on localise les différentes boucles à partir des analyses respectives de certains au moins des bits additionnels.
D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen d'un mode de réalisation nullement limitatif et illustré sur les dessins annexés, sur lesquels
- la figure 1 illustre schématiquement un mot d'instruction étendu conformément à l'invention;
- la figure 2 illustre un exemple de boucles imbriquées dans un programme;
- la figure 3 illustre la localisation d'une boucle à partir de mots d'instructions de la figure 1;
- la figure 4 est un synoptique schématique d'un mode de réalisation d'un dispositif selon l'invention;
- les figures 5 à 7 illustrent schématiquement, mais.de façon plus détaillée, certaines parties du dispositif de la figure 4; et
- la figure 8 illustre une configuration particulière de boucles dans un programme.
Tel qu'illustré sur la figure 1, une caractéristique essentielle de l'invention réside dans la structure particulière de chaque mot d'instruction MI du code programme stocké dans la mémoireprogramme du processeur. Cette structure particulière prévoit l'adjonction à l'instruction exécutable proprement dite INSU du mot d'instruction, d'une partie additionnelle PID composée ici d'une suite ordonnée de bits additionnels Ro-Rk-l et Bo-Bn-l.
Comme on le verra plus en détail ci-après, cette partie additionnelle, composée ici de k+n bits, permet de localiser et de gérer jusqu'à k+n boucles imbriquées RCo-RCk- 1 et BCo-BCn- 1, comme illustré très schématiquement sur la figure 2.
Sur cette figure 2, toutes les boucles, qui ont été représentées dans cet exemple se terminant toutes à un même endroit du code programme, sont constituées uniquement par leur corps de boucle exécutable. Chaque corps de boucle RCi ne comporte qu'un seul mot d'instruction, tandis qu'un corps de boucle BCi comporte au moins deux mots d'instruction.
Dans l'exemple décrit ici, à chaque corps de boucle RCi est associé un bit Ri du mot d'instruction et à chaque corps de boucle BCi est associé un bit Bi.
C'est l'analyse de la valeur de ces différents bits qui va permettre de localiser les différentes boucles au sein du code programme.
Plus précisément, en ce qui concerne les corps de boucles
RCi, qui ne comportent qu'un seul mot d'instruction, la présence ou l'absence d'un tel corps de boucle dans le code programme s'effectuera par l'analyse du bit Ri correspondant. Ainsi, si ce bit Ri vaut 0, on n'est pas en présence d'un corps de boucle à une instruction. Par contre, si ce bit Ri vaut 1, on est en présence d'un tel corps de boucle.
En ce qui concerne un corps de boucle BCi, à au moins deux mots d'instruction, sa localisation s'effectue à partir de la comparaison des valeurs des bits Bi de deux mots d'instruction consécutifs, comme illustré très schématiquement sur la figure 3. Plus précisément, le premier mot d'instruction du corps de boucle BCi est celui pour lequel le bit Bi vaut 1 alors qu'il valait 0 dans le mot d'instruction précédent.
Le dernier mot d'instruction du corps de boucle est celui pour lequel le bit Bi vaut 0 alors qu'il valait 1 dans le mot d'instruction précédent.
Cette comparaison entre les valeurs du bit Bi de deux mots consécutifs permet simplement à l'aide d'un seul bit de localiser le début et la fin d'un corps de boucle, alors qu'il aurait été nécessaire d'utiliser deux bits si l'on avait voulu localiser le début et la fin d'un corps de boucle
BCi à partir de la seule analyse d'un mot d'instruction courant, indépendamment de la valeur du bit Bi du mot d'instruction précédent.
En outre, ce codage des bits Bi permet d'accoler des corps de boucles successifs, c'est-à-dire de commencer une nouvelle boucle de rang i, sur l'instruction suivant immédiatement la dernière instruction de la boucle précédente, également de rang i. En fait une boucle BCi sera effectivement de rang i en l'absence de boucles RCi imbriquées.
En présence de boucles RCi, le rang de la boucle BCi sera en fait égal à i + k où k désigne le nombre de boucles RCi. Cependant, à des fins de simplification dans les notations, on désignera néanmoins par "i" le rang d'une boucle BCi.
Matériellement, comme illustré sur la figure 4, le dispositif électronique selon l'invention se compose, dans l'exemple décrit ici, d'une chaîne de k premiers moyens élémentaires d'analyse LRo-LRk-1 et d'une chaîne de n deuxièmes moyens élémentaires d'analyse LPo
LPn-1.
Au bloc courant LRi, de rang i, est associé le bit additionnel
Ri et, dans l'exemple décrit ici en référence à la figure 2, le corps de boucle RCi. Au bloc courant LPi, de rang i, est associé le bit additionnel Bi et, dans le même exemple, le corps de boucle BCi.
Les deuxièmes moyens élémentaires d'analyse LRi permettent, comme on le verra plus en détail ci-après, de localiser la présence éventuelle d'un corps de boucle RCi dans le code programme, tandis que les deuxièmes moyens élémentaires d'analyse LPi permettent de localiser le début et la fin d'un corps de boucle BCi dans le code programme.
Outre ces différents moyens d'analyse, le dispositif comprend également des moyens de contrôle de la gestion des différentes boucles, reliés à ces moyens d'analyse. Ces moyens de contrôle comportent notamment des moyens d'adressage BK, ICR, MX4, MX3,
BS2 qui vont être capables d'adresser cycliquement la mémoireprogramme MP dans laquelle est stocké le code programme, entre l'adresse du premier mot d'instruction et l'adresse du dernier mot d'instruction d'un corps de boucle en fonction des informations de localisation délivrées par l'un ou des moyens élémentaires d'analyse, et d'une indication relative au nombre désiré de réexécutions de ce corps de boucle, qui est contenue dans un registre affecté à un tel corps de boucle.Pour des raisons de clarté, comme on le verra présenté ci-après, les différents registres stockant les différents nombres d'itérations prédéterminés pour chacune des boucles de rangs différents, ont été respectivement représentés au sein des moyens élémentaires d'analyse correspondants.
L'ensemble des éléments du dispositif est cadencé par un signal d'horloge CK. De même, les différents registres utilisés sont par exemple des bascules D, ou plus exactement des groupes de bascules D selon le nombre de bits des mots qui y sont stockés. Enfin, dans la suite du texte, les différents multiplexeurs utilisés sont représentés comme étant des duplexeurs à deux entrées 1 et 0, le duplexeur basculant sur l'entrée dont la valeur est égale à la valeur de son signal logique de commande.
Un registre BS2, initialisé par un moyen d'initialisation classique non représenté ici à des fins de simplification, à l'adresse du premier mot d'instruction du code programme stocké dans la mémoireprogramme MP, est relié en sortie, en premier lieu au moyen d'adressage BK, en deuxième lieu à l'entrée 0 d'un multiplexeur MX4 par l'intermédiaire d'un incrémenteur ICR de 1 unité, et en troisième lieu à l'entrée 1 d'un multiplexeur MX3. Ce moyen d'initialisation qui comporte notamment un multiplexeur dont la sortie est reliée aux entrées des registres BS2 et ADR, permet ainsi d'initialiser simultanément le registre ADR. Le bloc BK délivre en sortie un signal
PCB, dont on reviendra plus en détail ci-après sur la signification, à l'entrée 1 du multiplexeur MX4.La sortie de ce dernier est reliée à l'entrée 0 du multiplexeur MX3 et la sortie de ce dernier est reliée à l'entrée du registre d'adresse ADR de la mémoire-programme MP.
Cette mémoire-programme délivre en sortie le mot d'instruction Mi dont l'adresse est disponible en sortie du registre
ADR.
Ce mot d'instruction Mi traverse alors un bloc BNI illustré en tiretés sur la figure 4 et qui peut être omis dans certains cas de fonctionnement de l'invention. Aussi, pour des raisons de simplicité, on fera abstraction pour l'instant de la description de la structure et de la fonctionnalité de ce bloc BNI.
Dans la variante qui va maintenant être décrite, le port de sortie de la mémoire MP est directement câblé vers les ressources de calcul du processeur, de façon à délivrer à chaque cycle d'horloge l'instruction proprement dite INSU du mot d'instruction MI délivré. La partie additionnelle de ce mot d'instruction, c'est-à-dire les k+n bits additionnels Bi, Ri, sont respectivement directement câblés aux entrées des premiers moyens élémentaires d'analyse LRi et des deuxièmes moyens élémentaires d'analyse LPi correspondants.
On se réfère maintenant plus particulièrement à la figure 5 qui illustre de façon schématique la structure interne d'un bloc de premiers moyens élémentaires d'analyse LRi.
Ce bloc comporte une porte logique ET, référencée PLli recevant en entrée, en premier lieu, le bit Ri, en deuxième lieu, un bit
RST de remise à zéro "(reset)" par l'intermédiaire d'un inverseur IV2i, et en troisième lieu, la sortie d'un autre inverseur IVli. Le signal RST est actif à l'état haut, c'est-à-dire que le dispositif revient dans un état initial lorsque le bit RST est égal à 1.
La sortie de cette porte PLli commande un multiplexeur
MX6i dont l'entrée 0 est reliée à la sortie d'un registre BS3i contenant un nombre prédéterminé d'itérations valable pour toute boucle de rang i à une instruction.
La sortie du multiplexeur MX6i est reliée à l'entrée d'un registre BS4i contenant le nombre d'itérations restant à effectuer pour cette boucle. La sortie de ce registre BS4i est reliée d'une part à l'entrée 1 d'un multiplexeur MXSi dont la sortie est reliée à l'entrée 1 du multiplexeur MX6i et, d'autre part, à l'entrée d'un décrémenteur
DCRli de l'unité, dont la sortie est reliée à l'entrée 0 du multiplexeur
MX5i.
Ce multiplexeur MXSi est commandé par un signal logique
ROi-l provenant du bloc précédent LRi- 1, et dont on reviendra plus en détail ci-après sur la signification.
La sortie du décrémenteur DCRli est reliée à un moyen de test TSli, constitué uniquement de logique combinatoire et réalisé par exemple par synthèse logique, et testant si la valeur disponible en sortie du décrémenteur DCRli est égale ou non à zéro. La sortie de ce moyen de test TSli est reliée à l'entrée de l'inverseur IVli.
Le bloc LRi comporte enfin une porte logique OU, référencée
PL2i, dont l'une des entrées est reliée à la sortie de l'inverseur IVli, et dont l'autre entrée reçoit également le signal logique ROi-l. La sortie de cette porte logique OU délivre un premier signal de sortie ROi qui commandera le multiplexeur MX5i+l du bloc suivant LRi+1.
La figure 6 illustre schématiquement plus en détail la structure matérielle interne d'un bloc LPi incorporant les deuxièmes moyens élémentaires d'analyse correspondants.
Sur la gauche de la figure 6, on voit que le bit Bi est reçu sur une première entrée d'une porte logique ET référencée PLSi, dont l'autre entrée reçoit le bit de remise à zéro RST par l'intermédiaire d'un inverseur IV3i. La sortie de cette porte PL5i est reliée à l'entrée 0 d'un multiplexeur MX7i commandé par un signal logique GL dont on reviendra plus en détail sur la signification ci-après. La sortie de ce multiplexeur MX7i est reliée à l'entrée d'un premier registre BS5i dont la sortie est reliée à l'une des entrées d'une première porte logique ET, référencée PL3i, par l'intermédiaire d'un inverseur IV7i.
La sortie du premier registre BSSi est par ailleurs rebouclée sur l'entrée 1 du multiplexeur MX7i, et également reliée à l'une des entrées d'une deuxième porte logique ET, référencée PL4i.
Le bit Bi est également délivré d'une part à une autre entrée de la porte PL4i par l'intermédiaire d'un inverseur IV5i, et, d'autre part, à une autre entrée de la porte logique PL3i.
Le bloc LPi comporte également, en bas et à gauche de la figure 6, un deuxième registre BS6i qui, comme on le verra plus en détail ci-après, est destiné à stocker une indication représentative d'une boucle en cours ou non d'exécution. La sortie de ce registre BS6i est reliée en premier lieu à une troisième entrée de la porte logique
PL3i par l'intermédiaire d'un inverseur IV8i, en deuxième lieu à une troisième entrée de la porte logique PL4i, et en troisième lieu à l'entrée 1 d'un multiplexeur MX8i, dont la sortie est reliée à l'entrée du registre BS6i.
La sortie de ce registre BS6i est également reliée à l'une des entrées d'une porte OU référencée PL7i, dont la sortie est reliée à l'une des entrées d'une porte logique ET, référencée PL6i. La sortie de cette porte logique PL6i est reliée à l'entrée 0 du multiplexeur MX8i, ce dernier étant commandé par le signal logique GL.
Les deux autres entrées de cette porte logique PL6i reçoivent respectivement le bit RST par l'intermédiaire d'un inverseur IV4i, et la sortie d'une porte logique NON ET, référencée PLlli, et représentée en haut de la figure 6.
Enfin, une quatrième entrée de la porte logique PL4i reçoit, par l'intermédiaire d'un inverseur IV6i, un signal logique JBi-l, provenant du bloc précédent LPi-1, et dont on reviendra plus en détail ci-après sur la signification.
On peut d'ores et déjà noter que la première porte logique
PL3i fait partie de premiers moyens de détection qui délivrent un signal SVi, appelé deuxième signal de sortie initial, qui fait partie de l'information de localisation délivrée par le bloc LPi et qui est représentatif du début ou non d'une boucle. De même, la deuxième porte logique PL4i fait partie de deuxièmes moyens de détection qui délivrent un signal de sortie RSi, appelé deuxième signal de sortie final, qui fait également partie de l'information de localisation et qui est représentatif de la fin ou non d'une itération d'une boucle en cours d'exécution, et du rang de cette itération. En d'autres termes, ce signal
RSi permet aussi de faire la différence entre la fin de toute itération jusqu'à l'avant-dernière, et la fin de la dernière itération.
Au bas de la figure 6, est représenté un registre BS lOi qui stocke le nombre prédéterminé d'itérations pour un corps de boucle de rang i, à au moins deux instructions, ce nombre étant stocké par l'intermédiaire d'un multiplexeur recevant sur son entrée 1, ledit nombre.
La sortie de ce registre BS lOi est reliée à l'entrée 1 d'un multiplexeur MX12i commandé par le signal SVi présent en sortie de la porte logique PL3i. I1 convient également de noter que la deuxième entrée de la porte logique PL7i est reliée à la sortie de la porte logique
PL3i.
La sortie du multiplexeur MXi2i est reliée à l'entrée O d'un muliplexeur MXî3i commandé par le signal GL. La sortie du multiplexeur MX13i est reliée à l'entrée d'un registre BS9i qui contient le nombre d'itérations restant à effectuer pour le corps de boucle.
La sortie du registre BS9i est rebouclée sur l'entrée 1 du multiplexeur MX13i. Elle est par ailleurs reliée en premier lieu à l'entrée 0 d'un multiplexeur MXlli, en deuxième lieu, à l'entrée 1 de ce multiplexeur MXlli par l'intermédiaire d'un décrémenteur DCR2i, et en troisième lieu, à l'entrée d'un moyen de CPii de comparaison à 1 de la valeur disponible en sortie du registre BS9i.
La sortie du multiplexeur Moi li est reliée à l'entrée 0 du multiplexeur MXî2i.
La sortie du moyen de comparaison CPli est reliée à une entrée d'une porte logique OU, référencée PL8i dont la sortie est d'une part reliée à l'entrée 0 d'un multiplexeur MX14i et, d'autre part, à l'une des entrées d'une porte logique ET référencée PL9i.
L'autre entrée de cette porte PL9i est reliée à la sortie de la porte logique PL6i.
La sortie de cette porte logique PL9i délivre un signal logique JBi, dont on reviendra plus en détail ci-après sur la signification, et qui sera exploité au niveau de la porte logique PL4i+l du bloc suivant LPi+l.
La sortie du multiplexeur MX14i est reliée à l'entrée d'un registre BS8i dont la sortie est rebouclée sur l'entrée 1 du multiplexeur MX14i. Le registre BS8i et le multiplexeur MX14i peuvent être facultatifs, comme on le verra ci-après.
La sortie du registre BS8i est par ailleurs, d'une part, reliée à une première entrée d'une porte logique ET référencée PLlOi, et, d'autre part, par l'intermédiaire d'un inverseur IV9i, à l'une des entrées de la porte logique PLi li.
La sortie de la porte logique PL4i, délivrant le signal RSi, est également reliée respectivement aux autres entrées des portes logiques
PLlOi et PLlli.
La sortie de la porte logique PLlOi est reliée à l'entrée O d'un multiplexeur MX9i dont la sortie est reliée à l'entrée d'un registre
BS7i. La sortie de ce registre est reliée, d'une part, à l'entrée 1 du multiplexeur MX9i, commandé par le signal GL, et, d'autre part, à l'entrée de commande du multiplexeur Molli.
Sur la partie inférieure droite de la figure 6, sont représentés des moyens optionnels PL8i, BS 1 li, MXlOi, TS2i, PL12i, IVlOi, permettant de faire reboucler indéfiniment un corps de boucle. Plus précisément, ces moyens comportent un moyen TS2i permettant de tester si la sortie du registre BSlOi vaut 0. La sortie de ce moyen TS2i est reliée à l'entrée 0 d'un multiplexeur MXlOi dont la sortie est reliée à l'entrée d'un registre BSlli. La sortie de ce registre BSlli est, d'une part, rebouclée sur l'entrée 1 du multiplexeur MXlOi, et, d'autre part, reliée à l'autre entrée de la porte logique OU, référencée PL8i.
Le multiplexeur MXlOi est commandé par le signal de sortie d'une porte logique OU, référencée PL12i, dont l'une des entrées reçoit le signal GL, et dont l'autre entrée est reliée, par l'intermédiaire d'un inverseur IV lOi, à la sortie de la porte logique PL3i.
On se réfère maintenant plus particulièrement à la figure 7 pour décrire plus en détail la structure interne du bloc BK de la figure 4.
Ce bloc BK comporte autant de registres RGo-RGn-l qu'il y a de blocs LPi. L'entrée de chaque registre RGi est reliée à la sortie d'un multiplexeur MXXi dont l'entrée 1 reçoit, dans la variante qui est actuellement décrite, uniquement l'adresse PC délivrée par le registre
BS2 (figure 4). La sortie du registre RGi est rebouclée sur l'entrée O du multiplexeur MXXi.
Chaque multiplexeur MXXi est commandé par la sortie d'une porte logique ET, référencée PLOi recevant en entrée, d'une part, le signal SVi délivré par la porte logique PL3i du bloc LPi, et, d'autre part, le signal GL inversé par un inverseur IV30.
La sortie du registre RGi est également reliée à une entrée d'une porte logique ET, référencée PLPi, dont l'autre entrée reçoit le signal RSi délivré par la porte logique PL4i du bloc LPi.
Les sorties de toutes les portes logiques PLPo-PLPn-l sont reliées aux entrées d'une porte logique OU, référencée PLQ dont la sortie délivre, dans la variante décrite ici, uniquement le signal PCB.
Par ailleurs, le bloc BK comporte également une porte logique OU, référencée PLR, recevant en entrée tous les signaux RSo RSn-l délivrés par les n blocs LPo-LPn-l, et dont la sortie délivre le signal USB commandant le multiplexeur MX4 (figure 4).
On va maintenant décrire le fonctionnement du dispositif selon l'invention. Dans cette description, le bloc BNI, le registre BS8 et le multiplexeur MX14i sont supposés omis et les multiplexeurs
MXXi du bloc BK ne reçoivent que le mot PC (m = O).
Supposons tout d'abord qu'à un front montant d'horloge donné, aucune boucle n'est en cours d'exécution et que le programme ne détecte aucun passage dans un corps de boucle. En d'autres termes, tous les bits Ri sont égaux à O de même que tous les bits Bi de deux mots d'instruction consécutifs.
Au front montant de l'horloge, le mot MI dont l'adresse correspond à celle disponible en sortie du registre ADR est disponible en sortie de la mémoire MP. L'instruction exécutable proprement dite
INSU est transmise aux ressources de calcul du processeur et les bits
Bi, Ri sont respectivement transmis aux moyens élémentaires d'analyse correspondants. Les signaux SVi et GL sont égaux à 0. Les contenus des registres RGi du bloc BK ne sont pas modifiés car les signaux SVi sont égaux à O. Les signaux RSi sont également égaux à 0, car aucune boucle n'est en cours et, par voie de conséquence, le signal USB est également égal à 0.En conséquence, le multiplexeur MX4 va permettre de délivrer au registre d'adresse de la mémoire MP et au registre BS2, l'adresse précédente augmentée de une unité, ce qui va permettre de délivrer au front suivant d'horloge, le mot d'instruction suivant dans le code programme.
Supposons maintenant que le bit LRo correspondant à un corps de boucle à une instruction de rang le plus bas, prenne la valeur 1 à un front montant donné de l'horloge.
En supposant que le bit RST soit inactif, le multiplexeur
MX6i est positionné sur son entrée 1, tandis que le multiplexeur MX5i est positionné sur son entrée 0 car, par définition, l'entrée ROi-l pour le bloc LRo est câblée à 0. Par ailleurs, la valeur du nombre d'itérations de ce corps de boucle qui est stockée dans le registre BS3i a été, lors du cycle précédent, stockée dans le registre BS4i puisque le bit Ri valait alors 0 (signal de sortie de la porte PLli égal à 0).
Au rythme des fronts d'horloge, le registre BS4i est décrémenté jusqu'à ce qu'il atteigne la valeur 0.
Tant qu'il n'a pas atteint la valeur 0, le signal en sortie du moyen de test TSli est égal à 0, ce qui conduit à obtenir un 1 sur l'entrée correspondante de la porte PL2i. Le signal ROi de ce bloc LRo garde donc la valeur 1 tant que la boucle n'a pas effectué sa dernière itération.
Or, le signal ROi d'un bloc LRi dépend de la valeur du signal
ROi-l du bloc précédent. En d'autres termes, tant que l'un des signaux
ROi d'un bloc LRi de la chaîne garde la valeur 1, le signal de sortie
ROk-l du dernier bloc, qui en fait le signal GL, garde la valeur 1.
Dans tous les moyens qui viennent d'être décrits, les différents multiplexeurs commandés par le signal GL forment en fait des moyens d'inhibition qui permettent de figer le contenu des registres auxquels ils sont associés lorsque le signal GL est égal à 1.
Ainsi, tant que le registre BS4i d'un bloc LRi n'a pas atteint la valeur 0, le contenu des registres BS2 et ADR est figé, ce qui permet d'obtenir la répétition du mot d'instruction du corps de boucle de façon à exécuter cette boucle.
De même, le signal GL permet d'inhiber le fonctionnement des autres moyens du dispositif, en particulier le fonctionnement des deuxièmes moyens élémentaires d'analyse LPi, et ce même si une boucle BCi est en cours d'exécution.
Un fonctionnement analogue à celui qui vient d'être décrit pour le bloc LRo, est obtenu pour chaque bloc LRi de la chaîne, lorsque le bit Ri correspondant passe à 1. Néanmoins, tant qu'une boucle de rang inférieur à i est en cours d'exécution, non seulement le signal GL restera à 1, mais le signal ROi-l du bloc LRi restera à 1, ce qui interdira l'exécution de la boucle RCi (multiplexeur MX5i positionné sur l'entrée 1).
Supposons maintenant que le signal GL soit égal à O, de même que le bit RST (reset inactif), et que le bit Bi associé au bloc
LPi passe à la valeur 1 alors qu'il avait au cycle précédent la valeur 0.
Autrement dit, on rentre dans une boucle BCi de rang i, à au moins deux instructions.
La valeur précédente du bit Bi est disponible en sortie du registre BS5i et, par voie de conséquence, l'entrée correspondante de la porte PL3i est mise à 1, de même que l'entrée de cette porte recevant le bit Bi. Par ailleurs, la sortie du registre BS6i est égale à 0 puisque l'on n'était pas déjà dans la boucle. En conséquence, toutes les entrées de la porte PL3i sont égales à 1, ce qui conduit à un signal SVi de valeur égale à 1, indiquant la première entrée dans le corps de boucle.
A ce moment-là, puisque les deux entrées de la porte logique
PLOi du bloc BK sont égales à 1, le multiplexeur MXXi est positionné sur son entrée 1 et l'adresse PC délivrée par le registre BS2 est stockée dans le registre RGi du bloc BK. En d'autres termes, on mémorise ici l'adresse du premier mot d'instruction du corps de boucle.
Au cours de ce cycle, le signal RSi a pris la valeur-0, ce qui conduit à un signal USB égal à 0 positionnant le multiplexeur MX4 sur son entrée correspondante, de façon à permettre au cycle suivant l'incrémentation du registre d'adresse de la mémoire-programme pour permettre la progression dans le corps de boucle.
Tant que l'on a pas atteint la dernière instruction du corps de boucle, le bit Bi garde la valeur 1 de même que la sortie Q du registre
BS5i. Les signaux SVi et RSi gardent la valeur 0 et la sortie de la porte logique PLlli est à 1.
Lorsqu'on arrive au dernier mot d'instruction du corps de boucle, le signal SVi vaut 0, de même que le bit Bi. Les sorties des registres BS5i et BS6i sont quant à elles égales à 1. Le signal RSi prend alors la valeur 1, sauf si le signal logique JBi-l vaut 1, ce que l'on suppose non réalisé ici (on reviendra plus en détail sur ce point ci-après).
Puisque le signal RSi vaut 1, la porte OU référencée PLQ des moyens BK délivre le signal PCB qui est en fait le contenu du registre
RGi. En d'autres termes, les moyens BK délivrent en sortie l'adresse du premier mot d'instruction du corps de boucle qui avait été mémorisé lors de l'entrée dans la boucle.
Par ailleurs, puisque le signal USB délivré par la porte logique PLR des moyens BK, vaut 1, cette adresse PCB est délivrée au registre d'adresse de la mémoire-programme, ce qui repositionne automatiquement le code programme au niveau de la première instruction du corps de boucle de façon à pouvoir répéter celui-ci.
Lorsque le signal RSi du bloc LPi était passé à 1, le signal présent sur l'autre entrée de la porte logique PLlOi était aussi égal à 1, puisque le contenu du registre BS9i qui représente le nombre d'itérations restant à effectuer, n'avait pas atteint la valeur 1. En conséquence, la sortie du registre BS7i va permettre de positionner sur son entrée 1 le multiplexeur MXlli permettant de décrémenter d'une unité le contenu du registre BS9i.
I1 convient également de noter que, lors des itérations ultérieures, puisque la sortie du registre BS6i est égale à 1, le signal
SVi ne prendra plus la valeur 1, ce qui permettra de maintenir inchangé le contenu du registre RGi des moyens BK.
Lorsqu'on atteint le dernier mot d'instruction de l'avant dernière itération du corps de boucle, c'est-à-dire lorsque le contenu du compteur BS9i atteint la valeur 1, le signal RSi vaut 1 repositionnant le registre de l'adresse de la mémoire-programme au début du corps de boucle. Par contre, au premier cycle suivant pour lequel le signal GL ne vaut pas 1, la sortie du registre BS6i vaut 0 puisque le signal en sortie de la porte logique PLi li vaut 0. En conséquence, le signal RSi retombera à la valeur 0 et gardera cette valeur 0 jusqu'au dernier mot d'instruction du corps de boucle, évitant ainsi de repositionner le pointeur d'adresse au début de la boucle, de façon à permettre le déroulement ultérieur normal du code programme en sortie de boucle.
Comme cela a déjà été évoqué plus haut, le signal RSi ne prend pas la valeur 1 en présence d'un signal JBi-l valant également 1.
Ce signal JBi- i, en provenance du bloc précédent LPi-l de la chaîne, signifie, lorsqu'il vaut 1, qu'une boucle de rang inférieur au rang i est en cours d'exécution. Ce signal interdit donc dans ce cas, le rebouclage de la boucle de rang i, tant qu'une boucle de rang inférieur est entrain de reboucler.
En ce qui concerne l'élaboration du signal JBi du bloc LPi, celui-ci, qui est délivré par la porte logique PL9i, garde la valeur 1 tant que le contenu du registre BS9i n'a pas atteint la valeur 1.
On considère maintenant que le bloc BNI est présent et que m est différent de zéro (figure 7).
Si l'on revient plus particulièrement à la figure 4, la structure du bloc BNI comporte un multiplexeur MX1 dont l'entrée 0 est reliée au port de sortie de la mémoire-programme MP. La sortie de ce multiplexeur est reliée à l'entrée 0 d'un multiplexeur MX2 dont la sortie est reliée à l'entrée d'un registre BS1. La sortie de ce registre est rebouclée sur l'entrée 1 du multiplexeur MX2.
Par ailleurs, la totalité des bits du mot d'instruction MI (instruction proprement dite plus bits additionnels) sont câblés sur les entrées 1 de chacun des multiplexeurs MXXi des moyens BK (figure 7).
Le signal USB délivré par la porte logique PLR des moyens
BK commande également le multiplexeur MX1, tandis que la sortie de la porte logique PLQ délivre sur l'entrée 1 du multiplexeur MX1, non seulement l'adresse PCB, mais également le contenu du premier mot d'instruction MI du corps de boucle.
En fait, l'homme du métier remarquera que ce qui est mémorisé dans le registre RGi des moyens BK est en fait le premier mot d'instruction du corps de boucle et l'adresse du mot d'instruction suivant. Ceci permet de prendre en compte la présence supplémentaire du registre auxiliaire BS1. En outre dans cette variante, les moyens d'adressage adressent cycliquement la mémoire programme entre l'adresse du deuxième mot du corps de boucle et l'adresse du mot suivant immédiatement le dernier mot du corps de boucle. Les moyens
BNI permettent de pipeliner le traitement, ce qui réduit le chemin critique à l'intérieur du dispositif et permet d'augmenter la fréquence du signal d'horloge.
Dans le même esprit, il convient de noter que le registre BS8i et le multiplexeur associé MX14i de la figure 6 peuvent être éventuellement ajoutés en combinaison ou non avec le bloc BNI et ne sont réellement utiles que dans le but d'augmenter également la fréquence du signal d'horloge.
La figure 8 illustre de façon schématique un exemple de mise en oeuvre de l'invention avec un code programme comportant une configuration particulière de boucles.
Dans cet exemple, on suppose que le dispositif contient trois blocs de deuxièmes moyens élémentaires d'analyse LPO, LP1 et LP2, ainsi que deux blocs de premiers moyens élémentaires d'analyse LRO et LR1.
On suppose, par ailleurs, que le nombre d'itérations de tout corps de boucle géré par le bloc LP2 est égal à 16, tandis qu'il est égal à 32, 8, 4 et 2 pour des corps de boucles gérés respectivement par les blocs LP1, LP0, LR1 et LR0.
Il est ainsi possible de localiser et de contrôler l'exécution de cinq boucles imbriquées comme c'est le cas pour les boucles BCa,
BCb, BCc, RCa et RCb, de la première partie du code programme
CDP. Puisque ces boucles ont respectivement des nombres d'itérations égaux à 16, 32, 8, 4 et 2, elles seront respectivement gérées par les blocs LP2, LP1, LP0, LR1 et LR0, en association avec les bits B2, B1,
BO, R1 et RO.
Ceci étant, si un nombre moins grand de boucles doit être localisé et contrôlé, certains des moyens du dispositif peuvent être inutilisés, comme c'est le cas par exemple pour la gestion des trois boucles BCd, RCc et RCd de la deuxième partie du code programme.
Puisque la boucle BCd doit être itérée huit fois, elle sera considérée effectivement comme étant une boucle de rang 3 et sera donc gérée par le bloc LP0. La boucle RCc dont le nombre d'itérations est fixé à 4, sera quant à elle gérée par le bloc LR1. il en sera de même pour la boucle RCd.
D'une façon analogue, en ce qui concerne la troisième partie du code programme, la boucle BCe sera gérée par le bloc LP2, tandis que les boucles BCf et BCg seront gérées successivement par le bloc
LP1. Les boucles BCh et BCa seront successivement gérées par le bloc
LP0, tandis que la boucle RCe sera gérée par le bloc LR0, le bloc LR1 étant inutilisé dans cette troisième partie du code programme CDP.
L'invention permet donc de pouvoir réutiliser des ressources matérielles dédiées aux boucles (moyens LPi et LRi) pour les appliquer à des boucles situées dans des endroits différents du code programme, pour autant bien entendu que ces boucles aient des nombres d'itérations correspondant à l'un de ceux mémorisés dans les moyens LPi ou LRi. Dans le cas contraire, il serait nécessaire de prévoir une remise à jour, logicielle par exemple, de la valeur du registre d'itérations avant de contrôler la boucle correspondante.
Ceci étant, dans des applications de traitement d'images, par exemple, les nombres différents d'itérations sont généralement connus et figés, ce qui permet de prévoir suffisamment de moyens élémentaires d'analyse de façon à pouvoir traiter toutes les boucles d'un programme sans avoir à reconfigurer les registres d'itérations.
Par ailleurs, l'invention permet également de ne pas avoir à remettre à jour les fichiers si l'on déplace du code.
L'invention permet donc, en d'autres termes, une meilleure "relogeabilité" du code programme.

Claims (20)

REVENDICATIONS
1. Dispositif électronique de localisation et de contrôle d'au moins une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction (MI) formant un corps de boucle susceptible d'être réexécuté au moins une fois, chaque mot d'instruction (MI) du programme comportant une instruction exécutable proprement dite (INSU) et une information additionnelle (PID), le dispositif comprenant des moyens d'analyse (LPi, LRi), reliés à la mémoire-programme (MP) du processeur , aptes à analyser le contenu de l'information additionnelle de chaque mot d'instruction, et à délivrer une information de localisation de boucle (SVi, RSi, GL) à partir de cette seule analyse, et des moyens de contrôle, reliés aux moyens d'analyse, comportant un registre (BSlOi,
BS3i) contenant une indication relative au nombre désiré de réexécutions du corps de boucle ainsi que des moyens d'adressage (BK, ICR,....BS2), aptes à adresser cycliquement la mémoireprogramme entre l'adresse du premier mot d'instruction et l'adresse du dernier mot d'instruction du corps de boucle au moins en fonction de l'information de localisation et de ladite indication.
2. Dispositif électronique de localisation et de contrôle d'au moins une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction (MI) formant un corps de boucle susceptible d'être réexécuté au moins une fois, chaque mot d'instruction (MI) du programme comportant une instruction exécutable proprement dite (INSU) et une information additionnelle (PID), le dispositif comprenant des moyens d'analyse (LPi, LRi), reliés à la mémoire-programme (MP) du processeur , aptes à analyser le contenu de l'information additionnelle de chaque mot d'instruction, et à délivrer une information de localisation de boucle (SVi, RSi, GL) à partir de cette seule analyse, et des moyens de contrôle, reliés aux moyens d'analyse, comportant un registre (BSlOi,
BS3i) contenant une indication relative au nombre désiré de réexécutions du corps de boucle ainsi que des moyens d'adressage (BK, ICR,....BS2, BNI), aptes à adresser cycliquement la mémoire programme entre l'adresse du deuxième mot d'instruction et l'adresse du mot suivant immédiatement le dernier mot d'instruction du corps de boucle, au moins en fonction de l'information de localisation et de ladite indication.
3. Dispositif selon la revendication 2 caractérisé par le fait qu il comprend un moyen de barrière temporelle (BS1) connecté entre la sortie de la mémoire-programme et les moyens d'analyse, ainsi qu'un registre auxiliaire commandable de stockage (RGi) apte à stocker chaque premier mot d'instruction d'une boucle, les moyens de contrôle délivrant au moyen de barrière temporelle, lors du réadressage de la mémoire programme à l'adresse du deuxième mot d'instruction, ce premier mot d'instruction stocké.
4. Dispositif selon l'une des revendications précédentes, caractérisé par le fait que les moyens d'analyse comportent des premiers moyens élémentaires d'analyse (LRi) destinés à localiser une boucle dont le corps de boucle ne comporte qu'un seul mot d'instruction, et aptes à délivrer en tant qu'information de localisation, un premier signal de sortie (GL) dont la valeur dépend au moins de la valeur du contenu de l'information additionnelle, et par le fait que les moyens d'adressage comportent des moyens d'inhibition figeant l'adresse courante de la mémoire programme en présence d'un premier signal de sortie représentatif de la présence d'une boucle en cours d'itération.
5. Dispositif selon l'une des revendications précédentes, caractérisé par le fait que les moyens d'analyse comportent des deuxièmes moyens élémentaires d'analyse (LPi) destinés à. localiser une boucle dont le corps de boucle comporte au moins deux mots d'instruction, et aptes à délivrer l'information de localisation à partir du résultat de la comparaison entre le contenu de l'information additionnelle de chaque mot d'instruction et le contenu de l'information additionnelle du mot d'instruction précédent.
6. Dispositif selon l'une des revendications précédentes, caractérisé par le fait que les deuxièmes moyens élémentaires d'analyse comportent des premiers moyens de détection (PL3i) aptes à délivrer un deuxième signal de sortie initial (SVi) faisant partie de l'information de localisation et représentatif du début ou non d'une boucle, et par le fait que les moyens d'adressage comportent un moyen de stockage (RGi) apte à mémoriser l'adresse du premier ou du deuxième mot d'instruction du corps de boucle en présence d'un deuxième signal de sortie initial représentatif du début d'une boucle.
7. Dispositif selon la revendication 6, caractérisé par le fait que les premiers moyens de détection comportent une première porte logique ET (PL3i) dont une entrée est reliée, par l'intermédiaire d'un inverseur (IV7i), à la sortie d'un premier registre (BS Si) destiné à recevoir l'information additionnelle d'un mot d'instruction, dont une autre entrée reçoit ladite information additionnelle (Bi) et dont une troisième entrée est reliée, par l'intermédiaire d'un autre inverseur (IV8i), à la sortie d'un deuxième registre (BS6i) destiné à stocker une indication représentative d'une boucle en cours ou non d'exécution, la sortie de la première porte logique ET délivrant le deuxième signal de sortie initial (SVi).
8. Dispositif selon la revendication 6 ou 7, caractérisé par le fait que les deuxièmes moyens élémentaires d'analyse comportent des deuxièmes moyens de détection (PL4i) aptes à délivrer un deuxième signal de sortie final (R5i) faisant partie de l'information de localisation et représentatif de la fin ou non d'une itération d'une boucle en cours d'exécution et du rang de cette itération, et par le fait que les moyens d'adressage (BK) extraient du moyen de stockage (RGi) l'adresse du premier ou du deuxième mot d'instruction du corps de boucle, en présence d'un deuxième signal de sortie final représentatif de la fin de toute itération de la boucle, sauf la dernière.
9. Dispositif selon les revendications 7 et 8, caractérisé par le fait que les deuxièmes moyens de détection comportent une deuxième porte logique ET (PL4i) dont une entrée est reliée à la sortie du premier registre (BS5i), dont une autre entrée reçoit ladite information additionnelle (Bi) inversée (IV5i), et dont une troisième entrée est reliée à la sortie du deuxième registre (BS6i), la sortie de la deuxième porte logique ET délivrant le deuxième signal de sortie final (RSi).
10. Dispositif selon l'une des revendications 5 à 9, caractérisé par le fait que les deuxièmes moyens d'analyse comportent des troisièmes moyens de détection (PL9i) aptes à délivrer un troisième signal de sortie (JBi) représentatif d'une boucle ayant ou non effectué son avant-dernière itération.
11. Dispositif selon la revendication 4 ou l'une des revendications 5 à 10, caractérisé par le fait que ladite information additionnelle est constituée d'un seul bit (Bi, Ri).
12. Dispositif selon les revendications 4 et 11, pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées dont le corps de boucle de chaque boucle ne comporte qu'un seul mot d'instruction, caractérisé par le fait que chaque mot d'instruction du programme comporte outre ladite instruction exécutable, une partie additionnelle (PID) comportant une suite ordonnée de bits additionnels (Ri) en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées, par le fait qu'à chaque bit additionnel sont associés des premiers moyens élémentaires d'analyse, chaque bit additionnel jouant pour les premiers moyens élémentaires d'analyse qui lui sont associés le rôle de ladite information additionnelle, par le fait que les différents moyens d'analyse élémentaires forment une chaîne, ordonnée d'une façon analogue à celle de la suite de bits additionnels, et par le fait que la valeur dudit premier signal de sortie (ROi) délivré par l'un des premiers moyens élémentaires d'analyse de la chaîne dépend également de la valeur du signal de sortie (ROi-l) délivré par les premiers moyens élémentaires d'analyse précédents, les moyens d'inhibition réagissant à la valeur du premier signal de sortie (GL) délivrés par les derniers premiers moyens d'analyse élémentaires de la chaîne.
13. Dispositif selon l'une des revendications 8 ou 9 prise en combinaison avec les revendications 10 et 11, pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées dont le corps de boucle de chaque boucle comporte au moins deux mots d'instruction, caractérisé par le fait que chaque mot d'instruction du programme comporte outre ladite instruction exécutable, une partie additionnelle (PID) comportant une suite ordonnée de bits additionnels (Bi) en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées, par le fait qu'à chaque bit additionnel sont associés des deuxièmes moyens élémentaires d'analyse (LPi), chaque bit additionnel jouant pour les deuxièmes moyens élémentaires d'analyse qui lui sont associés le rôle de ladite information additionnelle, par le fait que les différents moyens d'analyse élémentaires forment une chaîne ordonnée d'une façon analogue à celle de la suite de bits additionnels, et par le fait que la valeur dudit deuxième signal de sortie final (RSi) délivré par les deuxièmes moyens de détection de l'un des premiers moyens élémentaires d'analyse de la chaîne dépend de la valeur du troisième signal de sortie (JBi-l) délivré par les troisièmes moyens de détection des premiers moyens élémentaires d'analyse précédents.
14. Dispositif selon les revendications 9 et 13, caractérisé par le fait que la sortie des troisièmes moyens de détection de l'un des deuxièmes moyens élémentaires d'analyse de la chaîne est relié à une autre entrée de la deuxième porte logique ET (PL4i) des deuxièmes moyens de détection des deuxièmes moyens élémentaires d'analyse suivants (LPi).
15. Dispositif selon la revendication 12 prise en combinaison avec la revendication 13 ou 14, pour la localisation et le contrôle de plusieurs boucles mutuellement imbriquées, caractérisé par le fait que chaque deuxièmes moyens élémentaires d'analyse comportent des moyens d'inhibition auxiliaires (PLOi) aptes à figer le fonctionnement de ces deuxièmes moyens élémentaires d'analyse en présence d'un premier signal de sortie (GL) délivré par les derniers premiers moyens d'analyse élémentaires et représentatif de la présence d'une boucle en cours d'itération, dont le corps de boucle ne comporte qu'un seul mot d'instruction.
16. Procédé de localisation d'une boucle dans un programme d'un processeur programmable, ladite boucle comportant au moins un mot d'instruction formant un corps de boucle susceptible d'être réexécuté au moins une fois, caractérisé par le fait qu'on forme chaque mot d'instruction du programme (MI) en ajoutant à l'instruction exécutable proprement dite de ce mot une information additionnelle (Bi, Ri), et on localise ladite boucle directement à partir de l'analyse de l'information additionnelle de chaque mot d'instruction, de façon à éviter l'utilisation de cycles d'exécution du processeur pour la localisation de ladite boucle dans le programme.
17. Procédé selon la revendication 16, caractérisé par le fait qu'on localise ladite boucle en fonction de la seule valeur de l'information additionnelle de chaque mot d'instruction.
18. Procédé selon la revendication 16, caractérisé par le fait qu'on localise une boucle dont le corps de boucle comporte au. moins deux mots d'instruction, à partir du résultat d'une comparaison entre la valeur de l'information additionnelle de chaque mot d'instruction et la valeur de l'information additionnelle du mot d'instruction précédent.
19. Procédé selon l'une des revendications 16 à 18, caractérisé par le fait que l'information additionnelle comprend au moins un bit (Bi, Ri).
20. Procédé selon la revendication 19, pour la localisation de plusieurs boucles imbriquées, caractérisé par le fait que l'information additionnelle comprend une suite de bits additionnels en un nombre correspondant à un nombre maximum prédéterminé de boucles pouvant être mutuellement imbriquées, et par le fait qu'on localise les différentes boucles à partir des analyses respectives de certains au moins des bits additionnels.
FR9508897A 1995-07-21 1995-07-21 Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant Expired - Fee Related FR2737027B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9508897A FR2737027B1 (fr) 1995-07-21 1995-07-21 Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9508897A FR2737027B1 (fr) 1995-07-21 1995-07-21 Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant

Publications (2)

Publication Number Publication Date
FR2737027A1 true FR2737027A1 (fr) 1997-01-24
FR2737027B1 FR2737027B1 (fr) 1997-09-19

Family

ID=9481261

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9508897A Expired - Fee Related FR2737027B1 (fr) 1995-07-21 1995-07-21 Dispositif electronique de localisation et de controle de boucles dans un programme d'un processeur, notamment un processeur de traitement d'images, et procede correspondant

Country Status (1)

Country Link
FR (1) FR2737027B1 (fr)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0913765A1 (fr) * 1997-10-31 1999-05-06 STMicroelectronics SA Processeur avec commande d'instructions répétables ou multicycles
WO2004049154A2 (fr) * 2002-11-28 2004-06-10 Koninklijke Philips Electronics N.V. Circuit de controle de boucle pour un processeur de donnees
WO2007133893A1 (fr) 2006-05-10 2007-11-22 Qualcomm Incorporated codage d'informations de boucle matÉrielle d'extrÉmitÉ dans une instruction

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1360398A (fr) * 1962-04-02 1964-05-08 Hitachi Ltd Calculatrice numérique
GB2163279A (en) * 1984-08-15 1986-02-19 Tektronix Inc Loop control system for digital processing apparatus
EP0388735A2 (fr) * 1989-03-10 1990-09-26 Nec Corporation Dispositif de commande de microprogramme à générateur d'instructions fixes et mémoire de microprogramme

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1360398A (fr) * 1962-04-02 1964-05-08 Hitachi Ltd Calculatrice numérique
GB2163279A (en) * 1984-08-15 1986-02-19 Tektronix Inc Loop control system for digital processing apparatus
EP0388735A2 (fr) * 1989-03-10 1990-09-26 Nec Corporation Dispositif de commande de microprogramme à générateur d'instructions fixes et mémoire de microprogramme

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0913765A1 (fr) * 1997-10-31 1999-05-06 STMicroelectronics SA Processeur avec commande d'instructions répétables ou multicycles
FR2770659A1 (fr) * 1997-10-31 1999-05-07 Sgs Thomson Microelectronics Processeur de traitement perfectionne
US6247125B1 (en) 1997-10-31 2001-06-12 Stmicroelectronics S.A. Processor with specialized handling of repetitive operations
WO2004049154A2 (fr) * 2002-11-28 2004-06-10 Koninklijke Philips Electronics N.V. Circuit de controle de boucle pour un processeur de donnees
WO2004049154A3 (fr) * 2002-11-28 2005-01-20 Koninkl Philips Electronics Nv Circuit de controle de boucle pour un processeur de donnees
WO2007133893A1 (fr) 2006-05-10 2007-11-22 Qualcomm Incorporated codage d'informations de boucle matÉrielle d'extrÉmitÉ dans une instruction
JP2009536769A (ja) * 2006-05-10 2009-10-15 クゥアルコム・インコーポレイテッド ハードウェアエンドループ情報の命令へのコード化
CN101438235B (zh) * 2006-05-10 2012-11-14 高通股份有限公司 将硬件结束循环信息编码到指令上
JP2013101638A (ja) * 2006-05-10 2013-05-23 Qualcomm Inc ハードウェアエンドループ情報の命令へのコード化

Also Published As

Publication number Publication date
FR2737027B1 (fr) 1997-09-19

Similar Documents

Publication Publication Date Title
EP1161725B1 (fr) Procede de surveillance du deroulement d&#39;un programme
FR2489555A1 (fr) Systeme de traitement de donnees a commande par pipeline
FR2770659A1 (fr) Processeur de traitement perfectionne
EP3182292B1 (fr) Procédé de prédiction d&#39;une donnée a précharger dans une mémoire cache
FR2672709A1 (fr) Machine d&#39;etat d&#39;ordre.
EP1830264A1 (fr) Procédé et dispositif de sauvegarde et de restauration d&#39;une manière interruptible d&#39;un ensemble de registres d&#39;un microprocesseur
EP0485921B1 (fr) Dispositif prévu pour le traitement de l&#39;algorithme de Viterbi comprenant un processeur et un opérateur spécialisé
WO1998057255A1 (fr) Procede de modification de sequences de code et dispositif associe
FR2737027A1 (fr) Dispositif electronique de localisation et de controle de boucles dans un programme d&#39;un processeur, notamment un processeur de traitement d&#39;images, et procede correspondant
FR2910144A1 (fr) Procede et dispositif de detection errones au cours de l&#39;execution d&#39;un programme.
FR2656442A1 (fr) Processeur a plusieurs unites microprogrammees avec mecanisme d&#39;execution anticipee des instructions.
WO2003015282A2 (fr) Ensemble de circuits electroniques comportant des moyens de decontamination de parties contaminees par des erreurs
FR2794259A1 (fr) Dispositif materiel destine a l&#39;execution d&#39;instructions programmables basees sur des micro-instructions
FR2808360A1 (fr) Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit
EP0344052B1 (fr) Mémoire modulaire
EP3215933A1 (fr) Procede et dispositif d&#39;architecture configurable a gros grains pour executer en integralite un code applicatif
EP0823088B1 (fr) Procede et equipement de test automatique en parallele de composants electroniques
FR2867325A1 (fr) Dispositif de protection contre l&#39;injection d&#39;erreur dans un bloc logique asynchrone d&#39;un module logique elementaire
EP3403218A1 (fr) Dispositif de selection et description de points d&#39;interets dans une sequence d&#39;images, par exemple pour l&#39;appariement de points d&#39;interets
FR3122747A1 (fr) Procede d’execution d’une fonction, securise par desynchronisation temporelle
FR2821449A1 (fr) Procede de gestion d&#39;instructions au sein d&#39;un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant
EP0729091B1 (fr) Procédé et dispositif de commande simultanée des états de contrôle des unités d&#39;exécution d&#39;un processeur programmable
EP2955661B1 (fr) Protection de données stockées dans une mémoire volatile
EP0729092B1 (fr) Procédé et dispositif de commande simultanée des états de contrôle des unités d&#39;exécution d&#39;un processeur programmable à architecture du type pipeline
FR2867326A1 (fr) Dispositif de protection contre l&#39;injection d&#39;erreur dans une bascule synchrone d&#39;un module logique elementaire

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20130329