Re: [NTLK] Einstein Thoughts

From: Paul Guyot (pguyot_at_kallisys.net)
Date: Tue Jan 03 2006 - 14:23:35 PST


Le 29 déc. 05 à 14:31, newtontalk_at_newtontalk.net a écrit :

> Date: Wed, 28 Dec 2005 20:59:42 -0500
> From: Sean Luke <sean_at_cs.gmu.edu>
> Subject: Re: [NTLK] Einstein Thoughts
>
> I very rarely post to NewtonTalk these days, but what the heck.
>
> However none of these devices is going to cut it until Paul's able to
> devote some time to emulation speed issues. At present Einstein is,
> I believe, doing straight CPU emulation on a virtual machine. If you
> think this was slow on your Powerbook, you've seen nothing yet.
> Expect it to run 1/20 the original speed.

True, except that Einstein isn't really doing straight CPU emulation,
fortunately. It was in 2004. 2005 version on my PowerBook G5 is
faster than an emate (but slower than a MP2x00).

> There are two ways to handle this. First, if you're not on the same
> architecture as what you're emulating, you can do dynamic
> recompilation of the machine code, so things start off slow but then
> get fast. There exist current ARM CPU emulators which do this (such
> as ARMphetamine or QEMU).

Unfortunately, those projects are completely useless for Einstein.
Unless I'm mistaken, neither can emulate a full system. They do not
even emulate a MMU. What prevents me from doing something as simple
as what ARMphetamine and QEMU does is the importance of hardware for
NewtonOS, including its intensive use of the MMU.

> This is what Paul's got to do to get
> emulation running well on the Mac. Second, if you're on the same
> architecture -- as is the case for the three machines listed above --
> you can run the code directly on the CPU if you can figure out how to
> remap all the traps and hard-coded memory access locations. That's
> not a task I'd want to have to do.

You can't remap, it would be too easy :)
Hard-coded memory access locations is the easy part of what you
describe. The hard part is to work around the MMU translations and
the signals.

Problem #1 was not speed, it was memory. Einstein 2005 did not use
paged memory and required 120 MB of RAM. I didn't try, but I believe
that the current source code should run on any PDA Linux including
the Zaurus, the Palm TX, Pocket PCs or whatever since it now requires
much less memory.

Problem #2 is speed. But it's intervened with memory. I've been
working tonight on pushing the JIT pages up to the MMU manager to
avoid the current double lookup situation.

Also, there's something about QEMU that is noteworthy. QEMU emulates
a desktop PC, but interruptions are only handled when a procedure
returns or something like this. This means that emulated systems with
QEMU do not feature real preempted multitasking. Fabrice Bellard
decided to favor speed instead of accuracy. That's why some systems
don't work with QEMU. I'm not sure it would work with NewtonOS. I
have yet to figure this out.

Paul

-- 
Ministre ultraplénipotentiaire en disponibilité.
Mobile. Sans baignoire fixe.
http://www.kallisys.com/
http://www-poleia.lip6.fr/~guyot/
-- 
This is the NewtonTalk list - http://www.newtontalk.net/ for all inquiries
Official Newton FAQ: http://www.chuma.org/newton/faq/
WikiWikiNewt for all kinds of articles: http://tools.unna.org/wikiwikinewt/


This archive was generated by hypermail 2.1.5 : Tue Jan 03 2006 - 15:30:05 PST