[Top][All Lists]
[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [DotGNU]ARM Unroller for Portable.NET,
Rhys Weatherley <=