Brevet FR2569287A1 — publié le 19860221

"Dispositif de commande de boucles pour appareil de traitement numérique". La présente invention concerne un appareil de traitement numérique et en particulier un dispositif pour com- mander le nombre des itérations de boucles de programme imbriquées dans un appareil de traitement numérique. Lors de l'utilisation d'appareil de traitement numérique de données, il est souvent nécessaire ou désirable de réaliser des ensembles d'opérations de manière itérative dans des boucles imbriquées. Ceci est le cas en particulier dans le traitement à organisation cellulaire. Par exemple dans le filtra- ge numérique d'un signal représenté par un ensemble d'échantillons d'une forme d'onde de signal, on réalise de manière classique une opération de produit de composition. Une expression générale représentant le produit de composition du signal x par la carac- téristique de filtres h est la suivante: p y (i) =Z h (i). x (i+n) n =o dans laquelle P est le nombre de coefficient de la caractéristi- que du filtre et i est le nombre de points de données,le nombre i étant positif et inférieur au nombre P. Dans cet exemple chacun des points de données re- présentant la forme d'onde x est tout d'abord multiplié par le coefficient correspondant h et la somme de ces produits est réa- lisée. Ensuite les coefficient sont décalés d'une position et ce processus est répété. Cette dernière boucle intérieure qui comporte la multiplication et l'addition pour chacun des coeffi- cient du filtre est répétée jusqu'à ce que l'ensemble des données représentant la forme d'onde du signal aie été soumis à un produit de composition avec les caractéristiques du filtre ce qui termine un passage dans la boucle extérieure. Un des objectifs ordinairement recherchésdans le traitement à organisation cellulaire est de réaliser un calcul à vitesse élevée. Ceci est spécialement important lorsque l'on 2 69287 désire travailler en temps réel. Dans le cas o l'algorithme de calcul nécessite l'exécution répétitive d'un ensemble d'instructions dans une boucle, il faut prévoir certains moyens pour détermi- ner le nombre de fois qu'il faut répéter la boucle et pour compter le nombre de passages dans cette boucle. Lorsque cette boucle est imbriquée dans une autre boucle, on doit prévoir des moyens pour réinitialiser le compteur de la boucle inté- rieure pour chaque passage de la boucle extérieure. Dans des programmes conventionnels à boucles imbriquées, comme cela est utilisé avec des microprocesseurs connus qui sont parti- culièrement adaptés au traitement de signaux, par exemple le microprocesseur TSM 320 fabriqué par la Société TEXAS INSTRU- MENTS CORPORATION et le microprocesseur F9945 fabriqué par la Société FAIRCHILD, on doit utiliser un registre ou un empla- cement de mémoire en tant que compteur pour chacune des bou- cles concernées, Pour initialiser le compteur, une étape de programme est nécessaire pour appeler de la mémoire la valeur représentant le nombre de passage effectué dans la boucle et la placer dans le registre. Pour déterminer le nombre cou- rant de passagesréalisésdans la boucle, la valeur contenue dans le registre doit être incrémentée ou diminuée à chaque passage et pour déterminer si le nombre total de passage a été réalisé, il faut comparer la valeur ontenue dans le re- gistre avec une certaine référence ou il faut faire le test à chaque passage, ce qui dans les deux cas nécessite une étape de programme séparée. Ces étapes de programme nécessitent du temps supplémentaire. Du fait que ce temps supplémentaire di- minue la vitesse de traitement il est désirable d'éliminer de telles étapes de programmes. La présente invention réduit le nombre nécessaire d'étapes de programme et le temps nécessaire pour traiter des données en fournissant des registres de mémoire et de comptage spécialisés et une logique de commande associée qui éliminent la nécessité d'étapes répétitives d'appel en mémoire, de mise en mémoire, d'itération, et de comparaison. On utilise deux registres pour chaque boucle, l'un des registres étant utilisé pour mémoriser une valeur initiale représentant le nombre de passagesdans la boucle et un autre registre étant utilisé pour mémoriser le nombre courant de passage dans la boucle. Après chaque passage dans la boucle, la valeur contenue dans le re- gistre de comptage est répétée et comparée à une valeur de référence. Lorsque la comparaison montre une relation prédé- terminée indiquant que la boucle a été exécutée le nombre ap- proprié de fois, on engendre un signal d'achèvement et la va- leur contenue dans le registre de mémoire est chargée de manière automatique dans le registre de comptage associé en vue de la réinitialisation. Lorsque le nombre désiré de passages n'a pas été réalisé, la valeur répétée est simplement rechargée dans le registre de comptage ce qui réalise une mise à jour du re- gistre de comptage. On prévoit de répéter la valeur contenue dans le registre de comptage seulement sur commande. Par conséquent c'est un objet principal de la présente invention de fournir un nouveau dispositif pour com- mander des séquences de boucles dans un appareil de traitement numérique. C'est encore un objet de la présente invention de fournir un dispositif de commande de boucles qui réduit le temps nécessaire pour déterminer si une boucle a été exécutée le nombre nécessaire de fois. C'est encore un autre objet de la présente invention de fournir un dispositif de commande de boucles dans lequel un compteur d'exécution de boucles peut être initialisé sans appeler ni mémoriser des valeurs à partir d'une mémoire. D'autres caractéristiques et avantages de l'in- vention ressortiront de la description qui suit et des dessins annexés sur lesquels: - la Fig. 1 représente un exemple d'ensemble de points de données et de coefficients qui doivent être employés dans un calcul de traitement à organisation cellulaire, - la Fig. 2 représente un exemple de structure de processeur grâce auquel le dispositif de commande de boucles 4. selon la présente invention peut être avantageusement utilisé, - la Fig. 3 représente un schéma synoptique d'un mode de réalisation du dispositif de commande de boucles conforme à la présente invention. Sur la figure 1 les points de données D1-D l2re- présentent une forme d'onde de signal échantillonnée qui doit subir une opération par la fonction représentée par les coeffi- cients C1-C6. Ces ensembles de points de données et de coeffi- cients représentent des "rangées" devant être traitées. Dans une application classique, la rangée de données doit subir un produit de composition avec la rangée de coefficients. Par con- séquent D1 doit être multiplié par C1, D2 par C2 et ainsi de suite jusqu'à ce que D6 soit multiplié par C6, opération au cours de laquelle les produits respectifs seront totalisés. Le proces- sus de multiplication des points de données par les coefficients et de totalisation des produits comprend ordinairement une série d'étapes qui doivent être réalisées de manière répétitive, c'est- à-dire une boucle. Après chaque passage dans cette première bou- cle, le pointeur du coefficient est réinitialisé et le pointeur des données est répété avec une valeur prédéterminée, généralement 1, si bien que la rangée de coefficient est en fait décalée de un ou de plusieurs points de données. La boucle inférieure est ensuite exécutée de nouveau, par exemple en multipliant D2 par C1, D3 par C2 et ainsi de suite en faisant l'addition des produits. Ce processus est répété jusqu'à ce que l'on ait multiplié un nom- bre prédéterminé de points de données par tous les coefficients. Dans ce simple exemple, la boucle intérieure (multiplication et addition) est répétée plusieurs fois pour chaque passage dans la boucle extérieure boucle de manière répétitive. Si on se réfère à la figure 2, un appareil de traitement à organisation cellulaire avec lequel on peut utili- invention, contient un mémoire de données 10 destinée à mémoriser des points de données et ses coefficients, une mémoire d'instruc- tions 12 destinée h mémoriser des instructions de programme en vue de réaliser un processus de calcul désiré, un registre d'instruction 14 destiné à recevoir des instructions provenant de la mémoire d'instruction et à les diriger à d'autres unités logiques du processeur pour leur traitement, une unité d'a- dressage 16 destinée à adresser la mémoire d'adresse pour ap- peler les données à partir de cette mémoire, une unité arithmé- tique 18 pour réaliser des opérations sur les données et une unité d'appel d'instruction 20 pour appeler des instructions à partir de la mémoire d'instruction 12 en vue du traitement par les autres unités logiques du processeur. La conception et la structure des circuits destinés à réaliser les fonctions générales mentionnées ci-dessus est communément utilisée dans l'état de la technique et, à l'exception de certaines nécessités concernant la logique de commande comprise dans l'unité d'appel d'instruction citéeplus bas, il n'est pas nécessaire de prévoir une structure particulière pour la mise en oeuvre de la présen- te invention. Une unité de commande de boucles 22 qui constitue un mode de réalisation du dispositif de commande de boucles con- forme à la présente invention est étroitement associé avec l'u- nité d'appel d'instruction 20 et un détecteur d'état 24 est employé pour communiquer à l'unité d'appel d'instruction 20 l'état des différentes logiques des unités contenues dans le processeur, comme indiqué par des lignes d'état 25,27 et 29. Il y a lieu de noter que si cette structure est particulièrement adaptée pour l'utilisation du dispositif de commande de boucles selon la présente invention, on peut également employer d'autres sturctures de processeur et l'exemple d'utilisation de cette structure ne constitue pas une limite à la portée de la présente invention. Si on se réfère maintenant à la figure 3, l'unité de commande de boucles 22 comprend un ou plusieurs registres de mémoire 24a à 24n, chacun des ces registres ayant un port 256928S 6. d'entrée et un port de sortie, des registres de comptage asso- ciés 26a à 26n, chacun d'entre eux comportant un port d'entrée et un port de sortie et des multiplexeurs associés 28a à 28n ayant chacun trois ports d'entrée et un port de sortie. Ces multiplexeurs relient chacun de manière sélective une de leur entrée à leur sortie donc à l'entrée du registre de comptage qui leur est associé. En fonction de la complexité désirée pour le processeur, on peut prévoir un seul ou plusieurs ensembles de registresde mémoire, de registresde comptage et de multiple- xeuiscomme cela est représenté. Chaque registre de mémoire 24a à 24n reçoit en tant qu'entrée provenant d'un bus de registre 30 une valeur de départ représentant le nombre de passagesdans une boucle à laquelle le registre doit être associé. Initialement, les registres de comptage 26a à 26n reçoivent également la valeur de départ qui est reçue par le registre de mémoire associé par l'action des multiplexeurs 28a à 28n. Cette étape et d'autres étapes qui se- ront décrites plus bas sont commandées par une logique de con- trôle 35 qui, dans le cas de la structure représentée à la fi- gure 2,est de préférence au moins partiellement comprise dans l'unité d'appel d'instruction 20 et qui comprend la fonction du détecteur d'état 24. On prévoit un dispositif d'itération, dans le cas présent un dispositif de décrémentation 32,en Vuede mettre à jour les valeurs mémorisées dans les registres de comptage 26a à 26n. Sur une commande provenant de la logique de commande 35 et sous son contrôle, on transfère la valeur se trouvant dans un registre de comptage sélectionné au dispositif de décrémen- tation 32 dans lequel cette valeur est décrémentée et la sortie 33 du dispositif de décrémentation qui représente le comptage mis à jour est transférée à l'un des ports d'entrée des multi- plexeurs 28a à 28n pour la mise en mémoire de la valeur mise à jour dans le registre de comptage à partir duquel on avait obtenu la valeur originale, le comptage mis à jour représentant le nombre courant de passagesdans la boucle à laquelle le regis- tre de comptage est associé. La valeur contenue dans le registre 7, de comptage pourrait également être placée dans le bus de registre 30 en vue de l'utilisation par d'autres unités lo- giques contenues dans le processus. La sortie 33 du disposi- tif de décrémentation 32 est également transférée à un circuit destiné à comparer la valeur mise à jour à une référence,dans le cas présent un circuit détecteur de zéro 34. Dans le mode de réalisation préférée qui est représenté sur la figure 3, on considère que la valeur ini- tiale représente le nombre de passages à faire dans une boucle (moins 1), que la valeur initiale dans le registre de comptage sera décrémentée après chaque passage et que l'achèvement des itérations d'une boucle correspond au point auquel la valeur initiale a été décrémentée à la valeur zéro. Par conséquent, on utilise un circuit détecteur de zéro. Ce- pendant il y a lieu de noter que la valeur initiale peut être reliée à toute valeur finale autre que zéro, que l'on peut l'incrémenter au lieu de la décrémenter, que l'on peut faire des itérations avec une valeur différente de 1 et que le circuit détecteur de zéro pourrait être dans un cas plus gé- néral un comparateur qui compare la valeur mise à jour à une autre valeur prédéterminée plutôt que zéro, Lorsque la valeur finale d'un registre de comptage (qui représente le dernier passage à travers la boucle pour laquelle le registre est utilisé) est détectée, le circuit détecteur de zéro 34 délivre un signal d'achèvement à sa sor- tie 37 et l'envoie à la logique de contrôle 35, Dans l'exem- ple de structure représenté dans la figure 1, ce signal tra- verse le détecteur d'état 24; cependant, il y a lieu de noter qu'on peut utiliser d'autres arrangements sans sortir des principes de la présente invention, il y a également lieu de noter qu'aucun circuit logique de commande particulier n'est nécessaire pour l'emploi de l'unité de commande de boucles selon la présente invention mais que le circuit qui est utilisé doit fournir des signaux de commande pour forcer 8.2569287 chaque registre de mémoire 24a à 24n à accepter la valeur de départ exacte à l'instant exact, pour sélectionner le multi- plexeur approprié 28a à 28n et l'entrée appropriée au multi- plexeur à l'instant exact pour forcer chaque registre de comptage 26a-26n à accepter une sortie provenant de son mul- tiplexeur correspondant à l'instant exact,pour forcer le dis- positif d'itération (dispositif de décrémentation 32) à ré- péter le comptage par une valeur sélectionnée et pour forcer le circuit détecteur (circuit détecteur zéro 34) à tester la valeur résultante en fonction des instructions du programme et à recevoir la sortie 37 de signal d'achèvement provenant du circuit détecteur. La conception et la structure d'un tel circuit est communément connue dans la technique. A la fin d'une boucle, la logique de contr8ôle 35 doit forcer le multiplexeur à charger la valeur contenue dans son registre de mémoire associé dans son registre de comp- tage associé, ce qui réinitialise de manière automatique ce compteur particulier et élimine la nécessité de rappeler la valeur initiale à partir de la mémoire et de la mémoriser dans le registre de comptage. Pour certains fonctionnements, seule une paire de registres de mémoire et de comptage sera nécessaire. Cepen- dant, lorsque l'on doit répéter plus d'une boucle imbriquée, il est nécessaire de prévoir deux ou plusieurs paires de re- gistres de mémoire et de comptage. La description ci-dessus d'un exemple de réali- sation n'a été fournie qu'à titre illustratif et nullement limitatif et il est évident-que l'on peut y apporter des mo- difications ou variantes sans pour autant sortir du cadre de la présente invention. 9. REVENDICATIONS ) Dispositif de commande de boucles (22) des- tiné à l'utilisation dans un système de traitement numérique comportant des moyens (10, 12,14,16,18,20,24) destinés à réaliser des opérations sur des données, caractérisé en ce qu'il com- prend: a) un organe de mémoire (24a-24n) destiné à recevoir une valeur de départ représentant le nombre relatif de répétitionsà faire sur un ensemble d'opérations. b) un organe de comptage (26a-26n) associé au- dit organe de mémoire (24a,24n) destiné à recevoir simultané- ment avec ledit organe de mémoire une valeur de départ et à mémoriser une nouvelle valeur à chaque répétition successive d'un ensemble d'opératiors. c) un organe d'itération (32) associé audit organe de comptage (26a,26n) destiné à recevoir en provenance dudit organe de comptage une valeur qui y est mémorisé à itérer ladite valeur et à mémoriser la nouvelle valeur résultante de nouveau dans ledit organe de comptage (26a-26n) et d) un organe de détection 34 associé audit organe d'itération destiné à comparer ladite nouvelle valeur à une valeur finale et à délivrer un signal d'achèvement lorsque la- dite nouvelle valeur et ladite valeur finale ont une relation relative prédéterminée. 2 ) Dispositif de commande de boucles selon la revendication 1, caractérisé en ce que ledit organe de mémoire comprend une pluralité de registrede mémoire (24a-24n) destines à mémoriser les valeurs de départ respectives, en ce que ledit organe de comptage comprend une pluralité de registres de comp- tage (26a-26n) associés audit registres de mémoire respectifs, et en ce que ledit dispositif de commande db boucles comprend en outre une logique de commande (35) destinée à transférer une valeur provenant d'un registre de comptage sélectionné (26a-26n) audit organe d'itération (32) et à transférer ladite nouvelle valeur audit registre sélectionné pour sa mémorisation dans 10. a ce registre. 3 ) Dispositif de commande de boucles selon la revendication 2, caractérisé en ce que ledit organe d'itéra- tion (32) comprend des moyens agissant en réponse à ladite logique de commande (35) pour incrémenter ou décrémenter de manière sélective d'une valeur sélectionnée une valeur reçue provenant d'un registre de comptage (26a-26n). 4 ) Dispositif de commande de boucles selon la revendication 2, caractérisé en ce que ladite logique de com- mande comporte des moyens agissant en réponse audit signal d'achèvement dudit organe de détection (34) en vue de forcer le chargement d'une valeur de départ contenue dans un regis- tre de mémoire (24a-24n) dans son registre de comptage as- socié (26a-26n) après la délivrance dudit signal d'achèvement. 5 ) Dispositif de commande de boucles selon la revendication 2, caractérisé en ce qu'il comprend en outre un bus d'entrée (30) relié à chacun desdits registres de mé- moire (24a-24n), lesdits registres de mémoire (24a-24n) et ledit organe d'itération (32) ayant chacun des ports de sortie respectifs et en ce que ledit organe de comptage (26a-26n) comprend en outre une pluralité de multiplexeurs (28a-28n) associés avec les registres de mémoire (24a-24n) et les registres de comptage (26a-26n) respectifs, lesdits multiple- xeurs (28a-28n) ayant chacun en tant qu'entréesledit bus d'entrée (30), la sortie dudit organe d'itération (32) et la sortie de leur registre de mémoire respectif (24a-24n). 6 ) Dispositif de commande de boucles selon la revendication 5, caractérisé en ce que ladite logique de com- mande (35) comprend de moyens pour forcer un multiplexeur sélectionné (28a,28n) à relier de manière sélective une de ses entrées à un port d'entrée de son registre de comptage respectif (26a-26n). 7 ) Dispositif de commande de boucles selon la revendication 1, caractérisé en ce que ledit Qrgane d'itéra- tion (32) comprend des moyens pour décrémenter une valeur 11. reçue provenant dudit organe de comptage (26a-26n) d'une valeur sélectionnée pour produire ladite valeur résultante. 8 ) Dispositif de commande de boucle selon la revendication 1, caractérisé en ce que ledit organe détecteur (34) comprend des moyens pour délivrer ledit signal d'achève- ment lorsque la nouvelle veleur est égale à zéro. 9 0) Dispositif de commande de boucles selon la revendication 1, caractérisé en ce que ledit organe de comptage (36a-36n) comprend un organe multiplexeur (28a-28n) en vue de recevoir de manière sélective une des valeurs de départ, la valeur mémorisée de manière courante dans ledit organe de mé- moire (24a-24n) ou ladite nouvelle valeur résultante.