Brevet FR2804522A1 — publié le 20010803

Le domaine technique de la présente invention concerne des mécanismes et des procédés de test de microarchitectures informatiques ou, en d'autres termes, de microarchitectures d'ordinateurs. Le procédé préféré d'émulation d'un ensemble d'instructions sur un microprocesseur consiste â convertir chaque instruction émulée, c'est-à-dire chacune des macroinstructions, en une série d'instructions de l'ensemble natif d'instructions, c'est-à-dire de microinstructions. Ces séquences de micro- instructions sont mémorisées dans une mémoire de microcode. De plus, te microprocesseur peut envoyer des microinstructions qui ne sont disponibles pour utilisation que par des éléments matériels d'émulation et non pour un code fonctionnant dans le mode natif. Dans le cas des techniques classiques de test de l'ensemble d'instructions émulé, les rédacteurs de tests préparent des séquences de macroinstructions visibles par l'utilisateur. Les éléments matériels d'émulation traduisent les macroinstructions en microinstructions, qui sont ensuite exécutées. Afin de tester certaines particularités de microarchitectures, le rédacteur de test doit déterminer des séquences de macroinstructions nécessaires pour produire une séquence souhaitée de microinstructions. Les séquences de microinstructions peuvent être difficiles, ou même impossibles, à construire en n'utilisant que des macroinstructions. II peut de plus falloir une longue séquence de macro- instructions pour produire les opérandes ou l'état de machine souhaités, ce qui conduit à des tests excessivement longs. C'est donc le but de la présente invention que de fournir un appareil et un procédé de test d'une microarchitecture informatique où le rédacteur de test crée directement une séquence de test en micro! nstructions, tant en mode natif que du type destiné à l'émulation seulement. De façon générale, selon le procédé perfectionné de test de microarchitectures informatiques de la présente invention , un rédacteur de tests crée une séquence de tests écrite directement en microinstructions, qui sont à la fois des microinstructions en mode natif et des microinstructions destinées uniquement à l'émulation. Cette séquence spécifiée par l'utilisateur est ensuite insérée dans une mémoire reprogrammable de microcode, et remplace la séquence normale de microinstructions pour une macroinstruction donnée. Afin d'exécuter les microinstructions, le rédacteur de tests peut émettre la macroinstruction donnée. Le procédé peut être mis en application dans un modèle de simulation dans lequel un ensemble quelconque de micro- instructions contenues dans la mémoire reprogrammable de microinstructions peut être facilement remplacé. Le procédé peut également être appliqué à une mise en application réelle de microprocesseur. De façon plus spécifique, l'invention réalise selon un premier aspect, un appareil de test d'une microarchitecture informatique, comprenant - une mémoire reprogrammable de microcode, qui comprend - un microcode lié à une ou plusieurs macroinstructions, et - un microcode reprogrammé de test pour tester la microarchitecture informatique, caractérisé en ce que le microcode reprogrammé de test comprend une séquence de microinstructions exécutées pour tester la microarchitecture informatique. L'appareil peut comprendre en outre - un répartiteur qui reçoit la séquence de microinstructions et envoie des sorties ; et - des unités d'exécution qui reçoivent les sorties et exécutent des microinstructions. On peut prévoir que la microarchitecture informatique prenne en charge de multiples ensembles d'instructions. Selon un deuxième aspect, l'invention fournit un procédé de test d'une microarchitecture informatique caractérisé en ce qu'il comprend les étapes consistant à - reprogrammer un microcode pour le mémoriser dans une mémoire de microcode ; et - désigner une macroinstruction à exécuter, l'exécution lançant une séquence de test qui comprend le microcode reprogrammé. Le procédé peut comprendre en outre les étapes consistant à - envoyer le microcode reprogrammé à un répartiteur ; et - répartir le microcode reprogrammé à des unités spécifiées d'exécution pour l'exécution de la microinstruction. On peut prévoir, dans ce procédé aussi, que la microarchitecture informatique prenne en charge de multiples ensembles d'instructions. Selon un troisième aspect, l'invention fournit un procédé de test d'une microarchitecture informatique, caractérisé en ce qu'il comprend les étapes consistant à - appliquer une macroinstruction à une séquence particulière de micro! nstructions ; et - remplacer la séquence particulière de microinstructions par un ensemble arbitraire de microinstructions, l'ensemble arbitraire de microinstructions comprenant le test. Pour ce procédé également, on peut prévoir que la microarchitecture informatique prenne en charge de multiples ensembles d'instructions. Le procédé peut comprendre en outre l'étape consistant à émettre la macroinstruction pour exécuter les microinstructions de test. Par rapport à des procédés actuels de test de microarchitectures informatiques, le procédé offre les avantages suivants :. 1. le procédé permet une commande beaucoup plus précise de particu larités microarchitecturales, par exemple des opérandes, une synchronisation et un parallélisme, qui peuvent être très difficiles à atteindre au moyen de macroinstructions ; 2. le procédé permet d'écrire des tests plus efficacement ; 3. le procédé protège le rédacteur de tests contre des modifications du microcode ; et 4. le procédé permet au rédacteur de tests de tester des séquences d'événements qui ne sont pas possibles dans une conception ou structure mais qui peuvent être requises à des étapes ultérieures du processus de conception. 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 où des références numériques semblables désignent des particularités semblables et dans lesquels - la Figure 1 est un schéma fonctionnel d'un appareil utilisé pour tester des particularités microarchitecturaies ; - la Figure 2 est un schéma logique d'une mémoire reprogrammable de microcode ; et - la Figure 3 est un schéma logique du processus de conversion entre des macroinstructions et des microinstructions. Des architectures informatiques ou architectures d'ordinateurs à jeu complexe d'instructions, ou CISC selon les initiales du terme anglo-saxon complex instruction set computer, peuvent être extrêmement puissantes en ce que l'architecture d'ordinateur à jeu complexe d'instructions permet des méthodes compliquées et flexibles de calcul d'éléments, par exemple des adresses de mémoire. Les instructions de CISC, ou macroinstructions, peuvent inclure une ou plusieurs instructions de microcode. Au cours du développe ment d'un microprocesseur, un rédacteur de tests doit vérifier que les macro- instructions exécutées par le microprocesseur permettent d'obtenir le résultat souhaité. Mais, puisque les macroinstructions peuvent inclure de nombreuses microinstructions, il est possible que le rédacteur de tests ne puisse pas tester l'effet de chacune des instructions du microcode ou d'une séquence particu lière de microinstructions, en écrivant simplement un test en utilisant les macroinstructions. Le processus de rédaction d'une séquence appropriée de tests et de vérification du fonctionnement d'une structure de microprocesseur peut être compliqué lorsque le microprocesseur est conçu pour exécuter plus d'un ensemble d'instructions. Par exemple, un microprocesseur peut être conçu pour exécuter tant des instructions d'ordinateur à ensemble complexe d'instructions ou CISC, par exemple, IA-32, que des instructions d'ordinateur à ensemble réduit d'instructions ou RISC selon les initiales du terme anglo- saxon reduced instruction set computer, par exemple 1A-64. Dans cet exemple, le rédacteur de tests doit s'assurer que les instructions CISC sont correctement émulées au moyen de séquences souhaitées de microinstructions. Le rédacteur de tests doit en outre effectuer, pour la séquence de macroinstructions, une ingénierie inverse qui donne la séquence souhaitée de microinstructions qui est nécessaire pour tester un microprocesseur. Ceci peut être très difficile et exiger beaucoup de temps. Si le concepteur modifie ensuite le microcode du processeur, il est possible que le rédacteur de tests doive réviser le test pour récupérer le comportement d'origine prévu. Il est possible aussi que les comportements qui étaient possibles à l'origine dans le micro processeur soient rendus impossibles par des modifications de microcode ou vice versa. En rédigeant les tests directement en microcode, le rédacteur résout ces deux problèmes. De plus, lors des premières étapes de conception d'un microprocesseur, le concepteur doit réviser constamment le microcode utilisé pour émuler les macroinstructions. Ce faisant, le concepteur peut introduire de nouvelles séquences de microinstructions qui n'ont jamais été exécutées par le microprocesseur. Ceci peut conduire à la découverte de bogues latents. En utilisant des tests rédigés en microcode, des séquences de microcode qui sont impossibles dans le fonctionnement normal du microprocesseur peuvent être testées. Ceci permet aux concepteurs de créer une structure plus robuste qui tolère des modifications des séquences de microcode utilisées pour émuler les macroinstructions. Finalement, d'autres structures de commande d'éléments matériels de la microplaquette peuvent varier pendant les étapes de conception d'un micro processeur. Le concepteur doit ensuite déterminer si les modifications introdui sent des erreurs dans le comportement du microprocesseur. Cette tâche peut être facilitée pour le concepteur si la conception d'un microprocesseur peut être testée avec rapidité et précision. Utiliser des séquences de micro- instructions peut être une méthode efficace de test des nouvelles conceptions de microprocesseur. De plus, lors des premières étapes de conception d'un microprocesseur, le concepteur peut être en train de réviser constamment le microcode de base qui intervient sur le microprocesseur. Le concepteur doit ensuite déterminer si les modifications introduisent des erreurs dans le comportement du micro processeur. Cette tâche peut être facilitée pour le concepteur si la conception d'un microprocesseur peut être testée avec rapidité et précision. Utiliser des séquences de microinstructions peut être une méthode efficace de test des nouvelles conceptions de microprocesseur. La Figure 1 est un schéma fonctionnel d'un ensemble d'un appareil de test de microarchitectures informatiques qui utilise des tests rédigés en micro- code. Un appareil de test 1 inclut un applicateur 20 de macroinstruction en microinstructions. Cet applicateur 20 de macroinstruction en micro! nstructions reçoit une ou plusieurs macroinstructions 1 1 et envoie une sortie 31 à un séquenceur 30 de microinstructions. Le séquenceur 30 de micro! nstructions reçoit des entrées qui correspondent à des points d'entrée pour des événements différents 30 et une information d'état 32 provenant de la micro- architecture informatique ou du microprocesseur à tester. Le séquenceur 30 de microinstructions envoie une séquence 35 d'adresses de microcode à une mémoire 40 de microcode, qui est reprogrammable en totalité ou en partie par des moyens connus de l'homme de l'art. La séquence 30 de microinstructions peut être mise en application sous forme de machine d'état pour commander le fonctionnement de la mémoire reprogrammable 40 de microcode et commander ainsi la séquence de microinstructions qui sont ainsi exécutées. La mémoire reprogrammable 40 de microcode mémorise des instructions de microcode qui peuvent être émises pour émuler fa microinstruction particulière 11 entrée dans l'applicateur 20 de macroinstruction en micro- instructions. La mémoire reprogrammable 40 de microcode peut mémoriser un grand nombre de microinstructions. La mémoire reprogrammable 40 de microcode envoie une ou plusieurs microinstructions 4]i à un répartiteur 50 de microinstructions. Le répartiteur 50 de microinstructions envoie des microinstructions particulières 511 à des unités correspondantes d'exécution 611, pour l'exécu tion des microinstructions. Les unités d'exécution 61i sont des unités d'exécution en nombres entiers, des unités d'exécution à virgule flottante et des unités de dérivation, par exemple. Un reprogrammeur 70 de microcode est utilisé pour reprogrammer un microcode dans la mémoire reprogrammable 40 de microcode. Le repro- grammeur 70 de microcode peut être utilisé pour reprogrammer toute micro- instruction ou séquence de micro! nstructions. La séquence reprogrammée de microinstructions qui peut être toute séquence arbitraire de microinstructions constitue ensuite le test qui doit être mis en oeuvre sur la microarchitecture informatique. Le test peut être tancé en envoyant une macroinstruction à l'applicateur 20 de macroinstruction en microinstructions. La sortie résultante 35 du séquenceur 30 de microinstructions est utilisée dans la mémoire repro- grammable 40 de microcode pour exécuter la séquence reprogrammée de microinstructions. La Figure 2 est un schéma logique de la mémoire reprogrammable 40 de microcode. La mémoire reprogrammable 40 de microcode est représentée comme contenant un microcode pour un certain nombre de macro- instructions. Par exemple, la mémoire reprogrammable 40 de microcode inclut une séquence de microcode pour une macroinstruction ADDITIONNER 42, une séquence de microcode pour une macroinstruction DIVISER 43 et une séquence de microcode pour une macroinstruction SOUSTRAIRE 44. Comme noté ci-dessus, la mémoire reprogrammable 40 de microcode peut contenir des lignes de microcode beaucoup plus nombreuses que dans cet exemple. Déterminer quelles lignes particulières de microcode sont lues dans la mémoire reprogrammable 40 de microcode peut résulter de la sortie 35 du séquenceur 30 de microinstructions représenté à la Figure 1. La Figure 3 est un schéma logique qui représente la relation entre la macroinstruction et ses microinstructions correspondantes. À la Figure 3, une variante particulière d'une instruction ADDITIONNER 21, inclut des opérandes MEM, c'est-à-dire mémoire, et REG, c'est-à-dire registre. Dans ce cas, "mémoire" désigne tant l'opérande 1 que la destination et "registre" désigne un deuxième opérande ou opérande 2. La microinstruction 21 ADDI TIONNER s'applique à une ou plusieurs microinstructions. Comme représenté à la Figure 3, les microinstructions incluent une microinstruction 22 engendrer adresse, une microinstruction 23 charger opérande à partir de mémoire, une microinstruction 24 ADDITIONNER opérande 2 à données chargées et une microinstruction 25 mémoriser résultat dans mémoire. Par conséquent, les microinstructions 22 à 25 sont exécutées réellement pour émuler la macro- instruction ADDITIONNER 21. Le but de la macroinstruction ADDITION NER 21 est d'additionner, aux données spécifiées dans l'emplacement de mémoire, des données qui sont spécifiées dans le registre, et de récrire en retour les données dans la mémoire au même emplacement de mémoire. En revenant à la Figure 1, en supposant qu'un test a été rédigé en termes de macroinstruction, comme la macroinstruction ADDITIONNER 21, la macroinstruction est lue dans l'applicateur 20 de macroinstruction en micro- instructions, ce qui produit ensuite un point d'entrée au séquenceur 30 de microinstructions. Dès lors que le séquenceur 30 de microinstructions a identifié une séquence particulière de microinstructions à exécuter, l'informa tion 35 est envoyée à la mémoire reprogrammable 40 de microcode et le test de conception est exécuté au moyen du répartiteur 50 de microinstructions et des unités 61 1 d'exécution. Comme représenté à la Figure 3, un rédacteur de test peut souhaiter tester la réponse du microprocesseur à une macroinstruction ADDITIONNER en spécifiant que fa macroinstruction ADDITIONNER soit exécutée. De plus, le rédacteur de test peut souhaiter tester une réponse du microprocesseur aux microinstructions dans une séquence autre que celle qui est spécifiée par la macroinstruction particulière, il peut souhaiter tester la réponse du micro processeur à une série de microinstructions identiques ou similaires, il peut souhaiter tester le microprocesseur après une modification ou plusieurs modifications de conception apportées au microcode utilisé afin d'émuler la macroinstruction. Par exemple, le rédacteur de tests peut souhaiter tester la réponse du microprocesseur à dix microinstructions de génération d'adresses en séquence. Mais il se peut que le rédacteur de tests ne puisse pas atteindre ces buts en utilisant ou spécifiant une macroinstruction particulière ou une séquence particulière de macroinstruction. En utilisant l'appareil 10 représenté à la Figure 1, le rédacteur de tests peut spécifier une séquence quelconque de microinstructions à exécuter sur le microprocesseur. Par exemple, si le rédacteur de tests souhaite tester le microprocesseur en spécifiant dix instructions de microcode de génération d'adresses exécutées en séquence, le rédacteur de test pourrait utiliser l'instruction ADDITIONNER 21 représentée à la Figure 3, enlever les microinstructions 23 à 25 et n'utiliser la microinstruction 22 de génération d'adresses mais répéter cette opération dix fois. La mémoire reprogrammable 40 de microcode pourrait ensuite être reprogrammée au moyen d'éléments matériels 70 de reprogrammation pour contenir les dix microinstructions 22 de génération d'adresse et être mise en oeuvre en séquence au moyen du microprocesseur pour être testée. Le rédacteur de tests pourrait ensuite tester facilement le microprocesseur, comme il fonctionne lorsqu'il doit exécuter d'affilée dix instructions de génération d'adresses. La possibilité de tester un microprocesseur ou une microplaquette en utilisant l'appareil 10 représenté à la Figure 1 peut être mise en application sous forme de modèle mis en oeuvre sur une station de travail informatique. En d'autres termes, les fonctions représentées par les modules représentés à la Figure 1 peuvent être mises en application sous forme de modèle fonctionnel qui peut être utilisé pour tester les premières étapes et les étapes ultérieures de la conception du microprocesseur ou de la microplaquette. Spécifiquement, l'appareil 10 peut être considéré comme un modèle d'un ou plusieurs disposi tifs d'éléments matériels programmés selon une fonctionnalité spécifique. Par conséquent, l'appareil 10 peut être un modèle d'une conception d'un disposi tif électronique, et il n'est pas associé nécessairement à un dispositif physique. L'appareil 10 peut intervenir de la même manière lorsque l'appareil 10 est remplacé par un programme quelconque. Mais les composants représentés à la Figure 1 peuvent aussi être inclus sous forme de dispositifs discrets constitués d'éléments matériels sur un micro processeur ou une microplaquette. Dans ce cas, la mémoire reprogrammable 40 de microcode peut exiger une reprogrammation pour traiter des modifications de conceptions de test. En outre, dans le cas où l'appareil 10 consiste en microprogrammes ou en un programme pour éléments matériels incorporé sur un dispositif physique, les connexions aux sources de macroinstructions et à d'autres sources de données peuvent être des connexions par éléments matériels ou par logiciel, selon ce qui est approprié. Dans son cadre général, l'invention prévoit aussi que les autres composants illustrés à la Figure 1 peuvent être des modules de microprogrammes ou d'éléments matériels, au lieu d'être des modules de logiciel. Si les modules ou programmes, termes qui sont utilisés ici de façon interchangeable, de la Figure 1 sont mis en application sous forme de modèles de logiciel, lis peuvent être mémorisés ou incorporés sur un support lisible par informatique dans divers formats, par exemple un code source ou un code exécutable. Des supports lisibles par informatique incluent tant des dispositifs de mémoire que des signaux. Des exemples de dispositifs de mémoire lisibles par informatique incluent des mémoires vives ou RAM, des mémoires mortes ou ROM, des mémoires mortes programmables effaçables ou EPROM, des mémoires mortes électriquement effaçables et programmables ou EEPROM, des disques ou bandes magnétiques ou optiques. Des exemples de signaux, modulés en utilisant une porteuse ou non, qui sont lisibles par informatique sont des signaux tels qu'il est possible de configurer un système informatique, intervenant comme hôte pour l'appareil 10 ou le mettant en oeuvre, pour qu'il puisse accéder à ces signaux, y compris des signaux téléchargés par l'intermédiaire de l'Internet ou d'autres réseaux. Les termes et descriptions utilisés ici sont exposés à titre d'illustration seulement et ne doivent pas être considérés comme des limitations. L'homme de l'art comprend que de nombreuses variantes sont possibles à l'intérieur de l'esprit et du cadre des revendications qui suivent et de leurs équivalents, où tous les termes doivent être compris dans leur sens le plus large possible, sauf indications contraires. REVENDICATIONS 1. Appareil (10) de test d'une microarchitecture informatique, comprenant - une mémoire reprogrammable (40) de microcode, qui comprend - un microcode lié à une ou plusieurs macroinstructions (11), et - un microcode reprogrammé de test pour tester la microarchitecture informatique, caractérisé en ce que le microcode reprogrammé de test comprend une séquence de microinstructions (411) exécutées pour tester la microarchitecture informatique. 2. Appareil selon la revendication 1, caractérisé en ce qu'il comprend en outre - un répartiteur (50) qui reçoit la séquence de microinstructions et envoie des sorties (51 1) ; et - des unités d'exécution (611) qui reçoivent les sorties et exécutent des microinstructions. 3. Appareil selon la revendication 1, caractérisé en ce que la micro- architecture informatique prend en charge de multiples ensembles d'instructions. 4. Procédé de test d'une microarchitecture informatique caractérisé en ce qu'il comprend les étapes consistant à - reprogrammer un microcode pour le mémoriser dans une mémoire (40) de microcode ; et - désigner une macrolnstruction (11) à exécuter, l'exécution lançant une séquence de test qui comprend le microcode reprogrammé. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comprend en outre les étapes consistant à - envoyer le microcode reprogrammé à un répartiteur (50) ; et - répartir le microcode reprogrammé à des unités spécifiées d'exécution (61 1) pour l'exécution de la microinstruction (41 i). 6. Procédé selon la revendication 4, caractérisé en ce que la micro- architecture informatique prend en charge de multiples ensembles d'instructions. 7. Procédé de test d'une microarchitecture informatique, caractérisé en ce qu'il comprend les étapes consistant à - appliquer une macroinstruction (21) à une séquence particulière de micro! nstructions (22 à 25) ; et - remplacer la séquence particulière de microinstructions (22 à 25) par un ensemble arbitraire de microinstructions, l'ensemble arbitraire de microinstructions comprenant le test. 8. Procédé selon la revendication 7, caractérisé en ce que la microarchitecture informatique prend en charge de multiples ensembles d'instructions. 9. Procédé selon la revendication 7, caractérisé en ce qu'il comprend en outre l'étape consistant à émettre la macroinstruction (21) pour exécuter les microinstructions (22 à 25) de test.