Brevet FR2801693A1 — publié le 20010601

La présente invention concerne des systèmes informatiques, ou systèmes d'ordinateurs, numériques, et plus particulièrement, mais de façon non limitative, des procédés et appareils d'exécution d'instructions dans de tels systèmes. Les extensions à données multiples à instruction unique en continu, ou SSE selon les initiales du terme anglo-saxon Streaming Single-Instruction Multiple-Data Extensions, ont été développées pour améliorer l'ensemble d'instructions de la dernière génération de certaines architectures informa tiques, par exemple l'architecture IA-32. SSE incluent un nouvel ensemble de registres, de nouveaux types de données à virgule flottante et de nouvelles instructions. Spécifiquement, les SSE comprennent huit registres à virgule flottante de 128 bits, désignés par XMMO à XMM7, qui sont à données multiples et à instruction unique ou SIMD selon les initiales du terme anglo-saxon single-instruction multiple data, et qui peuvent être utilisés pour exécuter des calculs et des opérations sur des données à virgule flottante. Ces registres XMM sont représentés à la Figure 1A. Chaque registre à virgule flottante de 128 bits peut contenir quatre nombres compactés à virgule flottante de 32 bits, sont à précision unique ou à SP selon les initiales du terme anglo-saxon single précision. La structure des nombres compactés à virgule flottante à SP de 32 bits est illustrée dans l'exemple de la Figure 1B où quatre nombres, numérotés de 0 à 3, à virgule flottante à SP de 32 bits sont représentés comme s'ils étaient mémorisés dans le registre XMM2 SSE. Dans des architectures conçues pour prendre en charge les SSE, c'est-à-dire dans leur architecture native, une instruction unique de l'ensemble d'instructions de SSE intervient en parallèle sur les quatre nombres à virgule flottante à SP de 32 bits dans un registre XMM particulier. Les SSE incluent aussi un registre d'état et de commande appelé le registre MXCSR. Le format du MXCSR est illustré à l'exemple de la Figure. 1C. Le registre MXCSR peut être utilisé pour masquer sélectivement des exceptions ou ne pas les masquer. Spécifiquement, les bits 7 à 12 du registre MXCSR peuvent être utilisés par un programmeur pour masquer sélective ment une exception particulière ou ne pas la masquer. Des exceptions masquées sont les exceptions qu'un programmeur souhaite voir traitées automatiquement par le processeur qui peut envoyer une réponse par défaut. En revanche, les exceptions non masquées sont les exceptions que le programmeur souhaite voir traitées par appel d'une interruption ou par un gestionnaire du système d'exploitation. Cet appel du gestionnaire trans fère la commande au système d'exploitation, par exemple Windows de Microsoft, où problème peut être corrigé ou le programme peut être terminé. Le registre MXCSR peut aussi être utilisé pour garder un suivi de l'état de drapeaux d'exception. Les bits 0 à 5 du registre du MXCSR indiquent s'il est survenu, dans une exécution d'instruction de SSE, l'une quelconque de six exceptions sont - opération invalide désignée par I, - division zéro, désignée par Z, - opérande dénormal, désignée par D, débordement numérique, désignée par 0, - insuffisance numérique, désignée par U, et - résultat inexact désigné par P. II faut noter que tous les drapeaux d'exception ont été levés dans l'exemple de la Figure 1C pour une raison ou pour une autre, comme indiqué par "E". Les drapeaux d'état sont "collants" : ce terme signifie que, dès lors qu'ils ont été mis à un, ils ne sont pas remis à zéro par une quel conque instruction ultérieure de SSE, même une instruction effectuée sans exception. Des drapeaux d'état ne peuvent être mis à zéro que par une instruction spéciale habituellement envoyée par le système d'exploitation. Les drapeaux d'exception de la Figure 1C sont le résultat d'une opéra tion logique OU au niveau du bit sur chacun des quatre nombres à virgule flottante à SP de 32 bits, ces opérations étant exécutées sur un registre particulier de bits, le registre XMM, une opération étant effectuée sur chacun des quatre nombres à virgule flottante à SP de 32 bits. Par conséquent, si exception survient en ce qui concerne l'un quelconque des nombres ' virgule flottante à SP de 32 bits, le drapeau d'exception qui concerne ce particulier d'exception est levé, ce qui indique qu'un certain type de problème est survenu dans le système. Les exceptions d'opération invalide (I), de division par zéro (Z) et d'opérande dénormal (D) sont des exceptions préalables aux calculs, ce qui signifie qu'elles sont détectées avant que des opérations arithmétiques ou logiques ne surviennent, c'est-à-dire qu'elles peuvent être détectées sans effectuer aucun calcul. Les trois autres exceptions, de débordement numérique (0), d'insuffisance numérique (U) et de résultat inexact (P) sont des exceptions postérieures aux calculs, ce qui signifie qu'elles sont détectées après l'exécution des opérations. II est possible qu'une opération effectuée sur un sous opérande, c'est-à-dire l'un des quatre opérandes dans un registre de bits, lève de multiples drapeaux. L'architecture native des SSE possède les règles suivantes pour exceptions 1. Lorsque l'une des exceptions non masquées survient, le processeur exécute l'instruction ne modifie pas le contenu du registre XMM. En d'autres termes, aucun des résultats ne sera enregistré ou mémorisé avant qu'il ne soit connu qu'aucune exception non masquée n'est survenue en ce qui concerne l'un quelconque des nombres à virgule flottante à SP de 32 bits. 2. existe une exception masquée, tous les drapeaux d'exception sont mis à jour. 3. En cas d'exceptions non masquées préalables aux calculs, tous les peaux qui concernent des exceptions préalables aux calculs, elles soient masquées ou non masquées, sont mis à jour. Mais aucun calcul ultérieur n'est permis, ce qui signifie qu'aucune exception après execu tion ne peut survenir, ni ne survient. Ceci signifie évidemment aucun drapeau d'exception après exécution n'est modifié ou mis à jour. 4. Dans le cas d'exceptions non masquées postérieures aux calculs, toutes les conditions après exécution, qu'elles soient masquées ou masquées, sont mises à jour, comme le sont toutes les exceptions préalables aux calculs. Toutes les exceptions préalables aux calculs sont des exceptions masquées seulement parce que, si l'exception préalable aux calculs n'était pas masquée, aucun calcul additionnel n'aurait ' ' permis selon la règle numéro 3 ci-dessus. Des informations complémentaires concernant les extensions à données multiples à instruction unique en continu, ou Streaming SIMD Extensions comme indiqué plus haut, peuvent être trouvées dans le document Intel Architecture Software Developer's Manual, c'est-à-dire le Manuel du developpeur de logiciel à architecture Intel, Volumes 1 à 3, qui est incorporé ici par référence. Dans nombreuses architectures, rien n'est prevu pour les instructions de SSE. Ces architectures non natives n'incluent pas les huit registres XMM à virgule flottante de 128 bits susceptibles de contenir quatre nombres à virgule flottante à SP de 32 bits. Dans certaines architectures non natives, les huit registres XMM de 128 bits peuvent être appliqués sur seize registres à virgule flottante, par exemple des registres 64, dont la largeur peut être inférieure à 128 bits et supérieure à bits. Spécifi quement, pour contenir deux nombres à virgule flottante à de 32 bits, certaines architectures utilisent des registres à 82 bits dans lesquels les bits en excès par rapport à 64 peuvent être utilisés pour le codage spécial utilisé pour indiquer que le registre contient des nombres à virgule flottante à SP de 32 bits type SIMD. Un exemple est représenté à la Figure 1D. II y a lieu de noter que les quatre nombres, 0 à 3, à virgule flottante à SP de 32 bits mémorisés dans le registre XMM2 de l'environnement natif de SSE, représenté a Figure 1D, sont maintenant mémorisés dans deux registres de 82 bits, appelés XMM2 Low et XMM2_High, où Low et High désignent respectivement bas et haut, qui contiennent la "moitié basse" du registre XMM2 et la moitié haute" du registre XMM2, respectivement. Ceci rend difficile une exécution parallèle d'une opération sur chacun des quatre nombres à virgule flottante à SP de 32 bits. Dans cet environnement non natif, les instructions de doivent donc être exécutées par émulation. Spécifiquement, des opérations peuvent être exécutées en premier lieu en parallèle, sur deux des quatre nombres à virgule flottante à SP de 32 bits, et être exécutées ensuite, ici aussi en parallèle, sur les deux nombres restants à virgule flottante à SP de 32 bits. En variante, des opérations peuvent être exécutées sur un seul ou sur moins trois des nombres à virgule flottante à SP de 32 bits. Par exemple, une opération peut être exécutée sur les opérandes de la "moitié basse" XMM2_Low et ensuite sur la "moitié haute", XMM2_High. Étant donné règles des SSE pour traiter des exceptions et mettre à jour des drapeaux d'exception, des problèmes se posent cependant lorsque des instructions de SSE sont émulées de cette manière, en partie parallèle et en partie séquentielle. Considérons par exemple un ensemble d'instructions en cours d'exécution sur la moitié basse et la moitié haute de la Figure 1D XMM2: = OP(XMM3, XMM4) émulées par XMM2_Low: = OP (XMM3_Low, XMM4 Low) XMM2_High: = OP (XMM3_High, XMM4 High) Supposons que la première instruction est exécutée sans exception non masquée en ce qui concerne les opérandes dans les deux moitiés, XMM3 Low et XMM4 Low. Les résultats de cette opération sont ensuite enregistrés de façon appropriée dans XMM2_Low. Supposons maintenant que l'exécution de la deuxième instruction sur les moitiés hautes provoque une exception non masquée préalable aux calculs. Selon les règles des SSE, aucune opération ultérieure ne doit être exécutée sur l'un quelconque des quatre nombres à virgule flottante à SP de 32 bits en raison de cette exception non masquée préalable aux calculs. Maïs les résultats de l'opération sur les deux moitiés ont déjà été enregistrés ici dans le registre XMM2_Low en violation des règles des SSE. Ceci corrompt les données de XMM2_Low et ne peut pas être autorisé. Pour émuler les SSE avec succès et empêcher cette violation des règles, une méthode consiste à utiliser un mécanisme de registre "en double", ou shadow selon le terme anglo-saxon. Dans un mécanisme de registre en double, les résultats d'une opération précédente réussie sur les deux moitiés sont mémorisés physiquement dans un registre en double. Dans ce cas, dans l'exemple ci-dessus, lorsque l'exception est détectée sur les moitiés hautes, les résultats mémorisés précédemment dans le registre en double pour l'opération précédente sur les moitiés basses peuvent être restaurés, c'est ' dire qu'une opération "défaire" ou "undo" selon le terme anglo-saxon exécutée sur les moitiés basses. Mais ce mécanisme de registre en double est relativement complexe. Dans la plupart des systèmes, il faut au moins 16 registres disponibles pour mémoriser les resultats d'une opération précédente effectuée sur les moitiés basses, et chacun d'eux doit pouvoir mémoriser deux nombres à SP à virgule flottante de 32 bits. De plus, lorsqu'une opération "défaire" est requise, il faut déterminer ceux des registres en double dans lesquels les résultats souhaités se trouvent. Ce mécanisme consomme de l'espace de registre de haute valeur qui pourrait, dans le cas contraire, être utilisé de façon plus efficace. II faut en outre un système relativement compliqué de pointeurs et d'applications virtuelles pour mémoriser les résultats précédents. Pour émuler une instruction de SSE particulière, une autre méthode consiste à agencer un mécanisme de registres à temporisation. L'homme de l'art réalise que techniques peuvent exiger une série de registres, une combinaison de multiplexeurs et de démultiplexeurs, divers autres éléments matériels et nouvel ensemble d'instructions. Tout ceci augmente les coûts et réduit rendement. Pour émuler une instruction de SSE particulière, une autre méthode encore consiste à exécuter l'instruction en ce qui concerne chacun des quatre nombres ' virgule flottante à SP de 32 bits du registre SSE XMM, un à la fois, et à mémoriser les résultats de chaque exécution dans des registres temporaires. Lorsque l'instruction a été exécutée pour les quatre nombres à virgule flottante à SP de 32 bits, et qu'aucune exception non masquée n'est survenue, les résultats peuvent être enregistrés à l'empla cement architectural approprié et les drapeaux d'exception peuvent être mis à jour. Ce procedé d'émulation exige d'ajouter une séquence de micro- codes relativement complexe et d'utiliser des éléments matériels qui pourraient dans le cas contraire être utilisés de façon plus efficace et il consomme en outre une quantité importante de cycles d'horloge pour exé cuter une instruction quatre fois avant qu'aucun résultat ne puisse être enregistré. C'est donc un premier but de l'invention que fournir, pour remédier à ces inconvénients, des procédés et des appareils d'émulation d'un ensemble d'instructions de SSE, et d'autres ensembles d'instructions, qui utilisent efficacement des éléments matériels existants et consomment relativement peu de cycles d'horloge. C'est un but additionnel de l'invention que fournir un procédé et un appareil qui déterminent si certains problèmes peuvent survenir dans l'exé cution d'une série d'instructions, sans enregistrer résultats des instructions. Selon un premier aspect, la présente invention fournit un procédé de test d'exceptions, caractérisé en ce qu'il comprend étapes consistant à - fournir des données à traiter ; - exécuter en ce qui concerne une première fraction des données une première instruction dont l'exécution produit des résultats, sans enregistrer les résultats de la première instruction exécutée ; - si aucune exception non masquée ne survient en ce qui concerne la première fraction des données, exécuter ce qui concerne une deuxième fraction des données une deuxième instruction dont l'exécution produit des résultats ; - si aucune exception non masquée ne survient en ce qui concerne la deuxième fraction des données, enregistrer les résultats de la deuxième instruction exécutée et exécuter de nouveau la première instruction en ce qui concerne la première fraction des données, et enregistrer les résultats de la première instruction exécutée. Le procédé peut comprendre en outre l'étape consistant à appeler un gestionnaire si une exception non masquée survient. Un tel procédé dans lequel des exceptions possèdent un état peut comprendre en outre l'étape consistant à mémoriser une fraction sélectionnée de l'état d'exceptions telles qu'elles existent avant l'exécution de la première instruction. Le procédé peut alors comprendre en outre les étapes consistant à déterminer si une exception masquée postérieure aux calculs est survenue lorsque la première instruction est exécutée et si un calcul préalable non masqué est survenu lorsque la deuxième instruction est exécutée , et si l'exception masquée postérieure aux calculs et le calcul non masqué sont survenus, restaurer en partie la fraction sélectionnée de l'état d'exceptions. Un procédé dans lequel des exceptions peuvent être des pièges ou des défaillances peut comprendre en outre l'étape consistant à reclasser les pièges comme défaillances. On peut prévoir que le procédé est mis en application dans un système qui émule un ensemble d'instructions de SSE. Selon un deuxième aspect, l'invention réalise un système informatique comprenant : un processeur qui comprend : une unité à virgule flottante ; une mémoire morte ; et une série de registres à virgule flottante ; et caracterisé en ce que le processeur est configuré de façon à émuler un jeu d'instructions en mettant en oeuvre les étapes suivantes : exécuter une première opération sur le contenu d'un premier registre à virgule flottante ; effectuer une deuxième opération sur le contenu d'un deuxième registre à virgule flottante, à moins qu'un type prédéterminé de problèmes ne se pose en ce concerne l'opération sur le contenu du premier registre à virgule flottante - et exécuter de nouveau la première opération sur le contenu du registre à virgule flottante. contenus du premier et du deuxième registres à virgule flottante peuvent corréler avec un registre à virgule flottante SSE XMM. système peut comprendre en outre un registre destiné à mettre à jour l'état de problèmes qui surviennent pendant l'exécution d'une instruction. Dans ce cas le système peut comprendre en outre une instruction destinée a restaurer un sous-ensemble sélectionné de l'état de problèmes. Les buts, particularités et avantages de la présente invention exposés ci-dessus ainsi que d'autres ressortiront davantage de la description qui suit de modes de réalisation préférés en conjonction avec les dessins dans lesquels - Les Figures 1A à 1D constituent un schéma fonctionnel de composants des SSE ; - la Figure est un schéma fonctionnel d'un système informatique qui inclut la présente invention ; - la Figure est un schéma fonctionnel du processeur de la Figure ; et - la Figure 4 est un schéma logique de certaines fractions du fonctionnement de la présente invention. Afin de faciliter la compréhension de la présente invention, la description suit décrira en premier lieu un mode de réalisation actuellement préféré de la présente invention, puis exposera son mode de fonctionnement. La Figure 2 illustre un système informatique 10, dans lequel la présente invention peut être mise en application. Le système informatique 10 comprend au moins un processeur 20, une mémoire principale et divers bus de connexions de données, d'adresses et de commande, désignés collectivement par la référence 40. Un ensemble d'instruction 50, qui peut inclure les SSE, et un système d'exploitation 60 peuvent être mémorisés dans la mémoire principale 30. Comme illustré à la Figure 3, le processeur 20 comprend une unité 70 à virgule flottante, une mémoire morte ou ROM de micro-codes 100, divers bus et interconnexions désignées collectivement par la référence 110 et un fichier 120 de registres qui comprend les seize registres à virgule flottante, XMMO_Low à XMM7 High, nécessaires pour émuler les registres SSE XMM. Dans un mode de réalisation, les seize registres à virgule flottante sont des registres à 82 bits, mais d'autres largeurs, par exemple 128 bits ou 64 bits, peuvent être utilisées et la description qui suit, exposée en termes de registres à 82 bits, ne l'est qu'à titre d'exemple et ne doit pas être comprise dans un sens limitatif. Les quatre nombres à virgule flottante à SP de 32 bits des SSE peuvent être mémorisés dans deux des registres à virgule flottante à SP à 82 bits de la présente invention, par exemple XMM2_Low et XMM2_High, comme illustré à la Figure 1D. L'unité 70 à virgule flottante comprend un premier registre 130 de 32 bits qui correspond au registre MXCSR des SSE et un deuxième registre 170 de 6 bits au moins, un bit correspondant à chaque type d'exception, pour exécuter les opérations de prise en charge de drapeau décrites ci-dessous. Des instructions sont envoyées au processeur à partir de la mémoire principale 30. Les instructions envoyées au processeur 20 sont des instructions de macro-code qui s'appliquent sur une plusieurs ins tructions 140 de micro-codes mémorisées dans la mémoire morte 100 de micro codes. Les instructions de micro-codes peuvent être exécutées directement par le processeur 20. Dans la mémoire morte 100 de micro- codes est également mémorisé un ensemble de gestionnaires 150 de micro- codes qui peuvent être appelés pour gérer certaines exceptions non masquées de processeur. L'architecture du processeur peut être en pipeline et elle peut permettre de traiter en parallèle certaines instructions. Pour décrire le fonctionnement de ce mode de réalisation, on va d'abord traiter l'émulation et l'enregistrement des résultats, puis les drapeaux d'état et terminer par quelques remarques. Lors d'une émulation d'une instruction de SSE dans son environnement natif, processeur peut recevoir l'instruction suivante macro-code. XMM2:=OP (XMM3, XMM4) ou OP est l'instruction particulière de SSE à executer sur les quatre nombres à virgule flottante à SP de 32 bits mémorisés dans le registre XMM2 à virgule flottante de 128 bits. Cette instruction de intervient sur les contenus des registres XMM3 et XMM4 et les enregistre dans le registre XMM2. Pour exposer ce procédé de fonctionnement, on traitera d'abord l'émulation et l'enregistrement des résultats, puis les drapeaux d'état et enfin quelques remarques seront précisées à ce sujet. Afin d'émuler avec succès cette instruction dans une architecture non native sans violer aucune des règles des SSE concernant exceptions, la présente invention envoie les instructions suivantes en micro-code - TMP:= OP (XMM3 Low, XMM4_Low) ; - XMM2_High:= OP (XMM3 High, XMM4_High) ; - XMM2 Low:= OP (XMM3_Low, XMM4_Low). Le fonctionnement du système informatique 10 par rapport à ces instructions est illustré à la Figure 4. Le but de la première instruction est de déterminer si une exception non masquée quelconque surviendra tandis que l'opération OP est exécutée sur les moitiés basses XMM3_Low et XMM4_ Low. Voir case 200 de la Figure 4. II faut noter qu'aucun résultat n'est enregistré par cette opération dans registre architectural ; en fait, les résultats de l'opération ne sont pas pertients et la première instruction les écrit simplement dans un registre temporaire. À la case 210, il est détermine si une exception non masquée est survenue et, si tel est le cas, un gestionnaire 150 de micro-codes est appelé à la case 220 et c'est là que l'exception non masquée est traitée. En revanche, si aucune exception non masquée n'est survenue, le système peut mettre en oeuvre les opérations suivantes : (1) mettre à jour tous les drapeaux d'état d'exception à la case 230 selon les règles de SSE et (2) passer sans risque à la case 240 à l'exécution de la deuxième instruction, en sachant qu'aucune exception non masquée n'est survenue, et que les règles des SSE ne sont donc pas violées l'exécution de l'opération sur les moitiés hautes, et l'enregistrement éventuel de leurs résultats. À la case 250, il est déterminé si une exception non masquée survient sur les moitiés hautes et, si tel est le cas, l'opération est transférée à un gestionnaire 150 de micro-codes, à la case 220. En revanche, si la case 250 indique qu'aucune exception non masquée n'est survenue dans la deuxième instruction, les opérations suivantes sont mises en oeuvre : (1) des drapeaux d'exception sont mis à jour à la case 260 et (2) les résultats de l'opération sur les moitiés hautes sont enregistrés en toute sécurité, à la case 270, dans le registre XMM2_High. À cet instant, il est connu que les résultats de l'opération entière peuvent être enregistrés sans violer les règles de SSE, c'est-à-dire qu'il est connu qu'aucune exception non masquée ne survient dans aucune moitiés basse et haute. À la case 280, la troisième instruction est par conséquent "exécutée de nouveau" après avoir été exécutee précédemment comme première instruction, et les résultats de l'opération sur les moitiés basses sont enregistrés dans le registre XMM2 Low. On va maintenant traiter la question des drapeaux d'état. Lors de l'exécution des instructions précédentes, il est possible qu'une exception masquée après exécution survienne sur la moitié basse, c'est-à-dire qu'elle survient lors de l'exécution de la première instruction, et qu'une exception masquée avant exécution survienne dans la même opération sur la moitié haute, c'est-à-dire qu'elle survient lors de l'exécution de la deuxième instruction. Si tel est le cas, un drapeau d'exception masquée après execution est levé dans le registre 130 parce que les drapeaux d'état sont mis à jour, bien que les résultats ne soient pas enregistrés dans l'exécution de première instruction. Cependant, puisqu'une exception non masquee avant exécution survient sur la moitié haute, lever le drapeau d'état viole règle de SSE qui indique qu'aucun drapeau après exécution ne peut être lève s'il survient une défaillance non masquée avant exécution. Pour traiter cette situation, un mécanisme de sauvegarde de drapeaux peut être utilisé. Dans le présent système, les drapeaux d'exception sont chargés dans le registre 170 de l'unité 70 à virgule flottante avant la mise a jour des drapeaux d'état par le processeur 20. Le registre 170 intervient alors comme registre de sauvegarde et sa largeur est de 6 bits, un bit pour chaque type d'exception. Lorsque le système informatique détermine que la situation exposée ci-dessus est survenue, il est possible d'envoyer instruction qui restaure les drapeaux d'exception à leur état précédent reflété dans le registre 170. Cette instruction peut décider dynamiquement celui ou ceux des drapeaux d'état à restaurer : chaque drapeau peut etre sauvegardé indépendamment. Comme indiqué précédemment, l'exposé ci-dessus donne lieu à quelques remarques. Deux des types d'exceptions sont respectivement des "défaillances" et des "pièges". Â la différence des défaillances, des pièges permettent d'enregistrer des résultats d'opérations. Ceci violerait la règle des SSE selon laquelle les résultats ne peuvent pas être enregistrés s'il survient une exception non masquée après exécution. Pour assurer un fonctionnement correct, des exceptions classées comme pièges peuvent donc, dans certains modes de réalisation de la présente invention, être reclassées comme défaillances dans l'unité 70 à virgule flottante. Dans de nombreuses architectures, des drapeaux d'état sont envisagés lorsqu'une défaillance survient. En revanche, dans l'un des modes de réalisation la présente invention, les éléments matériels associés, par exemple le processeur 20, ne mettent pas à jour les drapeaux d'état. À la Figure 4, cases 210 et 250, les drapeaux d'état ne sont donc pas mis à jour lorsqu'il survient une exception non masquée qui est une défaillance. Ceci augmente l'efficacité du système quant à sa vitesse élimine le besoin d'un code itionnel nécessaire pour "temporiser" ou "défaire" l'état des drapeaux d'état si une défaillance survient dans l'exécution de la première instruction à la case 200 ou de la deuxième instruction à case 240. L'homme de l'art voit que la présente invention permet une émulation réussie des SSE sans addition de quantités excessives d'éléments matériels, sans utilisation inefficace des éléments matériels existants, et sans consommation de grandes quantités de cycles d'horloge. Utiliser les trois instructions de micro-codes exposées ci-dessus permet en particulier d'éviter de mettre en application des registres compliqués en double ou des mécanismes compliqués de temporisation de registres. Dans d'autres modes de réalisation, la présente invention peut être utilisée pour détecter la présence éventuelle d'exceptions survenues, pour une raison quelconque, sans enregistrer les résultats d'opérations. Cet aspect de la présente invention peut offrir des applications très larges, y compris exemple émuler une instruction différente ou mettre au point un système particulier. II ressort en outre directement à l'homme de l'art que d'innombrables variantes modifications, applications et extensions ces modes de réalisation et de ces principes peuvent être mises en ceuvre sans s'écarter des principes et de l'esprit de l'invention. Par exemple, les techniques décrites ici peuvent être utilisées pour émuler d'autres extensions d'ensembles d'instructions. Les techniques décrites ici peuvent aussi être utilisées pour émuler les SSE dans des systèmes à registres autres que les registres à 82 bits pour mémoriser les quatre nombres a virgule flottante à SP de 32 bits des registres SSE XMM. Dans un autre mode de réalisation, le mécanisme de sauvegarde de drapeau peut être un mécanisme sélectif dans lequel un concepteur de système ou une instruction sélectionne celui ou ceux des drapeaux d'état faut sauvegarder pour une restauration éventuelle. Par conséquent, le cadre l'invention ne doit être limité selon les besoins que par les revendications annexées. REVENDICATIONS 1. Procédé de test d'exceptions caractérisé en ce qu'il comprend les étapes consistant à - fournir des données à traiter ; - exécuter (200) en ce qui concerne une première fraction données une première instruction dont l'exécution produit des résultats, sans enregistrer les résultats de la première instruction exécutée , - si aucune exception non masquée ne survient (210, 230) en ce qui concerne la première fraction des données, exécuter (240) en ce qui concerne une deuxième fraction des données une deuxième instruction dont l'exécution produit des résultats ; - si aucune exception non masquée ne survient (250, 260) en ce qui concerne la deuxième fraction des données, enregistrer (270) les résultats de la deuxième instruction exécutée et exécuter de nouveau (280) la première instruction en ce qui concerne la première fraction des données, et enregistrer les résultats de la première instruction exécutée. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à appeler (220) un gestionnaire si une exception non masquée survient. 3. Procédé selon la revendication 1, dans lequel des exceptions possèdent un état, le procédé étant caractérisé en ce qu'il comprend en outre l'étape consistant à mémoriser (170) une fraction sélectionnée de l'état d'exceptions telles qu'elles existent avant l'exécution de première instruction. 4. Procédé selon la revendication 3, caractérisé en ce qu' comprend en outre les étapes consistant à : déterminer (10) si une exception masquée postérieure aux calculs est survenue lorsque la première instruction est exécutée et si un calcul préalable non masqué est survenu lorsque la deuxième instruction est exécutée ; et si l'exception masquée postérieure aux calculs et le calcul préalable non masqué sont survenus, restaurer en partie (170) la fraction sélectionnée mémorisée de l'état d'exceptions. 5. Procédé selon la revendication 1, caractérisé en ce des exceptions sont des pièges ou des défaillances et en ce que le procédé comprend en outre l'étape consistant à reclasser (20) les pièges comme defaillances. 6. Procédé selon la revendication 1, caractérisé en ce que le procédé mis en application dans un système (10) qui émule un ensemble d'instructions de SSE. 7. Système informatique (10) comprenant : un processeur ( ) qui comprend : une unité (70 ; 130, 170) à virgule flottante ; une mémoire morte (100) ; et une série de registres (120) à virgule flottante ; et caractérisé en ce que le processeur (20) est configuré de façon à émuler un jeu d'instructions en mettant en oeuvre les étapes suivantes : exécuter une première opération (XMM2 Low: = OP(XMM3_Low, XMM4_Low)) sur le contenu d'un premier registre (120) à virgule flottante ; exécuter une deuxième opération (XMM2_High: = OP(XMM3_High, XMM4_High)) sur le contenu d'un deuxième registre (120) à virgule flottante, à moins type prédéterminé de problèmes ne se pose en ce qui concerne l'opération (XMM2 Low: = OP(XMM3_Low, XMM4 Low)) sur le contenu du premier registre (120) à virgule flottante ; et exécuter de nouveau la premiere opération (XMM2 Low: = OP(XMM3_Low, XMM4_Low)) sur le contenu du premier registre (120) à virgule flottante. 8. Système informatique selon la revendication 7, caractérisé en ce que les contenus du premier et du deuxième registres (120) à virgule flottante se corrèlent avec un registre à virgule flottante SSE XMM. 9. Système informatique selon la revendication 7, caractérisé en ce qu'il comprend en outre un registre (170) destiné à mettre à jour l'état de problèmes qui surviennent pendant l'exécution d'une instruction. 10. Système informatique selon la revendication 9, caractérisé en ce qu'il comprend en outre une instruction destinée à restaurer (170) un sous- ensemble sélectionné de l'état de problèmes.