Brevet FR2645665A1 — publié le 19901012

La présente invention concerne les dispositifs de déco- dage d'instructions, en particulier ceux qui sont utilisés dans les microprocesseurs. Les microprocesseurs, tout comme les autres calculateurs, doivent souvent utiliser un décodeur qui décode les instruc- tions de niveau macroinstruction. En fait, l'instruction est interprétée par le décodeur et le décodeur détermine ce qui doit être fait dans le processeur pour exécuter l'ins- truction. Dans de nombreux cas, le microprocesseur comporte une mémoire pour mémoriser les instructions de niveau micro- instruction (microcode), et le décodeur assure le renvoi vers le microcode. Dans certains microprocesseurs, les instructions au ni- veau macro-instruction sont de longueur fixe (par exemple, de 32 bits), tandis que dans d'autres les instructions peuvent avoir des longueurs qui diffèrent. Le décodage d'instructions de longueur fixe est une tâche beaucoup plus aisée du fait que, par exemple, le décodeur sait o trouver certains champs dans l'instruction. Inversement, avec des instructions de longueur variable, un champ, par exemple de donnée immédiate, peut être présent ou ne pas l'être, et le point o il commence dans l'instruction pourra varier. Le microprocesseur Intel 386 (Intel et 386 sont des marques déposées de Intel Corporation) est un exemple de microprocesseur avec instructions à longueur variable. Une instruction peut avoir une largeur d'un octet, par exemple certaines instructions MOVE. Des instructions peuvent avoir une largeur allant jusqu'à 8 octets (sans préfixe). En outre, avec un préfixe ou rallonge d'instruction, la lon- gueur de l'instruction peut être notablement plus grande (par exemple, de 15 octets). Un décodeur unique qui décode- rait ces instructions de longueur variable en une seule passe serait relativement complexe et, ce qui est peut être plus important, consommerait une surface de substrat impor- tante. Dans le microprocesseur Intel 386, les instructions de longueur variable sont décodées sur la durée de Plusieurs cycles de calculateur. On examine tout d'abord le ref-fixe de l'instruction, puis d'autres champs. L'exécution des instructions commence après décodage complet. Pour de nom- breuses instructions, le microprocesseur Intel 386 a besoin de plusieurs cycles pour effectuer le décodage: par exemple, LOAD nécessite quatre cycles pour le décodage de l'instruction, STORE nécessite deux cycles et JUMP nécessite 3 à 4,5 cycles. En moyenne, il faut à peu près trois cycles avant qu'une instruction ne soit complètement décodée. Comme on ie verra, avec la présente invention ces durées sont notablement réduites, grâce à la mise en pipeline et à la manière de décoder l'instruction. Le temps de décodage chute à une moyenne d'environ 1,8 cycle. La présente invention est destinée à être utilisée dans un microprocesseur qui est une version améliorée du micro- processeur Intel 386. Le microprocesseur Intel 386 est décrit dans de nombreuses publications écrites. La program- mation de ce microprocesseur est décrite dans Programming the 80386 de Crawford et Gelsinger, paru chez SYBEX en 1987. On va décrire un perfectionnement apporté à un micropro- cesseur qui possède des moyens de mémorisation permettant de conserver des instructions obtenues par pré-recherche et des moyens de décodage pour décoder ces instructions lorsque les instructions sont de longueurs différentes. Le perfectionne- ment consiste à utiliser des moyens de décodage qui compren- nent deux étages ou sections. La première de ces sections décode un premier champ d'une instruction tandis que, simul- tanément, la seconde section se charge de préparer l'exécu- - tion en fonction d'un second champ de l'instruction précé- dente. En d'autres termes, la première et la seconde section mettent en pipeline les instructions et opèrent sur celles- ci en parallèle. Dans le mode de réalisation actuellement préféré, la première section décode le code opératoire et les bits représentant le mode d'adressage, le facteur d'échelle et les recistres de base et d'index. La seconde section con- trôle l'utilisation du déplacement d'adresse et du champ de données' imme. diate. La première section génère des pointeurs pointant sur les moyens de mémorisation, qui permettent à chacune des sections de recevoir les champs corrects des instructions. Chaque section peut recevoir un octet quel- conque provenant des moyens de mémorisation. 0 D'autres aspects de l'invention apparaîtront à la lecture de la description détaillée ci-dessous, faite en référence aux dessins annexés. La figure 1 est un diagramme général par blocs du micro- processeur dans lequel est mise en oeuvre la présente invention. La figure 2 est un diagramme par blocs montrant l'unité de décodage d'instruction de la présente invention et sa liaison à l'unité de pré- recherche et à une unité de segmentation. La figure 3 illustre le format le plus général d'une ins- truction décodée par le dispositif de la présente invention. La figure 4 est un diagramme plus détaillé illustrant le format d'une instruction, et qui montre les champs de lon- gueur variable des instructions. La figure 5 est un diagramme servant à illustrer le séquencement et le flux en pipeline associés à la présente invention. La figure 6 est un diagramme plus détaillé illustrant le séquencement et le flux des instructions associés à la pré- sente invention. On va décrire une unité de décodage d'instruction pour microprocesseur, qui est particulièrement avantageuse lors- qu'elle est utilisée à l'égard d'instructions obtenues par pré-recherche. Dans la description qui va suivre, on donnera de nombreux détails spécifiques tels que des nombres parti- culiers de bits, etc. afin de permettre une compréhension complète de la présente invention. Il sera cependant clair pour l'homme du métier que la présente invention peut être mise en oeuvre sans ces détails spécifiques. inversement, les techniques de traitement, les techniques de décodage et les circuits bien connus n'ont pas été 'exposés en détail pour ne pas alourdir par des détails inutiles la description de la présente invention. La présente invention est née lors de la conception du prochain microprocesseur de la famille des microprocesseurs Intel 286 et 386. Pour cette raison, il peut être utile de bien comprendre le microprocesseur Intel 386 pour apprécier pleinement l'importance de la présente invention. Outre les nombreuses publications disponibles concernant ce micropro- cesseur, le fonctionnement de celui-ci est décrit dans Programming the 80386 de Crawford et Gelsinger, paru chez SYBEX en 1987. Présentation générale du microprocesseur dans lequel est mise en oeuvre la présente invention Le microprocesseur dans lequel est mise en oeuvre la pré- sente invention est un microprocesseur 32 bits réalisé en technologie MOS complémentaire (CMOS). Il comporte, sur un même substrat, non seulement celles des unités qui sont as- sociées à une unité centrale de traitement, mais aussi une antémémoire et une unité en virgule flottante. Du fait des améliorations obtenues, en particulier, grâce à l'unité de décodage d'instruction de la présente invention, on peut réaliser l'exécution de nombreuses instructions par une ins- truction sur un seul cycle. Si l'on se réfère à la figure 1, on y a illustré les unités principales du microprocesseur, telles que l'unité d'interfaçage de bus 10. Cette unité assure l'interfaçage nécessaire entre les bus internes du microprocesseur et, en particulier, l'antémémoire 11, l'unité de pré- recherche 12 et les bus externes qui ont la charge d'aller chercher les données dans le système de mémoire de données externes. On utilise un bus d'adresse externe sur 32 bits et un bus de données sur 32 bits. L'unité d'interfaçage 10 particulière utilisée dans le mode de réalisation actuellement préféré du microprocesseur de l'invention n'est pas critique pour la mise en oeuvre de la présente invention. Cette unité est dé- crite dans une demande apparentée, dérivée de la demande déposée aux USA le ler août 1988 sous le numéro 227 078, intitulée Microprocessor Bus Interface Unit et appartenant à la Demanderesse. Pour les besoins de la présente invention, on notera que les instructions pré-recherchées mémorisées dans l'unité de pré-recherche 12 peuvent être communiquées à cette unité de pré-recherche par l'unité d'interfaçage de bus 10 ou par une antémémoire 11. L'unité de pagination 13-et l'unité de segmentation 15 sont, dans leur ensemble, semblables à celles utilisées dans le microprocesseur Intel 386. Le séquencement a cependant été modifié pour permettre l'exécution en une impulsion d!horloge. L'interconnexion d'une unité de segmentation avec l'unité de pré-recherche 12 sera décrite, ainsi que les autres interrelations avec l'unité de décodage d'instruction 14, à propos de la figure 2. De façon générale, l'unité de décodage d'instruction dé- code les instructions appliquées en entrée et, comme on le verra, elle diffère de l'unité de décodage d'instruction du microprocesseur Intel 386 par le fait qu'elle assure une mise en pipeline et un décodage parallèle. Elle est réalisée avec deux étages ou sections de décodage en pipeline permet- tant d'obtenir, pour la plupart des instructions, une ins- truction décodée par cycle d'horloge de calculateur. Essentiellement, la première section décode le code opéra- toire, le mode d'adressage, le facteur d'échelle et les bits de registre de base et d'index (quelquefois appellés collec- tivement "spécificateur de mode d'adressage et de regis- tre"), tandis que le second étage se charge essentiellement de l'utilisation du déplacement d'adresse ou des champs de donnée intermédiaire. L'unité de commande 19 contient une mémoire qui mémorise les instructions de microcode (le microcode) du microcalcu- lateur. Il partage le contrôle du microprocesseur avec l'unité de décodage d'instruction car, comme on l'explique- ra, la première ligne de microcode est délivrée par l'unité de décodage d'instruction 14. L'unité de commande 19 a la charge du traitement des situations aux limites des instruc- tions, par exemple l'arbitrage interruption/exception et l'arrêt de l'unité de décodage d'instruction 14 lorsque cela est nécessaire. L'unité de commande 19 gère la plupart des conditions de "gel", par exemple les discordances d'anté- mémoire, etc. L'unité de chemin de données 17 correspond au chemin principal des données d'exécution du microprocesseur. Il contient l'unité arithmétique et logique, la batterie de re- gistres, le décaleur circulaire, la ROM des constantes et les drapeaux. Le microprocesseur comporte également une unité à virgule flottante 18. Cette unité comporte une logique servant à exécuter les instructions en virgule flottante. Description du mode de réalisation actuellement préféré de la présente invention L'unité de décodage d'instruction 14 de la figure 1 a été représentée de façon générale sur la figure 2 entre les lignes tiretées 46 et 47. Cette unité, ainsi que certains circuits de l'unité de pré-recherche 12, opèrent ensemble de manière à obtenir les avantages procurés par la présente invention. L'unité de pré-recherche 12 comporte trois sections prin- cipales: le registre 26, le multiplexeur 27 et la logique associée 28. Le registre ou verrou 26 reçoit les instruc- tions obtenues par pré-recherche soit de l'antémémoire soit de l'unité d'interfaçage de bus. On a illustré ceci de façon générale sur la figure 2 par le bus 48. Le registre 26 a une largeur de 32 bits dans le mode de réalisation actuellement préféré. Les instructions conservées dans le registre 26 peuvent être appliquées soit au bus 29 (KlQ) soit au bus 30 (K2Q). Ces instructions sont appliquées à ces bus par l'in- termédiaire du multiplexeur 27. On peut appliquer au bus 29 tout groupe de trois octets adjacents se trouvant dans le registre 26. On peut appliquer au bus 30 tout groupe de quatre octets adjacents. Les signaux sur les lignes 44 provenant du circuit de commande de code 36 délivrent un pointeur (KIP) pointant sur le premier octet du champ de 24 bits appliqué au bus 29. La notation "(5)" qui suit "KIP" indique que l'on utilise cinq bits pour désigner ce pointeur, car c'est ce qui est néces- saire pour désigner un octet donné quelconque des 32 octets mémorisés dans le registre 26. Un second pointeur (K2P) relié à l'unité de pré- recherche 12 par les lignes 43 pointe sur le premier octet du champ de 32 bits appliqué au bus 30. Comme on le décrira plus bas, les champs appliqués aux bus 29 et 30 peuvent se chevaucher, c'est-à-dire que des octets initialement appliqués au bus 29 lors d'un cycle d'horloge peuvent, lors d'un cycle d'horloge subséquent, être appliqué ' au bus 30. Les cinq bits appliqués à l'unité de pré-recherche 12 par les lignes 41 (K1PJ) délivrent au circuit de commande de code 36 un pointeur de saut. Ceci a lieu après que de nou- velles instructions (suivant un ordre JUMP) aient été char- gées dans le registre 26. Ce pointeur indique au circuit de commande 36 l'octet de début des nouvelles instructions. Les signaux sur les lignes 42 (KlV et K2V) indiquent si la don- née K1Q et la donnée K2Q sont valides. Les signaux sur les lignes 40 (iSx8 et iSx16) sont des signaux de commande ser- vant à contrôler la liaison des champs de donnée intermé- diaire. Le décodeur 31 est un circuit à réseau logique program- mable (PLA) classique (qui comprend des portes logiques) programmé pour exécuter un décodage ordinaire. Comme on le verra, le code opératoire et le spécificateur de registre et de mode d'adressage sont toujours appliqués au décodeur 31 à partir du registre 26 (sauf lorsque l'instruction comprend un préfixe). A partir de ces données, le décodeur 31 dé- termine, par l'intermédiaire de l'unité de commande de code 36, la longueur des champs effectivement nécessaires au dé- codeur 31 et donc l'endroit sur lequel devra pointer le pointeur du bus K2Q dans le registre 26. Le décodeur reçoit toujours 24 bits, même lorsqu'une instruction de 8 bits ré- side dans le registre 26. Le décodeur 31 applique à l'étage de préparation d'exécution 34 des signaux qui identifient le type d'adresse nécessaire pour satisfaire l'instruction. Comme on le verra, le décodeur 31 et l'étage de préparation d'exécution 34 opèrent en parallèle; cependant, lorsque le décodeur 31 opère sur une instruction, l'étage 34 opère sur l'instruction précédente. Les verrous 35 qui sont reliés à la sortie du décodeur 31 permettent aux signaux résultant du décodage d'être intro- duits dans les verrous 35 au rythme des impulsions d'horloge- et séquences, le "décodage" subséquent étant opéré par l'é- tage 34. En sortie du verrou, on trouve les signaux de com- mande particuliers de l'unité arithmétique et logique et les signaux d'activation de registre source/destination. On trouve en sortie du verrou le point d'entrée (renvoi) de la "première" ligne de microcode dans la mémoire de microcode de l'unité 19. Mais en réalité le point d'entrée pointé se situe sur la troisième ligne effective du microcode, car le décodeur 31, avec le verrou 35, délivre les deux premières lignes du mi- crocode. Ceci a lieu, par exemple, pour une instruction de mémorisation ou lorsque le décodeur 31 prépare un calcul d'adresse pendant un cycle. Pendant le cycle d'horloge suivant, la seconde ligne de microcode est délivrée par le verrou 35 afin de déclencher un cycle de bus (recevoir de la mémoire). Pendant le cycle d'horloge suivant, la troisième ligne de code est délivrée par la mémoire de microcode (uni- té de commande 19 de la figure 1). Cette troisième ligne de code est sélectionnée en fonction d'un point d'entrée déli- vré par les verrous.35 au moment o ces verrous 35 délivrent la première ligne de microcode. Dans la mise en oeuvre actuelle, toutes les instructions utilisent au moins une ligne de microcode provenant de l'u- nité de commande 19. Dans certains cas, ce microcode indique simplement l'achèvement d'un cycle d'instruction. Dans de nombreux cas également, la première ligne de microcode pro- venant du décodeur 31 est un "NOOP" (opération néant). L'étage de préparation de l'exécution 34, qui peut être vu comme le second étage du décodage mentionné plus haut, contrôle essentiellement la génération d'adresse ou, plus précisément, le séquencement pour la génération d'adresse. Pour cette raison, il est à la base réalisé sous forme d'une machine à états. Les calculs effectifs d'adresse ont lieu dans l'unité de segmentation 15. Le décodeur 31 indique à l'étage 34 les besoins d'adressage linéaire et, à partir de ceux-ci, l'étage 34 détermine le nombre de cycles qui seront nécessaires pour l'instruction. En général, on a besoin d'un seul cycle s'il n'y a qu'une base et un déplacement et de deux cycles s'il y a une base, un facteur d'échelle d'adres- sage indexé et un déplacement. Un signal de chargement et des signaux de dimensionnement de champ sont appliqués à l'unité de segmentation 15 via le circuit de commande 36. L'unité de commande de code 36 comporte une machine à états, un additionneur et un compteur, ainsi qu'une logique associée. Des signaux sont appliqués du décodeur 31 au cir- cuit 36 pour indiquer le type d'instruction qui a été déco- dée. A partir de cette information, l'unité de commande de code 31 détermine, par l'intermédiaire des additionneurs et des compteurs, l'endroit o devront pointer les pointeurs K1P et K2P. La commande opérée par le circuit 36 apparaîtra plus clairement lorsque l'on décrira les pointeurs à propos de la figure 6. Dans le mode de réalisation actuellement préféré, le circuit de commande de code 36 exécute également d'autres fonctions: par exemple, des bits de violation, qui peuvent indiquer des violations de la segmentation ou autres viola- tions, sont détectés par l'unité de pré-recherche 12 et ap- pliqués à l'unité de commande 36. Le circuit de commande 36 peut également, dans certaines situations, déterminer la na- ture de la violation. Le circuit de commande de pipeline 37 est également une machine à états qui assure un contrôle général de la mise en pipeline de l'unité de décodage d'instruction. Ce circuit reconnaît d'après les signaux qui lui sont appliqués depuis le décodeur 31 si une instruction comprend un préfixe, puis détermine le nombre de cycles supplémentaires nécessaires pour gérer l'instruction en question. Par exemple, comme on le décrira à propos de la figure 5, on peut avoir besoin de plusieurs cycles. Le circuit 34 contrôle alors ces cycles supplémentaires. Le circuit de commande de pipeline 37 déli- vre sur les lignes 49 un signal "progression" au décodeur 31 et à l'étage de préparation d'exécution 34, un signal "net- toyage pipeline" ou de restauration et un signal permettant d'indiquer le moment o un étage donné a fini d'opérer sur une instruction. Le circuit de la figure 2 est réalisé en totalité à par- tir de circuits ordinaires. Les signaux de commande qui ne sont pas nécessaires pour la compréhension de la présente invention n'ont pas été représentés sur la figure 2. En outre, pour faciliter l'exposé de la présente invention, on n'a pas représenté non plus les fonctions qui ne sont pas nécessaires à la compréhension de la présente invention (par exemple, les fonctions de test). Instructions traitées par le dispositif de la présente invention La figure 3 illustre le format général des instructions destinées au microprocesseur Intel 386, ces instructions étant celles que décode le dispositif de décodage de la pré- sente invention dans le mode de réalisation actuellement préféré. Les instructions comportent un code opératoire et, dans certains cas, un champ d'adresse distincte 50, un champ de déplacement 51 et un champ immédiat 52. Les longueurs de ces champs varient, comme on l'expliquera à propos de la figure 4. Dans certains cas, on utilise un préfixe addi- tionnel 55. Sur la figure 4, on a illustré une instruction typique. Le champ de code opératoire peut avoir une longueur d'un octet ou bien de deux octets. Dans certains cas, l'instruc- tion complète est constituée d'un seul.octet, par exemple lorsque les cinq premiers bits indiquent une opération MOVE et les trois derniers bits, une désignation de registre. Sur la figure 4, un code opératoire typique a été illustré sur il deux octets 57 et 58. L'octet de mode d'adressage 59 indique le mode d'adressage ("mod") et le choix registre/mémoire ("r/m"), l'octet 60 comprend le facteur d'échelle pour les modes d'adressage indexé à échelle ("ss"), le registre général à utiliser en tant que registre d'index ("index") et le registre général à utiliser en tant que registre de base ("base"). Les octets 59 et 60 sont appelés "spécificateur de mode d'adressage et de registre". Le champ 61 est le dépla- cement d'adresse; ce champ peut ne pas être présent dans toutes les instructions et, s'il est présent, il peut avoir 1, 2 ou 4 octets de long. De la même façon, le champ de donnée immédiate 62 peut ne pas être présent dans toutes les instructions et, s'il est présent, il peut avoir 1, 2 ou 4 octets de long. On peut avoir d'autres variantes, par exem- ple avoir dans les champs de code opératoire des spécifica- teurs de registre de segment pour certains registres, ou bien on peut utiliser des bits pour des instructions condi- tionnelles afin de spécifier qu'une condition doit être affirmée ou qu'elle doit être niée. Un point important qu'il y a lieu de noter sur la figure 4 est que les trois premiers octets de toutes les instruc- tions (sauf celles comportant un préfixe) contiennent suffi- samment d'informations pour déterminer l'instruction à de- mander et la longueur totale de l'instruction. Dans chaque cas, ces trois octets sont appliqués au décodeur 31. A par- tir des autres octets de chaque instruction, on peut cal- culer une adresse au moyen de l'unité de segmentation 15 de la figure 2. Les trois premiers octets contiennent l'infor- mation nécessaire au décodeur 31 pour déterminer le mode d'adressage et le nombre de cycles qui seront nécessaires pour calculer l'adresse. Par exemple, on a constaté que si une base, un index et un déplacement sont présents, on a généralement besoin de deux cycles. Chronogrammes des figures 5 et 6 La mise en pipeline du dispositif de la présente inven- tion peut être comprise, de façon générale, à partir de la figure 5. En haut du tableau, on a indiqué le cycle. Chaque cycle correspond à un cycle d'horloge de calculateur. Par exemple, les cycles d'horloge interne du microprocesseur peuvent se succéder à une cadence de 25 MHz. La colonne de gauche indique les étages du pipeline. Les nombres contenus dans le tableau représentent un numéro d'instruction. Par exemple, lors du cycle n l, l'instruction n 11 est trans- férée depuis l'unité de pré-recherche 12, c'est-à-dire qu'elle est appliquée au décodeur 31 de la figure 2. Lors du même cycle (c'est-à-dire, simultanément à ce transfert), le décodeur 31 est en train de décoder l'instruction n 10, qui est l'instruction précédant l'instruction n 11. De la même façon, pendant cet intervalle de temps, l'étage de prépara- tion d'exécution 34 de la figure 2 est en train de contrôler le séquencement des calculs d'adresse pour l'instruction n 9. Au même moment, on opère l'exécution pour l'instruction n 8 et l'écriture retardée (write back) pour l'instruction n 7 (les instructions n'ont pas toutes une écriture retar- dée, mais il y a certaines instructions sur un seul octet qui requièrent une inscription retardée). Comme on peut le voir, lors du cycle n 2 le transfert au décodeur 31 a lieu.- pour l'instruction n'12, le décodeur 31 est en train de décoder l'instruction n 11 et l'unité de préparation d'exé- cution traite l'instruction n 10. Dans certains cas, comme on l'a indiqué, un préfixe peut être présent (préfixe 55 de la figure 3). Supposons que le décodeur, pendant le cycle n 3, détermine en décodant les 24 premiers bits de l'instruction n 13 qu'un.préfixe est présent. Cette information est commhuniquée au circuit de contrôle du pipeline 37, et ce circuit détermine alors le nombre de cycles qui seront nécessaires pour transférer au décodeur 31 la totalité du préfixe, du code opératoire et du spécificateur de mode d'adressage et de registre. Comme illustré figure 5, on suppose que ceci a lieu au cours des cycles n S3, 4 et 5. Le décodage a lieu au cours des cycles 4, 5 et 6 et la préparation de l'exécution a lieu au cours du cycle n 7. On a montré l'exécution de cette instruction au cours du cycle n 8. Au cours des cycles n o5 et 6, l'étage de préparation d'exécution 34 est inopérant; de la même façon, l'étage d'exécution est, comme on peut le voir, inopérant pendant les cycles nlS6 et 7. Comme on peut le voir, l'instruction 14 est transférée au décodeur 31 au cours du cycle n 6, décodée par le décodeur 31 au cours du cycle n 7, mais elle a ensuite besoin de deux cycles, n os8 et 9, pour le calcul d'adresse. Ce cycle, comme on l'a indiqué, peut avoir lieu lorsque l'adresse comprend une base, un index et un déplacement. Du fait que, comme indiqué lors du cycle n 8, on a besoin de deux cycles, aucun transfert n'a lieu en direction du décodeur 31; en revanche, l'instruction n 16 est transférée au décodeur lors du cycle n 9. Sur la figure 6, on a illustré une partie du registre 26 de la figure 2. On suppose que plusieurs instructions sont mémorisées dans ce registre, plus précisément les instruc- tions nOSl à 4. On suppose que l'instruction n l a un code opératoire sur deux octets et un spécificateur de mode d'adressage et de registre (pour les besoins de la figure 6, la désignation "OP" (code opératoire) indique à la fois le champ de code opératoire proprement dit et le champ de spécificateur de mode d'adressage et de registre de la figure 4). L'instruction n l possède également un champ immédiat de 8 bits. L'instruction n 2 a un code opératoire de 16 bits et un champ immédiat de 32 bits. -L'instruction n 3 n'a qu'un code opératoire de 8 bits. L'instruction n04 a un code opératoire de 24 bits et un champ de déplacement de 32 bits. Initialement, le pointeur KlP appliqué à l'unité de pré-recherche 12 (pointeur 67) pointe sur le premier octet du registre 26. Les 24 premiers bits du registre sont alors transférés au décodeur 31. Ce champ est indiqué par la réfé- rence numérique 68 à droite du cycle n l. En décodant ce champ, le décodeur 31 détermine que les 16 premiers bits constituent le code opératoire et délivre (en général au verrou 35) les signaux appropriés permettant de déclencher l'exécution de ce code. Par le circuit de commande de code 26, on détermine que le pointeur lK2P référencé 69 doit pointer sur le début du champ immédiat de l'instruction n l. Ce pointeur provoque le transfert des quatre octets suivants ce champ sous le contrôle de l'étage de préparation d'exécu- tion 34. Le champ est désigné par l'accolade référencée 70, à droite du cycle n02 de la figure 6. Le circuit de commande de code 36 délivre également le pointeur 71 de sorte que, lors du cycle n 2, les 24 bits suivant le pointeur 71 sont transférés au décodeur 31. Ce champ est indiqué, de façon générale, par la référence numérique 72. On notera, ici encore, que l'on transfère au décodeur huit bits du champ immédiat de l'instruction n 2, mais qu'en fait ces bits sont ignorés. Lors du cycle suivant, on transfère la totalité du champ immédiat de l'instruction n 2, car le pointeur 73 est positionné au début de ce champ (les champs de déplacement sont transférés vers l'unité de segmentation et les champs immédiats sont transférés au sein de l'unité d'antémémoire). * Pour le cycle n 3, on a représenté le champ par la référence numérique 74. Le circuit de commande 36 délivre ensuite le pointeur 74, ce qui provoque, lors du cycle n 3, le trans- fert au décodeur 31 des 24 bits suivant le pointeur 74. Comme cette instruction ne comprend pas de champ immédiat ni de champ de déplacement, on n'a pas besoin de pointeur 1K2P pour cette instruction. Pour le cycle n 4, celle-ci a été représentée, de façon générale, par la référence numérique 75. Ce processus continue de la manière illustrée figure 6 pour l'instruction n 4, le circuit de commande 36 délivrant les pointeurs, avec transfert des champs appropriés. Dans la partie inférieure de la figure 6, on a représenté l'exécution des instructions. Lors du cycle n 3, on exécute l'instruction n l. Lors du cycle n 4,- on exécute l'ins- truction n 4, etc. REVENDICATIONS 1. Un microprocesseur comprenant: - des moyens de mémorisation, pour mémoriser des instruc- tions obtenues par pré-recherche, et - des moyens de décodage, pour décoder les instructions en provenance de ces moyens de mémorisation, ces instruc- tions étant de longueurs différentes, caractérisé en ce que lesdits moyens de décodage (14) comprennent au moins deux sections, la première de ces sections (31) décodant un premier champ d'une instruction pendant que, simultanément, la seconde de ces sections (34) prépare l'exécution en fonction d'un second champ de l'ins- truction précédente, la première section étant configurée de manière à recevoir des moyens de mémorisation (19) le premier champ des instructions et la seconde section étant configurée de manière à effectuer ladite préparation avec le second champ de ladite instruction précédente en provenance des moyens de mémorisation, la première section délivrant un premier pointeur pointant sur les moyens de mémorisation pour sélection du second champ à partir de ces moyens de mémorisation. 2. Le microprocesseur de la revendication 1, dans lequel la première section délivre un second pointeur pointant sur les moyens de mémorisation pour sélection du premier champ de l'instruction suivante. 3. Le microprocesseur de la revendication 2, dans lequel ledit premier champ comprend le code opératoire et le spéci- ficateur de mode d'adressage et de registre. 4. Le microprocesseur de la revendication 3, dans lequel la seconde section assure le séquencement des calculs d'a- dresse. 5. Le microprocesseur de la revendication 1, dans lequel le microprocesseur utilise un microcode et comprend une mé- moire permettant de conserver au moins une partie de ce microcode, et dans lequel la premiere section assure le ren- voi vers le microcode. 6. Le microprocesseur de la revendication 5, dans lequel ia-première section délivre, pour certaines des instruc- tions, au moins une ligne de microcode. 7. Le microprocesseur de la revendication 1, dans lequel la première section délivre au moins une première ligne de, microcode pour certaines des instructions et assure le ren- voi vers d'autre microcode. 8. Le microprocesseur de la revendication 7, dans lequel la seconde section assure le séquencement des calculs d'a- dresse. 9. Un microprocesseur comprenant: - une unité de décodage des instructions, et - un registre permettant de mémoriser une pluralité d'instructions qui sont appliquées à cette unité, le micro- processeur opérant sur des instructions de longueurs diffé- rentes, caractérisé en ce que ladite unité (14) comprend un premier et un second étage, le premier étage (31) décodant le code opératoire et le spécificateur de mode d'adressage et de registre (prermier champ) de l'une des instructions lors d'un premier cycle de calculateur, et le second étage (34) contrôlant l'utilisation du déplacement d'adresse ou du champ de donnée immédiate (second champ) de cette même ins- truction lors d'un second cycle de calculateur, ce second cycle suivant le premier cycle dans le temps. 10. Le microprocesseur de la revendication 9, dans lequel le premier étage est configuré de manière à recevoir le premier champ sous le contrôle d'un premier pointeur, et le second étage est configuré de manière à assurer Le séquen- cement de l'utilisation du second champ sous le contrôle d'un second pointeur, ce premier et ce second pointeur étant produits par des signaux provenant du premier étage. 11. Le microprocesseur de la revendication 10, dans lequel le premier étage déclenche l'exécution de certaines des instructions. 12. Le microprocesseur de la revendication 9, dans lequel le microprocesseur utilise un microcode et comprend une mé- moire permettant de conserver au moins une partie de ce microcode, et dans lequel le premier étage assure le renvoi vers le microcode par l'intermédiaire d'un verrou. 13. Le microprocesseur de la revendication 12, dans lequel le premier étage délivre, pour certaines des instruc- tions, deux lignes de microcode. 14. Le microprocesseur de la revendication 10, dans lequel le second étage contrêle le séquencement des calculs d'adresse. 15. Le microprocesseur de la revendication 13, dans lequel le second étage contrôle le déclenchement du cycle de bus.