A quick update

Informal forum to keep you all informed on development progress

Moderators: aemulor, admin

Post Reply
Site Admin
Posts: 381
Joined: Wed Oct 23, 2002 11:25 pm
Location: Cambridge, England

A quick update

Post by admin » Tue Jan 21, 2003 10:02 am

Just a quick update to let you know what's happening...
the new, go faster code will be in the first release. It will be there as an option so you can switch it on/off, probably on a per-application basis.

The speed up is very noticeable even on apps like Style and StrongED which don't make heavy use of the CPU, giving them the feel of a StrongARM versus the ARM6/7-like performance of the interpreter.

The interpreter's still there as a fallback because the newer code will only ever work with apps that are StrongARM compatible.

And I've solved the main compatibility problems (mentioned on Drobe); although I still have a few left to resolve it's already running enough to justify it going into the first release. (Plus I don't like using Publisher under the interpreter now that I've experienced it running under the new code :wink:

For those of you who are curious about how the touted 'new code' works, it uses a debug feature of the XScale core - the ability to set hardware breakpoints on instructions, so that when the CPU tries to execute the instruction at that address it instead raises an exception.

Aemulor can therefore scan through the code from the current position, place a breakpoint on the next instruction that can't be executed natively because its behaviour is different in a 26-bit mode. Then it lets the XScale run all the intervening code natively. The clever part is reducing the cost of this scanning, and the cost of emulating the '32-bit unsafe' instructions (so I use the optimised code that I already have in the interpreter of course).

Interestingly, this means that Aemulor (running SA-compatible code anyway) now works in a very similar manner to the way I believe ARMTwister must work; by trapping only those instructions that aren't safe to execute natively and letting the XScale run the rest itself. Funny how things turn out isn't it?

I'm just left with one question really - how am I going to speed it up even further, as promised for Aemulor Pro?! :lol:


Post Reply