plex86-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Plex86-devel] Plex86 lives!!! (as an acceleration for bochs)


From: Kevin Lawton
Subject: [Plex86-devel] Plex86 lives!!! (as an acceleration for bochs)
Date: Sat, 28 Dec 2002 17:10:39 -0800 (PST)

Bochs and Plex86 friends,

Some very interesting news on the plex86 frontier!  It's been
over a year since I stopped working on plex86, 'cause well...
nobody was paying me to.  :^)

But a little boredom over the holidays, and a nagging sensation
that last I left off I was playing with running guest user-code
natively inside the VM...led me to experimenting with a hybrid
of bochs and plex86.   Bochs for running system code (ring0)
and an extremely stripped down plex86 for running user code (ring3)
at near native speeds inside the plex86 VM.  The idea is rather
than maintaining 2 source trees for all the emulation stuff,
just focus on plex86 for user code and try to shim the two together
with a simple interface.  Not the most potential, but more manageable.

It works!!!  Just a few days of gutting plex86, a few mods to bochs
to use the kernel module interface, and now number crunching in
bochs is faster than it use to be!  :^)

For a test (totally biased to show the upper ceiling), I made a small
program which just does mindless addition to keep the CPU busy, but
the guest OS not busy at all (since it's still emulated by bochs).
600Million loops later, and here's the benchmarks:

  Platform      Test duration                   Performance relative to native
  ============================================================================
  Native:       3.4 seconds                     100%
  Bochs+Plex86  3.8 seconds                      90%
  Bochs         Longer than I cared to wait       ?%

90% of native...not too shabby for bochs!

Stuff that hits the OS will still be at bochs performance levels.
Though, I'm thinking that some of the costs of OS stuff are
related to disk/video/networking, which can be accelerated
by special guest-OS-specific device drivers which can kick
out of bochs-land to be handled at more native performance
levels, rather than have the guest OS drivers emulated
at bochs speed.

Give me a little bit of time to clean up things a bit,
and I'll upload source for people to play with.  I
only tested with Pragma Linux so far...others OSes will
probably trip some error using CRx values I don't support
in the VM yet etc.

Couple quick questions:

(1) What license to use?  Plex86 was LGPL.  Linux complains
"Warning: loading plex86.o will taint the kernel: non-GPL license - LGPL"
I don't really care any more.  Should we up plex86 to GPL?

(2) The Plex86 code (now it's all strictly a kernel driver) is
very modular and separate from bochs.  I suppose any emulator
could interface to it.  Though, it'd be handy to keep the
development linked closely.  Should we make another CVS
module as a sister to bochs on SourceForge, or perhaps
just stick plex86 code in a subdirectory of bochs?  Right now,
I have it as a subdir of bochs.

-Kevin

__________________________________________________
Do you Yahoo!?
New DSL Internet Access from SBC & Yahoo!
http://sbc.yahoo.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]