Brevet FR2870373A1 — publié le 20051118

GESTION DU GEL D'UN MODULE FONCTIONNEL DANS UN SYSTEME SUR UNE PUCE La présente invention se rapporte de manière générale au domaine des systèmes électroniques numériques en circuit intégré, appelés "systèmes sur une puce" ou SoC (de l'anglais "System On a Chip"). Plus particulièrement, l'invention concerne la gestion du gel d'un module fonctionnel dans le but, par exemple, d'attendre la fin de l'exécution d'une opération par un autre module fonctionnel. Dans un système sur une puce, des ressources sont classiquement partagées entre des modules fonctionnels qui y ont accès. Un tel module fonctionnel est parfois appelé composant virtuel ou bloc de "propriété intellectuelle", ou encore bloc IP (de l'anglais "Intellectual Property") dans le jargon de l'Homme du métier. Il est conçu pour assurer une fonction déterminée, ou est à usage général (il s'agit éventuellement d'un microprocesseur ou d'un microcontrôleur). II peut être réalisé sous la forme d'éléments matériels et/ou d'éléments logiciels. On distingue les modules de type maître (ci-après modules initiateurs), qui prennent l'initiative d'échanger des données avec un ou plusieurs autres modules et les modules de type esclave (ci-après modules cibles), dont le rôle est de répondre aux requêtes reçues du module initiateur qui a la main. En cas de pluralité de modules initiateurs, une unité d'arbitrage (ou arbitre) est chargée d'arbitrer des requêtes conflictuelles d'accès à une ressource commune provenant de modules initiateurs distincts, pour accorder un droit exclusif d'accès à la ressource, à l'un déterminé desdits modules initiateurs. Classiquement, les modules fonctionnels communiquent via au moins un bus de communication comprenant un bus de données, un bus d'adresses et un bus de contrôle. Le traitement de la requête peut commencer par la mise en oeuvre d'une procédure d'établissement de liaison à acquittements naturels ("handshake" en anglais). Par procédure d'établissement de liaison, on entend une procédure au cours de laquelle le module initiateur et le module cible échangent des signaux de contrôle, jusqu'à ce qu'ils soient prêts pour la transmission mutuelle de données. Néanmoins, il existe des modules fonctionnels, en particulier de type initiateur, qui ne prévoient pas une telle procédure d'établissement de liaison. Pour assurer une grande rapidité de fonctionnement, certains modules initiateurs peuvent en effet être conçus pour collecter les informations de réponse du module cible en lisant le bus de données après une durée déterminée suivant l'émission d'une requête d'accès. Cette durée déterminée peut être aussi brève que la durée d'un cycle d'horloge du module initiateur. Par exemple, le microcontrôleur ST7 de STMicroelectronics est conçu pour émettre une requête de lecture de données en déposant sur le bus d'adresses l'adresse du registre ciblé sur un front actif de son signal d'activation (signal d'horloge du ST7), et pour lire les données présentes sur le bus de données (qui sont toujours supposées être les données présentes) sur le front actif suivant dudit signal d'activation, sans aucune synchronisation avec le fonctionnement du module cible. Un tel protocole ne fonctionne évidemment que si le module initiateur est assez rapide pour traiter la requête dans la durée d'un cycle du signal d'horloge du ST7. Tel n'est pas toujours le cas en pratique. De plus, si le module cible prévoit l'exécution d'une procédure d'établissement de liaison avant de traiter la requête, on doit prévoir un module d'interface et de commande pour réaliser l'interface entre le module initiateur et le module cible. La mise en oeuvre de la procédure d'établissement de liaison entre le module d'interface et le module cible peut prendre plus de temps que la durée d'attente par le module initiateur (par exemple, pour le microcontrôleur ST7, la durée d'un cycle de son signal d'horloge). Afin de contourner ces difficultés, on peut penser à "geler" (c'est-àdire bloquer) le module initiateur jusqu'à ce que le traitement de la requête par le module cible soit terminé, en incluant une instruction prévue à cet effet dans le microcode exécuté par le module initiateur, à la suite de l'instruction correspondant à la requête. Une telle instruction de gel existe dans le jeu d'instructions de la plupart des microcontrôleurs et des microprocesseurs. Elle est prévue et utilisée, en général, pour placer le composant dans un mode d'attente ou mode "gelé", afin de réduire sa consommation d'énergie. Pour le microcontrôleur ST7, il s'agit par exemple des modes "WAIT" ou "HALT". L'exécution de l'instruction de gel peut classiquement provoquer l'inhibition du signal d'horloge du module initiateur au niveau d'un module de génération de signaux d'horloge du système. Néanmoins, l'exécution de l'instruction de gel peut elle-même prendre plusieurs cycles d'horloge. En particulier, le gel des microcontrôleurs et des microprocesseurs requiert la sauvegarde de leur contexte d'exécution, lequel doit ensuite être restauré lors du "réveil" (c'est-à- dire du déblocage) du composant. Cette mise én oeuvre par logiciel est donc consommatrice de temps et d'énergie, tant pour le gel que pour le réveil du module initiateur. II s'ensuit aussi que le gel effectif du module initiateur peut intervenir trop tard, c'est-à-dire après que le module initiateur ait lu les données présentes sur le bus de données en croyant à tort qu'il s'agissait de données de réponse provenant du module cible. Le système est dès lors être exposé à un risque de dysfonctionnements. L'invention vise à résoudre les problèmes de l'art antérieur précités, en améliorant la rapidité du gel et du réveil d'un composant tel qu'un module initiateur. Ainsi, un premier aspect de l'invention propose un système électronique comprenant un module initiateur et au moins un module cible adressable par ledit module initiateur. Le module initiateur est activé par les fronts d'un signal d'activation généré à partir d'un premier signal d'horloge ayant une fréquence déterminée. Le système comprend en outre une unité de commande activée par les fronts d'un second signal d'horloge ayant une fréquence déterminée, qui est au moins deux fois supérieure à la fréquence du premier signal d'horloge. En outre, l'unité de commande est construite pour, en réponse à une requête d'accès au module cible initiée par le module initiateur sur un front actif déterminé du signal d'activation, positionner un signal d'inhibition du signal d'activation avant le front suivant de celui-ci, et pour réinitialiser ledit signal d'inhibition sur le premier front actif du premier signal d'horloge qui suit l'indication par le module cible que le traitement de la requête est terminé au niveau du module cible. Ainsi, le signal d'activation du module initiateur est inhibé par le signal d'inhibition avant de changer d'état logique. Le module initiateur est donc gelé sans aucun délai. Cette solution, qui est avantageusement implémentée sous forme matérielle et non sous forme logicielle, répond donc au problème posé. Selon un mode de réalisation, le système comprend en outre un bus d'adresses sur lequel une adresse du module cible est déposée par le module initiateur en tant que partie de la requête d'accès au module cible. L'unité de commande peut alors avantageusement être construite pour positionner le signal d'inhibition à l'aide d'une logique de décodage de ladite adresse du module cible. Avantageusement, le signal de sélection sert à la fois à notifier au module cible qu'il fait l'objet d'une requête d'accès, et à générer le signal d'inhibition. Selon un mode de réalisation, la logique de décodage d'adresse est construite pour positionner un signal de sélection du module cible en cas de décodage de l'adresse du module cible. L'unité de commande peut alors être construite pour générer le signal d'inhibition à partir dudit signal de sélection du module cible. Dans une première forme de réalisation, la logique de décodage d'adresse est comprise dans le module de commande. Ceci rend le module de commande indépendant, en sorte qu'il peut être réutilisé dans tout type de réalisation pratique, en tant que bloc IP pré-conçu et pré-testé. Dans unie variante dans laquelle le système comprend un décodeur d'adresse qui est couplé au bus d'adresses, la logique de décodage d'adresse est comprise dans ledit décodeur d'adresse. Ainsi, l'invention utilise une logique de décodage déjà existante. Le signal d'activation est avantageusement généré de façon matérielle, par combinaison logique entre le premier signal d'horloge et le signal d'inhibition. Lorsque ces signaux sont actifs à l'état logique 1, cette combinaison logique est par exemple de type OU. Un second aspect de l'invention propose une clé de stockage comprenant au moins une mémoire non volatile et un circuit de commande, caractérisée en ce que le circuit de commande est un circuit sur une puce (SoC) formant un système selon le premier aspect ci-dessus. D'autres caractéristiques et avantages de l'invention apparaîtront encore à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit être lue en regard des dessins annexés sur lesquels: - la figure 1 est un schéma synoptique d'un exemple de clé de mémoire selon le second aspect de l'invention; - la figure 2 est un schéma synoptique d'un exemple de système électronique selon le premier aspect de l'invention, qui peut être compris dans la clé de mémoire de la figure 1; - la figure 3 est un schéma illustrant le couplage d'un module 10 fonctionnel à un bus de communication; - la figure 4 est un schéma synoptique d'un exemple de module de commande utilisable dans un système selon la figure 2; - la figure 5 montre des chronogrammes illustrant un exemple de fonctionnement du module de commande selon la figure 4; et - la figure 6 est un schéma synoptique d'un autre exemple de système électronique selon le premier aspect de l'invention. L'invention est décrite ci-après dans un exemple d'application à un circuit de commande destiné à gérer une clé de stockage ou clé de mémoire. Une clé de mémoire forme un medium de stockage de masse de petites dimensions, monté dans un support amovible prenant la forme d'une clé ou d'un porte-clés. Ce medium permet de stocker et de transporter facilement une certaine quantité de données, dans le but, par exemple, de les transférer d'un ordinateur à un autre. Une telle clé de mémoire s'insère en principe dans les ports USB ("Universal Serial Bus") des ordinateurs. C'est pourquoi on l'appelle aussi clé de stockage USB, clé de mémoire USB ou tout simplement clé USB. A la figure 1, une telle clé de mémoire 1 comprend un circuit de commande 10, couplé à un connecteur 5 de type USB, via un circuit 4 d'interface USB. Par ailleurs, le circuit 10 est couplé à une ou plusieurs mémoires 2, 3 non volatiles et de grande capacité, qui sont par exemple des mémoires de type NAND-Flash ou similaire. Le circuit 10 est télé-alimenté lorsque la clé de mémoire 1 est connectée via le connecteur 5 à un ordinateur (non représenté) ou similaire. Le circuit d'interface 4 peut par exemple assurer la compatibilité avec la norme USB 2.0 (norme pour l'échange de données entre les ordinateurs à usage général et leurs périphériques). Le circuit de commande peut avantageusement être un système sur une puce (SoC), afin de satisfaire un haut degré d'intégration requis par la miniaturisation souhaitée de ce genre de produits électroniques. La figure 2 illustre un exemple d'architecture d'un tel système. Dans cet exemple, le système 10 comprend deux coeurs 21 et 22, qui sont par exemple respectivement un microcontrôleur tel que le ST7 de STMicroelectronics, et un coprocesseur dédié aux opérations de commande des moyens de stockage de masse formés par les mémoires internes 2 et 3. Ces coeurs 21 et 22 sont conçus en tant que modules fonctionnels de type initiateur (respectivement Il et 12). Une mémoire volatile (RAM "Random Access Memory") 25, est utilisée par les modules 21 et 22 pour stocker des informations temporaires, liées à l'application concernée. De plus, une mémoire non volatile (ROM "Read Only Memory") 26 stocke des données permanentes, notamment le code de l'application qui est chargé dans les modules 21 et/ou 22 à la mise sous tension. Le système 10 comprend aussi un contrôleur de périphérique 23, en particulier un contrôleur de fonction USB 2.0, tel que le composant virtuel MUSBHSFC InventraTM de Mentor Graphics, en tant que module fonctionnel de type cible (T1). Ce composant virtuel est compatible avec le standard VCI précité. Dans un exemple, le module 23 comprend plusieurs registres de données (non représentés), qui peuvent être des registres classiques ou des registres indexés. Le module cible 23 est adressable par les modules initiateurs 21 et 22 via une valeur d'adresse déterminée. Par exemple, pour accéder à l'un des registres du module 23, un module initiateur génère une requête d'accès comportant l'adresse correspondante d'un registre du module 23. A la fois le microcontrôleur 21 et le coprocesseur 22 peuvent avoir accès, sur requête, aux registres de données du contrôleur de périphérique 23. Des données peuvent être échangées entre les modules initiateurs 21 et 22 d'une part, et le module cible 23 d'autre part, via un module de commande 20 qui leur est relié de manière ad hoc, par exemple via des bus de communication. Dans un mode de réalisation, le module de commande 20 est construit pour assurer le gel et le réveil du module 21, ainsi qu'il sera expliqué en détail plus loin. Dans l'exemple représenté en traits continus à la figure 2, le module de commande 20 est relié aux modules 21, 22 et 23 par des bus de communication respectivement 40a, 40b et 40c. Le bus 40a est par exemple le bus de communication du microcontrôleur ST7, dont le protocole de communication ne prévoit pas de procédure d'établissement de liaison. Les bus 40b et 40c sont par exemple des bus VCI OCB ("VCI On Chip Bus") dont le protocole de communication, conforme aux spécifications du standard VCI ("Virtual Component Interface") de la VSIA ("Virtual Socket Interface Alliance"), Wakefield, Massachusetts, Etats-Unis, prévoit une procédure d'établissement de liaison. Le module de commande 20 comprend une unité de commande (non représentée) pour assurer l'interface entre le bus 40a du ST7 et le bus VCI OCB. De plus, le contrôleur 23 étant une ressource commune aux deux coeurs 21 et 22, le module de commande 20 comprend une unité d'arbitrage (non représentée) pour arbitrer les conflits entre des requêtes conflictuelles d'accès au module cible et accorder un droit exclusif d'accès à la ressource à l'un seulement des modules initiateurs concernés. Dans des variantes symbolisées par les traits en pointillés, le module initiateur 21 et/ou le module initiateur 22 peuvent être reliés au module cible 23 via les bus 40a et 40b directement. Dans ce cas, le module de commande 20 n'assure pas l'interface entre le protocole du bus du ST7 et le protocole VCI du module 23. Le module 21 doit alors comporter une interface VCI. Le module de commande 20 est alors dédié à la fonction de gel du module 21, qui sera décrite en détail plus loin. Le système 10 comprend encore un circuit 29 de génération de signaux d'horloge, ou générateur d'horloge (CLK_GEN). Le générateur 29 produit, à partir un oscillateur à cristal (non représenté), des signaux d'horloge dont les fronts actifs respectifs activent les composants du système. Ici, on considère par exemple que les fronts d'activation de tous les signaux d'horloge sont les fronts montants. En particulier, le générateur 29 produit un signal d'horloge CK1, un signal d'horloge CK_I2 pour l'activation du module initiateur 22, et un signal d'horloge CK_CTRL pour l'activation du module de commande 20. Un signal d'activation CK 11 du module initiateur 21 est généré par un élément logique 29a, à partir du signal d'horloge CK1. La fréquence du signal CK_I1 est par exemple égale à celle du signal d'horloge CK1. L'élément logique 29a est par exemple compris dans le générateur d'horloge 21, ou dans le module initiateur 21, ou encore dans le module de contrôle 20 (pour plus de clarté et de généralité, on l'a ici représenté en tant que bloc fonctionnel indépendant). C'est par exemple une porte logique de type OU, qui combine le signal d'horloge CK1 reçu sur une première entrée et un signal d'inhibition MWAIT reçu sur une seconde entrée, pour délivrer le signal CK_I1 en sortie. Le signal d'inhibition MWAIT est un signal logique généré par le module de commande 20 de la façon qui sera décrite plus loin. Dit autrement, lorsque le signal d'inhibition est actif (c'est-à-dire à l'état logique 1), il inhibe le signal CK 11 d'activation du module 21 en le maintenant à l'état logique 1. Par inhibition du signal CK_I1 on entend le blocage de ce signal dans un état logique déterminé, ici l'état logique 1, d'où il résulte que ce signal ne présente plus de fronts actifs pour l'activation du module initiateur 21. Il en résulte que le module initiateur 21 est gelé. Lorsque le module initiateur 21 est un microcontrôleur ST7, la fréquence du signal d'horloge CK1 est par exemple égale à 15 ou 30 MHz, selon le mode de fonctionnement courant du microcontrôleur. La fréquence du signal CK_CTRL est au moins deux fois plus grande que la fréquence maximum du signal d'horloge CK1. Dans l'exemple précité, la fréquence du signal CK_CTRL peut ainsi être égale à 60 MHz ou plus. Cette condition permet au module de commande 20 d'inhiber le signal CK_I1 dans un intervalle de temps suivant un front actif du signal CK1 qui est inférieur à une demi période du signal d'horloge CK1, c'est-à-dire avant le front suivant (ici un front descendant) de ce signal. Le schéma de la figure 3 illustre la connexion d'un module fonctionnel 50 quelconque à un bus de communication 40 qui comprend des canaux pour la communication d'informations entre ce module et un autre module du système. Le bus de communication 40 peut ainsi comprendre, dans un exemple, un bus de données 51, un bus d'adresses 52 et un bus de contrôle 53. Dans certains cas, le bus de données 51 comprend un sous-bus de données pour la lecture de données, et un sous-bus de données pour l'écriture de données. Le module fonctionnel 50 comprend un port de communication 54, qui peut être de type maître ou de type esclave selon que le module 50 est de type initiateur ou de type cible, respectivement. Le port 54 permet la liaison du module 50 au bus de communication 40. Le bus de données 51 est utilisé pour transmettre les signaux de données (D), qui contiennent les informations échangées entre les modules du 15 système. Le bus d'adresses 52 est utilisé pour transmettre les valeurs d'adresses (@), qui indiquent le module dans lequel les données transmises sur le bus de données doivent être lues ou écrites, ainsi éventuellement que leur emplacement à l'intérieur du module concerné. Enfin, le bus de contrôle 53 est utilisé pour transmettre les signaux de commande. De tels signaux servent notamment aux modules initiateurs pour faire des requêtes d'accès à des registres dans les modules cibles. Ils servent aussi aux modules cibles pour indiquer la fin d'une transaction, et éventuellement la réussite ou l'échec de la transaction. D'autres signaux de commande servent aussi à définir le sens de la transaction (lecture ou écriture), synchroniser les échanges, etc. On va maintenant décrire un premier mode de réalisation du module de commande 20, en référence au schéma de la figure 4 (par souci de simplicité, seulement la connexion du module de commande 20 au module cible 23 et au module initiateur 21 sont représentées sur cette figure). Le contrôleur 23 étant ici une ressource commune aux deux coeurs 21 et 22, le module de commande 20 comprend une unité d'arbitrage 24 (ARB). On note ainsi I1_Req un signal de requête d'accès délivré à l'unité d'arbitrage 24 par le module initiateur 21 via le bus de contrôle 53 du bus 40a. Ce signal est activé (c'est-à-dire positionné à son état actif, par exemple l'état logique 1), lorsque le module initiateur 21 a besoin d'accéder au module cible 23. Il y a conflit lorsque des signaux de ce type reçus de plus d'un module initiateur sont actifs simultanément. L'unité d'arbitrage 24 doit arbitrer ce conflit, pour accorder un droit exclusif d'accès à la ressource à l'un seulement des modules initiateurs concernés. A cet effet, l'unité d'arbitrage 24 met en oeuvre un mécanisme d'arbitrage qui peut être de n'importe quel type connu, par exemple à algorithme par permutation circulaire, à algorithme d'ancienneté ou à priorités fixes. Par ailleurs, l'unité d'arbitrage 24 reçoit un signal de commande Req_End du module cible 23, via le bus de contrôle 53 du bus 40c. Ce signal est actif (par exemple à l'état logique 1) pour indiquer que le traitement par le module cible de la requête en cours est achevé. En effet, l'unité d'arbitrage 24 ne doit pas permettre l'accès au module cible par un autre module initiateur avant que le traitement de la requête en cours soit terminé. Dit autrement, le droit exclusif d'accès accordé à un module initiateur doit être maintenu jusqu'à la fin du traitement de la requête pour laquelle il a été accordé. Le module de commande 20 comprend aussi une unité logique de décodage d'adresse 28 (@DEC). Celle-ci reçoit une adresse @ via le bus d'adresses 52 du bus 40a, laquelle adresse est placée sur ce bus lors d'une requête d'accès initiée par le module initiateur 21. Cette adresse identifie le registre de données concerné par la requête d'accès. On suppose ici qu'il s'agit d'un registre du module cible 23. De façon connue en soi, l'unité 28 génère un signal de sélection de composant TI_Sel, qui est un signal de commande indiquant au module cible 23 que la requête d'accès concerne l'un de ses registres. Le signal TI_Sel est transmis au module 23 via le bus de contrôle 53 du bus 40c. En outre, l'adresse @ est transmise au module 23 via le bus d'adresses 52 du bus 40c. Le module de commande 20 comprend enfin une unité de commande 27 (CU), qui a notamment pour fonction de geler et de réveiller le module initiateur 21 en réponse à une requête d'accès au module cible 23 provenant du module initiateur 21. L'unité de commande a aussi pour fonction de stocker les paramètres de la requête lorsque le module initiateur 21 est gelé, et de les restaurer lorsque le module initiateur 21 est réveillé. Ainsi, on s'assure qu'aucune information n'est perdue pendant la période de temps au cours laquelle le module initiateur 21 est gelé. Dans un exemple, une requête est stockée au niveau atomique, c'est- à-dire au plus bas niveau protocolaire, qui est le niveau d'une opération du microcode correspondant à la requête. Pour remplir ses fonctions de stockage et de restauration des paramètres de la requête, l'unité de commande 27 est couplée au bus 40a, et à une mémoire tampon 29b du module de commande 20. En particulier, les données de la requête sont lues par l'unité de commande sur le bus de données 51 du bus 40a, et sont stockées dans la mémoire 29b, en réponse au signal I1_Req et au signal TI_Sel. De même, l'adresse du module cible qui est sur le bus d'adresses 52 du bus 40a déposée par le module initiateur en tant que partie de la requête est lue sur ce bus et est stockée dans la mémoire tampon 29b. De même, enfin, les données de contrôle sont lues sur le bus de contrôle 53 du bus 40a et sont stockées dans la mémoire tampon 29b. Pour remplir sa fonction de gel et de réveil du module initiateur 21, l'unité de commande 27 est couplée au bus de contrôle 53 du bus de communication 40a pour recevoir le signal de contrôle 11_Req de la requête. Cela lui permet de déterminer que le module cible 21 initie une requête. Elle est aussi couplée au bus de contrôle 53 du bus de communication 40c pour recevoir le signal de fin d'exécution de la requête Req_End délivré par le module cible 23. Elle reçoit encore le signal TI_Sel délivré par l'unité de décodage d'adresse 28. Cela lui permet de déterminer que la requête courante concerne le module cible 23, en sorte qu'il est nécessaire de geler le module initiateur. Enfin, elle délivre le signal d'inhibition MWAIT qui a été présenté plus haut en regard du schéma de la figure 2. L'unité de commande 27 provoque le gel du module initiateur 21 en positionnant le signal MWAIT (c'est-à-dire en le passant à l'état logique 1), en réponse au signal 11_Req et au positionnement du signal TI_Sel (c'est-à-dire lorsque T1_Sel=1). Au contraire, l'unité de commande 27 provoque le réveil du module initiateur 21 en réinitialisant le signal MWAIT (c'est-à-dire en le passant à l'état logique 0), en réponse au positionnement du signal Req_End (c'est-à-dire lorsque Req_End=1). Les chronogrammes de la figure 4 illustrent un exemple de fonctionnement de l'unité de commande 27 selon la présente invention. Sur ces chronogrammes, les fronts actifs (ici les fronts montants) des signaux sont identifiés par une flèche (verticale). La première courbe de la figure 4 montre le signal d'horloge CK_CTRL dont les fronts montants activent le module de commande 20. On note FCK CTRL la période du signal CK_CTRL. La deuxième courbe montre le signal d'horloge CK1, dont la période est notée 11FcKI. La fréquence FCK CTRL du signal CK CTRL étant au moins deux fois supérieure à la fréquence FcK1 du signal CK1, on a la relation suivante: 1 1 On suppose que, sur un front actif déterminé du signal d'activation CK I1, le module initiateur 21 délivre une requête d'accès au module cible 23. Cette requête se traduit en particulier par un signal de commande multibits 11_Req (quatrième courbe) placé sur le bus de contrôle 53 du bus 40a. En outre, elle se traduit aussi pas des signaux d'adresse et des signaux de données multi-bits (non représentés), placés respectivement sur le bus d'adresse 52 et sur le bus de données 51 du bus 40a. Ces signaux suivent la même chronologie que le signal de contrôle 11_Req. C'est pourquoi ils ne sont pas représentés à la figure. Après un retard At1 qui correspond au temps nécessaire au décodage d'adresse, l'unité de décodage d'adresse 28 positionne ensuite le signal TI_Sel de sélection du module cible 23. FCK CTRL 2xFCK1 (1) Sur le front actif suivant du signal d'horloge CK_CTRL, le fait que le signal TI_Sel soit positionné et le fait que le signal I1_Req soit présent sur le bus de contrôle, font que le module de commande positionne le signal d'inhibition MWAIT. Ceci se produit avec un retard At2 par rapport au front actif du signal CK_11 sur lequel la requête a été générée. On notera que, néanmoins, le signal MWAIT passe ainsi à l'état logique 1 avant le front suivant du signal CK 11, qui est un front descendant. Ceci est une conséquence de la relation (1) ci-dessus. Dit autrement, le retard At2 est inférieur à une demi période du signal CK1, et donc du signal CK_I1. Il s'ensuit que le signal CK_l1 est bloqué à l'état logique 1 sansrepasser par l'état logique O. Ainsi, selon un avantage de l'invention, même si le module initiateur 21 est conçu pour lire les données de réponse sur le front actif suivant de son signal d'activation CK_l1, comme c'est le cas pour un microcontrôleur ST7, cette lecture est retardée en raison du gel dudit signal d'activation, lequel correspond ainsi à un gel du module initiateur lui-même. Le traitement de la requête en cours est donc suspendu en ce qui concerne le module initiateur 21. Bien entendu, le traitement de la requête n'est toutefois pas suspendu en ce qui concerne le module cible 23, lequel n'est pas gelé et continue de fonctionner normalement. Parallèlement, les signaux de contrôle, d'adresse, et de données définissant la requête sont copiés par le module de commande des bus respectivement 53, 52 et 51 du bus 40a, vers la mémoire tampon 29a, par exemple sur le front montant du signal d'horloge CK_CTRL qui provoque le positionnement du signal MWAIT. Ces signaux sont ensuite reformatés afin de respecter les spécifications du protocole du bus 40c entre le module de commande 20 et le module cible 23. Lorsque le traitement de la requête en cours est terminé au niveau du module cible 23, celui-ci positionne le signal Req_End (c'est-à-dire le met à l'état logique 1) pour indiquer cet évènement au module de commande 20. Sur le front actif suivant du signal d'horloge CK_CTRL, le module de commande réinitialise (c'est-à-dire ramène à l'état logique 0) le signal d'inhibition MWAIT. La réinitialisation du signal d'inhibition MWAIT réinitialise le signal d'activation CK 11 soit immédiatement si le signal d'horloge CK1 est à l'état logique 0 (comme dans le cas représenté), soit sur le front descendant suivant du signal CK1 si celui-ci se trouve alors à l'état logique 1. Dans tous les cas, le premier front actif (front montant) du signal d'horloge CK1 suivant la réinitialisation du signal d'inhibition MWAIT correspond au premier front actif du signal d'activation suivant celui sur lequel la requête a été initiée. Ainsi, le module initiateur 21 est placé dans un mode gelé au minimum pendant une durée TF qui permet au module cible 23 de terminer le traitement de la requête. Le gel du module initiateur 21 intervient au fil de l'eau grâce à des moyens matériels relativement simples, sans sauvegarde, ni a fortiori restauration ultérieure, de son contexte d'exécution. On notera que la logique de décodage d'adresse 28 est de toute façon nécessaire, en sorte que l'invention ne nécessite pas l'ajout d'une telle logique de décodage. L'invention a été décrite ci-dessus dans un exemple d'application préféré mais non limitatif. Par exemple, on a décrit un mode de réalisation dans lequel le module de commande 20 incorpore l'unité d'arbitrage, l'unité de décodage d'adresse en plus de l'unité de commande. En variante, l'unité d'arbitrage peut être autonome, en étant couplée à un bus de communication reliant les modules fonctionnels du système. De même, l'unité de décodage peut être comprise dans un décodeur d'adresse couplé à un tel bus de communication. Le signal TI_Sel, délivré par ce décodeur d'adresse en cas de décodage de l'adresse du module cible 23 est alors pareillement reçu par l'unité de commande 27 du module de commande 20 via un bus de contrôle. Par ailleurs, dans l'exemple ci-dessus, le nombre N de modules fonctionnels du système est égal à 3, le nombre P de modules initiateurs est égal à 2, et le nombre Q de modules cible est égal à l'unité. Néanmoins, il est bien entendu que l'invention s'applique pareillement à des architectures de système plus complexes, dès lors que 1 A titre d'illustration, le schéma de la figure 6 montre l'architecture d'un système à un bus de communication 40. Des modules initiateurs 41, 42 et 43, ainsi que des modules cibles 44 et 45, sont reliés au bus 40. Chacun des modules ci-dessus est relié au bus 40 par l'intermédiaire d'un port de communication de type maître ou de type esclave selon que le module concerné est de type initiateur ou de type cible, respectivement. On rappelle que certains modules peuvent être à la fois de type initiateur et de type cible. Dans ce cas, ils sont reliés au bus 40 via des ports de communication ad hoc respectifs. Le système comprend aussi un décodeur d'adresses 47 qui est relié au bus 40, et un module d'arbitrage 46, ou arbitre, qui est également reliée au bus 40 pour assurer la sélection de celui des modules initiateurs 41, 42 ou 43 qui a le contrôle du bus 40 à un instant déterminé. Le module d'arbitrage 46 peut contenir l'unité d'arbitrage 24 de la figure 4. De même, le décodeur d'adresse 47 peut contenir l'unité de décodage d'adresse 28 de la figure 4. On notera que cette unité de décodage délivre autant de signaux de sélection de composant (tel que le signal TI_Sel de la figure 4), qu'il y a de modules cibles. Enfin, l'unité de commande 27 de la figure 4 peut être comprise dans l'unité d'arbitrage 46. Dit autrement, le module de commande 20 peut être confondue avec l'unité d'arbitrage 46. Dans le mode de réalisation représenté, toutefois, l'unité de commande 27 est comprise dans un module de commande 20 qui est couplé au bus 40. Dans tous les cas, le module 20 génère autant de signaux d'inhibition (tel que le signal MWAIT des figures 2 et 4) qu'il y a de module fonctionnel à geler, en se basant sur des signaux de commande délivrés lors d'une requête d'accès initiée par ces modules initiateurs et sur l'adresse des modules ciblés postée sur le bus d'adresse en tant que partie de ladite requête. Chacun des composants 41-47 ci-dessus est relié au bus 40 qui est par exemple un VCI OCB, de la manière décrite plus haut en référence au schéma de la figure 3. A cet effet, certains modules peuvent avoir besoin d'une interface VCI, comme c'est le cas du microprocesseur ST7, car en tant que tel ils ne supportent pas ce standard. REVENDICATIONS 1. Système électronique comprenant un module initiateur (21) et au moins un module cible (23) adressable par ledit module initiateur, caractérisé en ce que le module initiateur est activé par les fronts d'un signal d'activation (CK I1) généré à partir d'un premier signal d'horloge (CK1) ayant 5 une fréquence (FcK_cK1) déterminée, en ce qu'il comprend en outre un module de commande (20) activé par les fronts d'un second signal d'horloge (CK_CTRL) ayant une fréquence (FCK_CTRL) déterminée, qui est au moins deux fois supérieure à ladite fréquence du premier signal d'horloge, et en ce que ledit module de commande est construit pour, en réponse à une requête d'accès (Req_I1) au module cible initiée par le module initiateur sur un front actif déterminé du signal d'activation, positionner un signal (MWAIT) d'inhibition du signal d'activation avant le front suivant de celui-ci, et pour réinitialiser ledit signal d'inhibition sur le premier front actif du premier signal d'horloge qui suit l'indication (Req_End) par le module cible que le traitement de la requête est terminé au niveau du module cible. 2. Système selon la revendication 1, comprenant en outre un bus d'adresses (40a:53) sur lequel une adresse du module cible est déposée par le module initiateur en tant que partie de la requête d'accès au module cible, le module de commande étant construit pour positionner le signal d'inhibition à l'aide d'une logique de décodage (28) de ladite adresse du module cible. 3. Système selon la revendication 2, dans lequel la logique de décodage d'adresse est construite pour positionner un signal (TI_Sel) de sélection du module cible en cas de décodage de l'adresse du module cible, et dans lequel le module de commande est construit pour générer le signal d'inhibition à partir dudit signal de sélection du module cible. 4. Système selon la revendication 2 ou la revendication 3, dans lequel la logique de décodage d'adresse est comprise dans le module de commande. 5. Système selon la revendication 2 ou la revendication 3, comprenant un 5 décodeur d'adresse (46) qui est couplé au bus d'adresses et, dans lequel la logique de décodage d'adresse est comprise dans ledit décodeur d'adresse. 6. Système selon l'une quelconque des revendications précédentes, dans lequel le signal d'activation est généré par combinaison logique entre le 10 premier signal d'horloge et le signal d'inhibition. 7. Clé de stockage (1) comprenant au moins une mémoire non volatile (2,3) et un circuit de commande (10), caractérisée en ce que le circuit de commande est un circuit sur une puce formant système selon l'une quelconque des revendications précédentes.