Journal JPC: un emulateur x86 en java

Posté par (page perso) .
Tags : aucun
9
5
juil.
2009
Le groupe de Grille informatique interdisciplinaire (IGD) du sous-département de physiques des particules de l'université d'Oxford a créé un émulateur x86 en java.
Quelques démos sont disponible via une applet :
http://www-jpc.physics.ox.ac.uk/home_home.html
Dont une page consacrée à l'émulation GNU/Linux :
http://www-jpc.physics.ox.ac.uk/demos_linuxdemos.html

Le code est sous licence GPL2 et peut être téléchargé ici : http://www-jpc.physics.ox.ac.uk/download_download.html

Une présentation a été faite lors du Java One de 2007 et une vidéo de cette présentation est disponible ici : http://developers.sun.com/learning/javaoneonline/j1sessn.jsp(...)
  • # Désolé

    Posté par . Évalué à 1.

    Désolé, je ne veux pas être méprisant, ... mais en cette époque de virtualisation à tous les étages, à quoi ça sert ?
    • [^] # Re: Désolé

      Posté par . Évalué à 6.

      a faire tourner du code x86 sur un ppc, par exemple ;-)
      cf un extrait du site:

      The real hardware has to have an architecture identical to the guest system. For example, VMWare, Xen or HyperV can create mulitple virtual PCs for running WindowsXP "inside" a real x86 PC. However they cannot do this on any other type of hardware, e.g. cell processors.

      La virtualisation c'est bien pratique, mais comme la vm tourne (plus ou moins) directement sur le proco, pas possible de faire tourner une vm windows dans un macos ppc par exemple.

      Bon, apres, depuis qu'apple a envoye le ppc au cimetiere, les cas d'utilisation restent relativement limites a des cas particuliers (sur des serveurs probablement?), mais ca reste une approche que la virtualisation ne peut pas fournir.
      • [^] # Re: Désolé

        Posté par . Évalué à 10.

        Virtualisation, ok. Mais l'émulation d'un PC ça existe déjà (j'en faisais déjà tourner un sur Atari ST !!!)

        Actuellement un référence est Bochs [1] est clairement destiné à ça :
        Bochs can be compiled and used in a variety of modes, some which are still in development. The 'typical' use of bochs is to provide complete x86 PC emulation, including the x86 processor, hardware devices, and memory. This allows you to run OS's and software within the emulator on your workstation, much like you have a machine inside of a machine.

        [1] http://bochs.sourceforge.net/
      • [^] # Re: Désolé

        Posté par . Évalué à 4.

        J'y vois d'autres avantages,
        Ceci me parait assez utile dans l'embarqué où on a affaire à une assez grande diversité de plateformes autant matériel que logiciel. Mais l'argument du code x86 sur ppc me semble un peu caduc pour les logiciels libres, à part faire un portage à pas cher, il est plus logique de compiler directement le code sur la nouvelle plateforme.
        Un de leurs autres arguments c'est de pouvoir servir facilement des applications à travers le réseaux.
        Également, au niveau sécurité, même s'il y a d'autres solutions ça permet d'isoler facilement les processus (encore pour l'embarqué on peut y trouver une utilité).
      • [^] # Re: Désolé

        Posté par (page perso) . Évalué à 2.

        Normal, puisque ce n'est pas de l'emulation.

        Et virtual PC faisait deja ca depuis bien longtemps, par contre il n'est pas semi-libre.
    • [^] # Re: Désolé

      Posté par . Évalué à 4.

      et bien c'est pour plusieurs raison economique assez simple :)

      cela permet de reduire les cout d'equipement, par exemple dans l'industrie aeronautique ou de la defense, la tendance et a reduire le nombre de calculateur mais augmenter le nombre d'application.

      la où la virtualisation devient interressante est d'avoir un calculateur temps reel pour les application critique, puis faire tourner dessus des application moins critiques acheté sur etagere. La virtualisation permet d'eviter le re devellopement d'application non critique sur une architecture exotique, de plus chaque application devellopé a besoin d'etre certifié. Maintenant seul la machine virtuelle a besoin d'etre certifié.

      resumons :

      moins de materiel dedié
      une fois la machine virtuelle certifié -> acces a une enorme base de logiciel (linux etc ...)
      moins de temps de devellopement d'application non critique

      bref que du bonheur dans un monde où le logiciel à un cout assez elevé

      par ailleurs la VM PikeOS http://en.wikipedia.org/wiki/PikeOS contient environ 10 000 ligne de code, ce qui accelere la certification \o/ et fais baisser les couts de celle ci
      • [^] # Re: Désolé

        Posté par . Évalué à 10.

        L'intérêt de la virtualisation je le connais. L'intérêt de le faire en java, non.
        • [^] # Re: Désolé

          Posté par (page perso) . Évalué à 1.

          L'intérêt de la virtualisation je le connais. L'intérêt de le faire en java, non.

          Je vois assez bien l'utilité de ça. Où je travaille on a plein de hardware différent sur les bureaux des utilisateurs (on est un service info très libéral ). Pour l'instant on a monté un cluster openMosix en faisant tourner des noyaux Linux comme service Windows (avec coLinux). Cela nous permet de récupérer la puissance dormante des machines de bureau.

          Je me vois assez bien faire tourner un noyau linux dans cette machine virtuelle et balancer ça sur toutes les machines de bureau et sur les portables (semi-privés) des utilisateurs ... Gros gain de puissance tout ça.

          "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

          • [^] # Commentaire supprimé

            Posté par . Évalué à 0.

            Ce commentaire a été supprimé par l'équipe de modération.

            • [^] # Re: Désolé

              Posté par (page perso) . Évalué à 3.

              On récupère un peu plus quand même. Et même pour 10% je le ferais. Même pour 2%.
              Et si une fois les archi non-supportées deviennent majoritaires, on recommence tout pour celle-ci ?
              Ces choix de dire "on supporte qu'un truc" on amené certaines entreprises à se retrouver avec un intranet qui ne fonctionne que avec ie6, une application qui fonctionne que avec une solution obscure et que personne n'ose toucher.
              Ici on supporte tous les processeurs, tous les systèmes d'exploitation, ... On fourni juste des moyens de communiquer avec le stockage de données et les outils spécifiques. La prochaine étape c'est d'abolir l'ordinateur de bureau pour le portable privé (du coups semi-privé) ... Encore moins de maintenance.

              "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

              • [^] # Commentaire supprimé

                Posté par . Évalué à 3.

                Ce commentaire a été supprimé par l'équipe de modération.

                • [^] # Re: Désolé

                  Posté par (page perso) . Évalué à 2.

                  Je vais pas supprimer ce qui existe déjà. Je vais ajouter une fonctionnalité. Ce qui fonctionne bien ne va pas disparaître.
                  Donc les machines windows vont garder le service installé, les autres auront une émulation, pourquoi pas, une émulation.

                  Et surtout, il est possible d'acheter du matériel adapté à ton besoin (En 4-5ans tout le matos de bureau est changé)
                  Si tu fais une donation à l'institut, je veux bien changer le parc de machines.

                  Je veux de la puissance, mais je dois la grappiller sur les ordinateurs de bureau. Malheureusement de plus en plus de chercheurs n'allument plus leur machine de bureau et travail avec leur portable privé. Je veux donc récupérer cette puissance. Avec un émulateur java je pourrais le faire de manière assez simple et légère.
                  Ils arrivent le matin, accèdent à une page web, on charge l'applet java et hop, un nœud de plus dans le cluster. Je trouve que mon raisonnement tiens assez bien la route.

                  "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

                  • [^] # Re: Désolé

                    Posté par . Évalué à 2.

                    A noter que d'après la présentation ils ont bon espoir d'améliorer de manière importante les performances. Donc les 10% avancés pourraient bien se transformer en 30% voir beaucoup plus.
          • [^] # Re: Désolé

            Posté par . Évalué à 2.

            Et vous n'avez pas eu de soucis lors du déploiement d'openmosix ? J'attendais beaucoup de la version sous noyau 2.6 mais elle n'ai jamais sortie :/

            Par le passé j'avais réussi à faire une petite grappe de calcul avec un noyau 2.4 mais je suis beaucoup plus habitué au 2.6 et je voulais certaine innovation (support de matos, etc)
            • [^] # Re: Désolé

              Posté par (page perso) . Évalué à 2.

              Et vous n'avez pas eu de soucis lors du déploiement d'openmosix ?

              Non pas vraiment, ça marche assez bien.

              J'attendais beaucoup de la version sous noyau 2.6 mais elle n'ai jamais sortie :/
              Oui, c'est très dommage que le projet ce soit arrêté.

              Par le passé j'avais réussi à faire une petite grappe de calcul avec un noyau 2.4 mais je suis beaucoup plus habitué au 2.6 et je voulais certaine innovation (support de matos, etc)

              Comme on tourne dans coLinux, on a pas vraiment besoin de support tellement avancé pour le matos. On démarre avec un système de fichier en NFS et une Debian bidouillé dedans.
              Je veux encore essayer de faire une machine Xen avec noyau 2.4/openMosix (en para-virtualisé, si possible), mais je vais devoir trouver le temps de faire ça.

              "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

              • [^] # Re: Désolé

                Posté par . Évalué à 2.

                Et vous avez le son, la 3D, etc ?

                Je me souviens maintenant : je désirais coupler LTSP et OpenMosix pour un gain de performance assez intéressant à la vue de ce que j'avais avec juste openmosix.

                Du coup, j'ai seulement mis LTSP, mais c'est cool quand même pour les gens ;)

                J'aimerais bien qu'un projet similaire à LTSP+OpenMosix se crée car cela peut être franchement intéressant pour des cas comme universités avec des postes à la fois bureautique (la grosse majorité) et chercheurs en quête de puissance.
                • [^] # Re: Désolé

                  Posté par (page perso) . Évalué à 2.

                  Et vous avez le son, la 3D, etc ?

                  Non, il s'agit de noyaux linux tournant comme service Windows afin de récupérer la puissance de calcul des ordinateur de bureau. Le cluster ainsi créer est utilisé uniquement pour du calcul

                  "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

        • [^] # Re: Désolé

          Posté par . Évalué à 2.

          Moi je trouve ça cool. J'ai un gros PC octocore avec 16 Go de RAM et Linux. Dedans j'ai installé Xen, et dessus je fais tourner un Windows XP. Dans ce Windows XP, j'utilise VirtualPC pour mettre un autre Linux. Maintenant, je vais pouvoir émuler une autre machine dans ce Linux, par exemple pour installer un *BSD. Il ne me restera plus qu'à installer Dosbox dessus et je pourrais jouer à Might & Magic 1 sur ma bécane de ouf.
    • [^] # Re: Désolé

      Posté par (page perso) . Évalué à 4.

      Peut-être que ça simplifie grandement le déploiement d'une architecture virtuelle. Classiquement pour installer une VM, il faut installer Xen ou KVM (ou VmWare), ce qui ne se fait pas facilement.
      Dans le cas présent, tu as juste besoin d'une JVM ?

      Par exemple, c'est pas évident de déployer n'importe quelle application sur une grille de calcul. Il faut au mieux réussir à la faire installer, au pire téléverser tout ce qui va bien et bien se débrouiller pour que ça marche. Tandis qu'un JVM, ça peut s'installer en standard (ou même être téléversée avec l'application). Avec cet émulateur, le déploiement d'une application exotique sur ce type d'architecture deviendrait beaucoup plus simple et fiable.

      Bref, faut voir …

      Bon après, si vous critiquez juste parce que il y a « Java » dedans, et que c'est bien connu, javasapucépalibre et ça rame comme pas deux, je vous laisse à vos trolls (je ne parle d'ailleurs pas forcément pour toi IsNotGood) ;-)
  • # Boucle Bouclée

    Posté par . Évalué à 2.

    Vivement que quelqu'un ait l'idée d'écrire une JVM en C#...
  • # Ridicule...

    Posté par . Évalué à 2.

    Je ne veux pas paraitre meprisant (bien que le titre le soit surement), mais ce n'est certainement pas plus qu'un exercice de chercheur...

    Dans un talk disponible sur youtube, ils parlent d'une moyenne de 10% des performances de la machine de base.
    Ce qui veut dire diviser par 10 la vitesse, ou comment transformer un Core 2 Duo flambant neuf en Pentium II...

    Bref, histoire de rire, cette video :
    [http://www.youtube.com/watch?v=RwoFsJjIhos]

    A la minute 4:45, il y a un diagramme de l'architecture de JPC:

    Hardware / OS / JVM / Emulated PC / OS / Apps
    • [^] # Re: Ridicule...

      Posté par . Évalué à 3.

      mais non, il faut voir niveau industriel :

      http://www.silicon.fr/fr/news/2009/03/05/un_nouveau_processe(...)

      du coup on s'affranchit de plein de chose dont la partie: OS / JVM

      ton schema devient :

      Hardware/ Emulated PC / OS / Apps
    • [^] # Re: Ridicule...

      Posté par (page perso) . Évalué à 3.

      Pourtant grace à la magie du JIT ça devrait aller encore plus vite que du x86 natif, je ne comprends pas.
    • [^] # Re: Ridicule...

      Posté par (page perso) . Évalué à 1.

      Un intérêt, c'est de pouvoir faire tourner des applies x86 à l'intérieur d'une applet Java. Maintenant, c'est clair que les perfs seront forcément pas terribles ... Leurs démos sont rigolotes, mais je n'en ai pas trouvé qui soient vraiment « utiles ».
    • [^] # Re: Ridicule...

      Posté par . Évalué à 9.

      voyons l'intérêt est énorme, je cherchais justement à rejouer a Wing Commander 1er du nom sur nos machines actuelle, impossible le jeux est trop rapide! Avec cette solution je devrai pouvoir retrouver ma brouette d'antan ;)


      ps: oui je connais dosbox

      Il ne faut pas décorner les boeufs avant d'avoir semé le vent

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.