The 30% is just the recompiler. The GMA950 is kinda slow. By most of its time, I mean taking 300 million cycles to execute about 100 million instructions. (I didn't count the number of instructions exactly, so that's just a rough estimate.)Exophase said:Is 30% just for the recompiler, or the entire emulation? Can you actually quantify "most of its time"? Have you checked the performance counters?
This is pretty bad news, given that I expect the generated x86 code to take more cycles internally... and Cortex-A8's L2 cache should be pretty low latency as far as these things go. I hear that at some Pandora revision there a boost in main RAM performance. OMAP3530 revs have been bumping Cortex-A8 revs, and I heard a long time ago that Cortex-A8 originally didn't perform critical word first on L2 line loads. Maybe the L3 interconnect has been improved too.
Part of the difference is the slow FPU, but that doesn't account for all of it. Also, the ARM code is a bit more efficient than the x86 code, and about 20% smaller overall, mostly due to decreased register shuffling.
I'd love to know exactly what accounts for this speed difference, but I know that the RAM is a big part of it. I have a debugging function which does a checksum over the N64's RAM (8MB) and this takes more than twice as long on the beagleboard.
How does the PSP's FPU differ from the N64?Exophase said:Compared to N64 emulation JayFoxRox has a slight advantage in not having to emulate 64-bit registers or double precision FPU operations. And a massive disadvantage in having to emulate VFPU operations.
Last edited by a moderator: