Brevet FR2871591A1 — publié le 20051216

CONTEXTE La demande croissante de modularité des systèmes informatiques (c'est-àdire, d'un coût et de performances cohérents et d'un plus grand nombre de processeurs) combinée aux améliorations des performances de chacun des composants continue à encourager les fabricants de systèmes à optimiser les architectures des systèmes centraux. L'un de ces fabricants de systèmes a présenté un système serveur satisfaisant ces demandes de modularité avec une famille de circuits intégrés spécifiques à une application ( ASIC ) procurant une modularité à des dizaines ou à des centaines de processeurs, tout en conservant un haut niveau de performances, de fiabilité et de rendement. L'ASIC essentiel de cette architecture de système est un contrôleur de cellule ( CC ), qui est une interconnexion de processeurs-E/S-mémoires et est responsable des communications et des transferts de données, de la cohérence de l'antémémoire et de la fourniture d'une interface aux autres hiérarchies du sous-système de mémoire. En général, le CC comprend plusieurs unités fonctionnelles majeures, y compris une ou plusieurs interfaces de processeurs, unités de mémoire, contrôleurs d'E/S et interfaces externes à barres croisées, étant toutes interconnectées par l'intermédiaire d'un chemin central de données ( CDP ). Les signaux internes provenant de ces unités sont recueillis sur un bus de moniteur de performances ( PMB ). Un ou plusieurs compteurs de performances spécialisés ou moniteurs de performances, sont connectés au PMB et sont utiles pour recueillir des données provenant du PMB pour être utilisées dans le débogage et la vérification des performances du système dont fait partie le CC. Actuellement, chacun des compteurs de performances est capable de recueillir des données d'une 2871591 2 seule partie choisie à l'avance du PMB, de telle sorte que la combinaison de tous les compteurs de performances permet de recueillir toutes les données sur le PMB. Bien que cet agencement soit utile dans certains cas, il existe un grand nombre de cas dans lesquels il serait avantageux que plus d'un des compteurs de performances accèdent à des données provenant de la même partie du PMB. De plus, il serait avantageux de pouvoir utiliser les compteurs de performances dans le domaine de la couverture des tests de détermination. Il serait également avantageux de pouvoir utiliser les compteurs de performances pour détecter un quelconque motif binaire arbitraire allant jusqu'à M bits alignés sur des limites de blocs. Il serait enfin avantageux de détecter la durée minimale et/ou maximale d'un événement concernant, par exemple, les états de certains circuits logiques testés. Ces applications ne sont pas prises en charge par les compteurs de performances de l'état de l'art. RÉSUMÉ Dans un mode de réalisation, l'invention est orientée vers un circuit destiné à suivre la durée minimale et maximale d'un événement d'intérêt. Le circuit est connecté à un compteur destiné à compter le nombre de cycles d'horloge durant lesquels l'événement d'intérêt est actif et comprend des circuits logiques pour détecter la désactivation de l'événement d'intérêt et produire un signal de fin de durée; des circuits logiques réagissant au signal de fin de durée pour comparer une valeur de compte à une valeur fantôme; et des circuits logiques pour mettre à jour la valeur fantôme en se basant sur les résultats de la comparaison. BRÈVE DESCRIPTION DES DESSINS 2871591 3 La figure 1 est un schéma par blocs illustrant une collecte de données à usage général dans une conception de circuits logiques; la figure 2 est un schéma par blocs d'un compteur 5 de performances à usage général selon un mode de réalisation; la figure 3A est un schéma par blocs plus détaillé du compteur de performances à usage général de la figure 2; la figure 3B est un schéma par blocs plus détaillé de l'amélioration du circuit de détection de front et de durée minimale/maximale au compteur de performances à usage général de la figure 3A; les figures 3C et 3D sont des organigrammes illustrant le fonctionnement de l'amélioration du circuit de durée minimale/maximale de la figure 3B, respectivement dans les modes de durée maximale et de durée minimale; et la figure 4 illustre un procédé dans lequel des signaux sont mappés depuis un bus d'observabilité vers un compteur de performances selon un mode de réalisation. DESCRIPTION DÉTAILLÉE DES DESSINS Sur les dessins, des éléments analogues ou similaires sont désignés par des numéros de référence identiques dans l'ensemble des diverses vues de ceux-ci et les divers éléments représentés ne sont pas nécessairement dessinés à l'échelle. La figure 1 est un schéma par blocs d'une collecte de données à usage général dans une conception de circuits logiques. Comme représenté sur la figure 1, l'espace d'état 100 d'une conception de circuits logiques considérée est fourni à des circuits logiques de collecte et de sélection de données 102. Les circuits logiques 102 commandent un bus de collecte de données ou d'observabilité de D bits 104 transportant un signal 2871591 4 debug_bus de D bits vers une pluralité de compteurs de performances 106(1) à 106(M). Dans un mode de réalisation, D est égal à 80, M est égal à 12 et les compteurs de performances 106(1) à 106(M-1) sont des compteurs de performances à usage général, tandis que le compteur de performances restant 106(M) est incrémenté à chaque cycle d'horloge. Comme il va être expliqué ci-dessous, les compteurs de performances à usage général sont des compteurs à usage général en ce que chacun d'entre eux est capables d'accéder à un bit quelconque parmi les 80 bits du bus 104; de plus, ils peuvent tous accéder au même bloc de bits et effectuer sur celui-ci des calculs de performances identiques ou différents. La figure 2 est un schéma par blocs d'un compteur de performances à usage général 200, qui est identique à tous égards à chacun des compteurs de performances 106(1) à 106(M-1) (figure 1), selon un mode de réalisation. Comme il va être décrit plus en détail ci- dessous, le compteur de performances 200 peut être utilisé pour effectuer des opérations à usage général pour extraire des informations de performances, de débogage ou de couverture concernant un quelconque système testé (SUT) tel que, par exemple, l'espace d'état de système 100 représenté sur la figure 1. Le compteur de performances 200 comporte un circuit ET/OU 201, un circuit de correspondance/seuil 202, un circuit smsel 204, un circuit szero 206 et un circuit compteur 208. En général, le circuit ET/OU 201 permet d'accéder à tous les bits du signal debug_bus parvenant dans le compteur de performances 200 par l'intermédiaire du bus d'observabilité 104. Dans un mode de réalisation, comme illustré sur les figures 2, 3A et 3B, debug_bus est un signal de 80 bits. Lorsque le circuit ET/OU 201 fonctionne en mode ET, le circuit active un signal 2871591 5 raw inc si tous les bits du signal debug_bus plus deux bits qui y sont accolés, comme il va être décrit plus en détail ci-dessous, qui sont d'intérêt (comme indiqué par la valeur d'un mask (masque) de 80 bits plus deux bits qui y sont accolés) sont positionnés. Lorsque le circuit ET/OU 201 fonctionne en mode OU, le circuit active le signal inc_raw si l'un quelconque ou plusieurs des bits du signal debug_bus plus les deux bits supplémentaires qui sont d'intérêt (comme indiqué par la valeur du masque plus les deux bits supplémentaires) sont positionnés. Lorsque le circuit de correspondance/seuil 202 fonctionne en mode correspondance , une partie de correspondance 300 (figure 3A) du circuit active un signal match_thresh_event vers le circuit ET/OU 201 lorsqu'une partie de N bits du signal debug_bus sélectionné comme décrit plus en détail ci-dessous en référence au circuit sm-sel 204 et le circuit szero 206, fait correspondre un seuil (ou motif) de N bits pour tous les bits sélectionnés par un masque de correspondance de N bits ( nmask ). Dans un mode de réalisation, pour tous les bits de la partie de signal de bus de débogage sélectionné de N bits qui sont indifférents , le bit correspondant du masque est mis à 0 et le bit correspondant du seuil est mis à O. Pour tous les bits de la partie de signal de bus de débogage sélectionné de N bits qui sont OU ou R , comme il va être décrit en détail ci-dessous, le bit correspondant de mmask est mis à 0 et le bit correspondant du seuil est mis à 1. Enfin, pour tous les bits de la partie de signal de bus de débogage sélectionné de N bits qui ne sont pas indifférents ou OU , le bit correspondant de nmask est mis à 1. Le mode de réalisation illustré sur la figure 3A améliore la correspondance normale avec un terme R sans utiliser aucun bit de contrôle en plus de nmask (le 2871591 6 masque) et du seuil (la correspondance). Ce mode de réalisation peut être utilisé pour un circuit de correspondance quelconque et pour une reconnaissance de motif quelconque; il n'est pas limité à des compteurs de performances. En particulier, une correspondance se produit si un quelconque bit R est à un. Ceci est équivalent à un OU de tous les bits d'entrée R . Si tous les bits R sont à zéro, alors il n'y a pas de correspondance. Le signal match_thresh_event est l'un des deux bits ajoutés au signal debug_bus. Dans le mode de réalisation illustré, N est égal à 16. En général, lorsque le circuit de correspondance/seuil 202 fonctionne dans le mode de correspondance, la partie de correspondance 300 détecte dans le signal debug_bus un quelconque motif binaire arbitraire allant jusqu'à N bits alignés sur des limites de bloc de 10 bits. Ceci comporte la correspondance d'un un, d'un zéro ou indifférent ( X ) sur un bit quelconque. De plus, comme indiqué ci-dessus, dans un mode de réalisation, la détection comporte la correspondance des résultats d'une opération OU sur tous les bits désignés ( R ). Ceci permet la détection de paquets spécifiques ou de groupes spécifiques de paquets ou d'états. Dans un mode de réalisation, la partie de correspondance 300 comprend un circuit NON OU exclusif ( XNOR ), représenté sur la figure 3A par une simple porte XNOR 301a, pour effectuer une opération NON OU exclusif, bit par bit ( XNOR ) d'une partie de N bits sélectionnés du signal debug_bus fourni en sortie par le circuit sm sel 204, comme décrit en détail ci-dessous, avec un seuil de N bits qui peut être fourni en sortie par un registre d'état de contrôle ( CSR ) (non représenté), par exemple. Un signal de N bits fourni en sortie (c'est-à-dire, une première sortie intermédiaire) par le circuit XNOR (représenté par la porte XNOR 301a, 2871591 7 bien qu'il puisse y avoir jusqu'à N de ces portes) est appliqué en entrée à un circuit OU, représenté sur la figure 3A par une simple porte OU 301b, ou fait l'objet d'un OU, bit par bit, avec l'inverse de nmask de N bits, pouvant être fourni par un CSR (non représenté), dans un mode de réalisation. La sortie de N bits (c'est-à- dire, une seconde sortie intermédiaire) du circuit OU représenté par la porte OU 301b (chacun des N bits de sortie étant produit par une porte OU à 2 entrées de signaux) est appliquée à l'entrée d'une porte ET de N bits 301c, dont la sortie comprend un signal match mm d'un bit. Comme décrit plus en détail dans la demande de brevet U.S. n 11/022023, déposée le 23/12/2004, intitulée MATCH CIRCUIT FOR PERFORMING PATTERN RECOGNITION IN A PERFORMANCE COUNTER (n dans les registres 200315310-2) , le circuit de correspondance 300 comporte, en outre, une partie d'amélioration 301d pour faire correspondre les bits R . La partie d'amélioration 301d comporte un circuit ET, représenté sur la figure 3A par une simple porte ET 301e, pour effectuer un ET, bit par bit, de l'inverse du masque de N bits avec le seuil de N bits. La sortie de N bits du circuit ET 301e est appliquée à l'entrée d'un circuit ET, représenté sur la figure 3A par une simple porte ET 301f, où elle fait l'objet d'un ET, bit par bit, avec la partie sélectionnée de N bits du signal debug_bus fourni en sortie par le circuit sm_sel 204. La sortie de N bits du circuit ET 301f est appliquée à l'entrée d'un circuit OU 301g, où elle fait l'objet d'un OU avec le NON OU d'un seul bit (fourni par la porte NON OU de N bits) de la sortie de N bits du circuit ET 301e, pour produire un signal d'un seul bit match OR . Le signal match_OR et le signal match_mm sont appliqués à l'entrée d'une porte ET 301h, dont la sortie est appliquée en entrée à une entrée d'un multiplexeur à deux entrées 301i, en tant 2871591 8 que signal match (correspondance). Lorsque le circuit de correspondance/seuil 202 fonctionne en mode de correspondance (comme cela est contrôlé par un signal de contrôle de sélection, par exemple, le signal de contrôle match/thresh#), le signal de correspondance est fourni en sortie par le multiplexeur 301i en tant que signal match_thresh_event au circuit ET/OU, comme décrit ci-dessus. En conséquence de l'opération de la partie de correspondance 300, aucun circuit logique aléatoire supplémentaire n'est requis pour décoder des paquets ou des états dans des signaux one-hot , qui sont des signaux de 1 bit qui effectuent une transition vers un 1 logique pour chaque valeur de l'état. Le circuit de correspondance/seuil 202 nécessite un champ de motif de N bits et un champ mark de N bits. De plus, le mode de réalisation ici décrit peut adapter une plus large plage de motifs qu'un circuit de correspondance classique, qui correspond à un niveau de portes ET. Pour diminuer le nombre de bits de contrôle requis, dans le mode de réalisation illustré sur la figure 3A, le champ de motif de N bits est le même champ que celui utilisé pour une partie de seuil 302 du circuit 202, comme décrit ci-dessous, car il est peu vraisemblable qu'à la fois la partie de correspondance 300 et la partie de seuil 302 soient utilisées en même temps, en particulier si le circuit sm_sel 204 fournit les N mêmes bits aux deux. Lorsque le circuit de correspondance/seuil 202 fonctionne en mode seuil , la partie de seuil 302 du circuit 202 active le signal match_thresh_event vers le circuit ET/OU 201 lorsqu'une partie de S bits du signal debug_bus sélectionné et mis à zéro comme décrit plus en détail ci-dessous en référence au circuit sm sel 204 et au circuit szero 206, est égale ou supérieure au seuil. 2871591 9 Dans le mode de réalisation illustré, S est égal à N/2, ou 8. Un circuit comparateur 303 de la partie de seuil 302 compare un signal sum[7:0] fourni en sortie par le circuit szero 206, décrit ci-dessous, avec les S bits les moins significatifs du signal de seuil de N bits et fournit en sortie un un logique si le premier et supérieur ou égal au dernier, et un zéro si tel n'est pas le cas. La sortie du circuit comparateur 303 est appliquée à l'entrée d'une seconde entrée du multiplexeur 301i, en tant que signal thresh. Lorsque le circuit de correspondance/seuil 202 fonctionne dans le mode de seuil, le signal thresh est fourni en sortie par le multiplexeur 301i, en tant que signal match thresh event, au circuit ET/OU, comme décrit ci-dessus. On comprendra que dans les systèmes dans lesquels le compteur de performances 200 et le bloc logique surveillé par celui-ci se trouvent dans deux domaines d'horloge différents, le circuit de correspondance/seuil 202 est modifié pour tirer avantage d'une fonctionnalité de mode de noyau , dans laquelle un signal valid_cycle_control est produit conformément aux enseignements de la demande de brevet U.S. n 11/022079, déposée le 23/12/2004, intitulée PERFORMANCE MONITORING SYSTEM (n dans les registres 200315313-2). Brièvement, dans certains cas, le compteur de performances 200 peu être utilisé pour examiner les fonctionnements internes des circuits logiques qui se trouvent dans un domaine d'horloge différent de celui du compteur de performances. Le mode noyau supporte la désactivation du compteur de performances sur des cycles d'horloge invalides et permet à des caractéristiques évoluées d'ignorer les cycles invalides. Le circuit sm sel 204 sélectionne une partie de N bits du signal debug_bus alignée sur une limite de bloc 2871591 10 sélectionnée de 10 bits à la fois dans la partie de correspondance 300 et la partie de seuil 302 (figure 3A) du circuit de correspondance/seuil 202 et sur une somme appliquée à l'entrée du circuit compteur 208. Comme énoncé précédemment, dans le mode de réalisation illustré, N est égal à 16. Le circuit szero 206 ne met à zéro aucun sauf un des S bits alignés sur une limite de bloc sélectionné de 10 bits dans la partie de seuil 302 du circuit de correspondance/seuil 202 et la somme appliquée à l'entrée du circuit compteur 208. Dans le mode de réalisation illustré, S est égal à huit. La limite de bloc sélectionné de 10 bits est identifiée par la valeur d'un signal de contrôle de trois bits smsel appliqué à l'entrée du circuit sm_sel 204. Des détails supplémentaires concernant le fonctionnement du circuit sm sel 204 et du circuit szero fournis dans la demande de brevet U.S. 103, déposée le 6 août 2003, intitulée DATA CIRCUIT FOR PERFORMANCE COUNTER (n dans les 200209000-1) et dans la demande de brevet U.S. 373, déposée le 6 août 2003, intitulée La figure 3B illustre une amélioration du circuit de détection de front et de durée minimale/maximale 350 du compteur de performances illustré sur la figure 3A selon un mode de réalisation. Dans ce mode de réalisation, un registre fantôme 351 échantillonne le signal de compte sur un intervalle, lorsque le logiciel le demande ou lorsqu'une valeur dans le registre de compte 312 est plus grande ou plus petite que la valeur enregistrée dans le registre fantôme (c'est-à-dire, la valeur fantôme) à la fin du compte d'une durée. La dernière caractéristique, conjointement avec les circuits de durée minimale/maximale 352, autorise la capture d'une valeur de durée minimale ou maximale. En 206 sont n 10/635 SELECT ION registres n 10/635 ZEROING registres CIRCUIT FOR PERFORMANCE COUNTER 200209001-1). (n dans les 2871591 11 particulier, les circuits de durée minimale/maximale 352 suivent les comptes ou durées du cycle minimum/maximum. En particulier, à la fin d'un événement, la valeur du registre de compte 312 est enregistrée dans le registre fantôme 351 si elle est supérieure à la valeur présente dans le registre fantôme (lorsque le compteur de performances 200 fonctionne dans le mode de durée maximale) ou inférieure à la valeur présente enregistrée dans le registre fantôme (lorsque le compteur de performances 200 fonctionne dans le mode de durée minimale). Des circuits de détection de front 354 détectent un front montant sur le signal inc_raw et positionnent uniquement un signal inc vers le circuit compteur 208 une fois à chaque front montant lorsque le compteur de performances 200 fonctionne dans le mode de détection de front. Dans un mode de réalisation, le compteur de performances 200 fonctionne en mode de détection de front lorsqu'un signal edge_op est positionné, en mode de durée maximale lorsqu'un signal max_op est positionné et en mode de durée minimale lorsqu'un signal min op est positionné. Le compteur de performances fonctionne en mode normal lorsque aucun des signaux op n'est positionné. Comme indiqué précédemment, en mode de fonctionnement normal, le compteur de performances 200 compte le nombre de cycles durant lesquels un événement d'intérêt est actif. Le mode de réalisation des circuits de détection de front 354 ici décrits permet au compteur de performances 200 de fonctionner en mode de détection de front, dans lequel le compteur de performances compte le nombre de fois où se produit un événement. Supposons par exemple qu'une machine d'état commence à l'état=O, effectue une transition jusqu'à l'état=2 et y reste pendant trois cycles, effectue une transition vers 2871591 12 l'état=l et y reste pendant un certain nombre de cycles, effectue une transition vers l'état=2 et y reste pendant quatre cycles, effectue une transition vers l'état=3 et y restes pendant un certain nombre de cycles, effectue une transition vers l'état=2 et y reste pendant deux cycles, puis effectue une transition pour retourner à l'état=O. On suppose à titre d'exemple, que l'événement d'intérêt est l'état=2. En mode normal, le compteur de performances 200 compte le nombre de cycles où l'événement désigné est actif; dans ce cas, neuf cycles. Par opposition, les circuits de détection de front 354 permettent à un compteur de performances 200, lorsqu'il est en mode de détection de front, de compter le nombre de fois où la machine d'état effectue une transition vers l'état=2. En mode de détection de front, le compteur de performances 200 compte trois transitions de l'état zéro (c'est-à-dire, pas dans l'état=2) à un (c'est-à-dire, dans l'état=2). En conséquence, dans le présent exemple, le compte d'un compteur de performances fonctionnant en mode de détection de front indique le nombre de fois où l'événement d'intérêt (à savoir, la transition vers l'état=2) s'est produit (c'est-à-dire, trois). On notera que, bien que le mode de réalisation illustré présente un circuit de détection de front montant, on peut également mettre en oeuvre un circuit de détection de front descendant pour les buts ici décrits et ceci peut être préférable dans certains cas. En faisant fonctionner le compteur de performances en mode normal pour compter le nombre de cycles ou un événement d'intérêt est actif et en en faisant fonctionner un autre en mode de détection de front pour compter le nombre de fois où le même événement se produit, il est possible de déterminer le nombre moyen de cycles durant lesquels l'événement est actif. En se référant de nouveau à l'exemple ci-dessus, le premier 2871591 13 compteur de performances indique que l'événement (état=2) était actif pendant neuf cycles; le second compteur de performances indique que l'événement s'est produit trois fois. En conséquence, le nombre moyen de cycles où l'événement était actif (c'est-à-dire, le nombre moyen de cycles où état=2) est de trois. Des détails concernant le fonctionnement des circuits de détection de front 354 sont fournis dans la demande de brevet U.S. n 11/022021, déposée le 23/12/2004, intitulée EDGE DETECTION CIRCUIT FOR PERFORMANCE COUNTER (n dans les registres 200315311-2). Typiquement, un compteur de performances compte le nombre de cycles où un événement est actif; il n'effectue toutefois pas de suivi de la durée maximale ou minimale d'un événement durant une période de temps d'intérêt. Les circuits de durée minimale/maximale 352 permettent au compteur de performances 200 d'indiquer le temps minimum durant lequel un événement persiste lorsqu'il est actif ou le temps maximum durant lequel un événement persiste lorsqu'il est actif. En utilisant l'exemple présenté ci-dessus en ce qui concerne la machine d'état, dans lequel l'événement d'intérêt est état=2, en mode de durée minimale, le registre fantôme capture trois (cycles), ignore les quatre (cycles) (car trois est plus petit que quatre), puis capture deux (cycles) (car deux est plus petit que trois). Dans le mode de durée maximale, le registre fantôme capture trois (cycles), puis capture quatre (cycles) (car quatre est plus grand que trois) et ignore deux (cycles) (car quatre est plus grand que deux). En conséquence, la durée minimale de l'événement (état=2) durant la période d'intérêt est de deux cycles et la durée maximale de l'événement est de quatre cycles. Les circuits de détection de front 354 vont maintenant être décrits plus en détail. Les circuits 354 2871591 14 comportent un multiplexeur à deux entrées 354a destiné à recevoir le signal inc_raw à une entrée et un signal inc hold FF à l'autre entrée. La sortie du multiplexeur 354a est appliquée à l'entrée d'une bascule 354b, dont la sortie est constituée du signal inc_hold_FF, qui est réinjecté dans le multiplexeur 354a, comme décrit précédemment. Le signal de contrôle valid_cycle décrit ci-dessus comprend le signal de sélection pour le multiplexeur 354a tel que lorsque le signal valid_cycle est positionné, le signal inc_raw est fourni en sortie par le multiplexeur 354a; sinon, le signal inc_hold_ff est fourni en sortie par le multiplexeur. Le signal inc hold ff est inversé et fait l'objet d'un ET avec le signal inc_raw et le signal validcycle par l'intermédiaire d'une porte ET à trois entrées 354c. La sortie de la porte ET 354c est appliquée en entrée à une entrée d'un multiplexeur à deux entrées 354d, dont l'autre entrée est connectée de manière à recevoir le signal inc_raw. Le signal edge_op sert de signal de sélection au multiplexeur 354d, tel que lorsque le compteur de performances 200 fonctionne en mode de détection de front, le signal fourni en sortie par la porte ET 354c est fourni en sortie par le multiplexeur 354d en tant que signal inc; sinon (c'est-à-dire, en fonctionnement normal), le signal inc_raw est fourni en sortie par le multiplexeur en tant que signal inc 354d. On notera que la bascule 354b et la porte ET 354c servent de circuits de détection de front montant pour les circuits de détection de front 354 et la sortie de la porte ET 354c est amenée à l'état haut en réagissant à une transition de zéro à un du signal inc_raw; sinon, la sortie de la porte ET 354c reste à zéro. Ce qui précède suppose, naturellement, que le cycle soit un cycle valide (c'est-à-dire que validcycle soit positionné). 2871591 15 Les circuits 352 comportent des circuits logiques de détection de front descendant comprenant une porte ET à trois entrées 352a destinée à effectuer un ET du signal valid cycle, du signal inc hold ff fourni en sortie par la bascule 354b et du signal inc_raw. La sortie de la porte ET 352a est appliquée à l'entrée d'une bascule 352b, dont la sortie comprend un signal duration end ff. On comprendra que la bascule 354b, la porte ET 352a et la bascule 352b servent de circuits de détection de front descendant pour les circuits de durée minimale/maximale 352 et la sortie de la porte ET 352a est amenée à l'état haut en réagissant à une transition de un à zéro du signal inc raw; sinon, la sortie de la porte ET 352a reste à zéro. Ce qui précède suppose, naturellement, que le cycle soit un cycle valide (c'est-à-dire que valid_cycle soit positionné). Les circuits peuvent être mis en oeuvre sans tenir compte des cycles valides en éliminant l'entrée valid_cycle de la porte ET 352a. En conséquence, l'activation de duration end ff indique que l'événement d'intérêt est terminé. Les figures 3C et 3D sont des organigrammes illustrant le fonctionnement des circuits de durée minimale/maximale 352, respectivement en mode de durée maximale et en mode de durée minimale, selon un mode de réalisation. On notera que, dans le mode de réalisation illustré sur la figure 3B, on suppose que les circuits 352 fonctionnent, soit en mode de durée maximale (max_op activé), dans lequel on effectue un suivi de la durée maximale de l'événement d'intérêt pendant une période de temps d'intérêt, soit en mode de durée minimale (min op activé), dans lequel on effectue un suivi de la durée minimale de l'événement d'intérêt pendant la période de temps d'intérêt. En particulier, comme représenté sur la figure 3B, celle des entrées d'activation du multiplexeur 326 qui était précédemment directement connectée au signal clear counter (figure 3A) est 2871591 16 désormais connectée à un circuit logique comprenant une première porte OUà deux entrées 352c, une porte ET à deux entrées 352d et une seconde porte OU à deux entrées 352e. Les signaux max_op et min_op sont appliqués à l'entrée de la première porte OU à deux entrées 352c, dont la sortie est appliquée en entrée à une entrée de la porte ET 352d. L'autre entrée de la porte ET 352d est connectée de façon à recevoir le signal duration_end_ff provenant de la bascule 352b. La sortie de la porte ET 352d est appliquée en entrée à une entrée de la porte OU 352e, dont l'autre entrée est connectée de manière à recevoir le signal clear_counter. En conséquence, le compteur 312 est effacé à chaque fois que, soit clear_counter est activé, soit max_op ou min_op est activé et que duration_end_ff est activé. Toutefois, on comprendra que des modifications appropriées peuvent être apportées aux circuits 352 de façon à pouvoir suivre l'événement d'intérêt à la fois pour la durée minimale et maximale. Comme indiqué précédemment, la figure 3C illustre le fonctionnement des circuits 352 pendant que max_op est actif. En conséquence, à l'étape 362, la valeur enregistrée dans le registre fantôme 351 est entièrement mise à zéro. À l'étape 364, la valeur du registre de compte 312 est effacée. À l'étape 366, le compteur de performances fonctionne conformément à la description fonctionnelle présentée ci-dessus en référence à la figure 3A et la valeur enregistrée dans le registre de compte 312 est incrémentée en conséquence pendant qu'un événement est actif. À l'étape 370, on détermine si un signal duration end ff est actif, indiquant que la fin de l'événement a été détectée, comme décrit cidessus. Sinon, l'exécution retourne à l'étape 366; si tel n'est pas le cas, l'exécution passe à l'étape 372. 2871591 17 À l'étape 372, on détermine si la valeur enregistrée dans le registre de compte 312 est supérieure à la valeur enregistrée dans le registre fantôme 351. Cette étape 372 est exécutée par un comparateur 352f. Si tel est le cas, un signal cntr_gr_shadow est activé, provoquant l'écriture de la valeur du registre de compte 312 dans le registre fantôme 351 à l'étape 374. L'exécution retourne ensuite à l'étape 364. Si une détermination négative est effectuée à l'étape 374, l'exécution retourne directement à l'étape 364. La figure 3D illustre le fonctionnement des circuits 352 pendant que min_op est actif. À l'étape 376, le registre fantôme 351 est entièrement mis à un. À l'étape 378, une valeur du registre de compte 312 est effacée À l'étape 380, le compteur de performances fonctionne selon la description fonctionnelle présentée ci-dessus en référence à la figure 3A et la valeur enregistrée dans le registre de compte 312 est incrémentée en conséquence pendant qu'un événement est actif. À l'étape 384, on détermine si un signal duration end ff est actif, indiquant que la fin de l'événement a été détectée, comme décrit ci-dessus. Si tel n'est pas le cas, l'exécution retourne à l'étape 380; sinon, l'exécution passe à l'étape 386. À l'étape 386, on détermine si la valeur enregistrée dans le registre de compte 312 est inférieure à la valeur enregistrée dans le registre 386 est exécutée par un est le cas, un signal provoquant l'écriture de la de compte 312 dans le registre fantôme 351 à l'étape 388 L'exécution retourne ensuite à l'étape 378. Si une détermination négative est effectuée à l'étape 386, l'exécution retourne directement à l'étape 378. fantôme 351. Cette 30 comparateur 352g. cntrlessshadow est valeur du registre étape Si tel activé, 2871591 18 Pour exécuter l'opération décrite en référence à la figure 3C, un multiplexeur 352h est utilisé pour activer une valeur sélectionnée parmi quatre valeurs appliquées à l'entrée du multiplexeur, destinée à être écrite dans le registre fantôme 351. En particulier, lorsqu'un signal csr_write_shadow est activé et appliqué à une troisième entrée d'activation, CSR write value est écrit dans le registre fantôme 351. Ceci constitue le mécanisme utilisé pour écrire uniquement des zéros (à l'étape 362) ou uniquement des uns (à l'étape 376) dans le registre fantôme 351. Lorsqu'un signal clear shadow est activé et appliqué à un deuxième signal d'activation, une série de zéros sont écrits dans le registre fantôme 351, effaçant ainsi le registre 351. L'entrée d'activation restante est connectée à un circuit logique 352i, comprenant deux portes ET 352j, 352k et deux portes OU 3521, 352m. La première porte ET 352j effectue un ET des valeurs de max_op, duration end ff et cntr gr shadow. L'autre porte ET 352k effectue un ET des valeurs de min op, duration end ff et cntr less shadow. Les sorties des deux portes ET 352j, 352k, sont appliquées à l'entrée de la porte OU 3521. La sortie de la porte OU 3521 fait l'objet d'un OU avec un signal update_shadow. La sortie de la porte OU 352m est appliquée à l'entrée d'activation restante du multiplexeur 352h. En conséquence, si l'un quelconque parmi ce qui suit est vrai, la valeur du registre de compte 312 est écrite dans le registre fantôme 351: 1. le signal update_shadow est activé ; 2. le compteur de performances fonctionne en mode de durée maximale, l'événement est terminé et la valeur du registre de compte 312 est supérieure à celle du registre fantôme 351; OU 3. le compteur de performances fonctionne en mode de durée minimale, l'événement est terminé et la valeur 2871591 19 du registre de compte 312 est inférieure à celle du registre fantôme 351. Dans un mode de réalisation, chaque compteur de performances à usage général, tel que le compteur de performances 200, est de 48 bits plus un dépassement. Le compteur de performances 200 est à usage général en ce qu'il examine dans l'ensemble des D bits du signal debug_bus un masque d'événement plus deux événement supplémentaires, huit sélections séparées de 16 bits pour l'opération de comparaison de correspondance et huit sélections séparées de huit bits pour les opérations de comparaison de seuil et d'accumulation. Les huit bits pour les opérations de comparaison de seuil et d'accumulation sont les huit bits inférieurs des 16 bits sélectionnés pour l'opération de comparaison de correspondance. Ces 16 bits sont alignés avec les 10 limites de fenêtres, comme représenté dans un exemple d'un agencement de mappage illustré sur la figure 4. Sur la figure 4, un signal events 400 comprend le signal debug_bus, désigné sur la figure 4 par le numéro de référence 401, le signal match thresholdevent, désigné par le numéro de référence 402 et un bit à 1 logique, désigné par le numéro de référence 404. Le signal debug_bus 401 est constitué des bits [79:0] du signal events 400; le signal match_ threshold_event 402 est constitué du bit [80] du signal events et le bit à 1 logique 404 est constitué du bit [81] du signal events. Comme cela est mieux illustré sur la figure 3A, le signal events 400 (c'est-à-dire, le signal debug_bus avec le signal match_ threshold_event et le 1 logique ajouté à celui-ci) sont appliqués à l'entrée d'un premier étage logique 304 du circuit ET/OU 201 pour des buts qui vont être décrits plus en détail ci-dessous. En se référant de nouveau à la figure 4, un signal composite mask 410 comprend un signal mask de 80 bits, désigné par le numéro de référence 412, un bit de masque 2871591 20 match thresholdevent ( TM ), désigné par le numéro de référence 414 et un bit d'accumulation ( acc ), désigné par le numéro de référence 416. Le signal mask 412 est constitué des bits [79:0] du signal composite mask 410; le bit TM 414 est constitué du bit [80] du signal composite mask et le bit acc 416 est constitué du bit [81] du signal composite mask. Comme cela est mieux illustré sur la figure 3A, chaque bit du composite mask 410 (c'est-à-dire, le signal mask avec les bits TM et acc ajoutés à celui-ci) est appliqué à l'entrée du premier étage logique 304 du circuit ET/OU 201 pour des buts qui vont être décrits plus en détail ci-dessous. En poursuivant en référence à la figure 4, huit sélections de correspondance de 16 bits alignés en blocs de 10 bits sont respectivement désignées par les numéros de référence 420(0)-420(7). En particulier, la sélection 420(0) est constituée des bits [0:15] ; la sélection 420(1) est constituée des bits [10:25] ; la sélection 420(2) est constituée des bits [20:35] ; la sélection 420(3) est constituée des bits [30:45] ; la sélection 420(4) est constituée des bits [40:55] ; la sélection 420(5) est constituée des bits [50:65] ; la sélection 420(6) est constituée des bits [60:75] ; et la sélection 420(7) est constituée des bits [70:5] (les bits au- dessus de 79 sont rebouclés à zéro). En se référant de nouveau à la figure 3A, le premier étage logique 304 comprend une partie ET, représentée par une porte ET 304a, pour effectuer un ET bit par bit du signal events 400 avec le signal composite mask 410 et une partie OU, représentée par une porte OU 304b, pour effectuer un OU bit par bit de l'inverse du signal composite mask 410 avec le signal events 400. On comprendra que, bien que représenté sur la figure 3A comme une porte ET unique à deux entrées 304a, la partie ET du premier étage logique 304 comprend en fait 82 portes ET à deux entrées. De façon similaire, 2871591 21 la partie OU du premier étage logique 304 comprend 82 portes OU à deux entrées identiques à la porte OU 304b. Les sorties de la partie ET du premier étage logique 304 sont appliquées à l'entrée d'une porte OU à 82 entrées 306, dont la sortie est appliquée en entrée à une entrée d'un multiplexeur à deux entrées 308 en tant que or result . De façon similaire, les sorties de la partie OU du premier étage logique 304 sont appliquées en entrée à une porte ET à 82 entrées 310, dont la sortie est appliquée en entrée à l'autre entrée du multiplexeur 308 en tant que and_result . Un signal de contrôle ( and/or# ) qui peut provenir d'un CSR (non représenté) contrôle le fait que le circuit ET/OU 201 fonctionne dans un mode ET, auquel cas and_result est fourni en sortie par le multiplexeur 308 en tant que signal inc ou en mode OU, auquel cas or result est fourni en sortie par le multiplexeur en tant que signal inc. En conséquence, lorsque le circuit ET/OU 201 fonctionne dans le mode ET, le signal inc est constitué du signal and_result et est activé lorsque tous les bits du signal events 400 qui sont d'intérêt comme spécifié par composite mask 410, sont positionnés. Lorsque le circuit ET/OU 201 fonctionne dans le mode OU, le signal inc est constitué du signal or result et est activé lorsque l'un quelconque des bits du signal events 400 qui sont d'intérêt comme spécifié par composite mask 410, est positionné. Le bit acc 416 de composite mask 410 peut être positionné par CSR. Le positionnement du bit TM 414 dans composite mask 410 désigne le signal match thresh event dans le signal events comme bit d'intérêt; le non positionnement du bit TM dans composite mask a pour conséquence que la valeur du signal match thresh event dans le signal events 400 et ainsi, le résultat d'une quelconque opération de correspondance ou de seuil 2871591 22 exécutée par le circuit de correspondance/seuil de 102, est ignoré. En poursuivant en référence à la figure 3A, le fonctionnement d'un mode de réalisation du circuit compteur 208 va être décrit plus en détail. Le circuit compteur 208 est un compteur de X bits pouvant maintenir, incrémenter d'une unité, ajouter S bits, et effacer ou charger une valeur dans un registre de valeur de compte 312. Un autre traitement peut également s'effectuer pour lire la valeur du registre 312. Dans le mode de réalisation illustré sur la figure 3A, X est égal à 48. Le fonctionnement du circuit compteur 208 est activé en positionnant un signal d'activation de compteur B, qui est constitué de l'entrée d'une porte ET à deux entrées 314. L'autre entrée de la porte ET 314 est connectée de manière à recevoir le signal inc produit à partir du signal inc_raw comme décrit en détail ci-dessus. En conséquence, lorsque le circuit compteur 208 est activé et que le signal inc est activé, un un logique est fourni en sortie par la porte ET 314. Dans tous les autres cas, la sortie de la porte ET 314 est un zéro logique. La sortie de la porte ET 314 est reproduite par un réplicateur 8x 316 et le signal de 8 bits résultant fait l'objet d'un ET bit par bit avec un signal de 8 bits fourni en sortie par un circuit multiplexeur 318. Les entrées du circuit multiplexeur 318 sont constituées du signal sum[7:0] fourni en sortie par le circuit szero 206 et d'un signal de 8 bits dont la valeur est [00000001]. Le signal sum[7:0] est fourni en sortie par le circuit multiplexeur 318 lorsque le signal acc est activé ; sinon, le signal [00000001] est fourni en sortie par le circuit multiplexeur. Un circuit ET, représenté par une porte ET 320, effectue un ET bit par bit des signaux fournis en sortie par le réplicateur 316 et par le circuit multiplexeur 318. Le signal de 8 bits résultant est appliqué à 2871591 23 l'entrée d'un registre 322. Un additionneur 324 additionne le signal de 8 bits mémorisé dans le registre 322 avec la somme de 48 bits mémorisée dans le registre de valeur de compte 312. new sum, fourni en sortie par l'additionneur 324 est appliqué à l'entrée d'un circuit multiplexeur 326. Deux autres ensembles d'entrées vers le circuit multiplexeur 326 sont respectivement connectées à un zéro logique et à csr write value. Lorsqu'un signal d'activation csr write vers le circuit multiplexeur 326 est activé, la valeur de csr write value est fournie en sortie par le circuit multiplexeur 326 et écrite dans le registre de valeur de compte 312. De cette manière, on peut charger une valeur dans le registre de valeur de compte 312. De façon similaire, lorsque le signal clearcounter est positionné, 48 bits à zéro sont fournis en sortie par le circuit multiplexeur 326 au registre de valeur de compte 312, effaçant ainsi le registre. Si, ni le signal csr_write, ni le signal clear counter, n'est positionné et que le signal acc est positionné, la sortie de l'additionneur 324 est écrite dans le registre de valeur de compte 312, additionnant ainsi effectivement S bits (c'est-à-dire, la valeur du signal sum[7:0]) à la valeur précédente du registre de valeur de compte 312. La non activation du circuit compteur 208 a pour conséquence que le registre de valeur de compte 312 est maintenu à sa valeur courante. Enfin, pour incrémenter d'une unité la valeur du registre de valeur de compte 312, le circuit compteur 208 doit être activé, le signal inc doit être positionné et le signal acc ne doit pas être positionné. Comme décrit en détail ci-dessus, la figure 4 illustre le fait que la totalité du bus de collecte de données 104 (figure 1) est disponible pour l'ensemble des compteurs de performances représentés par le compteur de performances 200, les rendant à usage 2871591 24 général. L'ensemble des D bits du signal debug_bus peuvent être utilisés par le circuit ET/OU 201. N bits alignés sur les limites de blocs peuvent être sélectionnés par le circuit smsel 206, permettant une couverture complète du bus d'observabilité 104. Une mise en oeuvre de l'invention ici décrite fournit ainsi un compteur de performances à usage général. Les modes de réalisation préséntés et décrits ont été caractérisés comme étant uniquement explicatifs; on comprendra facilement en conséquence que diverses variantes et modifications peuvent en être réalisées, sans s'écarter de la portée de la présente invention telle que présenté dans les revendications qui suivent. Par exemple, bien que les modes de réalisation soient décrits en référence à un ASIC, on comprendra que les modes de réalisation peuvent être mis en oeuvre dans d'autres types de circuits imprimés, tels que des chipsets personnalisés, des réseaux prédiffusés de portes programmables ( FPGA ) , des dispositifs logiques programmables ( PLD ), des modules logiques matriciels génériques ( GAL ) et analogue. De plus, bien que les modes de réalisation présentés puissent être mis en oeuvre en utilisant des CSR, on comprendra que des signaux de contrôle peuvent également être appliqués d'une diversité d'autres manières, y compris, par exemple, directement ou peuvent être appliqués par l'intermédiaire de registres de balayage ou de registres spécifiques au modèle ( MSR ). De plus, bien que des tailles de champs de bits spécifiques aient été illustrées en référence aux modes de réalisation décrits, par exemple un seuil de 16 bits pour la correspondance de motif (où les 8 bits inférieurs sont utilisés pour le seuil), un signal mask de 80 bits, am sel de 3 bits, etc., diverses autres mises en oeuvre peuvent également être réalisées. 2871591 25 En conséquence, l'ensemble de ces modifications, extensions, variantes, amendements, additions, suppressions, combinaisons, et analogue, sont estimés appartenir à l'ambition de la présente invention dont la portée n'est définie que par les revendications présentées cidessous. 26 REVENDICATIONS 1. Circuit (352) destiné à suivre la durée minimale et maximale d'un événement d'intérêt, le circuit (352) étant connecté à un compteur (208) destiné à compter le nombre de cycles d'horloge durant lesquels l'événement d'intérêt est actif, le circuit (352) comprenant: des circuits logiques (352a, 352b) pour détecter la désactivation de l'événement d'intérêt et produire un signal de fin de durée; des circuits logiques (352f, 352g) réagissant au signal de fin de durée pour comparer une valeur de compte (312) à une valeur fantôme (351) ; et des circuits logiques (352i, 352h) pour mettre à 15 jour la valeur fantôme en se basant sur les résultats de la comparaison. 2. Circuit (352) selon la revendication 1, dans lequel, lorsqu'un mode de fonctionnement minimum est sélectionné, les circuits logiques (352f, 352g) de comparaison activent un signal signifiant plus petit que , réagissant au fait que la valeur de compte (312) est plus petite que la valeur fantôme (351). 3. Circuit (352) selon la revendication 1 ou la revendication 2, dans lequel les circuits logiques (352i, 352h) de mise à jour sont constitués de circuits logiques (352k, 3521, 352m) pour remplacer la valeur fantôme (351) par la valeur de compte (312) en réagissant à l'activation du signal signifiant plus petit que . 4. Circuit (352) selon la revendication 1, dans lequel, lorsqu'un mode de fonctionnement maximum est sélectionné, les circuits logiques (352f, 352g) de comparaison activent un signal signifiant plus grand que , réagissant au fait que la valeur de compte (312) est plus grande que la valeur fantôme (351). 5. Circuit (352) selon la revendication 1 ou la revendication 4, dans lequel les circuits logiques 2871591 27 (352i, 352h) de mise à jour sont constitués de circuits logiques (352j, 3521, 352m) pour remplacer la valeur fantôme (351) par la valeur de compte (312) en réagissant à l'activation du signal signifiant plus grand que . 6. Procédé de suivi de la durée minimale et maximale d'un événement d'intérêt, utilisant un circuit (352) connecté à un compteur (208) destiné à compter le nombre de cycles d'horloge durant lesquels l'événement d'intérêt est actif, le procédé comprenant: la détection de la désactivation (352a, 352b) de l'événement d'intérêt et la génération d'un signal de fin de durée; en réaction au signal de fin de durée, la 15 comparaison (352f, 352g) d'une valeur de compte (312) à une valeur fantôme (351) ; et la mise à jour (352i, 352h) de la valeur fantôme (351) en se basant sur les résultats de la comparaison. 7. Procédé selon la revendication 6, comprenant en outre la sélection d'un mode de fonctionnement du circuit (352). 8. Procédé selon la revendication 7, dans lequel la comparaison active (352g) un signal signifiant plus petit que , réagissant au fait que la valeur de compte (312) est plus petite que la valeur fantôme (351) lorsqu'un mode de fonctionnement minimum est sélectionné. 9. Procédé selon la revendication 7, dans lequel la comparaison active (352f) un signal signifiant plus grand que , réagissant au fait que la valeur de compte (312) est plus petite que la valeur fantôme (351) lorsqu'un mode de fonctionnement maximum est sélectionné. 10. Procédé selon la revendication 6, la revendication 7, la revendication 8 ou la revendication 9, comprenant en outre la détection d'un cycle d'horloge valide.