FR 2802659 A1 20010622 FR 9916176 A 19991221 Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur. 'invention concerne un procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur. Plus particulièrement l'invention se rapporte à un procédé qui permet d'utiliser un opérateur initialement prévu pour effectuer une opération avec des nombres codés sur n bits pour effectuer en parallèle plusieurs opérations avec des nombres codés sur un nombre de bits inférieur à n. Le procédé selon l'invention est particulièrement avantageux dans le cas où des opérateurs dits à arithmétique variable sont mis en oeuvre. De tels opérateurs peuvent effectuer des opérations à partir d'opérandes dont le nombre de bits peut varier. Par exemple, un additionneur pouvant effectuer des additions entre des opérandes codées sur 16 bits ou entre des opérandes codées sur 24 bits est dit à double arithmétique : il est à la fois compatible avec une arithmétique 16 bits et avec une arithmétique 24 bits. Le domaine d'application de l'invention celui du traitement numérique du signal. Des processeurs spécifiques appelés DSP (pour Digital Signal Processing dans la littérature anglaise) sont spécialement conçus pour le traitement numérique du signal. Les sont plus particulièrement utilisés pour des fonctions particulières propres au traitement des signaux numériques, telles que le filtrage ou la comparaison de signaux. Dans certains systèmes de traitements des données, un DSP peut être associé avec un processeur- hôte plus puissant pour effectuer des opérations complexes de traitement du signal. Certaines applications des DSP nécessitent attention, une précision toute particulière notamment pour réalisation d'opérations arithmétiques. exemple la restitution d'un son dit de haute fidélité peut necessiter des calculs faisant intervenir nombres codés sur un nombre de bits plus important pour les calculs nécessaires pour de simples transmissions vocales. L'augmentation du nombre de bits pour coder les nombres intervenant dans les calculs assure un degré de précision supérieur. A l'inverse, il existe d'autres applications faisant intervenir des opérations qui nécessitent calculs faisant intervenir des nombres codés sur un nombre précis de bits ; pour ce type d'opération, la possibilité de travailler avec des nombres assurant une meilleure précision grâce à un nombre de bits plus important n'est pas retenue. Parfois, cette possibilité est même exclue pour ces opérations. Par exemple, il existe des standards de communication dans des systèmes de télécommunication cellulaire, tel que le standard GSM en Europe, qui imposent des nombres codés uniquement sur 16 bits et qui n'admettent pas nombres codés sur plus de 16 bits même si cela permet d'atteindre un degré de précision supérieur. contre de nombreuses et récentes applications multimedias dédiées au traitement numérique du signal exigent désormais un haut degré de précision, notamment dans la restitution des signaux audio, tout en ayant la capacité de se conformer au standard GSM pour pouvoir recevoir des télécommunications qui obéissent à ce standard. problème se pose donc : des opérateurs puissants, c'est-à-dire travaillant avec des nombres codés un grand nombre de bits, et des opérateurs moins puissants, qui doivent travailler avec des nombres codes sur un nombre de bits imposé par certaines normes, doivent coexister. Faire un choix entre ces deux types d'opérateurs, et donc entre deux arithmétiques différentes, n'est aujourd'hui plus concevable. solution serait de faire coexister au sein des DSP deux groupes d'opérateurs distincts, chacun des deux groupes fonctionnant avec une arithmétique différente. Mais cette solution est pénalisante en terme de coût et d'espace requis. Il existe donc désormais des opérateurs susceptibles d'effectuer des opérations selon des arithmétiques différentes, l'arithmétique en question pouvant aller de 1 bit à n bits, n étant le nombre de bits maximal d'une opérande. Dans la plupart de ces situations, n correspond à la taille des registres d'entrée de l'opérateur. En conséquence, les opérateurs pouvant effectuer des opérations aussi bien sur un grand nombre de bits que sur un nombre de bits plus restreint ne fonctionnent pas en permanence au maximum de leur capacité. Ainsi, par exemple, un additionneur 48 bits effectuant une addition entre deux nombres de 24 bits n'est pas utilisé de façon optimale. Par ailleurs, pour effectuer au sein d'un même système des opérations, par exemple sur 48 bits ou sur 24 bits, on peut utiliser deux opérateurs 24 bits distincts qui peuvent alors soit chacun effectuer une opération sur 24 bits, les deux opérations sur 24 bits pouvant alors être simultanément exécutées, soit effectuer une opération sur 48 bits en chaînant les deux opérateurs 24 bits, le chaînage des deux opérateurs devant permettre de récupérer une éventuelle retenue sortante. Les figures la et lb donnent un exemple de ces possibilités. A la figure la, un premier additionneur 24 bits 1 et un deuxième additionneur 24 bits 2 sont utilisés pour additionner respectivement un premier nombre de 24 bits A avec un deuxième nombre de 24 bits et un troisième nombre de 24 bits C avec un quatrième nombre de 24 bits D. Le résultat de la première addition, respectivement de la deuxième addition, se décompose en un nombre de 24 bits (A+B), respectivement (C+D), et une éventuelle retenue sortante rs(A+B) respectivement rs(C+D). On a ainsi réalisé deux opérations 24 bits en parallèle. A la figure lb, le premier additionneur 24 bits 1 et le deuxième additionneur 24 bits 2 sont chaînés afin 'exécuter conjointement une addition sur 48 bits. Les 24 bits de poids fort d'un premier nombre de 48 bits X et d'un deuxième nombre de 48 bits Y sont additionnés l'aide du premier additionneur 24 bits 1. Les 24 bits de poids faible du premier nombre X et du deuxième nombre Y sont additionnés au moyen du deuxième additionneur 2. La notation X (k:1) signifie que l'on considère seulement les bits k à 1 du nombre binaire X (k est dans ce cas le bit de poids le plus fort et 1 est le bit de poids le moins fort). Une connexion 3 entre les deux additionneurs 24 bits 1 et 2 assurent la propagation d'une éventuelle retenue sortante provenant de l'addition des bits de poids faible des deux nombres X et Y. Un premier résultat intermédiaire 4 sur 24 bits est obtenu en sortie du premier additionneur 1. Un deuxième résultat intermédiaire 5 sur 24 bits est obtenu en sortie du deuxième additionneur 2. Les résultats intermédiaires 4 et 5 sont concaténés pour obtenir un résultat final 6 sur 48 bits. Une éventuelle retenue sortante rs(X+Y) peut être obtenue en sortie du premier additionneur 24 bits 1. Si les procédés qui viennent d'être décrits sont susceptibles d'être mis en oeuvre pour effectuer des opérations 24 bits ou 48 bits, ils posent cependant un problème en terme de temps d'exécution de l'opération. En effet, le temps moyen que met aujourd' un opérateur pour exécuter une opération est approximativement proportionnelle au logarithme base 2 de n, noté 1092 (n), où n est le nombre de bits des opérandes. Ainsi, dans l'exemple qui vient 'être présenté, le temps de propagation nécessaire pour réaliser l'opération de la figure lb est, un coefficient de proportionnalité k près, égal à 2 1092 (24), soit logz (242). Ce temps d'exécution est beaucoup plus important que le temps d'exécution d'un additionneur 48 bits qui aurait été égal à logz (48), au coefficient k près. Le procédé selon l'invention permet de pallier les différents défauts et inconvénients qui viennent d'être décrits. Le procédé selon l'invention met en oeuvre des moyens pour effectuer simultanément plusieurs opérations avec un unique opérateur sans être confronté à des problèmes de temps d'exécution du type de ceux rencontrés lors du chaînage de deux opérateurs, et avec une utilisation optimale des capacités de l'unique opérateur. En outre, dans le procédé selon l'invention, les différents registres d'entrée de l'unique opérateur subissent une partition en un nombre de zones égales au nombre d'opérations à effectuer simultanément. Tous les registres d'entrée subissent des partitions similaires. Deux zones consécutives d'un même registre sont séparées par un bit de séparation dont la fonction est d'éviter une propagation éventuelle de retenue entre différentes zones d'un registre de résultat. Le registre de résultat subit également une partition qui est similaire à celle des registres d'entrée contenant les différentes opérandes. Chaque nombre contenu dans les différentes zones du registre de résultat correspond à un résultat d'une des opérations effectuées simultanément. Les bits de séparation assurent ainsi l'indépendance de données entre les différentes opérandes. L'invention concerne donc un procédé pour effectuer simultanément plusieurs opérations avec unique opérateur admettant des opérandes mémorisées dans différents registres d'entrée caractérisé en qu'il comporte les étapes consistant à - effectuer des partitions semblables de chaque registre d'entrée pour obtenir différentes zones chacune des zones de chaque registre d'entrée correspondant à une donnée d'entrée d'une unique opération ; - insérer entre deux zones consécutives un bit séparateur pour assurer l'indépendance du résultat de chacune des opérations effectuées simultanément. De préférence, une partition semblable aux partitions des registres d'entrée est effectuée dans un registre de résultat destiné à recevoir les résultats des différentes opérations. Par ailleurs, les différents résultats des différentes opérations peuvent être extraits du registre de résultat pour être mémorisés dans des registres de sortie distincts. Les bits de séparation qui sont choisis pour assurer l'indépendance des résultats de chacune des opérations effectuées simultanément en empêchant la propagation d'une éventuelle retenue entre les différentes zones du registre résultat 7 spécifiques à chaque opérateur. Cependant, pouf ui, opérateur donné, et dans le but d'éviter la propagation de retenue, tous bits de séparation adoptent la même valeur. Les différents aspects et avantages de présente invention seront mieux compris à la lecture de la suite la description en référence aux figures qui ne sont données qu'à titre indicatif et nullement limitatif et qui sont à présent introduites - les figures la et lb, déjà décrites, illustrent l'utilisation de plusieurs opérateurs pour effectuer des opérations sur un nombre bits variable - figure 2 montre une structure possible d'une partition d'un registre d'entrée contenant une opérande destinée à être utilisée par un opérateur selon le procédé de l'invention ; et - figures 3a et 3b illustrent un exemple de mise en oeuvre du procédé selon l'invention ' l'aide d'un additionneur. A la figure 2, un registre d'entrée 0 d'un opérateur quelconque est représenté. A titre d'exemple, le registre 20 a une taille de 49 bits numérotés 0 à 48. Il cependant évident que des registres de toutes tailles peuvent être considérés pour la mise en oeuvre procédé selon l'invention. Une partition du registre 20 en trois zones distinctes est représentée. Une première zone 21, qui correspond par exemple aux 24 premiers bits du registre d'entrée 20, est séparée d'une deuxième zone 22, qui correspond aux 24 bits de poids fort du registre d'entrée 20, par une troisième zone 23, dite zone de séparation, dont la taille est de 1 bit. Une telle partition d'un registre d'entrée peut permettre à un opérateur d'effectuer deux opérations une première opération entre une opérande contenue dans la première zone 21 et d'autres opérandes de même taille contenues dans des zones semblables d'autres registres d'entrée non représentés, et, simultanément, une deuxième opération entre une opérande contenue dans la troisième zone 22 du registre d'entrée 20 et d'autres opérandes de même taille contenues dans des zones semblables d'autres registres d'entrée. La zone de séparation 23 est destinée ' contenir un unique bit de séparation entre les deux opérandes des zones 21 et 22. I1 est évident que le procédé selon l'invention peut être mis en oeuvre avec des registres de taille différente de la taille du registre 20 et avec des partitions différentes, ou encore avec des registres de même taille que le registre 20 mais avec des partitions différentes. Par ailleurs, les différentes zones contenant les différentes opérandes ne sont pas nécessairement de la même taille pour un même registre d'entrée. outre, une partition d'un registre d'entrée ne limite pas ce dernier nécessairement à trois zones. Plus deux opérandes peuvent être contenues dans un même registre d'entrée pour la mise en oeuvre du procède selon l'invention. A chaque fois qu'une opérande est ajoutée, un bit de séparation doit également être ajouté. Ceci implique que l'opérateur exécutant des opérations à l'aide des données contenues dans ces registres d'entrée doit avoir la taille adéquate. Ainsi, pour effectuer simultanément deux opérations sur 24 bits selon le procédé de l'invention, c'est un opérateur 49 bits et non 48 bits qu'il faut utiliser. D'une façon plus générale, pour effectuer x opérations simultanées avec le procédé selon l'invention, c'est un opérateur taille (n+x-1) bits qu'il faut utiliser, n étant le nombre de bits total des opérandes intervenant dans les opérations. Comme il l'a été précédemment mentionné, le temps calcul est proportionnel au logarithme en base 2 du nombre de bits d'entrée de l'opérateur. La différence temps d'exécution entre une opération sur (n+x-1) bits et une opération sur n bits est par conséquent negligeable, x ayant le plus souvent une valeur très inférieure à n. La figure 3a représente une mise en oeuvre du procédé selon l'invention dans le cas de deux additions en parallèle entre nombres de taille n/2 bits. Un additionneur n+1 bit 30 fonctionne partir de données contenues dans un premier registre d'entrée 31 et un deuxième registre d'entrée 32 qui contiennent les différentes opérandes à additionner. Les notations définies lors de la description de la figure lb sont de nouveau utilisées ici. Ainsi, pour réaliser simultanément deux additions entre d'une part un premier nombre A et un deuxième nombre B de n/2 bits, et d'autre part un troisième nombre C et un quatrième nombre D de n/2 bits, la répartition des différentes opérandes dans les différents registres d'entrée est la suivante : dans le premier registre 31, on trouve dans une première zone 33 le premier nombre A, dans une deuxième zone 34, le troisième nombre C et dans une troisième zone 35 de taille 1 bit, on trouve un bit de séparation de valeur 0. D'une manière générale, les bits de séparation intervenant dans les opérations de type addition, addition avec saturation... ont pour valeur 0. Les bits de séparation intervenant dans les opérations de types soustraction, soustraction avec saturation... ont pour valeur 1. Dans le cas de la réalisation simultanée de plusieurs opérations, la valeur des bits de séparation est choisie pour éviter une propagation éventuelle de retenue entre des zoneE 10 tinctes du registre de résultat, ces zones di.-_____-es correspondant à des résultats indépendants d'opérations différentes. Pour un opérateur donné, les différents bits de séparation insérés entre deux zones consécutives définies par la partition des registres d'entrées sont identiques. La structure du registre 32 est semblable à celle du registre 31, les nombres A et C étant respectivement remplacés par les nombres B et D. Le résultat est obtenu dans un registre de résultats 36 de taille n+1 bit et dont la partition est la suivante : une première zone 37 de taille n/2 bits contient le résultat de l'addition A+B ; une deuxième zone 38 de taille n/2 bits contient le résultat de l'addition C+D ; une troisième zone 39 de taille 1 bit a une valeur significative de la présence d'une retenue sortante dans l'addition entre C et D. Un micro-contrôleur non représenté qui gère l'ensemble des opérations effectuées peut alors transférer les résultats des deux opérations distinctes dans deux registres distincts. La retenue sortante rs(A+B) de l'addition A+B peut être prise en compte dans un registre spécifique telle qu'une unité de saturation 40. La figure 3b représente le cas ou l'additionneur n+1 bits 30 de la figure 3a doit être utilisé pour effectuer une unique addition entre deux nombres X et Y de taille n bits, tout en conservant la même partition qu'à la figure 3a du premier registre d'entrée 31 et du deuxième registre d'entrée 32. Cet exemple montre que les moyens mis en oeuvre par le procédé selon l'invention, à savoir une partition des registres d'entrée avec ajout de zones de séparation, ne sont pas un obstacle pour continuer à effectuer une opération unique à l'aide de l'opérateur concerné. Chacun des deux registres d'entrée est divisé en deux zones de taille n/2 bits séparées par une zone de séparation de taille 1 bit dont les références sont les mêmes qu'à la figure 3a. En utilisant les notations définies à la figure lb, la répartition des différentes opérandes dans les différents registres d'entrée est la suivante : on a Y (n-l:n/2) dans la zone 33 du premier registre d'entrée 31, Y (n/2-1:0) dans la zone 34 du premier registre 31, X (n-l:n/2) dans la zone 33 du deuxième registre d'entrée 32 et X (n/2-1:0) dans la zone du deuxième registre d'entrée 32 - les bits de séparation ont pour valeur 0 pour le premier registre d'entree 31 et 1 pour le deuxième registre d'entrée 32. Il faut noter que le bit de separation du deuxieme registre d'entrée est 1 car dans ce cas de figure, on souhaite qu'une éventuelle retenue résultant de 'addition des opérandes contenues dans les différentes zones 34 se propage. Dans cas d'une soustraction, la valeur du bit de séparation qui aurait assure la propagation d'une éventuelle retenue sortante aurait été 0. En effet, comme on effectue ici une unique opération, les données des différentes opérandes ne sont plus indépendantes les unes des autres. Le résultat est obtenu dans le registre de résultat 36. La zone de séparation 39 contient un bit dont valeur dépend de la présence une retenue sortante lors de l'addition des bits de poids faible des nombres X et Y. Ce bit de séparation ne fait cependant pas partie du résultat définiti . Ce dernier est memorisé dans un registre 41 dit de résultat définitif qui contient, codé sur n bits, résultat de la concaténation des zones 37 et 38. Par ailleurs, comme à la figure 3a, une unité de saturation 40 peut contenir une retenue sortante rs(X+Y) de l'addition X+Y. REVENDICATIONS 1. Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur (30) admettant des opérandes mémorisées dans différents registres d'entrée (31;32) caractérisé en ce qu'il comporte les étapes consistant à - effectuer des partitions semblables de chaque registre d'entrée (3l;32) pour obtenir différentes zones (33;34), chacune des zones de chaque registre d'entree correspondant à une donnée d'entrée d'une unique opération ; insérer entre deux zones consécutives un bit séparateur (35) pour assurer l'indépendance du résultat (37;38 de chacune des opérations effectuées simultanément. 2. Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur (30) selon la revendication 1 caractérisé en ce qu'il comprend l'étape supplémentaire consistant à effectuer une partition d'un registre de résultats (36) destiné à recevoir des résultats de différentes operations, ladite partition étant semblable aux partitions des registres d'entrée (31;32). Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur (30) selon la revendication 2 caractérisé en ce qu'il comprend l'étape supplémentaire consistant à transferer les différents résultats contenus dans le registre de résultats (36) vers des registres de sortie distincts. .Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur (30) selon l'une des revendications précédentes caractérisé en ce que les bits de séparation sont spécifiques chaque opérateur. 5. Procédé pour effectuer simultanément plusieurs opérations avec un unique opérateur (30) selon l'une revendications précédentes caractérisé ce que pour un opérateur donné, les différents bits de separation insérés entre deux zones consécutives définies par la partition des registres d'entrée sont identiques.