Brevet FR2831288A1 — publié le 20030425

fonction requise par l'entrée audio. MICROPROCESSEUR DISPOSANT D' INSTRUCTIONS D'ECHANGE DE VALEURS ENTRE DEUX REGISTRES OU DEUX EMPLACEMENTS MEMOIRE La présente invention concerne un microprocesseur disposant d' instructions d'échange de valeurs entre deux registres ou deux emplacements mémoire. Elle s'applique notamment, mais non exclusivement aux microprocesseurs de type 8 bits (qui traitent des données représentées par des mots de 8 bits). Dans ce type de microprocesseur, le nombre de codes d' instructions est normalement limité à 256 (28). Pour étendre ce nombre, on a généralement recours à ce que l'on appelle un précode d'un octet permettant de spécifier que le code d' instruction qui suit dans un programme référence une autre fonction que celle référencée par le code instruction sans précode. Dans le cas des microprocesseurs comprenant plusieurs registres, les instructions manipulant le contenu de certains de ces registres ne sont accessibles qu'en utilisant un précode. Il en résulte qu'à chaque manipulation du contenu d'un tel registre, le programme comporte un octet supplémentaire de précode, et l'exécution de l' instruction nécessite un cycle d'horloge supplémentaire pour la lecture et le traitement du précode. En outre, lorsque l'on souhaite d'une manière générale échanger le contenu de deux emplacements mémoire ou de deux registres, ou encore d'un registre et d'un emplacement mémoire, il est nécessaire de prévoir dans le programme, une séquence d' instructions comprenant une instruction de sauvegarde d'une manière temporaire du contenu d'un premier des deux emplacements mémoire, une instruction de transfert du contenu du second emplacement mémoire dans le premier, puis une instruction de transfert du contenu sauvegardé du premier emplacement mémoire dans le second. Par conséquent, une telle opération d'échange implique l'exécution de trois instructions de transfert utilisant chacune au moins deux cycles d'horloge, et nécessite l'utilisation temporaire d'un emplacement mémoire ou d'un registre interne du microprocesseur. En outre, lorsque l'opération d'échange doit être effectuée avec un registre dont les instructions d'accès nécessitent un précode, l'exécution de l'opération d'échange utilise deux cycles d'horloge supplémentaires pour la lecture et l'écriture du registre avec précode. La présente invention a pour bus de remédier à ces inconvénients sans modifier d'une manière importante la structure du microprocesseur, et sans affecter son fonctionnement pour qu'il reste compatible avec les programmes existants. Cet objectif est atteint par la prévision d'un microprocesseur comprenant des registres internes, une unité arithmétique et logique, et des moyens pour lire dans une mémoire programme et exécuter un jeu d' instructions. Selon l'invention le jeu d' instructions du microprocesseur comporte au moins une instruction supplémentaire conçue pour commander l'échange du contenu de deux emplacements mémoire, le microprocesseur comprenant un registre interne supplémentaire interposé en sortie de l'unité arithmétique et logique, des moyens pour transférer lors de l'exécution de l' instruction d'échange, le contenu d'un premier des emplacements mémoire à échanger dans le registre supplémentaire, des moyens pour transférer le contenu du second emplacement mémoire à échanger dans le premier emplacement mémoire, et des moyens pour transférer le contenu du registre supplémentaire dans le premier emplacement mémoire. De cette manière, l' instruction d'échange peut avantageusement être insérée dans un programme avant une séquence d' instructions mettant en _uvre le registre nécessitant un précode, puis éventuellement être insérée à nouveau à la fin d'une telle séquence, pour restaurer le contenu initial des registres. Avantageusement, les deux emplacements mémoire à échanger sont situés dans des registres internes du microprocesseur. De préférence, les deux emplacements mémoires à échanger sont situés respectivement dans un registre interne du microprocesseur et dans une mémoire accessible au microprocesseur. Selon un mode préféré de réalisation de l' invention, le microprocesseur comprend en outre des moyens pour lire en mémoire un code d' instruction, et pour charger dans le registre supplémentaire pendant un même cycle d'horloge, le contenu du registre à échanger avec un autre emplacement mémoire. Selon un mode préféré de réalisation de l' invention, toutes les instructions du jeu d' instructions du microprocesseur, permettant l'accès au contenu d'au moins l'un des registres internes du microprocesseur, sont accessibles uniquement à l' aide d'un précode associé au code d'instruction. Selon un mode préféré de réalisation de l' invention, les deux emplacements mémoires à échanger sont situés dans une mémoire accessible par le microprocesseur à la fois en lecture et en écriture pendant un même cycle d'horloge. Alternativement, les deux emplacements mémoires à échanger sont situés dans une mémoire accessible au microprocesseur, le microprocesseur comprenant en outre un second registre supplémentaire interposé en sortie de l'unité arithmétique et logique, des moyens pour transférer le contenu du second emplacement mémoire à s échanger dans le second registre supplémentaire, et des moyens pour transférer le contenu du second registre supplémentaire dans le premier emplacement mémoire à échanger. 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 selon l' invention, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles: - les figures 1 et 2 représentent schématiquement deux variantes d'une partie de l' architecture interne d'un microprocesseur. Le microprocesseur 1 représenté sur la figure 1 comprend d'une manière classique des registres internes A, X, Y et une unité arithmétique et logique (ALU) 13 conçue pour effectuer l' ensemble des opérations arithmétiques et logiques susceptibles d'être réalisées par le microprocesseur. L'unité 13 comporte deux entrées reliées respectivement à deux bus parallèles BUSa et BUSb de un octet, ces deux bus étant connectés respectivement à la sortie de deux multiplexeurs 11, 12. L'entrée des registres est connectée au bus BUSa, tandis que leur sortie est connectée à l'entrée des multiplexeurs 11 et 12. Sur cette figure, seuls les registres A, X et Y sont représentés, le registre A étant le registre d'accumulateur et les registres X et Y étant utilisés comme registres d' index pour effectuer en particulier des opérations d'adressage indexés. s Par ailleurs, la sortie de l'unité 13 est reliée à une entrée du premier multiplexeur 11, lequel est également relié en entrée au bus de données externe du microprocesseur 1. Selon l'invention, un registre temporaire 17 est interposé sur la liaison entre la sortie de l'unité 13 et l'un des deux multiplexeurs 11, 12. En outre, le jeu d'instructions sans précode du microprocesseur comporte au moins une instruction d'échange EXG X,Y du contenu des registres X et Y. Cette instruction est avantageusement exéautée en quatre cycles d'horloge par le microprocesseur. Au premier cycle, l' instruction est lue dans la mémoire programme par le microprocesseur. Au second cycle, le contenu du registre Y est transféré dans le registre temporaire 17 en passant par le premier multiplexeur 11, le bus BUSa et l'unité 13. Au troisième cycle, le contenu du registre X est transféré dans le registre Y. via le premier multiplexeur 11, et au quatrième cycle, le contenu du registre 17 est transféré dans le registre X en passant par le premier multiplexeur 12 et le bus BUSa. De préférence, on prévoit également d'ajouter des instructions d' échange EXG A,X et EXG A,Y, entre d' autres registres internes, par exemple entre d'une part, le registre A, et d'autre part, les registres X et Y. On peut prévoir en outre que le contenu du registre A soit systématiquement chargé dans le registre temporaire 17, durant le cycle de chargement d'une instruction. Dans ce cas, l' instruction EXG A,X ou EXG A,Y est exécutée en trois cycles d'horloge. Au premier cycle, l' instruction est lue par le microprocesseur qui charge en même temps le registre A dans le registre temporaire 17 via le multiplexeur 11, le bus BUSa et l'unité 13. Au second cycle, le contenu du registre X ou Y est transféré dans le registre A, par l'intermédiaire du multiplexeur 11 et du bus BUSa. Au troisième cycle, le contenu du registre 17 est transféré dans le registre X ou Y. par l'intermédiaire du multiplexcur 11 et du bus BUSa. On prévoit également de préférence une instruction d'échange du contenu d'un emplacement mémoire avec un registre, par exemple le registre A: EXG A, mem. Dans ce cas, le multiplexeur 11 est également relié en entrée au bus BUSa. Cette instruction est également effectuée en trois ou quatre cycles d'horloge, selon que le registre A est chargé systématiquement ou non dans le registre temporaire 17. Dans le cas o le microprocesseur comporte peu de registres internes, il est avantageux de prévoir une instruction d'échange du contenu de deux emplacements mémoire meml et mem2: EXG meml,mem2. Si la mémoire est accessible en lecture et en écriture au cours du même cycle d'horloge, cette instruction est également exécutée en quatre cycles d'horloge. Dans le cas contraire, l' architecture de microprocesseur représentée sur la figure 1 doit être modifiée conformément à celle représentée sur la figure 2. Sur cette figure, la sortie de l'unité arithmétique et logique 13 est relice à un démultiplexeur 16 dont les deux sorties sont reliées respectivement au registre temporaire 17 et à un second registre temporaire supplémentaire 18. Le démultiplexeur 16 permet de choisir dans quel registre temporaire 17, 18, la sortie de l'unité 13 doit être envoyée. Par ailleurs, la sortie des deux registres temporaires 17, 18 est reliée à l'entrée du premier multiplexeur 11. Dans ce cas, l' instruction EXG meml,mem2 nécessite cinq cycles d'horloge pour être exécutée. Au premier cycle, l' instruction est chargée dans le microprocesseur, aux second et troisième cycles le contenu des emplacements mémoire meml et mem2 sont chargés respectivement dans les registres temporaires 17 et 18, s et aux quatrième et cinquième cycles, les contenus respectifs des registres temporaires 17 et 18 sont chargés respectivement dans les emplacements mémoire mem2 et meml. Il est à noter que la mémoire contenant le ou les emplacements échanger peut être une mémoire interne ou externe au microprocesseur. REVENDICATIONS 1. Microprocesseur comprenant des registres internes (A, X, Y), une unité (13) arithmétique et logique, et des moyens pour lire dans une mémoire programme et exéauter un jeu d' instructions, caractérisé en ce que le jeu d' instructions comporte au moins une instruction supplémentaire conçue pour commander l'échange du contenu de deux emplacements mémoire, le microprocesseur (1) comprenant un registre interne (17) supplémentaire interposé en sortie de l'unité arithmétique et logique (13), des moyens pour transférer lors de l'exécution de l' instruction d'échange, le contenu d'un premier des emplacements mémoire à échanger dans le registre supplémentaire (17), des moyens pour transférer le contenu du second emplacement mémoire à échanger dans le premier emplacement mémoire, et des moyens pour transférer le contenu du registre supplémentaire dans le premier emplacement mémoire. 2. Microprocesseur selon la revendication 1, caractérisé en ce que les deux emplacements mémoire à échanger sont situés dans des registres internes (A, X, Y) du microprocesseur (1). 3. Microprocesseur selon la revendication 1 ou 2, caractérisé en ce que les deux emplacements mémoires à échanger sont situés respectivement dans un registre interne (A, X, Y) du microprocesseur (1) et dans une mémoire accessible au microprocesseur. 4. Microprocesseur selon la revendication 2 ou 3, caractérisé en ce que le microprocesseur (1) comprend en outre des- moyens pour lire en mémoire un code d'instruction, et pour charger dans le registre supplémentaire (17) pendant un même cycle d'horloge, le contenu du registre tA) à échanger avec un autre emplacement mémoire. 5. Microprocesseur selon l'une quelconque des revendications 2 à 4, caractérisé en ce que toutes les instructions du jeu d'instructions du microprocesseur (1), permettant l'accès au contenu d'au moins l'un des registres internes (A, X, Y) du microprocesseur, sont accessibles uniquement à l' aide d'un précode associé au code d'instruction. 6. Microprocesseur selon l'une des revendications 1 à 5, caractérisé en ce que les deux emplacements mémoires à échanger sont situés dans une mémoire accessible par le microprocesseur (1) à la fois en lecture et en écriture pendant un même cycle d'horloge. 7. Microprocesseur selon l'une des revendications 1 à 5, caractérisé en ce que les deux emplacements mémoires à échanger sont situés dans une mémoire accessible au microprocesseur (1), le microprocesseur comprenant en outre un second registre supplémentaire (18) interposé en sortie de l'unité arithmétique et logique (13), des moyens pour transférer le contenu du second emplacement mémoire à échanger dans le second registre supplémentaire, et des moyens pour transférer le contenu du second registre supplémentaire dans le premier