FR2801693A1 - Procedes et appareils pour detecter la presence eventuelle d'exceptions - Google Patents

Procedes et appareils pour detecter la presence eventuelle d'exceptions Download PDF

Info

Publication number
FR2801693A1
FR2801693A1 FR0010683A FR0010683A FR2801693A1 FR 2801693 A1 FR2801693 A1 FR 2801693A1 FR 0010683 A FR0010683 A FR 0010683A FR 0010683 A FR0010683 A FR 0010683A FR 2801693 A1 FR2801693 A1 FR 2801693A1
Authority
FR
France
Prior art keywords
instruction
floating point
low
data
fraction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR0010683A
Other languages
English (en)
Inventor
Kevin David Safford
Patrick Knebel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of FR2801693A1 publication Critical patent/FR2801693A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

L'invention concerne un procédé de test d'exceptions. Il comprend les étapes consistant à : fournir des données à traiter; exécuter (200) 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 (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. Il peut comprendre aussi l'étape consistant à appeler (220) un gestionnaire si une exception non masquée survient. L'invention concerne aussi un système correspondant.

Description

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.

Claims (10)

<U>REVENDICATIONS</U>
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.
FR0010683A 1999-11-26 2000-08-17 Procedes et appareils pour detecter la presence eventuelle d'exceptions Withdrawn FR2801693A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/449,846 US6681322B1 (en) 1999-11-26 1999-11-26 Method and apparatus for emulating an instruction set extension in a digital computer system

Publications (1)

Publication Number Publication Date
FR2801693A1 true FR2801693A1 (fr) 2001-06-01

Family

ID=23785725

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0010683A Withdrawn FR2801693A1 (fr) 1999-11-26 2000-08-17 Procedes et appareils pour detecter la presence eventuelle d'exceptions

Country Status (2)

Country Link
US (1) US6681322B1 (fr)
FR (1) FR2801693A1 (fr)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925552B2 (en) * 2001-06-19 2005-08-02 Hewlett-Packard Development Company, L.P. Method and system with multiple exception handlers in a processor
US7000226B2 (en) * 2002-01-02 2006-02-14 Intel Corporation Exception masking in binary translation
US20050149913A1 (en) * 2003-12-29 2005-07-07 Yun Wang Apparatus and methods to optimize code in view of masking status of exceptions
US7587580B2 (en) * 2005-02-03 2009-09-08 Qualcomm Corporated Power efficient instruction prefetch mechanism
US7516304B2 (en) 2005-03-10 2009-04-07 International Business Machines Corporation Parsing-enhancement facility
US7363471B2 (en) * 2005-06-27 2008-04-22 Intel Corporation Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism
US9747118B2 (en) * 2009-01-06 2017-08-29 Intel Corporation Guest-specific microcode
CN112346783B (zh) * 2020-11-05 2022-11-22 海光信息技术股份有限公司 一种处理器及其操作方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0552717A2 (fr) * 1992-01-20 1993-07-28 Kabushiki Kaisha Toshiba Système et procédé de traitement de données utilisant un sytème à mémoire virtuelle
EP0947917A2 (fr) * 1998-03-31 1999-10-06 Intel Corporation Procédé et appareil à traitement des exceptions imprécis

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8507610D0 (en) * 1985-03-23 1985-05-01 Int Computers Ltd Data processing apparatus
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5859999A (en) 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US6233671B1 (en) * 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0552717A2 (fr) * 1992-01-20 1993-07-28 Kabushiki Kaisha Toshiba Système et procédé de traitement de données utilisant un sytème à mémoire virtuelle
EP0947917A2 (fr) * 1998-03-31 1999-10-06 Intel Corporation Procédé et appareil à traitement des exceptions imprécis

Also Published As

Publication number Publication date
US6681322B1 (en) 2004-01-20

Similar Documents

Publication Publication Date Title
US8381203B1 (en) Insertion of multithreaded execution synchronization points in a software program
TWI522915B (zh) 客戶返回位址堆疊仿真支持推測的方法與裝置
US7774636B2 (en) Method and system for kernel panic recovery
US10891120B2 (en) Performing a compiler optimization pass as a transaction
JP2004021981A (ja) イメージベースのソフトウェアインストール
GB2518289A (en) A modified return stack buffer
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
EP1860563A1 (fr) Point de contrôle clairsemé et reprise
EP2880588B1 (fr) Systeme de detection de modification d&#39;une pile d&#39;appel de sous-programme
EP1830264A1 (fr) Procédé et dispositif de sauvegarde et de restauration d&#39;une manière interruptible d&#39;un ensemble de registres d&#39;un microprocesseur
FR2801693A1 (fr) Procedes et appareils pour detecter la presence eventuelle d&#39;exceptions
US20100312865A1 (en) Asynchronous update of virtualized applications
EP1881404A1 (fr) Procédé de protection dynamique des données lors de l&#39;exécution d&#39;un code logiciel en langage intermédiaire dans un appareil numérique
FR2569288A1 (fr) Dispositif de calcul d&#39;adresse pour un appareil de traitement numerique
US6567977B1 (en) Method and apparatus for software program installation preview directed to system software
US20200218635A1 (en) Logging stored information for identifying a fix for and/or a cause of an error condition
JPH096612A (ja) カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置
US7779407B2 (en) Computer-hardware, life-extension apparatus and method
US12073229B2 (en) Single node deployment of container platform
EP2585931A1 (fr) Dispositif, chaine et procédé de traitement de données, et programme d&#39;ordinateur correspondant
JP2008015638A (ja) データ処理装置
EP1821197A2 (fr) Dispositif de traitement en notation polonaise inversée, et circuit intégré électronique comprenant un tel dispositif de traitement
US10884763B2 (en) Loading new code in the initial program load path to reduce system restarts
US8533820B2 (en) Reserved write positions on install media
US10296337B2 (en) Preventing premature reads from a general purpose register

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20080430