Brevet FR2686717A1 — publié le 19930730

La présente invention concerne d'une manière gé- nérale le domaine des ordinateurs et en particulier concerne l'architecture d'un microprocesseur et les moyens d'accroître la vitesse avec laquelle des instructions sont exécutées. Théoriquement, les ordinateurs ont été conçus pour exécuter des instructions d'une manière séquentielle, c'est-à-dire les unes après les autres Bien que l'exécu- tion séquentielle d'instructions machine fournisse un pro- cédé logique et ordonné de fonctionnement, la demande tou- jours actuelle visant à accroître la vitesse de traitement a conduit les chercheurs à explorer des moyens de mise en oeuvre d'un système d'exécution en parallèle. Il existe de nombreux problèmes qu'il faut ré- soudre si l'on cherche à concevoir avec succès un ordina- teur ou un microprocesseur qui soit capable d'exécuter des instructions multiples en parallèle Par exemple, les mi- croprocesseurs possèdent de façon typique une architecture de l'ensemble des instructions, qui comprend des centaines d'instructions individuelles Si l'on compte l'ensemble des différents types de modes d'adressage pour une architecture donnée, le nombre total de codes opération possibles doit être probablement de l'ordre de plusieurs milliers. L'appariement de l'ensemble de premières instructions pos- sibles à l'ensemble des secondes impulsions possibles pour un ensemble donné d'instructions pourrait conduire aisément à des millions de combinaisons différentes La conception d'une machine, qui est à même d'exécuter toutes ces combi- naisons différentes, est une tâche énorme On notera que la complexité de conception peut être si grande qu'un tel pro- blème devient difficile à résoudre La réalisation de plu- sieurs décodeurs, qui pourraient décoder l'ensemble complet d'instructions dans une unité travaillant en parallèle, qui pourrait exécuter des couples d'instructions sans aucun re- tard important, pose des problèmes. Un problème associé lors de la construction d'un ordinateur apte à exécuter des instructions en parallèle, est qu'il doit être toujours à même de mettre en oeuvre un logiciel qui est conçu pour des machines de l'art anté- rieur, c'est-à-dire des machines qui fonctionnent au moyen d'une exécution séquentielle des instructions une ins- truction par cycle d'horloge En d'autres termes, une unité à fonctionnement parallèle doit fournir l'aspect d'un fonc- tionnement séquentiel. Comme on le voit, la présente invention décrit un système d'ordinateur capable d'exécuter deux instructions dans un seul cycle d'horloge Le système selon l'invention fonctionne sur la base du décodage d'un couple d'instruc- tions sélectonnées à partir d'un ensemble donné d'instruc- tions, puis exécute ces instructions en parallèle pour fournir un résultat correct L'une des caractéristiques re- marquables de la présente invention est que le système d'ordinateur délivre seulement deux instructions en paral- lèle s'il n'existe aucunes dépendances, dans un registre, entre les instructions appariées. L'invention concerne un système d'ordinateur apte à exécuter deux instructions en parallèle au cours d'un seul cycle d'horloge Le système d'ordinateur comprend un décodeur d'instructions dual, qui délivre uniquement deux instructions en parallèle s'il n'existe aucune dépendance, dans un registre, entre les instructions, et si les deux instructions font partie de l'ensemble d'instructions de l'ordinateur. Dans une forme de réalisation, la présente inven- tion comprend des premier et second moyens formant pipe- lines de transmission d'instructions pour l'exécution d'instructions d'ordinateur Les premiers moyens formant pipeline de transmission sont à même d'exécuter n'importe quelle instruction provenant de l'ensemble complet d'instructions, tandis que les seconds moyens formant pipe- line sont limités à l'exécution d'un sous-ensemble prédé- terminé d'instructions Le sous-ensemble est sélectionné sur la base de ce que sont des instructions exécutées en commun. Des moyens de contrôle de la dépendance dans un registre sont prévus pour identifier le registre de desti- nation de la première instruction d'une séquence d'instructions Les moyens de contrôle de dépendance déter- minent également si le registre de destination est utilisé pendant l'exécution de la seconde instruction de la sé- quence Si ce n'est pas le cas, les moyens de contrôle de dépendance indiquent qu'une première condition est satis- faite Il est également prévu des moyens pour déterminer si les première et seconde instructions de la séquence sont situées dans le sous- ensemble prédéterminé Lorsque ces deux instructions sont situées dans ce sous-ensemble, les moyens de détermination indiquent qu'une seconde condition est satisfaite Chaque fois que les première et seconde conditions sont toutes deux satisfaites, le couple d'instructions peut être délivré en parallèle. Une autre caractéristique de l'invention est que le système d'ordinateur ne délivre que la première instruc- tion de la séquence chaque fois que l'une ou l'autre des première et seconde conditions n'est pas satisfaite C'est- à-dire que si les première et seconde instructions présen- tent une dépendance dans un registre ou si l'une des ins- tructions n'est pas prélevée du sous-ensemble prédéterminé, alors la machine ne passe pas à une condition dans laquelle seule la première instruction est exécutée dans un seul cycle d'horloge Pour cette condition, la seconde instruc- tion de la séquence est délivrée pendant le cycle d'horloge suivant. D'autres caractéristiques et avantages de la pré- sente invention ressortiront de la description donnée ci- après, qui ne doit pas être considérée comme limitant l'invention à une forme de réalisation spécifique et est indiquée uniquement à titre d'explication et pour la com- préhension de l'invention et est prise en référence aux dessins annexés, sur lesquels: la figure 1 représente la structure d'un fonc- tionnement en mode pipeline d'une unité centrale de traite- ment d'un microprocesseur de l'art antérieur; la figure 2 représente la structure de f onc- tionnement en mode pipeline de l'unité centrale de trai- tement (CPU) selon la présente invention; et la figure 3 représente un schéma-bloc concep- tuel du dispositif formant décodeur d'instructions dual, incorporé dans la présente invention. On va décrire un microprocesseur comportant une unité servant à exécuter deux instructions en parallèle au cours d'un seul cycle d'horloge Dans la description donnée ci-après, on indique de nombreux détails spécifiques, tels que du type spécifique d'instructions, des types de micro- processeurs, etc pour avoir une compréhension complète de la forme de réalisation préférée de la présente invention. Cependant il apparaîtra à l'évidence, aux spécialistes de la technique, que la présente invention peut être mise en oeuvre sans ces détails spécifiques A d'autres égards, on n'a pas illustré de façon détaillée des circuits, des structures et des procédés bien connus afin d'éviter d'obscurcir inutilement l'exposé de la présente invention. L'invention a trait à un dispositif et à un pro- cédé pour exécuter des instructions machine multiples en parallèle au cours d'un seul cycle d'horloge De préfé- rence, l'invention est mise en oeuvre dans un microproces- seur tel qu'un microprocesseur portant la désignation i 586 TM, qui est fabriqué par la société dite Intel Corpora- tion Le microprocesseur i 586 TM est une version perfection- née du microprocesseur i 486 TM de Intel Des détails concer- nant l'architecture du microprocesseur i 486 TM sont décrits dans de nombreuses publications (Intel, i 486 TM et i 586 TM sont des marques déposées de Intel Corporation) Bien que l'on se référera fréquemment à l'architecture du système i 586 TM dans la description, et que l'on donnera des exemples provenant d'une famille d'instructions, on notera que la présente invention n'est pas limitée à ces systèmes spécifiques. TRANSMISSION EN MODE PIPELINE La transmission en mode pipeline est une techni- que de mise en oeuvre, selon laquelle des instructions mul- tiples sont simultanément en chevauchement lors de leur exécution La transmission en mode pipeline est une tech- nique de l'art antérieur largement utilisée pour améliorer le rendement et la vitesse d'exécution de l'unité centrale de traitement (CPU) Dans une structure pipeline, les ins- tructions pénètrent à une extrémité sont traitées dans les étages ou segments de pipeline et sortent à l'autre extrémité Chacun des étages du pipeline exécute une partie de l'instruction. En référence à la figure 1, on y voit représentée une structure pipeline de l'art antérieur, dans laquelle les étages de l'instruction sont désignées par les entrées dans la colonne de gauche Les intervalles de temps d'horloge entre les pas d'instruction sont illustrés par les nombres indiqués horizontalement Chaque pas dans le pipeline est désigné comme étant un cycle d'horloge ou un cycle machine. Le premier étage du pipeline est l'étage "PF", qui désigne la partie de préextraction dans le pipeline A cet étage, des instructions sont préalablement extraites d'une antémémoire monopuce L'étage suivant du pipeline est désigné par "Dl" Dans cet étage du pipeline, les instruc- tions sont délivrées et décodées L'étage D 2 est un étage de calcul d'adresses On notera que, conformément aux prin- cipes du fonctionnement pipeline, bien que la première ins- truction (par exemple Il) soit exécutée lors de l'étage Dl du second cycle d'horloge, l'étage de préextraction d'une seconde instruction (par exemple I 2) commence L'étage "EX" du pipeline indique l'exécution de l'instruction dans le système matériel, tandis que l'étage "WB" désigne une opé- ration de réinscription On notera que dans la structure de l'art antérieur de la figure 1, une seule instruction est exécutée dans le pipeline pour n'importe quel cycle d'hor- loge donné. Comme cela a été décrit précédemment, la présente invention représente une machine à capacités supérieures, qui est capable d'exécuter des instructions en parallèle pendant un cycle d'horloge Pour atteindre cet objectif, il est prévu conformément à la présente invention deux pipe- lines entiers, dont chacun peut exécuter des instructions au cours d'un seul cycle d'horloge Par conséquent, l'unité CPU peut délivrer deux instructions en parallèle dans deux pipelines séparés Dans la forme de réalisation actuelle- ment préférée, les pipelines sont désignés comme étant les pipelines "u" et "v" Le pipeline u peut exécuter de préfé- rence n'importe quelle instruction dans l'architecture x 86. Le pipeline v peut exécuter certaines instructions simples, telles que définies de façon plus détaillée dans une partie ultérieure de la description. En se référant maintenant à la figure 2, on y voit représentée la structure pipeline selon la présente invention On notera que dans la séquence pipeline de la figure 2, deux instructions Il et I 2 sont représentées comme étant exécutées à chaque étage du pipeline au cours d'un seul cycle d'horloge A nouveau, le premier étage du pipeline est un étage de préextraction pendant la durée du- quel les instructions sont préalablement extraites de l'antémémoire monopuce Étant donné que le microprocesseur conforme à la présente invention comporte des antémémoires séparées pour des instructions et des données, des préex- tractions ne sont plus en conflit avec des références de données pour l'accès à l'antémémoire, comme c'était le cas pour des unités CPU de l'art antérieur Cela signifie que pendant l'étage de préextraction, les instructions Il et I 2 sont directement extraites de l'antémémoire d'instructions et sont chargées dans les canalisations u et v Dans l'étage suivant du pipeline (c'est-à-dire Dl), les instruc- tions Il et I 2 sont décodées et délivrées. DÉLIVRANCE D'INSTRUCTIONS ET COMMANDE SÉQUENTIELLE DES PI- PELINES Comme cela est indiqué précédemment, le micropro- cesseur conforme à l'invention peut délivrer une ou deux instruction au cours d'un seul cycle machine Cependant, pour délivrer deux instructions simultanément, il faut que les deux instructions du couple d'instructions satisfassent à certaines conditions C'est-à-dire que les deux instruc- tions du couple d'instructions doivent être situées dans un sous- ensemble défini d'instructions et ne présenter aucune interdépendance (cet aspect de l'invention sera décrit brièvement de façon plus détaillée). L'opération de délivrance de deux instructions en parallèle est désignée par l'expression "appariement d'instructions" Lorsque des instructions sont appariées, l'instruction envoyée au pipeline v (second pipeline) est toujours l'instruction séquentielle immédiatement suivante après l'instruction délivrée au pipeline u Bien que les instructions puissent être exécutées en parallèle, le com- portement tel qu'il est observé par le programmeur est exactement le même que si elles étaient exécutées séquen- tiellement (comme cela serait le cas pour des conceptions de l'art antérieur) Les instructions sont traitées en pa- rallèle dans les étages D 2 et EX jusqu'à leur achèvement dans l'étage WB Au cours de leur progression dans le pipe- line, on notera que des instructions peuvent être bloquées pour un certain nombre de raisons Par exemple, lorsqu'une instruction située dans le pipeline u est retardée, l'instruction (s'il en existe) envoyée avec cette instruc- tion pipeline v est alors également retardée dans le même étage du pipeline Aucune instruction suivante n'est auto- risée d'avancer jusqu'à l'étage retardé dans les deux pipe- lines Lorsqu'une instruction est bloquée dans le pipeline v, l'instruction délivrée avec elle dans le pipeline u peut avancer, alors que le pipeline v est bloqué. APPARIEMENT D'INSTRUCTIONS L'idée de base de la présente invention est que le système d'ordinateur comprend un dispositif de décodage qui délivre deux instructions en parallèle uniquement si elles ne présentent entre elles aucune dépendance dans le registre et si ces deux instructions font partie d'un sous- ensemble d'instructions pouvant être choisi pour une exécu- tion en parallèle Le décodeur d'instructions dual identi- fie tout d'abord le registre de destination pour la pre- mière instruction dans la séquence du programme Cette ins- truction devient l'instruction du pipeline u L'appareil conforme à l'invention détermine alors si l'instruction du pipeline u est utilisée d'une quelconque manière pendant l'exécution de la seconde instruction de la séquence Si ce n'est pas le cas (c'est-à-dire si les deux instructions sont indépendantes), alors les deux instructions sont déli- vrées en parallèle. Comme cela a été décrit précédemment, la machine à capacités supérieures selon la présente invention com- prend deux pipelines en parallèle désignés comme étant les pipelines u et v qui exploitent un parallélisme dans l'ensemble complet d'instructions L'unité d'instructions du microprocesseur envoie toujours la première instruction de la séquence d'instructions au pipeline u et la seconde instruction au pipeline v Le pipeline v est bloqué chaque fois que l'opérande du pipeline u n'est pas accessible ou qu'il existe une collision d'adresses entre les pipelines. L'appariement peut intervenir uniquement entre deux ins- tructions entières ou deux instructions à virgule flot- tante. En général, on peut apparier des couples d'ins- tructions simples tant qu'il n'existe entre elles aucune dépendance Pour la délivrance de deux instructions en- tières simultanément, il faut que les conditions suivantes soient satisfaites conformément à la forme de réalisation actuellement préférée Tout d'abord, l'instruction doit ap- partenir à un sous-ensemble prédéterminé de l'ensemble x 86 d'instructions Le sous-ensemble d'instructions pour l'appariement d'instructions entières est indiqué dans le tableau 1 donné ci-après. Tableau 1 Sous-ensemble d'instructions entières pour l'appariement Instructions du pipeline u Instructions du pipeline v mov r,r alu r,i push r mov r,r alu r,i push r mov r,m alu mi push i mov r,m alu m,i push i mov m,r alu eax,i pop r mov m,r alu eax,i pop r mov r,i alu m,r nop mov r,i alu m,r jmp near mov m,i alu r,m mov m,i alu r,m jcc near mov eax,m inc/dec r mov eax,m inc/dec r OF jcc mov m,eax inc/dec m mov m,eax inc/dec m call near alu r,r lea r,m alu r,r lear r,m nop (On notera que dans le tableau 1, l'entrée "alu r,r" désigne une classe d'instructions qui comprennent des instructions telles que "add," "or," "adc," "sbb," "and," xor," "cmp"). L'idée de former des sous-ensembles est un con- cept important dans la présente invention étant donné qu'il réduit radicalement le nombre de combinaisons possibles d'instructions différentes, qu'il aurait fallu traiter lors de l'exécution en parallèle Le système identifie qu'il existe un petit sous-ensemble d'instructions (environ vingt) qui englobe presque 95 % de l'ensemble des instruc- tions exécutées par un logiciel typique Un ensemble des instructions les plus fréquemment utilisées est indiqué dans le tableau 1 ci-dessus L'utilisation d'une formation de sous-ensembles signifie que le décodeur d'instructions dual n'a pas besoin de fonctionner avec l'ensemble complet des instructions Au contraire, sa conception peut être simplifiée de manière à améliorer fortement les relations de cadencement qui interviennent L'utilisation de la for- mation de sous-ensembles permet également à la machine d'identifier rapidement les deux instructions, de les déco- der rapidement, puis de les exécuter en parallèle. La limitation importante suivante dans l'exécu- tion en parallèle d'instructions est qu'il n'existe aucune dépendance de registre entre les instructions appariées. Cela signifie que le registre de destination de la première instruction ne peut pas être utilisé en tant que source, destination, base ou index de l'instruction suivante Cette exigence est valable pour une utilisation explicite et une utilisation implicite du registre pour les instructions. On notera qu'une exception à cela est l'appariement d'ins- tructions "push" et "pop", pour lesquelles, dans la forme de réalisation actuellement préférée, il existe, dans l'unité de segmentation, un matériel spécial qui met à jour le pointeur de piles Pour le contrôle de dépendance, l'utilisation d'une quelconque partie du registre à 16/32 bits est la même que l'utilisation de l'ensemble du re- gistre S'il existe une dépendance en mémoire entre les instructions des pipelines u et v, alors les accès en mé- moire des deux pipelines u et v peuvent être exécutés au même bloc/à la même adresse de l'antémémoire des données. Le cycle du pipeline v sera équilibré jusqu'à ce que il l'accès au pipeline u soit terminé. D'autres limitations qui sont spécifiques à la réalisation actuelle du microprocesseur i 586 TM compren- nent: L'instruction de pipeline v ne peut pas avoir de préfixe, hormis OF Jcc. Les marqueurs de bits d'extrémité dans l'antémémoire de codes, qui correspondent à la première instruction, doivent être positionnés correctement (Le concept des marqueurs de bits d'extrémité est décrit dans une demande de brevet co- pendante déposée par le déposant de la présente demande et ayant pour titre "End Bit Markers For Instruction Decode", c'est-à-dire marqueurs de bits d'extrémité pour le décodage d'instructions). Il existe un nombre suffisant d'octets de codes opération dans les tampons de préextraction pour décoder les deux instructions. Une instruction dans le pipeline u ou v peut inclure un déplacement ou un accès immédiat, mais pas les deux. Il ne peut pas y avoir des instructions ADC et SBB dans le pipeline v (pour éviter une dépendance vis-à-vis du dra- peau de report du pipeline u). En se référant maintenant à la figure 3, on y voit représenté un schémabloc d'un décodeur d'instructions dual qui illustre le concept étendu de la présente inven- tion Sur la figure 3, le code opération du pipeline u et le code opération du pipeline v sont couplés respectivement aux décodeurs 12 et 14 Outre le fait d'être envoyé au dé- codeur 12, le code opération du pipeline u est également couplé à un décodeur additionnel 13 Les décodeurs 12, 13 et 14 comprennent des réseaux logiques programmables (PLA) usuels, qui exécutent la totalité du décodage des instruc- tions Par exemple, le décodeur 12 produit le premier vec- teur de microcode pour l'instruction du pipeline u, tandis que le décodeur 14 possède un réseau PLA semblable, qui dé- code le premier vecteur du microcode pour l'instruction du pipeline v Chacun des vecteurs de microcodes comprend des zones qui contiennent des informations telles que l'emplacement du registre source, le registre de destina- tion, l'information de fonctionnement de l'unité arithmé- tique et logique ALU, le calcul d'adresses et le déplace- ment ou l'accès immédiat. Naturellement, la caractéristique principale de l'invention est que le décodeur dual représenté sur la fi- gure 3 peut délivrer une ou deux instructions au cours d'un seul cycle Étant donné qu'un but de la présente invention est de pouvoir travailler sur l'ensemble de la famille x 86 d'instructions, le décodeur de la figure 3 est divisé en deux sections ou itinéraires Un itinéraire est à même de traiter toutes les instructions de l'ensemble x 86 d'instructions, tandis que l'autre itinéraire est prévu spécifiquement pour le traitement d'une seconde instruction en parallèle En d'autres termes, la présente invention in- clut un mode de fonctionnement selon lequel une instruction est exécutée lors de chaque cycle d'horloge, si les condi- tions pour le fonctionnement du dispositif à capacités su- périeures ne sont pas satisfaites. En continuant à se référer à la figure 3, on voit que deux pipelines sont très semblables, hormis que le pi- peline u fonctionne en tant que pipeline implicite dans le cas o les conditions dans le dispositif à capacités supé- rieures ne sont pas satisfaites Cela signifie que l'itinéraire du pipeline u sur la figure 3 est à même d'exécuter l'ensemble des x 86 instructions, tandis que le pipeline v est à même de traiter uniquement au niveau d'un sous-ensemble de l'ensemble complet d'instructions Par exemple, les décodeurs 13 et 14 sont conçus spécifiquement pour décoder seulement un sous-ensemble de l'ensemble com- plet x 86 d'instructions D'autre part le décodeur 12 est capable de décoder l'ensemble complet d'instructions lorsque la machine passe implicitement à une instruction par cycle d'horloge Dans n'importe quelle séquence concep- tuelle, le pipeline u représente toujours la première ins- truction de la séquence et le pipeline V représente tou- jours la seconde instruction de la même séquence. Un contrôle de dépendance dans un registre est exécutée par l'unité 19, qui reçoit des signaux de sortie délivrés par les décodeurs 13 et 14 Les signaux de sortie des décodeurs 13 et 14 (qui sont couplés à l'unité 19) in- cluent une information qui indique le registre de destina- * tion de l'instruction actuelle Une logique usuelle ordi- naire dans l'unité 19 détermine s'il existe une dépendance dans le registre de destination pour chaque instruction, sur la base de l'identification du registre de destination du pipeline u et de la détermination sûre du fait qu'il n'est pas utilisé dans l'instruction du pipeline v En même temps qu'est exécuté le contrôle de dépendance dans le re- gistre, se déroule également un calcul de longueur, qui est exécuté par l'unité 17 En d'autres termes, l'unité 17 cal- cule la longueur du couple d'instructions, c'est-à-dire la somme de l'instruction du pipeline u et de l'instruction du pipeline v L'unité 15 calcule uniquement la longueur de l'instruction du pipeline u. Du point de vue conceptuel, les signaux de sortie des unités 15 et 17 sont envoyés à un multiplexeur 21, qui délivre la longueur de l'instruction Le multiplexeur 21 est commandé par un signal ISELTWO, qui envoie une informa- tion de base "délivrance un/délivrance deux" délivrée par l'unité 19 de contrôle de dépendance dans le registre Le signal IEESELTWO est le même signal que celui utilisé pour exécuter conditionnellement l'instruction du pipeline v au moyen de la commande du multiplexeur MUX 21 Lorsque l'uni- té 19 de contrôle de la dépendance dans le registre établit que seule une instruction peut être exécutée, le multiple- xeur MUX 21 est commandé de telle sorte que la longueur 'de l'instruction est ce qu'est la longueur du vecteur du pipe- line u Dans le pipeline v, lorsque seule une instruction est délivrée, le signal de commande ISELTWO ne sélectionne aucune opération ("NOP") devant être délivrée par le multi- plexeur 22 Dans un tel cas, la longueur est obtenue seule- ment à partir du pipeline u. Lorsqu'il n'existe aucune dépendance dans le re- gistre, deux instructions peuvent être exécutées en paral- lèle Dans ces conditions, la longueur de l'instruction dé- livrée par le multiplexeur MUX 21 est choisie égale à la somme des longueurs calculées pour les pipelines u et v (c'est-à-dire le signal de sortie de l'unité 17) Dans ces conditions, la machine voit essentiellement le couple comme une instruction étendue Lorsque deux instructions sont exécutées en parallèle, le multiplexeur MUX 22 transmet simplement le vecteur de microcode du pipeline u à la sor- tie de ce multiplexeur L'information présente à la sortie des multiplexeurs MUX 21 et 22 est envoyée à l'unité d'exécution du microprocesseur L'unité d'exécution com- prend normalement une unité de calcul d'adresses, une unité arithmétique et logique (ALU), des trajets de circulation de données, des fichiers de registres, etc. Il faut insister sur le fait que toutes les opé- rations exécutées par le décodeur d'instructions dual de la figure 3 sont effectuées au cours d'un cycle d'horloge. C'est-à-dire que les codes opérations sont transmis aux en- trées des décodeurs supérieurs et que les vecteurs sont dé- livrés par les unités de multiplexage, et ce tous au cours d'un seul cycle d'horloge. EXEMPLES D'APPARIEMENT Pour mieux comprendre et apprécier la présente invention, on va considérer certains des exemples suivants de séquences d'instructions Ces séquences illustrent éga- lement les règles importantes d'appariement décrites précé- demment (On notera que dans le format prévu, l'opérande de destination est disposée à gauche). On va considérer le couple suivant d'instructions simples. mov edx, lebxl add esi, 4; Dans cet exemple, la premère instruction de la séquence est un "mov", qui sera traité par le pipeline u. Le registre de destination pour l'instruction du pipeline u est edx Étant donné que edx n'est utilisé en aucune ma- nière dans l'instruction "add" du pipeline v et qu'en outre les deux instructions sont dans le sous-ensemble d'instructions (voir plus loin), le décodeur de la figure 3 peut réaliser une délivrance des instructions en parallèle. Pendant l'exécution, le code opération de la pre- mière instruction (c'est-à-dire "mov") est le code opéra- tion du pipeline u, "add'" étant le code opération du pipe- line v Le décodeur supérieur 12 décode l'instruction " 1 mov", et produit un vecteur du pipeline u, qui spécifie que le registre de destination est edx Le décodeur spécifie éga- lement qu'une lecture de mémoire est nécessaire l'adresse étant spécifiée par edx Le décodeur 12 identifie également les composantes du calcul d'adresse et détermine s'il s'agit d'une macro-instruction d'un vecteur Simulta- nément, le décodeur 13 du sous-ensemble cherche à savoir si "mov" est dans le sous-ensemble d'instructions, qui peuvent être choisies pour une délivrance duale Le décodeur 13 identifie également le registre de destination edx, qui sera utilisé par l'unité 19 de contrôle de dépendance dans le registre L'unité 19 contrôle edx en fonction de esi et en conclut qu'ils ne sont pas identiques. Du côté du pipeline v, le décodeur 14 du pipeline v consulte add esi et identifie esi en tant que registre de destination (pour cet exemple esi est également la source). Le décodeur 14 identifie également la composante immédiate (c'est-à- dire 4), puis l'unité 17 calcule la longueur des deux instructions L'instruction "add" suit alors le pipe- line v C'est pourquoi, étant donné que ces deux instruc- tions sont simples et qu'il n'existe aucune dépendance entre elles, ces deux instructions peuvent être appariées. Ci-après, on va considérer l'exemple suivant d'appariement: mov edx lebxl; add edx, 4; Dans cet exemple, le registre de destination pour l'instruction du pipeline u est edx Étant donné que ce re- gistre de destination est également utilisé dans l'ins- truction du pipeline v, la logique de contrôle de dépen- dance établit que ces deux instructions ne peuvent pas être délivrées en parallèle Pour ce cas, l'instruction du pipe- line u est délivrée en premier, tandis que l'itinéraire du pipeline v reste au repos (c'est-à-dire que le pipeline v délivre un "NOP") Dans le cycle d'horloge suivant, l'instruction "add" est exécutée dans le pipeline u On comprendra que l'instruction add délivrée dans le pipeline u pendant le cycle d'horloge suivant peut éventuellement être délivré en parallèle avec n'importe quelle instruction qui lui succède dans la séquence Dans le cas o ces deux instructions sont délivrées en parallèle, l'instruction suivante dans la séquence (qui suit l'instruction "add") est délivrée dans le pipeline v. On va maintenant considérer l'exemple suivant ids lebxl; push eax; Dans cet exemple, l'instruction de chargement "lds" n'est pas contenue dans le sous-ensemble d'instruc- tions pouvant être choisie pour une exécution en parallèle (voir tableau 1) Par conséquent, l'instruction "lds" est ddélivrée dans le pipeline u et, lors du cycle d'horloge suivant, l'instruction "push" est délivrée dans le pipeline u Dans ce cas, le décodeur supérieur 13 du pipeline u identifie l'instruction lds comme n'étant pas dans le sous- ensemble pouvant être choisi C'est le cas même s'il n'existe aucune dépendance entre les deux instructions Il est important de noter que, lorsque deux instructions ne peuvent pas être délivrées en parallèle, le code opération du pipeline v devient le code opération du pipeline u pour le cycle d'horloge suivant L'instruction suivante de la séquence devient alors le code opération du pipeline v. On comprendra que la liste particulière d'ins- tructions dans le sous-ensemble x 86 d'instructions dans la forme de réalisation actuellement préférée peut varier dans différentes variantes de réalisation Simultanément, diffé- rentes formes de réalisation peuvent permettre l'appa- riement de certaines instructions, pour lesquelles il existe une dépendance implicite s'il existe un matériel spécial permettant aux deux instructions d'être délivrées et exécutées en parallèle A titre d'exemple, la forme de réalisation actuellement préférée comprend un matériel spé- cial qui permet l'exécution des instructions suivantes en parallèle: cmp edx, 0; jnz loop Pour le présent exemple, bien qu'il existe une dépendance implicite vis-à-vis du drapeau z, le micropro- cesseur contient un matériel spécial permettant la déli- vrance et l'exécution en parallèle de ces instructions. Pour l'appariement de deux instructions à virgule flottante, les trois dernières conditions indiquées pour l'appariement d'instructions entières d'un cycle contrôle de dépendance de mémoire ne s'appliquent pas dans la pré- sente forme de réalisation La raison en est que des ins- tructions à virgule flottante ne comportent pas d'octets d'accès immédiat De même, la dépendance dans le registre est autorisée entre les instructions du pipeline u et l'instruction fxch dans le pipeline v Étant donné que l'instruction fxch est une instruction de registre à re- gistre, la dépendance dans la mémoire ne s'applique pas Le sous- ensemble d'instructions à virgule flottante, que l'on peut apparier dans n'importe quel pipeline, est recensé ci- dessous dans le tableau 2 pour la forme de réalisation ac- tuellement préférée Toutes les instructions sont des ins- tructions à un vecteur. Tableau 2 Sous-ensemble d'instructions à virgule flottante pour l'appariement Instructions du pipeline u Instructions du pipeline v fsub fsqrt fld fxch fadd fdiv fchs fmul fnop ftst fcon fucom Bien que sans aucun doute de nombreux changements et modifications pouvant être apportés à la présente inven- tion apparaîtront à l'évidence aux spécialistes ordinaires de cette technique à la suite de la lecture de la descrip- tion précédente, on comprendra que des formes de réalisa- tion particulières représentées et décrites à titre d'illustration ne doivent être considérées en aucune ma- nière comme étant limitatives Par exemple, bien que la présente description ait indiqué un ensemble particulier de conditions et de règles qui doivent être satisfaites, on peut également se baser sur d'autres conditions sans sortir du cadre de la présente invention C'est pourquoi, toute référence aux détails des figures et schémas représentés n'est en aucune manière censée constituer une limitation à la présente invention. REVENDICATIONS 1 Système d'ordinateur apte à exécuter deux ins- tructions machine (I 1,I 2) en parallèle, caractérisé en ce qu'il comprend: des premiers et seconds moyens formant pipelines (u,v) de transmission d'instructions (I 1,I 2) pour exécuter des instructions machine, lesdits moyens formant pipelines étant utilisables pour exécuter n'importe quelle instruc- tion délivrée à partir d'un ensemble prédéterminé d'instructions, lesdits seconds moyens formant pipelines (v) étant seulement utilisables pour exécuter un sous-en- semble d'instructions provenant dudit ensemble prédéterminé d'instructions; des moyens ( 19) de contrôle de dépendance servant à identifier le registre de destination de la première ins- truction (Il) dans une séquence d'instructions, lesdits moyens de contrôle ( 19) déterminant également si ledit re- gistre de destination est utilisé pendant l'exécution de la seconde instruction dans ladite séquence, et, si ce n'est pas le cas, indiquant qu'une première condition est satis- faite; et des moyens ( 13,14) pour déterminer si lesdites première et seconde instructions de ladite séquence sont situées dans ledit sous-ensemble,, lesdits moyens de déter- mination indiquant qu'une seconde condition a été satis- faite lorsqu'à la fois lesdites première et seconde ins- tructions sont dans ledit sous-ensemble. des moyens ( 12,21,22) d'appariement d'instruc- tions pour délivrer lesdites première et seconde instruc- tions (I 1,I 2) en parallèle auxdits premiers et seconds moyens formant pipelines (u,v) chaque fois que lesdites première et seconde conditions sont satisfaites. 2 Système d'ordinateur selon la revendication 1, caractérisé en ce que lesdites première et seconde instruc- tions (I 1,I 2) sont délivrées dans un seul cycle d'horloge chaque fois que lesdites première et seconde conditions sont satisfaites. 3 Système d'ordinateur selon la revendication 1, dans lequel lesdits moyens ( 12,21,22) d'appariement d'instructions délivrent uniquement ladite première ins- truction de ladite séquence auxdits premiers moyens formant pipeline (u) chaque fois que l'une ou l'autre desdites pre- mière et seconde conditions n'est pas satisfaite. 4 Système d'ordinateur selon la revendication 3, caractérisé en outre en ce qu'il comprend des moyens ( 17) pour calculer la longueur combinée desdites première et se- conde instructions. Système d'ordinateur selon la revendication 4, caractérisé en ce que lesdites première et seconde instruc- tions comprennent chacune des instructions entières. 6 Système d'ordinateur selon la revendication 4, caractérisé en ce que lesdites première et seconde instruc- tions comprennent chacune des instructions à virgule flot- tante. 7 Système d'ordinateur comprenant une unité cen- trale de traitement pour l'exécution d'un programme consti- tué par une séquence d'instructions sélectionnées parmi un ensemble d'instructions, et une unité d'exécution pour exé- cuter lesdites instructions, caractérisé en ce que ledit système comprend: des premiers et seconds moyens formant pipelines (u,v) de transmission d'instructions pour exécuter ladite séquence d'instructions, des instructions multiples étant simultanément en chevauchement lors de l'exécution; des moyens décodeurs ( 12,13,14) pour décoder un couple d'instructions ( 11,I 2) provenant de ladite séquence pour produire des premier et second vecteurs de microcodes en vue de l'exécution réalisée respectivement dans lesdits premiers et seconds moyens formant pipelines (u,v) de transmission d'instructions; lesdits moyens décodeurs ( 12,13,14) comprenant des moyens pour déterminer si lesdites première et seconde instructions sont contenues dans un sous-ensemble prédéter- miné dudit ensemble d'instructions; des moyens de calcul ( 15,17) pour calculer la longueur de ladite première instruction et la longueur com- binée desdites première et seconde instructions; des moyens ( 19) pour déterminer qu'il n'existe aucune dépendance, dans un registre, entre les instructions dudit couple d'instructions, lesdits moyens de détermina- tion produisant un signal chaque fois qu'une dépendance existe; des moyens de multiplexage ( 21,22) servant à dé- livrer lesdits premier et second vecteurs de microcodes et ladite longueur combinée à ladite unité d'exécution chaque fois que ledit signal est reçu et que lesdites première et seconde instructions sont contenues dans ledit sous-en- semble prédéterminé, lesdits moyens de multiplexage déli- vrant, sinon, ladite première instruction de microcode dans ladite longueur. 8 Système selon la revendication 7, caractérisé en ce que lesdites première et seconde instructions sont exécutées au cours d'un seul cycle d'horloge dudit système chaque fois que ledit signal est reçu par lesdits moyens de multiplexage ( 21,22) et que lesdites première et seconde instructions sont contenues dans ledit sous-ensemble prédé- terminé. 9 Système selon la revendication 8, caractérisé en ce que lesdites première et seconde instructions com- prennent des instructions entières. Système selon la revendication 8, caractérisé en ce que lesdites première et seconde instructions com- prennent des instructions à virgule flottante.