FR 2795837 A1 20010105 FR 9908410 A 19990630 Procédé pour comptabiliser le temps dans un dispositif de traitement d'information, et dispositif associé L'invention concerne un procédé pour comptabiliser le temps dans un dispositif de traitement d'information comprenant des moyens de traitement et des moyens de mémorisation. On peut avoir besoin de comptabiliser le temps pour différents traitements internes du dispositif. On peut aussi en avoir besoin pour gérer une communication avec un autre dispositif. Par exemple, dans le domaine des cartes à puce selon la norme 1S07816-3, un lecteur de carte initie une communication avec la carte en lui envoyant un ordre. La carte, à réception de l'ordre, effectue un traitement défini par l'ordre reçu. Une exigence particulière est que la carte doit réagir en envoyant un message au lecteur de carte dans un certain délai, typiquement dans le délai d'une seconde, faute de quoi la carte est déclarée muette par le lecteur de carte, et la communication est interrompue. Soit la carte a fini d'effectuer son traitement dans ce délai, auquel cas elle fournit un résultat du traitement, soit elle n'a pas encore fini, auquel cas elle envoie un message d'attente lui permettant de bénéficier d'un nouveau délai d'une seconde pour finir son traitement. Or, on a constaté que ce délai n'était pas toujours suffisant pour permettre à la carte de finir son traitement. Cela est particulièrement vrai dans le cas d'une carte incorporant une machine virtuelle capable d'interpréter des instructions interprétables, écrites dans un langage évolué, pour les traduire dans un langage propre aux moyens de traitement de la carte. On peut citer à titre d'exemple la machine virtuelle JAVA (marque déposée par la société Sun Microsystems). Dans la technique connue, seuls les dispositifs de traitement d'information possédant un compteur de temps sont capables de comptabiliser le temps. Toutefois, le fait d'insérer un compteur de temps dans ces dispositifs présente l'inconvénient d'augmenter à la fois le coût de ceux-ci et leur taille. Ceci est particulièrement vrai dans le domaine des cartes à puces : quasiment tous les circuits du commerce, susceptibles d'être mis en carte, ne sont pas dotés d'un compteur de temps réalisé de façon matérielle. Aussi, un but principal de l'invention est de proposer des moyens pour comptabiliser le temps dans un dispositif de traitement d'information, sans nécessiter la présence d'un compteur de temps dans celui-ci. L'invention concerne à cet effet un procédé pour comptabiliser le temps dans un dispositif de traitement d'information comprenant des moyens de traitement et des moyens de mémorisation, caractérisé en ce qu'il comprend les étapes consistant à -évaluer un temps d'exécution nécessaire à l'exécution de chaque instruction d'un ensemble d'instructions à exécuter par les moyens de traitement ; -exécuter un programme comprenant un nombre déterminé d'instructions et, au moment de l'exécution de chaque instruction, faire progresser un compteur en ajoutant à une valeur de cumul du compteur une valeur significative du temps d'exécution de cette instruction. L'invention concerne aussi le dispositif associé. D'autres détails et avantages de la présente invention apparaîtront au cours de la description suivante d'un mode d'exécution préféré mais non limitatif, en regard des dessins annexés sur lesquels La figure 1 représente un objet portatif coopérant avec un dispositif de traitement de données ; et La figure 2 est un organigramme d'une procédure de comptage d'instructions selon l'invention. La figure 1 représente un dispositif de traitement de données 1 coopérant avec un objet portatif 8. Le dispositif de traitement de données comprend de façon connue en soi un microprocesseur 2 auquel sont reliés une mémoire ROM 3, une mémoire RAM 4, des moyens 5 pour coopérer, avec ou sans contact physique, avec l'objet portatif 8, et une interface de transmission 7 permettant au dispositif de traitement de données de communiquer avec un réseau de communication de données. Le dispositif de traitement de données 1 peut en outre être équipé de moyens de stockage tels que des disquettes ou disques amovibles ou non, de moyens de saisie (tels qu'un clavier etlou un dispositif de pointage du type souris) et de moyens d'affichage, ces différents moyens n'étant pas représentés sur la figure 1. Le dispositif de traitement de données peut être constitué par tout appareil informatique installé sur un site privé ou public et apte à fournir des moyens de gestion de l'information ou de délivrance de divers biens ou services, cet appareil étant installé à demeure ou portable. Il peut notamment s'agir aussi d'un appareil dédié aux télécommunications. Par ailleurs, l'objet portatif 8 porte une puce incluant des moyens de traitement de l'information 9, une mémoire non volatile 10, une mémoire volatile de travail RAM 14, et des moyens 13 pour coopérer avec le dispositif de traitement de données 1. Cette puce est agencée pour définir, dans la mémoire 10, une zone secrète 11 dans laquelle des informations une fois enregistrées, sont inaccessibles depuis l'extérieur de la puce mais seulement accessibles aux moyens de traitement 9, et une zone accessible 12 qui est rendue accessible depuis l'extérieur de la puce par les moyens de traitement 9 pour une lecture etlou une écriture d'informations. Chaque zone de la mémoire non volatile 10 peut comprendre une partie non modifiable ROM et une partie modifiable EPROM, EEPROM, ou constituée de mémoire RAM du type "flash" ou FRAM (cette dernière étant une mémoire RAM ferromagnétique), c'est-à-dire présentant les caractéristiques d'une mémoire EEPROM avec en outre des temps d'accès identiques à ceux d'une RAM classique. En tant que puce, on pourra notamment utiliser un microprocesseur autoprogrammable à mémoire non volatile, tel que décrit dans le brevet américain n 4.382.279 au nom de la Demanderesse. Dans une variante, le microprocesseur de la puce est remplacé - ou tout du moins complété - par des circuits logiques, En effet, de tels circuits sont aptes à effectuer des calculs, notamment d'authentification et de signature, grâce à de l'électronique câblée, et non microprogrammée. Ils peuvent notamment être de type ASIC (de l'anglais Application Specific Integrated Circuit ). Avantageusement, la puce sera conçue sous forme monolithique. L'objet portatif 8 contient, en tout ou partie en mémoire ROM, une machine virtuelle, par exemple une machine virtuelle JAVA (marque déposée) sous la forme d'un programme interpréteur capable d'interpréter des instructions interprétables écrites dans un langage évolué, universel, pour les transcrire en des instructions élémentaires écrites dans un langage propre aux moyens de traitement 9. Les instructions interprétables sont stockées en mémoire programmable (EEPROM ou équivalent) ou en mémoire ROM. La figure 2 illustre une séquence de comptage d'instructions interprétables selon l'invention. Cette séquence est insérée dans le programme interpréteur de l'objet portatif (en variante, la machine virtuelle n'est pas réalisée de façon logicielle mais matérielle, et la séquence de comptage d'instructions selon l'invention est réalisée sous forme matérielle dans la machine virtuelle). A l'étape 21, l'objet portatif 8 reçoit un ordre du dispositif de traitement de données 1 lui demandant d'exécuter des séquences d'instructions interprétables. Ces instructions interprétables peuvent provenir de deux sources simultanément : soit appartenir à une application stockée dans l'objet portatif, soit appartenir à un système d'exploitation de base des moyens de traitement 9. A l'étape 22, on met un compteur à 0, représenté par un nombre N d'instructions interprétables. A l'étape 23, le programme interpréteur exécute la première instruction interprétable de la séquence à exécuter. A l'étape 24, le programme interpréteur détermine si l'instruction interprétable qu'il vient de traiter était la dernière à exécuter ou non. Dans l'affirmative, il rend la main au dispositif de traitement de données 1 à l'étape 25. Dans la négative, le programme interpréteur incrémente le nombre N d'une unité (étape 26). A l'étape 27, il teste si le nombre N d'instructions interprétables déjà traitées est inférieur à un seuil N,.. Dans l'affirmative, il retourne à l'étape 23 pour traiter l'instruction interprétable suivante. Dans la négative, le programme interpréteur envoie (étape 28) un message au dispositif de traitement de données 1 : il s'agit d'un message d'attente pour indiquer au dispositif de traitement de données 1 que l'objet portatif n'a pas fini d'exécuter la séquence d'instructions interprétables demandée. On notera que la séquence de comptage d'instructions interprétables de la figure 2 sera déclenchée à chaque fois qu'une quelconque séquence d'instructions interprétables sera exécutée par les moyens de traitement, notamment dans les cas suivants -lors de l'installation d'une application qui vient d'être chargée dans l'objet portatif, à l'occasion de laquelle une séquence d'installation contenue dans l'application sera exécutée ; -lors de chaque exécution d'une application déjà installée. La valeur N,ax est déterminée expérimentalement. Une façon de déterminer cette valeur va maintenant être exposée. Le programmeur élabore un petit programme écrit en langage évolué, constitué d'une boucle exécutant n fois la même séquence d'instructions interprétables : cette séquence contient m instructions interprétables. Pour certaines valeurs de n, telles que 256 par exemple, le programmeur constate que l'objet portatif est déclaré muet par le dispositif de traitement de données 1 car il n'a pu exécuter toutes les instructions interprétables du programme dans le délai normalisé d'une seconde. Le programmeur fait alors baisser la valeur de n à 250, puis 240, etc.... jusqu'à trouver une valeur permettant à l'objet portatif de répondre dans le délai d'une seconde: il calcule alors le produit nxm et trouve un nombre. Puis, le programmeur reouvelle l'expérience avec une séquence contenant des instructions interprétables différentes des précédentes : il va trouver des nombres compris par exemple entre 4150 et 4500. II va se donner une marge en choisissant un nombre un peu plus faible que le plus petit de ces nombres, soit par exemple 4096 qui est une puissance de deux: ce nombre constitue le nombre N". . On notera que le nombre NR,ax dépend de la machine virtuelle utilisée, puisque le temps mis par les instructions interprétables pour s'exécuter dépend directement des performances de la machine virtuelle considérée, telle qu'elle a été écrite. Une autre façon de déterminer la valeur N,,a, consiste à mesurer la durée réelle de chaque instruction interprétée puis de faire une moyenne statistique des valeurs trouvées. On détermine par ailleurs un délai dans lequel l'objet portatif doit avoir répondu au dispositif de traitement de données 1 : pour un délai théorique d'une seconde, on prendra par exemple une certaine marge en choisissant le délai de 900 ms. La valeur NR,,x est alors obtenue en divisant 900 ms par la durée moyenne d'une instruction interprétée. Sur la figure 2, on a incrémenté le nombre N d'instructions interprétables juste après l'exécution de l'instruction interprétable courante on aurait aussi pu le faire juste avant, l'essentiel étant que cette incrémentation s'effectue avant qu'une nouvelle instruction interprétable s'exécute. Dans ce qui précède, on a décrit l'invention dans le cadre d'un objet portatif contenant une machine virtuelle et manipulant des instructions interprétables. L'invention s'applique aussi à un objet portatif dépourvu d'une telle machine virtuelle ; elle s'applique aussi à tout autre dispositif de traitement de données ayant à effectuer, sous un certain délai, une certaine opération, cette opération pouvant consister à fournir une réponse à un autre dispositif avec lequel il coopère, ou bien à effectuer un traitement interne. REVENDICATIONS 1. Procédé pour comptabiliser le temps dans un dispositif de traitement d'information (8) comprenant des moyens de traitement (9) et des moyens de mémorisation (10,14), caractérisé en ce qu'il comprend les étapes consistant à -évaluer un temps d'exécution nécessaire â l'exécution de chaque instruction d'un ensemble d'instructions à exécuter par les moyens de traitement ; -exécuter (23) un programme comprenant un nombre déterminé d'instructions et, au moment de l'exécution de chaque instruction, faire progresser (26) un compteur en ajoutant à une valeur de cumul du compteur une valeur significative du temps d'exécution de cette instruction. 2. Procédé selon la revendication 1, dans lequel on définit un temps d'exécution moyen, identique pour toutes les instructions à exécuter par les moyens de traitement, le compteur étant un compteur de nombre d'instructions et progressant d'une unité au moment de l'exécution de chaque instruction. 3. Procédé selon la revendication 1, comprenant les étapes consistant à -comparer (27), lors de l'exécution de chaque instruction, ladite valeur de cumul à une valeur de référence ; et -déclencher (28) une opération à effectuer par les moyens de traitement lorsque la valeur de cumul atteint la valeur de référence. 4. Procédé selon la revendication 1, dans lequel les instructions sont des instructions interprétables écrites dans un langage évolué, le procédé comprenant l'étape consistant à interpréter ces instructions interprétables afin de les traduire en des instructions élémentaires écrites dans un langage propre aux moyens de traitement et exécutées par les moyens de traitement. 5. Procédé selon la revendication 1, dans lequel le dispositif de traitement d'information (8) coopère avec un autre dispositif de traitement d'information (1) et la valeur de référence correspond à un temps dans lequel le dispositif de traitement d'information doit transmettre un message audit autre dispositif de traitement d'information et, lorsque la valeur de cumul atteint la valeur de référence, les moyens de traitement (9) transmettent (28) ledit message audit autre dispositif de traitement d'information. 6. Dispositif de traitement d'information (8) comprenant des moyens de traitement (9) et des moyens de mémorisation (10,14), caractérisé en ce qu'il comprend un compteur (26) qui, lors de l'exécution de chaque instruction d'un programme par les moyens de traitement, ajoute à une valeur de cumul du compteur une valeur significative du temps d'exécution de cette instruction. 7. Dispositif selon la revendication 6, qui comprend -des moyens de comparaison (27) pour comparer, lors de l'exécution de chaque instruction, ladite valeur de cumul à une valeur de référence ; et -des moyens de déclenchement (28) pour déclencher une opération à effectuer par les moyens de traitement lorsque ladite valeur de cumul atteint la valeur de référence. 8. Dispositif selon la revendication 6, dans lequel les instructions sont des instructions interprétables écrites dans un langage évolué et le dispositif comprend des moyens d'interprétation pour interpréter ces instructions interprétables afin de les traduire en des instructions élémentaires écrites dans un langage propre aux moyens de traitement et exécutées par les moyens de traitement.