dotgnu-general
[Top][All Lists]
Advanced

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

[DotGNU]ARM Unroller for Portable.NET


From: Rhys Weatherley
Subject: [DotGNU]ARM Unroller for Portable.NET
Date: Mon, 5 May 2003 08:08:31 +1000
User-agent: KMail/1.4.3

Hi all!

As discussed in this week's #dotgnu meeting, I have written a CVM code 
unroller for ARM/StrongARM platforms.

An unroller uses some simple JIT techniques to translate commonly-used CVM 
instructions into native code.  The result is about a 2-3 times improvement 
in performance on ARM, compared with the default direct threaded 
configuration.

The ARM unroller code is currently in CVS.  It was tested on a 275 MHz 
StrongARM-based NetWinder running GNU/Linux.  All pnetlib tests pass 
successfully.  Testing in other ARM configurations is welcome.

Before the changes, the NetWinder acheived the following scores on PNetMark:

    Sieve  ... 370
    Loop   ... 389
    Logic  ... 468
    String ... 199
    Float  ... 8
    Method ... 367

    PNetMark rating is 184

After the changes, the results now look like this:

    Sieve  ... 793
    Loop   ... 1601
    Logic  ... 892
    String ... 200
    Float  ... 8
    Method ... 640

    PNetMark rating is 324

The String test doesn't change much because it is GC-bound, and the Float test 
doesn't change at all because the NetWinder uses software-based floating 
point, which the unroller cannot do anything to improve.

In the process of doing this work, I cut-and-pasted the x86 unroller, copying 
much of the register allocation and instruction management code.  Over the 
coming weeks, I'm going to merge the common functionality to create a kind of 
"generic unroller".  It should be possible to port this generic unroller to 
new CPU's (PPC, Sparc, IA-64, etc) very quickly (less than a week per 
platform if I'm right).

Many thanks to my good friend Warwick Allison, who loaned me the NetWinder to 
do this work.  Combined with the pnetlib profile system described earlier, 
Portable.NET is starting to turn into a very nice embedded systems engine.

Cheers,

Rhys.



reply via email to

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