Brevet FR2820523A1 — publié le 20020809

MICROPROCESSEUR COMPORTANT UNE INSTRUCTION D'INVERSION DES BITS D'UN MOT BINAIRE La présente invention concerne les microprocesseurs et plus particulièrement les microprocesseurs destinés à gérer des équipements périphériques. De tels équipements sont généralement connectés au microprocesseur par l'intermédiaire de ports d'entrée/sortie parallèles ou séries. Or il arrive fréquemment que l'ordre des bits de mots échangés avec de tels équipements périphériques soit inversé, suivant que l'on se trouve du côté de l'équipement ou du microprocesseur. Cela signifie, par exemple pour un mot de 8 bits de 0 à 7, que le bit 0 est transmis à la place du bit 7, le bit 6 à la place du bit 1, etc. Il en résulte que pour que le microprocesseur puisse communiquer correctement avec l'équipement périphérique, il doit inverser les bits des mots binaires échangés avec l'équipement. Il s'avère que cette opération d'inversion des bits de mots binaires est relativement coûteuse en nombre d'instructions et donc en temps de traitement, ce qui peut poser des problèmes importants lorsque l'équipement doit être géré en temps réel en respectant des délais très courts. La présente invention a pour but de supprimer cet inconvénient, en partant de la constatation selon laquelle la plupart des microprocesseurs, même ceux présentant une architecture simplifiée, possèdent des instructions de manipulation des bits de mots binaires, telles que des instructions de décalage ou d'échange de la partie de poids fort du mot avec la partie de poids faible. Cet objectif est atteint par la prévision d'un microprocesseur comprenant une unité centrale comportant une unité arithmétique et logique à au moins deux entrées et une sortie qui est rebouclée sur l'une desdites entrées au moyen d'un chemin de données, l'unité arithmétique et logique comportant des moyens pour effectuer des opérations arithmétiques et logiques sur des mots binaires stockés temporairement dans des registres de l'unité centrale, l'unité centrale comportant en outre une unité de décalage interposée sur le chemin de données de l'unité arithmétique et logique, et comprenant des moyens pour effectuer des opérations de décalage des bits de mots binaires qui lui sont appliqués, et des moyens de sélection pour sélectionner une opération de décalage à effectuer, caractérisé en ce qu'il comprend en outre des moyens pour effectuer une opération d'inversion de l'ordre des bits de mots binaires qui lui sont appliqués, interposés sur le chemin de données de l'unité arithmétique, et des moyens de sélection pour sélectionner l'opération d'inversion, lorsque celle-ci est requise. Avantageusement, les moyens pour effectuer l'opération d'inversion sont intégrés dans l'unité de décalage. De préférence, l'unité de décalage est interposée en amont de l'une des entrées de l'unité arithmétique et logique. Alternativement, l'unité de décalage est interposée en sortie de l'unité arithmétique et logique. Selon une particularité de l'invention, l'unité de décalage comprend autant de démultiplexeurs qu'il y a de bits dans les mots à traiter, chaque démultiplexeur comportant une entrée binaire et autant de sorties binaires que d'opérations de décalage à réaliser, les sorties des démultiplexeurs étant chacune reliées à un fil d'un bus relié à la sortie de l'unité de décalage et comportant au moins autant de fils que de bits dans les mots à traiter, les démultiplexeurs recevant en entrée un bit respectif du mot appliqué en entrée de l'unité de décalage, et délivrant en sortie la valeur du bit appliqué en entrée sur l'une des sorties du démultiplexeur, sélectionnée en fonction de l'opération de décalage à effectuer, le fil du bus auquel est connectée chaque sortie de chaque démultiplexeur étant choisi en fonction du rang dans le mot à traiter du bit appliqué en entrée du démultiplexeur et de l'opération de décalage correspondant à la sortie du démultiplexeur. Selon une autre variante de réalisation de l'invention, les moyens pour effectuer une opération d'inversion de l'ordre des bits de mots binaires sont disposés en amont de l'unité de décalage. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'un microprocesseur, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1 représente d'une manière schématique et simplifiée la structure d'un microprocesseur modifié selon l'invention ; - la figure 2 montre en détail une partie de l'unité de traitement du microprocesseur, modifiée selon la présente invention ; la figure 3 montre une variante de réalisation du microprocesseur représenté sur la figure 1. La figure 1 représente un microprocesseur 1 comprenant une unité de traitement ou CPU 2 comportant notamment : - des registres 5 permettant de stocker temporairement des mots binaires manipulés par le microprocesseur, et sur lesquels sont appliquées les différentes instructions exécutables par le microprocesseur ; - une unité arithmétique et logique (ALU) 3 à deux entrées et une sortie, conçue pour exécuter les instructions logiques et arithmétiques sur les mots binaires stockés dans les registres 5 ; et - deux multiplexeurs 6, 7 dont les entrées sont reliées aux registres 5 et les sorties respectives aux deux entrées de l'ALU, pour sélectionner deux des registres à appliquer respectivement sur ces deux entrées. Le multiplexeur 7 comprend en outre deux autres entrées dont l'une est reliée à la sortie de l'ALU et l'autre à un registre d'entrée de donnée DTIN 10 de l'unité de centrale 2. L'unité arithmétique et logique 3 comporte deux entrées pour recevoir simultanément deux mots binaires lorsqu'il s'agit d'exécuter une opération à deux opérandes. Certains microprocesseurs comme celui représenté sur la figure 1 comportent en outre une unité de décalage 4, interposée sur le chemin de données de l'ALU 3, c'est-àdire entre la sortie de l'ALU et l'une de ses deux entrées, cette unité étant conçue pour recombiner dans un ordre différent les bits des mots binaires appliqués en entrée de l'ALU. Sur la figure 1, l'unité de décalage 4 est disposée sur l'une des deux entrées de l'ALU. Elle peut bien entendu être interposée à un autre endroit du chemin de données de l'ALU 3, par exemple en sortie de l'ALU. En outre, la sortie du multiplexeur 7 est rebouclée sur les registres 5 et reliée à un registre de sortie de données DTOUT 10 de l'unité centrale 2. Par ailleurs, l'unité centrale 2 comprend d'une manière classique une unité de décodage d'instructions 8 conçue pour commander l'ALU, les multiplexeurs 6,7 et l'unité de décalage 4 en fonction des instructions exécutées par le microprocesseur 1. La figure 2 montre plus en détail un exemple de réalisation de l'unité de décalage. Sur cette figure, l'unité de décalage 4 comprend plusieurs démultiplexeurs 21 à 24, à raison d'un démultiplexeur par bit des mots à traiter 30. Chaque démultiplexeur reçoit en entrée la valeur d'un bit respectif du mot appliqué en entrée de l'unité 4 et comprend une sortie par opération de décalage à réaliser. Les sorties respectives des démultiplexeurs sont reliées à la sortie 20 de l'unité 4 par l'intermédiaire d'un bus parallèle 25 comportant autant de fils qu'il y a de bits dans les mots à traiter 30. La connexion entre chaque sortie de chaque démultiplexeur et les fils du bus 25, est effectuée en fonction du rang du bit appliqué en entrée du démultiplexeur et de l'opération de décalage correspondant à la sortie du démultiplexeur. La première opération de décalage"="est réalisée par les premières sorties des démultiplexeurs 21 à 24 qui délivrent le mot binaire appliqué en entrée 19 sans aucune transformation. La seconde et la troisième opération de décalage "LSH"et"RSH"délivrent respectivement sur la seconde et troisième sortie des démultiplexeurs 21 à 24, un mot binaire correspondant au mot binaire d'entrée 30 sur lequel on a effectué un décalage d'un bit respectivement vers la gauche et vers la droite. Ainsi, ces opérations envoient le bit n de poids fort du mot d'entrée 30 respectivement sur les bits 0 et n-1 du mot de sortie, le bit k du mot d'entrée respectivement sur les bits k+1 et k-1 du mot de sortie (0 La quatrième opération de décalage 24 délivre sur les quatrièmes sorties respectives des démultiplexeurs 21 à 24, un mot binaire de sortie correspondant au mot d'entrée 30 dans lequel on a interverti les parties de poids fort (bits n à n ; l pour un mot de n+l bits, n+l 2 étant pair) et de poids faible (bits n-1 à 0). 2 Selon l'invention, l'unité de décalage 4 comprend une cinquième opération de décalage"EXC"obtenue par les cinquièmes sorties respectives des démultiplexeurs 21 à 24, qui délivrent un mot correspondant au mot binaire d'entrée 30 avec la position des bits inversée. Ainsi, cette opération envoie le bit k du mot d'entrée 30 à n+l bits sur le bit n-k du mot de sortie. Bien entendu, il existe de nombreuses autres façons de réaliser l'unité de décalage 4, et l'homme de l'art peut aisément réaliser l'unité de décalage d'autres manières sans sortir du cadre de la présente invention telle que définie dans les revendications annexées. Ainsi, elle peut être réalisée à l'aide de cinq circuits câblés de décalage, à raison d'un circuit par opération de décalage à réaliser, chaque circuit recevant en entrée le mot binaire à traiter, l'une des sorties de ces circuits câblés étant sélectionnée pour être envoyée en sortie de l'unité de décalage 4, à l'aide d'un multiplexeur comportant une entrée de commande de sélection permettant de sélectionner l'opération de décalage à effectuer. Chaque circuit de décalage est réalisé simplement par des lignes interconnectant de manière appropriée les bits d'entrée avec les bits de sortie du circuit. Dans la variante du microprocesseur représenté sur la figure 3, l'unité de décalage 4 classique n'est pas modifiée. Pour réaliser la fonction d'inversion des bits, on a ajouté un circuit supplémentaire 4'dans le chemin de données de l'ALU 3, qui est conçu pour réaliser la fonction d'inversion des bits lorsque le décodeur d'instruction rencontre une telle commande dans les instructions exécutées. Un tel circuit 4'peut être réalisé simplement par un circuit câblé dans lequel les entrées des bits k du mot à traiter sont soit reliées aux sorties des bits k (sans changement d'ordre) dans le cas où la fonction d'inversion n'est pas requise, soit aux sorties des bits n-k (n+1 étant le nombre de bits des mots à traiter), dans le cas contraire. L'unité de décalage 4 peut encore être réalisée à l'aide de n+l multiplexeurs, n+l étant le nombre de bits des mots binaires 30 à traiter, chaque multiplexeur recevant en entrée tous les bits du mot binaire appliqués en entrée de l'unité de décalage. Les sorties respectives des multiplexeurs délivrent respectivement les bits du mot de sortie, les multiplexeurs étant commandés sélectivement de manière réaliser les opérations de transformation décrites ci-avant, par exemple en remplissant un registre avec un mot de commande ayant n+l bits, chaque bit étant appliqué à la commande sélective d'un multiplexeur respectif. Le mot de commande peut être issu d'une table correspondant à l'opération de transformation à réaliser. Il est à noter que cette structure autorise d'autres opérations de transformation. Il suffit à cet effet de prévoir un mot de commande correspondant dans la table. REVENDICATIONS 1. Microprocesseur comprenant une unité centrale (2) comportant une unité arithmétique et logique (3) à au moins deux entrées et une sortie qui est rebouclée sur l'une desdites entrées au moyen d'un chemin de données, l'unité arithmétique et logique (3) comportant des moyens pour effectuer des opérations arithmétiques et logiques sur des mots binaires stockés temporairement dans des registres (5) de l'unité centrale (2), l'unité centrale comportant en outre une unité de décalage (4) interposée sur le chemin de données de l'unité arithmétique et logique (3), et comprenant des moyens pour effectuer des opérations de décalage des bits de mots binaires qui lui sont appliqués, et des moyens de sélection pour sélectionner une opération de décalage à effectuer, caractérisé en ce qu'il comprend en outre des moyens (4, 4') pour effectuer une opération d'inversion de l'ordre des bits de mots binaires qui lui sont appliqués, interposés sur le chemin de données de l'unité arithmétique, et des moyens de sélection pour sélectionner l'opération d'inversion, lorsque celle-ci est requise. 2. Microprocesseur selon la revendication 1, caractérisé en ce que les moyens (4') pour effectuer l'opération d'inversion sont intégrés dans l'unité de décalage (4). 3. Microprocesseur selon la revendication 2, caractérisé en ce que l'unité de décalage (4) est interposée en amont de l'une des entrées de l'unité arithmétique et logique (3). 4. Microprocesseur selon la revendication 2, caractérisé en ce que l'unité de décalage (4) est interposée en sortie de l'unité arithmétique et logique (3). 5. Microprocesseur selon l'une quelconque des revendications 1 à 4, caractérisé en ce que l'unité de décalage comprend autant de démultiplexeurs (21 à 24) qu'il y a de bits dans les mots à traiter (30), chaque démultiplexeur comportant une entrée binaire et autant de sorties binaires que d'opérations de décalage à réaliser, les sorties des démultiplexeurs étant chacune reliées à un fil d'un bus (25) relié à la sortie (20) de l'unité de décalage et comportant au moins autant de fils que de bits dans les mots à traiter, les démultiplexeurs (21 à 24) recevant en entrée un bit respectif du mot appliqué en entrée (19) de l'unité de décalage (4), et délivrant en sortie la valeur du bit appliqué en entrée sur l'une des sorties du démultiplexeur, sélectionnée en fonction de l'opération de décalage à effectuer, le fil du bus (25) auquel est connecté chaque sortie de chaque démultiplexeur étant choisi en fonction du rang dans le mot à traiter du bit appliqué en entrée du démultiplexeur et de l'opération de décalage correspondant à la sortie du démultiplexeur. 6. Microprocesseur selon l'une quelconque des revendications 1 à 5, caractérisé en ce que les moyens (4') pour effectuer une opération d'inversion de l'ordre des bits de mots binaires sont disposés en amont de l'unité de décalage (4).