Brevet FR2593621A1 — publié le 19870731

La présente invention concerne le domaine des points de rupture mis en oeuvre par matériel pour des programmes de calculateur, essentiellement utilisés pour analyser ou corriger les défauts initiaux (couramment appelés dans la technique "bugs") des programmes. De nombreuses techniques sont utilisées pour analyser les performances des programmes d'ordinateur, en particulier pendant leur développement. Il est reconnu que le processus de correction des défauts initiaux constitue une partie notable du développement d'un programme d'ordinateur et, dans certains cas, le temps requis pour la correction des défauts initiaux dépassé celui requis pour écrire le programme. Une première technique utilisée pour corriger les défauts initiaux des programmes d'ordinateur consiste à interrompre le programme au niveau d'événements prédéterminés et d'examiner alors, par exemple, les contenus des registres. Un tel événement est la génération d'adresses prédéterminées qui peuvent constituer des références pour le programme d'ordinateur ou des données. Quand l'adresse produite par l'ordinateur s'adapte à l'une des adresses prédéterminée, un "point de rupture" survient. Le fonctionnement de l'ordinateur est interrompu pour permettre l'analyse. Un procédé pour fournir une interruption de point de rupture consiste à modifier le programme d'ordinateur lui-même. A certaines adresses dans le programme, le programme assure une interruption. Ce procédé est relativement peu coûteux ; il présente toutefois l'inconvénient que des points de rupture ne peuvent être établis pour des adresses référencées à des données. Dans un autre procédé, un matériel extérieur à l'ordinateur ou au microprocesseur est utilisé pour les interruptions de point de rupture. Ce matériel compare les adresses produites par l'ordinateur à des adresses prédéterminées et fournit un point de rupture ou signal d'interruption. Ce procédé est généralement coûteux et nécessite une quantité notable d'espace de cartes de circuits imprimés. En outre, pour des processeurs à haute vitesse, il ne réagit pas suffisamment rapidement pour fournir un point de rupture "en temps réel". Un problème notable se présente quand le microprocesseur comprend un module de traduction d'adresse telle qu'un module de gestion de mémoire dans le microprocesseur luimême. Les seules adresses produites par l'ordinateur accessibles pour un utilisateur sont les adresses physiques typiquement communiquées à une mémoire à accès aléatoire.C'est-à-dire que des adresses virtuelles utilisées par le programmeur peuvent ne pas être disponibles. Il est difficile d'établir les points de rupture basés sur les adresses physiques. Comme on le verra, la présente invention prévoit un appareil générant des points de rupture qui résout les problèmes ci-dessus et assure en outre une sélection améliorée de points de rupture. La présente invention prévoit un appareil générant des signaux de point de rupture utiles pour la correction des défauts initiaux de programmes d'ordinateur. L'appareil est particulièrement utile dans un microprocesseur à circuit intégré formé sur un substrat unique qui comprend des moyens de génération d'adresses pour produire des adresses virtuelles pour faire référence à des instructions de programme ou à des données, un bus d'adresse virtuelle, un moyen de traduction d'adresse pour convertir lradresse virtuelle sur le bus en une adresse physique, un moyen d'interprétation pour interpréter les instructions du programme, et un moyen arithmétique pour agir sur les données selon les instructions interprêtées. L'appareil comprend un premier registre pour mémoriser une adresse prédéterminée sous forme d'une adresse virtuelle à laquelle un point de rupture doit prendre place.Un second registre est utilisé pour mémoriser des bits de commande qui permettent à l'utilisateur de choisir certaines conditions de point de rupture telles que de choisir si le point de rupture doit prendre place en relation avec le programme de l'ordinateur ou avec des données. Un moyen comparateur compare l'adresse virtuelle prédéterminée à l'adresse produite par l'ordinateur (adresse virtuelle en cours). Un premier moyen logique détermine si l'adresse virtuelle en cours fait référence à des instructions de programme ou à des données en examinant les signaux de commande d'adresse. Ce moyen logique est également commandé par les bits de commande mémorisés dans le second registre. Des moyens de porte utilisés pour fournir le signal de point de rupture et interrompre le fonctionnement de l'ordinateur sont couplés à la sortie du moyen comparateur et au premier moyen logique.L'appareil complet est formé sur le même substrat que le microprocesseur. L'appareil comprend également un second moyen logique pour déterminer si l'adresse virtuelle en cours se trouve à l'intérieur de la référence représentée par l'adresse prédéterminée ou si la référence représentée par l'adresse prédéterminée se trouve à l'intérieur du domaine de référence défini par l'adresse virtuelle. En fait, ceci permet à la largeur de l'adresse du point de rupture prédéterminé d'être choisie par des bits de commande mémorisés dans le second registre. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante de modes de réalisation particuliers faite en relation avec les figures jointes parmi lesquelles la figure 1 est un schéma sous forme de blocs illustrant la microarchitecture d'ensemble d'un microprocesseur dans lequel l'appareil selon la présente invention est utilisé. La figure 2 est un schéma sous forme de blocs illustrant l'appareil générant des points de rupture selon la présente invention la figure 3 est un schéma électrique d'un étage de l'un des registres utilisé dans le schéma bloc de la figure 2 la figure 4a est un schéma utilisé pour représenter le cas où la référence de mémoire représentée par l'adresse prédéterminée (point de rupture) est plus étendue qu'une référence d'adresse mémoire ; et la figure 4b est un schéma utilisé pour représenter le cas où la référence de mémoire représentée par l'adresse prédéterminée (point de rupture) est plus étroite qu'une référence d'adresse mémoire. Il est décrit un appareil générant des points de rupture qui est particulièrement adapté pour être utilisé dans unmicroprocesseùr où. le microprocesseur comprend un module de traduction d'adresses fabriqué de façon intégrée avec le microprocesseur. Typiquement, dans de tels cas, les adresses virtuelles ne sont pas accessibles pour l'utilisateur rendant difficile d'établir les points de rupture. Dans le mode de réalisation particulier décrit, l'appareil générant des points de rupture est formé de façon intégrée sur le même substrat que le microprocesseur et son module de traduction d'adresses. Dans la description suivante, de nombreux détails spécifiques sont exposés, tels que des nombres de bits particuliers, etc., pour permettre une compréhension approfondie de la présente invention. Toutefois, il sera clair pour l'homme de l'art, que la présente invention peut être mise en oeuvre sans ces détails particuliers. Dans d'autres exemples, des structures bien connues ne sont pas représentées en détail pour ne pas obscurcir de façon non nécessaire la présente invention. Dans le mode de réalisation particulier décrit, le microprocesseur 10 de la figure 1 est fabriqué sur un substrat unique de silicium en utilisant une technologie CMOS (métal oxyde semiconducteur complémentaire). L'une quelconque des nombreuses technologies CMOS bien connues peut être utilisée ; il sera toutefois clair que la présente invention peut être réalisée avec d'autre technologies, par exemple des technologies MOS à canal -N, des technologies bipolaires, des technologies SOS, etc. En figure 1, le microprocesseur à puce unique 10 cojm*- prend un module d'interface de bus 14, un module décodeur d'instructions 16, un module d'exécution 18, un module dé w duction d'adresse 20, et le circuit générant des points de ruptùre 30 f4is#t fobjet de la présente invention qui est inclus dans le module 20. Le microprocesseur à 32 bits est représenté couplé à une mémoire externe à accès aléatoire 13. Le module de bus 14 comprend des tampons 14-1 pour transmettre l'adresse à 32 bits et pour recevoir et envoyer les 32 bits de données. De façon interne au microprocesseur le module de bus comprend un module de prêrecherche 14-2 pour rechercher les instructions à partir de la mémoire 13 et une file d'attente de prérecherche 14-3 qui communique avec le moduIe#-#ins- truction 16-1 du décodeur d'instructions. Les instructions mises en file sont interprétées et mises en files (16-2) dans le module 16. Le module arithmétique et logique (ALU) 18-1 du module d'exécution 18 exécute de façon générale les instructions. Pour la microarchitecture représentée, le module de traduction d'adresses 20 assure deux fonctions de traduction d'adresses ; une première associée à des registres de description de segments 20-1 et l'autre associée à une mémoire de cache de description de pages 20-2. Ce module est associé à l'interface de bus 14. Ces fonctions sont décrites en détail dans la demande de brevet américain NO 744 389 déposée le 13 juin 1985 et ayant pour titre MEMORY MANAGEMENT FOR MICROPROCESSOR SYSTEM, cédée au demandeur. Le circuit générant des points de rupture 30 est couplé entre les registres de description de segments 20-1 et la mémoire de cache de description de pages 20-2 sur un bus 19. Les adresses virtuelles sont transmises sur ce bus. Ces adresses virtuelles sont facilement accessibles pour un programmeur mais les adresses physiques ne le sont pas. Il est difficile de prévoir des points de rupture sur la base des adresses physiques, comme cela a été mentionné, Un module de commande (non représenté) est couplé aux modules de la figure 1 pour assurer un contrôle de l'ensemble. Comme cela est représenté en fiqure 2, le circuit générant des points de rupture 30 de la figure i comprend un registre/compara- teur à 32 bits 34. Dans le mode de réalisation actuellement préféré, le registre et le comparateur sont incorporés en un circuit unique ; un étage de ce registre/comparateur est représenté en figure 3. Le registredcornparateur 34 mémorise les adresses prédéterminées auxquelles des points de rupture doivent survenir, parfois appelés ci-après adresses de point de rupture. Le registre/comparateur 34 compare l'adresse de point de rupture mémorisée à l'adresse virtuelle produite par le microprocesseur, quelque fois appelée ci-après adresse virtuelle en cours ou adresse en cours.Quand le signal de chargement 35 est présent,uneadresse de point de rupture à 32 bits est chargée sur le bus 19a dans le registre/comparateur 34. Ensuite, le registre/comparateur 34 compare l'adresse de point de rupture à chaque adresse en cours sur le bus 19 et quand un accord a lieu, fournit un signal "HIT" sur une ligne 46. Les deux bits les moins significatifs de l'adresse de point de rupture dans le registre/comparateur 34 ne sont pas utilisés comme éléments de cette comparaison pour des raisons qui seront exposées ci-après, mais sont au lieu de cela couplés au réseau logique programmable (PLA) 38. L'unité de décodage d'instructions 16 de la figure 1 interprète une instruction prédéterminée vers le microprocesseur commeun ordre de chargement du registre/comparateur 34 et permet à l'utilisateur de charger ainsi le registre/comparateur 34 par l'adresse de point de rupture. Une autre instruction permet à l'adresse mémorisée dans le registre/comparateur 34 d'être lue par l'utilisateur. Dans le mode de réalisation particulier décrit, quatre registres/comparateurs 34 sont utilisés pour permettre de mémoriser quatre adresses différentes de point de rupture. Pour chaque registre comparateur 34, il existe un registre associé 32, permettant la mémorisation des bits de commande pour chaque adresse de point de rupture comme cela sera exposé. Dans des buts explicatifs, le circuit de la figure 2 est traité comme comprenant un seul premier registre/comparateur 34 et un seul second registre 32. Toutefois, il sera clair pour l'homme de l'art qu'un nombre quelconque de registres/comparateurs 32 et de registres 34 peut être utilisé permettant ainsi une interruption pour l'une quelconque d'une pluralité d'adresses de points de rupture. Le registre de commande 32 mémorise quatre bits de commande pour chaque adresse de point de rupture. Un premier bit détermine si l'adresse de point de rupture représente une référence vers des données ou vers le programme d'ordinateur. Dans les cas d'une référence à des données, deux bits de commande sont utilisés pour déterminer l'étendue du point de rupture. Dans le mode de réalisation actuellement décrit, le point de rupture peut avoir une étendue de 1, 2 ou 4 multiplets. A nouveau, pour des points de rupture de données, un autre bit de commande est utilisé pour permettre l'interruption au niveau de cycles de lecture seulement ou de cycles de lecture-écriture. Comme cela est le cas avec le registre/comparateur 34, une instruction prédéterminée vers le micropro cesseur 10 est interprétée par le module 16 pour permettre à l'utilisateur de charger le registre 32.Ceci peut être la même instruction que celle utilisée pour charger le registre/comparateur 34. Le circuit logique de validation 36 est couplé pour recevoir des signaux de commande de bus. Ces lignes contiennent les signaux de commande qui déterminent si une adresse en cours fait une référence à un programme ou à des données ; et dans le cas de références à des données, s'il s'agit d'un cycle de lecture seulement ou d'un cycle de lecture-écriture. Le circuit logique de validation 36 compare ces signaux de commande à deux bits de commande en provenance du registre 32 et, si le cycle de mémoire concorde avec celui choisi par l'utilisateur, une horloge de validation est produite vers la porte ET 40. Des circuits logiques classiques sont utilisés dans ce but. Comme cela a été mentionné, le point de rupture peut avoir une étendue de 1, 2 ou 4 multiplets et cette étendue choisie par l'utilisateur est mémorisée dans le registre 32. Les deux bits requis pour cette sélection sont couplés au PLA 38. En outre, comme cela a été mentionné, les deux bits les moins significatifs mémorisés dans le registre/comparateur 34 sont couplés au PLA 38. Des signaux de synchronisation et de commande en provenance des lignes 20 sont également couplés au PLA 38. Le PLA n'est pas programmable par l'utilisateur mais, au lieu de cela, est programmé de façon permanente à sa fabrication. Le PLA met en oeuvre la logique établie dans le paragraphe suivant. L'utilisation d'un PLA n'est pas critique pour la réalisation de l'invention, c'est-àdire que d'autres circuits logiques peuvent être utilisés au lieu du PLA. Le PLA fournit un signal à la porte 40 quand un "accord" prend place. En figure 4a, une référence d'adresse de point de rupture relativement étendue est représentée (par exemple quatre multiplets). L'adresse virtuelle de mémoire en cours peut être référencée à seulement une partie de la référence 70. Dans le cas d'une référence d'adresse de point de rupture étroite, comme cela est représenté en figure 4b, en tant que référence 74, une référence d'adresse virtuelle relativement étendue peut embrasser la référence d'adresse de point de rupture plus étroite 74. Les deux cas représentés en figures 4a et 4b sont résolus par le PLA 38. Comme cela a été mentionné, des circuits logiques classiques peuvent être utilisés pour déterminer si la référence d'adresse de mémoire en cours tombe dans une référence d'adresse de point de rupture étendue, ou si une référence d'adresse de point de rupture plus étroite tombe dans la référence d'adresse de mémoire en cours plus étendue. Si l'une ou l'autre de ces conditions survient, un signal "d'accord" est fourni sur une ligne 52. La porte ET 40 reçoit trois entrées, le signal HIT en provenance du registre/comparateur 34, l'horloge de validation en provenance du circuit logique 36 et le signal d'accord en provenance du circuit 38. Le signal HIT est produit quand les 30 bits les plus significatifs de l'adresse virtuelle en cours concordent avec les 30 bits d'adresse les plus significatifs de l'adresse de point de rupture mémorisée. La sortie de la porte 40 fournit le signal de point de rupture qui est utilisé pour interrompre le fonctionnement du microprocesseur. L'étage unique représenté du registre/comparateur 34 représenté en figure 3 comprend une cellule de mémoire statique 53 et un comparateur 54. Les lignes de bus 19a et 13b transportent un bit d'adresse unique et son complément. La ligne HIT 46 est représentée couplée au comparateur 54 et à un transistor à canal P 56. Ce transistor est utilisé pour précharger la ligne 46 avant chaque cycle de bus d'adresse virtuelle. La ligne 46 est couplée aux autres étages du registre/comparateur 34. Les inverseurs couplés forment une bascule ou cellule de mémoire statique classique 55. Cette cellule est chargée à partir des lignes 19a et 19b quand le signal de charge est présent sur la ligne 35. Une fois que le registre est chargé, le signal de charge chute en potentiel, pour découpler effectivement la cellule 55 des lignes 19a et 19b. Après cela, quand l'adresse virtuelle en cours apparaît sur ces lignes et que le signal+1 est présent, les contenus de la cellule 55 sont comparés à l'adresse de bus 19 par le comparateur 54. Si l'une quelconque des paires à 32 bits qui sont comparés ne concordent pas, la ligne 46 est déchargée empêchant la porte ET 40 de la figure 2 d'être validée.Le circuit de la figure 3 est décrit plus en détail dans la demande de brevet susmentionnée où le circuit est utilisé en tant que partie d'une mémoire adressable par #on contenu. En utilisation, l'utilisateur détermine jusqu a quatre adresses de points de rupture, et choisit si les adresses sont des références à des programmes ou à des données, et dans le cas de références à des données, la largeur de la référence et si le point de rupture doit survenir sur un cycle de lecture seulement ou sur un cycle de lecture-écriture. Au moyen d'une instruction particulière, l'utilisateur peut alors charger jusqu a quatre adresses de points de rupture dans le registre/comparateur 34 et établir les bits de commande correspondants pour chaque point de rupture dans le registre 32. Alors, en utilisant chaque cycle de bus d'adresse virtuelle, une comparaison prend place dans le registre/comparateur, 34 et les circuits logiques 36 et 38 déterminent si les conditions choisies par l'utilisateur existent. Si les adresses concordent et que les conditions concordent, alors un signal de point de rupture est produit au niveau de la porte 40. Contrairement aux procédés de l'art antérieur, un signal de point de rupture en temps réel est produit. Les comparaisons prennent place tandis que l'adresse virtuelle est présente sur le bus et puisqu'il y a très peu de retard de propagation, le signal d'interruption peut être produit à l'instant approprié. Ainsi, on a décrit un appareil générant des points de rupture perfectionné. Cet appareil est particulièrement utile pour les microprocesseurs à puce unique où des adresses virtuelles sont traduites en adresses physiques sur la puce REVENDICATIONS 1. Microprocesseur sous forme de circuit intégré formé sur un substrat unique qui comprend un moyen de génération d'adresses pour produire des adresses virtuelles pour faire référence à des instructions de programmes et à des données, un bus d'adresses virtuelles, un moyen de traduction d'adresses (20) pour convertir des adresses virtuelles sur le bus en adresses physiques, un moyen d'interprétation pour interpréter les instructions de programme, et un moyen arithmétique pour agir sur les données en accord avec les instructions interprétées, caractérisé en ce qu'il comprend des moyens pour fournir un signal de point de rupture comprenant un premier registre (34) pour mémoriser une adresse à laquelle un point de rupture doit prend place ;; un second registre (32) pour mémoriser des bits de commande un moyen comparateur (34) pour comparer au moins une partie d'adresse mémorisée à une adresse en cours sur le bus, ce moyen comparateur étant couplé au premier registre ; un premier moyen logique (36) pour déterminer si l'adresse en cours est une référence à des instructions de programme ou à des données, le premier moyen logique étant couplé au second registre pour détecter au moins l'un des bits de commande mémorisés un moyen de porte (40) pour fournir le signal de point de rupture, ce moyen de porte étant couplé audit moyen comparateur et audit premier moyen logique les premier et second registres, le moyen comparateur, le premier moyen logique et le moyen de porte étant incorporés sur le substrat, d'où il résulte qu'un signal de point de rupture en temps réel est fourni au microprocesseur. 2. Microprocesseur selon la revendication 1, caractérisé en ce que le moyen d'interprétation interprète une certaine instruction pour valider la charge du premier registre (34) à partir du bus. 3. Microprocesseur selon la revendication 2, caractérisé en ce que le moyen d'interprétation interprète une instruction prédéterminée pour valider la charge du second registre (32). 4. Microprocesseur selon la revendication 3, caractérisé en ce qu'un autre des bits de commande mémorisés dans le second registre (32) détermine si un point de rupture doit prend place par suite à une référence à des données pendant un cycle de lecture seulement ou un cycle de lecture-écriture. 5. Microprocesseur selon la revendication 3, caractérisé en ce que certains des bits de commande mémorisés dans le second registre (32) déterminent l'étendue d'une adresse à laquelle le point de rupture doit survenir, et en ce qu'il comprend en outre un second moyen logique (38) pour déterminer (i) si la référence de l'adresse en cours est incluse dans la référence représentée par l'adresse mémorisée quand la référence de l'adresse en cours est plus étroite que l'adresse mémorisée ou, (ii) si la référence représentée par 11 adresse mémorisée est incluse dans la référence de l'adresse en cours quand l'adresse en cours est plus étendue que la référence de l'adresse mémorisée. 6. Microprocesseur à circuit intégré formé sur un substrat unique qui comprend un moyen de génération d'adresses pour produire des adresses virtuelles pour faire référence à des instructions de programme et à des données, un bus d'adresses virtuelles, un moyen de traduction d'adresses (20) pour convertir les adresses virtuelles sur le bus en adresses physiques, un moyen d'interprétation pour interpréter les instructions de programme et un moyen arithmétique agissant sur les données selon les instructions interprétées, caractérisé en ce qu'il comprend des moyens pour fournir un signal de point de rupture comprenant un premier registre (34) pour mémoriser une adresse virtuelle à laquelle un point de rupture doit survenir (adresse de point de rupture) un second registre (32) pour mémoriser les bits de commande, au moins certains des bits de commande déterminant l'étendue de l'adresse de point de rupture ; un moyen comparateur (34) pour comparer au moins une partie de l'adresse virtuelle mémorisée avec l'adresse virtuelle en cours sur le bus, ce moyen comparateur étant couplé au premier registre un premier moyen logique (38) pour déterminer si l'adresse virtuelle en cours est incluse dans la référence représentée par l'adresse de point de rupture ou bien si la référence représentée par l'adresse de point de rupture est incluse dans la référence formée par l'adresse virtuelle, ce premier moyen logique étant couplé aux premier et au second registres ; un moyen de porte (40) pour fournir le signal de point de rupture, ce moyen de porte étant couplé au moyen comparateur et au premier moyen logique ;; les premier et second registres, le moyen comparateur, le premier moyen logique et le moyen de porte étant incorporés au substrat ; d'où il résulte qu'un signal de point de rupture en temps réel est fourni au microprocesseur. 7. Microprocesseur selon la revendication 6, caractérisé en ce que le moyen d'interprétation interprète une certaine instruction pour valider la charge du premier registre (34) à partir du bus. 8. Microprocesseur selon la revendication 7, caractérisé en ce que le moyen d'interprétation interprète une instruction prédéterminée pour valider la charge du second registre (32) 9. Microprocesseur selon la revendication 8, comprenant un second moyen logique (36) pour déterminer si l'adresse virtuelle en cours est une référence à un programme ou à des données, ce second moyen logique étant couplé au second registre (32) pour détecter au moins un des bits de commande mémorisé, ce second moyen logique fournissant une sortie vers le moyen de porte (40). 10. Microprocesseur selon la revendication 9, caractérisé en ce qu'un autre des bits de commande mémorisés dans le second registre détermine si un point de rupture doit survenir en faisant référence à des données pendant un cycle de lecture seule ment ou un cycle de lecture-écriture