Brevet FR2837294A1 — publié le 20030919

reference dans la base de donnees (52). DESCRIP I ION Domaine technique de ['invention La presente invention concerne un dispositif pour accelerer ['interpretation d'un programme en langage interprete, ledit programme comprenant un code intermediaire executable par une machine virtuelle et etant execute sous forme de taches successives, ledit dispositif comprenant des moyens d'acheminement apses a extraire un code intermediaire courant d'une memoire pour le charger dans des moyens de stockage. Wile trouve notamment son application dans les langages de programmation portables, de type lAVA par exemple, et plus particulierement dans ['interpretation et ['execution de tels langages de programmation. Un tel dispositif peut etre integre dans des recepteurs-decodeurs de television numerique (en anglais 'set-top-boxes'), des telephones mobiles ou tout autre appareii apte a executer des programmes ecrits dans un tel langage de programmation. Etat de la technique anterieure Le langage JAVA est un langage de programmation dit interprete. Son principal avantage est d'etre entierement portable ou multi-plateforme, un programme ecrit dans un tel langage pouvant etre execute dans un environnement autre que celui pour lequel il a ete congu. Une des raisons de son succes est sa possibilite d'insertion au sein d'une page html (en anglais'HyperText Markup Language') sous forme d'une application executable (en anglais'applet') par le biais d'une machine virtuelle. Un programme en langage JAVA est apte a generer un code intermediaire (en anglais tbytecode') entre le code source et le code binaire executable. Le code intermediaire est execute gr3ce a une machine virtuelle. Ce code intermediaire n'est done pas directement comprehensible par le processeur, ce qui peut provoquer certaines lenteurs dans ['execution du programme. Des dispositifs permettant d'accelerer le traitement des machines virtuelles de maniere a interpreter plus rapidement du code intermediaire vent connus de l'etat de la technique anterieure. La demande de brevet PCT WO/9918484 decrit un tel dispositif appeie interpreteur pour machine virtuelle. Un interpreteur pour machine virtuelle est generalement un preprocesseur, place entre une memoire contenant du code intermediaire et un processeur, qui permet de traduire le code intermediaire en un jeu dinstructions executables par le processeur. Dans un tel environnement, un changement de t3ches, d'une tache JAVA presente vers une nouvelle tache JAVA=, peut se produire a un instant arbitraire, et notamment au cours de la traduction d'un code intermediaire. De maniere conventionneile, les t3ches vent gerees par un systeme d'exploitation et le systeme d'exploitation amene le processeur a sauvegarder son etat propre ainsi que l'etat de tout element materiel (en anglais 'hardware') concerne, comme celui de l'interpreteur pour machine virtuelle dans notre cas, lors d'un changement de taches. Cette sauvegarde est effectuee a partir d'une routine de sauvegarde. Ainsi, lors d'un changement de fiches, un ensemble de registres, representant l'etat de l'interpreteur pour machine virtuelle et lietat diun processeur a ['instant de changement de taches, est sauvegarde de maniere a etre restaure ulterieurement afin de representer l'etat de la nouvelle t3che JAVA_. Or, les routines de sauvegarde permettant de sauvegarder les etats d'elements materiels peuvent prendre des centaines de cycles d'horloge, c'est-a-dire des dizaines de millisecondes, par changement de taches. Une telle operation presente done ['inconvenient d'etre particulierement lente. Expose de ['invention La presente invention a pour but de proposer un dispositif pour accelerer ['interpretation d'un programme en langage interprete, qui soit plus rapide que ltetat de la technique anterieure lors d'un changement de taches. A cet effet, ledit dispositif est remarquable en ce qu'il comprend des moyens d'acheminement qui vent apses a inhiber ['extraction du code intermediaire courant et a charger dans les moyens de stockage un code intermediaire reserve destine a effectuer une sauvegarde d'un contexte de la machine virtuelle, lors d'une requete de changement de taches. Ainsi, le dispositif pour accelerer 11nterpretation d'un prog ram me en langage interprete est apte a assurer lui-meme un changement de taches, a la place du systeme d'exploitation. Pour cela, il utllise un code objet reserve qui permet de ne sauvegarder qu'un contexte de la machine virtuelle, ledit contexte comprenant certains parametres, comme un indicateur de pile par exemple (en anglais 'stack pointer'), qui seront utiles lors du traitement du prochain code intermediaire courant apres le changement de taches. Un tel mecanisme permet en outre de traiter les codes intermediaires de fason continue, sans interrompre le traitement d'un code intermediaire courant, et done de faire un changement de taches dans un etat stable du systeme d'exploitation. Ainsi, il ntest plus necessaire de sauvegarder les registres du dispositif pour accelerer ['interpretation du langage interprete et du processeur, contrairement a ce qui etait fait dans l'etat de la technique anterieure. La presente invention concerne egalement un appareil apte a executer un programme selon un langage interprete et comprenant le dispositif pour accelerer ['interpretation du langage interprete. Breve description des dessins Ces aspects de ['invention ainsi que d'autres aspects plus detailles apparatront plus clairement grace a la description suivante de plusieurs modes de realisation de ['invention, donnes a titre d'exemples non limitatifs et en regard des dessins annexes parmi lesquels: - la Fig. 1 represente un premier mode de realisation de ['invention ou un nombre predetermine de codes intermediaires est execute entre deux changements de thches, et - la Fig. 2 represente un second mode de realisation de ['invention ou un delai predetermine s'ecoule entre deux changements de taches. Expose detaille d'au moins un mode de realisation de ['invention La presente invention a ete developpee dans le cadre de la conception d'un interpreteur pour machine virtuelle permettant d'accelerer ['interpretation du langage JAVA_. Il apparaA'tra cependant a l'homme du metier qutelle est applicable a d'autres langages de programmation a partir du moment ou ils vent apses a generer un code intermediaire entre le code source et le code binaire executable, iedit code intermediaire devant etre interprete afin d'etre execute par un processeur. Il peut s'agir, par exemple, du langage LISP ou du langage C# de Windows XP. Un code intermediaire JAVATM comprend une mnemonique, correspondent par exemple a une instruction de type addition ou soustraction, et eventuellement un ou piusieurs operandes, correspondent a un argument de type constante par exemple. Une mnemonique est codee sur 8 bits, et les 256 mnemoniques ainsi autorisees ne vent pas toutes utilisees. Il reste done certains codes intermediaires qui peuvent etre reserves par la machine virtuelle JAVA_ pour un usage interne. Ces codes intermediaires reserves ne peuvent etre utilises par la suite pour un autre usage. La presente invention propose d'utiliser un de ces codes intermediaires reserves afin de gerer un changement de t3ches JAVA_. De plus, l'interpreteur pour machine virtuelle est apte a assurer luimeme un changement de taches JAVA_, a la place du systeme d'exploitation. Ainsi, lors d'un changement de taches, il est apte a remplacer un code intermediaire courant par le code intermediaire reserve. L'execution du code intermediaire reserve genere un appel de fonction permettant a un logiciel de gestion temporelle de taches (en anglais 'scheduler') de sauvegarder un contexte de la machine virtuelle, correspondent generalement a un ensemble de parametres comprenant un indicateur de pile, un indicateur global (en anglais global pointer'), un compteur de programme (en anglais 'program counter') et un indicateur de structure JAVA_ (en anglais']AVATM frame pointer'). Ces parametres vent ensuite restaures lors de ltexecution du prochain code intermediaire courant. Ainsi, le temps de latence du au changement de taches se trouve reduit, et permet une execution du code intermediaire sans interruption. Dans un premier mode de realisation, illustre a la Fig. 1, l'interpreteur pour machine virtuelle VMI (10) permet d'etablir une correspondence (en anglais'to map') entre une tra nche de tem ps (en angla is 'time slice') et un temps d'execution d'un nom bre predetermine n de codes intermediaires courants entre deux changements de taches successifs. Pour cela, l'interpreteur pour machine virtuelle VMI (10) comprend un compteur BCC (12) de codes intermediaires courants, apte a indiquer a un circuit de controle CONT (14) une adresse d'une memoire MEM (11), ladite adresse correspondent a un code intermediaire courant a extraire de ladite memoire pour le charger dans un registre BCREG(16) de code intermediaire. L'interpreteur pour machine virtuelle VMI(10) comprend des moyens d'acheminement (13), lesdits moyens comportant, outre le circuit de contr81e CONT (14), un compteur d'acheminement COUN (21) dont la valeur initiale predeterminee n, correspondent au nombre de codes intermediaires a executer entre deux changements de t3ches, est initialement chargee via un registre REG (22). Le circuit de controle CONT (14) vient incrementer le compteur BCC (12) apres un traitement d'un code intermediaire courant, afin de pouvoir pointer sur le prochain code intermediaire courant. A chaque fois qu'un code intermediaire courant est achemine de la memoire MEM (11) vers le registre BCREG(16), le circuit de controle CONT (14) vient egalement decrementer le compteur d'acheminement COUN (21). Quand le nombre de codes intermediaires courants achemines est plus grand que la valeur initiale predeterminee n, i.e. Ie compteur d'acheminement COUN (21) a pour valeur zero, le compteur BCC(12) n'est pas incremente par le circuit de controle CONT (14), et un code intermediaire courant est remplace par un code intermediaire reserve appele 'software trap bytecode'et extrait d'un registre swr (23) par le circuit de controte CONT (14) afin d'etre charge dans le registre BCREG (16). Une porte (15) realisant la fonction tou'symbolise le fait que le registre BCREG(16) soit apte a recevoir, soit un code intermediaire courant dans le cas general, soit un code intermediaire reserve lors d'un changement de taches. Ce code intermediaire reserve est apte a generer un appel de fonction permettant de sauvegarder et de restaurer un contexte de la machine virtuelle pour le traitement du prochain code intermediaire courant. L'interpreteur pour machine virtuelle comprend egaiement un module de traduction TRAN (17) des codes intermediaires courants fonctionnant selon un principe connu de l'homme du metier et faisant notamment appel a des tables de traduction. Le code issu du module de traduction TRAN (17) est ensuite transmis a un processeur PROC (18), soit sous forme de code executable, soit sous forme de code intermediaire reserve apte a generer la sauvegarde. Ainsi, l'interpreteur pour machine virtuelle VMI (10) selon ['invention fonctionne sans interruption et un nombre predetermine de codes intermediaires est execute entre deux changements de taches JAVA_ successifs. Dans un second mode de realisation, illustre a la Fig. 2, l'interpreteur pour machine virtuelle VMI (10) est apte a gerer ['execution de codes intermediaires courants a llnterieur d'une tranche de temps de duree predeterminee egale a une duree fixe a laquelle s'ajoute un laps de temps correspondent a la fin de ['execution du dernier code intermediaire courant. Pour cela, ledit interpreteur comprend un registre d/interruption INREG (24) apte a recevoir une interruption d'une horloge (19) externe ou interne. Lorsqu'une interruption correspondent a une requete de changement de taches est demandee, le registre d'interruption INREG (24) est active par l'horloge (9). Lors du traitement du prochain code intermediaire, le circuit de controle CONT (14) ne va alors pas incrementer le compteur BCC (12) et un code intermediaire courant est remplace par un code intermediaire reserve extrait d'un registre SWT (23) par le circuit de contffile CONT (14). Le registre BCREG (16) resoit ainsi le code intermediaire reserve a la place d'un code intermediaire courant, ce code intermediaire reserve etant apte a generer un appel de fonction permettant de sauvegarder un contexte de la machine virtuelle. L'interpreteur pour machine virtuelle VMI (10) tel que decrit dans les deux modes de realisation peut etre incorpore dans un circuit integre programmable, par exempie un circuit de type FPGA (en anglais 'Field Programmable Gate Array'). Un tei interpreteur pour machine virtuelle peut etre integre dans des decodeurs video, des recepteurs-decodeurs de television numerique, des posses de television, des telephones mobiles, des assistants numeriques personnels ou tout autre appareil apte a execute r des prog ra mmes ecrits en la ngage JAVA_ ou da ns tout a utre la ngage i nterprete. Aucun signe de reference entre parentheses dans le present texte ne doit etre interprete de fagon limitative. Le verbe "comprendre" et ses conjugaisons dolvent egalement etre interpretes de fason large, c'est-adire comme n'excluant pas la presence non seulement d'autres elements ou etapes que ceux listes apres iedit verbe, mais aussi d'une pluralite d'elements ou d'etapes deja listes apres ledit verbe et precedes du mot "un" ou unell. REVEN DICA1IONS 1. Dispositif (10) pour accelerer ['interpretation d'un programme en langage interprete, ledit programme comprenant un code intermediaire executable par une machine virtuelle et etant execute sous forme de taches successives, ledit dispositif comprenant des moyens d'acheminement (13) apses a extraire un code intermediaire courant d'une memoire (11) pour le charger dans des moyens de stockage (16) cara*erise en ce que les moyens d'acheminement (13) vent apses a inhiber ['extraction du code intermediaire courant et a charger dans les moyens de stockage (16) un code intermediaire reserve destine a effectuer - 10 une sauvegarde d'un contexte de la machine virtuelle, lors d'une requete de changement de taches. 2. Dispositif (10) pour accelerer ['interpretation d'un programme en langage interprete selon la revendication 1, caracterise en ce que les moyens d'acheminement (13) comprennent un compteur d'acheminement (21) initialise a une valeur predeterminee correspondent au nombre de codes intermediaires courants a traiter entre deux changements de taches successifs et decremente a chaque fois qutun code intermediaire courant est extrait de la memoire (11), le code intermediaire reserve etant charge dans les moyens de stockage (16) lorsque le compteur d'acheminement (21) a pour valeur zero. 3. Dispositif (10) pour accelerer ['interpretation d'un programme en langage interprete selon la revendication 1, caracterise en ce que les moyens d'acheminement (13) comprennent un registre d/interruption (24) apte a etre active lors d'une requete de changement de taches de sorte que le code intermediaire reserve soit charge dans les moyens de stockage (16). 4. Appareil apte a executer des programmes selon un langage interprete et comprenant un dispositif selon l'une des revendications 1 a 3 pour accelerer ['interpretation du langage interprete.